-
Notifications
You must be signed in to change notification settings - Fork 0
Localizing language with a gender
Lukas Svoboda edited this page Mar 1, 2014
·
2 revisions
I18n does not support inflection according to a gender (or tense etc.)
You can use i18n-inflector-rails and redefine methods for generating default messages.
Gemfile:
gem 'i18n-inflector-rails'
app/controllers/resources_controller.rb:
class ResourcesController < Basepack::BaseController
include Basepack::Import::Controller
# setting i18n-inflector
# see:
# http://rubydoc.info/gems/i18n-inflector-rails/I18n/Inflector/Rails/ClassMethods
# http://rubydoc.info/gems/i18n-inflector/file/docs/USAGE
inflection_method :gender
def gender
#...some default implementation.
#You can:
# * redefine this metod in subclasses to return a proper gender.
# * delegate to to the resource model (resource_class) and define the gender there
# * define the model's gender in localization and read it from there
end
def message_edit_done(name = resource_config.label)
t("basepack.flash.successful", :name => name, :action => t("admin.actions.edit.done", gender: gender))
end
def message_new_done(name = resource_config.label)
t("basepack.flash.successful", :name => name, :action => t("admin.actions.new.done", gender: gender))
end
def message_destroy_done(name = resource_config.label)
t("basepack.flash.successful", :name => name, :action => t("admin.actions.delete.done", gender: gender))
end
def message_bulk_edit_done(name = resource_config.label)
t("basepack.flash.successful", :name => name, :action => t("basepack.actions.bulk_edit.done", gender: gender))
end
def message_bulk_edit_fail(model_label_plural = resource_config.label_plural)
t("basepack.flash.error_on_items", :model_label_plural => model_label_plural, :action => t("basepack.actions.bulk_edit.done"))
end
end
Also the localization file is needed to extend. Example of Czech localization:
cs:
web_name: "Ukázkový projekt"
i18n:
inflections:
gender:
f: "female"
m: "male"
n: "neuter"
man: :@m
woman: :@f
default: :@n
basepack:
flash:
successful: "%{name} úspěšně %{action}"
error: "%{name} @{f:nebyla|m:nebyl|n:nebylo} %{action}"
noaction: "Neprovodeny žádné akce"
model_not_found: "Model '%{model}' se nepodařilo nalézt"
object_not_found: "%{model} s ID '%{id}' se @{f:nepodařila|m:nepodařil|n:nepodařilo} nalézt"
error_on_items: "Objekt %{model_label_plural} nelze %{action}"
admin:
actions:
new:
done: "@{f:vytvořena|m:vytvořen|n:vytvořeno}"
edit:
done: "@{f:upravena|m:upraven|n:upraveno}"
delete:
done: "@{f:odstraněna|m:odstraněn|n:odstraněno}"