i18n support in Angular libraries
- 主要语言
- TypeScript
- 星标
- 27k
- 派生
- 11.8k
- 平均合并
- 14 小时 23 分钟
- 30 天内合并 PR
- 162
描述
# 🐞 Bug report
### Command (mark with an `x`)
- [ ] new
- [ ] build
- [ ] serve
- [ ] test
- [ ] e2e
- [ ] generate
- [ ] add
- [ ] update
- [ ] lint
- [x] xi18n
- [ ] run
- [ ] config
- [ ] help
- [ ] version
- [ ] doc
### Is this a regression?
No. Related functionaliy only available with new i18n capabilities of angular 9.
### Description
I want to use ng xi18n command to extract messages for i18n tags which are part of a library project which is part of a monrepo setup created by the cli. According to docs at
https://angular.io/cli/xi18n this is supposed to be possible
> ng xi18n \
> \ The name of the project to build. Can be an application or a library.
## 🔬 Minimal Reproduction
1. create project: `ng new lib-i18n`
1. add localize: `ng add @angular/localize`
1. generate library: `ng g library my-lib`
1. add i18n attribute in my-lib.component.ts
```
my-lib works!
```
1. run `ng xi18n my-lib`: Result will be
`An unhandled exception occurred: Project 'my-lib' does not support the 'extract-i18n' target.`
After adding corresponding extract-i18n target in angular.json, error output as below.
I created a minimal demo project which incorporates the scenario describe above. It is located here:
https://github.com/multimike77/lib-i18n-issue
Checkout and run `npm install`. Then run `ng xi18n my-lib` and it should produce error as below.
## 🔥 Exception or Error
An unhandled exception occurred: The "path" argument must be of type string. Received undefined
[error] TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
at validateString (internal/validators.js:117:11)
at Object.resolve (path.js:980:7)
at Object.getCommonConfig (/Users/.../lib-i18n/node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs/common.js:390:24)
at /Users/.../lib-i18n/node_modules/@angular-devkit/build-angular/src/extract-i18n/index.js:91:27
at generateWebpackConfig (/Users/.../lib-i18n/node_modules/@angular-devkit/build-angular/src/utils/webpack-browser-config.js:62:22)
at async Object.generateBrowserWebpackConfigFromContext (/Users/.../lib-i18n/node_modules/@angular-devkit/build-angular/src/utils/webpack-browser-config.js:137:20)
at async execute (/Users/.../lib-i18n/node_modules/@angular-devkit/build-angular/src/extract-i18n/index.js:73:24)
## 🌍 Your Environment
Angular CLI: 9.0.4
Node: 12.16.1
OS: darwin x64
Angular: 9.0.4
... animations, cli, common, compiler, compiler-cli, core, forms
... language-service, localize, platform-browser
... platform-browser-dynamic, router
Ivy Workspace: Yes
Package Version
------------------------------------------------------------
@angular-devkit/architect 0.900.4
@angular-devkit/build-angular 0.900.4
@angular-devkit/build-ng-packagr 0.900.4
@angular-devkit/build-optimizer 0.900.4
@angular-devkit/build-webpack 0.900.4
@angular-devkit/core 9.0.4
@angular-devkit/schematics 9.0.4
@ngtools/webpack 9.0.4
@schematics/angular 9.0.4
@schematics/update 0.900.4
ng-packagr 9.0.2
rxjs 6.5.4
typescript 3.7.5
webpack 4.41.2
**Anything else relevant?**
贡献指南
调研方向
使用 npm install 和 ng xi18n my-lib 在链接的 lib-i18n-issue 项目中复现该问题。首先阅读 @angular-devkit/build-angular/src/extract-i18n/index.js 以及堆栈跟踪中引用的 common.js 路径。当 xi18n 接受库项目并提取其 i18n 消息,且不再出现 target 或 path 错误时,即表示完成。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- angular, node.js, typescript
- 领域
- build-system, cli, internationalization
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 冷清
- 描述清晰度
- 基本清楚
- 新手友好度
- 52/100