1

我正在尝试为我的项目实施国际化支持,为此人们建议使用 google Closure Templates。但我对闭包模板非常陌生。我正在尝试使用闭包模板获取特定于语言的消息,但没有进入 xlf 文件。如果有人知道如何使用闭包模板生成特定于语言的消息,请告诉我步骤。这对我很有帮助。

我的 .soy 文件代码如下。

{namespace poc} 
/** 
*Testing message translation 
*@param pageTitle 
*/ 
{template .translate} 
<HTML> 
<Head> 
<title>{$pageTitle} 
</title> 
</head> 
<div> 
{msg desc="Hello"}Hello{/msg} 
</div> 
</html> 
{/template} 

and generated .xlf content as bellow 

<?xml version="1.0" encoding="UTF-8"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
  <file original="SoyMsgBundle" datatype="x-soy-msg-bundle" xml:space="preserve" source-language="en" target-language="pt-BR">
    <body>
      <trans-unit id="2286494898080570401" datatype="html">
        <source>Thanks</source>
        <target/>
        <note priority="1" from="description">Says thanks</note>
      </trans-unit>
    </body>
  </file>
</xliff>
4

2 回答 2

1

我看到您已经使用 SoyMsgExtractor 创建了基础 xlf。接下来,您需要将此基础 xlf 翻译成您想要支持的语言。为每种语言创建一个文件。我使用了 Translution 的 xliff 退出器。http://sourceforge.net/projects/eviltrans

接下来,使用 SoyToJsSrcCompiler 可以为每种语言制作翻译大豆:

java -jar SoyToJsSrcCompiler.jar --shouldGenerateGoogMsgDefs --bidiGlobalDir 1 --messageFilePathFormat Filename_en-us.xliff --outputPathFormat FileName_fr.js *.soy

这将创建一个包含已编译大豆文件的 Filename._fr.js 文件。

包括这个文件而不是原始的大豆(或编译的)将创建一个本地化版本。

祝你好运!

\雷内

于 2012-09-12T10:17:49.363 回答
0

我认为最简单的方法是制作(即从任何来源生成)一个单独的 js 文件,其中包含一个消息对象并通过 extern 声明的函数引用它。

它只是工作并且没有复杂的依赖关系。

于 2012-09-19T21:29:38.120 回答