Форум русской поддержки Joomla!® CMS
06.12.2016, 10:08:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Русификация Gantry 5.0 Framework

 (Прочитано 2104 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ArturC
Давно я тут
****

Репутация: +16/-1
Offline Offline

Пол: Мужской
Сообщений: 255



« : 04.07.2015, 23:00:02 »

Наверное многие уже знают о конструкторе от Gantry 5.0 Framework Не могу найти как русифицировать. Есть ли вообще на него русик?
Записан
AlekVolsk
Профи
********

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6456



« Ответ #1 : 05.07.2015, 01:04:27 »

Нет, ни на один импортный шаблонный фреймворк локализаций нет вообще никаких, не только русской. Многое вшито прямо в код, потому локализации либо не поддается либо она слетает при обновлении фреймворка.
Записан
KKAAZZOO
Практически профи
*******

Репутация: +101/-9
Offline Offline

Сообщений: 2084


« Ответ #2 : 05.07.2015, 10:00:27 »

Нет, ни на один импортный шаблонный фреймворк локализаций нет вообще никаких, не только русской.

Неправду говорите:-)
Записан
oberon2005
Новичок
*

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 7



« Ответ #3 : 08.12.2015, 12:00:30 »

Неправду говорите:-)
Докажи!Я бы от русика не отказался
Записан
KKAAZZOO
Практически профи
*******

Репутация: +101/-9
Offline Offline

Сообщений: 2084


« Ответ #4 : 08.12.2015, 12:40:07 »

Докажи!Я бы от русика не отказался

Доказать что?
Записан
vanguger
Новичок
*

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 8



« Ответ #5 : 08.06.2016, 14: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, 14:20:02 от vanguger » Записан
khan-alex
Осваиваюсь на форуме
***

Репутация: +6/-1
Offline Offline

Сообщений: 173


« Ответ #6 : 17.06.2016, 20:18:39 »

А как в таком случае перевести дату из стандартного модуля Gantry5 Particles Date ну например тут (чуть ниже поиска по сайту). Искал во всех файлах локализации и в (как только что узнал) файлах .yaml - ничего похожего! Что называется - HELP!  !  Grin 
Записан
vanguger
Новичок
*

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 8



« Ответ #7 : 14.08.2016, 17:05:51 »

А как в таком случае перевести дату из стандартного модуля Gantry5 Particles Date ну например тут (чуть ниже поиска по сайту). Искал во всех файлах локализации и в (как только что узнал) файлах .yaml - ничего похожего! Что называется - HELP!  !  Grin 

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

скопировать файлы:
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
Осваиваюсь на форуме
***

Репутация: +6/-1
Offline Offline

Сообщений: 173


« Ответ #8 : 16.08.2016, 13: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
Новичок
*

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 8



« Ответ #9 : 20.08.2016, 10:21:01 »

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

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

Репутация: +316/-3
Offline Offline

Пол: Мужской
Сообщений: 6456



« Ответ #10 : 20.08.2016, 15:27:30 »

vanguger, от имени J-сообщества данного форума спасибо вам за проделанную работу Azn
Записан
khan-alex
Осваиваюсь на форуме
***

Репутация: +6/-1
Offline Offline

Сообщений: 173


« Ответ #11 : 23.08.2016, 15:35:17 »

vanguger, от имени J-сообщества данного форума спасибо вам за проделанную работу Azn
Это наверно самый эффективный член форума: 4 сообщения, 4 + в карме! )))
Записан
johnyx
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 2


« Ответ #12 : 15.09.2016, 12:31:33 »

Не судите строго перевел все что в папке "templates/g5_helium/blueprints/styles/" ну и перенес в "templates/g5_helium/custom/blueprints/styles/"

https://yadi.sk/d/gvnKpzi_vBhcE
Записан
vanguger
Новичок
*

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 8



« Ответ #13 : 16.09.2016, 07:14:45 »

Собственно, намёки в направлении полного перевода у рокетов имеются:
https://github.com/gantry/gantry5/wiki/Gantry-5-Agenda,-Exploration-and-Time-Travel
Возможно даже менеджер появится:
https://cloud.githubusercontent.com/assets/11734/7761411/5e6b1a92-ffda-11e4-8211-15230193c40c.jpg
Значит, запасёмся терпением.

Ну, а пока, в продолжении темы перевода даты, предлагаю ешё один пример, который использует установленный по умолчанию язык из 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, 22:55:11 от vanguger » Записан
johnyx
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 2


« Ответ #14 : 14.10.2016, 08:33:11 »

в новой версии 5.3.6 они сделали перевод для некоторых полей надо понимать Add initial support for translating form field label and description (#84)
только не понятно как это работает, пролейте свет на сей момент кто разобрался.
Записан
vanguger
Новичок
*

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 8



« Ответ #15 : 16.10.2016, 22: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, 23:05:59 от vanguger » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet