gpt4 book ai didi

php - gettext 如何处理动态内容?

转载 作者:可可西里 更新时间:2023-10-31 22:07:21 26 4
gpt4 key购买 nike

在 php 中(或者通常是 gettext),gettext 在看到动态内容的变量时会做什么?

我想到了 2 个案例。

1) 假设我有 <?=$user1?> poked John <?=$user2?> .也许在某些语言中,单词的顺序是不同的。 gettext 是如何处理的? (不,我不是在构建 facebook,那只是一个例子)

2) 假设我在数据库中存储了一些类别。它们很少,但它们存储在数据库中。如果我这样做会发生什么 <?php echo gettext($data['name']); ?> ?我希望翻译人员也翻译这些类别名称,但是否必须在数据库中完成?

谢谢

最佳答案

您最好的选择是使用 sprintf()功能。然后你会使用 printf符号来处理字符串中的动态内容。这是我不久前在这里找到的一个函数,可以为您轻松处理这个问题:

function translate()
{
$args = func_get_args();
$num = func_num_args();
$args[0] = gettext($args[0]);

if($num <= 1)
return $args[0];

return call_user_func_array('sprintf', $args);

}

现在,例如 1,您希望将字符串更改为:

%s poked %s

您将输入到 translate() 中像这样的功能:

<?php echo translate('%s poked %s', $user1, $user2); ?>

你会解析出所有translate()与 poEdit 一起工作。然后翻译字符串 "%s poked %s"转换成你想要的任何语言,无需修改 %s字符串占位符。这些将在 translate() 输出时被替换分别与 user1 和 user2 函数。您可以在 sprintf() 上阅读更多内容在 PHP 手册中了解更高级的用法。

对于问题#2。您需要创建一个 poEdit 可以解析的包含类别名称的静态文件。例如misctranslations.php :

<?php

_('Cars');
_('Trains');
_('Airplanes');

然后让poEdit解析misctranslations.php .然后,您将能够使用 <?php echo gettext($data['name']); ?> 输出类别名称翻译。

关于php - gettext 如何处理动态内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1773023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com