Php 构建多语言网页的最佳方法(避免修改重复代码)是什么

Php 构建多语言网页的最佳方法(避免修改重复代码)是什么,php,multilingual,Php,Multilingual,避免修改重复代码以构建多语言网页的最佳方法是什么? 我知道如何在不修改CSS和Javascript文件的情况下构建多语言网页。 但是我想不出一个简洁的HTML和Php文件解决方案。因为如果我有每种语言的HTML或Php文件,例如,如果我添加一个额外的div或其他元素,我就必须修改每种语言。 我在想这样的东西: <div id="multilingual div"> <p><?php echo($multilingual-paragraph); ?></p

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

<div id="multilingual div">
<p><?php echo($multilingual-paragraph); ?></p>
</div>
$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>
<h1><?php echo welcomeMessage; ?></h1>
所以,即使我修改了这些元素,我也只会修改一次,因为其他语言的文本将从变量中显示出来

我不懂Php,所以我不知道如何告诉Php根据语言显示不同的变量,我认为这与IF条件有关

这是创建多语言网页的好方法还是有其他方法


正如你所说,有了php和html语言文件,一种方法是这样:

<div id="multilingual div">
<p><?php echo($multilingual-paragraph); ?></p>
</div>
$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>
<h1><?php echo welcomeMessage; ?></h1>

正如您所说,您有php和html语言文件,一种方法是这样:

<div id="multilingual div">
<p><?php echo($multilingual-paragraph); ?></p>
</div>
$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>
<h1><?php echo welcomeMessage; ?></h1>

查看函数。您实际上不需要为不同的语言构建不同的文件。尽管如此,您仍需要处理翻译文件。

查看该函数。您实际上不需要为不同的语言构建不同的文件。尽管如此,您仍需要处理翻译文件。

您可以为输出消息实现常量解决方案。使用,您可以在缓存中存储多条消息,并根据您正在查看的页面加载它们。虽然这可能不是一个简单的解决方案,但您需要了解php

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

apc_constants_define('en',array('welcomeMessage'=>'Welcome!'));
apc_constants_define('es',array('welcomeMessage'=>'Bienvenidos!'));
apc_constants_define('de',array('welcomeMessage'=>'Willkommen!'));
通过AJAX/select表单,您可以允许用户选择他们想要查看页面的语言。 此语言将存储在会话中:

$_SESSION['language'] = 'en';
接下来,在每个页面的顶部,您应该检查会话简单开关状态,并相应地从缓存中加载常量

apc_load_constants($_SESSION['language']);
然后,您的html页面将如下所示:

<div id="multilingual div">
<p><?php echo($multilingual-paragraph); ?></p>
</div>
$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>
<h1><?php echo welcomeMessage; ?></h1>

在我看来,这是使网站国际化的最有效的方法,并且有一个易于维护的系统,当您想将页面翻译成罗马尼亚语时,不需要深入研究代码。

您可以为输出消息实现常量解决方案。使用,您可以在缓存中存储多条消息,并根据您正在查看的页面加载它们。虽然这可能不是一个简单的解决方案,但您需要了解php

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

apc_constants_define('en',array('welcomeMessage'=>'Welcome!'));
apc_constants_define('es',array('welcomeMessage'=>'Bienvenidos!'));
apc_constants_define('de',array('welcomeMessage'=>'Willkommen!'));
通过AJAX/select表单,您可以允许用户选择他们想要查看页面的语言。 此语言将存储在会话中:

$_SESSION['language'] = 'en';
接下来,在每个页面的顶部,您应该检查会话简单开关状态,并相应地从缓存中加载常量

apc_load_constants($_SESSION['language']);
然后,您的html页面将如下所示:

<div id="multilingual div">
<p><?php echo($multilingual-paragraph); ?></p>
</div>
$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>
<h1><?php echo welcomeMessage; ?></h1>

在我看来,这是将网站国际化的最有效方法,并且有一个易于维护的系统,当您想将页面翻译成罗马尼亚语时,不需要深入研究代码。

我尝试了以下方法,但没有成功,我想我做错了。首先需要下载APC库作为dll文件,并配置php.ini文件以加载它。您可以从手册/pear网站上找到可下载的文件。如果你在那里找不到它,可以在谷歌上搜索它,甚至在堆栈溢出上搜索它。@janoChen,作为旁注,我建议你也阅读APC的文档,你可能会发现它很有见地,因为它需要的不仅仅是复制和粘贴代码。我尝试了以下方法,但不起作用,我认为我做错了。首先需要下载APC库作为dll文件,并配置php.ini文件以加载它。您可以从手册/pear网站上找到可下载的文件。如果您在那里找不到它,请运行google搜索,甚至在堆栈溢出上运行。@janoChen,作为旁注,我建议您也阅读APC的文档,您可能会发现它很有见地,因为它需要的不仅仅是复制和粘贴代码。