Введение
Класс PHPLang
даёт возможность удобного получения языковых строк, позволяя вашему приложению поддерживать несколько языков интерфейса.
Языковые файлы
Языковые строки хранятся в папке app/lang. Внутри неё должны располагаться подпапки — языки, поддерживаемые приложением:
/app /lang /en messages.php /es messages.php
Языковые файлы (скрипты) просто возвращают массив пар ключ/значение. Например:
<?php
return array(
'welcome' => 'Добро пожаловать на мой сайт!'
);
Изменение языка по умолчанию «на лету»
Язык по умолчанию указан в файле настроек app/config/app.php. Вы можете изменить текущий язык во время работы вашего приложения методом PHPApp::setLocale()
:
App::setLocale('es');
добавлено в 4.1 ()
Основы использования
Получение строк из языкового файла
echo Lang::get('messages.welcome');
Первый компонент, передаваемый методу PHPget()
— имя языкового файла, а затем указывается имя строки, которую нужно получить.
Внимание: если строка не найдена, то метод PHPget()
вернёт её путь (ключ).
Вы также можете использовать функцию PHPtrans()
— короткий способ вызова метода PHPLang::get()
:
echo trans('messages.welcome');
Замена параметров внутри строк
Сперва определите параметр в языковой строке:
'welcome' => 'Welcome, :name',
Затем передайте массив вторым аргументом методу PHPLang::get()
:
echo Lang::get('messages.welcome', array('name' => 'Dayle'));
Проверка существования языковой строки
if (Lang::has('messages.welcome')) {
//
}
Множественное число
Формы множественного числа — проблема для многих языков, так как все они имеют разные сложные правила для их получения. Однако вы можете легко справиться с ней в ваших языковых файлах используя символ | для разделения форм единственного и множественного числа.
'apples' => 'There is one apple|There are many apples',
Для получения такой строки используется метод PHPLang::choice()
:
echo Lang::choice('messages.apples', 10);
добавлено в 4.1 ()
Благодаря тому, что Laravel использует компонент Symfony Translation вы можете легко создать более точные правила для проверки числа:
'apples' => '{0} There are none|[1,19] There are some|[20,Inf] There are many',
Проверка ввода
Для локализации сообщений и ошибок при проверке ввода прочитайте документацию по проверке ввода.
добавлено в 4.1 ()
Перекрытие языковых файлов пакета
Многие пакеты поставляются с собственными языковыми файлами. Вместо того, чтобы вскрывать файлы внутри пакета, чтобы настроить строки в них, вы можете перекрыть их, разместив файлы в каталоге app/lang/packages/{locale}/{package}. Например, если вам необходимо изменить строки английского языка в messages.php для пакета skyrim/hearthfire, вам надо поместить языковой файл в app/lang/packages/en/hearthfire/messages.php. В этом файле вам надо задать только те строки, которые вы хотите перекрыть. Все остальные строки, которые вам не надо перекрывать, будут загружаться из языковых файлов самого пакета.
Комментарии (1)
Для реализации локализации могу посоветовать вот этот плагин LaravelLocalization