最佳答案
我在 AngularJS 应用程序中使用 角度平移表示 i18n。
对于每个应用程序视图,都有一个专用的控制器。在下面的控制器中,我将值设置为显示为页面标题。
<h1>{{ pageTitle }}</h1>
.controller('FirstPageCtrl', ['$scope', '$filter', function ($scope, $filter) {
$scope.pageTitle = $filter('translate')('HELLO_WORLD');
}])
.controller('SecondPageCtrl', ['$scope', '$filter', function ($scope, $filter) {
$scope.pageTitle = 'Second page title';
}])
我正在使用 角度平移装载机网址扩展加载翻译文件。
在初始页面加载时,将显示翻译键,而不是该键的翻译。翻译是 Hello, World!
但我看到的是 HELLO_WORLD
。
The second time I go to the page, all is well and the translated version is shown.
我假设这个问题与这样一个事实有关: 当控制器将值分配给 $scope.pageTitle
时,可能还没有加载翻译文件。
当使用 <h1>{{ pageTitle | translate }}</h1>
和 $scope.pageTitle = 'HELLO_WORLD';
时,翻译工作从第一次开始就很完美。这样做的问题在于,我并不总是希望使用转换(例如,对于第二个控制器,我只想传递一个原始字符串)。
这是一个已知的问题/局限吗? 如何解决这个问题?