SlideShare a Scribd company logo
Spree E-commerce
Part I. LOCALIZATION
Spree Today
Создано Шоном Шофилдом ещё 2007 году
и с тех пор уже получило более
500 последователей, по всему миру.
Количество загрузок растет с каждым днем
по состоянию на 1 апреля 2015 года их
около 350 тыс и более 45 тыс
реализованных проектов.
Localization from a box - spree_i18n
Для установки добавим указанный гем в Gemfile
gem 'spree_i18n', github: 'spree-contrib/spree_i18n', branch: 'master'
На практике, лучше в название ветки прописывать стабильную версию
Spree ядро которой Вы используете
gem 'spree_i18n', github: 'spree-contrib/spree_i18n', branch: '3-0-stable'
bundle install
Вы можете использовать генератор для установки миграции и
добавление ассетов spree_i18n.
rails g spree_i18n:install
Для применения локализаций из коробки достаточно в файле
config/application.rb прописать и перезапустить Ваш сервер.
config.i18n.default_locale = :ru
I18n of validation messages
Модель Spree::Review имеет всего три валидатора:
:name - ActiveRecord::Validations::PresenceValidator
:review - ActiveRecord::Validations::PresenceValidator
:rating - ActiveModel::Validations::NumericalityValidator
:rating - у него есть @options
{:only_integer=>true,
:greater_than_or_equal_to=>1,
:less_than_or_equal_to=>5,
:message=> "<span class="translation_missing" title="translation
missing: ru.spree.you_must_enter_value_for_rating">You Must Enter Value
For Rating</span>"}
SPREE CALLBACKS
I18n of validation messages
Удаляем валидацию:
_validators.delete(:rating)
Чистим колбэки Spree:
_validate_callbacks.each do |callback|
callback.raw_filter.attributes.reject! { |key| key == :rating } if callback.raw_filter.respond_to?(:
attributes)
end
Перезаписываем новую валидацию и завернем вызов перевода в
лямбду так как наши внешние переводы (переменные) не видны внутри
обычного вызова Spree.t('you_must_enter_value_for_rating'):
validates :rating, numericality: {
only_integer: true,
greater_than_or_equal_to: 1,
less_than_or_equal_to: 5,
message: ->(*args) { Spree.t('you_must_enter_value_for_rating') } }
I18n of validation messages
Но вместе с тем!!!
Не всегда требуется лямбда, к примеру
для обработки ошибки в валидации будет
достаточно прописать
message: :invalid_phone_number
если в ru.yml прописано так
ru:
errors:
messages:
invalid_phone_number: в неправильном
формате
To be continued...

More Related Content

Viewers also liked

Hexis Cyber Solutions: Rules of Engagement for Cyber Security Automation
Hexis Cyber Solutions: Rules of Engagement for Cyber Security AutomationHexis Cyber Solutions: Rules of Engagement for Cyber Security Automation
Hexis Cyber Solutions: Rules of Engagement for Cyber Security Automation
barbara bogue
 
Twitter ppt
Twitter pptTwitter ppt
Twitter ppt
OutserveWeb
 
Cyber Defense Center - Private Sector Participation
Cyber Defense Center - Private Sector ParticipationCyber Defense Center - Private Sector Participation
Cyber Defense Center - Private Sector Participationdazz057
 
Q1 2016 Open Source Security Report: Glibc and Beyond
Q1 2016 Open Source Security Report: Glibc and BeyondQ1 2016 Open Source Security Report: Glibc and Beyond
Q1 2016 Open Source Security Report: Glibc and Beyond
Black Duck by Synopsys
 
Dynamic Cyber Defense
Dynamic Cyber DefenseDynamic Cyber Defense
Dynamic Cyber Defense
EnergySec
 
2015 Cyber Security Strategy
2015 Cyber Security Strategy 2015 Cyber Security Strategy
2015 Cyber Security Strategy
Mohit Kumar
 
Mobile apps strategydips
Mobile apps strategydipsMobile apps strategydips
Mobile apps strategydips
Deepti Bhutani
 
Blue team reboot - HackFest
Blue team reboot - HackFest Blue team reboot - HackFest
Blue team reboot - HackFest
Haydn Johnson
 
Gary Leatherman - A Holistic Approach for Reimagining Cyber Defense
Gary Leatherman - A Holistic Approach for Reimagining Cyber DefenseGary Leatherman - A Holistic Approach for Reimagining Cyber Defense
Gary Leatherman - A Holistic Approach for Reimagining Cyber Defense
EnergySec
 
Security Awareness: 360 empowerment for cyber defense - JurInnov - Eric Vande...
Security Awareness: 360 empowerment for cyber defense - JurInnov - Eric Vande...Security Awareness: 360 empowerment for cyber defense - JurInnov - Eric Vande...
Security Awareness: 360 empowerment for cyber defense - JurInnov - Eric Vande...
Eric Vanderburg
 
Critical Controls Of Cyber Defense
Critical Controls Of Cyber DefenseCritical Controls Of Cyber Defense
Critical Controls Of Cyber DefenseRishu Mehra
 
Hewlett-Packard Enterprise- State of Security Operations 2015
Hewlett-Packard Enterprise- State of Security Operations 2015Hewlett-Packard Enterprise- State of Security Operations 2015
Hewlett-Packard Enterprise- State of Security Operations 2015
Kim Jensen
 
Steve Parker - The Internet of Everything: Cyber-defense in an Age of Ubiquit...
Steve Parker - The Internet of Everything: Cyber-defense in an Age of Ubiquit...Steve Parker - The Internet of Everything: Cyber-defense in an Age of Ubiquit...
Steve Parker - The Internet of Everything: Cyber-defense in an Age of Ubiquit...
EnergySec
 
NTXISSACSC4 - World of Discovery
NTXISSACSC4 - World of DiscoveryNTXISSACSC4 - World of Discovery
NTXISSACSC4 - World of Discovery
North Texas Chapter of the ISSA
 
Data Security Solutions - Cyber Security & Security Intelligence - @ Lithuani...
Data Security Solutions - Cyber Security & Security Intelligence - @ Lithuani...Data Security Solutions - Cyber Security & Security Intelligence - @ Lithuani...
Data Security Solutions - Cyber Security & Security Intelligence - @ Lithuani...
Andris Soroka
 

Viewers also liked (16)

Hexis Cyber Solutions: Rules of Engagement for Cyber Security Automation
Hexis Cyber Solutions: Rules of Engagement for Cyber Security AutomationHexis Cyber Solutions: Rules of Engagement for Cyber Security Automation
Hexis Cyber Solutions: Rules of Engagement for Cyber Security Automation
 
Twitter ppt
Twitter pptTwitter ppt
Twitter ppt
 
Cyber Defense Center - Private Sector Participation
Cyber Defense Center - Private Sector ParticipationCyber Defense Center - Private Sector Participation
Cyber Defense Center - Private Sector Participation
 
Q1 2016 Open Source Security Report: Glibc and Beyond
Q1 2016 Open Source Security Report: Glibc and BeyondQ1 2016 Open Source Security Report: Glibc and Beyond
Q1 2016 Open Source Security Report: Glibc and Beyond
 
Dynamic Cyber Defense
Dynamic Cyber DefenseDynamic Cyber Defense
Dynamic Cyber Defense
 
2015 Cyber Security Strategy
2015 Cyber Security Strategy 2015 Cyber Security Strategy
2015 Cyber Security Strategy
 
Mobile apps strategydips
Mobile apps strategydipsMobile apps strategydips
Mobile apps strategydips
 
Blue team reboot - HackFest
Blue team reboot - HackFest Blue team reboot - HackFest
Blue team reboot - HackFest
 
Gary Leatherman - A Holistic Approach for Reimagining Cyber Defense
Gary Leatherman - A Holistic Approach for Reimagining Cyber DefenseGary Leatherman - A Holistic Approach for Reimagining Cyber Defense
Gary Leatherman - A Holistic Approach for Reimagining Cyber Defense
 
Security Awareness: 360 empowerment for cyber defense - JurInnov - Eric Vande...
Security Awareness: 360 empowerment for cyber defense - JurInnov - Eric Vande...Security Awareness: 360 empowerment for cyber defense - JurInnov - Eric Vande...
Security Awareness: 360 empowerment for cyber defense - JurInnov - Eric Vande...
 
Critical Controls Of Cyber Defense
Critical Controls Of Cyber DefenseCritical Controls Of Cyber Defense
Critical Controls Of Cyber Defense
 
Hewlett-Packard Enterprise- State of Security Operations 2015
Hewlett-Packard Enterprise- State of Security Operations 2015Hewlett-Packard Enterprise- State of Security Operations 2015
Hewlett-Packard Enterprise- State of Security Operations 2015
 
Steve Parker - The Internet of Everything: Cyber-defense in an Age of Ubiquit...
Steve Parker - The Internet of Everything: Cyber-defense in an Age of Ubiquit...Steve Parker - The Internet of Everything: Cyber-defense in an Age of Ubiquit...
Steve Parker - The Internet of Everything: Cyber-defense in an Age of Ubiquit...
 
NTXISSACSC4 - World of Discovery
NTXISSACSC4 - World of DiscoveryNTXISSACSC4 - World of Discovery
NTXISSACSC4 - World of Discovery
 
Cyber_Defense_Presentation
Cyber_Defense_PresentationCyber_Defense_Presentation
Cyber_Defense_Presentation
 
Data Security Solutions - Cyber Security & Security Intelligence - @ Lithuani...
Data Security Solutions - Cyber Security & Security Intelligence - @ Lithuani...Data Security Solutions - Cyber Security & Security Intelligence - @ Lithuani...
Data Security Solutions - Cyber Security & Security Intelligence - @ Lithuani...
 

Локализация Spree Сommerce

  • 2. Spree Today Создано Шоном Шофилдом ещё 2007 году и с тех пор уже получило более 500 последователей, по всему миру. Количество загрузок растет с каждым днем по состоянию на 1 апреля 2015 года их около 350 тыс и более 45 тыс реализованных проектов.
  • 3. Localization from a box - spree_i18n Для установки добавим указанный гем в Gemfile gem 'spree_i18n', github: 'spree-contrib/spree_i18n', branch: 'master' На практике, лучше в название ветки прописывать стабильную версию Spree ядро которой Вы используете gem 'spree_i18n', github: 'spree-contrib/spree_i18n', branch: '3-0-stable' bundle install Вы можете использовать генератор для установки миграции и добавление ассетов spree_i18n. rails g spree_i18n:install Для применения локализаций из коробки достаточно в файле config/application.rb прописать и перезапустить Ваш сервер. config.i18n.default_locale = :ru
  • 4. I18n of validation messages Модель Spree::Review имеет всего три валидатора: :name - ActiveRecord::Validations::PresenceValidator :review - ActiveRecord::Validations::PresenceValidator :rating - ActiveModel::Validations::NumericalityValidator :rating - у него есть @options {:only_integer=>true, :greater_than_or_equal_to=>1, :less_than_or_equal_to=>5, :message=> "<span class="translation_missing" title="translation missing: ru.spree.you_must_enter_value_for_rating">You Must Enter Value For Rating</span>"} SPREE CALLBACKS
  • 5. I18n of validation messages Удаляем валидацию: _validators.delete(:rating) Чистим колбэки Spree: _validate_callbacks.each do |callback| callback.raw_filter.attributes.reject! { |key| key == :rating } if callback.raw_filter.respond_to?(: attributes) end Перезаписываем новую валидацию и завернем вызов перевода в лямбду так как наши внешние переводы (переменные) не видны внутри обычного вызова Spree.t('you_must_enter_value_for_rating'): validates :rating, numericality: { only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: 5, message: ->(*args) { Spree.t('you_must_enter_value_for_rating') } }
  • 6. I18n of validation messages Но вместе с тем!!! Не всегда требуется лямбда, к примеру для обработки ошибки в валидации будет достаточно прописать message: :invalid_phone_number если в ru.yml прописано так ru: errors: messages: invalid_phone_number: в неправильном формате