الترجمة الصوتية للنص الروسي لإرسال رسائل إلى Telegram من Mikrotik RouterOS

لقد كتبت مؤخرًا وظيفة محول لإرسال الرسائل باللغة الروسية إلى Telegram من Mikrotik RouterOS ، كما ورد هنا .



الآن يتم استكمال العمل من خلال إنشاء وظيفة التحويل الصوتي التي تحول سلسلة من النص الروسي إلى تحويل صوتي للأبجدية اللاتينية. علاوة على ذلك ، إذا كانت السلسلة تحتوي على أحرف لاتينية ، فلن تتم ترجمتها ، أي أنه يمكن تمرير سلسلة مختلطة من الأحرف والكلمات كوسيطة.



يتم إجراء تحويل الأحرف وفقًا لـ GOST 7.79-2000 (النظام B) . لا تؤخذ القواعد الخاصة للترجمة الصوتية للأسماء في الاعتبار ، باستثناء التحويل الخاص للنهايات "LE" التي يتم تتبعها كـ "IE" و "OY" كـ "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. زياك فيلي.



يمكن للمستخدم تصحيح جدول التحويل الصوتي للمعيار الذي يستخدمه. آمل أن تكون مفيدة لشخص ما. الآن يمكنك أن تكون هادئًا بشأن إرسال رسائل روسية إلى Telegrams عن طريق التحويل إلى رموز UTF-8 باستخدام وظيفة المحول من هنا ومن خلال الترجمة الصوتية.



All Articles