如何使用Joomla2.5建设多语言网站

如何使用Joomla2.5建设多语言网站,第1张

使用建设多语言网站的方法大概有以下三种:

一. 多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的多语言标识判断用户的语言环境,来决定查询中文表还是英文表。

另外,如果整站都需要中英文切换,也可以做分布式数据库!

一切根据实际需求决定!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10814809.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存