0 Пользователей и 1 Гость просматривают эту тему.
  • 17 Ответов
  • 8554 Просмотров
*

ArturC

  • Захожу иногда
  • 242
  • 16 / 1
Русификация Gantry 5.0 Framework
« : 04.07.2015, 22:00:02 »
Наверное многие уже знают о конструкторе от Gantry 5.0 Framework Не могу найти как русифицировать. Есть ли вообще на него русик?
НА ВКУС И ЦВЕТ БИЛЕТОВ НЕТ.
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Русификация Gantry 5.0 Framework
« Ответ #1 : 05.07.2015, 00:04:27 »
Нет, ни на один импортный шаблонный фреймворк локализаций нет вообще никаких, не только русской. Многое вшито прямо в код, потому локализации либо не поддается либо она слетает при обновлении фреймворка.
*

KKAAZZOO

  • Живу я здесь
  • 2288
  • 118 / 9
Re: Русификация Gantry 5.0 Framework
« Ответ #2 : 05.07.2015, 09:00:27 »
Нет, ни на один импортный шаблонный фреймворк локализаций нет вообще никаких, не только русской.

Неправду говорите:-)
*

oberon2005

  • Новичок
  • 7
  • 0 / 0
Re: Русификация Gantry 5.0 Framework
« Ответ #3 : 08.12.2015, 11:00:30 »
Неправду говорите:-)
Докажи!Я бы от русика не отказался
*

KKAAZZOO

  • Живу я здесь
  • 2288
  • 118 / 9
Re: Русификация Gantry 5.0 Framework
« Ответ #4 : 08.12.2015, 11:40:07 »
Докажи!Я бы от русика не отказался

Доказать что?
*

vanguger

  • Осваиваюсь на форуме
  • 11
  • 6 / 0
Re: Русификация Gantry 5.0 Framework
« Ответ #5 : 08.06.2016, 13:12:49 »
Перевод в Gantry 5 осуществляется в файлах. Например, чтобы перевести в шаблоне Styles->Core Styles->Base Style нужно перевести этот файл:
../templates/g5_hydrogen/blueprints/styles/base.yaml
но при обновлении, он перезапишется, поэтому лучше его скопировать в папку для пользовательской кастомизации:
../templates/g5_hydrogen/custom/
путь для файла будет такой:
../templates/g5_hydrogen/custom/blueprints/styles/base.yaml - (если папки в пути отсутствуют, создать их)
в скопированном файле поменять текст и необходимые параметры, например в данном файле выглядеть будет так:

Код
name: Базовые стили
description: Основные стили для шаблона Hydrogen
type: core

form:
  fields:

    background:
      type: input.colorpicker
      label: Базовый Фон
      default: "#ffffff"
    text-color:
      type: input.colorpicker
      label: Базовый Цвет Текста
      default: "#666666"
    body-font:
      type: input.fonts
      label: Основной шрифт Body
      default: 'Roboto Condensed, sans-serif'
    heading-font:
      type: input.fonts
      label: Шрифта Заголовка
      default: 'Roboto Condensed, sans-serif'

в режиме разработчика, можно очистить кэш, обновить страницу шаблона. И так далее с остальными файлами.
осторожнее со структурой файлов, лишний пробел вначале или смещение создаёт ошибку, например если в рассматриваемом нами файле сделать так
Код
    background:
type: input.colorpicker
вместо
Код
    background:
      type: input.colorpicker
то это выдаст ошибку
« Последнее редактирование: 08.06.2016, 13:20:02 от vanguger »
*

khan-alex

  • Давно я тут
  • 647
  • 30 / 1
Re: Русификация Gantry 5.0 Framework
« Ответ #6 : 17.06.2016, 19:18:39 »
А как в таком случае перевести дату из стандартного модуля Gantry5 Particles Date ну например тут (чуть ниже поиска по сайту). Искал во всех файлах локализации и в (как только что узнал) файлах .yaml - ничего похожего! Что называется - HELP!  !  ;D 
*

vanguger

  • Осваиваюсь на форуме
  • 11
  • 6 / 0
Re: Русификация Gantry 5.0 Framework
« Ответ #7 : 14.08.2016, 16:05:51 »
А как в таком случае перевести дату из стандартного модуля Gantry5 Particles Date ну например тут (чуть ниже поиска по сайту). Искал во всех файлах локализации и в (как только что узнал) файлах .yaml - ничего похожего! Что называется - HELP!  !  ;D 

Конечно через пень колоду, но работает:

скопировать файлы:
media\gantry5\engines\nucleus\particles\date.html.twig
media\gantry5\engines\nucleus\particles\date.yaml

в директорию: templates\шаблонG5\custom\particles\
пути новых файлов будут такие:
templates\шаблонG5\custom\particles\date.html.twig
templates\шаблонG5\custom\particles\date.yaml

Новое содержимое скопированного файла date.yaml:

Код
name: Дата
description: Показывает текущую дату.
type: particle
icon: fa-calendar

form:
  fields:
    enabled:
      type: input.checkbox
      label: Включено
      description: Включение даты в particles.
      default: true

    CSS.class:
      type: input.selectize
      label: CSS классы
      description: Укажите необходимые CSS классы.
      default: date

    date.formats:
      type: select.selectize
      label: Формат
      description: Выберите формат даты.
      default: D1
      placeholder: 'Выбрать...'
      selectize:
          allowEmptyOption: true
      options:
          'D0': Январь 2016
          'D1': 1 января 2016
          'D2': Пятница, 1 января 2016
          'D3': Пятница

Новое содержимое скопированного файла date.html.twig:

Код
{% extends '@nucleus/partials/particle.html.twig' %}

{% block particle %}

{% set ned = ['Воскресенье','Понедельник','Вторник','Среда','Четверг','Пятница','Суббота'] %}
{% set ms0 = ['','Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'] %}
{% set mes = ['','января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'] %}

{% set dn = "now"|date("j") %}
{% set nn = "now"|date("w") %}
{% set ms = "now"|date("n") %}
{% set gd = "now"|date("Y") %}
{% set frm = particle.date.formats %}

{% if frm == 'D0' %}{% set ddt = ms0[ms]~" "~gd %}{% endif %}
{% if frm == 'D1' %}{% set ddt = dn~" "~mes[ms]~" "~gd %}{% endif %}
{% if frm == 'D2' %}{% set ddt = ned[nn]~", "~dn~" "~mes[ms]~" "~gd %}{% endif %}
{% if frm == 'D3' %}{% set ddt = ned[nn] %}{% endif %}

    <div class="g-date">
        <span>{{ ddt }}</span>
    </div>

{% endblock %}
*

khan-alex

  • Давно я тут
  • 647
  • 30 / 1
Re: Русификация Gantry 5.0 Framework
« Ответ #8 : 16.08.2016, 12:48:06 »
Конечно через пень колоду, но работает:

скопировать файлы:
media\gantry5\engines\nucleus\particles\date.html.twig
media\gantry5\engines\nucleus\particles\date.yaml

в директорию: templates\шаблонG5\custom\particles\
пути новых файлов будут такие:
templates\шаблонG5\custom\particles\date.html.twig
templates\шаблонG5\custom\particles\date.yaml

Новое содержимое скопированного файла date.yaml:

Код
name: Дата
description: Показывает текущую дату.
type: particle
icon: fa-calendar

form:
  fields:
    enabled:
      type: input.checkbox
      label: Включено
      description: Включение даты в particles.
      default: true

    CSS.class:
      type: input.selectize
      label: CSS классы
      description: Укажите необходимые CSS классы.
      default: date

    date.formats:
      type: select.selectize
      label: Формат
      description: Выберите формат даты.
      default: D1
      placeholder: 'Выбрать...'
      selectize:
          allowEmptyOption: true
      options:
          'D0': Январь 2016
          'D1': 1 января 2016
          'D2': Пятница, 1 января 2016
          'D3': Пятница

Новое содержимое скопированного файла date.html.twig:

Код
{% extends '@nucleus/partials/particle.html.twig' %}

{% block particle %}

{% set ned = ['Воскресенье','Понедельник','Вторник','Среда','Четверг','Пятница','Суббота'] %}
{% set ms0 = ['','Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'] %}
{% set mes = ['','января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'] %}

{% set dn = "now"|date("j") %}
{% set nn = "now"|date("w") %}
{% set ms = "now"|date("n") %}
{% set gd = "now"|date("Y") %}
{% set frm = particle.date.formats %}

{% if frm == 'D0' %}{% set ddt = ms0[ms]~" "~gd %}{% endif %}
{% if frm == 'D1' %}{% set ddt = dn~" "~mes[ms]~" "~gd %}{% endif %}
{% if frm == 'D2' %}{% set ddt = ned[nn]~", "~dn~" "~mes[ms]~" "~gd %}{% endif %}
{% if frm == 'D3' %}{% set ddt = ned[nn] %}{% endif %}

    <div class="g-date">
        <span>{{ ddt }}</span>
    </div>

{% endblock %}
Ну отчего же через пень-колоду вполне рабочий вариант, только опять же нужно перекомпилировать стили в шаблоне и ещё раз настроить этот самый particle с датой.
*

vanguger

  • Осваиваюсь на форуме
  • 11
  • 6 / 0
Re: Русификация Gantry 5.0 Framework
« Ответ #9 : 20.08.2016, 09:21:01 »
Ну отчего же через пень-колоду вполне рабочий вариант, только опять же нужно перекомпилировать стили в шаблоне и ещё раз настроить этот самый particle с датой.

Я twig почти не знаю, написал как получилось, просто думаю, что можно сделать изящнее, но это нужно разбираться. В целом да, вариант рабочий, пользоваться можно ^-^
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Русификация Gantry 5.0 Framework
« Ответ #10 : 20.08.2016, 14:27:30 »
vanguger, от имени J-сообщества данного форума спасибо вам за проделанную работу :)
*

khan-alex

  • Давно я тут
  • 647
  • 30 / 1
Re: Русификация Gantry 5.0 Framework
« Ответ #11 : 23.08.2016, 14:35:17 »
vanguger, от имени J-сообщества данного форума спасибо вам за проделанную работу :)
Это наверно самый эффективный член форума: 4 сообщения, 4 + в карме! )))
*

johnyx

  • Новичок
  • 2
  • 0 / 0
Re: Русификация Gantry 5.0 Framework
« Ответ #12 : 15.09.2016, 11:31:33 »
Не судите строго перевел все что в папке "templates/g5_helium/blueprints/styles/" ну и перенес в "templates/g5_helium/custom/blueprints/styles/"

https://yadi.sk/d/gvnKpzi_vBhcE
*

vanguger

  • Осваиваюсь на форуме
  • 11
  • 6 / 0
Re: Русификация Gantry 5.0 Framework
« Ответ #13 : 16.09.2016, 06:14:45 »
Собственно, намёки в направлении полного перевода у рокетов имеются:
https://github.com/gantry/gantry5/wiki/Gantry-5-Agenda,-Exploration-and-Time-Travel
Возможно даже менеджер появится:

Значит, запасёмся терпением.

Ну, а пока, в продолжении темы перевода даты, предлагаю ешё один пример, который использует установленный по умолчанию язык из language/ru-RU/ru-RU.ini(ну или на любом другом языке из language/xx-XX/xx-XX.ini)

Файл 1(перевод в админке): /templates/G5_TEMPLATE/custom/admin/templates/forms/fields/select/date.html.twig

Код
{% extends 'forms/fields/select/selectize.html.twig' %}

{% block options %}
    {% for key, text in field.options %}
        <option
                {# required attribute structures #}
                {% if key == value %}selected="selected"{% endif %}
                value="{{ key }}"
                {# non-gloval attribute structures #}
                {% if field.options.disabled in ['on', 'true', 1] %}disabled="disabled"{% endif %}
                {% if field.options.label is defined %}label="{{ field.options.label }}"{% endif %}
                >{% if key is empty %}
                    {{ text }}
                 {% else %}
                    {% set f = key %}{% set d = '' %}
                    {% for i in 0..f|length %}
                        {% set d = d~'now'|date(f|slice(i, 1)|replace({'M': 'F###'}))|replace({'###': '_SHORT'})|upper|trans %}
                    {% endfor %}                
                    {{ d }}
                 {% endif %}
                </option>
    {% endfor %}
{% endblock %}

        
        
файл 2(частица даты): templates/G5_TEMPLATE/custom/particles/date.html.twig изменяем следующим образом:

Код
{% extends '@nucleus/partials/particle.html.twig' %}

{% block particle %}
{% set f = particle.date.formats|default('l, F d, Y') %}{% set d = '' %}
{% for i in 0..f|length %}
{% set d = d~'now'|date(f|slice(i, 1)|replace({'M': 'F'~'###'}))|replace({'###': '_SHORT'})|upper|trans %}
{% endfor %}
<div class="g-date">
<span>{{ d }}</span>
</div>
{% endblock %}

Файл 3(для перевода даты в частице материалов): /templates/G5_TEMPLATE/custom/particles/contentarray.html.twig

Код
{% extends '@nucleus/partials/particle.html.twig' %}

{% set attr_extra = '' %}
{% if particle.extra %}
    {% for attributes in particle.extra %}
        {% for key, value in attributes %}
            {% set attr_extra = attr_extra ~ ' ' ~ key|e ~ '="' ~ value|e('html_attr') ~ '"' %}
        {% endfor %}
    {% endfor %}
{% endif %}

{% block particle %}
    {% set article_settings = particle.article %}
    {% set filter = article_settings.filter %}
    {% set sort = article_settings.sort %}
    {% set limit = article_settings.limit %}
    {% set display = article_settings.display %}

    {# Category Finder #}
    {% set category_options = filter.categories ? {id: [filter.categories|split(','), 0]} : {} %}
    {% set categories = Joomla.finder('category', category_options).published(1).language().limit(0).find() %}

    {# Content Finder #}
    {% set article_finder = Joomla.finder('content').category(categories).published(1).language() %}

    {% set featured = filter.featured|default('include') %}
    {% if featured == 'exclude' %}
        {% do article_finder.featured(false) %}
    {% elseif featured == 'only' %}
        {% do article_finder.featured(true) %}
    {% endif %}

    {% set articles = article_finder.order(sort.orderby, sort.ordering).limit(limit.total).start(limit.start).find() %}

    {# All Articles #}
    <div class="g-content-array g-joomla-articles{% if particle.css.class %} {{ particle.css.class }}{% endif %}" {% if particle.extra %}{{ attr_extra|raw }}{% endif %}>

        {% for column in articles|batch(limit.columns) %}
            <div class="g-grid">
                {% for article in column %}

                    <div class="g-block">
                        <div class="g-content">
                            <div class="g-array-item">
                                {% if display.image.enabled and article.images.image_intro or article.images.image_fulltext %}
                                    {% if article.images.image_intro and display.image.enabled == 'intro' or display.image.enabled == 'show' %}
                                        <div class="g-array-item-image">
                                            <a href="{{ article.route }}">
                                                <img src="{{ url(article.images.image_intro) }}" {{ article.images.image_intro|imagesize|raw }} />
                                            </a>
                                        </div>
                                    {% elseif article.images.image_fulltext and display.image.enabled == 'full' %}
                                        <div class="g-array-item-image">
                                            <a href="{{ article.route }}">
                                                <img src="{{ url(article.images.image_fulltext) }}" {{ article.images.image_fulltext|imagesize|raw }} />
                                            </a>
                                        </div>
                                    {% endif %}
                                {% endif %}

                                {% if display.title.enabled %}
                                    <div class="g-array-item-title">
                                        <h3 class="g-item-title">
                                            <a href="{{ article.route }}">
                                                {{ display.title.limit ? article.title|truncate_text(display.title.limit) : article.title }}
                                            </a>
                                        </h3>
                                    </div>
                                {% endif %}

                                {% if display.date.enabled or display.author.enabled or display.category.enabled or display.hits.enabled %}
                                    <div class="g-array-item-details">
                                        {% if display.date.enabled %}
                                            {% set f = display.date.format %}{% set d = '' %}
                                            <span class="g-array-item-date">
                                                {% if display.date.enabled == 'published' %}
                                                    {% set sd = article.publish_up %}
                                                {% elseif display.date.enabled == 'modified' %}
                                                    {% set sd = article.modified %}
                                                {% else %}
                                                    {% set sd = article.created %}
                                                {% endif %}
                                                {% for i in 0..f|length %}
                                                    {% set d = d~sd|date(f|slice(i, 1)|replace({'M': 'F###'}))|replace({'###': '_SHORT'})|upper|trans %}
                                                {% endfor %}
                                                {{ d }}
                                            </span>
                                        {% endif %}

                                        {% if display.author.enabled %}
                                            <span class="g-array-item-author">
                                                <i class="fa fa-user"></i>{{ article.author.name }}
                                            </span>
                                        {% endif %}

                                        {% if display.category.enabled %}
                                            {% set category_link = display.category.enabled == 'link' %}
                                            <span class="g-array-item-category">
                                                {% for category in article.categories %}
                                                    {% if category_link %}
                                                        <a href="{{ category.route }}">
                                                            <i class="fa fa-folder-open"></i>{{ category.title }}
                                                        </a>
                                                    {% else %}
                                                        <i class="fa fa-folder-open"></i>{{ category.title }}
                                                    {% endif %}
                                                {% endfor %}
                                            </span>
                                        {% endif %}

                                        {% if display.hits.enabled %}
                                            <span class="g-array-item-hits">
                                                <i class="fa fa-eye"></i>{{ article.hits }}
                                            </span>
                                        {% endif %}
                                    </div>
                                {% endif %}

                                {% if display.text.type %}
                                    {% set article_text = display.text.type == 'intro' ? article.introtext : article.text %}
                                    <div class="g-array-item-text">
                                        {% if display.text.formatting == 'text' %}
                                            {{ article_text|truncate_text(display.text.limit)|raw }}
                                        {% else %}
                                            {{ article_text|truncate_html(display.text.limit)|raw }}
                                        {% endif %}
                                    </div>
                                {% endif %}

                                {% if display.read_more.enabled %}
                                    <div class="g-array-item-read-more">
                                        <a href="{{ article.route }}">
                                            <button class="button{% if display.read_more.css %} {{ display.read_more.css }}{% endif %}">{{ display.read_more.label|default('Read More...') }}</button>

                                        </a>
                                    </div>
                                {% endif %}
                            </div>
                        </div>
                    </div>

                {% endfor %}
            </div>
        {% endfor %}
    </div>

{% endblock %}
« Последнее редактирование: 16.10.2016, 21:55:11 от vanguger »
*

johnyx

  • Новичок
  • 2
  • 0 / 0
Re: Русификация Gantry 5.0 Framework
« Ответ #14 : 14.10.2016, 07:33:11 »
в новой версии 5.3.6 они сделали перевод для некоторых полей надо понимать Add initial support for translating form field label and description (#84)
только не понятно как это работает, пролейте свет на сей момент кто разобрался.
*

vanguger

  • Осваиваюсь на форуме
  • 11
  • 6 / 0
Re: Русификация Gantry 5.0 Framework
« Ответ #15 : 16.10.2016, 21:37:02 »
Это кстати с моей подачи они двинулись. Всё началось с того, что я подумал, пока их дождёшься, легче написать плагин самому, который позволит переводить из стандартных языковых файлов, при этом не трогая файлы yaml. Но, меня ждал сюрприз, добавление нового twig фильтра в админке, не удавалось, что я только не пробовал. Обсуждали эту тему с Матиасом. В итоге выявили баг, который закрывал эту проблему в версии 5.3.6+ Кстати Матиас мне очень понравился как человек, очень хороший отзывчивый, добрый, легко пошёл на диалог.
Кому интересно подключение своих функций и фильтров twig, здесь в конце описано:
https://github.com/gantry/gantry5/issues/1584

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

В 5.3.6 чтобы увидеть константы в админке шаблона, нужно зайти в основные настройки Joomla и включить отладку языка. перейти в шаблон, в частицах и основных настройках, вместо слов будут константы. Эти константы можно переводить стандартным способом, в файле локализации administrator/language/ru-RU/ru-RU.com_gantry5.ini


Был введён новый фильтр для формирования констант. Сейчас их формирование примерно следующее:
{{ block.name|trans_key(block.name, 'TITLE') }}
Что создаёт константу: GANTRY5_BASE_STYLES_TITLE

В данной версии 5.3.6 этот фильтр задействован только в одном файле twig, хотя для полного перевода я насчитал их около 15. Из переписки стало ясно, что акцент на полноценном переводе будет делаться в версиях 5.4-5.5 Хотя на мой взгляд работы там на один вечер.
« Последнее редактирование: 16.10.2016, 22:05:59 от vanguger »
*

Fassendek

  • Осваиваюсь на форуме
  • 25
  • 0 / 1
Re: Русификация Gantry 5.0 Framework
« Ответ #16 : 01.10.2017, 08:38:12 »
С русификаторами всегда была проблема. Особенно если он осуществляется через платформу transifex.com  (10 человек с разных концов света осуществляют вразнобой перевод какого-то компонента, а курирует их товарищ из Тувалу или Зимбабве, например, напрочь не понимающий русского языка. Притом 8 и 10 переводчиков "переводят" компонент, чтобы получить халявную подписку на него. Переводы отвратительные, неграмотные и не соответствуют иногда сути оригинала!). Народ привык получать деньги на халяву, при этом, ничего не сделав и не вложив!
Русификатор GANTRY 5, т.е. самого движка можете посмотреть по предложенной ссылке. Но это лишь минимум. Так как языковые ключи выносятся в отдельные языковые файлы разработчиками фреймворка постепенно. И перевода требует установленный (устанавливаемый) шаблон на Gantry 5, иначе перевод выглядит убого. Энтузиастов мало, хотя проект GANTRY очень интересный. Если кто интересуется этим фреймворком и есть идеи - пишите в личку, обсудим  ^-^
*

khan-alex

  • Давно я тут
  • 647
  • 30 / 1
Re: Русификация Gantry 5.0 Framework
« Ответ #17 : 04.10.2017, 15:33:19 »
Ну что ж, попробовал - предложенная версия то же не плоха и устанавливается стандартно через менеджер установки расширений!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Framework с поддержкой PHP 8x

Автор KingSnake

Ответов: 3
Просмотров: 573
Последний ответ 07.12.2022, 13:18:37
от marksetter
Помощь по framework Astroid

Автор KingSnake

Ответов: 25
Просмотров: 2396
Последний ответ 18.02.2022, 14:17:14
от KingSnake
Куда писать unset CSS в Gantry 5 - шаблон Helium?

Автор romagromov

Ответов: 1
Просмотров: 482
Последний ответ 27.04.2021, 16:51:32
от romagromov
gantry 5 kraken

Автор vova630

Ответов: 0
Просмотров: 520
Последний ответ 10.04.2020, 21:11:42
от vova630
Gantry 5 и template override

Автор romagromov

Ответов: 0
Просмотров: 604
Последний ответ 05.04.2020, 18:41:25
от romagromov