【问题标题】:Google Closure Templates generates multiple JavaScript files for each language instead of single JavaScript code base with separate resource filesGoogle Closure Templates 为每种语言生成多个 JavaScript 文件,而不是具有单独资源文件的单个 JavaScript 代码库
【发布时间】:2011-10-23 22:02:25
【问题描述】:

我正在使用 Google Closure Template 来使用 JavaScript 编写我的应用程序 UI。 Look at this question 我使用 Google Closure Template 的详细原因。我希望它是多语言的。我看到有一个--locales 开关,还查看了项目here 和here 中提供的示例。在 README_FOR_EXAMPLES 文件中写到

+ simple_generated_en.js, features_generated_en.js,
simple_generated_x-zz.js, features_generated_x-zz.js SoyToJsSrcCompiler 执行时生成的 JS 文件 在 simple.soy 和 features.soy 上(语言环境是 'en' 和 'x-zz' 以及来自共享示例目录 'examples' 的翻译 XLIFF 文件和上述编译时全局变量 文件)。我们需要 simple.soy 和 features.soy,因为 features.soy 中的一些模板调用 simple.soy 中的模板。 注意:对于一个示例 Ant 目标(和命令行参数), 生成这些文件,请参阅顶级“build.xml”中的目标“js-features-example”。

我的预期是它只会生成一个 JavaScript 代码库,该代码库将根据在调用模板函数之前在运行时提供的选项使用来自适当语言环境文件的所需字符串。闭包模板可以做到吗?

【问题讨论】:

    标签: javascript code-generation locale multilingual google-closure


    【解决方案1】:

    据我所知,您可以使用字典对象作为模板的参数。

    /**
     * @param dict
     */
    {template .example}
        <h1>{$dict.title}</h1>
        <div>{$dict.content}</div>
    {/template}
    

    该对象可以在服务器端从您的语言环境文件生成并通过脚本标签传输到 javascript。

    否则,您可以根据语言环境将不同的编译模板文件加载到客户端。

    还有i18n possibility,但对你的问题有点没用,imo。

    【讨论】:

    • 您能否将我链接到有关字典对象的文档?
    • 好的,我明白了。普通的 JavaScript 对象就可以了。虽然现在的问题是 HTML 使用 soy.$$escapeHtml(opt_data.title) 对其进行转义,但对我来说,字符串中可能有 HTML 位。有什么想法吗?
    • 好吧!我也发现了。如果我的模板中有{$dict.content |noAutoescape},那么我可以在content 中传递HTML,它不会被转义,即&amp;lt; 不会转换为&amp;lt;。
    • 是的,字典对象 = 纯 JavaScript 对象。此外,如果您需要比 noAutoescape 更强大的功能,您可以编写自己的模板函数 (code.google.com/closure/templates/docs/plugins.html#functions)
    • 感谢@Mironor,现在 noAutoescape 就可以了,而且我们正在研究 Microsoft 技术堆栈并且没有太多的 java 技能。我希望我们不需要创建任何插件。闭包模板我只是用来轻松地让 JavaScript 从设计师提供的 HTML 中绘制我的 DOM。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 2021-12-05
    相关资源
    最近更新 更多