美文网首页
多语言之 getText

多语言之 getText

作者: 5sing_duan | 来源:发表于2016-05-18 16:08 被阅读0次

    今天给大家带来的是 getText 之 PHP。

    多语言事件很头疼的事,特别是对于在全球发行的公司的同学们。之前一直用 Python 的 Django 框架,处理多语言上虽然繁琐,但是相对还是很简单。跟着文档走一遍就能解决这个问题。前几天公司从外包公司拿到一个 PHP 项目让我实现多语言,在这里讲一下我处理的流程。

    废话不多说直接上图

    一.前期准备 

        1.echo phpinfo()查询是否支持 gettext,若没有需要安装 gettext。在这里我用-brew install gettext 安装

        2.安装 poedit - brew install Caskroom/cask/poedit (用于将.po 文件生成.mo 文件)

        3.PHP扩展目录下是否有php_gettext.dll这个文件,若没有可网上搜一下 cp过去

    1

       4.取消 php.ini --extension=php_gettext.dll

    2

    5.查找支持语言 -- locale -a

    3

    二.前期准备已好,上主题

    1.创建一个获取语言的文件在这里我取名为 setLan_.php

    我这里是通过浏览器的 header 头抓取语言信息,也可以$lan=$_REQUEST['lan'];url 抓取。putenv()对应的是上面 --locale -a 里面的语言,setlocale()作用下面再说。----注意:如果 locale -a 没有你想识别的语言,以上这些配了也不会显示多语言,可以自行添加。

    2.在要翻译的 PHP 页面添加如下代码

    5

    如果页面较多可以 include 到所需页面

    图5可以看到$domain 和 bindtextdomain()方法,请看下图

    6

    这些文件夹 就是语言翻译的文件,图5对应其路径可随意设置,在这里解释-图4-的setlocale()作用,就是当抓取到浏览器语言后。找到当前语言所匹配的翻译文件。用 gettext 方法翻译文字

    7

    3.生成.po 文件 -- xgettext -d TRANS_ index.php --from-code=utf-8

    8

    这个命令是将 index.php 言语进行翻译生成.po 文件

    9

    将多个文件翻译后方到一个.po 文件里 -- xgettext -d TRANS_ gallery.php -j --from-code=utf-8   

    将.po文件放到对应文件夹-如图6,用 Poedit(在前期准备中已经安装)打开.po 文件,

    10 11

    左面是页面中需要翻译的文字,右面是翻译的对应问题。如上我要将英语翻译为韩语。保存后会在.po 同一目录生成.mo 文件。

    打开浏览器测试。

    本问只是简单介绍了 php 用 gettext 进行多言语。深层的机制请自行查阅,至于.po 生成.mo 可调用接口命令行操作,在这里不做讲解。多谢~

    相关文章

      网友评论

          本文标题:多语言之 getText

          本文链接:https://www.haomeiwen.com/subject/nyjwrttx.html