Jetzt wurde die Arbeit durch die Schaffung einer Transliterationsfunktion ergänzt, die eine Zeichenfolge russischen Textes in die Transliteration des lateinischen Alphabets umwandelt. Wenn die Zeichenfolge lateinische Zeichen enthält, werden diese nicht übersetzt, dh der Funktion kann eine gemischte Zeichenfolge aus Zeichen und Wörtern als Argument übergeben werden.
Die Zeichen werden gemäß GOST 7.79-2000 (System B) konvertiert . Spezielle Regeln für die Transliteration von Namen werden nicht berücksichtigt, außer dass die spezielle Konvertierung der Endungen "LE" als "IE" und "OY" als "IJ" bezeichnet wird.
Unten finden Sie den vollständigen Funktionscode:
# 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;
}
Hier ist ein Beispiel, wie es funktioniert:
:local string [$FuncTransliteToTele " ! - Russian alfabit Telegramm. "]
:log warning $string
Protokollausgabe : Liguster ot Mikrotik! Rabotaet funksiya-konverter Russisch-alfabit dliya Telegramm. Zayac beliy.
Der Benutzer kann die Transliterationstabelle für den von ihm verwendeten Standard korrigieren. Ich hoffe, es wird jemandem nützlich sein. Jetzt können Sie ruhig sein, wenn Sie russische Nachrichten an Telegram senden, indem Sie von hier aus mit meiner Konverterfunktion in UTF-8-Codes konvertieren und transliterieren.