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"

Offen
#18,422 16 Kommentare 38 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
area: @angular-devkit/build-angular devkit/build-angular:i18n
Vorherrschende Sprache
TypeScript
Sterne
27k
Forks
11.8k
Ø Merge
14 Std. 23 Min.
Gemergte PRs (30 T.)
162

Beschreibung

# 🐞 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.

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit der verknüpften minimalen Reproduktion und ihrer angular.json-i18n-Konfiguration und untersuche anschließend, wie die CLI mit sourceLocale und den Übersetzungseinstellungen pro Locale umgeht. Als erledigt gilt die Aufgabe, wenn der en-US-Übersetzungsworkflow unterstützt wird, ohne einen separaten source-locale-Build zu erfordern, und das Verhalten anhand der Reproduktion verifiziert wurde.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
angular, typescript
Bereich
build-system, cli, internationalization
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.