PHP国际化多语言的实现(非I18N)

PHP开发网站、系统会遇到需要支持多种语言的情况,这时候我们就需要国际化。一般都是推荐使用I18N,而使用I18N我们需要下载相应软件编辑PO文件,然后还要PHP的gettext扩展,有点小烦。

下面介绍一种除了I18N以外,最常用的PHP国际化方法。

数组!没错就是数组。PHP你只要会玩数组,那就是掌握了精髓!PHP中万物基于数组!

下面我简单介绍,实际使用这么写是不科学的,为了方便你理解,所以写的简单。

语言配置

首先我们需要有多国语言的配置文件。

zh-cn.php

<?php
return array(
	'hello world'	=>	'你好,世界'
);

多语言函数

function lang($string)
{
	if(isset($GLOBALS['Lang'][$string]))
	{
		return $GLOBALS['Lang'][$string];
	}
	else
	{
		// 语言配置不存在原样输出
		return $string;
	}
}

代码调用

$GLOBALS['Lang'] = include 'zh-cn.php';
// 输出:你好,世界
echo lang('hello world');

原理就是这么简单,就是通过PHP的数组键值对应。

  • 标签
  • 发表评论
当前用户:
  • 评论列表
  • Jackylin 2017-05-04 00:18:43

    还有你的查看图片是用什么插件的,挺好看的

    • Jackylin 2017-05-04 00:20:41

      fancyBox 知道了

  • Jackylin 2017-05-04 00:16:32

    这样的话,是不是只要用到翻译的地方都要调用:lang() ,并且还要在这个数组中加入对应key value
    有没有更直接或者好的方法实现呢?想i18n ,我用的是ci框架,有没哟资料或者简单点的,我也是入门php,最近才学

    • 宇润 2017-05-04 09:47:57

      CI也是用我这篇文章的类似方法实现的,你说的没错,都是通过一个方法来读取,然后要在数组里kv对应。。其实i18n也差不多的原理

  • ping_beici 2017-04-13 20:40:01

    sb宇润,嘻嘻

  • sb博主 2017-04-09 08:10:34

    垃圾

    • 宇润 2017-04-09 09:10:10

      IP地址: 118.144.20.173北京市北京市 鹏博士宽带
      用不起电信联通宽带的也敢来BB?

  • phper 2017-04-05 10:30:51

    在来个法文呢。一点扩展性都没有啊

    • 宇润 2017-04-05 14:38:07

      支持法文的

  • aa 2017-03-27 16:01:11

  • hhh 2017-03-25 18:34:26

    这个评论系统做的不行啊 瞎评论也能显示啊

    • 宇润 2017-03-25 18:39:38

      呵呵

      • 1 2017-03-29 15:27:06

        xx

        • 2 2017-03-29 15:27:16

          2