Как интернационализировать контент на ruby ​​on rails? - PullRequest
5 голосов
/ 02 октября 2009

Как я могу интернационализировать, скажем, таблицу категорий (со столбцом имени) на разные языки. Как насчет таблицы продуктов (состоящей из столбцов имени и описания). Какой лучший способ интернационализации содержимого этих таблиц базы данных с использованием Ruby on Rails?

Ответы [ 5 ]

6 голосов
/ 02 октября 2009

Вы смотрели на: http://guides.rubyonrails.org/i18n.html

В нем подробно описывается, как интернационализировать ваше приложение и

"обеспечивает простой в использовании и расширяемый рамки для перевода вашего приложение к одному заказу язык, отличный от английского или для обеспечение многоязычной поддержки в ваше заявление. "

Некоторые полезные ссылки:

Обновление: 2018

Ответив на этот вопрос почти девять лет назад, тот же автор i18n создал Globalize, основанный на API I18n в Ruby on Rails для добавления трансляций моделей в модели ActiveRecord.

Подробности вы найдете здесь: https://github.com/globalize/globalize

3 голосов
/ 17 сентября 2013

На RailsCasts есть хорошая статья об использовании гем под названием Globalize3. Это просто позволяет вам установить, какие модели будут переводиться и управлять таблицами перевода для каждой модели, и работает так же, как i18n для статических страниц ...

Взгляните

http://railscasts.com/episodes/338-globalize3?view=asciicast

2 голосов
/ 02 октября 2009

Если вы хотите сохранить значения для разных языков в БД рядом со стандартным Rails i18n (yml), вы можете сделать что-то вроде этого:

Поле имени таблицы продуктов:

  • * 1006 Имя Цена *
  • name_fr
  • name_nl

Получить правильное значение:

def i18n_db_value(object, attribute)
  object.send("#{attribute.to_s}_#{I18n.locale}") if object
end
0 голосов
/ 15 мая 2015

Вы можете переписать метод "name" в категории Model, там можно найти правильный перевод в другой таблице.

Таким образом, в таблице категорий в поле «имя» должен быть переведен язык по умолчанию, например «Другое». И тогда ищите «Другое» в таблице вроде:

transtations table

en_text "Other"    <--- You search this (default language)
es_text "Otros"    ---> You retrun this
ca_text "Altres"   ---> or this


# Category table
class Category < ActiveRecord::Base
  def name
    Translation.translate(read_attribute("name"))
  end
end

# Your transltation model
class Translation < ActiveRecord::Base

  def self.translate(text)

    locale=I18n.locale
    if locale!="en"      # default locale: what is on the table "category"

        trad=self.find_by_en_text(text)
        if trad
            return eval("trad.#{locale}_text")
        end
    end

    return text

  end

end
0 голосов
/ 21 мая 2011

«хранить несколько версий контента в модели и иметь один сайт» против «хранить только одну версию контента в модели, но иметь несколько сайтов»

http://ruby -lang.info / блог / локализация-JFW

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...