ultra_settings 2.8.0 → 2.9.0
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/CHANGELOG.md +24 -1
- data/MIT-LICENSE.txt +1 -1
- data/README.md +108 -1
- data/VERSION +1 -1
- data/app/AGENTS.md +7 -0
- data/app/_config_description.html.erb +22 -25
- data/app/_config_list.html.erb +2 -14
- data/app/_data_source.html.erb +53 -0
- data/app/application.css +1078 -259
- data/app/application.js +818 -91
- data/app/application_vars.css.erb +136 -81
- data/app/configuration.html.erb +60 -107
- data/app/index.html.erb +164 -20
- data/app/layout.css +81 -16
- data/app/layout.html.erb +67 -5
- data/app/layout_vars.css.erb +29 -5
- data/app/locales/ar.json +71 -0
- data/app/locales/cs.json +71 -0
- data/app/locales/da.json +71 -0
- data/app/locales/de.json +71 -0
- data/app/locales/el.json +71 -0
- data/app/locales/en.json +85 -0
- data/app/locales/es.json +71 -0
- data/app/locales/fa.json +71 -0
- data/app/locales/fr.json +71 -0
- data/app/locales/gd.json +71 -0
- data/app/locales/he.json +71 -0
- data/app/locales/hi.json +71 -0
- data/app/locales/it.json +71 -0
- data/app/locales/ja.json +71 -0
- data/app/locales/ko.json +71 -0
- data/app/locales/lt.json +71 -0
- data/app/locales/nb.json +71 -0
- data/app/locales/nl.json +71 -0
- data/app/locales/pl.json +71 -0
- data/app/locales/pt-br.json +71 -0
- data/app/locales/pt.json +71 -0
- data/app/locales/ru.json +71 -0
- data/app/locales/sv.json +71 -0
- data/app/locales/ta.json +71 -0
- data/app/locales/tr.json +71 -0
- data/app/locales/uk.json +71 -0
- data/app/locales/ur.json +71 -0
- data/app/locales/vi.json +71 -0
- data/app/locales/zh-cn.json +71 -0
- data/app/locales/zh-tw.json +71 -0
- data/lib/ultra_settings/application_view.rb +21 -3
- data/lib/ultra_settings/audit_data_sources.rb +98 -0
- data/lib/ultra_settings/coerce.rb +0 -6
- data/lib/ultra_settings/config_helper.rb +4 -4
- data/lib/ultra_settings/configuration.rb +28 -7
- data/lib/ultra_settings/configuration_view.rb +117 -56
- data/lib/ultra_settings/mini_i18n.rb +110 -0
- data/lib/ultra_settings/rack_app.rb +51 -1
- data/lib/ultra_settings/railtie.rb +8 -0
- data/lib/ultra_settings/tasks/audit_data_sources.rake +76 -0
- data/lib/ultra_settings/tasks/utils.rb +23 -0
- data/lib/ultra_settings/version.rb +1 -1
- data/lib/ultra_settings/web_view.rb +33 -2
- data/lib/ultra_settings.rb +56 -22
- data/ultra_settings.gemspec +3 -0
- metadata +38 -3
- data/app/_select_menu.html.erb +0 -53
data/app/layout.css
CHANGED
|
@@ -1,29 +1,94 @@
|
|
|
1
|
-
|
|
2
|
-
box-sizing:border-box;
|
|
1
|
+
*, *::before, *::after {
|
|
2
|
+
box-sizing: border-box;
|
|
3
|
+
margin: 0;
|
|
4
|
+
padding: 0;
|
|
3
5
|
}
|
|
4
6
|
|
|
7
|
+
html { font-size: 16px; }
|
|
8
|
+
|
|
5
9
|
body {
|
|
6
|
-
font-family:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
font-family: var(--font-ui);
|
|
11
|
+
background: var(--bg-page);
|
|
12
|
+
color: var(--text-secondary);
|
|
13
|
+
line-height: 1.6;
|
|
14
|
+
-webkit-font-smoothing: antialiased;
|
|
15
|
+
-moz-osx-font-smoothing: grayscale;
|
|
12
16
|
margin: 0;
|
|
13
17
|
padding: 0;
|
|
18
|
+
min-height: 100vh;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.ultra-settings-page-header {
|
|
22
|
+
border-bottom: 1px solid var(--border-light, #e2e5ea);
|
|
23
|
+
background: var(--bg-page, #f4f5f7);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.ultra-settings-page-header-inner {
|
|
27
|
+
max-width: 940px;
|
|
28
|
+
padding: 20px 44px;
|
|
29
|
+
display: flex;
|
|
30
|
+
align-items: center;
|
|
31
|
+
justify-content: space-between;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.ultra-settings-page-header-brand {
|
|
35
|
+
display: flex;
|
|
36
|
+
align-items: center;
|
|
37
|
+
gap: 12px;
|
|
14
38
|
}
|
|
15
39
|
|
|
16
|
-
header {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
40
|
+
.ultra-settings-page-header-mark {
|
|
41
|
+
width: 32px;
|
|
42
|
+
height: 32px;
|
|
43
|
+
display: flex;
|
|
44
|
+
align-items: center;
|
|
45
|
+
justify-content: center;
|
|
46
|
+
color: var(--accent, #0d9488);
|
|
47
|
+
flex-shrink: 0;
|
|
21
48
|
}
|
|
22
49
|
|
|
23
|
-
header
|
|
50
|
+
.ultra-settings-page-header-mark svg {
|
|
51
|
+
width: 24px;
|
|
52
|
+
height: 24px;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.ultra-settings-page-header-title {
|
|
56
|
+
font-family: var(--font-ui);
|
|
57
|
+
font-size: 1.125rem;
|
|
58
|
+
font-weight: 700;
|
|
59
|
+
color: var(--text-primary, #111827);
|
|
60
|
+
letter-spacing: -0.025em;
|
|
61
|
+
line-height: 1.2;
|
|
62
|
+
margin: 0;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.ultra-settings-page-header-subtitle {
|
|
66
|
+
font-family: var(--font-ui);
|
|
67
|
+
font-size: 0.8125rem;
|
|
68
|
+
font-weight: 400;
|
|
69
|
+
color: var(--text-tertiary, #9ca3af);
|
|
70
|
+
line-height: 1.3;
|
|
24
71
|
margin: 0;
|
|
72
|
+
letter-spacing: 0.01em;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.ultra-settings-page-content {
|
|
76
|
+
max-width: 940px;
|
|
77
|
+
padding: 0 24px;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.ultra-settings-page-footer {
|
|
81
|
+
max-width: 940px;
|
|
82
|
+
padding: 0 44px 24px 44px;
|
|
83
|
+
display: flex;
|
|
84
|
+
justify-content: flex-end;
|
|
25
85
|
}
|
|
26
86
|
|
|
27
|
-
|
|
28
|
-
|
|
87
|
+
@media (max-width: 640px) {
|
|
88
|
+
.ultra-settings-page-header-inner {
|
|
89
|
+
padding: 16px;
|
|
90
|
+
}
|
|
91
|
+
.ultra-settings-page-footer {
|
|
92
|
+
padding: 16px;
|
|
93
|
+
}
|
|
29
94
|
}
|
data/app/layout.html.erb
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
|
|
3
|
-
<html>
|
|
3
|
+
<html lang="<%= @locale || 'en' %>" dir="<%= text_direction %>">
|
|
4
4
|
<head>
|
|
5
|
-
<title
|
|
5
|
+
<title><%= t("page.title") %></title>
|
|
6
6
|
<meta charset="utf-8">
|
|
7
7
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
8
|
<meta name="format-detection" content="telephone=no email=no date=no address=no">
|
|
@@ -11,11 +11,73 @@
|
|
|
11
11
|
</style>
|
|
12
12
|
</head>
|
|
13
13
|
<body>
|
|
14
|
-
<header>
|
|
15
|
-
<
|
|
14
|
+
<header class="ultra-settings-page-header">
|
|
15
|
+
<div class="ultra-settings-page-header-inner">
|
|
16
|
+
<div class="ultra-settings-page-header-brand">
|
|
17
|
+
<div class="ultra-settings-page-header-mark" aria-hidden="true">
|
|
18
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">
|
|
19
|
+
<path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/>
|
|
20
|
+
<circle cx="12" cy="12" r="3"/>
|
|
21
|
+
</svg>
|
|
22
|
+
</div>
|
|
23
|
+
<div>
|
|
24
|
+
<h1 class="ultra-settings-page-header-title"><%= t("page.brand_title") %></h1>
|
|
25
|
+
<p class="ultra-settings-page-header-subtitle"><%= t("page.brand_subtitle") %></p>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
16
29
|
</header>
|
|
17
|
-
<main>
|
|
30
|
+
<main class="ultra-settings-page-content">
|
|
18
31
|
<%= content %>
|
|
19
32
|
</main>
|
|
33
|
+
<% locales = UltraSettings::MiniI18n.available_locales %>
|
|
34
|
+
<% if locales.size > 1 %>
|
|
35
|
+
<footer class="ultra-settings-page-footer">
|
|
36
|
+
<% locale = @locale || UltraSettings::MiniI18n::DEFAULT_LOCALE %>
|
|
37
|
+
<% current_locale_name = UltraSettings::MiniI18n.t("language.name", locale: locale) %>
|
|
38
|
+
<details class="ultra-settings-language-menu" id="ultra-settings-language-menu">
|
|
39
|
+
<summary class="ultra-settings-language-trigger" aria-label="<%= t('language.label') %>" aria-haspopup="menu">
|
|
40
|
+
<span class="ultra-settings-language-trigger-icon" aria-hidden="true">
|
|
41
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
|
42
|
+
<circle cx="12" cy="12" r="9"></circle>
|
|
43
|
+
<path d="M3.6 9h16.8"></path>
|
|
44
|
+
<path d="M3.6 15h16.8"></path>
|
|
45
|
+
<path d="M12 3a14 14 0 0 1 0 18"></path>
|
|
46
|
+
<path d="M12 3a14 14 0 0 0 0 18"></path>
|
|
47
|
+
</svg>
|
|
48
|
+
</span>
|
|
49
|
+
<span class="ultra-settings-language-trigger-current"><%= html_escape(current_locale_name) %></span>
|
|
50
|
+
<span class="ultra-settings-language-trigger-caret" aria-hidden="true">
|
|
51
|
+
<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
|
52
|
+
<path d="m4 6 4 4 4-4"></path>
|
|
53
|
+
</svg>
|
|
54
|
+
</span>
|
|
55
|
+
</summary>
|
|
56
|
+
|
|
57
|
+
<menu class="ultra-settings-language-popup" role="menu" aria-label="<%= t('language.label') %>">
|
|
58
|
+
<% locales.each do |loc| %>
|
|
59
|
+
<% language_name = UltraSettings::MiniI18n.t('language.name', locale: loc) %>
|
|
60
|
+
<% active = loc == locale %>
|
|
61
|
+
<li>
|
|
62
|
+
<button
|
|
63
|
+
type="button"
|
|
64
|
+
class="ultra-settings-language-option<%= ' is-active' if active %>"
|
|
65
|
+
role="menuitemradio"
|
|
66
|
+
aria-checked="<%= active %>"
|
|
67
|
+
data-locale="<%= html_escape(loc) %>"
|
|
68
|
+
>
|
|
69
|
+
<span class="ultra-settings-language-option-name"><%= html_escape(language_name) %></span>
|
|
70
|
+
<span class="ultra-settings-language-option-check" aria-hidden="true">
|
|
71
|
+
<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
|
72
|
+
<path d="m3.5 8 3 3 6-6"></path>
|
|
73
|
+
</svg>
|
|
74
|
+
</span>
|
|
75
|
+
</button>
|
|
76
|
+
</li>
|
|
77
|
+
<% end %>
|
|
78
|
+
</menu>
|
|
79
|
+
</details>
|
|
80
|
+
</footer>
|
|
81
|
+
<% end %>
|
|
20
82
|
</body>
|
|
21
83
|
</html>
|
data/app/layout_vars.css.erb
CHANGED
|
@@ -1,7 +1,19 @@
|
|
|
1
|
-
<% unless color_scheme
|
|
1
|
+
<% unless color_scheme == :dark %>
|
|
2
2
|
:root {
|
|
3
|
-
--
|
|
4
|
-
--
|
|
3
|
+
--font-ui: system-ui, -apple-system, sans-serif;
|
|
4
|
+
--font-mono: "SF Mono", Menlo, Consolas, monospace;
|
|
5
|
+
--bg-page: #f4f5f7;
|
|
6
|
+
--text-primary: #111827;
|
|
7
|
+
--text-secondary: #4b5563;
|
|
8
|
+
--text-tertiary: #9ca3af;
|
|
9
|
+
--accent: #0d9488;
|
|
10
|
+
--border-light: #e2e5ea;
|
|
11
|
+
--bg-card: #ffffff;
|
|
12
|
+
--border-card: #dfe2e8;
|
|
13
|
+
--shadow-card: 0 1px 3px rgba(0,0,0,0.04), 0 0 0 1px rgba(0,0,0,0.03);
|
|
14
|
+
--shadow-lg: 0 20px 48px rgba(0,0,0,0.12);
|
|
15
|
+
--bg-code: #f0f2f5;
|
|
16
|
+
--accent-light: rgba(13, 148, 136, 0.06);
|
|
5
17
|
}
|
|
6
18
|
<% end %>
|
|
7
19
|
|
|
@@ -10,8 +22,20 @@
|
|
|
10
22
|
<% end %>
|
|
11
23
|
<% if color_scheme == :system || color_scheme == :dark %>
|
|
12
24
|
:root {
|
|
13
|
-
--
|
|
14
|
-
--
|
|
25
|
+
--font-ui: system-ui, -apple-system, sans-serif;
|
|
26
|
+
--font-mono: "SF Mono", Menlo, Consolas, monospace;
|
|
27
|
+
--bg-page: #0f1117;
|
|
28
|
+
--text-primary: #e4e6f0;
|
|
29
|
+
--text-secondary: #9ba1b5;
|
|
30
|
+
--text-tertiary: #5c6178;
|
|
31
|
+
--accent: #14b8a6;
|
|
32
|
+
--border-light: #2a2d3a;
|
|
33
|
+
--bg-card: #1a1c26;
|
|
34
|
+
--border-card: #252836;
|
|
35
|
+
--shadow-card: 0 1px 3px rgba(0,0,0,0.2), 0 0 0 1px rgba(255,255,255,0.04);
|
|
36
|
+
--shadow-lg: 0 20px 48px rgba(0,0,0,0.6);
|
|
37
|
+
--bg-code: #14161e;
|
|
38
|
+
--accent-light: rgba(20, 184, 166, 0.10);
|
|
15
39
|
}
|
|
16
40
|
<% end %>
|
|
17
41
|
<% if color_scheme == :system %>
|
data/app/locales/ar.json
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"page.title": "إعدادات التطبيق",
|
|
3
|
+
"page.brand_title": "UltraSettings",
|
|
4
|
+
"page.brand_subtitle": "مفتش الإعدادات",
|
|
5
|
+
"sidebar.open_nav_menu": "افتح قائمة التنقل",
|
|
6
|
+
"sidebar.config_list": "قائمة الإعدادات",
|
|
7
|
+
"sidebar.filter_placeholder": "رشّح الإعدادات والحقول…",
|
|
8
|
+
"sidebar.filter_aria_label": "رشّح الإعدادات",
|
|
9
|
+
"sidebar.configurations_label": "الإعدادات",
|
|
10
|
+
"sidebar.config_nav": "تنقل الإعدادات",
|
|
11
|
+
"search.placeholder": "البحث في التكوينات…",
|
|
12
|
+
"search.filter_aria_label": "البحث في التكوينات",
|
|
13
|
+
"search.clear_aria": "مسح التحديد والعودة إلى القائمة",
|
|
14
|
+
"config_list.fields": "حقول",
|
|
15
|
+
"field.secret": "سري",
|
|
16
|
+
"field.static": "ثابت",
|
|
17
|
+
"field.nil": "nil",
|
|
18
|
+
"field.click_to_expand": "انقر للتوسيع",
|
|
19
|
+
"field.not_set": "غير مضبوط",
|
|
20
|
+
"source.env": "ENV",
|
|
21
|
+
"source.setting": "إعداد",
|
|
22
|
+
"source.yaml": "YAML",
|
|
23
|
+
"source.default": "الافتراضي",
|
|
24
|
+
"source.active": "● نشط",
|
|
25
|
+
"source.overridden": "تم تجاوزه",
|
|
26
|
+
"detail.field_detail": "تفاصيل الحقل",
|
|
27
|
+
"detail.close_panel": "أغلق اللوحة",
|
|
28
|
+
"detail.type_label": "النوع:",
|
|
29
|
+
"detail.secret_badge": "سري",
|
|
30
|
+
"detail.secret_value": "•••••••• (سري)",
|
|
31
|
+
"config.file_not_found": "(غير موجود)",
|
|
32
|
+
"config.edit_tooltip": "حرّر ${name}",
|
|
33
|
+
"edit.title": "تحرير إعداد وقت التشغيل",
|
|
34
|
+
"edit.open_dashboard": "افتح في لوحة الإعدادات ↗",
|
|
35
|
+
"edit.loading": "جارٍ تحميل الإعداد…",
|
|
36
|
+
"edit.close_panel": "أغلق اللوحة",
|
|
37
|
+
"edit.edit_setting": "تحرير إعداد وقت التشغيل",
|
|
38
|
+
"edit.key_label": "المفتاح",
|
|
39
|
+
"edit.value_type_label": "نوع القيمة",
|
|
40
|
+
"edit.value_label": "القيمة",
|
|
41
|
+
"edit.description_label": "الوصف",
|
|
42
|
+
"edit.type_string": "نص",
|
|
43
|
+
"edit.type_integer": "عدد صحيح",
|
|
44
|
+
"edit.type_float": "عدد عشري",
|
|
45
|
+
"edit.type_boolean": "منطقي",
|
|
46
|
+
"edit.type_datetime": "تاريخ ووقت",
|
|
47
|
+
"edit.type_array": "مصفوفة",
|
|
48
|
+
"edit.enabled": "ممكّن",
|
|
49
|
+
"edit.cancel": "إلغاء",
|
|
50
|
+
"edit.save": "حفظ",
|
|
51
|
+
"edit.saving": "جارٍ الحفظ…",
|
|
52
|
+
"edit.placeholder_array": "إدخال واحد في كل سطر",
|
|
53
|
+
"edit.placeholder_integer": "أدخل عددًا صحيحًا",
|
|
54
|
+
"edit.placeholder_float": "أدخل رقمًا",
|
|
55
|
+
"edit.placeholder_datetime": "أدخل تاريخًا ووقتًا (مثل 2025-01-15T10:30:00Z)",
|
|
56
|
+
"edit.save_error": "تعذر حفظ الإعداد.",
|
|
57
|
+
"edit.http_error": "أرجع الخادم خطأ (HTTP ${status}). يرجى المحاولة مرة أخرى.",
|
|
58
|
+
"edit.network_error": "تعذر الوصول إلى الخادم. يرجى التحقق من اتصالك والمحاولة مرة أخرى.",
|
|
59
|
+
"edit.view_history": "عرض السجل",
|
|
60
|
+
"edit.back_to_edit": "← العودة للتحرير",
|
|
61
|
+
"edit.history_empty": "لا يوجد سجل لهذا الإعداد.",
|
|
62
|
+
"edit.history_loading": "جاري تحميل السجل…",
|
|
63
|
+
"edit.history_prev": "← أحدث",
|
|
64
|
+
"edit.history_next": "أقدم →",
|
|
65
|
+
"edit.history_by": "بواسطة",
|
|
66
|
+
"edit.history_deleted": "تم الحذف",
|
|
67
|
+
"edit.history_created": "تم الإنشاء",
|
|
68
|
+
"language.label": "اللغة",
|
|
69
|
+
"language.name": "العربية",
|
|
70
|
+
"dir": "rtl"
|
|
71
|
+
}
|
data/app/locales/cs.json
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"page.title": "Konfigurace aplikace",
|
|
3
|
+
"page.brand_title": "UltraSettings",
|
|
4
|
+
"page.brand_subtitle": "Inspektor konfigurace",
|
|
5
|
+
"sidebar.open_nav_menu": "Otevřít navigační nabídku",
|
|
6
|
+
"sidebar.config_list": "Seznam konfigurací",
|
|
7
|
+
"sidebar.filter_placeholder": "Filtrovat konfigurace a pole…",
|
|
8
|
+
"sidebar.filter_aria_label": "Filtrovat konfigurace",
|
|
9
|
+
"sidebar.configurations_label": "Konfigurace",
|
|
10
|
+
"sidebar.config_nav": "Navigace konfigurací",
|
|
11
|
+
"search.placeholder": "Hledat konfigurace…",
|
|
12
|
+
"search.filter_aria_label": "Hledat konfigurace",
|
|
13
|
+
"search.clear_aria": "Zrušit výběr a vrátit se na seznam",
|
|
14
|
+
"config_list.fields": "pole",
|
|
15
|
+
"field.secret": "Tajné",
|
|
16
|
+
"field.static": "Statické",
|
|
17
|
+
"field.nil": "nil",
|
|
18
|
+
"field.click_to_expand": "Kliknutím rozbalíte",
|
|
19
|
+
"field.not_set": "nenastaveno",
|
|
20
|
+
"source.env": "ENV",
|
|
21
|
+
"source.setting": "NASTAVENÍ",
|
|
22
|
+
"source.yaml": "YAML",
|
|
23
|
+
"source.default": "VÝCHOZÍ",
|
|
24
|
+
"source.active": "● Aktivní",
|
|
25
|
+
"source.overridden": "Přepsáno",
|
|
26
|
+
"detail.field_detail": "Detail pole",
|
|
27
|
+
"detail.close_panel": "Zavřít panel",
|
|
28
|
+
"detail.type_label": "Typ:",
|
|
29
|
+
"detail.secret_badge": "TAJNÉ",
|
|
30
|
+
"detail.secret_value": "•••••••• (tajné)",
|
|
31
|
+
"config.file_not_found": "(nenalezeno)",
|
|
32
|
+
"config.edit_tooltip": "Upravit ${name}",
|
|
33
|
+
"edit.title": "Upravit runtime nastavení",
|
|
34
|
+
"edit.open_dashboard": "Otevřít v panelu nastavení ↗",
|
|
35
|
+
"edit.loading": "Načítá se nastavení…",
|
|
36
|
+
"edit.close_panel": "Zavřít panel",
|
|
37
|
+
"edit.edit_setting": "Upravit runtime nastavení",
|
|
38
|
+
"edit.key_label": "Klíč",
|
|
39
|
+
"edit.value_type_label": "Typ hodnoty",
|
|
40
|
+
"edit.value_label": "Hodnota",
|
|
41
|
+
"edit.description_label": "Popis",
|
|
42
|
+
"edit.type_string": "řetězec",
|
|
43
|
+
"edit.type_integer": "celé číslo",
|
|
44
|
+
"edit.type_float": "desetinné číslo",
|
|
45
|
+
"edit.type_boolean": "logická hodnota",
|
|
46
|
+
"edit.type_datetime": "datum a čas",
|
|
47
|
+
"edit.type_array": "pole",
|
|
48
|
+
"edit.enabled": "Povoleno",
|
|
49
|
+
"edit.cancel": "Zrušit",
|
|
50
|
+
"edit.save": "Uložit",
|
|
51
|
+
"edit.saving": "Ukládání…",
|
|
52
|
+
"edit.placeholder_array": "Jedna položka na řádek",
|
|
53
|
+
"edit.placeholder_integer": "Zadejte celé číslo",
|
|
54
|
+
"edit.placeholder_float": "Zadejte číslo",
|
|
55
|
+
"edit.placeholder_datetime": "Zadejte datum a čas (např. 2025-01-15T10:30:00Z)",
|
|
56
|
+
"edit.save_error": "Nastavení se nepodařilo uložit.",
|
|
57
|
+
"edit.http_error": "Server vrátil chybu (HTTP ${status}). Zkuste to prosím znovu.",
|
|
58
|
+
"edit.network_error": "Nelze se spojit se serverem. Zkontrolujte prosím připojení a zkuste to znovu.",
|
|
59
|
+
"edit.view_history": "Zobrazit historii",
|
|
60
|
+
"edit.back_to_edit": "← Zpět na úpravy",
|
|
61
|
+
"edit.history_empty": "Pro toto nastavení nebyla nalezena žádná historie.",
|
|
62
|
+
"edit.history_loading": "Načítání historie…",
|
|
63
|
+
"edit.history_prev": "← Novější",
|
|
64
|
+
"edit.history_next": "Starší →",
|
|
65
|
+
"edit.history_by": "od",
|
|
66
|
+
"edit.history_deleted": "Smazáno",
|
|
67
|
+
"edit.history_created": "Vytvořeno",
|
|
68
|
+
"language.label": "Jazyk",
|
|
69
|
+
"language.name": "Čeština",
|
|
70
|
+
"dir": "ltr"
|
|
71
|
+
}
|
data/app/locales/da.json
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"page.title": "Applikationskonfiguration",
|
|
3
|
+
"page.brand_title": "UltraSettings",
|
|
4
|
+
"page.brand_subtitle": "Konfigurationsinspektør",
|
|
5
|
+
"sidebar.open_nav_menu": "Åbn navigationsmenu",
|
|
6
|
+
"sidebar.config_list": "Konfigurationsliste",
|
|
7
|
+
"sidebar.filter_placeholder": "Filtrér konfigurationer og felter…",
|
|
8
|
+
"sidebar.filter_aria_label": "Filtrér konfigurationer",
|
|
9
|
+
"sidebar.configurations_label": "Konfigurationer",
|
|
10
|
+
"sidebar.config_nav": "Konfigurationsnavigation",
|
|
11
|
+
"search.placeholder": "Søg i konfigurationer…",
|
|
12
|
+
"search.filter_aria_label": "Søg i konfigurationer",
|
|
13
|
+
"search.clear_aria": "Ryd valg og vend tilbage til listen",
|
|
14
|
+
"config_list.fields": "felter",
|
|
15
|
+
"field.secret": "Hemmelig",
|
|
16
|
+
"field.static": "Statisk",
|
|
17
|
+
"field.nil": "nil",
|
|
18
|
+
"field.click_to_expand": "Klik for at udvide",
|
|
19
|
+
"field.not_set": "ikke angivet",
|
|
20
|
+
"source.env": "ENV",
|
|
21
|
+
"source.setting": "INDSTILLING",
|
|
22
|
+
"source.yaml": "YAML",
|
|
23
|
+
"source.default": "STANDARD",
|
|
24
|
+
"source.active": "● Aktiv",
|
|
25
|
+
"source.overridden": "Tilsidesat",
|
|
26
|
+
"detail.field_detail": "Feltdetaljer",
|
|
27
|
+
"detail.close_panel": "Luk panel",
|
|
28
|
+
"detail.type_label": "Type:",
|
|
29
|
+
"detail.secret_badge": "HEMMELIG",
|
|
30
|
+
"detail.secret_value": "•••••••• (hemmelig)",
|
|
31
|
+
"config.file_not_found": "(ikke fundet)",
|
|
32
|
+
"config.edit_tooltip": "Rediger ${name}",
|
|
33
|
+
"edit.title": "Rediger runtime-indstilling",
|
|
34
|
+
"edit.open_dashboard": "Åbn i indstillingsdashboard ↗",
|
|
35
|
+
"edit.loading": "Indlæser indstilling…",
|
|
36
|
+
"edit.close_panel": "Luk panel",
|
|
37
|
+
"edit.edit_setting": "Rediger runtime-indstilling",
|
|
38
|
+
"edit.key_label": "Nøgle",
|
|
39
|
+
"edit.value_type_label": "Værditype",
|
|
40
|
+
"edit.value_label": "Værdi",
|
|
41
|
+
"edit.description_label": "Beskrivelse",
|
|
42
|
+
"edit.type_string": "streng",
|
|
43
|
+
"edit.type_integer": "heltal",
|
|
44
|
+
"edit.type_float": "decimaltal",
|
|
45
|
+
"edit.type_boolean": "boolesk",
|
|
46
|
+
"edit.type_datetime": "dato og tid",
|
|
47
|
+
"edit.type_array": "array",
|
|
48
|
+
"edit.enabled": "Aktiveret",
|
|
49
|
+
"edit.cancel": "Annuller",
|
|
50
|
+
"edit.save": "Gem",
|
|
51
|
+
"edit.saving": "Gemmer…",
|
|
52
|
+
"edit.placeholder_array": "Én post pr. linje",
|
|
53
|
+
"edit.placeholder_integer": "Indtast et heltal",
|
|
54
|
+
"edit.placeholder_float": "Indtast et tal",
|
|
55
|
+
"edit.placeholder_datetime": "Indtast en dato og tid (f.eks. 2025-01-15T10:30:00Z)",
|
|
56
|
+
"edit.save_error": "Indstillingen kunne ikke gemmes.",
|
|
57
|
+
"edit.http_error": "Serveren returnerede en fejl (HTTP ${status}). Prøv venligst igen.",
|
|
58
|
+
"edit.network_error": "Kan ikke nå serveren. Kontroller din forbindelse og prøv igen.",
|
|
59
|
+
"edit.view_history": "Vis historik",
|
|
60
|
+
"edit.back_to_edit": "← Tilbage til redigering",
|
|
61
|
+
"edit.history_empty": "Ingen historik fundet for denne indstilling.",
|
|
62
|
+
"edit.history_loading": "Indlæser historik…",
|
|
63
|
+
"edit.history_prev": "← Nyere",
|
|
64
|
+
"edit.history_next": "Ældre →",
|
|
65
|
+
"edit.history_by": "af",
|
|
66
|
+
"edit.history_deleted": "Slettet",
|
|
67
|
+
"edit.history_created": "Oprettet",
|
|
68
|
+
"language.label": "Sprog",
|
|
69
|
+
"language.name": "Dansk",
|
|
70
|
+
"dir": "ltr"
|
|
71
|
+
}
|
data/app/locales/de.json
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"page.title": "Anwendungskonfiguration",
|
|
3
|
+
"page.brand_title": "UltraSettings",
|
|
4
|
+
"page.brand_subtitle": "Konfigurationsinspektor",
|
|
5
|
+
"sidebar.open_nav_menu": "Navigationsmenü öffnen",
|
|
6
|
+
"sidebar.config_list": "Konfigurationsliste",
|
|
7
|
+
"sidebar.filter_placeholder": "Konfigurationen & Felder filtern…",
|
|
8
|
+
"sidebar.filter_aria_label": "Konfigurationen filtern",
|
|
9
|
+
"sidebar.configurations_label": "Konfigurationen",
|
|
10
|
+
"sidebar.config_nav": "Konfigurationsnavigation",
|
|
11
|
+
"search.placeholder": "Konfigurationen suchen…",
|
|
12
|
+
"search.filter_aria_label": "Konfigurationen suchen",
|
|
13
|
+
"search.clear_aria": "Auswahl aufheben und zur Liste zurückkehren",
|
|
14
|
+
"config_list.fields": "Felder",
|
|
15
|
+
"field.secret": "Geheim",
|
|
16
|
+
"field.static": "Statisch",
|
|
17
|
+
"field.nil": "nil",
|
|
18
|
+
"field.click_to_expand": "Zum Aufklappen klicken",
|
|
19
|
+
"field.not_set": "nicht gesetzt",
|
|
20
|
+
"source.env": "ENV",
|
|
21
|
+
"source.setting": "EINSTELLUNG",
|
|
22
|
+
"source.yaml": "YAML",
|
|
23
|
+
"source.default": "STANDARD",
|
|
24
|
+
"source.active": "● Aktiv",
|
|
25
|
+
"source.overridden": "Überschrieben",
|
|
26
|
+
"detail.field_detail": "Felddetails",
|
|
27
|
+
"detail.close_panel": "Bereich schließen",
|
|
28
|
+
"detail.type_label": "Typ:",
|
|
29
|
+
"detail.secret_badge": "GEHEIM",
|
|
30
|
+
"detail.secret_value": "•••••••• (geheim)",
|
|
31
|
+
"config.file_not_found": "(nicht gefunden)",
|
|
32
|
+
"config.edit_tooltip": "${name} bearbeiten",
|
|
33
|
+
"edit.title": "Laufzeiteinstellung bearbeiten",
|
|
34
|
+
"edit.open_dashboard": "Im Einstellungs-Dashboard öffnen ↗",
|
|
35
|
+
"edit.loading": "Einstellung wird geladen…",
|
|
36
|
+
"edit.close_panel": "Bereich schließen",
|
|
37
|
+
"edit.edit_setting": "Laufzeiteinstellung bearbeiten",
|
|
38
|
+
"edit.key_label": "Schlüssel",
|
|
39
|
+
"edit.value_type_label": "Werttyp",
|
|
40
|
+
"edit.value_label": "Wert",
|
|
41
|
+
"edit.description_label": "Beschreibung",
|
|
42
|
+
"edit.type_string": "Zeichenfolge",
|
|
43
|
+
"edit.type_integer": "Ganzzahl",
|
|
44
|
+
"edit.type_float": "Gleitkommazahl",
|
|
45
|
+
"edit.type_boolean": "Boolesch",
|
|
46
|
+
"edit.type_datetime": "Datum/Zeit",
|
|
47
|
+
"edit.type_array": "Array",
|
|
48
|
+
"edit.enabled": "Aktiviert",
|
|
49
|
+
"edit.cancel": "Abbrechen",
|
|
50
|
+
"edit.save": "Speichern",
|
|
51
|
+
"edit.saving": "Wird gespeichert…",
|
|
52
|
+
"edit.placeholder_array": "Ein Eintrag pro Zeile",
|
|
53
|
+
"edit.placeholder_integer": "Geben Sie eine Ganzzahl ein",
|
|
54
|
+
"edit.placeholder_float": "Geben Sie eine Zahl ein",
|
|
55
|
+
"edit.placeholder_datetime": "Geben Sie ein Datum mit Uhrzeit ein (z. B. 2025-01-15T10:30:00Z)",
|
|
56
|
+
"edit.save_error": "Die Einstellung konnte nicht gespeichert werden.",
|
|
57
|
+
"edit.http_error": "Der Server hat einen Fehler zurückgegeben (HTTP ${status}). Bitte versuchen Sie es erneut.",
|
|
58
|
+
"edit.network_error": "Der Server konnte nicht erreicht werden. Bitte überprüfen Sie Ihre Verbindung und versuchen Sie es erneut.",
|
|
59
|
+
"edit.view_history": "Verlauf anzeigen",
|
|
60
|
+
"edit.back_to_edit": "← Zurück zur Bearbeitung",
|
|
61
|
+
"edit.history_empty": "Kein Verlauf für diese Einstellung gefunden.",
|
|
62
|
+
"edit.history_loading": "Verlauf wird geladen…",
|
|
63
|
+
"edit.history_prev": "← Neuer",
|
|
64
|
+
"edit.history_next": "Älter →",
|
|
65
|
+
"edit.history_by": "von",
|
|
66
|
+
"edit.history_deleted": "Gelöscht",
|
|
67
|
+
"edit.history_created": "Erstellt",
|
|
68
|
+
"language.label": "Sprache",
|
|
69
|
+
"language.name": "Deutsch",
|
|
70
|
+
"dir": "ltr"
|
|
71
|
+
}
|
data/app/locales/el.json
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"page.title": "Διαμόρφωση εφαρμογής",
|
|
3
|
+
"page.brand_title": "UltraSettings",
|
|
4
|
+
"page.brand_subtitle": "Επιθεωρητής διαμόρφωσης",
|
|
5
|
+
"sidebar.open_nav_menu": "Άνοιγμα μενού πλοήγησης",
|
|
6
|
+
"sidebar.config_list": "Λίστα διαμορφώσεων",
|
|
7
|
+
"sidebar.filter_placeholder": "Φιλτράρισμα διαμορφώσεων και πεδίων…",
|
|
8
|
+
"sidebar.filter_aria_label": "Φιλτράρισμα διαμορφώσεων",
|
|
9
|
+
"sidebar.configurations_label": "Διαμορφώσεις",
|
|
10
|
+
"sidebar.config_nav": "Πλοήγηση διαμορφώσεων",
|
|
11
|
+
"search.placeholder": "Αναζήτηση ρυθμίσεων…",
|
|
12
|
+
"search.filter_aria_label": "Αναζήτηση ρυθμίσεων",
|
|
13
|
+
"search.clear_aria": "Εκκαθάριση επιλογής και επιστροφή στη λίστα",
|
|
14
|
+
"config_list.fields": "πεδία",
|
|
15
|
+
"field.secret": "Μυστικό",
|
|
16
|
+
"field.static": "Στατικό",
|
|
17
|
+
"field.nil": "nil",
|
|
18
|
+
"field.click_to_expand": "Κάντε κλικ για ανάπτυξη",
|
|
19
|
+
"field.not_set": "δεν έχει οριστεί",
|
|
20
|
+
"source.env": "ENV",
|
|
21
|
+
"source.setting": "ΡΥΘΜΙΣΗ",
|
|
22
|
+
"source.yaml": "YAML",
|
|
23
|
+
"source.default": "ΠΡΟΕΠΙΛΟΓΗ",
|
|
24
|
+
"source.active": "● Ενεργό",
|
|
25
|
+
"source.overridden": "Παρακάμφθηκε",
|
|
26
|
+
"detail.field_detail": "Λεπτομέρειες πεδίου",
|
|
27
|
+
"detail.close_panel": "Κλείσιμο πίνακα",
|
|
28
|
+
"detail.type_label": "Τύπος:",
|
|
29
|
+
"detail.secret_badge": "ΜΥΣΤΙΚΟ",
|
|
30
|
+
"detail.secret_value": "•••••••• (μυστικό)",
|
|
31
|
+
"config.file_not_found": "(δεν βρέθηκε)",
|
|
32
|
+
"config.edit_tooltip": "Επεξεργασία ${name}",
|
|
33
|
+
"edit.title": "Επεξεργασία ρύθμισης χρόνου εκτέλεσης",
|
|
34
|
+
"edit.open_dashboard": "Άνοιγμα στον πίνακα ρυθμίσεων ↗",
|
|
35
|
+
"edit.loading": "Φόρτωση ρύθμισης…",
|
|
36
|
+
"edit.close_panel": "Κλείσιμο πίνακα",
|
|
37
|
+
"edit.edit_setting": "Επεξεργασία ρύθμισης χρόνου εκτέλεσης",
|
|
38
|
+
"edit.key_label": "Κλειδί",
|
|
39
|
+
"edit.value_type_label": "Τύπος τιμής",
|
|
40
|
+
"edit.value_label": "Τιμή",
|
|
41
|
+
"edit.description_label": "Περιγραφή",
|
|
42
|
+
"edit.type_string": "συμβολοσειρά",
|
|
43
|
+
"edit.type_integer": "ακέραιος",
|
|
44
|
+
"edit.type_float": "δεκαδικός",
|
|
45
|
+
"edit.type_boolean": "λογική τιμή",
|
|
46
|
+
"edit.type_datetime": "ημερομηνία και ώρα",
|
|
47
|
+
"edit.type_array": "πίνακας",
|
|
48
|
+
"edit.enabled": "Ενεργό",
|
|
49
|
+
"edit.cancel": "Ακύρωση",
|
|
50
|
+
"edit.save": "Αποθήκευση",
|
|
51
|
+
"edit.saving": "Αποθήκευση…",
|
|
52
|
+
"edit.placeholder_array": "Μία καταχώρηση ανά γραμμή",
|
|
53
|
+
"edit.placeholder_integer": "Εισαγάγετε έναν ακέραιο",
|
|
54
|
+
"edit.placeholder_float": "Εισαγάγετε έναν αριθμό",
|
|
55
|
+
"edit.placeholder_datetime": "Εισαγάγετε ημερομηνία και ώρα (π.χ. 2025-01-15T10:30:00Z)",
|
|
56
|
+
"edit.save_error": "Η αποθήκευση της ρύθμισης απέτυχε.",
|
|
57
|
+
"edit.http_error": "Ο διακομιστής επέστρεψε σφάλμα (HTTP ${status}). Παρακαλώ προσπαθήστε ξανά.",
|
|
58
|
+
"edit.network_error": "Αδυναμία σύνδεσης με τον διακομιστή. Ελέγξτε τη σύνδεσή σας και προσπαθήστε ξανά.",
|
|
59
|
+
"edit.view_history": "Προβολή ιστορικού",
|
|
60
|
+
"edit.back_to_edit": "← Επιστροφή στην επεξεργασία",
|
|
61
|
+
"edit.history_empty": "Δεν βρέθηκε ιστορικό για αυτήν τη ρύθμιση.",
|
|
62
|
+
"edit.history_loading": "Φόρτωση ιστορικού…",
|
|
63
|
+
"edit.history_prev": "← Νεότερα",
|
|
64
|
+
"edit.history_next": "Παλαιότερα →",
|
|
65
|
+
"edit.history_by": "από",
|
|
66
|
+
"edit.history_deleted": "Διαγράφηκε",
|
|
67
|
+
"edit.history_created": "Δημιουργήθηκε",
|
|
68
|
+
"language.label": "Γλώσσα",
|
|
69
|
+
"language.name": "Ελληνικά",
|
|
70
|
+
"dir": "ltr"
|
|
71
|
+
}
|