提取字串以進行翻譯

使用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 配置Vault檔案的解析。 標識包含外部字串和本地化提示的JCR節點。 也標識要忽略的JCR節點。
/parsers/javascript 識別將字串外部化的Javascript函式。 您不需要變更本節。
/parsers/regexp 配置Java、JSP和ExtJS範本檔案的剖析。 您不需要變更本節。
/potement 偵測要國際化的字串的公式。

識別要解析的檔案

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:平面化xliff檔案,要導入到ALF

  • backrefs.txt:允許快速查找指定字串的原始碼位置

本頁內容

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