Лучший подход для локализации изображений - PullRequest
12 голосов
/ 10 августа 2009

Каков наилучший подход для локализации изображений (кнопок и другого содержимого) в приложении i18n rails?

Ответы [ 3 ]

26 голосов
/ 10 августа 2009

Я обычно вставляю имя локали в каждый путь или в название изображения. В первом случае создайте разные папки для разных локалей

/public/images/en/file.png
/public/images/it/file.png

image_tag("#{I18n.locale}/file.png")

Во втором случае

/public/images/file.it.png
/public/images/file.en.png

image_tag("file.#{I18n.locale}.png")

Я обычно предпочитаю второе решение, потому что есть много ресурсов, которые мне не нужно локализовать, и мне часто нужно хранить переведенные / общие ресурсы в одних и тех же папках, чтобы воспользоваться преимуществом шаблона согласования по конфигурации.

4 голосов
/ 25 сентября 2014

Мои 2 цента на этот старый вопрос.

Я предпочитаю подход вспомогательного метода и игнорирую локали по умолчанию, поэтому мне не нужно добавлять .en ко всем моим активам

def localize(image_path, type = :svg) image_path.concat('.').concat(I18n.locale.to_s) if I18n.locale != I18n.default_locale image_path.concat('.').concat(type.to_s) if type image_path end

используется как:

= image_tag localize('svg/feature-one-bubble-copy')

0 голосов
/ 10 августа 2009

В недавнем приложении я впервые попробовал переводы i18n с некоторым успехом, хотя код может быть немного запутанным.

В application_controller у меня есть:

class ApplicationController < ActionController::Base

  before_filter :set_locale

  AVAILABLE_LOCALES = I18n.backend.available_locales

  private

##########
  # Internationalisation
  # For more information see http://guides.rubyonrails.org/i18n.html
  # Additional locale starting points can be found here http://github.com/svenfuchs/rails-i18n/tree/a0be8dd219ccce6716955566ee557cc75122cb33/rails/locale

  def tld
    domain_array = request.subdomains.split(".")
    domain_array[0] == "www" ? domain_array[1].to_s : domain_array[0].to_s
  end

  def available_locales
    AVAILABLE_LOCALES
  end

  def set_locale
    I18n.locale = extract_locale_from_subdomain
  end

  def extract_locale_from_subdomain
    (available_locales.include? tld.to_sym) ? tld  : nil unless tld.blank?
  end

end

Это в основном ищет соответствующий язык из указанного субдомена, поэтому http://en.mysite.com на английском, а http://it.mysite.com на итальянском.

Далее ваши взгляды, где вы просто используете:

<%= t(:click_to_edit) %>

Наконец, в config / locales создайте файл en.yml с необходимыми переводами:

en:
  admin_menu: "Admin Menu"
  Arabic: "Arabic"
  back: "Back"
  Basque: "Basque"
  blogs: "Blogs"
  blog_list: "Blog List"
  blogroll: "Blogroll"

Итальянский файл содержит:

it:    
  admin_menu: "Menu Amministrazione"
  Arabic: "Italian Arabic"
  back: "Indietro"
  Basque: "Italian Basque"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...