我试图让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"当然,我也可以使用"sudo msgfmt messages.po“创建messages.mo。
问题是它应该返回"Back to Panel“而不是"Volver al Panel",我错了吗?
发布于 2014-10-02 03:32:20
我找出了问题所在,并可以解决它。
我使用了locale -a命令,并意识到我没有安装名为en_US的locale,但我确实安装了en_US.utf8 locale,所以我将它们都切换了,并且它起作用了。
https://stackoverflow.com/questions/26144292
复制相似问题