Проблема перевода - PullRequest
0 голосов
/ 02 мая 2010

Я собираюсь перевести все часовые пояса на русский язык, и я сделал такие вещи:

модель:

# lib/i18n_time_zone.rb
class I18nTimeZone < ActiveSupport::TimeZone
  def self.all
    super.map { |z| create(z.name, z.utc_offset) }
  end

  def to_s
    translated_name = I18n.t(name, :scope => :timezones, :default => name)
    "(GMT#{formatted_offset}) #{translated_name}"
  end
end

вид:

<%= time_zone_select :user, :time_zone, nil, :model => I18nTimeZone %>

файл локали (/config/locales/ru.yml):

ru:
  timezones:
    "Midway Island": "Мидуэй"
    "Samoa": "Самоа"
    ....

Но бывают случаи, когда исходная строка содержит несколько точек ("."), Например "Санкт-Петербург" И I18n.t () говорит мне, что перевод отсутствует.

Как мне этого избежать?

1 Ответ

2 голосов
/ 02 мая 2010

Просто удалите точку для ключей перевода.

def to_s
  translated_name = I18n.t(key, :scope => :timezones, :default => name)
  "(GMT#{formatted_offset}) #{translated_name}"
end

def key
  @key ||= name.gsub(/\./, "")
end


ru:
  timezones:
    "Midway Island": "Мидуэй"
    "Samoa": "Самоа"
    "St Petersburg" : "some one translate this"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...