Commit 9b46bb137f05f18bab6e7ef44da4cf092bf9d1ee

Authored by Victor Costa
1 parent 7b837dbc

Use angular-translate to support i18n

@@ -27,7 +27,10 @@ @@ -27,7 +27,10 @@
27 "angular-timeline": "~1.6.2", 27 "angular-timeline": "~1.6.2",
28 "angular-scroll": "~1.0.0", 28 "angular-scroll": "~1.0.0",
29 "ngSweetAlert": "angular-sweetalert#~1.1.0", 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 "devDependencies": { 35 "devDependencies": {
33 "angular-mocks": "~1.5.0" 36 "angular-mocks": "~1.5.0"
src/app/components/navbar/navbar.html
@@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
8 <span class="icon-bar"></span> 8 <span class="icon-bar"></span>
9 </button> 9 </button>
10 <a class="navbar-brand" ui-sref="main"> 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 </a> 12 </a>
13 </div> 13 </div>
14 14
@@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
18 18
19 <ul class="nav navbar-nav navbar-right"> 19 <ul class="nav navbar-nav navbar-right">
20 <li ng-show="!ctrl.currentUser"> 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 </li> 22 </li>
23 23
24 <li class="dropdown profile-menu" ng-show="ctrl.currentUser" dropdown> 24 <li class="dropdown profile-menu" ng-show="ctrl.currentUser" dropdown>
@@ -28,14 +28,14 @@ @@ -28,14 +28,14 @@
28 </a> 28 </a>
29 <ul class="dropdown-menu" dropdown-menu> 29 <ul class="dropdown-menu" dropdown-menu>
30 <li> 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 </li> 32 </li>
33 <li> 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 </li> 35 </li>
36 <li class="divider"></li> 36 <li class="divider"></li>
37 <li> 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 </li> 39 </li>
40 </ul> 40 </ul>
41 </li> 41 </li>
src/app/components/noosfero-blocks/profile-image-block/profile-image-block.html
@@ -2,5 +2,5 @@ @@ -2,5 +2,5 @@
2 <a ui-sref="main.profile.info({profile: ctrl.owner.identifier})"> 2 <a ui-sref="main.profile.info({profile: ctrl.owner.identifier})">
3 <noosfero-profile-image [profile]="ctrl.owner"></noosfero-profile-image> 3 <noosfero-profile-image [profile]="ctrl.owner"></noosfero-profile-image>
4 </a> 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 </div> 6 </div>
src/app/index.config.ts
1 1
2 /** @ngInject */ 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 $logProvider.debugEnabled(true); 10 $logProvider.debugEnabled(true);
5 $locationProvider.html5Mode({ enabled: true }); 11 $locationProvider.html5Mode({ enabled: true });
6 RestangularProvider.setBaseUrl("/api/v1"); 12 RestangularProvider.setBaseUrl("/api/v1");
@@ -14,4 +20,15 @@ export function noosferoModuleConfig($logProvider: ng.ILogProvider, $locationPro @@ -14,4 +20,15 @@ export function noosferoModuleConfig($logProvider: ng.ILogProvider, $locationPro
14 $document.scrollToElementAnimated(uiViewElement); 20 $document.scrollToElementAnimated(uiViewElement);
15 }; 21 };
16 }); 22 });
17 -}  
18 \ No newline at end of file 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,7 +17,8 @@ let noosferoApp: any = bundle(&quot;noosferoApp&quot;, Main, [&quot;ngAnimate&quot;, &quot;ngCookies&quot;, &quot;n
17 "ngSanitize", "ngMessages", "ngAria", "restangular", 17 "ngSanitize", "ngMessages", "ngAria", "restangular",
18 "ui.router", "ui.bootstrap", "toastr", 18 "ui.router", "ui.bootstrap", "toastr",
19 "angularMoment", "angular.filter", "akoenig.deckgrid", 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 NoosferoApp.angularModule = noosferoApp; 23 NoosferoApp.angularModule = noosferoApp;
23 24
src/languages/en.json 0 → 100644
@@ -0,0 +1,8 @@ @@ -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 @@ @@ -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 +}
@@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
5 "ambientDependencies": { 5 "ambientDependencies": {
6 "angular": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular.d.ts#1c4a34873c9e70cce86edd0e61c559e43dfa5f75", 6 "angular": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular.d.ts#1c4a34873c9e70cce86edd0e61c559e43dfa5f75",
7 "angular-mocks": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular-mocks.d.ts", 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 "angular-ui-router": "github:DefinitelyTyped/DefinitelyTyped/angular-ui-router/angular-ui-router.d.ts#655f8c1bf3c71b0e1ba415b36309604f79326ac8", 9 "angular-ui-router": "github:DefinitelyTyped/DefinitelyTyped/angular-ui-router/angular-ui-router.d.ts#655f8c1bf3c71b0e1ba415b36309604f79326ac8",
9 "es6-shim": "github:DefinitelyTyped/DefinitelyTyped/es6-shim/es6-shim.d.ts#4de74cb527395c13ba20b438c3a7a419ad931f1c", 10 "es6-shim": "github:DefinitelyTyped/DefinitelyTyped/es6-shim/es6-shim.d.ts#4de74cb527395c13ba20b438c3a7a419ad931f1c",
10 "jasmine": "github:DefinitelyTyped/DefinitelyTyped/jasmine/jasmine.d.ts#dd638012d63e069f2c99d06ef4dcc9616a943ee4", 11 "jasmine": "github:DefinitelyTyped/DefinitelyTyped/jasmine/jasmine.d.ts#dd638012d63e069f2c99d06ef4dcc9616a943ee4",