Php 建立多语言网站模板的最有效方法
我正在建立一个英语/法语网站,想知道是否有这样一个工作的最佳实践Php 建立多语言网站模板的最有效方法,php,templates,multilingual,Php,Templates,Multilingual,我正在建立一个英语/法语网站,想知道是否有这样一个工作的最佳实践 复制网站,制作一个法文和英文文件夹,里面有合适的网站 使用PHP将内容与html标记交换。 例如,如果($lang=='en'): 使用php只交换内容,使两个html标记保持相同。到处都是if语句。这会对效率不利吗 如有任何其他建议,请使用模板系统。可能是最著名的PHP之一。模板系统不仅可以实现您想要实现的确切目的,还可以通过将显示代码与内容分离(这也允许您对许多性质类似的不同内容页使用相同的模板),从而使维护页面变得更加容易。
如有任何其他建议,请使用模板系统。可能是最著名的PHP之一。模板系统不仅可以实现您想要实现的确切目的,还可以通过将显示代码与内容分离(这也允许您对许多性质类似的不同内容页使用相同的模板),从而使维护页面变得更加容易。我们有一个适当的时间框架(如果)我们的网站走向国际,工作方式如下 文件夹结构
/
lang/
english/
images/
text/
dutch/
images/
text/
任何特定于语言的文本或图像都将直接从页面中删除,并替换为常量。例如,在登录屏幕上,我们进入
echo TEXT_LOGIN_WELCOME;
在/lang/english/text/login.php中定义为
define('TEXT_LOGIN_WELCOME', 'Welcome, please login:');
但是在/lang/dutch/text/login.php中,它被定义为
define('TEXT_LOGIN_WELCOME', 'Welcome, please login (in dutch):');
;-)
每个语言定义文件的名称与其所使用的页面完全相同,因此,当我们加载面向公众的页面时,我们只需要确定用户使用哪种语言,就可以包含相关的语言定义文件
这个系统的好处是,所有的语言信息都是集中的。当你需要添加一种新的语言时,只需复制主(英语?)文件夹,重命名它,将整个内容压缩,然后将其发送给翻译服务,发挥其神奇作用。当然,这个系统的缺点是随着语言和内容的增长而进行维护。。。如果有人对此有什么好主意的话,我很乐意听听
顺便说一句,如果您最终需要通过IP猜测用户的位置,您可能需要签出。作为最简单的方法,我建议您使用&catalogs(.po文件)。
著名的项目是。1-复制整个网站将迫使您在2个文件夹中重复每个代码润色:-[ 2-如果你是指
<?php if($lang=='en') { ?>
<p>English text</p>
<? } else { ?>
<p>Text français</p>
<? } ?>
英文文本
法语文本
此解决方案非常适合在同一页面中管理两种语言。但是你仍然有重复的标签 3-只更改内容,这才是真正的满足。
可能大量的if语句会影响php编译……我不知道。
无论如何,使用这种方法,文档可以更加简洁:
<?php
function interpreter($buffer) {
$pieces = explode('#', $buffer);
if (isset($_GET['lang'])) $begin=$_GET['lang'];
else $begin = 1; // 1 to display français, 2 to display english
$tot = count($pieces);
for ($i=$begin; $i<$tot; $i+=3) { // remove one language
unset($pieces[$i]); }
foreach ($pieces as $value) { // recompose the text
$output .= $value; }
return $output;
}
ob_start("interpreter");
?>
<a href="?lang=#1#2#">#Français#English#</a>
<p>#English text#Texte français#.</p>
<?php ob_end_flush() ?>
#英语文本#法语文本#
php编译后将解析ob\u start
和ob\u end\u flush
之间的文本。这意味着受影响的字符串来自echo语句,而不是
来自php include的内容也会受到影响。
但不是外部css或javascript 注意定界符
#
不是其他地方使用的字符。也许您更愿意替换为
|
或^
当然,将来您可以将此解决方案调整为3种或更多语言。但是如果您必须在大型网站的许多行中插入“第三语言翻译”,那么MatW的解决方案可能适合您。我应该提到的是,英语部分已经构建。是否有许多“如果”语句会明显降低我的网站速度吗?Smarty看起来很酷。我尝试构建自己的模板引擎。我正在寻找最好的方法使其成为多语言的。我认为,对于一个提供过多语言UI的网站来说,这可能很难。