如何在C#代码中使用wpflocalizeextension? 在xaml中,为了获取本地化字符串,我可以按如下方式使用它:
<Window x:Class="SomeClass"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:lex="http://wpflocalizeextension.codeplex.com"
lex:LocalizeDictionary.DesignCulture="uk-UA"
lex:ResxLocalizationProvider.DefaultAssembly="DesktopApp"
lex:ResxLocalizationProvider.DefaultDictionary="Resources">
<Button Content="{lex:Loc SignInBtn}"/>
如何在代码中获取本地化字符串,例如MessageBox.Show("SignInBtn");
?
答案 0 :(得分:11)
这很简单。
本地化密钥存储为 AssemblyName :资源: KeyName ,其中资源是Resources
类名称,通常您不会将其更改为其他名称。
您可以创建一个简单的包装器来获取本地化值:
using WPFLocalizeExtension.Extensions;
public static class LocalizationProvider
{
public static T GetLocalizedValue<T>(string key)
{
return LocExtension.GetLocalizedValue<T>(Assembly.GetCallingAssembly().GetName().Name + ":Resources:" + key);
}
}
假设您已使用"SignInBtn"
密钥创建了字符串资源,则可以调用:
MessageBox.Show(LocalizationProvider.GetLocalizedValue<string>("SignInBtn"));
答案 1 :(得分:2)
我经常使用以下本机命令,但尚未遇到任何错误:
LocalizeDictionary.Instance.GetLocalizedObject("keyComesHere", null, LocalizeDictionary.Instance.Culture).ToString()
当然,在转换为字符串之前,您应该检查空值。
答案 2 :(得分:0)
mcy的回答最初起作用了,但后来我得到了空位。
我更愿意使用第3次重载来确保获得正确的资源:
LocalizeDictionary.Instance.GetLocalizedObject("AssemblyName", "DictionaryName", "Key", LocalizeDictionary.Instance.Culture);
答案 3 :(得分:0)
简单地使用它
Properties.Resources.yourKey