一个用不同语言的页脚

时间:2014-06-12 16:39:53

标签: php

我有一个不同语言的网络。我为页脚做了一个包含。最简单的方法是为每种语言设置不同的页脚。但是,是否可以只使用一个页脚并更改每种语言中不同的几个句子?

在所有页面中都包括:

<?php include('footer.php'); ?>
然后,在包含只是改变不同的东西。类似的东西:

<footer> 

    <?php echo $text; ?> <br><br>

</footer>
</body>
</html>

<?php 
if ('<html lang="en">')
    $text = 'Some text in English';
elseif ('<html lang="fr">')
    $text = 'Français';
?>

(在每个页面中我都有html lang =)

使用不同语言设置页脚的更好方法是什么?

(我只是在学习php,所以请你帮我解决一下基础知识,从哪里开始)

3 个答案:

答案 0 :(得分:1)

你可以创造一个穷人的翻译功能:

function translate($sentence, array $vars = null, $lang = 'en') {
    static $table = array();
    if ( ! isset($table[$lang])) {
        $table[$lang] = require(ROOT."/lang/{$lang}.php");
    }
    $trans = isset($table[$lang][$sentence]) ? $table[$lang][$sentence] : $sentence;
    if ( ! empty($vars)) {
        $trans = strtr($trans, $vars);
    }
    return $trans;
}

然后,您可以创建一些语言文件,例如:

<?php
// ROOT/lang/de.php
return [
    'Welcome :name' => 'Willkommen :name',
    'Thank you'     => 'Danke',
];

然后在你的脚本中你可以翻译东西:

<header>
    <?php echo translate('Welcome :name', [':name' => 'Bob'], 'de') ?>
</header>

您可以只包含语言文件,然后使用该功能,而不是使用功能。

<?php
// some-page.php
$lang = require(ROOT."/lang/{$_SESSION['user.lang']}.php");
$name = $_SESSION['user.name'];
?>
<header>
    <?php echo str_replace(':name', $name, $lang['Welcome :name']) ?>
</header>

这需要你做更多的工作,但是如果你发现它更符合你的喜好那么好。

答案 1 :(得分:1)

好的,首先您需要为您希望支持的所有语言创建翻译文件。将它们存储在&#34; /lang/en.php"和&#34; /lang/fr.php"。

&#34;朗/ en.php&#34;

<?php
    return [
        "title" => "My site",
        "welcome" => "Welcome",
        "goodbye" => "Goodbye"
    ]
?>

&#34;朗/ fr.php&#34;

<?php
    return [
        "title" => "Mon site",
        "welcome" => "Bienvenue",
        "goodbye" => "Au revoir"
    ]
?>

接下来,在php页面中包含相应的语言文件:

&#34;的index.php&#34;

<?php
    $locale = $_SESSION['locale']; // this is "en" or "fr", depending on a choice the user made earlier
    $lang = require("/lang/$locale.php"); // load "/lang/en.php" or "/lang/fr.php"
    $user = $_SESSION['username']; // e.g. "Bart"
?>
<html>
    <head>
        <title><?php echo $lang['title']; ?></title>
    </head>
    <body>
        <?php include('header.php'); ?>
        <main>content</main>
        <?php include('footer.php'); ?>
    </body>
</html>

在页眉/页脚中,你也可以使用$ lang:

&#34;的header.php&#34;

<header>
    <p><?php echo $lang['welcome'] . ', ' . $user; ?></p>
</header>

了解您应该只在用户可以直接查看的页面中包含您的语言文件非常重要(例如,不要将其包含在像header.php这样的部分视图中)

答案 2 :(得分:0)

您可以设置包含以下语言的会话:

<?php
    session_start();
    $_SESSION['language'] = "EN";
?>

然后在页脚中:

<?php
    switch($_SESSION['language']) {
        case 'EN':
            $sentences['site_slogan'] = "This is your site slogan";
            $sentences['site_messag'] = "This is your site message";
        break;
        case 'FA':
            $sentences['site_slogan'] = "This is your site slogan in FA";
            $sentences['site_messag'] = "This is your site message in FA";
        break;
    }
    echo $sentences['site_slogan'];
    echo $sentences['site_messag'];