一. 多Joomla后台方式。
这种方法最简单、直接,流程大致为:
建设一个单语网站
将单语网站的代码和数据库进行复制
将复制的网站改为另外一种语言
这样建设出来的多语言网站有多个Joomla网站后台,每个后台对应一个语言的网站。
这种方法的优点是:开发速度非常快、样式调试容易(不用考虑一种CSS样式适应三种语言)、栏目设置灵活(因为是三个后台,三个语言的网站目录结构可以完全不一样);
缺点也很明显:后期维护工作量大(每修改网站的一个地方都要在三个网站平台分别更新一次),无法实现“菜单对菜单”语言切换;
二. 单Joomla后台+使用第三方扩展的方式。
这种方式我这里不多赘述,Joomla官方论坛里面有很多第三方的多语言扩展。
安装了第三方扩展的多语言网站还是使用一个Joomla后台,且一般来说三个语言版本的网站文章是同步更新的。例如,当发布一篇文章的时候,会要求同时输入若干个语言版本的“文章标题”和“文章内容”。
这种方法的优点是:开发速度快、开发成本低;
缺点是:需要依赖第三方扩展,文章的更新灵活度差,不同语言版本的网站必须使用同种目录结构。
三. 单Joomla后台,但不使用任何第三方扩展的方式。
这种方式是我这篇文章要重点讲述的,也是我最近才学习到的一种方法。
这种方法的优点是:单一网站后台,后期维护灵活,不同语言版本的网站可以使用不同的目录结构,可以实现“菜单对菜单”的语言切换。
这里要特别感谢一位来自荷兰的Joomla极客,我这里只是将他的方法进行翻译,只需十步,即可创建一个完美的多语言网站:
安装语言包
在Joomla后台“Extensions ->Extension Manager”中安装语言包。
语言包文件大家可以在Joomla官方网站上下载最新版本的文件,安装方法和安装其它插件类似。
语言包安装完成后,可以在后台“Extensions ->Language Manager”中查看已经安装的语言包。
定义“Content Language”
在In Extensions >Language Manager >Content中,为每个语言包创建一个“content language”。
创建时各属性如何填写,可以参考默认语言的书写形式。
启动/配置“System-Language Filter”插件
在“Extensions >Plug-in Manager”中,进入“System – Language Filter”,并进行以下设置:
Status: Enabled
Menu associations: Yes
Remove URL Language Code: Yes (出于对 SEO的考虑)
为每种语言创建“Category”
在“Content >Category Manager”中为每个语言创建一个“根目录”。
这里要注意的是,每个语言的根目录应该选择其对应的“Content Language”,例如:
-Dutch
Title: Dutch
Language: Dutch (Nl)
-English
Title: English
Language: English (Uk)
-Thai
Title: Thai
Language: Thai (Th)
根目录创建完成后,依照同样的方法,创建每个语言版本的子目录,记住:子目录也是需要选择“content language”的。(这里便体现出此种方法的有点:每种语言版本的目录结构可以完全不一样)
经验之谈:这一步实际上是可选的。如果你的网站结构是一样的话,可以不需要为每个语言建立目录结构,只需建立一个目录结构后,将Language选择“All”即可。
创建文章
在“Content >Article Manager”中创建文章,创建文章时需要注意的是:
如果多语言网站使用的是一种目录结构,则文章发布时,必须选择文章的语言类型,如果语言类型选择“All”,则这篇文章会在三个语言的网站中都会显示出来。
如果多语言网站使用的是单独的目录结构,则文章发布时,只需要将文章发布到对应的语言目录下即可。
为每种语言创建“Menu”
在“Menus >Menu Manager”中为每个语言创建菜单。
–Title: Dutch Menu, Menu Type: dutchmenu
–Title: English Menu, Menu Type: englishmenu
–Title: Thai Menu, Menu Type: thaimenu特别注意:(1)这步不是可选的,而是必须的。(2)不要更改“Main Menu”。
为每种语言创建“Menu Item”和“Menu Association”
这一步是比较关键的一步,而且这一步和上面的5、6两步是有一定关联的。
首先,要为每个语言菜单建立相应的菜单项。
第二,为每个语言的菜单指定“Homepage”菜单项 。
在“Menus >Menu Manager”中,用鼠标点击“默认”列的“五角星图标”。
指定Homepage菜单项后,菜单上会出现对应的语言国旗标志。
第三,指定菜单项之间的“Menu Item Associations”。
这一步是实现“菜单内语言”切换的关键,其效果是,当访客进入某个菜单页面后,点击“语言切换按钮”,可以直接将网页切换该菜单对应的另外一个语言界面。
为每种语言的Menu创建“Module”
在“Extensions >Module Manager”中为每种语言的Menu创建一个module:
module type选择“menu”;
language选择对应的语言类型。
创建“Language Switch”Module
恭喜大家,对于新建的网站,这是最后一步了。目标就是在网站页面上创建一个多语言的切换按钮。
在“Extensions >Module Manager”中创建一个“Language Switcher”类型的module,language选择“All”,并在position中选择期望module出现的位置。
链接重定向(新网站略过)
对于以前是单语网站,通过此方法改为多语网站的情况而言,以前网站的文章目录结构可能会发生变化,我们可以有以下几种方法对网站的URL进行重定向:
(1)使用Joomla的Redirect组件,位置是:Components >Redirect。
(2)使用.htaccess进行重定向。
首先说明一点,用序列化和JSON不会不安全啊,数据安不安全取决于你的程序有没有过滤并且处理好要入库的数据,一般来说,入库的数据是需要保证安全的。对于你这个问题,最好的做法还是字段扩展,这样至少搜索速度上不会出现大问题,如果是将所有的数据都放到一个字段上,就是上面的content字段,这样后续并不利于搜索,数据感觉也比较混乱。如果仅仅是多语言实现,单词之间的对应关系,这样使用单字段还是可以的,毕竟数据也不多。
有两种情况,分析如下:1、需要中英文切换内容较少
假设我们现在正在 *** 作的是文章表,需要根据用户的语言环境输出中文或英文的文章内容。
在文章表中多添加一个字段用于存储英文的内容,发布文章的页面,同时上传中英文内容即可,然后服务端通过thinkphp的多语言标识来决定读取中文内容或者英文内容。也可以在前端模板中进行识别。
2、需要中英文切换内容较多
如果某个数据表的多个字段或者多个数据表都需要做中英文切换,显然在数据表里添加多个字段的方式就不太合适了,那将导致数据表字段太多,不方便管理,可以采用多数据表的方式,将内容完整的分为两份。就是把涉及到中英文切换的数据表多拷贝一份而已,里面的数据是英文的
。管理员后台,可以同时存储中英文内容,也可以分开存储,你自己决定就好,读取时同样使用thinkphp的多语言标识判断用户的语言环境,来决定查询中文表还是英文表。
另外,如果整站都需要中英文切换,也可以做分布式数据库!
一切根据实际需求决定!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)