Cos*_*min 10 c++ unicode mfc localization internationalization
最后(经过多年的推迟)是时候用英语以外的其他几种语言本地化我的应用程序了.
第一个挑战是将集成设计到我的C++/MFC应用程序中,该应用程序具有许多对话框和无数字符串.我遇到了两种可能的替代实现:
我个人选择第二种选择,因为在我看来它更灵活.这些变化很多但并不难,而且非常重要的是,XML文件很容易为翻译人员修改.
任何建议都非常感谢.
此致,
Cosmin Unguru
http://www.batchphoto.com/
我用不同的语言做了一些长寿的MFC项目.我强烈建议使用仅限资源的DLL的第一种方法.
原因:
(1)如果用户安装了XCOPY,他总是在主可执行文件中使用默认语言(英语).
(2)如果你没有翻译所有内容(例如你的发布时间已经迟到或忘记了一些字符串),Windows资源函数如果使用得当,会自动以默认语言返回资源 - 你不必在你自己.
(3)我个人的观点:(a)XML文件中的换行符,制表符,空格是你的痛苦啊.(b)合并XML文件更糟糕......
(4)不要忘记编码.它在XML中没问题,但您的翻译人员可能会使用不合适的编辑器并损坏文件.
现在主要原因是:
(5)您将不得不重新排列许多对话框,因为许多字符串比法语或德语更长,而不是英语.并制作所有静态,按钮,...更大"以防万一"看起来很糟糕.
另一个提示:花一些钱购买一个导入项目/二进制文件并构建翻译数据库的翻译工具.这将在第一次发布后摊销.
另一个提示(2):如果可能,发布一个不包含任何更改但只包含多语言功能的发行版.如果可能的话,将来也会用英语发布您的产品.然后在一个步骤(每种语言)中进行翻译并发布其他语言.
我对本地化工作很多的人提出了友好的建议:
你也可以使用boost::locale相同的目的 - 它使用GNU Gettext词典和方法,但提供不同的和更强大的运行时,并且对于Windows开发人员它有非常好的插件 - 它支持MFC需要用于普通Unicode支持的宽字符串.
不要使用资源和其他"翻译"工具,这些工具从语言学的角度来看是完全废话(以及开发人员的观点).
进一步阅读:http://cppcms.sourceforge.net/boost_locale/html/tutorial.html