Php 是否可以将gettext与来自mysqli_查询的数据一起使用?

Php 是否可以将gettext与来自mysqli_查询的数据一起使用?,php,database,mysqli,gettext,poedit,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(“要本地化的字符串”)。此源代码可以自动解析,所有可本地化字

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

$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库可以轻松地为您生成此输出;您主要只需要编写一个数据库查询并循环它。搜索你最喜欢的开源存储库,你会找到适合你需要的东西

从那里,您可以将该POT文件转换为其他POT文件,也可以将其作为单独的翻译文件保存。当然,您应该注意使用适当的gettext工作流,以确保您的更改不会覆盖任何内容:

  • 将数据库中最新的源字符串提取到POT文件中
  • 目标语言PO文件(仅第一次)
  • 对源进行更改时,重复1.,然后使用将更改同步到PO文件中
  • 本地化PO文件(使用Poedit或其他任何方式)
  • 将PO文件转换为MO文件