avo 4.0.0.beta.45 → 4.0.0.beta.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/app/assets/builds/avo/application.css +175 -27
- data/app/assets/builds/avo/application.js +88 -88
- data/app/assets/builds/avo/application.js.map +4 -4
- data/app/assets/stylesheets/application.css +23 -0
- data/app/assets/stylesheets/css/components/field-wrapper.css +15 -14
- data/app/assets/stylesheets/css/components/manual_frame.css +38 -0
- data/app/assets/stylesheets/css/components/modal.css +22 -10
- data/app/components/avo/fields/has_many_field/show_component.html.erb +6 -2
- data/app/components/avo/fields/has_one_field/show_component.html.erb +12 -8
- data/app/components/avo/manual_frame_component.html.erb +60 -0
- data/app/components/avo/manual_frame_component.rb +73 -0
- data/app/components/avo/tab_group_component.html.erb +14 -1
- data/app/components/avo/tab_group_component.rb +15 -7
- data/app/helpers/avo/application_helper.rb +29 -0
- data/app/javascript/application.js +6 -0
- data/app/javascript/js/controllers/manual_frame_controller.js +160 -0
- data/app/javascript/js/controllers.js +2 -0
- data/app/views/avo/actions/show.html.erb +1 -1
- data/app/views/layouts/avo/application.html.erb +5 -3
- data/lib/avo/concerns/frame_loading_mode.rb +59 -0
- data/lib/avo/fields/frame_base_field.rb +13 -0
- data/lib/avo/fields/many_frame_base_field.rb +12 -1
- data/lib/avo/resources/items/tab.rb +3 -0
- data/lib/avo/version.rb +1 -1
- data/lib/generators/avo/templates/locales/avo.ar.yml +5 -0
- data/lib/generators/avo/templates/locales/avo.de.yml +5 -0
- data/lib/generators/avo/templates/locales/avo.en.yml +5 -0
- data/lib/generators/avo/templates/locales/avo.es.yml +5 -0
- data/lib/generators/avo/templates/locales/avo.fr.yml +5 -0
- data/lib/generators/avo/templates/locales/avo.it.yml +5 -0
- data/lib/generators/avo/templates/locales/avo.ja.yml +5 -0
- data/lib/generators/avo/templates/locales/avo.nb.yml +5 -0
- data/lib/generators/avo/templates/locales/avo.nl.yml +5 -0
- data/lib/generators/avo/templates/locales/avo.nn.yml +5 -0
- data/lib/generators/avo/templates/locales/avo.pl.yml +5 -0
- data/lib/generators/avo/templates/locales/avo.pt-BR.yml +5 -0
- data/lib/generators/avo/templates/locales/avo.pt.yml +5 -0
- data/lib/generators/avo/templates/locales/avo.ro.yml +5 -0
- data/lib/generators/avo/templates/locales/avo.ru.yml +5 -0
- data/lib/generators/avo/templates/locales/avo.tr.yml +5 -0
- data/lib/generators/avo/templates/locales/avo.ua.yml +5 -0
- data/lib/generators/avo/templates/locales/avo.zh-TW.yml +5 -0
- data/lib/generators/avo/templates/locales/avo.zh.yml +5 -0
- metadata +6 -1
|
@@ -33,6 +33,7 @@ import ItemSelectorController from './controllers/item_selector_controller'
|
|
|
33
33
|
import KeyboardShortcutsSearchController from './controllers/keyboard_shortcuts_search_controller'
|
|
34
34
|
import KeyValueController from './controllers/fields/key_value_controller'
|
|
35
35
|
import LoadingButtonController from './controllers/loading_button_controller'
|
|
36
|
+
import ManualFrameController from './controllers/manual_frame_controller'
|
|
36
37
|
import MapDarkModeController from './controllers/map_dark_mode_controller'
|
|
37
38
|
import MediaLibraryAttachController from './controllers/media_library_attach_controller'
|
|
38
39
|
import MediaLibraryController from './controllers/media_library_controller'
|
|
@@ -95,6 +96,7 @@ application.register('keyboard-shortcuts-search', KeyboardShortcutsSearchControl
|
|
|
95
96
|
application.register('item-select-all', ItemSelectAllController)
|
|
96
97
|
application.register('item-selector', ItemSelectorController)
|
|
97
98
|
application.register('loading-button', LoadingButtonController)
|
|
99
|
+
application.register('manual-frame', ManualFrameController)
|
|
98
100
|
application.register('map-dark-mode', MapDarkModeController)
|
|
99
101
|
application.register('media-library-attach', MediaLibraryAttachController)
|
|
100
102
|
application.register('media-library', MediaLibraryController)
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
<%= form.hidden_field :arguments, value: params[:arguments] %>
|
|
39
39
|
<%= hidden_field_tag :resource_view, params[:resource_view] %>
|
|
40
40
|
<% if @fields.present? %>
|
|
41
|
-
<div class="description-list border-t border-
|
|
41
|
+
<div class="description-list border-t border-tertiary">
|
|
42
42
|
<% @fields.each_with_index do |field, index| %>
|
|
43
43
|
<%= render field
|
|
44
44
|
.hydrate(resource: @resource, record: @resource.record, user: @resource.user, view: @view, action: @action)
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
<%= render Avo::AssetManager::JavascriptComponent.new asset_manager: Avo.asset_manager %>
|
|
29
29
|
<%= render partial: "avo/partials/head" %>
|
|
30
30
|
<%= render partial: "avo/partials/color_theme_override" %>
|
|
31
|
+
|
|
31
32
|
<%# appearance_overrides MUST render after the application stylesheet so its inline %>
|
|
32
33
|
<%# :root / .dark declarations win on equal-specificity cascade. %>
|
|
33
34
|
<%= render partial: "avo/partials/appearance_overrides" %>
|
|
@@ -46,7 +47,9 @@
|
|
|
46
47
|
>
|
|
47
48
|
<%= render partial: "avo/partials/navbar", locals: {resource: @resource} %>
|
|
48
49
|
|
|
49
|
-
<div id="main-sidebar" tabindex="-1" class="hidden lg:flex"
|
|
50
|
+
<div id="main-sidebar" tabindex="-1" class="hidden lg:flex">
|
|
51
|
+
<%= render Avo::SidebarComponent.new sidebar_open: @sidebar_open %>
|
|
52
|
+
</div>
|
|
50
53
|
|
|
51
54
|
<div class="flex lg:hidden">
|
|
52
55
|
<%= render Avo::SidebarComponent.new sidebar_open: @sidebar_open, for_mobile: true %>
|
|
@@ -56,12 +59,11 @@
|
|
|
56
59
|
<%= render Avo::BreadcrumbsComponent.new(items: avo_breadcrumbs) %>
|
|
57
60
|
|
|
58
61
|
<div class="main-content__container <%= container_classes %>">
|
|
59
|
-
|
|
60
62
|
<%= render partial: "avo/partials/custom_tools_alert" %>
|
|
61
63
|
|
|
62
64
|
<%= yield.force_encoding("UTF-8") %>
|
|
63
65
|
|
|
64
|
-
<div class="mt-auto
|
|
66
|
+
<div class="mt-auto justify-self-end pt-8">
|
|
65
67
|
<%= render partial: "avo/partials/footer" %>
|
|
66
68
|
</div>
|
|
67
69
|
</div>
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Adds the `loading:` mode option shared by tabs and association fields.
|
|
2
|
+
#
|
|
3
|
+
# `loading:` accepts either a symbol shorthand or a Hash:
|
|
4
|
+
#
|
|
5
|
+
# loading: :manual # placeholder + Load button
|
|
6
|
+
# loading: {mode: :manual} # same as above
|
|
7
|
+
# loading: {mode: :manual, auto_load_for: 5.minutes} # + sliding auto-load memory
|
|
8
|
+
# loading: {mode: :lazy} # native lazy (loads on reveal)
|
|
9
|
+
#
|
|
10
|
+
# This is orthogonal to the eager/lazy string returned by
|
|
11
|
+
# `Avo::Fields::Concerns::FrameLoading#turbo_frame_loading` — `manual?` is a
|
|
12
|
+
# separate predicate, not a `turbo_frame_loading` value.
|
|
13
|
+
#
|
|
14
|
+
# `auto_load_for` is a memory window, not a delay: once the user has opened the
|
|
15
|
+
# frame, a short-lived cookie (scoped per record + frame) remembers it, and the
|
|
16
|
+
# server renders a real auto-loading `<turbo-frame src>` — no placeholder, no
|
|
17
|
+
# Load button — on return for that duration. The window slides via the cookie's
|
|
18
|
+
# refreshed max-age. v1 honors `auto_load_for` for `:manual` only.
|
|
19
|
+
module Avo
|
|
20
|
+
module Concerns
|
|
21
|
+
module FrameLoadingMode
|
|
22
|
+
extend ActiveSupport::Concern
|
|
23
|
+
|
|
24
|
+
# The cold-start render mode: `:manual`, `:lazy`, or `nil` when unset.
|
|
25
|
+
# A Hash without an explicit `mode:` defaults to `:manual`, so
|
|
26
|
+
# `loading: {auto_load_for: 5.minutes}` is "manual + memory".
|
|
27
|
+
def loading_mode
|
|
28
|
+
return @loading_mode if defined?(@loading_mode)
|
|
29
|
+
|
|
30
|
+
@loading_mode =
|
|
31
|
+
if @loading.is_a?(Hash)
|
|
32
|
+
(@loading.symbolize_keys[:mode] || :manual).to_sym
|
|
33
|
+
elsif @loading.present?
|
|
34
|
+
@loading.to_sym
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# True when the frame should render as a manual placeholder (Load button)
|
|
39
|
+
# on cold start. Covers `loading: :manual` and `loading: {mode: :manual}`.
|
|
40
|
+
def manual?
|
|
41
|
+
loading_mode == :manual
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# True when `loading: {mode: :lazy}` — render a native lazy frame.
|
|
45
|
+
def lazy_loading_mode?
|
|
46
|
+
loading_mode == :lazy
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Seconds the browser should remember the opened frame and auto-load it on
|
|
50
|
+
# return (sliding window). `nil` unless a `loading: {auto_load_for: …}` Hash
|
|
51
|
+
# was given. Accepts an `ActiveSupport::Duration` or a raw integer.
|
|
52
|
+
def auto_load_for
|
|
53
|
+
return unless @loading.is_a?(Hash)
|
|
54
|
+
|
|
55
|
+
@loading.symbolize_keys[:auto_load_for]&.to_i
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -5,6 +5,7 @@ module Avo
|
|
|
5
5
|
include Avo::Fields::Concerns::ReloadIcon
|
|
6
6
|
include Avo::Fields::Concerns::LinkableTitle
|
|
7
7
|
include Avo::Concerns::HasDescription
|
|
8
|
+
include Avo::Concerns::FrameLoadingMode
|
|
8
9
|
|
|
9
10
|
def initialize(id, **args, &block)
|
|
10
11
|
super
|
|
@@ -13,6 +14,7 @@ module Avo
|
|
|
13
14
|
@reloadable = args[:reloadable]
|
|
14
15
|
@linkable = args[:linkable]
|
|
15
16
|
@description = args[:description]
|
|
17
|
+
@loading = args[:loading]
|
|
16
18
|
end
|
|
17
19
|
|
|
18
20
|
def field_resource
|
|
@@ -122,6 +124,17 @@ module Avo
|
|
|
122
124
|
def default_view
|
|
123
125
|
Avo.configuration.skip_show_view ? :edit : :show
|
|
124
126
|
end
|
|
127
|
+
|
|
128
|
+
# Attributes exposed to callable descriptions. `loading_type` tells a
|
|
129
|
+
# description lambda how the field is being rendered: `:manual` for a
|
|
130
|
+
# not-yet-loaded manual placeholder, `nil` for live/loaded content. A
|
|
131
|
+
# lambda can branch on it to avoid touching the association (e.g.
|
|
132
|
+
# `query.count`) on the placeholder paint. The manual placeholder render
|
|
133
|
+
# path passes `loading_type: :manual`; every other context keeps the
|
|
134
|
+
# `nil` default.
|
|
135
|
+
def description_attributes
|
|
136
|
+
{loading_type: nil}
|
|
137
|
+
end
|
|
125
138
|
end
|
|
126
139
|
end
|
|
127
140
|
end
|
|
@@ -24,7 +24,7 @@ module Avo
|
|
|
24
24
|
only_on Avo.configuration.resource_default_view
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
super
|
|
27
|
+
super
|
|
28
28
|
|
|
29
29
|
@searchable = args[:searchable]
|
|
30
30
|
@scope = args[:scope]
|
|
@@ -32,6 +32,17 @@ module Avo
|
|
|
32
32
|
@hide_filter_button = args[:hide_filter_button]
|
|
33
33
|
@discreet_pagination = args[:discreet_pagination]
|
|
34
34
|
end
|
|
35
|
+
|
|
36
|
+
private
|
|
37
|
+
|
|
38
|
+
# Expose the association relation as `query` to callable descriptions, on
|
|
39
|
+
# top of the shared `loading_type` flag. Mirrors how `attach_scope` receives
|
|
40
|
+
# `query` in the associations controller. The relation is lazy; SQL runs
|
|
41
|
+
# only if the lambda enumerates or aggregates it (e.g. `query.count`) — so a
|
|
42
|
+
# manual placeholder should branch on `loading_type == :manual` to skip that.
|
|
43
|
+
def description_attributes
|
|
44
|
+
super.merge(query: @record.public_send(association_name))
|
|
45
|
+
end
|
|
35
46
|
end
|
|
36
47
|
end
|
|
37
48
|
end
|
|
@@ -6,11 +6,13 @@ class Avo::Resources::Items::Tab
|
|
|
6
6
|
include Avo::Concerns::VisibleItems
|
|
7
7
|
include Avo::Concerns::IsVisible
|
|
8
8
|
include Avo::Concerns::VisibleInDifferentViews
|
|
9
|
+
include Avo::Concerns::FrameLoadingMode
|
|
9
10
|
|
|
10
11
|
delegate :items, :add_item, to: :items_holder
|
|
11
12
|
|
|
12
13
|
attr_accessor :description
|
|
13
14
|
attr_reader :lazy_load
|
|
15
|
+
attr_reader :loading
|
|
14
16
|
|
|
15
17
|
def initialize(title: nil, description: nil, view: nil, **args)
|
|
16
18
|
@title = title
|
|
@@ -20,6 +22,7 @@ class Avo::Resources::Items::Tab
|
|
|
20
22
|
@args = args
|
|
21
23
|
@visible = args[:visible]
|
|
22
24
|
@lazy_load = args[:lazy_load]
|
|
25
|
+
@loading = args[:loading]
|
|
23
26
|
|
|
24
27
|
post_initialize if respond_to?(:post_initialize)
|
|
25
28
|
end
|
data/lib/avo/version.rb
CHANGED
|
@@ -53,6 +53,7 @@ ar:
|
|
|
53
53
|
choose_an_option: اختر خيارًا
|
|
54
54
|
choose_item: اختر %{item}
|
|
55
55
|
clear_value: مسح القيمة
|
|
56
|
+
click_to_load: انقر لتحميل
|
|
56
57
|
click_to_reveal_filters: انقر لإظهار المرشحات
|
|
57
58
|
close: إغلاق
|
|
58
59
|
close_modal: أغلق النافذة
|
|
@@ -78,6 +79,7 @@ ar:
|
|
|
78
79
|
failed: فشل
|
|
79
80
|
failed_to_find_attachment: فشل في العثور على المرفق
|
|
80
81
|
failed_to_load: فشل التحميل
|
|
82
|
+
failed_to_load_item: فشل في تحميل %{item}
|
|
81
83
|
'false': خطأ
|
|
82
84
|
file:
|
|
83
85
|
few: ملفات
|
|
@@ -117,6 +119,7 @@ ar:
|
|
|
117
119
|
value: القيمة
|
|
118
120
|
less_content: محتوى أقل
|
|
119
121
|
list_is_empty: القائمة فارغة
|
|
122
|
+
load_item: تحميل %{item}
|
|
120
123
|
loading: جاري التحميل
|
|
121
124
|
media_library:
|
|
122
125
|
title: مكتبة الوسائط
|
|
@@ -165,6 +168,8 @@ ar:
|
|
|
165
168
|
resource_destroyed: تم حذف السجل
|
|
166
169
|
resource_updated: تم تحديث السجل
|
|
167
170
|
resources: المصادر
|
|
171
|
+
retry: إعادة المحاولة
|
|
172
|
+
retry_item: إعادة المحاولة %{item}
|
|
168
173
|
reupload_file: Reupload %{item}
|
|
169
174
|
run: تشغيل
|
|
170
175
|
save: حفظ
|
|
@@ -43,6 +43,7 @@ de:
|
|
|
43
43
|
choose_an_option: Option auswählen
|
|
44
44
|
choose_item: "%{item} auswählen"
|
|
45
45
|
clear_value: Wert löschen
|
|
46
|
+
click_to_load: Klicken Sie hier, um zu laden
|
|
46
47
|
click_to_reveal_filters: Klicken, um Filter anzuzeigen
|
|
47
48
|
close: Schließen
|
|
48
49
|
close_modal: Modal schließen
|
|
@@ -68,6 +69,7 @@ de:
|
|
|
68
69
|
failed: Fehlgeschlagen
|
|
69
70
|
failed_to_find_attachment: Anhang nicht gefunden
|
|
70
71
|
failed_to_load: Laden fehlgeschlagen
|
|
72
|
+
failed_to_load_item: Fehler beim Laden von %{item}
|
|
71
73
|
'false': Falsch
|
|
72
74
|
file:
|
|
73
75
|
one: Datei
|
|
@@ -103,6 +105,7 @@ de:
|
|
|
103
105
|
value: Wert
|
|
104
106
|
less_content: Weniger Inhalt
|
|
105
107
|
list_is_empty: Liste ist leer
|
|
108
|
+
load_item: Lade %{item}
|
|
106
109
|
loading: Lade...
|
|
107
110
|
media_library:
|
|
108
111
|
title: Medienbibliothek
|
|
@@ -147,6 +150,8 @@ de:
|
|
|
147
150
|
resource_destroyed: Eintrag gelöscht
|
|
148
151
|
resource_updated: Eintrag aktualisiert
|
|
149
152
|
resources: Ressourcen
|
|
153
|
+
retry: Erneut versuchen
|
|
154
|
+
retry_item: Erneut versuchen %{item}
|
|
150
155
|
reupload_file: Reupload %{item}
|
|
151
156
|
run: Ausführen
|
|
152
157
|
save: Speichern
|
|
@@ -43,6 +43,7 @@ en:
|
|
|
43
43
|
choose_an_option: Choose an option
|
|
44
44
|
choose_item: Choose %{item}
|
|
45
45
|
clear_value: Clear value
|
|
46
|
+
click_to_load: Click to load
|
|
46
47
|
click_to_reveal_filters: Click to reveal filters
|
|
47
48
|
close: Close
|
|
48
49
|
close_modal: Close modal
|
|
@@ -68,6 +69,7 @@ en:
|
|
|
68
69
|
failed: Failed
|
|
69
70
|
failed_to_find_attachment: Failed to find attachment
|
|
70
71
|
failed_to_load: Failed to load
|
|
72
|
+
failed_to_load_item: Failed to load %{item}
|
|
71
73
|
'false': 'False'
|
|
72
74
|
file:
|
|
73
75
|
one: file
|
|
@@ -103,6 +105,7 @@ en:
|
|
|
103
105
|
value: Value
|
|
104
106
|
less_content: Less content
|
|
105
107
|
list_is_empty: List is empty
|
|
108
|
+
load_item: Load %{item}
|
|
106
109
|
loading: Loading
|
|
107
110
|
media_library:
|
|
108
111
|
title: Media Library
|
|
@@ -147,6 +150,8 @@ en:
|
|
|
147
150
|
resource_destroyed: Record destroyed
|
|
148
151
|
resource_updated: Record updated
|
|
149
152
|
resources: Resources
|
|
153
|
+
retry: Retry
|
|
154
|
+
retry_item: Retry %{item}
|
|
150
155
|
reupload_file: Reupload %{item}
|
|
151
156
|
run: Run
|
|
152
157
|
save: Save
|
|
@@ -45,6 +45,7 @@ es:
|
|
|
45
45
|
choose_an_option: Elige una opción
|
|
46
46
|
choose_item: Elige %{item}
|
|
47
47
|
clear_value: Borrar el valor
|
|
48
|
+
click_to_load: Haga clic para cargar
|
|
48
49
|
click_to_reveal_filters: Pulsa para mostrar los filtros
|
|
49
50
|
close: Cerrar
|
|
50
51
|
close_modal: Cerrar modal
|
|
@@ -70,6 +71,7 @@ es:
|
|
|
70
71
|
failed: Fallo
|
|
71
72
|
failed_to_find_attachment: No se ha encontrado el archivo adjunto
|
|
72
73
|
failed_to_load: No se ha podido cargar
|
|
74
|
+
failed_to_load_item: Error al cargar %{item}
|
|
73
75
|
'false': Falso
|
|
74
76
|
file:
|
|
75
77
|
one: archivo
|
|
@@ -105,6 +107,7 @@ es:
|
|
|
105
107
|
value: Valor
|
|
106
108
|
less_content: Menos contenido
|
|
107
109
|
list_is_empty: La lista está vacía
|
|
110
|
+
load_item: Cargar %{item}
|
|
108
111
|
loading: Cargando
|
|
109
112
|
media_library:
|
|
110
113
|
title: Biblioteca de medios
|
|
@@ -149,6 +152,8 @@ es:
|
|
|
149
152
|
resource_destroyed: Recurso eliminado
|
|
150
153
|
resource_updated: Recurso actualizado
|
|
151
154
|
resources: Recursos
|
|
155
|
+
retry: Reintentar
|
|
156
|
+
retry_item: Reintentar %{item}
|
|
152
157
|
reupload_file: Reupload %{item}
|
|
153
158
|
run: Ejecutar
|
|
154
159
|
save: Guardar
|
|
@@ -45,6 +45,7 @@ fr:
|
|
|
45
45
|
choose_an_option: Sélectionnez une option
|
|
46
46
|
choose_item: Choisir %{item}
|
|
47
47
|
clear_value: Effacer la valeur
|
|
48
|
+
click_to_load: Cliquez pour charger
|
|
48
49
|
click_to_reveal_filters: Cliquez pour révéler les filtres
|
|
49
50
|
close: Fermer
|
|
50
51
|
close_modal: Fermer la fenêtre modale
|
|
@@ -70,6 +71,7 @@ fr:
|
|
|
70
71
|
failed: Échec
|
|
71
72
|
failed_to_find_attachment: Impossible de trouver la pièce jointe
|
|
72
73
|
failed_to_load: Impossible de charger
|
|
74
|
+
failed_to_load_item: Échec du chargement de %{item}
|
|
73
75
|
'false': Faux
|
|
74
76
|
file:
|
|
75
77
|
one: fichier
|
|
@@ -105,6 +107,7 @@ fr:
|
|
|
105
107
|
value: Valeur
|
|
106
108
|
less_content: Moins de contenu
|
|
107
109
|
list_is_empty: La liste est vide
|
|
110
|
+
load_item: Charger %{item}
|
|
108
111
|
loading: Chargement
|
|
109
112
|
media_library:
|
|
110
113
|
title: Bibliothèque multimédia
|
|
@@ -149,6 +152,8 @@ fr:
|
|
|
149
152
|
resource_destroyed: Ressource détruite
|
|
150
153
|
resource_updated: Ressource mise à jour
|
|
151
154
|
resources: Ressources
|
|
155
|
+
retry: Réessayer
|
|
156
|
+
retry_item: Réessayer %{item}
|
|
152
157
|
reupload_file: Reupload %{item}
|
|
153
158
|
run: Exécuter
|
|
154
159
|
save: Enregistrer
|
|
@@ -43,6 +43,7 @@ it:
|
|
|
43
43
|
choose_an_option: Scegli un'opzione
|
|
44
44
|
choose_item: Scegli %{item}
|
|
45
45
|
clear_value: Cancella valore
|
|
46
|
+
click_to_load: Clicca per caricare
|
|
46
47
|
click_to_reveal_filters: Clicca per mostrare i filtri
|
|
47
48
|
close: Chiudi
|
|
48
49
|
close_modal: Chiudi modale
|
|
@@ -68,6 +69,7 @@ it:
|
|
|
68
69
|
failed: Fallito
|
|
69
70
|
failed_to_find_attachment: Impossibile trovare l'allegato
|
|
70
71
|
failed_to_load: Caricamento fallito
|
|
72
|
+
failed_to_load_item: Impossibile caricare %{item}
|
|
71
73
|
'false': Falso
|
|
72
74
|
file:
|
|
73
75
|
one: file
|
|
@@ -103,6 +105,7 @@ it:
|
|
|
103
105
|
value: Valore
|
|
104
106
|
less_content: Meno contenuti
|
|
105
107
|
list_is_empty: La lista è vuota
|
|
108
|
+
load_item: Carica %{item}
|
|
106
109
|
loading: Caricamento in corso
|
|
107
110
|
media_library:
|
|
108
111
|
title: Libreria multimediale
|
|
@@ -147,6 +150,8 @@ it:
|
|
|
147
150
|
resource_destroyed: Record distrutto
|
|
148
151
|
resource_updated: Record aggiornato
|
|
149
152
|
resources: Risorse
|
|
153
|
+
retry: Riprova
|
|
154
|
+
retry_item: Riprova %{item}
|
|
150
155
|
reupload_file: Reupload %{item}
|
|
151
156
|
run: Esegui
|
|
152
157
|
save: Salva
|
|
@@ -45,6 +45,7 @@ ja:
|
|
|
45
45
|
choose_an_option: オプションを選択
|
|
46
46
|
choose_item: "%{item}を選択"
|
|
47
47
|
clear_value: 値をクリア
|
|
48
|
+
click_to_load: 読み込みをクリック
|
|
48
49
|
click_to_reveal_filters: フィルターを表示するにはクリック
|
|
49
50
|
close: 閉じる
|
|
50
51
|
close_modal: モーダルを閉じる
|
|
@@ -70,6 +71,7 @@ ja:
|
|
|
70
71
|
failed: 失敗
|
|
71
72
|
failed_to_find_attachment: アタッチメントを見つけるのに失敗
|
|
72
73
|
failed_to_load: 読み込みに失敗
|
|
74
|
+
failed_to_load_item: "%{item}の読み込みに失敗しました"
|
|
73
75
|
'false': 偽
|
|
74
76
|
file:
|
|
75
77
|
one: ファイル
|
|
@@ -105,6 +107,7 @@ ja:
|
|
|
105
107
|
value: 値
|
|
106
108
|
less_content: コンテンツが少ない
|
|
107
109
|
list_is_empty: リストは空です
|
|
110
|
+
load_item: "%{item}を読み込む"
|
|
108
111
|
loading: 読み込み中
|
|
109
112
|
media_library:
|
|
110
113
|
title: メディアライブラリ
|
|
@@ -149,6 +152,8 @@ ja:
|
|
|
149
152
|
resource_destroyed: レコードが破棄されました
|
|
150
153
|
resource_updated: レコードが更新されました
|
|
151
154
|
resources: リソース
|
|
155
|
+
retry: 再試行
|
|
156
|
+
retry_item: "%{item}を再試行"
|
|
152
157
|
reupload_file: Reupload %{item}
|
|
153
158
|
run: 実行
|
|
154
159
|
save: 保存
|
|
@@ -45,6 +45,7 @@ nb:
|
|
|
45
45
|
choose_an_option: Velg et alternativ
|
|
46
46
|
choose_item: Velge %{item}
|
|
47
47
|
clear_value: Nullstill verdi
|
|
48
|
+
click_to_load: Klikk for å laste
|
|
48
49
|
click_to_reveal_filters: Vis filter
|
|
49
50
|
close: Lukk
|
|
50
51
|
close_modal: Lukk modal
|
|
@@ -70,6 +71,7 @@ nb:
|
|
|
70
71
|
failed: Feilet
|
|
71
72
|
failed_to_find_attachment: Fant ikke vedlegg
|
|
72
73
|
failed_to_load: Lasting feilet
|
|
74
|
+
failed_to_load_item: Kunne ikke laste %{item}
|
|
73
75
|
'false': Falsk
|
|
74
76
|
file:
|
|
75
77
|
one: file
|
|
@@ -105,6 +107,7 @@ nb:
|
|
|
105
107
|
value: Verdi
|
|
106
108
|
less_content: Mindre innhold
|
|
107
109
|
list_is_empty: Listen er tom
|
|
110
|
+
load_item: Last %{item}
|
|
108
111
|
loading: Laster
|
|
109
112
|
media_library:
|
|
110
113
|
title: Mediebibliotek
|
|
@@ -149,6 +152,8 @@ nb:
|
|
|
149
152
|
resource_destroyed: Ressurs slettet
|
|
150
153
|
resource_updated: Ressurs oppdatert
|
|
151
154
|
resources: Ressurser
|
|
155
|
+
retry: Prøv igjen
|
|
156
|
+
retry_item: Prøv igjen %{item}
|
|
152
157
|
reupload_file: Reupload %{item}
|
|
153
158
|
run: Kjør
|
|
154
159
|
save: Lagre
|
|
@@ -43,6 +43,7 @@ nl:
|
|
|
43
43
|
choose_an_option: Kies een optie
|
|
44
44
|
choose_item: Kies %{item}
|
|
45
45
|
clear_value: Waarde wissen
|
|
46
|
+
click_to_load: Klik om te laden
|
|
46
47
|
click_to_reveal_filters: Klik om filters te tonen
|
|
47
48
|
close: Sluiten
|
|
48
49
|
close_modal: Modaal sluiten
|
|
@@ -68,6 +69,7 @@ nl:
|
|
|
68
69
|
failed: Mislukt
|
|
69
70
|
failed_to_find_attachment: Bijlage niet gevonden
|
|
70
71
|
failed_to_load: Laden mislukt
|
|
72
|
+
failed_to_load_item: Laden van %{item} mislukt
|
|
71
73
|
'false': Onwaar
|
|
72
74
|
file:
|
|
73
75
|
one: bestand
|
|
@@ -103,6 +105,7 @@ nl:
|
|
|
103
105
|
value: Waarde
|
|
104
106
|
less_content: Minder inhoud
|
|
105
107
|
list_is_empty: Lijst is leeg
|
|
108
|
+
load_item: Laad %{item}
|
|
106
109
|
loading: Laden...
|
|
107
110
|
media_library:
|
|
108
111
|
title: Mediabibliotheek
|
|
@@ -147,6 +150,8 @@ nl:
|
|
|
147
150
|
resource_destroyed: Record verwijderd
|
|
148
151
|
resource_updated: Record bijgewerkt
|
|
149
152
|
resources: Bronnen
|
|
153
|
+
retry: Opnieuw proberen
|
|
154
|
+
retry_item: Probeer %{item} opnieuw
|
|
150
155
|
reupload_file: Reupload %{item}
|
|
151
156
|
run: Uitvoeren
|
|
152
157
|
save: Opslaan
|
|
@@ -45,6 +45,7 @@ nn:
|
|
|
45
45
|
choose_an_option: Vel eit alternativ
|
|
46
46
|
choose_item: Vel %{item}
|
|
47
47
|
clear_value: Nullstill verdi
|
|
48
|
+
click_to_load: Klikk for å laste inn
|
|
48
49
|
click_to_reveal_filters: Vis filter
|
|
49
50
|
close: Lukk
|
|
50
51
|
close_modal: Lukk modal
|
|
@@ -70,6 +71,7 @@ nn:
|
|
|
70
71
|
failed: Feila
|
|
71
72
|
failed_to_find_attachment: Fann ikkje vedlegg
|
|
72
73
|
failed_to_load: Lasting feila
|
|
74
|
+
failed_to_load_item: Feil ved innlasting av %{item}
|
|
73
75
|
'false': Falsk
|
|
74
76
|
file:
|
|
75
77
|
one: file
|
|
@@ -105,6 +107,7 @@ nn:
|
|
|
105
107
|
value: Verdi
|
|
106
108
|
less_content: Mindre innhold
|
|
107
109
|
list_is_empty: Lista er tom
|
|
110
|
+
load_item: Last inn %{item}
|
|
108
111
|
loading: Lastar
|
|
109
112
|
media_library:
|
|
110
113
|
title: Media bibliotek
|
|
@@ -149,6 +152,8 @@ nn:
|
|
|
149
152
|
resource_destroyed: Ressurs sletta
|
|
150
153
|
resource_updated: Ressurs oppdatert
|
|
151
154
|
resources: Ressursar
|
|
155
|
+
retry: Prøv igjen
|
|
156
|
+
retry_item: Prøv igjen %{item}
|
|
152
157
|
reupload_file: Reupload %{item}
|
|
153
158
|
run: Køyr
|
|
154
159
|
save: Lagre
|
|
@@ -45,6 +45,7 @@ pl:
|
|
|
45
45
|
choose_an_option: Wybierz opcję
|
|
46
46
|
choose_item: Wybierz %{item}
|
|
47
47
|
clear_value: Wyczyść wartość
|
|
48
|
+
click_to_load: Kliknij, aby załadować
|
|
48
49
|
click_to_reveal_filters: Kliknij, aby pokazać filtry
|
|
49
50
|
close: Zamknij
|
|
50
51
|
close_modal: Zamknij okno modalne
|
|
@@ -70,6 +71,7 @@ pl:
|
|
|
70
71
|
failed: Niepowodzenie
|
|
71
72
|
failed_to_find_attachment: Nie udało się znaleźć załącznika
|
|
72
73
|
failed_to_load: Nie udało się załadować
|
|
74
|
+
failed_to_load_item: Nie udało się załadować %{item}
|
|
73
75
|
'false': Fałsz
|
|
74
76
|
file:
|
|
75
77
|
few: pliki
|
|
@@ -107,6 +109,7 @@ pl:
|
|
|
107
109
|
value: Wartość
|
|
108
110
|
less_content: Pokaż mniej
|
|
109
111
|
list_is_empty: Lista jest pusta
|
|
112
|
+
load_item: Załaduj %{item}
|
|
110
113
|
loading: Ładowanie
|
|
111
114
|
media_library:
|
|
112
115
|
title: Biblioteka mediów
|
|
@@ -153,6 +156,8 @@ pl:
|
|
|
153
156
|
resource_destroyed: Rekord usunięty
|
|
154
157
|
resource_updated: Rekord zaktualizowany
|
|
155
158
|
resources: Zasoby
|
|
159
|
+
retry: Spróbuj ponownie
|
|
160
|
+
retry_item: Spróbuj ponownie %{item}
|
|
156
161
|
reupload_file: Reupload %{item}
|
|
157
162
|
run: Uruchom
|
|
158
163
|
save: Zapisz
|
|
@@ -45,6 +45,7 @@ pt-BR:
|
|
|
45
45
|
choose_an_option: Escolha uma opção
|
|
46
46
|
choose_item: Escolher %{item}
|
|
47
47
|
clear_value: Limpar valor
|
|
48
|
+
click_to_load: Clique para carregar
|
|
48
49
|
click_to_reveal_filters: Clique para revelar os filtros
|
|
49
50
|
close: Fechar
|
|
50
51
|
close_modal: Fechar modal
|
|
@@ -70,6 +71,7 @@ pt-BR:
|
|
|
70
71
|
failed: Falhou
|
|
71
72
|
failed_to_find_attachment: Falhou ao achar anexo
|
|
72
73
|
failed_to_load: Falha ao carregar
|
|
74
|
+
failed_to_load_item: Falha ao carregar %{item}
|
|
73
75
|
'false': Falso
|
|
74
76
|
file:
|
|
75
77
|
one: ficheiro
|
|
@@ -105,6 +107,7 @@ pt-BR:
|
|
|
105
107
|
value: Valor
|
|
106
108
|
less_content: Menos conteúdo
|
|
107
109
|
list_is_empty: Lista vazia
|
|
110
|
+
load_item: Carregar %{item}
|
|
108
111
|
loading: Carregando
|
|
109
112
|
media_library:
|
|
110
113
|
title: Biblioteca de Mídia
|
|
@@ -149,6 +152,8 @@ pt-BR:
|
|
|
149
152
|
resource_destroyed: Recurso destruído
|
|
150
153
|
resource_updated: Recurso atualizado
|
|
151
154
|
resources: Recursos
|
|
155
|
+
retry: Tentar novamente
|
|
156
|
+
retry_item: Tentar novamente %{item}
|
|
152
157
|
reupload_file: Reupload %{item}
|
|
153
158
|
run: Executar
|
|
154
159
|
save: Salvar
|
|
@@ -45,6 +45,7 @@ pt:
|
|
|
45
45
|
choose_an_option: Escolha uma opção
|
|
46
46
|
choose_item: Escolher %{item}
|
|
47
47
|
clear_value: Apagar valor
|
|
48
|
+
click_to_load: Clique para carregar
|
|
48
49
|
click_to_reveal_filters: Clique para mostrar os filtros
|
|
49
50
|
close: Fechar
|
|
50
51
|
close_modal: Fechar modal
|
|
@@ -70,6 +71,7 @@ pt:
|
|
|
70
71
|
failed: Falhou
|
|
71
72
|
failed_to_find_attachment: Falha ao encontrar anexo
|
|
72
73
|
failed_to_load: Falhou ao carregar
|
|
74
|
+
failed_to_load_item: Falha ao carregar %{item}
|
|
73
75
|
'false': Falso
|
|
74
76
|
file:
|
|
75
77
|
one: ficheiro
|
|
@@ -105,6 +107,7 @@ pt:
|
|
|
105
107
|
value: Valor
|
|
106
108
|
less_content: Menos conteúdo
|
|
107
109
|
list_is_empty: Lista vazia
|
|
110
|
+
load_item: Carregar %{item}
|
|
108
111
|
loading: A carregar
|
|
109
112
|
media_library:
|
|
110
113
|
title: Biblioteca de Mídia
|
|
@@ -149,6 +152,8 @@ pt:
|
|
|
149
152
|
resource_destroyed: Recurso destruído
|
|
150
153
|
resource_updated: Recurso atualizado
|
|
151
154
|
resources: Recursos
|
|
155
|
+
retry: Tentar novamente
|
|
156
|
+
retry_item: Tentar novamente %{item}
|
|
152
157
|
reupload_file: Reupload %{item}
|
|
153
158
|
run: Executar
|
|
154
159
|
save: Guardar
|
|
@@ -47,6 +47,7 @@ ro:
|
|
|
47
47
|
choose_an_option: Alege o opțiune
|
|
48
48
|
choose_item: Alege %{item}
|
|
49
49
|
clear_value: Șterge valoarea
|
|
50
|
+
click_to_load: Click pentru a încărca
|
|
50
51
|
click_to_reveal_filters: Faceți clic pentru a afișa filtrele
|
|
51
52
|
close: Închide
|
|
52
53
|
close_modal: Închide modalul
|
|
@@ -72,6 +73,7 @@ ro:
|
|
|
72
73
|
failed: A eșuat
|
|
73
74
|
failed_to_find_attachment: Atașamentul nu a fost găsit
|
|
74
75
|
failed_to_load: Încărcarea a eșuat
|
|
76
|
+
failed_to_load_item: Încărcarea %{item} a eșuat
|
|
75
77
|
'false': Fals
|
|
76
78
|
file:
|
|
77
79
|
few: fişiere
|
|
@@ -108,6 +110,7 @@ ro:
|
|
|
108
110
|
value: Valoare
|
|
109
111
|
less_content: Mai puțin conținut
|
|
110
112
|
list_is_empty: Lista este goală
|
|
113
|
+
load_item: Încărcați %{item}
|
|
111
114
|
loading: Se incarcă
|
|
112
115
|
media_library:
|
|
113
116
|
title: Bibliotecă media
|
|
@@ -153,6 +156,8 @@ ro:
|
|
|
153
156
|
resource_destroyed: Resursă ștearsă
|
|
154
157
|
resource_updated: Resursă actualizată
|
|
155
158
|
resources: Resurse
|
|
159
|
+
retry: Reîncercați
|
|
160
|
+
retry_item: Reîncercați %{item}
|
|
156
161
|
reupload_file: Reupload %{item}
|
|
157
162
|
run: Rulează
|
|
158
163
|
save: Salvează
|