我正在开发一个基于Window的应用程序,因为它是基于窗口的桌面应用程序,我需要支持从中文到法语的多种语言,从印地语(印度)到葡萄牙语(巴西)现在认为工作很好仍然有相同大小的文本display.But以下示例,
如果我的一个静态控件包含以下文本
选择输出范围 | _ 文本框 __ |
我正在用英语开发它,因此根据英文文本大小考虑静态大小。认为工作很棒。
现在同样的文字我转换成上面静态控制的中文视图就像是跟着,
选择输出范围 | _ 文本框 __ |
我很高兴,因为中文的大小小于英文的大小,但是当我将相同的文本从英语转换为法语以下是静态控制的大小时,
SélectionnezPlagede sortie | _ 文本框 __ |
我的文字大小增加了一些世界,因为我们在较小尺寸的文字上有大文字,文字视图会像下面那样剪裁,
选择输出范围 | _ 文本框 __ |
SélectionnezPlage | _ 文字框 __ |
法文大小的文字增加了,那么如何以编程方式处理文本大小的不匹配?
答案 0 :(得分:1)
有不同的方法来处理这个问题。答案取决于您在代码中处理本地化的方式。
请注意,某些本地人需要将显示从左向右反转 - >从右到左(阿拉伯语......) 在这种情况下,您将必须处理以下情况:
Select Output Range |_Text Box__|
必须成为:
|_Text Box__| <translated text into arabic or hebrew>
因此,您必须意识到翻译对话框不仅仅是翻译标签。您已经开始注意到,因为标签长度不同。
如果你选择了一个非常简单的本地化机制,比如为每种语言提供一个文本文件(包含所有标签的列表),那么除了尝试使用一个尺寸的标签来调整标签大小之外,你所做的远不止这些。 - 全语言。对话框在某些语言中看起来不太好。而且你将无法使用从右到左的语言。这是快速而肮脏的方式。
如果您想更进一步,最常见的方法是为每种语言提供资源文件。程序快完成后,必须复制资源文件。您有每种语言的副本。您可以本地化整个对话框,菜单等。使用法语本地化对话框时,可以使标签字段更大。对中国人来说更小。如果需要,您还可以更改阿拉伯语的对话框布局。 当然,您必须为每种语言构建一个软件版本。
你的帖子有MFC标签,所以我想你可能对MFC扩展DLL感兴趣。这是MFC应用程序处理本地化的标准方法。您创建仅包含资源文件的DLL。如果您支持10种语言,则复制并翻译10个资源文件,并创建10个扩展DLL。 MFC根据当前的Windows语言环境自动加载正确的DLL。请参阅示例a sample on CodeProject
我不建议你编写一些代码,这些代码会在创建对话框时自动移动和调整控件大小,因为这并不像看起来那么容易。除非您的应用非常简单。