如何建立一个多语言的PHP网站?

时间:2010-06-29 23:03:37

标签: php mysql ajax

我正在使用php和mysql开发一个网站。我想知道......处理多语言支持的好方法是什么?我希望用户能够从下拉列表中进行选择并选择他们的语言。然后除了用户编写的内容之外的所有内容(内容,按钮,链接)都是用他们的语言。

有什么好方法可以解决这个问题?用饼干?会话?

5 个答案:

答案 0 :(得分:2)

这样的事情很好:

<强> Langs.php

<?

// check if language switch as been set at url var
if ($_GET["lang_change"]) {

    $_SESSION['session_name']["lang"] = $_GET["lang_change"];

}


// set value to lang for verification
$active_lang = $_SESSION['session_name']["lang"];


// verify $lang content and set proper file to be load
switch ($active_lang) {

    case 'prt':
        $lang_file = 'prt.php';
        break;

    case 'gbr':
        $lang_file = 'gbr.php';
        break;

    case 'fra' :
        $lang_file = 'fra.php';
        break;

    case 'esp' :
        $lang_file = 'esp.php';
        break;

    case 'deu' :
        $lang_file = 'deu.php';
        break;

    default:
        $lang_file = 'gbr.php';

}


// load proper language file for site presentation
include_once ('$lang_file);

?>

LANG GBR FILE(gbr.php)

define("LANG_PAGETITLE_HOMEPAGE", 'Homepage');
define("LANG_BTN_KNOW_MORE", 'know more');

更改语言的方法(网址样本)

<a href="index.php?lang_change=gbr" title"">USE ENG</a>

基本上,你有包含常量的PHP文件,每个文件都有一个lang。

点击后你设置了一个url var(例如:lang_change = lang)。

这将强制页面重新加载,并且langs.php文件包含在index.php的顶部将加载所选语言...

如果您需要更多解释,请发表评论,我会向您发送工作样本!

Ps:此代码中显示的会话变量对于与登录系统的交互非常有用,或者只是为了避免使用url参数......

答案 1 :(得分:1)

  • 保存标有实际语言的所有动态内容
  • 使用gettext()作为按钮等。这个比使用数组包含.php文件要快得多

答案 2 :(得分:1)

首先,您必须动态添加每种语言的所有值。 在向您的网站添加动态内容时,您可以将 languageId 添加到数据库中表的每个字段。然后,您可以代表 languageId 显示前端的内容。

答案 3 :(得分:0)

我认为考虑使用具有国际化支持的框架是个好主意。

使用CakePHP http://bakery.cakephp.org/articles/view/p28n-the-top-to-bottom-persistent-internationalization-tutorial

查看此示例

答案 4 :(得分:0)

我认为以下内容将帮助您了解开发它的基本概念。

在网站中,特别是多语言网站应具有用户界面/模板,其中硬编码标签应链接到变量。应使用正确的语言值加载这些变量。这可以通过包含包含该特定语言的值的语言文件来轻松完成。您可以在文件夹中包含任意数量的语言文件。

您需要在php中编写脚本,因为每当用户从下拉列表中选择语言时,页面都可以使用语言会话重新加载。另一个php脚本,用于获取此会话数据中的所选语言,并在模板/ UI中包含相关语言文件。

可以使用相同的方法从表中获取内容数据,在所有MySQL查询中,您可以使用内容表中的其他语言类型查找。这样就可以加载该文件。

SELECT * FROM posts WHERE lang='en' AND featured = 1

在许多情况下,语言需要相应地设置HTML和CSS,以使语言在浏览器内完美呈现。这意味着,您还可以在HTML中定义语言,在CSS中定义字体和方向(从右到左或从左到右)。

我建议您阅读以下内容,以获取有关如何操作的更多信息。 http://www.stylusinc.com/website/multilanguage_support.htm