我已经有一个多语言网站的解决方案,但我不确定这是否是一个好的解决方案.. 并且尽可能灵活。首先,我正在使用 Visual webgui 开发一个项目。长话短说,webgui 是一种 Web 编程,但与 WinForms 非常相似。
所以,这里是:
我有一个 MDI 应用程序。这是一个简单的网页,顶部有 MainMenu,可以在里面打开许多窗口。
首先,我在我的主启动项目中创建 resx 文件。让我们说
"myStrings.resx"
默认语言和"myStrings.de-DE.resx
“德语翻译。每个要翻译的字符串都必须在这两个资源文件中。
现在,我最大的担忧。在每个类(表单或非表单)中,我必须有这样的方法(在这个例子中,只有一个控件要翻译):
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 应用程序的好解决方案吗?或者有没有更好的解决方案?更灵活?