WinForm 国际化的一些问题
国际化
我之前 WinForm 国际化都是凑一些代码搞起(请看文后 Reference)。
最近发现还有个官方国际化方法:
- 首先设置 Form 的 Localizable 属性为 true
- 选择 Form 的 Language 为 "(Default)",然后给页面中每个控件设置一遍 Text
- 选择 Form 的 Language 为 "中文(简体)",然后给页面的每个控件设置一遍 中文 Text
- 对所需要支持的语言,先设置 Form 的 Language 为所要支持的语言,然后给页面的每个控件设置一遍 Text
每设置一个语言后,设计器会自动生成对应的 resx 文件,如:Form1.resx (Default), Form1.zh-Hans.resx , Form1.en-US.resx 等等。
问题
用了一下官方方法后,我发现了以下问题:
- 设计器生成的 resx 文件里面会有一些奇怪的名称,例如:由 >> 开头的资源名、 resource.Name34、resource.Name35 等等。这些名称对程序员不友好。
- 重构控件名称的时候,设计器只会去修改当前语言下的 resx 文件,其他 resx 文件中的相应控件名称不会改变。所以还需手工重设其他语言环境下这个控件的Text。这比较不方便,因为我可能已经忘掉了之前这个控件上的字符串是什么了。(非官方的国际化也有这个问题,而且稍微大一点,设计器不会修改任何一个 resx 文件,所以都要自己改)
- 如果之前 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 国际化的一些问题的更多相关文章
- C# WinForm国际化的简单实现
软件行业发展到今天,国际化问题一直都占据非常重要的位置,而且应该越来越被重视.对于开发人员而言,在编写程序之前,国际化问题是首先要考虑的一个问题,也许有时候这个问题已经在设计者的考虑范围之内,但终归要 ...
- WinForm 国际化开发一例
1.新建一个WinForm程序(在中文版的Windows下),如下,添加1个Button和1个Label 设置Form1的localizable属性为True(Form1的properties里的De ...
- C# Winform 国际化
1.在Form的language属性选择中文,来制作中文界面 保存后,设置界面标题会变成如下所示,并且会出现一个zh-CN的资源文件,打开resx文件可看到相应内容 2.将Form的language属 ...
- C# WinForm 中英文实现, 国际化实现的简单方法
来源:http://www.jb51.net/article/45675.htm,今天看到了借鉴过了,保存一下,下次开发直接用嘻嘻 软件行业发展到今天,国际化问题一直都占据非常重要的位置,而且应该越来 ...
- Winform/WPF国际化处理
1.Winfrom国际化处理方式 ==> Winform中国际化支持可将UI页面和.cs文件分开处理 处理窗体方式如下:1.选择Form窗体设置其--Language(默认中文--Default ...
- Winform下的语言国际化,几行代码轻松实现
最近做了一些关于winform的项目,需要用到winform的语言国际化,在初使化的时候用起来非常方便.可以参考一下: 核心逻辑: 预览效果演示: OK,以下是核心代码和操作流程 一,添加Langua ...
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
sql server 关于表中只增标识问题 由于我们系统时间用的过长,数据量大,设计是采用自增ID 我们插入数据的时候把ID也写进去,我们可以采用 关闭和开启自增标识 没有关闭的时候 ,提示一下错 ...
- winform 的语言国际化
http://www.cnblogs.com/codefish/p/4778269.html
- Java进击C#——应用开发之WinForm环境
本章简言 上一章笔者讲到关于IO文件操作类,了解如何处理文件流.从这一章开始笔者将讲解相对比较高级的知识点.而本章笔者就对WinForm开发的知识点进行讲解和引导.现在很多业务都是面向于B/S模式的开 ...
随机推荐
- android渠道打包怎样实现最方便
我们都知道,Android 市场被分割成几十个应用商店渠道,程序员给渠道打包.更新是一件异常繁杂又不得不做的工作,但现在有一种快捷灵活的免费多渠道统计方式,能最大程度的提高打包效率和数据安全性. 首先 ...
- 深入理解Linux内核 学习笔记(4)
第四章 中断和异常 中断通常被分为同步中断和异步中断,同步中断是当指令执行时由CPU控制单元产生的,之所以称为同步,是因为只有在一条指令终止执行后CPU才会发出中断异步中断是由其他硬件设备依照CPU时 ...
- Android SQLite 数据库学习
SQLite 数据库简介 SQLite 是一个轻量级数据库,它是D. Richard Hipp建立的公有领域项目,在2000年发布了第一个版本.它的设计目标是嵌入式的,而且占用资源非常低,在内存中只需 ...
- 在docker私有仓库如何查看有哪些镜像?
搭建了docker私有仓库,上传了一些镜像,时间长了就会忘了有哪些镜像,在网上查了,有大佬是通过脚本查看的,多厉害! #!/usr/bin/env python#-*- coding:utf-8 -* ...
- Cocos Creator—定制H5游戏首页loading界面
Cocos Creator从1.0版本发布到现在也有一年多了,按理说一些常见的问题网上都有解决方案,例如"如何自定义首页加载进度条界面"这种普遍需求,应该所有人都会遇到的,因此也有 ...
- 使用 connect http proxy 绕过 ssh 防火墙限制
1.安装 connect brew install connect 2.配置 ~/.ssh/config Host * ProxyCommand connect -H your.proxy.serve ...
- 【Python实践-5】使用迭代查找一个list中最小和最大值
# -*- coding: utf-8 -*- #使用迭代查找一个list中最小和最大值,并返回一个tuple #遍历list,找到最小值 def findMinAndMax(L): if L==[] ...
- 使用 .NET Core 开发 BT Tracker 服务器
一.什么是 BT Tracker ? 在 BT 下载过程当中,我们如果拿到一个种子文件,在其内部会包含一组 BT Tracker 服务器信息.在开始进行下载的时候,BT 下载工具会根据种子内的唯一 H ...
- 在Coding上搭建Hexo个人博客
先注册一个Coding账号,然后创建一个项目这个项目的名字应该是{username}.coding.me 安装hexo脚手架 $ npm install -g hexo-cli 建站 安装完 Hexo ...
- 从零开始学习PYTHON3讲义(十五)让画面动起来
<从零开始PYTHON3>第十五讲 虽然看起来绘图和音乐并不相关,但是听过了上一讲的内容你一定知道,这是游戏编程中四个需要处理内容的两部分,这两部分必须同时.并行的处理,不能因为某一项计算 ...