1

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

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

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

因为我正在用英语开发它,所以静态的大小是根据英文文本大小来考虑的。觉得效果很好。

现在我将上面的静态控件转换成中文视图的相同文本如下所示,

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

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

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

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

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

选择海滩| _文本框__ |

在法语文本大小增加时,如何以编程方式处理文本大小不匹配?

4

1 回答 1

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。请参阅CodeProject 上的示例

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

于 2013-10-22T22:30:51.737 回答