Added grammatical inflection support using I18n Inflector with Rails plug-in

This commit is contained in:
Paweł Wilk 2011-01-14 18:28:21 +01:00
parent 641b805da2
commit ee59f36b77
6 changed files with 138 additions and 0 deletions

View file

@ -25,6 +25,9 @@ gem 'bson', '1.1'
gem 'haml' gem 'haml'
gem 'will_paginate', '3.0.pre2' gem 'will_paginate', '3.0.pre2'
#Inflected translations
gem 'i18n-inflector-rails', '0.1.0'
#Uncatagorized #Uncatagorized
gem 'roxml', :git => 'git://github.com/Empact/roxml.git' gem 'roxml', :git => 'git://github.com/Empact/roxml.git'
gem 'addressable', :require => 'addressable/uri' gem 'addressable', :require => 'addressable/uri'

View file

@ -11,6 +11,9 @@ class ApplicationController < ActionController::Base
before_filter :count_requests before_filter :count_requests
before_filter :set_invites before_filter :set_invites
before_filter :set_locale before_filter :set_locale
before_filter :set_grammatical_gender
inflection_method :grammatical_gender => :gender
def set_contacts_notifications_and_status def set_contacts_notifications_and_status
if user_signed_in? if user_signed_in?
@ -50,6 +53,28 @@ class ApplicationController < ActionController::Base
end end
end end
def set_grammatical_gender
if (user_signed_in? && I18n.inflector.inflected_locale?)
gender = current_user.profile.gender.to_s.tr('!()[]"\'`*=|/\#.,-:', '').downcase
unless gender.empty?
i_langs = I18n.inflector.inflected_locales(:gender)
i_langs.delete I18n.locale
i_langs.unshift I18n.locale
i_langs.each do |lang|
token = I18n.inflector.true_token(gender, :gender, lang)
unless token.nil?
@grammatical_gender = token
break
end
end
end
end
end
def grammatical_gender
@grammatical_gender || nil
end
def similar_people contact, opts={} def similar_people contact, opts={}
opts[:limit] ||= 5 opts[:limit] ||= 5
aspect_ids = contact.aspect_ids aspect_ids = contact.aspect_ids

View file

@ -7,6 +7,7 @@ class PostsController < ApplicationController
skip_before_filter :count_requests skip_before_filter :count_requests
skip_before_filter :set_invites skip_before_filter :set_invites
skip_before_filter :set_locale skip_before_filter :set_locale
skip_before_filter :set_grammatical_gender
def show def show
@post = Post.first(:id => params[:id], :public => true) @post = Post.first(:id => params[:id], :public => true)

View file

@ -10,6 +10,7 @@ class PublicsController < ApplicationController
skip_before_filter :count_requests skip_before_filter :count_requests
skip_before_filter :set_invites skip_before_filter :set_invites
skip_before_filter :set_locale skip_before_filter :set_locale
skip_before_filter :set_grammatical_gender
layout false layout false
caches_page :host_meta caches_page :host_meta

View file

@ -0,0 +1,44 @@
all:
i18n:
inflections:
gender:
f: "female"
m: "male"
n: "neuter"
masculine: @m
male: @m
man: @m
boy: @m
b: @m
he: @m
sir: @m
mr: @m
mister: @m
guy: @m
dude: @m
gentleman: @m
mal: @m
female: @f
feminine: @f
girl: @f
g: @f
lady: @f
she: @f
miss: @f
missus: @f
mrs: @f
missis: @f
mistress: @f
ms: @f
neuter: @n
neutral: @n
it: @n
they: @n
impersonal: @n
default: n

View file

@ -0,0 +1,64 @@
pl:
i18n:
inflections:
gender:
f: "rodzaj żeński"
m: "rodzaj męski"
n: "rodzaj nijaki"
masculine: @m
facet: @m
chłop: @m
chłopak: @m
chłopek: @m
chłopiec: @m
chłopaczek: @m
mąż: @m
prawiczek: @m
prawik: @m
boj: @m
woj: @m
gość: @m
gostek: @m
gościu: @m
samiec: @m
samczyk: @m
kawaler: @m
mężczyzna: @m
męski: @m
pani: @f
kobieta: @f
k: @f
kobietka: @f
dziewczyna: @f
dziewczę: @f
baba: @f
babka: @f
facetka: @f
dziewczynka: @f
dziewica: @f
niewiasta: @f
samica: @f
samiczka: @f
ona: @f
panna: @f
pannica: @f
panienka: @f
żeński: @f
laska: @f
lasencja: @f
żona: @f
dziewoja: @f
neuter: @n
to: @n
ono: @n
dziecko: @n
ktoś: @n
coś: @n
impersonal: @n
nijaki: @n
default: n