我有一个包含一些“全局”资源的 ASP.NET 网站:
\App_GlobalResources
ContosoFrobberResource.resx
这是对与每个“aspx”文件关联的“本地”资源的补充:
\App_LocalResources
Materials.aspx.resx
Notes.aspx.resx
OrderHistory.aspx.resx
现在我想将该站点本地化为另一个语言环境(例如
en
)。我创建了一个 resx
每个“本地”资源的文件:\App_LocalResources
Materials.aspx.en.resx
Materials.aspx.en-us.resx
Materials.aspx.en-uk.resx
Materials.aspx.en-sg.resx
Notes.aspx.en.resx
Notes.aspx.en-us.resx
Notes.aspx.en-uk.resx
Notes.aspx.en-sg.resx
OrderHistory.aspx.en.resx
OrderHistory.aspx.en-us.resx
OrderHistory.aspx.en-uk.resx
OrderHistory.aspx.en-sg.resx
一切正常;该网站显示量身定制的英语版本
以及通用的后备
当我尝试本地化
App_GlobalResources
中的资源时出现问题:\App_GlobalResources
ContosoFrobberResource.resx
ContosoFrobberResource.en-us.resx
该网站因以下错误而崩溃:
CS0101: The namespace 'Resources' already contains a definition for 'ContosoFrobberResource'
我如何本地化
App_GlobalResources
在 ASP.NET 网站中?奖金喋喋不休
ContosoFrobberResource.resx
<?xml version="1.0" encoding="utf-8"?> <root> <data name="ProjectDueDate" xml:space="preserve"> <value>Proposal Due Date</value> </data> </root>
ContosoFrobberResource.qps.resx
<?xml version="1.0" encoding="utf-8"?> <root> <data name="ProjectDueDate" xml:space="preserve"> <value>Prȍposẳl Duɇ Dãtē</value> </data> </root>
最佳答案
找到了答案。
ASP.NET 不能正确回退到父语言。如果它无法将文件识别为“后备”语言环境,则它无法解析它,并显示误导性错误。
例如
ContosoGrobber.resx
ContosoGrobber.en-us.resx
工作正常。但:
ContosoGrobber.resx
ContosoGrobber.en.resx
失败时 "
en
"无法识别区域设置字符串的一部分。更改它以使用完整的语言环境名称,并避免错误的回退代码是修复。例如。:ContosoGrobber.qps.resx
应该变成:
ContosoGrobber.qps-ploc.resx
换句话说:如果浏览器正在请求语言环境
qps-ploc
, 理想情况下 你可以用ContosoGrobber.qps.resx
和本地
qps-ploc
将回退到 qps
.但是由于 ASP.NET 中的错误,它不能正确回退。这意味着你不能让它回退;您必须实际处理所有可能的语言环境:ContosoGrobber.qps-ploc.resx
ContosoGrobber.qps-plocm.resx
ContosoGrobber.qps-ploca.resx
关于asp.net - 如何在 ASP.NET 中本地化 App_GlobalResources?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9202428/