用于使用托管C ++进行本地化的.resx文件

时间:2015-01-21 15:09:21

标签: c++ resx resourcemanager

我正在尝试使用.resx文件在VS2013的托管C ++ CLR项目中进行字符串本地化。在我的项目Resources Files文件夹中我右键单击>添加项目> .resx文件并将其命名为AppLocalization.resx。我再次这样做并创建AppLocalization.fr.resx。然后我为每个添加一个具有相同名称的不同字符串。如果我运行我的应用程序,以下代码从AppLocalization.resx文件中获取正确的字符串:

ResourceManager ^rm1 = gcnew ResourceManager(L"My_App.AppLocalization", Assembly::GetExecutingAssembly());
this->Text = rm1->GetString(L"My String Name");

现在我想测试.fr法语翻译,这就是我遇到麻烦的地方。这两个都无法从.fr.resx文件中获取字符串,而是从AppLocalization.resx文件中返回字符串:

this->Text = rm1->GetString(L"My String Name", gcnew System::Globalization::CultureInfo("fr"));

System::Threading::Thread::CurrentThread->CurrentCulture = gcnew System::Globalization::CultureInfo("fr-FR");
System::Threading::Thread::CurrentThread->CurrentUICulture = gcnew System::Globalization::CultureInfo("fr-FR");
this->Text = rm1->GetString(L"My String Name");

毫无疑问,它会变得简单,我做错了或没有设置,但经过多次搜索,我找不到解决方案。我已尝试在调试模式和发布模式下进行测试。我已经验证了文件\ fr \ My_App.resources.dll是在Debug和Release文件夹中创建的,但不管我尝试它都不会在运行时使用。

1 个答案:

答案 0 :(得分:0)

问题是.....我的项目属性将“Common Language Runtime Support”设置为“/ clr:safe”。一旦我将其改为“/ clr:纯粹的一切都完美无缺。