Unicode visualbasic6中的本地化

Unicode visualbasic6中的本地化,unicode,localization,vb6,Unicode,Localization,Vb6,有没有最好的方法来本地化语言设置?比如说,你已经有了一个法语的工作应用程序,并且想完全用英语本地化 那么,有没有什么方法可以轻松地本地化应用程序,同时最大限度地减少对应用程序代码的影响,我的意思是代码本身不能有任何重大更改,但添加一些就足够了。我听说过在VB6中使用资源文件,但它的字体(特别是日文字符)似乎有问题,它会在标签上抛出垃圾字符。现在,在不对应用程序代码进行太多更改的情况下,更改应用程序的字符集的最佳方法是什么 这个应用程序有一个遗留代码,我必须处理它。关于问题的“同时尽量减少对应用程

有没有最好的方法来本地化语言设置?比如说,你已经有了一个法语的工作应用程序,并且想完全用英语本地化

那么,有没有什么方法可以轻松地本地化应用程序,同时最大限度地减少对应用程序代码的影响,我的意思是代码本身不能有任何重大更改,但添加一些就足够了。我听说过在VB6中使用资源文件,但它的字体(特别是日文字符)似乎有问题,它会在标签上抛出垃圾字符。现在,在不对应用程序代码进行太多更改的情况下,更改应用程序的字符集的最佳方法是什么

这个应用程序有一个遗留代码,我必须处理它。

关于问题的“同时尽量减少对应用程序代码的影响”部分,我建议将资源查找相关功能封装到自己的类中,公开获取字符串的方法(通过传递区域性说明符参数)

然后,大部分工作是将代码从硬编码字符串转换为方法调用以检索适当的字符串。实现这个答案的一个变体:,如果您还封装了“文化”的概念,并将一些cultureInfo参数引入这个
StringFormat
方法的签名(可能称之为
StringFormatLocal

关键是,如果当前的应用程序没有本地化,它可能不关心本地化;本地化意味着引入一个新的关注点,因此为了尽可能少地影响遗留代码,您需要在整个代码库中寻找并销毁“魔法字符串”和“魔法格式”(如果您的UI有硬编码的设计时标题和图像,也要删除它们),将它们替换为对本地化API的调用-将本地化问题分开


我想在这里看到另一个答案,其中有关于存储、加载,特别是使用非ANSI字符串资源的更多细节…

我使用资源文件,并用ID替换(几乎)代码库和UI中的每个字符串。 每当我显示一个字符串时,我就会调用一个函数,该函数接受一个字符串,如
{1234}
,并加载字符串ID 1234(使用
LoadString()
并返回它。 对于UI,我枚举表单上的每个控件,并将可见字符串传递给同一个函数

这意味着在每个表单的
Load
事件中调用
localizeme
,并在我动态设置/显示某个内容时调用
TranslateString(“{1234}”、“name”、“name”)

有关字体,请参阅《Visual Basic程序员指南》。我在每个控件上调用它,作为
Localise
方法的一部分


不要忘记,不同的字体和语言对同一文本占用不同的垂直空间。表单布局也需要考虑到这一点进行调整,或者动态回流(将控件与最长标签对齐,向下移动以允许更长的全宽文本,等等)

这是可能的。当您使用支持多种语言的第三方应用程序时,您希望确保Excel根据每个人的语言设置工作,而不是将其放大。请您再澄清一点。您是要更改Excel工作表和表单还是要更改VB6表单?您是指VB6还是VBA?他们不是同一个环境…对不起,这应该是vb6而不是vba我的错。uou是否尝试使用unicode字符串。vb6运行时支持unicode字符。注意:vb6 IDE不支持unicode。您看过这个答案了吗?答案引用了Michael Kaplan的书,这本书是Conved中更好的参考之一subject@Deanna-你是否自动完成了替换代码库中字符串的过程?如果是,怎么做?@pingu不,对不起。这是一个非常手动的过程,包括添加代码来调整每个对话框的布局,以考虑其他语言规则。别忘了,不同语言中的相同文本可能具有非常不同的物理长度。