2012-10-18 62 views
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.I也不能只是初始化标签在我的设计,我必须手动完成所有的初始化在构造函数:

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

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

6.And最后,当有人修改语言:

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

这是多语言webgui appliacation的一个很好的解决方案吗?还是有更好的解决方案?更灵活?

回答

0

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

+0

为什么每个语言都有一个xml文件,当您可以构造文件时,每个文本节点都有另一个节点用于每种语言。保存您的工作,以通过多个文件来更改翻译。 – mboldt

+0

那么,我写了关于XML。格式.resx由XML条目组成。 我将有每种语言的resx文件。如果您只想加载一种语言文本并将其缓存以供将来使用,我将在4之间进行切换,如4 – Marshall

+0

@boldty。根据网站的规模,它只能在一个文件中完成。在我的场景中,我们有超过32个项目,每个都有自己的字典 – manman

相关问题