I18N
App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Languages" value="en-US.xaml"/>
</appSettings>
</configuration>
App.xaml.cs
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e); //第一种方式就是用配置文件 配置
string appLang = ConfigurationManager.AppSettings.Get("Languages");
App.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri(appLang, UriKind.RelativeOrAbsolute) });
//第二种方式 就是获取当前系统的语言
string lang = System.Globalization.CultureInfo.InstalledUICulture.Name.ToString(CultureInfo.InvariantCulture);
switch (lang)
{
case "zh-CN":
App.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("zh-CN.xaml", UriKind.RelativeOrAbsolute) }); break;
case "en-US":
App.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("en-US.xaml", UriKind.RelativeOrAbsolute) }); break;
default:
App.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("en-US.xaml", UriKind.RelativeOrAbsolute) }); break;
}
}
en-US.xaml
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"> <sys:String x:Key="Window1Title">Window</sys:String>
<sys:String x:Key="UserLog">UserLogin</sys:String>
<sys:String x:Key="UserCode">UserCode</sys:String>
<sys:String x:Key="UserName">UserPwd</sys:String>
<sys:String x:Key="BtnLoginOk">Login</sys:String>
<sys:String x:Key="BtnLoginCancel">Cancel</sys:String>
<sys:String x:Key="BtnzhCN">Chinese</sys:String>
<sys:String x:Key="BtnenUS">English</sys:String> </ResourceDictionary>
zh-CN.xaml
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"> <sys:String x:Key="Window1Title">窗体</sys:String>
<sys:String x:Key="UserLog">用户登录</sys:String>
<sys:String x:Key="UserCode">用户名</sys:String>
<sys:String x:Key="UserName">密码</sys:String>
<sys:String x:Key="BtnLoginOk">登录</sys:String>
<sys:String x:Key="BtnLoginCancel">取消</sys:String>
<sys:String x:Key="BtnzhCN">中文</sys:String>
<sys:String x:Key="BtnenUS">英文</sys:String> </ResourceDictionary>
MainWindow.xaml
<Window x:Class="I18N.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="{DynamicResource Window1Title}">
<Grid HorizontalAlignment="Center" VerticalAlignment="Center">
<GroupBox Header="{DynamicResource UserLog}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="45*" />
<RowDefinition Height="48*" />
<RowDefinition Height="58*" />
<RowDefinition Height="100*" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="1"
Margin="36,22,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="{DynamicResource UserCode}"
TextWrapping="Wrap" />
<TextBlock Grid.Row="2"
Margin="36,23,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="{DynamicResource UserName}"
TextWrapping="Wrap" />
<TextBox Grid.Row="1"
Width="120"
Height="23"
Margin="125,22,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="TextBox"
TextWrapping="Wrap" />
<TextBox Grid.Row="2"
Width="120"
Height="23"
Margin="125,23,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="TextBox"
TextWrapping="Wrap" />
<Button Grid.Row="3"
Width="75"
Margin="78,29,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Content="{DynamicResource BtnLoginOk}" />
<Button Grid.Row="3"
Width="75"
Margin="192,29,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Content="{DynamicResource BtnLoginCancel}" />
<Button Name="btnenUS"
Width="75"
Margin="301,10,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Click="btnenUS_Click"
Content="{DynamicResource BtnenUS}" />
<Button Name="btnzhCN"
Width="75"
Margin="221,10,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Click="btnzhCN_Click"
Content="{DynamicResource BtnzhCN}" /> </Grid>
</GroupBox>
</Grid>
</Window>
MainWindow.xaml.cs
using System;
using System.Windows; namespace I18N
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
} private void btnzhCN_Click(object sender, RoutedEventArgs e)
{
App.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("zh-CN.xaml", UriKind.RelativeOrAbsolute) });
} private void btnenUS_Click(object sender, RoutedEventArgs e)
{
App.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("en-US.xaml", UriKind.RelativeOrAbsolute) });
}
}
}
I18N的更多相关文章
- Java国际化(i18n)
Java国际化(i18n) 最近在做一个网站国际化的功能.用Java做开发,使用spring+velocity. Java提供了对i18n的支持,spring对其做了集成,可以很方便的配置.主要思想就 ...
- Java的国际化(i18n)
http://blog.csdn.net/csuliky/article/details/4225800 1. Java国际化简介 Java既然作为一个跨平台的语言就必然要在各种不同的语言环境中使用, ...
- I18N 国际化
http://blog.sina.com.cn/s/blog_6c7e59770101p7w9.html 一.I18N 在 J2EE 中的应用 [转载:http://blog.csdn.net/cha ...
- i18n国际化
<% request.setAttribute("date", new Date()); request.setAttribute("salary", ...
- 国际化支持(I18N)
本章译者:@nixil 使用国际化支持(I18N)能够使你的应用根据用户所在地区的不同选择不同的语言.下面介绍如何在引用中使用国际化. 只允许使用UTF-8 Play只支持UTF-8一种字符编码.这是 ...
- JSTL I18N 格式标签库
<%@ page language="java" pageEncoding="gbk"%> <%@ taglib prefix="c ...
- yii框架详解 之 国际化 (I18N)
我们要开启组件中们关于语言的配置,默认的就是CPhpMessageSource,也可以改为其他的方式. #组件配置中 'messages' => array( 'class'=> ...
- Django1.9开发博客(12)- i18n国际化
国际化与本地化的目的为了能为各个不同的用户以他们最熟悉的语言和格式来显示网页. Django能完美支持文本翻译.日期时间和数字的格式化.时区. 另外,Django还有两点优势: 允许开发者和模板作者指 ...
- I18N、L10N、G11N
I18N --是“Internationalization” 的缩写,由于 “Internationalization” 单词较长,所以为了书写简便,通常缩写为“I18N” .中间的 18 代表在首字 ...
随机推荐
- static静态结合&符号理解
上代码,方法定义为静态变量 <?php function &test(){ static $c=222; return $c; } $a=&test(); echo $a; ec ...
- JAVA6开发WebService (四)——SAAJ调用WebService
转载自http://wuhongyu.iteye.com/blog/810571 前面写了个JAX-WS的小例子,看到用JAVA6开发WebService确实很简单,也很方便,不过前面也说了,JAVA ...
- 演示一个导致ora-01555错误的场景
1创建一个undo表空间 2查看当前undo配置 3更该默认undo表空间 4确认更改的配置 5创建一张测试表 6模拟批量操作 7 查询2分钟前的数据 从这里可以到当查询2分钟前的数据时候,系统报出O ...
- 关于export 和 require(import)的一些技巧和常用方法
多重export 这样做的好处是可以在引入页面按需加载,也非常的清晰加载了哪一些东西 //exportexport const setError = ({dispatch}, error) => ...
- HDU 4358 Boring counting(莫队+DFS序+离散化)
Boring counting Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 98304/98304 K (Java/Others) ...
- Mininet实验 源码安装Mininet
参考:MiniNet实验1 安装命令: sudo apt-get update sudo apt-get upgrade sudo apt-get install git(安装过git就可以忽略此步) ...
- alloc
注意,凡是用到指针的地方,一定要在堆中分配空间,否则指针释放了,那就不能够传值了. 将一个对象作为另外一个对象的成员变量,可以直接将两个对象联系起来.
- 从零开始的Android新项目1 - 架构搭建篇
记录一下新项目的搭建. 试想一下,如果没有历史负担,没有KPI压力,去新搭建一个项目,你会怎么设计和实现呢? 本系列文章不是教你怎么从0开始学Android,从0开始怎么建一个项目,而定位于零负担的情 ...
- [转]Android View.onMeasure方法的理解
转自:http://blog.sina.com.cn/s/blog_61fbf8d10100zzoy.html Android View.onMeasure方法的理解 View在屏幕上显示出来要先经过 ...
- ios数据库SQLite实现
SQLite嵌入式数据库 1.支持时间,不需要配置,不需要安装,不需要管理员; 2.支持大部分SQL92; 3.完整的数据库保存在磁盘上面的一个文件,同一个数据库文件可以在不同机器上面使用.最大支持数 ...