Bil*_*lly 10 asp.net internationalization
我想在App_GlobalResources文件夹中为新加坡英语(en-sg)创建一个名为"shopping.en-sg.resx"的资源文件.
我在编译期间遇到错误.
错误1名称空间"资源"已包含"购物"的定义c:\ WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\web\2cd6afe9\737b0a13\App_GlobalResources.vomuzavz.1.cs 26
在搜索Google之后,我发现"en-sg"不是默认文化,我必须为它创建自定义文化.我不知道这个的详细步骤.
我该怎么做才能创建文化并删除编译错误?
我按照MSDN中的示例,创建一个名为"shopping.x-en-US-sample.resx"的文件,并将以下代码放入BasePage的函数中(protected override void InitializeCulture()):
CultureAndRegionInfoBuilder cib = null;
cib = new CultureAndRegionInfoBuilder(
"x-en-US-sample", CultureAndRegionModifiers.None);
CultureInfo ci = new CultureInfo("en-US");
cib.LoadDataFromCultureInfo(ci);
RegionInfo ri = new RegionInfo("US");
cib.LoadDataFromRegionInfo(ri);
cib.Register();
ci = new CultureInfo("x-en-US-sample");
Run Code Online (Sandbox Code Playgroud)
但是,编译错误仍然存在.
更新:
您可以通过在app_globalresources文件夹中创建一个空网站和两个文件"shopping.en-sg.resx"和"shopping.resx"轻松地重现问题.
Mar*_*man 17
您可以基于现有文化创建新文化:
string culture = "en-sg";
string name = "Singaporean English";
CultureInfo cultureInfo = new CultureInfo("en-GB");
RegionInfo regionInfo = new RegionInfo(cultureInfo.Name);
CultureAndRegionInfoBuilder cultureAndRegionInfoBuilder = new CultureAndRegionInfoBuilder(culture, CultureAndRegionModifiers.None);
cultureAndRegionInfoBuilder.LoadDataFromCultureInfo(cultureInfo);
cultureAndRegionInfoBuilder.LoadDataFromRegionInfo(regionInfo);
// Custom Changes
cultureAndRegionInfoBuilder.CultureEnglishName = name;
cultureAndRegionInfoBuilder.CultureNativeName = name;
cultureAndRegionInfoBuilder.Register();
Run Code Online (Sandbox Code Playgroud)
补充: 刚检查了参考文献:我有:
using System;
using System.Collections.Generic;
using System.Text;
using System.Globalization;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
Run Code Online (Sandbox Code Playgroud)
添加(根据评论更新):
关于错误消息:
您看到的错误是某些资源命名冲突的结果.检查资源名称,将这些编译成dll,你需要检查命名空间名称是否冲突.您可以使用反射器工具进行检查:http://www.red-gate.com/products/reflector/
归档时间: |
|
查看次数: |
11861 次 |
最近记录: |