Устраните отдельные языковые файлы, если они не нужны на help.ubuntu.com

Документы справки для рабочего стола Ubuntu и Ubuntu Serverguide публикуются на веб-сайте help.ubuntu.com примерно на 60 языках (хотя многие переводы очень неполны). Сводный рабочий процесс документа несколько расточительный, поскольку он делает конкретные языковые версии каждого файла, даже если они идентичны для всех языков. Например:

doug@s15:~/docs-trunk/z/html/ubuntu-docs$ ls -l *yelp-note-warning*
-rw-r--r-- 1 doug doug 1088 Mar 13 23:55 yelp-note-warning.png.am
-rw-r--r-- 1 doug doug 1088 Mar 13 23:55 yelp-note-warning.png.ar
-rw-r--r-- 1 doug doug 1088 Mar 13 23:55 yelp-note-warning.png.ast
-rw-r--r-- 1 doug doug 1088 Mar 13 23:55 yelp-note-warning.png.az
...
-rw-r--r-- 1 doug doug 1088 Mar 13 23:55 yelp-note-warning.png.ur
-rw-r--r-- 1 doug doug 1088 Mar 13 23:55 yelp-note-warning.png.uz
-rw-r--r-- 1 doug doug 1088 Mar 13 23:55 yelp-note-warning.png.zh-CN
-rw-r--r-- 1 doug doug 1088 Mar 13 23:55 yelp-note-warning.png.zh-HK
-rw-r--r-- 1 doug doug 1088 Mar 13 23:55 yelp-note-warning.png.zh-TW

Для такого файла было бы достаточно просто иметь один файл с именем yelp-note-warning.png

. Для полноты примера, где мы не смогли бы сделать только один файл:

doug@s15:~/docs-trunk/z/html/ubuntu-docs$ ls -l figures/unity-workspace-intro*
-rw-r--r-- 1 doug doug 48077 Mar 13 23:55 figures/unity-workspace-intro.png.am
-rw-r--r-- 1 doug doug 48077 Mar 13 23:55 figures/unity-workspace-intro.png.ar
-rw-r--r-- 1 doug doug 48077 Mar 13 23:55 figures/unity-workspace-intro.png.ast
...
-rw-r--r-- 1 doug doug 48077 Mar 13 23:55 figures/unity-workspace-intro.png.da
-rw-r--r-- 1 doug doug 64335 Mar 13 23:55 figures/unity-workspace-intro.png.de
-rw-r--r-- 1 doug doug 48077 Mar 13 23:55 figures/unity-workspace-intro.png.el
...
-rw-r--r-- 1 doug doug 48077 Mar 13 23:55 figures/unity-workspace-intro.png.id
-rw-r--r-- 1 doug doug 47152 Mar 13 23:55 figures/unity-workspace-intro.png.it
-rw-r--r-- 1 doug doug 48077 Mar 13 23:55 figures/unity-workspace-intro.png.ja
...
-rw-r--r-- 1 doug doug 48077 Mar 13 23:55 figures/unity-workspace-intro.png.zh-HK
-rw-r--r-- 1 doug doug 48077 Mar 13 23:55 figures/unity-workspace-intro.png.zh-TW

Мой вопрос: как мы можем идентифицировать, что все файлы идентичны, и если они заменяют их одним файлом без суффикса на языке?

Псевдокод :

For all files, including sub-folders{
   If all language specific versions of the file are identical{
      Replace the language specific versions with one non-language specific version.
   }
}

В настоящее время мы занимаемся только документами по поддержке рабочего стола, хотя, если что-то выясняется, мы также сделаем это для Serverguide.

Это может делаться в Makefile, если это возможно (и предпочтительнее). Или как отдельный сценарий (который, я полагаю, можно вызвать из Makefile). Моя забота о написании c-программы для него заключается в том, что не все члены команды документации Ubuntu также являются программистами c, что вызывает потенциальную озабоченность по обслуживанию в будущем. Предполагается, но не требование, чтобы новый код в соответствии с псевдо-кодом выше был добавлен в самом конце раздела установки файла Makefile:

# Installs all HTML files to a single multilingual directory for subsequent copying to
# the web server document structure (e.g. to run with Apache and MultiViews enabled)
install:
        rm -Rf "$(INSTALLDIR)"/*; \
        mkdir -p "$(INSTALLDIR)"; \
        cp -R "$(HTMLDESTDIR)/"* "$(INSTALLDIR)"; \
        for lc in C $(help_linguas); do \
                lang=`echo $$lc | $(SED) -e 's/[@_]/-/'`; \
                if test "$$lang" = "C"; then lang=en; fi; \
                if test "$$lang" = "gl"; then lang=gl-GL; fi; \
                if test "$$lang" = "ms"; then lang=ms-MS; fi; \
                if test "$$lang" = "pl"; then lang=pl-PL; fi; \
                cp -af "$(INSTALLDIR)/$$lang"/*.css "$(INSTALLDIR)"; \
                rm -Rf "$(INSTALLDIR)/$$lang"/*.css ; \
                find "$(INSTALLDIR)/$$lang" -type f -exec mv {} {}.$$lang \; ; \
                cp -af "$(INSTALLDIR)/$$lang"/* "$(INSTALLDIR)"; \
                rm -Rf "$(INSTALLDIR)/$$lang" ; \
        done
        ... new code, per this question, goes here ...

EDIT: решение Gunnar является отлично, но есть и другие файлы, которые являются излишними. Например, файлы all.js и еще некоторые .png-файлы в основном каталоге.

EDIT: исправленное решение Gunnar устраняет все проблемы, а чистая экономия - на 3326 меньше файлов только для 17.04 desktop docs web страницы.

Ссылки: help.ubuntu.com . (см. сегмент install в конце.) Весь код проекта. Процедура сборки. Файл .htaccess веб-сайта. Ответ Гуннара зависит от языкового резерва.

1
задан 15 March 2017 в 22:44

0 ответов

Другие вопросы по тегам:

Похожие вопросы: