使用 PHP Gettext 无需安装语言环境

2023-12-20

我一直在寻找国际化开源项目的选项:

  • Gettext,似乎每个人都推荐,显然需要“安装在您的系统上”才能使用语言环境。看到这个note http://www.php.net/manual/en/book.gettext.php#91187PHP手册上的内容准确地反映了我的情况。这所以问题 https://stackoverflow.com/questions/3398113/php-gettext-problems也询问同样的问题。这不适合开源项目,因为我不相信最终用户的系统上安装了适当的区域设置。此外,非常非常奇怪的是,您必须安装语言环境才能使用您已翻译的字符串(IMO)。

  • 有时也建议使用 Zend_Translate 以支持 gettext,但我没有使用 Zend 框架,所以我认为这不是我的选择。有些人说你可以将它从 Zend 框架中分离出来,但我不知道如何分离。如果有人可以告诉我需要挑选哪些文件(我已经下载了 Zend 框架的 tarball),我将愿意使用 Zend_Translate。

  • 数组。这就是我现在正在做的,但它并不理想,因为:

    • 当当前页面不会使用大多数翻译时,它将占用大量内存来定义每个翻译。
    • 我发现自己在复制数组中的键时遇到问题,数组已经有 1000 行代码长,而且我几乎没有添加任何内容......
    • 这意味着非程序员无法真正翻译,而 POedit 是每个人都期望使用的标准。

我能以某种方式阅读吗.mo没有 Gettext 或 Zend_Translate 的文件,还是必须使用 Gettext?如果是这样,我怎样才能使所有区域设置正常工作,就像我上面链接的问题一样?

编辑:我现在愿意使用 Zend_Translate。我只需要弄清楚我需要哪些文件(如果它们可以合并到一个文件中那就太好了) - 我不希望在我的项目中使用整个 Zend Framework。


更新:我有兴趣了解大型开源项目如何处理 i18n:

  • Moodle 使用arrays https://github.com/moodle/moodle/blob/master/lang/en/.
  • Drupal好像用数组,带有数据库后备 https://github.com/drupal/drupal/blob/7.x/includes/bootstrap.inc#L1464。他们也跑setlocale('C')获得一个通用的语言环境并绕过整个setlocale mess.
  • WordPress 使用自己的函数堆 https://github.com/WordPress/WordPress/blob/55fb020e84fd46bd56668facd1f3a74be1776cbf/wp-includes/l10n.php对于 i18n,虽然下面确实使用了 gettext。

因此,据我所知,这三个随机项目都没有使用 Zend_Translate,也没有直接使用 gettext。

也许使用Clocale,将语言名称存储在文本域名中,然后从那里开始。


据我所知,这就是:

$lang = 'de'; //debug
setlocale( LC_ALL, 'C' );
bindtextdomain( 'default', PATH . "/locale/$lang" );
bind_textdomain_codeset( 'default', 'UTF-8' );
textdomain( 'default' );

var_dump( file_exists( PATH . "/locale/$lang/C/LC_MESSAGES/default.mo" ) ); //bool(true)

但我仍然只得到英文字符串,即使我使用了 poedit、msgfmt 等来制作适当的文件。我也尝试过重新启动 Apache。


Try gettext-php https://launchpad.net/php-gettext/。它是用 PHP 编写的 gettext 的直接替代品。我认为,它最初是为 WordPress 完成的,因为 WP 需要在共享主机上运行,​​而这些主机并不总是针对每个区域设置进行配置。在我看来,这也是你的问题。

它对性能造成了一些影响,但这对我来说根本不是问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PHP Gettext 无需安装语言环境 的相关文章

  • CodeIgniter 自定义库未加载

    我是 CodeIgniter 的新手 并尝试用它开发一个相当简单的应用程序 只是一个用于处理想要娱乐中心通行证的员工的注册的表单 我正在尝试将事物分开以使它们更清晰 这是代码 应用程序 控制器 reccenter php class Rec
  • setcookie with expire=0 浏览器关闭后不会过期

    我使用setcookie来制作一个过期 0的cookie 从 PHP 文档来看 link http php net manual en function setcookie php cookie 过期的时间 这是一个 Unix 时间戳 所以
  • 在服务器上找不到本地主机或 phpMyAdmin:如何修复?

    我按照安装说明进行操作PHP MySQL and PHPMyAdmin 但是当我尝试访问时http localhost phpmyadmin 我收到此错误 未找到 在此找不到请求的 URL phpmyadmin 服务器 然后我尝试访问loc
  • PHP 通过 SSL 连接到 MS SQL

    我想要实现的目标非常简单 我想通过安全连接从 PHP 脚本连接到外部 MS SQL 数据库 然而 这已被证明是有问题的 到目前为止 经过三个小时的研究 我不知所措 客户端的平台是Ubuntu 这意味着我无法使用SQLSRV 安全连接已经在不
  • 无法访问 localhost/xampp/index.php

    我刚刚安装了 Windows 7 的 XAMPP 控制面板似乎工作正常 我启动了 MySql 和 Apache 我遇到的问题是 当我在浏览器 Google Chrome 中输入 localhost 时 它会将我发送到 http localh
  • jQuery ajax 调用包含重音字符的 url 将错误的 Uri 从 IE 发送到服务器

    我在使用 IE 发送包含重音字符的 url 时遇到问题 这是一个简单的函数 function runjQueryTest var url test Beyonc get url function 在服务器 PHP 上我记录了请求uri的值
  • PHP WCF 集成

    是不是如果我想支持php客户端访问我的服务 我必须有一个基本的http端点 这是因为php仍然只支持soap 1 1吗 据我所知 自从我使用 PHP 以来已经两年了 情况仍然如此 如果客户端应用程序将使用 PHP 的内置 SoapClien
  • 使用 PHP/linux 将文件合并为单个 PDF

    我正在研究如何将多个 PDF 合并为一个 PDF 我正在寻找一个图书馆可靠且坚固尽可能 最好有一个库可以保留书签 鬼脚本 http pages cs wisc edu ghost 可以在保存书签的位置进行连接 但我遇到了麻烦 在一种情况下它
  • 分页显示所有其他页面上第 1 页的相同帖子

    我最近在创建即将发生的事件列表时得到了很多帮助 请参阅此处显示即将举行的活动 包括今天的活动 https stackoverflow com questions 17343615 showing upcoming events includ
  • 在哪里可以获得 PHP 5.3+ 的 runkit DLL 扩展?

    这是一个简单的问题 我在哪里可以获得 PHP 5 3 版本的 runkit 扩展 它的手册 http php net manual en book runkit php http php net manual en book runkit
  • PHP 中标头的使用

    非常简单的问题 这两个 PHP 版本 5 标头调用中哪一个是 最好的 header Not Modified true 304 header HTTP 1 1 304 Not Modified 我很确定第一个是最多价的 但只是好奇如果在 H
  • Laravel Vue 组件只能传递数字?

    在我的 UserMenu vue 中我写道 export default props nameVal data return 并在blade php中
  • docker 中的 php Curl 冲突 CURLOPT_FILE 和 CURLOPT_RETURNTRANSFER

    当我使用curl时CURLOPT FILE and CURLOPT RETURNTRANSFER选项 文件为空 没有任何curl错误 fp fopen saveTo w ch curl init fileUrl curl setopt ch
  • 在 foreach 中使用 QueryPath 的多个查找

    我正在使用 QueryPath 和 PHP 这发现 eventdate 没问题 但不会为 dtstart 返回任何内容 qp htmlqp url foreach qp gt find table schedule gt find tr a
  • Nginx 502 网关错误。通过增加buffer来解决。为什么?

    我正在设置 LEMP 堆栈来运行 Drupal 我安装了 Nginx 和 PHP FastCGI Nginx 工作正常 但任何运行 PHP 的尝试都会出现错误 502 Bad Gateway 谷歌很快发现 nginx 502 错误网关 ht
  • 使用 PHP 从 Mongo 解码 JSON

    我已经看过这个线程 PHP 解码嵌套 JSON https stackoverflow com questions 3555335 php decode nested json并没有设法用它来解决我的问题 我目前正在从 Mongo 获取 J
  • 从 Laravel 4 输入生成新数组

    我使用 Input all 从动态生成的表单中获取一些输入 我使用 jQuery 来允许用户添加字段 字段名称为 first names last names 和 emails input 变量现在看起来像这样 array size 4 t
  • 使用 php/regex 验证美国电话号码

    EDIT 我混合并修改了下面给出的两个答案 以形成完整的功能 现在它可以完成我想要的功能 然后是一些 所以我想我会将其发布在这里 以防其他人来寻找同样的东西 Function to analyze string against many p
  • Laravel 搜索关系

    我有两个相关的模型 我正在尝试在产品中进行搜索 并且仅显示实际搜索结果 而不是找到该产品的类别的所有产品 我不想搜索任何类别 因为无论搜索什么或找到什么 类别都会始终显示 Example I have the following categ
  • 如何计算 3D 坐标的线性索引,反之亦然?

    如果我有一个点 x y z 如何找到该点的线性索引 i 我的编号方案是 0 0 0 是 0 1 0 0 是 1 0 1 0 是最大 x 维度 另外 如果我有一个线性坐标 i 我如何找到 x y z 我似乎无法在谷歌上找到这个 所有结果都充满

随机推荐

  • iOS:如何写入项目中特定目录的文件?

    我正在尝试将我在应用程序中收集的一些字符串输出到文本文件中 文本文件将始终存在于我的项目中 如下所示 我试图用新的 多行 字符串覆盖文件中的所有内容 func writeFile let theFile FileHandle FileHan
  • 使用 javascript 执行器为 selenium webdriver ruby​​ 绑定脚本启用禁用字段

    我正在 Selenium Webdriver 脚本中编写以下 Ruby 代码 以通过 Javascript 执行器启用 UI 上的禁用字段 browser execute script browser find element xpath
  • 三个彼此相邻的 DIV,具有流畅的水平宽度

    我需要知道如何将所有三个 div 与所有不同的背景图像对齐 中间的 div 需要为 989px 左 div 和右 div 的宽度并不重要 简而言之 http jsfiddle net hobobne qyGC5 http jsfiddle
  • 在 Mobile Safari 中保持 WebSocket 处于活动状态

    一旦屏幕锁定 是否可以在 Mobile Safari 中保持 html 5 网页 WebSocket 连接打开 我想向用户发送全天的持续更新 而他们的屏幕必须始终解锁才能接收这些通知 这似乎很愚蠢 还有其他选择吗 我认为当浏览器处于后台或屏
  • Java BufferedReader 返回文本文件的顶部?

    我目前有 2BufferedReaders 在同一文本文件上初始化 当我读完第一个文本文件后BufferedReader 我使用第二个从顶部再次遍历文件 需要多次遍历同一文件 我知道关于reset 但需要先调用mark and mark 需
  • 如何在mongo中插入带有日期的文档?

    我们正在尝试插入一个以当前日期作为字段的文档 我们正在使用 mongodb 的 eclipse 插件用 java 编写 我们想要执行Date mongo 命令从 mongo 获取日期 而不是从 java 获取日期 我怎样才能执行这个 mon
  • 如何将 C 函数移动到单独的文件中?

    我正在开始 C 编程 我目前有一个包含很多函数的大文件 我想将这些函数移至单独的文件中 以便代码更易于阅读 但是 我似乎无法弄清楚如何正确包含 编译 并且在我找到的任何在线教程中都找不到示例 这是一个简化的示例 include
  • CSS 字体未在 IE9 中加载

    我遇到了 font face 字体无法在 IE9 中加载的问题 IE8 及更低版本运行完美 就像我尝试过的所有其他浏览器一样 这是我的 CSS 字体松鼠语法 font face font family ssmicon src url ssm
  • Log4Net - 我可以在 Config 中拥有自定义部分名称吗

    我需要在配置部分使用除 log4net 之外的部分名称 我知道这是我们通常使用的 section type section 但我需要有一个这样的部分 section type section 我正在开发一个 sitecore 网站 它有自己
  • 使用便携式打印机通过蓝牙与 Delphi XE7 连接

    我正在尝试与世宇LK P32通过蓝牙打印机 为此 我正在使用德尔福XE7 我用 Delphi 做了一些例子 但没有成功 我将配对的打印机放在平板电脑上 即使这样我也无法连续打印 当我打印某些内容时 必须重新启动应用程序 以便我可以再次打印某
  • 父目录中的 htaccess 导致“RewriteEngine not allowed here”

    目前 我正在使用 OSX Server Yosemite 托管一堆 PHP 应用程序 其中一些应用程序在网站文档根目录下有一个用于子域的子目录 自从更新到 OSX Server 的 Yosemite 版本以来 这些子域一直抛出 500 错误
  • Python 中的时间戳服务器 rfc3161 响应令牌生成

    我正在尝试使用twisted在python上实现tsa服务器 目前我正在使用 openssl 二进制文件来生成响应 但这对我来说似乎很难看 这就是为什么我试图弄清楚如何使用 m2crypto 制作响应令牌 预先感谢您的帮助 Maris ED
  • Kotlin 中“external”关键字的用途是什么?

    其目的到底是什么externalKotlin 中的关键字 我猜这是 JNI 之类的native在Java中 但我似乎找不到任何关于此的实际参考或文档 事实上 它相当于Java的native 目前文档中缺少它 但有一个issue https
  • 群体内正常化

    假设我们有以下数据集 import pandas as pd data apple red 155 apple green 102 apple iphone 48 tomato red 175 tomato ketchup 96 tomat
  • Ajax 无法与 jquery 一起使用 Flip!插入

    我正在尝试使用 FLIP 插件并通过 ajax 加载其内容 不过我遇到了问题 它只是不起作用 我可以看到 firebug 中发生的 post 事件 但当我在 FLIP 中填充 content 参数时 似乎没有任何变化 插入 下面是我的代码
  • ffmpeg 和 DVB 字幕缩放

    我尝试对视频中的 DVB 字幕进行硬编码 我设法对其进行硬编码 但它仍然错位 原因是字幕的分辨率为标清 720x576 而视频的分辨率为 1920x1080 因此 当我使用叠加时 字幕错位并位于左角 这是我的命令 ffmpeg canvas
  • Chrome 中的边框半径错误?

    我对 chrome 中的边框半径有疑问 这是我的代码 img border radius 24px border 2px solid c7c7c7 moz border radius 24px webkit border radius 24
  • 在Wpf应用程序中实现快捷键

    我是 wpf 应用程序的新手 我正在开发应用程序 我已经创建了一个菜单现在我想在快捷键 ctrl o ctrl n 等上功能菜单项事件 我该怎么做 请详细说明 你可以通过以下方式做到这一点 在 Xaml 文件中
  • 自定义损失问题:急切执行函数的输入不能是 keras 符号张量,但发现

    我使用tensorflow keras自定义损失 使用额外的输入数据来计算损失 的代码如下 inp Input shape inp seq len feature size w Input shape 1 code ommitted def
  • 使用 PHP Gettext 无需安装语言环境

    我一直在寻找国际化开源项目的选项 Gettext 似乎每个人都推荐 显然需要 安装在您的系统上 才能使用语言环境 看到这个note http www php net manual en book gettext php 91187PHP手册