【发布时间】:2017-07-10 15:44:16
【问题描述】:
花几个小时在这上面。认为我的思维过程可能会关闭..
我想为跨不同库和应用程序的语言翻译创建一个入口点。
我做了以下事情:
创建了名为 Translations 的新类库项目 在根级别添加了新项目 - MyStrings.en-US.resx 文件 填充的 resx 文件 resx - 访问修饰符设置为公共
在翻译项目的根级别添加了新项目类 - 翻译 添加属性
public class Translator
{
private ResourceManager _translationManager;
public ResourceManager TranslationManager
{
get
{
if (_translationManager == null)
{
_translationManager = new ResourceManager("MyStrings", this.GetType().Assembly);
}
return _translationManager;
}
}
}
在 WebSite(不是 Web 项目,而是网站)中添加了对 Translations Project 的引用 在后面声明的代码中
private Translator _translate;
public Translator Translate
{
get
{
if (_translate == null)
{
_translate = new Translator();
}
return _translate;
}
}
然后在 LINQ 语句中
Title = TranslationManager.GetString(appsAvailable.Value.ResourceKey, CurrentCulture)
ResourceKey does have a value
CurrentCulture = en-US
我收到了这个错误
找不到任何适合指定文化的资源或 中立文化。确保“MyStrings.resources”正确 在编译时嵌入或链接到程序集“翻译”中,或 所需的所有附属程序集都是可加载且完全可加载的 签名。
当我查看我的 bin/obj/debug 文件夹时,我看到了这个 Translations.MyStrings.en-US.resources
这不是它要查找的名称。我试图将经理的“基本名称”从“MyStrings”修改为“Translations.MyStrings”,但我收到一个类似的错误,指出“找不到 Translations.MyStrings.resources”。我也试过只是说好吧忘记现在的文化让我们访问它“Translations.MyStrings.en-US”作为基本名称。它说它仍然找不到它。
关于我哪里出错的任何想法?我在想它需要被复制到某个地方,以便软件找到它但不知道它去哪里?还是我在尝试做一些不该做的事情?
非常感谢您的帮助!
【问题讨论】:
标签: c# asp.net resourcemanager