PHP, MultiLanguage, PO MO gettext() 多國語言版本

PHP, MultiLanguage, PO MO gettext() 多國語言版本

在php 要如何做多國語言支援? 下面的步驟可以說明

請把下面的php code 存起來

#. tset.php


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"httpss://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta httpss-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>

<?
$domain = 'messages';
bindtextdomain($domain, "includes/translations");
textdomain($domain);

$iso_codes = array (
'EN'=>'English',
'fr'=>'French',
'it'=>'Italian',
'pt'=>'Portuguese',
'es'=>'Spanish',
'zh'=>'Chinese','nl'=>'Nederlands'
);
foreach ($iso_codes as $iso_code => $language) {
putenv ('LANG='.$iso_code);      //Print out the language name and greeting
setlocale(LC_ALL, $iso_code);    //Filter the greeting through gettext
echo $iso_code;
printf ("%12s: %s\n", $language, gettext("str_hello")) &amp;amp; "\n";
echo gettext("txt");
echo gettext("str_hello");
echo gettext("URL");
echo gettext("Row");
echo  '<br>';
}
>

<?php
putenv("LANG=nl_NL");
setlocale('LC_ALL', "nl_NL");
bindtextdomain("greetings", "./locale/");
textdomain("greetings");

echo _("Hello World");
>
<body>
</body>
</html>

#. 然後下載工具 Poedit

httpss://sourceforge.net/projects/poedit/

$./xgettext -n *.php

如果是中文的 _(“中文”) 就要用

$ ./xgettext –from-code=UTF-8 -n  *.php

$>ls
tset.php messages.po

#. Use Poedit to edit .po file and convert string, and save to .mo (msgfmt.exe)
#. COPY .po and .mo  \includes\translations\zh\LC_MESSAGES\messages.po and messages.po