多语言网站解决方案 v2.00

转载 2006年05月29日 10:02:00

转自:http://nightcat.512j.com/xoops/modules/wordpress/index.php?p=129

###############################################
#
#DocName:多语言网站解决方案
#Time:2005-6-29
#modifyTime:2005-10-29
#EMail:liwenfei@21cn.com
#WebSite:nightcat.512j.com
#version : v 2.00
#
###############################################

前言:
多语言网站开发,重点的还是在解决语言之间的问题。
那如何解决这个问题呢?大概就分三步走:

1.页面多语言
2.数据库多语言
3.用户访问语言统一

1.页面多语言
需要考虑的问题:
A.用户登陆时候,自动识别字符,调用不同的语言包?
B.用户切换不同语言时候,调用不同的语言包?
C.增加多语言后的目录结构?

页面多语言也就是外观的多语言化,这里可以采用静态的语言包的方式。
设计时候就应该包括language的目录,针对不同语言有独立的子目录。
如英文language/en ,简体中文language/gb,繁体中文language/b5 (可以扩展其他语言)
每个目录下就包含了对每个页面的语言版本。选择语言版本时候就可以调用相应版本的语言包。

具体做法:
0.利用js语言,识别浏览器语言,在调用不同的语言包.

1.language/en/global.ln是针对英文版的全局语言包。

2.global.ln 内容为:
$title = “English webstie”;
$charset = “UTF-8″;

3.index.php调用:

用require_once调用 anguage/en/global.ln .
指定主题和和字符集 $title 和 charset=$charset
这样通过扩展就可以实现页面的多语言化.

2.数据库多语言
这个考虑的问题:
A.后台录入数据的多语言化?
B.用户在不同版本下,提交的内容,如何保存?
C.提供三种语言包,还是提供英文和简体,简体通过转化提供繁体?

数据库多语言就是达到多语言在数据库里面的统一。就需要采用utf-8统一编码。
无论什么语言的文字,都统一使用utf-8来存放到数据库里面。采用表字段来表识
属于什么语言版本的文字。

具体:

A.对于后台添加的问题:

1.后台添加时候,就需要多语言化的录入。先建立一个以utf-8编码的数据库,录入英文/简体,简体在通过转化为繁体,
再以utf-8编码方式存于数据库中。

2.建立以utf-8为编码的表结构,importlanguage标识属于什么语言版本
但在某个版本下,就搜索属于这个版本的文字来显示。其他文字不显示。
DROP TABLE IF EXISTS `zz_importer`;
CREATE TABLE IF NOT EXISTS `zz_importer` (
`importID` int(11) NOT NULL auto_increment,
`importTime` date

NOT NULL default ‘0000-00-00′,
`improtfile` varchar(100) NOT NULL default ‘’,
`importlanguage` varchar(100) NOT

NULL default ‘’
PRIMARY KEY (`importID`)
) ENGINE=MyISAM DEFAULT CHARSET=uft-8;

3.简体转化的繁体。
利用php的iconv.此过程对于linux/unix有效,对于windows无效。
iconv("GB2312″,"BIG5″,$text);

4.因为,charset = “utf-8″,数据就都是以utf-8编码方式存在,
添加数据时候,要分别用en/gb/big5来标识语言版本.
INSERT INTO `zz_importer` VALUES (,'’, ‘’, ‘en’);
INSERT INTO `zz_importer` VALUES (,'’, ‘’, ‘gb’);
INSERT INTO `zz_importer` VALUES (,'’, ‘’, ‘big5′);

B.对于用户添加的问题:
1.假设下简体中文下.用户因为页面头为UTF-8.则用户浏览器会以utf-8编码
方式浏览页面。

2.添加的数据库本身以utf-8方式存在。

3.添加数据时候,要分别用gb来标识语言版本
INSERT INTO `zz_importer` VALUES (,'’, ‘’, ‘gb’);

C.对于简体和繁体是单独提供还是转化问题

单独提供 - 比较符合多语言的标准,灵活性大,对ISP没有特别的要求。

转化提供 - 提交速度会受影响,同时要ISP提供iconv的函数支持。

3.用户访问语言统一

A.假设用户简体中文版时候:

所有语言版本都是这样。

B.调用language/gb的语言包。

C.搜索数据库有语言字段为gb的数据,并显示

D.当用户提交信息,参照上面数据库多语言的B问题。

php 网站使用 UTF-8 注意事项:

1.确定数据库默认使用UFT8编码.mysql 4.1.XX 以后有几个地方设置语言要统一,
character set client utf8 utf8
character set connection utf8 utf8
character set database utf8 utf8
character set results utf8 utf8
character set server utf8 utf8
character set system utf8 utf8

collation connection utf8_general_ci utf8_general_ci
collation database utf8_general_ci utf8_general_ci
collation server utf8_general_ci utf8_general_ci

检查方法:
mysql> show variavle like ‘character_set_%’;
编码应该是utf8
mysql> show variavle like ‘collation_%’;
编码应该是utf8_general_ci

如果不是,修改my.ini(windows)或者my.cnf(linux) 文件

For windows,检查my.ini.
确保[mysqld]下面有:
default-character-set=utf8

For slackware linux 检查my.cnf.
如果没有配置,就复制mysql目录下的my.XX.cnf文件到/etc/my.cnf
确保[mysqld]下有:
character_set_server = utf8
[mysql]下面有:
default-character-set=utf8

2.确保所有的文件都是utf编码,如果不是通过各种工具转化.UtralEdit就有很容易的方法
不过是针对单一文件.批量要选择其他工具如CovertZ

提醒:使用UtralEdit要在advanced->configuration->general 去掉两个write utf8 bom 选项.
要不保存起来的php文件,当使用session_start()时候会出现 headers 已经发送的错误.

3.如果上面的方法已经实现了多语言支持就不必要下面,但是还是不行.还是会出现??的乱码。
这还是由于字符集之间不统一的问题,可能是connect的连接字符不对,
可以在连接后使用set names ‘utf8′,指定使用utf8来连接。

$p->connect(host,user,pass);
$sql = “set names ‘utf8′ ”;
$p->query($sql);

4.所有HTML页面都是包含

以上四步就差不多保证你utf8编码的一切能正常工作.
在MySQL 4.1.7-nt(windows) / MySQL 4.1.11-standard(linux)通过测试.

使用phpMyadmin 的语言配置

1.字符集
Language设置为: Chinese Simplified (zh-utf-8) ;
MySQL字符集为:UTF-8 Unicode (utf8);
MySQL 连接校对为:utf8-unicode _ci ; .

2.表
建立的新表,统一使用charset utf8

3.数据
用传输的数据使用utf8编码.
提交的表单,页面头meta 使用charset = ‘utf8′.
导入的文件是utf8编码的.

4.显示
页面头meta 使用charset = ‘utf8′.


网站设计--多语言网站实现方案

多语言网站实现方案   1,静态:就是为每种语言分别准备一套页面文件,要么通过文件后缀名来区分不同语言,要么通过子目录来区分不同语言。   例如对于首页文件index_en.htm提供英语界面,i...
  • cengjingcanghai123
  • cengjingcanghai123
  • 2014年05月23日 10:45
  • 1751

电商网站多语言架构

电子商务网站多语言版设计思路1. 数据库设计1. 分库,还是分表2. 单表还是多表 这步其实很关键:首先 这直接涉及到代码逻辑,一有不慎,可能会导致原有方案失效说说我们的设计思路吧!我们采用的是分库方...
  • yqbaa
  • yqbaa
  • 2015年09月20日 11:48
  • 1234

实现web多语言的一种解决办法

实现web多语言可能有多种解决办法,现在分享一种比较简单的思路,这篇文章主要用于记录学习过程,肯定存在不少谬误,欢迎批评指正。 web多语言实现最简单的一种方法可能是每一种语言一套代码,但这样存在一...
  • gl1987807
  • gl1987807
  • 2013年06月20日 23:28
  • 7058

多语言的网站方案

一、数据库方面有以下三种方式: 1、在数据库级别支持多语言:为每种语言建立独立的数据库,不同语言的用户操作不同的数据库。 2、在表级别支持多语言:为每种语言建立独立的表,不同语言的用户操作不同...
  • hyperhawk
  • hyperhawk
  • 2015年01月06日 10:33
  • 1010

前端多语言的切换

前端开发中多语言的切换,可使用js动态替换内容 1、在用户点击切换语言后,把选择的语言版本保存在cookie中 //写入cookie函数 function setCookie(name,value...
  • hefy780144
  • hefy780144
  • 2017年03月23日 14:46
  • 3551

静态网站的中英文等多语言切换

之前做过一个项目,项目要求中英文实现
  • czyhy
  • czyhy
  • 2014年07月10日 11:07
  • 2571

让asp.net网站支持多语言,使用资源文件

asp.net多语言支持例子
  • smartsmile2012
  • smartsmile2012
  • 2014年11月26日 16:50
  • 5004

HTML页面多语言切换

部门有个Web UI产品,里面有项功能是语言切换。之前同事的做法是把每个页面都做另做一份,语言切换时改变URL即可。简单的页面还好,如果遇到更多语言和复杂页面难免会增加维护难度。后来另一个同事用jQu...
  • dowithsmiles
  • dowithsmiles
  • 2013年02月01日 12:30
  • 14151

如果网页内容需要支持多语言,你会怎么做?在设计和开发多语言网站时,有哪些问题你必须要考虑?

采用统一编码UTF-8方式编码 1- 应用字符集的选择;所以对提供了多语言版本的网站来说,Unicode字符集应该是最理想的选择。它是一种双字节编码机制的字符集,不管是东方文字还是西方文字,在Uni...
  • xujie_0311
  • xujie_0311
  • 2014年12月20日 22:00
  • 2789

软件本地化/国际化解决方案 - 多语种代码生成工具

提起程序信息本地化/国际化解决方案(本地化和国际化是指让软件支持多国语言的显示), 很多人首先可能会想到大名鼎鼎的GNU GetText, 的确这是一个很优秀的解决方案。另外,还有一种方式是操作程序的...
  • HTControl
  • HTControl
  • 2014年10月22日 21:09
  • 1308
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多语言网站解决方案 v2.00
举报原因:
原因补充:

(最多只允许输入30个字)