这是处理多语言网站的好方法吗?

时间:2012-10-18 08:27:47

标签: .net web-applications web

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

所以,这是:

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

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

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

  4. 现在,我最关心的问题。在每个类(Form或no-Form)中,我必须有这样的方法(在这个例子中只有一个控件要翻译):

    private void adjustCulture()
        {
            System.Resources.ResourceManager rm = new System.Resources.ResourceManager("MyApp.myStrings", typeof(testWindow).Assembly);
            label2.Text = rm.GetString("DefaultString", culture);
        }
    
  5. 这让我很烦心,因为我必须分别在每个窗口中实现这个功能。并不完全适用于该窗口中的每个控件(仅限那些将被翻译的控件)。所以它有点“不灵活”。

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

    label2.Text = rm.GetString("DefaultString", culture);
    
    (or in Designer partial class inside InitializeComponent method - but also, manually).
    

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

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

    对于多语言webgui应用来说,这是一个很好的解决方案吗?或者有更好的解决方案吗?更灵活?

1 个答案:

答案 0 :(得分:0)

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