Razor页面中的Asp.net核心本地化

时间:2019-06-12 12:16:49

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

在剃须刀中显示另一种语言的html片段或脚本时,如何更改字符串或html片段的位置以适合该语言

例如:

“飞往安塔利亚的航班价格为39.99欧元起”

将更改为

“€39,99’danbaşlayanfiyatlarla Antalyauçuşları”

从土耳其语翻译成英语:他们的位置将会改变

4 个答案:

答案 0 :(得分:2)

仅在相关资源文件中使用格式化的字符串:

resources.en.resx:

  

“飞往安塔利亚的机票价格从{0}起”

或resources.tr.resx:

  

“ {0}’danbaşlayanfiyatlarla Antalyauçuşları”

然后您可以使用默认的IStringLocalizer,如下所示:

_localizer["{0}’dan başlayan fiyatlarla Antalya uçuşları", price]

答案 1 :(得分:1)

我认为,您可以使用Culture和UICulture。每个请求都会在布局中设置语言。

Exp;

@{
    Layout = "~/_Layout.cshtml";
    if(!Request["lang"].IsEmpty()){
        Culture = UICulture = Request["lang"];
    }
}

依赖于语言的定义,以使用ToString(iformatter)。

Exp;

Currency: @(10000.ToString("c")

法则:£

EN适用:€

答案 2 :(得分:0)

我从某个地方找到

ClientResources.en.resx

可以从页面上的引用中获取实例

R = Settings.Resources!==未定义?设置资源:{},

您可以在需要时使用

if(totalPassengerCount> maximumPassengerCount){     alert(R.MaximumPassengerCount);

答案 3 :(得分:0)

您主要需要两件事:

  1. 一种自动方法,用于在http请求中设置用户的当前区域性,其中CultureInfo.CurrentCulture包含所需的语言+区域(也称为区域性)
  2. 一种根据指定区域性从资源文件(resx)中读取翻译文本的方法

例如,日期之类的东西会根据当前区域性自动格式化。

[这是有关使用AspNet Core Razor页面和/或MVC进行本地化的文章],以了解西班牙语的过程(https://sunnyatticsoftware.com/blog/webs-multilingue-localizacion-mvc-razor-pages)(希望您可以让浏览器以足够好的方式对其进行翻译) ,但最后显示了如何使用C#中的Razor Pages实现这一目标。