php的国际化编程思路(i18n gettext)

1.实验环境:

[复制到剪切板]
CODE:
php开发环境:
xp+apache2+php5;
DOCUMENT_ROOT D:wwwmy;程序在根目录下运行
poedit
-1.3.7 //可以到poedit官网上去下符合你操作系统的程序. ;

2.配置.

[复制到剪切板]
CODE:
当然了,首先一点你要支持PHP的gettext扩展,linux下在编译PHP时搞定,win下最新的php5只要把配置文件里的gettext扩展打开就行了.!~
安装poedit,我是按默认安装的,你自己找到命令的目录就行了,或加个环境变量

3.php编码
写个简单的hello world!
hello.php

[复制到剪切板]
CODE:
<?php  
//i18n php国际化编程
define('PACKAGE''hello'); //定义语言文件名称.就是*.mo,*.po的名字
putenv("LANG=zh_CN");//定义语系,这个可以参照各种国际化文档.我定义的是中文.
setlocale(LC_ALL,"zh_CN");
bindtextdomain(PACKAGE,"D:/www/my/LOCALE");//设置语言文件路径
textdomain(PACKAGE);//这里是设置下语言文件,上面只是定义一个常量,别搞混了哦
echo _("hello world!");//程序主体,我们用英文写
?> 

4.生成语言文件

[复制到剪切板]
CODE:
//进入poedit的bin目录
C:Program FilespoEditbin>xgettext -d hello D:wwwmyhello.php 

用记事本打开生成的hello.po
如下

[复制到剪切板]
CODE:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION/n"
"Report-Msgid-Bugs-To: /n"
"POT-Creation-Date: 2007-09-18 13:40+0800/n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE/n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>/n"
"Language-Team: LANGUAGE <[email][email protected][/email]>/n"
"MIME-Version: 1.0/n"
"Content-Type: text/plain; charset=gbk/n" 
#这里设置你的字符集
"Content-Transfer-Encoding: 8bit/n"

#: D:/www/my/hello.php:8
msgid "hello world!"
msgstr "您好!"  #在这里写你的译文 ;

改好以后运行生成*.mo文件,编译过C的相信对这些不陌生.

[复制到剪切板]
CODE:
C:Program FilespoEditbin>msgfmt -o hello.mo hello.po 

5.设置目录结构.
相对于上面的bindtextdomain设置
D:/www/my/LOCALE
LOCALE
   +---zh_CN
           +-------LC_MESSAGES//这里放你生成的hello.mo hello.po
6.运行
hello.php
哈哈,出来了,是您好.

这主要是目录结构设置正确,比较复杂.有疑问的同学欢迎参加讨论!~`````

你可能感兴趣的:(apache,编程,PHP,扩展,语言,email)