c 无法添加多语言的resx文件,c# – 如何在单个EXE中嵌入多语言* .resx(或* .resources)文件?...

我的解决方案:程序只包含一个默认语言资源文件(resx).所有其他语言都从.resx编译为.resources并作为资源文件嵌入.重要!我更改了扩展名,因为“.resources”被识别为一种特殊类型的资源,所以我的法语文件被命名为“PIAE.LangResources.fr”.

以下是检索已翻译字符串的简单代码(应使用资源缓存值来改进):

internal static string GetString(string str, string lang)

{

if (string.IsNullOrEmpty(str)) throw new ArgumentNullException("empty language query string");

if (string.IsNullOrEmpty(lang)) throw new ArgumentNullException("no language resource given");

// culture-specific file, i.e. "LangResources.fr"

Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("PIAE.LangResources."+lang);

// resource not found, revert to default resource

if (null == stream)

{

stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("PIAE.Properties.LangResources.resources");

}

ResourceReader reader = new ResourceReader(stream);

IDictionaryEnumerator en= reader.GetEnumerator();

while (en.MoveNext())

{

if (en.Key.Equals(str))

{

return en.Value.ToString();

}

}

// string not translated, revert to default resource

return LangResources.ResourceManager.GetString(str);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值