web developer's note
Solusi sederhana web dua bahasa (english|indonesia) dengan PHP
Ketika diminta membuat web site dengan struktur menu yang dwibahasa tanpa bergantung library, framework, maupun cms tertentu saya memiliki solusi sederhana yaitu dengan memanfaatkan variable constant PHP dengan bantuan fungsi define(); dan memanfaatkan session untuk menyimpan variable languagenya.
Misalnya kasusnya seperti berikut ini:
Struktur menu web terdiri dari: Home, About Me, News, Contact, Download
Kita ingin struktur menu tersebut tampil juga dalam bahasa indonesia bila link bahasa indonesia diklik,berikut previewnya.
English | Indonesian
Home | About Me | Contact | News | Download
Beberapa cara yang saya lakukan antara lain:
- membuat file utama yang menampung struktur menu tersebut misalnya “topmenu.php“
- membuat file language (en.php dan id.php) untuk menampung variable constant untuk menu.
- include fileĀ language ke “index.php”, tentunya dengan memberikan kondisi file language yang mana yang harus diinclude
Berikut kode file “topmenu.php”
<? include "langsession.php";?> <!-- main menu --> <a href="<?=$_SERVER['PHP_SELF']?>?lang=en"><?=ENG?></a> | <a href="<?=$_SERVER['PHP_SELF']?>?lang=id"><?=ID?></a><br /><br /> <a href="#"><?=HOME?></a> | <a href="#"><?=ABOUT?></a> | <a href="#"><?=CONTACT?></a> | <a href="#"><?=NEWS?></a> | <a href="#"><?=DOWNLOAD?></a>
Untuk file en.php
<? //language menu define(ENG,"English"); define(ID,"Indonesian"); //main menu define(HOME,"Home"); define(ABOUT,"About Me"); define(CONTACT,"Contact"); define(NEWS,"News"); define(DOWNLOAD,"Download"); ?>
Untuk file id.php
<? //language menu define(ENG,"Bahasa Inggris"); define(ID,"Bahasa Indonesia"); //main menu define(HOME,"Beranda"); define(ABOUT,"Tentang Saya"); define(CONTACT,"Kontak"); define(NEWS,"Berita"); define(DOWNLOAD,"Unduh"); ?>
Satu kode lagi yang menjadi triger semuanya bekerja yaitu langsession.php
<?
session_start();
if(empty($_SESSION['lang']) ){
$_SESSION['lang']='en';
}else if(isset($_REQUEST['lang'])){
$_SESSION['lang']=$_REQUEST['lang'];
}
switch($_SESSION['lang']){
case('en'):
include "lang/en.php";
break;
case('id'):
include "lang/id.php";
break;
default:
include "lang/en.php";
break;
}
?>
Demo : Demo Web Dua Bahasa
Dowload Code: Code Web Dua Bahasa
| Print article | This entry was posted by azul on 27, February 2009 at 11:11:47, and is filed under PHP, Tutorial. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |
about 10 months ago
numpang lewat n lngsng tkp..!
about 10 months ago
Mangga kang..
about 8 months ago
langsung di coba nih…
about 8 months ago
Sip, ditunggu feedbacknya ya

Thx uda mampir
about 5 months ago
mantaf bro , sangat membantu
about 4 months ago
Trima kasih dah nulis artikel ini. sy web programmer newbie merasa sangat terbantu soal pilihan multilingual di web php. keep write nice post gan. ^_^
about 4 months ago
Sama-sama gan makasi uda mampir dan say hi
about 3 weeks ago
thank om azul.. MANTAP.. aq newbie
boleh betanya kah om..
seandai nya kata-kata ( kalimat /paragraf ) yang di define banyak..
baik apa tidak om..
about 3 weeks ago
sebanyak apa? mengandung html ga kalimat/paragraf yg di-define-nya?
solusi ini cocok untuk web beberapa bahasa yg mana bahasa yg berubah itu seperti label field, title menu, notifikasi/warning sistem/server dsb.
bila konten yg ingin di-multibahasakan sebaiknya menggunakan database,
define variable dlm kondisi tertentu lebih ringan dibandingkan melakukan koneksi dan retrieve data ke database.
senang bisa membantu

about 3 weeks ago
jadi gini om..
aq ditawarin job.buat web yang 2 bahasa..
kira2 enak nya pake triger punya om apa menggunakan database.( aq gak tw gimana kalo pake database )
web nya c paling berisi text tentang informasi aja c..
tapi masih lom pasti c job nya,lg menuggu kepastian nya.
about 3 weeks ago
Oh gitu, mungkin ane bisa ikut bantuin proyeknya bro
gini bro teknik dua bahasa ini hanya menyediakan dua variable session yg di-define sblmnya ya trigger yg mengubah bahasanya adalah variable $_GET['lang'] beda loh pengertiannya dengan trigger database.
Klo untuk yg database si prinsipnya sama saja tinggal sediakan dua field yg berbeda untuk suatu entri
misalnya pada kasus tabel posting berikut:
Tar tinggal dibedakan saja field yg di-retrieve ketika ganti bahasa
Klo yg bro maksud menggunakan trigger di databasenya bila user ingin ganti bahasa ane rasa ga perlu pake trigger di databasenya, tar malah makin berat websitenya.