Автор Тема: ATT - Инструмент добавления мультиязычности в скрипт  (Прочитано 6728 раз)

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

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8070
  • Репутация: 2311
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
ATT - Application Translate Tool
v0.2 (alpha)


Нажмите для отображения изображения в оригинальном размере.  Нажмите для отображения изображения в оригинальном размере.

Скачать (10.4 kb)




Предисловие
Идея началась с того, что я решил перевести утилиту Control Viewer от Yashied.
Начал я её переводить руками с применением AppTranslation Module который я же и написал ранее, но в процессе перевода я сильно задумался, а что если всё это дело автоматизировать?
Естественно я понимал что полностью автоматически добавить модуль не получится, т.к довольно сложно программно отличить текстовые строки, надлежащие переводу, от других строк, которые используются разными функциями (структуры, строковые параметры и т.п.).
В начале я сильно сомневался и думал что мне это не по силу, но я всё таки решился на этот подвиг и уселся писать этот инструмент.



Принцип работы:
* Утилита получив на входе путь к файлу, делит его на строки.
* Далее из каждой строки получает подстроки находящиеся между одиночными и двойными кавычками (спасибо asdf8).
* Для этих подстрок формируется элемент списка (ListViewItem) с некоторыми исключениями (см. далее).
* Используя предопределённый шаблон (Ignore Lines Patterns), утилита определяет какие строки помещать в список, а какие нет.
* Часть строк, также используя другой предопределённый шаблон (Marked Lines Patterns), помечается спец. маркером (зелёная стрелка слева у пункта в списке), эти строки имеют высокий приоритет перевода, т.е вероятней всего они должны быть переведены.
* По завершению обработки в соответствии с выбранными параметрами, в каталог выбранного скрипта добавляются файлы:
  UDFs\Translation.au3 - Модуль перевода.
  Languages\English.lng, Russian.lng - Файлы содержащие строки для перевода.
* Для удобного переключения между языками, в ваш скрипт можно добавить вызов функции _AppTranslation_SelectLangGUI в связке с_AppTranslation_Register, которые определены в Translation.au3:
Код: AutoIt [Выделить]
$sDefLng = _AppTranslation_SelectLangGUI('My App', $hGUI, $sDefLng)
$aTXT = _AppTranslation_Register($LANGS_DIR & "\" & $sDefLng & ".lng")



Использование:
* На первом этапе (при запуске) указываете параметры модуля перевода...

Цитировать
Au3 Script: Путь до входного скрипта (тот в который следует добавить модуль мультиязыковой поддержки)
Translate Array Name: Имя массива переведённых строк (используется как $aTXT[$iMSG_%s])
Array Msg Format: Формат переменной используемой как индекс массива ($iMSG_%s, %s заменяется на текст образуемый с подстроки учитывая разрешённые символы в имени переменной)
Module File Path Format: Формат пути к файлу модуля перевода (%s\UDFs\Translation.au3, %s заменяется на полный путь к каталогу в котором содержится указанный скрипт (Au3 Script:))
Language File Path Format: Формат пути к файлу перевода используемый модулем (%s\Languages\%d.lng, %s заменяется на полный путь к каталогу в котором содержится указанный скрипт (Au3 Script:), %d заменяется на имя языка из списка языков (Languages:))
Languages: Список языков которые будет поддерживать ваша программа
Default Language: Язык по умолчанию который будет использоваться программой
Marked Lines Patterns: Шаблоны регулярного выражения для пометки строк спец. маркером (зелёная стрелка слева у пункта в списке), эти строки имеют высокий приоритет перевода
Ignore Lines Patterns: Шаблоны регулярного выражения которые определяют какие строки помещать в список, а какие нет

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

* Теперь всё что осталось сделать, так это собственно перевести сами строки в файлах перевода (Languages\Russian.lng).



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


P.S.
Первый результат работы данной утилиты.
« Последнее редактирование: Август 08, 2012, 14:21:24 от CreatoR »


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Русское сообщество AutoIt


Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8070

  • Автор темы
  • Репутация: 2311
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
Это кому то нужно? :think:

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8070

  • Автор темы
  • Репутация: 2311
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
Немного обновил инструмент.
Исправил проблему связанную с неправильным отображением номера строки при включённой опции игнорирования комментированных строк, что естественно вызывало неправильную обработку и замену строк.

Русское сообщество AutoIt

Re: ATT - Инструмент добавления мультиязычности в скрипт
« Ответ #2 Отправлен: Май 09, 2012, 14:33:45 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8070

  • Автор темы
  • Репутация: 2311
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
Проблема с переводом программы в которой строки уже прописаны не латинскими символами, например по русский.
Переменные переводимых строк получают названия типа $iMSG__1 и т.п.

Думал может проверять на отсутствие латиницы, и если не найдена, конвертировать транслитом, вот только как быть с другими языками, не русскими? :think:

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8070

  • Автор темы
  • Репутация: 2311
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
Обновление!

Цитировать
v0.2
+ Добавлена поддержка повторного перевода. Позволяет перевести новые добавленные строки в главном скрипте.
+ Добавлена командная строка в шаблон файла перевода для поддержки генерации нового файла перевода.
   Если ваша программа запущена с параметром "/GenerateLangFile:LangName", то будет генерирован файл перевода в виде LangName.lng (в установленной папке языковых файлов).
   Полезно в случае если пользователь хочет создать новый файл перевода, а также если требуется обновить программу с сохранением внесённых им изменений в файлы перевода (только новые строки будут добавлены в указанный файл перевода).
+ Теперь имя функции/переменной в которой найдена строка, добавляется как префикс в переменные перевода.
* Небольшие изменения в шаблонах.
* Исправлена проблема с неправильным определением номера строк.

Русское сообщество AutoIt

Re: ATT - Инструмент добавления мультиязычности в скрипт
« Ответ #4 Отправлен: Август 08, 2012, 14:29:47 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
87 Ответов
69955 Просмотров
Последний ответ Апрель 02, 2015, 06:54:02
от madmasles
9 Ответов
8023 Просмотров
Последний ответ Май 29, 2010, 00:48:55
от CreatoR
7 Ответов
6062 Просмотров
Последний ответ Май 31, 2010, 08:27:24
от CreatoR
6 Ответов
5291 Просмотров
Последний ответ Февраль 13, 2011, 13:47:14
от Viktor217
1 Ответов
7495 Просмотров
Последний ответ Январь 20, 2011, 01:29:12
от `p r o x y
1 Ответов
5860 Просмотров
Последний ответ Январь 17, 2014, 00:33:21
от Skif_off
1 Ответов
2151 Просмотров
Последний ответ Апрель 27, 2013, 00:05:41
от Sky-WaLkeR
4 Ответов
2030 Просмотров
Последний ответ Ноябрь 08, 2014, 21:57:09
от Garrett
1 Ответов
363 Просмотров
Последний ответ Ноябрь 16, 2017, 22:26:56
от joiner
3 Ответов
424 Просмотров
Последний ответ Март 10, 2018, 11:46:17
от InnI