rs_russian 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ced7cff13d74526729a7b1e76b1b5a36e3b06c61
4
+ data.tar.gz: a43fae19bdb61d11dc275a2ae04cf74b4fe73509
5
+ SHA512:
6
+ metadata.gz: 00c344e742ff2ff6974d5ef4ee5c0e5312a8d2c4b050423360d7eda0e8b38fd055c48e9baa992940ac02af99561a1b93dd709c75cfde32aaaf54b5e9de754e5f
7
+ data.tar.gz: eb159120fe0e1d424a6dd5d6137a8c83ccd58c2851ce600523b2cd9a9116619bf9b258b12a6aac68c12dda31fa9c41f031cf46da22cfa61758861b46f121d9c1
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ .DS_Store
2
+ *.swp
3
+ pkg
4
+ .bundle
5
+ .rvmrc
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ russian
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.0.0
data/.travis.yml ADDED
@@ -0,0 +1,9 @@
1
+ notifications:
2
+ email: false
3
+
4
+ language: ruby
5
+ rvm:
6
+ - 1.9.3
7
+ - 2.0.0
8
+ - jruby-19mode
9
+ - rbx-19mode
data/CHANGELOG ADDED
@@ -0,0 +1,132 @@
1
+ === 0.6.0 "Haters Gonna Hate" - 22.10.2011
2
+
3
+ * i18n gem is now a dependency (not using vendored gem anymore)
4
+ * I18n::Backend::Advanced custom backend is no longer used. Russian Ruby i18n files are portable for the first time; using Russian language with i18n does not require a custom backend with language-specific hacks anymore. It became possible thanks to lambda translations support in i18n gem (http://svenfuchs.com/2009/7/12/ruby-i18n-gem-hits-0-2-0) and inclusion of Pluralization backend. Notice: ff you are using a custom backend, don't forget to include I18n::Backend::Pluralization and I18n::Backend::Transliterator modules
5
+ * Pluralization is now delegated to I18n backend
6
+ * Transliteration is now delegated to I18n backend (using Russian::Transliteration, of course)
7
+ * Minor gem russian version is now bumped to be in sync with minor version of required i18n gem
8
+ * UPGRADING: Rails 2 is no longer supported, use older versions of the gem
9
+ * UPGRADING: gem russian does not force Russian locale anymore, use I18n::locale/default_locale methods or config.i18n.default_locale = :ru in your Rails environment. Methods with forced encoding still can be used as Russian::translate, Russian::localize
10
+ * Locale files and hacks (date helper, custom ActiveModel error message) updated to support Rails 3.0 and 3.1
11
+ * README updated
12
+ * Remove i18n_label plugin (labels i18n is supported in latest Rails releases)
13
+
14
+ * gem i18n теперь является зависимостью для gem russian, а не включается в vendor, как раньше
15
+ * Собственный бекенд I18n::Backend::Advanced больше не используется. Русские файлы локали i18n для Ruby наконец-то стали переносимыми и не требуют собственного бекенда и хаков для поддержки языка. Это стало возможным благодаря поддержке lambda-переводов в i18n (http://svenfuchs.com/2009/7/12/ruby-i18n-gem-hits-0-2-0) и включению Pluralization бекенда в gem i18n. Обратите внимание: если вы используете собственный бекенд (отличный от стандартного), не забудьте включить модули I18n::Backend::Pluralization и I18n::Backend::Transliterator
16
+ * Механизм плюрализации теперь обеспечивает стандартный бекенд I18n
17
+ * Механизм транслитерации теперь обеспечивает стандартный бекенд I18n (с помощью Russian::Transliteration, конечно)
18
+ * Минорная версия gem russian повышена до текущей минорной версии i18n
19
+ * UPGRADING: Rails 2 больше не поддерживается, используйте старые версии gem'а
20
+ * UPGRADING: gem russian больше не форсирует использование русской локали, используйте методы I18n::locale/default_locale или config.i18n.default_locale = :ru в настройках окружения Rails. Если нужно форсировать русскую локаль, можно по-прежнему пользоваться методами Russian::translate, Russian::localize
21
+ * Обновлены файлы переводов и хаки (выбор месяца в date helper, кастомные сообщения об ошибках ActiveModel) для поддержки Rails 3.0 и 3.1
22
+ * Обновлен и переписан README
23
+ * Удален плагин i18n_label (перевод label уже поддерживается в последних версиях Rails)
24
+
25
+ === 0.2.7 - 5.05.2010
26
+
27
+ * Fix using of standalone/non-standalone month names with %d/%e surroundings.
28
+ * Улучшено распознавание формы названия месяца с strftime макросами %d/%e.
29
+
30
+ === 0.2.6 - 25.03.2010
31
+
32
+ * Minimum Rails 3.0b support: Added fourth parameter (options) defaulting to nil to Advanced backend localize method for compliance with i18n-0.3 [Nikolay V. Nemshilov]
33
+ * Минимальная поддержка Rails 3.0b: В метод localize бекенда Advanced добавлен четвертый параметр, для совместимости с i18n-0.3. По умолчанию равен nil. [Николай Немшилов]
34
+
35
+ === 0.2.5 - 23.12.2009
36
+
37
+ * Added support for multi-char substrings in Russian.transliterate [Alex Fortuna]
38
+ * Rails 2.3.5 error messages overloading compatibility (error messages overloading) (thanks Alex Eagle for bugreport)
39
+
40
+ * Russian.transliterate: Теперь можно добавлять правила матчинга подстрок из нескольких символов ("Воробьёв", "Алябьев"). [Alex Fortuna]
41
+ * Rails 2.3.5: совместимость для перегрузки сообщений об ошибках (багрепорт -- Александр Орел)
42
+
43
+ === 0.2.4 - 12.11.2009
44
+
45
+ * Revert nested validation errors patch
46
+
47
+ * Убран патч для вложенных сообщений валидации (не работал с Rails 2.3.3 и ниже)
48
+
49
+ === 0.2.3 - 9.11.2009
50
+
51
+ * Improve ActiveRecord translations [Dmitri Koulikoff]
52
+ * Fix nested validation errors with custom error message hack for Rails < 2.3.4 [valodzka]
53
+ * Added almost_x_years datetime translation
54
+
55
+ * Улучшен перевод ActiveRecord [Dmitri Koulikoff]
56
+ * Исправлена ошибка, возникающая при вложенных сообщениях валидации при использовании хака для Rails < 2.3.4 [valodzka]
57
+ * Добавлен перевод для ключа даты/времени almost_x_years
58
+
59
+ === 0.2.2 - 17.09.2009
60
+
61
+ * Fix ^-prefixed error messages handling on Rails 2.3.4
62
+
63
+ * Для Rails 2.3.4 исправлена работа сообщений валидаций, начинающихся с "^"
64
+
65
+ === 0.2.1 - 5.09.2009
66
+
67
+ * Rails 2.3.4 compat (ActiveRecord::Error) and deprecation warning (use errors.full_messages.format from now on) [Alexander Semyonov/Yaroslav Markin]
68
+ * Added a couple of missing translations from Rails 2.3.4
69
+ * transliteration: Ы now transforms to Y [Alex Fortuna]
70
+
71
+ * Совместимость с Rails 2.3.4 (ActiveRecord::Error) и устаревшее форматирование через "^" (теперь надо использовать errors.full_messages.format) [Alexander Semyonov/Yaroslav Markin]
72
+ * Добавлена пара недостающих переводов из Rails 2.3.4
73
+ * транслитерация: Ы теперь превращается в Y [Alex Fortuna]
74
+
75
+ === 0.2.0 - 16.03.2009
76
+
77
+ * number_to_human_size() translations: using edge format (Rails 2.3)
78
+ * i18n gem updated (0.1.3)
79
+ * Rails 2.3 compat
80
+
81
+ * Перевод для number_to_human_size(): испольуется форматирование из edge (Rails 2.3)
82
+ * Обновлен gem i18n до версии 0.1.3
83
+ * Совместимость с Rails 2.3
84
+
85
+ === 0.1.3 - 27.12.2008
86
+
87
+ * Add support.array.words_connector/two_words_connector/last_word_connector (Array#to_sentence) (Rails Edge)
88
+ * Add datetime.prompts translations (Rails Edge)
89
+
90
+ * Добавлены переводы для Array#to_sentence (Rails Edge)
91
+ * Добавлены переводы для datetime.prompts (Rails Edge)
92
+
93
+ === 0.1.2 - 4.11.2008
94
+
95
+ Fixed I18n.load_path ordering, translations shipped with russian gem will no longer overwrite your own translations (thanks Dmitrij Smalko for bugreport).
96
+
97
+ Поправлено добавление переводов russian в I18n.load_path, теперь переводы из russian не будут замещать ваши собственные переводы (спасибо Dmitrij Smalko за обнаружение ошибки).
98
+
99
+ === 0.1.1 - 24.11.2008
100
+
101
+ Added number.human.storage_units translation key (Rails Edge).
102
+
103
+ Добавлен ключ number.human.storage_units (появился в Rails Edge).
104
+
105
+ === 0.1.0 - 22.11.2008
106
+
107
+ No changes, Rails 2.2 released
108
+
109
+ === 0.0.9 - 21.11.2008
110
+
111
+ * Updated I18n gem due to locale changes (0.1.1)
112
+ * NB! I18n changed default locale from :'en-US' to :'en', same recommended for other locales by default
113
+ * NB!! Russian locale is now :'ru' NOT :'ru-RU', update your locale files.
114
+
115
+ * I18n gem обновился до 0.1.1 в связи с изменениями в названиях локалей
116
+ * ВНИМАНИЕ: локаль по умолчанию I18n теперь называется не :'en-US' а :'en', такой же способ именования рекомендуется и для других локалей
117
+ * ВНИМАНИЕ! Локаль русского языка теперь называется :'ru' а не :'ru-RU'. Не забудьте обновить ваши файлы переводов.
118
+
119
+ === 0.0.8 - 20.11.2008
120
+
121
+ * Introduce transliteration (Russian.translit, Russian.transliterate)
122
+ * Add an ActiveSupport hack for #parameterize
123
+
124
+ * Добавилась поддержка транслитерации (Russian.translit, Russian.transliterate)
125
+ * Добавился хак для #parameterize ActiveSupport (генерация "красивых" URL)
126
+
127
+ === 0.0.7 - 09.11.2008
128
+
129
+ * Updated I18n gem
130
+
131
+ * Новая версия gem I18n
132
+
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,48 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ rs_russian (0.7.0)
5
+ i18n (~> 0.6.0)
6
+ unicode (~> 0.4.4)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ activesupport (4.0.0)
12
+ i18n (~> 0.6, >= 0.6.4)
13
+ minitest (~> 4.2)
14
+ multi_json (~> 1.3)
15
+ thread_safe (~> 0.1)
16
+ tzinfo (~> 0.3.37)
17
+ atomic (1.1.14)
18
+ atomic (1.1.14-java)
19
+ diff-lcs (1.2.4)
20
+ i18n (0.6.5)
21
+ minitest (4.7.5)
22
+ multi_json (1.8.2)
23
+ rake (10.1.0)
24
+ rspec (2.14.1)
25
+ rspec-core (~> 2.14.0)
26
+ rspec-expectations (~> 2.14.0)
27
+ rspec-mocks (~> 2.14.0)
28
+ rspec-core (2.14.6)
29
+ rspec-expectations (2.14.3)
30
+ diff-lcs (>= 1.1.3, < 2.0)
31
+ rspec-mocks (2.14.4)
32
+ thread_safe (0.1.3)
33
+ atomic
34
+ thread_safe (0.1.3-java)
35
+ atomic
36
+ tzinfo (0.3.38)
37
+ unicode (0.4.4)
38
+
39
+ PLATFORMS
40
+ java
41
+ ruby
42
+
43
+ DEPENDENCIES
44
+ activesupport (>= 3.0.0)
45
+ bundler (~> 1.3)
46
+ rake
47
+ rs_russian!
48
+ rspec
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2008-2011 Yaroslav Markin
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.textile ADDED
@@ -0,0 +1,268 @@
1
+ h1. rs_russian
2
+ "!https://secure.travis-ci.org/rs-pro/russian.png!":http://travis-ci.org/rs-pro/russian
3
+
4
+ h3. Это форк с вытянутыми pull-реквестами, которые мы хотели использовать.
5
+
6
+ Нравится -- пользуйтесь, не нравится -- идите на страницу оригинала: "http://github.com/yaroslav/russian/":http://github.com/yaroslav/russian/
7
+
8
+ Поддержка русского языка для Ruby и Rails при помощи библиотеки I18n.
9
+
10
+ Russian language support for Ruby and Rails, using I18n library.
11
+
12
+ h3. If you don't speak Russian
13
+
14
+ This code may still be useful for you and Ruby I18n community. You can learn how how to provide support of "standalone" (as defined in "Unicode CLDR":http://unicode.org/cldr/) month names with I18n and Rails without any custom backends or hacks, and how to use custom pluralization and transliteration locale settings. This library also includes a module (@Russian@) with a set of helpers to provide simplistic pluralization and @strftime@ for Russian language -- in a way that is easier than using I18n methods.
15
+
16
+ Feel free to shoot an email to Yaroslav Markin ("yaroslav@markin.net":mailto:yaroslav@markin.net)
17
+
18
+ h1. Что это
19
+
20
+ Russian -- это библиотека для полноценной поддержки русского языка (форматирование даты и времени, плюрализация, транслит, локализация в целом) для Ruby и Ruby on Rails.
21
+
22
+ Цель проекта -- построить полноценную среду для русской локализации Ruby и Rails проектов, при этом используя минимально возможное количество хаков, сохраняя при этом поддержку локализации приложения на другие языки, а также форсировать включение в основную ветку I18n и Rails всех функций локализации, необходимых для работы с русским языком. Поскольку сделать в Rails поддержку довольно сложного языка для локализации (каким и является русский) сразу же было проблематично, вместе с командой @gem i18n@ решено было обкатывать решение для русского языка на отдельном gem/плагине, и по мере возможности переносить наиболее общий функционал в "родительскую" библиотеку I18n. Таким образом, общей целью @gem russian@ стала поддержка русского языка до тех пор, пока она не появится в самом I18n.
23
+
24
+ Russian использует библиотеку I18n (включена в поставку), несколько хаков поверх Rails (хаки хелперов даты-времени, хак для сообщений валидации) и файлы переводов, а также набор хелперов, упрощающий работу с русским языком (простая плюрализация, простой strftime и др.).
25
+
26
+ Russian стремится быть минимально деструктивной для окружения и быть полностью совместимой с другими языками (таким образом, когда приложение использует Russian, оно остается полностью совместимым с Rails i18n).
27
+
28
+ h2. Что такое I18n. История
29
+
30
+ Библиотека I18n входит в состав Ruby on Rails начиная с версии 2.2. I18n -- это самое простое и недеструктивное решение для локализации и интернационализации Rails приложений. К сожалению, в первых версиях отсутствовала поддержка нескольких важных возможностей, специфичных для русского языка. Таким образом, русский язык для локализации в Rails 2.2 фактически не поддерживался.
31
+
32
+ Для исправления этого досадного недоразумения появилась библиотека Russian. Ранее Russian включал в себя собственный бекенд для перегрузки форматирования даты-времени (использование названия месяца или дня недели в зависимости от контекста) и плюрализации (стандартный бекенд поддерживал только плюрализацию для английского языка), несколько хаков для Rails 2.2/2.3 (ActionView, ActiveRecord, ActiveSupport), полную локализацию даты-времени и таблицы переводов Rails на русский язык, и вспомогательные модули (плюрализация и транслитерация). Gem отлично работал на Rails 2, устраняя недостатки @gem i18n@ "из коробки".
33
+
34
+ В версии 0.2 @gem i18n@ наконец появились первые средства для поддержки русского языка: в соавторстве с вашим покорным "была добавлена поддержка lambda-переводов":http://svenfuchs.com/2009/7/12/ruby-i18n-gem-hits-0-2-0, благодаря которой стало возможным вынести логику перевода названия месяца/дня недели в таблицу переводов. Далее в @gem i18n@ появилась поддержка хранения правил плюрализации в таблице переводов (опять же, с помощью lambda-переводов) и правил транслитерации. По сути, после этого цель @gem russian@ была практически достигнута: опытные разработчики могли работать с русским языком, используя лишь собственные таблицы переводов в своем приложении и несколько хаков к Rails (по необходимости). Rails 3.0 вышел с последней версией @gem i18n@, где была уже практически полная поддержка механизмов для русского языка.
35
+
36
+ Однако, документация по плюрализации и транслитерации в I18n была неочевидной, а поддержка lambda-переводов для локализации даты-времени была практически "спрятана" в исходном коде, поэтому большинство разработчиков в основном использовали самые базовые таблицы переводов: локализацию Rails и, иногда, — плюрализацию. Возникла мысль выпустить @gem russian@ для последней версии @gem i18n@ и Ruby on Rails с поддержкой всех необходимых функций, но, на этот раз, грамотно сделанных через интерфейсы I18n. К сожалению, "хаки" для Ruby on Rails (хелперы даты-времени) вряд ли когда-либо будут включены в дистрибутив Rails, поэтому использовать их придется отдельно.
37
+
38
+ h1. Установка
39
+
40
+ В вашем @Gemfile@ сделайте ссылку на gem @russian@:
41
+
42
+ <pre><code>gem 'rs_russian', '~> 0.7.0'</code></pre>
43
+
44
+ И установите gem в проект с помощью bundler:
45
+
46
+ @bundle install@ или @bundle update@.
47
+
48
+ Далее, укажите
49
+
50
+ <pre><code>config.i18n.default_locale = :ru</code></pre>
51
+
52
+ в @config/application.rb@. Если по умолчанию нужна другая локаль, или же нужно переключать локали "на ходу", используйте методы модуля I18n (см. выше). Также ознакомьтесь с "документацией к I18n":http://rdoc.info/github/svenfuchs/i18n/master и "гидом по интернационализации Ruby on Rails":http://guides.rubyonrails.org/i18n.html.
53
+
54
+ h2. Ruby on Rails 2.2 и 2.3
55
+
56
+ Используйте старые версии gem (@0.2.x@). Получить код и почитать инструкцию по установке можно "здесь":https://github.com/yaroslav/russian/tree/eae28e3098797d06ff0574fb1bf99238eec124fe.
57
+
58
+ h1. Использование
59
+
60
+ @gem russian@ можно использовать как с Ruby on Rails, так и отдельно: с любым другим веб-фреймворком, или в любом другом приложении, не имеющим никакого отношения к вебу. Дело в том, что @gem i18n@, который Ruby on Rails использует для интернационализации, включен в @gem russian@ как зависимость.
61
+
62
+ При загрузке Russian подключает библиотеку I18n (либо использует уже подключенную, например, в Rails), добавляет файлы русских переводов из поставки в самое начало пути поиска переводов I18n (это значит, что любой перевод из Russian вы сможете легко переопределить в вашем приложении), добавляет в используемый по умолчанию бекенд I18n поддержку плюрализации и транслитерации, и, наконец, перегружает бекенд.
63
+
64
+ Предыдущие версии Russian форсированно выставляли локаль I18n по умолчанию в @:ru@ (Русский язык), от этого решено было отказаться: в Rails стало неудобно работать с мультиязычными приложениями, так как конструкция вида @config.i18n.default_locale = :en@ не работала. Теперь для использования русского языка в Rails по умолчанию нужно использовать строку
65
+
66
+ <pre><code>
67
+ config.i18n.default_locale = :ru
68
+ </code></pre>
69
+
70
+ в @config/application.rb@. Для использования Russian отдельно от Rails можно выставить локаль I18n в русскую по умолчанию или для текущего треда, соответственно:
71
+
72
+ <pre><code>
73
+ I18n.default_locale = :ru
74
+
75
+ I18n.locale = :ru
76
+ </code></pre>
77
+
78
+ Также предыдущие версии Russian заменяли используемый I18n бекенд на собственный: другого способа получить качественную локализацию для даты-времени и поддержку плюрализации не было. Новые версии I18n включают в себя поддержку @lambda {}@ в таблицах переводов ("ссылка":http://svenfuchs.com/2009/7/12/ruby-i18n-gem-hits-0-2-0), поэтому собственный бекенд больше не нужен. Обратите внимание: если вы используете бекенд, отличный от стандартного, вам потребуется включить в него поддержку плюрализации (модуль @I18n::Backend::Pluralization@) и транслитерации (@I18n::Backend::Transliterator@).
79
+
80
+ Если во время загрузки Russian уже загружены библиотеки Rails, происходит загрузка хаков для Rails 3.0 и выше:
81
+
82
+ 1. Хелперы даты получают ключ @:use_standalone_month_names@ (для форсирования использования "отдельностоящего" названия месяца). Если ключ не указан, хелпер самостоятельно будет пытаться определить форму названия месяца: так, например, хелпер для выбора числа, месяца и года будет использовать "контекстную" форму названия месяца.
83
+
84
+ 2. Включается перегрузка валидации для ActiveModel: если сообщение валидации указать с "птичкой" в начале, при выводе сообщений об ошибках (@full_messages@) для этого конкретного сообщения не будет указано название атрибута, к которому он относится. Этот фукнционал нужен, скорее, для тех, кто привык использовать подобные "хаки": в Rails 3 эта задача решается с помощью ключа @full_messages.format@ в таблице переводов.
85
+
86
+ Наконец, становится доступен модуль Russian (инструкция ниже), который нужен для быстрого доступа к некоторым основным и вспомогательным функциям локализации (плюрализация без таблицы переводов, транслитерация) и для методов интернационализации с форсированной локалью русского языка (перевод в русской локали, перевод даты-времени в русской локали).
87
+
88
+ После загрузки Russian можно использовать все стандартные функции библиотеки I18n, пользоваться измененным функционалом для лучшей поддержки русского языка, или использовать хелперы модуля Russian для еще более простой работы с русским языком.
89
+
90
+ "Документация I18n":http://rdoc.info/github/svenfuchs/i18n/master
91
+
92
+ "Гид по интернационализации Ruby on Rails":http://guides.rubyonrails.org/i18n.html.
93
+
94
+ h2. Ключевые отличия от стандартной библиотеки I18n
95
+
96
+ 1. Поддержка двух видов названий месяцев -- контекст ("сентября") и отдельностоящее ("Сентябрь") и дней недели.
97
+
98
+ В словарях Russian определены оба варианта названий месяцев. В таблице переводов для русского языка (@locale/datetime.rb@) указаны правила для перевода: в зависимости от формата строки @strftime@, используется контекстное или отдельностоящее название.
99
+
100
+ По аналогии есть поддержка двух видов названий дней недели.
101
+
102
+ _NB:_ обратите внимание на нестандартные названия ключей при перечислении месяцев и дней недели в @locale/datetime.yml@.
103
+ _NB:_ на необычных форматах @strftime@-строк контекст может не распознаваться; просто "дробите" в таком случае строку @strftime@ на части.
104
+
105
+ 2. Плюрализация
106
+
107
+ Включены правила плюрализации для русского языка (согласно CLDR). Их можно использовать как через интерфейс I18n, так и с помощью метода @Russian::pluralize@.
108
+
109
+ 3. Транслитерация
110
+
111
+ Включен модуль для транслитерации русского алфавита: им можно пользоваться как через собственный интерфейс (@Russian::transliterate@), так и через интерфейс I18n.
112
+
113
+ h2. Ruby on Rails
114
+
115
+ h3. Переводы
116
+
117
+ При использовании с Ruby on Rails загружаются все стандартные переводы, и русский язык становится годным к использованию для локализации. В поставку включены все нужные переводы для ActionView, ActiveRecord, ActiveSupport, ActiveModel, которые можно переопределять по необходимости стандартными средствами I18n из вашего приложения.
118
+
119
+ h3. Хелперы
120
+
121
+ Хелперы даты-времени получают ключ @:use_standalone_month_names@ для форсирования отображения отдельностоящего названия месяца ("Сентябрь" а не "сентября"). Такое имя месяца используется когда включен ключ @:use_standalone_month_names@ (для отдельностоящего @select_month@ он включается по умолчанию), либо когда есть ключ @:discard_day@.
122
+
123
+ h3. Валидация
124
+
125
+ На тот случай, если по каким-то причинам нельзя воспользоваться ключом @full_messages.format@ в таблице переводов, Russian перегружает вывод "полных сообщений" об ошибках в ActiveModel.
126
+
127
+ Так, например,
128
+
129
+ @validates_acceptance_of :accepted_terms, :message => 'нужно принять соглашение'@
130
+
131
+ при валидации выдаст сообщение
132
+
133
+ @Accepted terms нужно принять соглашение@
134
+
135
+ или, например
136
+
137
+ @Соглашение об использовании нужно принять соглашение@
138
+
139
+ если вы указали перевод для имени атрибута.
140
+
141
+ Но
142
+
143
+ @validates_acceptance_of :accepted_terms, :message => '^Нужно принять соглашение'@
144
+
145
+ даст сообщение
146
+
147
+ @Нужно принять соглашение@
148
+
149
+ h3. Параметризация строк
150
+
151
+ Метод @parameterize@ инфлектора ActiveSupport использует механизмы транслитерации I18n. Если русская локаль является текущей, он сможет поддерживать транслитерацию букв русского алфавита.
152
+
153
+ Пример:
154
+
155
+ <pre><code>
156
+ class Person
157
+ def to_param
158
+ "#{id}-#{name.parameterize}"
159
+ end
160
+ end
161
+
162
+ @person = Person.find(1)
163
+ # => #<Person id: 1, name: "Дональд Кнут">
164
+
165
+ <%= link_to(@person.name, person_path(@person)) %>
166
+ # => <a href="/person/1-donald-knut">Дональд Кнут</a>
167
+ </code></pre>
168
+
169
+ _NB:_ Для простоты иногда проще воспользоваться методом @Russian::transliterate@ напрямую (чтобы не зависеть от текущей локали).
170
+
171
+ h1. Справочник
172
+
173
+ h2. Примеры и справка по переводам (I18n)
174
+
175
+ Небольшую справку по переводам (I18n) и пример того, как можно переводить имена моделей, атрибутов, и многие другие вещи, определенные в Rails или I18n, можно посмотреть в директории @lib/russian/locale@. Там находятся файлы переводов, которые используются в Russian, со всеми комментариями.
176
+
177
+ h2. Вспомогательные методы модуля Russian
178
+
179
+ <pre><code>
180
+ Russian.locale
181
+ Russian::LOCALE
182
+ </code></pre>
183
+
184
+ -- возвращает локаль русского языка (@:'ru'@).
185
+
186
+ <pre><code>
187
+ Russian::init_i18n
188
+ </code></pre>
189
+
190
+ -- инициализация Russian. Добавление русских переводов в путь загрузки, включение модулей для плюрализации и транслитерации и перегрузка I18n.
191
+
192
+ _NB:_ Выполняется автоматически при загрузке.
193
+
194
+ <pre><code>
195
+ Russian::translate
196
+ Russian::t
197
+ </code></pre>
198
+
199
+ -- прокси для метода @translate@ I18n, форсирует использование русской локали.
200
+
201
+ <pre><code>
202
+ Russian::localize
203
+ Russian::l
204
+ </code></pre>
205
+
206
+ -- прокси для метода @localize@ I18n, форсирует использование русской локали.
207
+
208
+ <pre><code>
209
+ Russian::strftime
210
+
211
+ Russian::strftime(Time.now)
212
+ => "Пн, 01 сент. 2008, 11:12:43 +0300"
213
+ Russian::strftime(Time.now, "%d %B")
214
+ >> "01 сентября"
215
+ Russian::strftime(Time.now, "%B")
216
+ => "Сентябрь"
217
+ </code></pre>
218
+
219
+ -- @strftime@ с форсированием русской локали (упрощенный вариант @localize@)
220
+
221
+ <pre><code>
222
+ Russian::pluralize
223
+ Russian::p
224
+
225
+ Russian.p(1, "вещь", "вещи", "вещей")
226
+ => "вещь"
227
+ Russian.p(2, "вещь", "вещи", "вещей")
228
+ => "вещи"
229
+ Russian.p(10, "вещь", "вещи", "вещей")
230
+ => "вещей"
231
+ Russian.p(3.14, "вещь", "вещи", "вещей", "вещи") # последний вариант используется для дробных величин
232
+ => "вещи"
233
+ </code></pre>
234
+
235
+ -- упрощенная (без использования хешей I18n) плюрализация для русского языка
236
+
237
+ <pre><code>
238
+ Russian::transliterate
239
+ Russian::translit
240
+
241
+ Russian.translit("рубин")
242
+ => "rubin"
243
+ Russian.translit("Hallo Юлику Тарханову")
244
+ => "Hallo Yuliku Tarhanovu"
245
+ </code></pre>
246
+
247
+ -- транслитерация русских букв в строке.
248
+
249
+ h1. Авторы
250
+
251
+ Для сообщений об ошибках, обнаруженных неточностях и предложений:
252
+
253
+ * "Ярослав Маркин":http://yaroslav.markin.net ("yaroslav@markin.net":mailto:yaroslav@markin.net)
254
+
255
+ При участии:
256
+
257
+ * "Юлика Тарханова":http://julik.nl
258
+ * "Евгения Пименова":http://libc.st/
259
+ * "Дмитрия Смалько":http://github.com/dsmalko
260
+ * "Алексея Фортуны":http://github.com/dadooda
261
+ * "Антона Агеева":http://blog.antage.name/
262
+ * "Александра Семенова":http://rotuka.com/
263
+ * "valodzka":http://github.com/valodzka
264
+ * "Николая Немшилова":http://github.com/MadRabbit
265
+
266
+ Огромное спасибо:
267
+
268
+ "Юлику Тарханову":http://julik.nl за "rutils":http://rutils.rubyforge.org/
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ require 'bundler/setup'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rspec/core/rake_task'
5
+
6
+ desc "Run all examples"
7
+ RSpec::Core::RakeTask.new(:spec) do |t|
8
+ #t.rspec_path = 'bin/rspec'
9
+ t.rspec_opts = %w[--color]
10
+ end
11
+
12
+ task :default => :spec
data/TODO ADDED
@@ -0,0 +1,4 @@
1
+ TODO
2
+ ====
3
+ * RDoc
4
+
data/lib/rs_russian.rb ADDED
@@ -0,0 +1 @@
1
+ require 'russian'