我的应用程序是在angularJs上。我是角度翻译的新手。通过了一些示例,例如http://angular-translate.github.io/。在每种情况下,我都需要定义两种语言的文本(例如:如果我需要将“ Title”从英语更改为德语,则需要以两种语言定义标题$ translateProvider.translations('en')$ translateProvider.translations('de' ))这是翻译angularJs应用程序的唯一方法吗?有没有什么方法可以将文本作为键传递,并根据选择的语言进行翻译而没有定义两个文本?
以这种方式尝试过,但是没有用。
$rootScope.$on('$translateChangeSuccess', function () {
$translateProvider.preferredLanguage('fa');
$scope.pageTitle = $translate.instant('Title');
});
在视图中:{{{pageTitle}}
我能知道更好的方式来更改文本。
不,这是不允许的。您需要为支持的所有语言指定文本。当您正确共享了angular-translate文档的网址-http://angular-translate.github.io/。您需要确保针对一种语言显示的所有键和文本也针对您所支持的其他语言显示。否则,可能会导致UI上的字符串文字出现错误,例如{{title}},这是不好的。
我也建议您通过指定fallbackLanguage和preferredLanguage来定义后备语言。
如果您有一些像枚举之类的值来自后端,而这些值未在后端进行翻译,我建议您在转换中为这些枚举添加键,并在运行时使用它(就像我在上面共享的一样。
您还可以将用户输入的数据与以下类似的本地化文本结合使用:
//Let's say $scope.name is the name of the user.
$translate.instant('welcome_msg', [$scope.name]);
//String literal in your translation will have {0} and name will be populated at
//this place at runtime.
'welcome_msg' : 'Welcome {0}'