标准化语言转换?

时间:2016-02-27 05:45:00

标签: c++ windows

编程中是否有语言转换标准?如果这是一个广泛的问题,那么特别是我的例子:

我用c ++& amp ;;设计了一个程序。硬编码的英语单词,但我希望适应这一点,以适应在意大利语中显示相同的单词。我正在考虑使用像这样的简单Lang.ini文件;

English=Language
Do=Fare
Column=Colonna
etc

加载此&并在运行时换掉单词。没有与网络相关的内容。

有没有更好的方法来做到这一点&我应该注意哪些问题?

感谢。

编辑: 澄清: 我希望在我的程序中使用硬编码的英文单词自动转换为用户PC上使用的任何语言。

2 个答案:

答案 0 :(得分:0)

可以为语言加载资源,并在资源中保存字符串。 https://msdn.microsoft.com/en-us/library/cc194810.aspx

可用的标准lnaguage宏:

WORD lang_id = MAKELANGID( primary, sublang )
BYTE primary = PRIMARYLANGID( lang_id )
BYTE sublang = SUBLANGID( lang_id )

加载资源:

HRSRC hrsrc = FindResourceEx(hMod, RT_ICON, id, langID );
HGLOBAL hglb = LoadResource(hMod, hrsrc);
LPVOID lpsz = LockResource(hglb);

语言初始化代码:

static DWORD dwJapanese =
MAKELCID(MAKELANGID(LANG_JAPANESE, SUBLANG_DEFAULT));
// load Japanese resource
SetThreadLocale(dwJapanese, SORT_DEFAULT)

使用LoadString函数,可能的写包装函数,方便使用像tihs: http://www.codeproject.com/Tips/86496/Load-a-Windows-string-resource-into-a-std-string-o

答案 1 :(得分:0)

你所寻找的东西被描述为“国际化”(或者,对于那些有点讽刺的人来说,就是“国际化”)。使用谷歌可以找到相当数量的介绍性材料。

该主题不仅仅涉及翻译单词。还有关于如何输出数值,表示货币等等的考虑因素。

标准C和C ++支持此类功能。关于该主题的文章(来自C / C ++用户期刊)是http://www.angelikalanger.com/Articles/Cuj/Internationalization/I18N.html

与C ++不同,Windows也有自己的功能,可用于应用程序的国际化。一个起点是https://msdn.microsoft.com/en-au/library/windows/desktop/dd318661%28v=vs.85%29.aspx