Устраните отдельные файлы языка, когда ненужный на 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.

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

# 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 ...

Править: Решение Gunnar является отличным, но существуют все еще другие файлы, которые избыточны. Файлы All.js, например, и все еще некоторые .png файлы в основном каталоге.

Править: Пересмотренное решение Gunnar решает все проблемы, для чистые сбережения 3 326 меньше файлов для одних только просто 17,04 настольных веб-страниц документов.

Ссылки:
Make-файл компиляции HTML. (см. install сегмент в конце.)
Весь код проекта.
Процедура сборки.
Веб-сайт .htaccess файл. Ответ Gunnar полагается на нейтрализацию языка.

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

1 ответ

Я предпринял попытку фиксации его:

http://bazaar.launchpad.net/~ubuntu-core-doc/ubuntu-docs/trunk/revision/607?compare_revid=605

Это сохраняет .en расширение и полагается на .htaccess файл как на нейтрализацию.
первая попытка привела к всегда получению .png версии файла, которая не имела никакого расширения языка относительно независимо от того, чего просили фактический язык, вторая попытка имеет .png.en как универсальное расширение файла и полагается на веб-сайт .htaccess директива файла LanguagePriority fallabck для предоставления того файла в ситуациях, где нет одного характерного для того желаемого языка.
Пример:

-rw-rw-r-- 1 doug doug  64335 Mar 14 19:50 unity-workspace-intro.png.de
-rw-r--r-- 1 doug doug  48077 Mar 14 19:50 unity-workspace-intro.png.en
-rw-rw-r-- 1 doug doug  47152 Mar 14 19:50 unity-workspace-intro.png.it

немец получит .png.de файл, итальянский язык .png.it файл, и любой другой запрос языка получит .png.en файл.

1
ответ дан 7 December 2019 в 15:39

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

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