Вступление
Функции локализации Laravel предоставляют удобный способ извлечения строк на разных языках, что позволяет вам легко поддерживать несколько языков в вашем приложении. Языковые строки хранятся в файлах в каталоге. В этом каталоге должен быть подкаталог для каждого языка, поддерживаемого приложением:resources/lang
/resources
/lang
/en
messages.php
/es
messages.php
Все языковые файлы возвращают массив строк с ключами. Например:
<?php
return [
'welcome' => 'Welcome to our application'
];
Настройка локали
Язык по умолчанию для вашего приложения хранится в файле конфигурации. Вы можете изменить это значение в соответствии с потребностями вашего приложения. Вы также можете изменить активный язык во время выполнения, используя метод на фасаде:config/app.php
setLocale
App
Route::get('welcome/{locale}', function ($locale) {
App::setLocale($locale);
//
});
Вы можете настроить «запасной язык», который будет использоваться, когда активный язык не содержит заданную строку перевода. Как и язык по умолчанию, резервный язык также настраивается в файле конфигурации:config/app.php
'fallback_locale' => 'en',
Определение текущей локали
Вы можете использовать getLocale
и isLocale
методы на App
фасаде для определения текущей локали или проверить , если локаль заданное значение:
$locale = App::getLocale();
if (App::isLocale('en')) {
//
}
Определение строк перевода
Использование коротких клавиш
Обычно строки перевода хранятся в файлах в каталоге. В этом каталоге должен быть подкаталог для каждого языка, поддерживаемого приложением:resources/lang
/resources
/lang
/en
messages.php
/es
messages.php
Все языковые файлы возвращают массив строк с ключами. Например:
<?php
// resources/lang/en/messages.php
return [
'welcome' => 'Welcome to our application'
];
Использование строк перевода в качестве ключей
Для приложений с высокими требованиями к переводу определение каждой строки с помощью «короткого ключа» может быстро сбить с толку при ссылках на них в ваших представлениях. По этой причине Laravel также обеспечивает поддержку определения строк перевода, используя в качестве ключа перевод строки по умолчанию.
Файлы перевода, которые используют строки перевода в качестве ключей, хранятся в каталоге как файлы JSON . Например, если ваше приложение имеет перевод на испанский язык, вы должны создать файл:resources/lang
resources/lang/es.json
{
"I love programming.": "Me encanta programar."
}
Получение строк перевода
Вы можете извлечь строки из языковых файлов, используя __
вспомогательную функцию. __
Метод принимает файл и ключ строки перевода в качестве первого аргумента. Например, давайте получим welcome
строку перевода из языкового файла:resources/lang/messages.php
echo __('messages.welcome');
echo __('I love programming.');
Если вы используете шаблонизатор Blade , вы можете использовать синтаксис для отображения строки перевода или использовать директиву:{{ }}
@lang
{{ __('messages.welcome') }}
@lang('messages.welcome')
Если указанная строка перевода не существует, __
функция вернет ключ строки перевода. Таким образом, используя приведенный выше пример, __
функция вернется, если строка перевода не существует.messages.welcome
@lang
Директива не выходит никаких выходных данных . Вы несете полную ответственность за выход из собственного вывода при использовании этой директивы.
Замена параметров в строках перевода
При желании вы можете определить заполнители в ваших строках перевода. Все заполнители имеют префикс :
. Например, вы можете определить приветственное сообщение с именем заполнителя:
'welcome' => 'Welcome, :name',
Чтобы заменить заполнители при извлечении строки перевода, передайте массив замен в качестве второго аргумента __
функции:
echo __('messages.welcome', ['name' => 'dayle']);
Если ваш заполнитель содержит все заглавные буквы или только первая буква имеет заглавную букву, переведенное значение будет заглавно соответственно:
'welcome' => 'Welcome, :NAME', // Welcome, DAYLE
'goodbye' => 'Goodbye, :Name', // Goodbye, Dayle
Плюрализация
Плюрализация - сложная проблема, поскольку разные языки имеют множество сложных правил для плюрализации. Используя символ "pipe", вы можете различать формы строки в единственном и множественном числе:
'apples' => 'There is one apple|There are many apples',
Вы можете даже создать более сложные правила множественного числа, которые определяют строки перевода для нескольких диапазонов номеров:
'apples' => '{0} There are none|[1,19] There are some|[20,*] There are many',
После определения строки перевода, которая имеет опции множественного числа, вы можете использовать trans_choice
функцию, чтобы получить строку для заданного «количества». В этом примере, поскольку количество больше единицы, возвращается форма множественного числа строки перевода:
echo trans_choice('messages.apples', 10);
Вы также можете определить атрибуты-заполнители в строках множественного числа. Эти заполнители могут быть заменены передачей массива в качестве третьего аргумента trans_choice
функции:
'minutes_ago' => '{1} :value minute ago|[2,*] :value minutes ago',
echo trans_choice('time.minutes_ago', 5, ['value' => 5]);
Если вы хотите отобразить целочисленное значение, которое было передано trans_choice
функции, вы можете использовать :count
заполнитель:
'apples' => '{0} There are none|{1} There is one|[2,*] There are :count',
Переопределение языковых файлов пакетов
Некоторые пакеты могут поставляться со своими языковыми файлами. Вместо того, чтобы изменять основные файлы пакета для настройки этих строк, вы можете переопределить их, поместив файлы в каталог.resources/lang/vendor/{package}/{locale}
Так, например, если вам необходимо изменить строки в переводе на английском языке для пакета с именем , вы должны поместить файл языка по адресу: . В этом файле вы должны определять только те строки перевода, которые хотите переопределить. Любые строки перевода, которые вы не переопределите, будут по-прежнему загружаться из исходных языковых файлов пакета.messages.php
skyrim/hearthfire
resources/lang/vendor/hearthfire/en/messages.php
0 комментариев