Multijazycny web v PHP rychlo a jednoducho

Vytvorenie multijazycnej aplikacie je pre kazdy jeden kvalitnejsi web dnes samozrejmostou. Existuje viac sposobov ako to dosiahnut. Pokial samotna aplikacia nie je extremne rozsiahla alebo sa jedna ciste len o staticke stranky tak je mozne pouzit klonovanie s prekladom. Slovensky jazyk v sk adresari, anglicky v en a podobne. Co vsak pokial je nas web rozsiahly a k tomu s este dynamicky generovanym obsahom. Existuje na to pomerne jednoduchy sposob.

Písmo: A- | A+
Diskusia  (20)

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

SkryťVypnúť reklamu
SkryťVypnúť reklamu
SkryťVypnúť reklamu
Článok pokračuje pod video reklamou
SkryťVypnúť reklamu
Článok pokračuje pod video reklamou

}
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";

?>

SkryťVypnúť reklamu

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>

SkryťVypnúť reklamu

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 />

SkryťVypnúť reklamu

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.

Peter Akarkor

Peter Akarkor

Bloger 
  • Počet článkov:  39
  •  | 
  • Páči sa:  0x

Mojim domovom je miesto kde prave zijem ale vlastou navzdy zostane len jedna krajina. a mozno preto to tak trochu boli .....Kodex BlogeraFeedjit Live Website Statistics Zoznam autorových rubrík:  TutorialyNezaradeneZazitkySúkromnéPolitika

Prémioví blogeri

Marcel Rebro

Marcel Rebro

141 článkov
Post Bellum SK

Post Bellum SK

90 článkov
Adam Valček

Adam Valček

14 článkov
Milota Sidorová

Milota Sidorová

5 článkov
Roman Kebísek

Roman Kebísek

105 článkov
Juraj Hipš

Juraj Hipš

12 článkov
reklama
reklama
SkryťZatvoriť reklamu