php - gettext 如何找出可用的语言

标签 php c ubuntu internationalization gettext

我最近花了一些时间翻译一个 PHP 应用程序,该应用程序在使用 Apache2 的 Linux 上运行。为了让 gettext 工作,我需要为我想要支持的每种语言访问系统目录,所以我想知道是否有更简单的方法来支持从 gettext 获取所有语言的文本。

我的语言环境文件位于我项目的子目录中:

./locale/sv_SE/LC_MESSAGES/default.po
./locale/es_BO/LC_MESSAGES/default.po

代码:在 ./gettext.php 中,如下所示:

<?php
setlocale(LC_ALL, "es_BO.utf8");
bindtextdomain("default", "locale/"); # usually works
textdomain("default");
echo echo _("test");
?>

C 代码是完全相同的代码,但有一些 header 。

如果我不使用这个丑陋的技巧“启用”玻利维亚西类牙语系统,将已经存在的 sv_SE 语言环境链接到 es_BO,此代码将不会输出我的西类牙语翻译:

sudo ln -s /usr/lib/locale/sv_SE.utf8 /usr/lib/locale/es_BO.utf8

更新

我认为我的问题是错误的“那么我如何避免执行那个 ln -s 命令,或者只是告诉我我是否以错误的方式处理这个问题?”基本上我想知道的是为什么 gettext 需要/usr/lib/locale 中的那些文件”或者我如何以一种简单的方式使用 gettext 来仅翻译消息。

更新2 我尝试使用 setlocal(LC_MESSAGES, "es_BO.utf8") 但它仍然需要/usr/lib/locale 中的消息。

最佳答案

为了检查某个翻译是否正常工作,您应该正确调用语言环境

#!/bin/bash
export LANG=es_BO
./yourprog

我认为您当前的语言破解有效,因为在您当前的系统中 LANG=sv_SE。否则我建议阅读更多关于 gettext 的内容.

关于php - gettext 如何找出可用的语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8092156/

相关文章:

r - 巧妙地在 ubuntu 中安装 R

php - 命中计数器sql错误

c - 返回全局字符串变量的地址

与 jQuery AJAX 一起工作的 PHP 关联数组解决方案

c - 为以下代码分配了多少空间?

c - 如何使用 fork 将多条记录从 parent 传递给 child

Docker apt-get 更新失败

linux - 编译内核模块时出错: no such file or directory

php - 如何在本地wordpress中配置Rets服务器

php - 使用授权代码流 (php) 从 Twitch API 获取用户名