Maintenant, le travail a été complété par la création d'une fonction de translittération qui convertit une chaîne de texte russe en translittération de l'alphabet latin. De plus, si la chaîne contient des caractères latins, ils ne sont pas traduits, c'est-à-dire que la fonction peut recevoir une chaîne mixte de caractères et de mots en argument.
La conversion des caractères est effectuée selon GOST 7.79-2000 (système B) . Les règles spéciales de translittération des noms ne sont pas prises en compte, sauf que la conversion spéciale des terminaisons "LE" est traduite par "IE" et "OY" par "IJ".
Voici le code de fonction complet:
# 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;
}
Voici un exemple de son fonctionnement:
:local string [$FuncTransliteToTele " ! - Russian alfabit Telegramm. "]
:log warning $string
Sortie du
journal : Privet ot Mikrotik! Rabotaet funksiya-konverter Russian-alfabit dliya Telegramm. Zayac beliy.
L'utilisateur peut corriger la table de translittération pour le standard utilisé par lui. J'espère que cela sera utile à quelqu'un. Vous pouvez maintenant être calme sur l'envoi de messages russes à Telegram à la fois en les convertissant en codes UTF-8 à l'aide de ma fonction de conversion à partir d'ici et par translittération.