gpt4 book ai didi

angularjs - 玩转框架2、AngularJS和国际化

转载 作者:行者123 更新时间:2023-12-02 23:33:34 25 4
gpt4 key购买 nike

我目前正在 Play 框架 2 应用程序中实现 AngularJS,到目前为止一切都很好,但我在国际化方面遇到了一些问题。我有我的消息文件( messages.enmessages.fr 等),在我的 scala 模板中,我通常在没有 Angular 的情况下使用这些文件。

现在,我正在使用 Angular 部分......所以我找到了 Play 框架的插件( jsMessages )来使用 javascript 文件中的消息文件,我终于找到了一种将它与 requireJs 一起使用的方法。以及所有这些东西。

所以,现在我正在传递 Messages $scope 中的函数(允许获取翻译后的消息)多变的。这样我就可以用 {{Messages("myMessage")}} 检索消息,但并非在所有地方都有效。

例如我的一些<input>有默认值(如占位符,也带有翻译后的消息)。但 Angular 不喜欢它并且不计算表达式。

所以,我想知道我应该做什么:

  • 我是否应该使用 Play 服务器使用已在服务器端翻译的字符串来模板化页面,这些字符串将返回到 Angular 以将它们用作“部分”? (在同一模板中混合 Scala @ 指令和 Angular ng-* 指令)

  • 或者我应该只使用 javascript 来翻译字符串,并且在某些情况下,将一个额外的变量传递到作用域,仅用于输入、文本区域和所有这些组件,其中 {{}}不能直接使用吗?

(我个人更喜欢第一个选项)

最佳答案

我认为使用 Play 模板系统是一个很好的解决方案。这样,如果您需要在模板中添加一些逻辑或还需要访问 Play 配置文件,您也可以使用 Scala。

但是如果你想与 Liferay 框架完全解耦,jsMessage 可能是一个很好的解决方案。为了使其正常工作,请尝试将 jsMessage 函数放在 $root 范围内,以便使其在任何地方都可用。

为此,请在主应用程序模块运行时将 jsMessage Messages 函数添加到根范围(ng-app 指令)。

angular.module('app').run(function ($rootScope) {
//Put the jsMessage function in the root scope in order to be able to call
//{{ Messages('my.messages') }} from the templates.
$rootScope.Messages = window.Messages;
});

关于angularjs - 玩转框架2、AngularJS和国际化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16689641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com