J'utilise gettext
dans mon code PHP, mais j'ai un gros problème. Tous mes fichiers JavaScript ne sont pas affectés par la traduction, est-ce que quelqu'un peut me dire un moyen facile d'obtenir les traductions dans la langue choisie dans JavaScript aussi.
Réponses
Trop de publicités?Exporte généralement les traductions dans une structure JavaScript :
var app = {};
var app.translations = {
en: {
hello: "Hello, World!",
bye: "Goodbye!"
},
nl: {
hello: "Hallo, Wereld!",
bye: "Tot ziens!"
}
};
La langue actuelle des textes de la page peut être définie en utilisant : <html xml:lang="en" lang="nl">
Ceci peut être lu en JavaScript :
var currentLanguage = document.documentElement.lang || "en";
app.lang = app.translations[ currentLanguage ] || app.translations.en;
Et ensuite vous pouvez écrire un code comme celui-ci :
alert( app.lang.hello );
Facultativement, un i18n()
o gettext()
peut apporter une certaine intelligence, pour retourner le texte par défaut si la clé n'existe pas). Par exemple :
function gettext( key )
{
return app.lang[ key ] || app.translations.en[ key ] || "{translation key not found: " + key + "}";
}
Essayez, jQuery i18n o Localisation de jQuery
Un exemple pour jQuery i18n, et bien sûr vous devez générer un dictionnaire basé sur JSON à partir d'un fichier de langue en php.
var my_dictionary = {
"some text" : "a translation",
"some more text" : "another translation"
}
$.i18n.setDictionary(my_dictionary);
$('div#example').text($.i18n._('some text'));
JSGettext ( lien archivé ) est la meilleure implémentation de la spécification GNU gettext. Téléchargez d'abord le paquet JSGETTEXT et incluez-le dans votre page /js/Gettext.js
<?php
$locale = "ja_JP.utf8";
if(isSet($_GET["locale"]))$locale = $_GET["locale"];
?>
<html>
<head>
<link rel="gettext" type="application/x-po" href="http://stackoverflow.com/locale/<?php echo $locale ?>/LC_MESSAGES/messages.po" />
<script type="text/javascript" src="/js/Gettext.js"></script>
<script type="text/javascript" src="/js/test.js"></script>
</head>
<body>
Test!
</body>
</html>
code javascript pour l'exemple
window.onload = function init(){
var gt = new Gettext({ 'domain' : 'messages' });
alert(gt.gettext('Hello world'));
}
Pour référence, trouvez le lien ci-dessous. Cela fonctionne bien sans convertir le fichier .js en .php.
Pour votre information, voici une solution très simple (mais qui fait l'affaire) : http://www.zomeoff.com/jsin/
- Réponses précédentes
- Plus de réponses