Membuat multi bahasa dengan codeigniter

Membuat multi bahasa dengan codeigniter

Pada pembahasan kali ini saya akan membahas seputar bagaimana cara membuat multi bahasa dengan codeigniter. Untuk membuatnya saya akan menggunakan cookies.
Cookies merupakan data file yang ditulis ke dalam hard disk komputer oleh web server yang digunakan untuk mengidentifikasikan diri user pada situs tersebut sehingga sewaktu user kembali mengunjugi situs tersebut, situs itu akan dapat mengenalinya. Jadi dapat dikatakan bahwa cookies merupakan semacam ID card user saat koneksi pada situs. (terusbelajar)
Spesifikasi Sourcecode
Pranktik

#Buat Database

Untuk nama database terserah kamu, lalu buat tabel dengan nama artikel. Untuk fieldnya bisa ikutin gambar di bawah ini.

Membuat multi bahasa dengan codeigniter

#Atur Codeigniter

Setelah codeigniter di download, Sebelum memulai coding, persiapan awal kamu bisa atur terlebih dahulu codeigniter-nya. Pada kasus ini ada beberapa library dan souce lainnya yang harus kamu load terlebih dahulu.
  • Pada config/autoload.php
    • Load library "database".
    • Load helper "url dan cookie".
  • Pada config/config.php
    • Set base_url
    • Set encription_key
  • Pada config/database.php
    • Set hostname
    • Set root
    • Set database
# Ngoding

> Controllers

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {

function __construct() {
parent::__construct();


$this->load->model("artikel");
}

public function index() {

$data['list_artikel'] = $this->artikel->get_artikel();
$this->load->view('welcome_message', $data);
}
}

Simpan dengan nama Welcome.php , kode di atas merupakan controller home

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Lang_setter extends CI_Controller {

public function __construct() {
parent::__construct();
}

public function index() {
echo "Forbiden 403";
}

public function set_to($language) {
if(strtolower($language) === 'english') {
$lang = 'en';
} else {
$lang = 'in';
}
set_cookie(
array(
'name' => 'lang_is',
'value' => $lang,
'expire' => '8650',
'prefix' => ''
)
);

if($this->input->server('HTTP_REFERER')){
redirect($this->input->server('HTTP_REFERER'));
}
}
}
?>

Simpan dengan nama Lang_setter.php , kode di atas berfungsi untuk mengatur cookie.

> Models

<?php 
defined('BASEPATH') OR exit('No direct script access allowed');

class Artikel extends CI_Model {

function __construct() {
parent::__construct();
}

function get_artikel(){
$this->db->select("*");
$this->db->from("artikel");
if(get_cookie('lang_is') === 'en'){$this->db->where('bahasa','ENG');}else{$this->db->where('bahasa','IDN');}
$query = $this->db->get();

return $query->result();
}
}
?>

Simpan dengan nama Artikel.php. Lihat pada bagian query where di atas, pada saat cookies lang_is ter-set en, maka data yang akan di tampilkan adalah data bahasa yang membunyai value ENG, begitu pula sebaliknya. kode ini if(get_cookie('lang_is') === 'en'){ merupakan kode untuk melakukan pengecekan cookies.

> Views

<?php defined('BASEPATH') OR exit('No direct script access allowed'); ?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Welcome to CodeIgniter</title>

<style type="text/css">

::selection { background-color: #E13300; color: white; }
::-moz-selection { background-color: #E13300; color: white; }

body {
background-color: #fff;
margin: 40px;
font: 13px/20px normal Helvetica, Arial, sans-serif;
color: #4F5155;
}

a {
color: #003399;
background-color: transparent;
font-weight: normal;
}

h1 {
color: #444;
background-color: transparent;
border-bottom: 1px solid #D0D0D0;
font-size: 19px;
font-weight: normal;
margin: 0 0 14px 0;
padding: 14px 15px 10px 15px;
}

code {
font-family: Consolas, Monaco, Courier New, Courier, monospace;
font-size: 12px;
background-color: #f9f9f9;
border: 1px solid #D0D0D0;
color: #002166;
display: block;
margin: 14px 0 14px 0;
padding: 12px 10px 12px 10px;
}

#body {
margin: 0 15px 0 15px;
}

.footer-right {
float: right;
font-size: 11px;
border-top: 1px solid #D0D0D0;
line-height: 32px;
padding: 0 10px 0 10px;
margin: 20px 0 0 0;
}

.footer-left {
float: left;
font-size: 11px;
border-top: 1px solid #D0D0D0;
line-height: 32px;
padding: 0 10px 0 10px;
margin: 20px 0 0 0;
}

#container {
margin: 10px;
border: 1px solid #D0D0D0;
box-shadow: 0 0 8px #D0D0D0;
}
</style>
</head>
<body>

<div id="container">
<?php foreach($list_artikel as $la){ ?>
<h1><?php echo $la->judul;?></h1>

<div id="body">
<?php echo $la->isi;?>
</div>
<?php } ?>
<p>
<span class="footer-left">
<?php if(get_cookie('lang_is') === 'en'){ ?>
Language : <a href="<?php echo site_url('lang_setter/set_to/indonesia');?>">IDN</a>
<?php }else{ ?>
Bahasa : <a href="<?php echo site_url('lang_setter/set_to/english');?>">ENG</a>
<?php } ?>
</span>
<span class="footer-right">Page rendered in <strong>{elapsed_time}</strong> seconds. <?php echo (ENVIRONMENT === 'development') ? 'CodeIgniter Version <strong>' . CI_VERSION . '</strong>' : '' ?></span>
</p>
</div>

</body>
</html>

Simpan dengan nama welcome_message.php.


Full Source Code

*) Jangan Lupa Diimport Dulu Databasenya.

LihatTutupKomentar