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