BMC IO DocsBMC IO Docs
IO v6
IO v7
Notes
Docs
IO v6
IO v7
Notes
Docs
  • IO Framework v6

    • О фреймворке
    • Уроки
    • Структура
    • Доступ к участкам проекта
    • Старые версии фреймворка
    • Разворачивание нового проекта
  • Backend

    • Функции фреймворка
    • Настройки проекта (app/i.php)
    • Настройки composer
    • Глобальные переменные
    • Константы фреймворка
    • Event класс
    • IOCore класс
    • Controller и работа с ними
    • Class и работа с ними
    • Model и работа с ними
    • View и работа с ними
    • Мультиязычность и словарь фраз
    • Bin скрипты и работа с ними
    • Cron скрипты и работа с ними
    • $ioSession и работа с сессией
    • $ioSession->user и работа с пользователем
    • $ioHash и работа с кешем
    • $ioXCache и работа с кешем
    • $iodb и работа с базой данных
  • Frontend

    • Twig шаблонизатор и работа с ним
    • Twig функции
    • Twig фильтры
    • JS плагины
    • Отложенная загрузка JS скриптов
    • Обращение к Model через JS
  • Примеры

    • AutoIncrement, зависящий от полей

IO v6. Мультиязычность и словарь фраз

  • Подключение словаря фраз в проект
    • Указание поддерживыемых языков в проекте
    • Подключение файла словаря фраз к проекту
    • Вывод слова/фразы из словаря фраз

Фреймворк позволяет работать с языками. Проекты напрямую завязаны с BMC CMS и Twig.

// Получить список языков фреймворка
$languages = IOCore::$languages;

// Язык по умолчанию. Берется из настроек сайта
$langDefault = IOCore::$langDefault;

// Текущий язык. Берется из настроек сайта
$currentlanguage = IOCore::$currentlanguage;
<!-- Получить список языков фреймворка -->
{{languages}}

<!-- Получить список установленных языков сайта -->
{{site.languages}}

<!-- Язык сайта по умолчанию. Берется из настроек сайта -->
{{site.langdefault}}

<!-- Текущий язык сайта. Береться из настроек сайта -->
{{site.lang}}
{{currentlang}}

ВАЖНО

Список языков фреймворка и сайта это разные вещи. Список языков сайта может быть меньше, либо больше чем список языков у фреймворка.

Список всех языков доступен через функцию IOCore::$languages. Это массив вида: $lang => $name.

Подключение словаря фраз в проект

Указание поддерживыемых языков в проекте

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

Для того, чтобы проект имел поддержку многоязычных надписей и фраз, в папке с файлами словарей фраз (project/app/dictionary) должен существовать файл словаря фраз (<apiname_проекта>.json), где apiname_проекта это значение из константы IOPROJECT.

Перед написанием словаря фраз, нужно определиться, какие языки будут использоваться при написании слов/фраз в словаре фраз и затем описать их в файле персональных настроек проекта project/app/i.php в формате 'язык' = 'Название языка'. Список поддерживаемых языков может быть любым по вашему усмотрению.

Пример с использованием 3 языков:

project/app/i.php
// поддерживаемые языки
IOCore::$languages = [
    'kz' => 'Қазақша',
    'ru' => 'Русский',
    'en' => 'English',
];

ВАЖНО

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

Список всех поддерживаемых языков можно посмотреть в глобальной переменной $ioLangs.

Подключение файла словаря фраз к проекту

Чтобы файл словаря фраз применился к проекту, его нужно подключить в файле персональных настроек проекта project/app/i.php.

project/app/i.php
// загрузка словаря фраз
IOCore::loadDictionary(BASE_PATH.'/app/dictionary/<apiname_проекта>.json');

Где apiname_проекта это значение из константы IOPROJECT.

ВАЖНО

Подключение файла словаря фраз (IOCore::loadDictionary()) должно осуществляться после объявления поддерживаемых языков (IOCore::$languages)!

Пример содержимого файла словаря фраз:

project/app/dictionary/apiname_project.json
{
    "ru": {
        "trade.goods.title": "Товары",
        "trade.goods.btn.add": "Добавить товар"
    },
    "kz": {
        "trade.goods.title": "Тауарлар",
        "trade.goods.btn.add": "Тауарды қосыңыз"
    },
    "en": {
        "trade.goods.title": "Goods",
        "trade.goods.btn.add": "Add goods item"
    }
}

При этом:

  • 'ru', 'kz', 'en' - коды языков.
  • 'trade.goods.title', 'trade.goods.btn.add' - имена переменных, которые должны быть уникальными.
  • 'Товары', 'Тауарлар', 'Goods' - это слова/фразы, которые меняются при смене языков.

Рекомендуется создавать цепочки слов, используя нотацию "точка".

Первое слово, это обычно apiname проекта (значение из константы IOPROJECT).

ВАЖНО

В словаре фраз обязательно должны содержаться секции с указанными языками (имена ключей, пример: ru, kz, en) из массива IOCore::$languages. Ключи для переводов (пример: trade.goods.title) должны повторяться во всех языковых секциях (пример: ru, kz, en) и иметь свой вариант перевода слова/фразы.

Вывод слова/фразы из словаря фраз

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

{{translate['trade.goods.title']}}

Где 'trade.goods.title' это ключ слова/фразы.

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

IOCore::translate('trade.goods.title')

Где 'trade.goods.title' это ключ слова/фразы.

Prev
View и работа с ними
Next
Bin скрипты и работа с ними