Nasıl dilli web siteleri ile fiyatlar ile bu mini-php-çerçevesinde bu 'controller' dosyası temiz

1 Cevap php

Ben bir mini-framework birlikte sordum önceki sorulara çok iyi cevap katılarak Gettext veya Zend_Translate kullanmadan multilingual websites ile ilgilenir ile geldi gibi this one.

languages/lang.en.php (çok dilli içerik kaynağı):

<?php
$lang = array(
    'tagline_h2' => 'I create <a href="#content">websites</a>...',

languages/lang.es.php (başka dilde çok dilli içerik kaynağı):

<?php
$lang = array(
    'tagline_h2' => 'Creo <a href="#content">sitios webs</a>...',

common.php (içerik kaynağının kontrolör):

<?php
session_start();
header('Cache-control: private'); // IE 6 FIX

if(isSet($_GET['lang']))
{
$lang = $_GET['lang'];

// register the session and set the cookie
$_SESSION['lang'] = $lang;

setcookie("lang", $lang, time() + (3600 * 24 * 30));
}
else if(isSet($_SESSION['lang']))
{
$lang = $_SESSION['lang'];
}
else if(isSet($_COOKIE['lang']))
{
$lang = $_COOKIE['lang'];
}
else
{
$lang = 'en';
}

//use appropiate lang.xx.php file according to the value of the $lang
switch ($lang) {
  case 'en':
  $lang_file = 'lang.en.php';
  break;

  case 'es':
  $lang_file = 'lang.es.php';
  break;

  case 'tw':
  $lang_file = 'lang.tw.php';
  break;

  case 'cn':
  $lang_file = 'lang.cn.php';
  break;

  default:
  $lang_file = 'lang.en.php';
}

//translation helper function
function lang($translation) {
    global $lang;
    return $lang[$translation]; }

include_once 'languages/'.$lang_file;
?>

index.php (the output):

<div id="tagline">
    <h2><?php echo lang('tagline_h2'); ?></h2>
</div>

Benim lang.xx.php dosya ve benim index.php Tamam olduğumu düşünüyorum. Benim common.php hakkında oldukça emin değilim bir php acemi olduğum için. Ben orada unnecessary php code orada (ama her şey Tamam çalışır) düşünüyorum.

Herhangi bir öneriniz clean this code?

1 Cevap

Denetleyici:

<?php
session_start();
header('Cache-control: private'); // IE 6 FIX

function get_lang(){
    if(!empty($_GET['lang'])) return $_GET['lang'];
    if(!empty($_SESSION['lang'])) return $_SESSION['lang'];
    if(!empty($_COOKIE['lang'])) return $_COOKIE['lang'];
    return 'en';
}

function set_lang($lang){
    setcookie("lang", $lang, time() + (3600 * 24 * 30));
    $_SESSION['lang'] = $lang;
}

function get_lang_file($lang){
    $lang_file = "languages/lang.$lang.php";
    if(file_exists($lang_file)) return $lang_file;
    if($lang_file = get_lang_file('en')) return $lang_file;
    return false;
}

//translation helper function
function l($string){
    static $translation;

    if(!isset($translation)){
        $lang = get_lang();
        $lang_file = get_lang_file($lang);
        if($lang_file) set_lang($lang);
        $translation = include $lang_file;
    }

    return $translation[$string];
}

Dil dosyası:

<?php
return array(
    'tagline_h2' => 'I create <a href="#content">websites</a>...',

Görünüm:

<div id="tagline">
    <h2><?=l('tagline_h2'); ?></h2>
    <p><?=l('tagline_p'); ?></p>
</div>

Sen daha OOP kullanarak artırabilir.