PHP:gettext 需要 LC_MESSAGES 目录吗?

发布于 2024-10-02 12:01:04 字数 758 浏览 6 评论 0 原文

为了翻译我的 PHP 应用程序,我使用在 gettext 模块中编译的方法。这是根据文档制作的翻译目录树:

locale/
  cs_CZ/
    LC_MESSAGES/
       messages.po
       messages.mo
  de_DE/
    LC_MESSAGES/
       messages.po
       messages.mo
  fr_FR/
    LC_MESSAGES/
       messages.po
       messages.mo

问题:是否可以删除 LC_MESSAGES 目录?如果我使用这个结构,PHP 能够找到翻译吗?

locale/
  cs_CZ/
     messages.po
     messages.mo
  de_DE/
     messages.po
     messages.mo
  fr_FR/
     messages.po
     messages.mo

我的切换翻译的 PHP:

<?php
    setlocale(LC_ALL, 'fr_FR.UTF-8');
    bindtextdomain("messages", "locale");
    bind_textdomain_codeset("messages", 'UTF-8');
    textdomain("messages");
?>

提前谢谢您。

To translate my PHP app I use compiled in gettext module. Here is a directory tree of translations made according to docs:

locale/
  cs_CZ/
    LC_MESSAGES/
       messages.po
       messages.mo
  de_DE/
    LC_MESSAGES/
       messages.po
       messages.mo
  fr_FR/
    LC_MESSAGES/
       messages.po
       messages.mo

Question: is it possible to get rid of LC_MESSAGES catalog? Will PHP be able to find translations if I use this structure?

locale/
  cs_CZ/
     messages.po
     messages.mo
  de_DE/
     messages.po
     messages.mo
  fr_FR/
     messages.po
     messages.mo

My PHP that switches translations:

<?php
    setlocale(LC_ALL, 'fr_FR.UTF-8');
    bindtextdomain("messages", "locale");
    bind_textdomain_codeset("messages", 'UTF-8');
    textdomain("messages");
?>

Thank you in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

猫卆 2024-10-09 12:01:05

唯一可行的解​​决方法是创建符号链接 LC_MESSAGES -> . 在每种语言子目录中。 (但这使 PHP 应用程序安装变得复杂。FTP 很少可以创建符号链接。)

The only feasible workaround is creating a symlink LC_MESSAGES -> . in each language subdirectory. (But this complicates PHP application installation. FTP seldomly can create symlinks.)

水中月 2024-10-09 12:01:05

恐怕 LC_MESSAGES 是一个要求。

如果我错了,请纠正我,但我认为这与 gettext 缓存有关。

I'm afraid LC_MESSAGES is a requirement.

Correct me if I'm wrong, but I think it has something to do with the gettext cache.

花落人断肠 2024-10-09 12:01:05

如果你真的想这样做,你可以使用这个作曲家包: gettext/gettext

所以你可以根据您的需要进行文件夹组织,甚至是类似的内容:

locales/
   cs_CZ.mo
   cs_CZ.po
   de_DE.mo
   de_DE.po
   fr_FR.mo
   fr_FR.po

If you really want to do that, you can use this composer package : gettext/gettext

So you can have the folder organization as you desire or even something like that :

locales/
   cs_CZ.mo
   cs_CZ.po
   de_DE.mo
   de_DE.po
   fr_FR.mo
   fr_FR.po
依 靠 2024-10-09 12:01:05

回答标题中的问题:确实需要

为什么?
据我目前的理解, LC_MESSAGES许多本地化类别可以与 gettext 一起使用。例如,您可以使用 dcgettext() 更改为另一个类别。

然而,这有点令人困惑,因为 gettext 应该主要用于文本翻译,并且用它来本地化日期、金钱、数字或字符集可能会很奇怪。

Answering the question in the title: it does require.

Why?
To my current understanding, LC_MESSAGES is one of the many localization categories you could use with gettext. You can change to another category using dcgettext(), for instance.

However, that's a bit confusing since gettext is supposed to be mainly used for text translation, and it might be weird to use it to localize dates, money, numbers or charsets.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文