pgkiln 0.45.0 → 0.47.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.
- package/db/migrations/106_form_designer.sql +102 -0
- package/db/migrations/107_app_version.sql +9 -0
- package/db/migrations/108_sql_history.sql +25 -0
- package/docs/apex-feature-parity.md +33 -4
- package/docs/guide/03-builder.md +123 -28
- package/docs/guide/04-pages-and-regions.md +74 -2
- package/docs/guide/05-items.md +14 -2
- package/docs/guide/08-security.md +1 -1
- package/docs/guide/09-reference.md +1 -1
- package/docs/guide/10-tutorial.md +1 -1
- package/docs/guide/11-from-apex.md +2 -1
- package/docs/guide/12-development.md +26 -3
- package/docs/guide/16-files.md +2 -2
- package/examples/hr/hr_61_form_designer.sql +80 -0
- package/package.json +1 -1
- package/public/app.css +62 -2
- package/public/app.js +244 -35
- package/public/builder.css +21 -1
- package/public/builder.js +67 -0
- package/public/sw.js +2 -1
- package/public/worksheet.css +244 -0
- package/public/worksheet.js +665 -0
- package/src/app.ts +9 -1
- package/src/builder/ai-builder.ts +3 -3
- package/src/builder/appwizard.ts +22 -6
- package/src/builder/arrange.ts +33 -12
- package/src/builder/code-editor.ts +1 -1
- package/src/builder/components.ts +1 -1
- package/src/builder/designer.ts +44 -17
- package/src/builder/errors.ts +65 -0
- package/src/builder/form-designer.ts +229 -0
- package/src/builder/locks.ts +6 -0
- package/src/builder/newapp.ts +2 -1
- package/src/builder/object-actions.ts +166 -0
- package/src/builder/object-browser.ts +111 -33
- package/src/builder/querybuilder.ts +1 -1
- package/src/builder/region-help.ts +2 -0
- package/src/builder/region-settings.ts +2 -0
- package/src/builder/reporter.ts +1 -1
- package/src/builder/routes.ts +7 -5
- package/src/builder/sampledata.ts +2 -2
- package/src/builder/scripts.ts +3 -3
- package/src/builder/search.ts +3 -3
- package/src/builder/shared.ts +2 -2
- package/src/builder/sql.ts +15 -73
- package/src/builder/table-editor.ts +219 -0
- package/src/builder/ui.ts +5 -3
- package/src/builder/unload.ts +8 -4
- package/src/builder/worksheet.ts +569 -0
- package/src/builder/workspaces.ts +1 -1
- package/src/cli/replace.ts +10 -0
- package/src/i18n/ar.ts +62 -0
- package/src/i18n/cs.ts +62 -0
- package/src/i18n/da.ts +62 -0
- package/src/i18n/de.ts +62 -0
- package/src/i18n/el.ts +62 -0
- package/src/i18n/es.ts +62 -0
- package/src/i18n/fi.ts +62 -0
- package/src/i18n/fr.ts +62 -0
- package/src/i18n/he.ts +62 -0
- package/src/i18n/it.ts +62 -0
- package/src/i18n/ja.ts +62 -0
- package/src/i18n/ko.ts +62 -0
- package/src/i18n/nb.ts +62 -0
- package/src/i18n/pl.ts +62 -0
- package/src/i18n/pt.ts +62 -0
- package/src/i18n/ru.ts +62 -0
- package/src/i18n/sv.ts +62 -0
- package/src/i18n/tr.ts +62 -0
- package/src/i18n/uk.ts +62 -0
- package/src/i18n/zh.ts +62 -0
- package/src/i18n.ts +124 -0
- package/src/metadata.ts +4 -2
- package/src/runtime/devbar.ts +1 -1
- package/src/runtime/facet-state.ts +10 -5
- package/src/runtime/facets.ts +29 -5
- package/src/runtime/form-designer.ts +676 -0
- package/src/runtime/grid.ts +15 -8
- package/src/runtime/items.ts +33 -21
- package/src/runtime/lists.ts +1 -1
- package/src/runtime/pdf.ts +2 -1
- package/src/runtime/regions.ts +4 -0
- package/src/runtime/render.ts +7 -3
- package/src/runtime/report.ts +2 -2
- package/src/runtime/routes.ts +3 -1
- package/src/runtime/smart-filters.ts +2 -1
- package/src/runtime/tasks.ts +6 -3
- package/src/sqlformat.ts +208 -0
- package/src/sqlplan.ts +133 -0
- package/src/sqlscript.ts +6 -2
- package/src/sqlworksheet.ts +278 -0
- package/src/tabledef.ts +226 -0
- package/src/unload.ts +14 -3
package/src/cli/replace.ts
CHANGED
|
@@ -51,6 +51,8 @@ export const KEPT = ['app_access', 'api_client', 'session', 'sso_pending', 'save
|
|
|
51
51
|
'subscription',
|
|
52
52
|
// (057) users' Data Reporter reports (user data, like saved reports)
|
|
53
53
|
'data_report',
|
|
54
|
+
// (106) Form Designer forms, built by the application's administrators (installation data, like reports)
|
|
55
|
+
'user_form',
|
|
54
56
|
// (060) which AI services an application may use (installation data), its AI usage log and AI requests from SQL
|
|
55
57
|
'app_ai_service', 'ai_usage', 'ai_request',
|
|
56
58
|
// (061) AI assistant conversations (per session, follow their region)
|
|
@@ -79,6 +81,8 @@ const REPOINTED = ['saved_report.region_id', 'task.definition_id', 'workflow.def
|
|
|
79
81
|
'rest_sync_log.source_id',
|
|
80
82
|
// (057) Data Reporter reports follow their region like saved reports
|
|
81
83
|
'data_report.region_id',
|
|
84
|
+
// (106) Form Designer forms follow their region
|
|
85
|
+
'user_form.region_id',
|
|
82
86
|
// (061) AI assistant conversations follow their region
|
|
83
87
|
'ai_conversation.region_id'];
|
|
84
88
|
|
|
@@ -201,6 +205,12 @@ export async function replaceApp(db: Db, doc: unknown, alias: string, opts: Repl
|
|
|
201
205
|
from unnest($1::int[], $2::int[]) as m(old, neu) where s.region_id = m.old`,
|
|
202
206
|
[pairs.map((p) => p[0]), pairs.map((p) => p[1])],
|
|
203
207
|
);
|
|
208
|
+
if (pairs.length)
|
|
209
|
+
await db.query(
|
|
210
|
+
`update meta.user_form s set region_id = m.neu
|
|
211
|
+
from unnest($1::int[], $2::int[]) as m(old, neu) where s.region_id = m.old`,
|
|
212
|
+
[pairs.map((p) => p[0]), pairs.map((p) => p[1])],
|
|
213
|
+
);
|
|
204
214
|
if (pairs.length)
|
|
205
215
|
await db.query(
|
|
206
216
|
`update meta.ai_conversation s set region_id = m.neu
|
package/src/i18n/ar.ts
CHANGED
|
@@ -63,6 +63,7 @@ export const ar: Record<MessageKey, string> = {
|
|
|
63
63
|
'common.back': "رجوع",
|
|
64
64
|
'common.home': "الانتقال إلى الصفحة الرئيسية",
|
|
65
65
|
'common.skip': "تخطَّ إلى المحتوى",
|
|
66
|
+
'common.back_to_top': "العودة إلى الأعلى",
|
|
66
67
|
'common.toggle_nav': "إظهار التنقل أو إخفاؤه",
|
|
67
68
|
'common.dismiss': "إغلاق",
|
|
68
69
|
// messages and errors
|
|
@@ -390,6 +391,9 @@ export const ar: Record<MessageKey, string> = {
|
|
|
390
391
|
'facets.stars_up': "{n} نجوم فأكثر",
|
|
391
392
|
'facets.star_up': "نجمة واحدة فأكثر",
|
|
392
393
|
'facets.clear_short': "مسح",
|
|
394
|
+
'facets.menu': "خيارات {facet}",
|
|
395
|
+
'facets.sort_count': "الترتيب حسب العدد",
|
|
396
|
+
'facets.sort_name': "الترتيب حسب الاسم",
|
|
393
397
|
'facets.show_all': "عرض الكل ({n})",
|
|
394
398
|
'facets.total': "إجمالي عدد الصفوف {n}",
|
|
395
399
|
'smart.placeholder': "بحث أو تصفية…",
|
|
@@ -685,6 +689,64 @@ export const ar: Record<MessageKey, string> = {
|
|
|
685
689
|
'reporter.changed': "عُدِّل في {date}",
|
|
686
690
|
'reporter.no_match': "لا توجد تقارير مطابقة للبحث.",
|
|
687
691
|
'reporter.chart_tag': "مخطط",
|
|
692
|
+
// Form Designer (form-designer.ts)
|
|
693
|
+
'formdesigner.no_sources': "لم تُعدّ أي جداول لهذه المنطقة بعد.",
|
|
694
|
+
'formdesigner.no_forms': "لا توجد نماذج بعد.",
|
|
695
|
+
'formdesigner.new': "نموذج جديد",
|
|
696
|
+
'formdesigner.create': "تصميم",
|
|
697
|
+
'formdesigner.draft': "مسودة",
|
|
698
|
+
'formdesigner.design': "تصميم النموذج",
|
|
699
|
+
'formdesigner.design_of': "تصميم {name}",
|
|
700
|
+
'formdesigner.back': "كل النماذج",
|
|
701
|
+
'formdesigner.add': "إضافة",
|
|
702
|
+
'formdesigner.edit_row': "تعديل",
|
|
703
|
+
'formdesigner.rows': "صفوف {form}",
|
|
704
|
+
'formdesigner.save': "حفظ",
|
|
705
|
+
'formdesigner.delete': "حذف",
|
|
706
|
+
'formdesigner.delete_confirm': "حذف هذا الصف؟",
|
|
707
|
+
'formdesigner.cancel': "إلغاء",
|
|
708
|
+
'formdesigner.saved_row': "تم الحفظ.",
|
|
709
|
+
'formdesigner.deleted_row': "تم الحذف.",
|
|
710
|
+
'formdesigner.required': "الحقل {field} مطلوب.",
|
|
711
|
+
'formdesigner.not_in_list': "{field}: اختر قيمة من القائمة.",
|
|
712
|
+
'formdesigner.changed': "غيّر شخص آخر هذا الصف في هذه الأثناء. راجعه واحفظ مرة أخرى.",
|
|
713
|
+
'formdesigner.row_not_found': "هذا الصف غير موجود، أو لا يُسمح لك برؤيته.",
|
|
714
|
+
'formdesigner.not_allowed': "لا يُسمح لك بفعل ذلك بهذا الصف.",
|
|
715
|
+
'formdesigner.form_not_found': "هذا النموذج غير موجود (بعد الآن).",
|
|
716
|
+
'formdesigner.unknown_source': "لم يعد جدول هذا النموذج معروضًا.",
|
|
717
|
+
'formdesigner.nothing': "لا يحتوي هذا النموذج على حقول بعد.",
|
|
718
|
+
'formdesigner.choose': "- اختر -",
|
|
719
|
+
'formdesigner.name': "الاسم",
|
|
720
|
+
'formdesigner.description': "الوصف",
|
|
721
|
+
'formdesigner.published': "منشور: يمكن لكل من يرى هذه الصفحة استخدام النموذج",
|
|
722
|
+
'formdesigner.fields': "الحقول",
|
|
723
|
+
'formdesigner.field_on': "في النموذج",
|
|
724
|
+
'formdesigner.column': "العمود",
|
|
725
|
+
'formdesigner.key': "مفتاح",
|
|
726
|
+
'formdesigner.order': "الترتيب",
|
|
727
|
+
'formdesigner.label': "التسمية",
|
|
728
|
+
'formdesigner.help': "نص المساعدة",
|
|
729
|
+
'formdesigner.required_short': "مطلوب",
|
|
730
|
+
'formdesigner.display': "العرض",
|
|
731
|
+
'formdesigner.default': "الافتراضي",
|
|
732
|
+
'formdesigner.in_list': "في القائمة",
|
|
733
|
+
'formdesigner.display_auto': "حقل",
|
|
734
|
+
'formdesigner.display_textarea': "منطقة نص",
|
|
735
|
+
'formdesigner.display_select': "قائمة اختيار",
|
|
736
|
+
'formdesigner.display_radio': "مجموعة خيارات",
|
|
737
|
+
'formdesigner.actions': "يمكن للمستخدمين",
|
|
738
|
+
'formdesigner.allow_insert': "إضافة صفوف",
|
|
739
|
+
'formdesigner.allow_update': "تغيير صفوف",
|
|
740
|
+
'formdesigner.allow_delete': "حذف صفوف",
|
|
741
|
+
'formdesigner.list_help': "تعرض قائمة الصفوف الأعمدة المحددة «في القائمة»؛ وبدونها يضيف النموذج صفوفًا فقط.",
|
|
742
|
+
'formdesigner.save_form': "حفظ النموذج",
|
|
743
|
+
'formdesigner.delete_form': "حذف النموذج",
|
|
744
|
+
'formdesigner.delete_form_confirm': "حذف النموذج «{name}»؟ تبقى الصفوف التي حفظها.",
|
|
745
|
+
'formdesigner.form_saved': "تم حفظ النموذج «{name}».",
|
|
746
|
+
'formdesigner.form_deleted': "تم حذف النموذج.",
|
|
747
|
+
'formdesigner.name_required': "أعطِ النموذج اسمًا.",
|
|
748
|
+
'formdesigner.no_fields': "ضع عمودًا واحدًا على الأقل في النموذج.",
|
|
749
|
+
'formdesigner.changed_by': "غيّره {user} في {date}",
|
|
688
750
|
// AI assistant region and natural-language report filters (assistant.ts, ai-filter.ts)
|
|
689
751
|
'assistant.conversation': "المحادثة",
|
|
690
752
|
'assistant.you': "أنت",
|
package/src/i18n/cs.ts
CHANGED
|
@@ -63,6 +63,7 @@ export const cs: Record<MessageKey, string> = {
|
|
|
63
63
|
'common.back': "Zpět",
|
|
64
64
|
'common.home': "Na úvodní stránku",
|
|
65
65
|
'common.skip': "Přejít na obsah",
|
|
66
|
+
'common.back_to_top': "Zpět nahoru",
|
|
66
67
|
'common.toggle_nav': "Zobrazit nebo skrýt navigaci",
|
|
67
68
|
'common.dismiss': "Zavřít",
|
|
68
69
|
// messages and errors
|
|
@@ -390,6 +391,9 @@ export const cs: Record<MessageKey, string> = {
|
|
|
390
391
|
'facets.stars_up': "{n} hvězdičky a více",
|
|
391
392
|
'facets.star_up': "1 hvězdička a více",
|
|
392
393
|
'facets.clear_short': "Vymazat",
|
|
394
|
+
'facets.menu': "Možnosti: {facet}",
|
|
395
|
+
'facets.sort_count': "Seřadit podle počtu",
|
|
396
|
+
'facets.sort_name': "Seřadit podle názvu",
|
|
393
397
|
'facets.show_all': "Zobrazit vše ({n})",
|
|
394
398
|
'facets.total': "Celkový počet řádků {n}",
|
|
395
399
|
'smart.placeholder': "Hledat nebo filtrovat…",
|
|
@@ -685,6 +689,64 @@ export const cs: Record<MessageKey, string> = {
|
|
|
685
689
|
'reporter.changed': "změněno {date}",
|
|
686
690
|
'reporter.no_match': "Hledání neodpovídá žádná sestava.",
|
|
687
691
|
'reporter.chart_tag': "graf",
|
|
692
|
+
// Form Designer (form-designer.ts)
|
|
693
|
+
'formdesigner.no_sources': "Pro tuto oblast zatím nejsou nastaveny žádné tabulky.",
|
|
694
|
+
'formdesigner.no_forms': "Zatím nejsou žádné formuláře.",
|
|
695
|
+
'formdesigner.new': "Nový formulář",
|
|
696
|
+
'formdesigner.create': "Navrhnout",
|
|
697
|
+
'formdesigner.draft': "Koncept",
|
|
698
|
+
'formdesigner.design': "Navrhnout formulář",
|
|
699
|
+
'formdesigner.design_of': "Návrh: {name}",
|
|
700
|
+
'formdesigner.back': "Všechny formuláře",
|
|
701
|
+
'formdesigner.add': "Přidat",
|
|
702
|
+
'formdesigner.edit_row': "Upravit",
|
|
703
|
+
'formdesigner.rows': "Řádky: {form}",
|
|
704
|
+
'formdesigner.save': "Uložit",
|
|
705
|
+
'formdesigner.delete': "Smazat",
|
|
706
|
+
'formdesigner.delete_confirm': "Smazat tento řádek?",
|
|
707
|
+
'formdesigner.cancel': "Zrušit",
|
|
708
|
+
'formdesigner.saved_row': "Uloženo.",
|
|
709
|
+
'formdesigner.deleted_row': "Smazáno.",
|
|
710
|
+
'formdesigner.required': "{field} je povinné.",
|
|
711
|
+
'formdesigner.not_in_list': "{field}: vyberte hodnotu ze seznamu.",
|
|
712
|
+
'formdesigner.changed': "Někdo jiný mezitím tento řádek změnil. Zkontrolujte ho a uložte znovu.",
|
|
713
|
+
'formdesigner.row_not_found': "Tento řádek neexistuje, nebo ho nesmíte vidět.",
|
|
714
|
+
'formdesigner.not_allowed': "To s tímto řádkem dělat nesmíte.",
|
|
715
|
+
'formdesigner.form_not_found': "Tento formulář neexistuje (už).",
|
|
716
|
+
'formdesigner.unknown_source': "Tabulka tohoto formuláře se už nenabízí.",
|
|
717
|
+
'formdesigner.nothing': "Tento formulář zatím nemá žádná pole.",
|
|
718
|
+
'formdesigner.choose': "- Vyberte -",
|
|
719
|
+
'formdesigner.name': "Název",
|
|
720
|
+
'formdesigner.description': "Popis",
|
|
721
|
+
'formdesigner.published': "Zveřejněno: formulář může používat každý, kdo vidí tuto stránku",
|
|
722
|
+
'formdesigner.fields': "Pole",
|
|
723
|
+
'formdesigner.field_on': "Ve formuláři",
|
|
724
|
+
'formdesigner.column': "Sloupec",
|
|
725
|
+
'formdesigner.key': "klíč",
|
|
726
|
+
'formdesigner.order': "Pořadí",
|
|
727
|
+
'formdesigner.label': "Popisek",
|
|
728
|
+
'formdesigner.help': "Nápověda",
|
|
729
|
+
'formdesigner.required_short': "Povinné",
|
|
730
|
+
'formdesigner.display': "Zobrazení",
|
|
731
|
+
'formdesigner.default': "Výchozí",
|
|
732
|
+
'formdesigner.in_list': "V seznamu",
|
|
733
|
+
'formdesigner.display_auto': "Pole",
|
|
734
|
+
'formdesigner.display_textarea': "Textová oblast",
|
|
735
|
+
'formdesigner.display_select': "Výběrový seznam",
|
|
736
|
+
'formdesigner.display_radio': "Přepínače",
|
|
737
|
+
'formdesigner.actions': "Uživatelé smějí",
|
|
738
|
+
'formdesigner.allow_insert': "přidávat řádky",
|
|
739
|
+
'formdesigner.allow_update': "měnit řádky",
|
|
740
|
+
'formdesigner.allow_delete': "mazat řádky",
|
|
741
|
+
'formdesigner.list_help': "Seznam řádků ukazuje sloupce zaškrtnuté „V seznamu“; bez nich formulář jen přidává řádky.",
|
|
742
|
+
'formdesigner.save_form': "Uložit formulář",
|
|
743
|
+
'formdesigner.delete_form': "Smazat formulář",
|
|
744
|
+
'formdesigner.delete_form_confirm': "Smazat formulář „{name}“? Řádky jím uložené zůstanou.",
|
|
745
|
+
'formdesigner.form_saved': "Formulář „{name}“ uložen.",
|
|
746
|
+
'formdesigner.form_deleted': "Formulář smazán.",
|
|
747
|
+
'formdesigner.name_required': "Pojmenujte formulář.",
|
|
748
|
+
'formdesigner.no_fields': "Dejte do formuláře alespoň jeden sloupec.",
|
|
749
|
+
'formdesigner.changed_by': "změnil(a) {user} dne {date}",
|
|
688
750
|
// AI assistant region and natural-language report filters (assistant.ts, ai-filter.ts)
|
|
689
751
|
'assistant.conversation': "Konverzace",
|
|
690
752
|
'assistant.you': "Vy",
|
package/src/i18n/da.ts
CHANGED
|
@@ -63,6 +63,7 @@ export const da: Record<MessageKey, string> = {
|
|
|
63
63
|
'common.back': "Tilbage",
|
|
64
64
|
'common.home': "Gå til forsiden",
|
|
65
65
|
'common.skip': "Gå til indholdet",
|
|
66
|
+
'common.back_to_top': "Til toppen",
|
|
66
67
|
'common.toggle_nav': "Vis eller skjul navigationen",
|
|
67
68
|
'common.dismiss': "Luk",
|
|
68
69
|
// messages and errors
|
|
@@ -390,6 +391,9 @@ export const da: Record<MessageKey, string> = {
|
|
|
390
391
|
'facets.stars_up': "{n} stjerner og op",
|
|
391
392
|
'facets.star_up': "1 stjerne og op",
|
|
392
393
|
'facets.clear_short': "Ryd",
|
|
394
|
+
'facets.menu': "Indstillinger for {facet}",
|
|
395
|
+
'facets.sort_count': "Sortér efter antal",
|
|
396
|
+
'facets.sort_name': "Sortér efter navn",
|
|
393
397
|
'facets.show_all': "Vis alle ({n})",
|
|
394
398
|
'facets.total': "Antal rækker i alt {n}",
|
|
395
399
|
'smart.placeholder': "Søg eller filtrér…",
|
|
@@ -685,6 +689,64 @@ export const da: Record<MessageKey, string> = {
|
|
|
685
689
|
'reporter.changed': "ændret {date}",
|
|
686
690
|
'reporter.no_match': "Ingen rapporter matcher søgningen.",
|
|
687
691
|
'reporter.chart_tag': "diagram",
|
|
692
|
+
// Form Designer (form-designer.ts)
|
|
693
|
+
'formdesigner.no_sources': "Der er endnu ikke sat tabeller op for denne region.",
|
|
694
|
+
'formdesigner.no_forms': "Der er endnu ingen formularer.",
|
|
695
|
+
'formdesigner.new': "Ny formular",
|
|
696
|
+
'formdesigner.create': "Design",
|
|
697
|
+
'formdesigner.draft': "Kladde",
|
|
698
|
+
'formdesigner.design': "Design formular",
|
|
699
|
+
'formdesigner.design_of': "Design af {name}",
|
|
700
|
+
'formdesigner.back': "Alle formularer",
|
|
701
|
+
'formdesigner.add': "Tilføj",
|
|
702
|
+
'formdesigner.edit_row': "Rediger",
|
|
703
|
+
'formdesigner.rows': "Rækker i {form}",
|
|
704
|
+
'formdesigner.save': "Gem",
|
|
705
|
+
'formdesigner.delete': "Slet",
|
|
706
|
+
'formdesigner.delete_confirm': "Slet denne række?",
|
|
707
|
+
'formdesigner.cancel': "Annuller",
|
|
708
|
+
'formdesigner.saved_row': "Gemt.",
|
|
709
|
+
'formdesigner.deleted_row': "Slettet.",
|
|
710
|
+
'formdesigner.required': "{field} er påkrævet.",
|
|
711
|
+
'formdesigner.not_in_list': "{field}: vælg en værdi fra listen.",
|
|
712
|
+
'formdesigner.changed': "En anden har ændret denne række i mellemtiden. Kontrollér den, og gem igen.",
|
|
713
|
+
'formdesigner.row_not_found': "Denne række findes ikke, eller du må ikke se den.",
|
|
714
|
+
'formdesigner.not_allowed': "Det må du ikke gøre med denne række.",
|
|
715
|
+
'formdesigner.form_not_found': "Denne formular findes ikke (længere).",
|
|
716
|
+
'formdesigner.unknown_source': "Denne formulars tabel tilbydes ikke længere.",
|
|
717
|
+
'formdesigner.nothing': "Denne formular har endnu ingen felter.",
|
|
718
|
+
'formdesigner.choose': "- Vælg -",
|
|
719
|
+
'formdesigner.name': "Navn",
|
|
720
|
+
'formdesigner.description': "Beskrivelse",
|
|
721
|
+
'formdesigner.published': "Udgivet: alle, der kan se denne side, må bruge formularen",
|
|
722
|
+
'formdesigner.fields': "Felter",
|
|
723
|
+
'formdesigner.field_on': "På formularen",
|
|
724
|
+
'formdesigner.column': "Kolonne",
|
|
725
|
+
'formdesigner.key': "nøgle",
|
|
726
|
+
'formdesigner.order': "Rækkefølge",
|
|
727
|
+
'formdesigner.label': "Etiket",
|
|
728
|
+
'formdesigner.help': "Hjælpetekst",
|
|
729
|
+
'formdesigner.required_short': "Påkrævet",
|
|
730
|
+
'formdesigner.display': "Visning",
|
|
731
|
+
'formdesigner.default': "Standard",
|
|
732
|
+
'formdesigner.in_list': "I listen",
|
|
733
|
+
'formdesigner.display_auto': "Felt",
|
|
734
|
+
'formdesigner.display_textarea': "Tekstområde",
|
|
735
|
+
'formdesigner.display_select': "Valgliste",
|
|
736
|
+
'formdesigner.display_radio': "Radioknapper",
|
|
737
|
+
'formdesigner.actions': "Brugere må",
|
|
738
|
+
'formdesigner.allow_insert': "tilføje rækker",
|
|
739
|
+
'formdesigner.allow_update': "ændre rækker",
|
|
740
|
+
'formdesigner.allow_delete': "slette rækker",
|
|
741
|
+
'formdesigner.list_help': "Listen over rækker viser kolonnerne med flueben i \"I listen\"; uden nogen tilføjer formularen kun rækker.",
|
|
742
|
+
'formdesigner.save_form': "Gem formular",
|
|
743
|
+
'formdesigner.delete_form': "Slet formular",
|
|
744
|
+
'formdesigner.delete_form_confirm': "Slet formularen \"{name}\"? Rækkerne, den har gemt, bliver.",
|
|
745
|
+
'formdesigner.form_saved': "Formularen \"{name}\" er gemt.",
|
|
746
|
+
'formdesigner.form_deleted': "Formularen er slettet.",
|
|
747
|
+
'formdesigner.name_required': "Giv formularen et navn.",
|
|
748
|
+
'formdesigner.no_fields': "Sæt mindst én kolonne på formularen.",
|
|
749
|
+
'formdesigner.changed_by': "ændret af {user} den {date}",
|
|
688
750
|
// AI assistant region and natural-language report filters (assistant.ts, ai-filter.ts)
|
|
689
751
|
'assistant.conversation': "Samtale",
|
|
690
752
|
'assistant.you': "Dig",
|
package/src/i18n/de.ts
CHANGED
|
@@ -63,6 +63,7 @@ export const de: Record<MessageKey, string> = {
|
|
|
63
63
|
'common.back': 'Zurück',
|
|
64
64
|
'common.home': 'Zur Startseite',
|
|
65
65
|
'common.skip': 'Zum Inhalt springen',
|
|
66
|
+
'common.back_to_top': "Nach oben",
|
|
66
67
|
'common.toggle_nav': 'Navigation ein-/ausblenden',
|
|
67
68
|
'common.dismiss': 'Schließen',
|
|
68
69
|
// messages and errors
|
|
@@ -390,6 +391,9 @@ export const de: Record<MessageKey, string> = {
|
|
|
390
391
|
'facets.stars_up': '{n} Sterne und mehr',
|
|
391
392
|
'facets.star_up': '1 Stern und mehr',
|
|
392
393
|
'facets.clear_short': 'Löschen',
|
|
394
|
+
'facets.menu': 'Optionen für {facet}',
|
|
395
|
+
'facets.sort_count': 'Nach Anzahl sortieren',
|
|
396
|
+
'facets.sort_name': 'Nach Name sortieren',
|
|
393
397
|
'facets.show_all': 'Alle anzeigen ({n})',
|
|
394
398
|
'facets.total': 'Zeilen insgesamt {n}',
|
|
395
399
|
'smart.placeholder': 'Suchen oder filtern…',
|
|
@@ -685,6 +689,64 @@ export const de: Record<MessageKey, string> = {
|
|
|
685
689
|
'reporter.changed': "geändert {date}",
|
|
686
690
|
'reporter.no_match': "Keine Berichte gefunden.",
|
|
687
691
|
'reporter.chart_tag': "Diagramm",
|
|
692
|
+
// Form Designer (form-designer.ts)
|
|
693
|
+
'formdesigner.no_sources': "Für diese Region sind noch keine Tabellen eingerichtet.",
|
|
694
|
+
'formdesigner.no_forms': "Es gibt noch keine Formulare.",
|
|
695
|
+
'formdesigner.new': "Neues Formular",
|
|
696
|
+
'formdesigner.create': "Entwerfen",
|
|
697
|
+
'formdesigner.draft': "Entwurf",
|
|
698
|
+
'formdesigner.design': "Formular entwerfen",
|
|
699
|
+
'formdesigner.design_of': "Entwurf von {name}",
|
|
700
|
+
'formdesigner.back': "Alle Formulare",
|
|
701
|
+
'formdesigner.add': "Hinzufügen",
|
|
702
|
+
'formdesigner.edit_row': "Bearbeiten",
|
|
703
|
+
'formdesigner.rows': "Zeilen von {form}",
|
|
704
|
+
'formdesigner.save': "Speichern",
|
|
705
|
+
'formdesigner.delete': "Löschen",
|
|
706
|
+
'formdesigner.delete_confirm': "Diese Zeile löschen?",
|
|
707
|
+
'formdesigner.cancel': "Abbrechen",
|
|
708
|
+
'formdesigner.saved_row': "Gespeichert.",
|
|
709
|
+
'formdesigner.deleted_row': "Gelöscht.",
|
|
710
|
+
'formdesigner.required': "{field} ist erforderlich.",
|
|
711
|
+
'formdesigner.not_in_list': "{field}: Wählen Sie einen Wert aus der Liste.",
|
|
712
|
+
'formdesigner.changed': "Jemand anderes hat diese Zeile inzwischen geändert. Prüfen Sie sie und speichern Sie erneut.",
|
|
713
|
+
'formdesigner.row_not_found': "Diese Zeile gibt es nicht, oder Sie dürfen sie nicht sehen.",
|
|
714
|
+
'formdesigner.not_allowed': "Das dürfen Sie mit dieser Zeile nicht tun.",
|
|
715
|
+
'formdesigner.form_not_found': "Dieses Formular gibt es nicht (mehr).",
|
|
716
|
+
'formdesigner.unknown_source': "Die Tabelle dieses Formulars wird nicht mehr angeboten.",
|
|
717
|
+
'formdesigner.nothing': "Dieses Formular hat noch keine Felder.",
|
|
718
|
+
'formdesigner.choose': "- Auswählen -",
|
|
719
|
+
'formdesigner.name': "Name",
|
|
720
|
+
'formdesigner.description': "Beschreibung",
|
|
721
|
+
'formdesigner.published': "Veröffentlicht: Alle, die diese Seite sehen, dürfen das Formular verwenden",
|
|
722
|
+
'formdesigner.fields': "Felder",
|
|
723
|
+
'formdesigner.field_on': "Im Formular",
|
|
724
|
+
'formdesigner.column': "Spalte",
|
|
725
|
+
'formdesigner.key': "Schlüssel",
|
|
726
|
+
'formdesigner.order': "Reihenfolge",
|
|
727
|
+
'formdesigner.label': "Bezeichnung",
|
|
728
|
+
'formdesigner.help': "Hilfetext",
|
|
729
|
+
'formdesigner.required_short': "Erforderlich",
|
|
730
|
+
'formdesigner.display': "Anzeige",
|
|
731
|
+
'formdesigner.default': "Standardwert",
|
|
732
|
+
'formdesigner.in_list': "In der Liste",
|
|
733
|
+
'formdesigner.display_auto': "Feld",
|
|
734
|
+
'formdesigner.display_textarea': "Textbereich",
|
|
735
|
+
'formdesigner.display_select': "Auswahlliste",
|
|
736
|
+
'formdesigner.display_radio': "Optionsgruppe",
|
|
737
|
+
'formdesigner.actions': "Benutzer dürfen",
|
|
738
|
+
'formdesigner.allow_insert': "Zeilen hinzufügen",
|
|
739
|
+
'formdesigner.allow_update': "Zeilen ändern",
|
|
740
|
+
'formdesigner.allow_delete': "Zeilen löschen",
|
|
741
|
+
'formdesigner.list_help': "Die Zeilenliste zeigt die bei „In der Liste“ angekreuzten Spalten; ohne solche fügt das Formular nur Zeilen hinzu.",
|
|
742
|
+
'formdesigner.save_form': "Formular speichern",
|
|
743
|
+
'formdesigner.delete_form': "Formular löschen",
|
|
744
|
+
'formdesigner.delete_form_confirm': "Das Formular „{name}“ löschen? Die damit gespeicherten Zeilen bleiben.",
|
|
745
|
+
'formdesigner.form_saved': "Formular „{name}“ gespeichert.",
|
|
746
|
+
'formdesigner.form_deleted': "Formular gelöscht.",
|
|
747
|
+
'formdesigner.name_required': "Geben Sie dem Formular einen Namen.",
|
|
748
|
+
'formdesigner.no_fields': "Setzen Sie mindestens eine Spalte in das Formular.",
|
|
749
|
+
'formdesigner.changed_by': "geändert von {user} am {date}",
|
|
688
750
|
// AI assistant region and natural-language report filters (assistant.ts, ai-filter.ts)
|
|
689
751
|
'assistant.conversation': "Unterhaltung",
|
|
690
752
|
'assistant.you': "Sie",
|
package/src/i18n/el.ts
CHANGED
|
@@ -63,6 +63,7 @@ export const el: Record<MessageKey, string> = {
|
|
|
63
63
|
'common.back': "Επιστροφή",
|
|
64
64
|
'common.home': "Μετάβαση στην αρχική σελίδα",
|
|
65
65
|
'common.skip': "Μετάβαση στο περιεχόμενο",
|
|
66
|
+
'common.back_to_top': "Επιστροφή στην αρχή",
|
|
66
67
|
'common.toggle_nav': "Εμφάνιση ή απόκρυψη πλοήγησης",
|
|
67
68
|
'common.dismiss': "Κλείσιμο",
|
|
68
69
|
// messages and errors
|
|
@@ -390,6 +391,9 @@ export const el: Record<MessageKey, string> = {
|
|
|
390
391
|
'facets.stars_up': "{n} αστέρια και πάνω",
|
|
391
392
|
'facets.star_up': "1 αστέρι και πάνω",
|
|
392
393
|
'facets.clear_short': "Απαλοιφή",
|
|
394
|
+
'facets.menu': "Επιλογές για {facet}",
|
|
395
|
+
'facets.sort_count': "Ταξινόμηση κατά πλήθος",
|
|
396
|
+
'facets.sort_name': "Ταξινόμηση κατά όνομα",
|
|
393
397
|
'facets.show_all': "Εμφάνιση όλων ({n})",
|
|
394
398
|
'facets.total': "Συνολικός αριθμός γραμμών {n}",
|
|
395
399
|
'smart.placeholder': "Αναζήτηση ή φιλτράρισμα…",
|
|
@@ -685,6 +689,64 @@ export const el: Record<MessageKey, string> = {
|
|
|
685
689
|
'reporter.changed': "άλλαξε {date}",
|
|
686
690
|
'reporter.no_match': "Καμία αναφορά δεν ταιριάζει με την αναζήτηση.",
|
|
687
691
|
'reporter.chart_tag': "γράφημα",
|
|
692
|
+
// Form Designer (form-designer.ts)
|
|
693
|
+
'formdesigner.no_sources': "Δεν έχουν οριστεί ακόμη πίνακες για αυτή την περιοχή.",
|
|
694
|
+
'formdesigner.no_forms': "Δεν υπάρχουν ακόμη φόρμες.",
|
|
695
|
+
'formdesigner.new': "Νέα φόρμα",
|
|
696
|
+
'formdesigner.create': "Σχεδίαση",
|
|
697
|
+
'formdesigner.draft': "Πρόχειρο",
|
|
698
|
+
'formdesigner.design': "Σχεδίαση φόρμας",
|
|
699
|
+
'formdesigner.design_of': "Σχεδίαση: {name}",
|
|
700
|
+
'formdesigner.back': "Όλες οι φόρμες",
|
|
701
|
+
'formdesigner.add': "Προσθήκη",
|
|
702
|
+
'formdesigner.edit_row': "Επεξεργασία",
|
|
703
|
+
'formdesigner.rows': "Γραμμές: {form}",
|
|
704
|
+
'formdesigner.save': "Αποθήκευση",
|
|
705
|
+
'formdesigner.delete': "Διαγραφή",
|
|
706
|
+
'formdesigner.delete_confirm': "Διαγραφή αυτής της γραμμής;",
|
|
707
|
+
'formdesigner.cancel': "Ακύρωση",
|
|
708
|
+
'formdesigner.saved_row': "Αποθηκεύτηκε.",
|
|
709
|
+
'formdesigner.deleted_row': "Διαγράφηκε.",
|
|
710
|
+
'formdesigner.required': "Το πεδίο {field} είναι υποχρεωτικό.",
|
|
711
|
+
'formdesigner.not_in_list': "{field}: επιλέξτε μια τιμή από τη λίστα.",
|
|
712
|
+
'formdesigner.changed': "Κάποιος άλλος άλλαξε αυτή τη γραμμή στο μεταξύ. Ελέγξτε την και αποθηκεύστε ξανά.",
|
|
713
|
+
'formdesigner.row_not_found': "Αυτή η γραμμή δεν υπάρχει ή δεν επιτρέπεται να τη δείτε.",
|
|
714
|
+
'formdesigner.not_allowed': "Δεν επιτρέπεται να το κάνετε αυτό σε αυτή τη γραμμή.",
|
|
715
|
+
'formdesigner.form_not_found': "Αυτή η φόρμα δεν υπάρχει (πια).",
|
|
716
|
+
'formdesigner.unknown_source': "Ο πίνακας αυτής της φόρμας δεν προσφέρεται πια.",
|
|
717
|
+
'formdesigner.nothing': "Αυτή η φόρμα δεν έχει ακόμη πεδία.",
|
|
718
|
+
'formdesigner.choose': "- Επιλέξτε -",
|
|
719
|
+
'formdesigner.name': "Όνομα",
|
|
720
|
+
'formdesigner.description': "Περιγραφή",
|
|
721
|
+
'formdesigner.published': "Δημοσιευμένη: όποιος βλέπει αυτή τη σελίδα μπορεί να χρησιμοποιήσει τη φόρμα",
|
|
722
|
+
'formdesigner.fields': "Πεδία",
|
|
723
|
+
'formdesigner.field_on': "Στη φόρμα",
|
|
724
|
+
'formdesigner.column': "Στήλη",
|
|
725
|
+
'formdesigner.key': "κλειδί",
|
|
726
|
+
'formdesigner.order': "Σειρά",
|
|
727
|
+
'formdesigner.label': "Ετικέτα",
|
|
728
|
+
'formdesigner.help': "Κείμενο βοήθειας",
|
|
729
|
+
'formdesigner.required_short': "Υποχρεωτικό",
|
|
730
|
+
'formdesigner.display': "Εμφάνιση",
|
|
731
|
+
'formdesigner.default': "Προεπιλογή",
|
|
732
|
+
'formdesigner.in_list': "Στη λίστα",
|
|
733
|
+
'formdesigner.display_auto': "Πεδίο",
|
|
734
|
+
'formdesigner.display_textarea': "Περιοχή κειμένου",
|
|
735
|
+
'formdesigner.display_select': "Λίστα επιλογής",
|
|
736
|
+
'formdesigner.display_radio': "Ομάδα επιλογών",
|
|
737
|
+
'formdesigner.actions': "Οι χρήστες μπορούν να",
|
|
738
|
+
'formdesigner.allow_insert': "προσθέτουν γραμμές",
|
|
739
|
+
'formdesigner.allow_update': "αλλάζουν γραμμές",
|
|
740
|
+
'formdesigner.allow_delete': "διαγράφουν γραμμές",
|
|
741
|
+
'formdesigner.list_help': "Η λίστα γραμμών δείχνει τις στήλες με σημάδι «Στη λίστα»· χωρίς καμία, η φόρμα μόνο προσθέτει γραμμές.",
|
|
742
|
+
'formdesigner.save_form': "Αποθήκευση φόρμας",
|
|
743
|
+
'formdesigner.delete_form': "Διαγραφή φόρμας",
|
|
744
|
+
'formdesigner.delete_form_confirm': "Διαγραφή της φόρμας «{name}»; Οι γραμμές που αποθήκευσε μένουν.",
|
|
745
|
+
'formdesigner.form_saved': "Η φόρμα «{name}» αποθηκεύτηκε.",
|
|
746
|
+
'formdesigner.form_deleted': "Η φόρμα διαγράφηκε.",
|
|
747
|
+
'formdesigner.name_required': "Δώστε όνομα στη φόρμα.",
|
|
748
|
+
'formdesigner.no_fields': "Βάλτε τουλάχιστον μία στήλη στη φόρμα.",
|
|
749
|
+
'formdesigner.changed_by': "άλλαξε από {user} στις {date}",
|
|
688
750
|
// AI assistant region and natural-language report filters (assistant.ts, ai-filter.ts)
|
|
689
751
|
'assistant.conversation': "Συνομιλία",
|
|
690
752
|
'assistant.you': "Εσείς",
|
package/src/i18n/es.ts
CHANGED
|
@@ -63,6 +63,7 @@ export const es: Record<MessageKey, string> = {
|
|
|
63
63
|
'common.back': 'Volver',
|
|
64
64
|
'common.home': 'Ir a la página de inicio',
|
|
65
65
|
'common.skip': 'Saltar al contenido',
|
|
66
|
+
'common.back_to_top': "Volver arriba",
|
|
66
67
|
'common.toggle_nav': 'Mostrar u ocultar la navegación',
|
|
67
68
|
'common.dismiss': 'Descartar',
|
|
68
69
|
// messages and errors
|
|
@@ -390,6 +391,9 @@ export const es: Record<MessageKey, string> = {
|
|
|
390
391
|
'facets.stars_up': '{n} estrellas o más',
|
|
391
392
|
'facets.star_up': '1 estrella o más',
|
|
392
393
|
'facets.clear_short': 'Borrar',
|
|
394
|
+
'facets.menu': 'Opciones de {facet}',
|
|
395
|
+
'facets.sort_count': 'Ordenar por cantidad',
|
|
396
|
+
'facets.sort_name': 'Ordenar por nombre',
|
|
393
397
|
'facets.show_all': 'Mostrar todo ({n})',
|
|
394
398
|
'facets.total': 'Total de filas {n}',
|
|
395
399
|
'smart.placeholder': 'Buscar o filtrar…',
|
|
@@ -685,6 +689,64 @@ export const es: Record<MessageKey, string> = {
|
|
|
685
689
|
'reporter.changed': "modificado el {date}",
|
|
686
690
|
'reporter.no_match': "Ningún informe coincide con la búsqueda.",
|
|
687
691
|
'reporter.chart_tag': "gráfico",
|
|
692
|
+
// Form Designer (form-designer.ts)
|
|
693
|
+
'formdesigner.no_sources': "Todavía no hay tablas configuradas para esta región.",
|
|
694
|
+
'formdesigner.no_forms': "Todavía no hay formularios.",
|
|
695
|
+
'formdesigner.new': "Nuevo formulario",
|
|
696
|
+
'formdesigner.create': "Diseñar",
|
|
697
|
+
'formdesigner.draft': "Borrador",
|
|
698
|
+
'formdesigner.design': "Diseñar formulario",
|
|
699
|
+
'formdesigner.design_of': "Diseño de {name}",
|
|
700
|
+
'formdesigner.back': "Todos los formularios",
|
|
701
|
+
'formdesigner.add': "Añadir",
|
|
702
|
+
'formdesigner.edit_row': "Editar",
|
|
703
|
+
'formdesigner.rows': "Filas de {form}",
|
|
704
|
+
'formdesigner.save': "Guardar",
|
|
705
|
+
'formdesigner.delete': "Eliminar",
|
|
706
|
+
'formdesigner.delete_confirm': "¿Eliminar esta fila?",
|
|
707
|
+
'formdesigner.cancel': "Cancelar",
|
|
708
|
+
'formdesigner.saved_row': "Guardado.",
|
|
709
|
+
'formdesigner.deleted_row': "Eliminado.",
|
|
710
|
+
'formdesigner.required': "{field} es obligatorio.",
|
|
711
|
+
'formdesigner.not_in_list': "{field}: elija un valor de la lista.",
|
|
712
|
+
'formdesigner.changed': "Otra persona ha cambiado esta fila mientras tanto. Revísela y guarde de nuevo.",
|
|
713
|
+
'formdesigner.row_not_found': "Esta fila no existe, o no puede verla.",
|
|
714
|
+
'formdesigner.not_allowed': "No puede hacer eso con esta fila.",
|
|
715
|
+
'formdesigner.form_not_found': "Este formulario no existe (ya).",
|
|
716
|
+
'formdesigner.unknown_source': "La tabla de este formulario ya no se ofrece.",
|
|
717
|
+
'formdesigner.nothing': "Este formulario todavía no tiene campos.",
|
|
718
|
+
'formdesigner.choose': "- Elegir -",
|
|
719
|
+
'formdesigner.name': "Nombre",
|
|
720
|
+
'formdesigner.description': "Descripción",
|
|
721
|
+
'formdesigner.published': "Publicado: cualquiera que vea esta página puede usar el formulario",
|
|
722
|
+
'formdesigner.fields': "Campos",
|
|
723
|
+
'formdesigner.field_on': "En el formulario",
|
|
724
|
+
'formdesigner.column': "Columna",
|
|
725
|
+
'formdesigner.key': "clave",
|
|
726
|
+
'formdesigner.order': "Orden",
|
|
727
|
+
'formdesigner.label': "Etiqueta",
|
|
728
|
+
'formdesigner.help': "Texto de ayuda",
|
|
729
|
+
'formdesigner.required_short': "Obligatorio",
|
|
730
|
+
'formdesigner.display': "Presentación",
|
|
731
|
+
'formdesigner.default': "Valor por defecto",
|
|
732
|
+
'formdesigner.in_list': "En la lista",
|
|
733
|
+
'formdesigner.display_auto': "Campo",
|
|
734
|
+
'formdesigner.display_textarea': "Área de texto",
|
|
735
|
+
'formdesigner.display_select': "Lista de selección",
|
|
736
|
+
'formdesigner.display_radio': "Grupo de opciones",
|
|
737
|
+
'formdesigner.actions': "Los usuarios pueden",
|
|
738
|
+
'formdesigner.allow_insert': "añadir filas",
|
|
739
|
+
'formdesigner.allow_update': "cambiar filas",
|
|
740
|
+
'formdesigner.allow_delete': "eliminar filas",
|
|
741
|
+
'formdesigner.list_help': "La lista de filas muestra las columnas marcadas «En la lista»; sin ninguna, el formulario solo añade filas.",
|
|
742
|
+
'formdesigner.save_form': "Guardar formulario",
|
|
743
|
+
'formdesigner.delete_form': "Eliminar formulario",
|
|
744
|
+
'formdesigner.delete_form_confirm': "¿Eliminar el formulario «{name}»? Las filas guardadas se mantienen.",
|
|
745
|
+
'formdesigner.form_saved': "Formulario «{name}» guardado.",
|
|
746
|
+
'formdesigner.form_deleted': "Formulario eliminado.",
|
|
747
|
+
'formdesigner.name_required': "Dé un nombre al formulario.",
|
|
748
|
+
'formdesigner.no_fields': "Ponga al menos una columna en el formulario.",
|
|
749
|
+
'formdesigner.changed_by': "cambiado por {user} el {date}",
|
|
688
750
|
// AI assistant region and natural-language report filters (assistant.ts, ai-filter.ts)
|
|
689
751
|
'assistant.conversation': "Conversación",
|
|
690
752
|
'assistant.you': "Usted",
|
package/src/i18n/fi.ts
CHANGED
|
@@ -63,6 +63,7 @@ export const fi: Record<MessageKey, string> = {
|
|
|
63
63
|
'common.back': "Takaisin",
|
|
64
64
|
'common.home': "Siirry etusivulle",
|
|
65
65
|
'common.skip': "Siirry sisältöön",
|
|
66
|
+
'common.back_to_top': "Takaisin ylös",
|
|
66
67
|
'common.toggle_nav': "Näytä tai piilota navigointi",
|
|
67
68
|
'common.dismiss': "Sulje",
|
|
68
69
|
// messages and errors
|
|
@@ -390,6 +391,9 @@ export const fi: Record<MessageKey, string> = {
|
|
|
390
391
|
'facets.stars_up': "{n} tähteä tai enemmän",
|
|
391
392
|
'facets.star_up': "1 tähti tai enemmän",
|
|
392
393
|
'facets.clear_short': "Tyhjennä",
|
|
394
|
+
'facets.menu': "Asetukset: {facet}",
|
|
395
|
+
'facets.sort_count': "Lajittele määrän mukaan",
|
|
396
|
+
'facets.sort_name': "Lajittele nimen mukaan",
|
|
393
397
|
'facets.show_all': "Näytä kaikki ({n})",
|
|
394
398
|
'facets.total': "Rivejä yhteensä {n}",
|
|
395
399
|
'smart.placeholder': "Hae tai suodata…",
|
|
@@ -685,6 +689,64 @@ export const fi: Record<MessageKey, string> = {
|
|
|
685
689
|
'reporter.changed': "muutettu {date}",
|
|
686
690
|
'reporter.no_match': "Haulla ei löytynyt raportteja.",
|
|
687
691
|
'reporter.chart_tag': "kaavio",
|
|
692
|
+
// Form Designer (form-designer.ts)
|
|
693
|
+
'formdesigner.no_sources': "Tälle alueelle ei ole vielä määritetty tauluja.",
|
|
694
|
+
'formdesigner.no_forms': "Lomakkeita ei ole vielä.",
|
|
695
|
+
'formdesigner.new': "Uusi lomake",
|
|
696
|
+
'formdesigner.create': "Suunnittele",
|
|
697
|
+
'formdesigner.draft': "Luonnos",
|
|
698
|
+
'formdesigner.design': "Suunnittele lomake",
|
|
699
|
+
'formdesigner.design_of': "Lomakkeen {name} suunnittelu",
|
|
700
|
+
'formdesigner.back': "Kaikki lomakkeet",
|
|
701
|
+
'formdesigner.add': "Lisää",
|
|
702
|
+
'formdesigner.edit_row': "Muokkaa",
|
|
703
|
+
'formdesigner.rows': "Lomakkeen {form} rivit",
|
|
704
|
+
'formdesigner.save': "Tallenna",
|
|
705
|
+
'formdesigner.delete': "Poista",
|
|
706
|
+
'formdesigner.delete_confirm': "Poistetaanko tämä rivi?",
|
|
707
|
+
'formdesigner.cancel': "Peruuta",
|
|
708
|
+
'formdesigner.saved_row': "Tallennettu.",
|
|
709
|
+
'formdesigner.deleted_row': "Poistettu.",
|
|
710
|
+
'formdesigner.required': "{field} on pakollinen.",
|
|
711
|
+
'formdesigner.not_in_list': "{field}: valitse arvo luettelosta.",
|
|
712
|
+
'formdesigner.changed': "Joku muu on muuttanut tätä riviä sillä välin. Tarkista se ja tallenna uudelleen.",
|
|
713
|
+
'formdesigner.row_not_found': "Tätä riviä ei ole, tai et saa nähdä sitä.",
|
|
714
|
+
'formdesigner.not_allowed': "Et saa tehdä sitä tälle riville.",
|
|
715
|
+
'formdesigner.form_not_found': "Tätä lomaketta ei ole (enää).",
|
|
716
|
+
'formdesigner.unknown_source': "Tämän lomakkeen taulua ei enää tarjota.",
|
|
717
|
+
'formdesigner.nothing': "Tällä lomakkeella ei ole vielä kenttiä.",
|
|
718
|
+
'formdesigner.choose': "- Valitse -",
|
|
719
|
+
'formdesigner.name': "Nimi",
|
|
720
|
+
'formdesigner.description': "Kuvaus",
|
|
721
|
+
'formdesigner.published': "Julkaistu: kaikki, jotka näkevät tämän sivun, voivat käyttää lomaketta",
|
|
722
|
+
'formdesigner.fields': "Kentät",
|
|
723
|
+
'formdesigner.field_on': "Lomakkeella",
|
|
724
|
+
'formdesigner.column': "Sarake",
|
|
725
|
+
'formdesigner.key': "avain",
|
|
726
|
+
'formdesigner.order': "Järjestys",
|
|
727
|
+
'formdesigner.label': "Nimike",
|
|
728
|
+
'formdesigner.help': "Ohjeteksti",
|
|
729
|
+
'formdesigner.required_short': "Pakollinen",
|
|
730
|
+
'formdesigner.display': "Esitys",
|
|
731
|
+
'formdesigner.default': "Oletus",
|
|
732
|
+
'formdesigner.in_list': "Luettelossa",
|
|
733
|
+
'formdesigner.display_auto': "Kenttä",
|
|
734
|
+
'formdesigner.display_textarea': "Tekstialue",
|
|
735
|
+
'formdesigner.display_select': "Valintaluettelo",
|
|
736
|
+
'formdesigner.display_radio': "Valintanapit",
|
|
737
|
+
'formdesigner.actions': "Käyttäjät saavat",
|
|
738
|
+
'formdesigner.allow_insert': "lisätä rivejä",
|
|
739
|
+
'formdesigner.allow_update': "muuttaa rivejä",
|
|
740
|
+
'formdesigner.allow_delete': "poistaa rivejä",
|
|
741
|
+
'formdesigner.list_help': "Riviluettelo näyttää sarakkeet, joissa on rasti kohdassa \"Luettelossa\"; ilman niitä lomake vain lisää rivejä.",
|
|
742
|
+
'formdesigner.save_form': "Tallenna lomake",
|
|
743
|
+
'formdesigner.delete_form': "Poista lomake",
|
|
744
|
+
'formdesigner.delete_form_confirm': "Poistetaanko lomake \"{name}\"? Sillä tallennetut rivit säilyvät.",
|
|
745
|
+
'formdesigner.form_saved': "Lomake \"{name}\" tallennettu.",
|
|
746
|
+
'formdesigner.form_deleted': "Lomake poistettu.",
|
|
747
|
+
'formdesigner.name_required': "Anna lomakkeelle nimi.",
|
|
748
|
+
'formdesigner.no_fields': "Lisää lomakkeelle vähintään yksi sarake.",
|
|
749
|
+
'formdesigner.changed_by': "muuttanut {user} {date}",
|
|
688
750
|
// AI assistant region and natural-language report filters (assistant.ts, ai-filter.ts)
|
|
689
751
|
'assistant.conversation': "Keskustelu",
|
|
690
752
|
'assistant.you': "Sinä",
|