{"id":25291,"date":"2016-10-10T12:24:14","date_gmt":"2016-10-10T12:24:14","guid":{"rendered":"https:\/\/dev.railscarma.com\/make-rails-application-multilingual\/"},"modified":"2022-09-06T08:22:58","modified_gmt":"2022-09-06T08:22:58","slug":"hacer-una-aplicacion-rails-multilingue","status":"publish","type":"post","link":"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/hacer-una-aplicacion-rails-multilingue\/","title":{"rendered":"C\u00f3mo hacer que su aplicaci\u00f3n Rails sea multiling\u00fce"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"25291\" class=\"elementor elementor-25291\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6de2d749 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6de2d749\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1434b12f\" data-id=\"1434b12f\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-77cf116d elementor-widget elementor-widget-text-editor\" data-id=\"77cf116d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>Enfoque gema Rails, enfoque MySQL y estructura Rails multiling\u00fce<\/h3>\n<p>La mayor parte del mundo no habla ingl\u00e9s. Ah\u00ed es donde entran en juego la internacionalizaci\u00f3n y la localizaci\u00f3n. Rails tiene una gran API i18n.<br>Referencia:<a href=\"http:\/\/guides.rubyonrails.org\/i18n.html\"> http:\/\/guides.rubyonrails.org\/i18n.html<\/a><\/p>\n<p>Proporciona un marco f\u00e1cil de usar y extensible para traducir su aplicaci\u00f3n a un \u00fanico idioma personalizado distinto del ingl\u00e9s o para proporcionar soporte multiling\u00fce en nuestra aplicaci\u00f3n.<\/p>\n<p><strong>API I18n:<\/strong><br>Los m\u00e9todos m\u00e1s importantes de la API I18n son:<br>translate # Buscar traducciones de texto<br>localize # Localizar objetos de fecha y hora a formatos locales<\/p>\n<p>Estos tienen los alias #t y #l para que puedas utilizarlos as\u00ed:<\/p>\n<pre><code>I18n.t 'app.title'\nI18n.l Hora.ahora<\/code><\/pre>\n<p><strong>Rails-i18n gem:<\/strong><br><strong>Instalaci\u00f3n:<\/strong><br>A\u00f1adir al Gemfile:<\/p>\n<pre><code>gem 'rails-i18n', github: 'svenfuchs\/rails-i18n', branch: 'master' # Para 5.x<\/code><\/pre>\n<p><strong>Configuraci\u00f3n:<\/strong><br>Por defecto rails-i18n carga todos los archivos de configuraci\u00f3n regional, reglas de pluralizaci\u00f3n y transliteraci\u00f3n disponibles en la gema. Este comportamiento puede cambiarse si especificamos en config\/environments\/* las configuraciones regionales que deben cargarse mediante la opci\u00f3n I18n.available_locales:<\/p>\n<pre><code>config.i18n.available_locales = ['es-CO', :de]<\/code><\/pre>\n<p>o<\/p>\n<pre><code>config.i18n.available_locales = :nl<\/code><\/pre>\n<p>Tambi\u00e9n podemos utilizar otra gema:<\/p>\n<p><strong>Globalizar la gema:<\/strong><br>Biblioteca est\u00e1ndar I18n de Rails para la traducci\u00f3n de modelos y datos de ActiveRecord. Globalize se basa en la API I18n de Ruby on Rails para a\u00f1adir traducciones de modelos a los modelos de ActiveRecord.<\/p>\n<p><strong>Instalaci\u00f3n:<\/strong><br>Cuando se utiliza bundler poner esto en nuestro Gemfile:<\/p>\n<pre><code>gem 'globalize', '~&gt; 5.0.0'\nPara usar globalize con Rails 5 a\u00f1adimos esto en nuestro Gemfile\ngem 'activemodel-serializers-xml'<\/code><\/pre>\n<p><b>2. 2. Documentaci\u00f3n: <\/b><a href=\"https:\/\/github.com\/globalize\/globalize\">https:\/\/github.com\/globalize\/globalize<\/a><br><\/p>\n<p><strong style=\"font-size: 16px; color: var( --e-global-color-text );\">Dise\u00f1o de BD para aplicaci\u00f3n multiling\u00fce (ingl\u00e9s y \u00e1rabe):<\/strong><\/p>\n<p>Enfoque para admitir 2 o 3 idiomas:<\/p>\n<p><strong>1. Enfoque en columna:<\/strong><\/p>\n<pre><code>Crear modelo de aproximaci\u00f3n de columnas con columnas de idioma;\n`title_en` varchar(255) NOT NULL,\n`title_ar` varchar(255) NOT NULL,<\/code><\/pre>\n<p>Ahora bien, la forma de consultarlo tambi\u00e9n es bastante sencilla. Podemos hacerlo seleccionando autom\u00e1ticamente las columnas adecuadas seg\u00fan el idioma elegido.<\/p>\n<p><strong>Ventajas:<\/strong><\/p>\n<ul>\n<li>Simplicidad: f\u00e1cil de aplicar<\/li>\n<li>Consultas sencillas, sin necesidad de JOIN<\/li>\n<li>Sin duplicados - no tiene contenido duplicado<\/li>\n<\/ul>\n<p><strong>Desventajas:<\/strong><\/p>\n<ul>\n<li>Dif\u00edcil de mantener - funciona de manera sencilla para 2-3 idiomas, pero se vuelve realmente dif\u00edcil cuando se tienen muchas columnas o muchos idiomas.<\/li>\n<li>Dif\u00edcil a\u00f1adir una nueva lengua<\/li>\n<\/ul>\n<p><strong>2. Tabla de traducci\u00f3n Enfoque:<\/strong><br>Disponer de una tabla de traducci\u00f3n relacionada para cada tabla traducible.<\/p>\n<pre><code>CREAR TABLA PRODUCTO (id int, PRECIO N\u00daMERO(18, 2))\nCREAR TABLA PRODUCT_tr (id int, product_id INT FK, languagecode varchar, name text, description text)<\/code><\/pre>\n<p>De esta forma, si tenemos varias columnas traducibles, s\u00f3lo necesitar\u00edamos una \u00fanica uni\u00f3n para obtenerlas y podr\u00eda ser m\u00e1s f\u00e1cil importar art\u00edculos junto con sus traducciones correspondientes.<\/p>\n<ul>\n<li>No es necesario modificar el esquema de la base de datos para los nuevos idiomas (lo que limita los cambios de c\u00f3digo).<\/li>\n<li>No requiere mucho espacio para idiomas no implementados o traducciones de un art\u00edculo concreto.<br>Proporciona la mayor flexibilidad<\/li>\n<li>No acabamos con tablas dispersas<\/li>\n<li>No tenemos que preocuparnos de claves nulas ni de comprobar que estamos mostrando una traducci\u00f3n existente en lugar de una entrada nula.<\/li>\n<\/ul>\n<p><strong>Aplicaci\u00f3n multiling\u00fce con Rails-5 (ingl\u00e9s y \u00e1rabe):<\/strong><br>El enfoque para las aplicaciones Rails multiling\u00fces es muy similar al de las monoling\u00fces. En este caso tenemos que definir archivos de idioma YAML para todos los idiomas necesarios e indicar a la aplicaci\u00f3n Rails qu\u00e9 idioma debe utilizar en cada momento. Esto se hace mediante <strong>I18n.locale.<\/strong><\/p>\n<p>Configuraci\u00f3n de I18n.locale mediante el prefijo de ruta URL<br>Queremos que http:\/\/0.0.0.0:3000\/ar muestre la versi\u00f3n \u00e1rabe y http:\/\/0.0.0.0:3000\/en la versi\u00f3n inglesa.<\/p>\n<p>config\/rutas.rb<\/p>\n<pre><code>Myapp::Application.routes.draw do\n scope \"(:locale)\", :locale =&gt; \/en|ar\/ do\n  root :to =&gt; 'p\u00e1gina#index'\n  get \"p\u00e1gina\/\u00edndice\"\n end\nend<\/code><\/pre>\n<p>Establecer un <strong>antes_del_filtro<\/strong> en app\/controllers\/application_controller.rb.<\/p>\n<pre><code>clase ApplicationController &lt; ActionController::Base\n  protect_from_forgery\n  before_filter :set_locale\n\n  privado\n  def set_locale\n  I18n.locale = params[:locale] || I18n.default_locale\n end\nend<\/code><\/pre>\n<p>Para probarlo, ve a la URL;<\/p>\n<pre><code>http:\/\/0.0.0.0:3000\/ar<\/code><\/pre>\n<p>O<\/p>\n<pre><code>http:\/\/0.0.0.0:3000\/ar\/page\/index<\/code><\/pre>\n<p><strong>Establecer un idioma por defecto:<\/strong><\/p>\n<pre><code>app\/controllers\/application_controller.rb:\nclass ControladorDeAplicacion &lt; ControladorDeAccion::Base\n  protect_from_forgery\n  before_filter :set_locale\n\n  privado\n  def set_locale\n  I18n.locale = params[:locale] || I18n.default_locale\n  Rails.application.routes.default_url_options[:locale]= I18n.locale\n end\nend<\/code><\/pre>\n<p>Por lo tanto, no es necesario hacer nada m\u00e1s. Todos los enlaces generados mediante el generador de andamios se modifican autom\u00e1ticamente en consecuencia.<\/p>\n<p><strong>Configuraci\u00f3n de I18n.locale a trav\u00e9s del encabezado HTTP Accept Language del navegador:<\/strong><\/p>\n<pre><code>app\/controllers\/application_controller.rbclass\nApplicationController &lt; ActionController::Base\n  protect_from_forgery\n  before_filter :set_locale\n  privado\n  def extract_locale_from_accept_language_header\n   request.env[&#039;HTTP_ACCEPT_LANGUAGE&#039;].scan(\/^[a-z]{2}\/).first\n  end\n  def set_locale\n   I18n.locale = extract_locale_from_accept_language_header || I18n.default_locale\n  end\n fin<\/code><\/pre>\n<p>Aqu\u00ed podemos cambiar limpiar nuestro archivo de rutas:<\/p>\n<pre><code>config\/routes.rb:\nMyapp::Application.routes.draw do\n get \"p\u00e1gina\/\u00edndice\"\n root :to =&gt; 'p\u00e1gina#index'\nend<\/code><\/pre>\n<p><strong>Almacenamiento de I18n.locale en la sesi\u00f3n<\/strong><\/p>\n<pre><code>app\/controllers\/set_mylanguage_controller.rb:\nclass SetMylanguageController &lt; ApplicationController\n #English\n def en\n  I18n.locale = :en\n  set_session_and_redirect\n end\n\n 1TP5\u00c1rabe\n def ar\n  I18n.locale = :ar\n  set_session_and_redirect\n end\n\n privado\n def set_session_and_redirect\n  session[:locale] = I18n.locale\n  redirect_to :back\n  rescue ActionController::RedirectBackError\n  redirect_to :root\n end\nend<\/code><\/pre>\n<p><strong>Cambio en el controlador de la aplicaci\u00f3n:<\/strong><\/p>\n<pre><code>app\/controllers\/application_controller.rb:\nclass ControladorDeAplicacion &lt; ControladorDeAccion::Base\n protect_from_forgery\n before_filter :set_locale\n\n privado\n def set_locale\n  I18n.locale = sesi\u00f3n[:locale] || I18n.default_locale\n  session[:locale] = I18n.locale\n end\nend<\/code><\/pre>\n<p>Para poner \u00e1rabe:<\/p>\n<pre><code>http:\/\/0.0.0.0:3000\/set_mylanguage\/ar<\/code><\/pre>\n<p>Para configurar el ingl\u00e9s:<\/p>\n<pre><code>http:\/\/0.0.0.0:3000\/set_mylanguage\/en<\/code><\/pre>\n<p><strong>Bloques de texto en formato YAML:<\/strong><\/p>\n<p>Cree primero los siguientes directorios:<\/p>\n<pre><code>$ mkdir -p config\/locales\/models\/item\n$ mkdir -p config\/locales\/views\/item<\/code><\/pre>\n<p>Inserte las siguientes l\u00edneas en el archivo config\/application.rb:<\/p>\n<p># La configuraci\u00f3n regional por defecto es :en y todas las traducciones de config\/locales\/*.rb,yml se cargan autom\u00e1ticamente.<\/p>\n<pre><code>config.i18n.load_path += Dir[Rails.root.join('config', 'locales', 'models', '*', '*.yml').to_s]\nconfig.i18n.load_path += Dir[Rails.root.join('config', 'locales', 'views', '*', '*.yml').to_s]\nconfig.i18n.default_locale = :en<\/code><\/pre>\n<p>Tendremos que crear un archivo aqu\u00ed; config\/locales\/models\/item<br>config\/locales\/models\/item\/ar.yml para el \u00e1rabe<br>y aseg\u00farese de que en.yml est\u00e1 presente para el ingl\u00e9s.<\/p>\n<p><strong>Ingl\u00e9s YAML:<\/strong><br>Como la mayor\u00eda de las cosas ya est\u00e1n presentes en el sistema para Ingl\u00e9s<br>Inserte lo siguiente en el archivo es.yml.<\/p>\n<pre><code># ruby encoding: utf-8<\/code><\/pre>\n<pre><code>es\n vistas:\n  mostrar: Mostrar\n  editar: Edit\n  destruir: Borrar\n  are_you_sure: \u00bfEst\u00e1s seguro?\n  back: Atr\u00e1s: Atr\u00e1s\n  \u00edtem\n   \u00edndice:\n     t\u00edtulo: Lista de todos los elementos\n   nuevo\n     t\u00edtulo: Nuevo elemento\n   mensajes_flash:\n     item_was_successfully_created: 'El art\u00edculo se ha creado correctamente.'<\/code><\/pre>\n<p><strong>YAML \u00e1rabe:<\/strong><br>Tendremos que insertar valores\/textos en \u00e1rabe en ar.yml como en en.yml<br>Incluso podemos copiar una traducci\u00f3n por defecto ya hecha por Sven Fuchs desde su repositorio de github <a href=\"https:\/\/github.com\/svenfuchs\/rails-i18n\">https:\/\/github.com\/svenfuchs\/rails-i18n<\/a>:<\/p>\n<pre><code>$ cd config\/locales<\/code><\/pre>\n<pre><code>$ curl -O https:\/\/raw.github.com\/svenfuchs\/rails-i18n\/master\/rails\/locale\/ar.yml<\/code><\/pre>\n<p><strong>Traducir a la vista:<\/strong><br>Podemos usar human_attribute_name() para los atributos y los enlaces necesitan ser traducidos con I18n.t. Podemos usar number_to_currency() para mostrar la cantidad\/precio en formato:<\/p>\n<p>Ejemplos:<\/p>\n<pre><code>&nbsp;<\/code><\/pre>\n<h1>&lt;% = t &#8216;views.item.index.listing_items&#8217; %&gt;<\/h1>\n<pre><code>\n <\/code><\/pre>\n<p><strong>Traducci\u00f3n de mensajes Flash en el controlador<\/strong><\/p>\n<pre><code>si @elemento.guardar\n   format.html { redirect_to @item, notice:\nI18n.t('views.item.flash_messages.item_was_successfully_created') }\n   format.json { render json: @item, status: :created, location: @elemento }\nelse\n   format.html { renderizar acci\u00f3n: \"nuevo\" }\n   format.json { render json: @item.errors, status: :unprocessable_entity }\nend<\/code><\/pre>\n<p>Para otras traducciones de idiomas ya hechas:<br><a href=\"https:\/\/github.com\/svenfuchs\/rails-i18n\/tree\/master\/rails\/locale\">https:\/\/github.com\/svenfuchs\/rails-i18n\/tree\/master\/rails\/locale<\/a><\/p>\n<div><strong>LUBAIB CEEJEY<\/strong><\/div>\n<div>Desarrollador Sr. Ruby on Rails<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4c7aa788 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4c7aa788\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-74e0c222\" data-id=\"74e0c222\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7481491d elementor-widget elementor-widget-heading\" data-id=\"7481491d\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Suscr\u00edbete para recibir las \u00faltimas actualizaciones<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-21b3e2e8 elementor-widget elementor-widget-shortcode\" data-id=\"21b3e2e8\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t\t\t\t<script type=\"text\/javascript\">\n\t\t\t\t\t\tvar gCaptchaSibWidget;\n                        var onloadSibCallbackInvisible = function () {\n\n                            var element = document.getElementsByClassName('sib-default-btn');\n                            var countInvisible = 0;\n                            var indexArray = [];\n                            jQuery('.sib-default-btn').each(function (index, el) {\n                                if ((jQuery(el).attr('id') == \"invisible\")) {\n                                    indexArray[countInvisible] = index;\n                                    countInvisible++\n                                }\n                            });\n\n                            jQuery('.invi-recaptcha').each(function (index, el) {\n                                grecaptcha.render(element[indexArray[index]], {\n                                    'sitekey': jQuery(el).attr('data-sitekey'),\n                                    'callback': sibVerifyCallback,\n                                });\n                            });\n                        };\n\t\t\t\t\t<\/script>\n\t\t\t\t\t                <script src=\"https:\/\/www.google.com\/recaptcha\/api.js?onload=onloadSibCallbackInvisible&render=explicit\" async defer><\/script>\n\t\t\t\t\n\t\t\t<form id=\"sib_signup_form_1\" method=\"post\" class=\"sib_signup_form\" action=\"\">\n\t\t\t\t<div class=\"sib_loader\" style=\"display:none;\"><img\n\t\t\t\t\t\t\tsrc=\"https:\/\/www.railscarma.com\/wp-includes\/images\/spinner.gif\" alt=\"cargador\"><\/div>\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_action\" value=\"subscribe_form_submit\">\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_id\" value=\"1\">\n                <input type=\"hidden\" name=\"sib_form_alert_notice\" value=\"Please fill out this field\">\n                <input type=\"hidden\" name=\"sib_form_invalid_email_notice\" value=\"Your email address is invalid\">\n                <input type=\"hidden\" name=\"sib_security\" value=\"d7f7626ab9\">\n\t\t\t\t<div class=\"sib_signup_box_inside_1\">\n\t\t\t\t\t<div style=\"\/*display:none*\/\" class=\"sib_msg_disp\">\n\t\t\t\t\t<\/div>\n                                            <div id=\"sib_captcha_invisible\" class=\"invi-recaptcha\" data-sitekey=\"6LdikOAaAAAAAJ6SWrrKVQrtw7TQpQAEnv0HS0G3\"><\/div>\n                    \t\t\t\t\t<p class=\"sib-email-area\">\r\n    <label class=\"sib-email-area\"><\/label>\r\n    <input type=\"email\" class=\"sib-email-area\" name=\"email\" required=\"required\" placeholder=\"Direcci\u00f3n de correo electr\u00f3nico\">\r\n<\/p>\r\n<p class=\"sib-NAME-area\">\r\n    <label class=\"sib-NAME-area\"><\/label>\r\n    <input type=\"text\" class=\"sib-NAME-area\" name=\"NAME\" placeholder=\"Nombre\">\r\n<\/p>\r\n<p>\r\n    <input type=\"submit\" id=\"invisible\" class=\"sib-default-btn\" value=\"Suscribir\">\r\n<\/p>\t\t\t\t<\/div>\n\t\t\t<input type=\"hidden\" name=\"trp-form-language\" value=\"es\"\/><\/form>\n\t\t\t<style>\n\t\t\t\tform#sib_signup_form_1 p.sib-alert-message {\n    padding: 6px 12px;\n    margin-bottom: 20px;\n    border: 1px solid transparent;\n    border-radius: 4px;\n    -webkit-box-sizing: border-box;\n    -moz-box-sizing: border-box;\n    box-sizing: border-box;\n}\nform#sib_signup_form_1 p.sib-alert-message-error {\n    background-color: #f2dede;\n    border-color: #ebccd1;\n    color: #a94442;\n}\nform#sib_signup_form_1 p.sib-alert-message-success {\n    background-color: #dff0d8;\n    border-color: #d6e9c6;\n    color: #3c763d;\n}\nform#sib_signup_form_1 p.sib-alert-message-warning {\n    background-color: #fcf8e3;\n    border-color: #faebcc;\n    color: #8a6d3b;\n}\n\t\t\t<\/style>\n\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t  <div class=\"related-post slider\">\r\n        <div class=\"headline\">Art\u00edculos Relacionados<\/div>\r\n    <div class=\"post-list owl-carousel\">\r\n\r\n            <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Gema Kaminari\" href=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/gema-kaminari\/?related_post_from=37277\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"gema kaminari\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2023\/04\/kaminari-gem-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Gema Kaminari\" href=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/gema-kaminari\/?related_post_from=37277\">\r\n        Gema Kaminari  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"\u00bfPor qu\u00e9 contratar desarrolladores Ruby on Rails en 2026?\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/por-que-contratar-desarrolladores-de-ruby-on-rails\/?related_post_from=30627\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"por qu\u00e9 contratar desarrolladores de Ruby on Rails en 2022\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2019\/01\/why-to-hire-ruby-on-rails-developers-in-2022-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"\u00bfPor qu\u00e9 contratar desarrolladores Ruby on Rails en 2026?\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/por-que-contratar-desarrolladores-de-ruby-on-rails\/?related_post_from=30627\">\r\n        \u00bfPor qu\u00e9 contratar desarrolladores Ruby on Rails en 2026?  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Importancia de la arquitectura de software en el desarrollo de software empresarial\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/importancia-de-la-arquitectura-de-software-en-el-desarrollo-de-software-empresarial\/?related_post_from=36250\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"Importancia de la arquitectura de software en el desarrollo de software empresarial\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/06\/Importance-of-Software-Architecture-in-enterprise-software-development-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Importancia de la arquitectura de software en el desarrollo de software empresarial\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/importancia-de-la-arquitectura-de-software-en-el-desarrollo-de-software-empresarial\/?related_post_from=36250\">\r\n        Importancia de la arquitectura de software en el desarrollo de software empresarial  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Ruby IDE: los mejores IDE para el desarrollo de Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/ruby-ide-las-mejores-ideas-para-el-desarrollo-de-ruby-on-rails\/?related_post_from=36125\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT.jpg\" class=\"attachment-full size-full wp-post-image\" alt=\"MEJORES IDES PARA EL DESARROLLO DE RUBY ON RAILS\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT.jpg 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT-300x113.jpg 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2022\/01\/BEST-IDES-FOR-RUBY-ON-RAILS-DEVELOPMENT-768x288.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Ruby IDE: los mejores IDE para el desarrollo de Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ror\/ruby-ide-las-mejores-ideas-para-el-desarrollo-de-ruby-on-rails\/?related_post_from=36125\">\r\n        Ruby IDE: los mejores IDE para el desarrollo de Ruby on Rails  <\/a>\r\n\r\n        <\/div>\r\n      \r\n  <\/div>\r\n\r\n  <script>\r\n      <\/script>\r\n  <style>\r\n    .related-post {}\r\n\r\n    .related-post .post-list {\r\n      text-align: left;\r\n          }\r\n\r\n    .related-post .post-list .item {\r\n      margin: 10px;\r\n      padding: 10px;\r\n          }\r\n\r\n    .related-post .headline {\r\n      font-size: 14px !important;\r\n      color: #999999 !important;\r\n          }\r\n\r\n    .related-post .post-list .item .post_thumb {\r\n      max-height: 220px;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n          }\r\n\r\n    .related-post .post-list .item .post_title {\r\n      font-size: 14px;\r\n      color: #000000;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .post-list .item .post_excerpt {\r\n      font-size: 12px;\r\n      color: #3f3f3f;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .owl-dots .owl-dot {\r\n          }\r\n\r\n      <\/style>\r\n      <script>\r\n      jQuery(document).ready(function($) {\r\n        $(\".related-post .post-list\").owlCarousel({\r\n          items: 2,\r\n          responsiveClass: true,\r\n          responsive: {\r\n            0: {\r\n              items: 1,\r\n            },\r\n            768: {\r\n              items: 2,\r\n            },\r\n            1200: {\r\n              items: 2,\r\n            }\r\n          },\r\n                      rewind: true,\r\n                                loop: true,\r\n                                center: false,\r\n                                autoplay: true,\r\n            autoplayHoverPause: true,\r\n                                nav: true,\r\n            navSpeed: 1000,\r\n            navText: ['<i class=\"fas fa-chevron-left\"><\/i>', '<i class=\"fas fa-chevron-right\"><\/i>'],\r\n                                dots: false,\r\n            dotsSpeed: 1200,\r\n                                                    rtl: false,\r\n          \r\n        });\r\n      });\r\n    <\/script>\r\n  <\/div>","protected":false},"excerpt":{"rendered":"<p>Enfoque gema Rails, enfoque MySQL y una estructura Rails multiling\u00fce La mayor parte del mundo no habla ingl\u00e9s. Ah\u00ed es donde entran en juego la internacionalizaci\u00f3n y la localizaci\u00f3n. Rails tiene una gran API i18n.Referencia: http:\/\/guides.rubyonrails.org\/i18n.html Proporciona un marco f\u00e1cil de usar y extensible para traducir su aplicaci\u00f3n a un solo idioma personalizado que no sea Ingl\u00e9s o para proporcionar soporte multi-idioma ...<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.railscarma.com\/es\/blog\/ruby-regex-match-guide-with-examples\/\"> <span class=\"screen-reader-text\">Ruby Regex Match Guide (2026) con Ejemplos<\/span> Leer m\u00e1s \u00bb<\/a><\/p>","protected":false},"author":1,"featured_media":31860,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[384],"tags":[],"class_list":["post-25291","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technical-articles"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to make your Rails Application Multilingual - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development<\/title>\n<meta name=\"description\" content=\"Rails gem approach, MySQL approach and a Multilingual Rails structure Most of the world doesn&#039;t speak English. That&#039;s where internationalization and\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/hacer-una-aplicacion-rails-multilingue\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to make your Rails Application Multilingual - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\" \/>\n<meta property=\"og:description\" content=\"Rails gem approach, MySQL approach and a Multilingual Rails structure Most of the world doesn&#039;t speak English. That&#039;s where internationalization and\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/hacer-una-aplicacion-rails-multilingue\/\" \/>\n<meta property=\"og:site_name\" content=\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/RailsCarma\/\" \/>\n<meta property=\"article:published_time\" content=\"2016-10-10T12:24:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-06T08:22:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/10\/Multilingual-1-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@railscarma\" \/>\n<meta name=\"twitter:site\" content=\"@railscarma\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21\"},\"headline\":\"How to make your Rails Application Multilingual\",\"datePublished\":\"2016-10-10T12:24:14+00:00\",\"dateModified\":\"2022-09-06T08:22:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/\"},\"wordCount\":777,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/10\/Multilingual-1-1.jpg\",\"articleSection\":[\"Technical Articles\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/\",\"url\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/\",\"name\":\"How to make your Rails Application Multilingual - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/10\/Multilingual-1-1.jpg\",\"datePublished\":\"2016-10-10T12:24:14+00:00\",\"dateModified\":\"2022-09-06T08:22:58+00:00\",\"description\":\"Rails gem approach, MySQL approach and a Multilingual Rails structure Most of the world doesn't speak English. That's where internationalization and\",\"breadcrumb\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/#primaryimage\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/10\/Multilingual-1-1.jpg\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/10\/Multilingual-1-1.jpg\",\"width\":800,\"height\":300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.railscarma.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to make your Rails Application Multilingual\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.railscarma.com\/#website\",\"url\":\"https:\/\/www.railscarma.com\/\",\"name\":\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\",\"description\":\"RailsCarma is a Ruby on Rails Development Company in Bangalore. We specialize in Offshore Ruby on Rails Development based out in USA and India. Hire experienced Ruby on Rails developers for the ultimate Web Experience.\",\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.railscarma.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.railscarma.com\/#organization\",\"name\":\"RailsCarma\",\"url\":\"https:\/\/www.railscarma.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"width\":200,\"height\":46,\"caption\":\"RailsCarma\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/RailsCarma\/\",\"https:\/\/x.com\/railscarma\",\"https:\/\/www.linkedin.com\/company\/railscarma\/\",\"https:\/\/myspace.com\/railscarma\",\"https:\/\/in.pinterest.com\/railscarma\/\",\"https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/www.railscarma.com\/hire-ruby-on-rails-developer\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C\u00f3mo hacer que su aplicaci\u00f3n Rails sea multiling\u00fce - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","description":"Rails gem approach, MySQL approach y una estructura Rails multiling\u00fce La mayor parte del mundo no habla ingl\u00e9s. Ah\u00ed es donde la internacionalizaci\u00f3n y","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/hacer-una-aplicacion-rails-multilingue\/","og_locale":"es_ES","og_type":"article","og_title":"How to make your Rails Application Multilingual - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","og_description":"Rails gem approach, MySQL approach and a Multilingual Rails structure Most of the world doesn't speak English. That's where internationalization and","og_url":"https:\/\/www.railscarma.com\/es\/blog\/articulos-tecnicos\/hacer-una-aplicacion-rails-multilingue\/","og_site_name":"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","article_publisher":"https:\/\/www.facebook.com\/RailsCarma\/","article_published_time":"2016-10-10T12:24:14+00:00","article_modified_time":"2022-09-06T08:22:58+00:00","og_image":[{"width":800,"height":300,"url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/10\/Multilingual-1-1.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_creator":"@railscarma","twitter_site":"@railscarma","twitter_misc":{"Escrito por":"admin","Tiempo de lectura":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/#article","isPartOf":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/"},"author":{"name":"admin","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21"},"headline":"How to make your Rails Application Multilingual","datePublished":"2016-10-10T12:24:14+00:00","dateModified":"2022-09-06T08:22:58+00:00","mainEntityOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/"},"wordCount":777,"commentCount":0,"publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/10\/Multilingual-1-1.jpg","articleSection":["Technical Articles"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/","url":"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/","name":"C\u00f3mo hacer que su aplicaci\u00f3n Rails sea multiling\u00fce - RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","isPartOf":{"@id":"https:\/\/www.railscarma.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/#primaryimage"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/10\/Multilingual-1-1.jpg","datePublished":"2016-10-10T12:24:14+00:00","dateModified":"2022-09-06T08:22:58+00:00","description":"Rails gem approach, MySQL approach y una estructura Rails multiling\u00fce La mayor parte del mundo no habla ingl\u00e9s. Ah\u00ed es donde la internacionalizaci\u00f3n y","breadcrumb":{"@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/#primaryimage","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/10\/Multilingual-1-1.jpg","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2016\/10\/Multilingual-1-1.jpg","width":800,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/www.railscarma.com\/blog\/technical-articles\/make-rails-application-multilingual\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.railscarma.com\/"},{"@type":"ListItem","position":2,"name":"How to make your Rails Application Multilingual"}]},{"@type":"WebSite","@id":"https:\/\/www.railscarma.com\/#website","url":"https:\/\/www.railscarma.com\/","name":"RailsCarma - Empresa de desarrollo Ruby on Rails especializada en desarrollo offshore","description":"RailsCarma es una empresa de desarrollo de Ruby on Rails en Bangalore. Nos especializamos en el desarrollo offshore de Ruby on Rails con sede en EE. UU. e India. Contrate desarrolladores experimentados de Ruby on Rails para disfrutar de la mejor experiencia web.","publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.railscarma.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.railscarma.com\/#organization","name":"RielesCarma","url":"https:\/\/www.railscarma.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","width":200,"height":46,"caption":"RailsCarma"},"image":{"@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/RailsCarma\/","https:\/\/x.com\/railscarma","https:\/\/www.linkedin.com\/company\/railscarma\/","https:\/\/myspace.com\/railscarma","https:\/\/in.pinterest.com\/railscarma\/","https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg"]},{"@type":"Person","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/5f2228a2dec7549056e709de6eb85d21","name":"administraci\u00f3n","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/308867ca6c81f3aba146080c601000087180326f752c4116849ea9f514c6a4fa?s=96&d=mm&r=g","caption":"admin"},"sameAs":["https:\/\/www.railscarma.com\/hire-ruby-on-rails-developer\/"]}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/posts\/25291","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/comments?post=25291"}],"version-history":[{"count":0,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/posts\/25291\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/media\/31860"}],"wp:attachment":[{"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/media?parent=25291"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/categories?post=25291"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.railscarma.com\/es\/wp-json\/wp\/v2\/tags?post=25291"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}