多国语言版本的编码要点

本文详细介绍了多国语言版本产品开发的要点,包括本地化步骤、资源本地化、UI设计注意事项等。强调了在字符串处理、对话框设计、字体选择等方面应避免的问题,旨在确保软件在不同语言环境下正确显示和功能正常。
摘要由CSDN通过智能技术生成

◆本地化产品的整体步骤

1.在产品起始开发文档中要明确说明,产品本地化是开发周期中的一个重要环节,不应该把本地化放到开发完成时做,这样会带来本地化居多不便;

2.本地化测试应该在产品功能稳定时立即启动, 这时候无需开发一个本地化版本,而通过伪本地化方面或Pilot-language 本地化方法来先行测试;

3. 在用户界面稳定后,其他版本的本地化工作需要马上启动;

4.在原始资源中避免表达错误,语法错误;

5. 本地化资源外包:本地化工具包有一套工具,资源文件,二进制文件,其他本地化信息,这些都提交给本地化外包公司;本地化外包公司与开发人员的联系;翻译的术语要跟软件的背景适宜

 

◆关于资源本地化

1.  关于字符串:

AAvoid Run-Time Composite Strings 避免运行后动态组合字符串

When Variables Are Necessary, Use Unique Names变量一定要用时,用唯一名称

Win32 -- FormatMessage:一般用于多变量的警告或者消息语句中

.NET Framework -- String.Format能够处理多个变量的现实

Do Not Compound Several Variables不要将多种类型的变量混合

Keep Sentences in a Single String一个句子需放到一个string里面表示

Watch Your String Buffer Sizes  考虑字符串的buffer大小

用例:A

char szString[] = "Are you sure you want to delete the ";
  
  
char szFinalString[cbMaxSz]= szString + szDelObject + "?";
  
  
其中,szDelObject在程序运行时,可能为:file directory  subdirectory
   
   
=>换成下面三个完整的句子, 且针对不同的语言时翻译会更好理解:
   
   
"Are you sure you want to delete the file?";
  
  
"Are you sure you want to delete the directory?";
  
  
"Are you sure you want to delete the subdirectory?";
  
  
另外, 对于单一字符串,最好针对特定的上下文环境,分别列出,如
   
   
Menu_open = "open"
  
  
Dialog_open = "open"
  
  
Button_open = "open"
  
  
因为,可能有复数,性别的不同,或者用于不同语言时单一字符会根据上下文转译。这样, 对于可能存在这种境况的单一字符,最好做到每个上下文列举一个字串。
   
   

用例:B

用例A中的句子可以用下面的结构来代替
   
   
Del_File = "Are you sure you want to delete the %s ";
  
  
并附文档说明:%s 可能为file directory  subdirectory
   
   
另外,有多个变量时,尽量能表明变量的顺序:如
   
   
Memory_Error = "Not enough memory to %s the file %s.";
  
  
该句中有两个%s 存在的问题:当有些动词和名词位置摆放位置不同的语言时,就会出现错位:
   
   
如芬兰语翻译后的句子为:
   
   
"Liian vähän muistia tiedoston avaamiseen FileName1."
  
  
而,芬兰语正确的句子为:
   
   
"Liian vähän muistia tiedoston FileName1 avaamiseen."
  
  
解决方面是:将两个%s 用出现的次序分别标明, 
   
   
"Not enough memory to %1 the file %2."
  
  
这样芬兰语翻译后为:
   
   
"Liian vähän muistia tiedoston %2 %1." 容易替换对应的字符
   
   

用例:C

采用了message table

// Sample.mc

LanguageNames=(German=2:msg00002)

 

MessageId=1 SymbolicName=IDS_NOFILE

 

Language=English

Cannot open file %1.

Language=German

Die Datei %1 kann nicht geöffnet werden.

 

MessageId=2 SymbolicName=IDS_OTHERIMAGE

Language=English

%1 is a %2 image.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值