【问题标题】:I18n in angularjsangularjs中的I18n
【发布时间】:2015-07-20 07:03:16
【问题描述】:

I18n 键:

"step1.download":"{{n0}} Download {{n1}} Some text."

在我的 html 中:

<span translate=step1.download translate-values="{ n0: '{{info0}}', n1: '{{info1}}'}"></span>

在我的控制器中:

$scope.download = function(){
        alert("fun executed");
        };
$scope.info0="<button ng-click=download()>";
$scope.info1="</button>";

我得到一个没有定义下载功能的错误,我认为是因为在角度编译之前解析了html,所以有什么办法可以解决这个问题。替代解决方案也值得赞赏。

【问题讨论】:

    标签: angularjs internationalization angular-translate


    【解决方案1】:

    两件事:

    • 您在翻译指令中添加了一个指令。您的代码无法正常工作,因为 ng-click 将在 Angular 解析后放入 DOM。
    • 将 HTML 作为值放入 translate 指令不是一个好主意。该模块用于处理文本值而不是 HTML 语法。

    对于你的问题,你必须做这样的事情:

    {
        "step1.download":"Download",
        "step1.someText":"some text."
    }
    

    在您的 html 中:

    <span>
        <button ng-click="download()">
            {{'step1.download'|translate}}
        </button> 
        {{'step1.someText'|translate}}
    </span>
    

    【讨论】:

    • 感谢您的回复,但我无法拆分这些字符串,所以您能告诉我如何通过添加指令来实现这一点。
    • 我不明白您为什么不能将文本分成两部分。对我来说,如果不拆分字符串,你就不能做你想做的事。
    • 第二个字符串不是一个完整的句子,所以它不会单独翻译,我们使用自己的翻译器,那部分代码要复杂得多,顺便问一下,我已经简化了我得到了我要发布的解决方案,再次感谢。
    【解决方案2】:

    在 html 中像这样使用“翻译-编译”:

    <span translate="step1.download" translate-compile translate-values="{ n0: '{{info0}}', n1: '{{info1}}'}"></span>
    

    根据我的情况,这可能取决于您使用的翻译器。如果您使用“angular-translate.js”,它将起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-25
      • 1970-01-01
      • 1970-01-01
      • 2017-10-08
      • 2015-07-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      相关资源
      最近更新 更多