Skip to content

Latest commit

 

History

History
110 lines (66 loc) · 5.72 KB

localization.md

File metadata and controls

110 lines (66 loc) · 5.72 KB

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. Нет нужды дублировать файл целиком, можно указать только те ключи, которые должны быть перекрыты.