diff --git a/README.md b/README.md index 2917b31..0518e69 100644 --- a/README.md +++ b/README.md @@ -1,64 +1,39 @@ -# Библиотека для транслитерации строк +# Библиотека для транслитерации строк на Go -Для использования библиотеки в Go выполните команду: +Хоть кода в этой библиотеке и не очень много, но некоторое время на нее все-таки было потрачено, т.к. раньше я просто не задумывался о некоторых аспектах работы с транслитерацией. - $ go get -u github.com/mdigger/translit - -и пропишите ее в заголовке своего кода: - - import "github.com/mdigger/translit" - -Данная библиотека обеспечивает простую транслитерацию. Для этого достаточно -только описать соответствующую таблицу подстановки символов, в которой буква -проассоциирована с какой-либо строкой. В частности, такая ассоциация для -транслитерации русского языка уже определена. - -Текущая реализация подразумевает только одностороннюю транслитерацию: обратное -преобразование будет уже не так очевидно. - -## Использование - -```go -var RuTransiltMap = map[rune]string{ - 'а': "a", - 'б': "b", - 'в': "v", - ... - 'ю': "ju", - 'я': "ja", -} -``` -`RuTransiltMap` описывает замены русских букв на английские при транслитерации. -Некоторые буквы заменяются не на одну, а на две или три буквы латинского -алфавита. А мягкий знак вообще исчезает. Но такова обычная распространенная -схема транслитерации. - -#### func RuTranslit - -```go -func RuTranslit(text string) string -``` -`RuTranslit` выполняет транслитерацию строки с учетом словаря для русской -транслитерации. - -#### func Translit - -```go -func Translit(text string, translitMap map[rune]string) string -``` -`Translit` выполняет транслитерацию в строке по указанной таблице и возвращает -новую строку с результатом такого преобразования. Все символы, которые не -указаны в таблице транслитерации, останутся без изменения. - -При транслитерировании учитывается, что замена буквы может быть произведена на -строку произвольной длины и корректно обрабатываются чередования заглавных и -строчных букв. В частности, производится корректная транслитерация следующих -случаев при использовании русского словаря: +В общем, как и большинство других аналогичных библиотек, она перебирает все символы в строке и заменяет их по предложенному ей словарю. Отличие только в том, что, с моей точки зрения, она более корректно отрабатывает случаи с чередованием заглавных букв. Например: "ЧАЩА" -> "CHASCHA" "ЧаЩа" -> "ChaScha" "Чаща" -> "Chascha" "чаЩА" -> "chaSCHA" -При желании, вы можете указать любую таблицу в качестве второго параметра при -вызове функции, по которой и будет выполнено данное преобразование. +Для транслитерации русских букв в ней уже предусмотрен встроенный словарь. Для других языков вы можете задать свой. Все достаточно просто: + +```go +package translit_test + +import ( + "fmt" + "github.com/mdigger/translit" +) + +func ExampleRuTranslit() { + tests := []string{ + "Проверочная СТРОКА для транслитерации", + "ЧАЩА", + "ЧаЩа", + "Чаща", + "чаЩА", + } + for _, text := range tests { + fmt.Println(translit.RuTranslit(text)) + } + // Output: + // Proverochnaja STROKA dlja transliteracii + // CHASCHA + // ChaScha + // Chascha +} +```