Может войдёшь?
Черновики Написать статью Профиль

Локализация

перевод документация 4.x

  1. 1. Введение
  2. 2. Языковые файлы
  3. 3. Основы использования
  4. 4. Множественное число
  5. 5. Проверка ввода
  6. 6. Перекрытие языковых файлов пакета
Этот перевод актуален для англоязычной документации на (ветка 4.2) , (ветка 4.1) и (ветка 4.0). Опечатка? Выдели и нажми Ctrl+Enter.

Введение

Класс PHPLang даёт возможность удобного получения языковых строк, позволяя вашему приложению поддерживать несколько языков интерфейса.

Языковые файлы

Языковые строки хранятся в папке app/lang. Внутри неё должны располагаться подпапки — языки, поддерживаемые приложением:

/app
  /lang
    /en
      messages.php
    /es
      messages.php

Пример языкового файла

Языковые файлы (скрипты) просто возвращают массив пар ключ/значение. Например:

PHP
<?php

return array(
  
'welcome' => 'Добро пожаловать на мой сайт!'
);

Изменение языка по умолчанию «на лету»

Язык по умолчанию указан в файле настроек app/config/app.php. Вы можете изменить текущий язык во время работы вашего приложения методом PHPApp::setLocale():

PHP
App::setLocale('es');
+ 4.1

добавлено в 4.1 ()

Настройка запасного языка
Вы также можете настроить «запасной язык», который будет использоваться, когда в файле текущего языка нет соответствующей строки. Как и язык по умолчанию, запасной язык также настраивается в файле app/config/app.php:

PHP
'fallback_locale' => 'en',

Основы использования

Получение строк из языкового файла

PHP
echo Lang::get('messages.welcome');

Первый компонент, передаваемый методу PHPget() — имя языкового файла, а затем указывается имя строки, которую нужно получить.

Внимание: если строка не найдена, то метод PHPget() вернёт её путь (ключ).

Вы также можете использовать функцию PHPtrans() — короткий способ вызова метода PHPLang::get():

PHP
echo trans('messages.welcome');

Замена параметров внутри строк

Сперва определите параметр в языковой строке:

PHP
'welcome' => 'Welcome, :name',

Затем передайте массив вторым аргументом методу PHPLang::get():

PHP
echo Lang::get('messages.welcome', array('name' => 'Dayle'));

Проверка существования языковой строки

PHP
if (Lang::has('messages.welcome')) {
  
//
}

Множественное число

Формы множественного числа — проблема для многих языков, так как все они имеют разные сложные правила для их получения. Однако вы можете легко справиться с ней в ваших языковых файлах используя символ | для разделения форм единственного и множественного числа.

PHP
'apples' => 'There is one apple|There are many apples',

Для получения такой строки используется метод PHPLang::choice():

PHP
echo Lang::choice('messages.apples'10);
+ 4.1

добавлено в 4.1 ()

Вы также можете передать аргумент локали, чтобы указать язык. Например, если вы хотите использовать русский (ru) язык:

PHP
echo Lang::choice('товар|товара|товаров'$count, array(), 'ru');

Благодаря тому, что Laravel использует компонент Symfony Translation вы можете легко создать более точные правила для проверки числа:

PHP
'apples' => '{0} There are none|[1,19] There are some|[20,Inf] There are many',

Проверка ввода

Для локализации сообщений и ошибок при проверке ввода прочитайте документацию по проверке ввода.

+ 4.1

добавлено в 4.1 ()

Перекрытие языковых файлов пакета

Многие пакеты поставляются с собственными языковыми файлами. Вместо того, чтобы вскрывать файлы внутри пакета, чтобы настроить строки в них, вы можете перекрыть их, разместив файлы в каталоге app/lang/packages/{locale}/{package}. Например, если вам необходимо изменить строки английского языка в messages.php для пакета skyrim/hearthfire, вам надо поместить языковой файл в app/lang/packages/en/hearthfire/messages.php. В этом файле вам надо задать только те строки, которые вы хотите перекрыть. Все остальные строки, которые вам не надо перекрывать, будут загружаться из языковых файлов самого пакета.

Комментарии (1)

Alien_Wanderer

Для реализации локализации могу посоветовать вот этот плагин LaravelLocalization

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.