2013-01-24 9 views
7

Stiamo sviluppando un'applicazione che funziona su varie piattaforme (Windows, Windows RT, MacOSX, iOS, Android).C'è un modo per localizzare un'applicazione su varie piattaforme

Il problema è come gestire le diverse localizzazioni sulle diverse piattaforme in modo semplice. I Language File sulle diverse piattaforme hanno vari formati (alcuni sono basati su xml, altri sono semplici coppie chiave-valore e altri sono totalmente pazzi come su MacOS)

Sono sicuro, non siamo la prima azienda con questo problema, ma non sono riuscito a trovare una soluzione facile da usare, né la possibilità di avere una "fonte dati" in cui le stringhe sono raccolte in lingue diverse (la migliore sarebbe un'interfaccia utente per i traduttori) e quindi può esportare nei diversi formati per le diverse piattaforme.

Qualcuno ha una soluzione per questo problema?

Saluti Alexander

+2

credo, che è possibile creare il proprio formato e la vostra mechanizm localizzazione, che avvolgendo su tutte le piattaforme. Non facile, ma disponibile – gaussblurinc

risposta

2

mi consiglia di utilizzare GNU Gettext toolchain per la gestione e l'utilizzo in fase di esecuzione o

  • qualche implementazione alternativo per runtime leggere come Boost.Locale,
  • propria implementazione (il formato .mo è piuttosto banale) o
  • uso Translate Toolkit per convertire i cataloghi dei messaggi in un altro formato di tuo gradimento.

Non è possibile utilizzare il componente libintl di GNU Gettext, perché è sotto licenza LGPL e termini di AppStore di Apple e Live Negozio di Windows sono incompatibili con tale licenza. Ma è davvero semplice reimplementare il bit di cui hai bisogno in fase di runtime.

Il Translate Toolkit realtà reimplementa tutti o la maggior parte di GNU Gettext e supporta molti formati di localizzazione aggiuntivi, ma il formato Gettext .po ha più strumenti gratuiti per esso (ad esempio poedit per l'editing locale e Weblate per l'editing on-line) quindi vi consiglio di attaccare con lo stesso . E leggi il manuale GNU Gettext, descrive bene il processo e le motivazioni alla base.

Ho una buona esperienza con la toolchain. Lo Translate Toolkit è facile da scrivere quando hai bisogno di qualche elaborazione speciale come estrarre stringhe traducibili dai tuoi file di risorse personalizzate e Weblate è facile da usare per i tuoi traduttori, specialmente quando ti affidi a partner commerciali e tester in vari paesi per la maggior parte delle traduzioni.

Translate Toolkit supporta anche l'estrazione di stringhe traducibili dall'HTML, quindi lo stesso processo può essere utilizzato per la traduzione del tuo sito web.

0

Disclaimer: io sono il CTO e co-fondatore a Tethras, ma cercherà di rispondere a questa in un modo che non è solo "il nostro servizio".

Come indicato da loldop sopra, è davvero necessario normalizzare il contenuto su tutte le piattaforme se si desidera disporre di una soluzione one-stop per la gestione dei contenuti localizzati. Questo può richiedere molto lavoro, e richiederebbe molto codice e script e chiamate di vari strumenti dai diversi SDK per arrivare a un formato comune in grado di soddisfare le esigenze di localizzazione di tutti i vari formati di file che è necessario supportare. La lunghezza e la complessità della mia precedente frase sono inversamente proporzionali alla quantità di lavoro che dovresti fare per arrivare a una soluzione favorevole per tutto questo.

A Tethras, abbiamo costruito una piattaforma che riduce la necessità per gli editori di software multi-piattaforma di dover fare questo. Supportiamo tutti i formati nativi dalle piattaforme elencate qui sopra e possiamo sfruttare le traduzioni da un formato file a un altro. Ad esempio, traduci il contenuto in Localizable.strings dalla tua app iOS in un certo numero di lingue, quindi carica il tuo file strings.xml equivalente da Android o foo.resx da Windows RT al sistema e sfrutterà automaticamente le traduzioni per te. Qualsiasi stringa non tradotta verrà contrassegnata e sarà possibile ordinare gli aggiornamenti per queste stringhe.

In effetti, Tethras è un CMS per contenuti localizzati in molti formati di file nativi diversi.

+0

Tethras sembra davvero bello, ma esiste la possibilità di condividere stringhe tra i progetti? In caso contrario, non risolverà il nostro problema ... –

+0

Sì, con tutti i mezzi è possibile condividere le traduzioni tra i progetti. Tutti i contenuti localizzabili vengono estratti dai formati di file nativi caricati sul tuo account. Il sistema identifica le stringhe corrispondenti tra il progetto e tra i file e sfrutta automaticamente le traduzioni esistenti per te. Ad esempio, se traduciamo le stringhe X in Localizable.strings per la tua app iOS e carichi le stringhe Y in stringhe .xml per la tua app Android, il sistema identificherà tutte le stringhe corrispondenti in inglese tra entrambi i file. Le traduzioni di iOS verranno sfruttate automaticamente in strings.xml. –

1

Ho fatto un progetto per iPhone e Android che ha avuto molte traduzioni e penso di avere esattamente la soluzione che stai cercando.

Il modo in cui ho risolto è stato quello di mettere tutti i testi di traduzione in un foglio di calcolo Excel e utilizzare una macro VBA per generare i file .string e traduzione .xml da lì. È possibile scaricare il mio esempio foglio di Excel più macro VBA qui:

http://members.home.nl/bas.de.reuver/files/multilanguage.zip

Proprio di recente ho anche aggiunto uscita preliminare di Visual Studio resx, anche se questo è non testati.

modifica: btw anche il mio javascript xcode/eclipse converter potrebbe essere utile ..

+0

Ho giocato un po 'con il convertitore, ma trascura completamente casi d'angolo importanti come stringhe contenenti righe nuove, virgolette, backspaces e così via. Sì, ho visto un bel paio di tali stringhe in natura. –

+0

Okay, posso indovinare quale dovrebbe essere l'aspetto delle stringhe o delle virgolette, ma i backspaces ...? Approfondirò questo se potessi inviarmi alcuni di questi casi angolari, quindi un file .xml o .strings con alcune di queste stringhe di eccezioni, il mio indirizzo mail può essere trovato qui http://members.home.nl/bas .de.reuver / – BdR

Problemi correlati