我已經使用Poedit(在Win7上運行)生成.mo/.po文件,以使用PHP gettext製作俄文版的網頁。當我顯示俄文版本的頁面時,所有字符都顯示爲黑色菱形/方塊。英文到俄文翻譯的字符編碼問題
這裏是一個示例網頁來演示該問題:
http://cthorn.co.uk/localization/index.php
...這裏是俄羅斯版本:
http://cthorn.co.uk/localization/index.php?locale=ru_RU
爲index.php
的代碼是:
<?php require_once("locale/localization.php"); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Test</title>
</head>
<body>
<p><? echo _("This is the text to be translated."); ?></p>
</body>
</html>
的文件localization.php
的代碼是:
<?php
$locale = "en_GB";
if (isSet($_GET["locale"])) $locale = $_GET["locale"];
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("messages", "./locale");
textdomain("messages");
?>
目錄結構:
- localization
- locale
- ru_RU
- LC_MESSAGES
messages.mo
messages.po
localization.php
index.php
在poEdit的我同時設置 「字符集」 和 「源代碼字符集」,以UTF-8
。 「語言」設置爲Russian
,「國家」設置爲RUSSIAN FEDERATION
。
我確定俄羅斯文本在粘貼到Poedit之前是從UTF-8編碼的文本文件複製的。
我缺少什麼?
下面是messages.po
複製出來的記事本++ - :
cthorn(點)共(點)英國/定位/區域/ ru_RU/LC_MESSAGES /消息
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-11-16 10:49-0000\n"
"PO-Revision-Date: 2011-11-16 10:49-0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-KeywordsList: _;gettext;gettext_noop\n"
"X-Poedit-Basepath: C:\\websites\\cthorn.co.uk\\live\n"
"X-Poedit-Language: Russian\n"
"X-Poedit-Country: RUSSIAN FEDERATION\n"
"X-Poedit-SourceCharset: utf-8\n"
"X-Poedit-SearchPath-0: .\n"
#: localization/index.php:10
msgid "This is the text to be translated."
msgstr "Это текст для перевода."
不好意思啊,從下載的文件的.mo cthorn(點)共(點)英國/定位/區域/ ru_RU/LC_MESSAGES/messages.po
(我只能發佈兩個環節,因爲我是一個的n00b)
我的意思是文件本身。在這裏粘貼它後,文本肯定是UTF-8) – Eugene