Commit 9b46bb137f05f18bab6e7ef44da4cf092bf9d1ee

Authored by Victor Costa
1 parent 7b837dbc

Use angular-translate to support i18n

bower.json
... ... @@ -27,7 +27,10 @@
27 27 "angular-timeline": "~1.6.2",
28 28 "angular-scroll": "~1.0.0",
29 29 "ngSweetAlert": "angular-sweetalert#~1.1.0",
30   - "angular-mocks": "^1.5.0"
  30 + "angular-mocks": "^1.5.0",
  31 + "angular-translate": "^2.10.0",
  32 + "angular-translate-loader-static-files": "^2.10.0",
  33 + "angular-translate-handler-log": "^2.10.0"
31 34 },
32 35 "devDependencies": {
33 36 "angular-mocks": "~1.5.0"
... ...
src/app/components/navbar/navbar.html
... ... @@ -8,7 +8,7 @@
8 8 <span class="icon-bar"></span>
9 9 </button>
10 10 <a class="navbar-brand" ui-sref="main">
11   - <span class="noosfero-logo"><img src="assets/images/logo-noosfero.png"></span> Noosfero
  11 + <span class="noosfero-logo"><img src="assets/images/logo-noosfero.png"></span> {{"noosfero.name" | translate}}
12 12 </a>
13 13 </div>
14 14  
... ... @@ -18,7 +18,7 @@
18 18  
19 19 <ul class="nav navbar-nav navbar-right">
20 20 <li ng-show="!ctrl.currentUser">
21   - <a ng-href="#" ng-click="ctrl.openLogin()">Login</a>
  21 + <a ng-href="#" ng-click="ctrl.openLogin()">{{"navbar.login" | translate}}</a>
22 22 </li>
23 23  
24 24 <li class="dropdown profile-menu" ng-show="ctrl.currentUser" dropdown>
... ... @@ -28,14 +28,14 @@
28 28 </a>
29 29 <ul class="dropdown-menu" dropdown-menu>
30 30 <li>
31   - <a ui-sref="main.profile.info({profile: ctrl.currentUser.person.identifier})"><i class="fa fa-fw fa-user"></i> Profile</a>
  31 + <a ui-sref="main.profile.info({profile: ctrl.currentUser.person.identifier})"><i class="fa fa-fw fa-user"></i> {{"navbar.profile" | translate}}</a>
32 32 </li>
33 33 <li>
34   - <a target="_self" ui-sref="main.profile.settings({profile: ctrl.currentUser.person.identifier})"><i class="fa fa-fw fa-gear"></i> Settings</a>
  34 + <a target="_self" ui-sref="main.profile.settings({profile: ctrl.currentUser.person.identifier})"><i class="fa fa-fw fa-gear"></i> {{"navbar.settings" | translate}}</a>
35 35 </li>
36 36 <li class="divider"></li>
37 37 <li>
38   - <a href="#" ng-click="ctrl.logout()"><i class="fa fa-fw fa-power-off"></i> Log Out</a>
  38 + <a href="#" ng-click="ctrl.logout()"><i class="fa fa-fw fa-power-off"></i> {{"navbar.logout" | translate}}</a>
39 39 </li>
40 40 </ul>
41 41 </li>
... ...
src/app/components/noosfero-blocks/profile-image-block/profile-image-block.html
... ... @@ -2,5 +2,5 @@
2 2 <a ui-sref="main.profile.info({profile: ctrl.owner.identifier})">
3 3 <noosfero-profile-image [profile]="ctrl.owner"></noosfero-profile-image>
4 4 </a>
5   - <a class="settings-link" target="_self" ui-sref="main.profile.settings({profile: ctrl.owner.identifier})">Control panel</a>
  5 + <a class="settings-link" target="_self" ui-sref="main.profile.settings({profile: ctrl.owner.identifier})">{{"blocks.profile_image.control_panel" | translate}}</a>
6 6 </div>
... ...
src/app/index.config.ts
1 1  
2 2 /** @ngInject */
3   -export function noosferoModuleConfig($logProvider: ng.ILogProvider, $locationProvider: ng.ILocationProvider, RestangularProvider: restangular.IProvider, $httpProvider: ng.IHttpProvider, $provide: ng.auto.IProvideService) {
  3 +export function noosferoModuleConfig($logProvider: ng.ILogProvider,
  4 + $locationProvider: ng.ILocationProvider,
  5 + RestangularProvider: restangular.IProvider,
  6 + $httpProvider: ng.IHttpProvider,
  7 + $provide: ng.auto.IProvideService,
  8 + $translateProvider: angular.translate.ITranslateProvider) {
  9 +
4 10 $logProvider.debugEnabled(true);
5 11 $locationProvider.html5Mode({ enabled: true });
6 12 RestangularProvider.setBaseUrl("/api/v1");
... ... @@ -14,4 +20,15 @@ export function noosferoModuleConfig($logProvider: ng.ILogProvider, $locationPro
14 20 $document.scrollToElementAnimated(uiViewElement);
15 21 };
16 22 });
17   -}
18 23 \ No newline at end of file
  24 + configTranslation($translateProvider);
  25 +}
  26 +
  27 +function configTranslation($translateProvider: angular.translate.ITranslateProvider) {
  28 + $translateProvider.useStaticFilesLoader({
  29 + prefix: '/languages/',
  30 + suffix: '.json'
  31 + });
  32 + $translateProvider.useMissingTranslationHandlerLog();
  33 + $translateProvider.preferredLanguage('en');
  34 + $translateProvider.useSanitizeValueStrategy('escape');
  35 +}
... ...
src/app/index.ts
... ... @@ -17,7 +17,8 @@ let noosferoApp: any = bundle(&quot;noosferoApp&quot;, Main, [&quot;ngAnimate&quot;, &quot;ngCookies&quot;, &quot;n
17 17 "ngSanitize", "ngMessages", "ngAria", "restangular",
18 18 "ui.router", "ui.bootstrap", "toastr",
19 19 "angularMoment", "angular.filter", "akoenig.deckgrid",
20   - "angular-timeline", "duScroll", "oitozero.ngSweetAlert"]).publish();
  20 + "angular-timeline", "duScroll", "oitozero.ngSweetAlert",
  21 + "pascalprecht.translate"]).publish();
21 22  
22 23 NoosferoApp.angularModule = noosferoApp;
23 24  
... ...
src/languages/en.json 0 → 100644
... ... @@ -0,0 +1,8 @@
  1 +{
  2 + "noosfero.name" : "Noosfero",
  3 + "blocks.profile_image.control_panel": "Control Panel",
  4 + "navbar.profile": "Profile",
  5 + "navbar.settings": "Settings",
  6 + "navbar.logout": "Log Out",
  7 + "navbar.login": "Login"
  8 +}
... ...
src/languages/pt.json 0 → 100644
... ... @@ -0,0 +1,8 @@
  1 +{
  2 + "noosfero.name" : "Noosfero",
  3 + "blocks.profile_image.control_panel": "Painel de Controle",
  4 + "navbar.profile": "Perfil",
  5 + "navbar.settings": "Configurações",
  6 + "navbar.logout": "Sair",
  7 + "navbar.login": "Login"
  8 +}
... ...
typings.json
... ... @@ -5,6 +5,7 @@
5 5 "ambientDependencies": {
6 6 "angular": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular.d.ts#1c4a34873c9e70cce86edd0e61c559e43dfa5f75",
7 7 "angular-mocks": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular-mocks.d.ts",
  8 + "angular-translate": "github:DefinitelyTyped/DefinitelyTyped/angular-translate/angular-translate.d.ts#19850bf86c876e0c2544842114878ece4664941a",
8 9 "angular-ui-router": "github:DefinitelyTyped/DefinitelyTyped/angular-ui-router/angular-ui-router.d.ts#655f8c1bf3c71b0e1ba415b36309604f79326ac8",
9 10 "es6-shim": "github:DefinitelyTyped/DefinitelyTyped/es6-shim/es6-shim.d.ts#4de74cb527395c13ba20b438c3a7a419ad931f1c",
10 11 "jasmine": "github:DefinitelyTyped/DefinitelyTyped/jasmine/jasmine.d.ts#dd638012d63e069f2c99d06ef4dcc9616a943ee4",
... ...