如何在代码隐藏中使用 wpflocalizeextension?
How to use wpflocalizeextension in Code-Behind?
如何在 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");
?
这很简单。
本地化密钥存储为 AssemblyName:Resources:KeyName,其中 Resources 是 Resources
class 名称,通常您不会将其更改为其他名称。
您可以创建一个简单的包装器来获取本地化值:
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"));
我经常使用以下本机命令并且还没有遇到任何错误:
LocalizeDictionary.Instance.GetLocalizedObject("keyComesHere", null, LocalizeDictionary.Instance.Culture).ToString()
当然,在转换为字符串之前,您应该检查空值。
mcy 的回答起初以某种方式起作用,但后来我得到了空值。
我更愿意使用第三个重载来确保我获得正确的资源:
LocalizeDictionary.Instance.GetLocalizedObject("AssemblyName", "DictionaryName", "Key", LocalizeDictionary.Instance.Culture);
简单使用
Properties.Resources.yourKey
如何在 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");
?
这很简单。
本地化密钥存储为 AssemblyName:Resources:KeyName,其中 Resources 是 Resources
class 名称,通常您不会将其更改为其他名称。
您可以创建一个简单的包装器来获取本地化值:
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"));
我经常使用以下本机命令并且还没有遇到任何错误:
LocalizeDictionary.Instance.GetLocalizedObject("keyComesHere", null, LocalizeDictionary.Instance.Culture).ToString()
当然,在转换为字符串之前,您应该检查空值。
mcy 的回答起初以某种方式起作用,但后来我得到了空值。
我更愿意使用第三个重载来确保我获得正确的资源:
LocalizeDictionary.Instance.GetLocalizedObject("AssemblyName", "DictionaryName", "Key", LocalizeDictionary.Instance.Culture);
简单使用
Properties.Resources.yourKey