Locale
Library yang menyediakan translasi suatu teks berdasarkan dictionary.
Semua translasi di cache di folder etc/cache/locale
, jika melakukan
perubahan pada locale file di etc/locale/*
, pastikan menjalankan perintah
mim app config
di folder aplikasi untuk meregenerasi cache locale.
Instalasi
Jalankan perintah di bawah di folder aplikasi:
mim app install lib-locale
Penggunaan
Module ini mendaftarkan satu fungsi global dengan nama lang
yang bisa diakses
darimana saja untuk melakukan translasi.
lang(string $key, array $params=[], string $locale=null): string
Fungsi di atas adalah fungsi umum yang bisa digunakan dari mana saja di dalam aplikasi untuk translasi.
$trans = lang('welcome_user', ['name'=>'Iqbal'], 'en-US');
Module ini juga mendaftarkan satu library dengan nama LibLocale\Library\Locale
dengan
method sebagai berikut:
setLocale(string $locale): void
translate(string $key, array $params=[], string $locale=null): string
Fungsi translate
adalah fungsi yang akan dipanggil oleh fungsi lang
.
Translasi
Semua translasi suatu locale disimpan di folder etc/locale/[locale]/
. Umumnya, nama
file translasi adalah main.php
. Tapi nama file yang lain tentu bisa digunakan dengan
ketentuan nama file harus digunakan di key translasi. Folder ini juga bisa menyimpan
subfolder dan subfiles, seperti perbedaan nama file, masing-masing folder juga harus
disebutkan pada key translasi yang dipisahkan dengan titik.
Sebagai contoh, untuk file translasi etc/locale/en-US/form/error/general.php
, yang
berisi data seperti di bawah:
// file etc/locale/en-US/form/error/general.php
return [
'required' => 'The field (:name) is required'
];
Dengan contoh seperti di atas, maka untuk mendapatkan translasi, bisa menggunakan perintah seperti di bawah:
$text = lang('form.error.general.required', ['name'=>'username'], 'en-US');
Nilai variable (:name)
diambil dari parameter kedua fungsi ini.
Jika nama file adalah main.php
, maka key main
tidak perlu ada pada key translasi.
Formatter
Jika library lib-formatter
terpasang, maka module ini akan menambahkan satu formatter
dengan nama locale
.
locale
Mentranslasi nilai properti object sesuai dengan konfigurasi locale.
'field' => [
'type' => 'locale',
'locale' => [
'params' => [
'name' => '$name',
'fullname' => '$user.fullname',
'prop' => 'prop'
]
]
]
Nilai parameter yang di awali dengan $
akan mengambil nilai properti dari object
yang sedang di proses.
Nilai properti locale.params
akan ditambahkan ke fungsi lang
sebagai params.
Nilai properti object yang akan di translasi diharapkan berbentuk seperti di bawah:
'field' => (object)[
'locale' => [
'key' => 'form.error.general.required',
'params' => [
'name' => 'username'
]
]
];