我正在测试一种通过每种语言的.ini文件运行翻译的方法。可在此处找到测试站点,原谅URL:www.exodus-squad.com
但是,在右侧框中我想显示以下文字:
随着减少排放的动力不断加快, 电动和混合动力技术正在向中心舞台靠拢。在 2015年,发动机博览会将再次举办电气& amp;混合动力 亭!
但是短语2015
和Engine Expo
都是PHP配置文件中的变量。目前,我的.ini文件中的部分如下所示:
[pavilion]
texta = "With the drive to reduce emissions continuing to gather pace, electric and hybrid technologies are moving closer to centre stage. In "
textb = ", "
textc = " will once again host the Electric & Hybrid Pavilion!"
我的页面代码如下:
<p>
<?=$i['pavilion']['texta'];?>
<?=$year?>
<?=$i['pavilion']['textb'];?>
<?=$show?>
<?=$i['pavilion']['textc'];?>
</p>
然而,突破并回到文本段落是一个问题,但是,特别是当涉及到其他语言在不同的地方使用逗号,或重新排列的单词等时。理想情况下,我希望能够做到像这样的东西:
texta = "With the drive to reduce emissions continuing to gather pace, electric and hybrid technologies are moving closer to centre stage. In " . $year . ", " . $show . " will once again host the Electric & Hybrid Pavilion!"
或者:
texta = "With the drive to reduce emissions continuing to gather pace, electric and hybrid technologies are moving closer to centre stage. In {$year}, {$show} will once again host the Electric & Hybrid Pavilion!"
但两者都不是有效的语法。有谁知道这是否可行?
修改
收到几个答案后,我的.ini文件现在看起来像这样:
texta = "With the drive to reduce emissions continuing to gather pace, electric and hybrid technologies are moving closer to centre stage. In %d, %s will once again host the Electric & Hybrid Pavilion!"
我的代码如下:
<?=sprintf($i['pavilion']['texta'], $year, $show); ?>
但这只是打印后的变量?
随着减少排放的努力不断加快,电动和混合动力技术正在向中心舞台靠拢。在%d中,%s将再次成为电子&amp; Hybrid Pavilion!2015Engine Expo
编辑#2
这是我的parse_ini_file()
代码:
$find_lang = $_SERVER['REQUEST_URI'];
if (strpos($find_lang, '/fr/') !== false) {
$lang = 'fr';
}
else if (strpos($find_lang, '/de/') !== false) {
$lang = 'de';
}
else if (strpos($find_lang, '/it/') !== false) {
$lang = 'it';
}
else {
$lang = 'en';
}
$i = parse_ini_file($lang . ".ini", true);
编辑#3
我甚至尝试稍微破解代码,因此首先创建$texta
变量,然后通过sprintf()
回显到页面,但输出保持完全相同:
<?php
$texta = $i['pavilion']['texta'];
echo sprintf($texta, $year, $show);
?>
作品!谢谢大家。
答案 0 :(得分:1)
您可以使用sprintf
,它可以让您将占位符放入文本中,以后可以填写。它可以做得更多,它真的很有用......你甚至可以使用带编号的占位符,这样它们的顺序就可以改变 - 非常方便翻译。
例如:
texta = "Blah Blah Blah %d Blah Blah %s"
然后在你的代码中:
<p>
<?=sprintf($i['pavilion']['texta'], $year, $show)?>
</p>
答案 1 :(得分:1)
您可以使用字符串格式:http://www.php.net/sprintf
text="First part %s second part %s last part";
然后在你的echo文件中:
<?php echo sprintf($i['pavilion']['text'], $year, $show); ?>