1

我正在用 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 个值),我不太确定是否值得我现在使用的方法这样做。

我希望我的问题有点清楚,如果不是,请告诉我问题的哪一部分不是。

4

3 回答 3

3

我相信php sprintf是在这里提到的相关功能

看看他们的例子。

<?php
$num = 5;
$location = 'tree';

$format = 'There are %d monkeys in the %s';
echo sprintf($format, $num, $location);
?>

你可以用类似的方法解决你的问题。很多 php 框架sprintf在你的情况下使用。

于 2013-08-30T22:20:23.093 回答
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);
于 2013-08-30T22:25:32.677 回答
1

您可能会寻找的功能是sprintf。要使用您的示例,您可以将数组转换为字符串:“您已登录 %d 次”。

于 2013-08-30T22:24:41.473 回答