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

当然,我也用"sudo msgfmt messages.po"创建了messages.mo,没有任何问题。

问题是它应该返回"返回面板"而不是"Volver al Panel",我错了吗?

我发现了问题所在,可以解决它。

我使用了命令locale-a,并意识到我没有安装名为en_US的区域设置,但我确实安装了en_US.utf8区域设置,所以我切换了这两个区域设置,并成功了。

最新更新