本地化

信必优全球软件服务

人盡茶涼 提交于 2020-03-12 18:48:10
项目背景 我们客户的这套出色的金融与会计软件已在美国上市数年,现准备向全世界推广。客户是全球领先在线金融服务供应商,我们的任务是与客户紧密合作,推动发布,确保顺利过渡到他们新的全球市场。 我们的客户作为全球领先的在线金融服务供应商,一直提供可用于个人财务管理的金融和会计软件。他们还提供帮助企业会计和消费税务筹划的软件套装。很多客户是美国消费者固定混合群体、小企业和会计师们。 我们接触这个项目的时候,我们的在线金融服务供应商客户正准备首次在全球范围内推广他们备受推崇和信任的软件平台。客户的主要问题是对计划发布的各个国家缺乏深入了解、语言障碍以及缺少服务和设备。他们的最终目标是能够为他们的新客户群提供最高水平的服务,同时在执行过程中尽可能减少客户投诉量。 解决方案 我们在全球市场上的丰富经验是客户选择我们的主要原因。客户经过调查了解到我们多样化的国际专家团队让我们拥有极其完美的条件,能够为客户提供亟需的解决方案。我们的目标是不仅确保产品成功发布,同时确保全球性扩展发布后的持续成功和发展。 我们与客户的质量保证团队携手开发和建立了全新的质量分析过程,为包含他们计划建立的全新国际市场改进整体工作流程。我们提供的解决方案包含: 提供客户缺乏的国际化 /本地化领域专业知识 引入最佳方式成功实现客户的全新可扩展工作流程 资源覆盖全球化 /本地化功能测试,该领域客户缺乏专业技术和资源进行管理

软件I18N/L10N软件国际化与本地化

喜夏-厌秋 提交于 2020-03-12 16:08:10
I18N/L10N:是指软件的国际化和本地化,通俗的讲就是语言的国际化和本地化。国际语言:英语、汉语、德语... 本地化:繁体、简体、藏语...国家内部的语言。 I18N: 软件国际化,即internationalization 一个过程,意即在 i 和 n 之间有 18 个字母,本意是指软件的“国际化”,通过修改代码来实现代码的文化独立性,即代码不依赖与任何特定文化的信息。L18n是一个代码修改的过程,目的是实现代码完全独立与任何特定的 文化信息。这类信息保存在外部文件中,在程序运行的时候被装入。这样就不光要把所有与特定文化有关的字符串都抽取出来放在外部的文件中,还要把图标,图片 从程序中抽取出来,以文本的形式表示。L18n支持的语言有很多,公司里目前支持的语言有:中文、德文、意大利文、日文、繁体中文、西班牙文、葡萄牙文、韩文、瑞典文、英文。 L10N:软件本地化,即localization 的缩写形式,意即在 l 和 n 之间有 10 个字母,本意是指软件的“本地化”。最初的软件只有英文版本,根据需要,作者再把软件界面和 文档翻译成不同国家、地区的语言版本。但是由于实现翻译的途径、翻译的工作效率、翻译的可重用性等因素各不相同,使翻译工作面临很大困境,也阻碍了软件的 推广和应用。为了方便地将软件翻译成不同语言的版本,就需要一套翻译规范和通用工具,这就导致了“国际化”机制的出现

多语言实现

天涯浪子 提交于 2020-03-06 09:45:21
多语言示例 本地化与国际化 先解释两个名词, 本地化 和 国际化 本地化 在软件工程中一般将外文界面的软件翻译为本土语言称为本地化,在中国也叫汉化。 国际化 与本地化相反,一般将本土语言翻译成外文称为国际化 其实二者没什么本质区别,在软件工程上都是实现软件的多语言支持。 多语言要求 对c++程序,实现多语言的基础是 资源化 ,所有需要实现多语言的字段,都应该存在于资源中而不应该以明文的方式写在代码中。 例如: acutPrintf(_T("测试资源")); // 错误 // 正确的示范: CString str; str.LoadString(IDS_STRING1); acutPrintf(str); 一. 资源副本 实现多语言的方案有很多,我们先说一种最简单的实现方案,这种方案的实现方式是分别编译不同语言版本的程序。这种方案实现简单,我们就以一个简单的mfc程序为例,代码在 ML_Demo_MultiVersion 里。 创建一个简单的MFC 对话框程序 创建不同的语言配置 为资源创建不同语言的副本 在资源ID上右键属性,为不同副本设置条件 注意,它们ID相同,但语言不同,条件也不相同(语言相同其实也没有关系) 原有语言也要设置条件, Condition 修改不同语言对应的资源内容 在项目上右键属性,修改资源配置 注意默认配置也要修改 现在分别运行两个配置可以看到效果

本地化

偶尔善良 提交于 2020-03-05 19:57:11
看到这个词,相信你当然会与”国际化”对比起来,这里只对本地化做一下列举几个案例. 最早接触这个词应该当是在2005年,中国经营者节目里面,主持人采访人百安居中国区总裁卫哲。这个案例给了我一个跨国企业本地化的初步认 识,2005年家装超市重新洗牌,欧倍德全部中国店面由百安居接管,也由此欧倍德退出中国市场,现在大街上你看到的只是百安居的身影,却不会再看到欧倍德 的店面,欧倍德之所以被业界位于小弟地位的百安居并购接管,原因就在于它并没有从细节处把握中国国情,了解国民的消费习惯,卫哲从最简单的一个例子入手讲 述了这一点:欧倍德的超市或店面的布局并不符合中国国情和人民购物习惯。当然还有很多,也即是欧倍德在华本地化的举措是失败的,结局只能是举步维艰,顶不 住百安居竞争的压力,最终全身而退,由百安居接管在华业务及店面。 Yahoo中国,相信大家都用过,这也算是Yahoo中国本地化一个失败的例子吧,我个人看来,yahoo是相当强大的,在国际市场上绝对是大哥大 的位子,进入中国后,几年内市场一点点被蚕食,相对于百度这个土地主,yahoo高层不得不另谋出路。正值阿里集团崛起之际,马云也需要这个一个搜索引 擎,为此业务的拓展和领土扩张打先锋,于是乎,马云杨致远两人一拍即合,达成协议,由阿里接管yahoo中国,双方可谓双赢,yahoo中国也算是有一个 很好的归宿。当然单纯就yahoo而言

WPF一种本地化的方法

纵饮孤独 提交于 2020-03-04 00:13:32
使用 resx 文件,可以动态切换语言,使用如下类: public class LanguageManager : INotifyPropertyChanged { private readonly ResourceManager _resourceManager; private static readonly Lazy<LanguageManager> _lazy = new Lazy<LanguageManager>(() => new LanguageManager()); public static LanguageManager Instance => _lazy.Value; public event PropertyChangedEventHandler PropertyChanged; private LanguageManager() { _resourceManager = new ResourceManager(typeof(Lang)); } public string this[string name] { get { if (name == null) { throw new ArgumentNullException(nameof(name)); } return _resourceManager.GetString(name); } }

ios 语言本地化处理

99封情书 提交于 2020-02-28 22:51:30
1、 iOS程序名称 在你的项目里添加一个StringsFile文件,取名InfoPlist.strings。选中该文件,在右侧的属性列表里最下边Localization栏添加语言,如果没有要添加的语言,可以选中PROJECT的info选项,在 Localization s一栏添加你需要的语言。添加完成后便可打开对应的语言文件,添加: 比如English文件里添加 CFBundleDisplayName= "China" ; 而在Chinese文件添 CFBundleDisplayName= " 中国 " ; 这样的话,运行的模拟器是中文,你会看到你的程序名称变成了“ 中国”, 运行的模拟器是中文,你会看到你的程序名称变成了“ china” 2、app内容本地化 同样的,在你的项目里 添加一个StringsFile文件 ,取名Localization.strings(必须取这个名字),添加语言如上所述,添加想要本地化的内容: 添加"Key"="value"; 然后使用时用NSLocalizedString(@"key", @""); 读取内容. Localization.strings English文件添加 "key" = "english value" ; Localization.strings Chinese文件添加 "key" = " 中文内容 " ; 3.获取支持的语言

Xcode7以上本地化(localization)

寵の児 提交于 2020-02-28 17:18:24
最近打算做一款图书的应用,需要语言的本地化。网上查了一下,发现基本都是Xcode6以前的,现在特地整理一下Xcode7上的本地化。 需求:在英文环境下,app名称和内容显示英文,简体中文环境下,app名称和内容显示简体中文,其它语言环境下和英文一致。 开发环境:Xcode7.0.1 第一步,先创建一个新的项目“本地化”: 第二步,在根目录下创建一个strings 文件,名字就叫 Localizable.strings(名字一定不能错!): 创建完之后是这样: 这个文件是用来存放app内容文字的 这时候还需要创建一个文件,叫:InfoPlist.strings(App名字国际化用得到),同样方法 下面,我们来给app添加支持的语言: 选中项目 -> Project: 然后点击最下面 Localizations的加号,添加一个语言(简体中文),弹出对话框之后点击“Finish” 这时候,项目里面就有了两种语言了:English 和 简体中文。 这时候先编辑Localization.strings,以"key" = "value"的形式添加内容,例如图: 注意,每一行后面都得有分号,不可省略,而且key和value都得用引号包裹!!! 这里写的都是英文,那中文呢?接下来要这么做,选中Localizable.strings,在右侧的Inspector里: 点击这个 Localize...

Java SPI 机制实现解耦与本地化

ε祈祈猫儿з 提交于 2020-01-26 13:35:47
SPI 是 Java 提供的一种服务加载方式,全名为 Service Provider Interface,可以避免在 Java 代码中写死服务的提供者,而是通过 SPI 服务加载机制进行服务的注册和发现。通过这种方式,可以基于接口编程,实现多个模块的解耦。 SPI 机制实现解耦 如下的示例展示了通过 ServiceLoader 类加载指定接口的所有服务提供者并进行调用的简单实现。 1、定义接口 test.DirMonitor,包含一个方法 start(); 2、实现接口 test.DirMonitor,定义两个实现类 test.ObserverMonitor 和 test.LoopMonitor; 3、设置接口的实现类列表。创建目录 META-INF/services/,新建文件 test.DirMonitor,内容如下: test.ObserverMonitor test.LoopMonitor 4、在程序中通过 ServiceLoader 类加载 test.DirMonitor 接口的实现类,并遍历所有实现类,调用 start() 方法; 从上面的示例可以看出,在代码中仅仅使用到了接口 test.DirMonitor,并没有在代码中使用到具体实现类。通过这种方法,可以实现解耦,接口与实现类可以由不同的开发人员实现,编译到不同的 jar 包中,甚至实现插件的定义与开发。 spi

goweb- 国际化和本地化

喜夏-厌秋 提交于 2020-01-15 13:29:04
国际化和本地化 为了适应经济的全球一体化,作为开发者,我们需要开发出支持多国语言、国际化的Web应用,即同样的页面在不同的语言环境下需要显示不同的效果,也就是说应用程序在运行时能够根据请求所来自的地域与语言的不同而显示不同的用户界面。这样,当需要在应用程序中添加对新的语言的支持时,无需修改应用程序的代码,只需要增加语言包即可实现。 国际化与本地化(Internationalization and localization,通常用i18n和L10N表示),国际化是将针对某个地区设计的程序进行重构,以使它能够在更多地区使用,本地化是指在一个面向国际化的程序中增加对新地区的支持。 所谓的国际化:就是根据特定的locale信息,提取与之相应的字符串或其它一些东西(比如时间和货币的格式)等等。这涉及到三个问题: 1、如何确定locale。 2、如何保存与locale相关的字符串或其它信息。 3、如何根据locale提取字符串和其它相应的信息。 设置默认地区 什么是Locale Locale是一组描述世界上某一特定区域文本格式和语言习惯的设置的集合。locale名通常由三个部分组成:第一部分,是一个强制性的,表示语言的缩写,例如"en"表示英文或"zh"表示中文。第二部分,跟在一个下划线之后,是一个可选的国家说明符,用于区分讲同一种语言的不同国家,例如"en_US"表示美国英语,而"en_UK