Перейти к содержанию

Переводимые текстовые поля

Переводимые текстовые поля могут использоваться, чтобы позволить пользователю предоставлять другое значение для других языков, установленных в своем сообществе. Если установлен только один язык, будет отображаться только одно текстовое поле.

Переводимые текстовые поля предназначены для использования только в админцентре. Они не предназначены для использования пользователями во фронтэнде.

Класс Translatable работает с тремя типами текстовых полей, доступных для форм в Invision Community: ввод текста (text input), текстовые области (textareas) и редакторы WYSIWYG. Класс заботится о создании базовых текстовых полей для вас. Значения сохраняются в языковой системе и извлекаются позже для их использования.

Чтобы использовать переводимые поля в вашем коде, вы должны использовать класс \IPS\Helpers\Form\Translatable в рамках Помощника форм.

Создание элемента

При создании элемента параметр $options требует как минимум два значения:

  • app  - Ключ приложения, которому принадлежит языковая строка.
  • key - Уникальный ключ для этой языковой строки (как со стандартными языковыми строками, только буквенно-цифровые значения). Если вы отображаете форму "Создать" для чего-то ещё не созданного, вы можете передать NULL в качестве ключа.

В отличие от других полей, $defaultValue должен быть NULL. Класс автоматически заполнит текущее значение для ключа, извлекая его из языковой системы.

 

Например, код для создания элемента будет выглядеть примерно так:

$form->add( new \IPS\Helpers\Form\Translatable( 'my_translatable_field', NULL, TRUE, array( 'app' => 'app', 'key' => 'my_language_string' ) ) );

Этот код добавит стандартное однострочное текстовое поле формы. Для создания же текстового поля, добавьте ключ textArea в ваш массив $options, установив в значение TRUE.

Для создания поля редактора WYSIWYG, добавьте ключ редактора в ваш массив $options. Значение редактора должно быть массивом, который содержит параметры, принимаемые классом \IPS\Helpers\Form\Editor.

Обработка материалов

При обработке формы, содержащей переводимые текстовые поля, вы должны вручную сохранить возвращённые значения в языковую систему, например так:

if ( $values = $form->values() )
{
	\IPS\Lang::saveCustom( 'app', 'my_language_string', $values['my_translatable_field'] );

	// Other field processing...
}

 




×
×
  • Создать...

Важная информация

Используя наш сайт вы соглашаетесь с нашей Политикой конфиденциальности