2012-12-18 15 views
13

Vorrei iniziare a vedere quanto siamo stati comprensivi nel nostro codice iOS per localizzare le stringhe. Non siamo ancora pronti per andare ai traduttori, ma mi piacerebbe iniziare a testare con pseudo localization. Automatizzare questo processo in un file Localizable.strings dovrebbe essere abbastanza facile, ma non riesco a trovare alcuno strumento che lo faccia. Francamente, sarei soddisfatto di una sceneggiatura che ha appena cambiato tutte le mie stringhe in "NON INGLESE!" se esiste una cosa del genereEsistono buoni strumenti per la pseudo localizzazione di iOS?

+0

+1, anche se altri potrebbero segnalare questo come un [commerciale] (http://blog.stackoverflow.com/2010/11/qa-is-hard-lets-go- shopping /) domanda. – newenglander

risposta

18

È possibile ottenere questo con il Translate Toolkit.

Per prima cosa è necessario convertire il .strings file PO utilizzando il convertitore prop2po:

$ prop2po Localizable.strings en.po 

Questo creerà un file diPO con le corde delle Localizable.strings di file come stringhe sorgente (in questo caso sto usando l'inglese come fonte).

Una volta ottenuto il file PO, riscrivere usando podebug nel desired rewrite format.

$ podebug --rewrite=unicode en.po en_rewritten.po 

Infine riconvertirlo ai .strings formato (si noti che è necessario passare l'originale file di Localizable.strings come modello):

$ po2prop en_rewritten.po rewritten.strings -t Localizable.strings 

Il file risultante sarà qualcosa di simile:

"Account: %@" = "Ȧƈƈǿŭƞŧ: %@"; 

"Add command" = "Ȧḓḓ ƈǿḿḿȧƞḓ"; 

"Add connection." = "Ȧḓḓ ƈǿƞƞḗƈŧīǿƞ." 
+0

SÌ! Questo e 'esattamente quello che stavo cercando. Se qualcuno lo guarda a un certo punto e ha problemi nell'installare (io l'ho fatto), dove le istruzioni dicono di usare "su ./setup.py install", usa "sudo python ./setup.py install". – Mike

+0

Così vicino, ho avuto i primi due passi di lavorare, ma non il terzo: '% po2prop -t Localizable.strings en_rewritten.po rewritten.strings' ' elaborazione 1 file ...' ' po2prop: avvertimento: Elaborazione degli errori: input en_rewritten.po, output rewritten.strings, template Localizable.strings: il codec 'ascii' non può codificare i caratteri nella posizione 10-11: ordinale non nel range (128) [######## ################################### 100% ' –

+0

Il tuo PO file ha caratteri non ascii in la posizione commenti? Se è così, [bug 2101] (http://bugs.locamotion.org/show_bug.cgi?id=2101) potrebbe essere correlato. – julen

-1

È possibile utilizzare lo strumento genstrings fornito da Apple. Tutto è spiegato nella sezione stringhe di Resource Programming Guide

+0

'genstrings' genererà il mio file Localizable.strings, che sto già facendo, ma lo fa con le chiavi come valori o i miei valori predefiniti. Sto cercando qualcosa che prenda l'output di genstrings e poi cambi i valori per la localizzazione di psuedo. – Mike

1

Forniamo pseudo localizzazione come parte del nostro servizio presso Tethras (www.tethras.com). La pseudo localizzazione è gratuita. Accentuiamo tutti i caratteri nelle stringhe e estendiamo la lunghezza del testo del 30%. Questo ti aiuterà a testare non solo le stringhe codificate, ma ti permetterà anche di vedere cosa succede ai tuoi layout a causa dell'espansione del testo durante la traduzione.

Esempi:

Plain Text

Forniamo pseudo localizzazione come parte ôƒ I nostri servizi in Tèthrás (www.tèthrás.çôm). ôñè twô thrèè ƒôúr ƒïvè sïx Psèúdô lôçálïzátïôñ ïs ƒrèè. ôñè twô thrèè Wá áççèñt áll ô th çháráçtèrs ïñ ¥ ôúr strïñgs áñd éxtèñé il légô ô thè têtext b ¥ 30%. Uno due tre ƒôúr ƒïvè sei Ciò contribuirà ¥ ou prova non ONL ¥ ƒôr hard coded stringhe, ma anche puoi ¥ ou verificando che succede ¥ nostro La ¥ out dovuti in testo espansione durante traduzione. ôñè twô thrèè ƒôúr ïïvè sïx sèvèñ èïght ñïñè tèñ

Localizzabile.stringhe

"Bring All to Front" = "Brïñg Áll tô ƒrôñt ôñè twô"; 
"Hide" = "Hïdè 12"; 
"Quit" = "Qúït 12"; 
"Hide Others" = "Hïdè Óthèrs ôñè "; 

Complimenti per voler verificare la localizzabilità della tua app prima della traduzione. Questo ti farà risparmiare un sacco di tempo ed energia durante l'effettivo processo di traduzione.

3

sebbene Translate Toolkit possa fornire una soluzione Ho cercato un approccio più semplice usando lo script di bash. creare il file [changesDictionary.txt] (vedi formato alla fine di questo post) ed eseguire il seguente script con il file di lingua come parametro:

# This script translate iOS strings file into pseudo languge for texting usage. 
# the script create a sed change and replace file based on [changesDictionary.txt]. 
# the loop run across the input string file (ie. myFyle.strings) 
# and replace the secong strings with the dictionary values. 
# since the strings file is in BOM format (http://en.wikipedia.org/wiki/Byte_order_mark) 
# the input is converted from UTF16 to UTF8. 
sed -e 's/^"\(.*\)" = "\(.*\)"$/s\/\1\/\2\/g/' changesDictionary.txt > changesDictionary.sed 

FILENAME=$1 

while read -r; do 
if [[ $REPLY = '/*'* ]] ; then 
    echo "$REPLY" 
else 
    if [[ $REPLY = '' ]] ; then 
     echo "$REPLY" 
    else 
     if [[ $REPLY = '"'* ]] ; then 
      changes2=$(echo "$REPLY" | cut -d= -f2 | sed -f changesDictionary.sed) 
      changes1=$(echo "$REPLY" | cut -d= -f1) 
      echo "$changes1=$changes2" 
         echo "$REPLY" 
     fi 
    fi 
fi 
done < <(iconv -f UTF-16 -t UTF-8 $FILENAME) | iconv -f UTF-8 -t UTF-16 >$FILENAME.new 

Il look sceneggiatura per un file [changeDictionary.txt] nella seguente formato:

"a" = "á" 
"b" = "β" 
"c" = "ç" 
"d" = "δ" 
"e" = "è" 
"f" = "ƒ" 
"g" = "ϱ" 
"h" = "λ" 
"i" = "ï" 
"j" = "J" 
"k" = "ƙ" 
"l" = "ℓ" 
"m" = "₥" 
"n" = "ñ" 
"o" = "ô" 
"p" = "ƥ" 
"q" = "9" 
"r" = "ř" 
"s" = "ƨ" 
"t" = "ƭ" 
"u" = "ú" 
"v" = "Ʋ" 
"w" = "ω" 
"x" = "ж" 
"y" = "¥" 
"z" = "ƺ" 
"\ñ" = "\n" 
"$δ" = "$d" 
"$ï" = "$i" 

è possibile utilizzare questo esempio o creare il proprio, si prega di notare tp l'ultima stringa 3 modifica nel file. questo è per ripristinare la fine di linee e parametri al loro stato regolare. Ho scelto questo approccio per semplificare la sceneggiatura (penso che le perfomance non siano ottimizzate).

3

mi sono imbattuto in due soluzioni che non sono ancora stati menzionati qui:

  • un'applicazione gratuita chiamata sul Mac App Store che genera file .strings pseudolocalized in base al codice sorgente (drag-and- far cadere). Genera stringhe simili a quelle dell'OP fornito nella domanda.

    https://itunes.apple.com/us/app/pseudolocalizer/id503026674?mt=12

  • Il servizio di traduzione online Babble-on offre la connessione file .strings pseudolocalized basate su file .strings esistenti (altre opzioni disponibili). Hanno l'opzione extra di generare stringhe più lunghe rispetto all'inglese originale per testare la tua GUI.

    http://www.ibabbleon.com/pseudolocalization.html

+1

Il vantaggio del servizio gratuito di Babble-on è che puoi recuperare due file: ASIAN (con caratteri cinesi) che rende più facile individuare le stringhe non tradotte, così come EUROPEAN, che è il 30% più lungo per imitare le lingue come il francese e il tedesco . È fantastico per testare la tua GUI. – Localizer

+0

Un altro strumento rapido e gratuito è http://www.pseudolocalize.com - Un clic per ottenere la versione pseudocalizzata indietro – JerSchneid

+0

@JerSchneid che non può funzionare con un file Localizable.strings –

Problemi correlati