Je suppose que cela devrait être fait manuellement de la même manière que toutes les autres traductions I18n sont faites dans Rails. Cela signifierait la configuration des fichiers de paramètres régionaux avec les traductions. Quelque chose comme:
# es.yml
es:
timezones:
"International Date Line West": "Línea de fecha internacional del oeste"
"Pacific Time (US & Canada)": "Tiempo pacífico (& de los E.E.U.U.; Canadá)"
# and so on
Vous pouvez remplacer la méthode time_zone_options_for_select
(qui est utilisé par time_zone_select
) avec les éléments suivants:
def time_zone_options_for_select(selected = nil, priority_zones = nil, model = ::ActiveSupport::TimeZone)
zone_options = ""
zones = model.all
convert_zones = lambda do |list|
list.map do |z|
localized_name = I18n.t(z.name, :scope => :timezones, :default => z.name)
[ "(GMT#{z.formatted_offset}) #{localized_name}", z.name ]
end
end
if priority_zones
if priority_zones.is_a?(Regexp)
priority_zones = model.all.find_all {|z| z =~ priority_zones}
end
zone_options += options_for_select(convert_zones[priority_zones], selected)
zone_options += "<option value=\"\" disabled=\"disabled\">-------------</option>\n"
zones = zones.reject { |z| priority_zones.include?(z) }
end
zone_options += options_for_select(convert_zones[zones], selected)
zone_options
end
Les changements sont les suivants:
convert_zones = lambda do |list|
list.map do |z|
localized_name = I18n.t(z.name, :scope => :timezones, :default => z.name)
[ "(GMT#{z.formatted_offset}) #{localized_name}", z.name ]
end
end
Ce que nous faisons est, obtenir le nom localisé du nom de TimeZone avec I18n.t qui regarde dans config/locales/LANG.yml
formaté comme montré ci-dessus. Si nous ne trouvons pas la traduction, nous utilisons simplement le nom TimeZone.
Maintenant que nous avons fait cette configuration, nous devrions être en mesure d'utiliser:
f.time_zone_select :timezone, ActiveSupport::TimeZone.all
ou plus court
f.time_zone_select :timezone # defaults to ActiveSupport::TimeZone.all
Qu'essayez-vous exactement de traduire? Les noms des fuseaux horaires? – theIV
Oui, les noms des villes sont différents dans différentes langues. – jpoz
C'est une bonne question: les ActiveSupport :: TimeZones sont-ils uniquement en anglais? –