方案1:1个wiki、1个数据库、多语言文字内链导航
效果:在文章内显示多语言文字导航,截图如下。
wiki首页:http://localhost/wiki/docs/index.php/
英文文章地址: http://localhost/wiki/docs/index.php/Hello
汉字文章地址: http://localhost/wiki/docs/index.php/Hello/zh
缺点:uri受限制,必须是Hello、Hello/zh的格式。扩展安装步骤比较繁琐。推荐使用方案3。
todo:界面随着文章内容变化,比如Hello的界面是英文的,Hello/zh的界面是汉字的。需要自己修改一下mediawiki的代码。
参考: http://www.art122-5.net/index.php/MediaWiki_Multi-language
安装步骤:
安装mediawiki,安装时语言文字选择en。
下载Expr.php和ParserFunctions.php这2个php文件,放到extensions/ParserFunctions/目录中。
下载地址:http://www.mediawiki.org/wiki/Extension:ParserFunctions_%28extended%29
修改LocalSettings.php,加入一行require_once( "$IP/extensions/ParserFunctions/ParserFunctions.php");
然后在wiki中搜索Hello,新建一个Hello页面,内容如下:
{{Languages|Hello}} Hello World!
然后点击进入Template:Languages页面,复制此页的内容 http://www.mediawiki.org/w/index.php?title=Template:Languages&action=edit
然后编辑Template:Nmbox,复制 http://www.mediawiki.org/w/index.php?title=Template:Nmbox&action=edit
编辑Template:Documentation,复制 http://www.mediawiki.org/w/index.php?title=Template:Documentation&action=edit
编辑Template:Documentation/core2,复制 http://www.mediawiki.org/w/index.php?title=Template:Documentation/core2&action=edit
编辑Template:Documentation/core,复制 http://www.mediawiki.org/w/index.php?title=Template:Documentation/core&action=edit
编辑Template:Languages/Title,复制 http://www.mediawiki.org/w/index.php?title=Template:Languages/Title&action=edit
编辑Project:Language_policy,复制 http://www.mediawiki.org/w/index.php?title=Project:Language_policy&action=edit
新建Hello/zh页面,内容如下:
{{Languages|Hello}} 你好
方案2:多个wiki、多个数据库、多语言文字外链导航
效果:在左侧边栏下面出现多语言文字的外链导航,截图如下。
英文版wiki首页:http://localhost/wiki/en/index.php/
汉字版wiki首页:http://localhost/wiki/zh/index.php/
英文文章地址:http://localhost/wiki/en/index.php/Hello
汉字文章地址: http://localhost/wiki/zh/index.php/你好
优点:uri可任意,可以使用“Hello”、“你好”的格式。界面跟着uri变化,英文的文章界面也是英文的。
参考:http://www.mediawiki.org/wiki/Manual:Interwiki
安装步骤:
每种语言文字独立安装1套wiki、1套数据库。
比如安装了en和zh版的。
en版:http://localhost/wiki/en/
zh版:http://localhost/wiki/zh/
登录到en版的数据库中,在interwiki表中加入zh版的链接。命令如下:
mysql -uwiki_en -p1 wiki_en mysql> INSERT INTO `interwiki` VALUES('zh','http://localhost/wiki/zh/$1',0,0);
然后在en版中建立Hello页面,内容如下:
[[zh:你好]] Hello
方案3:1个wiki、1个数据库、多语言文字内链导航
效果:在左侧边栏下面出现多语言文字的内链导航,截图如下。
wiki首页:http://localhost/wiki/test/index.php/
英文文章:http://localhost/wiki/test/index.php/Hello
汉字文章:http://localhost/wiki/test/index.php/你好
优点:不用安装扩展,不用安装多个wiki,融合了方案1和方案2的优点。uri可任意,可以使用“Hello”和“你好”,也可以使用“Hello”和“Hello/zh”。
todo:界面随着文章内容变化,比如Hello的界面是英文的,Hello/zh的界面是汉字的。需要自己修改一下mediawiki的代码。
步骤:
mysql -uwiki_test -p1 wiki_test mysql> INSERT INTO `interwiki` VALUES('zh','./$1',0,0); mysql> INSERT INTO `interwiki` VALUES('en','./$1',0,0);
然后建立“Hello”页面,内容如下:
[[zh:你好]] Hello World.
然后建立“你好”页面,内容如下:
[[en:Hello]] 你好,世界。
MediaWiki支持HTML语言
修改LocalSettings.php,加入一行:
$wgRawHtml = true;
MediaWiki安装后切换英文版为汉字版
修改LocalSettings.php:
$wgLanguageCode = "zh";
MediaWiki URI rewrite
vi LocalSettings.php $wgArticlePath = "${wgScriptPath}/$1"; sudo vi /usr/local/apache2/conf/extra/httpd-vhosts.conf RewriteEngine On RewriteRule ^/wiki/test/(images|skins)/ - [L] # so skins and images work RewriteRule ^/wiki/test/(.+)$ /wiki/test/index.php?title=$1 [PT,L,QSA]
MediaWiki禁止匿名编辑
vi LocalSettings.php $wgGroupPermissions['*']['edit'] = false;
参考资料:
PS:1年前就折腾过mediawiki多语言文字,用文件记录下来丢了,这次公司需要用wiki,又折腾了半天。看来还是记录到博客里比较靠谱,还能给需要的人带来一些参考价值。看来我也开始相信云了,虽然我一直用着google bookmarks在线收藏夹、博客,其实我还是喜欢单机和局域网游戏,而不喜欢网游。