我用2种语言制作我的网站。对于该语言,我只需加载一个包含以下结构的数组的php文件:
$translation = array(
"username" => "Username",
"something_else" => "Something else"
);
然后在我的主网站内,而不是回显Username
我回应$translation["username"]
,它适用于所有语言。现在我想知道,通常一个字符串分为两部分。目前我这样做:
"amount_of_something" => array("You have logged in","times.")
然后我使用echo $translation["amount_of_something"][0] . " 5 ". $translation["amount_of_something"][1];
检索它。
现在,对于实际的问题:最后一个有更短的方法吗?在jQuery插件中,我遇到了以下语法:
maxlength: $.validator.format("Maximum {0} characters allowed.")
我想这是在这个例子中使用额外的功能完成的。在php中是否有内置的方法(因为php有一个bazillion数组函数),否则最有效的方法是什么?
我认为使用函数会很容易,但是由于可能的变量数量(它们之间的值可能超过1),我不太确定它是否值得我现在使用的方法
我希望我的问题有点清楚,如果不是,请告诉我问题的哪一部分不是。
答案 0 :(得分:3)
我相信php sprintf是一个相关的功能,在这里提及
看看他们的例子。
<?php
$num = 5;
$location = 'tree';
$format = 'There are %d monkeys in the %s';
echo sprintf($format, $num, $location);
?>
您可以使用类似方法解决问题。很多php框架在你的情况下使用sprintf
。
答案 1 :(得分:2)
拥有多种语言的最简单方法是:
$lang = array();
$lang['Example'] = "Welcome $User";
然后,嵌入您的网站,如:
<p> echo $lang['Example']; </p>
您可以设置Cookie,并根据设置的Cookie包含包含数组的其他文件。
if(isset($_COOKIE['german'])) {
$lang = "languages/german.php";
} else {
$lang = "languages/english.php";
}
include_once($lang);
答案 2 :(得分:1)
您可能寻找的功能是sprintf。要使用您的示例,请将数组转换为字符串:“您已登录%d次”。