我正在尝试在我的 Angular 项目中使用 i18next ( https://github.com/archer96/ng-i18next ),但它似乎加载得太慢了。这是我的设置:
angular.module('jm.i18next').config(['$i18nextProvider', function ($i18nextProvider) {
$i18nextProvider.options = {
lng: 'en',
fallbackLng: 'en',
preload: ['en'],
supportedLngs: ['en'],
resGetPath: '../locales/__lng__.json',
useCookie: false,
useLocalStorage: false,
defaultLoadingValue: ''
};
}]);
angular.module('myApp', ['jm.i18next']).controller('MainCtrl', ['$scope', '$i18next', function ($scope, $i18next) {
console.log($i18next("key"));
setTimeout(function() {
console.log($i18next("key"));
}, 1000);
}]);
我必须添加一个超时才能有一个值。有没有办法确保在加载控制器时 i18next 已准备就绪?
更新
我正在尝试按类型对锻炼进行分组,使用 $i18next 进行翻译。但这不起作用,因为在控制器完成翻译之前视图已经“准备好”。
<select ng-model="workout" ng-options="workout as workout.name group by workout.type for workout in workouts | orderBy: ['type', 'name']"></select>
$scope.workouts = [
{id: 1, name: 'Workout 1', type: $i18next("type1")},
{id: 25, name: 'Workout 2', type: $i18next("type2")},
];