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"

Aberta
#18,422 16 comentários 38 reações 0 responsáveis Ver no GitHub
area: @angular-devkit/build-angular devkit/build-angular:i18n
Linguagem predominante
TypeScript
Estrelas
27k
Forks
11.8k
Merge médio
14h 23min
PRs com merge (30d)
162

Descrição

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

Guia de contribuição

Abrir o guia de contribuição

Direção de pesquisa

Comece com a reprodução mínima vinculada e sua configuração de i18n em angular.json; em seguida, inspecione como a CLI lida com sourceLocale e com as configurações de tradução por locale. Considera-se concluído quando o fluxo de trabalho de tradução en-US for compatível sem exigir um build separado de source-locale e o comportamento tiver sido verificado com base na reprodução.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
angular, typescript
Domínio
build-system, cli, internationalization
Tipo de issue
Funcionalidade
Dificuldade
5/5
Tempo estimado
Mais de uma semana
Status de atividade
Estagnada
Clareza
Razoavelmente clara
Facilidade para iniciantes
35/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.