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

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

}

Poedit无法识别我完全理解的动态内容。
但有办法解决这个问题吗?

最佳答案

gettext的工作流程基于这样一个事实,即用定义的函数调用标记源代码,例如gettext('string to localise')。此源代码可以自动解析,所有可本地化字符串都可以提取到pot文件中。显然,正如您所说,如果您想要本地化的字符串实际上不在源代码中,那么这就不起作用。在这种情况下,您需要手动桥接提取步骤。
您真正需要做的是生成一个pot格式的文件,其中包含所有字符串。用一个简短的php脚本来读取数据库内容并将相关条目输出到pot文件中,这应该比较容易。由于pot是一种广受支持的格式,因此有许多php库可以轻松地为您生成此输出;您通常只需要编写一个数据库查询并围绕它循环。搜索你最喜欢的开源存储库,你会发现一些适合你需要的东西。
从那里你可以concatenate那个pot文件到你的另一个pot文件,或者你可以把它作为一个单独的翻译文件保存。您当然应该注意使用正确的gettext工作流,以确保您不会用更改覆盖任何内容:
将数据库中最新的源字符串提取到pot文件中
initialise目标语言po文件(仅第一次)
对源代码进行更改时,重复1.,然后使用msgmerge将更改同步到po文件中。
本地化po文件(使用poedit或其他方式)
compile将采购订单文件转换为生产订单文件

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

10-09 22:22