相关疑难解决方法(0)

如何根据某些参数加载不同的RESX文件

我有一个ASP.NET3.5(C#)ASPX页面,它以10种不同的语言进行国际化.

该页面结构非常复杂,有几十个由状态机模式驱动的嵌套视图.

编辑:我meta:resourcekey在每个asp控件中使用语法,允许使用隐式资源表达式的声明性语法.

我被要求根据一些查询字符串参数"标记"页面.品牌化不仅意味着加载不同的CSS文件,还意味着具有不同的文本模糊(在所有语言中).

是否有一种简单的方法来"交换"resx文件,而无需为此页面上的每个数百个文字和图像手动获取资源?

换句话说,假设我有以下RESX文件:

brand1_myPage.aspx.en-US.resx
brand1_myPage.aspx.de-DE.resx
brand1_myPage.aspx.fr-FR.resx

brand2_myPage.aspx.en-US.resx
brand2_myPage.aspx.de-DE.resx
brand2_myPage.aspx.fr-FR.resx
Run Code Online (Sandbox Code Playgroud)

myPage.aspx将查找名为myPage.xx-XX.resx的 resx文件.

有没有办法加载brand1xxx.resx文件或brand2xxx.resx基于某些值?

提前致谢.

.net c# asp.net resx internationalization

15
推荐指数
1
解决办法
5333
查看次数

在ASP.NET中创建自定义文化

我想在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"轻松地重现问题.

asp.net internationalization

10
推荐指数
1
解决办法
1万
查看次数

标签 统计

asp.net ×2

internationalization ×2

.net ×1

c# ×1

resx ×1