From 6e7ef5195f2e1c237ec5f643bab52f528d7aa106 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Renaud?= Date: Thu, 11 Aug 2016 17:39:46 +0200 Subject: [PATCH] init i18n support for French - fix #129 --- .meteor/packages | 1 + .meteor/versions | 5 +++++ i18n/en.i18n.json | 14 +++++++++++++ i18n/fr.i18n.json | 14 +++++++++++++ imports/startup/client/i18n.js | 21 +++++++++++++++++++ imports/startup/client/index.js | 1 - imports/startup/client/routes/topograms.jsx | 7 +++++-- .../components/boxes/filterBox/filterBox.html | 2 +- .../filterByCategory/filterByCategory.html | 4 ++-- .../filterByDegree/filterByDegree.html | 2 +- .../boxes/infoBox/infoBox.readOnly.html | 2 +- .../ui/pages/topograms/topograms-view.html | 2 +- imports/ui/pages/topograms/topograms-view.js | 5 +++++ 13 files changed, 71 insertions(+), 9 deletions(-) create mode 100644 i18n/en.i18n.json create mode 100644 i18n/fr.i18n.json create mode 100644 imports/startup/client/i18n.js diff --git a/.meteor/packages b/.meteor/packages index 9fab8f8..211fecf 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -59,3 +59,4 @@ practicalmeteor:mocha xolvio:cleaner practicalmeteor:chai kadira:blaze-layout +tap:i18n diff --git a/.meteor/versions b/.meteor/versions index 21eb328..0080594 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -1,5 +1,6 @@ accounts-base@1.2.8 accounts-password@1.1.11 +aldeed:simple-schema@1.3.3 aldeed:tabular@1.4.1 allow-deny@1.0.5 autoupdate@1.2.10 @@ -17,6 +18,7 @@ boilerplate-generator@1.0.9 caching-compiler@1.0.5_1 caching-html-compiler@1.0.6 callback-hook@1.0.9 +cfs:http-methods@0.0.32 check@1.2.3 coffeescript@1.1.2_1 dburles:mongo-collection-instances@0.3.5 @@ -53,6 +55,7 @@ logging@1.0.13_1 materialize:materialize@0.97.6 meteor@1.1.15_1 meteor-base@1.0.4 +meteorspark:util@0.2.0 mikowals:batch-insert@1.1.13 minifier-css@1.1.12_1 minifier-js@1.1.12_1 @@ -74,6 +77,7 @@ practicalmeteor:mocha@2.4.5_4 practicalmeteor:mocha-core@1.0.0 practicalmeteor:sinon@1.14.1_2 promise@0.7.2_1 +raix:eventemitter@0.1.3 raix:handlebar-helpers@0.2.5 random@1.0.10 rate-limit@1.0.5 @@ -94,6 +98,7 @@ spacebars-compiler@1.0.12 srp@1.0.9 standard-minifier-css@1.0.7_1 standard-minifier-js@1.0.7_1 +tap:i18n@1.8.2 templating@1.1.12_1 templating-tools@1.0.4 tmeasday:test-reporter-helpers@0.2.1 diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json new file mode 100644 index 0000000..f3a390d --- /dev/null +++ b/i18n/en.i18n.json @@ -0,0 +1,14 @@ +{ + "topogram_view": { + "searchbox": "Lookup a node" + }, + "filter" : { + "default" : "Choose from type", + "title" : "Filter", + "byDegree" : "Filter by degree", + "clear" : "Clear" + }, + "infobox": { + "group" : "group" + } +} diff --git a/i18n/fr.i18n.json b/i18n/fr.i18n.json new file mode 100644 index 0000000..4ff6b45 --- /dev/null +++ b/i18n/fr.i18n.json @@ -0,0 +1,14 @@ +{ + "topogram_view": { + "searchbox": "Chercher un node" + }, + "filter" : { + "default" : "Choix du groupe", + "title" : "Filtrer", + "byDegree" : "Filtrer par degré", + "clear" : "Réinitialiser" + }, + "infobox": { + "group" : "Groupe" + } +} diff --git a/imports/startup/client/i18n.js b/imports/startup/client/i18n.js new file mode 100644 index 0000000..b358e78 --- /dev/null +++ b/imports/startup/client/i18n.js @@ -0,0 +1,21 @@ +import { TAPi18n } from 'meteor/tap:i18n' + + +const localeFromBrowser = window.navigator.userLanguage || window.navigator.language; + +switchToLocale() + +// TODO : remove ugly and unreliable timeout... +setTimeout(switchToLocale,1000); + +function switchToLocale() { + + // Setup language, try setting by browser (default en) + let locale = 'en'; + + if (localeFromBrowser.match(/en/)) locale = 'en' + if (localeFromBrowser.match(/fr/)) locale = 'fr' + + locale = 'fr' + TAPi18n.setLanguage(locale) +} diff --git a/imports/startup/client/index.js b/imports/startup/client/index.js index 800e6e7..f344b8f 100644 --- a/imports/startup/client/index.js +++ b/imports/startup/client/index.js @@ -2,7 +2,6 @@ import { Template } from 'meteor/templating' import * as _ from 'lodash' // register helpers - Template.registerHelper( 'objectToPairs', function( object ) { return _.map( object, function( value, key ) { return { diff --git a/imports/startup/client/routes/topograms.jsx b/imports/startup/client/routes/topograms.jsx index 5823d6c..adbf16c 100644 --- a/imports/startup/client/routes/topograms.jsx +++ b/imports/startup/client/routes/topograms.jsx @@ -1,6 +1,9 @@ -import { Router } from 'meteor/kadira:flow-router' -import { Meteor } from 'meteor/meteor' +import { FlowRouter } from 'meteor/kadira:flow-router' import { AccountsTemplates } from 'meteor/useraccounts:core' +import { BlazeLayout } from 'meteor/kadira:blaze-layout'; + +// translations +import '../i18n.js' // Import to load these templates and layout import '../../../ui/layouts/mainLayout.js' diff --git a/imports/ui/components/boxes/filterBox/filterBox.html b/imports/ui/components/boxes/filterBox/filterBox.html index 28fe122..3a3f062 100644 --- a/imports/ui/components/boxes/filterBox/filterBox.html +++ b/imports/ui/components/boxes/filterBox/filterBox.html @@ -18,7 +18,7 @@
diff --git a/imports/ui/components/boxes/filterBox/filterByCategory/filterByCategory.html b/imports/ui/components/boxes/filterBox/filterByCategory/filterByCategory.html index f28b3f7..a0c26de 100644 --- a/imports/ui/components/boxes/filterBox/filterByCategory/filterByCategory.html +++ b/imports/ui/components/boxes/filterBox/filterByCategory/filterByCategory.html @@ -2,7 +2,7 @@ {{# if $gt categories.length 1 }}
- +
{{/ if}} diff --git a/imports/ui/components/boxes/filterBox/filterByDegree/filterByDegree.html b/imports/ui/components/boxes/filterBox/filterByDegree/filterByDegree.html index 828652a..0093286 100644 --- a/imports/ui/components/boxes/filterBox/filterByDegree/filterByDegree.html +++ b/imports/ui/components/boxes/filterBox/filterByDegree/filterByDegree.html @@ -1,4 +1,4 @@ diff --git a/imports/ui/components/boxes/infoBox/infoBox.readOnly.html b/imports/ui/components/boxes/infoBox/infoBox.readOnly.html index dd7bbbe..d7f6108 100644 --- a/imports/ui/components/boxes/infoBox/infoBox.readOnly.html +++ b/imports/ui/components/boxes/infoBox/infoBox.readOnly.html @@ -13,7 +13,7 @@ {{#if currentSelection.data.group }}
  • - Group {{ currentSelection.data.group }} + {{_ 'infobox.group'}} {{ currentSelection.data.group }}
  • {{/if}} diff --git a/imports/ui/pages/topograms/topograms-view.html b/imports/ui/pages/topograms/topograms-view.html index 7097068..904c443 100644 --- a/imports/ui/pages/topograms/topograms-view.html +++ b/imports/ui/pages/topograms/topograms-view.html @@ -14,7 +14,7 @@

    - {{> searchBox network=networkInstance searchName="mainSearch" type="source" placeholder="Lookup a node"}} + {{> searchBox network=networkInstance searchName="mainSearch" type="source" placeholder=placeholder}} {{> filterBox network=networkInstance }}
    diff --git a/imports/ui/pages/topograms/topograms-view.js b/imports/ui/pages/topograms/topograms-view.js index 47c640e..4cb2df6 100644 --- a/imports/ui/pages/topograms/topograms-view.js +++ b/imports/ui/pages/topograms/topograms-view.js @@ -3,6 +3,8 @@ import { Template } from 'meteor/templating' import { ReactiveVar } from 'meteor/reactive-var' import { FlowRouter } from 'meteor/kadira:flow-router' import { Meteor } from 'meteor/meteor' +import { TAPi18n } from 'meteor/tap:i18n'; + import { Topograms } from '../../../api/collections.js' import '../../components/boxes/infoBox/infoBox.readOnly.js' @@ -30,6 +32,9 @@ Template.topogramView.onCreated( function() { }) Template.topogramView.helpers({ + placeholder : function() { + return TAPi18n.__('topogram_view.searchbox') + }, networkInstance : function(){ return Template.instance().network },