Localização do iOS - Atualizando o Localizable.strings com apenas novas strings
Eu procureiGoogle eStackOverflow e ainda não temos uma resposta clara sobre uma maneira fácil e automatizada de fazer isso, mas aqui está o cenário:
Eu tenho um aplicativo com 1000 strings localizado em en, fr, de, es it.Eu construo um novo recurso que faz 10 distintamente novoNSLocalizedString()
chaves.Eu só quero essas 10 novas strings anexadas nas extremidades dos arquivos:en.lproj / Localizable.stringsfr.lproj / Localizable.stringses.lproj / Localizable.stringsde.lproj / Localizable.stringsit.lproj / Localizable.stringsgenstrings
irá recuperar todas as 1010 cadeias distintas. Isso é uma dor, já que eu precisarei "agulha em um palheiro" encontrar essas 10 cordas toda vez que eu fizer uma atualização.
ATUALIZAÇÃO 19-SEP-2014 - XCode 6 - A Apple finalmente liberou suporte para exportação e importação XLIFF de seus arquivos .stringsO que há de novo no XCode 6? Localização
Linguan (v1.1.3) enquanto é uma ferramenta adorável na maioria das vezes, está começando a ser uma ferramenta no outro sentido. Ele mescla as alterações, mas algumas strings não estão combinando corretamente quando são mescladas, então toda vez que ele faz um Scan Sources, ele cria 100 novas chaves duplicadas, assim como as 10 strings que eu sou depois, então está fazendo mais trabalho.
FileMerge Como sugerido abaixo, tente fazer uma comparação entre as versões antiga e nova dogenstrings
arquivos de saída. ogenstrings
output tem as strings ordenadas alfabeticamente, então 10 strings espalhadas por 1000 significa que existem 200 diferenças a serem analisadas. ele mantém correspondência/*...*/
e a"..." = "..."
e dizendo que o...
Tem sido atualizado. Ele não foi atualizado, apenas mudou para um novo local no arquivo. Mais e mais parece que eu vou ter que escrever uma ferramenta personalizada.
MacHG + FileMerge em uma nota lateral, por alguma estranha razão, não gosta de fazer diffs do repositório com a cópia de trabalho de Localizable.strings. Os painéis esquerdo e direito aparecem vazios.ATUALIZAR: Acontece variações em alguns changesets sendo salvos como UTF-16 e alguns como UTF-8 estão parafusando com ele sendo capaz de fazer um diff adequado.
Bash Script + FileMerge Eu escrevi o seguinte script para ajudar a manter meu arquivo de referência em inglês após cada vez que eu adiciono novosNSLocalizedString
entradas:
#LOCALISATION UPDATE SCRIPT
#
#This will create a temporary copy of the current 'en' reference file then generate the
#latest reference file using the 'genstrings' tool. Finally forcing FileMerge to launch
#and diff the changes.
#
#Last Updated: 2014-JAN-06
#Author(s): Josh Wilson
clear
#assuming this script is run from $SRCROOT
#Backup Existing 'en' reference
cp "en.lproj/Localizable.strings" "en.lproj/Localizable-src.strings"
#Scan source files for 'NSLocalizableString' macros
genstrings -q -u -o en.lproj Classes/*.{m,mm}
genstrings -q -u -a -o en.lproj Classes/iPad/*.{m,mm}
genstrings -q -u -a -o en.lproj Classes/iPhone/*.{m,mm}
#Force FileMerge to launch and diff the update (NOTE: piping to cat forces GUI to open)
opendiff "en.lproj/Localizable-src.strings" "en.lproj/Localizable.strings" | cat
#Cleanup up temporary file
rm "en.lproj/Localizable-src.strings"
Mas isso apenas atualiza o arquivo EN e estou com uma maneira de ter os outros arquivos de idioma atualizados com as novas chaves. Este tem sido bom para casos em que eu não tenho uma palavra em inglês como a chave e genstrings bombas minha"welcome_message" = "Welcome!"
com"welcome_message" = "welcome_message"
POEditor http://poeditor.com/. Esta é uma ferramenta on-line e assinatura com base em 1000 strings. Parece funcionar bem, mas seria bom se houvesse uma ferramenta não baseada em assinatura.
Traducto Pro Parece fazer um bom trabalho de integração com o XCode e extrair as seqüências de caracteres e mesclar as coisas. Mas é impossível obter qualquer coisa de volta até que seja totalmente traduzida, para que você seja coagido a usar os serviços de tradução deles.
Certamente esta funcionalidade foi implementada antes. Como a Apple mantém seus aplicativos localizados?
Viciados em roteiro, eu chamo a ti! O desenvolvimento do iOS já está acontecendo há algum tempo e a localização é comum. Certamente existe uma solução madura para isso agora?
Script Python update_strings.py: Stackoverflow finalmente recomendou uma questão relacionada e o script python nesta respostaMelhor prática usando NSLocalizedString parece promissor...
Testado e em sua forma atual (31-MAY-2013) ele não lida com comentários de múltiplas linhas se você tiver entradas de comentários duplicados (espera comentários de linha única).
Só preciso ajustar um pouco o regex.