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

.net 这是处理多语言网站的好方法吗?,.net,web-applications,web,.net,Web Applications,Web,我已经有了一个多语言网站的解决方案,但我不确定这是否是一个好的解决方案。。而且尽可能灵活。 首先,我正在使用VisualWebGUI开发一个项目。长话短说,webgui是一种web编程,但与WinForms非常相似 这就是: 我有一个MDI应用程序。这是一个简单的网页,上面有主菜单,可以打开许多窗口 首先,我在主启动项目中创建resx文件。让我们假设默认语言为“myStrings.resx”,德语翻译为“myStrings.de-de.resx” 要翻译的每个字符串都必须位于这两个资源文件中 现

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

这就是:

  • 我有一个MDI应用程序。这是一个简单的网页,上面有主菜单,可以打开许多窗口

  • 首先,我在主启动项目中创建resx文件。让我们假设默认语言为
    “myStrings.resx”
    ,德语翻译为
    “myStrings.de-de.resx

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

  • 现在,我最担心的是。在每个类(表单或无表单)中,我都必须有这样的方法(在本例中,只有一个控件需要转换):

  • 这让我很烦恼,因为我必须在每个窗口中分别实现这个函数。并且不完全适用于该窗口中的每个控件(仅适用于将被转换的控件)。所以它有点“不灵活”

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

    label2.Text = rm.GetString("DefaultString", culture);
    
    (or in Designer partial class inside InitializeComponent method - but also, manually).
    
    6.最后,当有人改变语言时:

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


    这是多语言webgui应用的好解决方案吗?还是有更好的解决办法?更灵活

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

    如果您可以对文件进行结构设计,使每个文本节点对每种语言都有另一个节点,为什么每个语言都有一个xml文件。为您节省了通过多个文件来更改翻译的工作。resx由XML条目组成。我将有每种语言的resx文件。我将在它们之间切换,如图4所示。@boldty,以防您只想加载一种语言的文本并将其缓存以备将来使用。根据网站的规模,它只能在一个文件中完成。在我的场景中,我们有超过32个项目,每个项目都有自己的项目dictionary@Marshall我建议在每个用户的会话对象中存储默认语言,并在库层中创建一个类来为您处理文本翻译。这个类可以有一个像GetString(string键,HttpSessionState会话)这样的方法,从中读取默认语言,并将相关字符串返回到UI层。因此,当我打开新窗口(VisalWebGui项目中的新表单)时,在构造函数中,我必须初始化每个控件,这些控件将通过方法GetString进行转换(字符串键,HttpSessionState会话),对吗?当有人切换到德语时,首先我更改上下文(所以VWG中的会话对象),然后需要再次重新初始化每个控件(将被翻译),对吗?
    label2.Text = rm.GetString("DefaultString", culture);
    
    (or in Designer partial class inside InitializeComponent method - but also, manually).