2010-02-13 47 views
1

建立多语言网页的最佳方式(避免修改重复代码)是什么? 我知道如何在不修改CSS和Javascript文件的情况下构建多语言网页。 但我想不出一个整洁的HTML和PHP文件解决方案。因为如果我有每种语言的HTML或Php文件,我将不得不修改每个语言,例如,如果我添加一个额外的div或其他元素。 我想有这样的事情:建立多语言网页的最佳方式(避免修改重复代码)

<div id="multilingual div"> 
<p><?php echo($multilingual-paragraph); ?></p> 
</div> 

(所以,即使我修改这些元素,我只是做了一次,因为这是在其他语言的文本将从变量显示)。

我不知道PHP的,所以我不知道该怎么告诉PHP根据语言来显示不同的变量(我认为这是与IF条件)

这是一个很好的创建多语言网页的方式还是其他方法?

(所以用这个

回答

2

退房的gettext()功能,你真的不需要为不同的语言构建不同的文件,但是,你必须努力处理翻译文件

1

正如你所说,你有PHP和HTML语言文件,一种方法是这样的:。

$lang = ''; 

switch ($lang_file) 
{ 
    case 'en.php': $lang = 'whatever'; break; 
    case 'fr.php': $lang = 'whatever'; break; 
    // etc 
} 

<div id="multilingual div"> 
<p><?php echo $lang; ?></p> 

// or you may include files 
<p><?php include_once ($lang); ?></p> 
</div> 
2

你可以实现输出消息的常量解决方案使用APC's cache functions,你可以在缓存中存储多个消息并加载他们根据你正在查看的网页(这可能不是一个简单的解决方案,但你需要知道这个PHP)。

这将允许您使用缓存中每种语言的值来维护一个数组。例如:

apc_constants_define('en',array('welcomeMessage'=>'Welcome!')); 
apc_constants_define('es',array('welcomeMessage'=>'Bienvenidos!')); 
apc_constants_define('de',array('welcomeMessage'=>'Willkommen!')); 

通过AJAX /选择窗体,您可以允许用户选择他们想要查看您的页面的语言。 这种语言将被存储在一个会话内:

$_SESSION['language'] = 'en'; 

接下来,在每个页面的顶部,您应检查会话(简单的switch叙述),并从缓存中加载相应的常量。

apc_load_constants($_SESSION['language']); 

那么你的HTML页面看起来像这样:

<h1><?php echo welcomeMessage; ?></h1> 

这是,在我看来,国际化你的网站的最有效的方式,并与易维护的系统中,没有按”当你想把页面翻译成罗马尼亚语时,你需要深入研究代码。

+0

我尝试了以下,但它没有工作,我认为我做错了。 <?php apc_define_constants('en',array('welcomeMessage'=>'Welcome!')); apc_define_constants('es',array('welcomeMessage'=>'Bienvenidos!')); apc_define_constants('de',array('welcomeMessage'=>'Willkommen!“)); $ _SESSION ['language'] ='en'; apc_load_constants($ _ SESSION ['language']); ? >

alexchenco

+0

你首先需要下载APC库,作为一个dll文件,并配置你的php.ini文件来加载它。你可以从手册/梨网站找到可下载的文件。如果你不能在那里找到它,运行谷歌搜索它,甚至在堆栈溢出。 – Gal

+0

@janoChen作为一个旁注,我建议你也阅读APC的文档,你可能会发现它很有洞察力,因为它不仅仅是复制和粘贴代码。 – Gal