【问题标题】:gettext only translate to English in PHPgettext 仅在 PHP 中翻译成英文
【发布时间】:2014-10-01 12:55:42
【问题描述】:

我是西班牙人,正在对文本宽度 PHP 进行国际化测试,我只把它翻译成英文。 我得到了这种文件结构:

locale/en_US/LC_MESSAGES/con los ficheros messages.mo y messages.po
locale/es_ES/LC_MESSAGES/con los ficheros messages.mo y messages.po
locale/fr_FR/LC_MESSAGES/con los ficheros messages.mo y messages.po

每个文件都有关键字“Servicios”翻译成每种语言。

在 PHP 中我有这个代码:

<?php
putenv("LANG=en_US");
setlocale(LC_ALL, "en_US");
bindtextdomain("messages", "locale");
textdomain("messages");
?>

当我输入代码“en_US”时显示良好的翻译,但当我将其更改为“es_ES”或“fr_FR”时:

<?php
putenv("LANG=es_ES");
setlocale(LC_ALL, "es_ES");
?>

<?php
putenv("LANG=fr_FR");
setlocale(LC_ALL, "fr_FR");
?>

仍然显示翻译成英文

我正在开发 Widnows 7 和功能

echo $_SERVER['HTTP_ACCEPT_LANGUAGE'] ; 

返回 "es-ES,es;q=0.8" 总是,

可能是什么问题? 谢谢

【问题讨论】:

    标签: php gettext


    【解决方案1】:

    很可能在您运行脚本的服务器上没有安装这些语言 - 您是否具有对服务器的 shell 访问权限?那就试试吧

    locale -a
    

    查看安装了哪些语言环境。也看看这里Is it feasible to rely on setlocale, and rely on locales being installed?

    注意:

    注意LC_ALL 设置,因为它可能会引入一些不需要的转换。比如我用了

    setlocale (LC_ALL, "Dutch");
    

    在页面上以荷兰语显示我的工作日。从那一刻起(许多小时后我发现)我的 MYSQL 中的浮点值被解释为整数,因为荷兰语语言环境需要逗号 (,) 而不是小数点前的点 (.)。我试过printfnumber_formatfloatval....都无济于事。 1.50 总是打印为 1.00 :(

    当我将语言环境设置为:

    setlocale (LC_TIME, "Dutch");
    

    我的工作日现在很好,我的浮点值也很好。

    【讨论】:

    • 嗨,对不起,我不明白答案,我该如何执行'locale -a'?。我有一个本地服务器 apache \r\n Apache 版本:2.4.9 - 文档 PHP 版本:5.5.12 - 文档服务器软件:Apache/2.4.9 (Win64) PHP/5.5.12 谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    相关资源
    最近更新 更多