I took an approach to this problem that allows others to contribute language translations for my application.
Pro:
- utilizza le librerie "web-stagionato"
- Folla Sourced Traduzioni
- No nativo violazione al sistema
- Utilizza template
- molto facile da implementare HTML/JS e facile da testare
- supporta il rilevamento Lingua
- Supporta Direzione Testo (BiDi)
- Nessuna dipendenza nativi affatto così funzionerà su Android/iOS/BB/WP bla bla ..
- testabile nel browser web
Contro:
- Il vostro progetto deve essere open source e soddisfare TranslateWiki I requisiti
- Un po 'complicato da implementare il commit su Gerrit se vieni da un mondo di branch/merge.
Ho usato manubri per i modelli e la libreria html10n per fornire la logica di traduzione, le stringhe tradotte provengono da file json forniti dalla comunità.
TranslateWiki fornisce le traduzioni effettive attraverso il potere del crowdsourcing. La maggior parte della pesante implementazione della mia implementazione è effettuata da TranslateWiki, un servizio di community gratuito e open source della Wiki Media Foundation.
I manubri e la libreria html10n sono potenti, costruiti per il Web e ampiamente utilizzati. Risultano essere librerie estremamente utili per questa implementazione.
Non sono richiesti codici nativi o plug-in.
index.html
<head>
<script type="text/javascript" src="js/handlebars.js"></script>
<script type="text/javascript" src="js/html10n.js"></script>
<link rel="localizations" type="application/l10n+json" href="locales.json">
</head>
<body>
{{html10n "helloWorld"}}
</body>
locales.json
{
"fr":"locales/fr.json",
"en":"locales/en.json"
}
locali/en.json
{
"en":{
"helloWorld":"Hello Cruel World"
}
}
locali/fr.JSON
{
"fr":{
"helloWorld":"Hello Baguette World"
}
}
index.js
Handlebars.registerHelper('html10n', function(str,a){
return (html10n != undefined ? html10n.get(str) : str);
});
Per passare da una lingua all'altra portare il browser javascript console e digitare
html10n.localize("fr");
è necessaria Alcuni logica aggiuntiva per fare il rilevamento lingua del browser, io uso L'implementazione di Etherpad per realizzare questo.
var language = document.cookie.match(/language=((\w{2,3})(-\w+)?)/);
if(language) language = language[1];
html10n.bind('indexed', function() {
html10n.localize([language, navigator.language, navigator.userLanguage, 'en'])
})
html10n.bind('localized', function() {
document.documentElement.lang = html10n.getLanguage()
document.documentElement.dir = html10n.getDirection()
// Then I display the index page using handlebars to render a template.
});
Questo è tutto, una ricetta libera hack per stendere i18n nel vostro Cordova applicazione.
che stavo cercando la stessa cosa oggi quando si inizia in via di sviluppo App Cordova. Le risorse della CPU sono limitate su alcuni telefoni, quindi vorrei ridurre al minimo JavaScript. Io voto per l'approccio modello - sarebbe molto più leggero sul cellulare del cliente. – JustAMartin
Questo plugin non ha nulla a che fare con le lingue, restituisce solo la lingua corrente del browser, ma possiamo usare i18n per lingue diverse – rashidnk