Введение
Класс 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. В этом файле вам надо задать только те строки, которые вы хотите перекрыть. Все остальные строки, которые вам не надо перекрывать, будут загружаться из языковых файлов самого пакета.
Laravel по-русски
Комментарии (1)
Для реализации локализации могу посоветовать вот этот плагин LaravelLocalization