angular-翻译嵌套 JSON 和过滤
angular-translate nested JSON and filter
使用 angular-translate 时,我可以像这样过滤我的字符串:
<ANY>{{'TRANSLATION_ID' | translate}}</ANY>
它非常适合以下单位 JSON:
{
TRANSLATION_ID: 'A value',
};
但是,我不知道如何使用嵌套翻译让它工作:
<ANY>{{'NAMESPACE.TRANSLATION_ID' | translate}}</ANY>
和嵌套的 JSON:
{
"NAMESPACE": {
"TRANSLATION_ID": "A value"
}
};
我使用 $translateProvider.useStaticFilesLoader({prefix: 'i18n/locale-', suffix: '.json'});
成功加载了翻译,并且我使用了提供程序的其他功能,例如 $translateProvider.addInterpolation('$translateMessageFormatInterpolation');
。
documentation shows examples of nested translation using the service directly, but not the filter.
。
首先,使用 JSFifddle 中的代码会破坏 $translateProvider
函数(我通过像这样扩展替换变量以某种方式修复了它:$TranslateProvider = angular.extend(m, $TranslateProvider);
在将 $translateProvider
注入为 m
之后并添加 pascalprecht.translate
作为模块依赖项,并添加 var
声明以便能够 'use strict'
) - 所以一开始它似乎不是一个可靠的解决方案。
有了那个 JSFiddle 代码,我得到了 指令 工作,至少对于非嵌套情况(这很好,但不是这里需要的,所以我没有不要费心测试嵌套案例)而不是过滤器(我需要为嵌套和非嵌套翻译工作)。
在我看来,命名空间翻译应该是一件大事,因此应该适用于所有 3 种翻译方法(服务、指令和过滤器)。
"service" 方法相当有限($translate 服务不提供双向数据绑定,这意味着需要更多代码来侦听事件 - see doc - 而且,事实上在应用程序的 controller/service 中加载所有界面的字符串翻译似乎是一个非常糟糕的做法;如果我没记错的话,views/templates 就是为了这个)。
有没有人找到解决方案,或者 angular-translate nested JSON 仅适用于该服务?
我知道我现在哪里搞砸了 - 我的嵌套翻译中可怕的结尾逗号:
{
"NAMESPACE": {
"TRANSLATION_ID": "A value",
"ANOTHER_ID": "Another value",
}
};
所以,是的,完全不相关。
使用 angular-translate 时,我可以像这样过滤我的字符串:
<ANY>{{'TRANSLATION_ID' | translate}}</ANY>
它非常适合以下单位 JSON:
{
TRANSLATION_ID: 'A value',
};
但是,我不知道如何使用嵌套翻译让它工作:
<ANY>{{'NAMESPACE.TRANSLATION_ID' | translate}}</ANY>
和嵌套的 JSON:
{
"NAMESPACE": {
"TRANSLATION_ID": "A value"
}
};
我使用 $translateProvider.useStaticFilesLoader({prefix: 'i18n/locale-', suffix: '.json'});
成功加载了翻译,并且我使用了提供程序的其他功能,例如 $translateProvider.addInterpolation('$translateMessageFormatInterpolation');
。
documentation shows examples of nested translation using the service directly, but not the filter.
$translateProvider
函数(我通过像这样扩展替换变量以某种方式修复了它:$TranslateProvider = angular.extend(m, $TranslateProvider);
在将 $translateProvider
注入为 m
之后并添加 pascalprecht.translate
作为模块依赖项,并添加 var
声明以便能够 'use strict'
) - 所以一开始它似乎不是一个可靠的解决方案。
有了那个 JSFiddle 代码,我得到了 指令 工作,至少对于非嵌套情况(这很好,但不是这里需要的,所以我没有不要费心测试嵌套案例)而不是过滤器(我需要为嵌套和非嵌套翻译工作)。
在我看来,命名空间翻译应该是一件大事,因此应该适用于所有 3 种翻译方法(服务、指令和过滤器)。
"service" 方法相当有限($translate 服务不提供双向数据绑定,这意味着需要更多代码来侦听事件 - see doc - 而且,事实上在应用程序的 controller/service 中加载所有界面的字符串翻译似乎是一个非常糟糕的做法;如果我没记错的话,views/templates 就是为了这个)。
有没有人找到解决方案,或者 angular-translate nested JSON 仅适用于该服务?
我知道我现在哪里搞砸了 - 我的嵌套翻译中可怕的结尾逗号:
{
"NAMESPACE": {
"TRANSLATION_ID": "A value",
"ANOTHER_ID": "Another value",
}
};
所以,是的,完全不相关。