国际化

  我之前 WinForm 国际化都是凑一些代码搞起(请看文后 Reference)。

  最近发现还有个官方国际化方法:

  1. 首先设置 Form 的 Localizable 属性为 true
  2. 选择 Form 的 Language 为 "(Default)",然后给页面中每个控件设置一遍 Text
  3. 选择 Form 的 Language 为 "中文(简体)",然后给页面的每个控件设置一遍 中文 Text
  4. 对所需要支持的语言,先设置 Form 的 Language 为所要支持的语言,然后给页面的每个控件设置一遍 Text

  每设置一个语言后,设计器会自动生成对应的 resx 文件,如:Form1.resx (Default), Form1.zh-Hans.resx , Form1.en-US.resx 等等。

问题

  用了一下官方方法后,我发现了以下问题:

  1. 设计器生成的 resx 文件里面会有一些奇怪的名称,例如:由 >> 开头的资源名、 resource.Name34、resource.Name35 等等。这些名称对程序员不友好。
  2. 重构控件名称的时候,设计器只会去修改当前语言下的 resx 文件,其他 resx 文件中的相应控件名称不会改变。所以还需手工重设其他语言环境下这个控件的Text。这比较不方便,因为我可能已经忘掉了之前这个控件上的字符串是什么了。(非官方的国际化也有这个问题,而且稍微大一点,设计器不会修改任何一个 resx 文件,所以都要自己改)
  3. 如果之前 Form 的 Localilzable 是 false,而且手动设置了一些字符串,然后设置 Form 的 Localizable 为 true,则之前手动设置的字符串会被设计器删除。这个问题比较严重。唯一想到的方法是,在界面的 resx 文件中不手动添加东西,另建一个 resx 文件存放手动设置的字符串。这样同样不大易用。

  

选择

  在开始工程之前要选择好非官方还是官方的国际化方法,在项目中切换可能会丢失掉之前的字符串资源。

  目前我有旧代码,还是使用非官方的方法吧,毕竟 resx 可控,设计器不会自己加东西进去。只是重构控件名称时候,手工的工作量大了。(官方重构时的工作量也大)

  以后如果新建工程,官方的方法或许还行,只要把自己手工写的资源分文件来搞。

  

Reference:

1. 手动的国际化:http://www.cnblogs.com/codefish/p/4778269.html

2. 官方的WinForm国际化:https://msdn.microsoft.com/en-us/library/y99d1cd3(v=vs.71).aspx

3. 代码切换官方国际化:http://www.dotnetcurry.com/showarticle.aspx?ID=174

WinForm 国际化的一些问题的更多相关文章

  1. C# WinForm国际化的简单实现

    软件行业发展到今天,国际化问题一直都占据非常重要的位置,而且应该越来越被重视.对于开发人员而言,在编写程序之前,国际化问题是首先要考虑的一个问题,也许有时候这个问题已经在设计者的考虑范围之内,但终归要 ...

  2. WinForm 国际化开发一例

    1.新建一个WinForm程序(在中文版的Windows下),如下,添加1个Button和1个Label 设置Form1的localizable属性为True(Form1的properties里的De ...

  3. C# Winform 国际化

    1.在Form的language属性选择中文,来制作中文界面 保存后,设置界面标题会变成如下所示,并且会出现一个zh-CN的资源文件,打开resx文件可看到相应内容 2.将Form的language属 ...

  4. C# WinForm 中英文实现, 国际化实现的简单方法

    来源:http://www.jb51.net/article/45675.htm,今天看到了借鉴过了,保存一下,下次开发直接用嘻嘻 软件行业发展到今天,国际化问题一直都占据非常重要的位置,而且应该越来 ...

  5. Winform/WPF国际化处理

    1.Winfrom国际化处理方式 ==> Winform中国际化支持可将UI页面和.cs文件分开处理 处理窗体方式如下:1.选择Form窗体设置其--Language(默认中文--Default ...

  6. Winform下的语言国际化,几行代码轻松实现

    最近做了一些关于winform的项目,需要用到winform的语言国际化,在初使化的时候用起来非常方便.可以参考一下: 核心逻辑: 预览效果演示: OK,以下是核心代码和操作流程 一,添加Langua ...

  7. sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)

    sql server 关于表中只增标识问题   由于我们系统时间用的过长,数据量大,设计是采用自增ID 我们插入数据的时候把ID也写进去,我们可以采用 关闭和开启自增标识 没有关闭的时候 ,提示一下错 ...

  8. winform 的语言国际化

    http://www.cnblogs.com/codefish/p/4778269.html

  9. Java进击C#——应用开发之WinForm环境

    本章简言 上一章笔者讲到关于IO文件操作类,了解如何处理文件流.从这一章开始笔者将讲解相对比较高级的知识点.而本章笔者就对WinForm开发的知识点进行讲解和引导.现在很多业务都是面向于B/S模式的开 ...

随机推荐

  1. Android Studio Run项目出现Failure [INSTALL_FAILED_TEST_ONLY]

    同名掘金博文:https://juejin.im/post/5c2e0c496fb9a049a711f09a 运行环境: AS 版 本:Android Studio 3.2.1 手机型号:vivo Y ...

  2. DFS(深度优先搜索)

    简介 DFS的过程是一个递归过程,它是从图中的某个顶点开始,首先访问起始点v,然后选择一个与顶点v相邻的且没有被访问的顶点w,以w为起始顶点,在进行DFS,直到图中所有与v相邻的顶点都被访问过为止. ...

  3. 前端vue系列-起始篇 vue的基本认知

    hi,大家伙,我是佛系大大,很高兴与你们一起沟通,学习,进步. 很久不更新博客了,现在回来再写博客,尽然是有些怀念的感觉,幸福的感觉.因为写博客,内心会很宁静,沉浸在自己的世界中,是很幸福的一件事.当 ...

  4. redis数据操作

    数据结构 redis是key-value的数据结构,每条数据都是一条字符串.注意:键的类型是字符串,并且不能重复. 值的类型分5种: 字符串string 哈希hash 列表list 集合set 有序集 ...

  5. Prncnfg.vbs参数详解

    语法: Cscript Prncnfg {-g | -t | -x | -?} [-S <ServerName>] [-P <PrinterName>] [-z <New ...

  6. Takeown、Cacls、Icacls-文件、文件夹夺权用法

    常用示例如下: takeown   /f 文件名 获取该文件的所属权 takeown /f /r /d n 文件夹 获取整个文件夹及其下面子目录文件的所属权 takeown /f * /a /r /d ...

  7. Scala的类层级讲解

    Scala的类层级 Scala里,每个类都继承自通用的名为Any的超类. 因为所有的类都是Any的子类,所以定义在Any中的方法就是"共同的"方法:它们可以被任何对象调用. Sca ...

  8. 入门PHP你需要了解些什么?

    1.[PHP]PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,利于学习,使用广泛 ...

  9. git 建议使用

    1 登录github官网首页 创建一个项目 2 本地克隆下载git项目 git clone https://github.com/wangguoxingduanxuejing/branch-pract ...

  10. VS Code实用技能1 - 代码折叠、面包屑

    VS Code实用技能 VS Code实用技能1 - 代码折叠.面包屑 一.代码折叠 ubuntu ctrl + shift + { ctrl + shift + } ctrl + k , ctrl ...