【发布时间】:2010-09-09 07:17:17
【问题描述】:
我是 ASP .NET 开发魔法的初学者,如果这是一个愚蠢的问题,请原谅我。 经过一番谷歌搜索并阅读(一些......)ASP .NET 3.5 Unleashed,我还没有找到一种方法来做我想做的事 - 这通常意味着我正在尝试做一些愚蠢的事情,或者很明显我已经错过了:)
我正在创建一个服务器控件,用于我公司正在开发的多个站点。这没什么花哨的,只是一个标准的在这里你可以编辑和创建用户控件。
这样做自然需要对某些文本进行本地化。
对我来说,这样做的自然方式是使用以某种约定命名的全局资源,然后包含服务器控件的项目可能会填充本地化数据。
但是,我在从我的组件中访问这些资源时遇到了一些问题。
在项目 A 的 App_GlobalResources 文件夹中创建了一个名为 CreateOrEditUserControl.da.resx 的资源文件(旁注:我需要将我的 App_GlobalResources 文件夹添加到 web-config 中吗?)。项目 A 包括来自项目 B 并通过程序集引用加载的 CreateOrEditUserControl。 CreateOrEditUserControl.da.resx 包含映射到字符串 Brugernavn 的键 UserName(这只是丹麦语本地化,您可能已经猜到了...)
在 CreateChildControls() 方法中的控件内(因为我需要本地化字符串),我尝试通过以下方式访问资源:
HttpContext.GetGlobalResource("CreateOrEditUserControl","UserName");
HttpContext.GetGlobalResource("CreateOrEditUserControl.da","UserName");
HttpContext.GetGlobalResource("CreateOrEditUserControl.da.resx","UserName");
HttpContext.GetLocalResource("CreateOrEditUserControl.da.resx","UserName");
前三个返回 null,最后一个抛出异常,因为我没有权限从我的组件中访问所述资源,这似乎是合乎逻辑的。
到目前为止,我不得不求助于“hack”,您可以在其中指定查询字符串中的语言,然后我手动插入字符串。但是,这是不可取的,因为任何更改都需要更改组件,而不仅仅是用户...
这样做的正确方法是什么 - 如果有的话?
提前致谢!
【问题讨论】:
标签: asp.net user-controls localization