1

我正在尝试使用消息格式学习角度翻译。当我单击按钮更改语言时,我收到一个错误“未定义不是函数” - 但它不是 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);
    };
});

问题截图

4

0 回答 0