我正在将我的网站翻译成不同的语言,我有超过130页,所以我想通过一个替换关键字的函数传递我的.php文件
IE:配件=อุปกรณ์
这是英语到泰语。
我可以使用我的方法让它工作但是...我在这些页面中显然有php(显然),输出只显示html而不执行php
是否有一个标题方法或我必须在我的php页面开头传递的东西..
这是我用来查找文本结果的函数,然后从我的php文件中替换它们。
<?php
// lang.php
function get_lang($file)
{
// Include a language file
include 'lang_thai.php';
// Get the data from the HTML
$html = file_get_contents($file);
// Create an empty array for the language variables
$vars = array();
// Scroll through each variable
foreach($lang as $key => $value)
{
// Finds the array results in my lang_thai.php file (listed below)
$vars[$key] = $value;
}
// Finally convert the strings
$html = strtr($html, $vars);
// Return the data
echo $html;
}
?>
//这是lang_thai.php文件
<?php
$lang = array(
'Hot Items' => 'รายการสินค้า',
'Accessories' => 'อุปกรณ์'
);
?>
答案 0 :(得分:1)
许多框架使用函数进行翻译,而不是在使用.pot文件后进行替换。该功能如下所示:
<h1><?php echo _('Hello, World') ?>!</h1>
因此,如果它是英语而未翻译,则该函数只返回未翻译的字符串。如果它被翻译,那么它将返回翻译的字符串。
如果你想继续你的路线,这肯定会更快实现,试试这个:
<?php
function translate($buffer) {
$translation = include ('lang_tai.php');
$keys = array_keys($translation);
$vals = array_values($translation);
return str_replace($keys, $vals, $buffer);
}
ob_start('translate');
// ... all of your html stuff
您的语言文件是:
<?php
return array(
'Hot Items' => 'รายการสินค้า',
'Accessories' => 'อุปกรณ์'
);
一个很酷的事情是include
可以返回值!所以这是从文件传递值的好方法。 ob_start也是一个带回调的输出缓冲区。所以当你将所有html回显到屏幕之后,就会在它实际显示到屏幕之前将所有数据传递给translate
函数然后我们翻译所有数据!