Angularjs 通过将文本作为键传递使用角度平移

Angularjs 通过将文本作为键传递使用角度平移,angularjs,internationalization,angular-translate,django-i18n,Angularjs,Internationalization,Angular Translate,Django I18n,我的申请在angularJs上。我刚开始做角度翻译。通过一些例子,如。每个场景我都需要定义两种语言的文本(例如:如果我需要将“标题”更改为英语到德语,我需要用两种语言定义标题$translateProvider.translations('en')$translateProvider.translations('de')) ) 这是翻译angularJs应用程序的唯一方法吗?是否有任何方法可以将文本作为键传递,并根据所选语言进行翻译,而不同时定义两个文本 用这种方法试过,但不起作用 $rootS

我的申请在angularJs上。我刚开始做角度翻译。通过一些例子,如。每个场景我都需要定义两种语言的文本(例如:如果我需要将“标题”更改为英语到德语,我需要用两种语言定义标题$translateProvider.translations('en')$translateProvider.translations('de')) ) 这是翻译angularJs应用程序的唯一方法吗?是否有任何方法可以将文本作为键传递,并根据所选语言进行翻译,而不同时定义两个文本

用这种方法试过,但不起作用

$rootScope.$on('$translateChangeSuccess', function () {
    $translateProvider.preferredLanguage('fa');
    $scope.pageTitle = $translate.instant('Title');
  });
鉴于: {{pageTitle}}


我能知道更改文本的更好方法吗。

不,这是不允许的。您需要为支持的所有语言指定文本。正如您正确地共享了angular translate文档的url-。您需要确保为一种语言提供的所有键和文本也为您支持的其他语言提供。否则它可能会导致UI上出现错误,字符串文本显示为{{title}},这是不好的

我还建议您通过指定fallbackLanguage和preferredLanguage来定义回退语言

如果您有一些类似于枚举的值来自后端,而这些值没有在后端进行翻译,我建议您在翻译中为这些枚举添加键,并在运行时使用这些键(如上文所述)

您还可以使用用户和concat输入的数据和本地化文本,如下所示:

//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}'

你的意思是说你不想用这两种语言定义文本值吗?@SaimaHaji是的,我会将英文文本作为键传递,需要翻译成所需的语言。可能吗?不可能。angular translate希望,如果您使用英语和德语,那么对于您在网页上使用的所有文本,您应该提供这两种语言的值。@SaimaHaji是否有其他库?可以更改文本。我需要一个澄清,比如如果我同时提供文本和值,那么翻译库的必要性是什么?我可以直接调用所需的对象,然后单击按钮并更改文本,对吗?您需要提供您支持的所有语言的文本。如果您不提供德语文本,并将浏览器语言更改为德语,则在UI上您将看到如下字符串文字--{pageTitle},这对于最终用户来说更像是一个bug。感谢您提供清晰的信息。但很小的疑问,我的对象不是enum,它看起来像var titles=[{name:“title1”},{name:“title2”}],所以我有一个ng重复来显示标题。当前需要更改为其他语言。如果需要翻译,您需要知道所有可能的值并将其添加到翻译中。如果这回答了您的问题,请将注释标记为“答案”。是,但值将以英文文本显示,对吗?它还会翻译成其他语言吗?如果我将其作为标题传递给其他人。命名[I]并获得翻译后的名称?您需要遵循我之前告诉您的相同模式。如果名字是a、b、c。为它添加具有相似名称和翻译的键。并在JS中使用key来获取值,就像我们对enum所做的那样。注意。将条目翻译成德语并不意味着它会自动转换成德语。您需要将文本转换为德语并将其翻译成德语。