当前位置:首页 » 编程语言 » php多语言

php多语言

发布时间: 2022-06-28 00:54:38

php如何实现一个网站多种语言

你好,做个语言包就好了,选择英语就调用英文的语言包

希望能解决你的问题,望采纳

⑵ 怎样做php的多语言网站啊 跪求思想

建议你找一个支持多语言的框架来做,这样简单一些。多语言的思路很简单,但是实际处理的时候很多具体的问题,因此不建议新手自己做。


思路参考以下示例

<?php
session_start();
if (isset($_SESSION['language']))
$language = $_SESSION['language'];
else
$language = 'zh'
$messages = array(
'zh' => array(
'str1' => '测试',
),
'en' => array(
'str1' => 'test',
),
);
?>
<html>
<body>
<h2><?php echo $messages[$language]['str1']?></h2>
</body>
</html>


不管多复杂的多语言程序,其核心都是这个,只不过翻译内容一般是存放在文件或者数据库中,并缓存起来,但是最终使用的时候还是会先形成如上的数组,然后输出的。


以下是一个js版本的多语言函数,供参考

LANGUAGE = 'zh'
Languages = {'zh': {'str1': '测试', 'str2': '用户 %name% 你好'}};
function translate(messageId, parameters) {
if (messageId === null) {
messageId = "FLAG_NULL";
}
var language = LANGUAGE;
if (Languages[language] && Languages[language][messageId]) {
messageId = Languages[language][messageId];
}
if (parameters) {
for ( var i in parameters) {
messageId = messageId.replace(eval('/%' + i + '%/g'), parameters[i]);
}
}
return messageId;
}
alert(translate('str2', {name: '张三'}));

⑶ thinkphp实现多语言切换时,数据库数据如何也实现多语言

有两种情况,分析如下:
1、需要中英文切换内容较少
假设我们现在正在操作的是文章表,需要根据用户的语言环境输出中文或英文的文章内容。
在文章表中多添加一个字段用于存储英文的内容,发布文章的页面,同时上传中英文内容即可,然后服务端通过thinkphp的多语言标识来决定读取中文内容或者英文内容。也可以在前端模板中进行识别。
2、需要中英文切换内容较多
如果某个数据表的多个字段或者多个数据表都需要做中英文切换,显然在数据表里添加多个字段的方式就不太合适了,那将导致数据表字段太多,不方便管理,可以采用多数据表的方式,将内容完整的分为两份。就是把涉及到中英文切换的数据表多拷贝一份而已,里面的数据是英文的
。管理员后台,可以同时存储中英文内容,也可以分开存储,你自己决定就好,读取时同样使用thinkphp的多语言标识判断用户的语言环境,来决定查询中文表还是英文表。
另外,如果整站都需要中英文切换,也可以做分布式数据库!
一切根据实际需求决定!

⑷ php 多语言切换

语言切换如果考虑用户体验的话就相对有点麻烦,分离语言模块保存在数据库或者指定文件中然后用php调用指定的语言是比较常用的,但是你要知道每种语言都有差异,这样会导致样式不一致,所以如果想要更好的用户体验最好也替换一下对应的css样式。

⑸ php建站怎么实现支持多种语言急啊,!!

最简单的方法
用 php 的 define 实现,用全局变量也可以。

语言1.php
<?php
define('HELLO', '你好');
...

语言2.php
<?php
define('HELLO', 'hello');
...

语言3.php
<?php
define('HELLO', 'こんにちは');
...

根据选择的语言 include 或者 require 以上文件之一即可。

PHP 代码:
<?php echo HELLO; ?>

比较正宗的做法是用 gettext,过程相对复杂,要用专门的po编辑器编辑语言文件。

补充:
用 gettext 实现多语言的典型案例是 wordpress,你可以看看它是怎么实现的。

⑹ 如何phpcms v9 多语言

因为phpcms v9的功能非常丰富,我们可以使用多种途径来实现多语言,这里以实现一个中英双语站为例来说下思路:

方法一、使用phpcms中的语言包动态切换中英文语言包实现多语言,想要什么语言就创建什么语言包即可,关键是要知道在做模板界面时里面的文字不能直接写死了而是使用L函数来调用对应的词汇,比如“用户中心”我们可以写成“{L('member_center')}”;
方法二、使用phpcms的多站点功能来在后台创建两个站点,并分别绑定对应的域名或目录。然后一个使用英文模板一个使用中文模板即可;
位置:后台-设置-站点管理-添加站点。
方法三、安装两个phpcms系统但是使用一个phpsso模块来实现用户互通(在安装系统时大概第三步有个选项是选择“安装全新的phpcms系统”还是“已有phpsso模块”,第二次安装时选择后者即可),两个系统分别是英文站点和中文站点。

PS:
1.语言包位置:/phpcms/languages/... 语言包以数组形式保存。
2.使用语言包来实现多语言与后两种办法相比只需要一套模板,但是限制是只能用于动态访问,如果是要生成静态页还是使用后两种办法吧。

⑺ php 实现多语言切换的原理!

创建不同的语言包(文件),这里可以设置成数组。使用时包涵指定的语言包,输出时用语言数组变量来输出。

⑻ thinkphp3.0如何实现多语言切换

ThinkPHP内置多语言支持,如果你的应用涉及到国际化的支持,那么可以定义相关的语言包文件。任何字符串形式的输出,都可以定义语言常量。要启用多语言功能,需要配置开启多语言行为(确保你下载的是完整版本,如果不是需要单独下载多语言检测行为扩展),在项目的配置目录下面的行为定义文件tags.php中,添加:

return array(

// 添加下面一行定义即可

'app_begin'=>array('CheckLang')

);

表示在app_begin标签位置执行多语言检测行为。

可以为项目定义不同的语言文件,框架的系统语言包目录在系统框架的Lang目录下面,每个语言都对应一个语言包文件,系统默认只有简体中文语言包文件zh-cn.php ,如果要增加繁体中文 zh-tw或者英文en,只要增加相应的文件。

语言包的使用由系统自动判断当前用户的浏览器支持语言来定位,如果找不到相关的语言包文件,会使用默认的语言。如果浏览器支持多种语言,那么取第一种支持语言。

ThinkPHP的多语言支持已经相当完善了,可以满足应用的多语言需求。这里是指的是模板多语言支持,数据的多语言转换(翻译)不在这个范畴之内。ThinkPHP具备语言包定义、自动识别、动态定义语言参数的功能。并且可以自动识别用户浏览器的语言,从而选择相应的语言包(如果有定义)。例如:

throw_exception('新增用户失败!');

我们在语言包里面增加了ADD_USER_ERROR 语言配置变量的话,在程序中的写法就要改为:

throw_exception(L('ADD_USER_ERROR'));

也就是说,字符串信息要改成L方法和语言定义来表示。

项目语言包文件位于项目的Lang目录下面,并且按照语言类别分子目录存放,在执行的时候系统会自动加载,无需手动加载。

具体的语言包文件命名规范如下:

项目公共语言包
语言目录/common.php

项目分组语言包
语言目录/分组名.php

项目模块语言包
不存在分组情况:语言目录/模块名(小写).php

存在分组的情况:语言目录/分组名_模块名(小写).php

语言子目录采用浏览器的语言命名(全部小写)定义,例如English (United States) 可以使用en-us作为目录名。如果项目比较小,整个项目只有一个语言包文件,那可以定义common.php文件,而无需按照模块分开定义。

语言包文件可以按照模块来定义,每个模块单独定义语言包文件,文件名和模块名称相同,例如:

Lang/zh-cn/user.php 表示给User模块定义简体中文语言包文件

Lang/zh-tw/user.php 表示给User模块定义繁体中文语言包文件

语言文件定义

ThinkPHP语言文件定义采用返回数组方式:

return array(

'lan_define'=>'欢迎使用ThinkPHP',

);

要在程序里面设置语言定义的值,使用下面的方式:

L('define2','语言定义');

$value = L('define2');

上面的语言包是指项目的语言包,如果在提示信息的时候使用了框架底层的提示,那么还需要定义系统的语言包,系统语言包目录位于ThinkPHP目录下面的Lang目录。

通常多语言的使用是在Action控制器里面,但是模型类的自动验证功能里面会用到提示信息,这个部分也可以使用多语言的特性。例如:

原来的方式是把提示信息直接写在模型里面定义

array('title','require','标题必须!',1),

如果使用了多语言功能的话(假设,我们在当前语言包里面定义了' lang_var'=>'标题必须!')

还可以这样定义模型的自动验证

array('title','require','{%lang_var}',1),

如果要在模板中输出语言变量不需要在Action中赋值,可以直接使用模板引擎特殊标签来直接输出语言定义的值:

{$Think.lang.lang_var}

可以输出当前选择的语言包里面定义的 lang_var 语言定义

热点内容
安卓哪里填写apple代码 发布:2025-02-05 00:28:54 浏览:287
oppo手机锁屏密码忘记后如何更换 发布:2025-02-05 00:28:19 浏览:25
幼儿思维编程 发布:2025-02-05 00:18:21 浏览:25
我的世界电脑正版如何进入服务器 发布:2025-02-05 00:18:06 浏览:880
疫情防控健康码预警机制演练脚本 发布:2025-02-04 23:58:46 浏览:39
分治算法java 发布:2025-02-04 23:41:15 浏览:592
安卓app点进去就闪退怎么回事 发布:2025-02-04 23:36:56 浏览:779
宏按键编程 发布:2025-02-04 23:05:11 浏览:904
微信隐形密码在哪里设置 发布:2025-02-04 23:05:01 浏览:866
android的补间动画 发布:2025-02-04 23:03:42 浏览:416