我安装了最新版本的nx monorepo (npx create-nx-workspace@latest)。目前最新的nx版本是(14.3.6)。在此之后,我添加了角定位包(npm install @angular/localize
)。现在,添加i18n属性(<title i18n>Title</title>
)可以正常工作,并且翻译键被提取到消息中。xlf文件。
问题是,如果我尝试在组件内使用$ localalize,在这种情况下,没有错误报告,但当我尝试生成消息时。xlf加ng extract-i18n test-app
。一条空留言。生成XLF
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
title = $localize`my-app`;
}
messages.xlf
<?xml version="1.0" encoding="UTF-8" ?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="en-US" datatype="plaintext" original="ng2.template">
<body>
</body>
</file>
</xliff>
那么问题是在NX Monorepo中是否支持$ localalize ?也许在project.json中缺少一些配置?
我在这里添加了一个链接到github (https://github.com/hivaga/nx-localization-support),可以找到当前的nx安装。
PS我已经尝试了最新的香草angular应用程序设置,$ localalize工作如预期的那样,所以很明显问题只在NX端!
我发现了产生空messages.xlf
而同时没有报告任何错误的2个原因:
-
应用程序
polifills.js
中缺少import语句// polifills.js import '@angular/localize/init';
-
在组件的*.ts中导入错误。文件。基本上,应该在import语句中不引用
$localize
。这是相当奇怪的,但它是如何工作的。// this import has to be removed import {$localize} from "@angular/localize/init";