标准化语言转换

Standardised Language conversion?

本文关键字:转换 语言 标准化      更新时间:2023-10-16

编程中的语言转换有标准吗?如果这是一个广泛的问题,那么专门针对我的例子:

我用c ++和硬编码英语单词设计了一个程序,但我希望对其进行调整以适应意大利语中等效单词的显示。我正在考虑使用像这样一个简单的 Lang.ini 文件;

English=Language
Do=Fare
Column=Colonna
etc

加载这个并在运行时交换单词。没有任何与网络相关的内容。

有没有更好的方法来做到这一点以及我应该注意的任何问题?

谢谢。

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

你正在寻找的东西被描述为"国际化"(或者,对于那些欣赏一点讽刺的人来说,被描述为"国际化")。 使用谷歌可以找到相当数量的介绍性材料。

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

标准 C 和 C++ 支持此类功能。 一篇关于该主题的文章(来自 C/C++ Users Journal)正在 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

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

可用的标准宏:

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函数,可能的写包装函数,以便于使用,如下所示:http://www.codeproject.com/Tips/86496/Load-a-Windows-string-resource-into-a-std-string-o