【问题标题】:Is it possible to use gettext with data from mysqli_query?是否可以将 gettext 与来自 mysqli_query 的数据一起使用?
【发布时间】:2015-05-18 11:33:35
【问题描述】:

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

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

}

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

但是有解决办法吗?

【问题讨论】:

    标签: php database mysqli gettext poedit


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-02
      • 2015-07-05
      • 2017-11-24
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      • 2018-08-25
      相关资源
      最近更新 更多