Локализация и учет падежей

472 views
Skip to first unread message

woto

unread,
Jan 27, 2010, 8:55:57 AM1/27/10
to RubyOnRails to russian
Здравствйте, хочу сразу заложить локализацию поэтому прошу совета как
это лучше сделать. Постоянно возникают вопросы что написать вот в
таких ситуациях Создать/Создание, Сохранить/Сохранение, или с учетом
падежей Список, Списка, Списков и т.д. интуиция подсказывает, что надо
пользоваться гемом russian, но как это связать с config/locale/ru.yml
не понимаю, опыта мало.

Андрей Огневский

unread,
Jan 27, 2010, 8:58:47 AM1/27/10
to ror...@googlegroups.com
Есть вот такой гем: http://github.com/yaroslav/yandex_inflect/ от Ярослава Маркина
Делает запросы на Яндекс, возвращает 7 падежей заданного слова. При добавлении чего-нибудь можно сразу писать в базу необходимые падежи, а потом их оттуда дергать.

27 января 2010 г. 15:55 пользователь woto <oga...@gmail.com> написал:
--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ

 Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror...@googlegroups.com
 Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-un...@googlegroups.com
 Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru



--
= elf.xf

woto

unread,
Jan 27, 2010, 12:00:48 PM1/27/10
to RubyOnRails to russian
Ну это понятно, что сделать можно что угодно :), а все таки
стандартный способ через механизмы и файлы локализаций?

On 27 янв, 16:58, Андрей Огневский <a.ognev...@gmail.com> wrote:
> Есть вот такой гем:http://github.com/yaroslav/yandex_inflect/от Ярослава

Yaroslav Markin

unread,
Jan 27, 2010, 12:55:32 PM1/27/10
to ror...@googlegroups.com
Стандартного нет — можете каждую строчку писать в нескольких вариантах в файле локалей. То же самое с родом (м/ж/с), тема поднималась неоднократно (rails-i18n) и так же затухала.

2010/1/27 woto <oga...@gmail.com>

Ну это понятно, что сделать можно что угодно :), а все таки
стандартный способ через механизмы и файлы локализаций?


--
Yaroslav

http://evilmartians.com/

Julik Tarkhanov

unread,
Jan 27, 2010, 1:56:43 PM1/27/10
to ror...@googlegroups.com

On 27 jan 2010, at 18:55, Yaroslav Markin wrote:

> То же самое с родом (м/ж/с), тема поднималась неоднократно (rails-
> i18n) и так же затухала.


А я поэтому и молчу в rails-i18n потому что там все по настоящему
острые темы "так же и затухают", а на выхлопе ни рыба ни мясо.
Sorry guys.
--
Julik Tarkhanov
m...@julik.nl

woto

unread,
Jan 27, 2010, 3:54:50 PM1/27/10
to RubyOnRails to russian
Ок, так все таки как лучше? Я просто новичок, но с вполне конкретными
желаниями и пониманием прекрасного. Хотелось бы для начала хотя бы
обращаться к локализации покороче/попроще.

И еще, если я не ошибаюсь, то можно в rb файлах хранить локализацию?

On 27 янв, 20:55, Yaroslav Markin <yaros...@markin.net> wrote:
> Стандартного нет -- можете каждую строчку писать в нескольких вариантах в

Yaroslav Markin

unread,
Jan 27, 2010, 3:57:04 PM1/27/10
to ror...@googlegroups.com
2010/1/27 Julik Tarkhanov <julian.t...@gmail.com>

On 27 jan 2010, at 18:55, Yaroslav Markin wrote:

То же самое с родом (м/ж/с), тема поднималась неоднократно (rails-i18n) и так же затухала.


А я поэтому и молчу в rails-i18n потому что там все по настоящему острые темы "так же и затухают", а на выхлопе ни рыба ни мясо.
Sorry guys.

А это не острая тема, ее просто нельзя реализовать. «Я всегда буду против» это хорошая штука, но Contribute|GTFO еще лучше.


--
Yaroslav

http://evilmartians.com/

Yaroslav Markin

unread,
Jan 27, 2010, 4:03:35 PM1/27/10
to ror...@googlegroups.com

2010/1/27 woto <oga...@gmail.com>

Ок, так все таки как лучше? Я просто новичок, но с вполне конкретными
желаниями и пониманием прекрасного. Хотелось бы для начала хотя бы
обращаться к локализации покороче/попроще.
 
Делать разные ключи для разных падежей в вашем файле переводов. Еще можно делять лямбду [http://www.artweb-design.de/2009/7/12/ruby-i18n-gem-hits-0-2-0] и передавать ей падеж как параметр, но смысла нет никакого, с разными ключами все равно проще — по сути там все равно будет лукап на другой ключ.
 
И еще, если я не ошибаюсь, то можно в rb файлах хранить локализацию?
 
Можно, как хеш; мало чем отличается от YAML хранилища, разве что лямбды можно задавать [http://www.artweb-design.de/2008/9/6/the-future-of-i18n-in-ruby-on-rails-railsconf-europe-2008]

--
Yaroslav

http://evilmartians.com/

A.I.

unread,
Jan 27, 2010, 7:04:01 PM1/27/10
to RubyOnRails to russian
Правильнее так:

в config/locale/ru.yml:
ru:
button:
create: Создать
title:
create: Создание

Для перевода Rails скачайте перевод:
http://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ru.yml

Правда в нём не поддержки русской плюрализации (<<1 робот>>, <<2 робота>>,
<<5 роботов>>). Для нём используйте russian или более мощный r18n
( http://r18n.rubyforge.org/ ).

A.I.

unread,
Jan 27, 2010, 7:08:55 PM1/27/10
to RubyOnRails to russian
Кстати, разный род легко сделать в R18n с помощью фильтра ;)

ru:
add: !!sex
m: Пользователь добавил
f: Пользователь добавила
en:
add: User add

R18n::Filters.add(:sex) do |content, c, user|
if content.is_a? Hash
content[user.sex]
else
content
end
end

t.add(user) #=> "Пользователь добавила"

On 27 янв, 20:55, Yaroslav Markin <yaros...@markin.net> wrote:

> Стандартного нет -- можете каждую строчку писать в нескольких вариантах в

woto

unread,
Jan 29, 2010, 7:30:06 AM1/29/10
to RubyOnRails to russian
Всем спасибо за своевременные советы. Осталось теперь только с sed'ом
разобраться :) т.к. уже два раза пытался взяться за перевод
сгенерированных шаблонов web-app-theme
Reply all
Reply to author
Forward
0 new messages