biovision 0.0.200518.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +214 -0
- data/Rakefile +22 -0
- data/app/assets/config/biovision_manifest.js +1 -0
- data/app/assets/images/biovision/components/carousel/arrow-left.svg +4 -0
- data/app/assets/images/biovision/components/carousel/arrow-right.svg +4 -0
- data/app/assets/images/biovision/icons/breadcrumb-hover.svg +1 -0
- data/app/assets/images/biovision/icons/breadcrumb.svg +1 -0
- data/app/assets/images/biovision/icons/components/contact.svg +26 -0
- data/app/assets/images/biovision/icons/components/content.svg +20 -0
- data/app/assets/images/biovision/icons/components/users.svg +21 -0
- data/app/assets/images/biovision/icons/key.svg +16 -0
- data/app/assets/images/biovision/icons/log_in.svg +15 -0
- data/app/assets/images/biovision/icons/log_out.svg +15 -0
- data/app/assets/images/biovision/icons/messages/error.svg +14 -0
- data/app/assets/images/biovision/icons/messages/info.svg +8 -0
- data/app/assets/images/biovision/icons/messages/success.svg +12 -0
- data/app/assets/images/biovision/icons/messages/warning.svg +13 -0
- data/app/assets/images/biovision/icons/settings.svg +41 -0
- data/app/assets/images/biovision/placeholders/16x9.svg +11 -0
- data/app/assets/images/biovision/placeholders/1x1.svg +11 -0
- data/app/assets/images/biovision/placeholders/3x2.svg +11 -0
- data/app/assets/images/biovision/placeholders/user.svg +15 -0
- data/app/assets/stylesheets/biovision/admin.scss +6 -0
- data/app/assets/stylesheets/biovision/admin/components.scss +59 -0
- data/app/assets/stylesheets/biovision/admin/default.scss +57 -0
- data/app/assets/stylesheets/biovision/admin/layout.scss +95 -0
- data/app/assets/stylesheets/biovision/admin/vars.scss +56 -0
- data/app/assets/stylesheets/biovision/biovision.scss +134 -0
- data/app/assets/stylesheets/biovision/biovision/messages.scss +41 -0
- data/app/assets/stylesheets/biovision/components/carousel.scss +53 -0
- data/app/assets/stylesheets/biovision/components/forms.scss +85 -0
- data/app/assets/stylesheets/biovision/components/hamburger.scss +56 -0
- data/app/assets/stylesheets/biovision/components/lists.scss +91 -0
- data/app/assets/stylesheets/biovision/default.scss +57 -0
- data/app/assets/stylesheets/biovision/themes/default_theme.scss +2 -0
- data/app/assets/stylesheets/biovision/themes/default_theme/components.scss +3 -0
- data/app/assets/stylesheets/biovision/themes/default_theme/layout.scss +44 -0
- data/app/assets/stylesheets/biovision/themes/default_theme/layout/footer.scss +0 -0
- data/app/assets/stylesheets/biovision/themes/default_theme/layout/header.scss +39 -0
- data/app/assets/stylesheets/biovision/vars.scss +53 -0
- data/app/controllers/admin/agents_controller.rb +15 -0
- data/app/controllers/admin/components_controller.rb +174 -0
- data/app/controllers/admin/index_controller.rb +11 -0
- data/app/controllers/admin/ip_addresses_controller.rb +15 -0
- data/app/controllers/admin_controller.rb +14 -0
- data/app/controllers/authentication_controller.rb +79 -0
- data/app/controllers/concerns/authentication.rb +45 -0
- data/app/controllers/index_controller.rb +8 -0
- data/app/controllers/my/confirmations_controller.rb +2 -0
- data/app/controllers/my/index_controller.rb +8 -0
- data/app/controllers/my/profiles_controller.rb +128 -0
- data/app/controllers/my/recoveries_controller.rb +2 -0
- data/app/helpers/biovision_components_helper.rb +14 -0
- data/app/helpers/users_helper.rb +11 -0
- data/app/lib/biovision/components/base_component.rb +177 -0
- data/app/lib/biovision/components/component_settings.rb +30 -0
- data/app/lib/biovision/components/privilege_handler.rb +77 -0
- data/app/lib/biovision/components/track_component.rb +9 -0
- data/app/lib/biovision/components/users/authentication.rb +47 -0
- data/app/lib/biovision/components/users/code_handler.rb +23 -0
- data/app/lib/biovision/components/users/profile_handler.rb +12 -0
- data/app/lib/biovision/components/users/registration_handler.rb +99 -0
- data/app/lib/biovision/components/users_component.rb +47 -0
- data/app/lib/biovision/notifiers/base_notifier.rb +69 -0
- data/app/lib/biovision/notifiers/socialization_notifier.rb +31 -0
- data/app/lib/biovision/notifiers/users_notifier.rb +15 -0
- data/app/models/agent.rb +35 -0
- data/app/models/biovision_component.rb +45 -0
- data/app/models/biovision_component_user.rb +21 -0
- data/app/models/browser.rb +34 -0
- data/app/models/code.rb +71 -0
- data/app/models/concerns/checkable.rb +22 -0
- data/app/models/concerns/flat_priority.rb +50 -0
- data/app/models/concerns/has_language.rb +10 -0
- data/app/models/concerns/has_owner.rb +22 -0
- data/app/models/concerns/has_simple_image.rb +18 -0
- data/app/models/concerns/has_track.rb +10 -0
- data/app/models/concerns/has_uuid.rb +12 -0
- data/app/models/concerns/meta_texts.rb +16 -0
- data/app/models/concerns/nested_priority.rb +58 -0
- data/app/models/concerns/required_unique_name.rb +16 -0
- data/app/models/concerns/required_unique_slug.rb +15 -0
- data/app/models/concerns/toggleable.rb +33 -0
- data/app/models/foreign_site.rb +34 -0
- data/app/models/foreign_user.rb +21 -0
- data/app/models/ip_address.rb +31 -0
- data/app/models/language.rb +31 -0
- data/app/models/login_attempt.rb +35 -0
- data/app/models/metric.rb +48 -0
- data/app/models/metric_value.rb +11 -0
- data/app/models/notification.rb +37 -0
- data/app/models/simple_image.rb +47 -0
- data/app/models/simple_image_tag.rb +30 -0
- data/app/models/simple_image_tag_image.rb +13 -0
- data/app/models/token.rb +96 -0
- data/app/models/user.rb +136 -0
- data/app/models/user_language.rb +15 -0
- data/app/uploaders/simple_image_uploader.rb +96 -0
- data/app/uploaders/user_image_uploader.rb +58 -0
- data/app/views/admin/agents/_nav_item.html.erb +6 -0
- data/app/views/admin/agents/entity/_in_list.html.erb +6 -0
- data/app/views/admin/agents/index.html.erb +13 -0
- data/app/views/admin/components/_list.html.erb +12 -0
- data/app/views/admin/components/entity/_links.html.erb +35 -0
- data/app/views/admin/components/entity/_section.html.erb +12 -0
- data/app/views/admin/components/index.html.erb +12 -0
- data/app/views/admin/components/links/_track.html.erb +2 -0
- data/app/views/admin/components/links/_users.html.erb +11 -0
- data/app/views/admin/components/privileges.html.erb +20 -0
- data/app/views/admin/components/privileges/_component_user.html.erb +17 -0
- data/app/views/admin/components/privileges/_links.html.erb +35 -0
- data/app/views/admin/components/privileges/_privilege_flag.html.erb +28 -0
- data/app/views/admin/components/privileges/_users.html.erb +23 -0
- data/app/views/admin/components/settings.html.erb +39 -0
- data/app/views/admin/components/settings/_new_parameter.html.erb +46 -0
- data/app/views/admin/components/settings/_parameters.html.erb +20 -0
- data/app/views/admin/components/settings/_setting.html.erb +18 -0
- data/app/views/admin/components/settings/_settings.html.erb +31 -0
- data/app/views/admin/components/show.html.erb +14 -0
- data/app/views/admin/index/index.html.erb +14 -0
- data/app/views/admin/ip_addresses/_nav_item.html.erb +6 -0
- data/app/views/admin/ip_addresses/entity/_in_list.html.erb +6 -0
- data/app/views/admin/ip_addresses/index.html.erb +13 -0
- data/app/views/admin/unauthorized.html.erb +19 -0
- data/app/views/authentication/_form.html.erb +40 -0
- data/app/views/authentication/failed.js.erb +3 -0
- data/app/views/authentication/new.html.erb +21 -0
- data/app/views/index/index.html.erb +0 -0
- data/app/views/layouts/admin.html.erb +23 -0
- data/app/views/layouts/admin/_breadcrumbs.html.erb +8 -0
- data/app/views/layouts/admin/_footer.html.erb +10 -0
- data/app/views/layouts/admin/_header.html.erb +18 -0
- data/app/views/layouts/admin/header/_logo.html.erb +3 -0
- data/app/views/layouts/application/_footer.html.erb +8 -0
- data/app/views/layouts/application/_header.html.erb +9 -0
- data/app/views/layouts/application/header/_authentication.html.erb +13 -0
- data/app/views/my/index/index.html.erb +0 -0
- data/app/views/my/profiles/closed.html.erb +12 -0
- data/app/views/my/profiles/new.html.erb +17 -0
- data/app/views/my/profiles/new/_form.html.erb +147 -0
- data/app/views/shared/_breadcrumbs.html.erb +8 -0
- data/app/views/shared/_cookie_notification.html.erb +4 -0
- data/app/views/shared/_flash_messages.html.erb +7 -0
- data/app/views/shared/_meta_texts.html.erb +31 -0
- data/app/views/shared/_nothing_found.html.erb +1 -0
- data/app/views/shared/_pagination.jbuilder +15 -0
- data/app/views/shared/admin/_list.html.erb +19 -0
- data/app/views/shared/admin/_list_with_priority.html.erb +19 -0
- data/app/views/shared/admin/_toggleable.html.erb +8 -0
- data/app/views/shared/entity/_list_of_errors.html.erb +7 -0
- data/app/views/shared/forms/errors.js.erb +5 -0
- data/config/initializers/carrierwave.rb +27 -0
- data/config/initializers/pluralization.rb +2 -0
- data/config/locales/biovision-ru.yml +90 -0
- data/config/locales/components-ru.yml +81 -0
- data/config/locales/track-ru.yml +40 -0
- data/config/locales/users-ru.yml +130 -0
- data/config/routes.rb +75 -0
- data/db/migrate/20191228000000_create_biovision_components.rb +72 -0
- data/db/migrate/20200224000000_create_track_component.rb +59 -0
- data/db/migrate/20200224000010_create_users_component.rb +189 -0
- data/db/migrate/20200404000000_create_simple_images.rb +54 -0
- data/lib/biovision.rb +9 -0
- data/lib/biovision/base_methods.rb +167 -0
- data/lib/biovision/engine.rb +40 -0
- data/lib/biovision/version.rb +5 -0
- data/lib/tasks/biovision_tasks.rake +4 -0
- metadata +392 -0
@@ -0,0 +1,31 @@
|
|
1
|
+
<% if content_for? :meta_description %>
|
2
|
+
<meta name="description" content="<%= yield :meta_description %>" />
|
3
|
+
<% end %>
|
4
|
+
<% if content_for? :meta_keywords %>
|
5
|
+
<meta name="keywords" content="<%= yield :meta_keywords %>" />
|
6
|
+
<% end %>
|
7
|
+
<% if content_for? :meta_opengraph %>
|
8
|
+
<%= yield :meta_opengraph %>
|
9
|
+
<% else %>
|
10
|
+
<meta property="og:url" content="<%= url_for(only_path: false) %>" />
|
11
|
+
<meta property="og:title" content="<%= content_for :meta_title %>" />
|
12
|
+
<meta property="og:type" content="<%= content_for?(:meta_type) ? (yield :meta_type) : 'website' %>" />
|
13
|
+
<% if content_for? :meta_image %>
|
14
|
+
<meta property="og:image" content="<%= yield :meta_image %>" />
|
15
|
+
<% if content_for? :meta_image_alt %>
|
16
|
+
<meta property="og:image:alt" content="<%= yield :meta_image_alt %>" />
|
17
|
+
<% end %>
|
18
|
+
<% end %>
|
19
|
+
<%= yield :meta_type_extension if content_for? :meta_type_extension %>
|
20
|
+
<% if content_for? :meta_description %>
|
21
|
+
<meta property="og:description" content="<%= yield :meta_description %>" />
|
22
|
+
<% end %>
|
23
|
+
<% end %>
|
24
|
+
<% if content_for? :meta_twitter %>
|
25
|
+
<%= yield :meta_twitter %>
|
26
|
+
<% else %>
|
27
|
+
<meta property="twitter:title" content="<%= content_for :meta_title %>" />
|
28
|
+
<% if content_for? :meta_image %>
|
29
|
+
<meta name="twitter:image" content="<%= yield :meta_image %>" />
|
30
|
+
<% end %>
|
31
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<div class="message-box info"><%= t(:nothing_found) %></div>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
if collection.respond_to?(:current_page)
|
2
|
+
qp = request.query_parameters.merge(format: :json)
|
3
|
+
|
4
|
+
json.links do
|
5
|
+
json.self url_for(qp.merge(page: collection.current_page))
|
6
|
+
json.first url_for(qp.merge(page: 1))
|
7
|
+
unless collection.prev_page.nil?
|
8
|
+
json.prev url_for(qp.merge(page: collection.prev_page))
|
9
|
+
end
|
10
|
+
unless collection.next_page.nil?
|
11
|
+
json.next url_for(qp.merge(page: collection.next_page))
|
12
|
+
end
|
13
|
+
json.last url_for(qp.merge(page: collection.total_pages))
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<% if collection.any? %>
|
2
|
+
<ul class="list-of-entities">
|
3
|
+
<% collection.each do |entity| %>
|
4
|
+
<li data-id="<%= entity.id %>">
|
5
|
+
<%=
|
6
|
+
render(
|
7
|
+
partial: "admin/#{entity.class.table_name}/entity/in_list",
|
8
|
+
locals: {
|
9
|
+
entity: entity,
|
10
|
+
handler: local_assigns[:handler]
|
11
|
+
}
|
12
|
+
)
|
13
|
+
%>
|
14
|
+
</li>
|
15
|
+
<% end %>
|
16
|
+
</ul>
|
17
|
+
<% else %>
|
18
|
+
<%= render 'shared/nothing_found' %>
|
19
|
+
<% end %>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<% if collection.any? %>
|
2
|
+
<ol class="list-of-entities">
|
3
|
+
<% collection.each do |entity| %>
|
4
|
+
<li data-id="<%= entity.id %>" data-number="<%= entity.priority %>">
|
5
|
+
<%=
|
6
|
+
render(
|
7
|
+
partial: "admin/#{entity.class.table_name}/entity/in_list",
|
8
|
+
locals: {
|
9
|
+
entity: entity,
|
10
|
+
handler: local_assigns[:handler]
|
11
|
+
}
|
12
|
+
)
|
13
|
+
%>
|
14
|
+
</li>
|
15
|
+
<% end %>
|
16
|
+
</ol>
|
17
|
+
<% else %>
|
18
|
+
<%= render 'shared/nothing_found' %>
|
19
|
+
<% end %>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<% prefix = "activerecord.attributes.#{entity.class.to_s.underscore}"%>
|
2
|
+
<div class="toggleable" data-url="<%= url %>">
|
3
|
+
<% entity.class.toggleable_attributes.each do |flag| %>
|
4
|
+
<span class="<%= entity.attributes[flag.to_s] ? 'active' : 'inactive' %>" data-flag="<%= flag %>">
|
5
|
+
<%= t("#{prefix}.#{flag}", default: ["attributes.#{flag}".to_sym, flag.to_s]) %>
|
6
|
+
</span>
|
7
|
+
<% end %>
|
8
|
+
</div>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
if Rails.env.test? || Rails.env.cucumber?
|
4
|
+
Dir["#{Rails.root}/app/uploaders/*.rb"].each(&method(:require))
|
5
|
+
|
6
|
+
CarrierWave.configure do |config|
|
7
|
+
config.storage = :file
|
8
|
+
config.enable_processing = false
|
9
|
+
end
|
10
|
+
|
11
|
+
# use different dirs when testing
|
12
|
+
CarrierWave::Uploader::Base.descendants.each do |klass|
|
13
|
+
next if klass.anonymous?
|
14
|
+
|
15
|
+
klass.class_eval do
|
16
|
+
def cache_dir
|
17
|
+
"#{Rails.root}/spec/support/uploads/tmp"
|
18
|
+
end
|
19
|
+
|
20
|
+
def store_dir
|
21
|
+
slug = "#{model.class.to_s.underscore}/#{mounted_as}"
|
22
|
+
|
23
|
+
"#{Rails.root}/spec/support/uploads/#{slug}/#{model.id}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
ru:
|
2
|
+
object_count:
|
3
|
+
zero: "объектов нет"
|
4
|
+
one: "%{count} объект"
|
5
|
+
few: "%{count} объекта"
|
6
|
+
many: "%{count} объектов"
|
7
|
+
other: "%{count} объектов"
|
8
|
+
attributes:
|
9
|
+
banned: "В чёрном списке"
|
10
|
+
created_at: "Время создания"
|
11
|
+
data: "Данные"
|
12
|
+
deleted: "Объект удалён"
|
13
|
+
object_count: "Количество объектов"
|
14
|
+
priority: "Порядок сортировки"
|
15
|
+
updated_at: "Время обновления"
|
16
|
+
uuid: "UUID"
|
17
|
+
slug: "Идентификатор"
|
18
|
+
visible: "Показывать"
|
19
|
+
date:
|
20
|
+
nominative_months:
|
21
|
+
-
|
22
|
+
- "январь"
|
23
|
+
- "февраль"
|
24
|
+
- "март"
|
25
|
+
- "апрель"
|
26
|
+
- "май"
|
27
|
+
- "июнь"
|
28
|
+
- "июль"
|
29
|
+
- "август"
|
30
|
+
- "сентябрь"
|
31
|
+
- "октябрь"
|
32
|
+
- "ноябрь"
|
33
|
+
- "декабрь"
|
34
|
+
error_count:
|
35
|
+
zero: "ошибок нет"
|
36
|
+
one: "%{count} ошибка"
|
37
|
+
few: "%{count} ошибки"
|
38
|
+
many: "%{count} ошибок"
|
39
|
+
other: "%{count} ошибок"
|
40
|
+
errors:
|
41
|
+
messages:
|
42
|
+
extension_blacklist_error: "имеет недопустимое расширение файла"
|
43
|
+
extension_whitelist_error: "имеет недопустимое расширение файла"
|
44
|
+
mini_magick_processing_error: "не может быть обработан"
|
45
|
+
views:
|
46
|
+
pagination:
|
47
|
+
first: "⇤"
|
48
|
+
last: "⇥"
|
49
|
+
previous: "←"
|
50
|
+
next: "→"
|
51
|
+
truncate: "…"
|
52
|
+
copyright: "2020 example.com"
|
53
|
+
home: "Главная"
|
54
|
+
application:
|
55
|
+
errors:
|
56
|
+
forbidden: "Запрещено (403)."
|
57
|
+
internal_server_error: "Внутренняя ошибка сервера (500)."
|
58
|
+
not_found: "Страница не найдена (404)."
|
59
|
+
restricted_access: "Доступ к странице ограничен (401)."
|
60
|
+
service_unavailable: "Сервис временно недоступен (503)."
|
61
|
+
unauthorized: "Не хватает прав для просмотра страницы (401)."
|
62
|
+
admin:
|
63
|
+
errors:
|
64
|
+
unauthorized:
|
65
|
+
heading: "Не хватает прав"
|
66
|
+
message: "У вас не хватает прав для просмотра этой страницы"
|
67
|
+
index:
|
68
|
+
index:
|
69
|
+
nav_text: "Администрирование"
|
70
|
+
title: "Администрирование"
|
71
|
+
heading: "Администрирование"
|
72
|
+
layouts:
|
73
|
+
admin:
|
74
|
+
footer:
|
75
|
+
support: "Поддержка"
|
76
|
+
site_name: "example.com"
|
77
|
+
my:
|
78
|
+
recoveries:
|
79
|
+
show:
|
80
|
+
nav_text: "Восстановить пароль"
|
81
|
+
update: "Обновить"
|
82
|
+
shared:
|
83
|
+
flash_messages:
|
84
|
+
alert: "Внимание"
|
85
|
+
error: "Ошибка"
|
86
|
+
info: "Информация"
|
87
|
+
notice: "Замечание"
|
88
|
+
success: "Успешно"
|
89
|
+
warning: "Предупреждение"
|
90
|
+
nothing_found: "Ничего не нашлось"
|
@@ -0,0 +1,81 @@
|
|
1
|
+
ru:
|
2
|
+
image_count:
|
3
|
+
zero: "изображений нет"
|
4
|
+
one: "%{count} изображение"
|
5
|
+
few: "%{count} изобржения"
|
6
|
+
many: "%{count} изображений"
|
7
|
+
other: "%{count} изображений"
|
8
|
+
activerecord:
|
9
|
+
models:
|
10
|
+
biovision_component: "Компонент"
|
11
|
+
language: "Язык"
|
12
|
+
metric: "Метрика"
|
13
|
+
metric_value: "Значение метрики"
|
14
|
+
simple_image: "Простое изображение"
|
15
|
+
simple_image_tag: "Метка простого изображения"
|
16
|
+
simple_image_tag_image: "Связь метки и простого изображения"
|
17
|
+
attributes:
|
18
|
+
biovision_component:
|
19
|
+
active: "Активен"
|
20
|
+
parameters: "Параметры"
|
21
|
+
settings: "Настройки"
|
22
|
+
language:
|
23
|
+
active: "Активный"
|
24
|
+
code: "Код"
|
25
|
+
metric:
|
26
|
+
biovision_component: "Компонент"
|
27
|
+
default_period: "Период по умолчанию"
|
28
|
+
incremental: "Суммарная"
|
29
|
+
name: "Название"
|
30
|
+
previous_value: "Предыдущее значение"
|
31
|
+
show_on_dashboard: "Показывать на главной странице"
|
32
|
+
start_with_zero: "Начинать с нуля"
|
33
|
+
value: "Значение"
|
34
|
+
metric_value:
|
35
|
+
metric: "Метрика"
|
36
|
+
quantity: "Количество"
|
37
|
+
time: "Время"
|
38
|
+
simple_image:
|
39
|
+
caption: "Название изображения"
|
40
|
+
image: "Изображение"
|
41
|
+
image_alt_text: "Альтернативный текст изображения"
|
42
|
+
source_link: "Ссылка на источник"
|
43
|
+
source_name: "Источник изображения"
|
44
|
+
simple_image_tag:
|
45
|
+
name: "Название"
|
46
|
+
simple_image_count: "Количество изображений"
|
47
|
+
simple_image_tag_image:
|
48
|
+
simple_image_tag: "Метка"
|
49
|
+
simple_image_tag_id: "Метка"
|
50
|
+
attributes:
|
51
|
+
biovision_component: "Компонент"
|
52
|
+
biovision_component_id: "Компонент"
|
53
|
+
language: "Язык"
|
54
|
+
language_id: "Язык"
|
55
|
+
simple_image: "Изображение"
|
56
|
+
simple_image_id: "Изображение"
|
57
|
+
languages:
|
58
|
+
english: "Английский"
|
59
|
+
russian: "Русский"
|
60
|
+
admin:
|
61
|
+
components:
|
62
|
+
privileges:
|
63
|
+
nav_text: "Привилегии"
|
64
|
+
title: "Привилении компонента «%{slug}»"
|
65
|
+
users:
|
66
|
+
heading: "Привилегии"
|
67
|
+
settings:
|
68
|
+
nav_text: "Настройки"
|
69
|
+
title: "Настройки компонента «%{slug}»"
|
70
|
+
settings:
|
71
|
+
heading: "Настройки"
|
72
|
+
parameters:
|
73
|
+
heading: "Параметры"
|
74
|
+
update_settings:
|
75
|
+
success: "Настройки успешно изменены"
|
76
|
+
index:
|
77
|
+
nav_text: "Компоненты"
|
78
|
+
title: "Компоненты"
|
79
|
+
heading: "Компоненты"
|
80
|
+
show:
|
81
|
+
title: "Компонент «%{slug}»"
|
@@ -0,0 +1,40 @@
|
|
1
|
+
ru:
|
2
|
+
activerecord:
|
3
|
+
models:
|
4
|
+
agent: "Агент пользователя"
|
5
|
+
browser: "Браузер"
|
6
|
+
ip_address: "IP-адрес"
|
7
|
+
attributes:
|
8
|
+
agent:
|
9
|
+
browser: "Браузер"
|
10
|
+
browser_id: "Браузер"
|
11
|
+
name: "Название"
|
12
|
+
browser:
|
13
|
+
agents_count: "Количество АП"
|
14
|
+
mobile: "Мобильный"
|
15
|
+
name: "Название"
|
16
|
+
version: "Версия"
|
17
|
+
ip_address:
|
18
|
+
ip: "IP-адрес"
|
19
|
+
attributes:
|
20
|
+
agent: "АП"
|
21
|
+
ip_address: "IP"
|
22
|
+
biovision:
|
23
|
+
components:
|
24
|
+
track:
|
25
|
+
name: "Отслеживание"
|
26
|
+
admin:
|
27
|
+
agents:
|
28
|
+
nav_item:
|
29
|
+
text: "Агенты пользователя"
|
30
|
+
description: "Просмотр списка браузеров посетителей"
|
31
|
+
index:
|
32
|
+
title: "Агенты пользователя, страница %{page}"
|
33
|
+
heading: "Агенты пользователя"
|
34
|
+
ip_addresses:
|
35
|
+
nav_item:
|
36
|
+
text: "IP-адреса"
|
37
|
+
description: "Просмотр списков IP-адресов посетителей"
|
38
|
+
index:
|
39
|
+
title: "IP-адреса, страница %{page}"
|
40
|
+
heading: "IP-адреса"
|
@@ -0,0 +1,130 @@
|
|
1
|
+
ru:
|
2
|
+
user_count:
|
3
|
+
zero: "пользователей нет"
|
4
|
+
one: "%{count} пользователь"
|
5
|
+
few: "%{count} пользователя"
|
6
|
+
many: "%{count} пользователей"
|
7
|
+
other: "%{count} пользователей"
|
8
|
+
code_activation_count:
|
9
|
+
zero: "активаций нет"
|
10
|
+
one: "%{count} активация"
|
11
|
+
few: "%{count} активации"
|
12
|
+
many: "%{count} активаций"
|
13
|
+
other: "%{count} активаций"
|
14
|
+
age_year_count:
|
15
|
+
zero: "%{count} лет"
|
16
|
+
one: "%{count} год"
|
17
|
+
few: "%{count} года"
|
18
|
+
many: "%{count} лет"
|
19
|
+
other: "%{count} лет"
|
20
|
+
attributes:
|
21
|
+
user: "Пользователь"
|
22
|
+
user_id: "Пользователь"
|
23
|
+
activerecord:
|
24
|
+
models:
|
25
|
+
biovision_component_user: "Компонент для пользователя"
|
26
|
+
code: "Код"
|
27
|
+
foreign_site: "Внешний сайт"
|
28
|
+
foreign_user: "Внешний пользователь"
|
29
|
+
login_attempt: "Попытка входа"
|
30
|
+
token: "Жетон доступа"
|
31
|
+
user: "Пользователь"
|
32
|
+
user_language: "Язык пользователя"
|
33
|
+
errors:
|
34
|
+
models:
|
35
|
+
user:
|
36
|
+
attributes:
|
37
|
+
email:
|
38
|
+
invalid: "не выглядит как email"
|
39
|
+
slug:
|
40
|
+
invalid: "должен содержать от 1 до 30 латинских букв, цифр или знаков подчёркивания"
|
41
|
+
attributes:
|
42
|
+
biovision_component_user:
|
43
|
+
administrator: "Администратор"
|
44
|
+
code:
|
45
|
+
body: "Код"
|
46
|
+
quantity: "Количество активаций"
|
47
|
+
foreign_site:
|
48
|
+
foreign_users_count: "Количество пользователей"
|
49
|
+
name: "Название"
|
50
|
+
foreign_user:
|
51
|
+
foreign_site: "Внешний сайт"
|
52
|
+
foreign_site_id: "Внешний сайт"
|
53
|
+
login_attempt:
|
54
|
+
password: "Пароль"
|
55
|
+
token:
|
56
|
+
last_used: "Последнее использование"
|
57
|
+
active: "Активен"
|
58
|
+
token: "Жетон"
|
59
|
+
user:
|
60
|
+
allow_mail: "Разрешить email-уведомления"
|
61
|
+
balance: "Баланс"
|
62
|
+
birthday: "Дата рождения"
|
63
|
+
bot: "Это бот"
|
64
|
+
consent: "Согласие на обработку персональных данных и принятие пользовательского соглашения"
|
65
|
+
email: "Email"
|
66
|
+
email_confirmed: "Email подтверждён"
|
67
|
+
image: "Картинка"
|
68
|
+
inviter: "Кто пригласил"
|
69
|
+
inviter_id: "Кто пригласил"
|
70
|
+
last_seen: "Последняя активность"
|
71
|
+
notice: "Заметка"
|
72
|
+
password: "Пароль"
|
73
|
+
password_confirmation: "Подтверждение пароля"
|
74
|
+
password_digest: "Хеш пароля"
|
75
|
+
phone: "Телефон"
|
76
|
+
phone_confirmed: "Телефон подтверждён"
|
77
|
+
primary_id: "Первичный пользователь"
|
78
|
+
screen_name: "Логин"
|
79
|
+
super_user: "Супер пользователь"
|
80
|
+
referral_link: "Реферальная ссылка"
|
81
|
+
biovision:
|
82
|
+
components:
|
83
|
+
users:
|
84
|
+
messages:
|
85
|
+
invalid_code: "Недействительный код"
|
86
|
+
name: "Пользователи"
|
87
|
+
settings:
|
88
|
+
bounce_count: "Максимальное количество неудачных попыток входа"
|
89
|
+
bounce_timeout: "Тайм-аут для запрета повторных попыток входа"
|
90
|
+
confirm_email: "Отправлять письмо для подтверждения почты сразу"
|
91
|
+
email_as_login: "Использовать электронную почту в качестве логина"
|
92
|
+
invite_count: "Количество кодов приглашения после регистрации"
|
93
|
+
invite_only: "Только по приглашениям"
|
94
|
+
registration_open: "Регистрация открыта"
|
95
|
+
require_email: "Электронная почта обязательна при регистрации"
|
96
|
+
use_invites: "Использовать приглашения"
|
97
|
+
anonymous: "Анонимно"
|
98
|
+
log_in: "Войти"
|
99
|
+
log_out: "Выйти"
|
100
|
+
my:
|
101
|
+
profiles:
|
102
|
+
new:
|
103
|
+
title: "Регистрация"
|
104
|
+
nav_text: "Зарегистрироваться"
|
105
|
+
heading: "Регистрация на сайте"
|
106
|
+
form:
|
107
|
+
i_am_bot: "НЕ ОТМЕЧАЙТЕ эту галочку"
|
108
|
+
consent: "Принимаю пользовательское соглашение и даю своё согласие на обработку персональных данных"
|
109
|
+
guidelines:
|
110
|
+
screen_name: "Только латинские буквы, цифры и знаки подчёркивания. От 1 до 30 символов."
|
111
|
+
password: "Выберите надёжный пароль, который нельзя легко подобрать."
|
112
|
+
password_confirmation: "Повторите пароль, чтобы убедиться, что вы не ошиблись в наборе."
|
113
|
+
email: "Введите почту для обратной связи и на случай сброса пароля."
|
114
|
+
join: "Зарегистрироваться"
|
115
|
+
invitation_code: "Пригласительный код"
|
116
|
+
already_joined: "Уже зарегистрировались?"
|
117
|
+
closed:
|
118
|
+
title: "Регистрация закрыта"
|
119
|
+
heading: "Регистрация закрыта"
|
120
|
+
registration_is_closed: "Регистрация новых пользователей закрыта"
|
121
|
+
authentication:
|
122
|
+
form:
|
123
|
+
log_in: "Войти"
|
124
|
+
login: "Логин"
|
125
|
+
create:
|
126
|
+
failed: "Не удалось выполнить вход."
|
127
|
+
new:
|
128
|
+
title: "Вход"
|
129
|
+
nav_text: "Войти"
|
130
|
+
heading: "Вход на сайт"
|