diff --git a/api/http/handler/file.go b/api/http/handler/file.go
index 488a3968e..7fca31088 100644
--- a/api/http/handler/file.go
+++ b/api/http/handler/file.go
@@ -30,6 +30,7 @@ func NewFileHandler(assetPath string) *FileHandler {
"/js": true,
"/images": true,
"/fonts": true,
+ "/i18n": true,
},
}
return h
diff --git a/app/app.js b/app/app.js
index d7774719f..b6416366d 100644
--- a/app/app.js
+++ b/app/app.js
@@ -13,6 +13,7 @@ angular.module('portainer', [
'LocalStorageModule',
'angular-jwt',
'angular-google-analytics',
+ 'pascalprecht.translate',
'portainer.templates',
'portainer.filters',
'portainer.rest',
@@ -64,7 +65,7 @@ angular.module('portainer', [
'userSettings',
'volume',
'volumes'])
- .config(['$stateProvider', '$urlRouterProvider', '$httpProvider', 'localStorageServiceProvider', 'jwtOptionsProvider', 'AnalyticsProvider', '$uibTooltipProvider', '$compileProvider', function ($stateProvider, $urlRouterProvider, $httpProvider, localStorageServiceProvider, jwtOptionsProvider, AnalyticsProvider, $uibTooltipProvider, $compileProvider) {
+ .config(['$stateProvider', '$urlRouterProvider', '$httpProvider', 'localStorageServiceProvider', 'jwtOptionsProvider', 'AnalyticsProvider', '$uibTooltipProvider', '$compileProvider', '$translateProvider', function ($stateProvider, $urlRouterProvider, $httpProvider, localStorageServiceProvider, jwtOptionsProvider, AnalyticsProvider, $uibTooltipProvider, $compileProvider, $translateProvider) {
'use strict';
var environment = '@@ENVIRONMENT';
@@ -99,6 +100,14 @@ angular.module('portainer', [
'outsideClick': 'outsideClick'
});
+ $translateProvider.useSanitizeValueStrategy('sanitize');
+ $translateProvider
+ .useStaticFilesLoader({
+ 'prefix': 'i18n/',
+ 'suffix': '.json'
+ });
+ $translateProvider.preferredLanguage('en');
+
$stateProvider
.state('root', {
abstract: true,
diff --git a/app/components/dashboard/dashboard.html b/app/components/dashboard/dashboard.html
index 8ba214666..b513c54ff 100644
--- a/app/components/dashboard/dashboard.html
+++ b/app/components/dashboard/dashboard.html
@@ -13,7 +13,7 @@
- Name |
+ {{ 'DASHBOARD.NODE_NAME' | translate }} |
{{ infoData.Name }} |
diff --git a/assets/i18n/en.json b/assets/i18n/en.json
new file mode 100644
index 000000000..c75f6af1c
--- /dev/null
+++ b/assets/i18n/en.json
@@ -0,0 +1,5 @@
+{
+ "DASHBOARD": {
+ "NODE_NAME": "Name"
+ }
+}
diff --git a/assets/i18n/fr.json b/assets/i18n/fr.json
new file mode 100644
index 000000000..aeb3fd421
--- /dev/null
+++ b/assets/i18n/fr.json
@@ -0,0 +1,5 @@
+{
+ "DASHBOARD": {
+ "NODE_NAME": "Nom"
+ }
+}
diff --git a/bower.json b/bower.json
index a61ae1b8c..089893bc0 100644
--- a/bower.json
+++ b/bower.json
@@ -3,7 +3,7 @@
"version": "1.14.0",
"homepage": "https://github.com/portainer/portainer",
"authors": [
- "Anthony Lapenna "
+ "Anthony Lapenna "
],
"description": "A web interface for the Docker Remote API.",
"keywords": [
@@ -37,6 +37,7 @@
"angular-local-storage": "~0.5.2",
"angular-jwt": "~0.1.8",
"angular-google-analytics": "~1.1.9",
+ "angular-translate": "~2.15.2",
"bootstrap": "~3.3.6",
"filesize": "~3.3.0",
"jquery": "1.11.1",
@@ -49,7 +50,8 @@
"bootbox.js": "bootbox#^4.4.0",
"angular-multi-select": "~4.0.0",
"toastr": "~2.1.3",
- "xterm.js": "~2.8.1"
+ "xterm.js": "~2.8.1",
+ "angular-translate-loader-static-files": "~2.15.2"
},
"resolutions": {
"angular": "1.5.11"
diff --git a/gruntfile.js b/gruntfile.js
index 95ee9184e..debe05c9b 100644
--- a/gruntfile.js
+++ b/gruntfile.js
@@ -105,7 +105,8 @@ module.exports = function (grunt) {
{dest: '<%= distdir %>/fonts/', src: '*.{ttf,woff,woff2,eof,svg}', expand: true, cwd: 'bower_components/font-awesome/fonts/'},
{dest: '<%= distdir %>/fonts/', src: '*.{ttf,woff,woff2,eof,svg}', expand: true, cwd: 'bower_components/rdash-ui/dist/fonts/'},
{dest: '<%= distdir %>/images/', src: '**', expand: true, cwd: 'assets/images/'},
- {dest: '<%= distdir %>/ico', src: '**', expand: true, cwd: 'assets/ico'}
+ {dest: '<%= distdir %>/ico', src: '**', expand: true, cwd: 'assets/ico'},
+ {dest: '<%= distdir %>/i18n', src: '**', expand: true, cwd: 'assets/i18n'}
]
}
},
diff --git a/vendor.yml b/vendor.yml
index 4c1e83937..07dd4b978 100644
--- a/vendor.yml
+++ b/vendor.yml
@@ -59,6 +59,8 @@ angular:
- bower_components/angular-ui-router/release/angular-ui-router.js
- bower_components/angular-utils-pagination/dirPagination.js
- bower_components/ng-file-upload/ng-file-upload.js
+ - bower_components/angular-translate/angular-translate.js
+ - bower_components/angular-translate-loader-static-files/angular-translate-loader-static-files.js
minified:
- bower_components/angular/angular.min.js
- bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js
@@ -71,4 +73,6 @@ angular:
- bower_components/angular-ui-select/dist/select.min.js
- bower_components/angular-ui-router/release/angular-ui-router.min.js
- bower_components/angular-utils-pagination/dirPagination.js
- - bower_components/ng-file-upload/ng-file-upload.min.js
\ No newline at end of file
+ - bower_components/ng-file-upload/ng-file-upload.min.js
+ - bower_components/angular-translate/angular-translate.min.js
+ - bower_components/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js