[Lua, Программирование] Транслитерация русского текста для отправки сообщений в Телеграмм из Микротик РоутерОС
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Недавно я написал функцию-конвертер для отправки сообщений на русском языке в Телеграмм из Микротик РоутерОС, о чём сообщил здесь.
Теперь работа дополнена созданием также функции транслитерации, выполняющей преобразование строки русского текста в транслит латиницы. При этом если в строке присутствуют латинские символы, то они не транслируются, то есть функции можно передавать в качестве аргумента смешанную строку символов и слов.
Преобразование символов происходит согласно ГОСТ 7.79-2000 (система Б). Особые правила транслитерации имён не учитываются, за исключением особого преобразования окончаний «ЬЕ» траслитерируется как «IE» и «ЫЙ» как «IJ».
Ниже приведет полный код функции:
# Function Translite of Russian characters for sending in Telegram
# by Sertik 16/09/2020
# usage [$FuncTransliteToTele "Строка String .,!+"]
:global FuncTransliteToTele do={
:global string; :set $string $1;
# table of the codes of Russian letters Translite
:local rsimv [:toarray {"А"="A"; "Б"="B"; "В"="V"; "Г"="G"; "Д"="D"; "Е"="E"; "Ж"="ZH"; "З"="Z"; "И"="I"; "Й"="J"; "К"="K"; "Л"="L"; "М"="M"; "Н"="N"; "О"="O"; "П"="P"; "Р"="R"; "С"="S"; "Т"="T"; "У"="U"; "Ф"="F"; "Х"="KH"; "Ц"="C"; "Ч"="CH"; "Ш"="SH"; "Щ"="SCH"; "Ъ"="``"; "Ы"="Y`"; "Ь"="`"; "Э"="E`"; "Ю"="JU"; "Я"="YA"; "а"="a"; "б"="b"; "в"="v"; "г"="g"; "д"="d"; "е"="e"; "ж"="zh"; "з"="z"; "и"="i"; "й"="j"; "к"="k"; "л"="l"; "м"="m"; "н"="n"; "о"="o"; "п"="p"; "р"="r"; "с"="s"; "т"="t"; "у"="u"; "ф"="f"; "х"="kh"; "ц"="c"; "ч"="ch"; "ш"="sh"; "щ"="sch"; "ъ"="``"; "ы"="y`"; "ь"="`"; "э"="e`"; "ю"="ju"; "я"="ya"; "Ё"="Yo"; "ё"="yo"; "№"="#"}]
# encoding of the symbols and аssembly line
:local StrTele ""; :local code "";
:for i from=0 to=([:len $string]-1) do={:local keys [:pick $string $i (1+$i)];
:local key ($rsimv->$keys); if ([:len $key]!=0) do={:set $code ($rsimv->$keys);} else={:set $code $keys};
:if (($keys="Ь") and ([:pick $string ($i+1) (2+$i)]="Е")) do={:set $code "I"; :set $i ($i+1)}
:if (($keys="ь") and ([:pick $string ($i+1) (2+$i)]="е")) do={:set $code "i"; :set $i ($i+1)}
:if (($keys="Ь") and ([:pick $string ($i+1) (2+$i)]="е")) do={:set $code "I"; :set $i ($i+1)}
:if (($keys="ь") and ([:pick $string ($i+1) (2+$i)]="Е")) do={:set $code "i"; :set $i ($i+1)}
:if (($keys="Ы") and ([:pick $string ($i+1) (2+$i)]="Й")) do={:set $code "I"; :set $i ($i+1)}
:if (($keys="ы") and ([:pick $string ($i+1) (2+$i)]="й")) do={:set $code "i"; :set $i ($i+1)}
:if (($keys="ы") and ([:pick $string ($i+1) (2+$i)]="Й")) do={:set $code "i"; :set $i ($i+1)}
:if (($keys="Ы") and ([:pick $string ($i+1) (2+$i)]="й")) do={:set $code "I"; :set $i ($i+1)}
:set $StrTele ("$StrTele"."$code")}
:set $string $StrTele
:return $string;
}
Вот пример работы:
:local string [$FuncTransliteToTele "Привет от Микротик ! Работает функция-транслитератор Russian alfabit для Telegramm. Заяц Белый"]
:log warning $string
Вывод в логе:
Privet ot Mikrotik! Rabotaet funksiya-konverter Russian-alfabit dliya Telegramm. Zayac beliy.
Пользователь может поправить таблицу транслитерации под используемый им стандарт. Надеюсь кому-то пригодится. Теперь можно быть спокойным за пересылку русских сообщений в Телеграмм как с помощью конвертации по кодам UTF-8 с помощью моей функции конвертера отсюда так и транслитерацией.
===========
Источник:
habr.com
===========
Похожие новости:
- [JavaScript, Node.JS, Программирование, Разработка веб-сайтов] Web Cryptography API: пример использования
- [Карьера в IT-индустрии, Программирование, Учебный процесс в IT] «Раньше я не представлял лекции в МГУ по Zoom». Интервью с преподавателем Техносферы
- [Высокая производительность, Программирование, Проектирование и рефакторинг] Почему так важна иммутабельность (перевод)
- [Программирование, Управление разработкой, Управление персоналом, Карьера в IT-индустрии] Как начать подгорать, но не выгореть в проекте, где «было срочно нужно»
- [Информационная безопасность, Программирование] Безопасность через неясность недооценивается (перевод)
- [IT-эмиграция, Изучение языков, Программирование] Как российский разработчик уехал в Австралию. История Юрия Галустова
- [JavaScript, Программирование, Разработка веб-сайтов] JavaScript: парочка задач на знание рекурсии
- [Системы обмена сообщениями, Python, Программирование, Анализ и проектирование систем] Система отложенного исполнения на RabbitMQ
- [.NET, Программирование] Принятого не воротай: Enumerable vs List
- [Программирование, Разработка под Android, Разработка мобильных приложений] 20 инструментов Android-разработчика, о которых вы могли не знать (перевод)
Теги для поиска: #_lua, #_programmirovanie (Программирование), #_mikrotik (Микротик), #_transliteratsija_russkih_simvolov (транслитерация русских символов), #_soobschenija_dlja_telegramm (сообщения для Телеграмм), #_lua, #_programmirovanie (
Программирование
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 16-Ноя 12:33
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Недавно я написал функцию-конвертер для отправки сообщений на русском языке в Телеграмм из Микротик РоутерОС, о чём сообщил здесь. Теперь работа дополнена созданием также функции транслитерации, выполняющей преобразование строки русского текста в транслит латиницы. При этом если в строке присутствуют латинские символы, то они не транслируются, то есть функции можно передавать в качестве аргумента смешанную строку символов и слов. Преобразование символов происходит согласно ГОСТ 7.79-2000 (система Б). Особые правила транслитерации имён не учитываются, за исключением особого преобразования окончаний «ЬЕ» траслитерируется как «IE» и «ЫЙ» как «IJ». Ниже приведет полный код функции: # Function Translite of Russian characters for sending in Telegram
# by Sertik 16/09/2020 # usage [$FuncTransliteToTele "Строка String .,!+"] :global FuncTransliteToTele do={ :global string; :set $string $1; # table of the codes of Russian letters Translite :local rsimv [:toarray {"А"="A"; "Б"="B"; "В"="V"; "Г"="G"; "Д"="D"; "Е"="E"; "Ж"="ZH"; "З"="Z"; "И"="I"; "Й"="J"; "К"="K"; "Л"="L"; "М"="M"; "Н"="N"; "О"="O"; "П"="P"; "Р"="R"; "С"="S"; "Т"="T"; "У"="U"; "Ф"="F"; "Х"="KH"; "Ц"="C"; "Ч"="CH"; "Ш"="SH"; "Щ"="SCH"; "Ъ"="``"; "Ы"="Y`"; "Ь"="`"; "Э"="E`"; "Ю"="JU"; "Я"="YA"; "а"="a"; "б"="b"; "в"="v"; "г"="g"; "д"="d"; "е"="e"; "ж"="zh"; "з"="z"; "и"="i"; "й"="j"; "к"="k"; "л"="l"; "м"="m"; "н"="n"; "о"="o"; "п"="p"; "р"="r"; "с"="s"; "т"="t"; "у"="u"; "ф"="f"; "х"="kh"; "ц"="c"; "ч"="ch"; "ш"="sh"; "щ"="sch"; "ъ"="``"; "ы"="y`"; "ь"="`"; "э"="e`"; "ю"="ju"; "я"="ya"; "Ё"="Yo"; "ё"="yo"; "№"="#"}] # encoding of the symbols and аssembly line :local StrTele ""; :local code ""; :for i from=0 to=([:len $string]-1) do={:local keys [:pick $string $i (1+$i)]; :local key ($rsimv->$keys); if ([:len $key]!=0) do={:set $code ($rsimv->$keys);} else={:set $code $keys}; :if (($keys="Ь") and ([:pick $string ($i+1) (2+$i)]="Е")) do={:set $code "I"; :set $i ($i+1)} :if (($keys="ь") and ([:pick $string ($i+1) (2+$i)]="е")) do={:set $code "i"; :set $i ($i+1)} :if (($keys="Ь") and ([:pick $string ($i+1) (2+$i)]="е")) do={:set $code "I"; :set $i ($i+1)} :if (($keys="ь") and ([:pick $string ($i+1) (2+$i)]="Е")) do={:set $code "i"; :set $i ($i+1)} :if (($keys="Ы") and ([:pick $string ($i+1) (2+$i)]="Й")) do={:set $code "I"; :set $i ($i+1)} :if (($keys="ы") and ([:pick $string ($i+1) (2+$i)]="й")) do={:set $code "i"; :set $i ($i+1)} :if (($keys="ы") and ([:pick $string ($i+1) (2+$i)]="Й")) do={:set $code "i"; :set $i ($i+1)} :if (($keys="Ы") and ([:pick $string ($i+1) (2+$i)]="й")) do={:set $code "I"; :set $i ($i+1)} :set $StrTele ("$StrTele"."$code")} :set $string $StrTele :return $string; } Вот пример работы: :local string [$FuncTransliteToTele "Привет от Микротик ! Работает функция-транслитератор Russian alfabit для Telegramm. Заяц Белый"]
:log warning $string Вывод в логе: Privet ot Mikrotik! Rabotaet funksiya-konverter Russian-alfabit dliya Telegramm. Zayac beliy. Пользователь может поправить таблицу транслитерации под используемый им стандарт. Надеюсь кому-то пригодится. Теперь можно быть спокойным за пересылку русских сообщений в Телеграмм как с помощью конвертации по кодам UTF-8 с помощью моей функции конвертера отсюда так и транслитерацией. =========== Источник: habr.com =========== Похожие новости:
Программирование ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 16-Ноя 12:33
Часовой пояс: UTC + 5