php - 是否可以将 gettext 与来自 mysqli_query 的数据一起使用?

标签 php database mysqli gettext poedit

静态内容工作正常,但是当我使用时:

$r = mysqli_query($dbc,"select name from table");
while($row = mysqli_fetch_array($r)){
    echo gettext($row['name']);

}

Poedit 无法识别我完全理解的动态内容。

但是有解决方法吗?

最佳答案

gettext 的工作流程基于这样一个事实:您使用定义的函数调用标记源代码,例如gettext('要本地化的字符串')。该源代码可以自动解析,并且所有可本地化的字符串都可以提取到 POT 文件中。显然,正如您所说,如果您要本地化的字符串实际上不在源代码中,则这不起作用。在这种情况下,您需要手动桥接该提取步骤。

您真正需要做的就是生成一个 POT 格式的文件,其中包含所有字符串。使用一个简短的 PHP 脚本应该相对容易,该脚本读取数据库内容并将相关条目输出到 POT 文件中。由于 POT 是一种广泛支持的格式,因此有许多 PHP 库可以轻松地为您生成此输出;您大多只需要编写一个数据库查询并循环它。搜索您最喜欢的开源存储库,您会找到适合您需求的内容。

从那里您可以 concatenate将该 POT 文件复制到您的其他 POT 文件中,或者您可以将其保留为单独的翻译文件。您当然应该注意使用正确的 gettext 工作流程,以确保您的更改永远不会覆盖任何内容:

  1. 从数据库中提取最新的源字符串到 POT 文件
  2. initialise目标语言 PO 文件(仅限第一次)
  3. 对源进行更改时,重复 1.,然后使用 msgmerge 将更改同步到 PO 文件中
  4. 本地化 PO 文件(使用 Poedit 或其他工具)
  5. compile PO文件转MO文件

关于php - 是否可以将 gettext 与来自 mysqli_query 的数据一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29075374/

相关文章:

PHP session 不存储值

javascript - 在javascript或php中的Window Phone中打开Window store App

database - Oracle:处理 Flag 的最佳实践

mysql - 在另一台服务器上创建数据库的简化版本

php - mysql 查询是否无法正常工作

php - 如何使用字母数字字符串而不是整数作为 URL 中的 id?

php - 将 PHP 变量保存到文本文件

c++ - 如何使用 SQL 更新数据库 (MS Access .mdb) 中的数据

php - 从 MySQL 获取数据的更有效方法

php - 是否可以缩短 $mysqli->queries ?