Translate setupAccount view

This commit is contained in:
Johannes Zellner
2020-11-19 11:33:46 +01:00
parent 2e12d1765a
commit 1d57d4d9a4
3 changed files with 91 additions and 23 deletions

View File

@@ -3,7 +3,7 @@
/* global angular, $, showdown */
// create main application module
var app = angular.module('Application', []);
var app = angular.module('Application', ['pascalprecht.translate', 'ngCookies']);
app.filter('markdown2html', function () {
var converter = new showdown.Converter({
@@ -23,7 +23,44 @@ app.config(function ($sceProvider) {
$sceProvider.enabled(false);
});
app.controller('SetupAccountController', ['$scope', '$http', function ($scope, $http) {
app.config(['$translateProvider', function ($translateProvider) {
$translateProvider.useStaticFilesLoader({
prefix: 'translation/',
suffix: '.json'
});
$translateProvider.useLocalStorage();
$translateProvider.preferredLanguage('en');
$translateProvider.fallbackLanguage('en');
}]);
// Add shorthand "tr" filter to avoid having ot use "translate"
// This is a copy of the code at https://github.com/angular-translate/angular-translate/blob/master/src/filter/translate.js
// If we find out how to get that function handle somehow dynamically we can use that, otherwise the copy is required
function translateFilterFactory($parse, $translate) {
'use strict';
var translateFilter = function (translationId, interpolateParams, interpolation, forceLanguage) {
if (!angular.isObject(interpolateParams)) {
var ctx = this || {
'__SCOPE_IS_NOT_AVAILABLE': 'More info at https://github.com/angular/angular.js/commit/8863b9d04c722b278fa93c5d66ad1e578ad6eb1f'
};
interpolateParams = $parse(interpolateParams)(ctx);
}
return $translate.instant(translationId, interpolateParams, interpolation, forceLanguage);
};
if ($translate.statefulFilter()) {
translateFilter.$stateful = true;
}
return translateFilter;
}
translateFilterFactory.displayName = 'translateFilterFactory';
app.filter('tr', translateFilterFactory);
app.controller('SetupAccountController', ['$scope', '$translate', '$http', function ($scope, $translate, $http) {
// Stupid angular location provider either wants html5 location mode or not, do the query parsing on my own
var search = decodeURIComponent(window.location.search).slice(1).split('&').map(function (item) { return item.indexOf('=') === -1 ? [item, true] : [item.slice(0, item.indexOf('=')), item.slice(item.indexOf('=')+1)]; }).reduce(function (o, k) { o[k[0]] = k[1]; return o; }, {});
@@ -97,6 +134,8 @@ app.controller('SetupAccountController', ['$scope', '$http', function ($scope, $
if (status !== 200) return;
if (data.language) $translate.use(data.language);
$scope.status = data;
}).error(function () {
$scope.initialized = false;