由于问题有点自我解释,我想实现多语言网站的目标。我正在使用MS SQL 2005的实体数据模型。我想出了为每种语言创建一个单独的数据库,并使用完全相同的模型和关系。所以我可以使用Entities构造函数来获取connectionString并将站点切换到所选语言。
我使用ascx作为触发事件的语言控件,并且父aspx将所选语言作为整数(来自事件args)获取并调用包含相同linq查询的方法,但是将创建实体上下文该db(语言)的连接字符串
我只能提出这个解决方案,因为我认为添加一种新语言需要复制一种新的语言,导入Access并发送给翻译者。然后将导出回来,模型将适合(HOPEFULLY)。
我的问题是,这是否真的是一种好方法,或者我错过任何会给我带来更大麻烦的事情。提前致谢
答案 0 :(得分:1)
所以你要做的就是为翻译构建一个表格,其中基本语言是关键,希望每个键都有一个包含翻译的值。只要你有翻译,就可以在他的前端写一个方法,用自己用的语言写标签。
例如,在Zend Framework中,您必须编写<h1><?= $this->translate('Hello World'); ?></h1>
而不是<h1>Hello World</h1>
好消息是,如果缺少翻译,你仍然可以使用后备(在这种情况下为英文)向用户显示至少一些内容。
这样,您就可以在一个数据库中管理您的应用,而使用多种语言的用户则无需在应用和内容之间切换。
欢呼声
答案 1 :(得分:0)
我的方法:创建一个列出所有可用语言的表语言。将应该本地化的每个表与语言相关联。现在,您可以轻松访问本地化内容,例如
Content[content_ID].HeadLine.Where(hl => hl.Language.id == "en-US")
我期待着看到我自己的其他人还在学习数据库设计和EDM。
答案 2 :(得分:0)
好的,如果你想能够轻松实现一种新语言,那么重新发明internationalization features already built in to ASP.NET不是一种可行的方法,因为它并不“简单”。
至少,不像使用卫星资源DLL那么容易。您的翻译人员将使用现成的工具来翻译您的资源,ASP.NET将根据用户当前的文化自动选择正确的DLL。
阅读ASP.NET internationalization/globalization features;没有必要发明自己的。