angular / angular/angular-cli

Can't use translation file for en-US: "An i18n locale ('en-US') cannot both be a source locale and provide a translation"

オープン
#18,422 コメント 16 件 リアクション 38 件 担当者 0 名 GitHub で見る
area: @angular-devkit/build-angular devkit/build-angular:i18n
主要言語
TypeScript
スター
27k
フォーク
11.8k
平均マージ
14時間 23分
マージ済み PR(30日)
162

説明

# 🐞 bug report

I can't use a translation file for en-US:
```json
i18n": {
"locales": {
"en-US": {
"baseHref": "delete/us/en_us",
"translation": "messages.en-us.xlf"
}
}
}
```

### Description

- Our app is translated into 40+ languages
- We want our translation department to be responsible for all strings
- We want to ignore the strings our developers have written in the HTML files
- Therefore we need one build per messages.xlf file and no build for the "sourceLocale"
- At the moment we are forced to manually copy the strings from the messages.en-us.xlf file back into our HTML every time our translation department makes a change to en-US

Possible solutions:
- Allow `"translation"` as a property of `"sourceLocale"`
```json
"sourceLocale": {
"code": "en-US",
"translation": "messages.en-us.xlf"
}
```
- Add option to prevent the build of the source locale

## 🔬 Minimal Reproduction
https://github.com/MartinJaskulla/angular-issue-38316

## 🔥 Exception or Error



An unhandled exception occurred: An i18n locale ('en-US') cannot both be a source locale and provide a translation.

## 🌍 Your Environment

**Angular Version:**



Angular CLI: 9.0.7
Node: 12.13.1
OS: darwin x64

Angular: 9.0.7
... animations, cli, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router
Ivy Workspace: Yes

Package Version
-----------------------------------------------------------
@angular-devkit/architect 0.900.7
@angular-devkit/build-angular 0.900.7
@angular-devkit/build-optimizer 0.900.7
@angular-devkit/build-webpack 0.900.7
@angular-devkit/core 9.0.7
@angular-devkit/schematics 9.0.7
@angular/localize 9.1.12
@ngtools/webpack 9.0.7
@schematics/angular 9.0.7
@schematics/update 0.900.7
rxjs 6.5.5
typescript 3.7.5
webpack 4.41.2

**Anything else relevant?**
I know that there are several workarounds. For example we could provide a non-existent source locale `"sourceLocale": "aa-aa"` and delete the build afterwards. However our app is very big and we want to save the build time.
Furthermore our actual setup is more complex than the example provided above. For example the translations for the same locale e.g. my-app.com/de/en-US and my-app.com/us/en-US can be different. It would be useful for angular.json to provide some sort of nesting of the locales.

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

リンクされた最小再現例とその angular.json の i18n 設定から始め、CLI が sourceLocale とロケールごとの翻訳設定をどのように処理するかを調査します。en-US の翻訳ワークフローが、個別の source-locale ビルドを必要とせずにサポートされ、再現例に対して動作が検証されれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
angular, typescript
領域
build-system, cli, internationalization
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。