我目前正在创建一个使用多种语言的网站。我显示单词/句子的方式是通过回显数组中的元素。现在它工作正常,如果元素在数组中,但它将显示“未定义索引” - 如果不是,则显示错误。所以,我必须一直将这些单词添加到数组中,我真的不想这样做。
因此,我想知道,是否可以制作类似
的内容如果不在数组中,请将'requested'元素添加到txt文件中。
或
如果未定义的错误添加到txt文件。
我现在正在做的事情的例子:
<?php echo $lang["Address"]; ?>
//Notice: Undefined index: Address in ...
所以,如果我可以将“地址”插入到txt文件中,那就太棒了。如果不可能,那么每次创建新文本时我都需要在数组中添加单词/句子。
答案 0 :(得分:0)
你可以这样检查。
if(isset($lang["Address"]))
{
echo $lang["Address"];
}
else
{
//else part
}
答案 1 :(得分:0)
@Maitray Suthat是对的。这是IF的较短版本。
echo 'Lorem ipsum dolor sit '.(isset($lang["Address"])?$lang["Address"]:'').', consectetur adipiscing elit.';
进一步阅读:http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary
更短:
echo 'Lorem ipsum dolor sit '.($lang["Address"]??'').', consectetur adipiscing elit.';
答案 2 :(得分:0)
最简单的翻译功能应该有所帮助:
function __translate($name, $currentLang = 'en') {
$path = sprintf("trans/%s.php", $currentLang);
if (!file_exists($path)) {
throw new Exception('No file for lang:' . $currentLang);
}
$lang = include($path);
if (isset($lang[$name])) {
return $lang[$name];
} else {
file_put_content($currentLang . '_errors.txt', "\n\r". $name, FILE_APPEND);
}
}
<?php
return ['address' => 'Your address'];
<?php
// we don't have translation for address
return [];
<?php echo __translate["Address"]; ?>
最终,您可以检查一些库以进行本地化。