我是ASP .NET开发这门艺术的初学者,所以如果这是一个愚蠢的问题,请原谅我。在用谷歌搜索了一下之后,阅读了一下(其中一些...)ASP .NET 3.5发布后,我还没有找到一种方法来做我想做的事情--这通常意味着我正在尝试做一些愚蠢的事情,或者很明显我错过了它:)
我正在创建一个服务器控件,用于我公司正在开发的多个站点。它没什么特别的,只是一个标准的你可以编辑和创建用户的控件。
这样做自然需要本地化一些文本。
对我来说,这样做的自然方式是以某种约定命名的全局资源,然后包括服务器控件的项目可能会填充本地化数据。
但是,在我的组件中访问这些资源时遇到了一些问题。
在项目A的App_GlobalResources文件夹中创建了一个名为CreateOrEditUserControl.da.resx的资源文件(旁注:我是否需要将App_GlobalResources文件夹添加到web配置文件中?)。项目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",您可以在querystring中指定语言,然后我手动插入字符串。然而,这是不可取的,因为任何更改都需要更改组件,而不仅仅是用户...
做这件事的正确方法是什么-如果有的话?
提前感谢!
发布于 2010-09-09 19:09:41
对我来说,这样做的自然方式是一个全局资源,以某种约定命名,然后包括服务器控件的项目可以用本地化的数据填充它。
我对ASP.Net几乎一无所知,但如果我有共同的控件可以在不同的页面或各种应用程序中使用,我会在这个控件中包含可翻译的资源。这样,您就不必为每个项目本地化它,而只需本地化一次。我非常确定这在ASP.Net中是可能的。
至于访问全局资源(再次抱歉,我的知识有限),您可能必须使用ResourceManager或ResourceReader。
https://stackoverflow.com/questions/3674514
复制相似问题