如何使用angular2 i18n-x定位属性常量值

如何使用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/

我试着用它对Angular2应用程序进行本地化。它适用于以下属性:

<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
另一种也不完美的替代方法是使用“普通”DOM属性传递字符串,如下所述:


问题是,如果
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>