0

我已经有一个多语言网站的解决方案,但我不确定这是否是一个好的解决方案.. 并且尽可能灵活。首先,我正在使用 Visual webgui 开发一个项目。长话短说,webgui 是一种 Web 编程,但与 WinForms 非常相似。

所以,这里是:

  1. 我有一个 MDI 应用程序。这是一个简单的网页,顶部有 MainMenu,可以在里面打开许多窗口。

  2. 首先,我在我的主启动项目中创建 resx 文件。让我们说"myStrings.resx"默认语言和"myStrings.de-DE.resx“德语翻译。

  3. 每个要翻译的字符串都必须在这两个资源文件中。

  4. 现在,我最大的担忧。在每个类(表单或非表单)中,我必须有这样的方法(在这个例子中,只有一个控件要翻译):

    private void adjustCulture()
        {
            System.Resources.ResourceManager rm = new System.Resources.ResourceManager("MyApp.myStrings", typeof(testWindow).Assembly);
            label2.Text = rm.GetString("DefaultString", culture);
        }
    

这让我很困扰,因为我必须在每个窗口中分别实现这个功能。并不完全适用于该窗口中的每个控件(只有那些将被翻译的控件)。所以它有点“不灵活”。

5.我也不能只在我的设计器中初始化标签,我必须手动在构造函数中进行所有初始化:

label2.Text = rm.GetString("DefaultString", culture);

(or in Designer partial class inside InitializeComponent method - but also, manually).

6.最后,当有人改变语言时:

我必须在每个窗口的 Load 事件中调用 adjustCulture 函数,总是!首先,初始化..其次,当有人(在 MDI 菜单中)将语言更改为德语时,我在 MDI 中打开了三个窗口。我必须分别翻译每个人。所以我必须将打开的 Windows 处理程序存储在某个地方,并调用每个人的 Load 事件。

这是多语言 webgui 应用程序的好解决方案吗?或者有没有更好的解决方案?更灵活?

4

1 回答 1

0

一种方法是为每种语言创建一个带有键/值对的 xml 文件,并将其用作不同语言的翻译器。在这种情况下,您还可以为每个表达式实现缓存、rtl/ltr 和其他必要的属性。您可以为它编写一个库,然后您可以轻松地添加对不同语言的支持,还可以自动化翻译和其他功能。

于 2012-10-18T08:32:01.270 回答