Лучший подход для локализует изображения

Выдача исключения в Вашем случае прекрасна. Можно считать случай истинным исключением, потому что что-то пытается установить целое число на строку (например). Отсутствие бизнес-правил knowledege Ваших представлений означает, что они должны считать этот случай исключительным и возврат что назад к представлению.

, Проверяете ли Вы свои входные значения перед отправкой их до бизнес-слоя ваше дело, я думаю, что, пока Вы следуете тому же стандарту всюду по своему приложению тогда, Вы закончите с чистым и читаемым кодом.

Вы могли использовать пружинную платформу, как определено выше, просто быть осторожными, такое количество связанного документа указывало на код записи, который не со строгим контролем типов, Т.Е. можно получить ошибки во время выполнения, когда Вы не могли взять во время компиляции. Это - что-то, что я стараюсь избегать как можно больше.

способ, которым мы делаем это здесь в настоящее время, состоит в том, что мы берем все входные значения с экрана, связываем их с моделью данных, возражают и выдают исключение, если значение по ошибке.

12
задан tonfa 25 August 2009 в 21:07
поделиться

2 ответа

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

/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")

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

26
ответ дан 2 December 2019 в 05:41
поделиться

В недавнем приложении я впервые с некоторым успехом попробовал переводы 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"
-3
ответ дан 2 December 2019 в 05:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: