Tôi biết điều này là cũ nhưng, tôi thấy câu hỏi này trong khi tôi đang tìm kiếm một câu trả lời. Tôi cũng tìm thấy một hướng dẫn tốt đẹp, liên kết dưới đây.
Một trong những cách để làm điều đó để tạo ra một thành phần và bootstrap nó, như vậy:
Tạo một tập tin trong, nói, common/components/LanguageSelector.php
<?php
namespace common\components;
use yii\base\BootstrapInterface;
class LanguageSelector implements \yii\base\BootstrapInterface
{
public $supportedLanguages = [];
public function bootstrap($app)
{
$preferredLanguage = $app->request->getPreferredLanguage($this->supportedLanguages);
$app->language = $preferredLanguage;
}
}
Tôi bằng cách sử dụng mẫu ứng dụng nâng cao, bạn có thể điều chỉnh vị trí tệp và vùng tên khi cần.
Sau đó, trong tập tin cấu hình của bạn, bạn cần phải thêm thành phần này, giống như bạn đang bổ sung thêm một thành phần như gỡ lỗi, hoặc đăng nhập thành phần, như vậy:
'components' => [
'languageSelector' => [
'class' => 'common\components\LanguageSelector',
'supportedLanguages' => ['en-US', 'tr-TR'],
],
],
Ngoài ra, bạn cần phải thêm thành phần này thành phần bootstrapped trong tệp cấu hình của bạn:
'bootstrap' => ['languageSelector', ...]
Phương pháp này không dựa vào ngôn ngữ của trình duyệt của khách hàng. Bạn cũng có thể tìm thấy một ví dụ trên trang bên dưới về cách đạt được lựa chọn ngôn ngữ dựa trên tùy chọn. Nhưng về cơ bản những gì bạn cần làm là, trong ngôn ngữ của bạnPhần tử thành phần, nhận giá trị từ cookie và thay đổi ngôn ngữ cho phù hợp. Nếu không có cookie trong trình duyệt của người dùng, bạn có thể dự phòng ngôn ngữ trình duyệt.
https://github.com/samdark/yii2-cookbook/blob/master/book/i18n-selecting-application-language.md
Không hoạt động đối với mẫu cơ bản YII2 - ngôn ngữ hiển thị trang web vẫn còn 'vi' –