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
Related posts:
| 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 1 year ago
numpang lewat n lngsng tkp..!
about 1 year ago
Mangga kang..
about 1 year ago
langsung di coba nih…
about 1 year ago
Sip, ditunggu feedbacknya ya

Thx uda mampir
about 11 months ago
mantaf bro , sangat membantu
about 10 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 10 months ago
Sama-sama gan
makasi uda mampir dan say hi
about 6 months 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 6 months 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 6 months 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 6 months 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.
about 4 weeks ago
gan coba contohin tutorial yang pake database dunk..
ane Masih bingung nie.. hehe
maklum newbie…
about 3 weeks ago
hmmm nanti deh klo ada waktu bikin yg pake database, tapi dengan bantuan framework aja ya
about 1 week ago
mas bermaksud untuk menerapkan web dengan dua bahasa indonesia dan jepang kebetulan buat cms sendiri cara dan teknis percis seperti diatas namun untuk teks jepang dari query di database hanya tampil karakter ??? sedangkan hasil define di file lang.jp.php langsung bisa tampil baik, sedangkan seluruh field database sudah dibuat tipe utf-8 ketika diinput manual melalui phpmyadmin bisa tampil baik di phpmyadmin untuk header htm pada DOCTYPE sudah dibuat utf-8. namun tetap di web saya tetap karakter ??? yang tampil .
mohon pencerahan
about 1 week ago
apakah pas ambil querynya DB collationnya uda diset UTF-8 juga?
silahkan mampir ke sini http://www.adviesenzo.nl/examples/php_mysql_charset_fix/