gpt4 book ai didi

包含 routerLink 的文本的 Angular i18n 需要不同的词序

转载 作者:行者123 更新时间:2023-12-04 15:51:18 29 4
gpt4 key购买 nike

我正在努力寻找最有效的方法来翻译包含 routerLink 的文本或文本,其中一些单词应该包含在 html 标签 ( word ) 中。

让我们看看它的样子没有 i18n 实现:

示例.component.html

<div>
Hello and welcome to this test example. In order to proceed click on this
<a [routerLink]="['settings/subscription']">Link</a>
</div>

现在让我们添加 i18n 到它,并使用一种可能的方法来处理 routerLink:
en.json
{
"WELCOME_LABEL": "Hello and welcome to this test example. In order to proceed click on this,
"LINK_LABEL": "link"
}

示例.component.html
<div>
{{'WELCOME_LABEL' | translate}}
<a [routerLink]="['settings/subscription']">{{'LINK_LABEL' | translate}}</a>
</div>

这种方法的问题在于不同的语言可能有不同顺序的单词。例如。 “请点击此链接”在某些其他语言中可能有以下顺序 “链接”在句首或句中。

Is there some general / official approach to deal with this situation?



我如何解决它的一种方法是获取组件中的当前语言环境,然后根据它在模板中进行 if 检查。

我不喜欢这种方式,因为我有点退出 i18n 实践,并根据语言环境创建单独的 JSON 对象只是为了能够满足词序需求。

示例.component.ts
constructor(
@Inject( LOCALE_ID ) protected localeId: string
) {
console.log(this.localeId);
}

示例.component.html
<div *ngIf="localeId === 'en-Us'">
{{'WELCOME_LABEL_EN' | translate}}
<a [routerLink]="['settings/subscription']">{{'LINK_LABEL_EN' | translate}}</a>
</div>
<div *ngIf="localeId === 'otherLanguage'">
{{'WELCOME_LABEL_1_OTHER' | translate}}
<a [routerLink]="['settings/subscription']">{{'LINK_LABEL_OTHER' | translate}}</a>
{{'WELCOME_LABEL_2_OTHER' | translate}}
</div>

最佳答案

如果您只是定义 <div> 会怎样?分三部分?就像,文本开头,链接,然后是结尾。

<div>
{{'WELCOME_LABEL_START' | translate}}
<a [routerLink]="['settings/subscription']">{{'LINK_LABEL' | translate}}</a>
{{'WELCOME_LABEL_END' | translate}}
</div>

这样,根据语言,您只需要将句子定义为两部分。
{
"WELCOME_LABEL_START": "In order to proceed, click on this,
"LINK_LABEL": "link",
"WELCOME_LABEL_END": " whatever language you have."
}

如果不需要,您只需让开始/结束为空。

关于包含 routerLink 的文本的 Angular i18n 需要不同的词序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53743180/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com