From 52ef7720d8fbfaba1d37596db373b156b51c70a2 Mon Sep 17 00:00:00 2001 From: vonavi Date: Wed, 2 Jul 2014 12:48:07 +0300 Subject: [PATCH] Add a plugin for Russian localization, make it be loaded first. --- .openshift/markers/force_clean_build | 0 Gemfile | 1 + Gemfile.lock | 2 + _locales/ru.yml | 250 ++++++++++++++++++ _plugins/1-i18n_filter.rb | 27 ++ ...erate_reviews.rb => 2-generate_reviews.rb} | 0 6 files changed, 280 insertions(+) create mode 100644 .openshift/markers/force_clean_build create mode 100644 _locales/ru.yml create mode 100644 _plugins/1-i18n_filter.rb rename _plugins/{generate_reviews.rb => 2-generate_reviews.rb} (100%) diff --git a/.openshift/markers/force_clean_build b/.openshift/markers/force_clean_build new file mode 100644 index 0000000..e69de29 diff --git a/Gemfile b/Gemfile index ec18597..2849177 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,7 @@ source 'https://rubygems.org' gem 'jekyll', '~> 2.1.0' +gem 'i18n' gem 'therubyracer' group :development do diff --git a/Gemfile.lock b/Gemfile.lock index beb25d4..db67016 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -31,6 +31,7 @@ GEM guard (~> 2.0) multi_json (~> 1.8) http_parser.rb (0.6.0) + i18n (0.6.9) jekyll (2.1.0) classifier (~> 1.3) colorator (~> 0.1) @@ -97,5 +98,6 @@ PLATFORMS DEPENDENCIES guard-livereload + i18n jekyll (~> 2.1.0) therubyracer diff --git a/_locales/ru.yml b/_locales/ru.yml new file mode 100644 index 0000000..f852dd1 --- /dev/null +++ b/_locales/ru.yml @@ -0,0 +1,250 @@ +ru: + date: + abbr_day_names: + - Вс + - Пн + - Вт + - Ср + - Чт + - Пт + - Сб + abbr_month_names: + - + - янв. + - февр. + - марта + - апр. + - мая + - июня + - июля + - авг. + - сент. + - окт. + - нояб. + - дек. + day_names: + - воскресенье + - понедельник + - вторник + - среда + - четверг + - пятница + - суббота + formats: + default: ! '%d.%m.%Y' + long: ! '%d %B %Y' + short: ! '%d %b' + month_names: + - + - января + - февраля + - марта + - апреля + - мая + - июня + - июля + - августа + - сентября + - октября + - ноября + - декабря + order: + - :day + - :month + - :year + datetime: + distance_in_words: + about_x_hours: + few: около %{count} часов + many: около %{count} часов + one: около %{count} часа + other: около %{count} часа + about_x_months: + few: около %{count} месяцев + many: около %{count} месяцев + one: около %{count} месяца + other: около %{count} месяца + about_x_years: + few: около %{count} лет + many: около %{count} лет + one: около %{count} года + other: около %{count} лет + almost_x_years: + one: почти 1 год + few: почти %{count} года + many: почти %{count} лет + other: почти %{count} лет + half_a_minute: меньше минуты + less_than_x_minutes: + few: меньше %{count} минут + many: меньше %{count} минут + one: меньше %{count} минуты + other: меньше %{count} минуты + less_than_x_seconds: + few: меньше %{count} секунд + many: меньше %{count} секунд + one: меньше %{count} секунды + other: меньше %{count} секунды + over_x_years: + few: больше %{count} лет + many: больше %{count} лет + one: больше %{count} года + other: больше %{count} лет + x_days: + few: ! '%{count} дня' + many: ! '%{count} дней' + one: ! '%{count} день' + other: ! '%{count} дня' + x_minutes: + few: ! '%{count} минуты' + many: ! '%{count} минут' + one: ! '%{count} минуту' + other: ! '%{count} минуты' + x_months: + few: ! '%{count} месяца' + many: ! '%{count} месяцев' + one: ! '%{count} месяц' + other: ! '%{count} месяца' + x_seconds: + few: ! '%{count} секунды' + many: ! '%{count} секунд' + one: ! '%{count} секундy' + other: ! '%{count} секунды' + prompts: + day: День + hour: Часов + minute: Минут + month: Месяц + second: Секунд + year: Год + errors: &errors + format: ! '%{attribute} %{message}' + messages: + accepted: нужно подтвердить + blank: не может быть пустым + confirmation: не совпадает с подтверждением + empty: не может быть пустым + equal_to: может иметь лишь значение, равное %{count} + even: может иметь лишь нечетное значение + exclusion: имеет зарезервированное значение + greater_than: может иметь значение большее %{count} + greater_than_or_equal_to: может иметь значение большее или равное %{count} + inclusion: имеет непредусмотренное значение + invalid: имеет неверное значение + less_than: может иметь значение меньшее чем %{count} + less_than_or_equal_to: может иметь значение меньшее или равное %{count} + not_a_number: не является числом + not_an_integer: не является целым числом + odd: может иметь лишь четное значение + record_invalid: ! 'Возникли ошибки: %{errors}' + taken: уже существует + too_long: + few: слишком большой длины (не может быть больше чем %{count} символа) + many: слишком большой длины (не может быть больше чем %{count} символов) + one: слишком большой длины (не может быть больше чем %{count} символ) + other: слишком большой длины (не может быть больше чем %{count} символа) + too_short: + few: недостаточной длины (не может быть меньше %{count} символов) + many: недостаточной длины (не может быть меньше %{count} символов) + one: недостаточной длины (не может быть меньше %{count} символа) + other: недостаточной длины (не может быть меньше %{count} символа) + wrong_length: + few: неверной длины (может быть длиной ровно %{count} символа) + many: неверной длины (может быть длиной ровно %{count} символов) + one: неверной длины (может быть длиной ровно %{count} символ) + other: неверной длины (может быть длиной ровно %{count} символа) + template: + body: ! 'Проблемы возникли со следующими полями:' + header: + few: ! '%{model}: сохранение не удалось из-за %{count} ошибок' + many: ! '%{model}: сохранение не удалось из-за %{count} ошибок' + one: ! '%{model}: сохранение не удалось из-за %{count} ошибки' + other: ! '%{model}: сохранение не удалось из-за %{count} ошибки' + helpers: + select: + prompt: ! 'Выберите: ' + submit: + create: Создать %{model} + submit: Сохранить %{model} + update: Сохранить %{model} + number: + currency: + format: + delimiter: ! ' ' + format: ! '%n %u' + precision: 2 + separator: ',' + significant: false + strip_insignificant_zeros: false + unit: руб. + format: + delimiter: ! ' ' + precision: 3 + separator: ',' + significant: false + strip_insignificant_zeros: false + human: + decimal_units: + format: ! '%n %u' + units: + billion: + few: миллиардов + many: миллиардов + one: миллиард + other: миллиардов + million: + few: миллионов + many: миллионов + one: миллион + other: миллионов + quadrillion: + few: квадриллионов + many: квадриллионов + one: квадриллион + other: квадриллионов + thousand: + few: тысяч + many: тысяч + one: тысяча + other: тысяч + trillion: + few: триллионов + many: триллионов + one: триллион + other: триллионов + unit: '' + format: + delimiter: '' + precision: 1 + significant: false + strip_insignificant_zeros: false + storage_units: + format: ! '%n %u' + units: + byte: + few: байта + many: байт + one: байт + other: байта + gb: ГБ + kb: КБ + mb: МБ + tb: ТБ + percentage: + format: + delimiter: '' + precision: + format: + delimiter: '' + support: + array: + last_word_connector: ! ' и ' + two_words_connector: ! ' и ' + words_connector: ! ', ' + time: + am: утра + formats: + default: ! '%a, %d %b %Y, %H:%M:%S %z' + long: ! '%d %B %Y, %H:%M' + short: ! '%d %b, %H:%M' + pm: вечера diff --git a/_plugins/1-i18n_filter.rb b/_plugins/1-i18n_filter.rb new file mode 100644 index 0000000..5e0ab17 --- /dev/null +++ b/_plugins/1-i18n_filter.rb @@ -0,0 +1,27 @@ +require 'i18n' + +LOCALE = :ru # set your locale + +# Create folder "_locales" and put some locale file from +# https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale +module Jekyll + module I18nFilter + # Example: + # {{ post.date | localize: "%d.%m.%Y" }} + # {{ post.date | localize: ":short" }} + def localize(input, format=nil) + load_translations + format = (format =~ /^:(\w+)/) ? $1.to_sym : format + I18n.l input, :format => format + end + + def load_translations + unless I18n::backend.instance_variable_get(:@translations) + I18n.backend.load_translations Dir[File.join(File.dirname(__FILE__), '../_locales/*.yml')] + I18n.locale = LOCALE + end + end + end +end + +Liquid::Template.register_filter(Jekyll::I18nFilter) diff --git a/_plugins/generate_reviews.rb b/_plugins/2-generate_reviews.rb similarity index 100% rename from _plugins/generate_reviews.rb rename to _plugins/2-generate_reviews.rb