Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Контекст названий месяцев должен учитывать флаги и ширину поля #41

Open
wants to merge 74 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
9e7603a
Added ability to use %n as a marker to put input number in pluralizat…
defmthd Jul 17, 2012
811e6bc
Context-based date to allow flags and width
asavartsov Aug 9, 2012
ad75863
Context-based date to allow flags and width
asavartsov Aug 9, 2012
2a03c8e
Merge branch 'master' of https://github.com/asavartsov/russian
asavartsov Aug 9, 2012
f1a1b9e
Move strftime specs into existing group
asavartsov Aug 9, 2012
3f0a6a9
Make short month names shorter (3 letters)
glebtv Nov 29, 2012
6c754fd
Performance optimization for 'russian/transliteration'
ujifgc Jan 18, 2013
67af610
Исправлен Issue #38. Добавлен гем unicode.
davydovanton Sep 15, 2013
ac5033e
Fix hash syntax to be 1.8-compatible
alsemyonov Sep 16, 2013
113af13
Merge pull request #1 from alsemyonov/patch-1
davydovanton Sep 16, 2013
2bb9730
Fix to be jruby-compatible
davydovanton Sep 17, 2013
a87e9ec
Fix russian.gemspec
davydovanton Sep 17, 2013
778e6a1
Fix Gemfile
davydovanton Sep 17, 2013
8c4c302
Merge remote-tracking branch 'fikys/Issue#33'
glebtv Oct 23, 2013
8237617
Merge remote-tracking branch 'uj/master'
glebtv Oct 23, 2013
75217a1
Merge remote-tracking branch 'pea/master'
glebtv Oct 23, 2013
4260b25
fix specs, add rvm
glebtv Oct 23, 2013
5146ae0
fork gem
glebtv Oct 23, 2013
14d920f
for travis
glebtv Oct 23, 2013
431fcfe
code in readme [ci skip]
glebtv Oct 23, 2013
0ea2239
test with newer rubies
glebtv Oct 23, 2013
89380bd
don't test 1.9.2 - activesupport won't install cleanly
glebtv Oct 23, 2013
640e4e8
test only rbx19 [ci skip]
glebtv Oct 23, 2013
63eacf0
travis
glebtv Oct 23, 2013
173eaee
add bundler gem tasks [ci skip]
glebtv Oct 23, 2013
7acceee
bump version
glebtv Oct 23, 2013
d2df9d7
readme [ci skip]
glebtv Oct 23, 2013
f9bc3fe
trigger Travis
glebtv Oct 23, 2013
2a72e6e
disable jruby and rbx for now
glebtv Oct 23, 2013
1909a4c
trailing spaces
glebtv Oct 23, 2013
1d783f2
fix gemfile
glebtv Oct 23, 2013
696e0e9
0.7.1
glebtv Oct 23, 2013
3a8c9cc
Readme [ci skip]
glebtv Oct 28, 2013
99437bd
add rails_admin monkeypatch to fix datetime display
glebtv Oct 28, 2013
17028f2
test on 2.1.0
glebtv Jan 10, 2014
cfee4b4
gem "rs_russian", :github => "rs-pro/russian"
mibamur Mar 1, 2014
cbca15e
Merge pull request #1 from mibamur/patch-1
glebtv Apr 2, 2014
e9efafd
support i18n 0.7.0.beta1 - seems to work ok with no changes, spec passes
glebtv Aug 20, 2014
fbf8229
gems
glebtv Aug 20, 2014
732cf28
gems
glebtv Aug 20, 2014
0b73fba
gems
glebtv Sep 22, 2014
a798633
fix gems
glebtv Sep 22, 2014
50367a6
Fix json errors
glebtv Dec 30, 2014
3e58aa3
bump version
glebtv Dec 30, 2014
5ba166e
gem upd
glebtv Dec 30, 2014
a6243bb
gem update
glebtv Mar 17, 2015
c536c88
fix rails_admin datetime
xronos-i-am Apr 27, 2015
d7d8c83
Merge pull request #2 from xronos-i-am/master
glebtv May 5, 2015
0b9e7a6
bump version
glebtv May 5, 2015
0573445
gems
glebtv May 5, 2015
12ef9c6
drop rails_admin hack as its no longer needed
glebtv Nov 24, 2015
8466698
better fix for rails_admin
glebtv Nov 24, 2015
df3a4ba
fix blank case
glebtv Dec 3, 2015
067b4e6
dont mess other than ru
glebtv Apr 29, 2016
45cf744
raise rails version
glebtv Jul 4, 2016
d6c71f4
dependency update
glebtv Mar 21, 2017
10a477d
bump version
glebtv Mar 21, 2017
1e65871
use lower ver of rake
glebtv Mar 21, 2017
f5be30f
fix for old rails
glebtv Oct 18, 2017
2dec736
fix date filters
glebtv Dec 14, 2017
0144a54
bump
glebtv Dec 14, 2017
3a6e21e
update i18n to 0.9
glebtv Mar 21, 2018
7eba15c
bump i18n
glebtv May 4, 2018
2155601
bump i18n version
glebtv Sep 7, 2018
dcdcd52
update i18n
AnatolyShirykalov Jun 1, 2019
a898fc6
Merge pull request #4 from rs-pro/update_i18n
glebtv Jun 1, 2019
f271e36
bump version
glebtv Jun 1, 2019
288b595
bump version
glebtv Jun 1, 2019
150f0ff
Update russian.gemspec
AnatolyShirykalov Aug 23, 2019
e0aa8ac
relax deps, bump version, add ruby versions to travis
glebtv Aug 25, 2019
c33730b
downgrade rake
glebtv Aug 25, 2019
710fc7a
allow rails 6.1
glebtv Dec 23, 2020
a573b21
fix stack_level too deep
AnatolyShirykalov Feb 20, 2021
ced5ca4
Merge pull request #1 from rs-pro/fix_stack_level_too_deep
asavartsov Jun 7, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .ruby-gemset
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
russian
1 change: 1 addition & 0 deletions .ruby-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2.5.5
11 changes: 6 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
notifications:
email: false

language: ruby
rvm:
- 1.8.7
- 1.9.2
- ree
- rbx
- jruby
- 2.5
- 2.6
9 changes: 2 additions & 7 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,4 @@
source :rubygems
source "https://rubygems.org"

gem 'rake'
gem 'i18n', '>= 0.5.0'
gem 'rspec', '~> 2.7.0'

# Rails 3+
gem 'activesupport', '~> 3.0.0'
gemspec

57 changes: 40 additions & 17 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,24 +1,47 @@
PATH
remote: .
specs:
rs_russian (0.16.0)
activesupport (>= 3.0.0, < 6.2.0)
i18n (~> 1.8.0)
unicode (~> 0.4.4)

GEM
remote: http://rubygems.org/
remote: https://rubygems.org/
specs:
activesupport (3.0.10)
diff-lcs (1.1.3)
i18n (0.6.0)
rake (0.9.2.2)
rspec (2.7.0)
rspec-core (~> 2.7.0)
rspec-expectations (~> 2.7.0)
rspec-mocks (~> 2.7.0)
rspec-core (2.7.1)
rspec-expectations (2.7.0)
diff-lcs (~> 1.1.2)
rspec-mocks (2.7.0)
activesupport (6.1.0)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
zeitwerk (~> 2.3)
concurrent-ruby (1.1.7)
diff-lcs (1.4.4)
i18n (1.8.5)
concurrent-ruby (~> 1.0)
minitest (5.14.2)
rake (10.5.0)
rspec (2.99.0)
rspec-core (~> 2.99.0)
rspec-expectations (~> 2.99.0)
rspec-mocks (~> 2.99.0)
rspec-core (2.99.2)
rspec-expectations (2.99.2)
diff-lcs (>= 1.1.3, < 2.0)
rspec-mocks (2.99.4)
tzinfo (2.0.4)
concurrent-ruby (~> 1.0)
unicode (0.4.4.4)
zeitwerk (2.4.2)

PLATFORMS
ruby

DEPENDENCIES
activesupport (~> 3.0.0)
i18n (>= 0.5.0)
rake
rspec (~> 2.7.0)
bundler (~> 1.14)
rake (< 11.0)
rs_russian!
rspec (~> 2.14)

BUNDLED WITH
1.17.3
106 changes: 32 additions & 74 deletions README.textile
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
h1. Russian
"!https://secure.travis-ci.org/yaroslav/russian.png!":http://travis-ci.org/yaroslav/russian
h1. rs_russian
"!https://secure.travis-ci.org/rs-pro/russian.png!":http://travis-ci.org/rs-pro/russian

h3. Это форк с вытянутыми pull-реквестами, которые мы хотели использовать.

Нравится -- пользуйтесь, не нравится -- идите на страницу оригинала: "http://github.com/yaroslav/russian/":http://github.com/yaroslav/russian/
Jruby и Rubinius не тестируются и скорее всего не работают т.к. нам они не нужны.

Поддержка русского языка для Ruby и Rails при помощи библиотеки I18n.

Expand Down Expand Up @@ -32,51 +36,23 @@ h2. Что такое I18n. История

Однако, документация по плюрализации и транслитерации в I18n была неочевидной, а поддержка lambda-переводов для локализации даты-времени была практически "спрятана" в исходном коде, поэтому большинство разработчиков в основном использовали самые базовые таблицы переводов: локализацию Rails и, иногда, — плюрализацию. Возникла мысль выпустить @gem russian@ для последней версии @gem i18n@ и Ruby on Rails с поддержкой всех необходимых функций, но, на этот раз, грамотно сделанных через интерфейсы I18n. К сожалению, "хаки" для Ruby on Rails (хелперы даты-времени) вряд ли когда-либо будут включены в дистрибутив Rails, поэтому использовать их придется отдельно.

h1. Требования

* Ruby 1.8.7 или 1.9.2 (поддерживается совместимость с JRuby и Rubinius);
"!https://secure.travis-ci.org/yaroslav/russian.png!":http://travis-ci.org/yaroslav/russian

* Для использования с Rails нужна версия не ниже 3.0 (для более старых версий Rails используйте версии gem russian ветки 0.2);
* Для разработки и тестирования библиотеки вам понадобятся Bundler и RSpec.

h1. Установка

Страница Russian на GitHub -- "http://github.com/yaroslav/russian/":http://github.com/yaroslav/russian/

Для установки:

@gem install russian@

Чтобы задать локаль по умолчанию в вашем приложении, используйте

<pre><code>
I18n.default_locale = :ru
</code></pre>

Чтобы установить локаль для текущего треда, используйте

<pre><code>
I18n.locale = :ru
</code></pre>
В вашем @Gemfile@ сделайте ссылку на gem @russian@:

h2. Ruby on Rails 3.0 и выше
<pre><code>gem 'rs_russian', '~> 0.7.0'</code></pre>

В вашем @Gemfile@ сделайте ссылку на gem @russian@:
или

<pre><code>
gem 'russian', '~> 0.6.0'
</code></pre>
<pre><code>gem "rs_russian", :github => "rs-pro/russian", :branch => "master"</code></pre>

И установите gem в проект с помощью bundler:

@bundle install@ или @bundle update@.

Далее, укажите

<pre><code>
config.i18n.default_locale = :ru
</code></pre>
<pre><code>config.i18n.default_locale = :ru</code></pre>

в @config/application.rb@. Если по умолчанию нужна другая локаль, или же нужно переключать локали "на ходу", используйте методы модуля I18n (см. выше). Также ознакомьтесь с "документацией к I18n":http://rdoc.info/github/svenfuchs/i18n/master и "гидом по интернационализации Ruby on Rails":http://guides.rubyonrails.org/i18n.html.

Expand All @@ -92,14 +68,12 @@ h1. Использование

Предыдущие версии Russian форсированно выставляли локаль I18n по умолчанию в @:ru@ (Русский язык), от этого решено было отказаться: в Rails стало неудобно работать с мультиязычными приложениями, так как конструкция вида @config.i18n.default_locale = :en@ не работала. Теперь для использования русского языка в Rails по умолчанию нужно использовать строку

<pre><code>
config.i18n.default_locale = :ru
<pre><code>config.i18n.default_locale = :ru
</code></pre>

в @config/application.rb@. Для использования Russian отдельно от Rails можно выставить локаль I18n в русскую по умолчанию или для текущего треда, соответственно:

<pre><code>
I18n.default_locale = :ru
<pre><code>I18n.default_locale = :ru

I18n.locale = :ru
</code></pre>
Expand All @@ -116,7 +90,7 @@ I18n.locale = :ru

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

"Документация I18n":http://rdoc.info/github/svenfuchs/i18n/master
"Документация I18n":http://rdoc.info/github/svenfuchs/i18n/master

"Гид по интернационализации Ruby on Rails":http://guides.rubyonrails.org/i18n.html.

Expand Down Expand Up @@ -166,7 +140,7 @@ h3. Валидация
@Соглашение об использовании нужно принять соглашение@

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

Но

@validates_acceptance_of :accepted_terms, :message => '^Нужно принять соглашение'@
Expand All @@ -181,8 +155,7 @@ h3. Параметризация строк

Пример:

<pre><code>
class Person
<pre><code>class Person
def to_param
"#{id}-#{name.parameterize}"
end
Expand All @@ -192,8 +165,7 @@ end
# => #<Person id: 1, name: "Дональд Кнут">

<%= link_to(@person.name, person_path(@person)) %>
# => <a href="/person/1-donald-knut">Дональд Кнут</a>
</code></pre>
# => <a href="/person/1-donald-knut">Дональд Кнут</a></code></pre>

_NB:_ Для простоты иногда проще воспользоваться методом @Russian::transliterate@ напрямую (чтобы не зависеть от текущей локали).

Expand All @@ -205,73 +177,59 @@ h2. Примеры и справка по переводам (I18n)

h2. Вспомогательные методы модуля Russian

<pre><code>
Russian.locale
Russian::LOCALE
</code></pre>
<pre><code>Russian.locale
Russian::LOCALE</code></pre>

-- возвращает локаль русского языка (@:'ru'@).

<pre><code>
Russian::init_i18n
</code></pre>
<pre><code>Russian::init_i18n</code></pre>

-- инициализация Russian. Добавление русских переводов в путь загрузки, включение модулей для плюрализации и транслитерации и перегрузка I18n.

_NB:_ Выполняется автоматически при загрузке.

<pre><code>
Russian::translate
Russian::t
</code></pre>
<pre><code>Russian::translate
Russian::t</code></pre>

-- прокси для метода @translate@ I18n, форсирует использование русской локали.

<pre><code>
Russian::localize
Russian::l
</code></pre>
<pre><code>Russian::localize
Russian::l</code></pre>

-- прокси для метода @localize@ I18n, форсирует использование русской локали.

<pre><code>
Russian::strftime
<pre><code>Russian::strftime

Russian::strftime(Time.now)
=> "Пн, 01 сент. 2008, 11:12:43 +0300"
Russian::strftime(Time.now, "%d %B")
>> "01 сентября"
Russian::strftime(Time.now, "%B")
=> "Сентябрь"
</code></pre>
=> "Сентябрь"</code></pre>

-- @strftime@ с форсированием русской локали (упрощенный вариант @localize@)

<pre><code>
Russian::pluralize
<pre><code>Russian::pluralize
Russian::p

Russian.p(1, "вещь", "вещи", "вещей")
=> "вещь"
Russian.p(2, "вещь", "вещи", "вещей")
=> "вещи"
Russian.p(2, "%n вещь", "%n вещи", "%n вещей")
=> "2 вещи"
Russian.p(10, "вещь", "вещи", "вещей")
=> "вещей"
Russian.p(3.14, "вещь", "вещи", "вещей", "вещи") # последний вариант используется для дробных величин
=> "вещи"
</code></pre>
=> "вещи"</code></pre>

-- упрощенная (без использования хешей I18n) плюрализация для русского языка

<pre><code>
Russian::transliterate
<pre><code>Russian::transliterate
Russian::translit

Russian.translit("рубин")
=> "rubin"
Russian.translit("Hallo Юлику Тарханову")
=> "Hallo Yuliku Tarhanovu"
</code></pre>
=> "Hallo Yuliku Tarhanovu"</code></pre>

-- транслитерация русских букв в строке.

Expand Down
16 changes: 8 additions & 8 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
require 'rubygems'
require 'rspec/core/rake_task'
require 'rubygems/specification'
require 'bundler/setup'
Bundler::GemHelper.install_tasks

task :default => :spec
desc "Run specs"
RSpec::Core::RakeTask.new do |t|
t.pattern = FileList['spec/**/*_spec.rb']
t.rspec_opts = %w(-fs --color)
begin
require 'rspec/core/rake_task'
RSpec::Core::RakeTask.new(:spec)
rescue LoadError
end

task :default => :spec
4 changes: 0 additions & 4 deletions TODO

This file was deleted.

1 change: 1 addition & 0 deletions lib/rs_russian.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
require 'russian'
Loading