27 июня | 2024г. | 20:53:12


АвторТема: 5. Локализация плугинов  (Прочитано 3620 раз)

0 Пользователей и 1 Гость смотрят эту тему.

Оффлайн DobrodelАвтор темы

  • Друзья Джедаев
  • *****
  • Сообщений: 159
  • Поблагодарили: 259
  • Уважение: -1
5. Локализация плугинов
« Первое сообщение: 17 февраля | 2014г. | 14:42:13 »
0
Друзья, здравствуйте
Сегодня хочу поделиться тем опытом, который имею относительно локализации плугинов.
Очень хороший обзор по разработке плагинов вообще и локализации в частности, сделал участник данного форума, уважаемый ака Учкун. Ознакомиться с его описанием Вы можете здесь.
Здесь я постараюсь чуть подробнее остановиться на этой теме.
Итак, для начала осветим задачу:
Цитировать
1. Написать код, который был бы легок в использовании (раз написал и забыл) и позволял решить вопрос локализации наших разработок.
2. Выбрать инструмент для осуществления перевода и правки файлов с расширением «.po» и последующей их конвертации в файлы с расширением «.mo».

Немного теории:

Вся технология переводов во многих языках высокого уровня (Python, Java и пр.) основана на использовании инструмента под названием gettext. Именно этот пакет утилит, позволяет осуществлять необходимые преобразования наших файлов в нужный формат.
Сама система построена следующим образом:

1. Пишется функция для осуществления поиска наших строк в неком файле с системным расширением «.po». Как правило эта функция имеет название нижнее подчёркивание или «_». Как пример:
_(«This is my plugin»). Она как правило стандартна и рассмотрена мною ниже.

2. Файл с расширением «.po» имеет конкретную структуру, в которой описываются, кто, когда и контакты для случайной связи))) далее следуют строки с самим текстом и их переводом. Пример файла вложен в архив.

3. Файл с расширением «po» ищется в конкретной директории,  например /usr/lib/enigma2/python/Plugins/Extension/MyPlugin/locale/, плюс к ней система прибавляет папку с именем языка выбранного в нашей оболочке enigma2 и папку LC_MESSAGES.

Другими словами, файл с переводом, в нашем случае, будет искаться в папке /usr/lib/enigma2/python/Plugins/Extension/MyPlugin/locale/ru/LC_MESSAGES/
Естественно всё эти папки необходимо создать, так же как и сам файл с переводом.

4. Далее система компилирует найденный файл в двоичный файл с расширением «.mo» и затем при работе использует именно его.

Пару слов о самой функции перевода:
Её можно сохранить в файле под названием Translation.py и затем включать его в каждый свой модуль (описано чуть ниже).

Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
После чего в каждый модуль нашего проекта (читай файл проекта) мы добавляем следующую строчку кода импорта:

Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Чем мы и обеспечим автоматический перевод всех срок наших модулей, с встречающейся функцией _().

Таким образом, чтобы осуществить перевод наших текстов нам нужно:
              1. Написать функцию с именем _() в качестве стандарта ( или любым другим именем).
              2. Сохранить её в файл и добавлять строку импорта в каждый свой модуль (см. выше).
              3. Создать в нужном месте (см. выше) и заполнить файл с переводом, с расширением «.po».
              4. Скомпилировать файл перевода в двоичный файл с расширением "mo"

Как видите все очень просто и понятно, кроме пунктов 3 и 4. И об этом чуть ниже:

Программы для редактирования файлов PO:

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

Одно из самых популярных решений это инструмент под названием PoEdit. Скачиваем его по ссылке и устанавливаем. Существует платная версия продукта и есть бесплатная. Скачиваем по вышеприведённой ссылке пакет для свой платформы (для платной и бесплатной версии он один и тот же). Можно купить и платную версию, которая добавит подсчёт срок, более тесную интеграции с WorldPress и конечно поддержку.



Если Вам этого всего не надо, то не покупаем версию Pro и пользуемся обыкновенным вариантом (на текущий момент версия 1.6.4).
Итак, как ее использовать? Открываем и в меню выбираем пункт File->New.
Выбираем язык нашего проекта и далее выбираем в окне пункт Extract from sources



После чего сохраняем наш создаваемый файл перевода, заходим в File->Save, иначе мы не сможем работать дальше и далее заполняем данные о нашем проекте:



Вот здесь есть некое неудобство - путь до Вашего проекта необходимо заполнить руками. Почему так сделано - не ведаю. Другими словами заполняем наш путь, например /Volumes/MyProject/MyPlugin , где /Volumes/MyProject это точка монтирования раздела на ресивере, по протоколу samba или AFP (Apple Netatalk), где хранится мой проект (об этом чуть подробнее Вы найдете информацию здесь). А MyPlugin это конкретная папка в котором находятся файлы разрабатываемого Вами расширения.



Затем переходим во вкладку Ключевые слова и вводим название нашей функции для перевода, в нашем случае - это знак нижнего подчёркивания: _:



Затем переходим на вкладку Translation properties и заполняем по своему усмотрению следующие поля:



Далее жмём кнопку Ок и в открывшемся окне видим найденные, во всех файлах, по указанному нами ранее пути, фразы, которые нам нужно перевести. Далее мы заполняем в нижнем поле перевод каждой фразы.



Внимательно следим за тем, чтобы не была активна клавиша «Неточно», в противном случае мы не сможем сохранить результат. Если все же она активна, то нажимаем на иконку «Неточно» ещё раз.
Потом обязательно жмём клавишу Save.
И если в настройках программы установлена галочка «При сохранении автоматически компилировать файл .mo»



То рядом с нашим файлом перевода появится скомпилированный файл с расширением mo.
Если у Вас появляются новые фразы, то просто нажимаем иконку Обновить и заполняем появившиеся новые фразы.

Вроде всё тонкие моменты осветил. Если есть вопросы пишите)))
Удачи всем.

Добавлено  17 февраля | 2014г. | 17:18:30
в продолжении темы...
Совсем забыл упомянуть о расширении в среде разработки Eclipse, которое так же помогает работать с файлами локализации: это gted (сайт разработчика).

После его установки, в меню Help->Eclipse Marketplace..., его можно настроить в основном меню Eclipse.



А так же в настройках контекстного меню, при нажатии правой клавиши мыши на имени нашего проекта и выбрав пункт меню Properties, увидим такое окно:



Настроив всё, как надо, теперь мы можем воспользоваться созданием файлов локализации, выбрав в ниспадающем меню, которое появляется при нажатии на имени проекта правой клавиши мыши, пункт gted->Update PO files:



И далее открываем обновлённый файл и вводим сроки перевода прямо в Eclipse.

Цитировать
Единственный и самый главный недостаток этого метода, который заставляет меня ипользовать программу PoEdit, так это то, что мне необходимо устанавливать почти 1Gb файлов для установки Пакета разработчика, который содержит маленькую программку gettext, которая необходима для работы, описанного мною выше расширения.


  • Vu Duo+ (GI S9895 HD), LiveX (ruDream), 13E, 36E
С Уважением, Добродел

Теги:
 

Похожие темы

  Тема / Автор Ответов Последний ответ
174 Ответов
285496 Просмотров
Последний ответ 30 марта | 2023г. | 18:34:10
от Durimar
37 Ответов
20082 Просмотров
Последний ответ 10 ноября | 2020г. | 16:42:03
от obladatel
12 Ответов
8078 Просмотров
Последний ответ 12 января | 2021г. | 18:59:20
от hecha71
389 Ответов
118750 Просмотров
Последний ответ 08 ноября | 2021г. | 17:57:46
от Shar_Nir
8 Ответов
5391 Просмотров
Последний ответ 18 сентября | 2020г. | 19:02:58
от arion75



X

Добро пожаловать!

Мы заметили, что у Вас установлено расширение AdBlock или ему подобное. Пожалуйста добавьте наш Клуб в белый список, внесите этим посильную лепту в его развитие. Спасибо!