【发布时间】:2011-01-10 12:09:19
【问题描述】:
我正在尝试为我正在使用的应用程序进行手动翻译。 (已经有一个有效的 LocalizationModule 但它的工作很狡猾,所以我不能使用<asp:Localize /> 标签。
通常使用 ResourceManager 您应该将其用作Namespace.Folder.Resourcename(在应用程序中)。目前我正在翻译一个现有的 asp.net“网站”(不是 Web 应用程序,所以这里没有命名空间......)。
资源位于文件夹名称“Locales/resources”中,其中包含“fr-ca.resx”和“en-us.resx”。
所以我使用了类似这样的代码:
public static string T(string search)
{
System.Resources.ResourceManager resMan = new System.Resources.ResourceManager( "Locales", System.Reflection.Assembly.GetExecutingAssembly(), null );
var text = resMan.GetString(search, System.Threading.Thread.CurrentThread.CurrentCulture);
if (text == null)
return "null";
else if (text == string.Empty)
return "empty";
else
return text;
}
在页面内我有这样的东西<%= Locale.T("T_HOME") %>
当我刷新时,我有这个:
找不到任何资源 适用于指定的文化 或中立文化。确保 “Locales.resources”是正确的 嵌入或链接到程序集中 “App_Code.9yopn1f7”在编译时, 或者所有的卫星组件 required 是可加载且完全的 签。描述:一个未处理的 期间发生异常 执行当前的 Web 请求。 请查看堆栈跟踪以获取更多信息 有关错误和位置的信息 它起源于代码。
异常详情: System.Resources.MissingManifestResourceException: 找不到任何资源 适用于指定的文化 或中立文化。确保 “Locales.resources”是正确的 嵌入或链接到程序集中 “App_Code.9yopn1f7”在编译时, 或者所有的卫星组件 required 是可加载且完全的 签名。
来源错误:
第 14 行:
System.Resources.ResourceManager resMan = 新的 System.Resources.ResourceManager( “语言环境”, System.Reflection.Assembly.GetExecutingAssembly(), 空值 );第 15 行:第 16 行:var 文本 = resMan.GetString(搜索, System.Threading.Thread.CurrentThread.CurrentCulture); 第 17 行:第 18 行:if (text == null)源文件: c:\inetpub\vhosts\galerieocarre.com\subdomains\dev\httpdocs\App_Code\Locale.cs 线路:16
我什至尝试使用 Locales.fr-ca 或仅使用 fr-ca 加载资源,这里没什么用。
【问题讨论】:
-
是否可以将资源文件放在 App_LocalResources 文件夹中?
-
这需要我为每个页面创建一个资源,我会说相当浪费时间:/ App_LocalResources 也主要用于
标签不是吗?
标签: c# asp.net localization web