{"id":5730,"date":"2021-05-05T17:49:13","date_gmt":"2021-05-05T15:49:13","guid":{"rendered":"https:\/\/www.ibidemgroup.com\/edu\/?p=5730"},"modified":"2024-03-04T12:38:45","modified_gmt":"2024-03-04T11:38:45","slug":"traducir-rails-i18n","status":"publish","type":"post","link":"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/","title":{"rendered":"Traducciones en Rails con la API i18n: errores, modelos y atributos."},"content":{"rendered":"\n<p class=\"has-text-align-left wp-block-paragraph\"><strong>Texto original de Risa Fujii, redactado en Ingl\u00e9s y publicado en Dev.to.<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">***<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La API i18n (acr\u00f3nimo de internacionalizaci\u00f3n) es la forma est\u00e1ndar de integrar localizaci\u00f3n en Rails. La <a href=\"https:\/\/guides.rubyonrails.org\/i18n.html\">gu\u00eda<\/a> oficial tiene toda la informaci\u00f3n que necesitas, pero es muy larga. Este art\u00edculo se basa en las notas que tom\u00e9 cuando aprend\u00ed a configurar i18n y mi objetivo es ofrecer una gu\u00eda m\u00e1s accesible. Esta publicaci\u00f3n abarca la configuraci\u00f3n del archivo YAML para los mensajes de error y los nombres de los modelos\/atributos, y la b\u00fasqueda utilizando el m\u00e9todo <code><span style=\"background-color:#eeeeee\" class=\"background-color\">I18n.t<\/span><\/code> .<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><span style=\"color:#0693e3\" class=\"color\"><em>Disclaimer: Este es un ejercicio de traducci\u00f3n realizado por un estudiante de traducci\u00f3n en pr\u00e1cticas. Si lo que necesitas son <\/em><\/span><a href=\"https:\/\/www.ibidemgroup.com\/traducciones.php\"><em><span style=\"color:#0693e3\" class=\"color\">servicios de traducci\u00f3n<\/span><\/em><\/a><span style=\"color:#0693e3\" class=\"color\"><em> profesional, contacta con la <\/em><\/span><a href=\"https:\/\/www.ibidemgroup.com\"><em><span style=\"color:#0693e3\" class=\"color\">empresa de traducci\u00f3n<\/span><\/em><\/a><span style=\"color:#0693e3\" class=\"color\"><em> Ibidem Group, en su <\/em><\/span><a href=\"https:\/\/www.ibidemgroup.com\/traducciones-barcelona.php\"><em><span style=\"color:#0693e3\" class=\"color\">agencia de traducciones en Barcelona<\/span><\/em><\/a><span style=\"color:#0693e3\" class=\"color\"><em>. Ahora tambi\u00e9n <\/em><\/span><a href=\"https:\/\/www.ibidemgroup.com\/traducciones-madrid.php\"><em><span style=\"color:#0693e3\" class=\"color\">agencia de traducciones en Madrid<\/span><\/em><\/a><span style=\"color:#0693e3\" class=\"color\"><em>.<\/em><\/span><\/p><\/blockquote>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_89 counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\">INDICE<\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#Por_que_escribi_esta_publicacion\" >Por qu\u00e9 escrib\u00ed esta publicaci\u00f3n<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#Indice_de_contenidos\" >\u00cdndice\nde contenidos<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#0_Como_establecer_la_configuracion_regional_por_defecto\" >0.\nC\u00f3mo establecer la configuraci\u00f3n regional por defecto<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#1_Traduccion_de_nombres_de_modelos_y_atributos\" >1. Traducci\u00f3n de\nnombres de modelos y atributos<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#11_Definir_las_traducciones\" >1.1\nDefinir las traducciones<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#12_Acceso_a_las_traducciones_de_modelos_y_atributos\" >1.2 Acceso a las\ntraducciones de modelos y atributos<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#2_Traduccion_de_errores_de_ActiveRecord\" >2. Traducci\u00f3n de\nerrores de ActiveRecord<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#21_Desglose_de_mensajes_de_error\" >2.1\nDesglose de mensajes de error<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#22_Definir_las_traducciones\" >2.2\nDefinir las traducciones<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#23_Acceso_a_sus_traducciones_con_I18nt\" >2.3 Acceso a sus traducciones con&nbsp;I18n.t<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#24_Busqueda_de_errores_con_interpolacion_de_cadenas\" >2.4 B\u00fasqueda de\nerrores con interpolaci\u00f3n de cadenas<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#Traduccion_internacionalizacion_de_sitios_web\" >Traducci\u00f3n \/internacionalizaci\u00f3n de sitios web<\/a><\/li><\/ul><\/nav><\/div>\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Por_que_escribi_esta_publicacion\"><\/span><strong>Por qu\u00e9 escrib\u00ed esta publicaci\u00f3n<\/strong><strong><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Mi primer contacto con i18n fue el&nbsp;<a href=\"https:\/\/github.com\/svenfuchs\/rails-i18n\">rails-i18n<\/a>&nbsp;que proporciona traducciones por defecto para los mensajes\nde error m\u00e1s utilizados, los d\u00edas de la semana, etc. Aunque puedes instalarla y\ndar por terminado el trabajo, saber c\u00f3mo configurar i18n por ti mismo es\nnecesario si:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>deseas usar traducciones diferentes a las proporcionadas por rails-i18n<\/li><li>deseas incluir idiomas no incluidos en rails-i18n<\/li><li>solo necesitas traducciones para unos pocos idiomas y no quieres realizar la instalaci\u00f3n completa que incluye docenas de idiomas<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">En mi caso, fue por la tercera raz\u00f3n: solo necesitaba traducciones a japon\u00e9s.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Indice_de_contenidos\"><\/span><strong>\u00cdndice\nde contenidos<\/strong><strong><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/dev.to\/risafj\/the-basics-of-rails-i18n-translate-errors-models-and-attributes-84d#0\">0.<\/a><a href=\"https:\/\/dev.to\/risafj\/the-basics-of-rails-i18n-translate-errors-models-and-attributes-84d#0\"> C\u00f3mo establecer la configuraci\u00f3n regional por defecto<\/a><\/li><li><a href=\"https:\/\/dev.to\/risafj\/the-basics-of-rails-i18n-translate-errors-models-and-attributes-84d#1\">1.<\/a><a href=\"https:\/\/dev.to\/risafj\/the-basics-of-rails-i18n-translate-errors-models-and-attributes-84d#1\"> Traducci\u00f3n de nombres de modelos y atributos<\/a><ul><li><a href=\"#1.1\">1.1 Definir las traducciones<\/a><\/li><li><a href=\"#1.2\">1.2 Acceso a las traducciones de modelos y atributos<\/a><\/li><\/ul><\/li><li><a href=\"https:\/\/dev.to\/risafj\/the-basics-of-rails-i18n-translate-errors-models-and-attributes-84d#2\">2.<\/a><a href=\"https:\/\/dev.to\/risafj\/the-basics-of-rails-i18n-translate-errors-models-and-attributes-84d#2\"> Traducci\u00f3n de errores de ActiveRecord<\/a><ul><li><a href=\"#2.1\">2.1 Desglose de mensajes de error<\/a><\/li><li><a href=\"#2.2\">2.2 Definir las traducciones<\/a><\/li><\/ul><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"0_Como_establecer_la_configuracion_regional_por_defecto\"><\/span><strong>0.\nC\u00f3mo establecer la configuraci\u00f3n regional por defecto<\/strong><strong><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Yo puse la m\u00eda en japon\u00e9s.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># config\/application.rb<br>config.i18n.default_locale = :ja<br><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"1_Traduccion_de_nombres_de_modelos_y_atributos\"><\/span><strong>1. Traducci\u00f3n de\nnombres de modelos y atributos<\/strong><strong><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Documentos:&nbsp;<a href=\"https:\/\/guides.rubyonrails.org\/i18n.html#translations-for-active-record-models\">https:\/\/guides.rubyonrails.org\/i18n.html#translations-for-active-record-models<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"11_Definir_las_traducciones\"><\/span><strong>1.1\nDefinir las traducciones<\/strong><strong><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En primer lugar, define las traducciones de los nombres y atributos de tu modelo en un archivo YAML como el siguiente. Este ejemplo es para un&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">user <\/span>con dos atributos.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># config\/locales\/ja.yml<br>ja:<br> activerecord:<br>&nbsp;&nbsp;&nbsp; modelos:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; usuario: '\u30e6\u30fc\u30b6' #&lt;locale&gt;.activerecord.models&lt;model name&gt;<br>&nbsp;&nbsp;&nbsp; atributos:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; usuario:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nombre: '\u540d\u524d' #&lt;locale&gt;.activerecord.attributes.&lt;attribute name&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; contrase\u00f1a: '\u30d1\u30b9\u30ef\u30fc\u30c9'<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"12_Acceso_a_las_traducciones_de_modelos_y_atributos\"><\/span><strong>1.2 Acceso a las\ntraducciones de modelos y atributos<\/strong><strong><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\"># C\u00f3mo buscar las traducciones de los nombres de los modelos Usuario.nombre_modelo.humano<br>=&gt; \"\u30e6\u30fc\u30b6\"<br><br># C\u00f3mo buscar las traducciones de los atributos (puede utilizar s\u00edmbolos o cadenas)<br>User.human_attribute_name('nombre')<br>=&gt; \"\u540d\u524d\"<br><br>User.human_attribute_name(:name)<br>=&gt; \"\u540d\u524d\"<br><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"2_Traduccion_de_errores_de_ActiveRecord\"><\/span><strong>2. Traducci\u00f3n de\nerrores de ActiveRecord<\/strong><strong><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Documentos:&nbsp;<a href=\"https:\/\/guides.rubyonrails.org\/i18n.html#error-message-scopes\">https:\/\/guides.rubyonrails.org\/i18n.html#error-message-scopes<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"21_Desglose_de_mensajes_de_error\"><\/span><strong>2.1\nDesglose de mensajes de error<\/strong><strong><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Traducir los mensajes de error es un poco m\u00e1s complicado que con\nlos modelos. Hablemos primero de la estructura de los mensajes de error.\nActiveRecord tiene algunos errores de validaci\u00f3n incorporados que se producen\nsi el registro no es v\u00e1lido. Considere este ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">class User &lt; ApplicationRecord<br>      validates :name, presence: true<br>end<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si su configuraci\u00f3n regional es&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">:en<\/span>, este mensaje de error se muestre cuando se intenta crear un registro no v\u00e1lido.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">User.create!(name: '')<br>=&gt; ActiveRecord::RecordInvalid: Validation failed: Name can't be blank<br><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este mensaje consta en realidad de varias partes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">ActiveRecord::RecordInvalid:<\/span><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El tipo de error, que es el mismo independientemente de la\nconfiguraci\u00f3n regional. No es necesario traducirlo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2.&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">Validation failed:<\/span><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La descripci\u00f3n de este&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">RecordInvalid<\/span>&nbsp;en ingl\u00e9s, definida en Rails&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">en.yml<\/span>&nbsp;(<a href=\"https:\/\/github.com\/rails\/rails\/blob\/968de9cc6d48ca026303566d7d1f437d40360820\/activerecord\/lib\/active_record\/locale\/en.yml#L17\">c\u00f3digo fuente<\/a>). <strong>Se necesita<\/strong> <strong>traducci\u00f3n para su(s) locale(s).<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3.&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">Name can&#8217;t be blank<\/span><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este es el mensaje de error para los registros que infringen&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">presence: true<\/span>. Consta de dos partes: el atributo <span style=\"background-color:#eeeeee\" class=\"background-color\">Name <\/span>y el mensaje <span style=\"background-color:#eeeeee\" class=\"background-color\">no pueden estar en blanco<\/span> (<a href=\"https:\/\/github.com\/rails\/rails\/blob\/968de9cc6d48ca026303566d7d1f437d40360820\/activemodel\/lib\/active_model\/locale\/en.yml#L16\">c\u00f3digo fuente<\/a>). Resulta que el formato del mensaje de error por defecto es una interpolaci\u00f3n de dos elementos:&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">\u00ab%{atribute} %{message}\u00bb<\/span>&nbsp;(<a href=\"https:\/\/github.com\/rails\/rails\/blob\/968de9cc6d48ca026303566d7d1f437d40360820\/activemodel\/lib\/active_model\/locale\/en.yml#L4\">c\u00f3digo fuente<\/a>).&nbsp; <strong>Se necesita<\/strong> <strong>traducci\u00f3n para su(s) locale(s)<\/strong> <strong>.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nota: La traducci\u00f3n para el <span style=\"background-color:#eeeeee\" class=\"background-color\">attribute <\/span>se tomar\u00e1 de las traducciones de atributos del modelo definidas en la secci\u00f3n 1. Si no hay traducci\u00f3n, Rails imprimir\u00e1 el nombre del atributo en ingl\u00e9s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfQu\u00e9 sucede si se cambia la configuraci\u00f3n regional de&nbsp;:en&nbsp;a&nbsp;:ja&nbsp;sin definir las traducciones correspondientes? El mensaje de error que se muestra es&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">translation missing<\/span>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">User.create!(name: '')<br># =&gt; ActiveRecord::RecordInvalid: translation missing: ja.activerecord.errors.messages.record_invalid<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">As\u00ed que vamos a ver c\u00f3mo proporcionar traducciones a continuaci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"22_Definir_las_traducciones\"><\/span><strong>2.2\nDefinir las traducciones<\/strong><strong><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Seg\u00fan la&nbsp;<a href=\"https:\/\/guides.rubyonrails.org\/i18n.html#error-message-scopes\">gu\u00eda<\/a> oficial hay algunos lugares\nen los que Rails buscar\u00e1 una traducci\u00f3n para su error, en este orden.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>activerecord.errors.models.[model_name].attributes.[attribute_name]<\/li><li>activerecord.errors.models.[model_name]<\/li><li>activerecord.errors.messages<\/li><li>errores.atributos.[nombre_atributo]<\/li><li>mensajes.de.error<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Esto significa que si quieres establecer mensajes de error espec\u00edficos para un modelo o un atributo, tambi\u00e9n puedes hacerlo. Pero en este caso, digamos que queremos que el&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">record_invalid<\/span> y <span style=\"background-color:#eeeeee\" class=\"background-color\">blank <\/span>se traduzcan de la misma manera independientemente del modelo. Aqu\u00ed hay un ejemplo de configuraci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># config\/locales\/ja.yml<br><br>ja:<br>&nbsp; activerecord:<br>&nbsp;&nbsp;&nbsp; errors:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; messages:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; record_invalid: '\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306b\u5931\u6557\u3057\u307e\u3057\u305f: %{errores}'<br>&nbsp; errors:<br>&nbsp;&nbsp;&nbsp; format: \"%{atributo}%{mensaje}<br>&nbsp;&nbsp;&nbsp; messages:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Tambi\u00e9n deber\u00edas incluir traducciones para otros errores de ActiveRecord como \"empty\", \"taken\", etc.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; blank: '\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044'<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Sobre <span style=\"background-color:#eeeeee\" class=\"background-color\">rails-i18n<\/span><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La configuraci\u00f3n anterior est\u00e1 tomada del&nbsp;<a href=\"https:\/\/github.com\/svenfuchs\/rails-i18n\/blob\/master\/rails\/locale\/ja.yml\"><span style=\"background-color:#eeeeee\" class=\"background-color\">ja.yml<\/span><\/a>&nbsp;archivo&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">rails-i18n<\/span>&nbsp;que mencion\u00e9 en la introducci\u00f3n. La instalaci\u00f3n es una forma r\u00e1pida de configurar las traducciones por defecto. No viene preinstalado en tu proyecto Rails, as\u00ed que consulta la&nbsp;<a href=\"https:\/\/github.com\/svenfuchs\/rails-i18n\">documentaci\u00f3n<\/a>&nbsp;para m\u00e1s detalles sobre la instalaci\u00f3n y el uso.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"23_Acceso_a_sus_traducciones_con_I18nt\"><\/span><strong>2.3 Acceso a sus traducciones con&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">I18n.t<\/span><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora que has proporcionado traducciones para los mensajes de error, Rails mostrar\u00e1 realmente los mensajes de error en lugar de <span style=\"background-color:#eeeeee\" class=\"background-color\">translation missing<\/span>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La siguiente pregunta es: \u00bfc\u00f3mo se pueden buscar las traducciones definidas? Por ejemplo, \u00bfqu\u00e9 pasa si quieres&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">afirmar&nbsp;<\/span>que alg\u00fan mensaje est\u00e1 siendo levantado en una prueba?<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">test 'user is invalid if name is blank' do<br>&nbsp; invalid_user = User.new(name: '')<br>&nbsp; assert invalid_user.errors.messages[:name].include?(&lt;cannot be blank message&gt;)<br>end<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed es donde&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">I18n.t<\/span>&nbsp;entra en juego. La&nbsp;t&nbsp;significa \u00abtraducir\u00bb, y le permite acceder a cualquier traducci\u00f3n definida en sus archivos YAML. Para este ejemplo, queremos acceder al mensaje&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">errors.messages.blank<\/span>&nbsp;(consulte el apartado 2.2 para ver el archivo YAML). Hay dos maneras de hacerlo.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">I18n.t('errors.messages.blank')<br># =&gt; \"\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\"<br><br>I18n.t('blank', scope: ['errores', 'mensajes'])<br># =&gt; \"\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\"<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">As\u00ed de f\u00e1cil, \u00a1puedes buscar cualquier traducci\u00f3n que hayas\ndefinido!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nota: Puedes buscar los nombres de los modelos y de los atributos sin utilizar el m\u00e9todo&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">human&nbsp;<\/span>como por ejemplo&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">I18n.t(&#8216;activerecord.models.user&#8217;)<\/span>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">test 'user is invalid if name is blank' do&nbsp; <br>  invalid_user = User.create(name: '')<br>  expected_error = I18n.t('errors.messages.blank')<br>&nbsp; assert invalid_user.errors.messages[:name].include?(expected_error)<br>end<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"24_Busqueda_de_errores_con_interpolacion_de_cadenas\"><\/span><strong>2.4 B\u00fasqueda de\nerrores con interpolaci\u00f3n de cadenas<\/strong><strong><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/guides.rubyonrails.org\/i18n.html#error-message-interpolation\">https:\/\/guides.rubyonrails.org\/i18n.html#error-message-interpolation<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si echas un vistazo a cualquiera de los archivos YAML en el directorio&nbsp;rails-<span style=\"background-color:#eeeeee\" class=\"background-color\">i18n<\/span>&nbsp;te dar\u00e1s cuenta de que algunos mensajes utilizan la interpolaci\u00f3n de cadenas. Por ejemplo, si su mensaje de error de validaci\u00f3n es para&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">greater_than<\/span>,&nbsp; deber\u00e1s establecer&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">must be greater than %{count}<\/span> y rellenar el n\u00famero de&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">count<\/span>. Rails lo rellenar\u00e1 por ti cuando se produzca el error real, pero \u00bfc\u00f3mo podemos rellenar en&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">count<\/span>&nbsp;cuando busques el mensaje de error usando&nbsp;<span style=\"background-color:#eeeeee\" class=\"background-color\">I18n.t<\/span>?<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">I18n.t('errors.messages.greater_than')<br># =&gt; \"\u306f%{count}\u3088\u308a\u5927\u304d\u3044\u5024\u306b\u3057\u3066\u304f\u3060\u3055\u3044\"<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes pasarlo como argumento:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">I18n.t('errors.messages.greater_than', count: 5)<br># =&gt; \"\u306f5\u3088\u308a\u5927\u304d\u3044\u5024\u306b\u3057\u3066\u304f\u3060\u3055\u3044\"<\/pre>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00e9 que esto no es sino un fragmento de todo lo que se puede hacer con i18n en Rails, pero espero que sea una introducci\u00f3n \u00fatil. \u00a1Gracias por leerlo!<\/p>\n\n\n<p><\/p>\n<p><!--StartFragment--><\/p>\n\n\n\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"color:#0693e3\" class=\"color\">[Nota del Traductor]<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Traduccion_internacionalizacion_de_sitios_web\"><\/span><span style=\"color:#0693e3\" class=\"color\">Traducci\u00f3n \/internacionalizaci\u00f3n de sitios web<\/span><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"color:#0693e3\" class=\"color\">Risa Fujii, programadora web en una peque\u00f1a compa\u00f1\u00eda tecnol\u00f3gica de Tokio, Jap\u00f3n, nos resume aqu\u00ed las principales claves sobre c\u00f3mo internacionalizar Rails, m\u00e1s all\u00e1 de las traducciones por defecto facilitadas por rails-i18n. <\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"color:#0693e3\" class=\"color\">Internacionalizar una app o una web, com\u00fanmente referido como i18n, es mucho m\u00e1s que traducir sus contenidos. <\/span><strong><span style=\"color:#0693e3\" class=\"color\">Internacionalizar supone adaptar los contenidos a las peculiaridades de un idioma y un pais o regi\u00f3n particular.<\/span><\/strong><span style=\"color:#0693e3\" class=\"color\"> Obviamente que se traducen los contenidos, pero adem\u00e1s se deben traducir o adaptar la moneda, las unidades de medida, los tallajes, los tel\u00e9fonos, incluso algunas descripciones, o peculiaridades como el tono, o la posibilidad de tratar al cliente de t\u00fa o de usted. Todo esto son \u00abparticularidades regionales\u00bb incluidas en el concepto \u00abinternacionalizacion\u00bb. <\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"color:#0693e3\" class=\"color\">En Ibidem Group contamos con <\/span><a href=\"https:\/\/www.ibidemgroup.com\/traduccion-paginas-web.php\"><span style=\"color:#0693e3\" class=\"color\">traductores expertos en traducci\u00f3n de eCommerce<\/span><\/a><span style=\"color:#0693e3\" class=\"color\">, habituados a realizar traducciones seo-friendly, que estar\u00e1n encantados de ayudarte a traducir y localizar tu web o tu tienda online, ya sea un WordPress (WooCommerce), Shopify, Prestahop o Magento.<\/span><\/p>\n\n\n<p><!--EndFragment--><\/p>\n<p><\/p>\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-right kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;right&quot;,&quot;id&quot;:&quot;5730&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;Rate this post&quot;,&quot;legend&quot;:&quot;0\\\/5 - (0 votos)&quot;,&quot;size&quot;:&quot;24&quot;,&quot;title&quot;:&quot;Traducciones en Rails con la API i18n: errores, modelos y atributos.&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 0px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 19.2px;\">\n            <span class=\"kksr-muted\">Rate this post<\/span>\n    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"Traducci\u00f3n de un art\u00edculo e Risa Fujii sobre traduccion e internacionalizacion de sitios web y apps basadas en Rails: \u00abThe Basics of Rails I18n &#8211; Translate errors, models, and attributes\u00bb. C\u00f3mo traducir mensajes de error, modelos, atributos, etc. Un articulo de Risa Fujii publicado en dev.to","protected":false},"author":3,"featured_media":5736,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[619],"tags":[231,233,230],"class_list":["post-5730","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-traduccion-automatica","tag-i18n","tag-internacionalizacion","tag-rails"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"Gu\u00eda r\u00e1pida de la API i18n para internacionalizar Rails. C\u00f3mo traducir mensajes de error, modelos, atributos, etc. Un articulo de Risa Fujii publicado en dev.to\" \/>\n\t<meta name=\"robots\" content=\"max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n\t<meta name=\"author\" content=\"Chema Bescos\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"IBIDEM EDU |\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Internacionalizaci\u00f3n de Rails: gu\u00eda b\u00e1sica de la API i18n\" \/>\n\t\t<meta property=\"og:description\" content=\"Gu\u00eda r\u00e1pida de la API i18n para internacionalizar Rails. C\u00f3mo traducir mensajes de error, modelos, atributos, etc. Un articulo de Risa Fujii publicado en dev.to\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2021-05-05T15:49:13+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2024-03-04T11:38:45+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Internacionalizaci\u00f3n de Rails: gu\u00eda b\u00e1sica de la API i18n\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Gu\u00eda r\u00e1pida de la API i18n para internacionalizar Rails. C\u00f3mo traducir mensajes de error, modelos, atributos, etc. Un articulo de Risa Fujii publicado en dev.to\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/traducir-rails-i18n\\\/#article\",\"name\":\"Internacionalizaci\\u00f3n de Rails: gu\\u00eda b\\u00e1sica de la API i18n\",\"headline\":\"Traducciones en Rails con la API i18n: errores, modelos y atributos.\",\"author\":{\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/author\\\/chema\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/como-usar-api-rails-i18n.jpg\",\"width\":1140,\"height\":380,\"caption\":\"informaci\\u00f3n sobre c\\u00f3mo usar la API i18n Rails\"},\"datePublished\":\"2021-05-05T17:49:13+02:00\",\"dateModified\":\"2024-03-04T12:38:45+01:00\",\"inLanguage\":\"es-ES\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/traducir-rails-i18n\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/traducir-rails-i18n\\\/#webpage\"},\"articleSection\":\"Traduccion Automatica, i18n, internacionalizacion, rails\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/traducir-rails-i18n\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/#listItem\",\"position\":1,\"name\":\"Inicio\",\"item\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/traduccion-automatica\\\/#listItem\",\"name\":\"Traduccion Automatica\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/traduccion-automatica\\\/#listItem\",\"position\":2,\"name\":\"Traduccion Automatica\",\"item\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/traduccion-automatica\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/traducir-rails-i18n\\\/#listItem\",\"name\":\"Traducciones en Rails con la API i18n: errores, modelos y atributos.\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/#listItem\",\"name\":\"Inicio\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/traducir-rails-i18n\\\/#listItem\",\"position\":3,\"name\":\"Traducciones en Rails con la API i18n: errores, modelos y atributos.\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/traduccion-automatica\\\/#listItem\",\"name\":\"Traduccion Automatica\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/#organization\",\"name\":\"IBIDEM EDU\",\"url\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/author\\\/chema\\\/#author\",\"url\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/author\\\/chema\\\/\",\"name\":\"Chema Bescos\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/traducir-rails-i18n\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/953506883190e283b6bb05284141f6c30cdf4df316a9d7113feb85e55ea1d31e?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Chema Bescos\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/traducir-rails-i18n\\\/#webpage\",\"url\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/traducir-rails-i18n\\\/\",\"name\":\"Internacionalizaci\\u00f3n de Rails: gu\\u00eda b\\u00e1sica de la API i18n\",\"description\":\"Gu\\u00eda r\\u00e1pida de la API i18n para internacionalizar Rails. C\\u00f3mo traducir mensajes de error, modelos, atributos, etc. Un articulo de Risa Fujii publicado en dev.to\",\"inLanguage\":\"es-ES\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/traducir-rails-i18n\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/author\\\/chema\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/author\\\/chema\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/como-usar-api-rails-i18n.jpg\",\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/traducir-rails-i18n\\\/#mainImage\",\"width\":1140,\"height\":380,\"caption\":\"informaci\\u00f3n sobre c\\u00f3mo usar la API i18n Rails\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/traducir-rails-i18n\\\/#mainImage\"},\"datePublished\":\"2021-05-05T17:49:13+02:00\",\"dateModified\":\"2024-03-04T12:38:45+01:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/#website\",\"url\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/\",\"name\":\"IBIDEM EDU\",\"inLanguage\":\"es-ES\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.ibidemgroup.com\\\/edu\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Internacionalizaci\u00f3n de Rails: gu\u00eda b\u00e1sica de la API i18n","description":"Gu\u00eda r\u00e1pida de la API i18n para internacionalizar Rails. C\u00f3mo traducir mensajes de error, modelos, atributos, etc. Un articulo de Risa Fujii publicado en dev.to","canonical_url":"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/","robots":"max-snippet:-1, max-image-preview:large, max-video-preview:-1","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#article","name":"Internacionalizaci\u00f3n de Rails: gu\u00eda b\u00e1sica de la API i18n","headline":"Traducciones en Rails con la API i18n: errores, modelos y atributos.","author":{"@id":"https:\/\/www.ibidemgroup.com\/edu\/author\/chema\/#author"},"publisher":{"@id":"https:\/\/www.ibidemgroup.com\/edu\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.ibidemgroup.com\/edu\/wp-content\/uploads\/2021\/05\/como-usar-api-rails-i18n.jpg","width":1140,"height":380,"caption":"informaci\u00f3n sobre c\u00f3mo usar la API i18n Rails"},"datePublished":"2021-05-05T17:49:13+02:00","dateModified":"2024-03-04T12:38:45+01:00","inLanguage":"es-ES","mainEntityOfPage":{"@id":"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#webpage"},"isPartOf":{"@id":"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#webpage"},"articleSection":"Traduccion Automatica, i18n, internacionalizacion, rails"},{"@type":"BreadcrumbList","@id":"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.ibidemgroup.com\/edu\/#listItem","position":1,"name":"Inicio","item":"https:\/\/www.ibidemgroup.com\/edu\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.ibidemgroup.com\/edu\/traduccion-automatica\/#listItem","name":"Traduccion Automatica"}},{"@type":"ListItem","@id":"https:\/\/www.ibidemgroup.com\/edu\/traduccion-automatica\/#listItem","position":2,"name":"Traduccion Automatica","item":"https:\/\/www.ibidemgroup.com\/edu\/traduccion-automatica\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#listItem","name":"Traducciones en Rails con la API i18n: errores, modelos y atributos."},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.ibidemgroup.com\/edu\/#listItem","name":"Inicio"}},{"@type":"ListItem","@id":"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#listItem","position":3,"name":"Traducciones en Rails con la API i18n: errores, modelos y atributos.","previousItem":{"@type":"ListItem","@id":"https:\/\/www.ibidemgroup.com\/edu\/traduccion-automatica\/#listItem","name":"Traduccion Automatica"}}]},{"@type":"Organization","@id":"https:\/\/www.ibidemgroup.com\/edu\/#organization","name":"IBIDEM EDU","url":"https:\/\/www.ibidemgroup.com\/edu\/"},{"@type":"Person","@id":"https:\/\/www.ibidemgroup.com\/edu\/author\/chema\/#author","url":"https:\/\/www.ibidemgroup.com\/edu\/author\/chema\/","name":"Chema Bescos","image":{"@type":"ImageObject","@id":"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/953506883190e283b6bb05284141f6c30cdf4df316a9d7113feb85e55ea1d31e?s=96&d=mm&r=g","width":96,"height":96,"caption":"Chema Bescos"}},{"@type":"WebPage","@id":"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#webpage","url":"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/","name":"Internacionalizaci\u00f3n de Rails: gu\u00eda b\u00e1sica de la API i18n","description":"Gu\u00eda r\u00e1pida de la API i18n para internacionalizar Rails. C\u00f3mo traducir mensajes de error, modelos, atributos, etc. Un articulo de Risa Fujii publicado en dev.to","inLanguage":"es-ES","isPartOf":{"@id":"https:\/\/www.ibidemgroup.com\/edu\/#website"},"breadcrumb":{"@id":"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#breadcrumblist"},"author":{"@id":"https:\/\/www.ibidemgroup.com\/edu\/author\/chema\/#author"},"creator":{"@id":"https:\/\/www.ibidemgroup.com\/edu\/author\/chema\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/www.ibidemgroup.com\/edu\/wp-content\/uploads\/2021\/05\/como-usar-api-rails-i18n.jpg","@id":"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#mainImage","width":1140,"height":380,"caption":"informaci\u00f3n sobre c\u00f3mo usar la API i18n Rails"},"primaryImageOfPage":{"@id":"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/#mainImage"},"datePublished":"2021-05-05T17:49:13+02:00","dateModified":"2024-03-04T12:38:45+01:00"},{"@type":"WebSite","@id":"https:\/\/www.ibidemgroup.com\/edu\/#website","url":"https:\/\/www.ibidemgroup.com\/edu\/","name":"IBIDEM EDU","inLanguage":"es-ES","publisher":{"@id":"https:\/\/www.ibidemgroup.com\/edu\/#organization"}}]},"og:locale":"es_ES","og:site_name":"IBIDEM EDU |","og:type":"article","og:title":"Internacionalizaci\u00f3n de Rails: gu\u00eda b\u00e1sica de la API i18n","og:description":"Gu\u00eda r\u00e1pida de la API i18n para internacionalizar Rails. C\u00f3mo traducir mensajes de error, modelos, atributos, etc. Un articulo de Risa Fujii publicado en dev.to","og:url":"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/","article:published_time":"2021-05-05T15:49:13+00:00","article:modified_time":"2024-03-04T11:38:45+00:00","twitter:card":"summary_large_image","twitter:title":"Internacionalizaci\u00f3n de Rails: gu\u00eda b\u00e1sica de la API i18n","twitter:description":"Gu\u00eda r\u00e1pida de la API i18n para internacionalizar Rails. C\u00f3mo traducir mensajes de error, modelos, atributos, etc. Un articulo de Risa Fujii publicado en dev.to"},"aioseo_meta_data":{"post_id":"5730","title":"Internacionalizaci\u00f3n de Rails: gu\u00eda b\u00e1sica de la API i18n","description":"Gu\u00eda r\u00e1pida de la API i18n para internacionalizar Rails. C\u00f3mo traducir mensajes de error, modelos, atributos, etc. Un articulo de Risa Fujii publicado en dev.to","keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2023-09-12 16:29:36","updated":"2026-11-02 14:36:07","focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.ibidemgroup.com\/edu\/\" title=\"Inicio\">Inicio<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.ibidemgroup.com\/edu\/traduccion-automatica\/\" title=\"Traduccion Automatica\">Traduccion Automatica<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tTraducciones en Rails con la API i18n: errores, modelos y atributos.\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Inicio","link":"https:\/\/www.ibidemgroup.com\/edu\/"},{"label":"Traduccion Automatica","link":"https:\/\/www.ibidemgroup.com\/edu\/traduccion-automatica\/"},{"label":"Traducciones en Rails con la API i18n: errores, modelos y atributos.","link":"https:\/\/www.ibidemgroup.com\/edu\/traducir-rails-i18n\/"}],"_links":{"self":[{"href":"https:\/\/www.ibidemgroup.com\/edu\/wp-json\/wp\/v2\/posts\/5730","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ibidemgroup.com\/edu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ibidemgroup.com\/edu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ibidemgroup.com\/edu\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ibidemgroup.com\/edu\/wp-json\/wp\/v2\/comments?post=5730"}],"version-history":[{"count":43,"href":"https:\/\/www.ibidemgroup.com\/edu\/wp-json\/wp\/v2\/posts\/5730\/revisions"}],"predecessor-version":[{"id":11152,"href":"https:\/\/www.ibidemgroup.com\/edu\/wp-json\/wp\/v2\/posts\/5730\/revisions\/11152"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ibidemgroup.com\/edu\/wp-json\/wp\/v2\/media\/5736"}],"wp:attachment":[{"href":"https:\/\/www.ibidemgroup.com\/edu\/wp-json\/wp\/v2\/media?parent=5730"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ibidemgroup.com\/edu\/wp-json\/wp\/v2\/categories?post=5730"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ibidemgroup.com\/edu\/wp-json\/wp\/v2\/tags?post=5730"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}