日期:2014-05-19  浏览次数:20379 次

急求:如何做到中英文网站切换问题!!
请问,由于没有考虑到后期扩展,刚做好一个中文版     ,老板让马上做一个英文的出来,急啊!


该网站基本是一个文章管理系统,中文版的基本情况是:除了标头和标尾,部分硬编码外,其他的内容都是从数据库中读取的(包括栏目导航和内容)!    


请问:我想在现有website中新建一个En文件夹,再把现有的网站内容代码放进去,再增加一个专放英文内容的数据库,这种方法是否可行?     要知道的是,如何能自动在两个数据库之间切换?     谢谢解答!


------解决方案--------------------
其实不用再新建个En文件夹,而是在原来的程序上面做转换:
1.首先数据库是要分开的,这点是肯定的;
2.网站动态的部分建议将原来类的基础上写个重载的方法,主要用于转换不同数据库;
3.网站的静态部分(LZ说的硬编码)方面可以用不同的样式文件来控制转换.
------解决方案--------------------
对楼主的原来设计没有一个认识
大概理解一下吧你原来网站上的硬编码问题应该只能手改比较快了。
动程序的话最好不过速度慢
而数据库中 站点的 拦目 导航等信息肯定和 文章应该是分开的吧, 那肯定也要再作一份 也加到库中,加个字段 在程序的ADO中加判断吧。

其实楼主的问题很简单,如果为救急 那干脆 COPY一份 然后硬改之。

如果有时间的话,可以改造语言环境。加以不要用.NET国际化资源文件。那样时间慢 还不便修改。
一些国外软件工程都是自己写一个语言类。 准备各种语言的XML文件并统一编码,里边的关键字都一样。它的值就是各种语言的字符串。
写一个静态加载类,把这几个XML根据需要时加载到高速缓存中,或者APP中。然后根据关键字GET出需要的值而语言种类可以根据用户自己选择(存SESSION)。

OK
------解决方案--------------------
wangkun9999(一朝春尽红颜老,花落人亡两不知!)
1.首先数据库是要分开的,这点是肯定的;
2.网站动态的部分建议将原来类的基础上写个重载的方法,主要用于转换不同数据库;
3.网站的静态部分(LZ说的硬编码)方面可以用不同的样式文件来控制转换.


感觉挺好~~~~~
实在不成 ~ COPY一份 然后硬改之~~
------解决方案--------------------
说白了还是net全局变量的应用:
1.首先你在Global.asax.cs的Application_Start事件中放一个存数据库连接的全局变量(原来放在web.config文件里面的不要了)如:
Application[ "ConnectionString "]= "Data Source=.;uid=sa;Pwd=;database=CNdatabase ";

2.页面层的切换的选项是服务器端控件,如 <asp:LinkButton,在事件中做转换数据库的操作,然后得新加载页面就转换过来:
private void LinkButton1_Click(object sender, System.EventArgs e)
{
Application[ "ConnectionString "]= "Data Source=.;uid=sa;Pwd=;database=ENdatabase ";

Response.Redirect( "你要指向的页面 ");
}
------解决方案--------------------
最简单的办法就是把所有的文本放在数据库中,文本包括中文,英文的,其实哪种语言都可以。页面上语言的动态切换其实也不难,比如在有文本的地方做标记,这个标记可以是这段文本在数据库中ID,切换的时候根据当前的语种从数据库中取相应的文本就可以了。

下面列出一个大概的设计架构:

表:

表一 语种

表二 文本,该表引用表一,主键可能是本表的ID加上表一的外键的复合


页面:
设计一个父页面,这个页面可以根据当前的语种从数据库中取出该页需要的文本然后在有标记的地方替换文本就ok了。

当然了这只是一个粗略的架构,细节可能还有很多。

------解决方案--------------------
1.首先你在Global.asax.cs的Application_Start事件中放一个存数据库连接的全局变量(原来放在web.config文件里面的不要了)如:
Application[ "ConnectionString "]= "Data Source=.;uid=sa;Pwd=;database=CNdatabase ";

2.页面层的切换的选项是服务器端控件,如 <asp:LinkButton,在事件中做转换数据库的操作,然后得新加载页面就转换过来:
private void LinkButton1_Click(object sender, System.EventArgs e)
{
Application[ "ConnectionString "]= "Data Source=.;uid=sa;Pwd=;database=ENdatabase ";
this.Page.RegisterStartupScript( "ff ", "调用页面上换肤功能的脚本函数 ");
Response.Redirect( "你要指向的页面 ");
}