我正在尝试使用消息格式学习角度翻译。当我单击按钮更改语言时,我收到一个错误“未定义不是函数” - 但它不是 100% 可靠的。它很容易发生,但我不确定哪个更改会触发错误。
转载者:在 Chrome 41 Firefox 开发者版 39 和 IE11 中也进行了测试。不工作。
以下是我详细复制它的方法: 在新加载时:将变量设置为另一个数字(例如 3),同时仍然是英语。改成挪威语。将数字更改为其他内容。改回英文。当我现在尝试更改号码时,它不再起作用我在 plunker 中重新创建了我的代码:http ://plnkr.co/edit/K4xHNf93Vhkrfc5LmliV?p=preview
代码如下:
HTML:
<div ng-controller="Controller as Ctrl">
<h1>{{ 'TITLE' | translate }}</h1>
<p>{{ 'FOO' | translate }}</p>
<input type="number" ng-model="translationData.NUM">
<p>{{ 'PLURAL' | translate:translationData}}</p>
<button ng-click="changeLanguage('en')">{{ 'BUTTON_LANG_EN' | translate}}</button>
<button ng-click="changeLanguage('de')">{{ 'BUTTON_LANG_DE' | translate}}</button>
<button ng-click="changeLanguage('no')">{{ 'BUTTON_LANG_NO' | translate}}</button>
</div>
Javascript:
angular.module('app', ['pascalprecht.translate'])
.config(function ($translateProvider) {
$translateProvider.translations('en', {
TITLE: 'Hello',
FOO: 'This is a paragraph.',
BUTTON_LANG_EN: 'English',
BUTTON_LANG_DE: 'German',
BUTTON_LANG_NO: 'Norwegian',
PLURAL: "You have {NUM, plural, =0{no messages} one{1 message} other{# messages}}."
});
$translateProvider.translations('de', {
TITLE: 'Hallo',
FOO: 'Dies ist ein Paragraph.',
BUTTON_LANG_EN: 'Englisch',
BUTTON_LANG_DE: 'Deutsch',
BUTTON_LANG_NO: 'Norwegisch',
PLURAL: "Sie haben {NUM, plural, =0{keine Nachrichten haben} one{1 Nachricht} other{# Nachrichten}}."
});
$translateProvider.translations('no', {
TITLE: 'Hei',
FOO: 'Dette er en paragraf',
BUTTON_LANG_EN: 'Engelsk',
BUTTON_LANG_DE: 'Tysk',
BUTTON_LANG_NO: 'Norsk',
PLURAL: "Du har {NUM, plural, =0{ingen meldinger} one{1 melding} other{# meldinger}}."
});
$translateProvider.useMessageFormatInterpolation();
$translateProvider.preferredLanguage('en');
$translateProvider.fallbackLanguage('en');
})
.controller('Controller', function ($scope, $translate) {
$scope.translationData = {
NUM: 0
};
$scope.changeLanguage = function (key) {
$translate.use(key);
};
});