CakePHP ialah rangka kerja PHP sumber terbuka yang menyokong penyepaduan pengantarabangsaan berbilang bahasa (i18n). i18n boleh menjadikan aplikasi anda berbilang bahasa, menjadikannya lebih mudah untuk anda menarik khalayak antarabangsa dan memberi perkhidmatan yang lebih baik kepada pengguna tempatan. Dalam artikel ini, kami akan melihat secara mendalam tentang penggunaan CakePHP i18n.
Mula-mula, anda perlu mendayakan fungsi berbilang bahasa CakePHP. Untuk melakukan ini, kemas kini fail konfigurasi config/bootstrap.php dan tambah kod berikut pada aplikasi anda:
Configure::write('App.defaultLocale', 'en_US'); //设置默认语言 Configure::write('App.languages', ['en_US', 'es_ES', 'de_DE']); //可选语言
Seterusnya, anda perlu Cipta fail bahasa dalam direktori config/Locale. Fail bahasa ini hendaklah dinamakan locale%iso-639-1code%iso-3166-1-alpha-2 format.php. Contohnya, en_US.php, es_ES.php, atau de_DE.php, dsb.
Dalam fail bahasa anda boleh menentukan rentetan terjemahan. Sebagai contoh, dalam en_US.php anda boleh menulis:
return [ 'welcome' => 'Welcome', 'hello' => 'Hello', ];
Dalam es_ES.php anda boleh menulis:
return [ 'welcome' => 'Bienvenido', 'hello' => 'Hola', ];
Dalam de_DE.php anda boleh menulis:
return [ 'welcome' => 'Willkommen', 'hello' => 'Hallo', ];
Dalam paparan, anda boleh menggunakan fungsi __() untuk menterjemah teks. Sebagai contoh, jika anda ingin memaparkan "Selamat Datang" dalam paparan anda, anda boleh menulis:
<h1><?php echo __('welcome'); ?></h1>
Ini akan secara automatik menggunakan rentetan terjemahan yang betul untuk tempat semasa. Jika tempat adalah en_US, Selamat Datang akan dipaparkan. Jika tempat ialah es_ES, Bienvenido akan dipaparkan.
Begitu juga, anda boleh menggunakan __('string', array('name' => 'value')) dalam fail paparan untuk memformat output.
<?php echo __('My name is %name%', array('name' => 'Lucas')); ?>
Output Nama saya Lucas.
Dalam pengawal, anda boleh menggunakan Configure::write('Config.language', 'langauge') untuk menukar tempat semasa:
Configure::write('Config.language', 'de_DE'); //将语言环境设置为de_DE
Anda boleh menetapkan tempat yang berbeza dalam tindakan pengawal untuk memilih rentetan terjemahan yang berbeza untuk setiap paparan mengikut keperluan. Ini sangat berguna untuk laman web dinamik.
Contohnya:
public function index() { Configure::write('Config.language', 'es_ES'); $this->set('title', __('home_title')); }
Dalam contoh ini ia akan memuatkan es_ES.php dan menggunakan rentetan terjemahan home_title.
CakePHP i18n turut menyokong format tarikh dan masa setempat. Contohnya:
echo $this->Time->nice(new DateTime('2018-11-20')); //在控制器分配或直接用数组传递时使用 echo $this->Time->nice($dateObject);
Ini akan memformat tarikh mengikut tempat semasa dan memaparkan hasil yang serupa dengan 20 Nov 2018. Anda boleh mengubah suai format tarikh dalam app.php.
'defaultDateFormat' => 'yyyy-MM-dd',
Seperti yang anda lihat, i18n CakePHP sangat mudah digunakan. Dengan menggunakan sokongan i18n yang disediakan oleh rangka kerja, anda boleh memberikan sokongan berbilang bahasa dan penyetempatan dengan cepat dan mudah kepada pengguna di seluruh dunia. Ingat untuk sentiasa memberikan teks yang jelas dan tepat untuk aplikasi anda untuk pengalaman pengguna yang terbaik.
Atas ialah kandungan terperinci Bagaimana untuk menggunakan i18n dalam CakePHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!