From 597b9690e429c0a2071c0f5113a4cd87aeff5d59 Mon Sep 17 00:00:00 2001 From: Dmitry Sedykh Date: Sun, 17 Aug 2014 09:40:29 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 87 ++++++++++++++++++++----------------------------------- 1 file changed, 31 insertions(+), 56 deletions(-) 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 +} +```