Saya dan tim kandangbuaya kali ini kebagian ‘tugas negara’, untuk membuat website resmi Elins UGM yang baru. Sebenarnya dari pihak Prodi hanya menginginkan untuk dibuat satu bahasa saja. Namun saya mengusulkan untuk dibikin multi bahasa. Dan akhirnya dibuat dua bahasa, Indonesia dan English.
Kami coding menggunakan CodeIgniter PHP Framework, dimana CI sudah support untuk internasionalisasi multi bahasa. Nah, bagaimana kita mengaplikasikannya? Disini, kita menggunakan Cookie untuk menyimpan seting bahasa dari user. Jadi user bisa memilih bahasa Indonesia maupun Bahasa Inggris(English) dan kemudian disimpan di Cookie. Nah setiap halaman diload, program akan mengecek dulu, bahasa apa yang dipakai, kemudian baru menampilkan tampilan bahasa yang cocok. Default bahasa adalah bahasa Indonesia. Berikut adalah contoh source code yang kami gunakan. Ini hanya contoh saja. Jadi masih butuh banyak sekali pengembangan.
<?php
// Controller I
class Content extends Controller {
public function __construct() {
parent::Controller();
// file-file ini sebaiknya di load di fitur autoload
$this->load->helper('url');
$this->load->helper('cookie');
$this->load->library('language');
if(get_cookie('bahasa') === 'en') {
$this->config->set_item('language', 'english');
$this->load->model('english', 'current_language');
}
else {
$this->config->set_item('language', 'indonesia');
$this->load->model('indonesia', 'current_language');
set_cookie(array('name' => 'bahasa',
'value' => 'in',
'expire' => '8650',
'prefix' => ''));
}
}
public function index() {
// Mengambil data dari language file di application/language
$this->lang->load('d3ptzz');
$data['title'] = $this->lang->line('title');
$data['hello'] = $this->lang->line('hallo');
// Mengambil data dari model
$data['dari_db'] = $this->current_language->get_data();
$this->load->view('view_multibahasa', $data);
}
}
//------------------------------------------------------
?>
<?php
//Controller II
// Controller ini fungsinya cuma merubah cookie['bahasa] sesuai request.
// Setelah selesai merubah cookie['bahasa'], terus di redirect ke halaman semula
class Language_setter extends Controller {
public function __construct() {
parent::Controller();
$this->load->helper('cookie');
$this->load->helper('url');
}
public function index() { }
public function set_to($language) {
if(strtolower($language) === 'english') {
$lang = 'en';
}
else {
$lang = 'in';
}
set_cookie(array('name' => 'bahasa',
'value' => $lang,
'expire' => '86500',
'prefix' => ''));
if($this->input->server('HTTP_REFERER'))
redirect($this->input->server('HTTP_REFERER'));
}
}
//------------------------------------------------------
?>
<?php
// Model I
class English extends Model {
public function __cosntruct() {
parent::Model();
}
public function get_data() {
// Pura-puranya disini dilakukan query ke database
// dan ini adalah hasilnya :
return 'I am data from database fetched via English model';
}
}
//------------------------------------------------------
?>
<?php
// Model II
class Indonesia extends Model {
public function __cosntruct() {
parent::Model();
}
public function get_data() {
// Pura-puranya disini dilakukan query ke database
// dan ini adalah hasilnya :
return 'Saya data dari database di ambil via model "Indonesia"';
}
}
//------------------------------------------------------
?>
<?php
// File view, beri nama view_multibahasa.php
?>
<html>
<head><title><?=$title?></title>
</head>
<body>
<table border="1" cellpadding="5">
<tr>
<td width="600">
<h2><?=$title?></h2>
</td>
<td width="200">
<a href="<?=site_url('language_setter/set_to/indonesia')?>">Indonesia</a> |
<a href="<?=site_url('language_setter/set_to/english')?>">English</a>
</td>
</tr>
<tr>
<td width="400">
<h4>Mengambil Data dari file lang bahasa di application/language</h4>
<p><?=$hello?></p>
</td>
<td width="100"></td>
<tr>
<tr>
<td width="400">
<h4>Mengambil Data dari Database via Model</h4>
<p><?=$dari_db?></p>
</td>
<td width="100"></td>
<tr>
</table>
</body>
</html>
<?
//------------------------------------------------------
?>
<?php
// Simpan di application/language/english/d3ptzz_lang.php
$lang['title'] = ' Multi Language Web Site';
$lang['hallo'] = 'Hi, my name is d3ptzz.';
//------------------------------------------------------
?>
<?php
// Simpan di application/language/indonesia/d3ptzz_lang.php
$lang['title'] = ' Web Site Multi Bahasa';
$lang['hallo'] = 'Hallo, nama saya d3ptzz.';
//------------------------------------------------------
?>
Copyright Code diatas pada Bayu Hernanto.

Comments