Gettext无法正常工作

时间:2014-10-01 14:56:12

标签: php internationalization gettext

我试图让gettext在本地服务器上工作,但它只是不起作用。它没有给我任何错误,它只是用西班牙语返回我的字符串而不是将其翻译成英语。

这是index.php

<html>
<?php
$locale = "en_US";
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("messages", "./locale");
bind_textdomain_codeset("messages", 'UTF-8');
textdomain("messages");
?>
<?= _("Volver al Panel") ?>
</htlm>

这是messages.po,位于locale / en_US / LC_MESSAGES /

# 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.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-10-01 11:31-0300\n"
"PO-Revision-Date: 2014-10-01 11:38-0300\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.4\n"

#: index.php:10
msgid "Volver al Panel"
msgstr "Back to Panel"

当然,我还使用&#34; sudo msgfmt messages.po&#34;创建messages.mo。没问题。

问题是它应该返回&#34;返回Panel&#34;而不是&#34; Volver al Panel&#34;,我错了吗?

1 个答案:

答案 0 :(得分:0)

我弄清楚问题是什么,可以解决它。

我使用了命令locale -a并意识到我没有安装一个名为en_US的语言环境,但我确实有一个en_US.utf8语言环境,所以我将它们切换为两个并且它有效。