Postup ktory budem popisovat je za pouzitia PHP kodu (proceduralneho) a Mysql databazy. Pokial v aplikacii pouzivate OOP (objekt oriented programming) + PHP 5 verziu , je mozne pouzivat v jednotlivych jazykovych suboroch funciu DEFINE.
Ako jednoducho vsak dosiahneme multijazycnu aplikaciu? Ako prvy si vytvorime subor: language.php
Subor language.php bude obsahovat nasledovny kod:
<?php
$lng_sk = "Slovensky";
$lng_en = "English";
$lng_de = "Deutch";
ob_start();
$default = "en"; // defaultny bude english..
if( isset( $_GET['lang'] ) )
{
require $_GET['lang'] . ".php";
setcookie("saveLang", $_GET['lang'], time()+3600*24*30, '/'); // cookie expiruje za 1 mesiac
}
else
if( isset($_COOKIE["saveLang"]) )
{
require $_COOKIE["saveLang"] . ".php";
}
else
if (!isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
require $default .".php";
}
else
{
$language = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$language = substr($language,,2);
if( ( $language == "sk") or ( $language == "de") or ( $language == "en") )
{
require $language. ".php";
}
else
{
require $default . ".php";
}
}
ob_end_flush();
?>
Ako dalsi krok si vytvorime jednotlive jazykove subory:
en.php
<?php
$lng = "en";
$lng_home = "Home";
$lng_about = "About";
$lng_contact = "Contact";
?>
sk.php
<?php
$lng = "sk";
$lng_home = "Hlavna Stranka";
$lng_about = "O nas";
$lng_contact = "Kontakt";
?>
Nasledujuci krok bude implementacia suboru language.php. Subor mozete implementovat do index.php alebo kdekolvek inde chcete, vhodne je implementovat ho do suboru header.php a bude sa vam zobrazovat vsade.
<?php
include "language.php";
?>
Ako teraz budeme menit jazyky na webe?
<a href="http://www.vasweb.sk/index.php?lang=en"><? echo $lng_en; ?></a>
<a href="http://www.vasweb.sk/index.php?lang=sk"><? echo $lng_sk; ?></a>
(jazyk sa bude menit na pozicii index.php. Pokial chcete aby sa zmenil na danej stranke kde sa navstevnik nachadza pouzijeme : <a href="<?php $_SERVER['PHP_SELF'] ?>?lang=en"><? echo $lng_en; ?></a>
alebo za pozitia obrazkov:
<a href="http://www.vasweb.sk/index.php?lang=en"><img src="anglickavlajka.gif" border="0"></a>
<a href="http://www.vasweb.sk/index.php?lang=sk"><img src="slovenskavlajka.gif" border="0"></a>
na vsetkych strankach moznost zmeny:
<a href="<?php $_SERVER['PHP_SELF'] ?>?lang=en"><img src="anglickavlajka.gif" border="0"></a>
Ako teraz implemetujeme napr. hlavne menu:
<a href="<?php $_SERVER['PHP_SELF'] ?>?id=home"><?php echo $lng_home; ?></a> <br />
<a href="<?php $_SERVER['PHP_SELF'] ?>?id=about"><?php echo $lng_about; ?></a> <br />
<a href="<?php $_SERVER['PHP_SELF'] ?>?id=contact"><?php echo $lng_contact; ?></a> <br />
Akonahle zmenite jazyk nazvy sa vam budu menit podla jazyka. Tento sposob je vsak dobry akurat pre menu resp nazvy jednotlivych sekcii. Aby sme mali web kompletne vo viacerych jazykovych mutaciach pouzijeme MYSQl.
clanky mame v databaze v tabulke ktora vyzera asi takto (Jednoduchy priklad)
tabulka clanky
id (INT) ------- Auto Increment ID
desc(TEXT) ------ text vasho clanku
lang(VARCHAR) ------ jazyk (sk)
cid(INT) ----- (id clanku, toto cislo je rovnake pre kazdu jazykovu mutaciu, cize dalsi zapis bude vyzerat tak ze zmeny budu v id,desc,lang ale cid sa bude rovnat tej istej hodnote ako predosly jazyk)
Samotny select clanku potom prevadzame velmi jednoducho
<?
$hometext=mysql_query(mysql_fetch_array("SELECT desc FROM clanky WHERE lang='$lng' AND cid='1'";$vasespojeniesdatabazou));
$homeclanok="$hometext[desc]";
?>
vlozime clanok do stranky:
<? echo $homeclanok; ?>
Toto prevedenie je len velmi jednoduchy priklad aby ste mali predstavu ako je mozne publikovat s kompletnym prekladom bez potreby klonovania kompletnej aplikacie. Samotny select si prevadzajte podla toho akym sposobom je progamovana vasa aplikacia. Uvadzam tu len uplne jedoduchy sposob pre predstavu.