1

我需要有关我的 php 代码的帮助。我不知道如何改进它。在我的网站上,查看器可以在波兰语(pl)和英语(en)之间选择语言,我想输入西班牙语(es),但我不知道该怎么做。

请帮忙。

<?php
$lang = $_COOKIE['lang'];
if (!is_null($_GET['lang']) && !empty($_GET['lang'])) {
    $lang = $_GET['lang'];
}

switch ($lang) {
    case 'pl':
        setcookie('lang', 'pl');
        include('pl.php');
        break;
    case 'en':
        setcookie('lang', 'en');
        include('en.php');
        break;
    case 'es':
        setcookie('lang', 'es');
        include('es.php');
        break;
}
?>
4

2 回答 2

0

那种乏味和重复的任务是使用框架的原因,但要保持简单:

目录结构

反式.php

<?php
class Trans
{
    public static function translate($key, $language = 'es')
    {
        $catalog = include __DIR__ . DIRECTORY_SEPARATOR . 'i18n' . DIRECTORY_SEPARATOR . $language . '.php';
        return (isset($catalog[$key]))?$catalog[$key]:$key;
    }
}

可翻译的.php

<?php
require 'Trans.php';

$lang = isset($_GET['lang'])?$_GET['lang']:'es';

echo Trans::translate('hello_world_from_cuba', $lang);

i18n/en.php 文件如下所示:

<?php
return array(
    'hello_world_from_cuba' => "Hello World From Cuba.",
);

i18n/es.php

<?php
return array(
    'hello_world_from_cuba' => "Hola Mundo desde Cuba.",
);

使用 Web 浏览器 ( ) 访问 translatable.php http://localhost/translator/translatable.php。CodeIgniter 和 Kohana 有更复杂的翻译器,但基本上与上面相同......在你的情况下,你从 cookie/session 获得语言,我从 $_GET 得到它,但仍在工作......

于 2013-11-07T20:31:01.070 回答
0

改进:

<?php
session_start();
$lang = isset($_SESSION['lang']) ? $_SESSION['lang'] : 'en';
if (isset($_GET['lang']) && in_array($_GET['lang'], array('en', 'esp', 'br')))
  $_SESSION['lang'] = $lang = $_GET['lang'];

include_once $lang.'.php';
var_dump($_lng['welcome']);

en.php

<?php
$_lng = array(
              'welcome' => 'Welcome',
              'save' => 'Save',
              'cancel' => 'Cancel',
              );

br.php

<?php
$_lng = array(
              'welcome' => 'Bem-vindo(a)',
              'save' => 'Salvar',
              'cancel' => 'Cancelar',
              );
于 2013-11-07T20:22:04.633 回答