【问题标题】:How to use localization with String.Format如何通过 String.Format 使用本地化
【发布时间】:2023-03-14 18:45:01
【问题描述】:

我在一个带有本地化和本地化功能的 Asp.net Core MVC 网站上工作 我有一个文本要显示,里面有变量:

@{var item = "car"}
<h1>Max's @item is blue</h1>

但在法语中是

@{var item = "la voiture"}
<h1>@item de Max est bleue</h1>

所以单词的顺序改变了,我试试:

@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
    <h1>@String.Format(Localizer["Max's {0} is blue"],@item)</h1>

带翻译:

    Max's {0} is blue => {0} de Max est bleu

但我有一个错误:

FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.

我该怎么做?

【问题讨论】:

  • 试试Localizer["Max's {0} is blue"].Value,@item

标签: c# razor asp.net-core asp.net-core-mvc asp.net-core-localization


【解决方案1】:
 @Localizer["My Format {0}", myValue]

它解决了问题,因为这是带参数的本地化器的语法。

【讨论】:

  • 这个答案被某人标记为低质量,因为虽然它提供了一个可以解决问题中所述问题的代码 sn-p,但它没有解释它解决的为什么问题。将来,请在您的答案中添加详细信息,以说明您发布的代码为何适用于所提出的问题。谢谢。
【解决方案2】:

@Camilo Terevinto 的解决方案完美运行。如果它可以帮助任何人,这是完整的解决方案:

查看:

@model Project.Models.item
    <h1>@String.Format(Localizer["Max's {0} is {1}"].Value, Model.Name, Model.Color)</h1>

Resx:

Max's {0} is {1} => {0} de Max est {1}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    相关资源
    最近更新 更多