簡體   English   中英

如何從 Angular 6 中的組件中提取文本進行翻譯 (ngx-translate)

[英]How to extract text from components in Angular 6 for translation (ngx-translate)

我試圖找到一種方法來獲取我的 Angular 6 項目文件(ts 和樣式以及 html 文件)中的所有文本字符串,以便使用文件路徑自動生成嵌套的 JSON 對象。 例如在組件 html 文件中:

app/shared/forms/categories/categories.component.html:

<a id="input-categories">This string</a>
<a class="btn accept">This button</a>

提取后,在 en.json 中:

{
  "shared": {
    "forms": {
      "categories":{
         "a-input-categories": "This string",
         "a-btn-accept": "This button"
      }
    }
  }
}

我看過ngx-translate-extract ,但它只會提取已經可翻譯的{{ name.space.here | translate }} {{ name.space.here | translate }}管道等。

如果這是不可能的,有沒有辦法以這種方式使用一些默認標記(例如trans “標記”每個字符串:

<a id="input-categories" trans>This string</a>
<a class="btn accept" trans>This button</a>

我的問題是前端開發人員已經對所有內容進行了硬編碼,現在我們正在查看 4 位數的字符串,這些字符串需要從標記和代碼中提取出來進行翻譯。

你可以 ngx-translate-extractor

https://github.com/biesbjerg/ngx-translate-extract

ngx-translate-extract --input ./src --output ./src/assets/i18n/template.json

您可以使用text2locale

npm install -g github:juliandavidmr/text2locale

提取並生成 JSON 文件:

text2locale input "./example/src" -o "./example/locale/" -l en -t es,de,zh

一個可能對您有幫助的簡單解決方案是:

<(.+)( .*)?>(.*[a-zA-Z]+.*)<\/\1>

將以下正則表達式寫入文本編輯器中的替換工具,它將捕獲其中包含文本的所有標簽。

然后用(對於VS Code)替換第一個標簽的內容

<$1 i18n $2>$3</$1>

或者對於其他編輯器:

<\1 i18n \2>\3<\/\1>

這會將每個<tag attribute="value" etc>stuff</tag><tag i18n attribute="value" etc>stuff</tag>

然后您可以使用ng xi18n自動提取所有文本以翻譯為 XLIFF。

這假設您的 html 模板格式如下:

<tag>
   <subtag> text </subtag>
</tag>

這意味着每行只有一個帶有文本的標簽(同一行中的<tag><subtag>可能會產生問題),並且該文本與其封閉標簽在同一行中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM