Ситуация: Здравствуйте, делаю веб-приложение где используеться несколько языков, а также "Роутер". Роутер и мулти-язычность реализованы с помощью AngularJS. НО! есть 1 проблема, только вот начал изучать Англярку, и еще плохо разбираюсь в ее логике.
Нужно: чтобы приложение работало с роутером (подгружало динамически контент - удобно быстро и "дешевле"), а также когда я меняю язык (подгружается языковый файл .json, и сохраняеться в storage), чтобы переводило текст интерфейса. Все это реализовано, НО -
Проблема:
1) когда загружеться страница с роутера, то надо отдельно вызывать "перевод" scope, точнее инициалзация (расчеты и прорисовка) контента:
$scope.$on('$viewContentLoaded', function($routeParams) {
paint();
});
= хотелось бы чтобы переводило автоматом (вставляло значение переменных)
2) и САМОЕ ВАЖНОЕ - когда меняю язык, подгружаеться файл языка, сохраняется в storage (или indexedBD), изменяеться переменная, и... переводит ТОЛЬКО стационарный контент! Динамическую часть (ng-view) не переводит!!! Не знаю как заставить ее переводить.
function translate(){
console.log("translate");
var appElement = document.querySelector('[ng-controller="TranslateController"]'),
$scope = angular.element(appElement).scope();
$scope.$apply(function() {
$scope.ml = Lang.text;
$scope.ml.code = Lang.code;
$scope.ml.name = Lang.name;
$scope.ml.version = Lang.version;
$scope.ml.langs = [];
for(var lang in version.Lang){
if(lang != $scope.ml.code){
version.Lang[lang].code = lang;
$scope.ml.langs.push(version.Lang[lang]);
};
};
});
return true;
};
Просьба: Помогите пожалуйста разобраться!
З.Ы. Инициализация "Роутера":
function APP_INIT(){
console.log("\n| APP_INIT");
//Router
var app = angular.module('multiLang', ['ngRoute']);
app.config( function ($routeProvider) {
$routeProvider
.when("/",{
controller : "TranslateController",
templateUrl : "views/index.html"
})
.when("/about",{
controller : "TranslateController",
templateUrl : "views/about.html"
})
.when("/donate",{
controller : "TranslateController",
templateUrl : "views/donate.html"
})
.when("/feedback",{
//controller : "TranslateController",
templateUrl : "views/feedback.html"
})
.otherwise({redirectTo : "/"});
});
app.controller('TranslateController', function ml($scope, $routeParams){
$scope.ml = Lang.text;
$scope.$on('$viewContentLoaded', function($routeParams) {
paint();
//$route.reload();
//translate();
});
});
console.log("online^: ", online())
online()
? ONLINE_MODE()
: OFFLINE_MODE()
};