
РЕЦЕПТ: русские символы в скриптах
Добрый день, коллеги.
Данный рецепт направлен на решение проблемы невозможности запуска из файла или слотов скриптов, содержащих русские символы. Такие символы могут содержаться в названиях полей, именах файлов и т.п.
Решение не слишком изящное, но работающее. Идея состоит в том, чтобы в самом файле скрипта русские символы транслитерировать английскими и преобразовывать их обратно в русские непосредственно перед использованием.
Вот в этом файле Translation.py содержатся две функции:
detranslate(исходная строка) - преобразовывает в русские символы всю строку ('Korova' -> 'Корова')
dt_stroke(исходная строка) - преобразовывает в русские символы, заключенные в фигурные скобки ({}) ('{Korova} says Moo, {deti!shki}' -> 'Корова says Moo, детишки')
Этот файл надо поместить в папку библиотек Micromine (у меня это "C:\Program Files (x86)\Micromine 2013\Python\lib\")
Правила транслитерации немного отличаются от обычных:
А-A а-a
Б-B б-b
В-V в-v
Г-G г-G
Д-D д-d
Е-E е-e
Ё-!YO ё-!yo
Ж-!ZH ж-!zh
З-Z з-z
И-I и-i
Й-Y й-y
К-K к-k
Л-L л-l
М-M м-m
Н-N н-n
О-O о-o
П-P п-p
Р-R р-r
С-S с-s
Т-T т-t
У-U у-u
Ф-F ф-f
Х-H х-h
Ц-!TS ц-!ts
Ч-!CH ч-!ch
Ш-!SH ш-!sh
Щ-!SCH щ-!sch
Ь-!`(обратный апостроф) ь-`
Ы-!YY ы-!yy
Ъ-!~ ъ-~
Э-!YE э-!ye
Ю-!YU ю-!yu
Я-!YA я-!ya
Использование:
1. Импортируйте модуль Transaltion
2. Используйте одну из функций преобразования
Пример 1 (теоритический):
print ('Hello World! Прощай, жестокий мир')
Запускается только в редакторе скриптов.
import Translation
print (Translation.dt_string('Hello World! {Pro!schay, !zhestokiy mir!}'))
Запускается в редакторе скриптов, из файла или слота.
Пример 2 (кусок из рабочего скрипта):
...
WsLoadStrings_FormSet1.set_field("Z_VARB","ВЫСОТА")
...
Запускается только в редакторе скриптов.
import Translation
...
WsLoadStrings_FormSet1.set_field("Z_VARB",Translation.dt_string("{V!YYSOTA}"))
...
Запускается в редакторе скриптов, из файла или слота.
Буду рад, если рецепт кому-то пригодится.
Customer support service by UserEcho
Интересное решение, пока слоты не работают корректно. В третьем сервис паке эта проблема решена
Александр, огромное спасибо! Действительно интересное и полезное решение!