Localization 俄语版MS Windows下的VCL窗体和控件字体设置 我有一个Borland C++ + Builder VCL应用程序(所以我现在还没有使用Unicode) 我想在运行时提供控件标题文本到俄语的简单翻译

Localization 俄语版MS Windows下的VCL窗体和控件字体设置 我有一个Borland C++ + Builder VCL应用程序(所以我现在还没有使用Unicode) 我想在运行时提供控件标题文本到俄语的简单翻译,localization,character-encoding,internationalization,c++builder,vcl,Localization,Character Encoding,Internationalization,C++builder,Vcl,我可以轻松地使用EnumChildWindows获取英文标题,然后使用SetWindowText查找翻译并替换标题文本。这对我的西欧翻译很有效,我不必担心字体。 但我不确定俄罗斯版Windows和VCL如何处理8位西里尔字符集 目前,所有VCL控件都具有字体设置: Charset=DEFAULT_CHARSET name=MS Sans Serif 当我的程序在俄文版Windows下运行时,我的假设正确吗 字符集将是西里尔文,带有默认字符集设置,所以我不需要 是否更改“我的所有控件”中的字体设

我可以轻松地使用EnumChildWindows获取英文标题,然后使用SetWindowText查找翻译并替换标题文本。这对我的西欧翻译很有效,我不必担心字体。 但我不确定俄罗斯版Windows和VCL如何处理8位西里尔字符集

目前,所有VCL控件都具有字体设置:

Charset=DEFAULT_CHARSET
name=MS Sans Serif
当我的程序在俄文版Windows下运行时,我的假设正确吗 字符集将是西里尔文,带有默认字符集设置,所以我不需要 是否更改“我的所有控件”中的字体设置

如果必须更改字体(在运行时),Windows API函数SendMessage(hwnd,WM_SETFONT,(WPARAM)hFont,TRUE)是否应与VCL控件一起工作? 我已经尝试过使用CreateFont()和SendMessage(…WM_SETFONT..)以及俄语字符集和西里尔字体。这似乎没有任何效果, 它将在设计时在窗体中保留为控件设置的字体
(即使是ANSI_字符集和标准Windows安装字体也不会影响控件的字体)因此,我希望确认我不必更改控件的字体,或者告诉我一些VCL方法,以便在运行时设置所有控件的字体设置。

无需重新发明自行车。为什么不使用Borland C++Builder提供的集成翻译环境工具?有一个向导可以帮助您进行翻译,并生成一个特殊的资源文件,其中包含应用程序中所有文本字符串的翻译。然后,程序将在启动时检查系统语言和可用语言资源文件,并将自动使用适当的语言。查看带有索引的C++Builder帮助系统-“集成翻译环境(ITE)”,了解更详细的过程描述

没有必要重新发明自行车。为什么不使用Borland C++Builder提供的集成翻译环境工具?有一个向导可以帮助您进行翻译,并生成一个特殊的资源文件,其中包含应用程序中所有文本字符串的翻译。然后,程序将在启动时检查系统语言和可用语言资源文件,并将自动使用适当的语言。查看带有索引的C++Builder帮助系统-“集成翻译环境(ITE)”,了解更详细的过程描述

是的,我知道ITE(我不喜欢它的实现):我的程序是几年前写的,比ITE早,并且使用了无法在IDE中编辑的专用控件,因此ITE不是一个选项。我的一位用户将我的程序发送给乌兹别克斯坦的一位同事,他确认了我的假设是正确的。您可以尝试为主窗体上的所有子控件设置prorerty“ParentFont”。然后可以更改主窗体的字体属性,它将传播到所有嵌套控件。如果您的专用控件是从TControl继承来的,那么它们应该支持这种类型的字体管理。是的,我知道ITE(我不喜欢它的实现):我的程序是几年前编写的,在ITE之前,并且使用无法在IDE中编辑的专用控件,因此ITE不是一个选项。我的一位用户将我的程序发送给乌兹别克斯坦的一位同事,他确认了我的假设是正确的。您可以尝试为主窗体上的所有子控件设置prorerty“ParentFont”。然后可以更改主窗体的字体属性,它将传播到所有嵌套控件。如果您的专用控件继承自TControl,则它们应支持此类字体管理。