Can't use translation file for en-US: "An i18n locale ('en-US') cannot both be a source locale and provide a translation"
- Lingua principale
- TypeScript
- Stelle
- 27k
- Fork
- 11.8k
- Merge medio
- 14h 23m
- PR unite (30g)
- 162
Descrizione
# 🐞 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.
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia dalla riproduzione minima collegata e dalla relativa configurazione i18n di angular.json, quindi esamina come la CLI gestisce sourceLocale e le impostazioni di traduzione per locale. Il lavoro è completato quando il workflow di traduzione en-US è supportato senza richiedere una build separata di source-locale e il comportamento è stato verificato rispetto alla riproduzione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- angular, typescript
- Ambito
- build-system, cli, internationalization
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100