Transliterating Text in OpenOffice.org

Productivity Sauce
Here is a problem: when working with an OpenOffice.org document you need to insert a few lines of text in a language that uses a non-Latin alphabet, for example Cyrillic. Of course, you can enable the Cyrillic support on your system, but it's overkill if you only need to write just a few sentences every now and then. Instead, you can use the following OpenOffice.org Basic macro to convert a selected text fragment written in the Latin alphabet into its Cyrillic version; for example "martyshka" -> "мартышка", "ogurec" -> "oгурец", and so on (this process is known as transliteration):
Sub Translit() Dim ThisDoc As Object Dim SearchObj As Object, nTimes As Long Dim Args1() ThisDoc=ThisComponent TextSnippet=ThisDoc.getCurrentController().getSelection().getByIndex(0).getString() If TextSnippet="" then MsgBox ("Please select a text fragment to convert!", 48, "Attention!") : End ThisDoc=StarDesktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, Args1()) ThisDoc=ThisComponent ThisText=ThisDoc.Text TheCursor=ThisText.createTextCursor TheCursor.String=TextSnippet Latin=Array("YA", "YA", "YA", "EH", "CH", "ZH", "SH", "SJ",_ "Ya", "Yu", "Yo", "Eh", "Ch", "Zh", "Sh", "Sj", "A","B", "V", "G", "D", "E", "Z", "I", "J", "K", "L", "M",_ "N", "P", "R", "S", "T", "U", "F", "H", "C", "``", "Y", "''",_ "ya", "yu", "yo", "eh", "ch", "zh", "sh", "sj", "a","b", "v", "g", "d", "e", "z", "i", "j", "k", "l", "m",_ "n", "p", "r", "s", "t", "u", "f", "h", "c", "`", "y", "'", "|") Cyrillic = Array("Я", "Ю", "Ё", "Э", "Ч", "Ж", "Ш", "Щ",_ "Я", "Ю", "Ё", "Э", "Ч", "Ж", "Ш", "Щ", "А", "Б", "В", "Г", "Д", "Е", "З", "И", "Й", "К", "Л", "М",_ "Н", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ъ", "Ы", "Ь",_ "я", "ю", "ё", "э", "ч", "ж", "ш", "щ", "а", "б", "в", "г", "д", "е", "з", "и", "й", "к", "л", "м",_ "н", "п", "р", "с", "т", "у", "ф", "х", "ц", "ъ", "ы", "ь", "") SearchObj=ThisDoc.createReplaceDescriptor For I = lBound(Latin()) to uBound(Latin()) With SearchObj .SearchString=Latin(I) .ReplaceString=Cyrillic(I) .SearchWords=false .SearchCaseSensitive=true End With nTimes = ThisDoc.replaceAll(SearchObj) Next I End Sub
The way the macro works is rather simple. First the macro obtains the currently selected text and creates a blank Writer document. It then goes through the selected text snippet and replaces Latin letters and letter combinations with their Cyrillic equivalents specified in the Latin and Cyrillic arrays. This macro converts text from Latin to Cyrillic, but you can easily modify it to work with other alphabets.
comments powered by DisqusIssue 261/2022
Buy this issue as a PDF
News
-
New Linux Ultrabook from TUXEDO Computers
TUXEDO Computers has released a new 15" Ultrabook running Linux.
-
GNOME 43 To Bring Some Exciting New Features
GNOME 43 is getting close to the first alpha development release and it promises to add one particular feature that should be exciting to several users.
-
KaOS 2022.06 Now Available With KDE Plasma 5.25
The newest iteration of KaOS Linux not only adds the latest KDE Plasma desktop but sets LibreOffice as the default.
-
Manjaro 21.3.0 Is Now Available
Manjaro “Ruah” has been released and includes the latest Calamares installer, GNOME 42, and much more.
-
SpiralLinux is a New Linux Distribution Focused on Simplicity
A new Linux distribution, from the creator of GeckoLinux, is a Debian-based operating system with a focus on simplicity and ease of use.
-
HP Dev One Linux Laptop is Now Available for Pre-Order
The System76/HP collaboration Dev One laptop, geared toward developers, is now available for pre-order.
-
NixOS 22.5 Is Now Available
The latest release of NixOS with a much-improved package manager and a user-friendly graphical installer.
-
System76 Teams up with HP to Create the Dev One Laptop
HP and System76 have come together to develop a new laptop, powered by Pop!_OS and aimed toward developers.
-
Titan Linux is a New KDE Linux Based on Debian Stable
Titan Linux is a new Debian-based Linux distribution that features the KDE Plasma desktop with a focus on usability and performance.
-
Danielle Foré Has an Update for elementary OS 7
Now that Ubuntu 22.04 has been released, the team behind elementary OS is preparing for the upcoming 7.0 release.