feat(i18n): integrasi sistem bilingual otomatis dan instant switcher pada dashboard admin
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
/**
|
||||
* Modul Native Internationalization (i18n) Dashboard EduKarsa
|
||||
* Mendeteksi bahasa sistem WordPress atau switcher manual tanpa plugin
|
||||
*/
|
||||
|
||||
function edukarsa_get_admin_lang() {
|
||||
// 1. Cek parameter URL manual jika diklik dari switcher
|
||||
if ( isset( $_GET['edukarsa_admin_lang'] ) && in_array( $_GET['edukarsa_admin_lang'], array( 'id', 'en' ) ) ) {
|
||||
$lang = sanitize_text_field( $_GET['edukarsa_admin_lang'] );
|
||||
setcookie( 'edukarsa_dashboard_lang', $lang, time() + ( 86400 * 30 ), '/' );
|
||||
return $lang;
|
||||
}
|
||||
|
||||
// 2. Cek cookie preferensi tersimpan
|
||||
if ( isset( $_COOKIE['edukarsa_dashboard_lang'] ) && in_array( $_COOKIE['edukarsa_dashboard_lang'], array( 'id', 'en' ) ) ) {
|
||||
return sanitize_text_field( $_COOKIE['edukarsa_dashboard_lang'] );
|
||||
}
|
||||
|
||||
// 3. Fallback otomatis mengikuti locale pengguna / sistem WordPress
|
||||
$locale = function_exists( 'get_user_locale' ) ? get_user_locale() : get_locale();
|
||||
if ( strpos( $locale, 'en' ) === 0 ) {
|
||||
return 'en';
|
||||
}
|
||||
|
||||
return 'id';
|
||||
}
|
||||
|
||||
function edukarsa_t( $id_text, $en_text ) {
|
||||
return ( edukarsa_get_admin_lang() === 'en' ) ? $en_text : $id_text;
|
||||
}
|
||||
Reference in New Issue
Block a user