mi immagino che questo dovrebbe essere fatto manualmente nello stesso modo che eventuali altre traduzioni I18n sono fatto in Rails. Ciò significherebbe l'impostazione di file locali con le traduzioni. Qualcosa di simile:
# 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
Si potrebbe sovrascrivere il metodo time_zone_options_for_select
(che viene utilizzato da time_zone_select
) con la seguente:
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
I cambiamenti sono:
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
Quello che stiamo facendo è, ottenendo il nome localizzato dal nome TimeZone con I18n.t che sta cercando in config/locales/LANG.yml
formattato come mostrato sopra. Se non riusciamo a trovare la traduzione, ci limitiamo a utilizzare il nome TimeZone.
Ora che abbiamo fatto questa configurazione, dovremmo essere in grado di utilizzare:
f.time_zone_select :timezone, ActiveSupport::TimeZone.all
o minore
f.time_zone_select :timezone # defaults to ActiveSupport::TimeZone.all
fonte
2009-10-04 06:07:35
Che cosa stai cercando di tradurre esattamente? I nomi dei fusi orari? – theIV
I nomi delle città sono diversi nelle diverse lingue. – jpoz
È una bella domanda: ActiveSupport :: TimeZones è solo in inglese? –