Cara menggunakan rangka kerja Hyperf untuk sokongan antarabangsa
Dengan perkembangan globalisasi yang pesat, banyak aplikasi perlu mempunyai keupayaan sokongan berbilang bahasa , untuk memenuhi keperluan pengguna di negara dan wilayah yang berbeza. Sebagai rangka kerja yang ringan dan berprestasi tinggi, rangka kerja Hyperf menyediakan fungsi sokongan antarabangsa dan boleh membantu pembangun membangunkan aplikasi berbilang bahasa dengan cepat.
Artikel ini akan memperkenalkan cara menggunakan fungsi pengantarabangsaan dalam rangka kerja Hyperf dan memberikan contoh kod yang sepadan.
1 Konfigurasikan sokongan berbilang bahasa
Pertama sekali, anda perlu membuat konfigurasi yang berkaitan dalam fail konfigurasi Hyperf config/autoload/i18n.php kod>. Anda boleh menggunakan perintah <code>php bin/hyperf.php vendor:publish hyperf/i18n
untuk menyalin fail konfigurasi lalai ke direktori config/autoload
. Kemudian buat konfigurasi berikut dalam fail i18n.php
: config/autoload/i18n.php
中进行相关配置。可以使用 php bin/hyperf.php vendor:publish hyperf/i18n
命令,将默认的配置文件拷贝到 config/autoload
目录下。然后在 i18n.php
文件中进行如下配置:
return [ // 默认的语言环境 'locale' => 'zh_CN', // 语言文件的存放位置 'fallback_locale' => 'en', // 支持的语言列表 'locale_list' => [ 'zh_CN', 'en', ], // 自动检测浏览器的语言设置 'detect_locale' => true, // 语言文件的扩展名 'ext' => '.php', ];
上述配置中,locale
是默认的语言环境,fallback_locale
是当请求的语言环境不存在时的备选语言环境。locale_list
指定了项目支持的语言列表。detect_locale
设置为 true
表示自动检测浏览器的语言设置。ext
指定了语言文件的扩展名,默认为 .php
。
二、编写语言文件
在 resources/lang
目录下创建对应的语言文件夹,然后在文件夹中创建不同语言环境的语言文件。例如,创建 zh_CN
和 en
两个文件夹,分别存放中文和英文的语言文件。
在每个语言文件中,可以定义翻译内容对应的键值。例如,在 zh_CN
文件夹下创建 messages.php
文件,内容如下:
return [ 'welcome' => '欢迎使用Hyperf框架', ];
在 en
文件夹下创建 messages.php
文件,内容如下:
return [ 'welcome' => 'Welcome to Hyperf framework', ];
三、使用语言包
在控制器或服务类中,可以通过 HyperfUtilsApplicationContext::getContainer()->get('translator')
来获取翻译器(translator)实例,然后通过翻译器的 trans
方法来获取对应语言环境的翻译内容。
<?php namespace AppController; use HyperfHttpServerAnnotationController; use HyperfHttpServerAnnotationRequestMapping; use HyperfHttpServerContractRequestInterface; use HyperfUtilsApplicationContext; /** * @Controller() */ class IndexController { /** * @RequestMapping("/") */ public function index(RequestInterface $request) { $translator = ApplicationContext::getContainer()->get('translator'); // 获取当前语言环境 $locale = $translator->getLocale(); // 获取语言包中的翻译内容 $welcome = $translator->trans('welcome'); return [ 'locale' => $locale, 'welcome' => $welcome, ]; } }
上述代码中,使用 $translator->getLocale()
可以获取当前的语言环境。然后通过 $translator->trans('welcome')
获取对应的翻译内容。
四、切换语言环境
在实际应用中,可能需要根据用户的选择或其它条件来切换语言环境。Hyperf框架提供了 HyperfUtilsContext
类来实现上下文,可以通过 Context::getContainer()->set('locale', $locale)
来设置语言环境。
<?php use HyperfUtilsContext; // 切换到中文环境 Context::getContainer()->set('locale', 'zh_CN');
在上述代码中,通过 set('locale', $locale)
rrreee
locale
ialah locale lalai, fallback_locale ialah locale alternatif apabila locale yang diminta tidak wujud. <code>locale_list
menentukan senarai bahasa yang disokong oleh projek. detect_locale
ditetapkan kepada true
untuk mengesan tetapan bahasa penyemak imbas secara automatik. ext
menentukan sambungan fail bahasa, lalai ialah .php
. 2. Tulis fail bahasa Buat folder bahasa yang sepadan dalam direktori resources/lang
, dan kemudian buat persekitaran bahasa yang berbeza dalam bahasa folder fail. Contohnya, buat dua folder, zh_CN
dan en
, untuk menyimpan fail bahasa Cina dan Inggeris masing-masing. Dalam setiap fail bahasa, anda boleh menentukan nilai kunci yang sepadan dengan kandungan terjemahan. Contohnya, buat fail messages.php
dalam folder zh_CN
dengan kandungan berikut: rrreee
dalamen
folder Cipta fail messages.php
dengan kandungan berikut: #🎜🎜#rrreee#🎜🎜# 3. Gunakan pek bahasa#🎜🎜##🎜🎜#Dalam kelas pengawal atau perkhidmatan, anda boleh lulus HyperfUtilsApplicationContext::getContainer()->get('translator') untuk mendapatkan contoh penterjemah (penterjemah), dan kemudian dapatkan tempat yang sepadan melalui kaedah trans
penterjemah Terjemah kandungan. #🎜🎜#rrreee#🎜🎜#Dalam kod di atas, gunakan $translator->getLocale()
untuk mendapatkan tempat semasa. Kemudian gunakan $translator->trans('welcome')
untuk mendapatkan kandungan terjemahan yang sepadan. #🎜🎜##🎜🎜#4 Menukar tempattempat #🎜🎜##🎜🎜#Dalam aplikasi sebenar, mungkin perlu menukar tempattempat berdasarkan pilihan pengguna atau syarat lain. Rangka kerja Hyperf menyediakan kelas HyperfUtilsContext
untuk melaksanakan konteks dan anda boleh menetapkan tempat melalui Context::getContainer()->set('locale', $locale)
. #🎜🎜#rrreee#🎜🎜#Dalam kod di atas, tetapkan tempatan kepada bahasa Cina melalui set('locale', $locale)
. #🎜🎜##🎜🎜#Ringkasan: #🎜🎜##🎜🎜#Melalui langkah di atas, kami boleh berjaya melaksanakan fungsi sokongan pengantarabangsaan dalam rangka kerja Hyperf. Mula-mula, anda perlu membuat konfigurasi yang berkaitan dalam fail konfigurasi, kemudian tulis fail bahasa dan gunakan penterjemah dalam kod untuk mendapatkan kandungan yang diterjemahkan. Anda boleh menggunakan konteks untuk menukar tempat mengikut keperluan anda. #🎜🎜##🎜🎜#Melalui sokongan antarabangsa rangka kerja Hyperf, pembangun boleh melaksanakan aplikasi berbilang bahasa dengan mudah dan memberikan pengalaman pengguna yang lebih baik untuk pengguna global. #🎜🎜##🎜🎜#Di atas adalah langkah terperinci dan kod sampel untuk menggunakan rangka kerja Hyperf untuk sokongan pengantarabangsaan. Semoga ia membantu semua orang! #🎜🎜#Atas ialah kandungan terperinci Cara menggunakan rangka kerja Hyperf untuk sokongan pengantarabangsaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!