Os documentos de ajuda da área de trabalho do Ubuntu e o Ubuntu Serverguide são publicados no site help.ubuntu.com em aproximadamente 60 idiomas (embora muitos traduções são muito incompletas). O fluxo de trabalho de compilação de documentos é um pouco exagerado, porque faz versões de idiomas específicos de cada arquivo, mesmo que sejam idênticos para todos os idiomas. Por exemplo:
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
Para esse arquivo, seria adequado ter apenas um arquivo chamado yelp-note-warning.png
Para completar, um exemplo em que não poderíamos criar apenas um arquivo:
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
Minha pergunta é: Como podemos identificar que todos os arquivos são idênticos e, em caso positivo, substituí-los por um arquivo sem um sufixo específico do idioma?
pseudocódigo:
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.
}
}
No momento, estamos preocupados apenas com os documentos de ajuda da área de trabalho, embora, se algo for descoberto, também o façamos para o Serverguide.
Isso pode ser feito no Makefile, se possível (e preferido). Ou como um script autônomo (que eu suponho que poderia ser chamado do Makefile). Minha preocupação com a escrita de um programa c para ele, é que nem todos os membros da equipe de documentação do Ubuntu são também c programadores, causando uma preocupação potencial de manutenção no caminho.
Está previsto, mas não é um requisito, que o novo código, conforme o pseudo código acima, seja adicionado no final da seção de instalação do 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: A solução de Gunnar é ótima, mas ainda existem outros arquivos que são redundantes. Arquivos All.js por exemplo, e ainda alguns arquivos .png no diretório principal.
EDIT: A solução revisada de Gunnar aborda todos os problemas, para uma economia líquida de 3326 arquivos a menos apenas para as páginas da Web de 17.04 desktops.
Referências:
The html compile Makefile . (veja o segmento install
no final). Todo o código do projeto . O procedimento de compilação .
O arquivo .htaccess do site . A resposta de Gunnar depende do fallback da linguagem.