我已经有了多语言网站的解决方案,但我不确定这是否是一个很好的解决方案......并且尽可能灵活。 首先,我正在使用Visual webgui开发一个项目。简而言之,webgui是一个Web编程,但与WinForms非常相似。
所以,这是:
我有一个MDI应用程序。这是一个简单的网页,顶部有MainMenu,可以在里面打开许多窗口。
首先,我在我的主要启动项目中创建resx文件。我们说"myStrings.resx"
代表默认语言,"myStrings.de-DE.resx
代表德语翻译。
每个要翻译的字符串都必须位于这两个资源文件中。
现在,我最关心的问题。在每个类(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.我也是,不能只在设计器中初始化标签,我必须手动在构造函数中进行所有初始化:
label2.Text = rm.GetString("DefaultString", culture);
(or in Designer partial class inside InitializeComponent method - but also, manually).
6.最后,当有人改变语言时:
我必须在每个窗口中调用Load事件中的adjustCulture函数,总是!首先,要初始化..其次,当某人(在MDI菜单中)将语言更改为德语时,我当时在我的MDI中打开了三个窗口...我必须单独翻译所有人。所以我必须存储打开的窗口处理程序,并调用每个人的Load事件。
对于多语言webgui应用来说,这是一个很好的解决方案吗?或者有更好的解决方案吗?更灵活?
答案 0 :(得分:0)
您可以采用的一种方法是使用键/值对每种语言创建一个xml文件,并将其用作不同语言的翻译器。在这种情况下,您还可以为每个表达式实现所需的缓存,rtl / ltr和其他必要属性。您可以为它编写一个库,然后您可以轻松添加对不同语言的支持,并自动执行翻译和其他功能。