BC/NW 2016 № 2 (29):11.2

РАЗРАБОТКА МОДУЛЯ ПРОГРАММЫ «ТРАНСЛИТОР»

Солдаткин А.П.

Необходимо реализовать модуль программы на языке Object-Pascal, осуществляющий транслит вводимого текста, с русского языка в фонетику английского языка. Например,  имеется некая фраза на русском языке, звучащая по правилам фонетики русского языка определенным образом, программа должна подать на выход текст в фонетике конечного, английского в заданном случае, языка, при чтении которого, носителем конечного, английского, языка должна получиться фраза, близкая по звучанию, к оригинальной русской фразе. При разработке программного модуля использовать язык Object-Pascal.

Например, если мы подали фразу: «Приветствую, тебя, читатель!», то в ответ мы должны увидеть: «Privyetstvuyu, tyebya, chitatyel'!».

Постановка задачи

Разработка должна выполнять процесс транслитерации ntrcnf с русского на английский в соответствии с правилами, данной операции. Алгоритм обработки необходимо осуществлять в процедуре или функции, таким образом, чтобы при необходимости было возможно быстро изменить фрагмент алгоритма в связи с появлением изменений в правилах (необходимость соответствия транслитерации тому или иному стандарту).

Результатом проектирования должна стать программа, выполняющая транслитерацию русских звуков на фонетический алфавит английского языка. В качестве правил транслитерации русских слов на английский, можно воспользоваться таблицей соответствия звучания букв русского и английского языка, используемые в стандарте ГОСТ 16876-71[3].

Дизайн интерфейса программы не требует множества объектов, необходимы только два поля для текста, кнопка исполнения транлитерации и подписи. С точки зрения исполнения алгоритма, задача проста, поскольку в правилах транскрибирования с русского на английский все соответствия четкие и одновариантные.

Поскольку данный курсовой проект является частью выпускной квалификационной работы, то необходимо предусмотреть возможность модернизации для возможности использования алгоритма исполнения транслитерации для транслитерации с русского на английский, немецкий и другие языки.

Актуальность темы

В современном мире, подавляющее большинство людей прекрасно говорят, на как правило, одном иностранном языке. Меньшая часть аудитории говорят лишь на родном языке. Часто путешествуя по миру можно столкнуться с проблемой не знания местными жителями одного универсального языка(английского), либо не знания путешествующими любого иностранного языка и трудностями с произношение каких либо фраз. Переводчиков на современных смартфонах огромное множество, но большинство из них либо не позволяют увидеть транскрипцию фразы, либо показывают ее лишь в языковой форме языка перевода, а в родном языке путешественника не способны продемонстрировать. Конечно таких случаев не очень много, но, тем не менее, они есть.

Также подобные алгоритмы смогут помочь людям, имеющим проблемы с произношением звуков, так как они смогут научиться произносить звуки иностранного языка на основе известного им языка, что немного проще, чем изучение фонетики звуков иностранного языка.

Разработка алгоритма решения задачи

В качестве алгоритма для решения данной задачи проще всего использовать подход с циклическим перебором символов в тексте (рисунок 1). Транслитерация с русского языка во многом является, наверное, самой простой задачей, по крайней мере, на английский язык.

 

 

Рисунок 1. Алгоритм транслитерации

 

Поскольку транслитерация с русского на английский язык определена во множестве документов и фонетика английского языка дружественна к фонетике русского, то процесс полностью линеен и главная особенность этого алгоритма это йотированные гласные и шипящие звуки, которые просто требуют написания вместо одной русской буквы несколько(пару) букв английского языка (таблица 1).

В ходе проработки возможности использования алгоритма для транслитерации с русского на, например, немецкий, можно сделать вывод, что данный алгоритм подходит также и для обработки различных случаев для каждой буквы, путем помещения в операторе, также функций выбора ветви. В данном случае при транслитерации на немецкий для ряда букв возможны различные написания (таблица 2). Для решения этой ситуации, достаточно добавить в ветви соответствующих букв условия «если».

Таблица 1

Буква

Транслит

Буква

Транслит

Буква

Транслит

А

A

Л

L

Ч

Ch

Б

B

М

M

Ш

Sh

В

V

Н

N

Щ

Sch

Г

G

О

O

Ъ

Д

D

П

P

Ы

Y

Е

Ye

Р

R

Ь

Ё

Yo

С

S

Э

E

Ж

Zh

Т

T

Ю

Yu

З

Z

У

U

Я

Ya

И

I

Ф

F

 

 

Й

Y

Х

Kh

 

 

К

K

Ц

Ts

 

 

 

Таблица 2

Буква

Транслит

Буква

Транслит

Буква

Транслит

А

A

Л

L

Ч

Tsch

Б

B

М

M

Ш

Sch

В

W

Н

N

Щ

Schtsch

Г

g; w (в окончании -ого/-его)

О

O

Ъ

(опускается); j (перед «е»)

Д

D

П

P

Ы

Y

Е

e; je (в начале слов и после гласных)

Р

R

Ь

' (или опускается); j (перед «е» и «и»)

Ё

jo; o (после шипящих)

С

s, ss (между гласными)

Э

E

Ж

Sh

Т

T

Ю

Yu

З

S

У

U

Я

Ya

И

I

Ф

F

 

 

Й

i (после гласных); j (в начале слогов); (в окончаниях -ий/-ый опускается)

Х

Ch

 

 

К

k; («кс» = x)

Ц

Z

 

 

Разработка программной реализации алгоритма

В программной реализации стоит начать с интерфейса, так как он в принципе прост в реализации. Программа должна позволять ввести текст и показать результат транслитерации. Но поскольку данный курсовой проект, является частью ВКР, необходимо помимо выполнения ряда требований описанных выше, обеспечить возможность использовать интерфейс без изменений в дальнейшей работе. То есть необходимо обеспечить возможность выбора конечного алфавита (языка) для транслитерации, а также выбора локализации подсказок в программе. Объекты перечислены в таблице 3, примерное изображение интерфейса программы на рисунке 2.

Таблица 3

Объект

Особые параметры

Назначение

Button1

 

Кнопка по нажатию, которой выполняется транслитерация текста из Memo1(русский язык) в Memo2(английский или немецкий язык)

Memo1

---

Предназначен для ввода текста на русском языке

Memo2

ReadOnly

Предназначен для вывода транслитерации на английском или немецком, текст можно только скопировать

Label1-5

---

Различные подписи, в зависимости от выбора локализации: на русском, немецком или английском

ComboBox1

csDropDownlist

Отвечает за выбор конечного алфавита транслитерации, в данном случае английский или немецкий

ComboBox2

csDropDownlist

Отвечает за выбор локализации программы, и по изменению осуществляет изменение Label1-5

 

Перейдем к реализации алгоритмов. Поскольку используется язык Object-Pascal, то работа в программе строится по событиям, которым соответствуют процедуры.

Описанный выше алгоритм транслитерации, необходимо описать в отдельной функции для обеспечения понятности кода и простоты многократных вызовов данного алгоритма. В конкретной программе алгоритм вызывается в качестве реакции на нажатие кнопки «Транслитерация»(рисунок 2).

 

 

 

Рисунок 2. Алгоритм работы программы

 

 

 

 

 

Рисунок 3. Основное окно программы

 

 

 

 

 

 

 

 

 

 

Используемый объект Memo позволяет передавать в программу текст, с переменной длиной строк и переменным числом строк. Таким образом достаточно просто скопировать нужный текст и вставить его в поле, без изменений. В программе обработка содержимого осуществляется перебором строк в Memo, так как возможно узнать точно, сколько строк введено в Memo и прочесть содержимое построчно, используя для этого цикл. В данном цикле также используем разветвление для выбора одного из двух алгоритмов (английский или немецкий). Далее в функцию передается исходная строка и записывается результат функции. Графическое оформления программы представленной на рисунке 3.

В случае транслитерации с русского на английский, вся реализация заключается в операторе выбора case для цикла перебора символов строки. В качестве операторов применяется присваивание значения соответствующего таблице, либо повтор любого символа из исходной строки, если не найдено соответствие в таблице.

В случае транслитерации с русского на английский, вся реализация заключается в операторе выбора case для цикла перебора символов строки. В качестве операторов применяется присваивание значения соответствующего таблице, либо повтор любого символа из исходной строки, если не найдено соответствие в таблице.

 

В случае транслитерации с русского на английский, помимо основного оператора выбора case, в ветвях, отвечающих за буквы, имеющие разные написания в зависимости от положения в слове или среди букв используется оператор ветвления if. C помощью дополнительного ветвления внутри основного оператора, достигается достаточная для данного случая гибкость алгоритма, позволяющая обработать данные простые правила. В случае более сложных правил, например, транслитерации с английского на русский, будет логичным выделить обработку каждой буквы в отдельную функцию в целях обеспечения понятности кода, упрощения восприятия алгоритма.

Результаты тестирования

В качестве исходных тестов для алгоритма транслитерации с русского на английский применим фрагмент текста из статьи интернет:

«Трансли́т (название произведено сокращением слова «транслитерация») — передача текста с помощью чужого алфавита. В отличие от транслитерации, при транслите могут применяться цифры и иные доступные на клавиатуре компьютера знаки, то есть, это фактически неформальная транслитерация. В русском транслите используется в основном латинский алфавит, то есть русский транслит можно считать неформальной романизацией, в то время, как, например, в армянском транслите может использоваться как латинский алфавит, так и Кириллица[1].» - подано на вход.

«Translit (nazvaniye proizvyedyeno sokrashchyeniyem slova «translityeratsiya») —

pyeryedacha tyeksta s pomoshch'yu chuzhogo alfavita. V otlichiye ot translityeratsii,

pri translitye mogut primyenyat'sya tsifry i inyye dostupnyye na klaviaturye

komp'yutyera znaki, to yest', eto faktichyeski nyeformal'naya translityeratsiya.

V russkom translitye ispol'zuyetsya v osnovnom latinskiy alfavit, to yest'

russkiy translit mozhno schitat' nyeformal'noy romanizatsiyey, v to vryemya,

kak, naprimyer, v armyanskom translitye mozhyet ispol'zovat'sya kak

latinskiy alfavit, tak i Kirillitsa[1].» - программа успешно выполнила транслитерацию на английский.

В качестве исходных тестов для алгоритма транслитерации с русского на немецкий применим фрагмент текста из статьи интернет:

«Трансли́т (название произведено сокращением слова «транслитерация») — передача текста с помощью чужого алфавита. В отличие от транслитерации, при транслите могут применяться цифры и иные доступные на клавиатуре компьютера знаки, то есть, это фактически неформальная транслитерация. В русском транслите используется в основном латинский алфавит, то есть русский транслит можно считать неформальной романизацией, в то время, как, например, в армянском транслите может использоваться как латинский алфавит, так и Кириллица[1].» - подано на вход.

«Translit (naswanije proiswedeno sokraschtschenijem slowa «transliterazija») —

peredatscha texta s pomoschtsch'ju tschushowo alfawita. W otlitschije ot transliterazii,

pri translite mogut primenjat'sja zifry i inyje dostupnyje na klawiature

komp'jutera snaki, to jest', eto faktitscheski neformal'naja transliterazija.

W russkom translite ispol'sujetsja w osnownom latinskii alfawit, to jest'

russkii translit moshno stschitat' neformal'noi romanisazijei, w to wremja,

kak, naprimer, w armjanskom translite moshet ispol'sowat'sja kak

latinskii alfawit, tak i Kirilliza[1].»

 Программа успешно выполнила транслитерацию на немецкий.

Литература

1.     «Фонетика современного русского литературного языка» - Р.И.Аванесов, Издательство Московского Университета, 1956 г.

2.     «Фонетика английского языка» - С.Хромов, Университетская книга, 2012 г.

3.     ГОСТ 16876-71

4.     Особенности английского произношения, http://languagereal.ru/page/osobennosti-angliyskogo-proiznosheniya

5.     Фонетика английского языка, http://www.native-english.ru/pronounce

6.     Панов М.В. Русская фонетика. – Просвещение, М.: 19

7.     Транслит – Материал из Википедии — свободной энциклопедии, первый абзац.