Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan i18n dalam CakePHP?

Bagaimana untuk menggunakan i18n dalam CakePHP?

王林
王林asal
2023-06-04 12:10:42694semak imbas

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.

  1. Mula

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']); //可选语言
  1. Fail Bahasa

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',
];
  1. Lihat lapisan

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.

  1. Lapisan Kawalan

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.

  1. Tarikh dan Masa

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',
  1. Ringkasan

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn