translit

package module
v0.0.0-...-e15cbfc Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 28, 2024 License: MIT Imports: 4 Imported by: 0

README

Библиотека для транслитерации строк на Go

GoDoc

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

Текущая реализация подразумевает только одностороннюю транслитерацию: обратное преобразование будет уже не так очевидно.

Хоть кода в этой библиотеке и не очень много, но время на нее все-таки было потрачено, т.к. раньше я (mdigger) просто не задумывался о некоторых аспектах работы с транслитерацией.

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

Например:

"ЧАЩА" -> "CHASCHA"
"ЧаЩа" -> "ChaScha"
"Чаща" -> "Chascha"
"чаЩА" -> "chaSCHA"

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

import "github.com/andoma-go/translit"

tests := []string{
    "Проверочная СТРОКА для транслитерации",
    "ЧАЩА",
    "ЧаЩа",
    "Чаща",
    "чаЩА",
}
for _, text := range tests {
    fmt.Println(translit.Ru(text))
}
// Proverochnaja STROKA dlja transliteracii
// CHASCHA
// ChaScha
// Chascha
// chaSCHA

Documentation

Index

Constants

This section is empty.

Variables

View Source
var RuMap = Map{
	'а': "a",
	'б': "b",
	'в': "v",
	'г': "g",
	'д': "d",
	'е': "e",
	'ё': "yo",
	'ж': "zh",
	'з': "z",
	'и': "i",
	'й': "j",
	'к': "k",
	'л': "l",
	'м': "m",
	'н': "n",
	'о': "o",
	'п': "p",
	'р': "r",
	'с': "s",
	'т': "t",
	'у': "u",
	'ф': "f",
	'х': "h",
	'ц': "c",
	'ч': "ch",
	'ш': "sh",
	'щ': "sch",
	'ъ': "'",
	'ы': "y",
	'ь': "",
	'э': "e",
	'ю': "ju",
	'я': "ja",
}

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

Functions

func Ru

func Ru(text string) string

Ru выполняет транслитерацию строки с учетом словаря для русской транслитерации.

Types

type Map

type Map map[rune]string

Map определяет таблицу подстановки символов при транслитерации.

func (Map) Translate

func (m Map) Translate(text string) string

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

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

"ЧАЩА" -> "CHASCHA"
"ЧаЩа" -> "ChaScha"
"Чаща" -> "Chascha"
"чаЩА" -> "chaSCHA"

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL