提取要翻译的字符串

使用xgettext-maven-plugin从需要翻译的源代码中提取字符串。 Maven插件会将字符串提取到您发送以进行翻译的XLIFF文件。 字符串从以下位置提取:

  • Java源文件
  • Javascript源文件
  • SVN资源(JCR节点)的XML表示

配置字符串提取

配置xgettext-maven-plugin工具如何提取项目的字符串。

/filter { }
/parsers {
   /vaultxml { }
   /javascript { }
   /regexp {
      /files {
         /java { } 
         /jsp { }
         /extjstemplate { }
      }
   }
}
/potentials { }
区域 描述
/filter 标识要分析的文件。
/parsers/vaultxml 配置对保管库文件的解析。 标识包含外部字符串和本地化提示的JCR节点。 还标识要忽略的JCR节点。
/parsers/javascript 标识将字符串外置的Javascript函数。 您无需更改此部分。
/parsers/regexp 配置Java、JSP和ExtJS模板文件的解析。 您无需更改此部分。
/潜能 用于检测要国际化的字符串的公式。

标识要分析的文件

i18n.any文件的/filter部分标识xgettext-maven-plugin工具解析的文件。 添加多个包含和排除规则,这些规则分别标识已解析和忽略的文件。 您应包括所有文件,然后排除您不想分析的文件。 通常,您会排除不会对UI起作用的文件类型,或者排除定义UI但未翻译的文件。 包含和排除规则具有以下格式:

{ /include "pattern" }
{ /exclude "pattern" }

规则的模式部分用于匹配要包括或排除的文件的名称。 模式前缀指示您是匹配JCR节点(其在Vault中的表示形式)还是文件系统。

前缀 效果
/ 指示JCR路径。 因此,此前缀与jcr_root目录下的文件匹配。
* 指示文件系统上的常规文件。
没有前缀或以文件夹或文件名开头的模式表示文件系统上的常规文件。

在模式中使用时,/字符表示子目录和*字符匹配全部。 下表列表了几个示例规则。

示例规则 效果
{ /include "*" } 包括所有文件。
{ /exclude "*.pdf" } 排除所有PDF文件。
{ /exclude "*/pom.xml" } 排除POM文件。
{ /exclude "/content/*" } { /include "/content/catalogs/geometrixx/templatepages" } { /include "/content/catalogs/geometrixx/templatepages/*" }

排除/content节点下的所有文件。

包括/content/catalogs/geometrixx/templatepages节点。

包括/content/catalogs/geometrixx/templatepages的所有子节点。

解压字符串

无POM:

mvn -N com.adobe.granite.maven:xgettext-maven-plugin:1.2.2:extract  -Dxgettext.verbose=true -Dxgettext.target=out -Dxgettext.rules=i18n.any -Dxgettext.root=.

使用POM:将此添加到POM:

<build>
    <plugins>
        <plugin>
            <groupId>com.adobe.granite.maven</groupId>
            <artifactId>xgettext-maven-plugin</artifactId>
            <version>1.1</version>
            <configuration>
                <rules>i18n.any</rules>
                <root>jcr_root</root>
                <xliff>cq.xliff</xliff>
                <verbose>true</verbose>
            </configuration>
        </plugin>
    </plugins>
</build>

命令:

mvn xgettext:extract

输出文件

  • raw.xliff:提取字符串

  • warn.log:警告(如果有), CQ.I18n.getMessage() 如果API使用不正确。它们总需要修复,然后重新运行。

  • parserwarn.log:分析器警告(如果有),例如js分析器发生问题

  • potentials.xliff:“潜在”候选项未被提取,但可能是需要翻译的人类可读字符串(可以忽略,仍会产生大量误报)

  • strings.xliff:要导入ALF的拼合xliff文件

  • backrefs.txt:允许快速查找给定字符串的源代码位置

On this page

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now