Rumahweb's News, Article, and Tutorial of Web Development
Fitur Pengubahan Bahasa Tidak Bekerja pada Senayan E-Library Management System

Error Setting Bahasa CMS Senayan

Senayan merupakan CMS karya anak bangsa yang digunakan untuk mengatur sirkulasi dan management perpustakaan. Senayan mulai banyak digunakan selain karena fiturnya lengkap, Senayan juga disebarkan secara open source sehingga bisa digunakan oleh siapa saja secara gratis.

CMS Senayan di lengkapi dengan fitur pengubahan bahasa. Tetapi di beberapa installasi, fitur pengubahan bahasa tersebut tidak berjalan dengan baik. Senayan menggunakan php-gettext untuk meng-emulasi-kan fungsi gettext yang terdapat pada PHP.  Walaupun sudah ada banyak hal yang dilakukan pada server (update versi php, recompile module, dsb) tetapi fitur pengubahan bahasa tersebut belum bisa berjalan dengan baik. Solusi terakhir yang bisa dilakukan adalah mengubah kode CMS Senayan.

Pengubahan ini dicoba atas petunjuk dari file “localisation.php” :

NOTE: The gettext library might be used, if it is available.
* The problem is that mo files are cached by the extension, so a
* server restart is necessary if these files are updated (e.g. by
* a senayan update). I replaced all _(”) with __(”), so
* php-gettext is always used, thus circumventing this problem.
* Obviously there is no real speed disadvantage, since this is the
* way wordpress does it.
* Developers should use __(”) and _ngettext in code!

Langkah pertama adalah dengan mengubah file “localisation.php” yang terdapat pada direktori lib/lang. Pengubahan dilakukan pada baris berikut :

[php]
// set php-gettext library
require LANGUAGES_BASE_DIR.’php-gettext’.DIRECTORY_SEPARATOR.’gettext.inc’;

// gettext setup
$locale = $sysconf[‘default_lang’];
$domain = ‘messages’;
$encoding = ‘UTF-8’;

// set language to use
T_setlocale(LC_ALL, $locale);
// set locales dictionary location
_bindtextdomain($domain, LANGUAGES_BASE_DIR.’locale’);
// codeset
_bind_textdomain_codeset($domain, $encoding);
// set .mo filename to use
_textdomain($domain);
[/php]

Menjadi :

[php]
// set php-gettext library
#require LANGUAGES_BASE_DIR.’php-gettext’.DIRECTORY_SEPARATOR.’gettext.inc’;

// gettext setup
$locale = $sysconf[‘default_lang’];
$domain = ‘messages’;
$encoding = ‘UTF-8’;

// set language to use
setlocale(LC_ALL, $locale);
// set locales dictionary location
bindtextdomain($domain, LANGUAGES_BASE_DIR.’locale’);
// codeset
bind_textdomain_codeset($domain, $encoding);
// set .mo filename to use
textdomain($domain);
[/php]
Langkah terakhir adalah dengan mengubah __(”) menjadi _(”) pada semua file yang digunakan oleh Senayan. Pada Linux, pengubahan ini dapat dipermudah dengan perintah sed dan for (loop, untuk membaca semua file) :

[php]
for i in find . -type f; do sed -i ‘s@__(@_(@g’ $i; done
[/php]

Jika ada kendala mengenai pengubahan kode tersebut silahkan hubungi support kami. Demikian panduan memperbaiki kendala di CMS Senayan dari Rumahweb Indonesia.

Tinggalkan Komentar

Rumahweb

Blog Competition