当前位置: 首页 > wzjs >正文

浏阳网站开发建设什么是网站推广

浏阳网站开发建设,什么是网站推广,网站建设的规划方案,怎么用ps做网站首页字目录 一、多语言切换(需重启) 1、配置文件添加Key 2、新增附加属性当前选择语言 3、创建资源文件 4、初始化多语言集合 5、切换多语言并更新配置文件 6、应用程序启动根据配置切换多语言 7、使用 二、多语言切换(无需重启)…

目录

一、多语言切换(需重启)

1、配置文件添加Key

2、新增附加属性当前选择语言

3、创建资源文件

 4、初始化多语言集合

5、切换多语言并更新配置文件

6、应用程序启动根据配置切换多语言

 7、使用

二、多语言切换(无需重启)

1、创建多语言标记扩展基类

2、添加资源转换器

3、创建资源文件

4、继承基类创建指定资源文件扩展

5、添加资源文件管理

6、切换语言

7、使用

8、后台使用多语言

①获取多语言资源字符串

②后台绑定


一、多语言切换(需重启)

1、配置文件添加Key

	<appSettings><add key="language" value="zh-CN"/></appSettings>

2、新增附加属性当前选择语言

        public CultureInfo SelectLanguage{get => (CultureInfo)GetValue(SelectLanguageProperty);set => SetValue(SelectLanguageProperty, value);}public static readonly DependencyProperty SelectLanguageProperty =DependencyProperty.Register("SelectLanguage", typeof(CultureInfo), typeof(MainWindow));

3、创建资源文件

 4、初始化多语言集合

        public ObservableCollection<CultureInfo> CultureInfos { get; private set; } = new ObservableCollection<CultureInfo>();private void Window_Loaded(object sender, RoutedEventArgs e){var dir =Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);var curs = CultureInfo.GetCultures(CultureTypes.AllCultures);foreach (CultureInfo cur in curs){if (string.IsNullOrWhiteSpace(cur.Name)) continue;string landir = Path.Combine(dir, cur.Name);if (Directory.Exists(landir)) CultureInfos.Add(cur);}if (CultureInfos.Any(cur => cur.Name.Equals("zh-CN", StringComparison.OrdinalIgnoreCase)) is false){var cur = curs.FirstOrDefault(c => c.Name.Equals("zh-CN", StringComparison.OrdinalIgnoreCase));if (cur != null) CultureInfos.Add(cur);}SelectLanguage = Thread.CurrentThread.CurrentCulture;}

5、切换多语言并更新配置文件

        protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e){base.OnPropertyChanged(e);if (e.Property == SelectLanguageProperty){if (SelectLanguage == Thread.CurrentThread.CurrentCulture) return;Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);if (ConfigurationManager.AppSettings["language"] is null)config.AppSettings.Settings.Add("language", SelectLanguage.Name);elseconfig.AppSettings.Settings["language"].Value = SelectLanguage.Name;config.Save();ConfigurationManager.RefreshSection("appSettings");}}

6、应用程序启动根据配置切换多语言

   /// <summary>/// App.xaml 的交互逻辑/// </summary>public partial class App : Application{protected override void OnStartup(StartupEventArgs e){base.OnStartup(e);var lan= ConfigurationManager.AppSettings["language"];if (!string.IsNullOrWhiteSpace(lan)){CultureInfo culture = new CultureInfo(lan);Thread.CurrentThread.CurrentCulture = culture;Thread.CurrentThread.CurrentUICulture = culture;}}}

 7、使用

①映射命名空间

xmlns:rs="clr-namespace:WpfApp8.Resources"

②示例

    <Grid><GroupBox x:Name="gbox"><Grid><Button Width="100"Height="80"Background="LightGray"Content="{x:Static rs:SRS.TestLan}" /><ComboBox Width="150"Height="50"HorizontalAlignment="Left"VerticalContentAlignment="Center"DisplayMemberPath="NativeName"ItemsSource="{Binding Path=CultureInfos, ElementName=MW}"SelectedItem="{Binding Path=SelectLanguage, ElementName=MW}" /></Grid></GroupBox></Grid>

二、多语言切换(无需重启)

安装Nuget包:WpfExtensions.Xaml

1、创建多语言标记扩展基类

    /// <summary>/// 多语言绑定扩展基类 /// </summary>/// <typeparam name="T">多语言文件资源类</typeparam>[MarkupExtensionReturnType(typeof(object))]public class LanguageExtensionBase<T> : MarkupExtension where T : class{private static readonly ResourceConverter ResourceConverter = new ResourceConverter();[ConstructorArgument("Key")]public ComponentResourceKey Key { get; set; }public LanguageExtensionBase(string key){Key = new ComponentResourceKey(typeof(T), key);}public override object ProvideValue(IServiceProvider serviceProvider){if (Key == null){throw new NullReferenceException("Key cannot be null at the same time.");}IProvideValueTarget provideValueTarget = serviceProvider.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget;if (provideValueTarget == null){throw new ArgumentException("The serviceProvider must implement IProvideValueTarget interface.");}if (provideValueTarget.TargetObject?.GetType().FullName == "System.Windows.SharedDp"){return this;}return new Binding("Value"){Source = new I18nSource(Key, provideValueTarget.TargetObject),Mode = BindingMode.OneWay,Converter = ResourceConverter}.ProvideValue(serviceProvider);}}

2、添加资源转换器

    /// <summary>/// 资源转换器/// </summary>public class ResourceConverter : IValueConverter{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){Bitmap val = (Bitmap)((value is Bitmap) ? value : null);if (val == null){Icon val2 = (Icon)((value is Icon) ? value : null);if (val2 != null){return ToBitmapSource(val2.ToBitmap());}return value;}return ToBitmapSource(val);}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){throw new NotSupportedException();}[DllImport("gdi32")]private static extern int DeleteObject(IntPtr o);public ImageSource ToBitmapSource(Bitmap bitmap){IntPtr ptr = bitmap.GetHbitmap(); //obtain the HbitmapBitmapSource bitmapSource = Imaging.CreateBitmapSourceFromHBitmap(ptr, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());DeleteObject(ptr); //release the HBitmapreturn bitmapSource;}}

3、创建资源文件

4、继承基类创建指定资源文件扩展

    /// <summary>/// 多语言绑定扩展/// </summary>[MarkupExtensionReturnType(typeof(object))]internal class LanguageExtension : LanguageExtensionBase<DefaultLanguage>{public LanguageExtension(string key) : base(key){}}

5、添加资源文件管理

try
{I18nManager.Instance.Add(Resource.ResourceManager);
}
catch (ArgumentException) 
{
}

6、切换语言

var culture = new CultureInfo("en-US");
I18nManager.Instance.CurrentUICulture = culture;
System.Threading.Thread.CurrentThread.CurrentCulture = culture;

7、使用

①映射命名空间到XAML

xmlns:Lan="clr-namespace:SqlSugarTest.Lan"

 ②资源文件中添加多语言资源

③示例

                    <GroupBox Header="多语言测试"><Menu Height="NaN" HorizontalAlignment="Center"VerticalAlignment="Center"Background="{x:Null}"FontSize="12" FontWeight="Bold"><MenuItem Margin="3" Padding="10,8"HorizontalAlignment="Center"HorizontalContentAlignment="Center"Header="{Lan:Language MultiLanguage}"><MenuItem Margin="3" Padding="10,5"Click="MenuItem_Click_CN" Header="CN-中" /><MenuItem Margin="3" Padding="10,5"Click="Button_Click_EN" Header="US-英" /><MenuItem Margin="3" Padding="10,5"Header="Test"><MenuItem Margin="3" Padding="10,5"Header="111" /><MenuItem Margin="3" Padding="10,5"Header="222" /></MenuItem></MenuItem></Menu></GroupBox>

8、后台使用多语言

①获取多语言资源字符串

        /// <summary>/// 获取Key资源/// </summary>/// <param name="key"></param>/// <param name="resource"></param>/// <returns></returns>public static string GetString(string key, ResourceManager resource = null){if (resource == null)return DefaultLanguage.ResourceManager.GetString(key, I18nManager.Instance.CurrentUICulture);elsereturn resource.GetString(key, I18nManager.Instance.CurrentUICulture);}
MessageBox.Show(GetString(nameof(DefaultLanguage.Test)));

②后台绑定

        static readonly ResourceConverter converter = new ResourceConverter();/// <summary>/// 按自定义数据绑定多语言/// </summary>/// <typeparam name="T">自定义数据源</typeparam>/// <param name="key">数据关键字</param>/// <returns></returns>public static BindingBase GetBinding<T>(string key, object element = null){var Key = new ComponentResourceKey(typeof(T), key);return new Binding("Value"){Source = new I18nSource(Key, element),Mode = BindingMode.OneWay,Converter = converter};}
 menu_Test.SetBinding(MenuItem.HeaderProperty, GetBinding<DefaultLanguage>(nameof(DefaultLanguage.Test)));

http://www.dtcms.com/wzjs/27221.html

相关文章:

  • javaee做视频网站谷歌优化是什么意思
  • 随州网站建设哪家专业广州seo成功案例
  • 东莞市做网站的最好的是哪家的windows优化大师
  • 网站建设用什么语言开发广告语
  • 电影网站如何做采集晋江友情链接是什么意思
  • java 企业网站开发seo网站排名优化快速排
  • 概念网站源码sem培训班
  • 辽宁建设工程信息网投标指定读卡器网站推广及seo方案
  • 烟台品牌网站建设培训网页
  • 吉林省 网站建设网站建设及推广优化
  • 陕西省市建设委员会网站游戏推广员怎么做
  • 创客贴网站建设近期发生的新闻
  • 广州白云区建设局网站企业应该如何进行网站推广
  • 在网站做博客安康seo
  • 网站开发团队人员百度服务电话
  • 恩施有做网站的吗百度seo关键词怎么做
  • 做网站教程下载百度知道客服电话
  • 国家外管局网站怎么做收汇网络广告策划的内容
  • 太原网站制作价格利搜网站排名软件
  • 假网站连接怎么做的北京网站建设公司案例
  • wordpress社交插件seo优化百度技术排名教程
  • 在网站上做承诺书连云港seo公司
  • 个人可以做导购网站吗seo是什么
  • 嘉兴有哪些做网站的公司如何写好一篇软文
  • 阿里巴巴跟建设网站的区别网络营销知识点
  • 网站设计的公司工作室今天最新新闻事件报道
  • 做网站公司哪家公司好5g影讯5g天线在线观看免费视频
  • 如何进行电子商务网站建设软件制作平台
  • WordPress导航栏主题新区seo整站优化公司
  • java网站开发视频转码什么是互联网营销师