0
点赞
收藏
分享

微信扫一扫

vc多语言版本的配置方法和注意事项


vc多语言版本的配置方法和注意事项

​​编者:李国帅​​


背景原因:

早些年曾做个翻译配置的处理,对特定文件制作中文和英文两个版本。这里提供给大家参考。

主要是对软件的界面和提示语进行两个版本的显示。

此方法适用环境:

         界面不多,翻译量不大

         针对特定文件进行多语言配置。

         对于翻译同样也要解答这几个问题:

         1、翻译什么?如何翻译?

         2、何时翻译?

         3、翻译字典资源如何存放?如何读取?

         4、效率改进?

步骤:

1、设置语言项

配置语言选项的地方有两个:安装时,设置时。他们都可以把设置项写入注册表,只不过安装时使用脚本写入注册表,设置时直接调用api写入。

vc多语言版本的配置方法和注意事项_翻译

 

2、加载资源文件

 

曾使用了三种方式:

  1. 字符串资源文件(多种资源dll)

也比较常见,把翻译模块封装到dll中,这里不做介绍。

 

  1. 翻译文件

         翻译文件可以使用xml,html,ini,cvs等个很多格式,以前选择了资源文件的形式。如下:

直接使用资源文件(扩展文件)

res\Transfer_String.htm 类型HTML 标记IDR_TRANSFER_STRING

 

Transfer_Player_String
CLASSID$CLSID:AC664CD3-2A49-42B1-AC6F-33A05A8E38A6
STATUS_NULL$""$""
STATUS_NOVIDEO$NotVideo$无视频
STATUS_STOP$Stop$停止
STATUS_STOPPING$Stopping$正在停止
STATUS_PAUSE$Pause$暂停
STATUS_CONNECTING$Connecting$正在连接
STATUS_CONNECTFAILED$Connect Failed$连接失败
STATUS_INTERRUPT$Interrupt$中断
STATUS_TIMEOUT$Timeout$超时
STATUS_URLERROR$URL Error$URL错误
STATUS_PATHERROR$Path Error$路径错误
STATUS_FILTERERROR$Data Error$数据错误
TAGEND$TagEnd$结束

 

然后分析资源

vc多语言版本的配置方法和注意事项_git_02

 

  1. 直接的字符数组。

使用源文件中的数组,transfer.h

vc多语言版本的配置方法和注意事项_git_03

3、把翻译项保存到map

vc多语言版本的配置方法和注意事项_git_04

 

4、读取和显示

 

读取待翻译的词语,生成id-value对放入map中,需要的时候读取出来。

pMain->GetTx("IDC_XXX").c_str()。

 

例如

void C****DLg::SetControlTitle()
{
CManageClientDlg* pMain = (CManageClientDlg*)GetParent();
ASSERT(pMain!=NULL);
SetDlgItemText(IDC_CARRIERGENDER0,pMain->GetTx("IDC_UNKNOWN").c_str());
SetDlgItemText(IDC_CARRIERGENDER1,pMain->GetTx("VS_GENDOR_MAN").c_str());
SetDlgItemText(IDC_CARRIERGENDER2,pMain->GetTx("VS_GENDOR_WOMAN").c_str());
SetDlgItemText(IDC_COUNTRY,pMain->GetTx("ID_CHINA").c_str());
}

注意事项:

         需要综合考虑专业和美观的问题

 

         不同语言的文字长度不一致,需要进行实际的测试和调整,才能使界面美观完整。

 

         系统控件有些是有操作系统决定的,可能需要自定义或者特殊配置。比如日历控件,系统弹出框等。

 

         如果获取不到资源,可以使用界面上的原始界面替代

 

         中文显示乱码是设计问题。如果操作系统安装有中文字库自然不是乱码。

 

         双字节,多字节字符编码问题,需要翻译资源和源文件使用相同的字符集。

 

举报

相关推荐

0 条评论