定位在静态控制中不起作用

Localisation not working in static control

本文关键字:不起作用 控制 静态 定位      更新时间:2023-10-16

我正在开发一个基于窗口的应用程序,因为它是基于窗口的桌面应用程序,我需要支持从中文到法语和从印地语(印度)到葡萄牙语(巴西)的多种语言,现在认为工作得很好,仍然有相同大小的文本用于显示。但对于以下示例,

如果我的一个静态控件包含以下文本

选择输出范围 |_文本框__|

由于我正在用英语开发它,因此根据英语文本大小考虑静态大小。认为工作很棒。

现在我把上面的静态控制转换成中文视图的相同文字如下:

选择输出范围 |_文本框__|

我很高兴中文的大小小于英文的大小,但是当我将相同的文本从英语转换为法语时,以下是静态控制的大小,

Sélectionnez Plage de sortie|_文本框__|

我的错误文本大小增加了一些世界,因为我们在较小大小的文本上有大文本,文本视图将像以下方式一样剪裁,

选择输出范围 |_文本框__|

塞莱西翁内斯海滩 |_文本框__|

在法语中文本大小是增加的,那么如何在语法上处理文本大小的不匹配呢?

有不同的方法可以处理这个问题。答案取决于您在代码中处理本地化的方式。

请注意,一些当地人需要从左到右颠倒显示 ->从右到左(阿拉伯语...在这种情况下,您必须处理以下情况:

 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。有关代码项目的示例,请参阅示例

我不建议您编写一些在创建对话框时自动移动控件并调整控件大小的代码,因为这并不像看起来那么容易。除非你的应用程序非常简单。