tab:i18n
Internationalisation de projets Meteor
https://atmospherejs.com/tap/i18n
TODO
- Extraction pour service crowdin
- Voir http://i18next.com/
Installation
meteor add tap:i18n
Fichiers de langue
Un fichier par langue, a placer dans project/i18n/fr.i18n.json
Meteor détecte les changement dans ces fichiers.
{
"configName": "Mongrey.io",
"configTitle": "Make Meteor Apps. Fast.",
"configSubtitle": "Le seul service de liste grise",
}
Configuration du language par défaut
Meteor.startup(function() {
if (Meteor.isClient) {
return TAPi18n.setLanguage('en');
}
});
Utilisation dans les templates
<div class="btn">{{_ "sign_up"}}</div>
# Avec paramètre dans la chaine à traduire
<template name="messages_today">
<p>{{_ "inbox_status" "Daniel" count=18}}</p>
</template>
# Exemple de fichier de lang - i18n/en.i18n.json
{
"inbox_status": "Hey, %s! You have received one new message today.",
"inbox_status_plural": "Hey, %s! You have received %s new messages today."
}
Utilisation dans les scripts
Config = {
name: 'Title',
title: function() {
return TAPi18n.__('configTitle');
},
subtitle: function() {
return TAPi18n.__('configSubtitle');
},
}
Extensions
tap-i18n-ui
https://github.com/TAPevents/tap-i18n-ui
meteor add tap:i18n-ui
{{> i18n_dropdown}} // Bootstrap
{{> i18n_dropdown_semantic}} // Semantic UI
tap-i18n-db
https://github.com/TAPevents/tap-i18n-db
meteor add tap:i18n-db
CountryLang = new TAPi18n.Collection("country_lang");
// Création du document et d'une ou plusieurs traductions
id = CountryLang.insertTranslations({country: "fr", name: "Français"}, {
en: {
name: "French"
}
});
# Mise à jour d'un document existant
CountryLang.updateTranslations(id, {
de: {
name: "Französischла"
}
});
# Publication et souscription
if (Meteor.isServer) {
TAPi18n.publish("countrylang", function (query) {
return CountryLang.i18nFind(query);
});
}
if (Meteor.isClient) {
TAPi18n.subscribe("countrylang", {});
}