如何使用angular2 i18n-x定位属性常量值
我试着用它对Angular2应用程序进行本地化。它适用于以下属性:如何使用angular2 i18n-x定位属性常量值,angular,internationalization,Angular,Internationalization,我试着用它对Angular2应用程序进行本地化。它适用于以下属性: <p-dialog i18n-header header="User Details"></p-dialog> 结果是: <trans-unit id="fe871da89ff54aecdb1d2981639c988f15b4d9ad" datatype="html"> <source>User Details</source> <target/
<p-dialog i18n-header header="User Details"></p-dialog>
结果是:
<trans-unit id="fe871da89ff54aecdb1d2981639c988f15b4d9ad" datatype="html">
<source>User Details</source>
<target/>
</trans-unit>
用户详细信息
但当我尝试将其应用于angular属性常量值时,它不会创建任何xml标记。例如:
<my-journal i18n-tableHeader [tableHeader]="'Users'">
</my-journal>
angular i18n支持这种翻译吗?如果没有,什么是正确的方法
提前感谢您的帮助
诚恳地说,您可以尝试使用angular Attribute绑定-它应该也适用于angular 4.4.6和typescript 2.3.4。我已经用这种环境证明了这一点:
Angular CLI: 1.6.8
Node: 6.10.0
OS: win32 x64
Angular: 5.2.5
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router
@angular/cli: 1.6.8
@angular-devkit/build-optimizer: 0.0.42
@angular-devkit/core: 0.0.29
@angular-devkit/schematics: 0.0.52
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.9.8
@schematics/angular: 0.1.17
typescript: 2.6.2
webpack: 3.10.0
请尝试此解决方案-我希望它对您有帮助:
<my-journal
bind-tableHeader="'Users'"
i18n-bind-tableHeader="header of table@@mytableheader">
</my-journal>
正如“Johnny Svarog”在评论中提到的,“Funthomas4242”的解决方案是可行的,但不一定是个好主意:
由于bind tableHeader
是一个接受表达式的属性绑定,因此字符串必须被引用,因此翻译字符串(以西班牙语为例)如下所示:
,翻译为'Users'
(如果提供的'Usuarios'
没有引号,则不起作用)Usuarios
,翻译为Users
Usuarios
问题是,如果tableHeader
在未来的HTML5版本中突然有了其他意义,它可能会产生一些副作用。AngularJS 1.x中避免这种情况的方法是将带有破折号(表头
)的绑定转换为组件绑定的camelCase,HTML5保证不会添加新的破折号。在Angular 2+中没有这样的东西
有理由希望明年某个时候会有更多i18n功能出现。您找到解决方案了吗?没有。但我意识到i18n肯定不会使用这样的定义:[tableHeader]=“Users”,因为只要我们使用属性绑定,“Users”就被angular识别为代码,而不是文本。由于它不再是模板文本,我们应该找到一个很好的代码本地化解决方案。到目前为止,我还没有找到一个可以共享的解决方案。语法bind tableHeader=“'Users'”i18n bind tableHeader=“…”有效吗?bind tableHeader应该是[tableHeader]的标准形式。
<my-journal i18n-tableHeader tableHeader="Users">
</my-journal>