我正在建立一个英文/法文网站,并想知道是否有这样一份工作的最佳实践。
复制网站并使用适当的网站制作法语和英语文件夹。
使用PHP将内容与html标签交换。 例如。如果($郎== 'EN'):
使用php只交换保留html标签的内容。例如。如果声明到处都是。这对效率有害吗?
任何其他建议将不胜感激
答案 0 :(得分:5)
我们有一个框架,用于何时(如果)我们的网站走向国际化,就像这样......
文件夹结构;
/
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):');
- )
每个语言定义文件的名称与其用于的页面完全相同,因此当我们加载面向公众的页面时,我们只需要确定用户说的语言,我们可以包含相关的语言定义文件
这个系统的好处是所有的语言信息都是集中的。当你需要添加一种新语言时,只需复制main(english?)文件夹,重命名它,压缩整个文件并将其发送到翻译服务以实现他们的魔力。当然,这个系统的缺点是维护,因为语言和内容都在增长......如果有人对此有任何好主意,那么我很乐意听到它们!
顺便说一句,如果您最终需要通过IP猜测用户的位置,您可能需要查看geoIP。
答案 1 :(得分:4)
使用模板系统。 Smarty Template Engine可能是最着名的PHP之一。模板系统不仅可以满足您正在尝试完成的目的,而且还可以通过将显示代码与内容分离来更轻松地维护页面(这也允许您对许多不同的内容页面使用相同的模板类似的性质)。
答案 2 :(得分:2)
作为最简单的方法,我建议您使用i18n internationalization method& gettext目录(.po文件)。
着名的WordPress项目是using it as well。
答案 3 :(得分:0)
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_start
和ob_end_flush
之间的文本
这意味着受影响的字符串即将到来。来自echo语句,而不是在&lt; ?php?&gt;标签。
来自php的内容也包括受影响的IS
但不是外部的CSS或javascript。
保持注意分隔符#
不是其他地方使用的特征
也许您希望替换为||
或^^
当然,将来您可以将此解决方案改为3种语言或更多语言。但是如果你必须在大型网站的许多行中插入“第三语言翻译#”,那么MatW的解决方案可能适合你。