Por ejemplo:¿Cómo usar la clave i18n como traducción predeterminada en Rails 3?
I18n.t('something')
debe hacer salir solamente
something
si la traducción faltante.
Por ejemplo:¿Cómo usar la clave i18n como traducción predeterminada en Rails 3?
I18n.t('something')
debe hacer salir solamente
something
si la traducción faltante.
no, no es posible. Si usa I18, necesita tener un archivo que corresponda al idioma, de lo contrario I18n se quejará.
Por supuesto, puede establecer el idioma predeterminado en su archivo environment.rb. Debe estar cerca de la parte inferior y puede configurarlo para el idioma que desee, pero en su carpeta locales/
necesitará la correspondiente traducción yml
.
Es posible: Véase la sección 4.1.2 predeterminados en Rails Internationalization (I18n) API.
I18n.t :missing, :default => 'Not here'
# => 'Not here'
nota lateral: esto podría ayudar a averiguar lo que piensa rieles del ámbito actual es (por ejemplo, cuando se utiliza ".something")
http://unixgods.org/~tilo/Rails/which_l10n_strings_is_rails_trying_to_lookup.html
esta manera se puede evitar mejor tener faltante traducciones debido a la colocación incorrecta de cadenas de traducciones en el archivo L10n/claves incorrectas
La respuesta de David es la solución correcta a la pregunta, otra forma (más detallada) de hacerlo es volver a scue y devolver la clave:
def translate_nicely(key)
begin
I18n.translate!(key)
rescue
key
end
end
En los rieles 4 puede cambiar el manejador de excepciones.
Agregue lo siguiente al config/initializers/i18n.rb
:
module I18n
class MissingTranslationExceptionHandler < ExceptionHandler
def call(exception, locale, key, options)
if exception.is_a?(MissingTranslation)
key
else
super
end
end
end
end
I18n.exception_handler = I18n::MissingTranslationExceptionHandler.new
ahora en vistas que sólo puede hacer:
Guía<p><%= t "Not translated!" %></p>
sobre el tema: http://guides.rubyonrails.org/i18n.html#using-different-exception-handlers
Puede que solo quiera esto para un entorno específico. Agregar esto como un inicializador limita las posibilidades. Pero gracias por el enlace. –
Utilizando la lógica excepción de flujo condicional es generalmente mala práctica. Del libro de refactorización: http://www.refactoring.com/catalog/replaceExceptionWithTest.html –
Estoy de acuerdo en que, en general, es una mala práctica, también he dicho que la solución de David es la forma correcta de recurrir a un valor predeterminado. Por supuesto, también hay casos (pragmáticos) en los que no desea que la aplicación exhiba un error y use un valor predeterminado sensato para proporcionar una mejor experiencia de usuario. Yo diría que es justo desviarse de las directrices y manejar los errores muy bien cuando este es el caso. – Steventux