未读取.NET MVC本地化资源文件

时间:2018-03-20 15:32:02

标签: c# asp.net-mvc localization

我试图添加一些卫星资源文件来显示不同的语言 我一般关注这两个帖子

stackoverflow post

Localization of a Site in MVC5 Using Resource File

这就是我在简历中所做的事情(使用visual studio 2017,.net framework 4.5)

我创建了一个名为“Resources”的文件夹

我右键单击此文件夹并创建了一个名为“Lang.resx”的文件,添加了一个字符串对(名称:Welcome,value:Hello),然后将其切换为public并保存

我右键单击此文件夹并创建了另一个名为“Lang.es.resx”的文件,添加了一个字符串对(名称:Welcome,value:Hola),然后将其切换为public并保存

我打开了web.config并将以下行添加到System.Web

<globalization enableClientBasedCulture="true" culture="auto" uiCulture="auto" />

我打开了一个空白视图,将以下内容写入该视图

@{ 
  System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("es");
  System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo("es");
}

<div>@MyProject.Resources.Lang.Welcome</div>
<div>@Thread.CurrentThread.CurrentCulture.DisplayName</div>
<div>@Thread.CurrentThread.CurrentUICulture.DisplayName</div>

输出如下:

您好 西班牙语 西班牙语

正如你所看到的,文化被改变但是不知何故Lang.es.resx没有被阅读,我在不同的托管VPS中创建了多个新项目,结果总是一样的。 所以必须有一些我做错了,或者缺少一些步骤

2 个答案:

答案 0 :(得分:0)

好的,经过一整天的调试,我发现了原因

  1. 使用资源文件时,它会创建当前bin文件夹的附加文件夹,例如Language.es.resx,然后创建一个名为es的文件夹
  2. 当我将项目上传到ftp服务器时,此语言文件夹未创建且es recource.dll文件未上传
  3. 我认为就是这样,希望这可以帮助任何面临同样问题的人

答案 1 :(得分:0)

在Visual Studio的文件属性中,设置:

复制到输出目录:始终复制

如果要在一个文件夹中保存多个文件,则始终可以编辑.csproj文件

<Content Include="parent directory\*.*">
  <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>