diff --git a/.github/workflows/code-quality.yml b/.github/workflows/code-quality.yml index ab396476..d327ea4f 100644 --- a/.github/workflows/code-quality.yml +++ b/.github/workflows/code-quality.yml @@ -98,6 +98,7 @@ permissions: jobs: quality: + if: (github.event_name != 'pull_request' || github.head_ref != 'development') # ConductionNL, NOT Conduction. e2faa092 ("org rename") pointed all eight # reusable-workflow calls in this repo at `Conduction/.github`, which # Actions cannot resolve — so from 2026-06-01 every run of this workflow diff --git a/appinfo/info.xml b/appinfo/info.xml index 2bfd99f6..ec563486 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -46,7 +46,7 @@ Maak een [featureverzoek](https://github.com/ConductionNL/larpinq/issues) **Support:** neem voor support contact op met support@conduction.nl. Voor een Service Level Agreement (SLA), neem contact op met sales@conduction.nl. ]]> - 0.2.3-unstable.20260830082603 + 0.2.8-unstable.20260831165721 EUPL-1.2 Conduction Larpinq diff --git a/appinfo/routes.php b/appinfo/routes.php index e747579b..9fb8e7bc 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -1,28 +1,130 @@ [ - // Page routes - ['name' => 'dashboard#page', 'url' => '/', 'verb' => 'GET'], - ['name' => 'characters#downloadPdf', 'url' => '/characters/{id}/download/{template}', 'verb' => 'GET'], - ['name' => 'events#downloadRunsheet', 'url' => '/events/{id}/runsheet/{template}', 'verb' => 'GET'], - ['name' => 'events#roster', 'url' => '/api/events/{id}/roster', 'verb' => 'GET'], - ['name' => 'events#recordAttendance', 'url' => '/api/events/{id}/attendance', 'verb' => 'POST'], - ['name' => 'characters#requirementReport', 'url' => '/api/characters/{id}/requirement-report', 'verb' => 'GET'], - ['name' => 'settings#index', 'url' => 'api/settings', 'verb' => 'GET'], - ['name' => 'settings#create', 'url' => 'api/settings', 'verb' => 'POST'], - // Canonical AppHost settings write (OpenRegister\AppHost\Routes::standard()). - // `settings#create` above stays as the legacy POST alias; both reach the - // same SettingsController::update(). URL spelled without a leading slash - // to match its two siblings — RouteParser ltrims it either way. - ['name' => 'settings#update', 'url' => 'api/settings', 'verb' => 'PUT'], - ['name' => 'settings#reimport', 'url' => 'api/settings/reimport', 'verb' => 'POST'], - // First-time setup wizard (ADR-042). - ['name' => 'setup#status', 'url' => '/api/setup/status', 'verb' => 'GET'], - ['name' => 'setup#saveConfig', 'url' => '/api/setup/config', 'verb' => 'POST'], - ['name' => 'setup#runAction', 'url' => '/api/setup/action/{actionId}', 'verb' => 'POST'], - // Generic per-user preferences (used by shared nextcloud-vue widgets, e.g. CnSupportDialog). - ['name' => 'preferences#getPreference', 'url' => '/api/preferences/{key}', 'verb' => 'GET'], - ['name' => 'preferences#setPreference', 'url' => '/api/preferences/{key}', 'verb' => 'PUT'], - ], +declare(strict_types=1); + +/* + * Larpinq route table. + * + * Built through \OCA\OpenRegister\AppHost\Routes::standard(), which appends + * the SPA catch-all (`dashboard#catchAll` on `/{path}`) after every route + * below. Without that catch-all the server has no handler for + * `/apps/larpinq/`, so deep links and reloads 404 before the SPA loads + * — measured 2026-09-01, larpinq was the ONLY one of the fleet's seven + * hash-routed apps whose sub-paths returned 404 rather than the app shell, + * which is what blocked it from moving to history routing. + * + * Routes listed here are passed as `$extra`; `standard()` lets an `$extra` + * route override a canonical one of the same name, so the existing + * `dashboard#page`, `settings#*` and `preferences#*` entries below keep their + * exact URLs and verbs. Domain routes are inserted BEFORE the catch-all, so + * they keep priority over the `/{path}` fallback. + * + * This file references no OCA\OpenRegister symbol other than the pure array + * builder Routes::standard(), so it is safe to require even when OpenRegister + * is disabled. + */ + +$extra = [ + // Page routes + ['name' => 'dashboard#page', 'url' => '/', 'verb' => 'GET'], + ['name' => 'characters#downloadPdf', 'url' => '/characters/{id}/download/{template}', 'verb' => 'GET'], + ['name' => 'events#downloadRunsheet', 'url' => '/events/{id}/runsheet/{template}', 'verb' => 'GET'], + ['name' => 'events#roster', 'url' => '/api/events/{id}/roster', 'verb' => 'GET'], + ['name' => 'events#recordAttendance', 'url' => '/api/events/{id}/attendance', 'verb' => 'POST'], + ['name' => 'characters#requirementReport', 'url' => '/api/characters/{id}/requirement-report', 'verb' => 'GET'], + ['name' => 'settings#index', 'url' => 'api/settings', 'verb' => 'GET'], + ['name' => 'settings#create', 'url' => 'api/settings', 'verb' => 'POST'], + // Canonical AppHost settings write (OpenRegister\AppHost\Routes::standard()). + // `settings#create` above stays as the legacy POST alias; both reach the + // same SettingsController::update(). URL spelled without a leading slash + // to match its two siblings — RouteParser ltrims it either way. + ['name' => 'settings#update', 'url' => 'api/settings', 'verb' => 'PUT'], + ['name' => 'settings#reimport', 'url' => 'api/settings/reimport', 'verb' => 'POST'], + // First-time setup wizard (ADR-042). + ['name' => 'setup#status', 'url' => '/api/setup/status', 'verb' => 'GET'], + ['name' => 'setup#saveConfig', 'url' => '/api/setup/config', 'verb' => 'POST'], + ['name' => 'setup#runAction', 'url' => '/api/setup/action/{actionId}', 'verb' => 'POST'], + // Generic per-user preferences (used by shared nextcloud-vue widgets, e.g. CnSupportDialog). + ['name' => 'preferences#getPreference', 'url' => '/api/preferences/{key}', 'verb' => 'GET'], + ['name' => 'preferences#setPreference', 'url' => '/api/preferences/{key}', 'verb' => 'PUT'], +]; + +// ⚠️ The AppHost builder is invoked through a `class_exists()` guard. +// +// Nextcloud `include`s this file for EVERY larpinq request, and PHPUnit +// includes it without booting sibling apps at all. An unguarded static call to +// a class owned by another app therefore fatals — measured: four PHPUnit +// errors reading `Class "OCA\OpenRegister\AppHost\Routes" not found` the +// moment this file started calling it. In production the same shape makes +// every route in the app 500 when openregister is absent, not just the AppHost +// ones, and larpinq does not declare `openregister`, so an admin can +// create exactly that configuration. +// +// `class_exists()` autoloads without fatalling when the class is unavailable. +// The fallback below reproduces `Routes::standard()`'s output locally, so +// larpinq still routes — catch-all included — without openregister. +if (class_exists('OCA\OpenRegister\AppHost\Routes') === true) { + return \OCA\OpenRegister\AppHost\Routes::standard($extra); +} + +$canonicalRoutes = [ + ['name' => 'dashboard#page', 'url' => '/', 'verb' => 'GET'], + ['name' => 'settings#index', 'url' => '/api/settings', 'verb' => 'GET'], + ['name' => 'settings#create', 'url' => '/api/settings', 'verb' => 'POST'], + ['name' => 'settings#update', 'url' => '/api/settings', 'verb' => 'PUT'], + ['name' => 'settings#load', 'url' => '/api/settings/load', 'verb' => 'POST'], + ['name' => 'preferences#getPreference', 'url' => '/api/preferences/{key}', 'verb' => 'GET'], + ['name' => 'preferences#setPreference', 'url' => '/api/preferences/{key}', 'verb' => 'PUT'], + // ⚠️ The health and metrics routes are DELIBERATELY absent here, and their + // absence is the point of this comment. Routes::standard() supplies both on + // the branch above, where OpenRegister's AppHost aliases its generic + // health/metrics controllers onto larpinq's conventional class names — + // which is why /api/health and /api/metrics answer 200 on a normal instance + // even though this repo ships neither controller. + // + // This fallback runs ONLY when OpenRegister is absent, and then nothing + // aliases them: declaring those routes would advertise two endpoints whose + // target classes do not exist, so a request to either would fatal rather + // than 404. gate-14 (route-reachability) reported exactly that. + // + // ⚠️ And do NOT write their route slugs (`` + `#` + ``) + // into this comment. gate-14 reads this file statically and matches that + // shape anywhere in it, comments included — spelling them out here made the + // gate go on reporting both long after the routes themselves were gone, + // with the finding pointing at controller files that do not exist. +]; + +$catchAllRoute = [ + 'name' => 'dashboard#catchAll', + 'url' => '/{path}', + 'verb' => 'GET', + // Mirrors Routes::standard()'s own requirement, lookahead included. + // Nextcloud's RouteParser processes `routes` before `resources` and Symfony + // matches in insertion order, and `.+` matches slashes — so a bare `.+` + // catch-all swallows unmatched `api/...` paths and answers the SPA shell at + // HTTP 200, handing JSON callers HTML with nothing erroring + // (openregister#3270, zaakafhandelapp#619). + 'requirements' => ['path' => '(?!api/).+'], + 'defaults' => ['path' => ''], ]; + +$extraNames = []; +foreach ($extra as $extraRoute) { + if (isset($extraRoute['name']) === true) { + $extraNames[(string) $extraRoute['name']] = true; + } +} + +$mergedRoutes = []; +foreach ($canonicalRoutes as $canonicalRoute) { + if (isset($extraNames[$canonicalRoute['name']]) === true) { + continue; + } + + $mergedRoutes[] = $canonicalRoute; +} + +$mergedRoutes = array_merge($mergedRoutes, $extra); +$mergedRoutes[] = $catchAllRoute; + +return ['routes' => $mergedRoutes]; diff --git a/composer.json b/composer.json index b66376c0..539ee2ed 100644 --- a/composer.json +++ b/composer.json @@ -103,7 +103,8 @@ "optimize-autoloader": true, "sort-packages": true, "platform": { - "php": "8.3" + "php": "8.3", + "ext-xsl": "1" } } } diff --git a/composer.lock b/composer.lock index 7a86a537..157da46d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "3996e97172bfbd2545c4da32987ea6b7", + "content-hash": "77b7ce9ccd49d64fb78fdaf21ca30436", "packages": [ { "name": "bamarni/composer-bin-plugin", @@ -889,16 +889,16 @@ }, { "name": "conduction/hydra-gates", - "version": "v1.10.0", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/ConductionNL/.github.git", - "reference": "d143bc27aecbb44a66c843dba89d374628bf9eef" + "reference": "0bc214023be78aac94142035a9988986cfccccbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ConductionNL/.github/zipball/d143bc27aecbb44a66c843dba89d374628bf9eef", - "reference": "d143bc27aecbb44a66c843dba89d374628bf9eef", + "url": "https://api.github.com/repos/ConductionNL/.github/zipball/0bc214023be78aac94142035a9988986cfccccbc", + "reference": "0bc214023be78aac94142035a9988986cfccccbc", "shasum": "" }, "require": { @@ -937,9 +937,9 @@ "support": { "docs": "https://github.com/ConductionNL/.github/blob/main/hydra-gates/README.md", "issues": "https://github.com/ConductionNL/.github/issues", - "source": "https://github.com/ConductionNL/.github/tree/v1.10.0" + "source": "https://github.com/ConductionNL/.github/tree/v1.15.0" }, - "time": "2026-08-27T16:18:04+00:00" + "time": "2026-09-04T16:24:04+00:00" }, { "name": "consolidation/annotated-command", @@ -8068,7 +8068,8 @@ }, "platform-dev": {}, "platform-overrides": { - "php": "8.3" + "php": "8.3", + "ext-xsl": "1" }, "plugin-api-version": "2.9.0" } diff --git a/eslint.config.mjs b/eslint.config.mjs index 4e0df452..90fa739f 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -44,6 +44,26 @@ export default [ // resolves a rule's plugin from the object the rule sits in, so an override // must name files whose config already registers it. files: ['**/*.js', '**/*.mjs', '**/*.ts', '**/*.tsx', '**/*.vue'], + // 🔴 THE `ignores` ARE PART OF THAT SCOPE, NOT AN OPINION. v9 registers + // the jsdoc plugin ONLY inside `nextcloud/documentation/*`, and every one + // of those blocks carries exactly this ignore list: Nextcloud does not + // require JSDoc in tests. Naming a `jsdoc/*` rule for a test file + // therefore points at a plugin that is not registered there, and eslint + // refuses to run AT ALL rather than reporting a finding. + // + // Measured here: with the list absent, `eslint tests` died with "A + // configuration object specifies rule 'jsdoc/check-tag-names', but could + // not find plugin 'jsdoc'" and linted nothing. `eslint src` was green + // throughout, because it never reached a test file. + ignores: [ + '**/*.test.*', + '**/*.spec.*', + '**/*.cy.*', + '**/test/**', + '**/tests/**', + '**/__tests__/**', + '**/__mocks__/**', + ], rules: { // `@spec` (hydra gate-16 / gate-19 traceability) and `@visual` (the // visual-coverage gate) are this project's own JSDoc tags. v9 sets @@ -110,16 +130,113 @@ export default [ }, { - // Node-side CLI tools (build / validate scripts) legitimately use console - // and process.exit, and ship as plain JS with no shebang. - files: ['tests/validate-manifest.js', 'tests/validate-register.js', 'tests/validate-json-strict.js'], + // Node-side CLI checkers under tests/ legitimately use console and + // process.exit, and ship as plain JS with no shebang. + // + // 🔴 A GLOB, NOT A FILE LIST. This block used to name three files by hand + // (`validate-manifest.js`, `validate-register.js`, `validate-json-strict.js`) + // and had silently stopped covering every checker added since. That is the + // failure mode a hand-maintained list always has: adding a file does not + // add it to the list, and the omission is invisible. + files: ['tests/**/*.js', 'tests/**/*.mjs', 'tests/**/*.ts'], rules: { 'no-console': 'off', 'n/no-process-exit': 'off', 'n/hashbang': 'off', + // Tests import devDependencies by definition; this rule is about what + // ships in the published package, which tests/ never does. + 'n/no-unpublished-import': 'off', }, }, + { + // 🔴 Node-side CLI tooling under `scripts/`, which is COMMONJS. Flat + // config defaults every `.js` to ESM with browser-ish globals, so without + // this block eslint reports the CommonJS wrapper itself as undefined + // identifiers. Measured on this app: 52 of the 233 errors under + // `tests/` + `scripts/` were `no-undef`, ALL of them in `scripts/`, and + // all five names were the environment rather than a typo — `process` 23, + // `require` 20, `__dirname` 6, `__filename` 2, `module` 1. + // + // This is describing the environment, not relaxing a rule, and it is the + // same argument the test-globals block below makes: declaring them keeps + // `no-undef` able to do its real job, which is catching a genuinely + // misspelled identifier. Suppressing the rule instead would bury that. + // + // `no-console` is off because printing its report is what a CLI checker + // is FOR. + // + // 🔴 NO `n/*` ENTRIES HERE, DELIBERATELY. `eslint-plugin-n` is NOT + // registered for these files under eslint 10 + @nextcloud/eslint-config + // 9, so `'n/no-process-exit': 'off'` would be dead config that reads as + // if it were doing something. Measured both ways on this app: 0 `n/` + // findings with the entries and 0 without. + // + // What DID report was the opposite — four `scripts/*.js` carried + // `/* eslint-disable n/no-process-exit */` and `/* eslint-disable + // n/shebang */` left over from the eslintrc era, and an inline disable + // naming an unregistered plugin is itself an error ("Definition for rule + // 'n/shebang' was not found"). Those 8 comments are removed; do not add + // `n/*` rules back to replace them. + // + // ⚠️ `.js` and `.cjs` ONLY. A `scripts/*.mjs` is genuinely ESM and must + // keep the default `sourceType`, or `import` stops parsing there. + files: ['scripts/**/*.js', 'scripts/**/*.cjs'], + languageOptions: { + sourceType: 'commonjs', + globals: { + require: 'readonly', + module: 'writable', + exports: 'writable', + process: 'readonly', + __dirname: 'readonly', + __filename: 'readonly', + console: 'readonly', + Buffer: 'readonly', + global: 'readonly', + URL: 'readonly', + TextEncoder: 'readonly', + TextDecoder: 'readonly', + }, + }, + rules: { + 'no-console': 'off', + }, + }, + + { + // The ESM half of the block above. A `scripts/*.mjs` is genuinely a module + // and must keep the default `sourceType`, so it gets Node's globals but + // none of the CommonJS wrapper. Measured: `process` reported undefined 2x + // in hermiq's generate-opengemeenten-icons.mjs and 4x in openregister's + // l10n/runtime-check.mjs, which the `.js`/`.cjs` block deliberately does + // not match. + files: ['scripts/**/*.mjs', 'tests/**/*.mjs'], + languageOptions: { + globals: { + process: 'readonly', + console: 'readonly', + Buffer: 'readonly', + global: 'readonly', + URL: 'readonly', + TextEncoder: 'readonly', + TextDecoder: 'readonly', + }, + }, + rules: { + 'no-console': 'off', + }, + }, + + { + // eslint must not try to PARSE a shell script. `tests/e2e/seed.test.sh` + // matches the `**/*.test.*` glob some presets use, and eslint then reads + // it as JavaScript and reports "Parsing error: Unexpected character" — + // a finding about a file it should never have opened. + ignores: ['**/*.sh', '**/*.bash'], + }, + + // eslint-config-prettier LAST OF ALL, and it has to be last: it only turns // rules OFF, and what it turns off is everything prettier owns — including // the `@stylistic/*` family v9 introduces (`indent`, `quotes`, `semi`). diff --git a/l10n/.schema-l10n-baseline.json b/l10n/.schema-l10n-baseline.json index d2ee426a..5067a41f 100644 --- a/l10n/.schema-l10n-baseline.json +++ b/l10n/.schema-l10n-baseline.json @@ -1,3 +1,3 @@ { - "uncovered": 134 + "uncovered": 125 } diff --git a/l10n/be.js b/l10n/be.js index b2f2d045..912f2193 100644 --- a/l10n/be.js +++ b/l10n/be.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Загрузіць прыклады даных?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Прыклады даных запаўняюць спісы, старонкі падрабязнасцей і панэлі, каб вы адразу ўбачылі праграму ў працы. На працоўнай усталёўцы абярыце \"Няма\".", + "Load the example data": "Загрузіць прыклады даных", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Загружае тое, што вы абралі. Гэта відавочна прыклады даных, дзеянне можна бяспечна паўтарыць, а потым іх можна выдаліць.", + "None, I will set this up myself": "Няма, я наладжу гэта сам", + "Nothing is imported. You start with an empty app and add your own data.": "Нічога не імпартуецца. Вы пачынаеце з пустой праграмы і дадаяце свае даныя.", + "Example data": "Прыклады даных", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Прыклады значэнняў для кожнай схемы, якую пастаўляе гэтая праграма, згенераваныя з саміх схем. Яны паказваюць спісы, старонкі падрабязнасцей і панэлі ў працы, а не расказваюць гісторыю. Бяспечна паўтараць і потым выдаліць.", "Larpinq": "Larpinq", "Dashboard": "Панэль кіравання", "Characters": "Персанажы", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Няма — гэта базавы навык.", "Where the automation lives": "Дзе жыве аўтаматызацыя", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows — гэта тое, што адбываецца без ніводнага кліку: напамін да заканчэння тэрміну, пацвярджэнне пры падачы. Тут вы іх чытаеце і рэдагуеце — зараз нічога будаваць не трэба.", - "Open Flows in the menu": "Адкрыйце Flows у меню" + "Open Flows in the menu": "Адкрыйце Flows у меню", + "Ability Name": "Назва здольнасці", + "Affected Characters": "Закранутыя персанажы", + "Amount of copper pieces": "Колькасць медных манет", + "Amount of gold pieces": "Колькасць залатых манет", + "Amount of silver pieces": "Колькасць срэбных манет", + "Automatic system notices": "Аўтаматычныя сістэмныя паведамленні", + "Award Reason": "Прычына налічэння", + "Awarded At": "Налічана", + "Awarded By": "Налічыў", + "Background Story": "Перадгісторыя персанажа", + "Base Value": "Базавае значэнне", + "Character Card": "Картка персанажа", + "Character Name": "Імя персанажа", + "Checked In At": "Прыбыццё зафіксавана", + "Checked In By": "Прыбыццё зафіксаваў", + "Condition Name": "Назва стану", + "Contact email address": "Кантактны адрас электроннай пошты", + "Copper Pieces": "Медныя манеты", + "Effect Name": "Назва эфекту", + "End Date": "Дата заканчэння", + "Event Name": "Назва падзеі", + "Event description": "Апісанне падзеі", + "Event end date and time": "Дата і час заканчэння падзеі", + "Event location": "Месца правядзення падзеі", + "Event name": "Назва падзеі", + "Event start date and time": "Дата і час пачатку падзеі", + "Faith": "Вера", + "Full name of the player": "Поўнае імя гульца", + "Game Master Notes (Private)": "Нататкі вядучага гульні (прыватныя)", + "Game Master Notes (Public)": "Нататкі вядучага гульні (публічныя)", + "Gold Pieces": "Залатыя манеты", + "Item Name": "Назва прадмета", + "Items and Money": "Прадметы і грошы", + "Mechanical Effect": "Гульнявы эфект", + "Modifier Value": "Значэнне мадыфікатара", + "Name of the condition": "Назва стану", + "Name of the effect": "Назва эфекту", + "Name of the event": "Назва падзеі", + "Name of the item": "Назва прадмета", + "Name of the skill": "Назва навыку", + "Name of the stat": "Назва характарыстыкі", + "Nextcloud user": "Карыстальнік Nextcloud", + "Notes about items and money": "Нататкі пра прадметы і грошы", + "Notes about the player": "Нататкі пра гульца", + "Overridden At": "Выключэнне дадзена", + "Overridden By": "Выключэнне даў", + "Override Reason": "Прычына выключэння", + "Owner": "Уладальнік", + "Owner UID": "UID уладальніка", + "Participating Characters": "Персанажы, якія ўдзельнічаюць", + "Player Name": "Імя гульца", + "Post-Event Effects": "Эфекты пасля падзеі", + "Real name of the player": "Сапраўднае імя гульца", + "Required Conditions": "Патрэбныя станы", + "Required Effects": "Патрэбныя эфекты", + "Required Score": "Патрэбнае значэнне", + "Required Skills": "Патрэбныя навыкі", + "Required Stats": "Патрэбныя характарыстыкі", + "Requirement Overrides": "Выключэнні з патрабаванняў", + "Setting Name": "Назва свету гульні", + "Silver Pieces": "Срэбныя манеты", + "Skill Name": "Назва навыку", + "Start Date": "Дата пачатку", + "Starting value for all characters": "Пачатковае значэнне для ўсіх персанажаў", + "Stat": "Характарыстыка", + "Status": "Статус", + "System Notice": "Сістэмнае паведамленне", + "Unique Artifact": "Унікальны артэфакт", + "Unique Condition": "Унікальны стан", + "XP Amount": "Колькасць пунктаў вопыту", + "XP Award": "Налічэнне пунктаў вопыту", + "Reports": "Справаздачы", + "Pick a report to open it.": "Выберыце справаздачу, каб адкрыць яе.", + "Open": "Адкрыта", + "In progress": "У працы", + "Blocked": "Заблакіравана", + "Date": "Дата", + "Due": "Тэрмін", + "Assignee": "Прызначана", + "Who": "Хто", + "What": "Што", + "Minutes": "Хвіліны", + "Entries": "Запісы", + "Most recent": "Найноўшыя", + "Per person": "На асобу", + "By status": "Па статусе", + "By priority": "Па прыярытэце", + "Character roster": "Спіс персанажаў", + "Progression": "Прагрэс", + "World content": "Змест свету", + "Awaiting approval": "Чакае ўхвалення", + "Player characters": "Персанажы гульцоў", + "Awards": "Узнагароджанні", + "Experience": "Досвед", + "Experience awarded": "Налічаны досвед", + "Per character": "На персанажа", + "By type": "Па тыпе", + "By approval": "Па ўхваленні", + "Items carried by characters": "Прадметы, якія нясуць персанажы", + "Conditions on characters": "Станы персанажаў", + "Nothing awarded yet": "Яшчэ нічога не налічана", + "Who is playing what, and what is still waiting for approval.": "Хто што грае і што яшчэ чакае ўхвалення.", + "Experience awarded, and who earned it.": "Налічаны досвед і хто яго зарабіў.", + "How much the world holds, and what characters actually carry.": "Колькі змяшчае свет і што персанажы сапраўды нясуць.", + "Store": "Крама", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Усталюйце рэестры, схемы і патокі, апублікаваныя іншымі арганізацыямі." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/be.json b/l10n/be.json index 9f66792b..bbc167eb 100644 --- a/l10n/be.json +++ b/l10n/be.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Загрузіць прыклады даных?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Прыклады даных запаўняюць спісы, старонкі падрабязнасцей і панэлі, каб вы адразу ўбачылі праграму ў працы. На працоўнай усталёўцы абярыце \"Няма\".", + "Load the example data": "Загрузіць прыклады даных", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Загружае тое, што вы абралі. Гэта відавочна прыклады даных, дзеянне можна бяспечна паўтарыць, а потым іх можна выдаліць.", + "None, I will set this up myself": "Няма, я наладжу гэта сам", + "Nothing is imported. You start with an empty app and add your own data.": "Нічога не імпартуецца. Вы пачынаеце з пустой праграмы і дадаяце свае даныя.", + "Example data": "Прыклады даных", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Прыклады значэнняў для кожнай схемы, якую пастаўляе гэтая праграма, згенераваныя з саміх схем. Яны паказваюць спісы, старонкі падрабязнасцей і панэлі ў працы, а не расказваюць гісторыю. Бяспечна паўтараць і потым выдаліць.", "Larpinq": "Larpinq", "Dashboard": "Панэль кіравання", "Characters": "Персанажы", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Няма — гэта базавы навык.", "Where the automation lives": "Дзе жыве аўтаматызацыя", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows — гэта тое, што адбываецца без ніводнага кліку: напамін да заканчэння тэрміну, пацвярджэнне пры падачы. Тут вы іх чытаеце і рэдагуеце — зараз нічога будаваць не трэба.", - "Open Flows in the menu": "Адкрыйце Flows у меню" + "Open Flows in the menu": "Адкрыйце Flows у меню", + "Ability Name": "Назва здольнасці", + "Affected Characters": "Закранутыя персанажы", + "Amount of copper pieces": "Колькасць медных манет", + "Amount of gold pieces": "Колькасць залатых манет", + "Amount of silver pieces": "Колькасць срэбных манет", + "Automatic system notices": "Аўтаматычныя сістэмныя паведамленні", + "Award Reason": "Прычына налічэння", + "Awarded At": "Налічана", + "Awarded By": "Налічыў", + "Background Story": "Перадгісторыя персанажа", + "Base Value": "Базавае значэнне", + "Character Card": "Картка персанажа", + "Character Name": "Імя персанажа", + "Checked In At": "Прыбыццё зафіксавана", + "Checked In By": "Прыбыццё зафіксаваў", + "Condition Name": "Назва стану", + "Contact email address": "Кантактны адрас электроннай пошты", + "Copper Pieces": "Медныя манеты", + "Effect Name": "Назва эфекту", + "End Date": "Дата заканчэння", + "Event Name": "Назва падзеі", + "Event description": "Апісанне падзеі", + "Event end date and time": "Дата і час заканчэння падзеі", + "Event location": "Месца правядзення падзеі", + "Event name": "Назва падзеі", + "Event start date and time": "Дата і час пачатку падзеі", + "Faith": "Вера", + "Full name of the player": "Поўнае імя гульца", + "Game Master Notes (Private)": "Нататкі вядучага гульні (прыватныя)", + "Game Master Notes (Public)": "Нататкі вядучага гульні (публічныя)", + "Gold Pieces": "Залатыя манеты", + "Item Name": "Назва прадмета", + "Items and Money": "Прадметы і грошы", + "Mechanical Effect": "Гульнявы эфект", + "Modifier Value": "Значэнне мадыфікатара", + "Name of the condition": "Назва стану", + "Name of the effect": "Назва эфекту", + "Name of the event": "Назва падзеі", + "Name of the item": "Назва прадмета", + "Name of the skill": "Назва навыку", + "Name of the stat": "Назва характарыстыкі", + "Nextcloud user": "Карыстальнік Nextcloud", + "Notes about items and money": "Нататкі пра прадметы і грошы", + "Notes about the player": "Нататкі пра гульца", + "Overridden At": "Выключэнне дадзена", + "Overridden By": "Выключэнне даў", + "Override Reason": "Прычына выключэння", + "Owner": "Уладальнік", + "Owner UID": "UID уладальніка", + "Participating Characters": "Персанажы, якія ўдзельнічаюць", + "Player Name": "Імя гульца", + "Post-Event Effects": "Эфекты пасля падзеі", + "Real name of the player": "Сапраўднае імя гульца", + "Required Conditions": "Патрэбныя станы", + "Required Effects": "Патрэбныя эфекты", + "Required Score": "Патрэбнае значэнне", + "Required Skills": "Патрэбныя навыкі", + "Required Stats": "Патрэбныя характарыстыкі", + "Requirement Overrides": "Выключэнні з патрабаванняў", + "Setting Name": "Назва свету гульні", + "Silver Pieces": "Срэбныя манеты", + "Skill Name": "Назва навыку", + "Start Date": "Дата пачатку", + "Starting value for all characters": "Пачатковае значэнне для ўсіх персанажаў", + "Stat": "Характарыстыка", + "Status": "Статус", + "System Notice": "Сістэмнае паведамленне", + "Unique Artifact": "Унікальны артэфакт", + "Unique Condition": "Унікальны стан", + "XP Amount": "Колькасць пунктаў вопыту", + "XP Award": "Налічэнне пунктаў вопыту", + "Reports": "Справаздачы", + "Pick a report to open it.": "Выберыце справаздачу, каб адкрыць яе.", + "Open": "Адкрыта", + "In progress": "У працы", + "Blocked": "Заблакіравана", + "Date": "Дата", + "Due": "Тэрмін", + "Assignee": "Прызначана", + "Who": "Хто", + "What": "Што", + "Minutes": "Хвіліны", + "Entries": "Запісы", + "Most recent": "Найноўшыя", + "Per person": "На асобу", + "By status": "Па статусе", + "By priority": "Па прыярытэце", + "Character roster": "Спіс персанажаў", + "Progression": "Прагрэс", + "World content": "Змест свету", + "Awaiting approval": "Чакае ўхвалення", + "Player characters": "Персанажы гульцоў", + "Awards": "Узнагароджанні", + "Experience": "Досвед", + "Experience awarded": "Налічаны досвед", + "Per character": "На персанажа", + "By type": "Па тыпе", + "By approval": "Па ўхваленні", + "Items carried by characters": "Прадметы, якія нясуць персанажы", + "Conditions on characters": "Станы персанажаў", + "Nothing awarded yet": "Яшчэ нічога не налічана", + "Who is playing what, and what is still waiting for approval.": "Хто што грае і што яшчэ чакае ўхвалення.", + "Experience awarded, and who earned it.": "Налічаны досвед і хто яго зарабіў.", + "How much the world holds, and what characters actually carry.": "Колькі змяшчае свет і што персанажы сапраўды нясуць.", + "Store": "Крама", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Усталюйце рэестры, схемы і патокі, апублікаваныя іншымі арганізацыямі." }, "plurals": {} } diff --git a/l10n/bg.js b/l10n/bg.js index 4801cc0f..fd340861 100644 --- a/l10n/bg.js +++ b/l10n/bg.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Да се заредят ли примерни данни?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Примерните данни попълват списъците, страниците с подробности и таблата, за да видите приложението веднага в действие. Изберете \"Няма\" при производствена инсталация.", + "Load the example data": "Заредете примерните данни", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Зарежда това, което сте избрали. Данните са явно примерни, действието може да се повтори безопасно и след това можете да ги изтриете.", + "None, I will set this up myself": "Няма, ще настроя това сам", + "Nothing is imported. You start with an empty app and add your own data.": "Нищо не се внася. Започвате с празно приложение и добавяте собствени данни.", + "Example data": "Примерни данни", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Примерни стойности за всяка схема, която приложението предоставя, генерирани от самите схеми. Показват списъците, страниците с подробности и таблата в действие, вместо да разказват история. Безопасно за повторно изпълнение и може да се изтрие после.", "Larpinq": "Larpinq", "Dashboard": "Табло", "Characters": "Герои", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Няма — това е основно умение.", "Where the automation lives": "Къде живее автоматизацията", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows е това, което се случва, без някой да кликне: напомняне преди да изтече срок, потвърждение при подаване. Тук ги четете и редактирате — сега няма какво да се изгражда.", - "Open Flows in the menu": "Отворете Flows в менюто" + "Open Flows in the menu": "Отворете Flows в менюто", + "Ability Name": "Име на способността", + "Affected Characters": "Засегнати герои", + "Amount of copper pieces": "Брой медни монети", + "Amount of gold pieces": "Брой златни монети", + "Amount of silver pieces": "Брой сребърни монети", + "Automatic system notices": "Автоматични системни съобщения", + "Award Reason": "Причина за присъждането", + "Awarded At": "Присъдено на", + "Awarded By": "Присъдено от", + "Background Story": "Предистория на героя", + "Base Value": "Базова стойност", + "Character Card": "Карта на героя", + "Character Name": "Име на героя", + "Checked In At": "Пристигането е отбелязано на", + "Checked In By": "Пристигането е отбелязано от", + "Condition Name": "Име на състоянието", + "Contact email address": "Имейл адрес за контакт", + "Copper Pieces": "Медни монети", + "Effect Name": "Име на ефекта", + "End Date": "Крайна дата", + "Event Name": "Име на събитието", + "Event description": "Описание на събитието", + "Event end date and time": "Крайна дата и час на събитието", + "Event location": "Място на събитието", + "Event name": "Име на събитието", + "Event start date and time": "Начална дата и час на събитието", + "Faith": "Вяра", + "Full name of the player": "Пълно име на играча", + "Game Master Notes (Private)": "Бележки на водещия играта (лични)", + "Game Master Notes (Public)": "Бележки на водещия играта (публични)", + "Gold Pieces": "Златни монети", + "Item Name": "Име на предмета", + "Items and Money": "Предмети и пари", + "Mechanical Effect": "Ефект в играта", + "Modifier Value": "Стойност на модификатора", + "Name of the condition": "Име на състоянието", + "Name of the effect": "Име на ефекта", + "Name of the event": "Име на събитието", + "Name of the item": "Име на предмета", + "Name of the skill": "Име на умението", + "Name of the stat": "Име на характеристиката", + "Nextcloud user": "Потребител на Nextcloud", + "Notes about items and money": "Бележки за предметите и парите", + "Notes about the player": "Бележки за играча", + "Overridden At": "Изключението е дадено на", + "Overridden By": "Изключението е дадено от", + "Override Reason": "Причина за изключението", + "Owner": "Собственик", + "Owner UID": "UID на собственика", + "Participating Characters": "Участващи герои", + "Player Name": "Име на играча", + "Post-Event Effects": "Ефекти след събитието", + "Real name of the player": "Истинско име на играча", + "Required Conditions": "Необходими състояния", + "Required Effects": "Необходими ефекти", + "Required Score": "Необходима стойност", + "Required Skills": "Необходими умения", + "Required Stats": "Необходими характеристики", + "Requirement Overrides": "Изключения от изискванията", + "Setting Name": "Име на света на играта", + "Silver Pieces": "Сребърни монети", + "Skill Name": "Име на умението", + "Start Date": "Начална дата", + "Starting value for all characters": "Начална стойност за всички герои", + "Stat": "Характеристика", + "Status": "Статус", + "System Notice": "Системно съобщение", + "Unique Artifact": "Уникален артефакт", + "Unique Condition": "Уникално състояние", + "XP Amount": "Брой точки опит", + "XP Award": "Присъждане на точки опит", + "Reports": "Отчети", + "Pick a report to open it.": "Изберете отчет, за да го отворите.", + "Open": "Отворени", + "In progress": "В процес", + "Blocked": "Блокирани", + "Date": "Дата", + "Due": "Краен срок", + "Assignee": "Възложено на", + "Who": "Кой", + "What": "Какво", + "Minutes": "Минути", + "Entries": "Записи", + "Most recent": "Най-скорошни", + "Per person": "На човек", + "By status": "По статус", + "By priority": "По приоритет", + "Character roster": "Списък с герои", + "Progression": "Развитие", + "World content": "Съдържание на света", + "Awaiting approval": "Чака одобрение", + "Player characters": "Герои на играчи", + "Awards": "Награди", + "Experience": "Опит", + "Experience awarded": "Присъден опит", + "Per character": "На герой", + "By type": "По тип", + "By approval": "По одобрение", + "Items carried by characters": "Предмети, носени от героите", + "Conditions on characters": "Състояния на героите", + "Nothing awarded yet": "Още нищо не е присъдено", + "Who is playing what, and what is still waiting for approval.": "Кой какво играе и какво още чака одобрение.", + "Experience awarded, and who earned it.": "Присъденият опит и кой го е спечелил.", + "How much the world holds, and what characters actually carry.": "Колко съдържа светът и какво наистина носят героите.", + "Store": "Магазин", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Инсталирайте регистри, схеми и потоци, публикувани от други организации." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/bg.json b/l10n/bg.json index ecbb13cd..32fb92ce 100644 --- a/l10n/bg.json +++ b/l10n/bg.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Да се заредят ли примерни данни?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Примерните данни попълват списъците, страниците с подробности и таблата, за да видите приложението веднага в действие. Изберете \"Няма\" при производствена инсталация.", + "Load the example data": "Заредете примерните данни", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Зарежда това, което сте избрали. Данните са явно примерни, действието може да се повтори безопасно и след това можете да ги изтриете.", + "None, I will set this up myself": "Няма, ще настроя това сам", + "Nothing is imported. You start with an empty app and add your own data.": "Нищо не се внася. Започвате с празно приложение и добавяте собствени данни.", + "Example data": "Примерни данни", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Примерни стойности за всяка схема, която приложението предоставя, генерирани от самите схеми. Показват списъците, страниците с подробности и таблата в действие, вместо да разказват история. Безопасно за повторно изпълнение и може да се изтрие после.", "Larpinq": "Larpinq", "Dashboard": "Табло", "Characters": "Герои", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Няма — това е основно умение.", "Where the automation lives": "Къде живее автоматизацията", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows е това, което се случва, без някой да кликне: напомняне преди да изтече срок, потвърждение при подаване. Тук ги четете и редактирате — сега няма какво да се изгражда.", - "Open Flows in the menu": "Отворете Flows в менюто" + "Open Flows in the menu": "Отворете Flows в менюто", + "Ability Name": "Име на способността", + "Affected Characters": "Засегнати герои", + "Amount of copper pieces": "Брой медни монети", + "Amount of gold pieces": "Брой златни монети", + "Amount of silver pieces": "Брой сребърни монети", + "Automatic system notices": "Автоматични системни съобщения", + "Award Reason": "Причина за присъждането", + "Awarded At": "Присъдено на", + "Awarded By": "Присъдено от", + "Background Story": "Предистория на героя", + "Base Value": "Базова стойност", + "Character Card": "Карта на героя", + "Character Name": "Име на героя", + "Checked In At": "Пристигането е отбелязано на", + "Checked In By": "Пристигането е отбелязано от", + "Condition Name": "Име на състоянието", + "Contact email address": "Имейл адрес за контакт", + "Copper Pieces": "Медни монети", + "Effect Name": "Име на ефекта", + "End Date": "Крайна дата", + "Event Name": "Име на събитието", + "Event description": "Описание на събитието", + "Event end date and time": "Крайна дата и час на събитието", + "Event location": "Място на събитието", + "Event name": "Име на събитието", + "Event start date and time": "Начална дата и час на събитието", + "Faith": "Вяра", + "Full name of the player": "Пълно име на играча", + "Game Master Notes (Private)": "Бележки на водещия играта (лични)", + "Game Master Notes (Public)": "Бележки на водещия играта (публични)", + "Gold Pieces": "Златни монети", + "Item Name": "Име на предмета", + "Items and Money": "Предмети и пари", + "Mechanical Effect": "Ефект в играта", + "Modifier Value": "Стойност на модификатора", + "Name of the condition": "Име на състоянието", + "Name of the effect": "Име на ефекта", + "Name of the event": "Име на събитието", + "Name of the item": "Име на предмета", + "Name of the skill": "Име на умението", + "Name of the stat": "Име на характеристиката", + "Nextcloud user": "Потребител на Nextcloud", + "Notes about items and money": "Бележки за предметите и парите", + "Notes about the player": "Бележки за играча", + "Overridden At": "Изключението е дадено на", + "Overridden By": "Изключението е дадено от", + "Override Reason": "Причина за изключението", + "Owner": "Собственик", + "Owner UID": "UID на собственика", + "Participating Characters": "Участващи герои", + "Player Name": "Име на играча", + "Post-Event Effects": "Ефекти след събитието", + "Real name of the player": "Истинско име на играча", + "Required Conditions": "Необходими състояния", + "Required Effects": "Необходими ефекти", + "Required Score": "Необходима стойност", + "Required Skills": "Необходими умения", + "Required Stats": "Необходими характеристики", + "Requirement Overrides": "Изключения от изискванията", + "Setting Name": "Име на света на играта", + "Silver Pieces": "Сребърни монети", + "Skill Name": "Име на умението", + "Start Date": "Начална дата", + "Starting value for all characters": "Начална стойност за всички герои", + "Stat": "Характеристика", + "Status": "Статус", + "System Notice": "Системно съобщение", + "Unique Artifact": "Уникален артефакт", + "Unique Condition": "Уникално състояние", + "XP Amount": "Брой точки опит", + "XP Award": "Присъждане на точки опит", + "Reports": "Отчети", + "Pick a report to open it.": "Изберете отчет, за да го отворите.", + "Open": "Отворени", + "In progress": "В процес", + "Blocked": "Блокирани", + "Date": "Дата", + "Due": "Краен срок", + "Assignee": "Възложено на", + "Who": "Кой", + "What": "Какво", + "Minutes": "Минути", + "Entries": "Записи", + "Most recent": "Най-скорошни", + "Per person": "На човек", + "By status": "По статус", + "By priority": "По приоритет", + "Character roster": "Списък с герои", + "Progression": "Развитие", + "World content": "Съдържание на света", + "Awaiting approval": "Чака одобрение", + "Player characters": "Герои на играчи", + "Awards": "Награди", + "Experience": "Опит", + "Experience awarded": "Присъден опит", + "Per character": "На герой", + "By type": "По тип", + "By approval": "По одобрение", + "Items carried by characters": "Предмети, носени от героите", + "Conditions on characters": "Състояния на героите", + "Nothing awarded yet": "Още нищо не е присъдено", + "Who is playing what, and what is still waiting for approval.": "Кой какво играе и какво още чака одобрение.", + "Experience awarded, and who earned it.": "Присъденият опит и кой го е спечелил.", + "How much the world holds, and what characters actually carry.": "Колко съдържа светът и какво наистина носят героите.", + "Store": "Магазин", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Инсталирайте регистри, схеми и потоци, публикувани от други организации." }, "plurals": {} } diff --git a/l10n/bs.js b/l10n/bs.js index 9afa20d2..a7f2784e 100644 --- a/l10n/bs.js +++ b/l10n/bs.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Učitati primjere podataka?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Primjeri podataka popunjavaju liste, stranice s detaljima i kontrolne table, pa aplikaciju odmah vidite kako radi. Odaberite \"Ništa\" na produkcijskoj instalaciji.", + "Load the example data": "Učitaj primjere podataka", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Učitava ono što ste odabrali. To su očito primjeri podataka, radnja se može sigurno ponoviti, a poslije ih možete obrisati.", + "None, I will set this up myself": "Ništa, sam ću ovo postaviti", + "Nothing is imported. You start with an empty app and add your own data.": "Ništa se ne uvozi. Počinjete s praznom aplikacijom i dodajete vlastite podatke.", + "Example data": "Primjeri podataka", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Primjeri vrijednosti za svaku shemu koju ova aplikacija donosi, generisani iz samih shema. Pokazuju liste, stranice s detaljima i kontrolne table u radu umjesto da pričaju priču. Sigurno za ponavljanje i brisanje poslije.", "Larpinq": "Larpinq", "Dashboard": "Kontrolna ploča", "Characters": "Likovi", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Nema — ovo je osnovna vještina.", "Where the automation lives": "Gdje živi automatizacija", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows je ono što se dešava bez ičijeg klika: podsjetnik prije isteka roka, potvrda pri predaji. Ovdje ih čitaš i uređuješ — sada nema šta da se gradi.", - "Open Flows in the menu": "Otvori Flows u meniju" + "Open Flows in the menu": "Otvori Flows u meniju", + "Ability Name": "Naziv sposobnosti", + "Affected Characters": "Zahvaćeni likovi", + "Amount of copper pieces": "Broj bakrenih novčića", + "Amount of gold pieces": "Broj zlatnih novčića", + "Amount of silver pieces": "Broj srebrnih novčića", + "Automatic system notices": "Automatska sistemska obavještenja", + "Award Reason": "Razlog dodjele", + "Awarded At": "Dodijeljeno", + "Awarded By": "Dodijelio", + "Background Story": "Pozadinska priča", + "Base Value": "Osnovna vrijednost", + "Character Card": "Kartica lika", + "Character Name": "Ime lika", + "Checked In At": "Dolazak zabilježen", + "Checked In By": "Dolazak zabilježio", + "Condition Name": "Naziv stanja", + "Contact email address": "Kontakt e-mail adresa", + "Copper Pieces": "Bakreni novčići", + "Effect Name": "Naziv efekta", + "End Date": "Datum završetka", + "Event Name": "Naziv događaja", + "Event description": "Opis događaja", + "Event end date and time": "Datum i vrijeme završetka događaja", + "Event location": "Mjesto događaja", + "Event name": "Naziv događaja", + "Event start date and time": "Datum i vrijeme početka događaja", + "Faith": "Vjera", + "Full name of the player": "Puno ime igrača", + "Game Master Notes (Private)": "Bilješke voditelja igre (privatne)", + "Game Master Notes (Public)": "Bilješke voditelja igre (javne)", + "Gold Pieces": "Zlatni novčići", + "Item Name": "Naziv predmeta", + "Items and Money": "Predmeti i novac", + "Mechanical Effect": "Efekat u igri", + "Modifier Value": "Vrijednost modifikatora", + "Name of the condition": "Naziv stanja", + "Name of the effect": "Naziv efekta", + "Name of the event": "Naziv događaja", + "Name of the item": "Naziv predmeta", + "Name of the skill": "Naziv vještine", + "Name of the stat": "Naziv svojstva", + "Nextcloud user": "Nextcloud korisnik", + "Notes about items and money": "Bilješke o predmetima i novcu", + "Notes about the player": "Bilješke o igraču", + "Overridden At": "Izuzetak odobren", + "Overridden By": "Izuzetak odobrio", + "Override Reason": "Razlog izuzetka", + "Owner": "Vlasnik", + "Owner UID": "UID vlasnika", + "Participating Characters": "Učestvujući likovi", + "Player Name": "Ime igrača", + "Post-Event Effects": "Efekti nakon događaja", + "Real name of the player": "Pravo ime igrača", + "Required Conditions": "Potrebna stanja", + "Required Effects": "Potrebni efekti", + "Required Score": "Potrebna vrijednost", + "Required Skills": "Potrebne vještine", + "Required Stats": "Potrebna svojstva", + "Requirement Overrides": "Izuzeci od preduslova", + "Setting Name": "Naziv svijeta igre", + "Silver Pieces": "Srebrni novčići", + "Skill Name": "Naziv vještine", + "Start Date": "Datum početka", + "Starting value for all characters": "Početna vrijednost za sve likove", + "Stat": "Svojstvo", + "Status": "Status", + "System Notice": "Sistemsko obavještenje", + "Unique Artifact": "Jedinstveni artefakt", + "Unique Condition": "Jedinstveno stanje", + "XP Amount": "Broj bodova iskustva", + "XP Award": "Dodjela bodova iskustva", + "Reports": "Izvještaji", + "Pick a report to open it.": "Odaberite izvještaj da biste ga otvorili.", + "Open": "Otvoreno", + "In progress": "U toku", + "Blocked": "Blokirano", + "Date": "Datum", + "Due": "Rok", + "Assignee": "Dodijeljeno", + "Who": "Ko", + "What": "Šta", + "Minutes": "Minute", + "Entries": "Unosi", + "Most recent": "Najnovije", + "Per person": "Po osobi", + "By status": "Po statusu", + "By priority": "Po prioritetu", + "Character roster": "Spisak likova", + "Progression": "Napredak", + "World content": "Sadržaj svijeta", + "Awaiting approval": "Čeka odobrenje", + "Player characters": "Likovi igrača", + "Awards": "Dodjele", + "Experience": "Iskustvo", + "Experience awarded": "Dodijeljeno iskustvo", + "Per character": "Po liku", + "By type": "Po tipu", + "By approval": "Po odobrenju", + "Items carried by characters": "Predmeti koje likovi nose", + "Conditions on characters": "Stanja na likovima", + "Nothing awarded yet": "Još ništa nije dodijeljeno", + "Who is playing what, and what is still waiting for approval.": "Ko šta igra i šta još čeka odobrenje.", + "Experience awarded, and who earned it.": "Dodijeljeno iskustvo i ko ga je zaradio.", + "How much the world holds, and what characters actually carry.": "Koliko svijet sadrži i šta likovi zaista nose.", + "Store": "Trgovina", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Instalirajte registre, šeme i tokove koje su objavile druge organizacije." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/bs.json b/l10n/bs.json index 4b3d4b2e..a08db358 100644 --- a/l10n/bs.json +++ b/l10n/bs.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Učitati primjere podataka?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Primjeri podataka popunjavaju liste, stranice s detaljima i kontrolne table, pa aplikaciju odmah vidite kako radi. Odaberite \"Ništa\" na produkcijskoj instalaciji.", + "Load the example data": "Učitaj primjere podataka", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Učitava ono što ste odabrali. To su očito primjeri podataka, radnja se može sigurno ponoviti, a poslije ih možete obrisati.", + "None, I will set this up myself": "Ništa, sam ću ovo postaviti", + "Nothing is imported. You start with an empty app and add your own data.": "Ništa se ne uvozi. Počinjete s praznom aplikacijom i dodajete vlastite podatke.", + "Example data": "Primjeri podataka", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Primjeri vrijednosti za svaku shemu koju ova aplikacija donosi, generisani iz samih shema. Pokazuju liste, stranice s detaljima i kontrolne table u radu umjesto da pričaju priču. Sigurno za ponavljanje i brisanje poslije.", "Larpinq": "Larpinq", "Dashboard": "Kontrolna ploča", "Characters": "Likovi", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Nema — ovo je osnovna vještina.", "Where the automation lives": "Gdje živi automatizacija", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows je ono što se dešava bez ičijeg klika: podsjetnik prije isteka roka, potvrda pri predaji. Ovdje ih čitaš i uređuješ — sada nema šta da se gradi.", - "Open Flows in the menu": "Otvori Flows u meniju" + "Open Flows in the menu": "Otvori Flows u meniju", + "Ability Name": "Naziv sposobnosti", + "Affected Characters": "Zahvaćeni likovi", + "Amount of copper pieces": "Broj bakrenih novčića", + "Amount of gold pieces": "Broj zlatnih novčića", + "Amount of silver pieces": "Broj srebrnih novčića", + "Automatic system notices": "Automatska sistemska obavještenja", + "Award Reason": "Razlog dodjele", + "Awarded At": "Dodijeljeno", + "Awarded By": "Dodijelio", + "Background Story": "Pozadinska priča", + "Base Value": "Osnovna vrijednost", + "Character Card": "Kartica lika", + "Character Name": "Ime lika", + "Checked In At": "Dolazak zabilježen", + "Checked In By": "Dolazak zabilježio", + "Condition Name": "Naziv stanja", + "Contact email address": "Kontakt e-mail adresa", + "Copper Pieces": "Bakreni novčići", + "Effect Name": "Naziv efekta", + "End Date": "Datum završetka", + "Event Name": "Naziv događaja", + "Event description": "Opis događaja", + "Event end date and time": "Datum i vrijeme završetka događaja", + "Event location": "Mjesto događaja", + "Event name": "Naziv događaja", + "Event start date and time": "Datum i vrijeme početka događaja", + "Faith": "Vjera", + "Full name of the player": "Puno ime igrača", + "Game Master Notes (Private)": "Bilješke voditelja igre (privatne)", + "Game Master Notes (Public)": "Bilješke voditelja igre (javne)", + "Gold Pieces": "Zlatni novčići", + "Item Name": "Naziv predmeta", + "Items and Money": "Predmeti i novac", + "Mechanical Effect": "Efekat u igri", + "Modifier Value": "Vrijednost modifikatora", + "Name of the condition": "Naziv stanja", + "Name of the effect": "Naziv efekta", + "Name of the event": "Naziv događaja", + "Name of the item": "Naziv predmeta", + "Name of the skill": "Naziv vještine", + "Name of the stat": "Naziv svojstva", + "Nextcloud user": "Nextcloud korisnik", + "Notes about items and money": "Bilješke o predmetima i novcu", + "Notes about the player": "Bilješke o igraču", + "Overridden At": "Izuzetak odobren", + "Overridden By": "Izuzetak odobrio", + "Override Reason": "Razlog izuzetka", + "Owner": "Vlasnik", + "Owner UID": "UID vlasnika", + "Participating Characters": "Učestvujući likovi", + "Player Name": "Ime igrača", + "Post-Event Effects": "Efekti nakon događaja", + "Real name of the player": "Pravo ime igrača", + "Required Conditions": "Potrebna stanja", + "Required Effects": "Potrebni efekti", + "Required Score": "Potrebna vrijednost", + "Required Skills": "Potrebne vještine", + "Required Stats": "Potrebna svojstva", + "Requirement Overrides": "Izuzeci od preduslova", + "Setting Name": "Naziv svijeta igre", + "Silver Pieces": "Srebrni novčići", + "Skill Name": "Naziv vještine", + "Start Date": "Datum početka", + "Starting value for all characters": "Početna vrijednost za sve likove", + "Stat": "Svojstvo", + "Status": "Status", + "System Notice": "Sistemsko obavještenje", + "Unique Artifact": "Jedinstveni artefakt", + "Unique Condition": "Jedinstveno stanje", + "XP Amount": "Broj bodova iskustva", + "XP Award": "Dodjela bodova iskustva", + "Reports": "Izvještaji", + "Pick a report to open it.": "Odaberite izvještaj da biste ga otvorili.", + "Open": "Otvoreno", + "In progress": "U toku", + "Blocked": "Blokirano", + "Date": "Datum", + "Due": "Rok", + "Assignee": "Dodijeljeno", + "Who": "Ko", + "What": "Šta", + "Minutes": "Minute", + "Entries": "Unosi", + "Most recent": "Najnovije", + "Per person": "Po osobi", + "By status": "Po statusu", + "By priority": "Po prioritetu", + "Character roster": "Spisak likova", + "Progression": "Napredak", + "World content": "Sadržaj svijeta", + "Awaiting approval": "Čeka odobrenje", + "Player characters": "Likovi igrača", + "Awards": "Dodjele", + "Experience": "Iskustvo", + "Experience awarded": "Dodijeljeno iskustvo", + "Per character": "Po liku", + "By type": "Po tipu", + "By approval": "Po odobrenju", + "Items carried by characters": "Predmeti koje likovi nose", + "Conditions on characters": "Stanja na likovima", + "Nothing awarded yet": "Još ništa nije dodijeljeno", + "Who is playing what, and what is still waiting for approval.": "Ko šta igra i šta još čeka odobrenje.", + "Experience awarded, and who earned it.": "Dodijeljeno iskustvo i ko ga je zaradio.", + "How much the world holds, and what characters actually carry.": "Koliko svijet sadrži i šta likovi zaista nose.", + "Store": "Trgovina", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Instalirajte registre, šeme i tokove koje su objavile druge organizacije." }, "plurals": {} } diff --git a/l10n/ca.js b/l10n/ca.js index ea325fac..d26b0e5c 100644 --- a/l10n/ca.js +++ b/l10n/ca.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Voleu carregar dades d’exemple?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Les dades d’exemple omplen les llistes, les pàgines de detall i els taulers, perquè vegeu l’aplicació funcionant de seguida. Trieu \"Cap\" en una instal·lació de producció.", + "Load the example data": "Carrega les dades d’exemple", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Carrega el que heu triat. Són clarament dades d’exemple, l’operació es pot repetir sense risc i les podeu esborrar després.", + "None, I will set this up myself": "Cap, ja ho configuraré jo mateix", + "Nothing is imported. You start with an empty app and add your own data.": "No s’importa res. Comenceu amb una aplicació buida i hi afegiu les vostres dades.", + "Example data": "Dades d’exemple", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Valors d’exemple per a cada esquema que aporta aquesta aplicació, generats a partir dels esquemes mateixos. Mostren les llistes, les pàgines de detall i els taulers funcionant en lloc d’explicar una història. Es pot repetir sense risc i esborrar després.", "Larpinq": "Larpinq", "Dashboard": "Tauler", "Characters": "Personatges", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Cap — aquesta és una aptitud arrel.", "Where the automation lives": "On viu l'automatització", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Els Flows són el que passa sense que ningú faci clic: un recordatori abans que venci un termini, una confirmació en enviar. Aquí els llegeixes i els edites — ara no cal construir res.", - "Open Flows in the menu": "Obre Flows al menú" + "Open Flows in the menu": "Obre Flows al menú", + "Ability Name": "Nom de l'habilitat", + "Affected Characters": "Personatges afectats", + "Amount of copper pieces": "Quantitat de monedes de coure", + "Amount of gold pieces": "Quantitat de monedes d'or", + "Amount of silver pieces": "Quantitat de monedes de plata", + "Automatic system notices": "Avisos automàtics del sistema", + "Award Reason": "Motiu de la concessió", + "Awarded At": "Concedit el", + "Awarded By": "Concedit per", + "Background Story": "Història de rerefons", + "Base Value": "Valor base", + "Character Card": "Fitxa de personatge", + "Character Name": "Nom del personatge", + "Checked In At": "Entrada registrada el", + "Checked In By": "Entrada registrada per", + "Condition Name": "Nom de la condició", + "Contact email address": "Adreça electrònica de contacte", + "Copper Pieces": "Monedes de coure", + "Effect Name": "Nom de l'efecte", + "End Date": "Data de finalització", + "Event Name": "Nom de l'esdeveniment", + "Event description": "Descripció de l'esdeveniment", + "Event end date and time": "Data i hora de finalització de l'esdeveniment", + "Event location": "Ubicació de l'esdeveniment", + "Event name": "Nom de l'esdeveniment", + "Event start date and time": "Data i hora d'inici de l'esdeveniment", + "Faith": "Fe", + "Full name of the player": "Nom complet del jugador", + "Game Master Notes (Private)": "Notes del narrador (privades)", + "Game Master Notes (Public)": "Notes del narrador (públiques)", + "Gold Pieces": "Monedes d'or", + "Item Name": "Nom de l'objecte", + "Items and Money": "Objectes i diners", + "Mechanical Effect": "Efecte de joc", + "Modifier Value": "Valor del modificador", + "Name of the condition": "Nom de la condició", + "Name of the effect": "Nom de l'efecte", + "Name of the event": "Nom de l'esdeveniment", + "Name of the item": "Nom de l'objecte", + "Name of the skill": "Nom de l'aptitud", + "Name of the stat": "Nom de la característica", + "Nextcloud user": "Usuari de Nextcloud", + "Notes about items and money": "Notes sobre els objectes i els diners", + "Notes about the player": "Notes sobre el jugador", + "Overridden At": "Excepció concedida el", + "Overridden By": "Excepció concedida per", + "Override Reason": "Motiu de l'excepció", + "Owner": "Propietari", + "Owner UID": "UID del propietari", + "Participating Characters": "Personatges participants", + "Player Name": "Nom del jugador", + "Post-Event Effects": "Efectes posteriors a l'esdeveniment", + "Real name of the player": "Nom real del jugador", + "Required Conditions": "Condicions requerides", + "Required Effects": "Efectes requerits", + "Required Score": "Valor requerit", + "Required Skills": "Aptituds requerides", + "Required Stats": "Característiques requerides", + "Requirement Overrides": "Excepcions als prerequisits", + "Setting Name": "Nom de l'ambientació", + "Silver Pieces": "Monedes de plata", + "Skill Name": "Nom de l'aptitud", + "Start Date": "Data d'inici", + "Starting value for all characters": "Valor inicial per a tots els personatges", + "Stat": "Característica", + "Status": "Estat", + "System Notice": "Avís del sistema", + "Unique Artifact": "Artefacte únic", + "Unique Condition": "Condició única", + "XP Amount": "Quantitat de punts d'experiència", + "XP Award": "Concessió de punts d'experiència", + "Reports": "Informes", + "Pick a report to open it.": "Trieu un informe per obrir-lo.", + "Open": "Obert", + "In progress": "En curs", + "Blocked": "Bloquejat", + "Date": "Data", + "Due": "Venciment", + "Assignee": "Assignat a", + "Who": "Qui", + "What": "Què", + "Minutes": "Minuts", + "Entries": "Entrades", + "Most recent": "Més recents", + "Per person": "Per persona", + "By status": "Per estat", + "By priority": "Per prioritat", + "Character roster": "Llista de personatges", + "Progression": "Progressió", + "World content": "Contingut del món", + "Awaiting approval": "Pendent d'aprovació", + "Player characters": "Personatges jugadors", + "Awards": "Concessions", + "Experience": "Experiència", + "Experience awarded": "Experiència concedida", + "Per character": "Per personatge", + "By type": "Per tipus", + "By approval": "Per aprovació", + "Items carried by characters": "Objectes que porten els personatges", + "Conditions on characters": "Estats als personatges", + "Nothing awarded yet": "Encara no s'ha concedit res", + "Who is playing what, and what is still waiting for approval.": "Qui juga a què, i què encara espera aprovació.", + "Experience awarded, and who earned it.": "L'experiència concedida i qui l'ha guanyada.", + "How much the world holds, and what characters actually carry.": "Quant conté el món, i què porten realment els personatges.", + "Store": "Botiga", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Instal·leu registres, esquemes i fluxos publicats per altres organitzacions." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/ca.json b/l10n/ca.json index 0ccf9393..56305a48 100644 --- a/l10n/ca.json +++ b/l10n/ca.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Voleu carregar dades d’exemple?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Les dades d’exemple omplen les llistes, les pàgines de detall i els taulers, perquè vegeu l’aplicació funcionant de seguida. Trieu \"Cap\" en una instal·lació de producció.", + "Load the example data": "Carrega les dades d’exemple", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Carrega el que heu triat. Són clarament dades d’exemple, l’operació es pot repetir sense risc i les podeu esborrar després.", + "None, I will set this up myself": "Cap, ja ho configuraré jo mateix", + "Nothing is imported. You start with an empty app and add your own data.": "No s’importa res. Comenceu amb una aplicació buida i hi afegiu les vostres dades.", + "Example data": "Dades d’exemple", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Valors d’exemple per a cada esquema que aporta aquesta aplicació, generats a partir dels esquemes mateixos. Mostren les llistes, les pàgines de detall i els taulers funcionant en lloc d’explicar una història. Es pot repetir sense risc i esborrar després.", "Larpinq": "Larpinq", "Dashboard": "Tauler", "Characters": "Personatges", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Cap — aquesta és una aptitud arrel.", "Where the automation lives": "On viu l'automatització", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Els Flows són el que passa sense que ningú faci clic: un recordatori abans que venci un termini, una confirmació en enviar. Aquí els llegeixes i els edites — ara no cal construir res.", - "Open Flows in the menu": "Obre Flows al menú" + "Open Flows in the menu": "Obre Flows al menú", + "Ability Name": "Nom de l'habilitat", + "Affected Characters": "Personatges afectats", + "Amount of copper pieces": "Quantitat de monedes de coure", + "Amount of gold pieces": "Quantitat de monedes d'or", + "Amount of silver pieces": "Quantitat de monedes de plata", + "Automatic system notices": "Avisos automàtics del sistema", + "Award Reason": "Motiu de la concessió", + "Awarded At": "Concedit el", + "Awarded By": "Concedit per", + "Background Story": "Història de rerefons", + "Base Value": "Valor base", + "Character Card": "Fitxa de personatge", + "Character Name": "Nom del personatge", + "Checked In At": "Entrada registrada el", + "Checked In By": "Entrada registrada per", + "Condition Name": "Nom de la condició", + "Contact email address": "Adreça electrònica de contacte", + "Copper Pieces": "Monedes de coure", + "Effect Name": "Nom de l'efecte", + "End Date": "Data de finalització", + "Event Name": "Nom de l'esdeveniment", + "Event description": "Descripció de l'esdeveniment", + "Event end date and time": "Data i hora de finalització de l'esdeveniment", + "Event location": "Ubicació de l'esdeveniment", + "Event name": "Nom de l'esdeveniment", + "Event start date and time": "Data i hora d'inici de l'esdeveniment", + "Faith": "Fe", + "Full name of the player": "Nom complet del jugador", + "Game Master Notes (Private)": "Notes del narrador (privades)", + "Game Master Notes (Public)": "Notes del narrador (públiques)", + "Gold Pieces": "Monedes d'or", + "Item Name": "Nom de l'objecte", + "Items and Money": "Objectes i diners", + "Mechanical Effect": "Efecte de joc", + "Modifier Value": "Valor del modificador", + "Name of the condition": "Nom de la condició", + "Name of the effect": "Nom de l'efecte", + "Name of the event": "Nom de l'esdeveniment", + "Name of the item": "Nom de l'objecte", + "Name of the skill": "Nom de l'aptitud", + "Name of the stat": "Nom de la característica", + "Nextcloud user": "Usuari de Nextcloud", + "Notes about items and money": "Notes sobre els objectes i els diners", + "Notes about the player": "Notes sobre el jugador", + "Overridden At": "Excepció concedida el", + "Overridden By": "Excepció concedida per", + "Override Reason": "Motiu de l'excepció", + "Owner": "Propietari", + "Owner UID": "UID del propietari", + "Participating Characters": "Personatges participants", + "Player Name": "Nom del jugador", + "Post-Event Effects": "Efectes posteriors a l'esdeveniment", + "Real name of the player": "Nom real del jugador", + "Required Conditions": "Condicions requerides", + "Required Effects": "Efectes requerits", + "Required Score": "Valor requerit", + "Required Skills": "Aptituds requerides", + "Required Stats": "Característiques requerides", + "Requirement Overrides": "Excepcions als prerequisits", + "Setting Name": "Nom de l'ambientació", + "Silver Pieces": "Monedes de plata", + "Skill Name": "Nom de l'aptitud", + "Start Date": "Data d'inici", + "Starting value for all characters": "Valor inicial per a tots els personatges", + "Stat": "Característica", + "Status": "Estat", + "System Notice": "Avís del sistema", + "Unique Artifact": "Artefacte únic", + "Unique Condition": "Condició única", + "XP Amount": "Quantitat de punts d'experiència", + "XP Award": "Concessió de punts d'experiència", + "Reports": "Informes", + "Pick a report to open it.": "Trieu un informe per obrir-lo.", + "Open": "Obert", + "In progress": "En curs", + "Blocked": "Bloquejat", + "Date": "Data", + "Due": "Venciment", + "Assignee": "Assignat a", + "Who": "Qui", + "What": "Què", + "Minutes": "Minuts", + "Entries": "Entrades", + "Most recent": "Més recents", + "Per person": "Per persona", + "By status": "Per estat", + "By priority": "Per prioritat", + "Character roster": "Llista de personatges", + "Progression": "Progressió", + "World content": "Contingut del món", + "Awaiting approval": "Pendent d'aprovació", + "Player characters": "Personatges jugadors", + "Awards": "Concessions", + "Experience": "Experiència", + "Experience awarded": "Experiència concedida", + "Per character": "Per personatge", + "By type": "Per tipus", + "By approval": "Per aprovació", + "Items carried by characters": "Objectes que porten els personatges", + "Conditions on characters": "Estats als personatges", + "Nothing awarded yet": "Encara no s'ha concedit res", + "Who is playing what, and what is still waiting for approval.": "Qui juga a què, i què encara espera aprovació.", + "Experience awarded, and who earned it.": "L'experiència concedida i qui l'ha guanyada.", + "How much the world holds, and what characters actually carry.": "Quant conté el món, i què porten realment els personatges.", + "Store": "Botiga", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Instal·leu registres, esquemes i fluxos publicats per altres organitzacions." }, "plurals": {} } diff --git a/l10n/cs.js b/l10n/cs.js index 08c0f281..fc07bbac 100644 --- a/l10n/cs.js +++ b/l10n/cs.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Načíst ukázková data?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Ukázková data naplní seznamy, stránky s podrobnostmi a nástěnky, takže aplikaci uvidíte hned v provozu. Na produkční instalaci zvolte \"Žádná\".", + "Load the example data": "Načíst ukázková data", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Načte, co jste vybrali. Jsou to zjevně ukázková data, akci lze bezpečně opakovat a poté je můžete smazat.", + "None, I will set this up myself": "Žádná, nastavím si to sám", + "Nothing is imported. You start with an empty app and add your own data.": "Nic se neimportuje. Začínáte s prázdnou aplikací a přidáte vlastní data.", + "Example data": "Ukázková data", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Ukázkové hodnoty pro každé schéma, které tato aplikace přináší, vygenerované ze samotných schémat. Ukazují seznamy, stránky s podrobnostmi a nástěnky v provozu, místo aby vyprávěly příběh. Lze bezpečně opakovat a poté smazat.", "Larpinq": "Larpinq", "Dashboard": "Nástěnka", "Characters": "Postavy", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Žádné — toto je kořenová dovednost.", "Where the automation lives": "Kde bydlí automatizace", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows je to, co se děje, aniž by někdo klikl: připomínka před vypršením lhůty, potvrzení při odeslání. Tady je čteš a upravuješ — teď není co stavět.", - "Open Flows in the menu": "Otevři Flows v nabídce" + "Open Flows in the menu": "Otevři Flows v nabídce", + "Ability Name": "Název schopnosti", + "Affected Characters": "Dotčené postavy", + "Amount of copper pieces": "Počet měděných mincí", + "Amount of gold pieces": "Počet zlatých mincí", + "Amount of silver pieces": "Počet stříbrných mincí", + "Automatic system notices": "Automatická systémová oznámení", + "Award Reason": "Důvod udělení", + "Awarded At": "Uděleno dne", + "Awarded By": "Udělil", + "Background Story": "Příběh postavy", + "Base Value": "Základní hodnota", + "Character Card": "Karta postavy", + "Character Name": "Jméno postavy", + "Checked In At": "Příchod zaregistrován dne", + "Checked In By": "Příchod zaregistroval", + "Condition Name": "Název stavu", + "Contact email address": "Kontaktní e-mailová adresa", + "Copper Pieces": "Měděné mince", + "Effect Name": "Název efektu", + "End Date": "Datum konce", + "Event Name": "Název události", + "Event description": "Popis události", + "Event end date and time": "Datum a čas konce události", + "Event location": "Místo konání události", + "Event name": "Název události", + "Event start date and time": "Datum a čas začátku události", + "Faith": "Víra", + "Full name of the player": "Celé jméno hráče", + "Game Master Notes (Private)": "Poznámky vypravěče (soukromé)", + "Game Master Notes (Public)": "Poznámky vypravěče (veřejné)", + "Gold Pieces": "Zlaté mince", + "Item Name": "Název předmětu", + "Items and Money": "Předměty a peníze", + "Mechanical Effect": "Herní efekt", + "Modifier Value": "Hodnota modifikátoru", + "Name of the condition": "Název stavu", + "Name of the effect": "Název efektu", + "Name of the event": "Název události", + "Name of the item": "Název předmětu", + "Name of the skill": "Název dovednosti", + "Name of the stat": "Název vlastnosti", + "Nextcloud user": "Uživatel Nextcloudu", + "Notes about items and money": "Poznámky k předmětům a penězům", + "Notes about the player": "Poznámky k hráči", + "Overridden At": "Výjimka udělena dne", + "Overridden By": "Výjimku udělil", + "Override Reason": "Důvod výjimky", + "Owner": "Vlastník", + "Owner UID": "UID vlastníka", + "Participating Characters": "Zúčastněné postavy", + "Player Name": "Jméno hráče", + "Post-Event Effects": "Efekty po události", + "Real name of the player": "Skutečné jméno hráče", + "Required Conditions": "Požadované stavy", + "Required Effects": "Požadované efekty", + "Required Score": "Požadovaná hodnota", + "Required Skills": "Požadované dovednosti", + "Required Stats": "Požadované vlastnosti", + "Requirement Overrides": "Výjimky z předpokladů", + "Setting Name": "Název herního světa", + "Silver Pieces": "Stříbrné mince", + "Skill Name": "Název dovednosti", + "Start Date": "Datum začátku", + "Starting value for all characters": "Počáteční hodnota pro všechny postavy", + "Stat": "Vlastnost", + "Status": "Status", + "System Notice": "Systémové oznámení", + "Unique Artifact": "Jedinečný artefakt", + "Unique Condition": "Jedinečný stav", + "XP Amount": "Počet zkušenostních bodů", + "XP Award": "Udělení zkušenostních bodů", + "Reports": "Sestavy", + "Pick a report to open it.": "Vyberte sestavu, kterou chcete otevřít.", + "Open": "Otevřené", + "In progress": "Probíhá", + "Blocked": "Blokováno", + "Date": "Datum", + "Due": "Termín", + "Assignee": "Přiřazeno", + "Who": "Kdo", + "What": "Co", + "Minutes": "Minuty", + "Entries": "Záznamy", + "Most recent": "Nejnovější", + "Per person": "Na osobu", + "By status": "Podle stavu", + "By priority": "Podle priority", + "Character roster": "Seznam postav", + "Progression": "Postup", + "World content": "Obsah světa", + "Awaiting approval": "Čeká na schválení", + "Player characters": "Postavy hráčů", + "Awards": "Udělení", + "Experience": "Zkušenosti", + "Experience awarded": "Udělené zkušenosti", + "Per character": "Na postavu", + "By type": "Podle typu", + "By approval": "Podle schválení", + "Items carried by characters": "Předměty nesené postavami", + "Conditions on characters": "Stavy na postavách", + "Nothing awarded yet": "Zatím nic uděleno", + "Who is playing what, and what is still waiting for approval.": "Kdo hraje co a co ještě čeká na schválení.", + "Experience awarded, and who earned it.": "Udělené zkušenosti a kdo si je vysloužil.", + "How much the world holds, and what characters actually carry.": "Kolik svět obsahuje a co postavy skutečně nesou.", + "Store": "Obchod", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Nainstalujte registry, schémata a toky zveřejněné jinými organizacemi." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/cs.json b/l10n/cs.json index 2b4a929e..d0a457a6 100644 --- a/l10n/cs.json +++ b/l10n/cs.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Načíst ukázková data?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Ukázková data naplní seznamy, stránky s podrobnostmi a nástěnky, takže aplikaci uvidíte hned v provozu. Na produkční instalaci zvolte \"Žádná\".", + "Load the example data": "Načíst ukázková data", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Načte, co jste vybrali. Jsou to zjevně ukázková data, akci lze bezpečně opakovat a poté je můžete smazat.", + "None, I will set this up myself": "Žádná, nastavím si to sám", + "Nothing is imported. You start with an empty app and add your own data.": "Nic se neimportuje. Začínáte s prázdnou aplikací a přidáte vlastní data.", + "Example data": "Ukázková data", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Ukázkové hodnoty pro každé schéma, které tato aplikace přináší, vygenerované ze samotných schémat. Ukazují seznamy, stránky s podrobnostmi a nástěnky v provozu, místo aby vyprávěly příběh. Lze bezpečně opakovat a poté smazat.", "Larpinq": "Larpinq", "Dashboard": "Nástěnka", "Characters": "Postavy", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Žádné — toto je kořenová dovednost.", "Where the automation lives": "Kde bydlí automatizace", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows je to, co se děje, aniž by někdo klikl: připomínka před vypršením lhůty, potvrzení při odeslání. Tady je čteš a upravuješ — teď není co stavět.", - "Open Flows in the menu": "Otevři Flows v nabídce" + "Open Flows in the menu": "Otevři Flows v nabídce", + "Ability Name": "Název schopnosti", + "Affected Characters": "Dotčené postavy", + "Amount of copper pieces": "Počet měděných mincí", + "Amount of gold pieces": "Počet zlatých mincí", + "Amount of silver pieces": "Počet stříbrných mincí", + "Automatic system notices": "Automatická systémová oznámení", + "Award Reason": "Důvod udělení", + "Awarded At": "Uděleno dne", + "Awarded By": "Udělil", + "Background Story": "Příběh postavy", + "Base Value": "Základní hodnota", + "Character Card": "Karta postavy", + "Character Name": "Jméno postavy", + "Checked In At": "Příchod zaregistrován dne", + "Checked In By": "Příchod zaregistroval", + "Condition Name": "Název stavu", + "Contact email address": "Kontaktní e-mailová adresa", + "Copper Pieces": "Měděné mince", + "Effect Name": "Název efektu", + "End Date": "Datum konce", + "Event Name": "Název události", + "Event description": "Popis události", + "Event end date and time": "Datum a čas konce události", + "Event location": "Místo konání události", + "Event name": "Název události", + "Event start date and time": "Datum a čas začátku události", + "Faith": "Víra", + "Full name of the player": "Celé jméno hráče", + "Game Master Notes (Private)": "Poznámky vypravěče (soukromé)", + "Game Master Notes (Public)": "Poznámky vypravěče (veřejné)", + "Gold Pieces": "Zlaté mince", + "Item Name": "Název předmětu", + "Items and Money": "Předměty a peníze", + "Mechanical Effect": "Herní efekt", + "Modifier Value": "Hodnota modifikátoru", + "Name of the condition": "Název stavu", + "Name of the effect": "Název efektu", + "Name of the event": "Název události", + "Name of the item": "Název předmětu", + "Name of the skill": "Název dovednosti", + "Name of the stat": "Název vlastnosti", + "Nextcloud user": "Uživatel Nextcloudu", + "Notes about items and money": "Poznámky k předmětům a penězům", + "Notes about the player": "Poznámky k hráči", + "Overridden At": "Výjimka udělena dne", + "Overridden By": "Výjimku udělil", + "Override Reason": "Důvod výjimky", + "Owner": "Vlastník", + "Owner UID": "UID vlastníka", + "Participating Characters": "Zúčastněné postavy", + "Player Name": "Jméno hráče", + "Post-Event Effects": "Efekty po události", + "Real name of the player": "Skutečné jméno hráče", + "Required Conditions": "Požadované stavy", + "Required Effects": "Požadované efekty", + "Required Score": "Požadovaná hodnota", + "Required Skills": "Požadované dovednosti", + "Required Stats": "Požadované vlastnosti", + "Requirement Overrides": "Výjimky z předpokladů", + "Setting Name": "Název herního světa", + "Silver Pieces": "Stříbrné mince", + "Skill Name": "Název dovednosti", + "Start Date": "Datum začátku", + "Starting value for all characters": "Počáteční hodnota pro všechny postavy", + "Stat": "Vlastnost", + "Status": "Status", + "System Notice": "Systémové oznámení", + "Unique Artifact": "Jedinečný artefakt", + "Unique Condition": "Jedinečný stav", + "XP Amount": "Počet zkušenostních bodů", + "XP Award": "Udělení zkušenostních bodů", + "Reports": "Sestavy", + "Pick a report to open it.": "Vyberte sestavu, kterou chcete otevřít.", + "Open": "Otevřené", + "In progress": "Probíhá", + "Blocked": "Blokováno", + "Date": "Datum", + "Due": "Termín", + "Assignee": "Přiřazeno", + "Who": "Kdo", + "What": "Co", + "Minutes": "Minuty", + "Entries": "Záznamy", + "Most recent": "Nejnovější", + "Per person": "Na osobu", + "By status": "Podle stavu", + "By priority": "Podle priority", + "Character roster": "Seznam postav", + "Progression": "Postup", + "World content": "Obsah světa", + "Awaiting approval": "Čeká na schválení", + "Player characters": "Postavy hráčů", + "Awards": "Udělení", + "Experience": "Zkušenosti", + "Experience awarded": "Udělené zkušenosti", + "Per character": "Na postavu", + "By type": "Podle typu", + "By approval": "Podle schválení", + "Items carried by characters": "Předměty nesené postavami", + "Conditions on characters": "Stavy na postavách", + "Nothing awarded yet": "Zatím nic uděleno", + "Who is playing what, and what is still waiting for approval.": "Kdo hraje co a co ještě čeká na schválení.", + "Experience awarded, and who earned it.": "Udělené zkušenosti a kdo si je vysloužil.", + "How much the world holds, and what characters actually carry.": "Kolik svět obsahuje a co postavy skutečně nesou.", + "Store": "Obchod", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Nainstalujte registry, schémata a toky zveřejněné jinými organizacemi." }, "plurals": {} } diff --git a/l10n/da.js b/l10n/da.js index 959db1eb..3d355eb0 100644 --- a/l10n/da.js +++ b/l10n/da.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Indlæs eksempeldata?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Eksempeldata fylder lister, detaljesider og dashboards, så du med det samme ser appen virke. Vælg \"Ingen\" på en produktionsinstallation.", + "Load the example data": "Indlæs eksempeldataene", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Indlæser det, du valgte. Det er tydeligvis eksempeldata, handlingen kan gentages uden risiko, og du kan slette dem bagefter.", + "None, I will set this up myself": "Ingen, jeg sætter det op selv", + "Nothing is imported. You start with an empty app and add your own data.": "Der importeres intet. Du starter med en tom app og tilføjer dine egne data.", + "Example data": "Eksempeldata", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Eksempelværdier for hvert skema, denne app leverer, genereret ud fra skemaerne selv. De viser lister, detaljesider og dashboards i drift frem for at fortælle en historie. Kan gentages uden risiko og slettes bagefter.", "Larpinq": "Larpinq", "Dashboard": "Oversigt", "Characters": "Karakterer", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Ingen — dette er en grundfærdighed.", "Where the automation lives": "Hvor automatiseringen bor", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows er det, der sker, uden at nogen klikker: en påmindelse, før en frist udløber, en bekræftelse ved indsendelse. Her læser og redigerer du dem — der er ikke noget at bygge nu.", - "Open Flows in the menu": "Åbn Flows i menuen" + "Open Flows in the menu": "Åbn Flows i menuen", + "Ability Name": "Navn på evnen", + "Affected Characters": "Berørte karakterer", + "Amount of copper pieces": "Antal kobberstykker", + "Amount of gold pieces": "Antal guldstykker", + "Amount of silver pieces": "Antal sølvstykker", + "Automatic system notices": "Automatiske systemmeddelelser", + "Award Reason": "Årsag til tildelingen", + "Awarded At": "Tildelt den", + "Awarded By": "Tildelt af", + "Background Story": "Baggrundshistorie", + "Base Value": "Basisværdi", + "Character Card": "Karakterkort", + "Character Name": "Navn på karakteren", + "Checked In At": "Tjekket ind den", + "Checked In By": "Tjekket ind af", + "Condition Name": "Navn på tilstanden", + "Contact email address": "E-mailadresse til kontakt", + "Copper Pieces": "Kobberstykker", + "Effect Name": "Navn på effekten", + "End Date": "Slutdato", + "Event Name": "Navn på begivenheden", + "Event description": "Beskrivelse af begivenheden", + "Event end date and time": "Slutdato og -tidspunkt for begivenheden", + "Event location": "Sted for begivenheden", + "Event name": "Navn på begivenheden", + "Event start date and time": "Startdato og -tidspunkt for begivenheden", + "Faith": "Tro", + "Full name of the player": "Spillerens fulde navn", + "Game Master Notes (Private)": "Spillederens noter (private)", + "Game Master Notes (Public)": "Spillederens noter (offentlige)", + "Gold Pieces": "Guldstykker", + "Item Name": "Navn på genstanden", + "Items and Money": "Genstande og penge", + "Mechanical Effect": "Spilteknisk effekt", + "Modifier Value": "Modifikatorens værdi", + "Name of the condition": "Navn på tilstanden", + "Name of the effect": "Navn på effekten", + "Name of the event": "Navn på begivenheden", + "Name of the item": "Navn på genstanden", + "Name of the skill": "Navn på færdigheden", + "Name of the stat": "Navn på egenskaben", + "Nextcloud user": "Nextcloud-bruger", + "Notes about items and money": "Noter om genstande og penge", + "Notes about the player": "Noter om spilleren", + "Overridden At": "Tilsidesat den", + "Overridden By": "Tilsidesat af", + "Override Reason": "Årsag til tilsidesættelsen", + "Owner": "Ejer", + "Owner UID": "Ejerens UID", + "Participating Characters": "Deltagende karakterer", + "Player Name": "Navn på spilleren", + "Post-Event Effects": "Effekter efter begivenheden", + "Real name of the player": "Spillerens rigtige navn", + "Required Conditions": "Krævede tilstande", + "Required Effects": "Krævede effekter", + "Required Score": "Krævet værdi", + "Required Skills": "Krævede færdigheder", + "Required Stats": "Krævede egenskaber", + "Requirement Overrides": "Tilsidesatte forudsætninger", + "Setting Name": "Navn på spilverdenen", + "Silver Pieces": "Sølvstykker", + "Skill Name": "Navn på færdigheden", + "Start Date": "Startdato", + "Starting value for all characters": "Startværdi for alle karakterer", + "Stat": "Egenskab", + "Status": "Status", + "System Notice": "Systemmeddelelse", + "Unique Artifact": "Unik artefakt", + "Unique Condition": "Unik tilstand", + "XP Amount": "Antal erfaringspoint", + "XP Award": "XP-tildeling", + "Reports": "Rapporter", + "Pick a report to open it.": "Vælg en rapport for at åbne den.", + "Open": "Åben", + "In progress": "I gang", + "Blocked": "Blokeret", + "Date": "Dato", + "Due": "Forfalder", + "Assignee": "Tildelt", + "Who": "Hvem", + "What": "Hvad", + "Minutes": "Minutter", + "Entries": "Poster", + "Most recent": "Nyeste", + "Per person": "Per person", + "By status": "Efter status", + "By priority": "Efter prioritet", + "Character roster": "Karakterliste", + "Progression": "Progression", + "World content": "Verdensindhold", + "Awaiting approval": "Afventer godkendelse", + "Player characters": "Spillerkarakterer", + "Awards": "Tildelinger", + "Experience": "Erfaring", + "Experience awarded": "Tildelt erfaring", + "Per character": "Per karakter", + "By type": "Efter type", + "By approval": "Efter godkendelse", + "Items carried by characters": "Genstande båret af karakterer", + "Conditions on characters": "Tilstande på karakterer", + "Nothing awarded yet": "Intet tildelt endnu", + "Who is playing what, and what is still waiting for approval.": "Hvem spiller hvad, og hvad venter stadig på godkendelse.", + "Experience awarded, and who earned it.": "Tildelt erfaring, og hvem der har optjent den.", + "How much the world holds, and what characters actually carry.": "Hvor meget verden rummer, og hvad karaktererne faktisk bærer.", + "Store": "Butik", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Installer registre, skemaer og flows, som andre organisationer har udgivet." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/da.json b/l10n/da.json index bbe90a29..49569e2b 100644 --- a/l10n/da.json +++ b/l10n/da.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Indlæs eksempeldata?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Eksempeldata fylder lister, detaljesider og dashboards, så du med det samme ser appen virke. Vælg \"Ingen\" på en produktionsinstallation.", + "Load the example data": "Indlæs eksempeldataene", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Indlæser det, du valgte. Det er tydeligvis eksempeldata, handlingen kan gentages uden risiko, og du kan slette dem bagefter.", + "None, I will set this up myself": "Ingen, jeg sætter det op selv", + "Nothing is imported. You start with an empty app and add your own data.": "Der importeres intet. Du starter med en tom app og tilføjer dine egne data.", + "Example data": "Eksempeldata", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Eksempelværdier for hvert skema, denne app leverer, genereret ud fra skemaerne selv. De viser lister, detaljesider og dashboards i drift frem for at fortælle en historie. Kan gentages uden risiko og slettes bagefter.", "Larpinq": "Larpinq", "Dashboard": "Oversigt", "Characters": "Karakterer", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Ingen — dette er en grundfærdighed.", "Where the automation lives": "Hvor automatiseringen bor", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows er det, der sker, uden at nogen klikker: en påmindelse, før en frist udløber, en bekræftelse ved indsendelse. Her læser og redigerer du dem — der er ikke noget at bygge nu.", - "Open Flows in the menu": "Åbn Flows i menuen" + "Open Flows in the menu": "Åbn Flows i menuen", + "Ability Name": "Navn på evnen", + "Affected Characters": "Berørte karakterer", + "Amount of copper pieces": "Antal kobberstykker", + "Amount of gold pieces": "Antal guldstykker", + "Amount of silver pieces": "Antal sølvstykker", + "Automatic system notices": "Automatiske systemmeddelelser", + "Award Reason": "Årsag til tildelingen", + "Awarded At": "Tildelt den", + "Awarded By": "Tildelt af", + "Background Story": "Baggrundshistorie", + "Base Value": "Basisværdi", + "Character Card": "Karakterkort", + "Character Name": "Navn på karakteren", + "Checked In At": "Tjekket ind den", + "Checked In By": "Tjekket ind af", + "Condition Name": "Navn på tilstanden", + "Contact email address": "E-mailadresse til kontakt", + "Copper Pieces": "Kobberstykker", + "Effect Name": "Navn på effekten", + "End Date": "Slutdato", + "Event Name": "Navn på begivenheden", + "Event description": "Beskrivelse af begivenheden", + "Event end date and time": "Slutdato og -tidspunkt for begivenheden", + "Event location": "Sted for begivenheden", + "Event name": "Navn på begivenheden", + "Event start date and time": "Startdato og -tidspunkt for begivenheden", + "Faith": "Tro", + "Full name of the player": "Spillerens fulde navn", + "Game Master Notes (Private)": "Spillederens noter (private)", + "Game Master Notes (Public)": "Spillederens noter (offentlige)", + "Gold Pieces": "Guldstykker", + "Item Name": "Navn på genstanden", + "Items and Money": "Genstande og penge", + "Mechanical Effect": "Spilteknisk effekt", + "Modifier Value": "Modifikatorens værdi", + "Name of the condition": "Navn på tilstanden", + "Name of the effect": "Navn på effekten", + "Name of the event": "Navn på begivenheden", + "Name of the item": "Navn på genstanden", + "Name of the skill": "Navn på færdigheden", + "Name of the stat": "Navn på egenskaben", + "Nextcloud user": "Nextcloud-bruger", + "Notes about items and money": "Noter om genstande og penge", + "Notes about the player": "Noter om spilleren", + "Overridden At": "Tilsidesat den", + "Overridden By": "Tilsidesat af", + "Override Reason": "Årsag til tilsidesættelsen", + "Owner": "Ejer", + "Owner UID": "Ejerens UID", + "Participating Characters": "Deltagende karakterer", + "Player Name": "Navn på spilleren", + "Post-Event Effects": "Effekter efter begivenheden", + "Real name of the player": "Spillerens rigtige navn", + "Required Conditions": "Krævede tilstande", + "Required Effects": "Krævede effekter", + "Required Score": "Krævet værdi", + "Required Skills": "Krævede færdigheder", + "Required Stats": "Krævede egenskaber", + "Requirement Overrides": "Tilsidesatte forudsætninger", + "Setting Name": "Navn på spilverdenen", + "Silver Pieces": "Sølvstykker", + "Skill Name": "Navn på færdigheden", + "Start Date": "Startdato", + "Starting value for all characters": "Startværdi for alle karakterer", + "Stat": "Egenskab", + "Status": "Status", + "System Notice": "Systemmeddelelse", + "Unique Artifact": "Unik artefakt", + "Unique Condition": "Unik tilstand", + "XP Amount": "Antal erfaringspoint", + "XP Award": "XP-tildeling", + "Reports": "Rapporter", + "Pick a report to open it.": "Vælg en rapport for at åbne den.", + "Open": "Åben", + "In progress": "I gang", + "Blocked": "Blokeret", + "Date": "Dato", + "Due": "Forfalder", + "Assignee": "Tildelt", + "Who": "Hvem", + "What": "Hvad", + "Minutes": "Minutter", + "Entries": "Poster", + "Most recent": "Nyeste", + "Per person": "Per person", + "By status": "Efter status", + "By priority": "Efter prioritet", + "Character roster": "Karakterliste", + "Progression": "Progression", + "World content": "Verdensindhold", + "Awaiting approval": "Afventer godkendelse", + "Player characters": "Spillerkarakterer", + "Awards": "Tildelinger", + "Experience": "Erfaring", + "Experience awarded": "Tildelt erfaring", + "Per character": "Per karakter", + "By type": "Efter type", + "By approval": "Efter godkendelse", + "Items carried by characters": "Genstande båret af karakterer", + "Conditions on characters": "Tilstande på karakterer", + "Nothing awarded yet": "Intet tildelt endnu", + "Who is playing what, and what is still waiting for approval.": "Hvem spiller hvad, og hvad venter stadig på godkendelse.", + "Experience awarded, and who earned it.": "Tildelt erfaring, og hvem der har optjent den.", + "How much the world holds, and what characters actually carry.": "Hvor meget verden rummer, og hvad karaktererne faktisk bærer.", + "Store": "Butik", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Installer registre, skemaer og flows, som andre organisationer har udgivet." }, "plurals": {} } diff --git a/l10n/de.js b/l10n/de.js index 3b59a7a4..380b4bfb 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Beispieldaten laden?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Beispieldaten füllen die Listen, Detailseiten und Dashboards, damit Sie die App sofort in Betrieb sehen. Wählen Sie \"Keine\" bei einer Produktivinstallation.", + "Load the example data": "Die Beispieldaten laden", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Lädt, was Sie gewählt haben. Die Daten sind erkennbar Beispieldaten, der Vorgang kann mehrfach ausgeführt werden, und Sie können sie danach löschen.", + "None, I will set this up myself": "Keine, ich richte das selbst ein", + "Nothing is imported. You start with an empty app and add your own data.": "Es wird nichts importiert. Sie beginnen mit einer leeren App und fügen Ihre eigenen Daten hinzu.", + "Example data": "Beispieldaten", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Beispielwerte für jedes Schema, das diese App mitbringt, aus den Schemata selbst erzeugt. Sie zeigen die Listen, Detailseiten und Dashboards in Betrieb, statt eine Geschichte zu erzählen. Mehrfach ausführbar, und Sie können sie danach löschen.", "Larpinq": "Larpinq", "Dashboard": "Dashboard", "Characters": "Charaktere", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Keine — dies ist eine Grundfähigkeit.", "Where the automation lives": "Wo die Automatisierung wohnt", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows sind das, was ohne Klick geschieht: eine Erinnerung, bevor eine Frist abläuft, eine Bestätigung beim Einreichen. Hier liest und bearbeitest du sie — jetzt ist nichts zu bauen.", - "Open Flows in the menu": "Öffne Flows im Menü" + "Open Flows in the menu": "Öffne Flows im Menü", + "Ability Name": "Name der Fertigkeit", + "Affected Characters": "Betroffene Charaktere", + "Amount of copper pieces": "Anzahl der Kupferstücke", + "Amount of gold pieces": "Anzahl der Goldstücke", + "Amount of silver pieces": "Anzahl der Silberstücke", + "Automatic system notices": "Automatische Systemhinweise", + "Award Reason": "Grund der Vergabe", + "Awarded At": "Vergeben am", + "Awarded By": "Vergeben von", + "Background Story": "Hintergrundgeschichte", + "Base Value": "Basiswert", + "Character Card": "Charakterkarte", + "Character Name": "Name des Charakters", + "Checked In At": "Eingecheckt am", + "Checked In By": "Eingecheckt von", + "Condition Name": "Name des Zustands", + "Contact email address": "E-Mail-Adresse für Kontakt", + "Copper Pieces": "Kupferstücke", + "Effect Name": "Name des Effekts", + "End Date": "Enddatum", + "Event Name": "Name der Veranstaltung", + "Event description": "Beschreibung der Veranstaltung", + "Event end date and time": "Enddatum und -zeit der Veranstaltung", + "Event location": "Ort der Veranstaltung", + "Event name": "Name der Veranstaltung", + "Event start date and time": "Startdatum und -zeit der Veranstaltung", + "Faith": "Glaube", + "Full name of the player": "Vollständiger Name des Spielers", + "Game Master Notes (Private)": "Notizen der Spielleitung (privat)", + "Game Master Notes (Public)": "Notizen der Spielleitung (öffentlich)", + "Gold Pieces": "Goldstücke", + "Item Name": "Name des Gegenstands", + "Items and Money": "Gegenstände und Geld", + "Mechanical Effect": "Spielmechanischer Effekt", + "Modifier Value": "Wert des Modifikators", + "Name of the condition": "Name des Zustands", + "Name of the effect": "Name des Effekts", + "Name of the event": "Name der Veranstaltung", + "Name of the item": "Name des Gegenstands", + "Name of the skill": "Name der Fähigkeit", + "Name of the stat": "Name des Attributs", + "Nextcloud user": "Nextcloud-Benutzer", + "Notes about items and money": "Notizen zu Gegenständen und Geld", + "Notes about the player": "Notizen zum Spieler", + "Overridden At": "Überschrieben am", + "Overridden By": "Überschrieben von", + "Override Reason": "Grund der Überschreibung", + "Owner": "Eigentümer", + "Owner UID": "UID des Eigentümers", + "Participating Characters": "Teilnehmende Charaktere", + "Player Name": "Name des Spielers", + "Post-Event Effects": "Effekte nach der Veranstaltung", + "Real name of the player": "Echter Name des Spielers", + "Required Conditions": "Erforderliche Zustände", + "Required Effects": "Erforderliche Effekte", + "Required Score": "Erforderlicher Wert", + "Required Skills": "Erforderliche Fähigkeiten", + "Required Stats": "Erforderliche Attribute", + "Requirement Overrides": "Überschriebene Voraussetzungen", + "Setting Name": "Name der Spielwelt", + "Silver Pieces": "Silberstücke", + "Skill Name": "Name der Fähigkeit", + "Start Date": "Startdatum", + "Starting value for all characters": "Startwert für alle Charaktere", + "Stat": "Attribut", + "Status": "Status", + "System Notice": "Systemhinweis", + "Unique Artifact": "Einzigartiges Artefakt", + "Unique Condition": "Einzigartiger Zustand", + "XP Amount": "Anzahl der Erfahrungspunkte", + "XP Award": "XP-Vergabe", + "Reports": "Berichte", + "Pick a report to open it.": "Wählen Sie einen Bericht, um ihn zu öffnen.", + "Open": "Offen", + "In progress": "In Bearbeitung", + "Blocked": "Blockiert", + "Date": "Datum", + "Due": "Fällig", + "Assignee": "Zugewiesen an", + "Who": "Wer", + "What": "Was", + "Minutes": "Minuten", + "Entries": "Einträge", + "Most recent": "Zuletzt", + "Per person": "Pro Person", + "By status": "Nach Status", + "By priority": "Nach Priorität", + "Character roster": "Charakterliste", + "Progression": "Fortschritt", + "World content": "Weltinhalt", + "Awaiting approval": "Wartet auf Freigabe", + "Player characters": "Spielercharaktere", + "Awards": "Vergaben", + "Experience": "Erfahrung", + "Experience awarded": "Vergebene Erfahrung", + "Per character": "Pro Charakter", + "By type": "Nach Typ", + "By approval": "Nach Freigabe", + "Items carried by characters": "Von Charakteren getragene Gegenstände", + "Conditions on characters": "Zustände auf Charakteren", + "Nothing awarded yet": "Noch nichts vergeben", + "Who is playing what, and what is still waiting for approval.": "Wer was spielt und was noch auf Freigabe wartet.", + "Experience awarded, and who earned it.": "Vergebene Erfahrung und wer sie verdient hat.", + "How much the world holds, and what characters actually carry.": "Wie viel die Welt umfasst und was Charaktere wirklich tragen.", + "Store": "Store", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Installieren Sie Register, Schemata und Flows, die andere Organisationen veröffentlicht haben." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/de.json b/l10n/de.json index 081373fa..b96c040c 100644 --- a/l10n/de.json +++ b/l10n/de.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Beispieldaten laden?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Beispieldaten füllen die Listen, Detailseiten und Dashboards, damit Sie die App sofort in Betrieb sehen. Wählen Sie \"Keine\" bei einer Produktivinstallation.", + "Load the example data": "Die Beispieldaten laden", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Lädt, was Sie gewählt haben. Die Daten sind erkennbar Beispieldaten, der Vorgang kann mehrfach ausgeführt werden, und Sie können sie danach löschen.", + "None, I will set this up myself": "Keine, ich richte das selbst ein", + "Nothing is imported. You start with an empty app and add your own data.": "Es wird nichts importiert. Sie beginnen mit einer leeren App und fügen Ihre eigenen Daten hinzu.", + "Example data": "Beispieldaten", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Beispielwerte für jedes Schema, das diese App mitbringt, aus den Schemata selbst erzeugt. Sie zeigen die Listen, Detailseiten und Dashboards in Betrieb, statt eine Geschichte zu erzählen. Mehrfach ausführbar, und Sie können sie danach löschen.", "Larpinq": "Larpinq", "Dashboard": "Dashboard", "Characters": "Charaktere", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Keine — dies ist eine Grundfähigkeit.", "Where the automation lives": "Wo die Automatisierung wohnt", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows sind das, was ohne Klick geschieht: eine Erinnerung, bevor eine Frist abläuft, eine Bestätigung beim Einreichen. Hier liest und bearbeitest du sie — jetzt ist nichts zu bauen.", - "Open Flows in the menu": "Öffne Flows im Menü" + "Open Flows in the menu": "Öffne Flows im Menü", + "Ability Name": "Name der Fertigkeit", + "Affected Characters": "Betroffene Charaktere", + "Amount of copper pieces": "Anzahl der Kupferstücke", + "Amount of gold pieces": "Anzahl der Goldstücke", + "Amount of silver pieces": "Anzahl der Silberstücke", + "Automatic system notices": "Automatische Systemhinweise", + "Award Reason": "Grund der Vergabe", + "Awarded At": "Vergeben am", + "Awarded By": "Vergeben von", + "Background Story": "Hintergrundgeschichte", + "Base Value": "Basiswert", + "Character Card": "Charakterkarte", + "Character Name": "Name des Charakters", + "Checked In At": "Eingecheckt am", + "Checked In By": "Eingecheckt von", + "Condition Name": "Name des Zustands", + "Contact email address": "E-Mail-Adresse für Kontakt", + "Copper Pieces": "Kupferstücke", + "Effect Name": "Name des Effekts", + "End Date": "Enddatum", + "Event Name": "Name der Veranstaltung", + "Event description": "Beschreibung der Veranstaltung", + "Event end date and time": "Enddatum und -zeit der Veranstaltung", + "Event location": "Ort der Veranstaltung", + "Event name": "Name der Veranstaltung", + "Event start date and time": "Startdatum und -zeit der Veranstaltung", + "Faith": "Glaube", + "Full name of the player": "Vollständiger Name des Spielers", + "Game Master Notes (Private)": "Notizen der Spielleitung (privat)", + "Game Master Notes (Public)": "Notizen der Spielleitung (öffentlich)", + "Gold Pieces": "Goldstücke", + "Item Name": "Name des Gegenstands", + "Items and Money": "Gegenstände und Geld", + "Mechanical Effect": "Spielmechanischer Effekt", + "Modifier Value": "Wert des Modifikators", + "Name of the condition": "Name des Zustands", + "Name of the effect": "Name des Effekts", + "Name of the event": "Name der Veranstaltung", + "Name of the item": "Name des Gegenstands", + "Name of the skill": "Name der Fähigkeit", + "Name of the stat": "Name des Attributs", + "Nextcloud user": "Nextcloud-Benutzer", + "Notes about items and money": "Notizen zu Gegenständen und Geld", + "Notes about the player": "Notizen zum Spieler", + "Overridden At": "Überschrieben am", + "Overridden By": "Überschrieben von", + "Override Reason": "Grund der Überschreibung", + "Owner": "Eigentümer", + "Owner UID": "UID des Eigentümers", + "Participating Characters": "Teilnehmende Charaktere", + "Player Name": "Name des Spielers", + "Post-Event Effects": "Effekte nach der Veranstaltung", + "Real name of the player": "Echter Name des Spielers", + "Required Conditions": "Erforderliche Zustände", + "Required Effects": "Erforderliche Effekte", + "Required Score": "Erforderlicher Wert", + "Required Skills": "Erforderliche Fähigkeiten", + "Required Stats": "Erforderliche Attribute", + "Requirement Overrides": "Überschriebene Voraussetzungen", + "Setting Name": "Name der Spielwelt", + "Silver Pieces": "Silberstücke", + "Skill Name": "Name der Fähigkeit", + "Start Date": "Startdatum", + "Starting value for all characters": "Startwert für alle Charaktere", + "Stat": "Attribut", + "Status": "Status", + "System Notice": "Systemhinweis", + "Unique Artifact": "Einzigartiges Artefakt", + "Unique Condition": "Einzigartiger Zustand", + "XP Amount": "Anzahl der Erfahrungspunkte", + "XP Award": "XP-Vergabe", + "Reports": "Berichte", + "Pick a report to open it.": "Wählen Sie einen Bericht, um ihn zu öffnen.", + "Open": "Offen", + "In progress": "In Bearbeitung", + "Blocked": "Blockiert", + "Date": "Datum", + "Due": "Fällig", + "Assignee": "Zugewiesen an", + "Who": "Wer", + "What": "Was", + "Minutes": "Minuten", + "Entries": "Einträge", + "Most recent": "Zuletzt", + "Per person": "Pro Person", + "By status": "Nach Status", + "By priority": "Nach Priorität", + "Character roster": "Charakterliste", + "Progression": "Fortschritt", + "World content": "Weltinhalt", + "Awaiting approval": "Wartet auf Freigabe", + "Player characters": "Spielercharaktere", + "Awards": "Vergaben", + "Experience": "Erfahrung", + "Experience awarded": "Vergebene Erfahrung", + "Per character": "Pro Charakter", + "By type": "Nach Typ", + "By approval": "Nach Freigabe", + "Items carried by characters": "Von Charakteren getragene Gegenstände", + "Conditions on characters": "Zustände auf Charakteren", + "Nothing awarded yet": "Noch nichts vergeben", + "Who is playing what, and what is still waiting for approval.": "Wer was spielt und was noch auf Freigabe wartet.", + "Experience awarded, and who earned it.": "Vergebene Erfahrung und wer sie verdient hat.", + "How much the world holds, and what characters actually carry.": "Wie viel die Welt umfasst und was Charaktere wirklich tragen.", + "Store": "Store", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Installieren Sie Register, Schemata und Flows, die andere Organisationen veröffentlicht haben." }, "plurals": {} } diff --git a/l10n/el.js b/l10n/el.js index f0cc831c..42d1d55e 100644 --- a/l10n/el.js +++ b/l10n/el.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Να φορτωθούν δεδομένα παραδείγματος;", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Τα δεδομένα παραδείγματος γεμίζουν τις λίστες, τις σελίδες λεπτομερειών και τους πίνακες, ώστε να δείτε αμέσως την εφαρμογή να λειτουργεί. Επιλέξτε \"Κανένα\" σε εγκατάσταση παραγωγής.", + "Load the example data": "Φόρτωση των δεδομένων παραδείγματος", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Φορτώνει ό,τι επιλέξατε. Είναι εμφανώς δεδομένα παραδείγματος, η ενέργεια επαναλαμβάνεται με ασφάλεια και μπορείτε να τα διαγράψετε μετά.", + "None, I will set this up myself": "Κανένα, θα το ρυθμίσω μόνος μου", + "Nothing is imported. You start with an empty app and add your own data.": "Δεν εισάγεται τίποτα. Ξεκινάτε με μια κενή εφαρμογή και προσθέτετε τα δικά σας δεδομένα.", + "Example data": "Δεδομένα παραδείγματος", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Τιμές παραδείγματος για κάθε σχήμα που παρέχει αυτή η εφαρμογή, παραγμένες από τα ίδια τα σχήματα. Δείχνουν τις λίστες, τις σελίδες λεπτομερειών και τους πίνακες σε λειτουργία αντί να αφηγούνται μια ιστορία. Ασφαλής επανάληψη και διαγραφή μετά.", "Larpinq": "Larpinq", "Dashboard": "Πίνακας ελέγχου", "Characters": "Χαρακτήρες", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Καμία — αυτή είναι ριζική δεξιότητα.", "Where the automation lives": "Πού ζει η αυτοματοποίηση", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Τα Flows είναι αυτό που συμβαίνει χωρίς να κάνει κανείς κλικ: μια υπενθύμιση πριν λήξει μια προθεσμία, μια επιβεβαίωση κατά την υποβολή. Εδώ τα διαβάζετε και τα επεξεργάζεστε — δεν χρειάζεται να φτιάξετε τίποτα τώρα.", - "Open Flows in the menu": "Ανοίξτε τα Flows στο μενού" + "Open Flows in the menu": "Ανοίξτε τα Flows στο μενού", + "Ability Name": "Όνομα της ικανότητας", + "Affected Characters": "Επηρεαζόμενοι χαρακτήρες", + "Amount of copper pieces": "Αριθμός χάλκινων νομισμάτων", + "Amount of gold pieces": "Αριθμός χρυσών νομισμάτων", + "Amount of silver pieces": "Αριθμός ασημένιων νομισμάτων", + "Automatic system notices": "Αυτόματες ειδοποιήσεις συστήματος", + "Award Reason": "Αιτιολογία της απονομής", + "Awarded At": "Απονεμήθηκε στις", + "Awarded By": "Απονεμήθηκε από", + "Background Story": "Ιστορία υποβάθρου", + "Base Value": "Βασική τιμή", + "Character Card": "Κάρτα χαρακτήρα", + "Character Name": "Όνομα του χαρακτήρα", + "Checked In At": "Η προσέλευση καταγράφηκε στις", + "Checked In By": "Η προσέλευση καταγράφηκε από", + "Condition Name": "Όνομα της κατάστασης", + "Contact email address": "Διεύθυνση email επικοινωνίας", + "Copper Pieces": "Χάλκινα νομίσματα", + "Effect Name": "Όνομα της επίδρασης", + "End Date": "Ημερομηνία λήξης", + "Event Name": "Όνομα της εκδήλωσης", + "Event description": "Περιγραφή της εκδήλωσης", + "Event end date and time": "Ημερομηνία και ώρα λήξης της εκδήλωσης", + "Event location": "Τοποθεσία της εκδήλωσης", + "Event name": "Όνομα της εκδήλωσης", + "Event start date and time": "Ημερομηνία και ώρα έναρξης της εκδήλωσης", + "Faith": "Πίστη", + "Full name of the player": "Πλήρες όνομα του παίκτη", + "Game Master Notes (Private)": "Σημειώσεις του αρχηγού παιχνιδιού (ιδιωτικές)", + "Game Master Notes (Public)": "Σημειώσεις του αρχηγού παιχνιδιού (δημόσιες)", + "Gold Pieces": "Χρυσά νομίσματα", + "Item Name": "Όνομα του αντικειμένου", + "Items and Money": "Αντικείμενα και χρήματα", + "Mechanical Effect": "Επίδραση στο παιχνίδι", + "Modifier Value": "Τιμή του τροποποιητή", + "Name of the condition": "Όνομα της κατάστασης", + "Name of the effect": "Όνομα της επίδρασης", + "Name of the event": "Όνομα της εκδήλωσης", + "Name of the item": "Όνομα του αντικειμένου", + "Name of the skill": "Όνομα της δεξιότητας", + "Name of the stat": "Όνομα του χαρακτηριστικού", + "Nextcloud user": "Χρήστης Nextcloud", + "Notes about items and money": "Σημειώσεις για τα αντικείμενα και τα χρήματα", + "Notes about the player": "Σημειώσεις για τον παίκτη", + "Overridden At": "Η εξαίρεση δόθηκε στις", + "Overridden By": "Η εξαίρεση δόθηκε από", + "Override Reason": "Αιτιολογία της εξαίρεσης", + "Owner": "Κάτοχος", + "Owner UID": "UID του κατόχου", + "Participating Characters": "Συμμετέχοντες χαρακτήρες", + "Player Name": "Όνομα του παίκτη", + "Post-Event Effects": "Επιδράσεις μετά την εκδήλωση", + "Real name of the player": "Πραγματικό όνομα του παίκτη", + "Required Conditions": "Απαιτούμενες καταστάσεις", + "Required Effects": "Απαιτούμενες επιδράσεις", + "Required Score": "Απαιτούμενη τιμή", + "Required Skills": "Απαιτούμενες δεξιότητες", + "Required Stats": "Απαιτούμενα χαρακτηριστικά", + "Requirement Overrides": "Εξαιρέσεις από τις προϋποθέσεις", + "Setting Name": "Όνομα του κόσμου παιχνιδιού", + "Silver Pieces": "Ασημένια νομίσματα", + "Skill Name": "Όνομα της δεξιότητας", + "Start Date": "Ημερομηνία έναρξης", + "Starting value for all characters": "Αρχική τιμή για όλους τους χαρακτήρες", + "Stat": "Χαρακτηριστικό", + "Status": "Κατάσταση", + "System Notice": "Ειδοποίηση συστήματος", + "Unique Artifact": "Μοναδικό τεχνούργημα", + "Unique Condition": "Μοναδική κατάσταση", + "XP Amount": "Αριθμός πόντων εμπειρίας", + "XP Award": "Απονομή πόντων εμπειρίας", + "Reports": "Αναφορές", + "Pick a report to open it.": "Επιλέξτε μια αναφορά για να την ανοίξετε.", + "Open": "Ανοιχτά", + "In progress": "Σε εξέλιξη", + "Blocked": "Μπλοκαρισμένα", + "Date": "Ημερομηνία", + "Due": "Προθεσμία", + "Assignee": "Ανατέθηκε σε", + "Who": "Ποιος", + "What": "Τι", + "Minutes": "Λεπτά", + "Entries": "Καταχωρίσεις", + "Most recent": "Πιο πρόσφατα", + "Per person": "Ανά άτομο", + "By status": "Ανά κατάσταση", + "By priority": "Ανά προτεραιότητα", + "Character roster": "Κατάλογος χαρακτήρων", + "Progression": "Πρόοδος", + "World content": "Περιεχόμενο κόσμου", + "Awaiting approval": "Αναμένει έγκριση", + "Player characters": "Χαρακτήρες παικτών", + "Awards": "Απονομές", + "Experience": "Εμπειρία", + "Experience awarded": "Απονεμημένη εμπειρία", + "Per character": "Ανά χαρακτήρα", + "By type": "Ανά τύπο", + "By approval": "Ανά έγκριση", + "Items carried by characters": "Αντικείμενα που κουβαλούν οι χαρακτήρες", + "Conditions on characters": "Καταστάσεις στους χαρακτήρες", + "Nothing awarded yet": "Δεν έχει απονεμηθεί τίποτα ακόμη", + "Who is playing what, and what is still waiting for approval.": "Ποιος παίζει τι, και τι περιμένει ακόμη έγκριση.", + "Experience awarded, and who earned it.": "Η απονεμημένη εμπειρία και ποιος την κέρδισε.", + "How much the world holds, and what characters actually carry.": "Πόσα περιέχει ο κόσμος και τι κουβαλούν πραγματικά οι χαρακτήρες.", + "Store": "Κατάστημα", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Εγκαταστήστε μητρώα, σχήματα και ροές που έχουν δημοσιεύσει άλλοι οργανισμοί." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/el.json b/l10n/el.json index 7cbfe410..94044bbb 100644 --- a/l10n/el.json +++ b/l10n/el.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Να φορτωθούν δεδομένα παραδείγματος;", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Τα δεδομένα παραδείγματος γεμίζουν τις λίστες, τις σελίδες λεπτομερειών και τους πίνακες, ώστε να δείτε αμέσως την εφαρμογή να λειτουργεί. Επιλέξτε \"Κανένα\" σε εγκατάσταση παραγωγής.", + "Load the example data": "Φόρτωση των δεδομένων παραδείγματος", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Φορτώνει ό,τι επιλέξατε. Είναι εμφανώς δεδομένα παραδείγματος, η ενέργεια επαναλαμβάνεται με ασφάλεια και μπορείτε να τα διαγράψετε μετά.", + "None, I will set this up myself": "Κανένα, θα το ρυθμίσω μόνος μου", + "Nothing is imported. You start with an empty app and add your own data.": "Δεν εισάγεται τίποτα. Ξεκινάτε με μια κενή εφαρμογή και προσθέτετε τα δικά σας δεδομένα.", + "Example data": "Δεδομένα παραδείγματος", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Τιμές παραδείγματος για κάθε σχήμα που παρέχει αυτή η εφαρμογή, παραγμένες από τα ίδια τα σχήματα. Δείχνουν τις λίστες, τις σελίδες λεπτομερειών και τους πίνακες σε λειτουργία αντί να αφηγούνται μια ιστορία. Ασφαλής επανάληψη και διαγραφή μετά.", "Larpinq": "Larpinq", "Dashboard": "Πίνακας ελέγχου", "Characters": "Χαρακτήρες", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Καμία — αυτή είναι ριζική δεξιότητα.", "Where the automation lives": "Πού ζει η αυτοματοποίηση", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Τα Flows είναι αυτό που συμβαίνει χωρίς να κάνει κανείς κλικ: μια υπενθύμιση πριν λήξει μια προθεσμία, μια επιβεβαίωση κατά την υποβολή. Εδώ τα διαβάζετε και τα επεξεργάζεστε — δεν χρειάζεται να φτιάξετε τίποτα τώρα.", - "Open Flows in the menu": "Ανοίξτε τα Flows στο μενού" + "Open Flows in the menu": "Ανοίξτε τα Flows στο μενού", + "Ability Name": "Όνομα της ικανότητας", + "Affected Characters": "Επηρεαζόμενοι χαρακτήρες", + "Amount of copper pieces": "Αριθμός χάλκινων νομισμάτων", + "Amount of gold pieces": "Αριθμός χρυσών νομισμάτων", + "Amount of silver pieces": "Αριθμός ασημένιων νομισμάτων", + "Automatic system notices": "Αυτόματες ειδοποιήσεις συστήματος", + "Award Reason": "Αιτιολογία της απονομής", + "Awarded At": "Απονεμήθηκε στις", + "Awarded By": "Απονεμήθηκε από", + "Background Story": "Ιστορία υποβάθρου", + "Base Value": "Βασική τιμή", + "Character Card": "Κάρτα χαρακτήρα", + "Character Name": "Όνομα του χαρακτήρα", + "Checked In At": "Η προσέλευση καταγράφηκε στις", + "Checked In By": "Η προσέλευση καταγράφηκε από", + "Condition Name": "Όνομα της κατάστασης", + "Contact email address": "Διεύθυνση email επικοινωνίας", + "Copper Pieces": "Χάλκινα νομίσματα", + "Effect Name": "Όνομα της επίδρασης", + "End Date": "Ημερομηνία λήξης", + "Event Name": "Όνομα της εκδήλωσης", + "Event description": "Περιγραφή της εκδήλωσης", + "Event end date and time": "Ημερομηνία και ώρα λήξης της εκδήλωσης", + "Event location": "Τοποθεσία της εκδήλωσης", + "Event name": "Όνομα της εκδήλωσης", + "Event start date and time": "Ημερομηνία και ώρα έναρξης της εκδήλωσης", + "Faith": "Πίστη", + "Full name of the player": "Πλήρες όνομα του παίκτη", + "Game Master Notes (Private)": "Σημειώσεις του αρχηγού παιχνιδιού (ιδιωτικές)", + "Game Master Notes (Public)": "Σημειώσεις του αρχηγού παιχνιδιού (δημόσιες)", + "Gold Pieces": "Χρυσά νομίσματα", + "Item Name": "Όνομα του αντικειμένου", + "Items and Money": "Αντικείμενα και χρήματα", + "Mechanical Effect": "Επίδραση στο παιχνίδι", + "Modifier Value": "Τιμή του τροποποιητή", + "Name of the condition": "Όνομα της κατάστασης", + "Name of the effect": "Όνομα της επίδρασης", + "Name of the event": "Όνομα της εκδήλωσης", + "Name of the item": "Όνομα του αντικειμένου", + "Name of the skill": "Όνομα της δεξιότητας", + "Name of the stat": "Όνομα του χαρακτηριστικού", + "Nextcloud user": "Χρήστης Nextcloud", + "Notes about items and money": "Σημειώσεις για τα αντικείμενα και τα χρήματα", + "Notes about the player": "Σημειώσεις για τον παίκτη", + "Overridden At": "Η εξαίρεση δόθηκε στις", + "Overridden By": "Η εξαίρεση δόθηκε από", + "Override Reason": "Αιτιολογία της εξαίρεσης", + "Owner": "Κάτοχος", + "Owner UID": "UID του κατόχου", + "Participating Characters": "Συμμετέχοντες χαρακτήρες", + "Player Name": "Όνομα του παίκτη", + "Post-Event Effects": "Επιδράσεις μετά την εκδήλωση", + "Real name of the player": "Πραγματικό όνομα του παίκτη", + "Required Conditions": "Απαιτούμενες καταστάσεις", + "Required Effects": "Απαιτούμενες επιδράσεις", + "Required Score": "Απαιτούμενη τιμή", + "Required Skills": "Απαιτούμενες δεξιότητες", + "Required Stats": "Απαιτούμενα χαρακτηριστικά", + "Requirement Overrides": "Εξαιρέσεις από τις προϋποθέσεις", + "Setting Name": "Όνομα του κόσμου παιχνιδιού", + "Silver Pieces": "Ασημένια νομίσματα", + "Skill Name": "Όνομα της δεξιότητας", + "Start Date": "Ημερομηνία έναρξης", + "Starting value for all characters": "Αρχική τιμή για όλους τους χαρακτήρες", + "Stat": "Χαρακτηριστικό", + "Status": "Κατάσταση", + "System Notice": "Ειδοποίηση συστήματος", + "Unique Artifact": "Μοναδικό τεχνούργημα", + "Unique Condition": "Μοναδική κατάσταση", + "XP Amount": "Αριθμός πόντων εμπειρίας", + "XP Award": "Απονομή πόντων εμπειρίας", + "Reports": "Αναφορές", + "Pick a report to open it.": "Επιλέξτε μια αναφορά για να την ανοίξετε.", + "Open": "Ανοιχτά", + "In progress": "Σε εξέλιξη", + "Blocked": "Μπλοκαρισμένα", + "Date": "Ημερομηνία", + "Due": "Προθεσμία", + "Assignee": "Ανατέθηκε σε", + "Who": "Ποιος", + "What": "Τι", + "Minutes": "Λεπτά", + "Entries": "Καταχωρίσεις", + "Most recent": "Πιο πρόσφατα", + "Per person": "Ανά άτομο", + "By status": "Ανά κατάσταση", + "By priority": "Ανά προτεραιότητα", + "Character roster": "Κατάλογος χαρακτήρων", + "Progression": "Πρόοδος", + "World content": "Περιεχόμενο κόσμου", + "Awaiting approval": "Αναμένει έγκριση", + "Player characters": "Χαρακτήρες παικτών", + "Awards": "Απονομές", + "Experience": "Εμπειρία", + "Experience awarded": "Απονεμημένη εμπειρία", + "Per character": "Ανά χαρακτήρα", + "By type": "Ανά τύπο", + "By approval": "Ανά έγκριση", + "Items carried by characters": "Αντικείμενα που κουβαλούν οι χαρακτήρες", + "Conditions on characters": "Καταστάσεις στους χαρακτήρες", + "Nothing awarded yet": "Δεν έχει απονεμηθεί τίποτα ακόμη", + "Who is playing what, and what is still waiting for approval.": "Ποιος παίζει τι, και τι περιμένει ακόμη έγκριση.", + "Experience awarded, and who earned it.": "Η απονεμημένη εμπειρία και ποιος την κέρδισε.", + "How much the world holds, and what characters actually carry.": "Πόσα περιέχει ο κόσμος και τι κουβαλούν πραγματικά οι χαρακτήρες.", + "Store": "Κατάστημα", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Εγκαταστήστε μητρώα, σχήματα και ροές που έχουν δημοσιεύσει άλλοι οργανισμοί." }, "plurals": {} } diff --git a/l10n/en.js b/l10n/en.js index 4c39b72c..68db1882 100644 --- a/l10n/en.js +++ b/l10n/en.js @@ -1,158 +1,237 @@ OC.L10N.register( "larpinq", { - "Larpinq": "Larpinq", - "Dashboard": "Dashboard", - "Characters": "Characters", - "Character": "Character", - "Players": "Players", - "Player": "Player", + "Load example data?": "Load example data?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.", + "Load the example data": "Load the example data", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.", + "None, I will set this up myself": "None, I will set this up myself", + "Nothing is imported. You start with an empty app and add your own data.": "Nothing is imported. You start with an empty app and add your own data.", + "Example data": "Example data", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.", + "(score ≥ {n})": "(score ≥ {n})", "Abilities": "Abilities", "Ability": "Ability", - "Skills": "Skills", - "Skill": "Skill", - "Items": "Items", - "Item": "Item", - "Conditions": "Conditions", - "Condition": "Condition", - "Effects": "Effects", - "Effect": "Effect", - "Events": "Events", - "Event": "Event", - "Settings": "Settings", - "Worlds": "Worlds", - "Setting": "Setting", - "World": "World", - "Documentation": "Documentation", - "New character": "New character", - "New player": "New player", - "New ability": "New ability", - "New skill": "New skill", - "New item": "New item", - "New condition": "New condition", - "New effect": "New effect", - "New event": "New event", - "Name": "Name", - "Description": "Description", - "Type": "Type", + "Ability Name": "Ability Name", + "Advanced settings": "Advanced settings", + "Affected Characters": "Affected Characters", + "All worlds": "All settings", + "Amount of copper pieces": "Amount of copper pieces", + "Amount of gold pieces": "Amount of gold pieces", + "Amount of silver pieces": "Amount of silver pieces", "Approved": "Approved", - "Gold": "Gold", - "Silver": "Silver", - "Copper": "Copper", + "Are you sure you want to delete this?": "Are you sure you want to delete this?", + "Attendance": "Attendance", + "Attendance tracking is unavailable — showing the participant list read-only.": "Attendance tracking is unavailable — showing the participant list read-only.", + "Automatic system notices": "Automatic system notices", + "Available": "Available", + "Award Reason": "Award Reason", + "Awarded At": "Awarded At", + "Awarded By": "Awarded By", + "Back to list": "Back to list", + "Background": "Background", + "Background Story": "Background Story", "Base": "Base", - "Modifier": "Modifier", - "Modification": "Modification", - "Cumulative": "Cumulative", - "Location": "Location", - "Start date": "Start date", - "End date": "End date", - "Unique": "Unique", - "Value": "Value", - "player": "player", - "npc": "npc", - "other": "other", - "no": "no", - "approved": "approved", - "positive": "positive", - "negative": "negative", - "cumulative": "cumulative", - "non-cumulative": "non-cumulative", - "Save": "Save", + "Base Value": "Base Value", "Cancel": "Cancel", - "Delete": "Delete", - "Edit": "Edit", - "Search": "Search", - "Loading...": "Loading...", - "Back to list": "Back to list", - "Are you sure you want to delete this?": "Are you sure you want to delete this?", - "Download PDF": "Download PDF", - "Select a template to generate a PDF from this character": "Select a template to generate a PDF from this character", - "PDF generation requires the DocuDesk app to be installed and enabled": "PDF generation requires the DocuDesk app to be installed and enabled", - "Configuration saved": "Configuration saved", + "Character": "Character", + "Character Card": "Character Card", + "Character Name": "Character Name", + "Characters": "Characters", + "Check in": "Check in", + "Check-in": "Check-in", + "Checked In At": "Checked In At", + "Checked In By": "Checked In By", + "Checked in": "Checked in", + "Condition": "Condition", + "Condition Name": "Condition Name", + "Conditions": "Conditions", + "Configuration": "Configuration", "Configuration re-imported successfully": "Configuration re-imported successfully", - "Re-import configuration": "Re-import configuration", - "Game setup": "Game setup", - "Advanced settings": "Advanced settings", + "Configuration saved": "Configuration saved", + "Configure": "Configure", "Configure OpenRegister data source to enable this widget": "Configure OpenRegister data source to enable this widget", - "Loading skill data...": "Loading skill data...", - "Retry": "Retry", - "No skill data available": "No skill data available", - "characters": "characters", - "Other": "Other", - "Failed to load skill data": "Failed to load skill data", - "Data storage": "Data storage", "Configure where to store your LARP data": "Configure where to store your LARP data", - "Open Register is not installed. Some features might be unavailable.": "Open Register is not installed. Some features might be unavailable.", - "Source": "Source", - "Register": "Register", - "Schema": "Schema", + "Configure your Larpinq installation": "Configure your Larpinq installation", + "Configure your Larpinq settings here.": "Configure your Larpinq settings here.", + "Contact email address": "Contact email address", + "Copper": "Copper", + "Copper Pieces": "Copper Pieces", + "Create": "Create", + "Cumulative": "Cumulative", + "Dashboard": "Dashboard", + "Data storage": "Data storage", + "Delete": "Delete", + "Description": "Description", + "Documentation": "Documentation", + "Download PDF": "Download PDF", + "Edit": "Edit", + "Effect": "Effect", + "Effect Name": "Effect Name", + "Effects": "Effects", + "End Date": "End Date", + "End date": "End date", + "Event": "Event", + "Event Name": "Event Name", + "Event description": "Event description", + "Event end date and time": "Event end date and time", + "Event location": "Event location", + "Event name": "Event name", + "Event start date and time": "Event start date and time", + "Events": "Events", + "Failed to delete.": "Failed to delete.", + "Failed to load skill data": "Failed to load skill data", + "Failed to save settings": "Failed to save settings", + "Failed to save. Please try again.": "Failed to save. Please try again.", + "Faith": "Faith", + "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.", + "For a Service Level Agreement (SLA), contact": "For a Service Level Agreement (SLA), contact", + "For support, contact us at": "For support, contact us at", + "Full name of the player": "Full name of the player", + "Game Master Notes (Private)": "Game Master Notes (Private)", + "Game Master Notes (Public)": "Game Master Notes (Public)", + "Game setup": "Game setup", + "General": "General", + "Gold": "Gold", + "Gold Pieces": "Gold Pieces", + "Importing...": "Importing...", + "Information about the current Larpinq installation": "Information about the current Larpinq installation", "Internal": "Internal", - "Open Register": "Open Register", - "Yes": "Yes", + "Item": "Item", + "Item Name": "Item Name", + "Items": "Items", + "Items and Money": "Items and Money", + "Larpinq": "Larpinq", + "Larpinq Settings": "Larpinq Settings", + "Larpinq settings": "Larpinq settings", + "Loading skill data...": "Loading skill data...", + "Loading...": "Loading...", + "Location": "Location", + "Locked": "Locked", + "Mechanical Effect": "Mechanical Effect", + "Modification": "Modification", + "Modifier": "Modifier", + "Modifier Value": "Modifier Value", + "Name": "Name", + "Name of the condition": "Name of the condition", + "Name of the effect": "Name of the effect", + "Name of the event": "Name of the event", + "Name of the item": "Name of the item", + "Name of the skill": "Name of the skill", + "Name of the stat": "Name of the stat", + "New ability": "New ability", + "New character": "New character", + "New condition": "New condition", + "New effect": "New effect", + "New event": "New event", + "New item": "New item", + "New player": "New player", + "New skill": "New skill", + "Nextcloud user": "Nextcloud user", "No": "No", - "Create": "Create", + "No character (uncoloured)": "No character (uncoloured)", "No characters yet": "No characters yet", + "No confirmed participants for this event yet.": "No confirmed participants for this event yet.", "No events yet": "No events yet", - "View all ({count})": "View all ({count})", + "No prerequisites": "No prerequisites", + "No skill data available": "No skill data available", + "No skills exist yet for the selected world.": "No skills exist yet for the selected setting.", + "No skills to show": "No skills to show", + "No-show": "No-show", + "None — this is a root skill.": "None — this is a root skill.", + "Notes about items and money": "Notes about items and money", + "Notes about the player": "Notes about the player", + "Open Flows in the menu": "Open Flows in the menu", + "Open Register": "Open Register", + "Open Register is not installed. Some features might be unavailable.": "Open Register is not installed. Some features might be unavailable.", + "OpenRegister is not configured. Some features may be limited.": "OpenRegister is not configured. Some features may be limited.", + "Other": "Other", + "Overridden At": "Overridden At", + "Overridden By": "Overridden By", + "Override Reason": "Override Reason", + "Owned": "Owned", + "Owner": "Owner", + "Owner UID": "Owner UID", + "PDF generation requires the DocuDesk app to be installed and enabled": "PDF generation requires the DocuDesk app to be installed and enabled", + "Participating Characters": "Participating Characters", + "Player": "Player", + "Player Name": "Player Name", + "Players": "Players", + "Post-Event Effects": "Post-Event Effects", + "Prerequisites": "Prerequisites", + "Re-import configuration": "Re-import configuration", + "Re-import failed": "Re-import failed", + "Real name of the player": "Real name of the player", "Recent characters": "Recent characters", "Recent events": "Recent events", - "Skill usage by characters": "Skill usage by characters", "Refresh dashboard": "Refresh dashboard", - "Larpinq settings": "Larpinq settings", - "Configure your Larpinq installation": "Configure your Larpinq installation", - "Version information": "Version information", - "Information about the current Larpinq installation": "Information about the current Larpinq installation", - "Support": "Support", - "For support, contact us at": "For support, contact us at", - "For a Service Level Agreement (SLA), contact": "For a Service Level Agreement (SLA), contact", - "Importing...": "Importing...", - "Re-import failed": "Re-import failed", - "Configuration": "Configuration", - "OpenRegister is not configured. Some features may be limited.": "OpenRegister is not configured. Some features may be limited.", - "Configure": "Configure", - "Failed to save. Please try again.": "Failed to save. Please try again.", - "Failed to delete.": "Failed to delete.", - "Background": "Background", - "Save all": "Save All", - "Unnamed character": "Unnamed Character", - "Unnamed event": "Unnamed Event", - "Welcome to Larpinq!": "Welcome to Larpinq!", - "Configure your Larpinq settings here.": "Configure your Larpinq settings here.", - "Failed to save settings": "Failed to save settings", - "General": "General", - "Larpinq Settings": "Larpinq Settings", - "Save All": "Save All", - "Settings saved successfully": "Settings saved successfully", - "Version Information": "Version Information", - "Check-in": "Check-in", - "Attendance": "Attendance", - "Check in": "Check in", - "No-show": "No-show", + "Register": "Register", "Registered": "Registered", - "Checked in": "Checked in", - "No confirmed participants for this event yet.": "No confirmed participants for this event yet.", - "Attendance tracking is unavailable — showing the participant list read-only.": "Attendance tracking is unavailable — showing the participant list read-only.", - "Skill tree": "Skill tree", - "No character (uncoloured)": "No character (uncoloured)", - "All worlds": "All settings", - "Owned": "Owned", - "Available": "Available", - "Locked": "Locked", - "Unknown": "Unknown", - "No skills to show": "No skills to show", - "No skills exist yet for the selected world.": "No skills exist yet for the selected setting.", - "Requires: {list}": "Requires: {list}", - "No prerequisites": "No prerequisites", - "Required skills": "Required skills", + "Required Conditions": "Required Conditions", + "Required Effects": "Required Effects", + "Required Score": "Required Score", + "Required Skills": "Required Skills", + "Required Stats": "Required Stats", "Required abilities": "Required abilities", - "(score ≥ {n})": "(score ≥ {n})", "Required conditions": "Required conditions", "Required effects": "Required effects", - "Prerequisites": "Prerequisites", - "None — this is a root skill.": "None — this is a root skill.", + "Required skills": "Required skills", + "Requirement Overrides": "Requirement Overrides", + "Requires: {list}": "Requires: {list}", + "Retry": "Retry", + "Save": "Save", + "Save All": "Save All", + "Save all": "Save All", + "Schema": "Schema", + "Search": "Search", + "Select a template to generate a PDF from this character": "Select a template to generate a PDF from this character", + "Setting": "Setting", + "Setting Name": "Setting Name", + "Settings": "Settings", + "Settings saved successfully": "Settings saved successfully", + "Silver": "Silver", + "Silver Pieces": "Silver Pieces", + "Skill": "Skill", + "Skill Name": "Skill Name", + "Skill tree": "Skill tree", + "Skill usage by characters": "Skill usage by characters", + "Skills": "Skills", + "Source": "Source", + "Start Date": "Start Date", + "Start date": "Start date", + "Starting value for all characters": "Starting value for all characters", + "Stat": "Stat", + "Status": "Status", + "Support": "Support", + "System Notice": "System Notice", + "Type": "Type", + "Unique": "Unique", + "Unique Artifact": "Unique Artifact", + "Unique Condition": "Unique Condition", + "Unknown": "Unknown", + "Unnamed character": "Unnamed Character", + "Unnamed event": "Unnamed Event", + "Value": "Value", + "Version Information": "Version Information", + "Version information": "Version information", + "View all ({count})": "View all ({count})", + "Welcome to Larpinq!": "Welcome to Larpinq!", "Where the automation lives": "Where the automation lives", - "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.", - "Open Flows in the menu": "Open Flows in the menu" + "World": "World", + "Worlds": "Worlds", + "XP Amount": "XP Amount", + "XP Award": "XP Award", + "Yes": "Yes", + "approved": "approved", + "characters": "characters", + "cumulative": "cumulative", + "negative": "negative", + "no": "no", + "non-cumulative": "non-cumulative", + "npc": "npc", + "other": "other", + "player": "player", + "positive": "positive" }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/en.json b/l10n/en.json index a331fcfa..c57931b5 100644 --- a/l10n/en.json +++ b/l10n/en.json @@ -1,157 +1,236 @@ { "translations": { - "Larpinq": "Larpinq", - "Dashboard": "Dashboard", - "Characters": "Characters", - "Character": "Character", - "Players": "Players", - "Player": "Player", + "Load example data?": "Load example data?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.", + "Load the example data": "Load the example data", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.", + "None, I will set this up myself": "None, I will set this up myself", + "Nothing is imported. You start with an empty app and add your own data.": "Nothing is imported. You start with an empty app and add your own data.", + "Example data": "Example data", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.", + "(score ≥ {n})": "(score ≥ {n})", "Abilities": "Abilities", "Ability": "Ability", - "Skills": "Skills", - "Skill": "Skill", - "Items": "Items", - "Item": "Item", - "Conditions": "Conditions", - "Condition": "Condition", - "Effects": "Effects", - "Effect": "Effect", - "Events": "Events", - "Event": "Event", - "Settings": "Settings", - "Worlds": "Worlds", - "Setting": "Setting", - "World": "World", - "Documentation": "Documentation", - "New character": "New character", - "New player": "New player", - "New ability": "New ability", - "New skill": "New skill", - "New item": "New item", - "New condition": "New condition", - "New effect": "New effect", - "New event": "New event", - "Name": "Name", - "Description": "Description", - "Type": "Type", + "Ability Name": "Ability Name", + "Advanced settings": "Advanced settings", + "Affected Characters": "Affected Characters", + "All worlds": "All settings", + "Amount of copper pieces": "Amount of copper pieces", + "Amount of gold pieces": "Amount of gold pieces", + "Amount of silver pieces": "Amount of silver pieces", "Approved": "Approved", - "Gold": "Gold", - "Silver": "Silver", - "Copper": "Copper", + "Are you sure you want to delete this?": "Are you sure you want to delete this?", + "Attendance": "Attendance", + "Attendance tracking is unavailable — showing the participant list read-only.": "Attendance tracking is unavailable — showing the participant list read-only.", + "Automatic system notices": "Automatic system notices", + "Available": "Available", + "Award Reason": "Award Reason", + "Awarded At": "Awarded At", + "Awarded By": "Awarded By", + "Back to list": "Back to list", + "Background": "Background", + "Background Story": "Background Story", "Base": "Base", - "Modifier": "Modifier", - "Modification": "Modification", - "Cumulative": "Cumulative", - "Location": "Location", - "Start date": "Start date", - "End date": "End date", - "Unique": "Unique", - "Value": "Value", - "player": "player", - "npc": "npc", - "other": "other", - "no": "no", - "approved": "approved", - "positive": "positive", - "negative": "negative", - "cumulative": "cumulative", - "non-cumulative": "non-cumulative", - "Save": "Save", + "Base Value": "Base Value", "Cancel": "Cancel", - "Delete": "Delete", - "Edit": "Edit", - "Search": "Search", - "Loading...": "Loading...", - "Back to list": "Back to list", - "Are you sure you want to delete this?": "Are you sure you want to delete this?", - "Download PDF": "Download PDF", - "Select a template to generate a PDF from this character": "Select a template to generate a PDF from this character", - "PDF generation requires the DocuDesk app to be installed and enabled": "PDF generation requires the DocuDesk app to be installed and enabled", - "Configuration saved": "Configuration saved", + "Character": "Character", + "Character Card": "Character Card", + "Character Name": "Character Name", + "Characters": "Characters", + "Check in": "Check in", + "Check-in": "Check-in", + "Checked In At": "Checked In At", + "Checked In By": "Checked In By", + "Checked in": "Checked in", + "Condition": "Condition", + "Condition Name": "Condition Name", + "Conditions": "Conditions", + "Configuration": "Configuration", "Configuration re-imported successfully": "Configuration re-imported successfully", - "Re-import configuration": "Re-import configuration", - "Game setup": "Game setup", - "Advanced settings": "Advanced settings", + "Configuration saved": "Configuration saved", + "Configure": "Configure", "Configure OpenRegister data source to enable this widget": "Configure OpenRegister data source to enable this widget", - "Loading skill data...": "Loading skill data...", - "Retry": "Retry", - "No skill data available": "No skill data available", - "characters": "characters", - "Other": "Other", - "Failed to load skill data": "Failed to load skill data", - "Data storage": "Data storage", "Configure where to store your LARP data": "Configure where to store your LARP data", - "Open Register is not installed. Some features might be unavailable.": "Open Register is not installed. Some features might be unavailable.", - "Source": "Source", - "Register": "Register", - "Schema": "Schema", + "Configure your Larpinq installation": "Configure your Larpinq installation", + "Configure your Larpinq settings here.": "Configure your Larpinq settings here.", + "Contact email address": "Contact email address", + "Copper": "Copper", + "Copper Pieces": "Copper Pieces", + "Create": "Create", + "Cumulative": "Cumulative", + "Dashboard": "Dashboard", + "Data storage": "Data storage", + "Delete": "Delete", + "Description": "Description", + "Documentation": "Documentation", + "Download PDF": "Download PDF", + "Edit": "Edit", + "Effect": "Effect", + "Effect Name": "Effect Name", + "Effects": "Effects", + "End Date": "End Date", + "End date": "End date", + "Event": "Event", + "Event Name": "Event Name", + "Event description": "Event description", + "Event end date and time": "Event end date and time", + "Event location": "Event location", + "Event name": "Event name", + "Event start date and time": "Event start date and time", + "Events": "Events", + "Failed to delete.": "Failed to delete.", + "Failed to load skill data": "Failed to load skill data", + "Failed to save settings": "Failed to save settings", + "Failed to save. Please try again.": "Failed to save. Please try again.", + "Faith": "Faith", + "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.", + "For a Service Level Agreement (SLA), contact": "For a Service Level Agreement (SLA), contact", + "For support, contact us at": "For support, contact us at", + "Full name of the player": "Full name of the player", + "Game Master Notes (Private)": "Game Master Notes (Private)", + "Game Master Notes (Public)": "Game Master Notes (Public)", + "Game setup": "Game setup", + "General": "General", + "Gold": "Gold", + "Gold Pieces": "Gold Pieces", + "Importing...": "Importing...", + "Information about the current Larpinq installation": "Information about the current Larpinq installation", "Internal": "Internal", - "Open Register": "Open Register", - "Yes": "Yes", + "Item": "Item", + "Item Name": "Item Name", + "Items": "Items", + "Items and Money": "Items and Money", + "Larpinq": "Larpinq", + "Larpinq Settings": "Larpinq Settings", + "Larpinq settings": "Larpinq settings", + "Loading skill data...": "Loading skill data...", + "Loading...": "Loading...", + "Location": "Location", + "Locked": "Locked", + "Mechanical Effect": "Mechanical Effect", + "Modification": "Modification", + "Modifier": "Modifier", + "Modifier Value": "Modifier Value", + "Name": "Name", + "Name of the condition": "Name of the condition", + "Name of the effect": "Name of the effect", + "Name of the event": "Name of the event", + "Name of the item": "Name of the item", + "Name of the skill": "Name of the skill", + "Name of the stat": "Name of the stat", + "New ability": "New ability", + "New character": "New character", + "New condition": "New condition", + "New effect": "New effect", + "New event": "New event", + "New item": "New item", + "New player": "New player", + "New skill": "New skill", + "Nextcloud user": "Nextcloud user", "No": "No", - "Create": "Create", + "No character (uncoloured)": "No character (uncoloured)", "No characters yet": "No characters yet", + "No confirmed participants for this event yet.": "No confirmed participants for this event yet.", "No events yet": "No events yet", - "View all ({count})": "View all ({count})", + "No prerequisites": "No prerequisites", + "No skill data available": "No skill data available", + "No skills exist yet for the selected world.": "No skills exist yet for the selected setting.", + "No skills to show": "No skills to show", + "No-show": "No-show", + "None — this is a root skill.": "None — this is a root skill.", + "Notes about items and money": "Notes about items and money", + "Notes about the player": "Notes about the player", + "Open Flows in the menu": "Open Flows in the menu", + "Open Register": "Open Register", + "Open Register is not installed. Some features might be unavailable.": "Open Register is not installed. Some features might be unavailable.", + "OpenRegister is not configured. Some features may be limited.": "OpenRegister is not configured. Some features may be limited.", + "Other": "Other", + "Overridden At": "Overridden At", + "Overridden By": "Overridden By", + "Override Reason": "Override Reason", + "Owned": "Owned", + "Owner": "Owner", + "Owner UID": "Owner UID", + "PDF generation requires the DocuDesk app to be installed and enabled": "PDF generation requires the DocuDesk app to be installed and enabled", + "Participating Characters": "Participating Characters", + "Player": "Player", + "Player Name": "Player Name", + "Players": "Players", + "Post-Event Effects": "Post-Event Effects", + "Prerequisites": "Prerequisites", + "Re-import configuration": "Re-import configuration", + "Re-import failed": "Re-import failed", + "Real name of the player": "Real name of the player", "Recent characters": "Recent characters", "Recent events": "Recent events", - "Skill usage by characters": "Skill usage by characters", "Refresh dashboard": "Refresh dashboard", - "Larpinq settings": "Larpinq settings", - "Configure your Larpinq installation": "Configure your Larpinq installation", - "Version information": "Version information", - "Information about the current Larpinq installation": "Information about the current Larpinq installation", - "Support": "Support", - "For support, contact us at": "For support, contact us at", - "For a Service Level Agreement (SLA), contact": "For a Service Level Agreement (SLA), contact", - "Importing...": "Importing...", - "Re-import failed": "Re-import failed", - "Configuration": "Configuration", - "OpenRegister is not configured. Some features may be limited.": "OpenRegister is not configured. Some features may be limited.", - "Configure": "Configure", - "Failed to save. Please try again.": "Failed to save. Please try again.", - "Failed to delete.": "Failed to delete.", - "Background": "Background", - "Save all": "Save All", - "Unnamed character": "Unnamed Character", - "Unnamed event": "Unnamed Event", - "Welcome to Larpinq!": "Welcome to Larpinq!", - "Configure your Larpinq settings here.": "Configure your Larpinq settings here.", - "Failed to save settings": "Failed to save settings", - "General": "General", - "Larpinq Settings": "Larpinq Settings", - "Save All": "Save All", - "Settings saved successfully": "Settings saved successfully", - "Version Information": "Version Information", - "Check-in": "Check-in", - "Attendance": "Attendance", - "Check in": "Check in", - "No-show": "No-show", + "Register": "Register", "Registered": "Registered", - "Checked in": "Checked in", - "No confirmed participants for this event yet.": "No confirmed participants for this event yet.", - "Attendance tracking is unavailable — showing the participant list read-only.": "Attendance tracking is unavailable — showing the participant list read-only.", - "Skill tree": "Skill tree", - "No character (uncoloured)": "No character (uncoloured)", - "All worlds": "All settings", - "Owned": "Owned", - "Available": "Available", - "Locked": "Locked", - "Unknown": "Unknown", - "No skills to show": "No skills to show", - "No skills exist yet for the selected world.": "No skills exist yet for the selected setting.", - "Requires: {list}": "Requires: {list}", - "No prerequisites": "No prerequisites", - "Required skills": "Required skills", + "Required Conditions": "Required Conditions", + "Required Effects": "Required Effects", + "Required Score": "Required Score", + "Required Skills": "Required Skills", + "Required Stats": "Required Stats", "Required abilities": "Required abilities", - "(score ≥ {n})": "(score ≥ {n})", "Required conditions": "Required conditions", "Required effects": "Required effects", - "Prerequisites": "Prerequisites", - "None — this is a root skill.": "None — this is a root skill.", + "Required skills": "Required skills", + "Requirement Overrides": "Requirement Overrides", + "Requires: {list}": "Requires: {list}", + "Retry": "Retry", + "Save": "Save", + "Save All": "Save All", + "Save all": "Save All", + "Schema": "Schema", + "Search": "Search", + "Select a template to generate a PDF from this character": "Select a template to generate a PDF from this character", + "Setting": "Setting", + "Setting Name": "Setting Name", + "Settings": "Settings", + "Settings saved successfully": "Settings saved successfully", + "Silver": "Silver", + "Silver Pieces": "Silver Pieces", + "Skill": "Skill", + "Skill Name": "Skill Name", + "Skill tree": "Skill tree", + "Skill usage by characters": "Skill usage by characters", + "Skills": "Skills", + "Source": "Source", + "Start Date": "Start Date", + "Start date": "Start date", + "Starting value for all characters": "Starting value for all characters", + "Stat": "Stat", + "Status": "Status", + "Support": "Support", + "System Notice": "System Notice", + "Type": "Type", + "Unique": "Unique", + "Unique Artifact": "Unique Artifact", + "Unique Condition": "Unique Condition", + "Unknown": "Unknown", + "Unnamed character": "Unnamed Character", + "Unnamed event": "Unnamed Event", + "Value": "Value", + "Version Information": "Version Information", + "Version information": "Version information", + "View all ({count})": "View all ({count})", + "Welcome to Larpinq!": "Welcome to Larpinq!", "Where the automation lives": "Where the automation lives", - "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.", - "Open Flows in the menu": "Open Flows in the menu" + "World": "World", + "Worlds": "Worlds", + "XP Amount": "XP Amount", + "XP Award": "XP Award", + "Yes": "Yes", + "approved": "approved", + "characters": "characters", + "cumulative": "cumulative", + "negative": "negative", + "no": "no", + "non-cumulative": "non-cumulative", + "npc": "npc", + "other": "other", + "player": "player", + "positive": "positive" }, "plurals": {}, "pluralForm": "nplurals=2; plural=(n != 1);" diff --git a/l10n/es.js b/l10n/es.js index 12d2c9be..2c8c1bca 100644 --- a/l10n/es.js +++ b/l10n/es.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "¿Cargar datos de ejemplo?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Los datos de ejemplo llenan las listas, las páginas de detalle y los paneles, para que veas la aplicación funcionando de inmediato. Elige \"Ninguno\" en una instalación de producción.", + "Load the example data": "Cargar los datos de ejemplo", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Carga lo que elegiste. Son datos de ejemplo evidentes, se puede ejecutar más de una vez sin riesgo y puedes borrarlos después.", + "None, I will set this up myself": "Ninguno, lo configuro yo mismo", + "Nothing is imported. You start with an empty app and add your own data.": "No se importa nada. Empiezas con una aplicación vacía y añades tus propios datos.", + "Example data": "Datos de ejemplo", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Valores de ejemplo para cada esquema que aporta esta aplicación, generados a partir de los propios esquemas. Muestran las listas, las páginas de detalle y los paneles en funcionamiento en lugar de contar una historia. Se puede repetir sin riesgo y borrar después.", "Larpinq": "Larpinq", "Dashboard": "Panel de control", "Characters": "Personajes", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Ninguno — esta es una habilidad raíz.", "Where the automation lives": "Dónde vive la automatización", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Los Flows son lo que ocurre sin que nadie haga clic: un recordatorio antes de que venza un plazo, una confirmación al enviar. Aquí los lees y los editas — no hay nada que construir ahora.", - "Open Flows in the menu": "Abre Flows en el menú" + "Open Flows in the menu": "Abre Flows en el menú", + "Ability Name": "Nombre de la aptitud", + "Affected Characters": "Personajes afectados", + "Amount of copper pieces": "Cantidad de monedas de cobre", + "Amount of gold pieces": "Cantidad de monedas de oro", + "Amount of silver pieces": "Cantidad de monedas de plata", + "Automatic system notices": "Avisos automáticos del sistema", + "Award Reason": "Motivo de la concesión", + "Awarded At": "Concedido el", + "Awarded By": "Concedido por", + "Background Story": "Historia de trasfondo", + "Base Value": "Valor base", + "Character Card": "Ficha de personaje", + "Character Name": "Nombre del personaje", + "Checked In At": "Entrada registrada el", + "Checked In By": "Entrada registrada por", + "Condition Name": "Nombre de la condición", + "Contact email address": "Dirección de correo de contacto", + "Copper Pieces": "Monedas de cobre", + "Effect Name": "Nombre del efecto", + "End Date": "Fecha de fin", + "Event Name": "Nombre del evento", + "Event description": "Descripción del evento", + "Event end date and time": "Fecha y hora de fin del evento", + "Event location": "Ubicación del evento", + "Event name": "Nombre del evento", + "Event start date and time": "Fecha y hora de inicio del evento", + "Faith": "Fe", + "Full name of the player": "Nombre completo del jugador", + "Game Master Notes (Private)": "Notas del máster (privadas)", + "Game Master Notes (Public)": "Notas del máster (públicas)", + "Gold Pieces": "Monedas de oro", + "Item Name": "Nombre del objeto", + "Items and Money": "Objetos y dinero", + "Mechanical Effect": "Efecto de juego", + "Modifier Value": "Valor del modificador", + "Name of the condition": "Nombre de la condición", + "Name of the effect": "Nombre del efecto", + "Name of the event": "Nombre del evento", + "Name of the item": "Nombre del objeto", + "Name of the skill": "Nombre de la habilidad", + "Name of the stat": "Nombre de la característica", + "Nextcloud user": "Usuario de Nextcloud", + "Notes about items and money": "Notas sobre objetos y dinero", + "Notes about the player": "Notas sobre el jugador", + "Overridden At": "Excepción concedida el", + "Overridden By": "Excepción concedida por", + "Override Reason": "Motivo de la excepción", + "Owner": "Propietario", + "Owner UID": "UID del propietario", + "Participating Characters": "Personajes participantes", + "Player Name": "Nombre del jugador", + "Post-Event Effects": "Efectos posteriores al evento", + "Real name of the player": "Nombre real del jugador", + "Required Conditions": "Condiciones requeridas", + "Required Effects": "Efectos requeridos", + "Required Score": "Valor requerido", + "Required Skills": "Habilidades requeridas", + "Required Stats": "Características requeridas", + "Requirement Overrides": "Excepciones a los requisitos", + "Setting Name": "Nombre de la ambientación", + "Silver Pieces": "Monedas de plata", + "Skill Name": "Nombre de la habilidad", + "Start Date": "Fecha de inicio", + "Starting value for all characters": "Valor inicial para todos los personajes", + "Stat": "Característica", + "Status": "Estado", + "System Notice": "Aviso del sistema", + "Unique Artifact": "Artefacto único", + "Unique Condition": "Condición única", + "XP Amount": "Cantidad de puntos de experiencia", + "XP Award": "Concesión de puntos de experiencia", + "Reports": "Informes", + "Pick a report to open it.": "Elija un informe para abrirlo.", + "Open": "Abierto", + "In progress": "En curso", + "Blocked": "Bloqueado", + "Date": "Fecha", + "Due": "Vence", + "Assignee": "Asignado a", + "Who": "Quién", + "What": "Qué", + "Minutes": "Minutos", + "Entries": "Entradas", + "Most recent": "Más recientes", + "Per person": "Por persona", + "By status": "Por estado", + "By priority": "Por prioridad", + "Character roster": "Lista de personajes", + "Progression": "Progresión", + "World content": "Contenido del mundo", + "Awaiting approval": "Pendiente de aprobación", + "Player characters": "Personajes jugadores", + "Awards": "Concesiones", + "Experience": "Experiencia", + "Experience awarded": "Experiencia concedida", + "Per character": "Por personaje", + "By type": "Por tipo", + "By approval": "Por aprobación", + "Items carried by characters": "Objetos que llevan los personajes", + "Conditions on characters": "Estados en los personajes", + "Nothing awarded yet": "Aún no se ha concedido nada", + "Who is playing what, and what is still waiting for approval.": "Quién juega qué, y qué sigue pendiente de aprobación.", + "Experience awarded, and who earned it.": "La experiencia concedida y quién la ganó.", + "How much the world holds, and what characters actually carry.": "Cuánto contiene el mundo, y qué llevan realmente los personajes.", + "Store": "Tienda", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Instale registros, esquemas y flujos publicados por otras organizaciones." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/es.json b/l10n/es.json index 68e83fb5..9b249417 100644 --- a/l10n/es.json +++ b/l10n/es.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "¿Cargar datos de ejemplo?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Los datos de ejemplo llenan las listas, las páginas de detalle y los paneles, para que veas la aplicación funcionando de inmediato. Elige \"Ninguno\" en una instalación de producción.", + "Load the example data": "Cargar los datos de ejemplo", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Carga lo que elegiste. Son datos de ejemplo evidentes, se puede ejecutar más de una vez sin riesgo y puedes borrarlos después.", + "None, I will set this up myself": "Ninguno, lo configuro yo mismo", + "Nothing is imported. You start with an empty app and add your own data.": "No se importa nada. Empiezas con una aplicación vacía y añades tus propios datos.", + "Example data": "Datos de ejemplo", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Valores de ejemplo para cada esquema que aporta esta aplicación, generados a partir de los propios esquemas. Muestran las listas, las páginas de detalle y los paneles en funcionamiento en lugar de contar una historia. Se puede repetir sin riesgo y borrar después.", "Larpinq": "Larpinq", "Dashboard": "Panel de control", "Characters": "Personajes", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Ninguno — esta es una habilidad raíz.", "Where the automation lives": "Dónde vive la automatización", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Los Flows son lo que ocurre sin que nadie haga clic: un recordatorio antes de que venza un plazo, una confirmación al enviar. Aquí los lees y los editas — no hay nada que construir ahora.", - "Open Flows in the menu": "Abre Flows en el menú" + "Open Flows in the menu": "Abre Flows en el menú", + "Ability Name": "Nombre de la aptitud", + "Affected Characters": "Personajes afectados", + "Amount of copper pieces": "Cantidad de monedas de cobre", + "Amount of gold pieces": "Cantidad de monedas de oro", + "Amount of silver pieces": "Cantidad de monedas de plata", + "Automatic system notices": "Avisos automáticos del sistema", + "Award Reason": "Motivo de la concesión", + "Awarded At": "Concedido el", + "Awarded By": "Concedido por", + "Background Story": "Historia de trasfondo", + "Base Value": "Valor base", + "Character Card": "Ficha de personaje", + "Character Name": "Nombre del personaje", + "Checked In At": "Entrada registrada el", + "Checked In By": "Entrada registrada por", + "Condition Name": "Nombre de la condición", + "Contact email address": "Dirección de correo de contacto", + "Copper Pieces": "Monedas de cobre", + "Effect Name": "Nombre del efecto", + "End Date": "Fecha de fin", + "Event Name": "Nombre del evento", + "Event description": "Descripción del evento", + "Event end date and time": "Fecha y hora de fin del evento", + "Event location": "Ubicación del evento", + "Event name": "Nombre del evento", + "Event start date and time": "Fecha y hora de inicio del evento", + "Faith": "Fe", + "Full name of the player": "Nombre completo del jugador", + "Game Master Notes (Private)": "Notas del máster (privadas)", + "Game Master Notes (Public)": "Notas del máster (públicas)", + "Gold Pieces": "Monedas de oro", + "Item Name": "Nombre del objeto", + "Items and Money": "Objetos y dinero", + "Mechanical Effect": "Efecto de juego", + "Modifier Value": "Valor del modificador", + "Name of the condition": "Nombre de la condición", + "Name of the effect": "Nombre del efecto", + "Name of the event": "Nombre del evento", + "Name of the item": "Nombre del objeto", + "Name of the skill": "Nombre de la habilidad", + "Name of the stat": "Nombre de la característica", + "Nextcloud user": "Usuario de Nextcloud", + "Notes about items and money": "Notas sobre objetos y dinero", + "Notes about the player": "Notas sobre el jugador", + "Overridden At": "Excepción concedida el", + "Overridden By": "Excepción concedida por", + "Override Reason": "Motivo de la excepción", + "Owner": "Propietario", + "Owner UID": "UID del propietario", + "Participating Characters": "Personajes participantes", + "Player Name": "Nombre del jugador", + "Post-Event Effects": "Efectos posteriores al evento", + "Real name of the player": "Nombre real del jugador", + "Required Conditions": "Condiciones requeridas", + "Required Effects": "Efectos requeridos", + "Required Score": "Valor requerido", + "Required Skills": "Habilidades requeridas", + "Required Stats": "Características requeridas", + "Requirement Overrides": "Excepciones a los requisitos", + "Setting Name": "Nombre de la ambientación", + "Silver Pieces": "Monedas de plata", + "Skill Name": "Nombre de la habilidad", + "Start Date": "Fecha de inicio", + "Starting value for all characters": "Valor inicial para todos los personajes", + "Stat": "Característica", + "Status": "Estado", + "System Notice": "Aviso del sistema", + "Unique Artifact": "Artefacto único", + "Unique Condition": "Condición única", + "XP Amount": "Cantidad de puntos de experiencia", + "XP Award": "Concesión de puntos de experiencia", + "Reports": "Informes", + "Pick a report to open it.": "Elija un informe para abrirlo.", + "Open": "Abierto", + "In progress": "En curso", + "Blocked": "Bloqueado", + "Date": "Fecha", + "Due": "Vence", + "Assignee": "Asignado a", + "Who": "Quién", + "What": "Qué", + "Minutes": "Minutos", + "Entries": "Entradas", + "Most recent": "Más recientes", + "Per person": "Por persona", + "By status": "Por estado", + "By priority": "Por prioridad", + "Character roster": "Lista de personajes", + "Progression": "Progresión", + "World content": "Contenido del mundo", + "Awaiting approval": "Pendiente de aprobación", + "Player characters": "Personajes jugadores", + "Awards": "Concesiones", + "Experience": "Experiencia", + "Experience awarded": "Experiencia concedida", + "Per character": "Por personaje", + "By type": "Por tipo", + "By approval": "Por aprobación", + "Items carried by characters": "Objetos que llevan los personajes", + "Conditions on characters": "Estados en los personajes", + "Nothing awarded yet": "Aún no se ha concedido nada", + "Who is playing what, and what is still waiting for approval.": "Quién juega qué, y qué sigue pendiente de aprobación.", + "Experience awarded, and who earned it.": "La experiencia concedida y quién la ganó.", + "How much the world holds, and what characters actually carry.": "Cuánto contiene el mundo, y qué llevan realmente los personajes.", + "Store": "Tienda", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Instale registros, esquemas y flujos publicados por otras organizaciones." }, "plurals": {} } diff --git a/l10n/et.js b/l10n/et.js index db1cecde..5f5dcd6a 100644 --- a/l10n/et.js +++ b/l10n/et.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Kas laadida näidisandmed?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Näidisandmed täidavad loendid, detailvaated ja töölauad, nii et näete rakendust kohe töötamas. Tootmispaigalduses valige \"Puudub\".", + "Load the example data": "Laadi näidisandmed", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Laadib selle, mille valisite. Need on selgelt näidisandmed, toimingut võib ohutult korrata ja hiljem saab need kustutada.", + "None, I will set this up myself": "Puudub, seadistan ise", + "Nothing is imported. You start with an empty app and add your own data.": "Midagi ei impordita. Alustate tühja rakendusega ja lisate oma andmed.", + "Example data": "Näidisandmed", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Näidisväärtused iga skeemi kohta, mille see rakendus kaasa toob, loodud skeemide endi põhjal. Need näitavad loendeid, detailvaateid ja töölaudu töös, mitte ei jutusta lugu. Ohutu korrata ja hiljem kustutada.", "Larpinq": "Larpinq", "Dashboard": "Töölaud", "Characters": "Tegelased", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Puuduvad — see on juuroskus.", "Where the automation lives": "Kus automaatika elab", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows on see, mis juhtub ilma et keegi klõpsaks: meeldetuletus enne tähtaja möödumist, kinnitus esitamisel. Siin loed ja muudad neid — praegu pole midagi ehitada.", - "Open Flows in the menu": "Ava menüüst Flows" + "Open Flows in the menu": "Ava menüüst Flows", + "Ability Name": "Võime nimi", + "Affected Characters": "Mõjutatud tegelased", + "Amount of copper pieces": "Vaskmüntide arv", + "Amount of gold pieces": "Kuldmüntide arv", + "Amount of silver pieces": "Hõbemüntide arv", + "Automatic system notices": "Automaatsed süsteemiteated", + "Award Reason": "Andmise põhjus", + "Awarded At": "Antud", + "Awarded By": "Andja", + "Background Story": "Taustalugu", + "Base Value": "Algväärtus", + "Character Card": "Tegelase kaart", + "Character Name": "Tegelase nimi", + "Checked In At": "Kohalolek registreeritud", + "Checked In By": "Kohaloleku registreerija", + "Condition Name": "Seisundi nimi", + "Contact email address": "Kontakti e-posti aadress", + "Copper Pieces": "Vaskmündid", + "Effect Name": "Mõju nimi", + "End Date": "Lõppkuupäev", + "Event Name": "Sündmuse nimi", + "Event description": "Sündmuse kirjeldus", + "Event end date and time": "Sündmuse lõppkuupäev ja -kellaaeg", + "Event location": "Sündmuse toimumiskoht", + "Event name": "Sündmuse nimi", + "Event start date and time": "Sündmuse alguskuupäev ja -kellaaeg", + "Faith": "Usk", + "Full name of the player": "Mängija täisnimi", + "Game Master Notes (Private)": "Mängujuhi märkmed (privaatsed)", + "Game Master Notes (Public)": "Mängujuhi märkmed (avalikud)", + "Gold Pieces": "Kuldmündid", + "Item Name": "Eseme nimi", + "Items and Money": "Esemed ja raha", + "Mechanical Effect": "Mängumehaaniline mõju", + "Modifier Value": "Modifikaatori väärtus", + "Name of the condition": "Seisundi nimi", + "Name of the effect": "Mõju nimi", + "Name of the event": "Sündmuse nimi", + "Name of the item": "Eseme nimi", + "Name of the skill": "Oskuse nimi", + "Name of the stat": "Omaduse nimi", + "Nextcloud user": "Nextcloudi kasutaja", + "Notes about items and money": "Märkmed esemete ja raha kohta", + "Notes about the player": "Märkmed mängija kohta", + "Overridden At": "Erand tehtud", + "Overridden By": "Erandi tegija", + "Override Reason": "Erandi põhjus", + "Owner": "Omanik", + "Owner UID": "Omaniku UID", + "Participating Characters": "Osalevad tegelased", + "Player Name": "Mängija nimi", + "Post-Event Effects": "Sündmusejärgsed mõjud", + "Real name of the player": "Mängija pärisnimi", + "Required Conditions": "Nõutavad seisundid", + "Required Effects": "Nõutavad mõjud", + "Required Score": "Nõutav väärtus", + "Required Skills": "Nõutavad oskused", + "Required Stats": "Nõutavad omadused", + "Requirement Overrides": "Erandid eeldustest", + "Setting Name": "Mängumaailma nimi", + "Silver Pieces": "Hõbemündid", + "Skill Name": "Oskuse nimi", + "Start Date": "Alguskuupäev", + "Starting value for all characters": "Algväärtus kõigile tegelastele", + "Stat": "Omadus", + "Status": "Olek", + "System Notice": "Süsteemiteade", + "Unique Artifact": "Unikaalne artefakt", + "Unique Condition": "Unikaalne seisund", + "XP Amount": "Kogemuspunktide arv", + "XP Award": "Kogemuspunktide andmine", + "Reports": "Aruanded", + "Pick a report to open it.": "Vali aruanne, et see avada.", + "Open": "Avatud", + "In progress": "Töös", + "Blocked": "Blokeeritud", + "Date": "Kuupäev", + "Due": "Tähtaeg", + "Assignee": "Määratud", + "Who": "Kes", + "What": "Mis", + "Minutes": "Minutid", + "Entries": "Kirjed", + "Most recent": "Uusimad", + "Per person": "Isiku kohta", + "By status": "Staatuse järgi", + "By priority": "Prioriteedi järgi", + "Character roster": "Tegelaste nimekiri", + "Progression": "Areng", + "World content": "Maailma sisu", + "Awaiting approval": "Ootab kinnitust", + "Player characters": "Mängijate tegelased", + "Awards": "Määramised", + "Experience": "Kogemus", + "Experience awarded": "Antud kogemus", + "Per character": "Tegelase kohta", + "By type": "Tüübi järgi", + "By approval": "Kinnituse järgi", + "Items carried by characters": "Tegelaste kantavad esemed", + "Conditions on characters": "Tegelaste seisundid", + "Nothing awarded yet": "Midagi pole veel antud", + "Who is playing what, and what is still waiting for approval.": "Kes mida mängib ja mis ootab veel kinnitust.", + "Experience awarded, and who earned it.": "Antud kogemus ja kes selle teenis.", + "How much the world holds, and what characters actually carry.": "Kui palju maailm sisaldab ja mida tegelased tegelikult kannavad.", + "Store": "Pood", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Paigalda registrid, skeemid ja voog, mille teised organisatsioonid on avaldanud." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/et.json b/l10n/et.json index 027ec9d9..8ada41ef 100644 --- a/l10n/et.json +++ b/l10n/et.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Kas laadida näidisandmed?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Näidisandmed täidavad loendid, detailvaated ja töölauad, nii et näete rakendust kohe töötamas. Tootmispaigalduses valige \"Puudub\".", + "Load the example data": "Laadi näidisandmed", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Laadib selle, mille valisite. Need on selgelt näidisandmed, toimingut võib ohutult korrata ja hiljem saab need kustutada.", + "None, I will set this up myself": "Puudub, seadistan ise", + "Nothing is imported. You start with an empty app and add your own data.": "Midagi ei impordita. Alustate tühja rakendusega ja lisate oma andmed.", + "Example data": "Näidisandmed", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Näidisväärtused iga skeemi kohta, mille see rakendus kaasa toob, loodud skeemide endi põhjal. Need näitavad loendeid, detailvaateid ja töölaudu töös, mitte ei jutusta lugu. Ohutu korrata ja hiljem kustutada.", "Larpinq": "Larpinq", "Dashboard": "Töölaud", "Characters": "Tegelased", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Puuduvad — see on juuroskus.", "Where the automation lives": "Kus automaatika elab", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows on see, mis juhtub ilma et keegi klõpsaks: meeldetuletus enne tähtaja möödumist, kinnitus esitamisel. Siin loed ja muudad neid — praegu pole midagi ehitada.", - "Open Flows in the menu": "Ava menüüst Flows" + "Open Flows in the menu": "Ava menüüst Flows", + "Ability Name": "Võime nimi", + "Affected Characters": "Mõjutatud tegelased", + "Amount of copper pieces": "Vaskmüntide arv", + "Amount of gold pieces": "Kuldmüntide arv", + "Amount of silver pieces": "Hõbemüntide arv", + "Automatic system notices": "Automaatsed süsteemiteated", + "Award Reason": "Andmise põhjus", + "Awarded At": "Antud", + "Awarded By": "Andja", + "Background Story": "Taustalugu", + "Base Value": "Algväärtus", + "Character Card": "Tegelase kaart", + "Character Name": "Tegelase nimi", + "Checked In At": "Kohalolek registreeritud", + "Checked In By": "Kohaloleku registreerija", + "Condition Name": "Seisundi nimi", + "Contact email address": "Kontakti e-posti aadress", + "Copper Pieces": "Vaskmündid", + "Effect Name": "Mõju nimi", + "End Date": "Lõppkuupäev", + "Event Name": "Sündmuse nimi", + "Event description": "Sündmuse kirjeldus", + "Event end date and time": "Sündmuse lõppkuupäev ja -kellaaeg", + "Event location": "Sündmuse toimumiskoht", + "Event name": "Sündmuse nimi", + "Event start date and time": "Sündmuse alguskuupäev ja -kellaaeg", + "Faith": "Usk", + "Full name of the player": "Mängija täisnimi", + "Game Master Notes (Private)": "Mängujuhi märkmed (privaatsed)", + "Game Master Notes (Public)": "Mängujuhi märkmed (avalikud)", + "Gold Pieces": "Kuldmündid", + "Item Name": "Eseme nimi", + "Items and Money": "Esemed ja raha", + "Mechanical Effect": "Mängumehaaniline mõju", + "Modifier Value": "Modifikaatori väärtus", + "Name of the condition": "Seisundi nimi", + "Name of the effect": "Mõju nimi", + "Name of the event": "Sündmuse nimi", + "Name of the item": "Eseme nimi", + "Name of the skill": "Oskuse nimi", + "Name of the stat": "Omaduse nimi", + "Nextcloud user": "Nextcloudi kasutaja", + "Notes about items and money": "Märkmed esemete ja raha kohta", + "Notes about the player": "Märkmed mängija kohta", + "Overridden At": "Erand tehtud", + "Overridden By": "Erandi tegija", + "Override Reason": "Erandi põhjus", + "Owner": "Omanik", + "Owner UID": "Omaniku UID", + "Participating Characters": "Osalevad tegelased", + "Player Name": "Mängija nimi", + "Post-Event Effects": "Sündmusejärgsed mõjud", + "Real name of the player": "Mängija pärisnimi", + "Required Conditions": "Nõutavad seisundid", + "Required Effects": "Nõutavad mõjud", + "Required Score": "Nõutav väärtus", + "Required Skills": "Nõutavad oskused", + "Required Stats": "Nõutavad omadused", + "Requirement Overrides": "Erandid eeldustest", + "Setting Name": "Mängumaailma nimi", + "Silver Pieces": "Hõbemündid", + "Skill Name": "Oskuse nimi", + "Start Date": "Alguskuupäev", + "Starting value for all characters": "Algväärtus kõigile tegelastele", + "Stat": "Omadus", + "Status": "Olek", + "System Notice": "Süsteemiteade", + "Unique Artifact": "Unikaalne artefakt", + "Unique Condition": "Unikaalne seisund", + "XP Amount": "Kogemuspunktide arv", + "XP Award": "Kogemuspunktide andmine", + "Reports": "Aruanded", + "Pick a report to open it.": "Vali aruanne, et see avada.", + "Open": "Avatud", + "In progress": "Töös", + "Blocked": "Blokeeritud", + "Date": "Kuupäev", + "Due": "Tähtaeg", + "Assignee": "Määratud", + "Who": "Kes", + "What": "Mis", + "Minutes": "Minutid", + "Entries": "Kirjed", + "Most recent": "Uusimad", + "Per person": "Isiku kohta", + "By status": "Staatuse järgi", + "By priority": "Prioriteedi järgi", + "Character roster": "Tegelaste nimekiri", + "Progression": "Areng", + "World content": "Maailma sisu", + "Awaiting approval": "Ootab kinnitust", + "Player characters": "Mängijate tegelased", + "Awards": "Määramised", + "Experience": "Kogemus", + "Experience awarded": "Antud kogemus", + "Per character": "Tegelase kohta", + "By type": "Tüübi järgi", + "By approval": "Kinnituse järgi", + "Items carried by characters": "Tegelaste kantavad esemed", + "Conditions on characters": "Tegelaste seisundid", + "Nothing awarded yet": "Midagi pole veel antud", + "Who is playing what, and what is still waiting for approval.": "Kes mida mängib ja mis ootab veel kinnitust.", + "Experience awarded, and who earned it.": "Antud kogemus ja kes selle teenis.", + "How much the world holds, and what characters actually carry.": "Kui palju maailm sisaldab ja mida tegelased tegelikult kannavad.", + "Store": "Pood", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Paigalda registrid, skeemid ja voog, mille teised organisatsioonid on avaldanud." }, "plurals": {} } diff --git a/l10n/fi.js b/l10n/fi.js index 4cc0d638..1b5dc1e9 100644 --- a/l10n/fi.js +++ b/l10n/fi.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Ladataanko esimerkkitiedot?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Esimerkkitiedot täyttävät luettelot, tietosivut ja koontinäytöt, joten näet sovelluksen heti toiminnassa. Valitse tuotantoasennuksessa \"Ei mitään\".", + "Load the example data": "Lataa esimerkkitiedot", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Lataa sen, minkä valitsit. Tiedot ovat selvästi esimerkkitietoja, toiminnon voi toistaa turvallisesti ja ne voi poistaa jälkeenpäin.", + "None, I will set this up myself": "Ei mitään, teen asetukset itse", + "Nothing is imported. You start with an empty app and add your own data.": "Mitään ei tuoda. Aloitat tyhjästä sovelluksesta ja lisäät omat tietosi.", + "Example data": "Esimerkkitiedot", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Esimerkkiarvot jokaiselle skeemalle, jonka tämä sovellus tuo mukanaan, luotuina skeemoista itsestään. Ne näyttävät luettelot, tietosivut ja koontinäytöt toiminnassa sen sijaan että kertoisivat tarinan. Turvallista toistaa ja poistaa jälkeenpäin.", "Larpinq": "Larpinq", "Dashboard": "Kojelauta", "Characters": "Hahmot", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Ei mitään — tämä on juuritaito.", "Where the automation lives": "Missä automaatio asuu", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows on se, mikä tapahtuu ilman että kukaan klikkaa: muistutus ennen määräajan umpeutumista, vahvistus lähetettäessä. Täällä luet ja muokkaat niitä — nyt ei tarvitse rakentaa mitään.", - "Open Flows in the menu": "Avaa Flows valikosta" + "Open Flows in the menu": "Avaa Flows valikosta", + "Ability Name": "Kyvyn nimi", + "Affected Characters": "Vaikutuksen kohteena olevat hahmot", + "Amount of copper pieces": "Kuparikolikoiden määrä", + "Amount of gold pieces": "Kultakolikoiden määrä", + "Amount of silver pieces": "Hopeakolikoiden määrä", + "Automatic system notices": "Automaattiset järjestelmäilmoitukset", + "Award Reason": "Myöntämisen syy", + "Awarded At": "Myönnetty", + "Awarded By": "Myöntäjä", + "Background Story": "Taustatarina", + "Base Value": "Perusarvo", + "Character Card": "Hahmokortti", + "Character Name": "Hahmon nimi", + "Checked In At": "Saapuminen kirjattu", + "Checked In By": "Saapumisen kirjaaja", + "Condition Name": "Tilan nimi", + "Contact email address": "Yhteydenoton sähköpostiosoite", + "Copper Pieces": "Kuparikolikot", + "Effect Name": "Vaikutuksen nimi", + "End Date": "Päättymispäivä", + "Event Name": "Tapahtuman nimi", + "Event description": "Tapahtuman kuvaus", + "Event end date and time": "Tapahtuman päättymispäivä ja -aika", + "Event location": "Tapahtuman paikka", + "Event name": "Tapahtuman nimi", + "Event start date and time": "Tapahtuman alkamispäivä ja -aika", + "Faith": "Usko", + "Full name of the player": "Pelaajan koko nimi", + "Game Master Notes (Private)": "Pelinjohtajan muistiinpanot (yksityiset)", + "Game Master Notes (Public)": "Pelinjohtajan muistiinpanot (julkiset)", + "Gold Pieces": "Kultakolikot", + "Item Name": "Esineen nimi", + "Items and Money": "Esineet ja raha", + "Mechanical Effect": "Pelimekaaninen vaikutus", + "Modifier Value": "Muokkaajan arvo", + "Name of the condition": "Tilan nimi", + "Name of the effect": "Vaikutuksen nimi", + "Name of the event": "Tapahtuman nimi", + "Name of the item": "Esineen nimi", + "Name of the skill": "Taidon nimi", + "Name of the stat": "Ominaisuuden nimi", + "Nextcloud user": "Nextcloud-käyttäjä", + "Notes about items and money": "Muistiinpanot esineistä ja rahasta", + "Notes about the player": "Muistiinpanot pelaajasta", + "Overridden At": "Poikkeus myönnetty", + "Overridden By": "Poikkeuksen myöntäjä", + "Override Reason": "Poikkeuksen syy", + "Owner": "Omistaja", + "Owner UID": "Omistajan UID", + "Participating Characters": "Osallistuvat hahmot", + "Player Name": "Pelaajan nimi", + "Post-Event Effects": "Tapahtuman jälkeiset vaikutukset", + "Real name of the player": "Pelaajan oikea nimi", + "Required Conditions": "Vaaditut tilat", + "Required Effects": "Vaaditut vaikutukset", + "Required Score": "Vaadittu arvo", + "Required Skills": "Vaaditut taidot", + "Required Stats": "Vaaditut ominaisuudet", + "Requirement Overrides": "Poikkeukset esivaatimuksista", + "Setting Name": "Pelimaailman nimi", + "Silver Pieces": "Hopeakolikot", + "Skill Name": "Taidon nimi", + "Start Date": "Alkamispäivä", + "Starting value for all characters": "Aloitusarvo kaikille hahmoille", + "Stat": "Ominaisuus", + "Status": "Status", + "System Notice": "Järjestelmäilmoitus", + "Unique Artifact": "Ainutlaatuinen artefakti", + "Unique Condition": "Ainutlaatuinen tila", + "XP Amount": "Kokemuspisteiden määrä", + "XP Award": "Kokemuspisteiden myöntäminen", + "Reports": "Raportit", + "Pick a report to open it.": "Valitse raportti avataksesi sen.", + "Open": "Avoin", + "In progress": "Käynnissä", + "Blocked": "Estetty", + "Date": "Päivämäärä", + "Due": "Määräpäivä", + "Assignee": "Vastuuhenkilö", + "Who": "Kuka", + "What": "Mitä", + "Minutes": "Minuutit", + "Entries": "Merkinnät", + "Most recent": "Uusimmat", + "Per person": "Henkilöä kohti", + "By status": "Tilan mukaan", + "By priority": "Prioriteetin mukaan", + "Character roster": "Hahmoluettelo", + "Progression": "Eteneminen", + "World content": "Maailman sisältö", + "Awaiting approval": "Odottaa hyväksyntää", + "Player characters": "Pelaajahahmot", + "Awards": "Myönnöt", + "Experience": "Kokemus", + "Experience awarded": "Myönnetty kokemus", + "Per character": "Hahmoa kohti", + "By type": "Tyypin mukaan", + "By approval": "Hyväksynnän mukaan", + "Items carried by characters": "Hahmojen kantamat esineet", + "Conditions on characters": "Hahmojen tilat", + "Nothing awarded yet": "Mitään ei ole vielä myönnetty", + "Who is playing what, and what is still waiting for approval.": "Kuka pelaa mitäkin ja mikä odottaa vielä hyväksyntää.", + "Experience awarded, and who earned it.": "Myönnetty kokemus ja kuka sen ansaitsi.", + "How much the world holds, and what characters actually carry.": "Kuinka paljon maailma sisältää ja mitä hahmot todella kantavat.", + "Store": "Kauppa", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Asenna muiden organisaatioiden julkaisemia rekistereitä, skeemoja ja vuokaavioita." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/fi.json b/l10n/fi.json index 2b92beef..6ce9a400 100644 --- a/l10n/fi.json +++ b/l10n/fi.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Ladataanko esimerkkitiedot?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Esimerkkitiedot täyttävät luettelot, tietosivut ja koontinäytöt, joten näet sovelluksen heti toiminnassa. Valitse tuotantoasennuksessa \"Ei mitään\".", + "Load the example data": "Lataa esimerkkitiedot", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Lataa sen, minkä valitsit. Tiedot ovat selvästi esimerkkitietoja, toiminnon voi toistaa turvallisesti ja ne voi poistaa jälkeenpäin.", + "None, I will set this up myself": "Ei mitään, teen asetukset itse", + "Nothing is imported. You start with an empty app and add your own data.": "Mitään ei tuoda. Aloitat tyhjästä sovelluksesta ja lisäät omat tietosi.", + "Example data": "Esimerkkitiedot", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Esimerkkiarvot jokaiselle skeemalle, jonka tämä sovellus tuo mukanaan, luotuina skeemoista itsestään. Ne näyttävät luettelot, tietosivut ja koontinäytöt toiminnassa sen sijaan että kertoisivat tarinan. Turvallista toistaa ja poistaa jälkeenpäin.", "Larpinq": "Larpinq", "Dashboard": "Kojelauta", "Characters": "Hahmot", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Ei mitään — tämä on juuritaito.", "Where the automation lives": "Missä automaatio asuu", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows on se, mikä tapahtuu ilman että kukaan klikkaa: muistutus ennen määräajan umpeutumista, vahvistus lähetettäessä. Täällä luet ja muokkaat niitä — nyt ei tarvitse rakentaa mitään.", - "Open Flows in the menu": "Avaa Flows valikosta" + "Open Flows in the menu": "Avaa Flows valikosta", + "Ability Name": "Kyvyn nimi", + "Affected Characters": "Vaikutuksen kohteena olevat hahmot", + "Amount of copper pieces": "Kuparikolikoiden määrä", + "Amount of gold pieces": "Kultakolikoiden määrä", + "Amount of silver pieces": "Hopeakolikoiden määrä", + "Automatic system notices": "Automaattiset järjestelmäilmoitukset", + "Award Reason": "Myöntämisen syy", + "Awarded At": "Myönnetty", + "Awarded By": "Myöntäjä", + "Background Story": "Taustatarina", + "Base Value": "Perusarvo", + "Character Card": "Hahmokortti", + "Character Name": "Hahmon nimi", + "Checked In At": "Saapuminen kirjattu", + "Checked In By": "Saapumisen kirjaaja", + "Condition Name": "Tilan nimi", + "Contact email address": "Yhteydenoton sähköpostiosoite", + "Copper Pieces": "Kuparikolikot", + "Effect Name": "Vaikutuksen nimi", + "End Date": "Päättymispäivä", + "Event Name": "Tapahtuman nimi", + "Event description": "Tapahtuman kuvaus", + "Event end date and time": "Tapahtuman päättymispäivä ja -aika", + "Event location": "Tapahtuman paikka", + "Event name": "Tapahtuman nimi", + "Event start date and time": "Tapahtuman alkamispäivä ja -aika", + "Faith": "Usko", + "Full name of the player": "Pelaajan koko nimi", + "Game Master Notes (Private)": "Pelinjohtajan muistiinpanot (yksityiset)", + "Game Master Notes (Public)": "Pelinjohtajan muistiinpanot (julkiset)", + "Gold Pieces": "Kultakolikot", + "Item Name": "Esineen nimi", + "Items and Money": "Esineet ja raha", + "Mechanical Effect": "Pelimekaaninen vaikutus", + "Modifier Value": "Muokkaajan arvo", + "Name of the condition": "Tilan nimi", + "Name of the effect": "Vaikutuksen nimi", + "Name of the event": "Tapahtuman nimi", + "Name of the item": "Esineen nimi", + "Name of the skill": "Taidon nimi", + "Name of the stat": "Ominaisuuden nimi", + "Nextcloud user": "Nextcloud-käyttäjä", + "Notes about items and money": "Muistiinpanot esineistä ja rahasta", + "Notes about the player": "Muistiinpanot pelaajasta", + "Overridden At": "Poikkeus myönnetty", + "Overridden By": "Poikkeuksen myöntäjä", + "Override Reason": "Poikkeuksen syy", + "Owner": "Omistaja", + "Owner UID": "Omistajan UID", + "Participating Characters": "Osallistuvat hahmot", + "Player Name": "Pelaajan nimi", + "Post-Event Effects": "Tapahtuman jälkeiset vaikutukset", + "Real name of the player": "Pelaajan oikea nimi", + "Required Conditions": "Vaaditut tilat", + "Required Effects": "Vaaditut vaikutukset", + "Required Score": "Vaadittu arvo", + "Required Skills": "Vaaditut taidot", + "Required Stats": "Vaaditut ominaisuudet", + "Requirement Overrides": "Poikkeukset esivaatimuksista", + "Setting Name": "Pelimaailman nimi", + "Silver Pieces": "Hopeakolikot", + "Skill Name": "Taidon nimi", + "Start Date": "Alkamispäivä", + "Starting value for all characters": "Aloitusarvo kaikille hahmoille", + "Stat": "Ominaisuus", + "Status": "Status", + "System Notice": "Järjestelmäilmoitus", + "Unique Artifact": "Ainutlaatuinen artefakti", + "Unique Condition": "Ainutlaatuinen tila", + "XP Amount": "Kokemuspisteiden määrä", + "XP Award": "Kokemuspisteiden myöntäminen", + "Reports": "Raportit", + "Pick a report to open it.": "Valitse raportti avataksesi sen.", + "Open": "Avoin", + "In progress": "Käynnissä", + "Blocked": "Estetty", + "Date": "Päivämäärä", + "Due": "Määräpäivä", + "Assignee": "Vastuuhenkilö", + "Who": "Kuka", + "What": "Mitä", + "Minutes": "Minuutit", + "Entries": "Merkinnät", + "Most recent": "Uusimmat", + "Per person": "Henkilöä kohti", + "By status": "Tilan mukaan", + "By priority": "Prioriteetin mukaan", + "Character roster": "Hahmoluettelo", + "Progression": "Eteneminen", + "World content": "Maailman sisältö", + "Awaiting approval": "Odottaa hyväksyntää", + "Player characters": "Pelaajahahmot", + "Awards": "Myönnöt", + "Experience": "Kokemus", + "Experience awarded": "Myönnetty kokemus", + "Per character": "Hahmoa kohti", + "By type": "Tyypin mukaan", + "By approval": "Hyväksynnän mukaan", + "Items carried by characters": "Hahmojen kantamat esineet", + "Conditions on characters": "Hahmojen tilat", + "Nothing awarded yet": "Mitään ei ole vielä myönnetty", + "Who is playing what, and what is still waiting for approval.": "Kuka pelaa mitäkin ja mikä odottaa vielä hyväksyntää.", + "Experience awarded, and who earned it.": "Myönnetty kokemus ja kuka sen ansaitsi.", + "How much the world holds, and what characters actually carry.": "Kuinka paljon maailma sisältää ja mitä hahmot todella kantavat.", + "Store": "Kauppa", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Asenna muiden organisaatioiden julkaisemia rekistereitä, skeemoja ja vuokaavioita." }, "plurals": {} } diff --git a/l10n/fr.js b/l10n/fr.js index d06f9d76..925457f9 100644 --- a/l10n/fr.js +++ b/l10n/fr.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Charger des données d’exemple ?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Les données d’exemple remplissent les listes, les pages de détail et les tableaux de bord, pour voir l’application fonctionner tout de suite. Choisissez \"Aucune\" sur une installation de production.", + "Load the example data": "Charger les données d’exemple", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Charge ce que vous avez choisi. Ce sont visiblement des données d’exemple, l’opération peut être relancée sans risque, et vous pouvez les supprimer ensuite.", + "None, I will set this up myself": "Aucune, je configure moi-même", + "Nothing is imported. You start with an empty app and add your own data.": "Rien n’est importé. Vous commencez avec une application vide et ajoutez vos propres données.", + "Example data": "Données d’exemple", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Des valeurs d’exemple pour chaque schéma fourni par cette application, générées à partir des schémas eux-mêmes. Elles montrent les listes, les pages de détail et les tableaux de bord en fonctionnement plutôt que de raconter une histoire. Relançable sans risque, et supprimable ensuite.", "Larpinq": "Larpinq", "Dashboard": "Tableau de bord", "Characters": "Personnages", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Aucun — il s'agit d'une compétence racine.", "Where the automation lives": "Où vit l'automatisation", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Les Flows sont ce qui se passe sans que personne ne clique : un rappel avant l'échéance d'un délai, une confirmation envoyée à la soumission. C'est ici que vous les lisez et les modifiez — rien à construire maintenant.", - "Open Flows in the menu": "Ouvrez Flows dans le menu" + "Open Flows in the menu": "Ouvrez Flows dans le menu", + "Ability Name": "Nom de l'aptitude", + "Affected Characters": "Personnages concernés", + "Amount of copper pieces": "Nombre de pièces de cuivre", + "Amount of gold pieces": "Nombre de pièces d'or", + "Amount of silver pieces": "Nombre de pièces d'argent", + "Automatic system notices": "Avis système automatiques", + "Award Reason": "Motif de l'attribution", + "Awarded At": "Attribué le", + "Awarded By": "Attribué par", + "Background Story": "Historique du personnage", + "Base Value": "Valeur de base", + "Character Card": "Fiche de personnage", + "Character Name": "Nom du personnage", + "Checked In At": "Arrivée enregistrée le", + "Checked In By": "Arrivée enregistrée par", + "Condition Name": "Nom de la condition", + "Contact email address": "Adresse e-mail de contact", + "Copper Pieces": "Pièces de cuivre", + "Effect Name": "Nom de l'effet", + "End Date": "Date de fin", + "Event Name": "Nom de l'événement", + "Event description": "Description de l'événement", + "Event end date and time": "Date et heure de fin de l'événement", + "Event location": "Lieu de l'événement", + "Event name": "Nom de l'événement", + "Event start date and time": "Date et heure de début de l'événement", + "Faith": "Foi", + "Full name of the player": "Nom complet du joueur", + "Game Master Notes (Private)": "Notes du maître de jeu (privées)", + "Game Master Notes (Public)": "Notes du maître de jeu (publiques)", + "Gold Pieces": "Pièces d'or", + "Item Name": "Nom de l'objet", + "Items and Money": "Objets et argent", + "Mechanical Effect": "Effet de jeu", + "Modifier Value": "Valeur du modificateur", + "Name of the condition": "Nom de la condition", + "Name of the effect": "Nom de l'effet", + "Name of the event": "Nom de l'événement", + "Name of the item": "Nom de l'objet", + "Name of the skill": "Nom de la compétence", + "Name of the stat": "Nom de la caractéristique", + "Nextcloud user": "Utilisateur Nextcloud", + "Notes about items and money": "Notes sur les objets et l'argent", + "Notes about the player": "Notes sur le joueur", + "Overridden At": "Dérogation accordée le", + "Overridden By": "Dérogation accordée par", + "Override Reason": "Motif de la dérogation", + "Owner": "Propriétaire", + "Owner UID": "UID du propriétaire", + "Participating Characters": "Personnages participants", + "Player Name": "Nom du joueur", + "Post-Event Effects": "Effets après l'événement", + "Real name of the player": "Nom réel du joueur", + "Required Conditions": "Conditions requises", + "Required Effects": "Effets requis", + "Required Score": "Valeur requise", + "Required Skills": "Compétences requises", + "Required Stats": "Caractéristiques requises", + "Requirement Overrides": "Dérogations aux prérequis", + "Setting Name": "Nom de l'univers", + "Silver Pieces": "Pièces d'argent", + "Skill Name": "Nom de la compétence", + "Start Date": "Date de début", + "Starting value for all characters": "Valeur de départ pour tous les personnages", + "Stat": "Caractéristique", + "Status": "Statut", + "System Notice": "Avis système", + "Unique Artifact": "Artefact unique", + "Unique Condition": "Condition unique", + "XP Amount": "Nombre de points d'expérience", + "XP Award": "Attribution de points d'expérience", + "Reports": "Rapports", + "Pick a report to open it.": "Choisissez un rapport pour l'ouvrir.", + "Open": "Ouvert", + "In progress": "En cours", + "Blocked": "Bloqué", + "Date": "Date", + "Due": "Échéance", + "Assignee": "Assigné à", + "Who": "Qui", + "What": "Quoi", + "Minutes": "Minutes", + "Entries": "Entrées", + "Most recent": "Les plus récents", + "Per person": "Par personne", + "By status": "Par statut", + "By priority": "Par priorité", + "Character roster": "Liste des personnages", + "Progression": "Progression", + "World content": "Contenu du monde", + "Awaiting approval": "En attente d'approbation", + "Player characters": "Personnages joueurs", + "Awards": "Attributions", + "Experience": "Expérience", + "Experience awarded": "Expérience attribuée", + "Per character": "Par personnage", + "By type": "Par type", + "By approval": "Par approbation", + "Items carried by characters": "Objets portés par les personnages", + "Conditions on characters": "États sur les personnages", + "Nothing awarded yet": "Rien d'attribué pour l'instant", + "Who is playing what, and what is still waiting for approval.": "Qui joue quoi, et ce qui attend encore une approbation.", + "Experience awarded, and who earned it.": "L'expérience attribuée et qui l'a gagnée.", + "How much the world holds, and what characters actually carry.": "Ce que contient le monde, et ce que les personnages portent réellement.", + "Store": "Boutique", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Installez des registres, schémas et flux publiés par d'autres organisations." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/fr.json b/l10n/fr.json index e00d1117..fa1d224f 100644 --- a/l10n/fr.json +++ b/l10n/fr.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Charger des données d’exemple ?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Les données d’exemple remplissent les listes, les pages de détail et les tableaux de bord, pour voir l’application fonctionner tout de suite. Choisissez \"Aucune\" sur une installation de production.", + "Load the example data": "Charger les données d’exemple", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Charge ce que vous avez choisi. Ce sont visiblement des données d’exemple, l’opération peut être relancée sans risque, et vous pouvez les supprimer ensuite.", + "None, I will set this up myself": "Aucune, je configure moi-même", + "Nothing is imported. You start with an empty app and add your own data.": "Rien n’est importé. Vous commencez avec une application vide et ajoutez vos propres données.", + "Example data": "Données d’exemple", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Des valeurs d’exemple pour chaque schéma fourni par cette application, générées à partir des schémas eux-mêmes. Elles montrent les listes, les pages de détail et les tableaux de bord en fonctionnement plutôt que de raconter une histoire. Relançable sans risque, et supprimable ensuite.", "Larpinq": "Larpinq", "Dashboard": "Tableau de bord", "Characters": "Personnages", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Aucun — il s'agit d'une compétence racine.", "Where the automation lives": "Où vit l'automatisation", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Les Flows sont ce qui se passe sans que personne ne clique : un rappel avant l'échéance d'un délai, une confirmation envoyée à la soumission. C'est ici que vous les lisez et les modifiez — rien à construire maintenant.", - "Open Flows in the menu": "Ouvrez Flows dans le menu" + "Open Flows in the menu": "Ouvrez Flows dans le menu", + "Ability Name": "Nom de l'aptitude", + "Affected Characters": "Personnages concernés", + "Amount of copper pieces": "Nombre de pièces de cuivre", + "Amount of gold pieces": "Nombre de pièces d'or", + "Amount of silver pieces": "Nombre de pièces d'argent", + "Automatic system notices": "Avis système automatiques", + "Award Reason": "Motif de l'attribution", + "Awarded At": "Attribué le", + "Awarded By": "Attribué par", + "Background Story": "Historique du personnage", + "Base Value": "Valeur de base", + "Character Card": "Fiche de personnage", + "Character Name": "Nom du personnage", + "Checked In At": "Arrivée enregistrée le", + "Checked In By": "Arrivée enregistrée par", + "Condition Name": "Nom de la condition", + "Contact email address": "Adresse e-mail de contact", + "Copper Pieces": "Pièces de cuivre", + "Effect Name": "Nom de l'effet", + "End Date": "Date de fin", + "Event Name": "Nom de l'événement", + "Event description": "Description de l'événement", + "Event end date and time": "Date et heure de fin de l'événement", + "Event location": "Lieu de l'événement", + "Event name": "Nom de l'événement", + "Event start date and time": "Date et heure de début de l'événement", + "Faith": "Foi", + "Full name of the player": "Nom complet du joueur", + "Game Master Notes (Private)": "Notes du maître de jeu (privées)", + "Game Master Notes (Public)": "Notes du maître de jeu (publiques)", + "Gold Pieces": "Pièces d'or", + "Item Name": "Nom de l'objet", + "Items and Money": "Objets et argent", + "Mechanical Effect": "Effet de jeu", + "Modifier Value": "Valeur du modificateur", + "Name of the condition": "Nom de la condition", + "Name of the effect": "Nom de l'effet", + "Name of the event": "Nom de l'événement", + "Name of the item": "Nom de l'objet", + "Name of the skill": "Nom de la compétence", + "Name of the stat": "Nom de la caractéristique", + "Nextcloud user": "Utilisateur Nextcloud", + "Notes about items and money": "Notes sur les objets et l'argent", + "Notes about the player": "Notes sur le joueur", + "Overridden At": "Dérogation accordée le", + "Overridden By": "Dérogation accordée par", + "Override Reason": "Motif de la dérogation", + "Owner": "Propriétaire", + "Owner UID": "UID du propriétaire", + "Participating Characters": "Personnages participants", + "Player Name": "Nom du joueur", + "Post-Event Effects": "Effets après l'événement", + "Real name of the player": "Nom réel du joueur", + "Required Conditions": "Conditions requises", + "Required Effects": "Effets requis", + "Required Score": "Valeur requise", + "Required Skills": "Compétences requises", + "Required Stats": "Caractéristiques requises", + "Requirement Overrides": "Dérogations aux prérequis", + "Setting Name": "Nom de l'univers", + "Silver Pieces": "Pièces d'argent", + "Skill Name": "Nom de la compétence", + "Start Date": "Date de début", + "Starting value for all characters": "Valeur de départ pour tous les personnages", + "Stat": "Caractéristique", + "Status": "Statut", + "System Notice": "Avis système", + "Unique Artifact": "Artefact unique", + "Unique Condition": "Condition unique", + "XP Amount": "Nombre de points d'expérience", + "XP Award": "Attribution de points d'expérience", + "Reports": "Rapports", + "Pick a report to open it.": "Choisissez un rapport pour l'ouvrir.", + "Open": "Ouvert", + "In progress": "En cours", + "Blocked": "Bloqué", + "Date": "Date", + "Due": "Échéance", + "Assignee": "Assigné à", + "Who": "Qui", + "What": "Quoi", + "Minutes": "Minutes", + "Entries": "Entrées", + "Most recent": "Les plus récents", + "Per person": "Par personne", + "By status": "Par statut", + "By priority": "Par priorité", + "Character roster": "Liste des personnages", + "Progression": "Progression", + "World content": "Contenu du monde", + "Awaiting approval": "En attente d'approbation", + "Player characters": "Personnages joueurs", + "Awards": "Attributions", + "Experience": "Expérience", + "Experience awarded": "Expérience attribuée", + "Per character": "Par personnage", + "By type": "Par type", + "By approval": "Par approbation", + "Items carried by characters": "Objets portés par les personnages", + "Conditions on characters": "États sur les personnages", + "Nothing awarded yet": "Rien d'attribué pour l'instant", + "Who is playing what, and what is still waiting for approval.": "Qui joue quoi, et ce qui attend encore une approbation.", + "Experience awarded, and who earned it.": "L'expérience attribuée et qui l'a gagnée.", + "How much the world holds, and what characters actually carry.": "Ce que contient le monde, et ce que les personnages portent réellement.", + "Store": "Boutique", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Installez des registres, schémas et flux publiés par d'autres organisations." }, "plurals": {} } diff --git a/l10n/ga.js b/l10n/ga.js index 744ebbf6..ba3752d5 100644 --- a/l10n/ga.js +++ b/l10n/ga.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Luchtaigh sonraí samplacha?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Líonann sonraí samplacha na liostaí, na leathanaigh mhionsonraí agus na deais, ionas go bhfeicfidh tú an aip ag obair láithreach. Roghnaigh \"Ceann ar bith\" ar shuiteáil táirgthe.", + "Load the example data": "Luchtaigh na sonraí samplacha", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Luchtaíonn sé an rud a roghnaigh tú. Is sonraí samplacha go soiléir iad, is féidir é a rith níos mó ná uair amháin gan bhaol, agus is féidir leat iad a scriosadh ina dhiaidh.", + "None, I will set this up myself": "Ceann ar bith, cuirfidh mé féin é seo ar bun", + "Nothing is imported. You start with an empty app and add your own data.": "Ní iompórtáiltear aon rud. Tosaíonn tú le haip fholamh agus cuireann tú do shonraí féin leis.", + "Example data": "Sonraí samplacha", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Luachanna samplacha do gach scéimre a sholáthraíonn an aip seo, ginte ó na scéimrí féin. Taispeánann siad na liostaí, na leathanaigh mhionsonraí agus na deais ag obair seachas scéal a insint. Sábháilte le rith arís agus is féidir é a scriosadh ina dhiaidh.", "Larpinq": "Larpinq", "Dashboard": "Deais", "Characters": "Carachtair", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Ceann ar bith — is bunscil í seo.", "Where the automation lives": "An áit a maireann an uathoibriú", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Is éard is Flows ann ná an rud a tharlaíonn gan aon duine a chliceáil: meabhrúchán sula rachaidh spriocdháta in éag, deimhniú ar aighneacht. Is anseo a léann tú agus a chuireann tú in eagar iad — níl aon rud le tógáil anois.", - "Open Flows in the menu": "Oscail Flows sa roghchlár" + "Open Flows in the menu": "Oscail Flows sa roghchlár", + "Ability Name": "Ainm an chumais", + "Affected Characters": "Carachtair a bhfuil tionchar orthu", + "Amount of copper pieces": "Líon na mbonn copair", + "Amount of gold pieces": "Líon na mbonn óir", + "Amount of silver pieces": "Líon na mbonn airgid", + "Automatic system notices": "Fógraí uathoibríocha córais", + "Award Reason": "Cúis leis an mbronnadh", + "Awarded At": "Bronnta ar", + "Awarded By": "Bronnta ag", + "Background Story": "Scéal cúlra", + "Base Value": "Bunluach", + "Character Card": "Cárta an charachtair", + "Character Name": "Ainm an charachtair", + "Checked In At": "Clárú isteach ar", + "Checked In By": "Cláraithe isteach ag", + "Condition Name": "Ainm an choinníll", + "Contact email address": "Seoladh ríomhphoist teagmhála", + "Copper Pieces": "Boinn chopair", + "Effect Name": "Ainm na héifeachta", + "End Date": "Dáta deiridh", + "Event Name": "Ainm an imeachta", + "Event description": "Cur síos ar an imeacht", + "Event end date and time": "Dáta agus am deiridh an imeachta", + "Event location": "Suíomh an imeachta", + "Event name": "Ainm an imeachta", + "Event start date and time": "Dáta agus am tosaigh an imeachta", + "Faith": "Creideamh", + "Full name of the player": "Ainm iomlán an imreora", + "Game Master Notes (Private)": "Nótaí an mháistir cluiche (príobháideach)", + "Game Master Notes (Public)": "Nótaí an mháistir cluiche (poiblí)", + "Gold Pieces": "Boinn óir", + "Item Name": "Ainm na míre", + "Items and Money": "Míreanna agus airgead", + "Mechanical Effect": "Éifeacht sa chluiche", + "Modifier Value": "Luach an mhionathraitheora", + "Name of the condition": "Ainm an choinníll", + "Name of the effect": "Ainm na héifeachta", + "Name of the event": "Ainm an imeachta", + "Name of the item": "Ainm na míre", + "Name of the skill": "Ainm na scile", + "Name of the stat": "Ainm na tréithe", + "Nextcloud user": "Úsáideoir Nextcloud", + "Notes about items and money": "Nótaí faoi mhíreanna agus airgead", + "Notes about the player": "Nótaí faoin imreoir", + "Overridden At": "Sáraíodh ar", + "Overridden By": "Sáraithe ag", + "Override Reason": "Cúis leis an sárú", + "Owner": "Úinéir", + "Owner UID": "UID an úinéara", + "Participating Characters": "Carachtair rannpháirteacha", + "Player Name": "Ainm an imreora", + "Post-Event Effects": "Éifeachtaí i ndiaidh an imeachta", + "Real name of the player": "Fíorainm an imreora", + "Required Conditions": "Coinníollacha riachtanacha", + "Required Effects": "Éifeachtaí riachtanacha", + "Required Score": "Luach riachtanach", + "Required Skills": "Scileanna riachtanacha", + "Required Stats": "Tréithe riachtanacha", + "Requirement Overrides": "Sáruithe ar na réamhriachtanais", + "Setting Name": "Ainm shaol an chluiche", + "Silver Pieces": "Boinn airgid", + "Skill Name": "Ainm na scile", + "Start Date": "Dáta tosaigh", + "Starting value for all characters": "Luach tosaigh do gach carachtar", + "Stat": "Tréith", + "Status": "Stádas", + "System Notice": "Fógra córais", + "Unique Artifact": "Déantán uathúil", + "Unique Condition": "Coinníoll uathúil", + "XP Amount": "Líon na bpointí taithí", + "XP Award": "Bronnadh pointí taithí", + "Reports": "Tuairiscí", + "Pick a report to open it.": "Roghnaigh tuairisc chun í a oscailt.", + "Open": "Oscailte", + "In progress": "Ar siúl", + "Blocked": "Bactha", + "Date": "Dáta", + "Due": "Spriocdháta", + "Assignee": "Sannta do", + "Who": "Cé", + "What": "Cad", + "Minutes": "Nóiméad", + "Entries": "Iontrálacha", + "Most recent": "Is déanaí", + "Per person": "In aghaidh an duine", + "By status": "De réir stádais", + "By priority": "De réir tosaíochta", + "Character roster": "Liosta carachtar", + "Progression": "Dul chun cinn", + "World content": "Ábhar an domhain", + "Awaiting approval": "Ag fanacht le faomhadh", + "Player characters": "Carachtair imreora", + "Awards": "Dámhachtainí", + "Experience": "Taithí", + "Experience awarded": "Taithí bronnta", + "Per character": "In aghaidh an charachtair", + "By type": "De réir cineáil", + "By approval": "De réir faofa", + "Items carried by characters": "Míreanna á n-iompar ag carachtair", + "Conditions on characters": "Coinníollacha ar charachtair", + "Nothing awarded yet": "Níl aon rud bronnta go fóill", + "Who is playing what, and what is still waiting for approval.": "Cé atá ag imirt cad, agus cad atá fós ag fanacht le faomhadh.", + "Experience awarded, and who earned it.": "An taithí a bronnadh, agus cé a thuill í.", + "How much the world holds, and what characters actually carry.": "Cé mhéad atá sa domhan, agus cad a iompraíonn carachtair i ndáiríre.", + "Store": "Siopa", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Suiteáil cláir, scéimeanna agus sruthanna a d'fhoilsigh eagraíochtaí eile." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/ga.json b/l10n/ga.json index a139d111..5a97e366 100644 --- a/l10n/ga.json +++ b/l10n/ga.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Luchtaigh sonraí samplacha?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Líonann sonraí samplacha na liostaí, na leathanaigh mhionsonraí agus na deais, ionas go bhfeicfidh tú an aip ag obair láithreach. Roghnaigh \"Ceann ar bith\" ar shuiteáil táirgthe.", + "Load the example data": "Luchtaigh na sonraí samplacha", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Luchtaíonn sé an rud a roghnaigh tú. Is sonraí samplacha go soiléir iad, is féidir é a rith níos mó ná uair amháin gan bhaol, agus is féidir leat iad a scriosadh ina dhiaidh.", + "None, I will set this up myself": "Ceann ar bith, cuirfidh mé féin é seo ar bun", + "Nothing is imported. You start with an empty app and add your own data.": "Ní iompórtáiltear aon rud. Tosaíonn tú le haip fholamh agus cuireann tú do shonraí féin leis.", + "Example data": "Sonraí samplacha", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Luachanna samplacha do gach scéimre a sholáthraíonn an aip seo, ginte ó na scéimrí féin. Taispeánann siad na liostaí, na leathanaigh mhionsonraí agus na deais ag obair seachas scéal a insint. Sábháilte le rith arís agus is féidir é a scriosadh ina dhiaidh.", "Larpinq": "Larpinq", "Dashboard": "Deais", "Characters": "Carachtair", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Ceann ar bith — is bunscil í seo.", "Where the automation lives": "An áit a maireann an uathoibriú", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Is éard is Flows ann ná an rud a tharlaíonn gan aon duine a chliceáil: meabhrúchán sula rachaidh spriocdháta in éag, deimhniú ar aighneacht. Is anseo a léann tú agus a chuireann tú in eagar iad — níl aon rud le tógáil anois.", - "Open Flows in the menu": "Oscail Flows sa roghchlár" + "Open Flows in the menu": "Oscail Flows sa roghchlár", + "Ability Name": "Ainm an chumais", + "Affected Characters": "Carachtair a bhfuil tionchar orthu", + "Amount of copper pieces": "Líon na mbonn copair", + "Amount of gold pieces": "Líon na mbonn óir", + "Amount of silver pieces": "Líon na mbonn airgid", + "Automatic system notices": "Fógraí uathoibríocha córais", + "Award Reason": "Cúis leis an mbronnadh", + "Awarded At": "Bronnta ar", + "Awarded By": "Bronnta ag", + "Background Story": "Scéal cúlra", + "Base Value": "Bunluach", + "Character Card": "Cárta an charachtair", + "Character Name": "Ainm an charachtair", + "Checked In At": "Clárú isteach ar", + "Checked In By": "Cláraithe isteach ag", + "Condition Name": "Ainm an choinníll", + "Contact email address": "Seoladh ríomhphoist teagmhála", + "Copper Pieces": "Boinn chopair", + "Effect Name": "Ainm na héifeachta", + "End Date": "Dáta deiridh", + "Event Name": "Ainm an imeachta", + "Event description": "Cur síos ar an imeacht", + "Event end date and time": "Dáta agus am deiridh an imeachta", + "Event location": "Suíomh an imeachta", + "Event name": "Ainm an imeachta", + "Event start date and time": "Dáta agus am tosaigh an imeachta", + "Faith": "Creideamh", + "Full name of the player": "Ainm iomlán an imreora", + "Game Master Notes (Private)": "Nótaí an mháistir cluiche (príobháideach)", + "Game Master Notes (Public)": "Nótaí an mháistir cluiche (poiblí)", + "Gold Pieces": "Boinn óir", + "Item Name": "Ainm na míre", + "Items and Money": "Míreanna agus airgead", + "Mechanical Effect": "Éifeacht sa chluiche", + "Modifier Value": "Luach an mhionathraitheora", + "Name of the condition": "Ainm an choinníll", + "Name of the effect": "Ainm na héifeachta", + "Name of the event": "Ainm an imeachta", + "Name of the item": "Ainm na míre", + "Name of the skill": "Ainm na scile", + "Name of the stat": "Ainm na tréithe", + "Nextcloud user": "Úsáideoir Nextcloud", + "Notes about items and money": "Nótaí faoi mhíreanna agus airgead", + "Notes about the player": "Nótaí faoin imreoir", + "Overridden At": "Sáraíodh ar", + "Overridden By": "Sáraithe ag", + "Override Reason": "Cúis leis an sárú", + "Owner": "Úinéir", + "Owner UID": "UID an úinéara", + "Participating Characters": "Carachtair rannpháirteacha", + "Player Name": "Ainm an imreora", + "Post-Event Effects": "Éifeachtaí i ndiaidh an imeachta", + "Real name of the player": "Fíorainm an imreora", + "Required Conditions": "Coinníollacha riachtanacha", + "Required Effects": "Éifeachtaí riachtanacha", + "Required Score": "Luach riachtanach", + "Required Skills": "Scileanna riachtanacha", + "Required Stats": "Tréithe riachtanacha", + "Requirement Overrides": "Sáruithe ar na réamhriachtanais", + "Setting Name": "Ainm shaol an chluiche", + "Silver Pieces": "Boinn airgid", + "Skill Name": "Ainm na scile", + "Start Date": "Dáta tosaigh", + "Starting value for all characters": "Luach tosaigh do gach carachtar", + "Stat": "Tréith", + "Status": "Stádas", + "System Notice": "Fógra córais", + "Unique Artifact": "Déantán uathúil", + "Unique Condition": "Coinníoll uathúil", + "XP Amount": "Líon na bpointí taithí", + "XP Award": "Bronnadh pointí taithí", + "Reports": "Tuairiscí", + "Pick a report to open it.": "Roghnaigh tuairisc chun í a oscailt.", + "Open": "Oscailte", + "In progress": "Ar siúl", + "Blocked": "Bactha", + "Date": "Dáta", + "Due": "Spriocdháta", + "Assignee": "Sannta do", + "Who": "Cé", + "What": "Cad", + "Minutes": "Nóiméad", + "Entries": "Iontrálacha", + "Most recent": "Is déanaí", + "Per person": "In aghaidh an duine", + "By status": "De réir stádais", + "By priority": "De réir tosaíochta", + "Character roster": "Liosta carachtar", + "Progression": "Dul chun cinn", + "World content": "Ábhar an domhain", + "Awaiting approval": "Ag fanacht le faomhadh", + "Player characters": "Carachtair imreora", + "Awards": "Dámhachtainí", + "Experience": "Taithí", + "Experience awarded": "Taithí bronnta", + "Per character": "In aghaidh an charachtair", + "By type": "De réir cineáil", + "By approval": "De réir faofa", + "Items carried by characters": "Míreanna á n-iompar ag carachtair", + "Conditions on characters": "Coinníollacha ar charachtair", + "Nothing awarded yet": "Níl aon rud bronnta go fóill", + "Who is playing what, and what is still waiting for approval.": "Cé atá ag imirt cad, agus cad atá fós ag fanacht le faomhadh.", + "Experience awarded, and who earned it.": "An taithí a bronnadh, agus cé a thuill í.", + "How much the world holds, and what characters actually carry.": "Cé mhéad atá sa domhan, agus cad a iompraíonn carachtair i ndáiríre.", + "Store": "Siopa", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Suiteáil cláir, scéimeanna agus sruthanna a d'fhoilsigh eagraíochtaí eile." }, "plurals": {} } diff --git a/l10n/hr.js b/l10n/hr.js index 239c0a0a..73eee3d5 100644 --- a/l10n/hr.js +++ b/l10n/hr.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Učitati primjere podataka?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Primjeri podataka popunjavaju popise, stranice s detaljima i nadzorne ploče, pa aplikaciju odmah vidite kako radi. Odaberite \"Nema\" na produkcijskoj instalaciji.", + "Load the example data": "Učitaj primjere podataka", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Učitava ono što ste odabrali. Podaci su očito primjeri, radnja se može ponoviti bez rizika, a poslije ih možete izbrisati.", + "None, I will set this up myself": "Nema, sam ću ovo postaviti", + "Nothing is imported. You start with an empty app and add your own data.": "Ništa se ne uvozi. Počinjete s praznom aplikacijom i dodajete vlastite podatke.", + "Example data": "Primjeri podataka", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Primjeri vrijednosti za svaku shemu koju aplikacija donosi, generirani iz samih shema. Pokazuju popise, stranice s detaljima i nadzorne ploče u radu umjesto da pričaju priču. Sigurno za ponavljanje i moguće je izbrisati poslije.", "Larpinq": "Larpinq", "Dashboard": "Nadzorna ploča", "Characters": "Likovi", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Nema — ovo je korijenska vještina.", "Where the automation lives": "Gdje živi automatizacija", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows je ono što se događa bez ičijeg klika: podsjetnik prije isteka roka, potvrda pri predaji. Ovdje ih čitaš i uređuješ — sada nema što graditi.", - "Open Flows in the menu": "Otvori Flows u izborniku" + "Open Flows in the menu": "Otvori Flows u izborniku", + "Ability Name": "Naziv sposobnosti", + "Affected Characters": "Zahvaćeni likovi", + "Amount of copper pieces": "Broj bakrenih novčića", + "Amount of gold pieces": "Broj zlatnih novčića", + "Amount of silver pieces": "Broj srebrnih novčića", + "Automatic system notices": "Automatske obavijesti sustava", + "Award Reason": "Razlog dodjele", + "Awarded At": "Dodijeljeno", + "Awarded By": "Dodijelio", + "Background Story": "Pozadinska priča", + "Base Value": "Osnovna vrijednost", + "Character Card": "Kartica lika", + "Character Name": "Ime lika", + "Checked In At": "Dolazak zabilježen", + "Checked In By": "Dolazak zabilježio", + "Condition Name": "Naziv stanja", + "Contact email address": "Kontaktna adresa e-pošte", + "Copper Pieces": "Bakreni novčići", + "Effect Name": "Naziv učinka", + "End Date": "Datum završetka", + "Event Name": "Naziv događaja", + "Event description": "Opis događaja", + "Event end date and time": "Datum i vrijeme završetka događaja", + "Event location": "Mjesto događaja", + "Event name": "Naziv događaja", + "Event start date and time": "Datum i vrijeme početka događaja", + "Faith": "Vjera", + "Full name of the player": "Puno ime igrača", + "Game Master Notes (Private)": "Bilješke voditelja igre (privatne)", + "Game Master Notes (Public)": "Bilješke voditelja igre (javne)", + "Gold Pieces": "Zlatni novčići", + "Item Name": "Naziv predmeta", + "Items and Money": "Predmeti i novac", + "Mechanical Effect": "Učinak u igri", + "Modifier Value": "Vrijednost modifikatora", + "Name of the condition": "Naziv stanja", + "Name of the effect": "Naziv učinka", + "Name of the event": "Naziv događaja", + "Name of the item": "Naziv predmeta", + "Name of the skill": "Naziv vještine", + "Name of the stat": "Naziv svojstva", + "Nextcloud user": "Nextcloud korisnik", + "Notes about items and money": "Bilješke o predmetima i novcu", + "Notes about the player": "Bilješke o igraču", + "Overridden At": "Iznimka odobrena", + "Overridden By": "Iznimku odobrio", + "Override Reason": "Razlog iznimke", + "Owner": "Vlasnik", + "Owner UID": "UID vlasnika", + "Participating Characters": "Sudjelujući likovi", + "Player Name": "Ime igrača", + "Post-Event Effects": "Učinci nakon događaja", + "Real name of the player": "Pravo ime igrača", + "Required Conditions": "Potrebna stanja", + "Required Effects": "Potrebni učinci", + "Required Score": "Potrebna vrijednost", + "Required Skills": "Potrebne vještine", + "Required Stats": "Potrebna svojstva", + "Requirement Overrides": "Iznimke od preduvjeta", + "Setting Name": "Naziv svijeta igre", + "Silver Pieces": "Srebrni novčići", + "Skill Name": "Naziv vještine", + "Start Date": "Datum početka", + "Starting value for all characters": "Početna vrijednost za sve likove", + "Stat": "Svojstvo", + "Status": "Status", + "System Notice": "Obavijest sustava", + "Unique Artifact": "Jedinstveni artefakt", + "Unique Condition": "Jedinstveno stanje", + "XP Amount": "Broj bodova iskustva", + "XP Award": "Dodjela bodova iskustva", + "Reports": "Izvješća", + "Pick a report to open it.": "Odaberite izvješće da ga otvorite.", + "Open": "Otvoreno", + "In progress": "U tijeku", + "Blocked": "Blokirano", + "Date": "Datum", + "Due": "Rok", + "Assignee": "Dodijeljeno", + "Who": "Tko", + "What": "Što", + "Minutes": "Minute", + "Entries": "Unosi", + "Most recent": "Najnovije", + "Per person": "Po osobi", + "By status": "Po statusu", + "By priority": "Po prioritetu", + "Character roster": "Popis likova", + "Progression": "Napredak", + "World content": "Sadržaj svijeta", + "Awaiting approval": "Čeka odobrenje", + "Player characters": "Likovi igrača", + "Awards": "Dodjele", + "Experience": "Iskustvo", + "Experience awarded": "Dodijeljeno iskustvo", + "Per character": "Po liku", + "By type": "Po vrsti", + "By approval": "Po odobrenju", + "Items carried by characters": "Predmeti koje likovi nose", + "Conditions on characters": "Stanja na likovima", + "Nothing awarded yet": "Još ništa nije dodijeljeno", + "Who is playing what, and what is still waiting for approval.": "Tko što igra i što još čeka odobrenje.", + "Experience awarded, and who earned it.": "Dodijeljeno iskustvo i tko ga je zaradio.", + "How much the world holds, and what characters actually carry.": "Koliko svijet sadrži i što likovi zaista nose.", + "Store": "Trgovina", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Instalirajte registre, sheme i tokove koje su objavile druge organizacije." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/hr.json b/l10n/hr.json index 07106649..e35549ae 100644 --- a/l10n/hr.json +++ b/l10n/hr.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Učitati primjere podataka?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Primjeri podataka popunjavaju popise, stranice s detaljima i nadzorne ploče, pa aplikaciju odmah vidite kako radi. Odaberite \"Nema\" na produkcijskoj instalaciji.", + "Load the example data": "Učitaj primjere podataka", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Učitava ono što ste odabrali. Podaci su očito primjeri, radnja se može ponoviti bez rizika, a poslije ih možete izbrisati.", + "None, I will set this up myself": "Nema, sam ću ovo postaviti", + "Nothing is imported. You start with an empty app and add your own data.": "Ništa se ne uvozi. Počinjete s praznom aplikacijom i dodajete vlastite podatke.", + "Example data": "Primjeri podataka", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Primjeri vrijednosti za svaku shemu koju aplikacija donosi, generirani iz samih shema. Pokazuju popise, stranice s detaljima i nadzorne ploče u radu umjesto da pričaju priču. Sigurno za ponavljanje i moguće je izbrisati poslije.", "Larpinq": "Larpinq", "Dashboard": "Nadzorna ploča", "Characters": "Likovi", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Nema — ovo je korijenska vještina.", "Where the automation lives": "Gdje živi automatizacija", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows je ono što se događa bez ičijeg klika: podsjetnik prije isteka roka, potvrda pri predaji. Ovdje ih čitaš i uređuješ — sada nema što graditi.", - "Open Flows in the menu": "Otvori Flows u izborniku" + "Open Flows in the menu": "Otvori Flows u izborniku", + "Ability Name": "Naziv sposobnosti", + "Affected Characters": "Zahvaćeni likovi", + "Amount of copper pieces": "Broj bakrenih novčića", + "Amount of gold pieces": "Broj zlatnih novčića", + "Amount of silver pieces": "Broj srebrnih novčića", + "Automatic system notices": "Automatske obavijesti sustava", + "Award Reason": "Razlog dodjele", + "Awarded At": "Dodijeljeno", + "Awarded By": "Dodijelio", + "Background Story": "Pozadinska priča", + "Base Value": "Osnovna vrijednost", + "Character Card": "Kartica lika", + "Character Name": "Ime lika", + "Checked In At": "Dolazak zabilježen", + "Checked In By": "Dolazak zabilježio", + "Condition Name": "Naziv stanja", + "Contact email address": "Kontaktna adresa e-pošte", + "Copper Pieces": "Bakreni novčići", + "Effect Name": "Naziv učinka", + "End Date": "Datum završetka", + "Event Name": "Naziv događaja", + "Event description": "Opis događaja", + "Event end date and time": "Datum i vrijeme završetka događaja", + "Event location": "Mjesto događaja", + "Event name": "Naziv događaja", + "Event start date and time": "Datum i vrijeme početka događaja", + "Faith": "Vjera", + "Full name of the player": "Puno ime igrača", + "Game Master Notes (Private)": "Bilješke voditelja igre (privatne)", + "Game Master Notes (Public)": "Bilješke voditelja igre (javne)", + "Gold Pieces": "Zlatni novčići", + "Item Name": "Naziv predmeta", + "Items and Money": "Predmeti i novac", + "Mechanical Effect": "Učinak u igri", + "Modifier Value": "Vrijednost modifikatora", + "Name of the condition": "Naziv stanja", + "Name of the effect": "Naziv učinka", + "Name of the event": "Naziv događaja", + "Name of the item": "Naziv predmeta", + "Name of the skill": "Naziv vještine", + "Name of the stat": "Naziv svojstva", + "Nextcloud user": "Nextcloud korisnik", + "Notes about items and money": "Bilješke o predmetima i novcu", + "Notes about the player": "Bilješke o igraču", + "Overridden At": "Iznimka odobrena", + "Overridden By": "Iznimku odobrio", + "Override Reason": "Razlog iznimke", + "Owner": "Vlasnik", + "Owner UID": "UID vlasnika", + "Participating Characters": "Sudjelujući likovi", + "Player Name": "Ime igrača", + "Post-Event Effects": "Učinci nakon događaja", + "Real name of the player": "Pravo ime igrača", + "Required Conditions": "Potrebna stanja", + "Required Effects": "Potrebni učinci", + "Required Score": "Potrebna vrijednost", + "Required Skills": "Potrebne vještine", + "Required Stats": "Potrebna svojstva", + "Requirement Overrides": "Iznimke od preduvjeta", + "Setting Name": "Naziv svijeta igre", + "Silver Pieces": "Srebrni novčići", + "Skill Name": "Naziv vještine", + "Start Date": "Datum početka", + "Starting value for all characters": "Početna vrijednost za sve likove", + "Stat": "Svojstvo", + "Status": "Status", + "System Notice": "Obavijest sustava", + "Unique Artifact": "Jedinstveni artefakt", + "Unique Condition": "Jedinstveno stanje", + "XP Amount": "Broj bodova iskustva", + "XP Award": "Dodjela bodova iskustva", + "Reports": "Izvješća", + "Pick a report to open it.": "Odaberite izvješće da ga otvorite.", + "Open": "Otvoreno", + "In progress": "U tijeku", + "Blocked": "Blokirano", + "Date": "Datum", + "Due": "Rok", + "Assignee": "Dodijeljeno", + "Who": "Tko", + "What": "Što", + "Minutes": "Minute", + "Entries": "Unosi", + "Most recent": "Najnovije", + "Per person": "Po osobi", + "By status": "Po statusu", + "By priority": "Po prioritetu", + "Character roster": "Popis likova", + "Progression": "Napredak", + "World content": "Sadržaj svijeta", + "Awaiting approval": "Čeka odobrenje", + "Player characters": "Likovi igrača", + "Awards": "Dodjele", + "Experience": "Iskustvo", + "Experience awarded": "Dodijeljeno iskustvo", + "Per character": "Po liku", + "By type": "Po vrsti", + "By approval": "Po odobrenju", + "Items carried by characters": "Predmeti koje likovi nose", + "Conditions on characters": "Stanja na likovima", + "Nothing awarded yet": "Još ništa nije dodijeljeno", + "Who is playing what, and what is still waiting for approval.": "Tko što igra i što još čeka odobrenje.", + "Experience awarded, and who earned it.": "Dodijeljeno iskustvo i tko ga je zaradio.", + "How much the world holds, and what characters actually carry.": "Koliko svijet sadrži i što likovi zaista nose.", + "Store": "Trgovina", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Instalirajte registre, sheme i tokove koje su objavile druge organizacije." }, "plurals": {} } diff --git a/l10n/hu.js b/l10n/hu.js index 28c6577c..0326bd04 100644 --- a/l10n/hu.js +++ b/l10n/hu.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Betöltsük a mintaadatokat?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "A mintaadatok feltöltik a listákat, a részletoldalakat és az irányítópultokat, így azonnal működés közben látja az alkalmazást. Éles telepítésen válassza a \"Nincs\" lehetőséget.", + "Load the example data": "Mintaadatok betöltése", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Betölti, amit választott. Ezek nyilvánvalóan mintaadatok, a művelet biztonságosan megismételhető, és utána törölheti őket.", + "None, I will set this up myself": "Nincs, magam állítom be", + "Nothing is imported. You start with an empty app and add your own data.": "Semmi nem kerül importálásra. Üres alkalmazással kezd, és a saját adatait adja hozzá.", + "Example data": "Mintaadatok", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Mintaértékek minden sémához, amelyet ez az alkalmazás hoz magával, magukból a sémákból generálva. Működés közben mutatják a listákat, a részletoldalakat és az irányítópultokat, ahelyett hogy történetet mesélnének. Biztonságosan ismételhető és utána törölhető.", "Larpinq": "Larpinq", "Dashboard": "Irányítópult", "Characters": "Karakterek", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Nincs — ez egy gyökérkészség.", "Where the automation lives": "Ahol az automatizálás lakik", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "A Flows az, ami kattintás nélkül történik: emlékeztető a határidő lejárta előtt, visszaigazolás beküldéskor. Itt olvasod és szerkeszted őket — most nincs mit építeni.", - "Open Flows in the menu": "Nyisd meg a Flows menüpontot" + "Open Flows in the menu": "Nyisd meg a Flows menüpontot", + "Ability Name": "A képesség neve", + "Affected Characters": "Érintett karakterek", + "Amount of copper pieces": "Rézérmék száma", + "Amount of gold pieces": "Aranyérmék száma", + "Amount of silver pieces": "Ezüstérmék száma", + "Automatic system notices": "Automatikus rendszerüzenetek", + "Award Reason": "Az odaítélés indoka", + "Awarded At": "Odaítélve ekkor", + "Awarded By": "Odaítélte", + "Background Story": "Háttértörténet", + "Base Value": "Alapérték", + "Character Card": "Karakterlap", + "Character Name": "A karakter neve", + "Checked In At": "Érkezés rögzítve ekkor", + "Checked In By": "Az érkezést rögzítette", + "Condition Name": "Az állapot neve", + "Contact email address": "Kapcsolattartási e-mail-cím", + "Copper Pieces": "Rézérmék", + "Effect Name": "A hatás neve", + "End Date": "Záró dátum", + "Event Name": "Az esemény neve", + "Event description": "Az esemény leírása", + "Event end date and time": "Az esemény záró dátuma és időpontja", + "Event location": "Az esemény helyszíne", + "Event name": "Az esemény neve", + "Event start date and time": "Az esemény kezdő dátuma és időpontja", + "Faith": "Hit", + "Full name of the player": "A játékos teljes neve", + "Game Master Notes (Private)": "A játékmester jegyzetei (magán)", + "Game Master Notes (Public)": "A játékmester jegyzetei (nyilvános)", + "Gold Pieces": "Aranyérmék", + "Item Name": "A tárgy neve", + "Items and Money": "Tárgyak és pénz", + "Mechanical Effect": "Játékbeli hatás", + "Modifier Value": "A módosító értéke", + "Name of the condition": "Az állapot neve", + "Name of the effect": "A hatás neve", + "Name of the event": "Az esemény neve", + "Name of the item": "A tárgy neve", + "Name of the skill": "A készség neve", + "Name of the stat": "A tulajdonság neve", + "Nextcloud user": "Nextcloud-felhasználó", + "Notes about items and money": "Jegyzetek a tárgyakról és a pénzről", + "Notes about the player": "Jegyzetek a játékosról", + "Overridden At": "Felülbírálva ekkor", + "Overridden By": "Felülbírálta", + "Override Reason": "A felülbírálás indoka", + "Owner": "Tulajdonos", + "Owner UID": "A tulajdonos UID-ja", + "Participating Characters": "Résztvevő karakterek", + "Player Name": "A játékos neve", + "Post-Event Effects": "Esemény utáni hatások", + "Real name of the player": "A játékos valódi neve", + "Required Conditions": "Szükséges állapotok", + "Required Effects": "Szükséges hatások", + "Required Score": "Szükséges érték", + "Required Skills": "Szükséges készségek", + "Required Stats": "Szükséges tulajdonságok", + "Requirement Overrides": "Felülbírált előfeltételek", + "Setting Name": "A játékvilág neve", + "Silver Pieces": "Ezüstérmék", + "Skill Name": "A készség neve", + "Start Date": "Kezdő dátum", + "Starting value for all characters": "Kezdőérték minden karakter számára", + "Stat": "Tulajdonság", + "Status": "Státusz", + "System Notice": "Rendszerüzenet", + "Unique Artifact": "Egyedi artefaktum", + "Unique Condition": "Egyedi állapot", + "XP Amount": "Tapasztalati pontok száma", + "XP Award": "Tapasztalati pontok odaítélése", + "Reports": "Jelentések", + "Pick a report to open it.": "Válasszon egy jelentést a megnyitáshoz.", + "Open": "Nyitott", + "In progress": "Folyamatban", + "Blocked": "Blokkolva", + "Date": "Dátum", + "Due": "Határidő", + "Assignee": "Felelős", + "Who": "Ki", + "What": "Mit", + "Minutes": "Perc", + "Entries": "Bejegyzések", + "Most recent": "Legutóbbi", + "Per person": "Személyenként", + "By status": "Állapot szerint", + "By priority": "Prioritás szerint", + "Character roster": "Karakterlista", + "Progression": "Fejlődés", + "World content": "Világ tartalma", + "Awaiting approval": "Jóváhagyásra vár", + "Player characters": "Játékoskarakterek", + "Awards": "Odaítélések", + "Experience": "Tapasztalat", + "Experience awarded": "Odaítélt tapasztalat", + "Per character": "Karakterenként", + "By type": "Típus szerint", + "By approval": "Jóváhagyás szerint", + "Items carried by characters": "A karakterek által vitt tárgyak", + "Conditions on characters": "Karakterek állapotai", + "Nothing awarded yet": "Még semmit sem ítéltek oda", + "Who is playing what, and what is still waiting for approval.": "Ki mit játszik, és mi vár még jóváhagyásra.", + "Experience awarded, and who earned it.": "Az odaítélt tapasztalat és aki kiérdemelte.", + "How much the world holds, and what characters actually carry.": "Mennyit tartalmaz a világ, és mit hordanak valójában a karakterek.", + "Store": "Áruház", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Telepítsen más szervezetek által közzétett nyilvántartásokat, sémákat és folyamatokat." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/hu.json b/l10n/hu.json index e46754b2..6475783d 100644 --- a/l10n/hu.json +++ b/l10n/hu.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Betöltsük a mintaadatokat?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "A mintaadatok feltöltik a listákat, a részletoldalakat és az irányítópultokat, így azonnal működés közben látja az alkalmazást. Éles telepítésen válassza a \"Nincs\" lehetőséget.", + "Load the example data": "Mintaadatok betöltése", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Betölti, amit választott. Ezek nyilvánvalóan mintaadatok, a művelet biztonságosan megismételhető, és utána törölheti őket.", + "None, I will set this up myself": "Nincs, magam állítom be", + "Nothing is imported. You start with an empty app and add your own data.": "Semmi nem kerül importálásra. Üres alkalmazással kezd, és a saját adatait adja hozzá.", + "Example data": "Mintaadatok", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Mintaértékek minden sémához, amelyet ez az alkalmazás hoz magával, magukból a sémákból generálva. Működés közben mutatják a listákat, a részletoldalakat és az irányítópultokat, ahelyett hogy történetet mesélnének. Biztonságosan ismételhető és utána törölhető.", "Larpinq": "Larpinq", "Dashboard": "Irányítópult", "Characters": "Karakterek", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Nincs — ez egy gyökérkészség.", "Where the automation lives": "Ahol az automatizálás lakik", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "A Flows az, ami kattintás nélkül történik: emlékeztető a határidő lejárta előtt, visszaigazolás beküldéskor. Itt olvasod és szerkeszted őket — most nincs mit építeni.", - "Open Flows in the menu": "Nyisd meg a Flows menüpontot" + "Open Flows in the menu": "Nyisd meg a Flows menüpontot", + "Ability Name": "A képesség neve", + "Affected Characters": "Érintett karakterek", + "Amount of copper pieces": "Rézérmék száma", + "Amount of gold pieces": "Aranyérmék száma", + "Amount of silver pieces": "Ezüstérmék száma", + "Automatic system notices": "Automatikus rendszerüzenetek", + "Award Reason": "Az odaítélés indoka", + "Awarded At": "Odaítélve ekkor", + "Awarded By": "Odaítélte", + "Background Story": "Háttértörténet", + "Base Value": "Alapérték", + "Character Card": "Karakterlap", + "Character Name": "A karakter neve", + "Checked In At": "Érkezés rögzítve ekkor", + "Checked In By": "Az érkezést rögzítette", + "Condition Name": "Az állapot neve", + "Contact email address": "Kapcsolattartási e-mail-cím", + "Copper Pieces": "Rézérmék", + "Effect Name": "A hatás neve", + "End Date": "Záró dátum", + "Event Name": "Az esemény neve", + "Event description": "Az esemény leírása", + "Event end date and time": "Az esemény záró dátuma és időpontja", + "Event location": "Az esemény helyszíne", + "Event name": "Az esemény neve", + "Event start date and time": "Az esemény kezdő dátuma és időpontja", + "Faith": "Hit", + "Full name of the player": "A játékos teljes neve", + "Game Master Notes (Private)": "A játékmester jegyzetei (magán)", + "Game Master Notes (Public)": "A játékmester jegyzetei (nyilvános)", + "Gold Pieces": "Aranyérmék", + "Item Name": "A tárgy neve", + "Items and Money": "Tárgyak és pénz", + "Mechanical Effect": "Játékbeli hatás", + "Modifier Value": "A módosító értéke", + "Name of the condition": "Az állapot neve", + "Name of the effect": "A hatás neve", + "Name of the event": "Az esemény neve", + "Name of the item": "A tárgy neve", + "Name of the skill": "A készség neve", + "Name of the stat": "A tulajdonság neve", + "Nextcloud user": "Nextcloud-felhasználó", + "Notes about items and money": "Jegyzetek a tárgyakról és a pénzről", + "Notes about the player": "Jegyzetek a játékosról", + "Overridden At": "Felülbírálva ekkor", + "Overridden By": "Felülbírálta", + "Override Reason": "A felülbírálás indoka", + "Owner": "Tulajdonos", + "Owner UID": "A tulajdonos UID-ja", + "Participating Characters": "Résztvevő karakterek", + "Player Name": "A játékos neve", + "Post-Event Effects": "Esemény utáni hatások", + "Real name of the player": "A játékos valódi neve", + "Required Conditions": "Szükséges állapotok", + "Required Effects": "Szükséges hatások", + "Required Score": "Szükséges érték", + "Required Skills": "Szükséges készségek", + "Required Stats": "Szükséges tulajdonságok", + "Requirement Overrides": "Felülbírált előfeltételek", + "Setting Name": "A játékvilág neve", + "Silver Pieces": "Ezüstérmék", + "Skill Name": "A készség neve", + "Start Date": "Kezdő dátum", + "Starting value for all characters": "Kezdőérték minden karakter számára", + "Stat": "Tulajdonság", + "Status": "Státusz", + "System Notice": "Rendszerüzenet", + "Unique Artifact": "Egyedi artefaktum", + "Unique Condition": "Egyedi állapot", + "XP Amount": "Tapasztalati pontok száma", + "XP Award": "Tapasztalati pontok odaítélése", + "Reports": "Jelentések", + "Pick a report to open it.": "Válasszon egy jelentést a megnyitáshoz.", + "Open": "Nyitott", + "In progress": "Folyamatban", + "Blocked": "Blokkolva", + "Date": "Dátum", + "Due": "Határidő", + "Assignee": "Felelős", + "Who": "Ki", + "What": "Mit", + "Minutes": "Perc", + "Entries": "Bejegyzések", + "Most recent": "Legutóbbi", + "Per person": "Személyenként", + "By status": "Állapot szerint", + "By priority": "Prioritás szerint", + "Character roster": "Karakterlista", + "Progression": "Fejlődés", + "World content": "Világ tartalma", + "Awaiting approval": "Jóváhagyásra vár", + "Player characters": "Játékoskarakterek", + "Awards": "Odaítélések", + "Experience": "Tapasztalat", + "Experience awarded": "Odaítélt tapasztalat", + "Per character": "Karakterenként", + "By type": "Típus szerint", + "By approval": "Jóváhagyás szerint", + "Items carried by characters": "A karakterek által vitt tárgyak", + "Conditions on characters": "Karakterek állapotai", + "Nothing awarded yet": "Még semmit sem ítéltek oda", + "Who is playing what, and what is still waiting for approval.": "Ki mit játszik, és mi vár még jóváhagyásra.", + "Experience awarded, and who earned it.": "Az odaítélt tapasztalat és aki kiérdemelte.", + "How much the world holds, and what characters actually carry.": "Mennyit tartalmaz a világ, és mit hordanak valójában a karakterek.", + "Store": "Áruház", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Telepítsen más szervezetek által közzétett nyilvántartásokat, sémákat és folyamatokat." }, "plurals": {} } diff --git a/l10n/is.js b/l10n/is.js index e6eb3a7f..95d2595d 100644 --- a/l10n/is.js +++ b/l10n/is.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Hlaða inn sýnigögnum?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Sýnigögn fylla listana, upplýsingasíðurnar og mælaborðin, svo þú sérð forritið virka strax. Veldu \"Engin\" á framleiðsluuppsetningu.", + "Load the example data": "Hlaða inn sýnigögnunum", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Hleður því sem þú valdir. Þetta eru augljóslega sýnigögn, óhætt er að keyra oftar en einu sinni og þú getur eytt þeim á eftir.", + "None, I will set this up myself": "Engin, ég set þetta upp sjálf", + "Nothing is imported. You start with an empty app and add your own data.": "Ekkert er flutt inn. Þú byrjar með tómt forrit og bætir við þínum eigin gögnum.", + "Example data": "Sýnigögn", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Sýnigildi fyrir hvert skema sem þetta forrit færir með sér, búin til úr skemunum sjálfum. Þau sýna listana, upplýsingasíðurnar og mælaborðin í notkun frekar en að segja sögu. Óhætt að endurtaka og eyða á eftir.", "Larpinq": "Larpinq", "Dashboard": "Stjórnborð", "Characters": "Persónur", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Engar — þetta er grunnfærni.", "Where the automation lives": "Þar sem sjálfvirknin býr", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows er það sem gerist án þess að nokkur smelli: áminning áður en frestur rennur út, staðfesting við innsendingu. Hér lestu þau og breytir þeim — það er ekkert að byggja núna.", - "Open Flows in the menu": "Opnaðu Flows í valmyndinni" + "Open Flows in the menu": "Opnaðu Flows í valmyndinni", + "Ability Name": "Nafn hæfileikans", + "Affected Characters": "Persónur sem verða fyrir áhrifum", + "Amount of copper pieces": "Fjöldi koparpeninga", + "Amount of gold pieces": "Fjöldi gullpeninga", + "Amount of silver pieces": "Fjöldi silfurpeninga", + "Automatic system notices": "Sjálfvirkar kerfistilkynningar", + "Award Reason": "Ástæða veitingar", + "Awarded At": "Veitt þann", + "Awarded By": "Veitt af", + "Background Story": "Bakgrunnssaga", + "Base Value": "Grunngildi", + "Character Card": "Persónuspjald", + "Character Name": "Nafn persónunnar", + "Checked In At": "Mæting skráð þann", + "Checked In By": "Mæting skráð af", + "Condition Name": "Nafn ástandsins", + "Contact email address": "Netfang fyrir samskipti", + "Copper Pieces": "Koparpeningar", + "Effect Name": "Nafn áhrifanna", + "End Date": "Lokadagsetning", + "Event Name": "Nafn viðburðarins", + "Event description": "Lýsing viðburðarins", + "Event end date and time": "Lokadagsetning og tími viðburðarins", + "Event location": "Staðsetning viðburðarins", + "Event name": "Nafn viðburðarins", + "Event start date and time": "Upphafsdagsetning og tími viðburðarins", + "Faith": "Trú", + "Full name of the player": "Fullt nafn leikmannsins", + "Game Master Notes (Private)": "Einkaathugasemdir leikstjóra", + "Game Master Notes (Public)": "Opinberar athugasemdir leikstjóra", + "Gold Pieces": "Gullpeningar", + "Item Name": "Nafn hlutarins", + "Items and Money": "Hlutir og peningar", + "Mechanical Effect": "Áhrif samkvæmt reglum", + "Modifier Value": "Gildi breytisins", + "Name of the condition": "Nafn ástandsins", + "Name of the effect": "Nafn áhrifanna", + "Name of the event": "Nafn viðburðarins", + "Name of the item": "Nafn hlutarins", + "Name of the skill": "Nafn færninnar", + "Name of the stat": "Nafn eiginleikans", + "Nextcloud user": "Nextcloud-notandi", + "Notes about items and money": "Athugasemdir um hluti og peninga", + "Notes about the player": "Athugasemdir um leikmanninn", + "Overridden At": "Hnekkt þann", + "Overridden By": "Hnekkt af", + "Override Reason": "Ástæða hnekkingar", + "Owner": "Eigandi", + "Owner UID": "UID eiganda", + "Participating Characters": "Þátttakandi persónur", + "Player Name": "Nafn leikmannsins", + "Post-Event Effects": "Áhrif eftir viðburðinn", + "Real name of the player": "Rétt nafn leikmannsins", + "Required Conditions": "Nauðsynlegt ástand", + "Required Effects": "Nauðsynleg áhrif", + "Required Score": "Nauðsynlegt gildi", + "Required Skills": "Nauðsynleg færni", + "Required Stats": "Nauðsynlegir eiginleikar", + "Requirement Overrides": "Hnekktar forkröfur", + "Setting Name": "Nafn söguheimsins", + "Silver Pieces": "Silfurpeningar", + "Skill Name": "Nafn færninnar", + "Start Date": "Upphafsdagsetning", + "Starting value for all characters": "Upphafsgildi fyrir allar persónur", + "Stat": "Eiginleiki", + "Status": "Staða", + "System Notice": "Kerfistilkynning", + "Unique Artifact": "Einstakur gripur", + "Unique Condition": "Einstakt ástand", + "XP Amount": "Fjöldi reynslustiga", + "XP Award": "Veiting reynslustiga", + "Reports": "Skýrslur", + "Pick a report to open it.": "Veldu skýrslu til að opna hana.", + "Open": "Opið", + "In progress": "Í vinnslu", + "Blocked": "Lokað", + "Date": "Dagsetning", + "Due": "Skiladagur", + "Assignee": "Úthlutað", + "Who": "Hver", + "What": "Hvað", + "Minutes": "Mínútur", + "Entries": "Færslur", + "Most recent": "Nýjast", + "Per person": "Á mann", + "By status": "Eftir stöðu", + "By priority": "Eftir forgangi", + "Character roster": "Persónulisti", + "Progression": "Framvinda", + "World content": "Efni heimsins", + "Awaiting approval": "Bíður samþykkis", + "Player characters": "Persónur leikmanna", + "Awards": "Veitingar", + "Experience": "Reynsla", + "Experience awarded": "Veitt reynsla", + "Per character": "Á persónu", + "By type": "Eftir tegund", + "By approval": "Eftir samþykki", + "Items carried by characters": "Hlutir sem persónur bera", + "Conditions on characters": "Ástand persóna", + "Nothing awarded yet": "Ekkert veitt enn", + "Who is playing what, and what is still waiting for approval.": "Hver spilar hvað og hvað bíður enn samþykkis.", + "Experience awarded, and who earned it.": "Veitt reynsla og hver ávann sér hana.", + "How much the world holds, and what characters actually carry.": "Hversu mikið heimurinn geymir og hvað persónur bera í raun.", + "Store": "Verslun", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Settu upp skrár, skemu og flæði sem aðrar stofnanir hafa birt." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/is.json b/l10n/is.json index ad6cfd79..ac39c0da 100644 --- a/l10n/is.json +++ b/l10n/is.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Hlaða inn sýnigögnum?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Sýnigögn fylla listana, upplýsingasíðurnar og mælaborðin, svo þú sérð forritið virka strax. Veldu \"Engin\" á framleiðsluuppsetningu.", + "Load the example data": "Hlaða inn sýnigögnunum", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Hleður því sem þú valdir. Þetta eru augljóslega sýnigögn, óhætt er að keyra oftar en einu sinni og þú getur eytt þeim á eftir.", + "None, I will set this up myself": "Engin, ég set þetta upp sjálf", + "Nothing is imported. You start with an empty app and add your own data.": "Ekkert er flutt inn. Þú byrjar með tómt forrit og bætir við þínum eigin gögnum.", + "Example data": "Sýnigögn", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Sýnigildi fyrir hvert skema sem þetta forrit færir með sér, búin til úr skemunum sjálfum. Þau sýna listana, upplýsingasíðurnar og mælaborðin í notkun frekar en að segja sögu. Óhætt að endurtaka og eyða á eftir.", "Larpinq": "Larpinq", "Dashboard": "Stjórnborð", "Characters": "Persónur", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Engar — þetta er grunnfærni.", "Where the automation lives": "Þar sem sjálfvirknin býr", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows er það sem gerist án þess að nokkur smelli: áminning áður en frestur rennur út, staðfesting við innsendingu. Hér lestu þau og breytir þeim — það er ekkert að byggja núna.", - "Open Flows in the menu": "Opnaðu Flows í valmyndinni" + "Open Flows in the menu": "Opnaðu Flows í valmyndinni", + "Ability Name": "Nafn hæfileikans", + "Affected Characters": "Persónur sem verða fyrir áhrifum", + "Amount of copper pieces": "Fjöldi koparpeninga", + "Amount of gold pieces": "Fjöldi gullpeninga", + "Amount of silver pieces": "Fjöldi silfurpeninga", + "Automatic system notices": "Sjálfvirkar kerfistilkynningar", + "Award Reason": "Ástæða veitingar", + "Awarded At": "Veitt þann", + "Awarded By": "Veitt af", + "Background Story": "Bakgrunnssaga", + "Base Value": "Grunngildi", + "Character Card": "Persónuspjald", + "Character Name": "Nafn persónunnar", + "Checked In At": "Mæting skráð þann", + "Checked In By": "Mæting skráð af", + "Condition Name": "Nafn ástandsins", + "Contact email address": "Netfang fyrir samskipti", + "Copper Pieces": "Koparpeningar", + "Effect Name": "Nafn áhrifanna", + "End Date": "Lokadagsetning", + "Event Name": "Nafn viðburðarins", + "Event description": "Lýsing viðburðarins", + "Event end date and time": "Lokadagsetning og tími viðburðarins", + "Event location": "Staðsetning viðburðarins", + "Event name": "Nafn viðburðarins", + "Event start date and time": "Upphafsdagsetning og tími viðburðarins", + "Faith": "Trú", + "Full name of the player": "Fullt nafn leikmannsins", + "Game Master Notes (Private)": "Einkaathugasemdir leikstjóra", + "Game Master Notes (Public)": "Opinberar athugasemdir leikstjóra", + "Gold Pieces": "Gullpeningar", + "Item Name": "Nafn hlutarins", + "Items and Money": "Hlutir og peningar", + "Mechanical Effect": "Áhrif samkvæmt reglum", + "Modifier Value": "Gildi breytisins", + "Name of the condition": "Nafn ástandsins", + "Name of the effect": "Nafn áhrifanna", + "Name of the event": "Nafn viðburðarins", + "Name of the item": "Nafn hlutarins", + "Name of the skill": "Nafn færninnar", + "Name of the stat": "Nafn eiginleikans", + "Nextcloud user": "Nextcloud-notandi", + "Notes about items and money": "Athugasemdir um hluti og peninga", + "Notes about the player": "Athugasemdir um leikmanninn", + "Overridden At": "Hnekkt þann", + "Overridden By": "Hnekkt af", + "Override Reason": "Ástæða hnekkingar", + "Owner": "Eigandi", + "Owner UID": "UID eiganda", + "Participating Characters": "Þátttakandi persónur", + "Player Name": "Nafn leikmannsins", + "Post-Event Effects": "Áhrif eftir viðburðinn", + "Real name of the player": "Rétt nafn leikmannsins", + "Required Conditions": "Nauðsynlegt ástand", + "Required Effects": "Nauðsynleg áhrif", + "Required Score": "Nauðsynlegt gildi", + "Required Skills": "Nauðsynleg færni", + "Required Stats": "Nauðsynlegir eiginleikar", + "Requirement Overrides": "Hnekktar forkröfur", + "Setting Name": "Nafn söguheimsins", + "Silver Pieces": "Silfurpeningar", + "Skill Name": "Nafn færninnar", + "Start Date": "Upphafsdagsetning", + "Starting value for all characters": "Upphafsgildi fyrir allar persónur", + "Stat": "Eiginleiki", + "Status": "Staða", + "System Notice": "Kerfistilkynning", + "Unique Artifact": "Einstakur gripur", + "Unique Condition": "Einstakt ástand", + "XP Amount": "Fjöldi reynslustiga", + "XP Award": "Veiting reynslustiga", + "Reports": "Skýrslur", + "Pick a report to open it.": "Veldu skýrslu til að opna hana.", + "Open": "Opið", + "In progress": "Í vinnslu", + "Blocked": "Lokað", + "Date": "Dagsetning", + "Due": "Skiladagur", + "Assignee": "Úthlutað", + "Who": "Hver", + "What": "Hvað", + "Minutes": "Mínútur", + "Entries": "Færslur", + "Most recent": "Nýjast", + "Per person": "Á mann", + "By status": "Eftir stöðu", + "By priority": "Eftir forgangi", + "Character roster": "Persónulisti", + "Progression": "Framvinda", + "World content": "Efni heimsins", + "Awaiting approval": "Bíður samþykkis", + "Player characters": "Persónur leikmanna", + "Awards": "Veitingar", + "Experience": "Reynsla", + "Experience awarded": "Veitt reynsla", + "Per character": "Á persónu", + "By type": "Eftir tegund", + "By approval": "Eftir samþykki", + "Items carried by characters": "Hlutir sem persónur bera", + "Conditions on characters": "Ástand persóna", + "Nothing awarded yet": "Ekkert veitt enn", + "Who is playing what, and what is still waiting for approval.": "Hver spilar hvað og hvað bíður enn samþykkis.", + "Experience awarded, and who earned it.": "Veitt reynsla og hver ávann sér hana.", + "How much the world holds, and what characters actually carry.": "Hversu mikið heimurinn geymir og hvað persónur bera í raun.", + "Store": "Verslun", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Settu upp skrár, skemu og flæði sem aðrar stofnanir hafa birt." }, "plurals": {} } diff --git a/l10n/it.js b/l10n/it.js index fedd929d..81614375 100644 --- a/l10n/it.js +++ b/l10n/it.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Caricare dati di esempio?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "I dati di esempio riempiono elenchi, pagine di dettaglio e dashboard, così vedi subito l’app in funzione. Scegli \"Nessuno\" su un’installazione di produzione.", + "Load the example data": "Carica i dati di esempio", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Carica quello che hai scelto. Sono chiaramente dati di esempio, l’operazione si può ripetere senza rischi e puoi eliminarli in seguito.", + "None, I will set this up myself": "Nessuno, lo configuro da solo", + "Nothing is imported. You start with an empty app and add your own data.": "Non viene importato nulla. Parti da un’app vuota e aggiungi i tuoi dati.", + "Example data": "Dati di esempio", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Valori di esempio per ogni schema fornito da questa app, generati dagli schemi stessi. Mostrano elenchi, pagine di dettaglio e dashboard in funzione invece di raccontare una storia. Ripetibile senza rischi ed eliminabile in seguito.", "Larpinq": "Larpinq", "Dashboard": "Dashboard", "Characters": "Personaggi", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Nessuno — questa è un'abilità radice.", "Where the automation lives": "Dove vive l'automazione", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "I Flows sono ciò che accade senza che nessuno clicchi: un promemoria prima che scada un termine, una conferma all'invio. Qui li leggi e li modifichi — non c'è nulla da costruire ora.", - "Open Flows in the menu": "Apri Flows nel menu" + "Open Flows in the menu": "Apri Flows nel menu", + "Ability Name": "Nome dell'attitudine", + "Affected Characters": "Personaggi coinvolti", + "Amount of copper pieces": "Quantità di monete di rame", + "Amount of gold pieces": "Quantità di monete d'oro", + "Amount of silver pieces": "Quantità di monete d'argento", + "Automatic system notices": "Avvisi automatici di sistema", + "Award Reason": "Motivo dell'assegnazione", + "Awarded At": "Assegnato il", + "Awarded By": "Assegnato da", + "Background Story": "Storia personale", + "Base Value": "Valore base", + "Character Card": "Scheda del personaggio", + "Character Name": "Nome del personaggio", + "Checked In At": "Presenza registrata il", + "Checked In By": "Presenza registrata da", + "Condition Name": "Nome della condizione", + "Contact email address": "Indirizzo e-mail di contatto", + "Copper Pieces": "Monete di rame", + "Effect Name": "Nome dell'effetto", + "End Date": "Data di fine", + "Event Name": "Nome dell'evento", + "Event description": "Descrizione dell'evento", + "Event end date and time": "Data e ora di fine dell'evento", + "Event location": "Luogo dell'evento", + "Event name": "Nome dell'evento", + "Event start date and time": "Data e ora di inizio dell'evento", + "Faith": "Fede", + "Full name of the player": "Nome completo del giocatore", + "Game Master Notes (Private)": "Note del master (private)", + "Game Master Notes (Public)": "Note del master (pubbliche)", + "Gold Pieces": "Monete d'oro", + "Item Name": "Nome dell'oggetto", + "Items and Money": "Oggetti e denaro", + "Mechanical Effect": "Effetto di gioco", + "Modifier Value": "Valore del modificatore", + "Name of the condition": "Nome della condizione", + "Name of the effect": "Nome dell'effetto", + "Name of the event": "Nome dell'evento", + "Name of the item": "Nome dell'oggetto", + "Name of the skill": "Nome dell'abilità", + "Name of the stat": "Nome della caratteristica", + "Nextcloud user": "Utente Nextcloud", + "Notes about items and money": "Note su oggetti e denaro", + "Notes about the player": "Note sul giocatore", + "Overridden At": "Deroga concessa il", + "Overridden By": "Deroga concessa da", + "Override Reason": "Motivo della deroga", + "Owner": "Proprietario", + "Owner UID": "UID del proprietario", + "Participating Characters": "Personaggi partecipanti", + "Player Name": "Nome del giocatore", + "Post-Event Effects": "Effetti dopo l'evento", + "Real name of the player": "Nome reale del giocatore", + "Required Conditions": "Condizioni richieste", + "Required Effects": "Effetti richiesti", + "Required Score": "Valore richiesto", + "Required Skills": "Abilità richieste", + "Required Stats": "Caratteristiche richieste", + "Requirement Overrides": "Deroghe ai prerequisiti", + "Setting Name": "Nome dell'ambientazione", + "Silver Pieces": "Monete d'argento", + "Skill Name": "Nome dell'abilità", + "Start Date": "Data di inizio", + "Starting value for all characters": "Valore iniziale per tutti i personaggi", + "Stat": "Caratteristica", + "Status": "Stato", + "System Notice": "Avviso di sistema", + "Unique Artifact": "Artefatto unico", + "Unique Condition": "Condizione unica", + "XP Amount": "Quantità di punti esperienza", + "XP Award": "Assegnazione di punti esperienza", + "Reports": "Report", + "Pick a report to open it.": "Scegli un report per aprirlo.", + "Open": "Aperto", + "In progress": "In corso", + "Blocked": "Bloccato", + "Date": "Data", + "Due": "Scadenza", + "Assignee": "Assegnato a", + "Who": "Chi", + "What": "Cosa", + "Minutes": "Minuti", + "Entries": "Voci", + "Most recent": "Più recenti", + "Per person": "Per persona", + "By status": "Per stato", + "By priority": "Per priorità", + "Character roster": "Elenco personaggi", + "Progression": "Progressione", + "World content": "Contenuti del mondo", + "Awaiting approval": "In attesa di approvazione", + "Player characters": "Personaggi giocanti", + "Awards": "Assegnazioni", + "Experience": "Esperienza", + "Experience awarded": "Esperienza assegnata", + "Per character": "Per personaggio", + "By type": "Per tipo", + "By approval": "Per approvazione", + "Items carried by characters": "Oggetti portati dai personaggi", + "Conditions on characters": "Condizioni sui personaggi", + "Nothing awarded yet": "Ancora nulla assegnato", + "Who is playing what, and what is still waiting for approval.": "Chi gioca cosa, e cosa attende ancora approvazione.", + "Experience awarded, and who earned it.": "L'esperienza assegnata e chi l'ha guadagnata.", + "How much the world holds, and what characters actually carry.": "Quanto contiene il mondo, e cosa portano davvero i personaggi.", + "Store": "Store", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Installa registri, schemi e flussi pubblicati da altre organizzazioni." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/it.json b/l10n/it.json index 4503d1d9..6d82206f 100644 --- a/l10n/it.json +++ b/l10n/it.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Caricare dati di esempio?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "I dati di esempio riempiono elenchi, pagine di dettaglio e dashboard, così vedi subito l’app in funzione. Scegli \"Nessuno\" su un’installazione di produzione.", + "Load the example data": "Carica i dati di esempio", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Carica quello che hai scelto. Sono chiaramente dati di esempio, l’operazione si può ripetere senza rischi e puoi eliminarli in seguito.", + "None, I will set this up myself": "Nessuno, lo configuro da solo", + "Nothing is imported. You start with an empty app and add your own data.": "Non viene importato nulla. Parti da un’app vuota e aggiungi i tuoi dati.", + "Example data": "Dati di esempio", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Valori di esempio per ogni schema fornito da questa app, generati dagli schemi stessi. Mostrano elenchi, pagine di dettaglio e dashboard in funzione invece di raccontare una storia. Ripetibile senza rischi ed eliminabile in seguito.", "Larpinq": "Larpinq", "Dashboard": "Dashboard", "Characters": "Personaggi", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Nessuno — questa è un'abilità radice.", "Where the automation lives": "Dove vive l'automazione", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "I Flows sono ciò che accade senza che nessuno clicchi: un promemoria prima che scada un termine, una conferma all'invio. Qui li leggi e li modifichi — non c'è nulla da costruire ora.", - "Open Flows in the menu": "Apri Flows nel menu" + "Open Flows in the menu": "Apri Flows nel menu", + "Ability Name": "Nome dell'attitudine", + "Affected Characters": "Personaggi coinvolti", + "Amount of copper pieces": "Quantità di monete di rame", + "Amount of gold pieces": "Quantità di monete d'oro", + "Amount of silver pieces": "Quantità di monete d'argento", + "Automatic system notices": "Avvisi automatici di sistema", + "Award Reason": "Motivo dell'assegnazione", + "Awarded At": "Assegnato il", + "Awarded By": "Assegnato da", + "Background Story": "Storia personale", + "Base Value": "Valore base", + "Character Card": "Scheda del personaggio", + "Character Name": "Nome del personaggio", + "Checked In At": "Presenza registrata il", + "Checked In By": "Presenza registrata da", + "Condition Name": "Nome della condizione", + "Contact email address": "Indirizzo e-mail di contatto", + "Copper Pieces": "Monete di rame", + "Effect Name": "Nome dell'effetto", + "End Date": "Data di fine", + "Event Name": "Nome dell'evento", + "Event description": "Descrizione dell'evento", + "Event end date and time": "Data e ora di fine dell'evento", + "Event location": "Luogo dell'evento", + "Event name": "Nome dell'evento", + "Event start date and time": "Data e ora di inizio dell'evento", + "Faith": "Fede", + "Full name of the player": "Nome completo del giocatore", + "Game Master Notes (Private)": "Note del master (private)", + "Game Master Notes (Public)": "Note del master (pubbliche)", + "Gold Pieces": "Monete d'oro", + "Item Name": "Nome dell'oggetto", + "Items and Money": "Oggetti e denaro", + "Mechanical Effect": "Effetto di gioco", + "Modifier Value": "Valore del modificatore", + "Name of the condition": "Nome della condizione", + "Name of the effect": "Nome dell'effetto", + "Name of the event": "Nome dell'evento", + "Name of the item": "Nome dell'oggetto", + "Name of the skill": "Nome dell'abilità", + "Name of the stat": "Nome della caratteristica", + "Nextcloud user": "Utente Nextcloud", + "Notes about items and money": "Note su oggetti e denaro", + "Notes about the player": "Note sul giocatore", + "Overridden At": "Deroga concessa il", + "Overridden By": "Deroga concessa da", + "Override Reason": "Motivo della deroga", + "Owner": "Proprietario", + "Owner UID": "UID del proprietario", + "Participating Characters": "Personaggi partecipanti", + "Player Name": "Nome del giocatore", + "Post-Event Effects": "Effetti dopo l'evento", + "Real name of the player": "Nome reale del giocatore", + "Required Conditions": "Condizioni richieste", + "Required Effects": "Effetti richiesti", + "Required Score": "Valore richiesto", + "Required Skills": "Abilità richieste", + "Required Stats": "Caratteristiche richieste", + "Requirement Overrides": "Deroghe ai prerequisiti", + "Setting Name": "Nome dell'ambientazione", + "Silver Pieces": "Monete d'argento", + "Skill Name": "Nome dell'abilità", + "Start Date": "Data di inizio", + "Starting value for all characters": "Valore iniziale per tutti i personaggi", + "Stat": "Caratteristica", + "Status": "Stato", + "System Notice": "Avviso di sistema", + "Unique Artifact": "Artefatto unico", + "Unique Condition": "Condizione unica", + "XP Amount": "Quantità di punti esperienza", + "XP Award": "Assegnazione di punti esperienza", + "Reports": "Report", + "Pick a report to open it.": "Scegli un report per aprirlo.", + "Open": "Aperto", + "In progress": "In corso", + "Blocked": "Bloccato", + "Date": "Data", + "Due": "Scadenza", + "Assignee": "Assegnato a", + "Who": "Chi", + "What": "Cosa", + "Minutes": "Minuti", + "Entries": "Voci", + "Most recent": "Più recenti", + "Per person": "Per persona", + "By status": "Per stato", + "By priority": "Per priorità", + "Character roster": "Elenco personaggi", + "Progression": "Progressione", + "World content": "Contenuti del mondo", + "Awaiting approval": "In attesa di approvazione", + "Player characters": "Personaggi giocanti", + "Awards": "Assegnazioni", + "Experience": "Esperienza", + "Experience awarded": "Esperienza assegnata", + "Per character": "Per personaggio", + "By type": "Per tipo", + "By approval": "Per approvazione", + "Items carried by characters": "Oggetti portati dai personaggi", + "Conditions on characters": "Condizioni sui personaggi", + "Nothing awarded yet": "Ancora nulla assegnato", + "Who is playing what, and what is still waiting for approval.": "Chi gioca cosa, e cosa attende ancora approvazione.", + "Experience awarded, and who earned it.": "L'esperienza assegnata e chi l'ha guadagnata.", + "How much the world holds, and what characters actually carry.": "Quanto contiene il mondo, e cosa portano davvero i personaggi.", + "Store": "Store", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Installa registri, schemi e flussi pubblicati da altre organizzazioni." }, "plurals": {} } diff --git a/l10n/lb.js b/l10n/lb.js index 66a37d7b..31f77715 100644 --- a/l10n/lb.js +++ b/l10n/lb.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Beispilldate lueden?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Beispilldate fëllen d’Lëschten, d’Detailsäiten an d’Dashboards, sou datt Dir d’App direkt am Betrib gesitt. Wielt \"Keng\" bei enger Produktiounsinstallatioun.", + "Load the example data": "D’Beispilldate lueden", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Lued dat, wat Dir gewielt hutt. Et sinn offensichtlech Beispilldaten, den Uwëssen kann ouni Risiko widderholl ginn, an Dir kënnt se duerno läschen.", + "None, I will set this up myself": "Keng, ech riichten dat selwer an", + "Nothing is imported. You start with an empty app and add your own data.": "Et gëtt näischt importéiert. Dir fänkt mat enger eidler App un a füügt Är eege Date bäi.", + "Example data": "Beispilldaten", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Beispillwäerter fir all Schema, deen dës App matbréngt, aus de Schemae selwer generéiert. Si weisen d’Lëschten, d’Detailsäiten an d’Dashboards am Betrib, amplaz eng Geschicht ze erzielen. Ouni Risiko ze widderhuelen an duerno ze läschen.", "Larpinq": "Larpinq", "Dashboard": "Iwwersiicht", "Characters": "Personnagen", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Keng — dëst ass eng Basiskompetenz.", "Where the automation lives": "Wou d'Automatisatioun wunnt", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows sinn dat, wat geschitt ouni datt een klickt: eng Erënnerung ier eng Frist ausleeft, eng Bestätegung beim Ofginn. Hei liest an änners du se — et gëtt elo näischt ze bauen.", - "Open Flows in the menu": "Maach Flows am Menü op" + "Open Flows in the menu": "Maach Flows am Menü op", + "Ability Name": "Numm vun der Fäegkeet", + "Affected Characters": "Betraff Personnagen", + "Amount of copper pieces": "Unzuel u Kofferstécker", + "Amount of gold pieces": "Unzuel u Goldstécker", + "Amount of silver pieces": "Unzuel u Sëlwerstécker", + "Automatic system notices": "Automatesch Systemmeldungen", + "Award Reason": "Grond fir d'Verginn", + "Awarded At": "Vergi den", + "Awarded By": "Vergi vun", + "Background Story": "Hannergrondgeschicht", + "Base Value": "Basiswäert", + "Character Card": "Personnagekaart", + "Character Name": "Numm vum Personnage", + "Checked In At": "Ugemellt den", + "Checked In By": "Ugemellt vun", + "Condition Name": "Numm vum Zoustand", + "Contact email address": "E-Mail-Adress fir de Kontakt", + "Copper Pieces": "Kofferstécker", + "Effect Name": "Numm vum Effekt", + "End Date": "Schlussdatum", + "Event Name": "Numm vum Evenement", + "Event description": "Beschreiwung vum Evenement", + "Event end date and time": "Schlussdatum an -zäit vum Evenement", + "Event location": "Standuert vum Evenement", + "Event name": "Numm vum Evenement", + "Event start date and time": "Ufanksdatum an -zäit vum Evenement", + "Faith": "Glawen", + "Full name of the player": "Vollstännegen Numm vum Spiller", + "Game Master Notes (Private)": "Notize vum Spillleeder (privat)", + "Game Master Notes (Public)": "Notize vum Spillleeder (ëffentlech)", + "Gold Pieces": "Goldstécker", + "Item Name": "Numm vum Géigestand", + "Items and Money": "Géigestänn a Suen", + "Mechanical Effect": "Spilltechneschen Effekt", + "Modifier Value": "Wäert vum Modifizéierer", + "Name of the condition": "Numm vum Zoustand", + "Name of the effect": "Numm vum Effekt", + "Name of the event": "Numm vum Evenement", + "Name of the item": "Numm vum Géigestand", + "Name of the skill": "Numm vun der Kompetenz", + "Name of the stat": "Numm vum Attribut", + "Nextcloud user": "Nextcloud-Benotzer", + "Notes about items and money": "Notizen iwwer Géigestänn a Suen", + "Notes about the player": "Notizen iwwer de Spiller", + "Overridden At": "Iwwerschriwwen den", + "Overridden By": "Iwwerschriwwe vun", + "Override Reason": "Grond fir d'Iwwerschreiwen", + "Owner": "Besëtzer", + "Owner UID": "UID vum Besëtzer", + "Participating Characters": "Deelhuel Personnagen", + "Player Name": "Numm vum Spiller", + "Post-Event Effects": "Effekter nom Evenement", + "Real name of the player": "Richtegen Numm vum Spiller", + "Required Conditions": "Erfuerderlech Zoustänn", + "Required Effects": "Erfuerderlech Effekter", + "Required Score": "Erfuerderleche Wäert", + "Required Skills": "Erfuerderlech Kompetenzen", + "Required Stats": "Erfuerderlech Attributer", + "Requirement Overrides": "Iwwerschriwwe Viraussetzungen", + "Setting Name": "Numm vun der Spillwelt", + "Silver Pieces": "Sëlwerstécker", + "Skill Name": "Numm vun der Kompetenz", + "Start Date": "Ufanksdatum", + "Starting value for all characters": "Startwäert fir all Personnagen", + "Stat": "Attribut", + "Status": "Status", + "System Notice": "Systemmeldung", + "Unique Artifact": "Eenzegaartegt Artefakt", + "Unique Condition": "Eenzegaartegen Zoustand", + "XP Amount": "Unzuel un Erfarungspunkten", + "XP Award": "XP-Verginn", + "Reports": "Berichter", + "Pick a report to open it.": "Wielt e Bericht fir en opzemaachen.", + "Open": "Op", + "In progress": "A Gaang", + "Blocked": "Blockéiert", + "Date": "Datum", + "Due": "Fälleg", + "Assignee": "Zougewisen", + "Who": "Wien", + "What": "Wat", + "Minutes": "Minutten", + "Entries": "Andeel", + "Most recent": "Am rezentsten", + "Per person": "Pro Persoun", + "By status": "No Status", + "By priority": "No Prioritéit", + "Character roster": "Charakterlëscht", + "Progression": "Fortschrëtt", + "World content": "Weltinhalt", + "Awaiting approval": "Waart op Zoustëmmung", + "Player characters": "Spillercharakteren", + "Awards": "Verginn", + "Experience": "Erfarung", + "Experience awarded": "Vergiff Erfarung", + "Per character": "Pro Charakter", + "By type": "No Typ", + "By approval": "No Zoustëmmung", + "Items carried by characters": "Géigestänn déi Charakteren droen", + "Conditions on characters": "Zoustänn op Charakteren", + "Nothing awarded yet": "Nach näischt vergiff", + "Who is playing what, and what is still waiting for approval.": "Wien wat spillt a wat nach op Zoustëmmung waart.", + "Experience awarded, and who earned it.": "Vergiff Erfarung a wien se verdéngt huet.", + "How much the world holds, and what characters actually carry.": "Wéi vill d'Welt hält a wat Charakteren wierklech droen.", + "Store": "Buttek", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Installéiert Registeren, Schemaen a Flows déi aner Organisatiounen publizéiert hunn." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/lb.json b/l10n/lb.json index a346c594..9187514b 100644 --- a/l10n/lb.json +++ b/l10n/lb.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Beispilldate lueden?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Beispilldate fëllen d’Lëschten, d’Detailsäiten an d’Dashboards, sou datt Dir d’App direkt am Betrib gesitt. Wielt \"Keng\" bei enger Produktiounsinstallatioun.", + "Load the example data": "D’Beispilldate lueden", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Lued dat, wat Dir gewielt hutt. Et sinn offensichtlech Beispilldaten, den Uwëssen kann ouni Risiko widderholl ginn, an Dir kënnt se duerno läschen.", + "None, I will set this up myself": "Keng, ech riichten dat selwer an", + "Nothing is imported. You start with an empty app and add your own data.": "Et gëtt näischt importéiert. Dir fänkt mat enger eidler App un a füügt Är eege Date bäi.", + "Example data": "Beispilldaten", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Beispillwäerter fir all Schema, deen dës App matbréngt, aus de Schemae selwer generéiert. Si weisen d’Lëschten, d’Detailsäiten an d’Dashboards am Betrib, amplaz eng Geschicht ze erzielen. Ouni Risiko ze widderhuelen an duerno ze läschen.", "Larpinq": "Larpinq", "Dashboard": "Iwwersiicht", "Characters": "Personnagen", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Keng — dëst ass eng Basiskompetenz.", "Where the automation lives": "Wou d'Automatisatioun wunnt", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows sinn dat, wat geschitt ouni datt een klickt: eng Erënnerung ier eng Frist ausleeft, eng Bestätegung beim Ofginn. Hei liest an änners du se — et gëtt elo näischt ze bauen.", - "Open Flows in the menu": "Maach Flows am Menü op" + "Open Flows in the menu": "Maach Flows am Menü op", + "Ability Name": "Numm vun der Fäegkeet", + "Affected Characters": "Betraff Personnagen", + "Amount of copper pieces": "Unzuel u Kofferstécker", + "Amount of gold pieces": "Unzuel u Goldstécker", + "Amount of silver pieces": "Unzuel u Sëlwerstécker", + "Automatic system notices": "Automatesch Systemmeldungen", + "Award Reason": "Grond fir d'Verginn", + "Awarded At": "Vergi den", + "Awarded By": "Vergi vun", + "Background Story": "Hannergrondgeschicht", + "Base Value": "Basiswäert", + "Character Card": "Personnagekaart", + "Character Name": "Numm vum Personnage", + "Checked In At": "Ugemellt den", + "Checked In By": "Ugemellt vun", + "Condition Name": "Numm vum Zoustand", + "Contact email address": "E-Mail-Adress fir de Kontakt", + "Copper Pieces": "Kofferstécker", + "Effect Name": "Numm vum Effekt", + "End Date": "Schlussdatum", + "Event Name": "Numm vum Evenement", + "Event description": "Beschreiwung vum Evenement", + "Event end date and time": "Schlussdatum an -zäit vum Evenement", + "Event location": "Standuert vum Evenement", + "Event name": "Numm vum Evenement", + "Event start date and time": "Ufanksdatum an -zäit vum Evenement", + "Faith": "Glawen", + "Full name of the player": "Vollstännegen Numm vum Spiller", + "Game Master Notes (Private)": "Notize vum Spillleeder (privat)", + "Game Master Notes (Public)": "Notize vum Spillleeder (ëffentlech)", + "Gold Pieces": "Goldstécker", + "Item Name": "Numm vum Géigestand", + "Items and Money": "Géigestänn a Suen", + "Mechanical Effect": "Spilltechneschen Effekt", + "Modifier Value": "Wäert vum Modifizéierer", + "Name of the condition": "Numm vum Zoustand", + "Name of the effect": "Numm vum Effekt", + "Name of the event": "Numm vum Evenement", + "Name of the item": "Numm vum Géigestand", + "Name of the skill": "Numm vun der Kompetenz", + "Name of the stat": "Numm vum Attribut", + "Nextcloud user": "Nextcloud-Benotzer", + "Notes about items and money": "Notizen iwwer Géigestänn a Suen", + "Notes about the player": "Notizen iwwer de Spiller", + "Overridden At": "Iwwerschriwwen den", + "Overridden By": "Iwwerschriwwe vun", + "Override Reason": "Grond fir d'Iwwerschreiwen", + "Owner": "Besëtzer", + "Owner UID": "UID vum Besëtzer", + "Participating Characters": "Deelhuel Personnagen", + "Player Name": "Numm vum Spiller", + "Post-Event Effects": "Effekter nom Evenement", + "Real name of the player": "Richtegen Numm vum Spiller", + "Required Conditions": "Erfuerderlech Zoustänn", + "Required Effects": "Erfuerderlech Effekter", + "Required Score": "Erfuerderleche Wäert", + "Required Skills": "Erfuerderlech Kompetenzen", + "Required Stats": "Erfuerderlech Attributer", + "Requirement Overrides": "Iwwerschriwwe Viraussetzungen", + "Setting Name": "Numm vun der Spillwelt", + "Silver Pieces": "Sëlwerstécker", + "Skill Name": "Numm vun der Kompetenz", + "Start Date": "Ufanksdatum", + "Starting value for all characters": "Startwäert fir all Personnagen", + "Stat": "Attribut", + "Status": "Status", + "System Notice": "Systemmeldung", + "Unique Artifact": "Eenzegaartegt Artefakt", + "Unique Condition": "Eenzegaartegen Zoustand", + "XP Amount": "Unzuel un Erfarungspunkten", + "XP Award": "XP-Verginn", + "Reports": "Berichter", + "Pick a report to open it.": "Wielt e Bericht fir en opzemaachen.", + "Open": "Op", + "In progress": "A Gaang", + "Blocked": "Blockéiert", + "Date": "Datum", + "Due": "Fälleg", + "Assignee": "Zougewisen", + "Who": "Wien", + "What": "Wat", + "Minutes": "Minutten", + "Entries": "Andeel", + "Most recent": "Am rezentsten", + "Per person": "Pro Persoun", + "By status": "No Status", + "By priority": "No Prioritéit", + "Character roster": "Charakterlëscht", + "Progression": "Fortschrëtt", + "World content": "Weltinhalt", + "Awaiting approval": "Waart op Zoustëmmung", + "Player characters": "Spillercharakteren", + "Awards": "Verginn", + "Experience": "Erfarung", + "Experience awarded": "Vergiff Erfarung", + "Per character": "Pro Charakter", + "By type": "No Typ", + "By approval": "No Zoustëmmung", + "Items carried by characters": "Géigestänn déi Charakteren droen", + "Conditions on characters": "Zoustänn op Charakteren", + "Nothing awarded yet": "Nach näischt vergiff", + "Who is playing what, and what is still waiting for approval.": "Wien wat spillt a wat nach op Zoustëmmung waart.", + "Experience awarded, and who earned it.": "Vergiff Erfarung a wien se verdéngt huet.", + "How much the world holds, and what characters actually carry.": "Wéi vill d'Welt hält a wat Charakteren wierklech droen.", + "Store": "Buttek", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Installéiert Registeren, Schemaen a Flows déi aner Organisatiounen publizéiert hunn." }, "plurals": {} } diff --git a/l10n/lt.js b/l10n/lt.js index 31b9e2fd..bef92031 100644 --- a/l10n/lt.js +++ b/l10n/lt.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Ar įkelti pavyzdinius duomenis?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Pavyzdiniai duomenys užpildo sąrašus, detalių puslapius ir skydelius, todėl programėlę iškart pamatysite veikiančią. Gamybinėje diegtyje pasirinkite \"Nėra\".", + "Load the example data": "Įkelti pavyzdinius duomenis", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Įkelia tai, ką pasirinkote. Tai akivaizdžiai pavyzdiniai duomenys, veiksmą galima saugiai kartoti, o vėliau juos galima ištrinti.", + "None, I will set this up myself": "Nėra, susitvarkysiu pats", + "Nothing is imported. You start with an empty app and add your own data.": "Niekas neimportuojama. Pradedate nuo tuščios programėlės ir pridedate savo duomenis.", + "Example data": "Pavyzdiniai duomenys", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Pavyzdinės reikšmės kiekvienai schemai, kurią pateikia ši programėlė, sugeneruotos iš pačių schemų. Jos rodo sąrašus, detalių puslapius ir skydelius veikiant, o ne pasakoja istoriją. Saugu kartoti ir vėliau ištrinti.", "Larpinq": "Larpinq", "Dashboard": "Skydelis", "Characters": "Personažai", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Nėra — tai pagrindinis įgūdis.", "Where the automation lives": "Kur gyvena automatizavimas", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows yra tai, kas vyksta niekam nespaudžiant: priminimas prieš pasibaigiant terminui, patvirtinimas pateikus. Čia juos skaitai ir redaguoji — dabar nieko kurti nereikia.", - "Open Flows in the menu": "Atverkite Flows meniu" + "Open Flows in the menu": "Atverkite Flows meniu", + "Ability Name": "Gebėjimo pavadinimas", + "Affected Characters": "Paveikti personažai", + "Amount of copper pieces": "Varinių monetų skaičius", + "Amount of gold pieces": "Auksinių monetų skaičius", + "Amount of silver pieces": "Sidabrinių monetų skaičius", + "Automatic system notices": "Automatiniai sistemos pranešimai", + "Award Reason": "Skyrimo priežastis", + "Awarded At": "Skirta", + "Awarded By": "Skyrė", + "Background Story": "Kilmės istorija", + "Base Value": "Bazinė reikšmė", + "Character Card": "Personažo kortelė", + "Character Name": "Personažo vardas", + "Checked In At": "Atvykimas užregistruotas", + "Checked In By": "Atvykimą užregistravo", + "Condition Name": "Būsenos pavadinimas", + "Contact email address": "Kontaktinis el. pašto adresas", + "Copper Pieces": "Varinės monetos", + "Effect Name": "Efekto pavadinimas", + "End Date": "Pabaigos data", + "Event Name": "Renginio pavadinimas", + "Event description": "Renginio aprašymas", + "Event end date and time": "Renginio pabaigos data ir laikas", + "Event location": "Renginio vieta", + "Event name": "Renginio pavadinimas", + "Event start date and time": "Renginio pradžios data ir laikas", + "Faith": "Tikėjimas", + "Full name of the player": "Visas žaidėjo vardas", + "Game Master Notes (Private)": "Žaidimo vedėjo pastabos (privačios)", + "Game Master Notes (Public)": "Žaidimo vedėjo pastabos (viešos)", + "Gold Pieces": "Auksinės monetos", + "Item Name": "Daikto pavadinimas", + "Items and Money": "Daiktai ir pinigai", + "Mechanical Effect": "Žaidimo efektas", + "Modifier Value": "Modifikatoriaus reikšmė", + "Name of the condition": "Būsenos pavadinimas", + "Name of the effect": "Efekto pavadinimas", + "Name of the event": "Renginio pavadinimas", + "Name of the item": "Daikto pavadinimas", + "Name of the skill": "Įgūdžio pavadinimas", + "Name of the stat": "Savybės pavadinimas", + "Nextcloud user": "Nextcloud naudotojas", + "Notes about items and money": "Pastabos apie daiktus ir pinigus", + "Notes about the player": "Pastabos apie žaidėją", + "Overridden At": "Išimtis suteikta", + "Overridden By": "Išimtį suteikė", + "Override Reason": "Išimties priežastis", + "Owner": "Savininkas", + "Owner UID": "Savininko UID", + "Participating Characters": "Dalyvaujantys personažai", + "Player Name": "Žaidėjo vardas", + "Post-Event Effects": "Efektai po renginio", + "Real name of the player": "Tikrasis žaidėjo vardas", + "Required Conditions": "Reikalingos būsenos", + "Required Effects": "Reikalingi efektai", + "Required Score": "Reikalinga reikšmė", + "Required Skills": "Reikalingi įgūdžiai", + "Required Stats": "Reikalingos savybės", + "Requirement Overrides": "Būtinų sąlygų išimtys", + "Setting Name": "Žaidimo pasaulio pavadinimas", + "Silver Pieces": "Sidabrinės monetos", + "Skill Name": "Įgūdžio pavadinimas", + "Start Date": "Pradžios data", + "Starting value for all characters": "Pradinė reikšmė visiems personažams", + "Stat": "Savybė", + "Status": "Statusas", + "System Notice": "Sistemos pranešimas", + "Unique Artifact": "Unikalus artefaktas", + "Unique Condition": "Unikali būsena", + "XP Amount": "Patirties taškų skaičius", + "XP Award": "Patirties taškų skyrimas", + "Reports": "Ataskaitos", + "Pick a report to open it.": "Pasirinkite ataskaitą, kad ją atidarytumėte.", + "Open": "Atviras", + "In progress": "Vykdoma", + "Blocked": "Užblokuota", + "Date": "Data", + "Due": "Terminas", + "Assignee": "Priskirta", + "Who": "Kas", + "What": "Kas", + "Minutes": "Minutės", + "Entries": "Įrašai", + "Most recent": "Naujausi", + "Per person": "Vienam asmeniui", + "By status": "Pagal būseną", + "By priority": "Pagal prioritetą", + "Character roster": "Personažų sąrašas", + "Progression": "Progresas", + "World content": "Pasaulio turinys", + "Awaiting approval": "Laukia patvirtinimo", + "Player characters": "Žaidėjų personažai", + "Awards": "Skyrimai", + "Experience": "Patirtis", + "Experience awarded": "Suteikta patirtis", + "Per character": "Vienam personažui", + "By type": "Pagal tipą", + "By approval": "Pagal patvirtinimą", + "Items carried by characters": "Personažų nešami daiktai", + "Conditions on characters": "Personažų būsenos", + "Nothing awarded yet": "Dar nieko nesuteikta", + "Who is playing what, and what is still waiting for approval.": "Kas ką žaidžia ir kas dar laukia patvirtinimo.", + "Experience awarded, and who earned it.": "Suteikta patirtis ir kas ją užsidirbo.", + "How much the world holds, and what characters actually carry.": "Kiek pasaulis apima ir ką personažai iš tikrųjų neša.", + "Store": "Parduotuvė", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Įdiekite registrus, schemas ir srautus, kuriuos paskelbė kitos organizacijos." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/lt.json b/l10n/lt.json index 45bd5f39..c3031723 100644 --- a/l10n/lt.json +++ b/l10n/lt.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Ar įkelti pavyzdinius duomenis?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Pavyzdiniai duomenys užpildo sąrašus, detalių puslapius ir skydelius, todėl programėlę iškart pamatysite veikiančią. Gamybinėje diegtyje pasirinkite \"Nėra\".", + "Load the example data": "Įkelti pavyzdinius duomenis", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Įkelia tai, ką pasirinkote. Tai akivaizdžiai pavyzdiniai duomenys, veiksmą galima saugiai kartoti, o vėliau juos galima ištrinti.", + "None, I will set this up myself": "Nėra, susitvarkysiu pats", + "Nothing is imported. You start with an empty app and add your own data.": "Niekas neimportuojama. Pradedate nuo tuščios programėlės ir pridedate savo duomenis.", + "Example data": "Pavyzdiniai duomenys", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Pavyzdinės reikšmės kiekvienai schemai, kurią pateikia ši programėlė, sugeneruotos iš pačių schemų. Jos rodo sąrašus, detalių puslapius ir skydelius veikiant, o ne pasakoja istoriją. Saugu kartoti ir vėliau ištrinti.", "Larpinq": "Larpinq", "Dashboard": "Skydelis", "Characters": "Personažai", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Nėra — tai pagrindinis įgūdis.", "Where the automation lives": "Kur gyvena automatizavimas", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows yra tai, kas vyksta niekam nespaudžiant: priminimas prieš pasibaigiant terminui, patvirtinimas pateikus. Čia juos skaitai ir redaguoji — dabar nieko kurti nereikia.", - "Open Flows in the menu": "Atverkite Flows meniu" + "Open Flows in the menu": "Atverkite Flows meniu", + "Ability Name": "Gebėjimo pavadinimas", + "Affected Characters": "Paveikti personažai", + "Amount of copper pieces": "Varinių monetų skaičius", + "Amount of gold pieces": "Auksinių monetų skaičius", + "Amount of silver pieces": "Sidabrinių monetų skaičius", + "Automatic system notices": "Automatiniai sistemos pranešimai", + "Award Reason": "Skyrimo priežastis", + "Awarded At": "Skirta", + "Awarded By": "Skyrė", + "Background Story": "Kilmės istorija", + "Base Value": "Bazinė reikšmė", + "Character Card": "Personažo kortelė", + "Character Name": "Personažo vardas", + "Checked In At": "Atvykimas užregistruotas", + "Checked In By": "Atvykimą užregistravo", + "Condition Name": "Būsenos pavadinimas", + "Contact email address": "Kontaktinis el. pašto adresas", + "Copper Pieces": "Varinės monetos", + "Effect Name": "Efekto pavadinimas", + "End Date": "Pabaigos data", + "Event Name": "Renginio pavadinimas", + "Event description": "Renginio aprašymas", + "Event end date and time": "Renginio pabaigos data ir laikas", + "Event location": "Renginio vieta", + "Event name": "Renginio pavadinimas", + "Event start date and time": "Renginio pradžios data ir laikas", + "Faith": "Tikėjimas", + "Full name of the player": "Visas žaidėjo vardas", + "Game Master Notes (Private)": "Žaidimo vedėjo pastabos (privačios)", + "Game Master Notes (Public)": "Žaidimo vedėjo pastabos (viešos)", + "Gold Pieces": "Auksinės monetos", + "Item Name": "Daikto pavadinimas", + "Items and Money": "Daiktai ir pinigai", + "Mechanical Effect": "Žaidimo efektas", + "Modifier Value": "Modifikatoriaus reikšmė", + "Name of the condition": "Būsenos pavadinimas", + "Name of the effect": "Efekto pavadinimas", + "Name of the event": "Renginio pavadinimas", + "Name of the item": "Daikto pavadinimas", + "Name of the skill": "Įgūdžio pavadinimas", + "Name of the stat": "Savybės pavadinimas", + "Nextcloud user": "Nextcloud naudotojas", + "Notes about items and money": "Pastabos apie daiktus ir pinigus", + "Notes about the player": "Pastabos apie žaidėją", + "Overridden At": "Išimtis suteikta", + "Overridden By": "Išimtį suteikė", + "Override Reason": "Išimties priežastis", + "Owner": "Savininkas", + "Owner UID": "Savininko UID", + "Participating Characters": "Dalyvaujantys personažai", + "Player Name": "Žaidėjo vardas", + "Post-Event Effects": "Efektai po renginio", + "Real name of the player": "Tikrasis žaidėjo vardas", + "Required Conditions": "Reikalingos būsenos", + "Required Effects": "Reikalingi efektai", + "Required Score": "Reikalinga reikšmė", + "Required Skills": "Reikalingi įgūdžiai", + "Required Stats": "Reikalingos savybės", + "Requirement Overrides": "Būtinų sąlygų išimtys", + "Setting Name": "Žaidimo pasaulio pavadinimas", + "Silver Pieces": "Sidabrinės monetos", + "Skill Name": "Įgūdžio pavadinimas", + "Start Date": "Pradžios data", + "Starting value for all characters": "Pradinė reikšmė visiems personažams", + "Stat": "Savybė", + "Status": "Statusas", + "System Notice": "Sistemos pranešimas", + "Unique Artifact": "Unikalus artefaktas", + "Unique Condition": "Unikali būsena", + "XP Amount": "Patirties taškų skaičius", + "XP Award": "Patirties taškų skyrimas", + "Reports": "Ataskaitos", + "Pick a report to open it.": "Pasirinkite ataskaitą, kad ją atidarytumėte.", + "Open": "Atviras", + "In progress": "Vykdoma", + "Blocked": "Užblokuota", + "Date": "Data", + "Due": "Terminas", + "Assignee": "Priskirta", + "Who": "Kas", + "What": "Kas", + "Minutes": "Minutės", + "Entries": "Įrašai", + "Most recent": "Naujausi", + "Per person": "Vienam asmeniui", + "By status": "Pagal būseną", + "By priority": "Pagal prioritetą", + "Character roster": "Personažų sąrašas", + "Progression": "Progresas", + "World content": "Pasaulio turinys", + "Awaiting approval": "Laukia patvirtinimo", + "Player characters": "Žaidėjų personažai", + "Awards": "Skyrimai", + "Experience": "Patirtis", + "Experience awarded": "Suteikta patirtis", + "Per character": "Vienam personažui", + "By type": "Pagal tipą", + "By approval": "Pagal patvirtinimą", + "Items carried by characters": "Personažų nešami daiktai", + "Conditions on characters": "Personažų būsenos", + "Nothing awarded yet": "Dar nieko nesuteikta", + "Who is playing what, and what is still waiting for approval.": "Kas ką žaidžia ir kas dar laukia patvirtinimo.", + "Experience awarded, and who earned it.": "Suteikta patirtis ir kas ją užsidirbo.", + "How much the world holds, and what characters actually carry.": "Kiek pasaulis apima ir ką personažai iš tikrųjų neša.", + "Store": "Parduotuvė", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Įdiekite registrus, schemas ir srautus, kuriuos paskelbė kitos organizacijos." }, "plurals": {} } diff --git a/l10n/lv.js b/l10n/lv.js index 11d9d873..70d73604 100644 --- a/l10n/lv.js +++ b/l10n/lv.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Vai ielādēt paraugdatus?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Paraugdati aizpilda sarakstus, detalizētās lapas un informācijas paneļus, tāpēc lietotni uzreiz redzēsiet darbībā. Ražošanas instalācijā izvēlieties \"Nav\".", + "Load the example data": "Ielādēt paraugdatus", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Ielādē to, ko izvēlējāties. Tie ir acīmredzami paraugdati, darbību var droši atkārtot, un pēc tam tos var dzēst.", + "None, I will set this up myself": "Nav, iestatīšu pats", + "Nothing is imported. You start with an empty app and add your own data.": "Nekas netiek importēts. Sākat ar tukšu lietotni un pievienojat savus datus.", + "Example data": "Paraugdati", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Paraugvērtības katrai shēmai, ko šī lietotne piegādā, ģenerētas no pašām shēmām. Tās parāda sarakstus, detalizētās lapas un informācijas paneļus darbībā, nevis stāsta stāstu. Droši atkārtojams un pēc tam dzēšams.", "Larpinq": "Larpinq", "Dashboard": "Informācijas panelis", "Characters": "Tēli", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Nav — šī ir pamatprasme.", "Where the automation lives": "Kur mīt automatizācija", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows ir tas, kas notiek, nevienam neklikšķinot: atgādinājums pirms termiņa beigām, apstiprinājums pēc iesniegšanas. Šeit tos lasi un rediģē — tagad nekas nav jābūvē.", - "Open Flows in the menu": "Atver Flows izvēlnē" + "Open Flows in the menu": "Atver Flows izvēlnē", + "Ability Name": "Spējas nosaukums", + "Affected Characters": "Ietekmētie tēli", + "Amount of copper pieces": "Vara monētu skaits", + "Amount of gold pieces": "Zelta monētu skaits", + "Amount of silver pieces": "Sudraba monētu skaits", + "Automatic system notices": "Automātiski sistēmas paziņojumi", + "Award Reason": "Piešķiršanas iemesls", + "Awarded At": "Piešķirts", + "Awarded By": "Piešķīra", + "Background Story": "Priekšvēstures stāsts", + "Base Value": "Bāzes vērtība", + "Character Card": "Tēla kartīte", + "Character Name": "Tēla vārds", + "Checked In At": "Ierašanās reģistrēta", + "Checked In By": "Ierašanos reģistrēja", + "Condition Name": "Stāvokļa nosaukums", + "Contact email address": "Kontaktu e-pasta adrese", + "Copper Pieces": "Vara monētas", + "Effect Name": "Efekta nosaukums", + "End Date": "Beigu datums", + "Event Name": "Notikuma nosaukums", + "Event description": "Notikuma apraksts", + "Event end date and time": "Notikuma beigu datums un laiks", + "Event location": "Notikuma norises vieta", + "Event name": "Notikuma nosaukums", + "Event start date and time": "Notikuma sākuma datums un laiks", + "Faith": "Ticība", + "Full name of the player": "Spēlētāja pilns vārds", + "Game Master Notes (Private)": "Spēles vadītāja piezīmes (privātas)", + "Game Master Notes (Public)": "Spēles vadītāja piezīmes (publiskas)", + "Gold Pieces": "Zelta monētas", + "Item Name": "Priekšmeta nosaukums", + "Items and Money": "Priekšmeti un nauda", + "Mechanical Effect": "Spēles efekts", + "Modifier Value": "Modifikatora vērtība", + "Name of the condition": "Stāvokļa nosaukums", + "Name of the effect": "Efekta nosaukums", + "Name of the event": "Notikuma nosaukums", + "Name of the item": "Priekšmeta nosaukums", + "Name of the skill": "Prasmes nosaukums", + "Name of the stat": "Īpašības nosaukums", + "Nextcloud user": "Nextcloud lietotājs", + "Notes about items and money": "Piezīmes par priekšmetiem un naudu", + "Notes about the player": "Piezīmes par spēlētāju", + "Overridden At": "Izņēmums piešķirts", + "Overridden By": "Izņēmumu piešķīra", + "Override Reason": "Izņēmuma iemesls", + "Owner": "Īpašnieks", + "Owner UID": "Īpašnieka UID", + "Participating Characters": "Iesaistītie tēli", + "Player Name": "Spēlētāja vārds", + "Post-Event Effects": "Efekti pēc notikuma", + "Real name of the player": "Spēlētāja īstais vārds", + "Required Conditions": "Nepieciešamie stāvokļi", + "Required Effects": "Nepieciešamie efekti", + "Required Score": "Nepieciešamā vērtība", + "Required Skills": "Nepieciešamās prasmes", + "Required Stats": "Nepieciešamās īpašības", + "Requirement Overrides": "Izņēmumi no priekšnosacījumiem", + "Setting Name": "Spēles pasaules nosaukums", + "Silver Pieces": "Sudraba monētas", + "Skill Name": "Prasmes nosaukums", + "Start Date": "Sākuma datums", + "Starting value for all characters": "Sākuma vērtība visiem tēliem", + "Stat": "Īpašība", + "Status": "Statuss", + "System Notice": "Sistēmas paziņojums", + "Unique Artifact": "Unikāls artefakts", + "Unique Condition": "Unikāls stāvoklis", + "XP Amount": "Pieredzes punktu skaits", + "XP Award": "Pieredzes punktu piešķiršana", + "Reports": "Pārskati", + "Pick a report to open it.": "Izvēlieties pārskatu, lai to atvērtu.", + "Open": "Atvērts", + "In progress": "Notiek", + "Blocked": "Bloķēts", + "Date": "Datums", + "Due": "Termiņš", + "Assignee": "Piešķirts", + "Who": "Kurš", + "What": "Kas", + "Minutes": "Minūtes", + "Entries": "Ieraksti", + "Most recent": "Jaunākie", + "Per person": "Uz personu", + "By status": "Pēc statusa", + "By priority": "Pēc prioritātes", + "Character roster": "Tēlu saraksts", + "Progression": "Progresija", + "World content": "Pasaules saturs", + "Awaiting approval": "Gaida apstiprinājumu", + "Player characters": "Spēlētāju tēli", + "Awards": "Piešķīrumi", + "Experience": "Pieredze", + "Experience awarded": "Piešķirtā pieredze", + "Per character": "Uz tēlu", + "By type": "Pēc veida", + "By approval": "Pēc apstiprinājuma", + "Items carried by characters": "Priekšmeti, ko nes tēli", + "Conditions on characters": "Stāvokļi tēliem", + "Nothing awarded yet": "Vēl nekas nav piešķirts", + "Who is playing what, and what is still waiting for approval.": "Kurš ko spēlē un kas vēl gaida apstiprinājumu.", + "Experience awarded, and who earned it.": "Piešķirtā pieredze un kurš to nopelnīja.", + "How much the world holds, and what characters actually carry.": "Cik daudz pasaule ietver un ko tēli patiešām nes.", + "Store": "Veikals", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Instalējiet reģistrus, shēmas un plūsmas, ko publicējušas citas organizācijas." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/lv.json b/l10n/lv.json index f170bec5..01acc4cb 100644 --- a/l10n/lv.json +++ b/l10n/lv.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Vai ielādēt paraugdatus?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Paraugdati aizpilda sarakstus, detalizētās lapas un informācijas paneļus, tāpēc lietotni uzreiz redzēsiet darbībā. Ražošanas instalācijā izvēlieties \"Nav\".", + "Load the example data": "Ielādēt paraugdatus", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Ielādē to, ko izvēlējāties. Tie ir acīmredzami paraugdati, darbību var droši atkārtot, un pēc tam tos var dzēst.", + "None, I will set this up myself": "Nav, iestatīšu pats", + "Nothing is imported. You start with an empty app and add your own data.": "Nekas netiek importēts. Sākat ar tukšu lietotni un pievienojat savus datus.", + "Example data": "Paraugdati", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Paraugvērtības katrai shēmai, ko šī lietotne piegādā, ģenerētas no pašām shēmām. Tās parāda sarakstus, detalizētās lapas un informācijas paneļus darbībā, nevis stāsta stāstu. Droši atkārtojams un pēc tam dzēšams.", "Larpinq": "Larpinq", "Dashboard": "Informācijas panelis", "Characters": "Tēli", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Nav — šī ir pamatprasme.", "Where the automation lives": "Kur mīt automatizācija", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows ir tas, kas notiek, nevienam neklikšķinot: atgādinājums pirms termiņa beigām, apstiprinājums pēc iesniegšanas. Šeit tos lasi un rediģē — tagad nekas nav jābūvē.", - "Open Flows in the menu": "Atver Flows izvēlnē" + "Open Flows in the menu": "Atver Flows izvēlnē", + "Ability Name": "Spējas nosaukums", + "Affected Characters": "Ietekmētie tēli", + "Amount of copper pieces": "Vara monētu skaits", + "Amount of gold pieces": "Zelta monētu skaits", + "Amount of silver pieces": "Sudraba monētu skaits", + "Automatic system notices": "Automātiski sistēmas paziņojumi", + "Award Reason": "Piešķiršanas iemesls", + "Awarded At": "Piešķirts", + "Awarded By": "Piešķīra", + "Background Story": "Priekšvēstures stāsts", + "Base Value": "Bāzes vērtība", + "Character Card": "Tēla kartīte", + "Character Name": "Tēla vārds", + "Checked In At": "Ierašanās reģistrēta", + "Checked In By": "Ierašanos reģistrēja", + "Condition Name": "Stāvokļa nosaukums", + "Contact email address": "Kontaktu e-pasta adrese", + "Copper Pieces": "Vara monētas", + "Effect Name": "Efekta nosaukums", + "End Date": "Beigu datums", + "Event Name": "Notikuma nosaukums", + "Event description": "Notikuma apraksts", + "Event end date and time": "Notikuma beigu datums un laiks", + "Event location": "Notikuma norises vieta", + "Event name": "Notikuma nosaukums", + "Event start date and time": "Notikuma sākuma datums un laiks", + "Faith": "Ticība", + "Full name of the player": "Spēlētāja pilns vārds", + "Game Master Notes (Private)": "Spēles vadītāja piezīmes (privātas)", + "Game Master Notes (Public)": "Spēles vadītāja piezīmes (publiskas)", + "Gold Pieces": "Zelta monētas", + "Item Name": "Priekšmeta nosaukums", + "Items and Money": "Priekšmeti un nauda", + "Mechanical Effect": "Spēles efekts", + "Modifier Value": "Modifikatora vērtība", + "Name of the condition": "Stāvokļa nosaukums", + "Name of the effect": "Efekta nosaukums", + "Name of the event": "Notikuma nosaukums", + "Name of the item": "Priekšmeta nosaukums", + "Name of the skill": "Prasmes nosaukums", + "Name of the stat": "Īpašības nosaukums", + "Nextcloud user": "Nextcloud lietotājs", + "Notes about items and money": "Piezīmes par priekšmetiem un naudu", + "Notes about the player": "Piezīmes par spēlētāju", + "Overridden At": "Izņēmums piešķirts", + "Overridden By": "Izņēmumu piešķīra", + "Override Reason": "Izņēmuma iemesls", + "Owner": "Īpašnieks", + "Owner UID": "Īpašnieka UID", + "Participating Characters": "Iesaistītie tēli", + "Player Name": "Spēlētāja vārds", + "Post-Event Effects": "Efekti pēc notikuma", + "Real name of the player": "Spēlētāja īstais vārds", + "Required Conditions": "Nepieciešamie stāvokļi", + "Required Effects": "Nepieciešamie efekti", + "Required Score": "Nepieciešamā vērtība", + "Required Skills": "Nepieciešamās prasmes", + "Required Stats": "Nepieciešamās īpašības", + "Requirement Overrides": "Izņēmumi no priekšnosacījumiem", + "Setting Name": "Spēles pasaules nosaukums", + "Silver Pieces": "Sudraba monētas", + "Skill Name": "Prasmes nosaukums", + "Start Date": "Sākuma datums", + "Starting value for all characters": "Sākuma vērtība visiem tēliem", + "Stat": "Īpašība", + "Status": "Statuss", + "System Notice": "Sistēmas paziņojums", + "Unique Artifact": "Unikāls artefakts", + "Unique Condition": "Unikāls stāvoklis", + "XP Amount": "Pieredzes punktu skaits", + "XP Award": "Pieredzes punktu piešķiršana", + "Reports": "Pārskati", + "Pick a report to open it.": "Izvēlieties pārskatu, lai to atvērtu.", + "Open": "Atvērts", + "In progress": "Notiek", + "Blocked": "Bloķēts", + "Date": "Datums", + "Due": "Termiņš", + "Assignee": "Piešķirts", + "Who": "Kurš", + "What": "Kas", + "Minutes": "Minūtes", + "Entries": "Ieraksti", + "Most recent": "Jaunākie", + "Per person": "Uz personu", + "By status": "Pēc statusa", + "By priority": "Pēc prioritātes", + "Character roster": "Tēlu saraksts", + "Progression": "Progresija", + "World content": "Pasaules saturs", + "Awaiting approval": "Gaida apstiprinājumu", + "Player characters": "Spēlētāju tēli", + "Awards": "Piešķīrumi", + "Experience": "Pieredze", + "Experience awarded": "Piešķirtā pieredze", + "Per character": "Uz tēlu", + "By type": "Pēc veida", + "By approval": "Pēc apstiprinājuma", + "Items carried by characters": "Priekšmeti, ko nes tēli", + "Conditions on characters": "Stāvokļi tēliem", + "Nothing awarded yet": "Vēl nekas nav piešķirts", + "Who is playing what, and what is still waiting for approval.": "Kurš ko spēlē un kas vēl gaida apstiprinājumu.", + "Experience awarded, and who earned it.": "Piešķirtā pieredze un kurš to nopelnīja.", + "How much the world holds, and what characters actually carry.": "Cik daudz pasaule ietver un ko tēli patiešām nes.", + "Store": "Veikals", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Instalējiet reģistrus, shēmas un plūsmas, ko publicējušas citas organizācijas." }, "plurals": {} } diff --git a/l10n/mk.js b/l10n/mk.js index 135fe690..c0f957c3 100644 --- a/l10n/mk.js +++ b/l10n/mk.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Да се вчитаат примероци од податоци?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Примероците од податоци ги полнат списоците, страниците со детали и таблите, за да ја видите апликацијата како работи веднаш. Изберете \"Ништо\" на продукциска инсталација.", + "Load the example data": "Вчитај ги примероците од податоци", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Го вчитува тоа што го избравте. Тоа се очигледно примероци од податоци, дејството може безбедно да се повтори, а потоа можете да ги избришете.", + "None, I will set this up myself": "Ништо, сам ќе го поставам ова", + "Nothing is imported. You start with an empty app and add your own data.": "Ништо не се увезува. Почнувате со празна апликација и додавате свои податоци.", + "Example data": "Примероци од податоци", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Примерни вредности за секоја шема што ја носи оваа апликација, генерирани од самите шеми. Ги покажуваат списоците, страниците со детали и таблите во работа наместо да раскажуваат приказна. Безбедно за повторување и бришење потоа.", "Larpinq": "Larpinq", "Dashboard": "Контролна табла", "Characters": "Ликови", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Нема — ова е основна вештина.", "Where the automation lives": "Каде живее автоматизацијата", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows е тоа што се случува без некој да кликне: потсетник пред да истече рокот, потврда при поднесување. Тука ги читаш и ги уредуваш — сега нема што да се гради.", - "Open Flows in the menu": "Отвори Flows во менито" + "Open Flows in the menu": "Отвори Flows во менито", + "Ability Name": "Име на способноста", + "Affected Characters": "Засегнати ликови", + "Amount of copper pieces": "Број на бакарни монети", + "Amount of gold pieces": "Број на златни монети", + "Amount of silver pieces": "Број на сребрени монети", + "Automatic system notices": "Автоматски системски известувања", + "Award Reason": "Причина за доделувањето", + "Awarded At": "Доделено на", + "Awarded By": "Доделено од", + "Background Story": "Приказна за потеклото", + "Base Value": "Основна вредност", + "Character Card": "Картичка на ликот", + "Character Name": "Име на ликот", + "Checked In At": "Пристигнувањето е забележано на", + "Checked In By": "Пристигнувањето го забележа", + "Condition Name": "Име на состојбата", + "Contact email address": "Контакт адреса за е-пошта", + "Copper Pieces": "Бакарни монети", + "Effect Name": "Име на ефектот", + "End Date": "Датум на завршеток", + "Event Name": "Име на настанот", + "Event description": "Опис на настанот", + "Event end date and time": "Датум и време на завршеток на настанот", + "Event location": "Место на настанот", + "Event name": "Име на настанот", + "Event start date and time": "Датум и време на почеток на настанот", + "Faith": "Вера", + "Full name of the player": "Целосно име на играчот", + "Game Master Notes (Private)": "Белешки на водачот на играта (приватни)", + "Game Master Notes (Public)": "Белешки на водачот на играта (јавни)", + "Gold Pieces": "Златни монети", + "Item Name": "Име на предметот", + "Items and Money": "Предмети и пари", + "Mechanical Effect": "Ефект во играта", + "Modifier Value": "Вредност на модификаторот", + "Name of the condition": "Име на состојбата", + "Name of the effect": "Име на ефектот", + "Name of the event": "Име на настанот", + "Name of the item": "Име на предметот", + "Name of the skill": "Име на вештината", + "Name of the stat": "Име на својството", + "Nextcloud user": "Nextcloud корисник", + "Notes about items and money": "Белешки за предметите и парите", + "Notes about the player": "Белешки за играчот", + "Overridden At": "Исклучокот е одобрен на", + "Overridden By": "Исклучокот го одобри", + "Override Reason": "Причина за исклучокот", + "Owner": "Сопственик", + "Owner UID": "UID на сопственикот", + "Participating Characters": "Ликови што учествуваат", + "Player Name": "Име на играчот", + "Post-Event Effects": "Ефекти по настанот", + "Real name of the player": "Вистинско име на играчот", + "Required Conditions": "Потребни состојби", + "Required Effects": "Потребни ефекти", + "Required Score": "Потребна вредност", + "Required Skills": "Потребни вештини", + "Required Stats": "Потребни својства", + "Requirement Overrides": "Исклучоци од предусловите", + "Setting Name": "Име на светот на играта", + "Silver Pieces": "Сребрени монети", + "Skill Name": "Име на вештината", + "Start Date": "Датум на почеток", + "Starting value for all characters": "Почетна вредност за сите ликови", + "Stat": "Својство", + "Status": "Статус", + "System Notice": "Системско известување", + "Unique Artifact": "Уникатен артефакт", + "Unique Condition": "Уникатна состојба", + "XP Amount": "Број на поени искуство", + "XP Award": "Доделување поени искуство", + "Reports": "Извештаи", + "Pick a report to open it.": "Изберете извештај за да го отворите.", + "Open": "Отворено", + "In progress": "Во тек", + "Blocked": "Блокирано", + "Date": "Датум", + "Due": "Рок", + "Assignee": "Доделено", + "Who": "Кој", + "What": "Што", + "Minutes": "Минути", + "Entries": "Записи", + "Most recent": "Најнови", + "Per person": "По лице", + "By status": "По статус", + "By priority": "По приоритет", + "Character roster": "Список на ликови", + "Progression": "Напредок", + "World content": "Содржина на светот", + "Awaiting approval": "Чека одобрување", + "Player characters": "Ликови на играчи", + "Awards": "Доделувања", + "Experience": "Искуство", + "Experience awarded": "Доделено искуство", + "Per character": "По лик", + "By type": "По тип", + "By approval": "По одобрување", + "Items carried by characters": "Предмети што ги носат ликовите", + "Conditions on characters": "Состојби на ликовите", + "Nothing awarded yet": "Сè уште ништо не е доделено", + "Who is playing what, and what is still waiting for approval.": "Кој што игра и што сè уште чека одобрување.", + "Experience awarded, and who earned it.": "Доделеното искуство и кој го заработил.", + "How much the world holds, and what characters actually carry.": "Колку содржи светот и што навистина носат ликовите.", + "Store": "Продавница", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Инсталирајте регистри, шеми и текови објавени од други организации." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/mk.json b/l10n/mk.json index 7e5af06e..af0ef797 100644 --- a/l10n/mk.json +++ b/l10n/mk.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Да се вчитаат примероци од податоци?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Примероците од податоци ги полнат списоците, страниците со детали и таблите, за да ја видите апликацијата како работи веднаш. Изберете \"Ништо\" на продукциска инсталација.", + "Load the example data": "Вчитај ги примероците од податоци", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Го вчитува тоа што го избравте. Тоа се очигледно примероци од податоци, дејството може безбедно да се повтори, а потоа можете да ги избришете.", + "None, I will set this up myself": "Ништо, сам ќе го поставам ова", + "Nothing is imported. You start with an empty app and add your own data.": "Ништо не се увезува. Почнувате со празна апликација и додавате свои податоци.", + "Example data": "Примероци од податоци", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Примерни вредности за секоја шема што ја носи оваа апликација, генерирани од самите шеми. Ги покажуваат списоците, страниците со детали и таблите во работа наместо да раскажуваат приказна. Безбедно за повторување и бришење потоа.", "Larpinq": "Larpinq", "Dashboard": "Контролна табла", "Characters": "Ликови", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Нема — ова е основна вештина.", "Where the automation lives": "Каде живее автоматизацијата", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows е тоа што се случува без некој да кликне: потсетник пред да истече рокот, потврда при поднесување. Тука ги читаш и ги уредуваш — сега нема што да се гради.", - "Open Flows in the menu": "Отвори Flows во менито" + "Open Flows in the menu": "Отвори Flows во менито", + "Ability Name": "Име на способноста", + "Affected Characters": "Засегнати ликови", + "Amount of copper pieces": "Број на бакарни монети", + "Amount of gold pieces": "Број на златни монети", + "Amount of silver pieces": "Број на сребрени монети", + "Automatic system notices": "Автоматски системски известувања", + "Award Reason": "Причина за доделувањето", + "Awarded At": "Доделено на", + "Awarded By": "Доделено од", + "Background Story": "Приказна за потеклото", + "Base Value": "Основна вредност", + "Character Card": "Картичка на ликот", + "Character Name": "Име на ликот", + "Checked In At": "Пристигнувањето е забележано на", + "Checked In By": "Пристигнувањето го забележа", + "Condition Name": "Име на состојбата", + "Contact email address": "Контакт адреса за е-пошта", + "Copper Pieces": "Бакарни монети", + "Effect Name": "Име на ефектот", + "End Date": "Датум на завршеток", + "Event Name": "Име на настанот", + "Event description": "Опис на настанот", + "Event end date and time": "Датум и време на завршеток на настанот", + "Event location": "Место на настанот", + "Event name": "Име на настанот", + "Event start date and time": "Датум и време на почеток на настанот", + "Faith": "Вера", + "Full name of the player": "Целосно име на играчот", + "Game Master Notes (Private)": "Белешки на водачот на играта (приватни)", + "Game Master Notes (Public)": "Белешки на водачот на играта (јавни)", + "Gold Pieces": "Златни монети", + "Item Name": "Име на предметот", + "Items and Money": "Предмети и пари", + "Mechanical Effect": "Ефект во играта", + "Modifier Value": "Вредност на модификаторот", + "Name of the condition": "Име на состојбата", + "Name of the effect": "Име на ефектот", + "Name of the event": "Име на настанот", + "Name of the item": "Име на предметот", + "Name of the skill": "Име на вештината", + "Name of the stat": "Име на својството", + "Nextcloud user": "Nextcloud корисник", + "Notes about items and money": "Белешки за предметите и парите", + "Notes about the player": "Белешки за играчот", + "Overridden At": "Исклучокот е одобрен на", + "Overridden By": "Исклучокот го одобри", + "Override Reason": "Причина за исклучокот", + "Owner": "Сопственик", + "Owner UID": "UID на сопственикот", + "Participating Characters": "Ликови што учествуваат", + "Player Name": "Име на играчот", + "Post-Event Effects": "Ефекти по настанот", + "Real name of the player": "Вистинско име на играчот", + "Required Conditions": "Потребни состојби", + "Required Effects": "Потребни ефекти", + "Required Score": "Потребна вредност", + "Required Skills": "Потребни вештини", + "Required Stats": "Потребни својства", + "Requirement Overrides": "Исклучоци од предусловите", + "Setting Name": "Име на светот на играта", + "Silver Pieces": "Сребрени монети", + "Skill Name": "Име на вештината", + "Start Date": "Датум на почеток", + "Starting value for all characters": "Почетна вредност за сите ликови", + "Stat": "Својство", + "Status": "Статус", + "System Notice": "Системско известување", + "Unique Artifact": "Уникатен артефакт", + "Unique Condition": "Уникатна состојба", + "XP Amount": "Број на поени искуство", + "XP Award": "Доделување поени искуство", + "Reports": "Извештаи", + "Pick a report to open it.": "Изберете извештај за да го отворите.", + "Open": "Отворено", + "In progress": "Во тек", + "Blocked": "Блокирано", + "Date": "Датум", + "Due": "Рок", + "Assignee": "Доделено", + "Who": "Кој", + "What": "Што", + "Minutes": "Минути", + "Entries": "Записи", + "Most recent": "Најнови", + "Per person": "По лице", + "By status": "По статус", + "By priority": "По приоритет", + "Character roster": "Список на ликови", + "Progression": "Напредок", + "World content": "Содржина на светот", + "Awaiting approval": "Чека одобрување", + "Player characters": "Ликови на играчи", + "Awards": "Доделувања", + "Experience": "Искуство", + "Experience awarded": "Доделено искуство", + "Per character": "По лик", + "By type": "По тип", + "By approval": "По одобрување", + "Items carried by characters": "Предмети што ги носат ликовите", + "Conditions on characters": "Состојби на ликовите", + "Nothing awarded yet": "Сè уште ништо не е доделено", + "Who is playing what, and what is still waiting for approval.": "Кој што игра и што сè уште чека одобрување.", + "Experience awarded, and who earned it.": "Доделеното искуство и кој го заработил.", + "How much the world holds, and what characters actually carry.": "Колку содржи светот и што навистина носат ликовите.", + "Store": "Продавница", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Инсталирајте регистри, шеми и текови објавени од други организации." }, "plurals": {} } diff --git a/l10n/mt.js b/l10n/mt.js index 2edd4365..94092993 100644 --- a/l10n/mt.js +++ b/l10n/mt.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Ittella’ dejta ta’ eżempju?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Id-dejta ta’ eżempju timla l-listi, il-paġni tad-dettalji u d-dashboards, biex tara l-app taħdem mill-ewwel. Agħżel \"Xejn\" fuq installazzjoni tal-produzzjoni.", + "Load the example data": "Tella’ d-dejta ta’ eżempju", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Ittella’ dak li għażilt. Din hija b’mod ċar dejta ta’ eżempju, l-azzjoni tista’ terġa’ ssir bla periklu, u tista’ tħassarha wara.", + "None, I will set this up myself": "Xejn, se nissettja dan jien stess", + "Nothing is imported. You start with an empty app and add your own data.": "Ma jiġi impurtat xejn. Tibda b’app vojta u żżid id-dejta tiegħek.", + "Example data": "Dejta ta’ eżempju", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Valuri ta’ eżempju għal kull skema li tipprovdi din l-app, iġġenerati mill-iskemi nfushom. Juru l-listi, il-paġni tad-dettalji u d-dashboards jaħdmu minflok jirrakkontaw storja. Bla periklu li terġa’ ssir u tista’ titħassar wara.", "Larpinq": "Larpinq", "Dashboard": "Dashboard", "Characters": "Karattri", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "L-ebda waħda — din hija ħila bażika.", "Where the automation lives": "Fejn tgħix l-awtomazzjoni", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Il-Flows huma dak li jiġri mingħajr ma jikklikkja ħadd: tfakkira qabel ma jiskadi terminu, konferma mal-preżentazzjoni. Hawn taqrahom u teditjahom — m'hemm xejn x'tibni issa.", - "Open Flows in the menu": "Iftaħ Flows fil-menu" + "Open Flows in the menu": "Iftaħ Flows fil-menu", + "Ability Name": "Isem tal-abbiltà", + "Affected Characters": "Karattri affettwati", + "Amount of copper pieces": "Ammont ta' muniti tar-ram", + "Amount of gold pieces": "Ammont ta' muniti tad-deheb", + "Amount of silver pieces": "Ammont ta' muniti tal-fidda", + "Automatic system notices": "Avviżi awtomatiċi tas-sistema", + "Award Reason": "Raġuni għall-għoti", + "Awarded At": "Mogħti fi", + "Awarded By": "Mogħti minn", + "Background Story": "Storja tal-isfond", + "Base Value": "Valur bażi", + "Character Card": "Karta tal-karattru", + "Character Name": "Isem tal-karattru", + "Checked In At": "Wasla rreġistrata fi", + "Checked In By": "Wasla rreġistrata minn", + "Condition Name": "Isem tal-kundizzjoni", + "Contact email address": "Indirizz tal-email għall-kuntatt", + "Copper Pieces": "Muniti tar-ram", + "Effect Name": "Isem tal-effett", + "End Date": "Data tat-tmiem", + "Event Name": "Isem tal-avveniment", + "Event description": "Deskrizzjoni tal-avveniment", + "Event end date and time": "Data u ħin tat-tmiem tal-avveniment", + "Event location": "Post tal-avveniment", + "Event name": "Isem tal-avveniment", + "Event start date and time": "Data u ħin tal-bidu tal-avveniment", + "Faith": "Fidi", + "Full name of the player": "Isem sħiħ tal-plejer", + "Game Master Notes (Private)": "Noti tal-mexxej tal-logħba (privati)", + "Game Master Notes (Public)": "Noti tal-mexxej tal-logħba (pubbliċi)", + "Gold Pieces": "Muniti tad-deheb", + "Item Name": "Isem tal-oġġett", + "Items and Money": "Oġġetti u flus", + "Mechanical Effect": "Effett fil-logħba", + "Modifier Value": "Valur tal-modifikatur", + "Name of the condition": "Isem tal-kundizzjoni", + "Name of the effect": "Isem tal-effett", + "Name of the event": "Isem tal-avveniment", + "Name of the item": "Isem tal-oġġett", + "Name of the skill": "Isem tal-ħila", + "Name of the stat": "Isem tal-attribut", + "Nextcloud user": "Utent ta' Nextcloud", + "Notes about items and money": "Noti dwar l-oġġetti u l-flus", + "Notes about the player": "Noti dwar il-plejer", + "Overridden At": "Eċċezzjoni mogħtija fi", + "Overridden By": "Eċċezzjoni mogħtija minn", + "Override Reason": "Raġuni għall-eċċezzjoni", + "Owner": "Sid", + "Owner UID": "UID tas-sid", + "Participating Characters": "Karattri parteċipanti", + "Player Name": "Isem tal-plejer", + "Post-Event Effects": "Effetti wara l-avveniment", + "Real name of the player": "Isem reali tal-plejer", + "Required Conditions": "Kundizzjonijiet meħtieġa", + "Required Effects": "Effetti meħtieġa", + "Required Score": "Valur meħtieġ", + "Required Skills": "Ħiliet meħtieġa", + "Required Stats": "Attributi meħtieġa", + "Requirement Overrides": "Eċċezzjonijiet mill-prerekwiżiti", + "Setting Name": "Isem tad-dinja tal-logħba", + "Silver Pieces": "Muniti tal-fidda", + "Skill Name": "Isem tal-ħila", + "Start Date": "Data tal-bidu", + "Starting value for all characters": "Valur inizjali għall-karattri kollha", + "Stat": "Attribut", + "Status": "Status", + "System Notice": "Avviż tas-sistema", + "Unique Artifact": "Artefatt uniku", + "Unique Condition": "Kundizzjoni unika", + "XP Amount": "Ammont ta' punti ta' esperjenza", + "XP Award": "Għoti ta' punti ta' esperjenza", + "Reports": "Rapporti", + "Pick a report to open it.": "Agħżel rapport biex tiftħu.", + "Open": "Miftuħ", + "In progress": "Għaddej", + "Blocked": "Imblukkat", + "Date": "Data", + "Due": "Skadenza", + "Assignee": "Assenjat lil", + "Who": "Min", + "What": "Xiex", + "Minutes": "Minuti", + "Entries": "Entrati", + "Most recent": "L-aktar reċenti", + "Per person": "Għal kull persuna", + "By status": "Skont l-istatus", + "By priority": "Skont il-prijorità", + "Character roster": "Lista tal-karattri", + "Progression": "Progressjoni", + "World content": "Kontenut tad-dinja", + "Awaiting approval": "Jistenna approvazzjoni", + "Player characters": "Karattri tal-plejers", + "Awards": "Għotjiet", + "Experience": "Esperjenza", + "Experience awarded": "Esperjenza mogħtija", + "Per character": "Għal kull karattru", + "By type": "Skont it-tip", + "By approval": "Skont l-approvazzjoni", + "Items carried by characters": "Oġġetti miġjuba mill-karattri", + "Conditions on characters": "Kundizzjonijiet fuq il-karattri", + "Nothing awarded yet": "Xejn ma ngħata s'issa", + "Who is playing what, and what is still waiting for approval.": "Min qed jilgħab xiex, u x'għadu jistenna approvazzjoni.", + "Experience awarded, and who earned it.": "L-esperjenza mogħtija u min qalagħha.", + "How much the world holds, and what characters actually carry.": "Kemm iżomm id-dinja, u x'iġorru tabilħaqq il-karattri.", + "Store": "Ħanut", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Installa reġistri, skemi u flussi ppubblikati minn organizzazzjonijiet oħra." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/mt.json b/l10n/mt.json index 67100322..5da46900 100644 --- a/l10n/mt.json +++ b/l10n/mt.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Ittella’ dejta ta’ eżempju?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Id-dejta ta’ eżempju timla l-listi, il-paġni tad-dettalji u d-dashboards, biex tara l-app taħdem mill-ewwel. Agħżel \"Xejn\" fuq installazzjoni tal-produzzjoni.", + "Load the example data": "Tella’ d-dejta ta’ eżempju", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Ittella’ dak li għażilt. Din hija b’mod ċar dejta ta’ eżempju, l-azzjoni tista’ terġa’ ssir bla periklu, u tista’ tħassarha wara.", + "None, I will set this up myself": "Xejn, se nissettja dan jien stess", + "Nothing is imported. You start with an empty app and add your own data.": "Ma jiġi impurtat xejn. Tibda b’app vojta u żżid id-dejta tiegħek.", + "Example data": "Dejta ta’ eżempju", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Valuri ta’ eżempju għal kull skema li tipprovdi din l-app, iġġenerati mill-iskemi nfushom. Juru l-listi, il-paġni tad-dettalji u d-dashboards jaħdmu minflok jirrakkontaw storja. Bla periklu li terġa’ ssir u tista’ titħassar wara.", "Larpinq": "Larpinq", "Dashboard": "Dashboard", "Characters": "Karattri", @@ -151,7 +159,113 @@ "None — this is a root skill.": "L-ebda waħda — din hija ħila bażika.", "Where the automation lives": "Fejn tgħix l-awtomazzjoni", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Il-Flows huma dak li jiġri mingħajr ma jikklikkja ħadd: tfakkira qabel ma jiskadi terminu, konferma mal-preżentazzjoni. Hawn taqrahom u teditjahom — m'hemm xejn x'tibni issa.", - "Open Flows in the menu": "Iftaħ Flows fil-menu" + "Open Flows in the menu": "Iftaħ Flows fil-menu", + "Ability Name": "Isem tal-abbiltà", + "Affected Characters": "Karattri affettwati", + "Amount of copper pieces": "Ammont ta' muniti tar-ram", + "Amount of gold pieces": "Ammont ta' muniti tad-deheb", + "Amount of silver pieces": "Ammont ta' muniti tal-fidda", + "Automatic system notices": "Avviżi awtomatiċi tas-sistema", + "Award Reason": "Raġuni għall-għoti", + "Awarded At": "Mogħti fi", + "Awarded By": "Mogħti minn", + "Background Story": "Storja tal-isfond", + "Base Value": "Valur bażi", + "Character Card": "Karta tal-karattru", + "Character Name": "Isem tal-karattru", + "Checked In At": "Wasla rreġistrata fi", + "Checked In By": "Wasla rreġistrata minn", + "Condition Name": "Isem tal-kundizzjoni", + "Contact email address": "Indirizz tal-email għall-kuntatt", + "Copper Pieces": "Muniti tar-ram", + "Effect Name": "Isem tal-effett", + "End Date": "Data tat-tmiem", + "Event Name": "Isem tal-avveniment", + "Event description": "Deskrizzjoni tal-avveniment", + "Event end date and time": "Data u ħin tat-tmiem tal-avveniment", + "Event location": "Post tal-avveniment", + "Event name": "Isem tal-avveniment", + "Event start date and time": "Data u ħin tal-bidu tal-avveniment", + "Faith": "Fidi", + "Full name of the player": "Isem sħiħ tal-plejer", + "Game Master Notes (Private)": "Noti tal-mexxej tal-logħba (privati)", + "Game Master Notes (Public)": "Noti tal-mexxej tal-logħba (pubbliċi)", + "Gold Pieces": "Muniti tad-deheb", + "Item Name": "Isem tal-oġġett", + "Items and Money": "Oġġetti u flus", + "Mechanical Effect": "Effett fil-logħba", + "Modifier Value": "Valur tal-modifikatur", + "Name of the condition": "Isem tal-kundizzjoni", + "Name of the effect": "Isem tal-effett", + "Name of the event": "Isem tal-avveniment", + "Name of the item": "Isem tal-oġġett", + "Name of the skill": "Isem tal-ħila", + "Name of the stat": "Isem tal-attribut", + "Nextcloud user": "Utent ta' Nextcloud", + "Notes about items and money": "Noti dwar l-oġġetti u l-flus", + "Notes about the player": "Noti dwar il-plejer", + "Overridden At": "Eċċezzjoni mogħtija fi", + "Overridden By": "Eċċezzjoni mogħtija minn", + "Override Reason": "Raġuni għall-eċċezzjoni", + "Owner": "Sid", + "Owner UID": "UID tas-sid", + "Participating Characters": "Karattri parteċipanti", + "Player Name": "Isem tal-plejer", + "Post-Event Effects": "Effetti wara l-avveniment", + "Real name of the player": "Isem reali tal-plejer", + "Required Conditions": "Kundizzjonijiet meħtieġa", + "Required Effects": "Effetti meħtieġa", + "Required Score": "Valur meħtieġ", + "Required Skills": "Ħiliet meħtieġa", + "Required Stats": "Attributi meħtieġa", + "Requirement Overrides": "Eċċezzjonijiet mill-prerekwiżiti", + "Setting Name": "Isem tad-dinja tal-logħba", + "Silver Pieces": "Muniti tal-fidda", + "Skill Name": "Isem tal-ħila", + "Start Date": "Data tal-bidu", + "Starting value for all characters": "Valur inizjali għall-karattri kollha", + "Stat": "Attribut", + "Status": "Status", + "System Notice": "Avviż tas-sistema", + "Unique Artifact": "Artefatt uniku", + "Unique Condition": "Kundizzjoni unika", + "XP Amount": "Ammont ta' punti ta' esperjenza", + "XP Award": "Għoti ta' punti ta' esperjenza", + "Reports": "Rapporti", + "Pick a report to open it.": "Agħżel rapport biex tiftħu.", + "Open": "Miftuħ", + "In progress": "Għaddej", + "Blocked": "Imblukkat", + "Date": "Data", + "Due": "Skadenza", + "Assignee": "Assenjat lil", + "Who": "Min", + "What": "Xiex", + "Minutes": "Minuti", + "Entries": "Entrati", + "Most recent": "L-aktar reċenti", + "Per person": "Għal kull persuna", + "By status": "Skont l-istatus", + "By priority": "Skont il-prijorità", + "Character roster": "Lista tal-karattri", + "Progression": "Progressjoni", + "World content": "Kontenut tad-dinja", + "Awaiting approval": "Jistenna approvazzjoni", + "Player characters": "Karattri tal-plejers", + "Awards": "Għotjiet", + "Experience": "Esperjenza", + "Experience awarded": "Esperjenza mogħtija", + "Per character": "Għal kull karattru", + "By type": "Skont it-tip", + "By approval": "Skont l-approvazzjoni", + "Items carried by characters": "Oġġetti miġjuba mill-karattri", + "Conditions on characters": "Kundizzjonijiet fuq il-karattri", + "Nothing awarded yet": "Xejn ma ngħata s'issa", + "Who is playing what, and what is still waiting for approval.": "Min qed jilgħab xiex, u x'għadu jistenna approvazzjoni.", + "Experience awarded, and who earned it.": "L-esperjenza mogħtija u min qalagħha.", + "How much the world holds, and what characters actually carry.": "Kemm iżomm id-dinja, u x'iġorru tabilħaqq il-karattri.", + "Store": "Ħanut", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Installa reġistri, skemi u flussi ppubblikati minn organizzazzjonijiet oħra." }, "plurals": {} } diff --git a/l10n/nb.js b/l10n/nb.js index 26e8c719..14b084ed 100644 --- a/l10n/nb.js +++ b/l10n/nb.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Laste inn eksempeldata?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Eksempeldata fyller listene, detaljsidene og dashbordene, så du ser appen virke med en gang. Velg \"Ingen\" på en produksjonsinstallasjon.", + "Load the example data": "Last inn eksempeldataene", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Laster inn det du valgte. Dette er tydelig eksempeldata, handlingen kan gjentas uten risiko, og du kan slette dem etterpå.", + "None, I will set this up myself": "Ingen, jeg setter det opp selv", + "Nothing is imported. You start with an empty app and add your own data.": "Ingenting importeres. Du starter med en tom app og legger til dine egne data.", + "Example data": "Eksempeldata", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Eksempelverdier for hvert skjema denne appen leverer, generert fra skjemaene selv. De viser listene, detaljsidene og dashbordene i drift i stedet for å fortelle en historie. Kan gjentas uten risiko og slettes etterpå.", "Larpinq": "Larpinq", "Dashboard": "Oversikt", "Characters": "Karakterer", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Ingen — dette er en grunnferdighet.", "Where the automation lives": "Der automatiseringen bor", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows er det som skjer uten at noen klikker: en påminnelse før en frist går ut, en bekreftelse ved innsending. Her leser og redigerer du dem — det er ingenting å bygge nå.", - "Open Flows in the menu": "Åpne Flows i menyen" + "Open Flows in the menu": "Åpne Flows i menyen", + "Ability Name": "Navn på egenskapen", + "Affected Characters": "Berørte karakterer", + "Amount of copper pieces": "Antall kobberstykker", + "Amount of gold pieces": "Antall gullstykker", + "Amount of silver pieces": "Antall sølvstykker", + "Automatic system notices": "Automatiske systemmeldinger", + "Award Reason": "Årsak til tildelingen", + "Awarded At": "Tildelt den", + "Awarded By": "Tildelt av", + "Background Story": "Bakgrunnshistorie", + "Base Value": "Grunnverdi", + "Character Card": "Karakterkort", + "Character Name": "Navn på karakteren", + "Checked In At": "Sjekket inn den", + "Checked In By": "Sjekket inn av", + "Condition Name": "Navn på tilstanden", + "Contact email address": "E-postadresse for kontakt", + "Copper Pieces": "Kobberstykker", + "Effect Name": "Navn på effekten", + "End Date": "Sluttdato", + "Event Name": "Navn på arrangementet", + "Event description": "Beskrivelse av arrangementet", + "Event end date and time": "Sluttdato og -tid for arrangementet", + "Event location": "Sted for arrangementet", + "Event name": "Navn på arrangementet", + "Event start date and time": "Startdato og -tid for arrangementet", + "Faith": "Tro", + "Full name of the player": "Spillerens fulle navn", + "Game Master Notes (Private)": "Spillederens notater (private)", + "Game Master Notes (Public)": "Spillederens notater (offentlige)", + "Gold Pieces": "Gullstykker", + "Item Name": "Navn på gjenstanden", + "Items and Money": "Gjenstander og penger", + "Mechanical Effect": "Spillteknisk effekt", + "Modifier Value": "Modifikatorens verdi", + "Name of the condition": "Navn på tilstanden", + "Name of the effect": "Navn på effekten", + "Name of the event": "Navn på arrangementet", + "Name of the item": "Navn på gjenstanden", + "Name of the skill": "Navn på ferdigheten", + "Name of the stat": "Navn på attributtet", + "Nextcloud user": "Nextcloud-bruker", + "Notes about items and money": "Notater om gjenstander og penger", + "Notes about the player": "Notater om spilleren", + "Overridden At": "Overstyrt den", + "Overridden By": "Overstyrt av", + "Override Reason": "Årsak til overstyringen", + "Owner": "Eier", + "Owner UID": "Eierens UID", + "Participating Characters": "Deltakende karakterer", + "Player Name": "Navn på spilleren", + "Post-Event Effects": "Effekter etter arrangementet", + "Real name of the player": "Spillerens virkelige navn", + "Required Conditions": "Nødvendige tilstander", + "Required Effects": "Nødvendige effekter", + "Required Score": "Nødvendig verdi", + "Required Skills": "Nødvendige ferdigheter", + "Required Stats": "Nødvendige attributter", + "Requirement Overrides": "Overstyrte forutsetninger", + "Setting Name": "Navn på spillverdenen", + "Silver Pieces": "Sølvstykker", + "Skill Name": "Navn på ferdigheten", + "Start Date": "Startdato", + "Starting value for all characters": "Startverdi for alle karakterer", + "Stat": "Attributt", + "Status": "Status", + "System Notice": "Systemmelding", + "Unique Artifact": "Unik artefakt", + "Unique Condition": "Unik tilstand", + "XP Amount": "Antall erfaringspoeng", + "XP Award": "XP-tildeling", + "Reports": "Rapporter", + "Pick a report to open it.": "Velg en rapport for å åpne den.", + "Open": "Åpen", + "In progress": "Pågår", + "Blocked": "Blokkert", + "Date": "Dato", + "Due": "Frist", + "Assignee": "Tildelt", + "Who": "Hvem", + "What": "Hva", + "Minutes": "Minutter", + "Entries": "Oppføringer", + "Most recent": "Nyeste", + "Per person": "Per person", + "By status": "Etter status", + "By priority": "Etter prioritet", + "Character roster": "Karakterliste", + "Progression": "Progresjon", + "World content": "Verdensinnhold", + "Awaiting approval": "Venter på godkjenning", + "Player characters": "Spillerkarakterer", + "Awards": "Tildelinger", + "Experience": "Erfaring", + "Experience awarded": "Tildelt erfaring", + "Per character": "Per karakter", + "By type": "Etter type", + "By approval": "Etter godkjenning", + "Items carried by characters": "Gjenstander båret av karakterer", + "Conditions on characters": "Tilstander på karakterer", + "Nothing awarded yet": "Ingenting tildelt ennå", + "Who is playing what, and what is still waiting for approval.": "Hvem som spiller hva, og hva som fortsatt venter på godkjenning.", + "Experience awarded, and who earned it.": "Tildelt erfaring, og hvem som har opptjent den.", + "How much the world holds, and what characters actually carry.": "Hvor mye verden rommer, og hva karakterene faktisk bærer.", + "Store": "Butikk", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Installer registre, skjemaer og flyter som andre organisasjoner har publisert." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/nb.json b/l10n/nb.json index be13fb2c..27676e0b 100644 --- a/l10n/nb.json +++ b/l10n/nb.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Laste inn eksempeldata?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Eksempeldata fyller listene, detaljsidene og dashbordene, så du ser appen virke med en gang. Velg \"Ingen\" på en produksjonsinstallasjon.", + "Load the example data": "Last inn eksempeldataene", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Laster inn det du valgte. Dette er tydelig eksempeldata, handlingen kan gjentas uten risiko, og du kan slette dem etterpå.", + "None, I will set this up myself": "Ingen, jeg setter det opp selv", + "Nothing is imported. You start with an empty app and add your own data.": "Ingenting importeres. Du starter med en tom app og legger til dine egne data.", + "Example data": "Eksempeldata", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Eksempelverdier for hvert skjema denne appen leverer, generert fra skjemaene selv. De viser listene, detaljsidene og dashbordene i drift i stedet for å fortelle en historie. Kan gjentas uten risiko og slettes etterpå.", "Larpinq": "Larpinq", "Dashboard": "Oversikt", "Characters": "Karakterer", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Ingen — dette er en grunnferdighet.", "Where the automation lives": "Der automatiseringen bor", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows er det som skjer uten at noen klikker: en påminnelse før en frist går ut, en bekreftelse ved innsending. Her leser og redigerer du dem — det er ingenting å bygge nå.", - "Open Flows in the menu": "Åpne Flows i menyen" + "Open Flows in the menu": "Åpne Flows i menyen", + "Ability Name": "Navn på egenskapen", + "Affected Characters": "Berørte karakterer", + "Amount of copper pieces": "Antall kobberstykker", + "Amount of gold pieces": "Antall gullstykker", + "Amount of silver pieces": "Antall sølvstykker", + "Automatic system notices": "Automatiske systemmeldinger", + "Award Reason": "Årsak til tildelingen", + "Awarded At": "Tildelt den", + "Awarded By": "Tildelt av", + "Background Story": "Bakgrunnshistorie", + "Base Value": "Grunnverdi", + "Character Card": "Karakterkort", + "Character Name": "Navn på karakteren", + "Checked In At": "Sjekket inn den", + "Checked In By": "Sjekket inn av", + "Condition Name": "Navn på tilstanden", + "Contact email address": "E-postadresse for kontakt", + "Copper Pieces": "Kobberstykker", + "Effect Name": "Navn på effekten", + "End Date": "Sluttdato", + "Event Name": "Navn på arrangementet", + "Event description": "Beskrivelse av arrangementet", + "Event end date and time": "Sluttdato og -tid for arrangementet", + "Event location": "Sted for arrangementet", + "Event name": "Navn på arrangementet", + "Event start date and time": "Startdato og -tid for arrangementet", + "Faith": "Tro", + "Full name of the player": "Spillerens fulle navn", + "Game Master Notes (Private)": "Spillederens notater (private)", + "Game Master Notes (Public)": "Spillederens notater (offentlige)", + "Gold Pieces": "Gullstykker", + "Item Name": "Navn på gjenstanden", + "Items and Money": "Gjenstander og penger", + "Mechanical Effect": "Spillteknisk effekt", + "Modifier Value": "Modifikatorens verdi", + "Name of the condition": "Navn på tilstanden", + "Name of the effect": "Navn på effekten", + "Name of the event": "Navn på arrangementet", + "Name of the item": "Navn på gjenstanden", + "Name of the skill": "Navn på ferdigheten", + "Name of the stat": "Navn på attributtet", + "Nextcloud user": "Nextcloud-bruker", + "Notes about items and money": "Notater om gjenstander og penger", + "Notes about the player": "Notater om spilleren", + "Overridden At": "Overstyrt den", + "Overridden By": "Overstyrt av", + "Override Reason": "Årsak til overstyringen", + "Owner": "Eier", + "Owner UID": "Eierens UID", + "Participating Characters": "Deltakende karakterer", + "Player Name": "Navn på spilleren", + "Post-Event Effects": "Effekter etter arrangementet", + "Real name of the player": "Spillerens virkelige navn", + "Required Conditions": "Nødvendige tilstander", + "Required Effects": "Nødvendige effekter", + "Required Score": "Nødvendig verdi", + "Required Skills": "Nødvendige ferdigheter", + "Required Stats": "Nødvendige attributter", + "Requirement Overrides": "Overstyrte forutsetninger", + "Setting Name": "Navn på spillverdenen", + "Silver Pieces": "Sølvstykker", + "Skill Name": "Navn på ferdigheten", + "Start Date": "Startdato", + "Starting value for all characters": "Startverdi for alle karakterer", + "Stat": "Attributt", + "Status": "Status", + "System Notice": "Systemmelding", + "Unique Artifact": "Unik artefakt", + "Unique Condition": "Unik tilstand", + "XP Amount": "Antall erfaringspoeng", + "XP Award": "XP-tildeling", + "Reports": "Rapporter", + "Pick a report to open it.": "Velg en rapport for å åpne den.", + "Open": "Åpen", + "In progress": "Pågår", + "Blocked": "Blokkert", + "Date": "Dato", + "Due": "Frist", + "Assignee": "Tildelt", + "Who": "Hvem", + "What": "Hva", + "Minutes": "Minutter", + "Entries": "Oppføringer", + "Most recent": "Nyeste", + "Per person": "Per person", + "By status": "Etter status", + "By priority": "Etter prioritet", + "Character roster": "Karakterliste", + "Progression": "Progresjon", + "World content": "Verdensinnhold", + "Awaiting approval": "Venter på godkjenning", + "Player characters": "Spillerkarakterer", + "Awards": "Tildelinger", + "Experience": "Erfaring", + "Experience awarded": "Tildelt erfaring", + "Per character": "Per karakter", + "By type": "Etter type", + "By approval": "Etter godkjenning", + "Items carried by characters": "Gjenstander båret av karakterer", + "Conditions on characters": "Tilstander på karakterer", + "Nothing awarded yet": "Ingenting tildelt ennå", + "Who is playing what, and what is still waiting for approval.": "Hvem som spiller hva, og hva som fortsatt venter på godkjenning.", + "Experience awarded, and who earned it.": "Tildelt erfaring, og hvem som har opptjent den.", + "How much the world holds, and what characters actually carry.": "Hvor mye verden rommer, og hva karakterene faktisk bærer.", + "Store": "Butikk", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Installer registre, skjemaer og flyter som andre organisasjoner har publisert." }, "plurals": {} } diff --git a/l10n/nl.js b/l10n/nl.js index 4cf3c0f1..bca0e29b 100644 --- a/l10n/nl.js +++ b/l10n/nl.js @@ -1,251 +1,364 @@ OC.L10N.register( "larpinq", { - "Larpinq": "Larpinq", - "Dashboard": "Dashboard", - "Characters": "Karakters", - "Character": "Karakter", - "Players": "Spelers", - "Player": "Speler", + "Load example data?": "Voorbeeldgegevens laden?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Voorbeeldgegevens vullen de lijsten, detailpagina’s en dashboards, zodat je de app meteen ziet werken. Kies \"Geen\" op een productieomgeving.", + "Load the example data": "Laad de voorbeeldgegevens", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Laadt wat je koos. De gegevens zijn herkenbaar voorbeeldgegevens, je kunt dit meer dan een keer uitvoeren en je kunt ze daarna verwijderen.", + "None, I will set this up myself": "Geen, ik richt dit zelf in", + "Nothing is imported. You start with an empty app and add your own data.": "Er wordt niets geïmporteerd. Je begint met een lege app en voegt zelf gegevens toe.", + "Example data": "Voorbeeldgegevens", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Voorbeeldwaarden voor elk schema dat deze app levert, gegenereerd uit de schema’s zelf. Het laat de lijsten, detailpagina’s en dashboards werkend zien in plaats van een verhaal te vertellen. Veilig om vaker uit te voeren, en je kunt het daarna verwijderen.", + "(score ≥ {n})": "(score ≥ {n})", "Abilities": "Vaardigheden", "Ability": "Vaardigheid", - "Skills": "Skills", - "Skill": "Skill", - "Items": "Items", - "Item": "Item", - "Conditions": "Condities", - "Condition": "Conditie", - "Effects": "Effecten", - "Effect": "Effect", - "Events": "Evenementen", - "Event": "Evenement", - "Settings": "Instellingen", - "Worlds": "Werelden", - "Setting": "Instelling", - "World": "Wereld", - "Documentation": "Documentatie", - "New character": "Nieuw karakter", - "New player": "Nieuwe speler", - "New ability": "Nieuwe vaardigheid", - "New skill": "Nieuwe skill", - "New item": "Nieuw item", - "New condition": "Nieuwe conditie", - "New effect": "Nieuw effect", - "New event": "Nieuw evenement", - "Name": "Naam", - "Description": "Omschrijving", - "Type": "Type", + "Ability Name": "Naam van de eigenschap", + "Add more characters and events from the menu, and the Dashboard tracks them as your world grows. The documentation covers the rest.": "Voeg via het menu meer personages en evenementen toe; het Dashboard houdt ze bij terwijl je wereld groeit. De documentatie behandelt de rest.", + "Add your first character. Give them a name and a type, and save. You can flesh out abilities, skills and items later.": "Voeg je eerste personage toe. Geef het een naam en een type en sla op. Eigenschappen, vaardigheden en voorwerpen werk je later uit.", + "Advanced settings": "Geavanceerde instellingen", + "Affected Characters": "Betrokken personages", + "All worlds": "Alle werelden", + "Amount of copper pieces": "Aantal koperstukken", + "Amount of gold pieces": "Aantal goudstukken", + "Amount of silver pieces": "Aantal zilverstukken", + "Applied effects": "Toegepaste effecten", + "Applies effects": "Past effecten toe", "Approved": "Goedgekeurd", - "Gold": "Goud", - "Silver": "Zilver", - "Copper": "Koper", + "Are you sure you want to delete this?": "Weet u zeker dat u dit wilt verwijderen?", + "Attendance": "Aanwezigheid", + "Attendance tracking is unavailable — showing the participant list read-only.": "Aanwezigheidsregistratie is niet beschikbaar — de deelnemerslijst wordt alleen-lezen getoond.", + "Attendees": "Deelnemers", + "Automatic system notices": "Automatische systeemmeldingen", + "Available": "Beschikbaar", + "Award Reason": "Reden voor de toekenning", + "Award record": "Toekenningsrecord", + "Awarded": "Toegekend", + "Awarded At": "Toegekend op", + "Awarded By": "Toegekend door", + "Back to list": "Terug naar lijst", + "Background": "Achtergrond", + "Background Story": "Achtergrondverhaal", "Base": "Basis", - "Modifier": "Modifier", - "Modification": "Wijziging", - "Cumulative": "Cumulatief", - "Location": "Locatie", - "Start date": "Startdatum", - "End date": "Einddatum", - "Unique": "Uniek", - "Value": "Waarde", - "player": "speler", - "npc": "npc", - "other": "overig", - "no": "nee", - "approved": "goedgekeurd", - "positive": "positief", - "negative": "negatief", - "cumulative": "cumulatief", - "non-cumulative": "niet-cumulatief", - "Save": "Opslaan", + "Base Value": "Basiswaarde", + "Base value": "Basiswaarde", + "Build & world": "Build en wereld", "Cancel": "Annuleren", - "Delete": "Verwijderen", - "Edit": "Bewerken", - "Search": "Zoeken", - "Loading...": "Laden...", - "Back to list": "Terug naar lijst", - "Are you sure you want to delete this?": "Weet u zeker dat u dit wilt verwijderen?", - "Download PDF": "PDF downloaden", - "Select a template to generate a PDF from this character": "Selecteer een template om een PDF te genereren van dit karakter", - "PDF generation requires the DocuDesk app to be installed and enabled": "PDF-generatie vereist dat de DocuDesk-app is geïnstalleerd en ingeschakeld", - "Configuration saved": "Configuratie opgeslagen", + "Character": "Karakter", + "Character Card": "Personagekaart", + "Character Name": "Naam van het personage", + "Characters": "Karakters", + "Characters are the heart of your world. Open Characters from the menu to get started.": "Personages vormen de kern van je wereld. Open Personages in het menu om te beginnen.", + "Characters in this world": "Personages in deze wereld", + "Characters played": "Gespeelde personages", + "Characters with this skill": "Personages met deze vaardigheid", + "Check in": "Inchecken", + "Check-in": "Inchecken", + "Checked In At": "Ingecheckt op", + "Checked In By": "Ingecheckt door", + "Checked in": "Ingecheckt", + "Click Characters in the menu": "Klik op Personages in het menu", + "Click Events in the menu": "Klik op Evenementen in het menu", + "Click New and save a character": "Klik op Nieuw en sla een personage op", + "Click New and save an event": "Klik op Nieuw en sla een evenement op", + "Condition": "Conditie", + "Condition Name": "Naam van de conditie", + "Conditions": "Condities", + "Conditions granting this effect": "Condities die dit effect verlenen", + "Configuration": "Configuratie", "Configuration re-imported successfully": "Configuratie succesvol opnieuw geïmporteerd", - "Re-import configuration": "Configuratie opnieuw importeren", - "Game setup": "Spelinstelling", - "Advanced settings": "Geavanceerde instellingen", + "Configuration saved": "Configuratie opgeslagen", + "Configure": "Configureren", "Configure OpenRegister data source to enable this widget": "Configureer OpenRegister-gegevensbron om deze widget in te schakelen", - "Loading skill data...": "Skillgegevens laden...", - "Retry": "Opnieuw proberen", - "No skill data available": "Geen skillgegevens beschikbaar", - "characters": "karakters", - "Other": "Overig", - "Failed to load skill data": "Laden van skillgegevens mislukt", - "Data storage": "Gegevensopslag", "Configure where to store your LARP data": "Configureer waar uw LARP-gegevens worden opgeslagen", - "Open Register is not installed. Some features might be unavailable.": "Open Register is niet geïnstalleerd. Sommige functies zijn mogelijk niet beschikbaar.", - "Source": "Bron", - "Register": "Register", - "Schema": "Schema", - "Internal": "Intern", - "Open Register": "Open Register", - "Yes": "Ja", - "No": "Nee", - "Create": "Aanmaken", - "No characters yet": "Nog geen karakters", - "No events yet": "Nog geen evenementen", - "View all ({count})": "Alles bekijken ({count})", - "Recent characters": "Recente karakters", - "Recent events": "Recente evenementen", - "Skill usage by characters": "Skillgebruik per karakter", - "Refresh dashboard": "Dashboard vernieuwen", - "Larpinq settings": "Larpinq-instellingen", "Configure your Larpinq installation": "Configureer uw Larpinq-installatie", - "Version information": "Versie-informatie", - "Information about the current Larpinq installation": "Informatie over de huidige Larpinq-installatie", - "Support": "Ondersteuning", - "For support, contact us at": "Voor ondersteuning, neem contact met ons op via", - "For a Service Level Agreement (SLA), contact": "Voor een Service Level Agreement (SLA), neem contact op met", - "Importing...": "Importeren...", - "Re-import failed": "Opnieuw importeren mislukt", - "Configuration": "Configuratie", - "OpenRegister is not configured. Some features may be limited.": "OpenRegister is niet geconfigureerd. Sommige functies zijn mogelijk beperkt.", - "Configure": "Configureren", - "Failed to save. Please try again.": "Opslaan mislukt. Probeer het opnieuw.", - "Failed to delete.": "Verwijderen mislukt.", - "Background": "Achtergrond", - "Save all": "Alles opslaan", - "Unnamed character": "Naamloos karakter", - "Unnamed event": "Naamloos evenement", - "Welcome to Larpinq!": "Welkom bij Larpinq!", "Configure your Larpinq settings here.": "Configureer hier uw Larpinq-instellingen.", + "Contact card": "Contactkaart", + "Contact email address": "E-mailadres voor contact", + "Copper": "Koper", + "Copper Pieces": "Koperstukken", + "Create": "Aanmaken", + "Create the Larpinq register and schemas in OpenRegister: the data store for characters, players, abilities, skills, items, conditions, effects, events and settings. This normally runs automatically on install; run it here if OpenRegister was enabled after Larpinq, or to repair a partial install. It is safe to run more than once.": "Maak het Larpinq-register en de schema's aan in OpenRegister: de gegevensopslag voor personages, spelers, eigenschappen, vaardigheden, voorwerpen, condities, effecten, evenementen en instellingen. Dit gebeurt normaal automatisch bij installatie; voer het hier uit als OpenRegister na Larpinq is ingeschakeld, of om een halve installatie te herstellen. Je kunt dit veilig meerdere keren uitvoeren.", + "Create your first event. Name it and set a start date, then save. Your characters can join it from here.": "Maak je eerste evenement aan. Geef het een naam en een startdatum en sla op. Je personages kunnen zich hier aanmelden.", + "Cumulative": "Cumulatief", + "Currently affecting": "Momenteel van invloed op", + "Dashboard": "Dashboard", + "Data storage": "Gegevensopslag", + "Delete": "Verwijderen", + "Demo data (optional)": "Demodata (optioneel)", + "Description": "Omschrijving", + "Direction": "Richting", + "Documentation": "Documentatie", + "Download PDF": "PDF downloaden", + "Edit": "Bewerken", + "Effect": "Effect", + "Effect Name": "Naam van het effect", + "Effects": "Effecten", + "Effects & prerequisites": "Effecten en vereisten", + "Effects applied after event": "Effecten toegepast na het evenement", + "Effects modifying this ability": "Effecten die deze eigenschap wijzigen", + "End Date": "Einddatum", + "End date": "Einddatum", + "Event": "Evenement", + "Event & character": "Evenement en personage", + "Event Name": "Naam van het evenement", + "Event description": "Beschrijving van het evenement", + "Event end date and time": "Einddatum en -tijd van het evenement", + "Event location": "Locatie van het evenement", + "Event name": "Naam van het evenement", + "Event pack": "Evenementpakket", + "Event start date and time": "Startdatum en -tijd van het evenement", + "Events": "Evenementen", + "Events are the game sessions where your world comes alive. Open Events from the menu.": "Evenementen zijn de speelsessies waarin je wereld tot leven komt. Open Evenementen in het menu.", + "Events in this world": "Evenementen in deze wereld", + "Failed to delete.": "Verwijderen mislukt.", + "Failed to load skill data": "Laden van skillgegevens mislukt", "Failed to save settings": "Opslaan van instellingen mislukt", + "Failed to save. Please try again.": "Opslaan mislukt. Probeer het opnieuw.", + "Faith": "Geloof", + "Features & roadmap": "Functies en roadmap", + "Flow": "Flow", + "Flows": "Flows", + "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows zijn wat er gebeurt zonder dat iemand klikt: een herinnering voordat een termijn verstrijkt, een bevestiging die bij indiening wordt verstuurd. Hier leest en bewerkt u ze. U hoeft nu niets te bouwen.", + "For a Service Level Agreement (SLA), contact": "Voor een Service Level Agreement (SLA), neem contact op met", + "For support, contact us at": "Voor ondersteuning, neem contact met ons op via", + "Full name of the player": "Volledige naam van de speler", + "Game Master Notes (Private)": "Notities van de spelleider (privé)", + "Game Master Notes (Public)": "Notities van de spelleider (openbaar)", + "Game Settings": "Spelinstellingen", + "Game setup": "Spelinstelling", + "Game state & notes": "Spelstatus en notities", "General": "Algemeen", + "Getting started": "Aan de slag", + "Gold": "Goud", + "Gold Pieces": "Goudstukken", + "Gold pieces": "Goudstukken", + "Grants effects": "Verleent effecten", + "Held by": "In bezit van", + "History": "Geschiedenis", + "Identity": "Identiteit", + "Importing...": "Importeren...", + "Information about the current Larpinq installation": "Informatie over de huidige Larpinq-installatie", + "Internal": "Intern", + "Item": "Item", + "Item Name": "Naam van het voorwerp", + "Items": "Items", + "Items and Money": "Voorwerpen en geld", + "Items granting this effect": "Voorwerpen die dit effect verlenen", + "Larpinq": "Larpinq", "Larpinq Settings": "Larpinq-instellingen", - "Save All": "Alles opslaan", - "Settings saved successfully": "Instellingen succesvol opgeslagen", - "Version Information": "Versie-informatie", - "Check-in": "Inchecken", - "Attendance": "Aanwezigheid", - "Check in": "Inchecken", - "No-show": "Niet verschenen", - "Registered": "Ingeschreven", - "Checked in": "Ingecheckt", - "No confirmed participants for this event yet.": "Nog geen bevestigde deelnemers voor dit evenement.", - "Attendance tracking is unavailable — showing the participant list read-only.": "Aanwezigheidsregistratie is niet beschikbaar — de deelnemerslijst wordt alleen-lezen getoond.", - "Skill tree": "Vaardigheidsboom", - "No character (uncoloured)": "Geen personage (ongekleurd)", - "All worlds": "Alle werelden", - "Owned": "In bezit", - "Available": "Beschikbaar", + "Larpinq settings": "Larpinq-instellingen", + "Let's take a quick spin through your world. We'll create a character and an event together so you can see how the pieces fit, and you'll add each record yourself.": "Laten we snel door je wereld lopen. We maken samen een personage en een evenement aan zodat je ziet hoe alles in elkaar grijpt, en jij legt elk record zelf vast.", + "Load an example LARP with characters, skills, items and events, so lists, character sheets and the event calendar show a working product right away. Optional, and safe to run more than once. Skip this on a production install.": "Laad een voorbeeld-LARP met personages, vaardigheden, items en evenementen, zodat lijsten, personagebladen en de evenementenkalender meteen een werkend product tonen. Optioneel en veilig om vaker uit te voeren. Sla dit over bij een productie-installatie.", + "Loading skill data...": "Skillgegevens laden...", + "Loading...": "Laden...", + "Location": "Locatie", "Locked": "Vergrendeld", - "Unknown": "Onbekend", - "No skills to show": "Geen skills om te tonen", - "No skills exist yet for the selected world.": "Er bestaan nog geen skills voor de geselecteerde wereld.", - "Requires: {list}": "Vereist: {list}", - "No prerequisites": "Geen vereisten", - "Required skills": "Vereiste skills", - "Required abilities": "Vereiste vaardigheden", - "(score ≥ {n})": "(score ≥ {n})", - "Required conditions": "Vereiste condities", - "Required effects": "Vereiste effecten", - "Prerequisites": "Vereisten", - "None — this is a root skill.": "Geen — dit is een basisskill.", - "Welcome to LARPing": "Welkom bij LARPing", "Manage your live-action roleplay world, with characters, players, items and events all in one place. One quick step provisions your data store, then you're ready to play.": "Beheer je live-action roleplay-wereld, met personages, spelers, voorwerpen en evenementen op één plek. Eén snelle stap richt je gegevensopslag in, daarna kun je spelen.", - "Provision your world": "Je wereld inrichten", - "Create the Larpinq register and schemas in OpenRegister: the data store for characters, players, abilities, skills, items, conditions, effects, events and settings. This normally runs automatically on install; run it here if OpenRegister was enabled after Larpinq, or to repair a partial install. It is safe to run more than once.": "Maak het Larpinq-register en de schema's aan in OpenRegister: de gegevensopslag voor personages, spelers, eigenschappen, vaardigheden, voorwerpen, condities, effecten, evenementen en instellingen. Dit gebeurt normaal automatisch bij installatie; voer het hier uit als OpenRegister na Larpinq is ingeschakeld, of om een halve installatie te herstellen. Je kunt dit veilig meerdere keren uitvoeren.", - "You're ready": "Je bent klaar", - "That's it. Your world's data store is provisioned. Jump into the Dashboard to see it at a glance, and reopen this setup or the guided tour anytime from the app's … menu.": "Dat was het. De gegevensopslag van je wereld staat klaar. Ga naar het Dashboard voor een overzicht, en open deze installatie of de rondleiding wanneer je wilt opnieuw via het …-menu van de app.", - "Getting started": "Aan de slag", - "Let's take a quick spin through your world. We'll create a character and an event together so you can see how the pieces fit, and you'll add each record yourself.": "Laten we snel door je wereld lopen. We maken samen een personage en een evenement aan zodat je ziet hoe alles in elkaar grijpt, en jij legt elk record zelf vast.", - "Characters are the heart of your world. Open Characters from the menu to get started.": "Personages vormen de kern van je wereld. Open Personages in het menu om te beginnen.", - "Click Characters in the menu": "Klik op Personages in het menu", - "Add your first character. Give them a name and a type, and save. You can flesh out abilities, skills and items later.": "Voeg je eerste personage toe. Geef het een naam en een type en sla op. Eigenschappen, vaardigheden en voorwerpen werk je later uit.", - "Click New and save a character": "Klik op Nieuw en sla een personage op", - "Events are the game sessions where your world comes alive. Open Events from the menu.": "Evenementen zijn de speelsessies waarin je wereld tot leven komt. Open Evenementen in het menu.", - "Click Events in the menu": "Klik op Evenementen in het menu", - "Create your first event. Name it and set a start date, then save. Your characters can join it from here.": "Maak je eerste evenement aan. Geef het een naam en een startdatum en sla op. Je personages kunnen zich hier aanmelden.", - "Click New and save an event": "Klik op Nieuw en sla een evenement op", - "Your world has its first character": "Je wereld heeft zijn eerste personage", - "Add more characters and events from the menu, and the Dashboard tracks them as your world grows. The documentation covers the rest.": "Voeg via het menu meer personages en evenementen toe; het Dashboard houdt ze bij terwijl je wereld groeit. De documentatie behandelt de rest.", - "Open the documentation to keep going": "Open de documentatie om verder te gaan", + "Mechanical Effect": "Speleffect", "Mechanics": "Spelmechanieken", - "XP Awards": "XP-toekenningen", - "Game Settings": "Spelinstellingen", - "Features & roadmap": "Functies en roadmap", - "Flows": "Flows", - "Starts": "Begint", - "Identity": "Identiteit", - "XP awarded": "Toegekende XP", - "Gold pieces": "Goudstukken", - "Game state & notes": "Spelstatus en notities", - "Build & world": "Build en wereld", - "XP award history": "Geschiedenis XP-toekenningen", - "XP": "XP", - "Reason": "Reden", - "Awarded": "Toegekend", + "Min score": "Minimumscore", + "Modification": "Wijziging", + "Modifier": "Modifier", + "Modifier Value": "Waarde van de aanpassing", + "Modifier value": "Modificatiewaarde", + "Modifies abilities": "Wijzigt eigenschappen", + "Name": "Naam", + "Name of the condition": "Naam van de conditie", + "Name of the effect": "Naam van het effect", + "Name of the event": "Naam van het evenement", + "Name of the item": "Naam van het voorwerp", + "Name of the skill": "Naam van de vaardigheid", + "Name of the stat": "Naam van de statistiek", + "New ability": "Nieuwe vaardigheid", + "New character": "Nieuw karakter", + "New condition": "Nieuwe conditie", + "New effect": "Nieuw effect", + "New event": "Nieuw evenement", + "New item": "Nieuw item", + "New player": "Nieuwe speler", + "New skill": "Nieuwe skill", + "Nextcloud user": "Nextcloud-gebruiker", + "No": "Nee", "No XP awarded yet.": "Nog geen XP toegekend.", - "Portrait & sheet": "Portret en spelersblad", - "History": "Geschiedenis", - "Contact card": "Contactkaart", - "Related": "Gerelateerd", - "Characters played": "Gespeelde personages", + "No XP granted yet.": "Nog geen XP verleend.", + "No character (uncoloured)": "Geen personage (ongekleurd)", + "No characters are currently affected.": "Momenteel zijn er geen personages beïnvloed.", + "No characters have learned this skill yet.": "Nog geen personages hebben deze vaardigheid geleerd.", + "No characters in this world yet.": "Nog geen personages in deze wereld.", "No characters played yet.": "Nog geen personages gespeeld.", - "Base value": "Basiswaarde", - "Effects modifying this ability": "Effecten die deze eigenschap wijzigen", - "Direction": "Richting", - "Stacks": "Stapelt", + "No characters registered yet.": "Nog geen personages aangemeld.", + "No characters yet": "Nog geen karakters", + "No conditions grant this effect yet.": "Nog geen condities verlenen dit effect.", + "No confirmed participants for this event yet.": "Nog geen bevestigde deelnemers voor dit evenement.", "No effects modify this stat yet.": "Nog geen effecten wijzigen deze waarde.", - "Skills requiring this stat": "Vaardigheden die deze waarde vereisen", - "Min score": "Minimumscore", + "No events in this world yet.": "Nog geen evenementen in deze wereld.", + "No events yet": "Nog geen evenementen", + "No items grant this effect yet.": "Nog geen voorwerpen verlenen dit effect.", + "No prerequisites": "Geen vereisten", + "No skill data available": "Geen skillgegevens beschikbaar", + "No skills exist yet for the selected world.": "Er bestaan nog geen skills voor de geselecteerde wereld.", + "No skills grant this effect yet.": "Nog geen vaardigheden verlenen dit effect.", "No skills require this stat yet.": "Nog geen vaardigheden vereisen deze waarde.", - "Effects & prerequisites": "Effecten en vereisten", - "Grants effects": "Verleent effecten", - "Requires skills": "Vereist vaardigheden", - "Requires stats": "Vereist waarden", - "Requires conditions": "Vereist condities", - "Requires effects": "Vereist effecten", - "Characters with this skill": "Personages met deze vaardigheid", - "No characters have learned this skill yet.": "Nog geen personages hebben deze vaardigheid geleerd.", - "Held by": "In bezit van", + "No skills to show": "Geen skills om te tonen", + "No-show": "Niet verschenen", "Nobody is holding this item yet.": "Niemand heeft dit voorwerp nog in bezit.", + "None — this is a root skill.": "Geen — dit is een basisskill.", + "Notes about items and money": "Notities over voorwerpen en geld", + "Notes about the player": "Notities over de speler", + "Open Flows in the menu": "Open Flows in het menu", + "Open Register": "Open Register", + "Open Register is not installed. Some features might be unavailable.": "Open Register is niet geïnstalleerd. Sommige functies zijn mogelijk niet beschikbaar.", + "Open the documentation to keep going": "Open de documentatie om verder te gaan", + "OpenRegister is not configured. Some features may be limited.": "OpenRegister is niet geconfigureerd. Sommige functies zijn mogelijk beperkt.", + "Other": "Overig", + "Overridden At": "Overschreven op", + "Overridden By": "Overschreven door", + "Override Reason": "Reden voor de overschrijving", + "Owned": "In bezit", + "Owner": "Eigenaar", + "Owner UID": "UID van de eigenaar", + "PDF generation requires the DocuDesk app to be installed and enabled": "PDF-generatie vereist dat de DocuDesk-app is geïnstalleerd en ingeschakeld", + "Participating Characters": "Deelnemende personages", + "Participating characters": "Deelnemende personages", + "Player": "Speler", + "Player Name": "Naam van de speler", + "Players": "Spelers", + "Portrait & sheet": "Portret en spelersblad", + "Post-Event Effects": "Effecten na het evenement", + "Post-event effects": "Effecten na afloop", + "Prerequisites": "Vereisten", "Props & handouts": "Attributen en handouts", - "Applied effects": "Toegepaste effecten", - "Applies effects": "Past effecten toe", - "Currently affecting": "Momenteel van invloed op", - "No characters are currently affected.": "Momenteel zijn er geen personages beïnvloed.", - "Modifier value": "Modificatiewaarde", - "Modifies abilities": "Wijzigt eigenschappen", - "Skills granting this effect": "Vaardigheden die dit effect verlenen", - "No skills grant this effect yet.": "Nog geen vaardigheden verlenen dit effect.", - "Items granting this effect": "Voorwerpen die dit effect verlenen", - "No items grant this effect yet.": "Nog geen voorwerpen verlenen dit effect.", - "Conditions granting this effect": "Condities die dit effect verlenen", - "No conditions grant this effect yet.": "Nog geen condities verlenen dit effect.", - "Attendees": "Deelnemers", - "XP granted": "Verleende XP", + "Provision your world": "Je wereld inrichten", + "Re-import configuration": "Configuratie opnieuw importeren", + "Re-import failed": "Opnieuw importeren mislukt", + "Real name of the player": "Echte naam van de speler", + "Reason": "Reden", + "Recent characters": "Recente karakters", + "Recent events": "Recente evenementen", + "Refresh dashboard": "Dashboard vernieuwen", + "Register": "Register", + "Registered": "Ingeschreven", + "Related": "Gerelateerd", + "Required Conditions": "Vereiste condities", + "Required Effects": "Vereiste effecten", + "Required Score": "Vereiste score", + "Required Skills": "Vereiste vaardigheden", + "Required Stats": "Vereiste statistieken", + "Required abilities": "Vereiste vaardigheden", + "Required conditions": "Vereiste condities", + "Required effects": "Vereiste effecten", + "Required skills": "Vereiste skills", + "Requirement Overrides": "Overschreven vereisten", + "Requires conditions": "Vereist condities", + "Requires effects": "Vereist effecten", + "Requires skills": "Vereist vaardigheden", + "Requires stats": "Vereist waarden", + "Requires: {list}": "Vereist: {list}", + "Retry": "Opnieuw proberen", + "Save": "Opslaan", + "Save All": "Alles opslaan", + "Save all": "Alles opslaan", "Schedule": "Programma", - "Post-event effects": "Effecten na afloop", - "Effects applied after event": "Effecten toegepast na het evenement", + "Schema": "Schema", + "Search": "Zoeken", + "Select a template to generate a PDF from this character": "Selecteer een template om een PDF te genereren van dit karakter", + "Setting": "Instelling", + "Setting Name": "Naam van de setting", + "Settings": "Instellingen", + "Settings saved successfully": "Instellingen succesvol opgeslagen", "Sign-up": "Aanmelding", - "Participating characters": "Deelnemende personages", - "No characters registered yet.": "Nog geen personages aangemeld.", - "XP awards": "XP-toekenningen", - "No XP granted yet.": "Nog geen XP verleend.", - "Event pack": "Evenementpakket", - "Characters in this world": "Personages in deze wereld", - "No characters in this world yet.": "Nog geen personages in deze wereld.", - "Events in this world": "Evenementen in deze wereld", - "No events in this world yet.": "Nog geen evenementen in deze wereld.", - "XP Award": "XP-toekenning", - "Award record": "Toekenningsrecord", - "Event & character": "Evenement en personage", - "Flow": "Flow", - "Demo data (optional)": "Demodata (optioneel)", - "Load an example LARP with characters, skills, items and events, so lists, character sheets and the event calendar show a working product right away. Optional, and safe to run more than once. Skip this on a production install.": "Laad een voorbeeld-LARP met personages, vaardigheden, items en evenementen, zodat lijsten, personagebladen en de evenementenkalender meteen een werkend product tonen. Optioneel en veilig om vaker uit te voeren. Sla dit over bij een productie-installatie.", + "Silver": "Zilver", + "Silver Pieces": "Zilverstukken", + "Skill": "Skill", + "Skill Name": "Naam van de vaardigheid", + "Skill tree": "Vaardigheidsboom", + "Skill usage by characters": "Skillgebruik per karakter", + "Skills": "Skills", + "Skills granting this effect": "Vaardigheden die dit effect verlenen", + "Skills requiring this stat": "Vaardigheden die deze waarde vereisen", + "Source": "Bron", + "Stacks": "Stapelt", + "Start Date": "Startdatum", + "Start date": "Startdatum", + "Starting value for all characters": "Startwaarde voor alle personages", + "Starts": "Begint", + "Stat": "Statistiek", + "Status": "Status", + "Support": "Ondersteuning", + "System Notice": "Systeemmelding", + "That's it. Your world's data store is provisioned. Jump into the Dashboard to see it at a glance, and reopen this setup or the guided tour anytime from the app's … menu.": "Dat was het. De gegevensopslag van je wereld staat klaar. Ga naar het Dashboard voor een overzicht, en open deze installatie of de rondleiding wanneer je wilt opnieuw via het …-menu van de app.", + "Type": "Type", + "Unique": "Uniek", + "Unique Artifact": "Uniek artefact", + "Unique Condition": "Unieke conditie", + "Unknown": "Onbekend", + "Unnamed character": "Naamloos karakter", + "Unnamed event": "Naamloos evenement", + "Value": "Waarde", + "Version Information": "Versie-informatie", + "Version information": "Versie-informatie", + "View all ({count})": "Alles bekijken ({count})", + "Welcome to LARPing": "Welkom bij LARPing", + "Welcome to Larpinq!": "Welkom bij Larpinq!", "Where the automation lives": "Waar de automatisering zit", - "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows zijn wat er gebeurt zonder dat iemand klikt: een herinnering voordat een termijn verstrijkt, een bevestiging die bij indiening wordt verstuurd. Hier leest en bewerkt u ze. U hoeft nu niets te bouwen.", - "Open Flows in the menu": "Open Flows in het menu" + "World": "Wereld", + "Worlds": "Werelden", + "XP": "XP", + "XP Amount": "Aantal ervaringspunten", + "XP Award": "XP-toekenning", + "XP Awards": "XP-toekenningen", + "XP award history": "Geschiedenis XP-toekenningen", + "XP awarded": "Toegekende XP", + "XP awards": "XP-toekenningen", + "XP granted": "Verleende XP", + "Yes": "Ja", + "You're ready": "Je bent klaar", + "Your world has its first character": "Je wereld heeft zijn eerste personage", + "approved": "goedgekeurd", + "characters": "karakters", + "cumulative": "cumulatief", + "negative": "negatief", + "no": "nee", + "non-cumulative": "niet-cumulatief", + "npc": "npc", + "other": "overig", + "player": "speler", + "positive": "positief", + "Reports": "Rapporten", + "Pick a report to open it.": "Kies een rapport om het te openen.", + "Open": "Open", + "In progress": "In behandeling", + "Blocked": "Geblokkeerd", + "Date": "Datum", + "Due": "Deadline", + "Assignee": "Toegewezen aan", + "Who": "Wie", + "What": "Wat", + "Minutes": "Minuten", + "Entries": "Regels", + "Most recent": "Meest recent", + "Per person": "Per persoon", + "By status": "Op status", + "By priority": "Op prioriteit", + "Character roster": "Personagelijst", + "Progression": "Progressie", + "World content": "Wereldinhoud", + "Awaiting approval": "Wacht op goedkeuring", + "Player characters": "Spelerspersonages", + "Awards": "Toekenningen", + "Experience": "Ervaring", + "Experience awarded": "Toegekende ervaring", + "Per character": "Per personage", + "By type": "Op type", + "By approval": "Op goedkeuring", + "Items carried by characters": "Voorwerpen die personages dragen", + "Conditions on characters": "Aandoeningen op personages", + "Nothing awarded yet": "Nog niets toegekend", + "Who is playing what, and what is still waiting for approval.": "Wie wat speelt, en wat nog op goedkeuring wacht.", + "Experience awarded, and who earned it.": "Toegekende ervaring, en wie die verdiend heeft.", + "How much the world holds, and what characters actually carry.": "Hoeveel de wereld bevat, en wat personages werkelijk dragen.", + "Store": "Store", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Installeer registers, schema's en flows die andere organisaties hebben gepubliceerd." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/nl.json b/l10n/nl.json index a0b41162..db378d11 100644 --- a/l10n/nl.json +++ b/l10n/nl.json @@ -1,250 +1,363 @@ { "translations": { - "Larpinq": "Larpinq", - "Dashboard": "Dashboard", - "Characters": "Karakters", - "Character": "Karakter", - "Players": "Spelers", - "Player": "Speler", + "Load example data?": "Voorbeeldgegevens laden?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Voorbeeldgegevens vullen de lijsten, detailpagina’s en dashboards, zodat je de app meteen ziet werken. Kies \"Geen\" op een productieomgeving.", + "Load the example data": "Laad de voorbeeldgegevens", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Laadt wat je koos. De gegevens zijn herkenbaar voorbeeldgegevens, je kunt dit meer dan een keer uitvoeren en je kunt ze daarna verwijderen.", + "None, I will set this up myself": "Geen, ik richt dit zelf in", + "Nothing is imported. You start with an empty app and add your own data.": "Er wordt niets geïmporteerd. Je begint met een lege app en voegt zelf gegevens toe.", + "Example data": "Voorbeeldgegevens", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Voorbeeldwaarden voor elk schema dat deze app levert, gegenereerd uit de schema’s zelf. Het laat de lijsten, detailpagina’s en dashboards werkend zien in plaats van een verhaal te vertellen. Veilig om vaker uit te voeren, en je kunt het daarna verwijderen.", + "(score ≥ {n})": "(score ≥ {n})", "Abilities": "Vaardigheden", "Ability": "Vaardigheid", - "Skills": "Skills", - "Skill": "Skill", - "Items": "Items", - "Item": "Item", - "Conditions": "Condities", - "Condition": "Conditie", - "Effects": "Effecten", - "Effect": "Effect", - "Events": "Evenementen", - "Event": "Evenement", - "Settings": "Instellingen", - "Worlds": "Werelden", - "Setting": "Instelling", - "World": "Wereld", - "Documentation": "Documentatie", - "New character": "Nieuw karakter", - "New player": "Nieuwe speler", - "New ability": "Nieuwe vaardigheid", - "New skill": "Nieuwe skill", - "New item": "Nieuw item", - "New condition": "Nieuwe conditie", - "New effect": "Nieuw effect", - "New event": "Nieuw evenement", - "Name": "Naam", - "Description": "Omschrijving", - "Type": "Type", + "Ability Name": "Naam van de eigenschap", + "Add more characters and events from the menu, and the Dashboard tracks them as your world grows. The documentation covers the rest.": "Voeg via het menu meer personages en evenementen toe; het Dashboard houdt ze bij terwijl je wereld groeit. De documentatie behandelt de rest.", + "Add your first character. Give them a name and a type, and save. You can flesh out abilities, skills and items later.": "Voeg je eerste personage toe. Geef het een naam en een type en sla op. Eigenschappen, vaardigheden en voorwerpen werk je later uit.", + "Advanced settings": "Geavanceerde instellingen", + "Affected Characters": "Betrokken personages", + "All worlds": "Alle werelden", + "Amount of copper pieces": "Aantal koperstukken", + "Amount of gold pieces": "Aantal goudstukken", + "Amount of silver pieces": "Aantal zilverstukken", + "Applied effects": "Toegepaste effecten", + "Applies effects": "Past effecten toe", "Approved": "Goedgekeurd", - "Gold": "Goud", - "Silver": "Zilver", - "Copper": "Koper", + "Are you sure you want to delete this?": "Weet u zeker dat u dit wilt verwijderen?", + "Attendance": "Aanwezigheid", + "Attendance tracking is unavailable — showing the participant list read-only.": "Aanwezigheidsregistratie is niet beschikbaar — de deelnemerslijst wordt alleen-lezen getoond.", + "Attendees": "Deelnemers", + "Automatic system notices": "Automatische systeemmeldingen", + "Available": "Beschikbaar", + "Award Reason": "Reden voor de toekenning", + "Award record": "Toekenningsrecord", + "Awarded": "Toegekend", + "Awarded At": "Toegekend op", + "Awarded By": "Toegekend door", + "Back to list": "Terug naar lijst", + "Background": "Achtergrond", + "Background Story": "Achtergrondverhaal", "Base": "Basis", - "Modifier": "Modifier", - "Modification": "Wijziging", - "Cumulative": "Cumulatief", - "Location": "Locatie", - "Start date": "Startdatum", - "End date": "Einddatum", - "Unique": "Uniek", - "Value": "Waarde", - "player": "speler", - "npc": "npc", - "other": "overig", - "no": "nee", - "approved": "goedgekeurd", - "positive": "positief", - "negative": "negatief", - "cumulative": "cumulatief", - "non-cumulative": "niet-cumulatief", - "Save": "Opslaan", + "Base Value": "Basiswaarde", + "Base value": "Basiswaarde", + "Build & world": "Build en wereld", "Cancel": "Annuleren", - "Delete": "Verwijderen", - "Edit": "Bewerken", - "Search": "Zoeken", - "Loading...": "Laden...", - "Back to list": "Terug naar lijst", - "Are you sure you want to delete this?": "Weet u zeker dat u dit wilt verwijderen?", - "Download PDF": "PDF downloaden", - "Select a template to generate a PDF from this character": "Selecteer een template om een PDF te genereren van dit karakter", - "PDF generation requires the DocuDesk app to be installed and enabled": "PDF-generatie vereist dat de DocuDesk-app is geïnstalleerd en ingeschakeld", - "Configuration saved": "Configuratie opgeslagen", + "Character": "Karakter", + "Character Card": "Personagekaart", + "Character Name": "Naam van het personage", + "Characters": "Karakters", + "Characters are the heart of your world. Open Characters from the menu to get started.": "Personages vormen de kern van je wereld. Open Personages in het menu om te beginnen.", + "Characters in this world": "Personages in deze wereld", + "Characters played": "Gespeelde personages", + "Characters with this skill": "Personages met deze vaardigheid", + "Check in": "Inchecken", + "Check-in": "Inchecken", + "Checked In At": "Ingecheckt op", + "Checked In By": "Ingecheckt door", + "Checked in": "Ingecheckt", + "Click Characters in the menu": "Klik op Personages in het menu", + "Click Events in the menu": "Klik op Evenementen in het menu", + "Click New and save a character": "Klik op Nieuw en sla een personage op", + "Click New and save an event": "Klik op Nieuw en sla een evenement op", + "Condition": "Conditie", + "Condition Name": "Naam van de conditie", + "Conditions": "Condities", + "Conditions granting this effect": "Condities die dit effect verlenen", + "Configuration": "Configuratie", "Configuration re-imported successfully": "Configuratie succesvol opnieuw geïmporteerd", - "Re-import configuration": "Configuratie opnieuw importeren", - "Game setup": "Spelinstelling", - "Advanced settings": "Geavanceerde instellingen", + "Configuration saved": "Configuratie opgeslagen", + "Configure": "Configureren", "Configure OpenRegister data source to enable this widget": "Configureer OpenRegister-gegevensbron om deze widget in te schakelen", - "Loading skill data...": "Skillgegevens laden...", - "Retry": "Opnieuw proberen", - "No skill data available": "Geen skillgegevens beschikbaar", - "characters": "karakters", - "Other": "Overig", - "Failed to load skill data": "Laden van skillgegevens mislukt", - "Data storage": "Gegevensopslag", "Configure where to store your LARP data": "Configureer waar uw LARP-gegevens worden opgeslagen", - "Open Register is not installed. Some features might be unavailable.": "Open Register is niet geïnstalleerd. Sommige functies zijn mogelijk niet beschikbaar.", - "Source": "Bron", - "Register": "Register", - "Schema": "Schema", - "Internal": "Intern", - "Open Register": "Open Register", - "Yes": "Ja", - "No": "Nee", - "Create": "Aanmaken", - "No characters yet": "Nog geen karakters", - "No events yet": "Nog geen evenementen", - "View all ({count})": "Alles bekijken ({count})", - "Recent characters": "Recente karakters", - "Recent events": "Recente evenementen", - "Skill usage by characters": "Skillgebruik per karakter", - "Refresh dashboard": "Dashboard vernieuwen", - "Larpinq settings": "Larpinq-instellingen", "Configure your Larpinq installation": "Configureer uw Larpinq-installatie", - "Version information": "Versie-informatie", - "Information about the current Larpinq installation": "Informatie over de huidige Larpinq-installatie", - "Support": "Ondersteuning", - "For support, contact us at": "Voor ondersteuning, neem contact met ons op via", - "For a Service Level Agreement (SLA), contact": "Voor een Service Level Agreement (SLA), neem contact op met", - "Importing...": "Importeren...", - "Re-import failed": "Opnieuw importeren mislukt", - "Configuration": "Configuratie", - "OpenRegister is not configured. Some features may be limited.": "OpenRegister is niet geconfigureerd. Sommige functies zijn mogelijk beperkt.", - "Configure": "Configureren", - "Failed to save. Please try again.": "Opslaan mislukt. Probeer het opnieuw.", - "Failed to delete.": "Verwijderen mislukt.", - "Background": "Achtergrond", - "Save all": "Alles opslaan", - "Unnamed character": "Naamloos karakter", - "Unnamed event": "Naamloos evenement", - "Welcome to Larpinq!": "Welkom bij Larpinq!", "Configure your Larpinq settings here.": "Configureer hier uw Larpinq-instellingen.", + "Contact card": "Contactkaart", + "Contact email address": "E-mailadres voor contact", + "Copper": "Koper", + "Copper Pieces": "Koperstukken", + "Create": "Aanmaken", + "Create the Larpinq register and schemas in OpenRegister: the data store for characters, players, abilities, skills, items, conditions, effects, events and settings. This normally runs automatically on install; run it here if OpenRegister was enabled after Larpinq, or to repair a partial install. It is safe to run more than once.": "Maak het Larpinq-register en de schema's aan in OpenRegister: de gegevensopslag voor personages, spelers, eigenschappen, vaardigheden, voorwerpen, condities, effecten, evenementen en instellingen. Dit gebeurt normaal automatisch bij installatie; voer het hier uit als OpenRegister na Larpinq is ingeschakeld, of om een halve installatie te herstellen. Je kunt dit veilig meerdere keren uitvoeren.", + "Create your first event. Name it and set a start date, then save. Your characters can join it from here.": "Maak je eerste evenement aan. Geef het een naam en een startdatum en sla op. Je personages kunnen zich hier aanmelden.", + "Cumulative": "Cumulatief", + "Currently affecting": "Momenteel van invloed op", + "Dashboard": "Dashboard", + "Data storage": "Gegevensopslag", + "Delete": "Verwijderen", + "Demo data (optional)": "Demodata (optioneel)", + "Description": "Omschrijving", + "Direction": "Richting", + "Documentation": "Documentatie", + "Download PDF": "PDF downloaden", + "Edit": "Bewerken", + "Effect": "Effect", + "Effect Name": "Naam van het effect", + "Effects": "Effecten", + "Effects & prerequisites": "Effecten en vereisten", + "Effects applied after event": "Effecten toegepast na het evenement", + "Effects modifying this ability": "Effecten die deze eigenschap wijzigen", + "End Date": "Einddatum", + "End date": "Einddatum", + "Event": "Evenement", + "Event & character": "Evenement en personage", + "Event Name": "Naam van het evenement", + "Event description": "Beschrijving van het evenement", + "Event end date and time": "Einddatum en -tijd van het evenement", + "Event location": "Locatie van het evenement", + "Event name": "Naam van het evenement", + "Event pack": "Evenementpakket", + "Event start date and time": "Startdatum en -tijd van het evenement", + "Events": "Evenementen", + "Events are the game sessions where your world comes alive. Open Events from the menu.": "Evenementen zijn de speelsessies waarin je wereld tot leven komt. Open Evenementen in het menu.", + "Events in this world": "Evenementen in deze wereld", + "Failed to delete.": "Verwijderen mislukt.", + "Failed to load skill data": "Laden van skillgegevens mislukt", "Failed to save settings": "Opslaan van instellingen mislukt", + "Failed to save. Please try again.": "Opslaan mislukt. Probeer het opnieuw.", + "Faith": "Geloof", + "Features & roadmap": "Functies en roadmap", + "Flow": "Flow", + "Flows": "Flows", + "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows zijn wat er gebeurt zonder dat iemand klikt: een herinnering voordat een termijn verstrijkt, een bevestiging die bij indiening wordt verstuurd. Hier leest en bewerkt u ze. U hoeft nu niets te bouwen.", + "For a Service Level Agreement (SLA), contact": "Voor een Service Level Agreement (SLA), neem contact op met", + "For support, contact us at": "Voor ondersteuning, neem contact met ons op via", + "Full name of the player": "Volledige naam van de speler", + "Game Master Notes (Private)": "Notities van de spelleider (privé)", + "Game Master Notes (Public)": "Notities van de spelleider (openbaar)", + "Game Settings": "Spelinstellingen", + "Game setup": "Spelinstelling", + "Game state & notes": "Spelstatus en notities", "General": "Algemeen", + "Getting started": "Aan de slag", + "Gold": "Goud", + "Gold Pieces": "Goudstukken", + "Gold pieces": "Goudstukken", + "Grants effects": "Verleent effecten", + "Held by": "In bezit van", + "History": "Geschiedenis", + "Identity": "Identiteit", + "Importing...": "Importeren...", + "Information about the current Larpinq installation": "Informatie over de huidige Larpinq-installatie", + "Internal": "Intern", + "Item": "Item", + "Item Name": "Naam van het voorwerp", + "Items": "Items", + "Items and Money": "Voorwerpen en geld", + "Items granting this effect": "Voorwerpen die dit effect verlenen", + "Larpinq": "Larpinq", "Larpinq Settings": "Larpinq-instellingen", - "Save All": "Alles opslaan", - "Settings saved successfully": "Instellingen succesvol opgeslagen", - "Version Information": "Versie-informatie", - "Check-in": "Inchecken", - "Attendance": "Aanwezigheid", - "Check in": "Inchecken", - "No-show": "Niet verschenen", - "Registered": "Ingeschreven", - "Checked in": "Ingecheckt", - "No confirmed participants for this event yet.": "Nog geen bevestigde deelnemers voor dit evenement.", - "Attendance tracking is unavailable — showing the participant list read-only.": "Aanwezigheidsregistratie is niet beschikbaar — de deelnemerslijst wordt alleen-lezen getoond.", - "Skill tree": "Vaardigheidsboom", - "No character (uncoloured)": "Geen personage (ongekleurd)", - "All worlds": "Alle werelden", - "Owned": "In bezit", - "Available": "Beschikbaar", + "Larpinq settings": "Larpinq-instellingen", + "Let's take a quick spin through your world. We'll create a character and an event together so you can see how the pieces fit, and you'll add each record yourself.": "Laten we snel door je wereld lopen. We maken samen een personage en een evenement aan zodat je ziet hoe alles in elkaar grijpt, en jij legt elk record zelf vast.", + "Load an example LARP with characters, skills, items and events, so lists, character sheets and the event calendar show a working product right away. Optional, and safe to run more than once. Skip this on a production install.": "Laad een voorbeeld-LARP met personages, vaardigheden, items en evenementen, zodat lijsten, personagebladen en de evenementenkalender meteen een werkend product tonen. Optioneel en veilig om vaker uit te voeren. Sla dit over bij een productie-installatie.", + "Loading skill data...": "Skillgegevens laden...", + "Loading...": "Laden...", + "Location": "Locatie", "Locked": "Vergrendeld", - "Unknown": "Onbekend", - "No skills to show": "Geen skills om te tonen", - "No skills exist yet for the selected world.": "Er bestaan nog geen skills voor de geselecteerde wereld.", - "Requires: {list}": "Vereist: {list}", - "No prerequisites": "Geen vereisten", - "Required skills": "Vereiste skills", - "Required abilities": "Vereiste vaardigheden", - "(score ≥ {n})": "(score ≥ {n})", - "Required conditions": "Vereiste condities", - "Required effects": "Vereiste effecten", - "Prerequisites": "Vereisten", - "None — this is a root skill.": "Geen — dit is een basisskill.", - "Welcome to LARPing": "Welkom bij LARPing", "Manage your live-action roleplay world, with characters, players, items and events all in one place. One quick step provisions your data store, then you're ready to play.": "Beheer je live-action roleplay-wereld, met personages, spelers, voorwerpen en evenementen op één plek. Eén snelle stap richt je gegevensopslag in, daarna kun je spelen.", - "Provision your world": "Je wereld inrichten", - "Create the Larpinq register and schemas in OpenRegister: the data store for characters, players, abilities, skills, items, conditions, effects, events and settings. This normally runs automatically on install; run it here if OpenRegister was enabled after Larpinq, or to repair a partial install. It is safe to run more than once.": "Maak het Larpinq-register en de schema's aan in OpenRegister: de gegevensopslag voor personages, spelers, eigenschappen, vaardigheden, voorwerpen, condities, effecten, evenementen en instellingen. Dit gebeurt normaal automatisch bij installatie; voer het hier uit als OpenRegister na Larpinq is ingeschakeld, of om een halve installatie te herstellen. Je kunt dit veilig meerdere keren uitvoeren.", - "You're ready": "Je bent klaar", - "That's it. Your world's data store is provisioned. Jump into the Dashboard to see it at a glance, and reopen this setup or the guided tour anytime from the app's … menu.": "Dat was het. De gegevensopslag van je wereld staat klaar. Ga naar het Dashboard voor een overzicht, en open deze installatie of de rondleiding wanneer je wilt opnieuw via het …-menu van de app.", - "Getting started": "Aan de slag", - "Let's take a quick spin through your world. We'll create a character and an event together so you can see how the pieces fit, and you'll add each record yourself.": "Laten we snel door je wereld lopen. We maken samen een personage en een evenement aan zodat je ziet hoe alles in elkaar grijpt, en jij legt elk record zelf vast.", - "Characters are the heart of your world. Open Characters from the menu to get started.": "Personages vormen de kern van je wereld. Open Personages in het menu om te beginnen.", - "Click Characters in the menu": "Klik op Personages in het menu", - "Add your first character. Give them a name and a type, and save. You can flesh out abilities, skills and items later.": "Voeg je eerste personage toe. Geef het een naam en een type en sla op. Eigenschappen, vaardigheden en voorwerpen werk je later uit.", - "Click New and save a character": "Klik op Nieuw en sla een personage op", - "Events are the game sessions where your world comes alive. Open Events from the menu.": "Evenementen zijn de speelsessies waarin je wereld tot leven komt. Open Evenementen in het menu.", - "Click Events in the menu": "Klik op Evenementen in het menu", - "Create your first event. Name it and set a start date, then save. Your characters can join it from here.": "Maak je eerste evenement aan. Geef het een naam en een startdatum en sla op. Je personages kunnen zich hier aanmelden.", - "Click New and save an event": "Klik op Nieuw en sla een evenement op", - "Your world has its first character": "Je wereld heeft zijn eerste personage", - "Add more characters and events from the menu, and the Dashboard tracks them as your world grows. The documentation covers the rest.": "Voeg via het menu meer personages en evenementen toe; het Dashboard houdt ze bij terwijl je wereld groeit. De documentatie behandelt de rest.", - "Open the documentation to keep going": "Open de documentatie om verder te gaan", + "Mechanical Effect": "Speleffect", "Mechanics": "Spelmechanieken", - "XP Awards": "XP-toekenningen", - "Game Settings": "Spelinstellingen", - "Features & roadmap": "Functies en roadmap", - "Flows": "Flows", - "Starts": "Begint", - "Identity": "Identiteit", - "XP awarded": "Toegekende XP", - "Gold pieces": "Goudstukken", - "Game state & notes": "Spelstatus en notities", - "Build & world": "Build en wereld", - "XP award history": "Geschiedenis XP-toekenningen", - "XP": "XP", - "Reason": "Reden", - "Awarded": "Toegekend", + "Min score": "Minimumscore", + "Modification": "Wijziging", + "Modifier": "Modifier", + "Modifier Value": "Waarde van de aanpassing", + "Modifier value": "Modificatiewaarde", + "Modifies abilities": "Wijzigt eigenschappen", + "Name": "Naam", + "Name of the condition": "Naam van de conditie", + "Name of the effect": "Naam van het effect", + "Name of the event": "Naam van het evenement", + "Name of the item": "Naam van het voorwerp", + "Name of the skill": "Naam van de vaardigheid", + "Name of the stat": "Naam van de statistiek", + "New ability": "Nieuwe vaardigheid", + "New character": "Nieuw karakter", + "New condition": "Nieuwe conditie", + "New effect": "Nieuw effect", + "New event": "Nieuw evenement", + "New item": "Nieuw item", + "New player": "Nieuwe speler", + "New skill": "Nieuwe skill", + "Nextcloud user": "Nextcloud-gebruiker", + "No": "Nee", "No XP awarded yet.": "Nog geen XP toegekend.", - "Portrait & sheet": "Portret en spelersblad", - "History": "Geschiedenis", - "Contact card": "Contactkaart", - "Related": "Gerelateerd", - "Characters played": "Gespeelde personages", + "No XP granted yet.": "Nog geen XP verleend.", + "No character (uncoloured)": "Geen personage (ongekleurd)", + "No characters are currently affected.": "Momenteel zijn er geen personages beïnvloed.", + "No characters have learned this skill yet.": "Nog geen personages hebben deze vaardigheid geleerd.", + "No characters in this world yet.": "Nog geen personages in deze wereld.", "No characters played yet.": "Nog geen personages gespeeld.", - "Base value": "Basiswaarde", - "Effects modifying this ability": "Effecten die deze eigenschap wijzigen", - "Direction": "Richting", - "Stacks": "Stapelt", + "No characters registered yet.": "Nog geen personages aangemeld.", + "No characters yet": "Nog geen karakters", + "No conditions grant this effect yet.": "Nog geen condities verlenen dit effect.", + "No confirmed participants for this event yet.": "Nog geen bevestigde deelnemers voor dit evenement.", "No effects modify this stat yet.": "Nog geen effecten wijzigen deze waarde.", - "Skills requiring this stat": "Vaardigheden die deze waarde vereisen", - "Min score": "Minimumscore", + "No events in this world yet.": "Nog geen evenementen in deze wereld.", + "No events yet": "Nog geen evenementen", + "No items grant this effect yet.": "Nog geen voorwerpen verlenen dit effect.", + "No prerequisites": "Geen vereisten", + "No skill data available": "Geen skillgegevens beschikbaar", + "No skills exist yet for the selected world.": "Er bestaan nog geen skills voor de geselecteerde wereld.", + "No skills grant this effect yet.": "Nog geen vaardigheden verlenen dit effect.", "No skills require this stat yet.": "Nog geen vaardigheden vereisen deze waarde.", - "Effects & prerequisites": "Effecten en vereisten", - "Grants effects": "Verleent effecten", - "Requires skills": "Vereist vaardigheden", - "Requires stats": "Vereist waarden", - "Requires conditions": "Vereist condities", - "Requires effects": "Vereist effecten", - "Characters with this skill": "Personages met deze vaardigheid", - "No characters have learned this skill yet.": "Nog geen personages hebben deze vaardigheid geleerd.", - "Held by": "In bezit van", + "No skills to show": "Geen skills om te tonen", + "No-show": "Niet verschenen", "Nobody is holding this item yet.": "Niemand heeft dit voorwerp nog in bezit.", + "None — this is a root skill.": "Geen — dit is een basisskill.", + "Notes about items and money": "Notities over voorwerpen en geld", + "Notes about the player": "Notities over de speler", + "Open Flows in the menu": "Open Flows in het menu", + "Open Register": "Open Register", + "Open Register is not installed. Some features might be unavailable.": "Open Register is niet geïnstalleerd. Sommige functies zijn mogelijk niet beschikbaar.", + "Open the documentation to keep going": "Open de documentatie om verder te gaan", + "OpenRegister is not configured. Some features may be limited.": "OpenRegister is niet geconfigureerd. Sommige functies zijn mogelijk beperkt.", + "Other": "Overig", + "Overridden At": "Overschreven op", + "Overridden By": "Overschreven door", + "Override Reason": "Reden voor de overschrijving", + "Owned": "In bezit", + "Owner": "Eigenaar", + "Owner UID": "UID van de eigenaar", + "PDF generation requires the DocuDesk app to be installed and enabled": "PDF-generatie vereist dat de DocuDesk-app is geïnstalleerd en ingeschakeld", + "Participating Characters": "Deelnemende personages", + "Participating characters": "Deelnemende personages", + "Player": "Speler", + "Player Name": "Naam van de speler", + "Players": "Spelers", + "Portrait & sheet": "Portret en spelersblad", + "Post-Event Effects": "Effecten na het evenement", + "Post-event effects": "Effecten na afloop", + "Prerequisites": "Vereisten", "Props & handouts": "Attributen en handouts", - "Applied effects": "Toegepaste effecten", - "Applies effects": "Past effecten toe", - "Currently affecting": "Momenteel van invloed op", - "No characters are currently affected.": "Momenteel zijn er geen personages beïnvloed.", - "Modifier value": "Modificatiewaarde", - "Modifies abilities": "Wijzigt eigenschappen", - "Skills granting this effect": "Vaardigheden die dit effect verlenen", - "No skills grant this effect yet.": "Nog geen vaardigheden verlenen dit effect.", - "Items granting this effect": "Voorwerpen die dit effect verlenen", - "No items grant this effect yet.": "Nog geen voorwerpen verlenen dit effect.", - "Conditions granting this effect": "Condities die dit effect verlenen", - "No conditions grant this effect yet.": "Nog geen condities verlenen dit effect.", - "Attendees": "Deelnemers", - "XP granted": "Verleende XP", + "Provision your world": "Je wereld inrichten", + "Re-import configuration": "Configuratie opnieuw importeren", + "Re-import failed": "Opnieuw importeren mislukt", + "Real name of the player": "Echte naam van de speler", + "Reason": "Reden", + "Recent characters": "Recente karakters", + "Recent events": "Recente evenementen", + "Refresh dashboard": "Dashboard vernieuwen", + "Register": "Register", + "Registered": "Ingeschreven", + "Related": "Gerelateerd", + "Required Conditions": "Vereiste condities", + "Required Effects": "Vereiste effecten", + "Required Score": "Vereiste score", + "Required Skills": "Vereiste vaardigheden", + "Required Stats": "Vereiste statistieken", + "Required abilities": "Vereiste vaardigheden", + "Required conditions": "Vereiste condities", + "Required effects": "Vereiste effecten", + "Required skills": "Vereiste skills", + "Requirement Overrides": "Overschreven vereisten", + "Requires conditions": "Vereist condities", + "Requires effects": "Vereist effecten", + "Requires skills": "Vereist vaardigheden", + "Requires stats": "Vereist waarden", + "Requires: {list}": "Vereist: {list}", + "Retry": "Opnieuw proberen", + "Save": "Opslaan", + "Save All": "Alles opslaan", + "Save all": "Alles opslaan", "Schedule": "Programma", - "Post-event effects": "Effecten na afloop", - "Effects applied after event": "Effecten toegepast na het evenement", + "Schema": "Schema", + "Search": "Zoeken", + "Select a template to generate a PDF from this character": "Selecteer een template om een PDF te genereren van dit karakter", + "Setting": "Instelling", + "Setting Name": "Naam van de setting", + "Settings": "Instellingen", + "Settings saved successfully": "Instellingen succesvol opgeslagen", "Sign-up": "Aanmelding", - "Participating characters": "Deelnemende personages", - "No characters registered yet.": "Nog geen personages aangemeld.", - "XP awards": "XP-toekenningen", - "No XP granted yet.": "Nog geen XP verleend.", - "Event pack": "Evenementpakket", - "Characters in this world": "Personages in deze wereld", - "No characters in this world yet.": "Nog geen personages in deze wereld.", - "Events in this world": "Evenementen in deze wereld", - "No events in this world yet.": "Nog geen evenementen in deze wereld.", - "XP Award": "XP-toekenning", - "Award record": "Toekenningsrecord", - "Event & character": "Evenement en personage", - "Flow": "Flow", - "Demo data (optional)": "Demodata (optioneel)", - "Load an example LARP with characters, skills, items and events, so lists, character sheets and the event calendar show a working product right away. Optional, and safe to run more than once. Skip this on a production install.": "Laad een voorbeeld-LARP met personages, vaardigheden, items en evenementen, zodat lijsten, personagebladen en de evenementenkalender meteen een werkend product tonen. Optioneel en veilig om vaker uit te voeren. Sla dit over bij een productie-installatie.", + "Silver": "Zilver", + "Silver Pieces": "Zilverstukken", + "Skill": "Skill", + "Skill Name": "Naam van de vaardigheid", + "Skill tree": "Vaardigheidsboom", + "Skill usage by characters": "Skillgebruik per karakter", + "Skills": "Skills", + "Skills granting this effect": "Vaardigheden die dit effect verlenen", + "Skills requiring this stat": "Vaardigheden die deze waarde vereisen", + "Source": "Bron", + "Stacks": "Stapelt", + "Start Date": "Startdatum", + "Start date": "Startdatum", + "Starting value for all characters": "Startwaarde voor alle personages", + "Starts": "Begint", + "Stat": "Statistiek", + "Status": "Status", + "Support": "Ondersteuning", + "System Notice": "Systeemmelding", + "That's it. Your world's data store is provisioned. Jump into the Dashboard to see it at a glance, and reopen this setup or the guided tour anytime from the app's … menu.": "Dat was het. De gegevensopslag van je wereld staat klaar. Ga naar het Dashboard voor een overzicht, en open deze installatie of de rondleiding wanneer je wilt opnieuw via het …-menu van de app.", + "Type": "Type", + "Unique": "Uniek", + "Unique Artifact": "Uniek artefact", + "Unique Condition": "Unieke conditie", + "Unknown": "Onbekend", + "Unnamed character": "Naamloos karakter", + "Unnamed event": "Naamloos evenement", + "Value": "Waarde", + "Version Information": "Versie-informatie", + "Version information": "Versie-informatie", + "View all ({count})": "Alles bekijken ({count})", + "Welcome to LARPing": "Welkom bij LARPing", + "Welcome to Larpinq!": "Welkom bij Larpinq!", "Where the automation lives": "Waar de automatisering zit", - "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows zijn wat er gebeurt zonder dat iemand klikt: een herinnering voordat een termijn verstrijkt, een bevestiging die bij indiening wordt verstuurd. Hier leest en bewerkt u ze. U hoeft nu niets te bouwen.", - "Open Flows in the menu": "Open Flows in het menu" + "World": "Wereld", + "Worlds": "Werelden", + "XP": "XP", + "XP Amount": "Aantal ervaringspunten", + "XP Award": "XP-toekenning", + "XP Awards": "XP-toekenningen", + "XP award history": "Geschiedenis XP-toekenningen", + "XP awarded": "Toegekende XP", + "XP awards": "XP-toekenningen", + "XP granted": "Verleende XP", + "Yes": "Ja", + "You're ready": "Je bent klaar", + "Your world has its first character": "Je wereld heeft zijn eerste personage", + "approved": "goedgekeurd", + "characters": "karakters", + "cumulative": "cumulatief", + "negative": "negatief", + "no": "nee", + "non-cumulative": "niet-cumulatief", + "npc": "npc", + "other": "overig", + "player": "speler", + "positive": "positief", + "Reports": "Rapporten", + "Pick a report to open it.": "Kies een rapport om het te openen.", + "Open": "Open", + "In progress": "In behandeling", + "Blocked": "Geblokkeerd", + "Date": "Datum", + "Due": "Deadline", + "Assignee": "Toegewezen aan", + "Who": "Wie", + "What": "Wat", + "Minutes": "Minuten", + "Entries": "Regels", + "Most recent": "Meest recent", + "Per person": "Per persoon", + "By status": "Op status", + "By priority": "Op prioriteit", + "Character roster": "Personagelijst", + "Progression": "Progressie", + "World content": "Wereldinhoud", + "Awaiting approval": "Wacht op goedkeuring", + "Player characters": "Spelerspersonages", + "Awards": "Toekenningen", + "Experience": "Ervaring", + "Experience awarded": "Toegekende ervaring", + "Per character": "Per personage", + "By type": "Op type", + "By approval": "Op goedkeuring", + "Items carried by characters": "Voorwerpen die personages dragen", + "Conditions on characters": "Aandoeningen op personages", + "Nothing awarded yet": "Nog niets toegekend", + "Who is playing what, and what is still waiting for approval.": "Wie wat speelt, en wat nog op goedkeuring wacht.", + "Experience awarded, and who earned it.": "Toegekende ervaring, en wie die verdiend heeft.", + "How much the world holds, and what characters actually carry.": "Hoeveel de wereld bevat, en wat personages werkelijk dragen.", + "Store": "Store", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Installeer registers, schema's en flows die andere organisaties hebben gepubliceerd." }, "plurals": {}, "pluralForm": "nplurals=2; plural=(n != 1);" diff --git a/l10n/pl.js b/l10n/pl.js index cd49ebb5..80bb789a 100644 --- a/l10n/pl.js +++ b/l10n/pl.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Wczytać dane przykładowe?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Dane przykładowe wypełniają listy, strony szczegółów i pulpity, więc od razu zobaczysz działającą aplikację. Na instalacji produkcyjnej wybierz \"Brak\".", + "Load the example data": "Wczytaj dane przykładowe", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Wczytuje to, co wybrano. To wyraźnie dane przykładowe, operację można bezpiecznie powtórzyć, a potem je usunąć.", + "None, I will set this up myself": "Brak, skonfiguruję to sam", + "Nothing is imported. You start with an empty app and add your own data.": "Nic nie jest importowane. Zaczynasz od pustej aplikacji i dodajesz własne dane.", + "Example data": "Dane przykładowe", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Wartości przykładowe dla każdego schematu dostarczanego przez tę aplikację, wygenerowane z samych schematów. Pokazują listy, strony szczegółów i pulpity w działaniu, zamiast opowiadać historię. Można bezpiecznie powtórzyć i usunąć później.", "Larpinq": "Larpinq", "Dashboard": "Pulpit", "Characters": "Postacie", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Brak — to jest umiejętność podstawowa.", "Where the automation lives": "Gdzie mieszka automatyzacja", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows to to, co dzieje się bez niczyjego kliknięcia: przypomnienie przed upływem terminu, potwierdzenie po złożeniu. Tutaj je czytasz i edytujesz — teraz nie trzeba niczego budować.", - "Open Flows in the menu": "Otwórz Flows w menu" + "Open Flows in the menu": "Otwórz Flows w menu", + "Ability Name": "Nazwa zdolności", + "Affected Characters": "Postacie, których to dotyczy", + "Amount of copper pieces": "Liczba sztuk miedzi", + "Amount of gold pieces": "Liczba sztuk złota", + "Amount of silver pieces": "Liczba sztuk srebra", + "Automatic system notices": "Automatyczne powiadomienia systemowe", + "Award Reason": "Powód przyznania", + "Awarded At": "Przyznano dnia", + "Awarded By": "Przyznał", + "Background Story": "Historia postaci", + "Base Value": "Wartość bazowa", + "Character Card": "Karta postaci", + "Character Name": "Imię postaci", + "Checked In At": "Przybycie zarejestrowano dnia", + "Checked In By": "Przybycie zarejestrował", + "Condition Name": "Nazwa stanu", + "Contact email address": "Kontaktowy adres e-mail", + "Copper Pieces": "Sztuki miedzi", + "Effect Name": "Nazwa efektu", + "End Date": "Data zakończenia", + "Event Name": "Nazwa wydarzenia", + "Event description": "Opis wydarzenia", + "Event end date and time": "Data i godzina zakończenia wydarzenia", + "Event location": "Miejsce wydarzenia", + "Event name": "Nazwa wydarzenia", + "Event start date and time": "Data i godzina rozpoczęcia wydarzenia", + "Faith": "Wiara", + "Full name of the player": "Pełne imię i nazwisko gracza", + "Game Master Notes (Private)": "Notatki mistrza gry (prywatne)", + "Game Master Notes (Public)": "Notatki mistrza gry (publiczne)", + "Gold Pieces": "Sztuki złota", + "Item Name": "Nazwa przedmiotu", + "Items and Money": "Przedmioty i pieniądze", + "Mechanical Effect": "Efekt mechaniczny", + "Modifier Value": "Wartość modyfikatora", + "Name of the condition": "Nazwa stanu", + "Name of the effect": "Nazwa efektu", + "Name of the event": "Nazwa wydarzenia", + "Name of the item": "Nazwa przedmiotu", + "Name of the skill": "Nazwa umiejętności", + "Name of the stat": "Nazwa cechy", + "Nextcloud user": "Użytkownik Nextcloud", + "Notes about items and money": "Notatki o przedmiotach i pieniądzach", + "Notes about the player": "Notatki o graczu", + "Overridden At": "Odstępstwo przyznano dnia", + "Overridden By": "Odstępstwo przyznał", + "Override Reason": "Powód odstępstwa", + "Owner": "Właściciel", + "Owner UID": "UID właściciela", + "Participating Characters": "Uczestniczące postacie", + "Player Name": "Imię gracza", + "Post-Event Effects": "Efekty po wydarzeniu", + "Real name of the player": "Prawdziwe imię i nazwisko gracza", + "Required Conditions": "Wymagane stany", + "Required Effects": "Wymagane efekty", + "Required Score": "Wymagana wartość", + "Required Skills": "Wymagane umiejętności", + "Required Stats": "Wymagane cechy", + "Requirement Overrides": "Odstępstwa od wymagań", + "Setting Name": "Nazwa świata gry", + "Silver Pieces": "Sztuki srebra", + "Skill Name": "Nazwa umiejętności", + "Start Date": "Data rozpoczęcia", + "Starting value for all characters": "Wartość początkowa dla wszystkich postaci", + "Stat": "Cecha", + "Status": "Status", + "System Notice": "Powiadomienie systemowe", + "Unique Artifact": "Unikalny artefakt", + "Unique Condition": "Unikalny stan", + "XP Amount": "Liczba punktów doświadczenia", + "XP Award": "Przyznanie punktów doświadczenia", + "Reports": "Raporty", + "Pick a report to open it.": "Wybierz raport, aby go otworzyć.", + "Open": "Otwarte", + "In progress": "W toku", + "Blocked": "Zablokowane", + "Date": "Data", + "Due": "Termin", + "Assignee": "Przypisane do", + "Who": "Kto", + "What": "Co", + "Minutes": "Minuty", + "Entries": "Wpisy", + "Most recent": "Najnowsze", + "Per person": "Na osobę", + "By status": "Według statusu", + "By priority": "Według priorytetu", + "Character roster": "Lista postaci", + "Progression": "Postęp", + "World content": "Zawartość świata", + "Awaiting approval": "Oczekuje na zatwierdzenie", + "Player characters": "Postacie graczy", + "Awards": "Przyznania", + "Experience": "Doświadczenie", + "Experience awarded": "Przyznane doświadczenie", + "Per character": "Na postać", + "By type": "Według typu", + "By approval": "Według zatwierdzenia", + "Items carried by characters": "Przedmioty niesione przez postacie", + "Conditions on characters": "Stany postaci", + "Nothing awarded yet": "Nic jeszcze nie przyznano", + "Who is playing what, and what is still waiting for approval.": "Kto w co gra i co wciąż czeka na zatwierdzenie.", + "Experience awarded, and who earned it.": "Przyznane doświadczenie i kto na nie zapracował.", + "How much the world holds, and what characters actually carry.": "Ile zawiera świat i co postacie naprawdę noszą.", + "Store": "Sklep", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Zainstaluj rejestry, schematy i przepływy opublikowane przez inne organizacje." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/pl.json b/l10n/pl.json index 90d02a3c..172b05be 100644 --- a/l10n/pl.json +++ b/l10n/pl.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Wczytać dane przykładowe?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Dane przykładowe wypełniają listy, strony szczegółów i pulpity, więc od razu zobaczysz działającą aplikację. Na instalacji produkcyjnej wybierz \"Brak\".", + "Load the example data": "Wczytaj dane przykładowe", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Wczytuje to, co wybrano. To wyraźnie dane przykładowe, operację można bezpiecznie powtórzyć, a potem je usunąć.", + "None, I will set this up myself": "Brak, skonfiguruję to sam", + "Nothing is imported. You start with an empty app and add your own data.": "Nic nie jest importowane. Zaczynasz od pustej aplikacji i dodajesz własne dane.", + "Example data": "Dane przykładowe", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Wartości przykładowe dla każdego schematu dostarczanego przez tę aplikację, wygenerowane z samych schematów. Pokazują listy, strony szczegółów i pulpity w działaniu, zamiast opowiadać historię. Można bezpiecznie powtórzyć i usunąć później.", "Larpinq": "Larpinq", "Dashboard": "Pulpit", "Characters": "Postacie", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Brak — to jest umiejętność podstawowa.", "Where the automation lives": "Gdzie mieszka automatyzacja", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows to to, co dzieje się bez niczyjego kliknięcia: przypomnienie przed upływem terminu, potwierdzenie po złożeniu. Tutaj je czytasz i edytujesz — teraz nie trzeba niczego budować.", - "Open Flows in the menu": "Otwórz Flows w menu" + "Open Flows in the menu": "Otwórz Flows w menu", + "Ability Name": "Nazwa zdolności", + "Affected Characters": "Postacie, których to dotyczy", + "Amount of copper pieces": "Liczba sztuk miedzi", + "Amount of gold pieces": "Liczba sztuk złota", + "Amount of silver pieces": "Liczba sztuk srebra", + "Automatic system notices": "Automatyczne powiadomienia systemowe", + "Award Reason": "Powód przyznania", + "Awarded At": "Przyznano dnia", + "Awarded By": "Przyznał", + "Background Story": "Historia postaci", + "Base Value": "Wartość bazowa", + "Character Card": "Karta postaci", + "Character Name": "Imię postaci", + "Checked In At": "Przybycie zarejestrowano dnia", + "Checked In By": "Przybycie zarejestrował", + "Condition Name": "Nazwa stanu", + "Contact email address": "Kontaktowy adres e-mail", + "Copper Pieces": "Sztuki miedzi", + "Effect Name": "Nazwa efektu", + "End Date": "Data zakończenia", + "Event Name": "Nazwa wydarzenia", + "Event description": "Opis wydarzenia", + "Event end date and time": "Data i godzina zakończenia wydarzenia", + "Event location": "Miejsce wydarzenia", + "Event name": "Nazwa wydarzenia", + "Event start date and time": "Data i godzina rozpoczęcia wydarzenia", + "Faith": "Wiara", + "Full name of the player": "Pełne imię i nazwisko gracza", + "Game Master Notes (Private)": "Notatki mistrza gry (prywatne)", + "Game Master Notes (Public)": "Notatki mistrza gry (publiczne)", + "Gold Pieces": "Sztuki złota", + "Item Name": "Nazwa przedmiotu", + "Items and Money": "Przedmioty i pieniądze", + "Mechanical Effect": "Efekt mechaniczny", + "Modifier Value": "Wartość modyfikatora", + "Name of the condition": "Nazwa stanu", + "Name of the effect": "Nazwa efektu", + "Name of the event": "Nazwa wydarzenia", + "Name of the item": "Nazwa przedmiotu", + "Name of the skill": "Nazwa umiejętności", + "Name of the stat": "Nazwa cechy", + "Nextcloud user": "Użytkownik Nextcloud", + "Notes about items and money": "Notatki o przedmiotach i pieniądzach", + "Notes about the player": "Notatki o graczu", + "Overridden At": "Odstępstwo przyznano dnia", + "Overridden By": "Odstępstwo przyznał", + "Override Reason": "Powód odstępstwa", + "Owner": "Właściciel", + "Owner UID": "UID właściciela", + "Participating Characters": "Uczestniczące postacie", + "Player Name": "Imię gracza", + "Post-Event Effects": "Efekty po wydarzeniu", + "Real name of the player": "Prawdziwe imię i nazwisko gracza", + "Required Conditions": "Wymagane stany", + "Required Effects": "Wymagane efekty", + "Required Score": "Wymagana wartość", + "Required Skills": "Wymagane umiejętności", + "Required Stats": "Wymagane cechy", + "Requirement Overrides": "Odstępstwa od wymagań", + "Setting Name": "Nazwa świata gry", + "Silver Pieces": "Sztuki srebra", + "Skill Name": "Nazwa umiejętności", + "Start Date": "Data rozpoczęcia", + "Starting value for all characters": "Wartość początkowa dla wszystkich postaci", + "Stat": "Cecha", + "Status": "Status", + "System Notice": "Powiadomienie systemowe", + "Unique Artifact": "Unikalny artefakt", + "Unique Condition": "Unikalny stan", + "XP Amount": "Liczba punktów doświadczenia", + "XP Award": "Przyznanie punktów doświadczenia", + "Reports": "Raporty", + "Pick a report to open it.": "Wybierz raport, aby go otworzyć.", + "Open": "Otwarte", + "In progress": "W toku", + "Blocked": "Zablokowane", + "Date": "Data", + "Due": "Termin", + "Assignee": "Przypisane do", + "Who": "Kto", + "What": "Co", + "Minutes": "Minuty", + "Entries": "Wpisy", + "Most recent": "Najnowsze", + "Per person": "Na osobę", + "By status": "Według statusu", + "By priority": "Według priorytetu", + "Character roster": "Lista postaci", + "Progression": "Postęp", + "World content": "Zawartość świata", + "Awaiting approval": "Oczekuje na zatwierdzenie", + "Player characters": "Postacie graczy", + "Awards": "Przyznania", + "Experience": "Doświadczenie", + "Experience awarded": "Przyznane doświadczenie", + "Per character": "Na postać", + "By type": "Według typu", + "By approval": "Według zatwierdzenia", + "Items carried by characters": "Przedmioty niesione przez postacie", + "Conditions on characters": "Stany postaci", + "Nothing awarded yet": "Nic jeszcze nie przyznano", + "Who is playing what, and what is still waiting for approval.": "Kto w co gra i co wciąż czeka na zatwierdzenie.", + "Experience awarded, and who earned it.": "Przyznane doświadczenie i kto na nie zapracował.", + "How much the world holds, and what characters actually carry.": "Ile zawiera świat i co postacie naprawdę noszą.", + "Store": "Sklep", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Zainstaluj rejestry, schematy i przepływy opublikowane przez inne organizacje." }, "plurals": {} } diff --git a/l10n/pt.js b/l10n/pt.js index 6fd3737b..5ae097e3 100644 --- a/l10n/pt.js +++ b/l10n/pt.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Carregar dados de exemplo?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Os dados de exemplo preenchem as listas, as páginas de detalhe e os painéis, para ver a aplicação a funcionar de imediato. Escolha \"Nenhum\" numa instalação de produção.", + "Load the example data": "Carregar os dados de exemplo", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Carrega o que escolheu. São claramente dados de exemplo, a operação pode repetir-se sem risco e pode apagá-los depois.", + "None, I will set this up myself": "Nenhum, eu próprio configuro isto", + "Nothing is imported. You start with an empty app and add your own data.": "Nada é importado. Começa com uma aplicação vazia e acrescenta os seus próprios dados.", + "Example data": "Dados de exemplo", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Valores de exemplo para cada esquema que esta aplicação fornece, gerados a partir dos próprios esquemas. Mostram as listas, as páginas de detalhe e os painéis a funcionar em vez de contarem uma história. Repetível sem risco e apagável depois.", "Larpinq": "Larpinq", "Dashboard": "Painel", "Characters": "Personagens", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Nenhum — esta é uma habilidade de base.", "Where the automation lives": "Onde vive a automação", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Os Flows são o que acontece sem ninguém clicar: um lembrete antes de um prazo terminar, uma confirmação enviada na submissão. É aqui que os lê e edita — não há nada para construir agora.", - "Open Flows in the menu": "Abra Flows no menu" + "Open Flows in the menu": "Abra Flows no menu", + "Ability Name": "Nome da aptidão", + "Affected Characters": "Personagens afetadas", + "Amount of copper pieces": "Quantidade de moedas de cobre", + "Amount of gold pieces": "Quantidade de moedas de ouro", + "Amount of silver pieces": "Quantidade de moedas de prata", + "Automatic system notices": "Avisos automáticos do sistema", + "Award Reason": "Motivo da atribuição", + "Awarded At": "Atribuído em", + "Awarded By": "Atribuído por", + "Background Story": "História pessoal", + "Base Value": "Valor base", + "Character Card": "Ficha da personagem", + "Character Name": "Nome da personagem", + "Checked In At": "Entrada registada em", + "Checked In By": "Entrada registada por", + "Condition Name": "Nome da condição", + "Contact email address": "Endereço de e-mail de contacto", + "Copper Pieces": "Moedas de cobre", + "Effect Name": "Nome do efeito", + "End Date": "Data de fim", + "Event Name": "Nome do evento", + "Event description": "Descrição do evento", + "Event end date and time": "Data e hora de fim do evento", + "Event location": "Localização do evento", + "Event name": "Nome do evento", + "Event start date and time": "Data e hora de início do evento", + "Faith": "Fé", + "Full name of the player": "Nome completo do jogador", + "Game Master Notes (Private)": "Notas do mestre de jogo (privadas)", + "Game Master Notes (Public)": "Notas do mestre de jogo (públicas)", + "Gold Pieces": "Moedas de ouro", + "Item Name": "Nome do item", + "Items and Money": "Itens e dinheiro", + "Mechanical Effect": "Efeito de jogo", + "Modifier Value": "Valor do modificador", + "Name of the condition": "Nome da condição", + "Name of the effect": "Nome do efeito", + "Name of the event": "Nome do evento", + "Name of the item": "Nome do item", + "Name of the skill": "Nome da habilidade", + "Name of the stat": "Nome do atributo", + "Nextcloud user": "Utilizador do Nextcloud", + "Notes about items and money": "Notas sobre itens e dinheiro", + "Notes about the player": "Notas sobre o jogador", + "Overridden At": "Exceção concedida em", + "Overridden By": "Exceção concedida por", + "Override Reason": "Motivo da exceção", + "Owner": "Proprietário", + "Owner UID": "UID do proprietário", + "Participating Characters": "Personagens participantes", + "Player Name": "Nome do jogador", + "Post-Event Effects": "Efeitos posteriores ao evento", + "Real name of the player": "Nome real do jogador", + "Required Conditions": "Condições necessárias", + "Required Effects": "Efeitos necessários", + "Required Score": "Valor necessário", + "Required Skills": "Habilidades necessárias", + "Required Stats": "Atributos necessários", + "Requirement Overrides": "Exceções aos pré-requisitos", + "Setting Name": "Nome do cenário", + "Silver Pieces": "Moedas de prata", + "Skill Name": "Nome da habilidade", + "Start Date": "Data de início", + "Starting value for all characters": "Valor inicial para todas as personagens", + "Stat": "Atributo", + "Status": "Estado", + "System Notice": "Aviso do sistema", + "Unique Artifact": "Artefacto único", + "Unique Condition": "Condição única", + "XP Amount": "Quantidade de pontos de experiência", + "XP Award": "Atribuição de pontos de experiência", + "Reports": "Relatórios", + "Pick a report to open it.": "Escolha um relatório para o abrir.", + "Open": "Aberto", + "In progress": "Em curso", + "Blocked": "Bloqueado", + "Date": "Data", + "Due": "Prazo", + "Assignee": "Atribuído a", + "Who": "Quem", + "What": "O quê", + "Minutes": "Minutos", + "Entries": "Entradas", + "Most recent": "Mais recentes", + "Per person": "Por pessoa", + "By status": "Por estado", + "By priority": "Por prioridade", + "Character roster": "Lista de personagens", + "Progression": "Progressão", + "World content": "Conteúdo do mundo", + "Awaiting approval": "A aguardar aprovação", + "Player characters": "Personagens de jogador", + "Awards": "Atribuições", + "Experience": "Experiência", + "Experience awarded": "Experiência atribuída", + "Per character": "Por personagem", + "By type": "Por tipo", + "By approval": "Por aprovação", + "Items carried by characters": "Itens levados pelas personagens", + "Conditions on characters": "Estados nas personagens", + "Nothing awarded yet": "Ainda nada atribuído", + "Who is playing what, and what is still waiting for approval.": "Quem joga o quê, e o que ainda aguarda aprovação.", + "Experience awarded, and who earned it.": "A experiência atribuída e quem a ganhou.", + "How much the world holds, and what characters actually carry.": "Quanto o mundo contém, e o que as personagens realmente levam.", + "Store": "Loja", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Instale registos, esquemas e fluxos publicados por outras organizações." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/pt.json b/l10n/pt.json index 7139ddf5..1c9acfef 100644 --- a/l10n/pt.json +++ b/l10n/pt.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Carregar dados de exemplo?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Os dados de exemplo preenchem as listas, as páginas de detalhe e os painéis, para ver a aplicação a funcionar de imediato. Escolha \"Nenhum\" numa instalação de produção.", + "Load the example data": "Carregar os dados de exemplo", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Carrega o que escolheu. São claramente dados de exemplo, a operação pode repetir-se sem risco e pode apagá-los depois.", + "None, I will set this up myself": "Nenhum, eu próprio configuro isto", + "Nothing is imported. You start with an empty app and add your own data.": "Nada é importado. Começa com uma aplicação vazia e acrescenta os seus próprios dados.", + "Example data": "Dados de exemplo", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Valores de exemplo para cada esquema que esta aplicação fornece, gerados a partir dos próprios esquemas. Mostram as listas, as páginas de detalhe e os painéis a funcionar em vez de contarem uma história. Repetível sem risco e apagável depois.", "Larpinq": "Larpinq", "Dashboard": "Painel", "Characters": "Personagens", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Nenhum — esta é uma habilidade de base.", "Where the automation lives": "Onde vive a automação", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Os Flows são o que acontece sem ninguém clicar: um lembrete antes de um prazo terminar, uma confirmação enviada na submissão. É aqui que os lê e edita — não há nada para construir agora.", - "Open Flows in the menu": "Abra Flows no menu" + "Open Flows in the menu": "Abra Flows no menu", + "Ability Name": "Nome da aptidão", + "Affected Characters": "Personagens afetadas", + "Amount of copper pieces": "Quantidade de moedas de cobre", + "Amount of gold pieces": "Quantidade de moedas de ouro", + "Amount of silver pieces": "Quantidade de moedas de prata", + "Automatic system notices": "Avisos automáticos do sistema", + "Award Reason": "Motivo da atribuição", + "Awarded At": "Atribuído em", + "Awarded By": "Atribuído por", + "Background Story": "História pessoal", + "Base Value": "Valor base", + "Character Card": "Ficha da personagem", + "Character Name": "Nome da personagem", + "Checked In At": "Entrada registada em", + "Checked In By": "Entrada registada por", + "Condition Name": "Nome da condição", + "Contact email address": "Endereço de e-mail de contacto", + "Copper Pieces": "Moedas de cobre", + "Effect Name": "Nome do efeito", + "End Date": "Data de fim", + "Event Name": "Nome do evento", + "Event description": "Descrição do evento", + "Event end date and time": "Data e hora de fim do evento", + "Event location": "Localização do evento", + "Event name": "Nome do evento", + "Event start date and time": "Data e hora de início do evento", + "Faith": "Fé", + "Full name of the player": "Nome completo do jogador", + "Game Master Notes (Private)": "Notas do mestre de jogo (privadas)", + "Game Master Notes (Public)": "Notas do mestre de jogo (públicas)", + "Gold Pieces": "Moedas de ouro", + "Item Name": "Nome do item", + "Items and Money": "Itens e dinheiro", + "Mechanical Effect": "Efeito de jogo", + "Modifier Value": "Valor do modificador", + "Name of the condition": "Nome da condição", + "Name of the effect": "Nome do efeito", + "Name of the event": "Nome do evento", + "Name of the item": "Nome do item", + "Name of the skill": "Nome da habilidade", + "Name of the stat": "Nome do atributo", + "Nextcloud user": "Utilizador do Nextcloud", + "Notes about items and money": "Notas sobre itens e dinheiro", + "Notes about the player": "Notas sobre o jogador", + "Overridden At": "Exceção concedida em", + "Overridden By": "Exceção concedida por", + "Override Reason": "Motivo da exceção", + "Owner": "Proprietário", + "Owner UID": "UID do proprietário", + "Participating Characters": "Personagens participantes", + "Player Name": "Nome do jogador", + "Post-Event Effects": "Efeitos posteriores ao evento", + "Real name of the player": "Nome real do jogador", + "Required Conditions": "Condições necessárias", + "Required Effects": "Efeitos necessários", + "Required Score": "Valor necessário", + "Required Skills": "Habilidades necessárias", + "Required Stats": "Atributos necessários", + "Requirement Overrides": "Exceções aos pré-requisitos", + "Setting Name": "Nome do cenário", + "Silver Pieces": "Moedas de prata", + "Skill Name": "Nome da habilidade", + "Start Date": "Data de início", + "Starting value for all characters": "Valor inicial para todas as personagens", + "Stat": "Atributo", + "Status": "Estado", + "System Notice": "Aviso do sistema", + "Unique Artifact": "Artefacto único", + "Unique Condition": "Condição única", + "XP Amount": "Quantidade de pontos de experiência", + "XP Award": "Atribuição de pontos de experiência", + "Reports": "Relatórios", + "Pick a report to open it.": "Escolha um relatório para o abrir.", + "Open": "Aberto", + "In progress": "Em curso", + "Blocked": "Bloqueado", + "Date": "Data", + "Due": "Prazo", + "Assignee": "Atribuído a", + "Who": "Quem", + "What": "O quê", + "Minutes": "Minutos", + "Entries": "Entradas", + "Most recent": "Mais recentes", + "Per person": "Por pessoa", + "By status": "Por estado", + "By priority": "Por prioridade", + "Character roster": "Lista de personagens", + "Progression": "Progressão", + "World content": "Conteúdo do mundo", + "Awaiting approval": "A aguardar aprovação", + "Player characters": "Personagens de jogador", + "Awards": "Atribuições", + "Experience": "Experiência", + "Experience awarded": "Experiência atribuída", + "Per character": "Por personagem", + "By type": "Por tipo", + "By approval": "Por aprovação", + "Items carried by characters": "Itens levados pelas personagens", + "Conditions on characters": "Estados nas personagens", + "Nothing awarded yet": "Ainda nada atribuído", + "Who is playing what, and what is still waiting for approval.": "Quem joga o quê, e o que ainda aguarda aprovação.", + "Experience awarded, and who earned it.": "A experiência atribuída e quem a ganhou.", + "How much the world holds, and what characters actually carry.": "Quanto o mundo contém, e o que as personagens realmente levam.", + "Store": "Loja", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Instale registos, esquemas e fluxos publicados por outras organizações." }, "plurals": {} } diff --git a/l10n/rm.js b/l10n/rm.js index d8cdf142..360481de 100644 --- a/l10n/rm.js +++ b/l10n/rm.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Chargiar datas d’exempel?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Las datas d’exempel emplenischan las glistas, las paginas da detagls e las tablas da controlla, uschè che ti vesas immediatamain l’applicaziun funcziunar. Tscherna \"Nagina\" sin ina installaziun da producziun.", + "Load the example data": "Chargiar las datas d’exempel", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Chargia quai che ti has tschernì. Igl èn cleramain datas d’exempel, l’acziun po vegnir repetida senza ristg e ti pos las stizzar suenter.", + "None, I will set this up myself": "Nagina, jau fatsch quai sez", + "Nothing is imported. You start with an empty app and add your own data.": "Nagut vegn importà. Ti cumenzas cun ina applicaziun vida ed agiunthas tias atgnas datas.", + "Example data": "Datas d’exempel", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Valurs d’exempel per mintga schema che questa applicaziun porta cun sai, generadas dals schemas sezs. Ellas mussan las glistas, las paginas da detagls e las tablas da controlla en funcziun enstagl da raquintar ina istorgia. Repetibla senza ristg e stizzabla suenter.", "Larpinq": "Larpinq", "Dashboard": "Tabla da controlla", "Characters": "Persunajs", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Nagina — quai è ina cumpetenza da basa.", "Where the automation lives": "Nua che l'automatisaziun viva", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows èn quai che capita senza ch'insatgi cliccia: ina memoria avant ch'in termin scada, ina conferma cun l'inoltraziun. Qua las legias e las modifitgeschas — i n'è nagut da construir ussa.", - "Open Flows in the menu": "Avra Flows en il menu" + "Open Flows in the menu": "Avra Flows en il menu", + "Ability Name": "Num da l'abilitad", + "Affected Characters": "Persunajs pertutgads", + "Amount of copper pieces": "Dumber da munaidas da cuper", + "Amount of gold pieces": "Dumber da munaidas d'aur", + "Amount of silver pieces": "Dumber da munaidas d'argient", + "Automatic system notices": "Avis automatics dal sistem", + "Award Reason": "Motiv da l'attribuziun", + "Awarded At": "Attribuì ils", + "Awarded By": "Attribuì da", + "Background Story": "Istorgia da fundament", + "Base Value": "Valur da basa", + "Character Card": "Carta dal persunaj", + "Character Name": "Num dal persunaj", + "Checked In At": "Arrivada annunziada ils", + "Checked In By": "Arrivada annunziada da", + "Condition Name": "Num da la conditiun", + "Contact email address": "Adressa dad e-mail da contact", + "Copper Pieces": "Munaidas da cuper", + "Effect Name": "Num da l'effect", + "End Date": "Data da finiziun", + "Event Name": "Num da l'eveniment", + "Event description": "Descripziun da l'eveniment", + "Event end date and time": "Data e temp da finiziun da l'eveniment", + "Event location": "Lieu da l'eveniment", + "Event name": "Num da l'eveniment", + "Event start date and time": "Data e temp da cumenzament da l'eveniment", + "Faith": "Cardientscha", + "Full name of the player": "Num cumplet dal giugader", + "Game Master Notes (Private)": "Notizias dal manader dal gieu (privatas)", + "Game Master Notes (Public)": "Notizias dal manader dal gieu (publicas)", + "Gold Pieces": "Munaidas d'aur", + "Item Name": "Num da l'object", + "Items and Money": "Objects e daners", + "Mechanical Effect": "Effect dal gieu", + "Modifier Value": "Valur dal modifitgader", + "Name of the condition": "Num da la conditiun", + "Name of the effect": "Num da l'effect", + "Name of the event": "Num da l'eveniment", + "Name of the item": "Num da l'object", + "Name of the skill": "Num da la cumpetenza", + "Name of the stat": "Num da l'attribut", + "Nextcloud user": "Utilisader da Nextcloud", + "Notes about items and money": "Notizias davart objects e daners", + "Notes about the player": "Notizias davart il giugader", + "Overridden At": "Surpassà ils", + "Overridden By": "Surpassà da", + "Override Reason": "Motiv da la surpassada", + "Owner": "Possessur", + "Owner UID": "UID dal possessur", + "Participating Characters": "Persunajs participants", + "Player Name": "Num dal giugader", + "Post-Event Effects": "Effects suenter l'eveniment", + "Real name of the player": "Num real dal giugader", + "Required Conditions": "Conditiuns necessarias", + "Required Effects": "Effects necessaris", + "Required Score": "Valur necessaria", + "Required Skills": "Cumpetenzas necessarias", + "Required Stats": "Attributs necessaris", + "Requirement Overrides": "Surpassadas da las premissas", + "Setting Name": "Num dal mund da gieu", + "Silver Pieces": "Munaidas d'argient", + "Skill Name": "Num da la cumpetenza", + "Start Date": "Data da cumenzament", + "Starting value for all characters": "Valur da partenza per tut ils persunajs", + "Stat": "Attribut", + "Status": "Status", + "System Notice": "Avis dal sistem", + "Unique Artifact": "Artefact unic", + "Unique Condition": "Conditiun unica", + "XP Amount": "Dumber da puncts d'experientscha", + "XP Award": "Attribuziun da puncts d'experientscha", + "Reports": "Rapports", + "Pick a report to open it.": "Tscherni in rapport per l'avrir.", + "Open": "Avert", + "In progress": "En lavur", + "Blocked": "Bloccà", + "Date": "Data", + "Due": "Termin", + "Assignee": "Attribuì a", + "Who": "Tgi", + "What": "Tge", + "Minutes": "Minutas", + "Entries": "Endataziuns", + "Most recent": "Ils pli novs", + "Per person": "Per persuna", + "By status": "Tenor il status", + "By priority": "Tenor la prioritad", + "Character roster": "Glista da persunas", + "Progression": "Progress", + "World content": "Cuntegn dal mund", + "Awaiting approval": "Spetga l'approvaziun", + "Player characters": "Persunas da giugaders", + "Awards": "Attribuziuns", + "Experience": "Experientscha", + "Experience awarded": "Experientscha attribuida", + "Per character": "Per persuna", + "By type": "Tenor il tip", + "By approval": "Tenor l'approvaziun", + "Items carried by characters": "Objects purtads da persunas", + "Conditions on characters": "Cundiziuns sin persunas", + "Nothing awarded yet": "Anc nagut attribuì", + "Who is playing what, and what is still waiting for approval.": "Tgi che giogia tge, e tge che spetga anc l'approvaziun.", + "Experience awarded, and who earned it.": "L'experientscha attribuida e tgi ch'i l'ha gudagnà.", + "How much the world holds, and what characters actually carry.": "Quant ch'il mund cuntegna e tge che las persunas portan propi.", + "Store": "Butia", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Installescha registers, schemas e process ch'autras organisaziuns han publitgà." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/rm.json b/l10n/rm.json index 4dfb8c93..8309ba66 100644 --- a/l10n/rm.json +++ b/l10n/rm.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Chargiar datas d’exempel?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Las datas d’exempel emplenischan las glistas, las paginas da detagls e las tablas da controlla, uschè che ti vesas immediatamain l’applicaziun funcziunar. Tscherna \"Nagina\" sin ina installaziun da producziun.", + "Load the example data": "Chargiar las datas d’exempel", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Chargia quai che ti has tschernì. Igl èn cleramain datas d’exempel, l’acziun po vegnir repetida senza ristg e ti pos las stizzar suenter.", + "None, I will set this up myself": "Nagina, jau fatsch quai sez", + "Nothing is imported. You start with an empty app and add your own data.": "Nagut vegn importà. Ti cumenzas cun ina applicaziun vida ed agiunthas tias atgnas datas.", + "Example data": "Datas d’exempel", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Valurs d’exempel per mintga schema che questa applicaziun porta cun sai, generadas dals schemas sezs. Ellas mussan las glistas, las paginas da detagls e las tablas da controlla en funcziun enstagl da raquintar ina istorgia. Repetibla senza ristg e stizzabla suenter.", "Larpinq": "Larpinq", "Dashboard": "Tabla da controlla", "Characters": "Persunajs", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Nagina — quai è ina cumpetenza da basa.", "Where the automation lives": "Nua che l'automatisaziun viva", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows èn quai che capita senza ch'insatgi cliccia: ina memoria avant ch'in termin scada, ina conferma cun l'inoltraziun. Qua las legias e las modifitgeschas — i n'è nagut da construir ussa.", - "Open Flows in the menu": "Avra Flows en il menu" + "Open Flows in the menu": "Avra Flows en il menu", + "Ability Name": "Num da l'abilitad", + "Affected Characters": "Persunajs pertutgads", + "Amount of copper pieces": "Dumber da munaidas da cuper", + "Amount of gold pieces": "Dumber da munaidas d'aur", + "Amount of silver pieces": "Dumber da munaidas d'argient", + "Automatic system notices": "Avis automatics dal sistem", + "Award Reason": "Motiv da l'attribuziun", + "Awarded At": "Attribuì ils", + "Awarded By": "Attribuì da", + "Background Story": "Istorgia da fundament", + "Base Value": "Valur da basa", + "Character Card": "Carta dal persunaj", + "Character Name": "Num dal persunaj", + "Checked In At": "Arrivada annunziada ils", + "Checked In By": "Arrivada annunziada da", + "Condition Name": "Num da la conditiun", + "Contact email address": "Adressa dad e-mail da contact", + "Copper Pieces": "Munaidas da cuper", + "Effect Name": "Num da l'effect", + "End Date": "Data da finiziun", + "Event Name": "Num da l'eveniment", + "Event description": "Descripziun da l'eveniment", + "Event end date and time": "Data e temp da finiziun da l'eveniment", + "Event location": "Lieu da l'eveniment", + "Event name": "Num da l'eveniment", + "Event start date and time": "Data e temp da cumenzament da l'eveniment", + "Faith": "Cardientscha", + "Full name of the player": "Num cumplet dal giugader", + "Game Master Notes (Private)": "Notizias dal manader dal gieu (privatas)", + "Game Master Notes (Public)": "Notizias dal manader dal gieu (publicas)", + "Gold Pieces": "Munaidas d'aur", + "Item Name": "Num da l'object", + "Items and Money": "Objects e daners", + "Mechanical Effect": "Effect dal gieu", + "Modifier Value": "Valur dal modifitgader", + "Name of the condition": "Num da la conditiun", + "Name of the effect": "Num da l'effect", + "Name of the event": "Num da l'eveniment", + "Name of the item": "Num da l'object", + "Name of the skill": "Num da la cumpetenza", + "Name of the stat": "Num da l'attribut", + "Nextcloud user": "Utilisader da Nextcloud", + "Notes about items and money": "Notizias davart objects e daners", + "Notes about the player": "Notizias davart il giugader", + "Overridden At": "Surpassà ils", + "Overridden By": "Surpassà da", + "Override Reason": "Motiv da la surpassada", + "Owner": "Possessur", + "Owner UID": "UID dal possessur", + "Participating Characters": "Persunajs participants", + "Player Name": "Num dal giugader", + "Post-Event Effects": "Effects suenter l'eveniment", + "Real name of the player": "Num real dal giugader", + "Required Conditions": "Conditiuns necessarias", + "Required Effects": "Effects necessaris", + "Required Score": "Valur necessaria", + "Required Skills": "Cumpetenzas necessarias", + "Required Stats": "Attributs necessaris", + "Requirement Overrides": "Surpassadas da las premissas", + "Setting Name": "Num dal mund da gieu", + "Silver Pieces": "Munaidas d'argient", + "Skill Name": "Num da la cumpetenza", + "Start Date": "Data da cumenzament", + "Starting value for all characters": "Valur da partenza per tut ils persunajs", + "Stat": "Attribut", + "Status": "Status", + "System Notice": "Avis dal sistem", + "Unique Artifact": "Artefact unic", + "Unique Condition": "Conditiun unica", + "XP Amount": "Dumber da puncts d'experientscha", + "XP Award": "Attribuziun da puncts d'experientscha", + "Reports": "Rapports", + "Pick a report to open it.": "Tscherni in rapport per l'avrir.", + "Open": "Avert", + "In progress": "En lavur", + "Blocked": "Bloccà", + "Date": "Data", + "Due": "Termin", + "Assignee": "Attribuì a", + "Who": "Tgi", + "What": "Tge", + "Minutes": "Minutas", + "Entries": "Endataziuns", + "Most recent": "Ils pli novs", + "Per person": "Per persuna", + "By status": "Tenor il status", + "By priority": "Tenor la prioritad", + "Character roster": "Glista da persunas", + "Progression": "Progress", + "World content": "Cuntegn dal mund", + "Awaiting approval": "Spetga l'approvaziun", + "Player characters": "Persunas da giugaders", + "Awards": "Attribuziuns", + "Experience": "Experientscha", + "Experience awarded": "Experientscha attribuida", + "Per character": "Per persuna", + "By type": "Tenor il tip", + "By approval": "Tenor l'approvaziun", + "Items carried by characters": "Objects purtads da persunas", + "Conditions on characters": "Cundiziuns sin persunas", + "Nothing awarded yet": "Anc nagut attribuì", + "Who is playing what, and what is still waiting for approval.": "Tgi che giogia tge, e tge che spetga anc l'approvaziun.", + "Experience awarded, and who earned it.": "L'experientscha attribuida e tgi ch'i l'ha gudagnà.", + "How much the world holds, and what characters actually carry.": "Quant ch'il mund cuntegna e tge che las persunas portan propi.", + "Store": "Butia", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Installescha registers, schemas e process ch'autras organisaziuns han publitgà." }, "plurals": {} } diff --git a/l10n/ro.js b/l10n/ro.js index 3f1d1a73..97293bd7 100644 --- a/l10n/ro.js +++ b/l10n/ro.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Se încarcă datele de exemplu?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Datele de exemplu umplu listele, paginile de detaliu și tablourile de bord, ca să vedeți imediat aplicația funcționând. Alegeți \"Niciunul\" pe o instalare de producție.", + "Load the example data": "Încarcă datele de exemplu", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Încarcă ceea ce ați ales. Sunt vizibil date de exemplu, operațiunea se poate repeta fără risc, iar apoi le puteți șterge.", + "None, I will set this up myself": "Niciunul, configurez singur", + "Nothing is imported. You start with an empty app and add your own data.": "Nu se importă nimic. Începeți cu o aplicație goală și adăugați propriile date.", + "Example data": "Date de exemplu", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Valori de exemplu pentru fiecare schemă pe care o aduce această aplicație, generate din schemele înseși. Arată listele, paginile de detaliu și tablourile de bord în funcțiune, în loc să spună o poveste. Se poate repeta fără risc și șterge apoi.", "Larpinq": "Larpinq", "Dashboard": "Tablou de bord", "Characters": "Personaje", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Niciuna — aceasta este o abilitate de bază.", "Where the automation lives": "Unde locuiește automatizarea", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows este ceea ce se întâmplă fără ca nimeni să dea clic: un memento înainte de expirarea unui termen, o confirmare la trimitere. Aici le citești și le editezi — nu e nimic de construit acum.", - "Open Flows in the menu": "Deschide Flows din meniu" + "Open Flows in the menu": "Deschide Flows din meniu", + "Ability Name": "Numele aptitudinii", + "Affected Characters": "Personaje afectate", + "Amount of copper pieces": "Cantitatea de monede de aramă", + "Amount of gold pieces": "Cantitatea de monede de aur", + "Amount of silver pieces": "Cantitatea de monede de argint", + "Automatic system notices": "Notificări automate de sistem", + "Award Reason": "Motivul acordării", + "Awarded At": "Acordat la", + "Awarded By": "Acordat de", + "Background Story": "Poveste de fundal", + "Base Value": "Valoare de bază", + "Character Card": "Fișa personajului", + "Character Name": "Numele personajului", + "Checked In At": "Prezență înregistrată la", + "Checked In By": "Prezență înregistrată de", + "Condition Name": "Numele stării", + "Contact email address": "Adresă de e-mail de contact", + "Copper Pieces": "Monede de aramă", + "Effect Name": "Numele efectului", + "End Date": "Data de sfârșit", + "Event Name": "Numele evenimentului", + "Event description": "Descrierea evenimentului", + "Event end date and time": "Data și ora de sfârșit ale evenimentului", + "Event location": "Locația evenimentului", + "Event name": "Numele evenimentului", + "Event start date and time": "Data și ora de început ale evenimentului", + "Faith": "Credință", + "Full name of the player": "Numele complet al jucătorului", + "Game Master Notes (Private)": "Notele maestrului de joc (private)", + "Game Master Notes (Public)": "Notele maestrului de joc (publice)", + "Gold Pieces": "Monede de aur", + "Item Name": "Numele obiectului", + "Items and Money": "Obiecte și bani", + "Mechanical Effect": "Efect de joc", + "Modifier Value": "Valoarea modificatorului", + "Name of the condition": "Numele stării", + "Name of the effect": "Numele efectului", + "Name of the event": "Numele evenimentului", + "Name of the item": "Numele obiectului", + "Name of the skill": "Numele abilității", + "Name of the stat": "Numele atributului", + "Nextcloud user": "Utilizator Nextcloud", + "Notes about items and money": "Note despre obiecte și bani", + "Notes about the player": "Note despre jucător", + "Overridden At": "Derogare acordată la", + "Overridden By": "Derogare acordată de", + "Override Reason": "Motivul derogării", + "Owner": "Proprietar", + "Owner UID": "UID-ul proprietarului", + "Participating Characters": "Personaje participante", + "Player Name": "Numele jucătorului", + "Post-Event Effects": "Efecte după eveniment", + "Real name of the player": "Numele real al jucătorului", + "Required Conditions": "Stări necesare", + "Required Effects": "Efecte necesare", + "Required Score": "Valoare necesară", + "Required Skills": "Abilități necesare", + "Required Stats": "Atribute necesare", + "Requirement Overrides": "Derogări de la cerințe", + "Setting Name": "Numele universului", + "Silver Pieces": "Monede de argint", + "Skill Name": "Numele abilității", + "Start Date": "Data de început", + "Starting value for all characters": "Valoare inițială pentru toate personajele", + "Stat": "Atribut", + "Status": "Status", + "System Notice": "Notificare de sistem", + "Unique Artifact": "Artefact unic", + "Unique Condition": "Stare unică", + "XP Amount": "Cantitatea de puncte de experiență", + "XP Award": "Acordare de puncte de experiență", + "Reports": "Rapoarte", + "Pick a report to open it.": "Alegeți un raport pentru a-l deschide.", + "Open": "Deschis", + "In progress": "În curs", + "Blocked": "Blocat", + "Date": "Dată", + "Due": "Scadență", + "Assignee": "Atribuit lui", + "Who": "Cine", + "What": "Ce", + "Minutes": "Minute", + "Entries": "Intrări", + "Most recent": "Cele mai recente", + "Per person": "Per persoană", + "By status": "După stare", + "By priority": "După prioritate", + "Character roster": "Lista personajelor", + "Progression": "Progres", + "World content": "Conținutul lumii", + "Awaiting approval": "În așteptarea aprobării", + "Player characters": "Personajele jucătorilor", + "Awards": "Acordări", + "Experience": "Experiență", + "Experience awarded": "Experiență acordată", + "Per character": "Per personaj", + "By type": "După tip", + "By approval": "După aprobare", + "Items carried by characters": "Obiecte purtate de personaje", + "Conditions on characters": "Stări pe personaje", + "Nothing awarded yet": "Încă nu s-a acordat nimic", + "Who is playing what, and what is still waiting for approval.": "Cine joacă ce și ce mai așteaptă aprobare.", + "Experience awarded, and who earned it.": "Experiența acordată și cine a câștigat-o.", + "How much the world holds, and what characters actually carry.": "Cât conține lumea și ce poartă de fapt personajele.", + "Store": "Magazin", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Instalați registre, scheme și fluxuri publicate de alte organizații." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/ro.json b/l10n/ro.json index a7233939..7d850327 100644 --- a/l10n/ro.json +++ b/l10n/ro.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Se încarcă datele de exemplu?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Datele de exemplu umplu listele, paginile de detaliu și tablourile de bord, ca să vedeți imediat aplicația funcționând. Alegeți \"Niciunul\" pe o instalare de producție.", + "Load the example data": "Încarcă datele de exemplu", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Încarcă ceea ce ați ales. Sunt vizibil date de exemplu, operațiunea se poate repeta fără risc, iar apoi le puteți șterge.", + "None, I will set this up myself": "Niciunul, configurez singur", + "Nothing is imported. You start with an empty app and add your own data.": "Nu se importă nimic. Începeți cu o aplicație goală și adăugați propriile date.", + "Example data": "Date de exemplu", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Valori de exemplu pentru fiecare schemă pe care o aduce această aplicație, generate din schemele înseși. Arată listele, paginile de detaliu și tablourile de bord în funcțiune, în loc să spună o poveste. Se poate repeta fără risc și șterge apoi.", "Larpinq": "Larpinq", "Dashboard": "Tablou de bord", "Characters": "Personaje", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Niciuna — aceasta este o abilitate de bază.", "Where the automation lives": "Unde locuiește automatizarea", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows este ceea ce se întâmplă fără ca nimeni să dea clic: un memento înainte de expirarea unui termen, o confirmare la trimitere. Aici le citești și le editezi — nu e nimic de construit acum.", - "Open Flows in the menu": "Deschide Flows din meniu" + "Open Flows in the menu": "Deschide Flows din meniu", + "Ability Name": "Numele aptitudinii", + "Affected Characters": "Personaje afectate", + "Amount of copper pieces": "Cantitatea de monede de aramă", + "Amount of gold pieces": "Cantitatea de monede de aur", + "Amount of silver pieces": "Cantitatea de monede de argint", + "Automatic system notices": "Notificări automate de sistem", + "Award Reason": "Motivul acordării", + "Awarded At": "Acordat la", + "Awarded By": "Acordat de", + "Background Story": "Poveste de fundal", + "Base Value": "Valoare de bază", + "Character Card": "Fișa personajului", + "Character Name": "Numele personajului", + "Checked In At": "Prezență înregistrată la", + "Checked In By": "Prezență înregistrată de", + "Condition Name": "Numele stării", + "Contact email address": "Adresă de e-mail de contact", + "Copper Pieces": "Monede de aramă", + "Effect Name": "Numele efectului", + "End Date": "Data de sfârșit", + "Event Name": "Numele evenimentului", + "Event description": "Descrierea evenimentului", + "Event end date and time": "Data și ora de sfârșit ale evenimentului", + "Event location": "Locația evenimentului", + "Event name": "Numele evenimentului", + "Event start date and time": "Data și ora de început ale evenimentului", + "Faith": "Credință", + "Full name of the player": "Numele complet al jucătorului", + "Game Master Notes (Private)": "Notele maestrului de joc (private)", + "Game Master Notes (Public)": "Notele maestrului de joc (publice)", + "Gold Pieces": "Monede de aur", + "Item Name": "Numele obiectului", + "Items and Money": "Obiecte și bani", + "Mechanical Effect": "Efect de joc", + "Modifier Value": "Valoarea modificatorului", + "Name of the condition": "Numele stării", + "Name of the effect": "Numele efectului", + "Name of the event": "Numele evenimentului", + "Name of the item": "Numele obiectului", + "Name of the skill": "Numele abilității", + "Name of the stat": "Numele atributului", + "Nextcloud user": "Utilizator Nextcloud", + "Notes about items and money": "Note despre obiecte și bani", + "Notes about the player": "Note despre jucător", + "Overridden At": "Derogare acordată la", + "Overridden By": "Derogare acordată de", + "Override Reason": "Motivul derogării", + "Owner": "Proprietar", + "Owner UID": "UID-ul proprietarului", + "Participating Characters": "Personaje participante", + "Player Name": "Numele jucătorului", + "Post-Event Effects": "Efecte după eveniment", + "Real name of the player": "Numele real al jucătorului", + "Required Conditions": "Stări necesare", + "Required Effects": "Efecte necesare", + "Required Score": "Valoare necesară", + "Required Skills": "Abilități necesare", + "Required Stats": "Atribute necesare", + "Requirement Overrides": "Derogări de la cerințe", + "Setting Name": "Numele universului", + "Silver Pieces": "Monede de argint", + "Skill Name": "Numele abilității", + "Start Date": "Data de început", + "Starting value for all characters": "Valoare inițială pentru toate personajele", + "Stat": "Atribut", + "Status": "Status", + "System Notice": "Notificare de sistem", + "Unique Artifact": "Artefact unic", + "Unique Condition": "Stare unică", + "XP Amount": "Cantitatea de puncte de experiență", + "XP Award": "Acordare de puncte de experiență", + "Reports": "Rapoarte", + "Pick a report to open it.": "Alegeți un raport pentru a-l deschide.", + "Open": "Deschis", + "In progress": "În curs", + "Blocked": "Blocat", + "Date": "Dată", + "Due": "Scadență", + "Assignee": "Atribuit lui", + "Who": "Cine", + "What": "Ce", + "Minutes": "Minute", + "Entries": "Intrări", + "Most recent": "Cele mai recente", + "Per person": "Per persoană", + "By status": "După stare", + "By priority": "După prioritate", + "Character roster": "Lista personajelor", + "Progression": "Progres", + "World content": "Conținutul lumii", + "Awaiting approval": "În așteptarea aprobării", + "Player characters": "Personajele jucătorilor", + "Awards": "Acordări", + "Experience": "Experiență", + "Experience awarded": "Experiență acordată", + "Per character": "Per personaj", + "By type": "După tip", + "By approval": "După aprobare", + "Items carried by characters": "Obiecte purtate de personaje", + "Conditions on characters": "Stări pe personaje", + "Nothing awarded yet": "Încă nu s-a acordat nimic", + "Who is playing what, and what is still waiting for approval.": "Cine joacă ce și ce mai așteaptă aprobare.", + "Experience awarded, and who earned it.": "Experiența acordată și cine a câștigat-o.", + "How much the world holds, and what characters actually carry.": "Cât conține lumea și ce poartă de fapt personajele.", + "Store": "Magazin", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Instalați registre, scheme și fluxuri publicate de alte organizații." }, "plurals": {} } diff --git a/l10n/ru.js b/l10n/ru.js index 4588e3dc..35de8f8f 100644 --- a/l10n/ru.js +++ b/l10n/ru.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Загрузить примеры данных?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Примеры данных заполняют списки, страницы подробностей и панели, чтобы вы сразу увидели приложение в работе. На рабочей установке выберите \"Нет\".", + "Load the example data": "Загрузить примеры данных", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Загружает то, что вы выбрали. Это явно примеры данных, действие можно безопасно повторить, а потом их можно удалить.", + "None, I will set this up myself": "Нет, я настрою это сам", + "Nothing is imported. You start with an empty app and add your own data.": "Ничего не импортируется. Вы начинаете с пустого приложения и добавляете свои данные.", + "Example data": "Примеры данных", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Примеры значений для каждой схемы, которую поставляет это приложение, созданные из самих схем. Они показывают списки, страницы подробностей и панели в работе, а не рассказывают историю. Безопасно повторять и потом удалить.", "Larpinq": "Larpinq", "Dashboard": "Панель управления", "Characters": "Персонажи", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Нет — это базовый навык.", "Where the automation lives": "Где живёт автоматизация", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows — это то, что происходит без единого клика: напоминание до истечения срока, подтверждение при отправке. Здесь вы их читаете и редактируете — сейчас ничего строить не нужно.", - "Open Flows in the menu": "Откройте Flows в меню" + "Open Flows in the menu": "Откройте Flows в меню", + "Ability Name": "Название способности", + "Affected Characters": "Затронутые персонажи", + "Amount of copper pieces": "Количество медных монет", + "Amount of gold pieces": "Количество золотых монет", + "Amount of silver pieces": "Количество серебряных монет", + "Automatic system notices": "Автоматические системные уведомления", + "Award Reason": "Причина начисления", + "Awarded At": "Начислено", + "Awarded By": "Начислил", + "Background Story": "Предыстория персонажа", + "Base Value": "Базовое значение", + "Character Card": "Карточка персонажа", + "Character Name": "Имя персонажа", + "Checked In At": "Прибытие отмечено", + "Checked In By": "Прибытие отметил", + "Condition Name": "Название состояния", + "Contact email address": "Контактный адрес электронной почты", + "Copper Pieces": "Медные монеты", + "Effect Name": "Название эффекта", + "End Date": "Дата окончания", + "Event Name": "Название события", + "Event description": "Описание события", + "Event end date and time": "Дата и время окончания события", + "Event location": "Место проведения события", + "Event name": "Название события", + "Event start date and time": "Дата и время начала события", + "Faith": "Вера", + "Full name of the player": "Полное имя игрока", + "Game Master Notes (Private)": "Заметки мастера игры (личные)", + "Game Master Notes (Public)": "Заметки мастера игры (общедоступные)", + "Gold Pieces": "Золотые монеты", + "Item Name": "Название предмета", + "Items and Money": "Предметы и деньги", + "Mechanical Effect": "Игровой эффект", + "Modifier Value": "Значение модификатора", + "Name of the condition": "Название состояния", + "Name of the effect": "Название эффекта", + "Name of the event": "Название события", + "Name of the item": "Название предмета", + "Name of the skill": "Название навыка", + "Name of the stat": "Название характеристики", + "Nextcloud user": "Пользователь Nextcloud", + "Notes about items and money": "Заметки о предметах и деньгах", + "Notes about the player": "Заметки об игроке", + "Overridden At": "Исключение предоставлено", + "Overridden By": "Исключение предоставил", + "Override Reason": "Причина исключения", + "Owner": "Владелец", + "Owner UID": "UID владельца", + "Participating Characters": "Участвующие персонажи", + "Player Name": "Имя игрока", + "Post-Event Effects": "Эффекты после события", + "Real name of the player": "Настоящее имя игрока", + "Required Conditions": "Требуемые состояния", + "Required Effects": "Требуемые эффекты", + "Required Score": "Требуемое значение", + "Required Skills": "Требуемые навыки", + "Required Stats": "Требуемые характеристики", + "Requirement Overrides": "Исключения из требований", + "Setting Name": "Название игрового мира", + "Silver Pieces": "Серебряные монеты", + "Skill Name": "Название навыка", + "Start Date": "Дата начала", + "Starting value for all characters": "Начальное значение для всех персонажей", + "Stat": "Характеристика", + "Status": "Статус", + "System Notice": "Системное уведомление", + "Unique Artifact": "Уникальный артефакт", + "Unique Condition": "Уникальное состояние", + "XP Amount": "Количество очков опыта", + "XP Award": "Начисление очков опыта", + "Reports": "Отчёты", + "Pick a report to open it.": "Выберите отчёт, чтобы открыть его.", + "Open": "Открыто", + "In progress": "В работе", + "Blocked": "Заблокировано", + "Date": "Дата", + "Due": "Срок", + "Assignee": "Назначено", + "Who": "Кто", + "What": "Что", + "Minutes": "Минуты", + "Entries": "Записи", + "Most recent": "Самые новые", + "Per person": "На человека", + "By status": "По статусу", + "By priority": "По приоритету", + "Character roster": "Список персонажей", + "Progression": "Прогресс", + "World content": "Содержимое мира", + "Awaiting approval": "Ожидает одобрения", + "Player characters": "Персонажи игроков", + "Awards": "Начисления", + "Experience": "Опыт", + "Experience awarded": "Начисленный опыт", + "Per character": "На персонажа", + "By type": "По типу", + "By approval": "По одобрению", + "Items carried by characters": "Предметы, которые несут персонажи", + "Conditions on characters": "Состояния персонажей", + "Nothing awarded yet": "Пока ничего не начислено", + "Who is playing what, and what is still waiting for approval.": "Кто что играет и что ещё ждёт одобрения.", + "Experience awarded, and who earned it.": "Начисленный опыт и кто его заработал.", + "How much the world holds, and what characters actually carry.": "Сколько содержит мир и что персонажи действительно несут.", + "Store": "Магазин", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Установите реестры, схемы и потоки, опубликованные другими организациями." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/ru.json b/l10n/ru.json index 7e6536c1..6719c9ac 100644 --- a/l10n/ru.json +++ b/l10n/ru.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Загрузить примеры данных?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Примеры данных заполняют списки, страницы подробностей и панели, чтобы вы сразу увидели приложение в работе. На рабочей установке выберите \"Нет\".", + "Load the example data": "Загрузить примеры данных", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Загружает то, что вы выбрали. Это явно примеры данных, действие можно безопасно повторить, а потом их можно удалить.", + "None, I will set this up myself": "Нет, я настрою это сам", + "Nothing is imported. You start with an empty app and add your own data.": "Ничего не импортируется. Вы начинаете с пустого приложения и добавляете свои данные.", + "Example data": "Примеры данных", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Примеры значений для каждой схемы, которую поставляет это приложение, созданные из самих схем. Они показывают списки, страницы подробностей и панели в работе, а не рассказывают историю. Безопасно повторять и потом удалить.", "Larpinq": "Larpinq", "Dashboard": "Панель управления", "Characters": "Персонажи", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Нет — это базовый навык.", "Where the automation lives": "Где живёт автоматизация", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows — это то, что происходит без единого клика: напоминание до истечения срока, подтверждение при отправке. Здесь вы их читаете и редактируете — сейчас ничего строить не нужно.", - "Open Flows in the menu": "Откройте Flows в меню" + "Open Flows in the menu": "Откройте Flows в меню", + "Ability Name": "Название способности", + "Affected Characters": "Затронутые персонажи", + "Amount of copper pieces": "Количество медных монет", + "Amount of gold pieces": "Количество золотых монет", + "Amount of silver pieces": "Количество серебряных монет", + "Automatic system notices": "Автоматические системные уведомления", + "Award Reason": "Причина начисления", + "Awarded At": "Начислено", + "Awarded By": "Начислил", + "Background Story": "Предыстория персонажа", + "Base Value": "Базовое значение", + "Character Card": "Карточка персонажа", + "Character Name": "Имя персонажа", + "Checked In At": "Прибытие отмечено", + "Checked In By": "Прибытие отметил", + "Condition Name": "Название состояния", + "Contact email address": "Контактный адрес электронной почты", + "Copper Pieces": "Медные монеты", + "Effect Name": "Название эффекта", + "End Date": "Дата окончания", + "Event Name": "Название события", + "Event description": "Описание события", + "Event end date and time": "Дата и время окончания события", + "Event location": "Место проведения события", + "Event name": "Название события", + "Event start date and time": "Дата и время начала события", + "Faith": "Вера", + "Full name of the player": "Полное имя игрока", + "Game Master Notes (Private)": "Заметки мастера игры (личные)", + "Game Master Notes (Public)": "Заметки мастера игры (общедоступные)", + "Gold Pieces": "Золотые монеты", + "Item Name": "Название предмета", + "Items and Money": "Предметы и деньги", + "Mechanical Effect": "Игровой эффект", + "Modifier Value": "Значение модификатора", + "Name of the condition": "Название состояния", + "Name of the effect": "Название эффекта", + "Name of the event": "Название события", + "Name of the item": "Название предмета", + "Name of the skill": "Название навыка", + "Name of the stat": "Название характеристики", + "Nextcloud user": "Пользователь Nextcloud", + "Notes about items and money": "Заметки о предметах и деньгах", + "Notes about the player": "Заметки об игроке", + "Overridden At": "Исключение предоставлено", + "Overridden By": "Исключение предоставил", + "Override Reason": "Причина исключения", + "Owner": "Владелец", + "Owner UID": "UID владельца", + "Participating Characters": "Участвующие персонажи", + "Player Name": "Имя игрока", + "Post-Event Effects": "Эффекты после события", + "Real name of the player": "Настоящее имя игрока", + "Required Conditions": "Требуемые состояния", + "Required Effects": "Требуемые эффекты", + "Required Score": "Требуемое значение", + "Required Skills": "Требуемые навыки", + "Required Stats": "Требуемые характеристики", + "Requirement Overrides": "Исключения из требований", + "Setting Name": "Название игрового мира", + "Silver Pieces": "Серебряные монеты", + "Skill Name": "Название навыка", + "Start Date": "Дата начала", + "Starting value for all characters": "Начальное значение для всех персонажей", + "Stat": "Характеристика", + "Status": "Статус", + "System Notice": "Системное уведомление", + "Unique Artifact": "Уникальный артефакт", + "Unique Condition": "Уникальное состояние", + "XP Amount": "Количество очков опыта", + "XP Award": "Начисление очков опыта", + "Reports": "Отчёты", + "Pick a report to open it.": "Выберите отчёт, чтобы открыть его.", + "Open": "Открыто", + "In progress": "В работе", + "Blocked": "Заблокировано", + "Date": "Дата", + "Due": "Срок", + "Assignee": "Назначено", + "Who": "Кто", + "What": "Что", + "Minutes": "Минуты", + "Entries": "Записи", + "Most recent": "Самые новые", + "Per person": "На человека", + "By status": "По статусу", + "By priority": "По приоритету", + "Character roster": "Список персонажей", + "Progression": "Прогресс", + "World content": "Содержимое мира", + "Awaiting approval": "Ожидает одобрения", + "Player characters": "Персонажи игроков", + "Awards": "Начисления", + "Experience": "Опыт", + "Experience awarded": "Начисленный опыт", + "Per character": "На персонажа", + "By type": "По типу", + "By approval": "По одобрению", + "Items carried by characters": "Предметы, которые несут персонажи", + "Conditions on characters": "Состояния персонажей", + "Nothing awarded yet": "Пока ничего не начислено", + "Who is playing what, and what is still waiting for approval.": "Кто что играет и что ещё ждёт одобрения.", + "Experience awarded, and who earned it.": "Начисленный опыт и кто его заработал.", + "How much the world holds, and what characters actually carry.": "Сколько содержит мир и что персонажи действительно несут.", + "Store": "Магазин", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Установите реестры, схемы и потоки, опубликованные другими организациями." }, "plurals": {} } diff --git a/l10n/sk.js b/l10n/sk.js index 912ca2f3..1528604e 100644 --- a/l10n/sk.js +++ b/l10n/sk.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Načítať ukážkové údaje?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Ukážkové údaje naplnia zoznamy, stránky s podrobnosťami a nástenky, takže aplikáciu uvidíte hneď v prevádzke. Na produkčnej inštalácii zvoľte \"Žiadne\".", + "Load the example data": "Načítať ukážkové údaje", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Načíta to, čo ste vybrali. Sú to zjavne ukážkové údaje, akciu možno bezpečne zopakovať a potom ich môžete zmazať.", + "None, I will set this up myself": "Žiadne, nastavím si to sám", + "Nothing is imported. You start with an empty app and add your own data.": "Nič sa neimportuje. Začínate s prázdnou aplikáciou a pridáte vlastné údaje.", + "Example data": "Ukážkové údaje", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Ukážkové hodnoty pre každú schému, ktorú táto aplikácia prináša, vygenerované zo samotných schém. Ukazujú zoznamy, stránky s podrobnosťami a nástenky v prevádzke namiesto rozprávania príbehu. Možno bezpečne zopakovať a potom zmazať.", "Larpinq": "Larpinq", "Dashboard": "Nástenka", "Characters": "Postavy", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Žiadne — toto je koreňová zručnosť.", "Where the automation lives": "Kde býva automatizácia", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows je to, čo sa deje bez toho, aby niekto klikol: pripomienka pred uplynutím lehoty, potvrdenie pri odoslaní. Tu ich čítaš a upravuješ — teraz netreba nič stavať.", - "Open Flows in the menu": "Otvor Flows v ponuke" + "Open Flows in the menu": "Otvor Flows v ponuke", + "Ability Name": "Názov schopnosti", + "Affected Characters": "Dotknuté postavy", + "Amount of copper pieces": "Počet medených mincí", + "Amount of gold pieces": "Počet zlatých mincí", + "Amount of silver pieces": "Počet strieborných mincí", + "Automatic system notices": "Automatické systémové oznámenia", + "Award Reason": "Dôvod udelenia", + "Awarded At": "Udelené dňa", + "Awarded By": "Udelil", + "Background Story": "Príbeh postavy", + "Base Value": "Základná hodnota", + "Character Card": "Karta postavy", + "Character Name": "Meno postavy", + "Checked In At": "Príchod zaregistrovaný dňa", + "Checked In By": "Príchod zaregistroval", + "Condition Name": "Názov stavu", + "Contact email address": "Kontaktná e-mailová adresa", + "Copper Pieces": "Medené mince", + "Effect Name": "Názov účinku", + "End Date": "Dátum ukončenia", + "Event Name": "Názov podujatia", + "Event description": "Popis podujatia", + "Event end date and time": "Dátum a čas ukončenia podujatia", + "Event location": "Miesto konania podujatia", + "Event name": "Názov podujatia", + "Event start date and time": "Dátum a čas začiatku podujatia", + "Faith": "Viera", + "Full name of the player": "Celé meno hráča", + "Game Master Notes (Private)": "Poznámky rozprávača (súkromné)", + "Game Master Notes (Public)": "Poznámky rozprávača (verejné)", + "Gold Pieces": "Zlaté mince", + "Item Name": "Názov predmetu", + "Items and Money": "Predmety a peniaze", + "Mechanical Effect": "Herný účinok", + "Modifier Value": "Hodnota modifikátora", + "Name of the condition": "Názov stavu", + "Name of the effect": "Názov účinku", + "Name of the event": "Názov podujatia", + "Name of the item": "Názov predmetu", + "Name of the skill": "Názov zručnosti", + "Name of the stat": "Názov vlastnosti", + "Nextcloud user": "Používateľ Nextcloudu", + "Notes about items and money": "Poznámky k predmetom a peniazom", + "Notes about the player": "Poznámky k hráčovi", + "Overridden At": "Výnimka udelená dňa", + "Overridden By": "Výnimku udelil", + "Override Reason": "Dôvod výnimky", + "Owner": "Vlastník", + "Owner UID": "UID vlastníka", + "Participating Characters": "Zúčastnené postavy", + "Player Name": "Meno hráča", + "Post-Event Effects": "Účinky po podujatí", + "Real name of the player": "Skutočné meno hráča", + "Required Conditions": "Požadované stavy", + "Required Effects": "Požadované účinky", + "Required Score": "Požadovaná hodnota", + "Required Skills": "Požadované zručnosti", + "Required Stats": "Požadované vlastnosti", + "Requirement Overrides": "Výnimky z predpokladov", + "Setting Name": "Názov herného sveta", + "Silver Pieces": "Strieborné mince", + "Skill Name": "Názov zručnosti", + "Start Date": "Dátum začiatku", + "Starting value for all characters": "Počiatočná hodnota pre všetky postavy", + "Stat": "Vlastnosť", + "Status": "Status", + "System Notice": "Systémové oznámenie", + "Unique Artifact": "Jedinečný artefakt", + "Unique Condition": "Jedinečný stav", + "XP Amount": "Počet skúsenostných bodov", + "XP Award": "Udelenie skúsenostných bodov", + "Reports": "Zostavy", + "Pick a report to open it.": "Vyberte zostavu, ktorú chcete otvoriť.", + "Open": "Otvorené", + "In progress": "Prebieha", + "Blocked": "Blokované", + "Date": "Dátum", + "Due": "Termín", + "Assignee": "Priradené", + "Who": "Kto", + "What": "Čo", + "Minutes": "Minúty", + "Entries": "Záznamy", + "Most recent": "Najnovšie", + "Per person": "Na osobu", + "By status": "Podľa stavu", + "By priority": "Podľa priority", + "Character roster": "Zoznam postáv", + "Progression": "Postup", + "World content": "Obsah sveta", + "Awaiting approval": "Čaká na schválenie", + "Player characters": "Postavy hráčov", + "Awards": "Udelenia", + "Experience": "Skúsenosti", + "Experience awarded": "Udelené skúsenosti", + "Per character": "Na postavu", + "By type": "Podľa typu", + "By approval": "Podľa schválenia", + "Items carried by characters": "Predmety nesené postavami", + "Conditions on characters": "Stavy na postavách", + "Nothing awarded yet": "Zatiaľ nič neudelené", + "Who is playing what, and what is still waiting for approval.": "Kto hrá čo a čo ešte čaká na schválenie.", + "Experience awarded, and who earned it.": "Udelené skúsenosti a kto si ich zaslúžil.", + "How much the world holds, and what characters actually carry.": "Koľko svet obsahuje a čo postavy skutočne nesú.", + "Store": "Obchod", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Nainštalujte registre, schémy a toky zverejnené inými organizáciami." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/sk.json b/l10n/sk.json index e3b31328..b84598c0 100644 --- a/l10n/sk.json +++ b/l10n/sk.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Načítať ukážkové údaje?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Ukážkové údaje naplnia zoznamy, stránky s podrobnosťami a nástenky, takže aplikáciu uvidíte hneď v prevádzke. Na produkčnej inštalácii zvoľte \"Žiadne\".", + "Load the example data": "Načítať ukážkové údaje", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Načíta to, čo ste vybrali. Sú to zjavne ukážkové údaje, akciu možno bezpečne zopakovať a potom ich môžete zmazať.", + "None, I will set this up myself": "Žiadne, nastavím si to sám", + "Nothing is imported. You start with an empty app and add your own data.": "Nič sa neimportuje. Začínate s prázdnou aplikáciou a pridáte vlastné údaje.", + "Example data": "Ukážkové údaje", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Ukážkové hodnoty pre každú schému, ktorú táto aplikácia prináša, vygenerované zo samotných schém. Ukazujú zoznamy, stránky s podrobnosťami a nástenky v prevádzke namiesto rozprávania príbehu. Možno bezpečne zopakovať a potom zmazať.", "Larpinq": "Larpinq", "Dashboard": "Nástenka", "Characters": "Postavy", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Žiadne — toto je koreňová zručnosť.", "Where the automation lives": "Kde býva automatizácia", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows je to, čo sa deje bez toho, aby niekto klikol: pripomienka pred uplynutím lehoty, potvrdenie pri odoslaní. Tu ich čítaš a upravuješ — teraz netreba nič stavať.", - "Open Flows in the menu": "Otvor Flows v ponuke" + "Open Flows in the menu": "Otvor Flows v ponuke", + "Ability Name": "Názov schopnosti", + "Affected Characters": "Dotknuté postavy", + "Amount of copper pieces": "Počet medených mincí", + "Amount of gold pieces": "Počet zlatých mincí", + "Amount of silver pieces": "Počet strieborných mincí", + "Automatic system notices": "Automatické systémové oznámenia", + "Award Reason": "Dôvod udelenia", + "Awarded At": "Udelené dňa", + "Awarded By": "Udelil", + "Background Story": "Príbeh postavy", + "Base Value": "Základná hodnota", + "Character Card": "Karta postavy", + "Character Name": "Meno postavy", + "Checked In At": "Príchod zaregistrovaný dňa", + "Checked In By": "Príchod zaregistroval", + "Condition Name": "Názov stavu", + "Contact email address": "Kontaktná e-mailová adresa", + "Copper Pieces": "Medené mince", + "Effect Name": "Názov účinku", + "End Date": "Dátum ukončenia", + "Event Name": "Názov podujatia", + "Event description": "Popis podujatia", + "Event end date and time": "Dátum a čas ukončenia podujatia", + "Event location": "Miesto konania podujatia", + "Event name": "Názov podujatia", + "Event start date and time": "Dátum a čas začiatku podujatia", + "Faith": "Viera", + "Full name of the player": "Celé meno hráča", + "Game Master Notes (Private)": "Poznámky rozprávača (súkromné)", + "Game Master Notes (Public)": "Poznámky rozprávača (verejné)", + "Gold Pieces": "Zlaté mince", + "Item Name": "Názov predmetu", + "Items and Money": "Predmety a peniaze", + "Mechanical Effect": "Herný účinok", + "Modifier Value": "Hodnota modifikátora", + "Name of the condition": "Názov stavu", + "Name of the effect": "Názov účinku", + "Name of the event": "Názov podujatia", + "Name of the item": "Názov predmetu", + "Name of the skill": "Názov zručnosti", + "Name of the stat": "Názov vlastnosti", + "Nextcloud user": "Používateľ Nextcloudu", + "Notes about items and money": "Poznámky k predmetom a peniazom", + "Notes about the player": "Poznámky k hráčovi", + "Overridden At": "Výnimka udelená dňa", + "Overridden By": "Výnimku udelil", + "Override Reason": "Dôvod výnimky", + "Owner": "Vlastník", + "Owner UID": "UID vlastníka", + "Participating Characters": "Zúčastnené postavy", + "Player Name": "Meno hráča", + "Post-Event Effects": "Účinky po podujatí", + "Real name of the player": "Skutočné meno hráča", + "Required Conditions": "Požadované stavy", + "Required Effects": "Požadované účinky", + "Required Score": "Požadovaná hodnota", + "Required Skills": "Požadované zručnosti", + "Required Stats": "Požadované vlastnosti", + "Requirement Overrides": "Výnimky z predpokladov", + "Setting Name": "Názov herného sveta", + "Silver Pieces": "Strieborné mince", + "Skill Name": "Názov zručnosti", + "Start Date": "Dátum začiatku", + "Starting value for all characters": "Počiatočná hodnota pre všetky postavy", + "Stat": "Vlastnosť", + "Status": "Status", + "System Notice": "Systémové oznámenie", + "Unique Artifact": "Jedinečný artefakt", + "Unique Condition": "Jedinečný stav", + "XP Amount": "Počet skúsenostných bodov", + "XP Award": "Udelenie skúsenostných bodov", + "Reports": "Zostavy", + "Pick a report to open it.": "Vyberte zostavu, ktorú chcete otvoriť.", + "Open": "Otvorené", + "In progress": "Prebieha", + "Blocked": "Blokované", + "Date": "Dátum", + "Due": "Termín", + "Assignee": "Priradené", + "Who": "Kto", + "What": "Čo", + "Minutes": "Minúty", + "Entries": "Záznamy", + "Most recent": "Najnovšie", + "Per person": "Na osobu", + "By status": "Podľa stavu", + "By priority": "Podľa priority", + "Character roster": "Zoznam postáv", + "Progression": "Postup", + "World content": "Obsah sveta", + "Awaiting approval": "Čaká na schválenie", + "Player characters": "Postavy hráčov", + "Awards": "Udelenia", + "Experience": "Skúsenosti", + "Experience awarded": "Udelené skúsenosti", + "Per character": "Na postavu", + "By type": "Podľa typu", + "By approval": "Podľa schválenia", + "Items carried by characters": "Predmety nesené postavami", + "Conditions on characters": "Stavy na postavách", + "Nothing awarded yet": "Zatiaľ nič neudelené", + "Who is playing what, and what is still waiting for approval.": "Kto hrá čo a čo ešte čaká na schválenie.", + "Experience awarded, and who earned it.": "Udelené skúsenosti a kto si ich zaslúžil.", + "How much the world holds, and what characters actually carry.": "Koľko svet obsahuje a čo postavy skutočne nesú.", + "Store": "Obchod", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Nainštalujte registre, schémy a toky zverejnené inými organizáciami." }, "plurals": {} } diff --git a/l10n/sl.js b/l10n/sl.js index a49e01b4..4b19a6ce 100644 --- a/l10n/sl.js +++ b/l10n/sl.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Naložim vzorčne podatke?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Vzorčni podatki napolnijo sezname, strani s podrobnostmi in nadzorne plošče, tako da aplikacijo takoj vidite delovati. Pri produkcijski namestitvi izberite \"Brez\".", + "Load the example data": "Naloži vzorčne podatke", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Naloži tisto, kar ste izbrali. To so očitno vzorčni podatki, dejanje je varno ponoviti, pozneje pa jih lahko izbrišete.", + "None, I will set this up myself": "Brez, to bom nastavil sam", + "Nothing is imported. You start with an empty app and add your own data.": "Nič se ne uvozi. Začnete s prazno aplikacijo in dodate svoje podatke.", + "Example data": "Vzorčni podatki", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Vzorčne vrednosti za vsako shemo, ki jo prinaša ta aplikacija, ustvarjene iz shem samih. Prikazujejo sezname, strani s podrobnostmi in nadzorne plošče v delovanju, namesto da bi pripovedovale zgodbo. Varno je ponoviti in pozneje izbrisati.", "Larpinq": "Larpinq", "Dashboard": "Nadzorna plošča", "Characters": "Liki", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Brez — to je korenska veščina.", "Where the automation lives": "Kje živi avtomatizacija", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows je to, kar se zgodi, ne da bi kdo kliknil: opomnik pred iztekom roka, potrditev ob oddaji. Tukaj jih bereš in urejaš — zdaj ni treba ničesar graditi.", - "Open Flows in the menu": "Odpri Flows v meniju" + "Open Flows in the menu": "Odpri Flows v meniju", + "Ability Name": "Ime sposobnosti", + "Affected Characters": "Prizadeti liki", + "Amount of copper pieces": "Število bakrenih kovancev", + "Amount of gold pieces": "Število zlatih kovancev", + "Amount of silver pieces": "Število srebrnih kovancev", + "Automatic system notices": "Samodejna sistemska obvestila", + "Award Reason": "Razlog za dodelitev", + "Awarded At": "Dodeljeno dne", + "Awarded By": "Dodelil", + "Background Story": "Zgodba ozadja", + "Base Value": "Osnovna vrednost", + "Character Card": "Kartica lika", + "Character Name": "Ime lika", + "Checked In At": "Prihod zabeležen dne", + "Checked In By": "Prihod zabeležil", + "Condition Name": "Ime stanja", + "Contact email address": "Kontaktni e-poštni naslov", + "Copper Pieces": "Bakreni kovanci", + "Effect Name": "Ime učinka", + "End Date": "Datum konca", + "Event Name": "Ime dogodka", + "Event description": "Opis dogodka", + "Event end date and time": "Datum in čas konca dogodka", + "Event location": "Kraj dogodka", + "Event name": "Ime dogodka", + "Event start date and time": "Datum in čas začetka dogodka", + "Faith": "Vera", + "Full name of the player": "Polno ime igralca", + "Game Master Notes (Private)": "Zapiski vodje igre (zasebni)", + "Game Master Notes (Public)": "Zapiski vodje igre (javni)", + "Gold Pieces": "Zlati kovanci", + "Item Name": "Ime predmeta", + "Items and Money": "Predmeti in denar", + "Mechanical Effect": "Igralni učinek", + "Modifier Value": "Vrednost modifikatorja", + "Name of the condition": "Ime stanja", + "Name of the effect": "Ime učinka", + "Name of the event": "Ime dogodka", + "Name of the item": "Ime predmeta", + "Name of the skill": "Ime veščine", + "Name of the stat": "Ime lastnosti", + "Nextcloud user": "Uporabnik Nextcloud", + "Notes about items and money": "Zapiski o predmetih in denarju", + "Notes about the player": "Zapiski o igralcu", + "Overridden At": "Izjema odobrena dne", + "Overridden By": "Izjemo odobril", + "Override Reason": "Razlog za izjemo", + "Owner": "Lastnik", + "Owner UID": "UID lastnika", + "Participating Characters": "Sodelujoči liki", + "Player Name": "Ime igralca", + "Post-Event Effects": "Učinki po dogodku", + "Real name of the player": "Pravo ime igralca", + "Required Conditions": "Zahtevana stanja", + "Required Effects": "Zahtevani učinki", + "Required Score": "Zahtevana vrednost", + "Required Skills": "Zahtevane veščine", + "Required Stats": "Zahtevane lastnosti", + "Requirement Overrides": "Izjeme od predpogojev", + "Setting Name": "Ime igralnega sveta", + "Silver Pieces": "Srebrni kovanci", + "Skill Name": "Ime veščine", + "Start Date": "Datum začetka", + "Starting value for all characters": "Začetna vrednost za vse like", + "Stat": "Lastnost", + "Status": "Status", + "System Notice": "Sistemsko obvestilo", + "Unique Artifact": "Edinstven artefakt", + "Unique Condition": "Edinstveno stanje", + "XP Amount": "Število izkušenjskih točk", + "XP Award": "Dodelitev izkušenjskih točk", + "Reports": "Poročila", + "Pick a report to open it.": "Izberite poročilo, da ga odprete.", + "Open": "Odprto", + "In progress": "V teku", + "Blocked": "Blokirano", + "Date": "Datum", + "Due": "Rok", + "Assignee": "Dodeljeno", + "Who": "Kdo", + "What": "Kaj", + "Minutes": "Minute", + "Entries": "Vnosi", + "Most recent": "Najnovejše", + "Per person": "Na osebo", + "By status": "Po stanju", + "By priority": "Po prednosti", + "Character roster": "Seznam likov", + "Progression": "Napredek", + "World content": "Vsebina sveta", + "Awaiting approval": "Čaka odobritev", + "Player characters": "Igralčevi liki", + "Awards": "Dodelitve", + "Experience": "Izkušnje", + "Experience awarded": "Dodeljene izkušnje", + "Per character": "Na lik", + "By type": "Po vrsti", + "By approval": "Po odobritvi", + "Items carried by characters": "Predmeti, ki jih nosijo liki", + "Conditions on characters": "Stanja na likih", + "Nothing awarded yet": "Še ni nič dodeljeno", + "Who is playing what, and what is still waiting for approval.": "Kdo igra kaj in kaj še čaka odobritev.", + "Experience awarded, and who earned it.": "Dodeljene izkušnje in kdo si jih je prislužil.", + "How much the world holds, and what characters actually carry.": "Koliko svet vsebuje in kaj liki dejansko nosijo.", + "Store": "Trgovina", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Namestite registre, sheme in tokove, ki so jih objavile druge organizacije." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/sl.json b/l10n/sl.json index f63f1d0c..bee331ec 100644 --- a/l10n/sl.json +++ b/l10n/sl.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Naložim vzorčne podatke?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Vzorčni podatki napolnijo sezname, strani s podrobnostmi in nadzorne plošče, tako da aplikacijo takoj vidite delovati. Pri produkcijski namestitvi izberite \"Brez\".", + "Load the example data": "Naloži vzorčne podatke", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Naloži tisto, kar ste izbrali. To so očitno vzorčni podatki, dejanje je varno ponoviti, pozneje pa jih lahko izbrišete.", + "None, I will set this up myself": "Brez, to bom nastavil sam", + "Nothing is imported. You start with an empty app and add your own data.": "Nič se ne uvozi. Začnete s prazno aplikacijo in dodate svoje podatke.", + "Example data": "Vzorčni podatki", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Vzorčne vrednosti za vsako shemo, ki jo prinaša ta aplikacija, ustvarjene iz shem samih. Prikazujejo sezname, strani s podrobnostmi in nadzorne plošče v delovanju, namesto da bi pripovedovale zgodbo. Varno je ponoviti in pozneje izbrisati.", "Larpinq": "Larpinq", "Dashboard": "Nadzorna plošča", "Characters": "Liki", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Brez — to je korenska veščina.", "Where the automation lives": "Kje živi avtomatizacija", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows je to, kar se zgodi, ne da bi kdo kliknil: opomnik pred iztekom roka, potrditev ob oddaji. Tukaj jih bereš in urejaš — zdaj ni treba ničesar graditi.", - "Open Flows in the menu": "Odpri Flows v meniju" + "Open Flows in the menu": "Odpri Flows v meniju", + "Ability Name": "Ime sposobnosti", + "Affected Characters": "Prizadeti liki", + "Amount of copper pieces": "Število bakrenih kovancev", + "Amount of gold pieces": "Število zlatih kovancev", + "Amount of silver pieces": "Število srebrnih kovancev", + "Automatic system notices": "Samodejna sistemska obvestila", + "Award Reason": "Razlog za dodelitev", + "Awarded At": "Dodeljeno dne", + "Awarded By": "Dodelil", + "Background Story": "Zgodba ozadja", + "Base Value": "Osnovna vrednost", + "Character Card": "Kartica lika", + "Character Name": "Ime lika", + "Checked In At": "Prihod zabeležen dne", + "Checked In By": "Prihod zabeležil", + "Condition Name": "Ime stanja", + "Contact email address": "Kontaktni e-poštni naslov", + "Copper Pieces": "Bakreni kovanci", + "Effect Name": "Ime učinka", + "End Date": "Datum konca", + "Event Name": "Ime dogodka", + "Event description": "Opis dogodka", + "Event end date and time": "Datum in čas konca dogodka", + "Event location": "Kraj dogodka", + "Event name": "Ime dogodka", + "Event start date and time": "Datum in čas začetka dogodka", + "Faith": "Vera", + "Full name of the player": "Polno ime igralca", + "Game Master Notes (Private)": "Zapiski vodje igre (zasebni)", + "Game Master Notes (Public)": "Zapiski vodje igre (javni)", + "Gold Pieces": "Zlati kovanci", + "Item Name": "Ime predmeta", + "Items and Money": "Predmeti in denar", + "Mechanical Effect": "Igralni učinek", + "Modifier Value": "Vrednost modifikatorja", + "Name of the condition": "Ime stanja", + "Name of the effect": "Ime učinka", + "Name of the event": "Ime dogodka", + "Name of the item": "Ime predmeta", + "Name of the skill": "Ime veščine", + "Name of the stat": "Ime lastnosti", + "Nextcloud user": "Uporabnik Nextcloud", + "Notes about items and money": "Zapiski o predmetih in denarju", + "Notes about the player": "Zapiski o igralcu", + "Overridden At": "Izjema odobrena dne", + "Overridden By": "Izjemo odobril", + "Override Reason": "Razlog za izjemo", + "Owner": "Lastnik", + "Owner UID": "UID lastnika", + "Participating Characters": "Sodelujoči liki", + "Player Name": "Ime igralca", + "Post-Event Effects": "Učinki po dogodku", + "Real name of the player": "Pravo ime igralca", + "Required Conditions": "Zahtevana stanja", + "Required Effects": "Zahtevani učinki", + "Required Score": "Zahtevana vrednost", + "Required Skills": "Zahtevane veščine", + "Required Stats": "Zahtevane lastnosti", + "Requirement Overrides": "Izjeme od predpogojev", + "Setting Name": "Ime igralnega sveta", + "Silver Pieces": "Srebrni kovanci", + "Skill Name": "Ime veščine", + "Start Date": "Datum začetka", + "Starting value for all characters": "Začetna vrednost za vse like", + "Stat": "Lastnost", + "Status": "Status", + "System Notice": "Sistemsko obvestilo", + "Unique Artifact": "Edinstven artefakt", + "Unique Condition": "Edinstveno stanje", + "XP Amount": "Število izkušenjskih točk", + "XP Award": "Dodelitev izkušenjskih točk", + "Reports": "Poročila", + "Pick a report to open it.": "Izberite poročilo, da ga odprete.", + "Open": "Odprto", + "In progress": "V teku", + "Blocked": "Blokirano", + "Date": "Datum", + "Due": "Rok", + "Assignee": "Dodeljeno", + "Who": "Kdo", + "What": "Kaj", + "Minutes": "Minute", + "Entries": "Vnosi", + "Most recent": "Najnovejše", + "Per person": "Na osebo", + "By status": "Po stanju", + "By priority": "Po prednosti", + "Character roster": "Seznam likov", + "Progression": "Napredek", + "World content": "Vsebina sveta", + "Awaiting approval": "Čaka odobritev", + "Player characters": "Igralčevi liki", + "Awards": "Dodelitve", + "Experience": "Izkušnje", + "Experience awarded": "Dodeljene izkušnje", + "Per character": "Na lik", + "By type": "Po vrsti", + "By approval": "Po odobritvi", + "Items carried by characters": "Predmeti, ki jih nosijo liki", + "Conditions on characters": "Stanja na likih", + "Nothing awarded yet": "Še ni nič dodeljeno", + "Who is playing what, and what is still waiting for approval.": "Kdo igra kaj in kaj še čaka odobritev.", + "Experience awarded, and who earned it.": "Dodeljene izkušnje in kdo si jih je prislužil.", + "How much the world holds, and what characters actually carry.": "Koliko svet vsebuje in kaj liki dejansko nosijo.", + "Store": "Trgovina", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Namestite registre, sheme in tokove, ki so jih objavile druge organizacije." }, "plurals": {} } diff --git a/l10n/sq.js b/l10n/sq.js index c4d7b786..8838bad4 100644 --- a/l10n/sq.js +++ b/l10n/sq.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Të ngarkohen të dhëna shembull?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Të dhënat shembull mbushin listat, faqet e detajeve dhe panelet, që ta shihni aplikacionin duke punuar menjëherë. Zgjidhni \"Asnjë\" në një instalim prodhimi.", + "Load the example data": "Ngarko të dhënat shembull", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Ngarkon atë që zgjodhët. Janë qartësisht të dhëna shembull, veprimi mund të përsëritet pa rrezik dhe mund t’i fshini më pas.", + "None, I will set this up myself": "Asnjë, do ta konfiguroj vetë", + "Nothing is imported. You start with an empty app and add your own data.": "Nuk importohet asgjë. Filloni me një aplikacion bosh dhe shtoni të dhënat tuaja.", + "Example data": "Të dhëna shembull", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Vlera shembull për çdo skemë që sjell ky aplikacion, të gjeneruara nga vetë skemat. Tregojnë listat, faqet e detajeve dhe panelet në punë, në vend që të tregojnë një histori. Të përsëritshme pa rrezik dhe të fshishme më pas.", "Larpinq": "Larpinq", "Dashboard": "Paneli", "Characters": "Personazhet", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Asnjë — kjo është një shkathtësi bazë.", "Where the automation lives": "Ku jeton automatizimi", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows është ajo që ndodh pa klikuar askush: një kujtesë para se të skadojë një afat, një konfirmim në dorëzim. Këtu i lexoni dhe i redaktoni — nuk ka asgjë për të ndërtuar tani.", - "Open Flows in the menu": "Hapni Flows në meny" + "Open Flows in the menu": "Hapni Flows në meny", + "Ability Name": "Emri i aftësisë", + "Affected Characters": "Personazhet e prekur", + "Amount of copper pieces": "Sasia e monedhave prej bakri", + "Amount of gold pieces": "Sasia e monedhave prej ari", + "Amount of silver pieces": "Sasia e monedhave prej argjendi", + "Automatic system notices": "Njoftime automatike të sistemit", + "Award Reason": "Arsyeja e dhënies", + "Awarded At": "Dhënë më", + "Awarded By": "Dhënë nga", + "Background Story": "Historia e sfondit", + "Base Value": "Vlera bazë", + "Character Card": "Karta e personazhit", + "Character Name": "Emri i personazhit", + "Checked In At": "Mbërritja u regjistrua më", + "Checked In By": "Mbërritja u regjistrua nga", + "Condition Name": "Emri i gjendjes", + "Contact email address": "Adresa e e-mailit për kontakt", + "Copper Pieces": "Monedha prej bakri", + "Effect Name": "Emri i efektit", + "End Date": "Data e mbarimit", + "Event Name": "Emri i ngjarjes", + "Event description": "Përshkrimi i ngjarjes", + "Event end date and time": "Data dhe ora e mbarimit të ngjarjes", + "Event location": "Vendndodhja e ngjarjes", + "Event name": "Emri i ngjarjes", + "Event start date and time": "Data dhe ora e fillimit të ngjarjes", + "Faith": "Besimi", + "Full name of the player": "Emri i plotë i lojtarit", + "Game Master Notes (Private)": "Shënimet e udhëheqësit të lojës (private)", + "Game Master Notes (Public)": "Shënimet e udhëheqësit të lojës (publike)", + "Gold Pieces": "Monedha prej ari", + "Item Name": "Emri i artikullit", + "Items and Money": "Artikujt dhe paratë", + "Mechanical Effect": "Efekti në lojë", + "Modifier Value": "Vlera e modifikuesit", + "Name of the condition": "Emri i gjendjes", + "Name of the effect": "Emri i efektit", + "Name of the event": "Emri i ngjarjes", + "Name of the item": "Emri i artikullit", + "Name of the skill": "Emri i shkathtësisë", + "Name of the stat": "Emri i tiparit", + "Nextcloud user": "Përdorues i Nextcloud", + "Notes about items and money": "Shënime për artikujt dhe paratë", + "Notes about the player": "Shënime për lojtarin", + "Overridden At": "Përjashtimi u dha më", + "Overridden By": "Përjashtimi u dha nga", + "Override Reason": "Arsyeja e përjashtimit", + "Owner": "Pronari", + "Owner UID": "UID i pronarit", + "Participating Characters": "Personazhet pjesëmarrës", + "Player Name": "Emri i lojtarit", + "Post-Event Effects": "Efektet pas ngjarjes", + "Real name of the player": "Emri i vërtetë i lojtarit", + "Required Conditions": "Gjendjet e nevojshme", + "Required Effects": "Efektet e nevojshme", + "Required Score": "Vlera e nevojshme", + "Required Skills": "Shkathtësitë e nevojshme", + "Required Stats": "Tiparet e nevojshme", + "Requirement Overrides": "Përjashtimet nga parakushtet", + "Setting Name": "Emri i botës së lojës", + "Silver Pieces": "Monedha prej argjendi", + "Skill Name": "Emri i shkathtësisë", + "Start Date": "Data e fillimit", + "Starting value for all characters": "Vlera fillestare për të gjithë personazhet", + "Stat": "Tipar", + "Status": "Statusi", + "System Notice": "Njoftim i sistemit", + "Unique Artifact": "Artefakt unik", + "Unique Condition": "Gjendje unike", + "XP Amount": "Sasia e pikëve të përvojës", + "XP Award": "Dhënie e pikëve të përvojës", + "Reports": "Raportet", + "Pick a report to open it.": "Zgjidhni një raport për ta hapur.", + "Open": "Hapur", + "In progress": "Në vazhdim", + "Blocked": "Bllokuar", + "Date": "Data", + "Due": "Afati", + "Assignee": "Caktuar për", + "Who": "Kush", + "What": "Çfarë", + "Minutes": "Minuta", + "Entries": "Regjistrime", + "Most recent": "Më të fundit", + "Per person": "Për person", + "By status": "Sipas statusit", + "By priority": "Sipas përparësisë", + "Character roster": "Lista e personazheve", + "Progression": "Përparimi", + "World content": "Përmbajtja e botës", + "Awaiting approval": "Në pritje të miratimit", + "Player characters": "Personazhet e lojtarëve", + "Awards": "Dhëniet", + "Experience": "Përvojë", + "Experience awarded": "Përvojë e dhënë", + "Per character": "Për personazh", + "By type": "Sipas llojit", + "By approval": "Sipas miratimit", + "Items carried by characters": "Sende që mbajnë personazhet", + "Conditions on characters": "Gjendjet e personazheve", + "Nothing awarded yet": "Ende asgjë nuk është dhënë", + "Who is playing what, and what is still waiting for approval.": "Kush luan çfarë, dhe çfarë pret ende miratim.", + "Experience awarded, and who earned it.": "Përvoja e dhënë dhe kush e fitoi atë.", + "How much the world holds, and what characters actually carry.": "Sa mban bota dhe çfarë mbajnë vërtet personazhet.", + "Store": "Dyqani", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Instaloni regjistra, skema dhe rrjedha të publikuara nga organizata të tjera." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/sq.json b/l10n/sq.json index f0021e8d..d58df67b 100644 --- a/l10n/sq.json +++ b/l10n/sq.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Të ngarkohen të dhëna shembull?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Të dhënat shembull mbushin listat, faqet e detajeve dhe panelet, që ta shihni aplikacionin duke punuar menjëherë. Zgjidhni \"Asnjë\" në një instalim prodhimi.", + "Load the example data": "Ngarko të dhënat shembull", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Ngarkon atë që zgjodhët. Janë qartësisht të dhëna shembull, veprimi mund të përsëritet pa rrezik dhe mund t’i fshini më pas.", + "None, I will set this up myself": "Asnjë, do ta konfiguroj vetë", + "Nothing is imported. You start with an empty app and add your own data.": "Nuk importohet asgjë. Filloni me një aplikacion bosh dhe shtoni të dhënat tuaja.", + "Example data": "Të dhëna shembull", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Vlera shembull për çdo skemë që sjell ky aplikacion, të gjeneruara nga vetë skemat. Tregojnë listat, faqet e detajeve dhe panelet në punë, në vend që të tregojnë një histori. Të përsëritshme pa rrezik dhe të fshishme më pas.", "Larpinq": "Larpinq", "Dashboard": "Paneli", "Characters": "Personazhet", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Asnjë — kjo është një shkathtësi bazë.", "Where the automation lives": "Ku jeton automatizimi", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows është ajo që ndodh pa klikuar askush: një kujtesë para se të skadojë një afat, një konfirmim në dorëzim. Këtu i lexoni dhe i redaktoni — nuk ka asgjë për të ndërtuar tani.", - "Open Flows in the menu": "Hapni Flows në meny" + "Open Flows in the menu": "Hapni Flows në meny", + "Ability Name": "Emri i aftësisë", + "Affected Characters": "Personazhet e prekur", + "Amount of copper pieces": "Sasia e monedhave prej bakri", + "Amount of gold pieces": "Sasia e monedhave prej ari", + "Amount of silver pieces": "Sasia e monedhave prej argjendi", + "Automatic system notices": "Njoftime automatike të sistemit", + "Award Reason": "Arsyeja e dhënies", + "Awarded At": "Dhënë më", + "Awarded By": "Dhënë nga", + "Background Story": "Historia e sfondit", + "Base Value": "Vlera bazë", + "Character Card": "Karta e personazhit", + "Character Name": "Emri i personazhit", + "Checked In At": "Mbërritja u regjistrua më", + "Checked In By": "Mbërritja u regjistrua nga", + "Condition Name": "Emri i gjendjes", + "Contact email address": "Adresa e e-mailit për kontakt", + "Copper Pieces": "Monedha prej bakri", + "Effect Name": "Emri i efektit", + "End Date": "Data e mbarimit", + "Event Name": "Emri i ngjarjes", + "Event description": "Përshkrimi i ngjarjes", + "Event end date and time": "Data dhe ora e mbarimit të ngjarjes", + "Event location": "Vendndodhja e ngjarjes", + "Event name": "Emri i ngjarjes", + "Event start date and time": "Data dhe ora e fillimit të ngjarjes", + "Faith": "Besimi", + "Full name of the player": "Emri i plotë i lojtarit", + "Game Master Notes (Private)": "Shënimet e udhëheqësit të lojës (private)", + "Game Master Notes (Public)": "Shënimet e udhëheqësit të lojës (publike)", + "Gold Pieces": "Monedha prej ari", + "Item Name": "Emri i artikullit", + "Items and Money": "Artikujt dhe paratë", + "Mechanical Effect": "Efekti në lojë", + "Modifier Value": "Vlera e modifikuesit", + "Name of the condition": "Emri i gjendjes", + "Name of the effect": "Emri i efektit", + "Name of the event": "Emri i ngjarjes", + "Name of the item": "Emri i artikullit", + "Name of the skill": "Emri i shkathtësisë", + "Name of the stat": "Emri i tiparit", + "Nextcloud user": "Përdorues i Nextcloud", + "Notes about items and money": "Shënime për artikujt dhe paratë", + "Notes about the player": "Shënime për lojtarin", + "Overridden At": "Përjashtimi u dha më", + "Overridden By": "Përjashtimi u dha nga", + "Override Reason": "Arsyeja e përjashtimit", + "Owner": "Pronari", + "Owner UID": "UID i pronarit", + "Participating Characters": "Personazhet pjesëmarrës", + "Player Name": "Emri i lojtarit", + "Post-Event Effects": "Efektet pas ngjarjes", + "Real name of the player": "Emri i vërtetë i lojtarit", + "Required Conditions": "Gjendjet e nevojshme", + "Required Effects": "Efektet e nevojshme", + "Required Score": "Vlera e nevojshme", + "Required Skills": "Shkathtësitë e nevojshme", + "Required Stats": "Tiparet e nevojshme", + "Requirement Overrides": "Përjashtimet nga parakushtet", + "Setting Name": "Emri i botës së lojës", + "Silver Pieces": "Monedha prej argjendi", + "Skill Name": "Emri i shkathtësisë", + "Start Date": "Data e fillimit", + "Starting value for all characters": "Vlera fillestare për të gjithë personazhet", + "Stat": "Tipar", + "Status": "Statusi", + "System Notice": "Njoftim i sistemit", + "Unique Artifact": "Artefakt unik", + "Unique Condition": "Gjendje unike", + "XP Amount": "Sasia e pikëve të përvojës", + "XP Award": "Dhënie e pikëve të përvojës", + "Reports": "Raportet", + "Pick a report to open it.": "Zgjidhni një raport për ta hapur.", + "Open": "Hapur", + "In progress": "Në vazhdim", + "Blocked": "Bllokuar", + "Date": "Data", + "Due": "Afati", + "Assignee": "Caktuar për", + "Who": "Kush", + "What": "Çfarë", + "Minutes": "Minuta", + "Entries": "Regjistrime", + "Most recent": "Më të fundit", + "Per person": "Për person", + "By status": "Sipas statusit", + "By priority": "Sipas përparësisë", + "Character roster": "Lista e personazheve", + "Progression": "Përparimi", + "World content": "Përmbajtja e botës", + "Awaiting approval": "Në pritje të miratimit", + "Player characters": "Personazhet e lojtarëve", + "Awards": "Dhëniet", + "Experience": "Përvojë", + "Experience awarded": "Përvojë e dhënë", + "Per character": "Për personazh", + "By type": "Sipas llojit", + "By approval": "Sipas miratimit", + "Items carried by characters": "Sende që mbajnë personazhet", + "Conditions on characters": "Gjendjet e personazheve", + "Nothing awarded yet": "Ende asgjë nuk është dhënë", + "Who is playing what, and what is still waiting for approval.": "Kush luan çfarë, dhe çfarë pret ende miratim.", + "Experience awarded, and who earned it.": "Përvoja e dhënë dhe kush e fitoi atë.", + "How much the world holds, and what characters actually carry.": "Sa mban bota dhe çfarë mbajnë vërtet personazhet.", + "Store": "Dyqani", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Instaloni regjistra, skema dhe rrjedha të publikuara nga organizata të tjera." }, "plurals": {} } diff --git a/l10n/sr.js b/l10n/sr.js index 91a39780..703e03ef 100644 --- a/l10n/sr.js +++ b/l10n/sr.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Учитати примере података?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Примери података попуњавају листе, странице са детаљима и командне табле, па апликацију одмах видите како ради. Изаберите \"Ништа\" на продукцијској инсталацији.", + "Load the example data": "Учитај примере података", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Учитава оно што сте изабрали. То су очигледно примери података, радња се може безбедно поновити, а после их можете обрисати.", + "None, I will set this up myself": "Ништа, сам ћу ово подесити", + "Nothing is imported. You start with an empty app and add your own data.": "Ништа се не увози. Почињете са празном апликацијом и додајете сопствене податке.", + "Example data": "Примери података", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Примери вредности за сваку шему коју ова апликација доноси, генерисани из самих шема. Показују листе, странице са детаљима и командне табле у раду уместо да причају причу. Безбедно за понављање и брисање после.", "Larpinq": "Larpinq", "Dashboard": "Контролна табла", "Characters": "Ликови", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Нема — ово је основна вештина.", "Where the automation lives": "Где живи аутоматизација", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows је оно што се дешава без ичијег клика: подсетник пре истека рока, потврда при предаји. Овде их читаш и уређујеш — сада нема шта да се гради.", - "Open Flows in the menu": "Отвори Flows у менију" + "Open Flows in the menu": "Отвори Flows у менију", + "Ability Name": "Назив способности", + "Affected Characters": "Обухваћени ликови", + "Amount of copper pieces": "Број бакарних новчића", + "Amount of gold pieces": "Број златних новчића", + "Amount of silver pieces": "Број сребрних новчића", + "Automatic system notices": "Аутоматска системска обавештења", + "Award Reason": "Разлог доделе", + "Awarded At": "Додељено", + "Awarded By": "Доделио", + "Background Story": "Позадинска прича", + "Base Value": "Основна вредност", + "Character Card": "Картица лика", + "Character Name": "Име лика", + "Checked In At": "Долазак забележен", + "Checked In By": "Долазак забележио", + "Condition Name": "Назив стања", + "Contact email address": "Контакт адреса е-поште", + "Copper Pieces": "Бакарни новчићи", + "Effect Name": "Назив ефекта", + "End Date": "Датум завршетка", + "Event Name": "Назив догађаја", + "Event description": "Опис догађаја", + "Event end date and time": "Датум и време завршетка догађаја", + "Event location": "Место догађаја", + "Event name": "Назив догађаја", + "Event start date and time": "Датум и време почетка догађаја", + "Faith": "Вера", + "Full name of the player": "Пуно име играча", + "Game Master Notes (Private)": "Белешке водитеља игре (приватне)", + "Game Master Notes (Public)": "Белешке водитеља игре (јавне)", + "Gold Pieces": "Златни новчићи", + "Item Name": "Назив предмета", + "Items and Money": "Предмети и новац", + "Mechanical Effect": "Ефекат у игри", + "Modifier Value": "Вредност модификатора", + "Name of the condition": "Назив стања", + "Name of the effect": "Назив ефекта", + "Name of the event": "Назив догађаја", + "Name of the item": "Назив предмета", + "Name of the skill": "Назив вештине", + "Name of the stat": "Назив својства", + "Nextcloud user": "Nextcloud корисник", + "Notes about items and money": "Белешке о предметима и новцу", + "Notes about the player": "Белешке о играчу", + "Overridden At": "Изузетак одобрен", + "Overridden By": "Изузетак одобрио", + "Override Reason": "Разлог изузетка", + "Owner": "Власник", + "Owner UID": "UID власника", + "Participating Characters": "Ликови који учествују", + "Player Name": "Име играча", + "Post-Event Effects": "Ефекти након догађаја", + "Real name of the player": "Право име играча", + "Required Conditions": "Потребна стања", + "Required Effects": "Потребни ефекти", + "Required Score": "Потребна вредност", + "Required Skills": "Потребне вештине", + "Required Stats": "Потребна својства", + "Requirement Overrides": "Изузеци од предуслова", + "Setting Name": "Назив света игре", + "Silver Pieces": "Сребрни новчићи", + "Skill Name": "Назив вештине", + "Start Date": "Датум почетка", + "Starting value for all characters": "Почетна вредност за све ликове", + "Stat": "Својство", + "Status": "Статус", + "System Notice": "Системско обавештење", + "Unique Artifact": "Јединствени артефакт", + "Unique Condition": "Јединствено стање", + "XP Amount": "Број поена искуства", + "XP Award": "Додела поена искуства", + "Reports": "Извештаји", + "Pick a report to open it.": "Изаберите извештај да бисте га отворили.", + "Open": "Отворено", + "In progress": "У току", + "Blocked": "Блокирано", + "Date": "Датум", + "Due": "Рок", + "Assignee": "Додељено", + "Who": "Ко", + "What": "Шта", + "Minutes": "Минути", + "Entries": "Уноси", + "Most recent": "Најновије", + "Per person": "По особи", + "By status": "По статусу", + "By priority": "По приоритету", + "Character roster": "Списак ликова", + "Progression": "Напредак", + "World content": "Садржај света", + "Awaiting approval": "Чека одобрење", + "Player characters": "Ликови играча", + "Awards": "Доделе", + "Experience": "Искуство", + "Experience awarded": "Додељено искуство", + "Per character": "По лику", + "By type": "По типу", + "By approval": "По одобрењу", + "Items carried by characters": "Предмети које ликови носе", + "Conditions on characters": "Стања на ликовима", + "Nothing awarded yet": "Још ништа није додељено", + "Who is playing what, and what is still waiting for approval.": "Ко шта игра и шта још чека одобрење.", + "Experience awarded, and who earned it.": "Додељено искуство и ко га је зарадио.", + "How much the world holds, and what characters actually carry.": "Колико свет садржи и шта ликови заиста носе.", + "Store": "Продавница", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Инсталирајте регистре, шеме и токове које су објавиле друге организације." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/sr.json b/l10n/sr.json index ee0caea7..0fe01a64 100644 --- a/l10n/sr.json +++ b/l10n/sr.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Учитати примере података?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Примери података попуњавају листе, странице са детаљима и командне табле, па апликацију одмах видите како ради. Изаберите \"Ништа\" на продукцијској инсталацији.", + "Load the example data": "Учитај примере података", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Учитава оно што сте изабрали. То су очигледно примери података, радња се може безбедно поновити, а после их можете обрисати.", + "None, I will set this up myself": "Ништа, сам ћу ово подесити", + "Nothing is imported. You start with an empty app and add your own data.": "Ништа се не увози. Почињете са празном апликацијом и додајете сопствене податке.", + "Example data": "Примери података", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Примери вредности за сваку шему коју ова апликација доноси, генерисани из самих шема. Показују листе, странице са детаљима и командне табле у раду уместо да причају причу. Безбедно за понављање и брисање после.", "Larpinq": "Larpinq", "Dashboard": "Контролна табла", "Characters": "Ликови", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Нема — ово је основна вештина.", "Where the automation lives": "Где живи аутоматизација", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows је оно што се дешава без ичијег клика: подсетник пре истека рока, потврда при предаји. Овде их читаш и уређујеш — сада нема шта да се гради.", - "Open Flows in the menu": "Отвори Flows у менију" + "Open Flows in the menu": "Отвори Flows у менију", + "Ability Name": "Назив способности", + "Affected Characters": "Обухваћени ликови", + "Amount of copper pieces": "Број бакарних новчића", + "Amount of gold pieces": "Број златних новчића", + "Amount of silver pieces": "Број сребрних новчића", + "Automatic system notices": "Аутоматска системска обавештења", + "Award Reason": "Разлог доделе", + "Awarded At": "Додељено", + "Awarded By": "Доделио", + "Background Story": "Позадинска прича", + "Base Value": "Основна вредност", + "Character Card": "Картица лика", + "Character Name": "Име лика", + "Checked In At": "Долазак забележен", + "Checked In By": "Долазак забележио", + "Condition Name": "Назив стања", + "Contact email address": "Контакт адреса е-поште", + "Copper Pieces": "Бакарни новчићи", + "Effect Name": "Назив ефекта", + "End Date": "Датум завршетка", + "Event Name": "Назив догађаја", + "Event description": "Опис догађаја", + "Event end date and time": "Датум и време завршетка догађаја", + "Event location": "Место догађаја", + "Event name": "Назив догађаја", + "Event start date and time": "Датум и време почетка догађаја", + "Faith": "Вера", + "Full name of the player": "Пуно име играча", + "Game Master Notes (Private)": "Белешке водитеља игре (приватне)", + "Game Master Notes (Public)": "Белешке водитеља игре (јавне)", + "Gold Pieces": "Златни новчићи", + "Item Name": "Назив предмета", + "Items and Money": "Предмети и новац", + "Mechanical Effect": "Ефекат у игри", + "Modifier Value": "Вредност модификатора", + "Name of the condition": "Назив стања", + "Name of the effect": "Назив ефекта", + "Name of the event": "Назив догађаја", + "Name of the item": "Назив предмета", + "Name of the skill": "Назив вештине", + "Name of the stat": "Назив својства", + "Nextcloud user": "Nextcloud корисник", + "Notes about items and money": "Белешке о предметима и новцу", + "Notes about the player": "Белешке о играчу", + "Overridden At": "Изузетак одобрен", + "Overridden By": "Изузетак одобрио", + "Override Reason": "Разлог изузетка", + "Owner": "Власник", + "Owner UID": "UID власника", + "Participating Characters": "Ликови који учествују", + "Player Name": "Име играча", + "Post-Event Effects": "Ефекти након догађаја", + "Real name of the player": "Право име играча", + "Required Conditions": "Потребна стања", + "Required Effects": "Потребни ефекти", + "Required Score": "Потребна вредност", + "Required Skills": "Потребне вештине", + "Required Stats": "Потребна својства", + "Requirement Overrides": "Изузеци од предуслова", + "Setting Name": "Назив света игре", + "Silver Pieces": "Сребрни новчићи", + "Skill Name": "Назив вештине", + "Start Date": "Датум почетка", + "Starting value for all characters": "Почетна вредност за све ликове", + "Stat": "Својство", + "Status": "Статус", + "System Notice": "Системско обавештење", + "Unique Artifact": "Јединствени артефакт", + "Unique Condition": "Јединствено стање", + "XP Amount": "Број поена искуства", + "XP Award": "Додела поена искуства", + "Reports": "Извештаји", + "Pick a report to open it.": "Изаберите извештај да бисте га отворили.", + "Open": "Отворено", + "In progress": "У току", + "Blocked": "Блокирано", + "Date": "Датум", + "Due": "Рок", + "Assignee": "Додељено", + "Who": "Ко", + "What": "Шта", + "Minutes": "Минути", + "Entries": "Уноси", + "Most recent": "Најновије", + "Per person": "По особи", + "By status": "По статусу", + "By priority": "По приоритету", + "Character roster": "Списак ликова", + "Progression": "Напредак", + "World content": "Садржај света", + "Awaiting approval": "Чека одобрење", + "Player characters": "Ликови играча", + "Awards": "Доделе", + "Experience": "Искуство", + "Experience awarded": "Додељено искуство", + "Per character": "По лику", + "By type": "По типу", + "By approval": "По одобрењу", + "Items carried by characters": "Предмети које ликови носе", + "Conditions on characters": "Стања на ликовима", + "Nothing awarded yet": "Још ништа није додељено", + "Who is playing what, and what is still waiting for approval.": "Ко шта игра и шта још чека одобрење.", + "Experience awarded, and who earned it.": "Додељено искуство и ко га је зарадио.", + "How much the world holds, and what characters actually carry.": "Колико свет садржи и шта ликови заиста носе.", + "Store": "Продавница", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Инсталирајте регистре, шеме и токове које су објавиле друге организације." }, "plurals": {} } diff --git a/l10n/sv.js b/l10n/sv.js index 14f79034..4086f650 100644 --- a/l10n/sv.js +++ b/l10n/sv.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Läsa in exempeldata?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Exempeldata fyller listor, detaljsidor och instrumentpaneler, så att du direkt ser appen fungera. Välj \"Inga\" vid en produktionsinstallation.", + "Load the example data": "Läs in exempeldata", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Läser in det du valde. Det är tydligt exempeldata, åtgärden kan upprepas utan risk och du kan ta bort dem efteråt.", + "None, I will set this up myself": "Inga, jag ställer in det själv", + "Nothing is imported. You start with an empty app and add your own data.": "Ingenting importeras. Du börjar med en tom app och lägger till dina egna data.", + "Example data": "Exempeldata", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Exempelvärden för varje schema som appen levererar, genererade ur schemana själva. De visar listor, detaljsidor och instrumentpaneler i drift i stället för att berätta en historia. Kan upprepas utan risk och tas bort efteråt.", "Larpinq": "Larpinq", "Dashboard": "Översikt", "Characters": "Karaktärer", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Inga — detta är en grundfärdighet.", "Where the automation lives": "Där automatiseringen bor", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows är det som händer utan att någon klickar: en påminnelse innan en tidsfrist löper ut, en bekräftelse vid inlämning. Här läser och redigerar du dem — det finns inget att bygga nu.", - "Open Flows in the menu": "Öppna Flows i menyn" + "Open Flows in the menu": "Öppna Flows i menyn", + "Ability Name": "Namn på förmågan", + "Affected Characters": "Berörda karaktärer", + "Amount of copper pieces": "Antal kopparmynt", + "Amount of gold pieces": "Antal guldmynt", + "Amount of silver pieces": "Antal silvermynt", + "Automatic system notices": "Automatiska systemmeddelanden", + "Award Reason": "Skäl till tilldelningen", + "Awarded At": "Tilldelad den", + "Awarded By": "Tilldelad av", + "Background Story": "Bakgrundshistoria", + "Base Value": "Basvärde", + "Character Card": "Karaktärskort", + "Character Name": "Namn på karaktären", + "Checked In At": "Incheckad den", + "Checked In By": "Incheckad av", + "Condition Name": "Namn på tillståndet", + "Contact email address": "E-postadress för kontakt", + "Copper Pieces": "Kopparmynt", + "Effect Name": "Namn på effekten", + "End Date": "Slutdatum", + "Event Name": "Namn på evenemanget", + "Event description": "Beskrivning av evenemanget", + "Event end date and time": "Slutdatum och -tid för evenemanget", + "Event location": "Plats för evenemanget", + "Event name": "Namn på evenemanget", + "Event start date and time": "Startdatum och -tid för evenemanget", + "Faith": "Tro", + "Full name of the player": "Spelarens fullständiga namn", + "Game Master Notes (Private)": "Spelledarens anteckningar (privata)", + "Game Master Notes (Public)": "Spelledarens anteckningar (offentliga)", + "Gold Pieces": "Guldmynt", + "Item Name": "Namn på föremålet", + "Items and Money": "Föremål och pengar", + "Mechanical Effect": "Spelteknisk effekt", + "Modifier Value": "Modifierarens värde", + "Name of the condition": "Namn på tillståndet", + "Name of the effect": "Namn på effekten", + "Name of the event": "Namn på evenemanget", + "Name of the item": "Namn på föremålet", + "Name of the skill": "Namn på färdigheten", + "Name of the stat": "Namn på attributet", + "Nextcloud user": "Nextcloud-användare", + "Notes about items and money": "Anteckningar om föremål och pengar", + "Notes about the player": "Anteckningar om spelaren", + "Overridden At": "Åsidosatt den", + "Overridden By": "Åsidosatt av", + "Override Reason": "Skäl till åsidosättandet", + "Owner": "Ägare", + "Owner UID": "Ägarens UID", + "Participating Characters": "Deltagande karaktärer", + "Player Name": "Namn på spelaren", + "Post-Event Effects": "Effekter efter evenemanget", + "Real name of the player": "Spelarens riktiga namn", + "Required Conditions": "Nödvändiga tillstånd", + "Required Effects": "Nödvändiga effekter", + "Required Score": "Nödvändigt värde", + "Required Skills": "Nödvändiga färdigheter", + "Required Stats": "Nödvändiga attribut", + "Requirement Overrides": "Åsidosatta förkunskapskrav", + "Setting Name": "Namn på spelvärlden", + "Silver Pieces": "Silvermynt", + "Skill Name": "Namn på färdigheten", + "Start Date": "Startdatum", + "Starting value for all characters": "Startvärde för alla karaktärer", + "Stat": "Attribut", + "Status": "Status", + "System Notice": "Systemmeddelande", + "Unique Artifact": "Unik artefakt", + "Unique Condition": "Unikt tillstånd", + "XP Amount": "Antal erfarenhetspoäng", + "XP Award": "XP-tilldelning", + "Reports": "Rapporter", + "Pick a report to open it.": "Välj en rapport för att öppna den.", + "Open": "Öppen", + "In progress": "Pågår", + "Blocked": "Blockerad", + "Date": "Datum", + "Due": "Förfaller", + "Assignee": "Tilldelad", + "Who": "Vem", + "What": "Vad", + "Minutes": "Minuter", + "Entries": "Poster", + "Most recent": "Senaste", + "Per person": "Per person", + "By status": "Efter status", + "By priority": "Efter prioritet", + "Character roster": "Rollista", + "Progression": "Progression", + "World content": "Världens innehåll", + "Awaiting approval": "Väntar på godkännande", + "Player characters": "Spelarkaraktärer", + "Awards": "Tilldelningar", + "Experience": "Erfarenhet", + "Experience awarded": "Tilldelad erfarenhet", + "Per character": "Per karaktär", + "By type": "Efter typ", + "By approval": "Efter godkännande", + "Items carried by characters": "Föremål som karaktärer bär", + "Conditions on characters": "Tillstånd på karaktärer", + "Nothing awarded yet": "Inget tilldelat ännu", + "Who is playing what, and what is still waiting for approval.": "Vem som spelar vad, och vad som fortfarande väntar på godkännande.", + "Experience awarded, and who earned it.": "Tilldelad erfarenhet, och vem som förtjänat den.", + "How much the world holds, and what characters actually carry.": "Hur mycket världen rymmer, och vad karaktärerna faktiskt bär.", + "Store": "Butik", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Installera register, scheman och flöden som andra organisationer har publicerat." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/sv.json b/l10n/sv.json index f6f363e2..d0aa89a2 100644 --- a/l10n/sv.json +++ b/l10n/sv.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Läsa in exempeldata?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Exempeldata fyller listor, detaljsidor och instrumentpaneler, så att du direkt ser appen fungera. Välj \"Inga\" vid en produktionsinstallation.", + "Load the example data": "Läs in exempeldata", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Läser in det du valde. Det är tydligt exempeldata, åtgärden kan upprepas utan risk och du kan ta bort dem efteråt.", + "None, I will set this up myself": "Inga, jag ställer in det själv", + "Nothing is imported. You start with an empty app and add your own data.": "Ingenting importeras. Du börjar med en tom app och lägger till dina egna data.", + "Example data": "Exempeldata", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Exempelvärden för varje schema som appen levererar, genererade ur schemana själva. De visar listor, detaljsidor och instrumentpaneler i drift i stället för att berätta en historia. Kan upprepas utan risk och tas bort efteråt.", "Larpinq": "Larpinq", "Dashboard": "Översikt", "Characters": "Karaktärer", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Inga — detta är en grundfärdighet.", "Where the automation lives": "Där automatiseringen bor", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows är det som händer utan att någon klickar: en påminnelse innan en tidsfrist löper ut, en bekräftelse vid inlämning. Här läser och redigerar du dem — det finns inget att bygga nu.", - "Open Flows in the menu": "Öppna Flows i menyn" + "Open Flows in the menu": "Öppna Flows i menyn", + "Ability Name": "Namn på förmågan", + "Affected Characters": "Berörda karaktärer", + "Amount of copper pieces": "Antal kopparmynt", + "Amount of gold pieces": "Antal guldmynt", + "Amount of silver pieces": "Antal silvermynt", + "Automatic system notices": "Automatiska systemmeddelanden", + "Award Reason": "Skäl till tilldelningen", + "Awarded At": "Tilldelad den", + "Awarded By": "Tilldelad av", + "Background Story": "Bakgrundshistoria", + "Base Value": "Basvärde", + "Character Card": "Karaktärskort", + "Character Name": "Namn på karaktären", + "Checked In At": "Incheckad den", + "Checked In By": "Incheckad av", + "Condition Name": "Namn på tillståndet", + "Contact email address": "E-postadress för kontakt", + "Copper Pieces": "Kopparmynt", + "Effect Name": "Namn på effekten", + "End Date": "Slutdatum", + "Event Name": "Namn på evenemanget", + "Event description": "Beskrivning av evenemanget", + "Event end date and time": "Slutdatum och -tid för evenemanget", + "Event location": "Plats för evenemanget", + "Event name": "Namn på evenemanget", + "Event start date and time": "Startdatum och -tid för evenemanget", + "Faith": "Tro", + "Full name of the player": "Spelarens fullständiga namn", + "Game Master Notes (Private)": "Spelledarens anteckningar (privata)", + "Game Master Notes (Public)": "Spelledarens anteckningar (offentliga)", + "Gold Pieces": "Guldmynt", + "Item Name": "Namn på föremålet", + "Items and Money": "Föremål och pengar", + "Mechanical Effect": "Spelteknisk effekt", + "Modifier Value": "Modifierarens värde", + "Name of the condition": "Namn på tillståndet", + "Name of the effect": "Namn på effekten", + "Name of the event": "Namn på evenemanget", + "Name of the item": "Namn på föremålet", + "Name of the skill": "Namn på färdigheten", + "Name of the stat": "Namn på attributet", + "Nextcloud user": "Nextcloud-användare", + "Notes about items and money": "Anteckningar om föremål och pengar", + "Notes about the player": "Anteckningar om spelaren", + "Overridden At": "Åsidosatt den", + "Overridden By": "Åsidosatt av", + "Override Reason": "Skäl till åsidosättandet", + "Owner": "Ägare", + "Owner UID": "Ägarens UID", + "Participating Characters": "Deltagande karaktärer", + "Player Name": "Namn på spelaren", + "Post-Event Effects": "Effekter efter evenemanget", + "Real name of the player": "Spelarens riktiga namn", + "Required Conditions": "Nödvändiga tillstånd", + "Required Effects": "Nödvändiga effekter", + "Required Score": "Nödvändigt värde", + "Required Skills": "Nödvändiga färdigheter", + "Required Stats": "Nödvändiga attribut", + "Requirement Overrides": "Åsidosatta förkunskapskrav", + "Setting Name": "Namn på spelvärlden", + "Silver Pieces": "Silvermynt", + "Skill Name": "Namn på färdigheten", + "Start Date": "Startdatum", + "Starting value for all characters": "Startvärde för alla karaktärer", + "Stat": "Attribut", + "Status": "Status", + "System Notice": "Systemmeddelande", + "Unique Artifact": "Unik artefakt", + "Unique Condition": "Unikt tillstånd", + "XP Amount": "Antal erfarenhetspoäng", + "XP Award": "XP-tilldelning", + "Reports": "Rapporter", + "Pick a report to open it.": "Välj en rapport för att öppna den.", + "Open": "Öppen", + "In progress": "Pågår", + "Blocked": "Blockerad", + "Date": "Datum", + "Due": "Förfaller", + "Assignee": "Tilldelad", + "Who": "Vem", + "What": "Vad", + "Minutes": "Minuter", + "Entries": "Poster", + "Most recent": "Senaste", + "Per person": "Per person", + "By status": "Efter status", + "By priority": "Efter prioritet", + "Character roster": "Rollista", + "Progression": "Progression", + "World content": "Världens innehåll", + "Awaiting approval": "Väntar på godkännande", + "Player characters": "Spelarkaraktärer", + "Awards": "Tilldelningar", + "Experience": "Erfarenhet", + "Experience awarded": "Tilldelad erfarenhet", + "Per character": "Per karaktär", + "By type": "Efter typ", + "By approval": "Efter godkännande", + "Items carried by characters": "Föremål som karaktärer bär", + "Conditions on characters": "Tillstånd på karaktärer", + "Nothing awarded yet": "Inget tilldelat ännu", + "Who is playing what, and what is still waiting for approval.": "Vem som spelar vad, och vad som fortfarande väntar på godkännande.", + "Experience awarded, and who earned it.": "Tilldelad erfarenhet, och vem som förtjänat den.", + "How much the world holds, and what characters actually carry.": "Hur mycket världen rymmer, och vad karaktärerna faktiskt bär.", + "Store": "Butik", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Installera register, scheman och flöden som andra organisationer har publicerat." }, "plurals": {} } diff --git a/l10n/tr.js b/l10n/tr.js index 88459be9..960ca159 100644 --- a/l10n/tr.js +++ b/l10n/tr.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Örnek veriler yüklensin mi?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Örnek veriler listeleri, ayrıntı sayfalarını ve panoları doldurur; böylece uygulamayı hemen çalışırken görürsünüz. Üretim kurulumunda \"Hiçbiri\" seçin.", + "Load the example data": "Örnek verileri yükle", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Seçtiğinizi yükler. Bunlar açıkça örnek verilerdir, işlem birden çok kez güvenle çalıştırılabilir ve sonrasında silebilirsiniz.", + "None, I will set this up myself": "Hiçbiri, bunu kendim kuracağım", + "Nothing is imported. You start with an empty app and add your own data.": "Hiçbir şey içe aktarılmaz. Boş bir uygulamayla başlar ve kendi verilerinizi eklersiniz.", + "Example data": "Örnek veriler", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Bu uygulamanın getirdiği her şema için, şemaların kendisinden üretilmiş örnek değerler. Bir hikâye anlatmak yerine listeleri, ayrıntı sayfalarını ve panoları çalışırken gösterir. Güvenle tekrarlanabilir ve sonrasında silinebilir.", "Larpinq": "Larpinq", "Dashboard": "Kontrol paneli", "Characters": "Karakterler", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Yok — bu bir kök beceridir.", "Where the automation lives": "Otomasyonun yaşadığı yer", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows, kimse tıklamadan olan şeydir: bir süre dolmadan önce bir hatırlatma, gönderimde bir onay. Bunları burada okur ve düzenlersiniz — şimdi inşa edilecek bir şey yok.", - "Open Flows in the menu": "Menüden Flows'u açın" + "Open Flows in the menu": "Menüden Flows'u açın", + "Ability Name": "Yeteneğin adı", + "Affected Characters": "Etkilenen karakterler", + "Amount of copper pieces": "Bakır sikke miktarı", + "Amount of gold pieces": "Altın sikke miktarı", + "Amount of silver pieces": "Gümüş sikke miktarı", + "Automatic system notices": "Otomatik sistem bildirimleri", + "Award Reason": "Verilme nedeni", + "Awarded At": "Verilme tarihi", + "Awarded By": "Veren", + "Background Story": "Geçmiş hikâyesi", + "Base Value": "Temel değer", + "Character Card": "Karakter kartı", + "Character Name": "Karakterin adı", + "Checked In At": "Giriş kaydı tarihi", + "Checked In By": "Giriş kaydını yapan", + "Condition Name": "Durumun adı", + "Contact email address": "İletişim e-posta adresi", + "Copper Pieces": "Bakır sikkeler", + "Effect Name": "Etkinin adı", + "End Date": "Bitiş tarihi", + "Event Name": "Etkinliğin adı", + "Event description": "Etkinliğin açıklaması", + "Event end date and time": "Etkinliğin bitiş tarihi ve saati", + "Event location": "Etkinliğin konumu", + "Event name": "Etkinliğin adı", + "Event start date and time": "Etkinliğin başlangıç tarihi ve saati", + "Faith": "İnanç", + "Full name of the player": "Oyuncunun tam adı", + "Game Master Notes (Private)": "Oyun yöneticisinin notları (özel)", + "Game Master Notes (Public)": "Oyun yöneticisinin notları (herkese açık)", + "Gold Pieces": "Altın sikkeler", + "Item Name": "Eşyanın adı", + "Items and Money": "Eşyalar ve para", + "Mechanical Effect": "Oyun içi etki", + "Modifier Value": "Değiştiricinin değeri", + "Name of the condition": "Durumun adı", + "Name of the effect": "Etkinin adı", + "Name of the event": "Etkinliğin adı", + "Name of the item": "Eşyanın adı", + "Name of the skill": "Becerinin adı", + "Name of the stat": "Özelliğin adı", + "Nextcloud user": "Nextcloud kullanıcısı", + "Notes about items and money": "Eşyalar ve para hakkında notlar", + "Notes about the player": "Oyuncu hakkında notlar", + "Overridden At": "Muafiyet tarihi", + "Overridden By": "Muafiyeti veren", + "Override Reason": "Muafiyet nedeni", + "Owner": "Sahip", + "Owner UID": "Sahibin UID'si", + "Participating Characters": "Katılan karakterler", + "Player Name": "Oyuncunun adı", + "Post-Event Effects": "Etkinlik sonrası etkiler", + "Real name of the player": "Oyuncunun gerçek adı", + "Required Conditions": "Gerekli durumlar", + "Required Effects": "Gerekli etkiler", + "Required Score": "Gerekli değer", + "Required Skills": "Gerekli beceriler", + "Required Stats": "Gerekli özellikler", + "Requirement Overrides": "Ön koşul muafiyetleri", + "Setting Name": "Oyun dünyasının adı", + "Silver Pieces": "Gümüş sikkeler", + "Skill Name": "Becerinin adı", + "Start Date": "Başlangıç tarihi", + "Starting value for all characters": "Tüm karakterler için başlangıç değeri", + "Stat": "Özellik", + "Status": "Durum", + "System Notice": "Sistem bildirimi", + "Unique Artifact": "Benzersiz eser", + "Unique Condition": "Benzersiz durum", + "XP Amount": "Deneyim puanı miktarı", + "XP Award": "Deneyim puanı verilmesi", + "Reports": "Raporlar", + "Pick a report to open it.": "Açmak için bir rapor seçin.", + "Open": "Açık", + "In progress": "Devam ediyor", + "Blocked": "Engellendi", + "Date": "Tarih", + "Due": "Bitiş", + "Assignee": "Atanan", + "Who": "Kim", + "What": "Ne", + "Minutes": "Dakika", + "Entries": "Kayıtlar", + "Most recent": "En yeni", + "Per person": "Kişi başına", + "By status": "Duruma göre", + "By priority": "Önceliğe göre", + "Character roster": "Karakter listesi", + "Progression": "İlerleme", + "World content": "Dünya içeriği", + "Awaiting approval": "Onay bekliyor", + "Player characters": "Oyuncu karakterleri", + "Awards": "Verilenler", + "Experience": "Deneyim", + "Experience awarded": "Verilen deneyim", + "Per character": "Karakter başına", + "By type": "Türe göre", + "By approval": "Onaya göre", + "Items carried by characters": "Karakterlerin taşıdığı eşyalar", + "Conditions on characters": "Karakterlerdeki durumlar", + "Nothing awarded yet": "Henüz bir şey verilmedi", + "Who is playing what, and what is still waiting for approval.": "Kimin ne oynadığı ve neyin hâlâ onay beklediği.", + "Experience awarded, and who earned it.": "Verilen deneyim ve onu kimin kazandığı.", + "How much the world holds, and what characters actually carry.": "Dünyanın ne kadar barındırdığı ve karakterlerin gerçekte ne taşıdığı.", + "Store": "Mağaza", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Diğer kuruluşların yayımladığı kayıtları, şemaları ve akışları yükleyin." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/tr.json b/l10n/tr.json index b8ebee71..f1a7bc1a 100644 --- a/l10n/tr.json +++ b/l10n/tr.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Örnek veriler yüklensin mi?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Örnek veriler listeleri, ayrıntı sayfalarını ve panoları doldurur; böylece uygulamayı hemen çalışırken görürsünüz. Üretim kurulumunda \"Hiçbiri\" seçin.", + "Load the example data": "Örnek verileri yükle", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Seçtiğinizi yükler. Bunlar açıkça örnek verilerdir, işlem birden çok kez güvenle çalıştırılabilir ve sonrasında silebilirsiniz.", + "None, I will set this up myself": "Hiçbiri, bunu kendim kuracağım", + "Nothing is imported. You start with an empty app and add your own data.": "Hiçbir şey içe aktarılmaz. Boş bir uygulamayla başlar ve kendi verilerinizi eklersiniz.", + "Example data": "Örnek veriler", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Bu uygulamanın getirdiği her şema için, şemaların kendisinden üretilmiş örnek değerler. Bir hikâye anlatmak yerine listeleri, ayrıntı sayfalarını ve panoları çalışırken gösterir. Güvenle tekrarlanabilir ve sonrasında silinebilir.", "Larpinq": "Larpinq", "Dashboard": "Kontrol paneli", "Characters": "Karakterler", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Yok — bu bir kök beceridir.", "Where the automation lives": "Otomasyonun yaşadığı yer", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows, kimse tıklamadan olan şeydir: bir süre dolmadan önce bir hatırlatma, gönderimde bir onay. Bunları burada okur ve düzenlersiniz — şimdi inşa edilecek bir şey yok.", - "Open Flows in the menu": "Menüden Flows'u açın" + "Open Flows in the menu": "Menüden Flows'u açın", + "Ability Name": "Yeteneğin adı", + "Affected Characters": "Etkilenen karakterler", + "Amount of copper pieces": "Bakır sikke miktarı", + "Amount of gold pieces": "Altın sikke miktarı", + "Amount of silver pieces": "Gümüş sikke miktarı", + "Automatic system notices": "Otomatik sistem bildirimleri", + "Award Reason": "Verilme nedeni", + "Awarded At": "Verilme tarihi", + "Awarded By": "Veren", + "Background Story": "Geçmiş hikâyesi", + "Base Value": "Temel değer", + "Character Card": "Karakter kartı", + "Character Name": "Karakterin adı", + "Checked In At": "Giriş kaydı tarihi", + "Checked In By": "Giriş kaydını yapan", + "Condition Name": "Durumun adı", + "Contact email address": "İletişim e-posta adresi", + "Copper Pieces": "Bakır sikkeler", + "Effect Name": "Etkinin adı", + "End Date": "Bitiş tarihi", + "Event Name": "Etkinliğin adı", + "Event description": "Etkinliğin açıklaması", + "Event end date and time": "Etkinliğin bitiş tarihi ve saati", + "Event location": "Etkinliğin konumu", + "Event name": "Etkinliğin adı", + "Event start date and time": "Etkinliğin başlangıç tarihi ve saati", + "Faith": "İnanç", + "Full name of the player": "Oyuncunun tam adı", + "Game Master Notes (Private)": "Oyun yöneticisinin notları (özel)", + "Game Master Notes (Public)": "Oyun yöneticisinin notları (herkese açık)", + "Gold Pieces": "Altın sikkeler", + "Item Name": "Eşyanın adı", + "Items and Money": "Eşyalar ve para", + "Mechanical Effect": "Oyun içi etki", + "Modifier Value": "Değiştiricinin değeri", + "Name of the condition": "Durumun adı", + "Name of the effect": "Etkinin adı", + "Name of the event": "Etkinliğin adı", + "Name of the item": "Eşyanın adı", + "Name of the skill": "Becerinin adı", + "Name of the stat": "Özelliğin adı", + "Nextcloud user": "Nextcloud kullanıcısı", + "Notes about items and money": "Eşyalar ve para hakkında notlar", + "Notes about the player": "Oyuncu hakkında notlar", + "Overridden At": "Muafiyet tarihi", + "Overridden By": "Muafiyeti veren", + "Override Reason": "Muafiyet nedeni", + "Owner": "Sahip", + "Owner UID": "Sahibin UID'si", + "Participating Characters": "Katılan karakterler", + "Player Name": "Oyuncunun adı", + "Post-Event Effects": "Etkinlik sonrası etkiler", + "Real name of the player": "Oyuncunun gerçek adı", + "Required Conditions": "Gerekli durumlar", + "Required Effects": "Gerekli etkiler", + "Required Score": "Gerekli değer", + "Required Skills": "Gerekli beceriler", + "Required Stats": "Gerekli özellikler", + "Requirement Overrides": "Ön koşul muafiyetleri", + "Setting Name": "Oyun dünyasının adı", + "Silver Pieces": "Gümüş sikkeler", + "Skill Name": "Becerinin adı", + "Start Date": "Başlangıç tarihi", + "Starting value for all characters": "Tüm karakterler için başlangıç değeri", + "Stat": "Özellik", + "Status": "Durum", + "System Notice": "Sistem bildirimi", + "Unique Artifact": "Benzersiz eser", + "Unique Condition": "Benzersiz durum", + "XP Amount": "Deneyim puanı miktarı", + "XP Award": "Deneyim puanı verilmesi", + "Reports": "Raporlar", + "Pick a report to open it.": "Açmak için bir rapor seçin.", + "Open": "Açık", + "In progress": "Devam ediyor", + "Blocked": "Engellendi", + "Date": "Tarih", + "Due": "Bitiş", + "Assignee": "Atanan", + "Who": "Kim", + "What": "Ne", + "Minutes": "Dakika", + "Entries": "Kayıtlar", + "Most recent": "En yeni", + "Per person": "Kişi başına", + "By status": "Duruma göre", + "By priority": "Önceliğe göre", + "Character roster": "Karakter listesi", + "Progression": "İlerleme", + "World content": "Dünya içeriği", + "Awaiting approval": "Onay bekliyor", + "Player characters": "Oyuncu karakterleri", + "Awards": "Verilenler", + "Experience": "Deneyim", + "Experience awarded": "Verilen deneyim", + "Per character": "Karakter başına", + "By type": "Türe göre", + "By approval": "Onaya göre", + "Items carried by characters": "Karakterlerin taşıdığı eşyalar", + "Conditions on characters": "Karakterlerdeki durumlar", + "Nothing awarded yet": "Henüz bir şey verilmedi", + "Who is playing what, and what is still waiting for approval.": "Kimin ne oynadığı ve neyin hâlâ onay beklediği.", + "Experience awarded, and who earned it.": "Verilen deneyim ve onu kimin kazandığı.", + "How much the world holds, and what characters actually carry.": "Dünyanın ne kadar barındırdığı ve karakterlerin gerçekte ne taşıdığı.", + "Store": "Mağaza", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Diğer kuruluşların yayımladığı kayıtları, şemaları ve akışları yükleyin." }, "plurals": {} } diff --git a/l10n/uk.js b/l10n/uk.js index eb0e7519..2e3d6892 100644 --- a/l10n/uk.js +++ b/l10n/uk.js @@ -1,6 +1,14 @@ OC.L10N.register( "larpinq", { + "Load example data?": "Завантажити приклади даних?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Приклади даних заповнюють списки, сторінки деталей і панелі, тож ви одразу побачите застосунок у роботі. На робочій інсталяції оберіть \"Немає\".", + "Load the example data": "Завантажити приклади даних", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Завантажує те, що ви обрали. Це очевидно приклади даних, дію можна безпечно повторити, а потім їх можна видалити.", + "None, I will set this up myself": "Немає, я налаштую це сам", + "Nothing is imported. You start with an empty app and add your own data.": "Нічого не імпортується. Ви починаєте з порожнього застосунку і додаєте власні дані.", + "Example data": "Приклади даних", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Приклади значень для кожної схеми, яку постачає цей застосунок, згенеровані з самих схем. Вони показують списки, сторінки деталей і панелі в роботі, а не розповідають історію. Безпечно повторювати і потім видалити.", "Larpinq": "Larpinq", "Dashboard": "Інформаційна панель", "Characters": "Персонажі", @@ -152,7 +160,113 @@ OC.L10N.register( "None — this is a root skill.": "Немає — це базова навичка.", "Where the automation lives": "Де живе автоматизація", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows — це те, що відбувається без жодного кліку: нагадування до завершення строку, підтвердження під час подання. Тут ви їх читаєте та редагуєте — зараз нічого будувати не потрібно.", - "Open Flows in the menu": "Відкрийте Flows у меню" + "Open Flows in the menu": "Відкрийте Flows у меню", + "Ability Name": "Назва здібності", + "Affected Characters": "Уражені персонажі", + "Amount of copper pieces": "Кількість мідних монет", + "Amount of gold pieces": "Кількість золотих монет", + "Amount of silver pieces": "Кількість срібних монет", + "Automatic system notices": "Автоматичні системні сповіщення", + "Award Reason": "Причина нарахування", + "Awarded At": "Нараховано", + "Awarded By": "Нарахував", + "Background Story": "Передісторія персонажа", + "Base Value": "Базове значення", + "Character Card": "Картка персонажа", + "Character Name": "Ім'я персонажа", + "Checked In At": "Прибуття зафіксовано", + "Checked In By": "Прибуття зафіксував", + "Condition Name": "Назва стану", + "Contact email address": "Контактна адреса електронної пошти", + "Copper Pieces": "Мідні монети", + "Effect Name": "Назва ефекту", + "End Date": "Дата завершення", + "Event Name": "Назва події", + "Event description": "Опис події", + "Event end date and time": "Дата й час завершення події", + "Event location": "Місце проведення події", + "Event name": "Назва події", + "Event start date and time": "Дата й час початку події", + "Faith": "Віра", + "Full name of the player": "Повне ім'я гравця", + "Game Master Notes (Private)": "Нотатки ведучого гри (приватні)", + "Game Master Notes (Public)": "Нотатки ведучого гри (загальнодоступні)", + "Gold Pieces": "Золоті монети", + "Item Name": "Назва предмета", + "Items and Money": "Предмети та гроші", + "Mechanical Effect": "Ігровий ефект", + "Modifier Value": "Значення модифікатора", + "Name of the condition": "Назва стану", + "Name of the effect": "Назва ефекту", + "Name of the event": "Назва події", + "Name of the item": "Назва предмета", + "Name of the skill": "Назва навички", + "Name of the stat": "Назва характеристики", + "Nextcloud user": "Користувач Nextcloud", + "Notes about items and money": "Нотатки про предмети та гроші", + "Notes about the player": "Нотатки про гравця", + "Overridden At": "Виняток надано", + "Overridden By": "Виняток надав", + "Override Reason": "Причина винятку", + "Owner": "Власник", + "Owner UID": "UID власника", + "Participating Characters": "Персонажі, що беруть участь", + "Player Name": "Ім'я гравця", + "Post-Event Effects": "Ефекти після події", + "Real name of the player": "Справжнє ім'я гравця", + "Required Conditions": "Потрібні стани", + "Required Effects": "Потрібні ефекти", + "Required Score": "Потрібне значення", + "Required Skills": "Потрібні навички", + "Required Stats": "Потрібні характеристики", + "Requirement Overrides": "Винятки з вимог", + "Setting Name": "Назва світу гри", + "Silver Pieces": "Срібні монети", + "Skill Name": "Назва навички", + "Start Date": "Дата початку", + "Starting value for all characters": "Початкове значення для всіх персонажів", + "Stat": "Характеристика", + "Status": "Статус", + "System Notice": "Системне сповіщення", + "Unique Artifact": "Унікальний артефакт", + "Unique Condition": "Унікальний стан", + "XP Amount": "Кількість очок досвіду", + "XP Award": "Нарахування очок досвіду", + "Reports": "Звіти", + "Pick a report to open it.": "Виберіть звіт, щоб відкрити його.", + "Open": "Відкрито", + "In progress": "У роботі", + "Blocked": "Заблоковано", + "Date": "Дата", + "Due": "Термін", + "Assignee": "Призначено", + "Who": "Хто", + "What": "Що", + "Minutes": "Хвилини", + "Entries": "Записи", + "Most recent": "Найновіші", + "Per person": "На особу", + "By status": "За статусом", + "By priority": "За пріоритетом", + "Character roster": "Список персонажів", + "Progression": "Прогрес", + "World content": "Вміст світу", + "Awaiting approval": "Очікує схвалення", + "Player characters": "Персонажі гравців", + "Awards": "Нагородження", + "Experience": "Досвід", + "Experience awarded": "Нарахований досвід", + "Per character": "На персонажа", + "By type": "За типом", + "By approval": "За схваленням", + "Items carried by characters": "Предмети, які носять персонажі", + "Conditions on characters": "Стани персонажів", + "Nothing awarded yet": "Ще нічого не нараховано", + "Who is playing what, and what is still waiting for approval.": "Хто що грає і що ще чекає схвалення.", + "Experience awarded, and who earned it.": "Нарахований досвід і хто його заробив.", + "How much the world holds, and what characters actually carry.": "Скільки містить світ і що персонажі насправді носять.", + "Store": "Магазин", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Встановлюйте реєстри, схеми та потоки, опубліковані іншими організаціями." }, "nplurals=2; plural=(n != 1);" ) diff --git a/l10n/uk.json b/l10n/uk.json index 322c1ca2..a2886e74 100644 --- a/l10n/uk.json +++ b/l10n/uk.json @@ -1,5 +1,13 @@ { "translations": { + "Load example data?": "Завантажити приклади даних?", + "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install.": "Приклади даних заповнюють списки, сторінки деталей і панелі, тож ви одразу побачите застосунок у роботі. На робочій інсталяції оберіть \"Немає\".", + "Load the example data": "Завантажити приклади даних", + "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards.": "Завантажує те, що ви обрали. Це очевидно приклади даних, дію можна безпечно повторити, а потім їх можна видалити.", + "None, I will set this up myself": "Немає, я налаштую це сам", + "Nothing is imported. You start with an empty app and add your own data.": "Нічого не імпортується. Ви починаєте з порожнього застосунку і додаєте власні дані.", + "Example data": "Приклади даних", + "Sample values for every schema this app supplies, generated from the schemas themselves. It shows the lists, detail pages and dashboards working rather than telling a story. Safe to run more than once, and you can delete it afterwards.": "Приклади значень для кожної схеми, яку постачає цей застосунок, згенеровані з самих схем. Вони показують списки, сторінки деталей і панелі в роботі, а не розповідають історію. Безпечно повторювати і потім видалити.", "Larpinq": "Larpinq", "Dashboard": "Інформаційна панель", "Characters": "Персонажі", @@ -151,7 +159,113 @@ "None — this is a root skill.": "Немає — це базова навичка.", "Where the automation lives": "Де живе автоматизація", "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.": "Flows — це те, що відбувається без жодного кліку: нагадування до завершення строку, підтвердження під час подання. Тут ви їх читаєте та редагуєте — зараз нічого будувати не потрібно.", - "Open Flows in the menu": "Відкрийте Flows у меню" + "Open Flows in the menu": "Відкрийте Flows у меню", + "Ability Name": "Назва здібності", + "Affected Characters": "Уражені персонажі", + "Amount of copper pieces": "Кількість мідних монет", + "Amount of gold pieces": "Кількість золотих монет", + "Amount of silver pieces": "Кількість срібних монет", + "Automatic system notices": "Автоматичні системні сповіщення", + "Award Reason": "Причина нарахування", + "Awarded At": "Нараховано", + "Awarded By": "Нарахував", + "Background Story": "Передісторія персонажа", + "Base Value": "Базове значення", + "Character Card": "Картка персонажа", + "Character Name": "Ім'я персонажа", + "Checked In At": "Прибуття зафіксовано", + "Checked In By": "Прибуття зафіксував", + "Condition Name": "Назва стану", + "Contact email address": "Контактна адреса електронної пошти", + "Copper Pieces": "Мідні монети", + "Effect Name": "Назва ефекту", + "End Date": "Дата завершення", + "Event Name": "Назва події", + "Event description": "Опис події", + "Event end date and time": "Дата й час завершення події", + "Event location": "Місце проведення події", + "Event name": "Назва події", + "Event start date and time": "Дата й час початку події", + "Faith": "Віра", + "Full name of the player": "Повне ім'я гравця", + "Game Master Notes (Private)": "Нотатки ведучого гри (приватні)", + "Game Master Notes (Public)": "Нотатки ведучого гри (загальнодоступні)", + "Gold Pieces": "Золоті монети", + "Item Name": "Назва предмета", + "Items and Money": "Предмети та гроші", + "Mechanical Effect": "Ігровий ефект", + "Modifier Value": "Значення модифікатора", + "Name of the condition": "Назва стану", + "Name of the effect": "Назва ефекту", + "Name of the event": "Назва події", + "Name of the item": "Назва предмета", + "Name of the skill": "Назва навички", + "Name of the stat": "Назва характеристики", + "Nextcloud user": "Користувач Nextcloud", + "Notes about items and money": "Нотатки про предмети та гроші", + "Notes about the player": "Нотатки про гравця", + "Overridden At": "Виняток надано", + "Overridden By": "Виняток надав", + "Override Reason": "Причина винятку", + "Owner": "Власник", + "Owner UID": "UID власника", + "Participating Characters": "Персонажі, що беруть участь", + "Player Name": "Ім'я гравця", + "Post-Event Effects": "Ефекти після події", + "Real name of the player": "Справжнє ім'я гравця", + "Required Conditions": "Потрібні стани", + "Required Effects": "Потрібні ефекти", + "Required Score": "Потрібне значення", + "Required Skills": "Потрібні навички", + "Required Stats": "Потрібні характеристики", + "Requirement Overrides": "Винятки з вимог", + "Setting Name": "Назва світу гри", + "Silver Pieces": "Срібні монети", + "Skill Name": "Назва навички", + "Start Date": "Дата початку", + "Starting value for all characters": "Початкове значення для всіх персонажів", + "Stat": "Характеристика", + "Status": "Статус", + "System Notice": "Системне сповіщення", + "Unique Artifact": "Унікальний артефакт", + "Unique Condition": "Унікальний стан", + "XP Amount": "Кількість очок досвіду", + "XP Award": "Нарахування очок досвіду", + "Reports": "Звіти", + "Pick a report to open it.": "Виберіть звіт, щоб відкрити його.", + "Open": "Відкрито", + "In progress": "У роботі", + "Blocked": "Заблоковано", + "Date": "Дата", + "Due": "Термін", + "Assignee": "Призначено", + "Who": "Хто", + "What": "Що", + "Minutes": "Хвилини", + "Entries": "Записи", + "Most recent": "Найновіші", + "Per person": "На особу", + "By status": "За статусом", + "By priority": "За пріоритетом", + "Character roster": "Список персонажів", + "Progression": "Прогрес", + "World content": "Вміст світу", + "Awaiting approval": "Очікує схвалення", + "Player characters": "Персонажі гравців", + "Awards": "Нагородження", + "Experience": "Досвід", + "Experience awarded": "Нарахований досвід", + "Per character": "На персонажа", + "By type": "За типом", + "By approval": "За схваленням", + "Items carried by characters": "Предмети, які носять персонажі", + "Conditions on characters": "Стани персонажів", + "Nothing awarded yet": "Ще нічого не нараховано", + "Who is playing what, and what is still waiting for approval.": "Хто що грає і що ще чекає схвалення.", + "Experience awarded, and who earned it.": "Нарахований досвід і хто його заробив.", + "How much the world holds, and what characters actually carry.": "Скільки містить світ і що персонажі насправді носять.", + "Store": "Магазин", + "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event.": "Встановлюйте реєстри, схеми та потоки, опубліковані іншими організаціями." }, "plurals": {} } diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 4d7e183b..a7bd840c 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -29,6 +29,7 @@ use OCP\AppFramework\Bootstrap\IBootContext; use OCP\AppFramework\Bootstrap\IBootstrap; use OCP\AppFramework\Bootstrap\IRegistrationContext; +use Psr\Container\ContainerInterface; /** * Main application class for Larpinq @@ -103,6 +104,8 @@ public function register(IRegistrationContext $context): void { // guards below still do their job. OpenRegisterAutoloader::register(); + $this->registerAppHostGenerics(context: $context); + // Register the deep link listener for OpenRegister unified search. // The event class is only available when OpenRegister is installed. if (class_exists('OCA\OpenRegister\Event\DeepLinkRegistrationEvent') === true) { @@ -131,6 +134,67 @@ public function register(IRegistrationContext $context): void { } }//end register() + /** + * Register the AppHost generic controllers this app relies on. + * + * Extracted from register() because phpmd's ExcessiveMethodLength fires at + * 100 lines and adding this inline hit it exactly — the same decomposition + * pressure that moved procest's AppHost call into its own registrar. + * + * @param IRegistrationContext $context The registration context. + * + * @return void + */ + private function registerAppHostGenerics(IRegistrationContext $context): void { + // Make the AppHost generics this app RELIES ON explicit. + // + // appinfo/routes.php builds its table with + // \OCA\OpenRegister\AppHost\Routes::standard(), which supplies + // /api/health and /api/metrics — but larpinq ships no health or metrics + // controller of its own, so those two routes resolve only because the + // AppHost's generic controllers stand in under larpinq's conventional + // class names. Nothing in this repository said so, and gate-14 + // (route-reachability) reported both as `controller-class-not-found`: + // it accepts a Routes::standard() route ONLY when the app shows, in its + // own code, that it adopts the generic behind it. The gate was right — + // the dependency was real and invisible. + // + // Registered rather than adopted wholesale via Bootstrap::register(), + // which would also alias dashboard, settings, preferences, repair steps + // and sections onto generics that do NOT match larpinq's own + // controllers. Same reasoning, and the same shape, as shillinq. + if (class_exists('OCA\OpenRegister\AppHost\Controller\GenericHealthController') === true) { + $context->registerService( + 'OCA\Larpinq\Controller\HealthController', + static function (ContainerInterface $c): object { + $class = 'OCA\OpenRegister\AppHost\Controller\GenericHealthController'; + return new $class( + appName: self::APP_ID, + request: $c->get('OCP\IRequest'), + manifestLoader: $c->get('OCA\OpenRegister\AppHost\Observability\ManifestLoader'), + executor: $c->get('OCA\OpenRegister\AppHost\Observability\HealthCheckExecutor') + ); + } + ); + } + + if (class_exists('OCA\OpenRegister\AppHost\Controller\GenericMetricsController') === true) { + $context->registerService( + 'OCA\Larpinq\Controller\MetricsController', + static function (ContainerInterface $c): object { + $class = 'OCA\OpenRegister\AppHost\Controller\GenericMetricsController'; + return new $class( + appName: self::APP_ID, + request: $c->get('OCP\IRequest'), + manifestLoader: $c->get('OCA\OpenRegister\AppHost\Observability\ManifestLoader'), + engine: $c->get('OCA\OpenRegister\AppHost\Observability\MetricsEngine') + ); + } + ); + } + }//end registerAppHostGenerics() + + /** * Boot the application. * diff --git a/lib/Controller/DashboardController.php b/lib/Controller/DashboardController.php index 373e1d5c..430eeac5 100644 --- a/lib/Controller/DashboardController.php +++ b/lib/Controller/DashboardController.php @@ -73,4 +73,24 @@ public function page(): TemplateResponse { [] ); }//end page() + + /** + * Serve the SPA for deep links (Vue history mode). Delegates to {@see page()}. + * + * Without this the server has no handler for `/apps/larpinq/`, so a + * deep link or a RELOAD on any sub-path 404s before the SPA ever loads — + * which is why this app was the one of the seven still unable to move off + * hash routing. Measured before this change: /apps/larpinq/characters and + * /events both returned 404, while every other hash-mode app answered 200. + * + * @NoAdminRequired + * @NoCSRFRequired + * + * @return TemplateResponse + * + * @spec exclude Vue history-mode fallback — delegates to page(); pure framework plumbing, no domain logic. + */ + public function catchAll(): TemplateResponse { + return $this->page(); + }//end catchAll() }//end class diff --git a/lib/Controller/SettingsController.php b/lib/Controller/SettingsController.php index bf16d565..333d5aef 100644 --- a/lib/Controller/SettingsController.php +++ b/lib/Controller/SettingsController.php @@ -398,4 +398,30 @@ public function reimport(): JSONResponse { }//end try }//end reimport() + + /** + * Canonical AppHost alias for {@see reimport()}. + * + * `OpenRegister\AppHost\Routes::standard()` declares `settings#load`, and the + * local fallback in appinfo/routes.php reproduces it, so the route existed + * here with no method behind it: every POST to /api/settings/load was a + * dispatch-time 500. Pinned by CanonicalSettingsRouteContractTest, which is + * what caught it. + * + * larpinq spells the same operation `reimport()`, so this delegates rather + * than duplicating it, the way {@see create()} delegates to {@see update()}. + * The four sibling apps that already carry `load()` do the same force + * re-import. + * + * @auth admin-only Same posture as reimport(): no auth attribute, so + * Nextcloud's default of admin session + CSRF token applies. Pinned by + * SettingsControllerCsrfPostureTest. + * + * @return JSONResponse The re-import result. + * + * @spec openspec/changes/retrofit-2026-05-24-annotate-larpingapp/tasks.md#task-25 + */ + public function load(): JSONResponse { + return $this->reimport(); + }//end load() }//end class diff --git a/lib/Controller/SetupController.php b/lib/Controller/SetupController.php index 86626f02..ee728304 100644 --- a/lib/Controller/SetupController.php +++ b/lib/Controller/SetupController.php @@ -71,6 +71,19 @@ class SetupController extends Controller { */ private const DEMO_DATA_DECIDED_KEY = 'demo_data_decided'; + /** + * App-config key holding the dataset the operator picked. + * + * The wizard's `choice` step writes it through `POST /api/setup/config`, and + * the `run-action` step that follows reads it back. Two steps rather than + * one because `CnSetupWizard::runAction()` posts to + * `/api/setup/action/{action}` with no body: an action cannot carry the + * answer, so the answer has to be stored before the action runs. + * + * @var string + */ + private const DATASET_KEY = 'demo_dataset'; + /** * Representative schema config key proving the schemas resolved, not just * the register id. SettingsLoadService writes `_schema` for @@ -136,13 +149,23 @@ public function status(): DataResponse { // data has finished the step; re-offering it every visit would make // "no thanks" impossible to express. $demoDecided = ($this->appConfig->getValueString(Application::APP_ID, self::DEMO_DATA_DECIDED_KEY, '') !== ''); + $pickedDataset = $this->appConfig->getValueString(Application::APP_ID, self::DATASET_KEY, ''); return new DataResponse( [ 'version' => self::SETUP_VERSION, 'completed' => $completed, + // The choice step reads its options from here: it declares + // `optionsSource: datasets` and no options of its own, so a + // dataset missing from this list is a dataset nobody can pick. + 'datasets' => $this->demoDataService->listChoices(), 'steps' => [ - 'demo-data' => ['done' => $demoDecided], + 'demo-data' => ['done' => ($pickedDataset !== '')], + // "None" is an ANSWER, so the load step is finished the + // moment it is chosen: there is nothing left to run. + 'load-demo-data' => [ + 'done' => ($demoDecided === true || $pickedDataset === DemoDataService::NONE_DATASET), + ], 'welcome' => ['done' => true], 'provision' => ['done' => $provisionDone], 'done' => ['done' => $completed], @@ -165,6 +188,25 @@ public function status(): DataResponse { */ #[AuthorizedAdminSetting(LarpinqAdmin::class)] public function saveConfig(): DataResponse { + // 🔴 THE DATASET IS VALIDATED BEFORE IT IS STORED. Everything else here + // is written as posted, because a `config-fields` step declares its own + // keys and this endpoint cannot know them. The dataset is different: + // the load step reads it back and hands it to the importer, so an + // unknown value would surface a step later as a failed import with no + // clue why. + $dataset = $this->request->getParam(self::DATASET_KEY); + if ($dataset !== null) { + $named = 'that'; + if (is_scalar($dataset) === true) { + $named = (string)$dataset; + } + + $known = array_column($this->demoDataService->listChoices(), 'id'); + if (in_array($named, $known, true) === false) { + return new DataResponse(['success' => false, 'message' => 'No dataset is called "' . $named . '".']); + } + } + foreach ($this->request->getParams() as $key => $value) { if ($key === '_route') { continue; @@ -192,8 +234,11 @@ public function saveConfig(): DataResponse { */ #[AuthorizedAdminSetting(LarpinqAdmin::class)] public function runAction(string $actionId): DataResponse { - if ($actionId === 'install-demo-data') { - return $this->installDemoData(); + // `install-demo-data` is the id the step used before it asked WHICH + // dataset, and it still means "import the one this app ships". Kept so + // an older manifest, a runbook or a script that posts it keeps working. + if ($actionId === 'load-demo-data' || $actionId === 'install-demo-data') { + return $this->loadDataset(actionId: $actionId); } if ($actionId === 'skip-demo-data') { @@ -212,13 +257,36 @@ public function runAction(string $actionId): DataResponse { }//end runAction() /** - * Install the shipped demo dataset (ADR-111 rule 4). + * Import the dataset the operator picked in the previous step (ADR-111 rule 4). + * + * @param string $actionId The action that asked, which decides whether an + * unanswered choice is refused or means the shipped set. * * @return DataResponse The outcome, carrying the counts. * * @spec exclude Demo-data install action (ADR-111 rule 4); no per-app openspec change yet. */ - private function installDemoData(): DataResponse { + private function loadDataset(string $actionId): DataResponse { + $picked = $this->appConfig->getValueString(Application::APP_ID, self::DATASET_KEY, ''); + + // The legacy id carries no answer, so it means the shipped dataset. A + // caller that posts it has said which one by posting it. + if ($actionId === 'install-demo-data' && $picked === '') { + $picked = DemoDataService::DEMO_DATASET; + } + + // 🔴 NO SILENT DEFAULT. Importing here because the operator clicked Run + // one step early would plant example objects nobody asked for. + if ($picked === '') { + return new DataResponse(['success' => false, 'message' => 'Pick a dataset first.']); + } + + if ($picked === DemoDataService::NONE_DATASET) { + $this->appConfig->setValueString(Application::APP_ID, self::DEMO_DATA_DECIDED_KEY, 'skipped'); + + return new DataResponse(['success' => true, 'message' => 'No example data was loaded.']); + } + try { $imported = $this->demoDataService->install(); } catch (\Throwable $e) { @@ -243,7 +311,7 @@ private function installDemoData(): DataResponse { 'detail' => $imported, ] ); - }//end installDemoData() + }//end loadDataset() /** * Record that the operator declined the demo dataset. @@ -257,6 +325,11 @@ private function installDemoData(): DataResponse { * @spec exclude Demo-data skip action (ADR-111 rule 4); no per-app openspec change yet. */ private function skipDemoData(): DataResponse { + // 🔴 IT ANSWERS *BOTH* STEPS. The wizard now has a choice step and a + // run-action step; closing only the second leaves the first + // outstanding, and CnAppRoot opens the wizard while ANY optional step + // is outstanding. + $this->appConfig->setValueString(Application::APP_ID, self::DATASET_KEY, DemoDataService::NONE_DATASET); $this->appConfig->setValueString(Application::APP_ID, self::DEMO_DATA_DECIDED_KEY, 'skipped'); return new DataResponse( diff --git a/lib/Listener/DeepLinkRegistrationListener.php b/lib/Listener/DeepLinkRegistrationListener.php index 70a799a5..948c6bcc 100644 --- a/lib/Listener/DeepLinkRegistrationListener.php +++ b/lib/Listener/DeepLinkRegistrationListener.php @@ -84,14 +84,19 @@ class DeepLinkRegistrationListener implements IEventListener { * @var array */ private const DEEP_LINK_MAP = [ - 'character' => '/apps/larpinq/#/characters/{uuid}', - 'player' => '/apps/larpinq/#/players/{uuid}', - 'ability' => '/apps/larpinq/#/abilities/{uuid}', - 'skill' => '/apps/larpinq/#/skills/{uuid}', - 'larping_item' => '/apps/larpinq/#/items/{uuid}', - 'condition' => '/apps/larpinq/#/conditions/{uuid}', - 'effect' => '/apps/larpinq/#/effects/{uuid}', - 'larping_event' => '/apps/larpinq/#/events/{uuid}', + // Path URLs, not `#/` fragments: larpinq moved to vue-router history + // mode. These templates are handed to OTHER apps to link into larpinq, so + // a stale `#` here would keep sending every cross-app deep link to the + // dashboard — silently, because the router resolves nothing and the + // catch-all redirects to `/`. + 'character' => '/apps/larpinq/characters/{uuid}', + 'player' => '/apps/larpinq/players/{uuid}', + 'ability' => '/apps/larpinq/abilities/{uuid}', + 'skill' => '/apps/larpinq/skills/{uuid}', + 'larping_item' => '/apps/larpinq/items/{uuid}', + 'condition' => '/apps/larpinq/conditions/{uuid}', + 'effect' => '/apps/larpinq/effects/{uuid}', + 'larping_event' => '/apps/larpinq/events/{uuid}', ]; /** diff --git a/lib/Service/DemoDataService.php b/lib/Service/DemoDataService.php index 7d8ff47d..2592e733 100644 --- a/lib/Service/DemoDataService.php +++ b/lib/Service/DemoDataService.php @@ -99,8 +99,110 @@ public function isAvailable(): bool { }//end isAvailable() /** - * Import the demo dataset. + * The answer that means "plant nothing". + * + * 🔴 NOT THE ABSENCE OF AN ANSWER. An operator who declines has FINISHED the + * step; a step that can never be marked done reopens the wizard over every + * page (nextcloud-vue#806). + * + * @var string + */ + public const NONE_DATASET = 'none'; + + /** + * The id of the dataset this app ships. + * + * @var string + */ + public const DEMO_DATASET = 'demo'; + + /** + * Every answer the wizard's choice step may offer, declining included. + * + * 🔴 THE SERVER OWNS THIS LIST, AND THAT IS THE POINT. The step declares + * `optionsSource: datasets` and no options of its own, so the label, the + * description and the object count come from the descriptor that will + * actually be imported. A manifest that restated them could disagree with + * what lands, and nothing would notice. + * + * @return array The answers. + * + * @spec exclude Demo-data choice list; ADR-111 rule 1 has no per-app behavioural spec. + */ + public function listChoices(): array { + $choices = [ + [ + 'id' => self::NONE_DATASET, + 'label' => 'None, I will set this up myself', + 'description' => 'Nothing is imported. You start with an empty app and add your own data.', + 'objectCount' => 0, + 'icon' => 'CloseCircleOutline', + ], + ]; + + $objects = $this->shippedObjectCount(); + if ($objects !== null) { + $choices[] = [ + 'id' => self::DEMO_DATASET, + 'label' => 'Example data', + // 🔴 NO NUMBER IN THIS SENTENCE. The wizard runs a card's + // description through the app's translation function, which is a + // literal lookup, so an interpolated count would make the string + // untranslatable and leave a Dutch operator reading English. The + // count travels as `objectCount` and the card renders it as a + // stat, with a label the library translates. + 'description' => ( + 'Sample values for every schema this app supplies, generated from the schemas ' + . 'themselves. It shows the lists, detail pages and dashboards working rather ' + . 'than telling a story. Safe to run more than once, and you can delete it ' + . 'afterwards.' + ), + 'objectCount' => $objects, + 'icon' => 'DatabaseOutline', + ]; + } + + return $choices; + + }//end listChoices() + + /** + * How many objects the shipped descriptor carries, or null when it ships none. + * + * Counted from the FILE, so the card promises the number that will actually + * be imported. A missing or malformed descriptor returns null and the app + * then offers only "None" — honest, rather than an import that cannot run. * + * @return integer|null The object count, or null when there is no usable descriptor. + */ + private function shippedObjectCount(): ?int { + $path = $this->descriptorPath(); + if (is_file($path) === false) { + return null; + } + + $raw = file_get_contents($path); + if ($raw === false) { + return null; + } + + $data = json_decode($raw, true); + if (is_array($data) === false) { + return null; + } + + $components = ($data['components'] ?? []); + if (is_array($components) === false || is_array(($components['objects'] ?? null)) === false) { + return 0; + } + + return count($components['objects']); + + }//end shippedObjectCount() + + /** + * Import the demo dataset. + *'' * 🔴 THROWS RATHER THAN RETURNING A QUIET FAILURE. Every caller reports the * outcome to an operator who just asked for this, so "nothing happened" * must not be presentable as success. diff --git a/lib/Service/SettingsLoadService.php b/lib/Service/SettingsLoadService.php index 3943a030..5049f463 100644 --- a/lib/Service/SettingsLoadService.php +++ b/lib/Service/SettingsLoadService.php @@ -73,7 +73,7 @@ class SettingsLoadService { 'character' => 'character', 'player' => 'player', 'ability' => 'ability', - 'skill' => 'skill', + 'skill' => 'larping_skill', 'item' => 'larping_item', 'condition' => 'condition', 'effect' => 'effect', diff --git a/lib/Settings/larping_register.json b/lib/Settings/larping_register.json deleted file mode 100644 index ceca12a8..00000000 --- a/lib/Settings/larping_register.json +++ /dev/null @@ -1,466 +0,0 @@ -{ - "openapi": "3.0.0", - "info": { - "title": "Larping", - "description": "The Larping Register is a comprehensive data structure designed to support Live Action Role-Playing (LARP) games. It provides a framework for managing characters, players, skills, items, conditions, and events within a LARP setting. This register enables game masters and players to track character progression, manage game events, and handle complex game mechanics like skills, conditions, and effects. Perfect for both small-scale LARP events and large campaign management.", - "version": "1.0.7" - }, - "components": { - "registers": { - "larping": { - "slug": "larping", - "title": "Larping", - "version": "1.0.7", - "description": "A comprehensive register for managing LARP game data, including character sheets, player information, game mechanics, and event management. This register provides the core data structures needed for running and managing LARP games.", - "schemas": [ - "character", - "player", - "effect", - "stat", - "item", - "skill", - "event", - "condition" - ], - "source": "", - "tablePrefix": "", - "folder": "Open Registers/Larping Register", - "updated": "2025-04-01T17:47:20+00:00", - "created": "2025-04-01T15:37:02+00:00", - "owner": null, - "application": null, - "organisation": null, - "authorization": [], - "deleted": null - } - }, - "schemas": { - "character": { - "slug": "character", - "title": "Character", - "description": "Represents a player character in the LARP game. Contains all character-specific information including stats, skills, conditions, and inventory. This schema is central to the game as it ties together all other aspects of character management.", - "version": "1.0.1", - "summary": "Core character information and attributes", - "required": ["name"], - "properties": { - "gold": { - "type": "integer", - "description": "Amount of gold coins the character possesses" - }, - "faith": { - "type": "string", - "description": "The religious belief or faith system the character follows" - }, - "OCName": { - "type": "string", - "description": "Out-of-Character name of the player controlling this character" - }, - "silver": { - "type": "integer", - "description": "Amount of silver coins the character possesses" - }, - "copper": { - "type": "integer", - "description": "Amount of copper coins the character possesses" - }, - "approved": { - "type": "string", - "description": "Approval status of the character by game masters" - }, - "background": { - "type": "string", - "description": "Character's backstory and history" - }, - "itemsAndMoney": { - "type": "string", - "description": "Detailed description of character's inventory and wealth" - }, - "slNotesPublic": { - "type": "string", - "description": "Public notes visible to all players" - }, - "slNotesPrivate": { - "type": "string", - "description": "Private notes only visible to game masters" - }, - "skills": { - "type": "array", - "description": "List of skills the character has learned" - }, - "name": { - "type": "string", - "description": "In-game name of the character" - }, - "type": { - "type": "string", - "description": "Character type or class" - }, - "card": { - "type": "string", - "description": "Character card identifier" - }, - "notice": { - "type": "string", - "description": "Important notices about the character" - }, - "description": { - "type": "string", - "description": "Physical description and appearance of the character" - }, - "stats": { - "type": "object", - "description": "Character's base statistics and attributes" - }, - "events": { - "type": "array", - "description": "Events the character has participated in" - }, - "conditions": { - "type": "array", - "description": "Active conditions affecting the character" - }, - "embedded": { - "type": "object", - "description": "Additional embedded data for the character" - } - }, - "archive": [], - "source": "", - "hardValidation": false, - "maxDepth": 0, - "owner": null, - "application": null, - "organisation": null, - "authorization": [], - "deleted": null, - "configuration": null - }, - "player": { - "slug": "player", - "title": "Player", - "description": "Represents a real person participating in the LARP game. Contains player-specific information and preferences, separate from their character data.", - "version": "1.0.1", - "summary": "Player information and preferences", - "required": ["name"], - "properties": { - "name": { - "type": "string", - "description": "Real name of the player" - }, - "email": { - "type": "string", - "description": "Contact email address" - }, - "preferences": { - "type": "object", - "description": "Player's game preferences and settings" - } - }, - "archive": [], - "source": "", - "hardValidation": false, - "maxDepth": 0, - "owner": null, - "application": null, - "organisation": null, - "authorization": [], - "deleted": null, - "configuration": null - }, - "effect": { - "slug": "effect", - "title": "Effect", - "description": "Represents a game effect that can modify character stats or behavior. Effects can be applied through items, skills, or conditions.", - "version": "1.0.1", - "summary": "Game effects and modifiers", - "required": ["name", "description"], - "properties": { - "cumulative": { - "type": "string", - "description": "Whether the effect can stack with similar effects" - }, - "stat": { - "type": "string", - "description": "The stat this effect modifies" - }, - "name": { - "type": "string", - "description": "Name of the effect" - }, - "description": { - "type": "string", - "description": "Detailed description of what the effect does" - }, - "modification": { - "type": "string", - "description": "Type of modification (add, subtract, multiply, etc.)" - }, - "modifier": { - "type": "integer", - "description": "Numerical value of the modification" - }, - "embedded": { - "type": "object", - "description": "Additional embedded data for the effect" - } - }, - "archive": [], - "source": "", - "hardValidation": false, - "maxDepth": 0, - "owner": null, - "application": null, - "organisation": null, - "authorization": [], - "deleted": null, - "configuration": null - }, - "stat": { - "slug": "stat", - "title": "Stat", - "description": "Represents a base statistic or attribute that characters can have. Stats can be modified by effects and are used for skill requirements.", - "version": "1.0.1", - "summary": "Character statistics and attributes", - "required": ["name", "base"], - "properties": { - "description": { - "type": "string", - "description": "Detailed description of what the stat represents" - }, - "name": { - "type": "string", - "description": "Name of the stat" - }, - "base": { - "type": "integer", - "description": "Base value of the stat before modifications" - } - }, - "archive": [], - "source": "", - "hardValidation": false, - "maxDepth": 0, - "owner": null, - "application": null, - "organisation": null, - "authorization": [], - "deleted": null, - "configuration": null - }, - "item": { - "slug": "item", - "title": "Item", - "description": "Represents physical items that characters can possess. Items can have effects and may be unique or common.", - "version": "1.0.1", - "summary": "Game items and equipment", - "required": ["name"], - "properties": { - "effect": { - "type": "string", - "description": "Legacy field for simple effect description" - }, - "description": { - "type": "string", - "description": "Detailed description of the item" - }, - "effects": { - "type": "array", - "description": "List of effects this item provides" - }, - "unique": { - "type": "boolean", - "description": "Whether this is a unique item" - }, - "name": { - "type": "string", - "description": "Name of the item" - }, - "characters": { - "type": "array", - "description": "Characters currently possessing this item" - }, - "embedded": { - "type": "object", - "description": "Additional embedded data for the item" - } - }, - "archive": [], - "source": "", - "hardValidation": false, - "maxDepth": 0, - "owner": null, - "application": null, - "organisation": null, - "authorization": [], - "deleted": null, - "configuration": null - }, - "skill": { - "slug": "skill", - "title": "Skill", - "description": "Represents abilities that characters can learn. Skills may have requirements and can provide effects when used.", - "version": "1.0.1", - "summary": "Character abilities and skills", - "required": ["name", "description"], - "properties": { - "requiredEffects": { - "type": "array", - "description": "Effects required to learn this skill" - }, - "effect": { - "type": "string", - "description": "Legacy field for simple effect description" - }, - "name": { - "type": "string", - "description": "Name of the skill" - }, - "effects": { - "type": "array", - "description": "Effects this skill provides when used" - }, - "requiredSkills": { - "type": "array", - "description": "Other skills required to learn this skill" - }, - "requiredStats": { - "type": "array", - "description": "Stats required to learn this skill" - }, - "requiredConditions": { - "type": "array", - "description": "Conditions required to learn this skill" - }, - "requiredScore": { - "type": "integer", - "description": "Minimum score required in specified stats" - }, - "description": { - "type": "string", - "description": "Detailed description of what the skill does" - }, - "embedded": { - "type": "object", - "description": "Additional embedded data for the skill" - } - }, - "archive": [], - "source": "", - "hardValidation": false, - "maxDepth": 0, - "owner": null, - "application": null, - "organisation": null, - "authorization": [], - "deleted": null, - "configuration": null - }, - "event": { - "slug": "event", - "title": "Event", - "description": "Represents LARP events or game sessions. Contains information about timing, location, and participating characters.", - "version": "1.0.1", - "summary": "Game events and sessions", - "required": ["name", "startDate", "endDate"], - "properties": { - "name": { - "type": "string", - "description": "Name of the event" - }, - "description": { - "type": "string", - "description": "Detailed description of the event" - }, - "location": { - "type": "string", - "description": "Physical location where the event takes place" - }, - "endDate": { - "type": "string", - "description": "End date and time of the event" - }, - "characters": { - "type": "array", - "description": "Characters participating in this event" - }, - "startDate": { - "type": "string", - "description": "Start date and time of the event" - }, - "effects": { - "type": "array", - "description": "Effects active during this event" - }, - "embedded": { - "type": "object", - "description": "Additional embedded data for the event" - } - }, - "archive": [], - "source": "", - "hardValidation": false, - "maxDepth": 0, - "owner": null, - "application": null, - "organisation": null, - "authorization": [], - "deleted": null, - "configuration": null - }, - "condition": { - "slug": "condition", - "title": "Condition", - "description": "Represents temporary or permanent conditions that can affect characters. Conditions can provide effects and may be unique.", - "version": "1.0.1", - "summary": "Character conditions and status effects", - "required": ["name", "description"], - "properties": { - "characters": { - "type": "array", - "description": "Characters currently affected by this condition" - }, - "effect": { - "type": "string", - "description": "Legacy field for simple effect description" - }, - "effects": { - "type": "array", - "description": "Effects this condition applies" - }, - "description": { - "type": "string", - "description": "Detailed description of the condition" - }, - "unique": { - "type": "boolean", - "description": "Whether this condition can only affect a character once" - }, - "name": { - "type": "string", - "description": "Name of the condition" - }, - "embedded": { - "type": "object", - "description": "Additional embedded data for the condition" - } - }, - "archive": [], - "source": "", - "hardValidation": false, - "maxDepth": 0, - "owner": null, - "application": null, - "organisation": null, - "authorization": [], - "deleted": null, - "configuration": null - } - }, - "endpoints": [], - "sources": [], - "mappings": [], - "jobs": [], - "synchronizations": [], - "rules": [] - } -} \ No newline at end of file diff --git a/lib/Settings/larpinq_mock_register.json b/lib/Settings/larpinq_mock_register.json index 9ebd9e43..4e4a86b4 100644 --- a/lib/Settings/larpinq_mock_register.json +++ b/lib/Settings/larpinq_mock_register.json @@ -465,7 +465,7 @@ { "@self": { "register": "larpinq", - "schema": "skill", + "schema": "larping_skill", "slug": "skill-voorbeeld-name-1-1" }, "name": "Voorbeeld Name 1", @@ -492,7 +492,7 @@ { "@self": { "register": "larpinq", - "schema": "skill", + "schema": "larping_skill", "slug": "skill-voorbeeld-name-2-2" }, "name": "Voorbeeld Name 2", @@ -519,7 +519,7 @@ { "@self": { "register": "larpinq", - "schema": "skill", + "schema": "larping_skill", "slug": "skill-voorbeeld-name-3-3" }, "name": "Voorbeeld Name 3", diff --git a/lib/Settings/larpinq_register.json b/lib/Settings/larpinq_register.json index 09fa10b0..1ce85480 100644 --- a/lib/Settings/larpinq_register.json +++ b/lib/Settings/larpinq_register.json @@ -2,8 +2,8 @@ "openapi": "3.0.0", "info": { "title": "Larpinq Register", - "description": "Live Action Role Playing character management register for the Larpinq Nextcloud app. Manages characters, players, abilities, skills, items, conditions, effects, events, and worlds.", - "version": "1.2.0" + "description": "Live Action Role Playing character management register for the Larpinq Nextcloud app. Manages characters, players, abilities, skills, items, conditions, effects, events, and worlds. v1.3.0 renames the `skill` schema slug to `larping_skill`. Pipelinq also ships a `skill`, an agent competence used for routing, and slugs are global on a shared OpenRegister. The prefix follows this register's own `larping_item` and `larping_event`. The object type stays `skill`; only the slug it maps to changes.", + "version": "1.3.0" }, "x-openregister": { "type": "application", @@ -23,7 +23,7 @@ "character", "player", "ability", - "skill", + "larping_skill", "larping_item", "condition", "effect", @@ -180,7 +180,7 @@ "type": "string", "format": "uuid" }, - "$ref": "skill", + "$ref": "larping_skill", "x-relation-filter": { "setting": "@object.setting" }, "visible": false, "title": "Skills" @@ -238,7 +238,7 @@ "skill": { "type": "string", "format": "uuid", - "$ref": "skill", + "$ref": "larping_skill", "x-relation-filter": { "setting": "@object.setting" }, "description": "The assigned skill whose requirements are waived", "title": "Skill" @@ -430,7 +430,7 @@ } }, "skill": { - "slug": "skill", + "slug": "larping_skill", "title": "Skill", "icon": "SwordCross", "version": "1.2.0", @@ -484,7 +484,7 @@ "type": "string", "format": "uuid" }, - "$ref": "skill", + "$ref": "larping_skill", "x-relation-filter": { "setting": "@object.setting" }, "visible": false, "title": "Required Skills" diff --git a/openapi.json b/openapi.json index 75f551f5..7e01e7d7 100644 --- a/openapi.json +++ b/openapi.json @@ -2,7 +2,7 @@ "openapi": "3.0.3", "info": { "title": "dsonextcloud", - "version": "0.2.3-unstable.20260830082603", + "version": "0.2.8-unstable.20260831165721", "description": "DSO Nextcloud", "license": { "name": "agpl" diff --git a/package-lock.json b/package-lock.json index c936d087..1baaa06d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.1.20", "license": "EUPL-1.2", "dependencies": { - "@conduction/nextcloud-vue": "^2.24.3", + "@conduction/nextcloud-vue": "^2.37.0", "@nextcloud/auth": "^2.5.0", "@nextcloud/axios": "~2.5.2", "@nextcloud/capabilities": "^1.2.1", @@ -1829,9 +1829,9 @@ } }, "node_modules/@conduction/nextcloud-vue": { - "version": "2.24.3", - "resolved": "https://registry.npmjs.org/@conduction/nextcloud-vue/-/nextcloud-vue-2.24.3.tgz", - "integrity": "sha512-Hflys+AxGNNSkDxuMf04RdFzijhWDKtcRJAHtmtYLj6ntwoIT51k0rfRju6S5GuTNF+daJDUv9tHDVVXb9ZIWw==", + "version": "2.37.0", + "resolved": "https://registry.npmjs.org/@conduction/nextcloud-vue/-/nextcloud-vue-2.37.0.tgz", + "integrity": "sha512-3+c+vPHlcswZS0+yEO+HjaFTkgI0ET0Lk33LEmMnZc/E7rDV6lPILq9LNlmxC04WuyQNILx4+zsckkSMYEg7hQ==", "license": "EUPL-1.2", "dependencies": { "@ckpack/vue-color": "^1.6.0", @@ -1895,7 +1895,7 @@ "eslint-plugin-vue": "^9.21.0 || ^10.0.0", "gridstack": "^12.0.0 || ^13.0.0", "marked": "^12.0.0", - "pinia": "^2.0.0 || ^3.0.0", + "pinia": "^2.0.0 || ^3.0.0 || ^4.0.0", "vue": "^3.5.0", "vue-eslint-parser": "^9.4.0 || ^10.0.0", "vue-material-design-icons": "^5.0.0" diff --git a/package.json b/package.json index bb2ab954..07efc48f 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "build": "NODE_ENV=production webpack --config webpack.config.js --progress", "dev": "NODE_ENV=development webpack --config webpack.config.js --progress", "watch": "NODE_ENV=development webpack --config webpack.config.js --progress --watch", - "lint": "eslint src", + "lint": "eslint src tests scripts", "lint-fix": "npm run lint -- --fix", "test:unit": "vitest run", "test:unit:watch": "vitest", @@ -38,7 +38,7 @@ "extends @nextcloud/browserslist-config" ], "dependencies": { - "@conduction/nextcloud-vue": "^2.24.3", + "@conduction/nextcloud-vue": "^2.37.0", "@nextcloud/auth": "^2.5.0", "@nextcloud/axios": "~2.5.2", "@nextcloud/capabilities": "^1.2.1", @@ -60,8 +60,8 @@ }, "overrides": { "libxmljs2": "^0.37.0", - "@nextcloud/axios": "~2.5.2", - "@nextcloud/l10n": "3.4.1" + "@nextcloud/axios": "$@nextcloud/axios", + "@nextcloud/l10n": "$@nextcloud/l10n" }, "devDependencies": { "@babel/core": "^7.22.9", diff --git a/scripts/assert-lockfile-matches-install.js b/scripts/assert-lockfile-matches-install.js index a8d6aaa9..9b3204d9 100644 --- a/scripts/assert-lockfile-matches-install.js +++ b/scripts/assert-lockfile-matches-install.js @@ -28,10 +28,14 @@ const fs = require('fs') const path = require('path') const root = process.cwd() -const read = (p) => { +/** + * + * @param p + */ +function read(p) { try { return JSON.parse(fs.readFileSync(p, 'utf8')) - } catch (e) { + } catch { return null } } @@ -81,8 +85,13 @@ for (const [entry, meta] of Object.entries(lock.packages)) { } } -const fmt = (r) => - ` ${r.name.padEnd(38)} lock ${String(r.want).padEnd(14)} installed ${r.got || '(absent)'}` +/** + * + * @param r + */ +function fmt(r) { + return ` ${r.name.padEnd(38)} lock ${String(r.want).padEnd(14)} installed ${r.got || '(absent)'}` +} if (drift.dev.length) { console.log( diff --git a/scripts/build-l10n-js.js b/scripts/build-l10n-js.js index 176ef519..335b08d2 100644 --- a/scripts/build-l10n-js.js +++ b/scripts/build-l10n-js.js @@ -101,6 +101,9 @@ function renderJs(id, translations, pluralForm) { ].join('\n') } +/** + * + */ function main() { const check = process.argv.includes('--check') const id = appId() diff --git a/scripts/check-schema-l10n.js b/scripts/check-schema-l10n.js index 8a860b33..3c4b2626 100644 --- a/scripts/check-schema-l10n.js +++ b/scripts/check-schema-l10n.js @@ -113,6 +113,9 @@ function collect(node, where, sink) { for (const value of Object.values(node)) collect(value, where, sink) } +/** + * + */ function main() { const update = process.argv.includes('--update') const list = process.argv.includes('--list') diff --git a/src/icons.js b/src/icons.js index 2523625f..5f9b03ff 100644 --- a/src/icons.js +++ b/src/icons.js @@ -24,6 +24,7 @@ import BriefcaseAccountOutline from 'vue-material-design-icons/BriefcaseAccountO import Calendar from 'vue-material-design-icons/Calendar.vue' import CalendarMonthOutline from 'vue-material-design-icons/CalendarMonthOutline.vue' import ChartBar from 'vue-material-design-icons/ChartBar.vue' +import ChartBoxOutline from 'vue-material-design-icons/ChartBoxOutline.vue' import ClipboardList from 'vue-material-design-icons/ClipboardList.vue' import Cog from 'vue-material-design-icons/Cog.vue' import CogOutline from 'vue-material-design-icons/CogOutline.vue' @@ -49,6 +50,7 @@ import Sitemap from 'vue-material-design-icons/Sitemap.vue' import Star from 'vue-material-design-icons/Star.vue' import StarOutline from 'vue-material-design-icons/StarOutline.vue' import StarPlusOutline from 'vue-material-design-icons/StarPlusOutline.vue' +import StoreOutline from 'vue-material-design-icons/StoreOutline.vue' import Sword from 'vue-material-design-icons/Sword.vue' import SwordCross from 'vue-material-design-icons/SwordCross.vue' import ToolboxOutline from 'vue-material-design-icons/ToolboxOutline.vue' @@ -70,6 +72,7 @@ export default { Calendar, CalendarMonthOutline, ChartBar, + ChartBoxOutline, ClipboardList, Cog, CogOutline, @@ -95,6 +98,7 @@ export default { Star, StarOutline, StarPlusOutline, + StoreOutline, Sword, SwordCross, ToolboxOutline, diff --git a/src/main.js b/src/main.js index 9878b70d..8e07cd24 100644 --- a/src/main.js +++ b/src/main.js @@ -15,7 +15,7 @@ import { } from '@nextcloud/l10n' import { generateUrl } from '@nextcloud/router' import { createApp, h } from 'vue' -import { createRouter, createWebHashHistory } from 'vue-router' +import { createRouter, createWebHistory } from 'vue-router' import App from './App.vue' import appIcons from './icons.js' import bundledManifest from './manifest.json' @@ -342,8 +342,29 @@ function routesFromManifest(manifest) { return routes } +/** + * The router base for THIS page load. + * + * ⚠️ `generateUrl('/apps/larpinq')` alone is not enough. Nextcloud serves the + * app under BOTH `/apps/larpinq/...` and `/index.php/apps/larpinq/...`, but + * `generateUrl()` returns only the form the instance is configured for. A + * visitor arriving on the other form falls outside the router base, vue-router + * cannot resolve the path, and the catch-all redirects to `/`: they land on the + * dashboard with no error and the deep link is silently swallowed. + * + * This app's own specs use BOTH spellings — `/apps/larpinq` in `_nav.ts` and + * the docs-screenshots spec, `/index.php/apps/larpinq` in the visual spec — so + * one or the other would break whichever base was hardcoded. + * + * @return {string} The base path vue-router should strip from the URL. + */ +function routerBase() { + const match = window.location.pathname.match(/^(.*\/apps\/larpinq)(?:\/|$)/) + return match ? match[1] : generateUrl('/apps/larpinq') +} + const router = createRouter({ - history: createWebHashHistory(generateUrl('/apps/larpinq')), + history: createWebHistory(routerBase()), routes: routesFromManifest(manifest), }) try { @@ -351,7 +372,10 @@ try { } catch (e) { // Non-fatal — lib translations fall back to English source. // eslint-disable-next-line no-console - console.warn('[larpingapp] registerTranslations failed; falling back to English', e) + console.warn( + '[larpingapp] registerTranslations failed; falling back to English', + e, + ) } tryLoadTranslations() diff --git a/src/manifest.json b/src/manifest.json index 0ee3bd5b..f6f32085 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -7,10 +7,45 @@ "version": 1, "completionConfigKey": "setup_completed_version", "steps": [ - { "id": "welcome", "type": "info", "title": "Welcome to LARPing", "body": "Manage your live-action roleplay world, with characters, players, items and events all in one place. One quick step provisions your data store, then you're ready to play." }, - { "id": "demo-data", "type": "run-action", "action": "install-demo-data", "title": "Demo data (optional)", "required": false, "body": "Load an example LARP with characters, skills, items and events, so lists, character sheets and the event calendar show a working product right away. Optional, and safe to run more than once. Skip this on a production install." }, - { "id": "provision", "type": "run-action", "title": "Provision your world", "required": true, "action": "provision", "body": "Create the Larpinq register and schemas in OpenRegister: the data store for characters, players, abilities, skills, items, conditions, effects, events and settings. This normally runs automatically on install; run it here if OpenRegister was enabled after Larpinq, or to repair a partial install. It is safe to run more than once." }, - { "id": "done", "type": "summary", "title": "You're ready", "healthCheck": true, "body": "That's it. Your world's data store is provisioned. Jump into the Dashboard to see it at a glance, and reopen this setup or the guided tour anytime from the app's … menu." } + { + "id": "welcome", + "type": "info", + "title": "Welcome to LARPing", + "body": "Manage your live-action roleplay world, with characters, players, items and events all in one place. One quick step provisions your data store, then you're ready to play." + }, + { + "id": "demo-data", + "type": "choice", + "display": "cards", + "optionsSource": "datasets", + "configKey": "demo_dataset", + "title": "Load example data?", + "required": false, + "body": "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Pick \"None\" on a production install." + }, + { + "id": "load-demo-data", + "type": "run-action", + "action": "load-demo-data", + "title": "Load the example data", + "required": false, + "body": "Loads what you picked. The data is obviously sample data, it is safe to run more than once, and you can delete it afterwards." + }, + { + "id": "provision", + "type": "run-action", + "title": "Provision your world", + "required": true, + "action": "provision", + "body": "Create the Larpinq register and schemas in OpenRegister: the data store for characters, players, abilities, skills, items, conditions, effects, events and settings. This normally runs automatically on install; run it here if OpenRegister was enabled after Larpinq, or to repair a partial install. It is safe to run more than once." + }, + { + "id": "done", + "type": "summary", + "title": "You're ready", + "healthCheck": true, + "body": "That's it. Your world's data store is provisioned. Jump into the Dashboard to see it at a glance, and reopen this setup or the guided tour anytime from the app's … menu." + } ] }, "walkthrough": { @@ -24,19 +59,105 @@ "trigger": "first-visit", "minAppVersion": "0.1.27", "steps": [ - { "id": "welcome", "sinceVersion": "0.1.27", "placement": "center", "title": "Welcome to LARPing", "body": "Let's take a quick spin through your world. We'll create a character and an event together so you can see how the pieces fit, and you'll add each record yourself.", "target": { "kind": "page", "ref": "Dashboard" }, "advanceOn": { "type": "manual" } }, - { "id": "go-characters", "sinceVersion": "0.1.27", "placement": "right", "body": "Characters are the heart of your world. Open Characters from the menu to get started.", "task": "Click Characters in the menu", "target": { "kind": "nav-item", "ref": "Characters" }, "advanceOn": { "type": "route-match", "route": "Characters" } }, - { "id": "create-character", "sinceVersion": "0.1.27", "placement": "bottom", "allowManualNext": true, "body": "Add your first character. Give them a name and a type, and save. You can flesh out abilities, skills and items later.", "task": "Click New and save a character", "target": { "kind": "element", "ref": "index-add" }, "advanceOn": { "type": "object-created", "register": "larpinq", "schema": "character", "capture": { "characterId": ":id" } } }, - { "id": "go-events", "sinceVersion": "0.1.27", "placement": "right", "body": "Events are the game sessions where your world comes alive. Open Events from the menu.", "task": "Click Events in the menu", "target": { "kind": "nav-item", "ref": "Events" }, "advanceOn": { "type": "route-match", "route": "Events" } }, - { "id": "create-event", "sinceVersion": "0.1.27", "placement": "bottom", "allowManualNext": true, "body": "Create your first event. Name it and set a start date, then save. Your characters can join it from here.", "task": "Click New and save an event", "target": { "kind": "element", "ref": "index-add" }, "advanceOn": { "type": "object-created", "register": "larpinq", "schema": "larping_event", "capture": { "eventId": ":id" } } }, - { "id": "see-flows", "sinceVersion": "0.6.0", "placement": "right", "optional": true, "allowManualNext": true, "title": "Where the automation lives", "body": "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.", "task": "Open Flows in the menu", "target": {"kind": "nav-item", "ref": "Flows"}, "advanceOn": {"type": "route-match", "route": "Flows"}} , - { "id": "done", "sinceVersion": "0.1.27", "placement": "center", "title": "Your world has its first character", "body": "Add more characters and events from the menu, and the Dashboard tracks them as your world grows. The documentation covers the rest.", "task": "Open the documentation to keep going", "target": { "kind": "nav-item", "ref": "Documentation" }, "advanceOn": { "type": "manual" } } + { + "id": "welcome", + "sinceVersion": "0.1.27", + "placement": "center", + "title": "Welcome to LARPing", + "body": "Let's take a quick spin through your world. We'll create a character and an event together so you can see how the pieces fit, and you'll add each record yourself.", + "target": { "kind": "page", "ref": "Dashboard" }, + "advanceOn": { "type": "manual" } + }, + { + "id": "go-characters", + "sinceVersion": "0.1.27", + "placement": "right", + "body": "Characters are the heart of your world. Open Characters from the menu to get started.", + "task": "Click Characters in the menu", + "target": { "kind": "nav-item", "ref": "Characters" }, + "advanceOn": { "type": "route-match", "route": "Characters" } + }, + { + "id": "create-character", + "sinceVersion": "0.1.27", + "placement": "bottom", + "allowManualNext": true, + "body": "Add your first character. Give them a name and a type, and save. You can flesh out abilities, skills and items later.", + "task": "Click New and save a character", + "target": { "kind": "element", "ref": "index-add" }, + "advanceOn": { + "type": "object-created", + "register": "larpinq", + "schema": "character", + "capture": { "characterId": ":id" } + } + }, + { + "id": "go-events", + "sinceVersion": "0.1.27", + "placement": "right", + "body": "Events are the game sessions where your world comes alive. Open Events from the menu.", + "task": "Click Events in the menu", + "target": { "kind": "nav-item", "ref": "Events" }, + "advanceOn": { "type": "route-match", "route": "Events" } + }, + { + "id": "create-event", + "sinceVersion": "0.1.27", + "placement": "bottom", + "allowManualNext": true, + "body": "Create your first event. Name it and set a start date, then save. Your characters can join it from here.", + "task": "Click New and save an event", + "target": { "kind": "element", "ref": "index-add" }, + "advanceOn": { + "type": "object-created", + "register": "larpinq", + "schema": "larping_event", + "capture": { "eventId": ":id" } + } + }, + { + "id": "see-flows", + "sinceVersion": "0.6.0", + "placement": "right", + "optional": true, + "allowManualNext": true, + "title": "Where the automation lives", + "body": "Flows are what happens without anyone clicking: a reminder before a deadline passes, a confirmation sent on submission. This is where you read and edit them. Nothing to build now.", + "task": "Open Flows in the menu", + "target": { "kind": "nav-item", "ref": "Flows" }, + "advanceOn": { "type": "route-match", "route": "Flows" } + }, + { + "id": "done", + "sinceVersion": "0.1.27", + "placement": "center", + "title": "Your world has its first character", + "body": "Add more characters and events from the menu, and the Dashboard tracks them as your world grows. The documentation covers the rest.", + "task": "Open the documentation to keep going", + "target": { "kind": "nav-item", "ref": "Documentation" }, + "advanceOn": { "type": "manual" } + } ] } ] }, + "store": { + "_note": "Configuration exchange, not rows. A configuration set carries the registers, schemas, objects, views, flows, sources and mappings that make one way of working hold together. There is deliberately NO `installable` allowlist: a set exists to introduce schemas the instance does not have YET, so listing schemas this app already owns would refuse exactly the sets worth installing. The trust boundary for a bundle is its publisher, enforced by the engine's source allowlist and trusted-key check. \u26a0\ufe0f An EMPTY `installable` means install NOTHING, not install anything \u2014 omitting the key and declaring an empty list are different things.", + "types": [ + "openregister.configset", + "openregister.flows" + ], + "localRegister": "larpinq" + }, "menu": [ - { "id": "Dashboard", "label": "Dashboard", "icon": "ViewDashboardOutline", "route": "Dashboard", "order": 10 }, + { + "id": "Dashboard", + "label": "Dashboard", + "icon": "ViewDashboardOutline", + "route": "Dashboard", + "order": 10 + }, { "id": "CharactersGroup", "label": "Characters", @@ -44,8 +165,20 @@ "order": 20, "open": true, "children": [ - { "id": "Characters", "label": "Characters", "icon": "BriefcaseAccountOutline", "route": "Characters", "order": 20 }, - { "id": "Players", "label": "Players", "icon": "AccountGroupOutline", "route": "Players", "order": 30 } + { + "id": "Characters", + "label": "Characters", + "icon": "BriefcaseAccountOutline", + "route": "Characters", + "order": 20 + }, + { + "id": "Players", + "label": "Players", + "icon": "AccountGroupOutline", + "route": "Players", + "order": 30 + } ] }, { @@ -55,11 +188,41 @@ "order": 40, "open": true, "children": [ - { "id": "Abilities", "label": "Abilities", "icon": "FlashOutline", "route": "Abilities", "order": 40 }, - { "id": "Skills", "label": "Skills", "icon": "ToolboxOutline", "route": "Skills", "order": 50 }, - { "id": "SkillTree", "label": "Skill tree", "icon": "ToolboxOutline", "route": "SkillTree", "order": 55 }, - { "id": "Conditions", "label": "Conditions", "icon": "EmoticonSickOutline", "route": "Conditions", "order": 70 }, - { "id": "Effects", "label": "Effects", "icon": "MagicStaff", "route": "Effects", "order": 80 } + { + "id": "Abilities", + "label": "Abilities", + "icon": "FlashOutline", + "route": "Abilities", + "order": 40 + }, + { + "id": "Skills", + "label": "Skills", + "icon": "ToolboxOutline", + "route": "Skills", + "order": 50 + }, + { + "id": "SkillTree", + "label": "Skill tree", + "icon": "ToolboxOutline", + "route": "SkillTree", + "order": 55 + }, + { + "id": "Conditions", + "label": "Conditions", + "icon": "EmoticonSickOutline", + "route": "Conditions", + "order": 70 + }, + { + "id": "Effects", + "label": "Effects", + "icon": "MagicStaff", + "route": "Effects", + "order": 80 + } ] }, { @@ -69,15 +232,76 @@ "order": 60, "open": true, "children": [ - { "id": "Items", "label": "Items", "icon": "Sword", "route": "Items", "order": 60 }, - { "id": "Events", "label": "Events", "icon": "CalendarMonthOutline","route": "Events", "order": 90 }, - { "id": "XpAwards", "label": "XP Awards", "icon": "StarPlusOutline", "route": "XpAwards", "order": 95 } + { + "id": "Items", + "label": "Items", + "icon": "Sword", + "route": "Items", + "order": 60 + }, + { + "id": "Events", + "label": "Events", + "icon": "CalendarMonthOutline", + "route": "Events", + "order": 90 + }, + { + "id": "XpAwards", + "label": "XP Awards", + "icon": "StarPlusOutline", + "route": "XpAwards", + "order": 95 + } ] }, - { "id": "Settings", "label": "Worlds", "icon": "Earth", "route": "Settings", "order": 25 }, - { "id": "GameSettings", "label": "Game Settings", "icon": "CogOutline", "route": "GameSettings", "order": 100, "section": "settings" }, - { "id": "Documentation", "label": "Documentation", "icon": "BookOpenVariantOutline", "href": "https://larpinq.conduction.nl", "section": "footer", "order": 90 }, - { "id": "FeaturesRoadmapMenu","label": "Features & roadmap","icon": "MapMarkerPath","route": "FeaturesRoadmap", "section": "footer", "order": 91 }, + { + "id": "Settings", + "label": "Worlds", + "icon": "Earth", + "route": "Settings", + "order": 25 + }, + { + "id": "GameSettings", + "label": "Game Settings", + "icon": "CogOutline", + "route": "GameSettings", + "order": 100, + "section": "settings" + }, + { + "id": "Documentation", + "label": "Documentation", + "icon": "BookOpenVariantOutline", + "href": "https://larpinq.conduction.nl", + "section": "footer", + "order": 90 + }, + { + "id": "StoreMenu", + "label": "Store", + "icon": "StoreOutline", + "route": "Store", + "section": "footer", + "order": 92 + }, + { + "id": "ReportsMenu", + "label": "Reports", + "icon": "ChartBoxOutline", + "route": "Reports", + "section": "footer", + "order": 95 + }, + { + "id": "FeaturesRoadmapMenu", + "label": "Features & roadmap", + "icon": "MapMarkerPath", + "route": "FeaturesRoadmap", + "section": "footer", + "order": 100 + }, { "id": "FlowsMenu", "label": "Flows", @@ -87,7 +311,33 @@ "order": 96 } ], + "observability": { + "_note": "Declarative health descriptors for the AppHost engine (ADR-040 / ADR-006). Application::registerAppHostGenerics() aliases OpenRegister's GenericHealthController and GenericMetricsController onto larpinq's controller names, and those read THIS block at request time. Without it HealthCheckExecutor iterates an empty descriptor list, so /api/health answers 200 with an empty `checks` object — it would report `ok` with the database down. Metrics are the implicit larpinq_info and larpinq_up gauges the engine adds; health is public and metrics admin-only, per ADR-006.", + "health": { + "statusCodePolicy": "adr006", + "checks": [ + { "id": "database", "type": "database", "severity": "critical" }, + { + "id": "openregister", + "type": "orAvailable", + "severity": "degraded" + } + ] + } + }, "pages": [ + { + "id": "Store", + "route": "/store", + "type": "store", + "title": "Store", + "config": { + "app": "larpinq", + "title": "Store", + "description": "Install game configurations that other organisations have published: a skill tree, a set of conditions, or the flows behind an event." + }, + "_note": "ADR-114 Decision 4 / ADR-080. Declarative: openregister hosts the store plane, so this app writes NO store controller. With no registry configured the page renders the app's built-in items and makes NO network call." + }, { "id": "Dashboard", "route": "/", @@ -95,29 +345,235 @@ "title": "Dashboard", "config": { "widgets": [ - { "id": "kpi-characters", "title": "Characters", "type": "stat", "content": { "label": "Characters", "route": { "name": "Characters" }, "icon": "AccountGroup", "valueColor": "#0082c9", "format": { "style": "number" }, "source": { "register": "larpinq", "schema": "character", "metric": "count", "filter": {} } } }, - { "id": "kpi-events", "title": "Events", "type": "stat", "content": { "label": "Events", "route": { "name": "Events" }, "icon": "Calendar", "valueColor": "#0082c9", "format": { "style": "number" }, "source": { "register": "larpinq", "schema": "larping_event", "metric": "count", "filter": {} } } }, - { "id": "kpi-items", "title": "Items", "type": "stat", "content": { "label": "Items", "route": { "name": "Items" }, "icon": "Star", "valueColor": "#0082c9", "format": { "style": "number" }, "source": { "register": "larpinq", "schema": "larping_item", "metric": "count", "filter": {} } } }, - { "id": "kpi-players", "title": "Players", "type": "stat", "content": { "label": "Players", "route": { "name": "Players" }, "icon": "Account", "valueColor": "#0082c9", "format": { "style": "number" }, "source": { "register": "larpinq", "schema": "player", "metric": "count", "filter": {} } } }, - { "id": "recent-characters", "title": "Recent characters", "type": "object-table", "content": { "register": "larpinq", "schema": "character", "filter": {}, "sort": { "field": "created", "dir": "desc" }, "limit": 6, "rowRoute": "CharacterDetail", "rowIcon": "AccountGroup", "hideHeader": true, "viewAllRoute": { "name": "Characters" }, "viewAllLabel": "View all characters", "emptyText": "No characters yet", "columns": [{ "key": "name", "label": "Name" }, { "key": "type", "label": "Type" }] } }, - { "id": "recent-events", "title": "Recent events", "type": "object-table", "content": { "register": "larpinq", "schema": "larping_event", "filter": {}, "sort": { "field": "startDate", "dir": "desc" }, "limit": 6, "rowRoute": "EventDetail", "rowIcon": "CalendarStar", "hideHeader": true, "viewAllRoute": { "name": "Events" }, "viewAllLabel": "View all events", "emptyText": "No events yet", "columns": [{ "key": "name", "label": "Event" }, { "key": "startDate", "label": "Starts" }] } }, - { "id": "skill-usage", "title": "Skill usage by characters", "type": "chart", "content": { "chartKind": "donut", "legendPosition": "bottom", "emptyLabel": "No skill data available", "dataSource": { "register": "larpinq", "schema": "character", "aggregate": { "groupBy": "skills", "metric": "count", "topN": 10, "otherBucket": true, "labelResolve": { "schema": "skill", "labelField": "name" } } } } } + { + "id": "kpi-characters", + "title": "Characters", + "type": "stat", + "content": { + "label": "Characters", + "route": { "name": "Characters" }, + "icon": "AccountGroup", + "format": { "style": "number" }, + "source": { + "register": "larpinq", + "schema": "character", + "metric": "count", + "filter": {} + } + } + }, + { + "id": "kpi-events", + "title": "Events", + "type": "stat", + "content": { + "label": "Events", + "route": { "name": "Events" }, + "icon": "Calendar", + "format": { "style": "number" }, + "source": { + "register": "larpinq", + "schema": "larping_event", + "metric": "count", + "filter": {} + } + } + }, + { + "id": "kpi-items", + "title": "Items", + "type": "stat", + "content": { + "label": "Items", + "route": { "name": "Items" }, + "icon": "Star", + "format": { "style": "number" }, + "source": { + "register": "larpinq", + "schema": "larping_item", + "metric": "count", + "filter": {} + } + } + }, + { + "id": "kpi-players", + "title": "Players", + "type": "stat", + "content": { + "label": "Players", + "route": { "name": "Players" }, + "icon": "Account", + "format": { "style": "number" }, + "source": { + "register": "larpinq", + "schema": "player", + "metric": "count", + "filter": {} + } + } + }, + { + "id": "recent-characters", + "title": "Recent characters", + "type": "object-table", + "content": { + "register": "larpinq", + "schema": "character", + "filter": {}, + "sort": { "field": "created", "dir": "desc" }, + "limit": 6, + "rowRoute": "CharacterDetail", + "rowIcon": "AccountGroup", + "hideHeader": true, + "viewAllRoute": { "name": "Characters" }, + "viewAllLabel": "View all characters", + "emptyText": "No characters yet", + "columns": [ + { "key": "name", "label": "Name" }, + { "key": "type", "label": "Type" } + ] + } + }, + { + "id": "recent-events", + "title": "Recent events", + "type": "object-table", + "content": { + "register": "larpinq", + "schema": "larping_event", + "filter": {}, + "sort": { "field": "startDate", "dir": "desc" }, + "limit": 6, + "rowRoute": "EventDetail", + "rowIcon": "CalendarStar", + "hideHeader": true, + "viewAllRoute": { "name": "Events" }, + "viewAllLabel": "View all events", + "emptyText": "No events yet", + "columns": [ + { "key": "name", "label": "Event" }, + { "key": "startDate", "label": "Starts" } + ] + } + }, + { + "id": "skill-usage", + "title": "Skill usage by characters", + "type": "chart", + "content": { + "chartKind": "donut", + "legendPosition": "bottom", + "emptyLabel": "No skill data available", + "dataSource": { + "register": "larpinq", + "schema": "character", + "aggregate": { + "groupBy": "skills", + "metric": "count", + "topN": 10, + "otherBucket": true, + "labelResolve": { + "schema": "larping_skill", + "labelField": "name" + } + } + } + } + } ], "layout": [ - { "id": 1, "widgetId": "kpi-characters", "gridX": 0, "gridY": 0, "gridWidth": 3, "gridHeight": 2, "showTitle": false }, - { "id": 2, "widgetId": "kpi-events", "gridX": 3, "gridY": 0, "gridWidth": 3, "gridHeight": 2, "showTitle": false }, - { "id": 3, "widgetId": "kpi-items", "gridX": 6, "gridY": 0, "gridWidth": 3, "gridHeight": 2, "showTitle": false }, - { "id": 4, "widgetId": "kpi-players", "gridX": 9, "gridY": 0, "gridWidth": 3, "gridHeight": 2, "showTitle": false }, - { "id": 5, "widgetId": "recent-characters", "gridX": 0, "gridY": 2, "gridWidth": 6, "gridHeight": 4 }, - { "id": 6, "widgetId": "recent-events", "gridX": 6, "gridY": 2, "gridWidth": 6, "gridHeight": 4 }, - { "id": 7, "widgetId": "skill-usage", "gridX": 0, "gridY": 6, "gridWidth": 12, "gridHeight": 5 } + { + "id": 1, + "widgetId": "kpi-characters", + "gridX": 0, + "gridY": 0, + "gridWidth": 3, + "gridHeight": 2, + "showTitle": false + }, + { + "id": 2, + "widgetId": "kpi-events", + "gridX": 3, + "gridY": 0, + "gridWidth": 3, + "gridHeight": 2, + "showTitle": false + }, + { + "id": 3, + "widgetId": "kpi-items", + "gridX": 6, + "gridY": 0, + "gridWidth": 3, + "gridHeight": 2, + "showTitle": false + }, + { + "id": 4, + "widgetId": "kpi-players", + "gridX": 9, + "gridY": 0, + "gridWidth": 3, + "gridHeight": 2, + "showTitle": false + }, + { + "id": 5, + "widgetId": "recent-characters", + "gridX": 0, + "gridY": 2, + "gridWidth": 6, + "gridHeight": 4 + }, + { + "id": 6, + "widgetId": "recent-events", + "gridX": 6, + "gridY": 2, + "gridWidth": 6, + "gridHeight": 4 + }, + { + "id": 7, + "widgetId": "skill-usage", + "gridX": 0, + "gridY": 6, + "gridWidth": 12, + "gridHeight": 5 + } ], "documentationUrl": "https://larpinq.conduction.nl", "headerActions": [ - { "id": "new-character", "label": "New character", "type": "open-form", "icon": "Plus", "variant": "primary", "register": "larpinq", "schema": "character", "onSuccessRoute": "Characters" }, - { "id": "new-item", "label": "New item", "type": "open-form", "icon": "Plus", "register": "larpinq", "schema": "larping_item", "onSuccessRoute": "Items" }, - { "id": "new-condition", "label": "New condition", "type": "open-form", "icon": "Plus", "register": "larpinq", "schema": "condition", "onSuccessRoute": "Conditions" }, - { "id": "refresh-dashboard", "label": "Refresh dashboard", "type": "refresh", "icon": "Refresh" } + { + "id": "new-character", + "label": "New character", + "type": "open-form", + "icon": "Plus", + "variant": "primary", + "register": "larpinq", + "schema": "character", + "onSuccessRoute": "Characters" + }, + { + "id": "new-item", + "label": "New item", + "type": "open-form", + "icon": "Plus", + "register": "larpinq", + "schema": "larping_item", + "onSuccessRoute": "Items" + }, + { + "id": "new-condition", + "label": "New condition", + "type": "open-form", + "icon": "Plus", + "register": "larpinq", + "schema": "condition", + "onSuccessRoute": "Conditions" + } ] } }, @@ -126,7 +582,11 @@ "route": "/characters", "type": "index", "title": "Characters", - "config": { "register": "larpinq", "schema": "character", "documentationUrl": "https://larpinq.conduction.nl" } + "config": { + "register": "larpinq", + "schema": "character", + "documentationUrl": "https://larpinq.conduction.nl" + } }, { "id": "CharacterDetail", @@ -139,28 +599,196 @@ "documentationUrl": "https://larpinq.conduction.nl", "_note": "ADR-062 rollout: split the sheet into identity (name/player/setting/description/background/faith, 6 fields) vs game state & notes (type/approved/gold/silver/copper/itemsAndMoney/card/notice/GM notes, 10 fields) per rule 3. The loose XP + Gold stat cards fold into one stats-block (rule 2, same-flavor simple KPIs) top-right, aligned with the identity row. The right rail lists the linked mechanics (skills/items/conditions) and event participation as related groups so a GM can see the whole build at a glance. The character portrait/sheet lives in the photos leaf (schema declares linkedType 'photos') as a body integration widget. XP awards granted to this character are shown as an object-list (xpAward.character FK = @objectId) — GM hand-awarded per xpAward's schema description, so allowCreate stays on (default). No email/calendar on the body: the character schema declares only 'photos'. Sidebar is audit-history only — the photos leaf already lives in the body, so it is not duplicated as a sidebar tab.", "widgets": [ - { "id": "char-identity", "type": "data", "title": "Identity", "icon": "Account", "content": { "columns": 2, "include": [ "name", "ocName", "setting", "description", "background", "faith" ] } }, - { "id": "char-stats-xp-awarded", "type": "stats-block", "title": "XP awarded", "icon": "Trophy", "content": { "entries": [ { "title": "XP awarded", "register": "larpinq", "schema": "xpAward", "metric": "sum", "field": "amount", "filter": { "character": "@objectId" }, "route": { "name": "XpAwards", "query": { "character": "@objectId" } } } ] } }, - { "id": "char-stats-gold-pieces", "type": "stats-block", "title": "Gold pieces", "icon": "Trophy", "content": { "entries": [ { "title": "Gold pieces", "register": "larpinq", "schema": "character", "metric": "sum", "field": "gold", "filter": { "id": "@objectId" } } ] } }, - { "id": "char-progress", "type": "data", "title": "Game state & notes", "icon": "ClipboardList", "content": { "columns": 2, "include": [ "type", "approved", "gold", "silver", "copper", "itemsAndMoney", "card", "notice", "slNotesPublic", "slNotesPrivate" ] } }, - { "id": "char-related", "type": "related", "title": "Build & world", "icon": "LinkVariant", "content": { "groups": [ { "key": "skills", "label": "Skills" }, { "key": "items", "label": "Items" }, { "key": "conditions", "label": "Conditions" }, { "key": "events", "label": "Events" } ] } }, - { "id": "char-xpawards", "type": "object-list", "title": "XP award history", "icon": "Trophy", "content": { "register": "larpinq", "schema": "xpAward", "filter": { "character": "@objectId" }, "sort": { "field": "awardedAt", "dir": "desc" }, "columns": [ { "key": "event", "label": "Event" }, { "key": "amount", "label": "XP" }, { "key": "reason", "label": "Reason" }, { "key": "awardedAt", "label": "Awarded" } ], "limit": 50, "viewAllRoute": "XpAwards", "viewAllQuery": { "character": "@objectId" }, "emptyText": "No XP awarded yet." } }, - { "id": "char-photos", "type": "integration", "integrationId": "photos", "title": "Portrait & sheet", "icon": "FileDocument" } + { + "id": "char-identity", + "type": "data", + "title": "Identity", + "icon": "Account", + "content": { + "columns": 2, + "include": [ + "name", + "ocName", + "setting", + "description", + "background", + "faith" + ] + } + }, + { + "id": "char-stats-xp-awarded", + "type": "stats-block", + "title": "XP awarded", + "icon": "Trophy", + "content": { + "entries": [ + { + "title": "XP awarded", + "register": "larpinq", + "schema": "xpAward", + "metric": "sum", + "field": "amount", + "filter": { "character": "@objectId" }, + "route": { + "name": "XpAwards", + "query": { "character": "@objectId" } + } + } + ] + } + }, + { + "id": "char-stats-gold-pieces", + "type": "stats-block", + "title": "Gold pieces", + "icon": "Trophy", + "content": { + "entries": [ + { + "title": "Gold pieces", + "register": "larpinq", + "schema": "character", + "metric": "sum", + "field": "gold", + "filter": { "id": "@objectId" } + } + ] + } + }, + { + "id": "char-progress", + "type": "data", + "title": "Game state & notes", + "icon": "ClipboardList", + "content": { + "columns": 2, + "include": [ + "type", + "approved", + "gold", + "silver", + "copper", + "itemsAndMoney", + "card", + "notice", + "slNotesPublic", + "slNotesPrivate" + ] + } + }, + { + "id": "char-related", + "type": "related", + "title": "Build & world", + "icon": "LinkVariant", + "content": { + "groups": [ + { "key": "skills", "label": "Skills" }, + { "key": "items", "label": "Items" }, + { "key": "conditions", "label": "Conditions" }, + { "key": "events", "label": "Events" } + ] + } + }, + { + "id": "char-xpawards", + "type": "object-list", + "title": "XP award history", + "icon": "Trophy", + "content": { + "register": "larpinq", + "schema": "xpAward", + "filter": { "character": "@objectId" }, + "sort": { "field": "awardedAt", "dir": "desc" }, + "columns": [ + { "key": "event", "label": "Event" }, + { "key": "amount", "label": "XP" }, + { "key": "reason", "label": "Reason" }, + { "key": "awardedAt", "label": "Awarded" } + ], + "limit": 50, + "viewAllRoute": "XpAwards", + "viewAllQuery": { "character": "@objectId" }, + "emptyText": "No XP awarded yet." + } + }, + { + "id": "char-photos", + "type": "integration", + "integrationId": "photos", + "title": "Portrait & sheet", + "icon": "FileDocument" + } ], "layout": [ - { "id": "1", "widgetId": "char-identity", "gridX": 0, "gridY": 0, "gridWidth": 8, "gridHeight": 4 }, - { "id": "2a", "widgetId": "char-stats-xp-awarded", "gridX": 8, "gridY": 0, "gridWidth": 4, "gridHeight": 2 }, - { "id": "2b", "widgetId": "char-stats-gold-pieces", "gridX": 8, "gridY": 2, "gridWidth": 4, "gridHeight": 2 }, - { "id": "3", "widgetId": "char-progress", "gridX": 0, "gridY": 4, "gridWidth": 8, "gridHeight": 6 }, - { "id": "4", "widgetId": "char-related", "gridX": 8, "gridY": 4, "gridWidth": 4, "gridHeight": 6 }, - { "id": "5", "widgetId": "char-xpawards", "gridX": 0, "gridY": 10, "gridWidth": 12, "gridHeight": 4 }, - { "id": "6", "widgetId": "char-photos", "gridX": 0, "gridY": 14, "gridWidth": 12, "gridHeight": 4 } + { + "id": "1", + "widgetId": "char-identity", + "gridX": 0, + "gridY": 0, + "gridWidth": 8, + "gridHeight": 4 + }, + { + "id": "2a", + "widgetId": "char-stats-xp-awarded", + "gridX": 8, + "gridY": 0, + "gridWidth": 4, + "gridHeight": 2 + }, + { + "id": "2b", + "widgetId": "char-stats-gold-pieces", + "gridX": 8, + "gridY": 2, + "gridWidth": 4, + "gridHeight": 2 + }, + { + "id": "3", + "widgetId": "char-progress", + "gridX": 0, + "gridY": 4, + "gridWidth": 8, + "gridHeight": 6 + }, + { + "id": "4", + "widgetId": "char-related", + "gridX": 8, + "gridY": 4, + "gridWidth": 4, + "gridHeight": 6 + }, + { + "id": "5", + "widgetId": "char-xpawards", + "gridX": 0, + "gridY": 10, + "gridWidth": 12, + "gridHeight": 4 + }, + { + "id": "6", + "widgetId": "char-photos", + "gridX": 0, + "gridY": 14, + "gridWidth": 12, + "gridHeight": 4 + } ], "sidebar": { "enabled": true, "showMetadata": true, "tabs": [ - { "id": "audit", "label": "History", "icon": "History", "widgets": [ { "type": "audit" } ] } + { + "id": "audit", + "label": "History", + "icon": "History", + "widgets": [{ "type": "audit" }] + } ] } } @@ -170,7 +798,11 @@ "route": "/players", "type": "index", "title": "Players", - "config": { "register": "larpinq", "schema": "player", "documentationUrl": "https://larpinq.conduction.nl" } + "config": { + "register": "larpinq", + "schema": "player", + "documentationUrl": "https://larpinq.conduction.nl" + } }, { "id": "PlayerDetail", @@ -183,22 +815,91 @@ "documentationUrl": "https://larpinq.conduction.nl", "_note": "Player = the real-world person behind the characters (person archetype). The player schema is deliberately thin (name + notes) and its only declared linkedType is 'contacts', so the body is person-first: identity/notes (data, 7-wide) beside the linked Nextcloud contact card (contacts integration, 5-wide) for phone/email/address. ADR-062 correction: round 1 claimed characters attach by OC name string with no reliable FK — that was stale; character.ocName carries a canonical $ref to player, so a 'characters played' object-list (character.ocName = @objectId) is now added beside Related. No email/calendar/talk widgets on the body — the schema declares only 'contacts'. Sidebar is audit-history only — the contact card already lives in the body, so it is not duplicated as a sidebar tab.", "widgets": [ - { "id": "player-data", "type": "data", "title": "Player", "icon": "Account", "content": { "columns": 1 } }, - { "id": "player-contacts", "type": "integration", "integrationId": "contacts", "title": "Contact card", "icon": "AccountBoxOutline" }, - { "id": "player-related", "type": "related", "title": "Related", "icon": "LinkVariant" }, - { "id": "player-characters", "type": "object-list", "title": "Characters played", "icon": "Briefcase", "content": { "register": "larpinq", "schema": "character", "filter": { "ocName": "@objectId" }, "columns": [ { "key": "name", "label": "Character" }, { "key": "type", "label": "Type" }, { "key": "approved", "label": "Approved" } ], "limit": 50, "viewAllRoute": "Characters", "viewAllQuery": { "ocName": "@objectId" }, "emptyText": "No characters played yet." } } + { + "id": "player-data", + "type": "data", + "title": "Player", + "icon": "Account", + "content": { "columns": 1 } + }, + { + "id": "player-contacts", + "type": "integration", + "integrationId": "contacts", + "title": "Contact card", + "icon": "AccountBoxOutline" + }, + { + "id": "player-related", + "type": "related", + "title": "Related", + "icon": "LinkVariant" + }, + { + "id": "player-characters", + "type": "object-list", + "title": "Characters played", + "icon": "Briefcase", + "content": { + "register": "larpinq", + "schema": "character", + "filter": { "ocName": "@objectId" }, + "columns": [ + { "key": "name", "label": "Character" }, + { "key": "type", "label": "Type" }, + { "key": "approved", "label": "Approved" } + ], + "limit": 50, + "viewAllRoute": "Characters", + "viewAllQuery": { "ocName": "@objectId" }, + "emptyText": "No characters played yet." + } + } ], "layout": [ - { "id": "1", "widgetId": "player-data", "gridX": 0, "gridY": 0, "gridWidth": 7, "gridHeight": 4 }, - { "id": "2", "widgetId": "player-contacts", "gridX": 7, "gridY": 0, "gridWidth": 5, "gridHeight": 4 }, - { "id": "3", "widgetId": "player-related", "gridX": 0, "gridY": 4, "gridWidth": 6, "gridHeight": 4 }, - { "id": "4", "widgetId": "player-characters", "gridX": 6, "gridY": 4, "gridWidth": 6, "gridHeight": 4 } + { + "id": "1", + "widgetId": "player-data", + "gridX": 0, + "gridY": 0, + "gridWidth": 7, + "gridHeight": 4 + }, + { + "id": "2", + "widgetId": "player-contacts", + "gridX": 7, + "gridY": 0, + "gridWidth": 5, + "gridHeight": 4 + }, + { + "id": "3", + "widgetId": "player-related", + "gridX": 0, + "gridY": 4, + "gridWidth": 6, + "gridHeight": 4 + }, + { + "id": "4", + "widgetId": "player-characters", + "gridX": 6, + "gridY": 4, + "gridWidth": 6, + "gridHeight": 4 + } ], "sidebar": { "enabled": true, "showMetadata": true, "tabs": [ - { "id": "audit", "label": "History", "icon": "History", "widgets": [ { "type": "audit" } ] } + { + "id": "audit", + "label": "History", + "icon": "History", + "widgets": [{ "type": "audit" }] + } ] } } @@ -208,7 +909,11 @@ "route": "/abilities", "type": "index", "title": "Abilities", - "config": { "register": "larpinq", "schema": "ability", "documentationUrl": "https://larpinq.conduction.nl" } + "config": { + "register": "larpinq", + "schema": "ability", + "documentationUrl": "https://larpinq.conduction.nl" + } }, { "id": "AbilityDetail", @@ -221,24 +926,131 @@ "documentationUrl": "https://larpinq.conduction.nl", "_note": "Ability = a numeric stat (XP, Mana, Health, Armor) that characters track (rules-object archetype). The body is definition-first: the stat's name/description/base value (data, 8-wide) plus a large base-value stat card (single distinct KPI — kept loose, not folded into a stats-block), then the reverse index of what touches this stat — the effects that modify it (effect.abilities FK = @objectId) and the skills that gate on it (skill.requiredStats contains @objectId). This is a pure rules object: no comms, no files, no attachments — a GM reads it to understand how a stat is wired into the ruleset.", "widgets": [ - { "id": "ability-data", "type": "data", "title": "Ability", "icon": "Gauge", "content": { "columns": 2 } }, - { "id": "ability-base", "type": "stat", "title": "Base value", "icon": "Gauge", "content": { "label": "Base value", "icon": "Gauge", "format": { "style": "number" }, "source": { "register": "larpinq", "schema": "ability", "metric": "sum", "field": "base", "filter": { "id": "@objectId" } } } }, - { "id": "ability-effects", "type": "object-list", "title": "Effects modifying this ability", "icon": "TrendingUp", "content": { "register": "larpinq", "schema": "effect", "filter": { "abilities": "@objectId" }, "columns": [ { "key": "name", "label": "Effect" }, { "key": "modifier", "label": "Modifier" }, { "key": "modification", "label": "Direction" }, { "key": "cumulative", "label": "Stacks" } ], "limit": 50, "viewAllRoute": "Effects", "viewAllQuery": { "abilities": "@objectId" }, "emptyText": "No effects modify this stat yet." } }, - { "id": "ability-skills", "type": "object-list", "title": "Skills requiring this stat", "icon": "School", "content": { "register": "larpinq", "schema": "skill", "filter": { "requiredStats": "@objectId" }, "columns": [ { "key": "name", "label": "Skill" }, { "key": "requiredScore", "label": "Min score" } ], "limit": 50, "viewAllRoute": "Skills", "viewAllQuery": { "requiredStats": "@objectId" }, "emptyText": "No skills require this stat yet." } }, - { "id": "ability-related", "type": "related", "title": "Related", "icon": "LinkVariant" } + { + "id": "ability-data", + "type": "data", + "title": "Ability", + "icon": "Gauge", + "content": { "columns": 2 } + }, + { + "id": "ability-base", + "type": "stat", + "title": "Base value", + "icon": "Gauge", + "content": { + "label": "Base value", + "icon": "Gauge", + "format": { "style": "number" }, + "source": { + "register": "larpinq", + "schema": "ability", + "metric": "sum", + "field": "base", + "filter": { "id": "@objectId" } + } + } + }, + { + "id": "ability-effects", + "type": "object-list", + "title": "Effects modifying this ability", + "icon": "TrendingUp", + "content": { + "register": "larpinq", + "schema": "effect", + "filter": { "abilities": "@objectId" }, + "columns": [ + { "key": "name", "label": "Effect" }, + { "key": "modifier", "label": "Modifier" }, + { "key": "modification", "label": "Direction" }, + { "key": "cumulative", "label": "Stacks" } + ], + "limit": 50, + "viewAllRoute": "Effects", + "viewAllQuery": { "abilities": "@objectId" }, + "emptyText": "No effects modify this stat yet." + } + }, + { + "id": "ability-skills", + "type": "object-list", + "title": "Skills requiring this stat", + "icon": "School", + "content": { + "register": "larpinq", + "schema": "larping_skill", + "filter": { "requiredStats": "@objectId" }, + "columns": [ + { "key": "name", "label": "Skill" }, + { "key": "requiredScore", "label": "Min score" } + ], + "limit": 50, + "viewAllRoute": "Skills", + "viewAllQuery": { "requiredStats": "@objectId" }, + "emptyText": "No skills require this stat yet." + } + }, + { + "id": "ability-related", + "type": "related", + "title": "Related", + "icon": "LinkVariant" + } ], "layout": [ - { "id": "1", "widgetId": "ability-data", "gridX": 0, "gridY": 0, "gridWidth": 8, "gridHeight": 3 }, - { "id": "2", "widgetId": "ability-base", "gridX": 8, "gridY": 0, "gridWidth": 4, "gridHeight": 3, "showTitle": false }, - { "id": "3", "widgetId": "ability-effects", "gridX": 0, "gridY": 3, "gridWidth": 6, "gridHeight": 4 }, - { "id": "4", "widgetId": "ability-skills", "gridX": 6, "gridY": 3, "gridWidth": 6, "gridHeight": 4 }, - { "id": "5", "widgetId": "ability-related", "gridX": 0, "gridY": 7, "gridWidth": 12, "gridHeight": 3 } + { + "id": "1", + "widgetId": "ability-data", + "gridX": 0, + "gridY": 0, + "gridWidth": 8, + "gridHeight": 3 + }, + { + "id": "2", + "widgetId": "ability-base", + "gridX": 8, + "gridY": 0, + "gridWidth": 4, + "gridHeight": 3, + "showTitle": false + }, + { + "id": "3", + "widgetId": "ability-effects", + "gridX": 0, + "gridY": 3, + "gridWidth": 6, + "gridHeight": 4 + }, + { + "id": "4", + "widgetId": "ability-skills", + "gridX": 6, + "gridY": 3, + "gridWidth": 6, + "gridHeight": 4 + }, + { + "id": "5", + "widgetId": "ability-related", + "gridX": 0, + "gridY": 7, + "gridWidth": 12, + "gridHeight": 3 + } ], "sidebar": { "enabled": true, "showMetadata": true, "tabs": [ - { "id": "audit", "label": "History", "icon": "History", "widgets": [ { "type": "audit" } ] } + { + "id": "audit", + "label": "History", + "icon": "History", + "widgets": [{ "type": "audit" }] + } ] } } @@ -248,7 +1060,11 @@ "route": "/skills", "type": "index", "title": "Skills", - "config": { "register": "larpinq", "schema": "skill", "documentationUrl": "https://larpinq.conduction.nl" } + "config": { + "register": "larpinq", + "schema": "larping_skill", + "documentationUrl": "https://larpinq.conduction.nl" + } }, { "id": "SkillTree", @@ -266,24 +1082,101 @@ "title": "Skill", "config": { "register": "larpinq", - "schema": "skill", + "schema": "larping_skill", "documentationUrl": "https://larpinq.conduction.nl", "_note": "Skill = a learnable, XP-purchased ability with prerequisites (rules-object archetype, prerequisite-heavy). The body leads with the skill's flavour + mechanical effect (data, 8-wide) beside a related rail that surfaces the four prerequisite groups the schema carries (required skills, required stats, required conditions, required effects) plus the effects it grants — the whole dependency tree in one place. Below, an object-list of characters who have learned this skill (character.skills contains @objectId) lets a GM see adoption. Pure rules object: no comms, no files.", "widgets": [ - { "id": "skill-data", "type": "data", "title": "Skill", "icon": "School", "content": { "columns": 2 } }, - { "id": "skill-prereqs", "type": "related", "title": "Effects & prerequisites", "icon": "Sitemap", "content": { "groups": [ { "key": "effects", "label": "Grants effects" }, { "key": "requiredSkills", "label": "Requires skills" }, { "key": "requiredStats", "label": "Requires stats" }, { "key": "requiredConditions", "label": "Requires conditions" }, { "key": "requiredEffects", "label": "Requires effects" } ] } }, - { "id": "skill-characters", "type": "object-list", "title": "Characters with this skill", "icon": "AccountGroup", "content": { "register": "larpinq", "schema": "character", "filter": { "skills": "@objectId" }, "columns": [ { "key": "name", "label": "Character" }, { "key": "type", "label": "Type" }, { "key": "approved", "label": "Approved" } ], "limit": 50, "viewAllRoute": "Characters", "viewAllQuery": { "skills": "@objectId" }, "emptyText": "No characters have learned this skill yet." } } + { + "id": "skill-data", + "type": "data", + "title": "Skill", + "icon": "School", + "content": { "columns": 2 } + }, + { + "id": "skill-prereqs", + "type": "related", + "title": "Effects & prerequisites", + "icon": "Sitemap", + "content": { + "groups": [ + { "key": "effects", "label": "Grants effects" }, + { + "key": "requiredSkills", + "label": "Requires skills" + }, + { + "key": "requiredStats", + "label": "Requires stats" + }, + { + "key": "requiredConditions", + "label": "Requires conditions" + }, + { + "key": "requiredEffects", + "label": "Requires effects" + } + ] + } + }, + { + "id": "skill-characters", + "type": "object-list", + "title": "Characters with this skill", + "icon": "AccountGroup", + "content": { + "register": "larpinq", + "schema": "character", + "filter": { "skills": "@objectId" }, + "columns": [ + { "key": "name", "label": "Character" }, + { "key": "type", "label": "Type" }, + { "key": "approved", "label": "Approved" } + ], + "limit": 50, + "viewAllRoute": "Characters", + "viewAllQuery": { "skills": "@objectId" }, + "emptyText": "No characters have learned this skill yet." + } + } ], "layout": [ - { "id": "1", "widgetId": "skill-data", "gridX": 0, "gridY": 0, "gridWidth": 8, "gridHeight": 5 }, - { "id": "2", "widgetId": "skill-prereqs", "gridX": 8, "gridY": 0, "gridWidth": 4, "gridHeight": 5 }, - { "id": "3", "widgetId": "skill-characters", "gridX": 0, "gridY": 5, "gridWidth": 12, "gridHeight": 4 } + { + "id": "1", + "widgetId": "skill-data", + "gridX": 0, + "gridY": 0, + "gridWidth": 8, + "gridHeight": 5 + }, + { + "id": "2", + "widgetId": "skill-prereqs", + "gridX": 8, + "gridY": 0, + "gridWidth": 4, + "gridHeight": 5 + }, + { + "id": "3", + "widgetId": "skill-characters", + "gridX": 0, + "gridY": 5, + "gridWidth": 12, + "gridHeight": 4 + } ], "sidebar": { "enabled": true, "showMetadata": true, "tabs": [ - { "id": "audit", "label": "History", "icon": "History", "widgets": [ { "type": "audit" } ] } + { + "id": "audit", + "label": "History", + "icon": "History", + "widgets": [{ "type": "audit" }] + } ] } } @@ -293,7 +1186,11 @@ "route": "/items", "type": "index", "title": "Items", - "config": { "register": "larpinq", "schema": "larping_item", "documentationUrl": "https://larpinq.conduction.nl" } + "config": { + "register": "larpinq", + "schema": "larping_item", + "documentationUrl": "https://larpinq.conduction.nl" + } }, { "id": "ItemDetail", @@ -306,22 +1203,95 @@ "documentationUrl": "https://larpinq.conduction.nl", "_note": "Item = a magical/special object that grants effects to its holder (rules-object archetype, ownership-tracked). The body leads with the item's player-visible story description + GM mechanical effect (data, 8-wide) beside the effects it confers (related), then an object-list of the characters currently holding it (item.characters contains @objectId / character.items) — critical for unique artifacts where only one holder may exist. Files are on the body because props and physrep photos/handouts are commonly attached to items. No email/calendar: the item schema declares no comms linkedTypes.", "widgets": [ - { "id": "item-data", "type": "data", "title": "Item", "icon": "Package", "content": { "columns": 2 } }, - { "id": "item-effects", "type": "related", "title": "Effects", "icon": "LinkVariant", "content": { "groups": [ { "key": "effects", "label": "Grants effects" } ] } }, - { "id": "item-holders", "type": "object-list", "title": "Held by", "icon": "AccountGroup", "content": { "register": "larpinq", "schema": "character", "filter": { "items": "@objectId" }, "columns": [ { "key": "name", "label": "Character" }, { "key": "type", "label": "Type" } ], "limit": 50, "viewAllRoute": "Characters", "viewAllQuery": { "items": "@objectId" }, "emptyText": "Nobody is holding this item yet." } }, - { "id": "item-files", "type": "integration", "integrationId": "files", "title": "Props & handouts", "icon": "FolderOutline" } + { + "id": "item-data", + "type": "data", + "title": "Item", + "icon": "Package", + "content": { "columns": 2 } + }, + { + "id": "item-effects", + "type": "related", + "title": "Effects", + "icon": "LinkVariant", + "content": { + "groups": [ + { "key": "effects", "label": "Grants effects" } + ] + } + }, + { + "id": "item-holders", + "type": "object-list", + "title": "Held by", + "icon": "AccountGroup", + "content": { + "register": "larpinq", + "schema": "character", + "filter": { "items": "@objectId" }, + "columns": [ + { "key": "name", "label": "Character" }, + { "key": "type", "label": "Type" } + ], + "limit": 50, + "viewAllRoute": "Characters", + "viewAllQuery": { "items": "@objectId" }, + "emptyText": "Nobody is holding this item yet." + } + }, + { + "id": "item-files", + "type": "integration", + "integrationId": "files", + "title": "Props & handouts", + "icon": "FolderOutline" + } ], "layout": [ - { "id": "1", "widgetId": "item-data", "gridX": 0, "gridY": 0, "gridWidth": 8, "gridHeight": 4 }, - { "id": "2", "widgetId": "item-effects", "gridX": 8, "gridY": 0, "gridWidth": 4, "gridHeight": 4 }, - { "id": "3", "widgetId": "item-holders", "gridX": 0, "gridY": 4, "gridWidth": 6, "gridHeight": 4 }, - { "id": "4", "widgetId": "item-files", "gridX": 6, "gridY": 4, "gridWidth": 6, "gridHeight": 4 } + { + "id": "1", + "widgetId": "item-data", + "gridX": 0, + "gridY": 0, + "gridWidth": 8, + "gridHeight": 4 + }, + { + "id": "2", + "widgetId": "item-effects", + "gridX": 8, + "gridY": 0, + "gridWidth": 4, + "gridHeight": 4 + }, + { + "id": "3", + "widgetId": "item-holders", + "gridX": 0, + "gridY": 4, + "gridWidth": 6, + "gridHeight": 4 + }, + { + "id": "4", + "widgetId": "item-files", + "gridX": 6, + "gridY": 4, + "gridWidth": 6, + "gridHeight": 4 + } ], "sidebar": { "enabled": true, "showMetadata": true, "tabs": [ - { "id": "audit", "label": "History", "icon": "History", "widgets": [ { "type": "audit" } ] } + { + "id": "audit", + "label": "History", + "icon": "History", + "widgets": [{ "type": "audit" }] + } ] } } @@ -331,7 +1301,11 @@ "route": "/conditions", "type": "index", "title": "Conditions", - "config": { "register": "larpinq", "schema": "condition", "documentationUrl": "https://larpinq.conduction.nl" } + "config": { + "register": "larpinq", + "schema": "condition", + "documentationUrl": "https://larpinq.conduction.nl" + } }, { "id": "ConditionDetail", @@ -344,20 +1318,80 @@ "documentationUrl": "https://larpinq.conduction.nl", "_note": "Condition = a positive/negative status earned through gameplay (not purchased) that applies automated effects (rules-object archetype). The body leads with the flavour + mechanical description (data, 8-wide) beside the automated effects it applies (related), then an object-list of the characters currently affected (condition.characters contains @objectId / character.conditions) — the live 'who is currently poisoned/blessed' roster a GM needs during play. Pure rules object: no comms, no files.", "widgets": [ - { "id": "condition-data", "type": "data", "title": "Condition", "icon": "AlertCircleOutline", "content": { "columns": 2 } }, - { "id": "condition-effects", "type": "related", "title": "Applied effects", "icon": "LinkVariant", "content": { "groups": [ { "key": "effects", "label": "Applies effects" } ] } }, - { "id": "condition-characters", "type": "object-list", "title": "Currently affecting", "icon": "AccountGroup", "content": { "register": "larpinq", "schema": "character", "filter": { "conditions": "@objectId" }, "columns": [ { "key": "name", "label": "Character" }, { "key": "type", "label": "Type" } ], "limit": 50, "viewAllRoute": "Characters", "viewAllQuery": { "conditions": "@objectId" }, "emptyText": "No characters are currently affected." } } + { + "id": "condition-data", + "type": "data", + "title": "Condition", + "icon": "AlertCircleOutline", + "content": { "columns": 2 } + }, + { + "id": "condition-effects", + "type": "related", + "title": "Applied effects", + "icon": "LinkVariant", + "content": { + "groups": [ + { "key": "effects", "label": "Applies effects" } + ] + } + }, + { + "id": "condition-characters", + "type": "object-list", + "title": "Currently affecting", + "icon": "AccountGroup", + "content": { + "register": "larpinq", + "schema": "character", + "filter": { "conditions": "@objectId" }, + "columns": [ + { "key": "name", "label": "Character" }, + { "key": "type", "label": "Type" } + ], + "limit": 50, + "viewAllRoute": "Characters", + "viewAllQuery": { "conditions": "@objectId" }, + "emptyText": "No characters are currently affected." + } + } ], "layout": [ - { "id": "1", "widgetId": "condition-data", "gridX": 0, "gridY": 0, "gridWidth": 8, "gridHeight": 4 }, - { "id": "2", "widgetId": "condition-effects", "gridX": 8, "gridY": 0, "gridWidth": 4, "gridHeight": 4 }, - { "id": "3", "widgetId": "condition-characters", "gridX": 0, "gridY": 4, "gridWidth": 12, "gridHeight": 4 } + { + "id": "1", + "widgetId": "condition-data", + "gridX": 0, + "gridY": 0, + "gridWidth": 8, + "gridHeight": 4 + }, + { + "id": "2", + "widgetId": "condition-effects", + "gridX": 8, + "gridY": 0, + "gridWidth": 4, + "gridHeight": 4 + }, + { + "id": "3", + "widgetId": "condition-characters", + "gridX": 0, + "gridY": 4, + "gridWidth": 12, + "gridHeight": 4 + } ], "sidebar": { "enabled": true, "showMetadata": true, "tabs": [ - { "id": "audit", "label": "History", "icon": "History", "widgets": [ { "type": "audit" } ] } + { + "id": "audit", + "label": "History", + "icon": "History", + "widgets": [{ "type": "audit" }] + } ] } } @@ -367,7 +1401,11 @@ "route": "/effects", "type": "index", "title": "Effects", - "config": { "register": "larpinq", "schema": "effect", "documentationUrl": "https://larpinq.conduction.nl" } + "config": { + "register": "larpinq", + "schema": "effect", + "documentationUrl": "https://larpinq.conduction.nl" + } }, { "id": "EffectDetail", @@ -380,26 +1418,150 @@ "documentationUrl": "https://larpinq.conduction.nl", "_note": "Effect = the atomic stat modifier (+N / -N to an ability, cumulative or not) that the stat engine applies (rules-object archetype, leaf of the mechanics graph). The body leads with the definition (data, 8-wide) and a bold signed-modifier stat card so the magnitude reads instantly, plus the abilities it modifies (related). Below, three object-lists give the full reverse index of what carries this effect — skills, items and conditions (each schema's effects[] contains @objectId) — so a designer can trace every source before rebalancing. Pure rules object: no comms, no files.", "widgets": [ - { "id": "effect-data", "type": "data", "title": "Effect", "icon": "Lightbulb", "content": { "columns": 2 } }, - { "id": "effect-modifier", "type": "stat", "title": "Modifier", "icon": "TrendingUp", "content": { "label": "Modifier value", "icon": "TrendingUp", "format": { "style": "number" }, "source": { "register": "larpinq", "schema": "effect", "metric": "sum", "field": "modifier", "filter": { "id": "@objectId" } } } }, - { "id": "effect-abilities", "type": "related", "title": "Modifies abilities", "icon": "LinkVariant", "content": { "groups": [ { "key": "abilities", "label": "Abilities" } ] } }, - { "id": "effect-skills", "type": "object-list", "title": "Skills granting this effect", "icon": "School", "content": { "register": "larpinq", "schema": "skill", "filter": { "effects": "@objectId" }, "columns": [ { "key": "name", "label": "Skill" } ], "limit": 50, "viewAllRoute": "Skills", "viewAllQuery": { "effects": "@objectId" }, "emptyText": "No skills grant this effect yet." } }, - { "id": "effect-items", "type": "object-list", "title": "Items granting this effect", "icon": "Package", "content": { "register": "larpinq", "schema": "larping_item", "filter": { "effects": "@objectId" }, "columns": [ { "key": "name", "label": "Item" } ], "limit": 50, "viewAllRoute": "Items", "viewAllQuery": { "effects": "@objectId" }, "emptyText": "No items grant this effect yet." } }, - { "id": "effect-conditions", "type": "object-list", "title": "Conditions granting this effect", "icon": "AlertCircleOutline", "content": { "register": "larpinq", "schema": "condition", "filter": { "effects": "@objectId" }, "columns": [ { "key": "name", "label": "Condition" } ], "limit": 50, "viewAllRoute": "Conditions", "viewAllQuery": { "effects": "@objectId" }, "emptyText": "No conditions grant this effect yet." } } + { + "id": "effect-data", + "type": "data", + "title": "Effect", + "icon": "Lightbulb", + "content": { "columns": 2 } + }, + { + "id": "effect-modifier", + "type": "stat", + "title": "Modifier", + "icon": "TrendingUp", + "content": { + "label": "Modifier value", + "icon": "TrendingUp", + "format": { "style": "number" }, + "source": { + "register": "larpinq", + "schema": "effect", + "metric": "sum", + "field": "modifier", + "filter": { "id": "@objectId" } + } + } + }, + { + "id": "effect-abilities", + "type": "related", + "title": "Modifies abilities", + "icon": "LinkVariant", + "content": { + "groups": [{ "key": "abilities", "label": "Abilities" }] + } + }, + { + "id": "effect-skills", + "type": "object-list", + "title": "Skills granting this effect", + "icon": "School", + "content": { + "register": "larpinq", + "schema": "larping_skill", + "filter": { "effects": "@objectId" }, + "columns": [{ "key": "name", "label": "Skill" }], + "limit": 50, + "viewAllRoute": "Skills", + "viewAllQuery": { "effects": "@objectId" }, + "emptyText": "No skills grant this effect yet." + } + }, + { + "id": "effect-items", + "type": "object-list", + "title": "Items granting this effect", + "icon": "Package", + "content": { + "register": "larpinq", + "schema": "larping_item", + "filter": { "effects": "@objectId" }, + "columns": [{ "key": "name", "label": "Item" }], + "limit": 50, + "viewAllRoute": "Items", + "viewAllQuery": { "effects": "@objectId" }, + "emptyText": "No items grant this effect yet." + } + }, + { + "id": "effect-conditions", + "type": "object-list", + "title": "Conditions granting this effect", + "icon": "AlertCircleOutline", + "content": { + "register": "larpinq", + "schema": "condition", + "filter": { "effects": "@objectId" }, + "columns": [{ "key": "name", "label": "Condition" }], + "limit": 50, + "viewAllRoute": "Conditions", + "viewAllQuery": { "effects": "@objectId" }, + "emptyText": "No conditions grant this effect yet." + } + } ], "layout": [ - { "id": "1", "widgetId": "effect-data", "gridX": 0, "gridY": 0, "gridWidth": 8, "gridHeight": 3 }, - { "id": "2", "widgetId": "effect-modifier", "gridX": 8, "gridY": 0, "gridWidth": 4, "gridHeight": 3, "showTitle": false }, - { "id": "3", "widgetId": "effect-abilities", "gridX": 8, "gridY": 3, "gridWidth": 4, "gridHeight": 4 }, - { "id": "4", "widgetId": "effect-skills", "gridX": 0, "gridY": 3, "gridWidth": 4, "gridHeight": 4 }, - { "id": "5", "widgetId": "effect-items", "gridX": 4, "gridY": 3, "gridWidth": 4, "gridHeight": 4 }, - { "id": "6", "widgetId": "effect-conditions", "gridX": 0, "gridY": 7, "gridWidth": 8, "gridHeight": 4 } + { + "id": "1", + "widgetId": "effect-data", + "gridX": 0, + "gridY": 0, + "gridWidth": 8, + "gridHeight": 3 + }, + { + "id": "2", + "widgetId": "effect-modifier", + "gridX": 8, + "gridY": 0, + "gridWidth": 4, + "gridHeight": 3, + "showTitle": false + }, + { + "id": "3", + "widgetId": "effect-abilities", + "gridX": 8, + "gridY": 3, + "gridWidth": 4, + "gridHeight": 4 + }, + { + "id": "4", + "widgetId": "effect-skills", + "gridX": 0, + "gridY": 3, + "gridWidth": 4, + "gridHeight": 4 + }, + { + "id": "5", + "widgetId": "effect-items", + "gridX": 4, + "gridY": 3, + "gridWidth": 4, + "gridHeight": 4 + }, + { + "id": "6", + "widgetId": "effect-conditions", + "gridX": 0, + "gridY": 7, + "gridWidth": 8, + "gridHeight": 4 + } ], "sidebar": { "enabled": true, "showMetadata": true, "tabs": [ - { "id": "audit", "label": "History", "icon": "History", "widgets": [ { "type": "audit" } ] } + { + "id": "audit", + "label": "History", + "icon": "History", + "widgets": [{ "type": "audit" }] + } ] } } @@ -409,7 +1571,11 @@ "route": "/events", "type": "index", "title": "Events", - "config": { "register": "larpinq", "schema": "larping_event", "documentationUrl": "https://larpinq.conduction.nl" } + "config": { + "register": "larpinq", + "schema": "larping_event", + "documentationUrl": "https://larpinq.conduction.nl" + } }, { "id": "EventDetail", @@ -422,36 +1588,232 @@ "documentationUrl": "https://larpinq.conduction.nl", "_note": "Event = a LARP gathering where players bring their characters (session/meeting archetype). This is the one entity that communicates: the schema declares calendar, maps and forms linkedTypes (merged from the event-calendar-leaf / event-location-to-maps-leaf / event-signup-to-forms-leaf register fragments), so the body earns a calendar widget (scheduling the session from startDate/endDate), a location map, and the sign-up form, plus the participating characters (character.events contains @objectId) as the primary roster. The loose Attendees + XP-granted stat cards fold into one stats-block (rule 2, same-flavor simple KPIs) top-right. Post-event effects applied to attendees are shown via related. After the event, the XP awarding ritual produces one xpAward per grant (xpAward.event FK = @objectId), shown as an object-list — GM hand-awarded per xpAward's schema description, so allowCreate stays on. Files carries the event pack/handouts. All three declared leaves (calendar, maps, forms) are now body widgets — none are held back to sidebar tabs. The sidebar carries the Check-in tab (the event check-in roster, an app-registry section — see the sidebar _note) plus audit history. No email/talk: the schema declares calendar/maps/forms only.", "widgets": [ - { "id": "event-data", "type": "data", "title": "Event", "icon": "Calendar", "content": { "columns": 2 } }, - { "id": "event-stats-attendees", "type": "stats-block", "title": "Attendees", "icon": "AccountGroup", "content": { "entries": [ { "title": "Attendees", "register": "larpinq", "schema": "character", "metric": "count", "filter": { "events": "@objectId" } } ] } }, - { "id": "event-stats-xp-granted", "type": "stats-block", "title": "XP granted", "icon": "AccountGroup", "content": { "entries": [ { "title": "XP granted", "register": "larpinq", "schema": "xpAward", "metric": "sum", "field": "amount", "filter": { "event": "@objectId" } } ] } }, - { "id": "event-calendar", "type": "integration", "integrationId": "calendar", "title": "Schedule", "icon": "Calendar" }, - { "id": "event-effects", "type": "related", "title": "Post-event effects", "icon": "LinkVariant", "content": { "groups": [ { "key": "effects", "label": "Effects applied after event" } ] } }, - { "id": "event-maps", "type": "integration", "integrationId": "maps", "title": "Location", "icon": "MapMarker" }, - { "id": "event-forms", "type": "integration", "integrationId": "forms", "title": "Sign-up", "icon": "FileSign" }, - { "id": "event-roster", "type": "object-list", "title": "Participating characters", "icon": "AccountGroup", "content": { "register": "larpinq", "schema": "character", "filter": { "events": "@objectId" }, "columns": [ { "key": "name", "label": "Character" }, { "key": "ocName", "label": "Player" }, { "key": "type", "label": "Type" }, { "key": "approved", "label": "Approved" } ], "limit": 100, "viewAllRoute": "Characters", "viewAllQuery": { "events": "@objectId" }, "emptyText": "No characters registered yet." } }, - { "id": "event-xpawards", "type": "object-list", "title": "XP awards", "icon": "Trophy", "content": { "register": "larpinq", "schema": "xpAward", "filter": { "event": "@objectId" }, "sort": { "field": "awardedAt", "dir": "desc" }, "columns": [ { "key": "character", "label": "Character" }, { "key": "amount", "label": "XP" }, { "key": "reason", "label": "Reason" } ], "limit": 100, "viewAllRoute": "XpAwards", "viewAllQuery": { "event": "@objectId" }, "emptyText": "No XP granted yet." } }, - { "id": "event-files", "type": "integration", "integrationId": "files", "title": "Event pack", "icon": "FolderOutline" } + { + "id": "event-data", + "type": "data", + "title": "Event", + "icon": "Calendar", + "content": { "columns": 2 } + }, + { + "id": "event-stats-attendees", + "type": "stats-block", + "title": "Attendees", + "icon": "AccountGroup", + "content": { + "entries": [ + { + "title": "Attendees", + "register": "larpinq", + "schema": "character", + "metric": "count", + "filter": { "events": "@objectId" } + } + ] + } + }, + { + "id": "event-stats-xp-granted", + "type": "stats-block", + "title": "XP granted", + "icon": "AccountGroup", + "content": { + "entries": [ + { + "title": "XP granted", + "register": "larpinq", + "schema": "xpAward", + "metric": "sum", + "field": "amount", + "filter": { "event": "@objectId" } + } + ] + } + }, + { + "id": "event-calendar", + "type": "integration", + "integrationId": "calendar", + "title": "Schedule", + "icon": "Calendar" + }, + { + "id": "event-effects", + "type": "related", + "title": "Post-event effects", + "icon": "LinkVariant", + "content": { + "groups": [ + { + "key": "effects", + "label": "Effects applied after event" + } + ] + } + }, + { + "id": "event-maps", + "type": "integration", + "integrationId": "maps", + "title": "Location", + "icon": "MapMarker" + }, + { + "id": "event-forms", + "type": "integration", + "integrationId": "forms", + "title": "Sign-up", + "icon": "FileSign" + }, + { + "id": "event-roster", + "type": "object-list", + "title": "Participating characters", + "icon": "AccountGroup", + "content": { + "register": "larpinq", + "schema": "character", + "filter": { "events": "@objectId" }, + "columns": [ + { "key": "name", "label": "Character" }, + { "key": "ocName", "label": "Player" }, + { "key": "type", "label": "Type" }, + { "key": "approved", "label": "Approved" } + ], + "limit": 100, + "viewAllRoute": "Characters", + "viewAllQuery": { "events": "@objectId" }, + "emptyText": "No characters registered yet." + } + }, + { + "id": "event-xpawards", + "type": "object-list", + "title": "XP awards", + "icon": "Trophy", + "content": { + "register": "larpinq", + "schema": "xpAward", + "filter": { "event": "@objectId" }, + "sort": { "field": "awardedAt", "dir": "desc" }, + "columns": [ + { "key": "character", "label": "Character" }, + { "key": "amount", "label": "XP" }, + { "key": "reason", "label": "Reason" } + ], + "limit": 100, + "viewAllRoute": "XpAwards", + "viewAllQuery": { "event": "@objectId" }, + "emptyText": "No XP granted yet." + } + }, + { + "id": "event-files", + "type": "integration", + "integrationId": "files", + "title": "Event pack", + "icon": "FolderOutline" + } ], "layout": [ - { "id": "1", "widgetId": "event-data", "gridX": 0, "gridY": 0, "gridWidth": 8, "gridHeight": 4 }, - { "id": "2a", "widgetId": "event-stats-attendees", "gridX": 8, "gridY": 0, "gridWidth": 4, "gridHeight": 2 }, - { "id": "2b", "widgetId": "event-stats-xp-granted", "gridX": 8, "gridY": 2, "gridWidth": 4, "gridHeight": 2 }, - { "id": "4", "widgetId": "event-calendar", "gridX": 0, "gridY": 4, "gridWidth": 8, "gridHeight": 4 }, - { "id": "5", "widgetId": "event-effects", "gridX": 8, "gridY": 4, "gridWidth": 4, "gridHeight": 4 }, - { "id": "6", "widgetId": "event-maps", "gridX": 0, "gridY": 8, "gridWidth": 6, "gridHeight": 4 }, - { "id": "7", "widgetId": "event-forms", "gridX": 6, "gridY": 8, "gridWidth": 6, "gridHeight": 4 }, - { "id": "8", "widgetId": "event-roster", "gridX": 0, "gridY": 12, "gridWidth": 12, "gridHeight": 4 }, - { "id": "9", "widgetId": "event-xpawards", "gridX": 0, "gridY": 16, "gridWidth": 6, "gridHeight": 4 }, - { "id": "10", "widgetId": "event-files", "gridX": 6, "gridY": 16, "gridWidth": 6, "gridHeight": 4 } + { + "id": "1", + "widgetId": "event-data", + "gridX": 0, + "gridY": 0, + "gridWidth": 8, + "gridHeight": 4 + }, + { + "id": "2a", + "widgetId": "event-stats-attendees", + "gridX": 8, + "gridY": 0, + "gridWidth": 4, + "gridHeight": 2 + }, + { + "id": "2b", + "widgetId": "event-stats-xp-granted", + "gridX": 8, + "gridY": 2, + "gridWidth": 4, + "gridHeight": 2 + }, + { + "id": "4", + "widgetId": "event-calendar", + "gridX": 0, + "gridY": 4, + "gridWidth": 8, + "gridHeight": 4 + }, + { + "id": "5", + "widgetId": "event-effects", + "gridX": 8, + "gridY": 4, + "gridWidth": 4, + "gridHeight": 4 + }, + { + "id": "6", + "widgetId": "event-maps", + "gridX": 0, + "gridY": 8, + "gridWidth": 6, + "gridHeight": 4 + }, + { + "id": "7", + "widgetId": "event-forms", + "gridX": 6, + "gridY": 8, + "gridWidth": 6, + "gridHeight": 4 + }, + { + "id": "8", + "widgetId": "event-roster", + "gridX": 0, + "gridY": 12, + "gridWidth": 12, + "gridHeight": 4 + }, + { + "id": "9", + "widgetId": "event-xpawards", + "gridX": 0, + "gridY": 16, + "gridWidth": 6, + "gridHeight": 4 + }, + { + "id": "10", + "widgetId": "event-files", + "gridX": 6, + "gridY": 16, + "gridWidth": 6, + "gridHeight": 4 + } ], "sidebar": { "enabled": true, "showMetadata": true, "_note": "The Check-in tab is the ONLY entry point to the event check-in roster. `component: \"EventRoster\"` resolves through CnObjectSidebar.resolveTabComponent(), which looks the string up in the v2 registry (src/registry.js — `EventRoster: { kind: 'section', component: ... }`) before falling back to the legacy customComponents map. The tab is handed `sharedTabProps` (objectId / objectType / register / schema / apiBase), which is where EventRoster.vue's `objectId` prop comes from. Do NOT confuse this with the `event-roster` BODY widget above: that one is a read-only `object-list` of participating characters and carries no check-in / no-show controls, which is why its presence hid the fact that the check-in surface was unreachable (#286). Pinned by tests/vitest/manifestRegistry.spec.js.", "tabs": [ - { "id": "checkin", "label": "Check-in", "icon": "AccountCheck", "component": "EventRoster" }, - { "id": "audit", "label": "History", "icon": "History", "widgets": [ { "type": "audit" } ] } + { + "id": "checkin", + "label": "Check-in", + "icon": "AccountCheck", + "component": "EventRoster" + }, + { + "id": "audit", + "label": "History", + "icon": "History", + "widgets": [{ "type": "audit" }] + } ] } } @@ -462,7 +1824,11 @@ "type": "index", "_note": "The page id and route stay `Settings` / `/settings`: they are deep-link surface and the persisted OpenRegister property is still `setting`. Only the user-visible TITLE is renamed to `Worlds` — see the SettingDetail _note below for why.", "title": "Worlds", - "config": { "register": "larpinq", "schema": "setting", "documentationUrl": "https://larpinq.conduction.nl" } + "config": { + "register": "larpinq", + "schema": "setting", + "documentationUrl": "https://larpinq.conduction.nl" + } }, { "id": "SettingDetail", @@ -475,26 +1841,163 @@ "documentationUrl": "https://larpinq.conduction.nl", "_note": "NAMING: the user-visible term for this entity is WORLD, never \"setting\". In LARP a setting is the game world; in a Nextcloud UI \"Setting\" means a preference, and every one of the 35 non-Dutch locales took the UI reading and translated it as Einstellung / Paramètre / Configuración. That is unfixable by retranslating, because one English source string cannot carry both meanings — so the ENGLISH WORD changed instead. The persisted OpenRegister property is still `setting` and the page id / route are still Settings / /settings; only labels moved. The schema's own summary already said \"A LARP world / campaign\" and its icon was already Earth. WHAT THIS PAGE IS: a world/campaign that scopes the roster and rules (config/container archetype). Most game entities carry an optional 'setting' UUID that points here, so this page is a scoping dashboard: the definition + active/archived status (data) sits beside a stats-block (characters + events counts, folded from two loose KPIs per rule 2), then object-lists roll up everything scoped to this campaign — characters and events (each filtered where setting = @objectId). Related surfaces any other scoped mechanics. A pure configuration container: no comms, no files.", "widgets": [ - { "id": "setting-data", "type": "data", "title": "World", "icon": "Earth", "content": { "columns": 1 } }, - { "id": "setting-stats-characters", "type": "stats-block", "title": "Characters", "icon": "ChartBar", "content": { "entries": [ { "title": "Characters", "register": "larpinq", "schema": "character", "metric": "count", "filter": { "setting": "@objectId" }, "route": { "name": "Characters", "query": { "setting": "@objectId" } } } ] } }, - { "id": "setting-stats-events", "type": "stats-block", "title": "Events", "icon": "ChartBar", "content": { "entries": [ { "title": "Events", "register": "larpinq", "schema": "larping_event", "metric": "count", "filter": { "setting": "@objectId" }, "route": { "name": "Events", "query": { "setting": "@objectId" } } } ] } }, - { "id": "setting-characters", "type": "object-list", "title": "Characters in this world", "icon": "AccountGroup", "content": { "register": "larpinq", "schema": "character", "filter": { "setting": "@objectId" }, "columns": [ { "key": "name", "label": "Character" }, { "key": "type", "label": "Type" }, { "key": "approved", "label": "Approved" } ], "limit": 100, "viewAllRoute": "Characters", "viewAllQuery": { "setting": "@objectId" }, "emptyText": "No characters in this world yet." } }, - { "id": "setting-events", "type": "object-list", "title": "Events in this world", "icon": "Calendar", "content": { "register": "larpinq", "schema": "larping_event", "filter": { "setting": "@objectId" }, "sort": { "field": "startDate", "dir": "desc" }, "columns": [ { "key": "name", "label": "Event" }, { "key": "startDate", "label": "Starts" }, { "key": "location", "label": "Location" } ], "limit": 100, "viewAllRoute": "Events", "viewAllQuery": { "setting": "@objectId" }, "emptyText": "No events in this world yet." } }, - { "id": "setting-related", "type": "related", "title": "Related", "icon": "LinkVariant" } + { + "id": "setting-data", + "type": "data", + "title": "World", + "icon": "Earth", + "content": { "columns": 1 } + }, + { + "id": "setting-stats-characters", + "type": "stats-block", + "title": "Characters", + "icon": "ChartBar", + "content": { + "entries": [ + { + "title": "Characters", + "register": "larpinq", + "schema": "character", + "metric": "count", + "filter": { "setting": "@objectId" }, + "route": { + "name": "Characters", + "query": { "setting": "@objectId" } + } + } + ] + } + }, + { + "id": "setting-stats-events", + "type": "stats-block", + "title": "Events", + "icon": "ChartBar", + "content": { + "entries": [ + { + "title": "Events", + "register": "larpinq", + "schema": "larping_event", + "metric": "count", + "filter": { "setting": "@objectId" }, + "route": { + "name": "Events", + "query": { "setting": "@objectId" } + } + } + ] + } + }, + { + "id": "setting-characters", + "type": "object-list", + "title": "Characters in this world", + "icon": "AccountGroup", + "content": { + "register": "larpinq", + "schema": "character", + "filter": { "setting": "@objectId" }, + "columns": [ + { "key": "name", "label": "Character" }, + { "key": "type", "label": "Type" }, + { "key": "approved", "label": "Approved" } + ], + "limit": 100, + "viewAllRoute": "Characters", + "viewAllQuery": { "setting": "@objectId" }, + "emptyText": "No characters in this world yet." + } + }, + { + "id": "setting-events", + "type": "object-list", + "title": "Events in this world", + "icon": "Calendar", + "content": { + "register": "larpinq", + "schema": "larping_event", + "filter": { "setting": "@objectId" }, + "sort": { "field": "startDate", "dir": "desc" }, + "columns": [ + { "key": "name", "label": "Event" }, + { "key": "startDate", "label": "Starts" }, + { "key": "location", "label": "Location" } + ], + "limit": 100, + "viewAllRoute": "Events", + "viewAllQuery": { "setting": "@objectId" }, + "emptyText": "No events in this world yet." + } + }, + { + "id": "setting-related", + "type": "related", + "title": "Related", + "icon": "LinkVariant" + } ], "layout": [ - { "id": "1", "widgetId": "setting-data", "gridX": 0, "gridY": 0, "gridWidth": 8, "gridHeight": 4 }, - { "id": "2a", "widgetId": "setting-stats-characters", "gridX": 8, "gridY": 0, "gridWidth": 4, "gridHeight": 2 }, - { "id": "2b", "widgetId": "setting-stats-events", "gridX": 8, "gridY": 2, "gridWidth": 4, "gridHeight": 2 }, - { "id": "4", "widgetId": "setting-characters", "gridX": 0, "gridY": 4, "gridWidth": 6, "gridHeight": 4 }, - { "id": "5", "widgetId": "setting-events", "gridX": 6, "gridY": 4, "gridWidth": 6, "gridHeight": 4 }, - { "id": "6", "widgetId": "setting-related", "gridX": 0, "gridY": 8, "gridWidth": 12, "gridHeight": 3 } + { + "id": "1", + "widgetId": "setting-data", + "gridX": 0, + "gridY": 0, + "gridWidth": 8, + "gridHeight": 4 + }, + { + "id": "2a", + "widgetId": "setting-stats-characters", + "gridX": 8, + "gridY": 0, + "gridWidth": 4, + "gridHeight": 2 + }, + { + "id": "2b", + "widgetId": "setting-stats-events", + "gridX": 8, + "gridY": 2, + "gridWidth": 4, + "gridHeight": 2 + }, + { + "id": "4", + "widgetId": "setting-characters", + "gridX": 0, + "gridY": 4, + "gridWidth": 6, + "gridHeight": 4 + }, + { + "id": "5", + "widgetId": "setting-events", + "gridX": 6, + "gridY": 4, + "gridWidth": 6, + "gridHeight": 4 + }, + { + "id": "6", + "widgetId": "setting-related", + "gridX": 0, + "gridY": 8, + "gridWidth": 12, + "gridHeight": 3 + } ], "sidebar": { "enabled": true, "showMetadata": true, "tabs": [ - { "id": "audit", "label": "History", "icon": "History", "widgets": [ { "type": "audit" } ] } + { + "id": "audit", + "label": "History", + "icon": "History", + "widgets": [{ "type": "audit" }] + } ] } } @@ -504,7 +2007,11 @@ "route": "/xp-awards", "type": "index", "title": "XP Awards", - "config": { "register": "larpinq", "schema": "xpAward", "documentationUrl": "https://larpinq.conduction.nl" } + "config": { + "register": "larpinq", + "schema": "xpAward", + "documentationUrl": "https://larpinq.conduction.nl" + } }, { "id": "XpAwardDetail", @@ -517,20 +2024,81 @@ "documentationUrl": "https://larpinq.conduction.nl", "_note": "XP Award = a single audited grant of experience to one character for one event (log/ledger-record archetype). GM-write-only, effectively append-only, so the page is read-oriented: the full grant record (amount, reason, awardedBy, awardedAt — data, single column for readability) beside a bold amount stat card, with a related rail linking straight to the two FK parents (the event it was earned at and the character who received it) so a reviewer can jump up the chain. No object-lists, no comms, no files — a ledger line has no children and nothing to communicate.", "widgets": [ - { "id": "xpaward-data", "type": "data", "title": "Award record", "icon": "ClipboardList", "content": { "columns": 1 } }, - { "id": "xpaward-amount", "type": "stat", "title": "XP", "icon": "Trophy", "content": { "label": "XP awarded", "icon": "Trophy", "format": { "style": "number" }, "source": { "register": "larpinq", "schema": "xpAward", "metric": "sum", "field": "amount", "filter": { "id": "@objectId" } } } }, - { "id": "xpaward-related", "type": "related", "title": "Event & character", "icon": "LinkVariant", "content": { "groups": [ { "key": "event", "label": "Event" }, { "key": "character", "label": "Character" } ] } } + { + "id": "xpaward-data", + "type": "data", + "title": "Award record", + "icon": "ClipboardList", + "content": { "columns": 1 } + }, + { + "id": "xpaward-amount", + "type": "stat", + "title": "XP", + "icon": "Trophy", + "content": { + "label": "XP awarded", + "icon": "Trophy", + "format": { "style": "number" }, + "source": { + "register": "larpinq", + "schema": "xpAward", + "metric": "sum", + "field": "amount", + "filter": { "id": "@objectId" } + } + } + }, + { + "id": "xpaward-related", + "type": "related", + "title": "Event & character", + "icon": "LinkVariant", + "content": { + "groups": [ + { "key": "event", "label": "Event" }, + { "key": "character", "label": "Character" } + ] + } + } ], "layout": [ - { "id": "1", "widgetId": "xpaward-data", "gridX": 0, "gridY": 0, "gridWidth": 8, "gridHeight": 4 }, - { "id": "2", "widgetId": "xpaward-amount", "gridX": 8, "gridY": 0, "gridWidth": 4, "gridHeight": 2, "showTitle": false }, - { "id": "3", "widgetId": "xpaward-related", "gridX": 8, "gridY": 2, "gridWidth": 4, "gridHeight": 2 } + { + "id": "1", + "widgetId": "xpaward-data", + "gridX": 0, + "gridY": 0, + "gridWidth": 8, + "gridHeight": 4 + }, + { + "id": "2", + "widgetId": "xpaward-amount", + "gridX": 8, + "gridY": 0, + "gridWidth": 4, + "gridHeight": 2, + "showTitle": false + }, + { + "id": "3", + "widgetId": "xpaward-related", + "gridX": 8, + "gridY": 2, + "gridWidth": 4, + "gridHeight": 2 + } ], "sidebar": { "enabled": true, "showMetadata": true, "tabs": [ - { "id": "audit", "label": "History", "icon": "History", "widgets": [ { "type": "audit" } ] } + { + "id": "audit", + "label": "History", + "icon": "History", + "widgets": [{ "type": "audit" }] + } ] } } @@ -542,7 +2110,614 @@ "title": "Game Settings", "config": { "sections": [ - { "id": "general", "title": "General", "component": "GameSettingsSection" } + { + "id": "general", + "title": "General", + "component": "GameSettingsSection" + } + ] + } + }, + { + "id": "Reports", + "_note": "ADR-112 / ADR-114 Decision 3. All three are declarative type:dashboard pages over larpinq's own register — no bespoke component and no per-app controller. ⚠️ The SCHEMA SLUG IS NOT THE SEED KEY: `event` is registered as `larping_event` and `skill` as `larping_skill`, because slugs are global on a shared OpenRegister and pipelinq also ships a `skill`. A widget naming the key renders an empty card and says nothing.", + "route": "/reports", + "type": "reports", + "title": "Reports", + "config": { + "description": "Pick a report to open it.", + "categories": { + "characters": "Characters", + "world": "The world" + }, + "cards": [ + { + "id": "CharacterRosterReport", + "label": "Character roster", + "description": "Who is playing what, and what is still waiting for approval.", + "icon": "AccountGroup", + "category": "characters", + "route": "CharacterRosterReport" + }, + { + "id": "ProgressionReport", + "label": "Progression", + "description": "Experience awarded, and who earned it.", + "icon": "Trophy", + "category": "characters", + "route": "ProgressionReport" + }, + { + "id": "WorldContentReport", + "label": "World content", + "description": "How much the world holds, and what characters actually carry.", + "icon": "MagicStaff", + "category": "world", + "route": "WorldContentReport" + } + ] + } + }, + { + "id": "CharacterRosterReport", + "route": "/reports/characters", + "type": "dashboard", + "title": "Character roster", + "_note": "Every filter is scalar equality, the only kind OpenRegister's aggregation endpoint can evaluate. A multi-value or relative-date filter is accepted and then silently not applied.", + "config": { + "widgets": [ + { + "id": "roster-total", + "title": "Characters", + "type": "stat", + "content": { + "label": "Characters", + "icon": "AccountGroup", + "route": { + "name": "Characters" + }, + "format": { + "style": "decimal", + "decimals": 0 + }, + "source": { + "register": "larpinq", + "schema": "character", + "metric": "count" + } + } + }, + { + "id": "roster-players", + "title": "Player characters", + "type": "stat", + "content": { + "label": "Player characters", + "icon": "Account", + "route": { + "name": "Characters" + }, + "format": { + "style": "decimal", + "decimals": 0 + }, + "source": { + "register": "larpinq", + "schema": "character", + "metric": "count", + "filter": { + "type": "player" + } + } + } + }, + { + "id": "roster-awaiting", + "title": "Awaiting approval", + "type": "stat", + "content": { + "label": "Awaiting approval", + "icon": "AccountCheck", + "route": { + "name": "Characters" + }, + "format": { + "style": "decimal", + "decimals": 0 + }, + "source": { + "register": "larpinq", + "schema": "character", + "metric": "count", + "filter": { + "approved": "no" + } + } + } + }, + { + "id": "roster-by-type", + "title": "By type", + "type": "chart", + "content": { + "chartKind": "donut", + "legendPosition": "bottom", + "emptyLabel": "No characters yet", + "dataSource": { + "register": "larpinq", + "schema": "character", + "aggregate": { + "groupBy": "type", + "metric": "count" + } + } + } + }, + { + "id": "roster-by-approval", + "title": "By approval", + "type": "chart", + "content": { + "chartKind": "donut", + "legendPosition": "bottom", + "emptyLabel": "No characters yet", + "dataSource": { + "register": "larpinq", + "schema": "character", + "aggregate": { + "groupBy": "approved", + "metric": "count" + } + } + } + }, + { + "id": "roster-recent", + "title": "Most recent", + "type": "object-table", + "content": { + "register": "larpinq", + "schema": "character", + "filter": {}, + "sort": { + "field": "created", + "dir": "desc" + }, + "limit": 8, + "hideHeader": true, + "emptyText": "No characters yet", + "viewAllRoute": { + "name": "Characters" + }, + "viewAllLabel": "View all characters", + "columns": [ + { + "key": "name", + "label": "Name" + }, + { + "key": "type", + "label": "Type" + }, + { + "key": "approved", + "label": "Approved" + } + ], + "rowRoute": "CharacterDetail" + } + } + ], + "layout": [ + { + "id": "1", + "widgetId": "roster-total", + "gridX": 0, + "gridY": 0, + "gridWidth": 4, + "gridHeight": 2, + "showTitle": false + }, + { + "id": "2", + "widgetId": "roster-players", + "gridX": 4, + "gridY": 0, + "gridWidth": 4, + "gridHeight": 2, + "showTitle": false + }, + { + "id": "3", + "widgetId": "roster-awaiting", + "gridX": 8, + "gridY": 0, + "gridWidth": 4, + "gridHeight": 2, + "showTitle": false + }, + { + "id": "4", + "widgetId": "roster-by-type", + "gridX": 0, + "gridY": 2, + "gridWidth": 6, + "gridHeight": 4, + "showTitle": true + }, + { + "id": "5", + "widgetId": "roster-by-approval", + "gridX": 6, + "gridY": 2, + "gridWidth": 6, + "gridHeight": 4, + "showTitle": true + }, + { + "id": "6", + "widgetId": "roster-recent", + "gridX": 0, + "gridY": 6, + "gridWidth": 12, + "gridHeight": 4, + "showTitle": true + } + ] + } + }, + { + "id": "ProgressionReport", + "route": "/reports/progression", + "type": "dashboard", + "title": "Progression", + "_note": "The chart aggregate names its numeric field `sumField`; the stat widget's `source` calls the same thing `field`. Two contracts one word apart, and the wrong one renders an empty chart with no error.", + "config": { + "widgets": [ + { + "id": "xp-awards", + "title": "Awards", + "type": "stat", + "content": { + "label": "Awards", + "icon": "Star", + "route": { + "name": "XpAwards" + }, + "format": { + "style": "decimal", + "decimals": 0 + }, + "source": { + "register": "larpinq", + "schema": "xpAward", + "metric": "count" + } + } + }, + { + "id": "xp-total", + "title": "Experience awarded", + "type": "stat", + "content": { + "label": "Experience awarded", + "icon": "Trophy", + "route": { + "name": "XpAwards" + }, + "format": { + "style": "decimal", + "decimals": 0 + }, + "source": { + "register": "larpinq", + "schema": "xpAward", + "metric": "sum", + "field": "amount" + } + } + }, + { + "id": "xp-per-character", + "title": "Per character", + "type": "chart", + "content": { + "chartKind": "bar", + "legendPosition": "bottom", + "emptyLabel": "Nothing awarded yet", + "dataSource": { + "register": "larpinq", + "schema": "xpAward", + "aggregate": { + "groupBy": "character", + "metric": "sum", + "sumField": "amount", + "topN": 10, + "otherBucket": true, + "labelResolve": { + "schema": "character", + "labelField": "name" + } + } + } + } + }, + { + "id": "xp-recent", + "title": "Most recent", + "type": "object-table", + "content": { + "register": "larpinq", + "schema": "xpAward", + "filter": {}, + "sort": { + "field": "awardedAt", + "dir": "desc" + }, + "limit": 8, + "hideHeader": true, + "emptyText": "Nothing awarded yet", + "viewAllRoute": { + "name": "XpAwards" + }, + "viewAllLabel": "View all awards", + "columns": [ + { + "key": "awardedAt", + "label": "Date" + }, + { + "key": "character", + "label": "Character" + }, + { + "key": "amount", + "label": "Experience" + }, + { + "key": "reason", + "label": "Reason" + } + ] + } + } + ], + "layout": [ + { + "id": "1", + "widgetId": "xp-awards", + "gridX": 0, + "gridY": 0, + "gridWidth": 6, + "gridHeight": 2, + "showTitle": false + }, + { + "id": "2", + "widgetId": "xp-total", + "gridX": 6, + "gridY": 0, + "gridWidth": 6, + "gridHeight": 2, + "showTitle": false + }, + { + "id": "3", + "widgetId": "xp-per-character", + "gridX": 0, + "gridY": 2, + "gridWidth": 12, + "gridHeight": 4, + "showTitle": true + }, + { + "id": "4", + "widgetId": "xp-recent", + "gridX": 0, + "gridY": 6, + "gridWidth": 12, + "gridHeight": 4, + "showTitle": true + } + ] + } + }, + { + "id": "WorldContentReport", + "route": "/reports/content", + "type": "dashboard", + "title": "World content", + "_note": "The two donuts group by an ARRAY property on `character` and resolve the bucket labels through `labelResolve`, the same shape the Dashboard's skill-usage chart already uses. Grouping by the array is what answers 'what do characters actually carry', which counting the items themselves cannot.", + "config": { + "widgets": [ + { + "id": "world-skills", + "title": "Skills", + "type": "stat", + "content": { + "label": "Skills", + "icon": "MagicStaff", + "route": { + "name": "Skills" + }, + "format": { + "style": "decimal", + "decimals": 0 + }, + "source": { + "register": "larpinq", + "schema": "larping_skill", + "metric": "count" + } + } + }, + { + "id": "world-items", + "title": "Items", + "type": "stat", + "content": { + "label": "Items", + "icon": "Package", + "route": { + "name": "Items" + }, + "format": { + "style": "decimal", + "decimals": 0 + }, + "source": { + "register": "larpinq", + "schema": "larping_item", + "metric": "count" + } + } + }, + { + "id": "world-conditions", + "title": "Conditions", + "type": "stat", + "content": { + "label": "Conditions", + "icon": "EmoticonSickOutline", + "route": { + "name": "Conditions" + }, + "format": { + "style": "decimal", + "decimals": 0 + }, + "source": { + "register": "larpinq", + "schema": "condition", + "metric": "count" + } + } + }, + { + "id": "world-effects", + "title": "Effects", + "type": "stat", + "content": { + "label": "Effects", + "icon": "FlashOutline", + "route": { + "name": "Effects" + }, + "format": { + "style": "decimal", + "decimals": 0 + }, + "source": { + "register": "larpinq", + "schema": "effect", + "metric": "count" + } + } + }, + { + "id": "world-items-carried", + "title": "Items carried by characters", + "type": "chart", + "content": { + "chartKind": "donut", + "legendPosition": "bottom", + "emptyLabel": "No items are carried yet", + "dataSource": { + "register": "larpinq", + "schema": "character", + "aggregate": { + "groupBy": "items", + "metric": "count", + "topN": 10, + "otherBucket": true, + "labelResolve": { + "schema": "larping_item", + "labelField": "name" + } + } + } + } + }, + { + "id": "world-conditions-held", + "title": "Conditions on characters", + "type": "chart", + "content": { + "chartKind": "donut", + "legendPosition": "bottom", + "emptyLabel": "No conditions are held yet", + "dataSource": { + "register": "larpinq", + "schema": "character", + "aggregate": { + "groupBy": "conditions", + "metric": "count", + "topN": 10, + "otherBucket": true, + "labelResolve": { + "schema": "condition", + "labelField": "name" + } + } + } + } + } + ], + "layout": [ + { + "id": "1", + "widgetId": "world-skills", + "gridX": 0, + "gridY": 0, + "gridWidth": 3, + "gridHeight": 2, + "showTitle": false + }, + { + "id": "2", + "widgetId": "world-items", + "gridX": 3, + "gridY": 0, + "gridWidth": 3, + "gridHeight": 2, + "showTitle": false + }, + { + "id": "3", + "widgetId": "world-conditions", + "gridX": 6, + "gridY": 0, + "gridWidth": 3, + "gridHeight": 2, + "showTitle": false + }, + { + "id": "4", + "widgetId": "world-effects", + "gridX": 9, + "gridY": 0, + "gridWidth": 3, + "gridHeight": 2, + "showTitle": false + }, + { + "id": "5", + "widgetId": "world-items-carried", + "gridX": 0, + "gridY": 2, + "gridWidth": 6, + "gridHeight": 4, + "showTitle": true + }, + { + "id": "6", + "widgetId": "world-conditions-held", + "gridX": 6, + "gridY": 2, + "gridWidth": 6, + "gridHeight": 4, + "showTitle": true + } ] } }, diff --git a/src/store/store.js b/src/store/store.js index 67155f95..6a735445 100644 --- a/src/store/store.js +++ b/src/store/store.js @@ -8,8 +8,7 @@ // part of the Tier-4 manifest migration; CnIndexPage / CnDetailPage drive // every list/detail page from src/manifest.json against this store. -import { generateUrl } from '@nextcloud/router' -import { createObjectStore } from '@conduction/nextcloud-vue' +import { useObjectStore } from './modules/object.js' import { useSettingsStore } from './modules/settings.js' /** @@ -39,7 +38,6 @@ export async function initializeStores() { const objectStore = useObjectStore() const config = (await settingsStore.fetchSettings()) || {} - const register = config.register || 'larpingapp' if (config) { for (const slug of SCHEMA_SLUGS) { diff --git a/src/views/settings/Settings.vue b/src/views/settings/Settings.vue index fbb04fb8..3b2f8b08 100644 --- a/src/views/settings/Settings.vue +++ b/src/views/settings/Settings.vue @@ -126,14 +126,13 @@ import logger from '../../logger.js' /** * @class Settings * @module Components - * @package * @category LarpingApp * @package LarpingApp * @version 1.0.0 * @license EUPL-1.2 * @author Claude AI * @copyright 2023 Conduction - * @link https://github.com/LarpingApp/larpingapp + * @see https://github.com/LarpingApp/larpingapp * * Settings component for the Larping App that allows users to configure * data storage options for different object types using Larp Registers. @@ -203,10 +202,14 @@ export default defineComponent({ if (!this.selectedRegister) return false const register = this.settings.availableRegisters.find( - r => r.id.toString() === this.selectedRegister.value, + (r) => r.id.toString() === this.selectedRegister.value, ) - return register && Array.isArray(register.schemas) && register.schemas.length > 0 + return ( + register + && Array.isArray(register.schemas) + && register.schemas.length > 0 + ) }, }, @@ -397,7 +400,9 @@ export default defineComponent({ configToSave[`${type}_register`] = this.selectedRegister.value // Set the schema ID if selected - configToSave[`${type}_schema`] = config.schema ? config.schema.value : '' + configToSave[`${type}_schema`] = config.schema + ? config.schema.value + : '' }) const response = await fetch( @@ -441,7 +446,9 @@ export default defineComponent({ this.configurationResults = null try { - const response = await fetch('/index.php/apps/larpingapp/api/settings/load') + const response = await fetch( + '/index.php/apps/larpingapp/api/settings/load', + ) const data = await response.json() if (data.error) { @@ -452,7 +459,9 @@ export default defineComponent({ await this.loadSettings() } } catch (error) { - this.configurationResults = { error: 'Failed to load configuration: ' + error.message } + this.configurationResults = { + error: 'Failed to load configuration: ' + error.message, + } } finally { this.loadingConfiguration = false } diff --git a/tests/e2e/_base-url.ts b/tests/e2e/_base-url.ts index 16e621e9..8386d2a5 100644 --- a/tests/e2e/_base-url.ts +++ b/tests/e2e/_base-url.ts @@ -83,7 +83,6 @@ export function resolveBaseURL(): string { } } if (isCI()) { - // eslint-disable-next-line no-console console.warn( `[larpinq e2e] none of ${BASE_URL_VARS.join(' / ')} is set; falling back to the ` + `CI-local ${CI_DEFAULT_BASE_URL} (the runner's own php -S instance).`, diff --git a/tests/e2e/_nav.ts b/tests/e2e/_nav.ts index e4c8d23d..69fef71a 100644 --- a/tests/e2e/_nav.ts +++ b/tests/e2e/_nav.ts @@ -1,3 +1,5 @@ +import type { Page } from '@playwright/test' + /** * Shared larpinq sidebar-navigation helper. * @@ -30,7 +32,7 @@ * plain click hangs on actionability) AND the click must be retried, * because force cannot fire a handler Vue has not attached yet. */ -import { expect, type Page } from '@playwright/test' +import { expect } from '@playwright/test' export const APP_BASE = '/apps/larpinq' export const NAV = '[data-testid="cn-nav"]' @@ -202,6 +204,8 @@ export async function navTo(page: Page, slug: string): Promise { timeout: 10_000, }) await link.click() - await expect(page).toHaveURL(new RegExp(`#/${slug}(\\b|/|$|\\?)`)) + // larpinq moved off hash routing (#651), so the URL is /apps/larpinq/ + // with no "#". The old pattern waited 15s on a hash that is never produced. + await expect(page).toHaveURL(new RegExp(`/${slug}(\\b|/|$|\\?)`)) await expect(page.locator('.app-content')).toBeVisible({ timeout: 10_000 }) } diff --git a/tests/e2e/app-chrome.spec.ts b/tests/e2e/app-chrome.spec.ts new file mode 100644 index 00000000..03c700b0 --- /dev/null +++ b/tests/e2e/app-chrome.spec.ts @@ -0,0 +1,216 @@ +/* + * SPDX-FileCopyrightText: 2026 Conduction B.V. + * SPDX-License-Identifier: EUPL-1.2 + * + * The bottom-left app chrome, in a browser (ADR-114). + * + * gate-107 reads the manifest and can prove the entries are DECLARED. It + * cannot prove they RENDER, and this programme has already produced three + * defects of exactly that shape: an icon name that is not registered renders + * NO glyph (not a fallback, not a console error), an entry whose `route` names + * a page the app does not host renders a row that goes nowhere, and + * `nav.includePersonalSettings: false` silently removed the entry that reaches + * the user's notification preferences. + * + * The three reports are declarative `type: "dashboard"` pages over larpinq's + * own register, which adds a fourth failure mode no manifest gate can see: a + * widget whose `source` names a schema that does not exist renders its card, + * its title and no value, silently. In THIS app that is a live risk, because + * the schema slug is not the seed key — `event` is registered as + * `larping_event` and `skill` as `larping_skill`, since slugs are global on a + * shared OpenRegister and pipelinq also ships a `skill`. So the assertions + * below look for VALUES, not just for cards. + * + * ⚠️ SCOPE EVERY SELECTOR TO `[data-testid="cn-nav"]`. An unscoped selector + * also matches Nextcloud's own user menu, which is attached-but-hidden: + * `waitFor({state:'attached'})` passes on it and the click never becomes + * actionable, so the spec fails with "Target page has been closed" — a timeout + * wearing a crash's clothes. + * + * ⚠️ SETTINGS ENTRIES ARE ATTACHED, NOT VISIBLE, inside a collapsed foldout. + */ + +import type { Page } from '@playwright/test' + +import { expect, test } from '@playwright/test' + +const APP_BASE = '/apps/larpinq' + +/** + * Dismiss the first-run setup wizard if it is open. + * + * ⚠️ On a FRESH instance CnSetupWizard opens over the app and its modal + * intercepts pointer events, so every nav click resolves its locator and then + * times out after 30s — a failure that reads like the navigation is broken. + * Tests that navigate by URL pass, which is what makes this so easy to miss: + * only the click-through tests fail, and only on a clean install. + * + * @param page The page. + */ +async function dismissSetupWizard(page: Page): Promise { + const modal = page.locator('[data-testid="cn-modal"]') + if ((await modal.count()) === 0) { + return + } + await modal.first().getByRole('button', { name: 'Close' }).click() + await expect(modal).toHaveCount(0, { timeout: 15_000 }) +} + +test.describe('app chrome (ADR-114)', () => { + test.beforeEach(async ({ page }) => { + await page.goto(`${APP_BASE}/`, { waitUntil: 'domcontentloaded' }) + await expect(page.locator('[data-testid="cn-nav"]')).toBeVisible({ + timeout: 30_000, + }) + await dismissSetupWizard(page) + }) + + test('the footer reads Documentation, Store, Reports, Features & roadmap, each with a glyph', async ({ + page, + }) => { + const footer = page.locator( + '[data-testid="cn-nav"] .cn-app-nav__footer-list', + ) + await expect(footer).toBeAttached({ timeout: 15_000 }) + + const rows = footer.locator('li') + const texts = (await rows.allInnerTexts()) + .map((t) => t.trim()) + .filter(Boolean) + + // ORDER is the rule, not the numbers. This app ran Documentation at 90 + // and Features & roadmap at 91, which left no room between them, so the + // roadmap moved to 100 rather than Reports being squeezed in. + const seen = texts.filter((t) => + /Documentation|Store|Reports|roadmap/i.test(t), + ) + expect(seen.length).toBe(4) + expect(seen[0]).toMatch(/Documentation/i) + expect(seen[1]).toMatch(/Store/i) + expect(seen[2]).toMatch(/Reports/i) + expect(seen[3]).toMatch(/roadmap/i) + + // A glyph on every row. ChartBoxOutline had to be added to src/icons.js + // for the Reports entry; without it the row renders a blank space where + // the icon belongs and nothing complains. + for (const row of await rows.all()) { + await expect( + row.locator('svg, .material-design-icon').first(), + ).toBeAttached() + } + }) + + test('Reports lists the three reports', async ({ page }) => { + const nav = page.locator('[data-testid="cn-nav"]') + await nav + .locator('[data-testid="cn-nav-entry-ReportsMenu"] a') + .first() + .click() + await expect(page).toHaveURL(/\/apps\/larpinq\/reports(\?|$)/, { + timeout: 15_000, + }) + + for (const label of ['Character roster', 'Progression', 'World content']) { + await expect( + page.getByText(label, { exact: false }).first(), + ).toBeVisible({ timeout: 15_000 }) + } + }) + + test('the roster report renders real numbers, not empty cards', async ({ + page, + }) => { + // The point of this test. Every widget is declarative over the larpinq + // register, so a wrong schema slug yields a card that renders its chrome + // and no value, silently. + await page.goto(`${APP_BASE}/reports/characters`) + await expect(page.locator('[data-testid="cn-nav"]')).toBeVisible({ + timeout: 30_000, + }) + await expect( + page.getByText('Awaiting approval', { exact: false }).first(), + ).toBeVisible({ timeout: 30_000 }) + await expect(page.locator('main, .app-content').first()).toContainText( + /\d/, + { timeout: 30_000 }, + ) + }) + + test('the world report reads the prefixed schema slugs, not the seed keys', async ({ + page, + }) => { + // larping_skill and larping_item, NOT skill and item. If a later edit + // "tidies" those back to the seed keys the cards go blank in place, so + // this asserts a number reaches the page. + await page.goto(`${APP_BASE}/reports/content`) + await expect(page.locator('[data-testid="cn-nav"]')).toBeVisible({ + timeout: 30_000, + }) + await expect( + page + .locator('main, .app-content') + .first() + .getByText('Skills', { exact: false }) + .first(), + ).toBeVisible({ timeout: 30_000 }) + await expect(page.locator('main, .app-content').first()).toContainText( + /\d/, + { timeout: 30_000 }, + ) + }) + + test('the progression report is reachable and titled', async ({ page }) => { + await page.goto(`${APP_BASE}/reports/progression`) + await expect(page).toHaveURL(/\/reports\/progression(\?|$)/, { + timeout: 15_000, + }) + await expect( + page.getByText('Experience awarded', { exact: false }).first(), + ).toBeVisible({ timeout: 30_000 }) + }) + + test('Store opens the hosted store surface, which this app writes no backend for', async ({ + page, + }) => { + const footer = page.locator( + '[data-testid="cn-nav"] .cn-app-nav__footer-list', + ) + await footer + .getByRole('link', { name: /^Store$/ }) + .first() + .click() + + await expect(page).toHaveURL(/\/apps\/larpinq\/store(\?|$)/, { + timeout: 15_000, + }) + + // The page is declarative: openregister hosts the store plane, so this + // app ships NO store controller (ADR-080, ADR-114 Decision 4). With no + // registry configured it renders the app's own items and makes NO + // network call, so this must pass on a plain instance. + await expect(page.locator('[data-testid="cn-nav"]')).toBeVisible() + }) + + test('the settings foldout carries Personal settings, Admin settings and Flows', async ({ + page, + }) => { + const nav = page.locator('[data-testid="cn-nav"]') + + await expect(nav.locator('[data-testid="cn-nav-settings"]')).toBeAttached({ + timeout: 15_000, + }) + await expect( + nav.locator('[data-testid="cn-nav-personal-settings"]'), + ).toBeAttached() + await expect( + nav.locator('[data-testid="cn-nav-entry-FlowsMenu"]'), + ).toBeAttached() + + const admin = nav.locator('[data-testid="cn-nav-admin-settings"]') + await expect(admin).toBeAttached() + await expect(admin.locator('a').first()).toHaveAttribute( + 'href', + /\/settings\/admin\/larpinq$/, + ) + }) +}) diff --git a/tests/e2e/ci-seed.sh b/tests/e2e/ci-seed.sh index 5a70d3d8..77059918 100755 --- a/tests/e2e/ci-seed.sh +++ b/tests/e2e/ci-seed.sh @@ -203,7 +203,7 @@ path, kind, code = sys.argv[1], sys.argv[2], sys.argv[3] required = { 'registers': ['larpinq'], 'schemas': [ - 'character', 'player', 'ability', 'skill', 'larping_item', + 'character', 'player', 'ability', 'larping_skill', 'larping_item', 'condition', 'effect', 'larping_event', 'setting', 'xpAward', 'larping_attendance', ], diff --git a/tests/e2e/docs-screenshots.spec.ts b/tests/e2e/docs-screenshots.spec.ts index 37e6bba2..06719977 100644 --- a/tests/e2e/docs-screenshots.spec.ts +++ b/tests/e2e/docs-screenshots.spec.ts @@ -37,9 +37,11 @@ * Pattern reference: ADR-030 (hydra/openspec/architecture/). */ -import { test, expect, type Page } from '@playwright/test' -import * as path from 'path' +import type { Page } from '@playwright/test' + +import { expect, test } from '@playwright/test' import * as fs from 'fs' +import * as path from 'path' const SHOT_ROOT = path.resolve( __dirname, @@ -118,7 +120,7 @@ async function go(page: Page, route: string): Promise { url = route } else { const hashRoute = route.startsWith('/') ? route : `/${route}` - url = `${APP}/#${hashRoute}` + url = `${APP}${hashRoute}` } await page.goto(url).catch(() => { /* tolerate 404 — caller decides */ diff --git a/tests/e2e/global-setup.ts b/tests/e2e/global-setup.ts index c92b048e..6c308852 100644 --- a/tests/e2e/global-setup.ts +++ b/tests/e2e/global-setup.ts @@ -20,11 +20,13 @@ * adopter). */ -import { chromium, expect, request, type FullConfig } from '@playwright/test' +import type { FullConfig } from '@playwright/test' + +import { chromium, expect, request } from '@playwright/test' import { execSync } from 'child_process' -import * as path from 'path' import * as fs from 'fs' -import { resolveBaseURL } from './_base-url' +import * as path from 'path' +import { resolveBaseURL } from './_base-url.ts' const AUTH_DIR = path.resolve(__dirname, '.auth') const STORAGE_STATE = path.join(AUTH_DIR, 'admin.json') @@ -52,7 +54,7 @@ function ensureBundleBuilt(): void { if (fs.existsSync(BUNDLE_PATH)) { return } - // eslint-disable-next-line no-console + console.log( `[playwright globalSetup] bundle missing at ${BUNDLE_PATH}; running 'npm run build' once…`, ) @@ -99,7 +101,7 @@ async function ensureNextcloudReachable(baseURL: string): Promise { } catch (err) { last = `request failed: ${(err as Error).message}` } - // eslint-disable-next-line no-await-in-loop + await new Promise((resolve) => setTimeout(resolve, 5_000)) } throw new Error( @@ -223,7 +225,7 @@ export default async function globalSetup(config: FullConfig): Promise { await page.evaluate(() => { try { window.localStorage.setItem('cn-walkthrough-seen:larpinq', '999.0.0') - } catch (e) { + } catch { // localStorage unavailable — specs fall back to dismissing by hand. } }) diff --git a/tests/e2e/l10n-browser-catalogue.spec.ts b/tests/e2e/l10n-browser-catalogue.spec.ts index 047d6072..1197e6aa 100644 --- a/tests/e2e/l10n-browser-catalogue.spec.ts +++ b/tests/e2e/l10n-browser-catalogue.spec.ts @@ -39,11 +39,10 @@ * nothing about apps whose translations differ. */ +import { expect, test } from '@playwright/test' import { readFileSync } from 'node:fs' import path from 'node:path' -import { expect, test } from '@playwright/test' - /** * The app id this repo declares. Resolved from the repo root by walking up * from this file, so it does not depend on the working directory playwright diff --git a/tests/e2e/playwright.config.ts b/tests/e2e/playwright.config.ts index ce4c80b0..39e3c8cb 100644 --- a/tests/e2e/playwright.config.ts +++ b/tests/e2e/playwright.config.ts @@ -69,8 +69,7 @@ import { defineConfig, devices } from '@playwright/test' import * as path from 'path' - -import { resolveBaseURL } from './_base-url' +import { resolveBaseURL } from './_base-url.ts' /** * Helper modules and opt-in projects that must never be collected as CI specs. diff --git a/tests/e2e/spec-coverage/demo-data-setup-step.spec.ts b/tests/e2e/spec-coverage/demo-data-setup-step.spec.ts index 285153d9..ec6a6388 100644 --- a/tests/e2e/spec-coverage/demo-data-setup-step.spec.ts +++ b/tests/e2e/spec-coverage/demo-data-setup-step.spec.ts @@ -28,7 +28,9 @@ * (`setup-demo-data-first`) checks it statically on every change. Claiming to * prove it here would be asserting something this vantage point cannot see. */ -import { test, expect, Page } from '@playwright/test' +import type { Page } from '@playwright/test' + +import { expect, test } from '@playwright/test' const BASE = '/apps/larpinq' @@ -37,19 +39,21 @@ async function api( page: Page, method: string, path: string, + body?: unknown, ): Promise<{ status: number; json: any }> { return await page.evaluate( - async ({ method, path }) => { + async ({ method, path, body }) => { const res = await fetch(path, { method, headers: { 'Content-Type': 'application/json', - // eslint-disable-next-line no-undef + requesttoken: (window as any).OC?.requestToken || '', 'OCS-APIREQUEST': 'true', }, + body: body === undefined ? undefined : JSON.stringify(body), }) - let json: any = null + let json: any try { json = await res.json() } catch { @@ -57,8 +61,39 @@ async function api( } return { status: res.status, json } }, - { method, path }, + { method, path, body }, + ) +} + +/** + * Choose the shipped dataset, and answer with the id that was chosen. + * + * 🔴 THE TEST HAS TO MAKE THE DECISION IT ASSERTS AGAINST. The demo-data step + * is a choice followed by a load step now, and the CI seed settles the optional + * steps by posting `skip-demo-data` — which records "none". A load that follows + * correctly imports nothing, so an install test that skips this arranges no + * precondition and measures the seed instead of the app. + * + * The id comes from `/api/setup/status` rather than a literal: the choice step + * reads its options from exactly that list, so a hardcoded id can pass while + * the list an operator sees is empty. + */ +async function pickShippedDataset(page: Page): Promise { + const status = await api(page, 'GET', `${BASE}/api/setup/status`) + const shipped = (status.json?.datasets ?? []).find( + (d: any) => d?.id && d.id !== 'none', ) + expect( + shipped, + `setup/status offers no dataset to load: ${JSON.stringify(status.json?.datasets)}`, + ).toBeTruthy() + + const saved = await api(page, 'POST', `${BASE}/api/setup/config`, { + demo_dataset: shipped.id, + }) + expect(saved.status, JSON.stringify(saved.json)).toBe(200) + + return shipped.id } test.describe.configure({ mode: 'serial' }) @@ -101,6 +136,8 @@ test.describe('ADR-111 demo data', () => { // it is the only check that the install WROTE something. test.slow() + await pickShippedDataset(page) + const res = await api( page, 'POST', @@ -133,6 +170,8 @@ test.describe('ADR-111 demo data', () => { // The step body tells the operator it is "safe to run more than once". // That sentence is a contract; this asserts the server keeps it rather // than erroring or reporting failure on a second pass. + await pickShippedDataset(page) + const again = await api( page, 'POST', diff --git a/tests/e2e/spec-coverage/detail-forms-admin.spec.ts b/tests/e2e/spec-coverage/detail-forms-admin.spec.ts index d5c126ce..1edb664d 100644 --- a/tests/e2e/spec-coverage/detail-forms-admin.spec.ts +++ b/tests/e2e/spec-coverage/detail-forms-admin.spec.ts @@ -27,15 +27,11 @@ * playwright.config.ts wires storageState so each test starts logged in. */ -import { - test, - expect, - request, - type Page, - type APIRequestContext, -} from '@playwright/test' -import { navTo as sharedNavTo, dismissSupportDialog } from '../_nav' -import { BASE_URL } from '../_base-url' +import type { APIRequestContext, Page } from '@playwright/test' + +import { expect, request, test } from '@playwright/test' +import { BASE_URL } from '../_base-url.ts' +import { dismissSupportDialog, navTo as sharedNavTo } from '../_nav.ts' const BASE = '/apps/larpinq' const TS = Date.now() @@ -89,6 +85,8 @@ const SCHEMA_IDS: Record = { * @param {APIRequestContext} api Authenticated request context. * @return {Promise} */ +const REGISTER_IDS: Record = {} + async function resolveIds(api: APIRequestContext): Promise { const res = await api .get(`${NEXTCLOUD_URL}/index.php/apps/larpinq/api/settings`, { @@ -129,7 +127,6 @@ async function resolveIds(api: APIRequestContext): Promise { } /** Register each type is actually stored in; defaults to the shared register. */ -const REGISTER_IDS: Record = {} /** * The register to seed a given type into. @@ -189,7 +186,7 @@ async function navTo(page: Page, slug: string): Promise { * Navigate to a detail route via the app's hash router. * * The router runs in `mode: 'hash'` (src/main.js — fleet #133 deep-link fix), - * so the canonical detail URL is `/apps/larpinq/#//`. Loading that + * so the canonical detail URL is `/apps/larpinq//`. Loading that * URL serves the SPA root from the server (no 404 — the hash fragment is never * sent to the backend) and the client-side hash router resolves the detail * route. This is the deep-link path the hash-mode change exists to support, so @@ -202,7 +199,7 @@ async function gotoDetail( id: string, typeLabel: string, ): Promise { - await page.goto(`${BASE}/#/${slug}/${id}`) + await page.goto(`${BASE}/${slug}/${id}`) // ADR-074 rule 4: `networkidle` never settles on Nextcloud — the // notification poll keeps the network permanently busy. This was the LAST // live `waitForLoadState('networkidle')` in the suite; every other mention @@ -224,7 +221,8 @@ async function gotoDetail( // `aria-label="Close"` and never dismissed the onboarding tour, whose // controls are "Close tour" / "Skip". await dismissSupportDialog(page) - await expect(page).toHaveURL(new RegExp(`#/${slug}/${id}`)) + // Path routing since #651: no "#" in the URL. + await expect(page).toHaveURL(new RegExp(`/${slug}/${id}`)) await expect(page.locator('.app-content')).toBeVisible({ timeout: 10_000 }) // A detail page's own heading is the OBJECT's name (`

`); the entity type // ("Character", "Event", …) renders as a kicker paragraph above it, not as a @@ -340,7 +338,6 @@ async function seedObject( ): Promise { const schemaId = SCHEMA_IDS[schema] if (!schemaId) { - // eslint-disable-next-line no-console console.error( `[e2e seed] ${schema}: no schema id configured on this instance — the app has no storage for it`, ) @@ -359,12 +356,10 @@ async function seedObject( // Report WHY a seed failed. Swallowing it turns every dependent spec into a // 60 s timeout that looks like a rendering regression. if (!res) { - // eslint-disable-next-line no-console console.error(`[e2e seed] ${schema}: POST ${url} threw`) return null } if (!res.ok()) { - // eslint-disable-next-line no-console console.error( `[e2e seed] ${schema}: POST ${url} -> ${res.status()} ${(await res.text().catch(() => '')).slice(0, 200)}`, ) diff --git a/tests/e2e/spec-coverage/event-runsheet-export.spec.ts b/tests/e2e/spec-coverage/event-runsheet-export.spec.ts index adaecb77..26a8e199 100644 --- a/tests/e2e/spec-coverage/event-runsheet-export.spec.ts +++ b/tests/e2e/spec-coverage/event-runsheet-export.spec.ts @@ -20,7 +20,7 @@ * @spec openspec/specs/pdf-export/spec.md */ -import { test, expect } from '@playwright/test' +import { expect, test } from '@playwright/test' const BASE = '/apps/larpinq' diff --git a/tests/e2e/spec-coverage/event-xp-award-workflow.spec.ts b/tests/e2e/spec-coverage/event-xp-award-workflow.spec.ts index 609fb9b3..ed3d7e40 100644 --- a/tests/e2e/spec-coverage/event-xp-award-workflow.spec.ts +++ b/tests/e2e/spec-coverage/event-xp-award-workflow.spec.ts @@ -17,7 +17,7 @@ * @spec openspec/specs/event-xp-awards/spec.md */ -import { test, expect } from '@playwright/test' +import { expect, test } from '@playwright/test' const BASE = '/apps/larpinq' @@ -27,7 +27,7 @@ test.describe('event-xp-award-workflow', () => { page.on('pageerror', (e) => pageErrors.push(e.message)) // Never `networkidle` — unreachable on Nextcloud (ADR-074 rule 4). - await page.goto(`${BASE}/#/xp-awards`, { waitUntil: 'domcontentloaded' }) + await page.goto(`${BASE}/xp-awards`, { waitUntil: 'domcontentloaded' }) await expect(page.locator('.app-content')).toBeVisible({ timeout: 30_000 }) // Assert a page-SPECIFIC affordance inside the content area. The old diff --git a/tests/e2e/spec-coverage/index-pages.spec.ts b/tests/e2e/spec-coverage/index-pages.spec.ts index 2e397ce9..9a7a1d6a 100644 --- a/tests/e2e/spec-coverage/index-pages.spec.ts +++ b/tests/e2e/spec-coverage/index-pages.spec.ts @@ -24,8 +24,10 @@ * playwright.config.ts wires storageState so each test starts logged in. */ -import { test, expect, type Page } from '@playwright/test' -import { dismissSupportDialog } from '../_nav' +import type { Page } from '@playwright/test' + +import { expect, test } from '@playwright/test' +import { dismissSupportDialog } from '../_nav.ts' const BASE = '/apps/larpinq' @@ -174,7 +176,8 @@ async function freshNav(page: Page, slug: string, navId: string): Promise const link = page.locator(`${NAV} [data-testid="cn-nav-entry-${navId}"]`).first() await expect(link).toBeVisible({ timeout: 10_000 }) await link.click() - await expect(page).toHaveURL(new RegExp(`#/${slug}(\\b|/|$|\\?)`)) + // Path routing since #651: no "#" in the URL. + await expect(page).toHaveURL(new RegExp(`/${slug}(\\b|/|$|\\?)`)) await expect(page.locator('.app-content')).toBeVisible({ timeout: 10_000 }) } diff --git a/tests/e2e/spec-coverage/setting-management.spec.ts b/tests/e2e/spec-coverage/setting-management.spec.ts index 2ffe6714..b6b4f4a2 100644 --- a/tests/e2e/spec-coverage/setting-management.spec.ts +++ b/tests/e2e/spec-coverage/setting-management.spec.ts @@ -16,7 +16,7 @@ * @spec openspec/specs/setting-management/spec.md */ -import { test, expect } from '@playwright/test' +import { expect, test } from '@playwright/test' const BASE = '/apps/larpinq' @@ -30,7 +30,7 @@ test.describe('setting-management', () => { // Never `networkidle` — Nextcloud's notification poll means that state // is never reached, so the wait always burns its full budget (ADR-074 // rule 4). Wait for the rendered page surface instead. - await page.goto(`${BASE}/#/settings`, { waitUntil: 'domcontentloaded' }) + await page.goto(`${BASE}/settings`, { waitUntil: 'domcontentloaded' }) await expect(page.locator('.app-content')).toBeVisible({ timeout: 30_000 }) // Assert a page-SPECIFIC affordance inside the content area. The old diff --git a/tests/e2e/spec-coverage/settings-roadmap.spec.ts b/tests/e2e/spec-coverage/settings-roadmap.spec.ts index 21e0c456..56182134 100644 --- a/tests/e2e/spec-coverage/settings-roadmap.spec.ts +++ b/tests/e2e/spec-coverage/settings-roadmap.spec.ts @@ -19,27 +19,46 @@ * playwright.config.ts wires storageState so each test starts logged in. */ -import { test, expect, type Page } from '@playwright/test' -import { dismissSupportDialog } from '../_nav' +import type { Page } from '@playwright/test' + +import { expect, test } from '@playwright/test' +import { dismissSupportDialog } from '../_nav.ts' const BASE = '/apps/larpinq' /** - * Hard-load the target in-app route via the app's hash router. The router runs - * in `mode: 'hash'` (src/main.js — fleet #133 deep-link fix), so in-app routes - * are addressed as /apps/larpinq/#/. Loading that URL serves the SPA - * root from the server (the hash fragment is never sent to the backend, so no - * 404) and the client-side router resolves the view. A fresh load per test - * avoids the shared-list-state collapse where in-session sidebar navigation - * fails to re-key index pages. + * Hard-load the target in-app route. + * + * The router runs in HISTORY mode (`createWebHistory`, src/main.js), so an + * in-app route is a real path: `/apps/larpinq/`, with no `#`. The + * server's SPA catch-all serves the app shell for it and the client router + * resolves the view. + * + * This helper used to assert a `#` in the URL, from when the router ran in hash + * mode. After the move to history mode the app produced + * `/apps/larpinq/features-roadmap` while the assertion still demanded + * `#/features-roadmap`, so six of these tests failed on the URL alone — before + * reaching the `.app-content` gate that is the real check. The app was right. + * + * A fresh load per test avoids the shared-list-state collapse where in-session + * sidebar navigation fails to re-key index pages. */ async function openRoute(page: Page, route: string): Promise { // `domcontentloaded`, never `networkidle` — the latter is unreachable on // Nextcloud (notification poll), so it just burns the budget (ADR-074 // rule 4). The `.app-content` assertion below is the real readiness gate. - await page.goto(`${BASE}/#${route}`, { waitUntil: 'domcontentloaded' }) + await page.goto(`${BASE}${route}`, { waitUntil: 'domcontentloaded' }) await dismissSupportDialog(page) - await expect(page).toHaveURL(new RegExp(`#${route.replace(/\//g, '\\/')}`)) + // Path, not hash. Anchored at the end so `/features-roadmap` cannot be + // satisfied by some longer route that merely contains it. + // Escape the whole regex metacharacter set, not just `/`. Escaping slashes + // alone leaves `.`, `?`, `+`, `(` and backslash live in the pattern, which + // CodeQL reports as js/incomplete-sanitization (high). Today's routes are + // literals so nothing is exploitable, but a route containing `.` would + // silently match more than it names. + await expect(page).toHaveURL( + new RegExp(`${route.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}$`), + ) await expect(page.locator('.app-content')).toBeVisible({ timeout: 10_000 }) } @@ -167,9 +186,13 @@ test.describe('features-roadmap page', () => { .filter({ hasText: /Show roadmap/i }) .first(), ).toBeVisible({ timeout: 10_000 }) + // A LINK, not a button. nextcloud-vue 2.36.4 removed the in-product + // suggestion modal (team decision 2026-09-04: the forge is where the + // conversation happens), and the CTA is an anchor to the forge's + // feature-request issue form now. An `` has role `link`. await expect( page - .locator('.app-content button') + .locator('.app-content a') .filter({ hasText: /Suggest feature/i }) .first(), ).toBeVisible() diff --git a/tests/e2e/spec-coverage/skill-requirement-enforcement.spec.ts b/tests/e2e/spec-coverage/skill-requirement-enforcement.spec.ts index 0d2e9823..1b7d65c6 100644 --- a/tests/e2e/spec-coverage/skill-requirement-enforcement.spec.ts +++ b/tests/e2e/spec-coverage/skill-requirement-enforcement.spec.ts @@ -18,7 +18,7 @@ * @spec openspec/specs/skill-requirement-enforcement/spec.md */ -import { test, expect } from '@playwright/test' +import { expect, test } from '@playwright/test' const BASE = '/apps/larpinq' diff --git a/tests/e2e/spec-coverage/spa-ui.spec.ts b/tests/e2e/spec-coverage/spa-ui.spec.ts index 6242b003..8b715407 100644 --- a/tests/e2e/spec-coverage/spa-ui.spec.ts +++ b/tests/e2e/spec-coverage/spa-ui.spec.ts @@ -17,26 +17,30 @@ * playwright.config.ts wires storageState so each test starts logged in. */ -import { test, expect, type Page } from '@playwright/test' -import { dismissSupportDialog } from '../_nav' +import type { Page } from '@playwright/test' + +import { expect, test } from '@playwright/test' +import { dismissSupportDialog } from '../_nav.ts' const BASE = '/apps/larpinq' -const TS = Date.now() // --------------------------------------------------------------------------- // Helpers // --------------------------------------------------------------------------- /** - * Navigate to an in-app hash-mode route. + * Navigate to an in-app route. + * + * The Vue SPA runs HISTORY mode (`createWebHistory(routerBase())` in + * src/main.js), so in-app routes are real paths: /apps/larpinq/. This + * helper used to set `window.location.hash` instead, which was correct while + * the app was on hash routing and became a silent no-op when #651 moved it to + * clean path URLs. Nothing threw: the URL gained a fragment, `hashchange` + * fired, and the router ignored it, so every caller stayed on whatever page it + * was already on and asserted against that. * - * The Vue SPA uses hash mode with base `/apps/larpinq` (src/main.js — - * fleet #133 deep-link fix). In-app routes (/characters, /abilities, …) are - * addressed via the URL hash: /apps/larpinq/#/. The hash fragment is - * never sent to the backend, so the SPA root is always served and Vue Router's - * hashchange listener resolves the view client-side. Strategy: land on the SPA - * root first, wait for Vue to mount, then set window.location.hash so the - * router renders the desired view without a page reload. For external paths + * Strategy: land on the SPA root first so Vue mounts, then push through the + * router, which navigates in place without a reload. For external paths * (settings, other NC apps) we do a regular goto. */ async function go(page: Page, route: string): Promise { @@ -70,32 +74,51 @@ async function go(page: Page, route: string): Promise { // makes every later click hang on actionability. await dismissSupportDialog(page) } - // Resolve the target path relative to the app base. The router runs in - // hash mode (src/main.js — fleet #133 deep-link fix), so in-app routes are - // addressed via the URL hash: /apps/larpinq/#/. Driving the hash - // directly lets Vue Router's hashchange listener resolve the view (the old - // history.pushState to a bare /apps/larpinq/ path no longer routes - // under hash mode and addresses a server path that 404s on reload). + // Navigate the ROUTER, not the URL fragment. Setting `location.hash` under + // `createWebHistory` changes the URL and fires `hashchange`, but the router + // does not listen to it, so the route never changes and nothing throws. + // The pushState fallback drives the `popstate` listener the history mode + // actually installs, deriving the base exactly as `routerBase()` does so + // both the `/apps/` and `/index.php/apps/` URL forms resolve. const targetPath = route.startsWith('/') ? route : `/${route}` - const hashFragment = `#${targetPath}` - // Compare the *exact* current hash, not a substring: the root route's - // fragment "#/" is a substring of every other hash (e.g. "#/characters"), - // so an includes() check would wrongly treat any view as "already on root" - // and skip navigating back to the dashboard. - const currentHash = await page.evaluate(() => window.location.hash || '#/') - const normalisedCurrent = currentHash === '#' ? '#/' : currentHash - if (normalisedCurrent !== hashFragment) { - await page.evaluate((hash) => { - window.location.hash = hash - }, hashFragment) - // ADR-074 rule 4: `networkidle` is unreachable on Nextcloud (notification - // poll), so it burns the full budget. Wait for the rendered shell. - await page - .locator('#app-content, .app-content, #content') - .first() - .waitFor({ state: 'visible', timeout: 30_000 }) - .catch(() => {}) - } + await page.evaluate((p) => { + const host = document.querySelector('#content') as + | (HTMLElement & { + __vue_app__?: { + config?: { + globalProperties?: { + $router?: { push: (to: string) => unknown } + } + } + } + }) + | null + const router = host?.__vue_app__?.config?.globalProperties?.$router + if (router) { + router.push(p) + return + } + const base = + window.location.pathname.match(/^(.*\/apps\/larpinq)(?:\/|$)/)?.[1] ?? '' + window.history.pushState({}, '', `${base}${p}`) + window.dispatchEvent(new PopStateEvent('popstate', { state: {} })) + }, targetPath) + // ADR-074 rule 4: `networkidle` is unreachable on Nextcloud (notification + // poll), so it burns the full budget. Wait for the rendered shell. + await page + .locator('#app-content, .app-content, #content') + .first() + .waitFor({ state: 'visible', timeout: 30_000 }) + .catch(() => {}) + // The route must actually BE the one requested. vue-router's catch-all + // rewrites an unresolved location to `/`, and without this check every + // assertion below would run against the dashboard and pass there. + await expect(page).toHaveURL( + new RegExp( + `${`/apps/larpinq${targetPath}`.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}/?$`, + ), + { timeout: 15_000 }, + ) } /** @@ -360,13 +383,21 @@ test.describe('character-management', () => { if (await btn.isVisible({ timeout: 3000 }).catch(() => false)) { await btn.click() const dialog = page.locator('[role="dialog"]').first() + // waitFor() resolves a PROMISE, so the old form chained .locator() + // onto it and threw "dialog.waitFor(...).catch(...).locator is not a + // function" before asserting anything. The locator it built was also + // discarded, so even without the TypeError this test asserted nothing + // while carrying a name that says it checks the name field. await dialog.waitFor({ state: 'visible', timeout: 5000 }).catch(() => {}) - // Name field should be present in the dialog const nameField = dialog .locator( 'input[placeholder*="name" i], input[name*="name" i], label:has-text("Name") ~ * input', ) .first() + await expect( + nameField, + 'the character form must offer a name field', + ).toBeVisible({ timeout: 5000 }) await page.keyboard.press('Escape') } // Page is still functional after dialog interaction diff --git a/tests/e2e/visual/_visual-helpers.ts b/tests/e2e/visual/_visual-helpers.ts index 6e033dbb..e21bd109 100644 --- a/tests/e2e/visual/_visual-helpers.ts +++ b/tests/e2e/visual/_visual-helpers.ts @@ -1,3 +1,5 @@ +import type { Locator, Page } from '@playwright/test' + /* * SPDX-License-Identifier: EUPL-1.2 * @@ -24,8 +26,8 @@ * own baselines on first run, or (b) stay non-gating until baselined in the CI * environment. See tests/e2e/visual/README in-repo wiring notes. */ -import { expect, type Page, type Locator } from '@playwright/test' -import { dismissSupportDialog as sharedDismissSupportDialog } from '../_nav' +import { expect } from '@playwright/test' +import { dismissSupportDialog as sharedDismissSupportDialog } from '../_nav.ts' /** Common screenshot options applied to every visual assertion. */ export const SHOT_OPTIONS = { diff --git a/tests/e2e/visual/larpinq.visual.spec.ts b/tests/e2e/visual/larpinq.visual.spec.ts index 84eee7db..7533772e 100644 --- a/tests/e2e/visual/larpinq.visual.spec.ts +++ b/tests/e2e/visual/larpinq.visual.spec.ts @@ -11,16 +11,16 @@ * See _visual-helpers.ts for the platform-rendering caveat. */ import { test } from '@playwright/test' -import { shootSurface, shootByNav } from './_visual-helpers' +import { shootByNav, shootSurface } from './_visual-helpers.ts' const APP = '/index.php/apps/larpinq' test.describe('Larpinq — visual baselines', () => { test('dashboard', async ({ page }) => { - await shootSurface(page, `${APP}/#/`, 'dashboard.png') + await shootSurface(page, `${APP}/`, 'dashboard.png') }) test('characters list', async ({ page }) => { - await shootByNav(page, `${APP}/#/`, 'Characters', 'characters.png') + await shootByNav(page, `${APP}/`, 'Characters', 'characters.png') }) }) diff --git a/tests/e2e/workflows/character-stat-computation.workflow.spec.ts b/tests/e2e/workflows/character-stat-computation.workflow.spec.ts index 717c624e..cfda41f6 100644 --- a/tests/e2e/workflows/character-stat-computation.workflow.spec.ts +++ b/tests/e2e/workflows/character-stat-computation.workflow.spec.ts @@ -70,19 +70,21 @@ * test goes green unmodified. */ -import { test, expect, type APIRequestContext } from '@playwright/test' +import type { APIRequestContext } from '@playwright/test' + +import { expect, test } from '@playwright/test' import { - RUN_ID, - newApi, - resolveSchemaIds, - FixtureLedger, - createObject, - seedStatScenario, + cleanupLedger, computeCharacterStat, computeCharacterStatLive, - cleanupLedger, + createObject, + FixtureLedger, fixtureName, -} from './fixtures' + newApi, + resolveSchemaIds, + RUN_ID, + seedStatScenario, +} from './fixtures.ts' // Documented blocker reasons; each is annotated onto its test.fixme below. const STAT_UI_BLOCKER = @@ -127,7 +129,7 @@ test.beforeAll(async () => { test.afterAll(async () => { await cleanupLedger(api, ledger) await api.dispose() - // eslint-disable-next-line no-console + console.log( `[stat-computation] RUN_ID=${RUN_ID} — fixtures cleaned up via ledger.`, ) diff --git a/tests/e2e/workflows/crud-persistence.workflow.spec.ts b/tests/e2e/workflows/crud-persistence.workflow.spec.ts index b110aeb9..bc676635 100644 --- a/tests/e2e/workflows/crud-persistence.workflow.spec.ts +++ b/tests/e2e/workflows/crud-persistence.workflow.spec.ts @@ -51,21 +51,23 @@ * heading renders) remain active because they render data-independently. */ -import { test, expect, type APIRequestContext, type Page } from '@playwright/test' -import { navTo as sharedNavTo, dismissSupportDialog } from '../_nav' +import type { APIRequestContext, Page } from '@playwright/test' + +import { expect, test } from '@playwright/test' +import { navTo as sharedNavTo } from '../_nav.ts' import { BASE, - RUN_ID, - fixtureName, - newApi, - FixtureLedger, + cleanupLedger, createObject, - getObject, - updateObject, deleteObject, - cleanupLedger, + FixtureLedger, + fixtureName, + getObject, + newApi, resolveSchemaIds, -} from './fixtures' + RUN_ID, + updateObject, +} from './fixtures.ts' // Documented blocker reasons; each is annotated onto its test.fixme below via // test.info().annotations so the reason travels with the parked test. @@ -119,22 +121,6 @@ test.afterAll(async () => { // LIST_EMPTY / DETAIL_500 blockers). // --------------------------------------------------------------------------- -async function openApp(page: Page): Promise { - if (!page.url().includes('/apps/larpinq')) { - await page.goto(`${BASE}/`) - // ADR-074 rule 4: `networkidle` never settles on Nextcloud. - await page - .locator('#app-content, .app-content, #content') - .first() - .waitFor({ state: 'visible', timeout: 30_000 }) - .catch(() => {}) - } - await expect(page.locator('.app-content')).toBeVisible({ timeout: 15_000 }) - // Shared helper — see `../_nav`. The local copy matched only - // `aria-label="Close"` and never dismissed the onboarding tour. - await dismissSupportDialog(page) -} - /** * Reach `slug`'s index page through the real sidebar. * @@ -306,7 +292,7 @@ test.describe('character — CRUD persistence (store round-trip)', () => { // Hash-mode deep link (src/main.js — fleet #133): the detail route is // addressed via the URL hash, served from the SPA root and resolved // client-side. - await page.goto(`${BASE}/#/characters/${id}`) + await page.goto(`${BASE}/characters/${id}`) // ADR-074 rule 4: `networkidle` never settles on Nextcloud. await page .locator('#app-content, .app-content, #content') @@ -427,7 +413,6 @@ test.describe('skill — CRUD persistence (store round-trip)', () => { }) test.afterAll(() => { - // eslint-disable-next-line no-console console.log( `[crud-persistence] RUN_ID=${RUN_ID} — fixtures cleaned up via ledger.`, ) diff --git a/tests/e2e/workflows/fixtures.ts b/tests/e2e/workflows/fixtures.ts index 4730ef81..b072198b 100644 --- a/tests/e2e/workflows/fixtures.ts +++ b/tests/e2e/workflows/fixtures.ts @@ -48,8 +48,10 @@ * from the character's skills/items/conditions/events. */ -import { request, type APIRequestContext } from '@playwright/test' -import { OR_OBJECTS_API, LARPINQ_SETTINGS_API } from '../_base-url' +import type { APIRequestContext } from '@playwright/test' + +import { request } from '@playwright/test' +import { LARPINQ_SETTINGS_API, OR_OBJECTS_API } from '../_base-url.ts' export const BASE = '/apps/larpinq' @@ -181,9 +183,17 @@ export async function createObject( // `resolveSchemaIds()` was wired in (larpinq's real one is // `larping_item`). Cross-app slug collision — OR #2150 class. const payload: Record = { ...body } - if (payload.name != null && payload.title == null) { + if ( + payload.name !== null + && payload.name !== undefined + && (payload.title === null || payload.title === undefined) + ) { payload.title = payload.name - } else if (payload.title != null && payload.name == null) { + } else if ( + payload.title !== null + && payload.title !== undefined + && (payload.name === null || payload.name === undefined) + ) { payload.name = payload.title } const res = await api.post(url, { headers: HEADERS, data: payload }) @@ -269,7 +279,6 @@ export async function cleanupLedger( for (const id of ledger.ids(type)) { const ok = await deleteObject(api, type, id).catch(() => false) if (!ok) { - // eslint-disable-next-line no-console console.warn( `[workflows cleanup] could not delete ${type}/${id} (RUN_ID=${RUN_ID})`, ) @@ -582,7 +591,6 @@ export async function computeRosterLive( }) as unknown as Record | null } -/* eslint-disable @typescript-eslint/no-explicit-any */ /** * Locate the Nextcloud server root this checkout is installed INTO, by walking * up from this file until `lib/base.php` and `config/config.php` are both @@ -696,7 +704,6 @@ function runPhpHarness( }) return parse(out) } catch (err) { - // eslint-disable-next-line no-console console.warn( `[stat harness] in-process run failed under ${serverRoot}: ${(err as Error).message}`, ) @@ -748,4 +755,3 @@ function runPhpHarness( } } } -/* eslint-enable @typescript-eslint/no-explicit-any */ diff --git a/tests/e2e/workflows/game-mechanics.workflow.spec.ts b/tests/e2e/workflows/game-mechanics.workflow.spec.ts index d1d776f7..87c2e516 100644 --- a/tests/e2e/workflows/game-mechanics.workflow.spec.ts +++ b/tests/e2e/workflows/game-mechanics.workflow.spec.ts @@ -48,19 +48,21 @@ * its own `RUN_ID` prefix, and never on the size of the stats block. */ -import { test, expect, type APIRequestContext } from '@playwright/test' +import type { APIRequestContext } from '@playwright/test' +import type { DerivedStats } from './fixtures.ts' + +import { expect, test } from '@playwright/test' import { - RUN_ID, - newApi, - resolveSchemaIds, - FixtureLedger, - createObject, - computeStatsLive, - computeRosterLive, cleanupLedger, + computeRosterLive, + computeStatsLive, + createObject, + FixtureLedger, fixtureName, - type DerivedStats, -} from './fixtures' + newApi, + resolveSchemaIds, + RUN_ID, +} from './fixtures.ts' let api: APIRequestContext const ledger = new FixtureLedger() @@ -73,7 +75,7 @@ test.beforeAll(async () => { test.afterAll(async () => { await cleanupLedger(api, ledger) await api.dispose() - // eslint-disable-next-line no-console + console.log( `[game-mechanics] RUN_ID=${RUN_ID} — fixtures cleaned up via ledger.`, ) diff --git a/tests/integration/larpinq.postman_collection.json b/tests/integration/larpinq.postman_collection.json index 9bfb7502..f9189eef 100644 --- a/tests/integration/larpinq.postman_collection.json +++ b/tests/integration/larpinq.postman_collection.json @@ -12,7 +12,7 @@ { "key": "register", "value": "larpinq" }, { "key": "charSchema", "value": "character" }, { "key": "itemSchema", "value": "larping_item" }, - { "key": "skillSchema", "value": "skill" }, + { "key": "skillSchema", "value": "larping_skill" }, { "key": "conditionSchema", "value": "condition" }, { "key": "effectSchema", "value": "effect" }, { "key": "eventSchema", "value": "larping_event" }, diff --git a/tests/l10n/check-l10n-parity.js b/tests/l10n/check-l10n-parity.js index 8a1f5228..fef114a6 100644 --- a/tests/l10n/check-l10n-parity.js +++ b/tests/l10n/check-l10n-parity.js @@ -131,7 +131,7 @@ function loadJsonSet(file) { /** True when a translation value is empty (string) or has an empty plural. */ function isEmpty(v) { - if (v == null) { + if ((v === null || v === undefined)) { return true } if (Array.isArray(v)) { @@ -190,11 +190,11 @@ for (const set of sets) { continue } const missing = enKeys.filter( - (k) => !Object.prototype.hasOwnProperty.call(locObj, k), + (k) => !Object.hasOwn(locObj, k), ) const empty = enKeys.filter( (k) => - Object.prototype.hasOwnProperty.call(locObj, k) + Object.hasOwn(locObj, k) && isEmpty(locObj[k]), ) if (missing.length || empty.length) { diff --git a/tests/l10n/check-l10n.js b/tests/l10n/check-l10n.js index f15a3374..b999a500 100644 --- a/tests/l10n/check-l10n.js +++ b/tests/l10n/check-l10n.js @@ -137,7 +137,7 @@ function unescape(s) { const used = new Map() function record(key, file, idx, content) { - if (key == null) { + if ((key === null || key === undefined)) { return } const k = unescape(key) @@ -163,7 +163,7 @@ for (const file of files) { const missing = [] for (const [key, locations] of used) { - if (!Object.prototype.hasOwnProperty.call(translations, key)) { + if (!Object.hasOwn(translations, key)) { missing.push({ key, locations: [...locations] }) } } diff --git a/tests/unit/Controller/DashboardControllerTest.php b/tests/unit/Controller/DashboardControllerTest.php index 10095591..47c26e78 100644 --- a/tests/unit/Controller/DashboardControllerTest.php +++ b/tests/unit/Controller/DashboardControllerTest.php @@ -41,6 +41,33 @@ public function testPageReturnsTemplateResponse(): void { self::assertInstanceOf(TemplateResponse::class, $result); } + /** + * The SPA catch-all serves the same shell as page(). + * + * `dashboard#catchAll` at GET /{path} is what makes larpinq's deep links + * work: before it, /apps/larpinq/characters and /events 404'd at the + * SERVER, which is why this app could not simply switch to history routing + * with the others. It is a public network-facing endpoint, so gate-25 + * (contract-coverage) wants a test rather than an `@contract exclude`. + * + * Asserting equality with page() rather than merely "returns a response" is + * the point: catchAll() exists only to delegate, and a delegation that + * quietly rendered the wrong template would hand every deep link a blank + * page while still answering HTTP 200. + * + * @return void + */ + public function testCatchAllServesTheSameShellAsPage(): void { + $result = $this->controller->catchAll(); + $page = $this->controller->page(); + + self::assertInstanceOf(TemplateResponse::class, $result); + self::assertSame('index', $result->getTemplateName()); + self::assertSame($page->getTemplateName(), $result->getTemplateName()); + self::assertSame($page->getRenderAs(), $result->getRenderAs()); + self::assertSame($page->getParams(), $result->getParams()); + } + public function testPageUsesIndexTemplate(): void { $result = $this->controller->page(); diff --git a/tests/unit/Listener/DeepLinkRegistrationListenerTest.php b/tests/unit/Listener/DeepLinkRegistrationListenerTest.php index 1efccdeb..5ba896df 100644 --- a/tests/unit/Listener/DeepLinkRegistrationListenerTest.php +++ b/tests/unit/Listener/DeepLinkRegistrationListenerTest.php @@ -175,13 +175,13 @@ public function testHandleUsesCorrectUrlPatterns(): void { $bySlug = array_column($event->links, 'urlTemplate', 'schemaSlug'); - self::assertSame('/apps/larpinq/#/characters/{uuid}', $bySlug['character']); - self::assertSame('/apps/larpinq/#/players/{uuid}', $bySlug['player']); - self::assertSame('/apps/larpinq/#/abilities/{uuid}', $bySlug['ability']); - self::assertSame('/apps/larpinq/#/skills/{uuid}', $bySlug['skill']); - self::assertSame('/apps/larpinq/#/items/{uuid}', $bySlug['larping_item']); - self::assertSame('/apps/larpinq/#/conditions/{uuid}', $bySlug['condition']); - self::assertSame('/apps/larpinq/#/effects/{uuid}', $bySlug['effect']); - self::assertSame('/apps/larpinq/#/events/{uuid}', $bySlug['larping_event']); + self::assertSame('/apps/larpinq/characters/{uuid}', $bySlug['character']); + self::assertSame('/apps/larpinq/players/{uuid}', $bySlug['player']); + self::assertSame('/apps/larpinq/abilities/{uuid}', $bySlug['ability']); + self::assertSame('/apps/larpinq/skills/{uuid}', $bySlug['skill']); + self::assertSame('/apps/larpinq/items/{uuid}', $bySlug['larping_item']); + self::assertSame('/apps/larpinq/conditions/{uuid}', $bySlug['condition']); + self::assertSame('/apps/larpinq/effects/{uuid}', $bySlug['effect']); + self::assertSame('/apps/larpinq/events/{uuid}', $bySlug['larping_event']); }//end testHandleUsesCorrectUrlPatterns() }//end class diff --git a/tests/Unit/Service/DemoDataServiceTest.php b/tests/unit/Service/DemoDataServiceTest.php similarity index 80% rename from tests/Unit/Service/DemoDataServiceTest.php rename to tests/unit/Service/DemoDataServiceTest.php index 1d3dc8f7..c4c9bfba 100644 --- a/tests/Unit/Service/DemoDataServiceTest.php +++ b/tests/unit/Service/DemoDataServiceTest.php @@ -108,6 +108,47 @@ public function importFromApp(string $appId, array $data, string $version, bool }; } + /** + * Declining is offered even when no dataset ships. + * + * 🔴 "NO THANKS" HAS TO BE SAYABLE. Every app in this fleet implemented a + * `skip-demo-data` action that no manifest step could reach, so the step + * stayed outstanding and CnAppRoot reopened the wizard over every page + * unless the operator imported data they did not want. + * + * @return void + */ + public function testDecliningIsOfferedEvenWhenNoDatasetShips(): void { + $choices = $this->service->listChoices(); + + $this->assertSame(['none'], array_column($choices, 'id')); + $this->assertNotSame('', $choices[0]['description']); + $this->assertNotSame('', $choices[0]['icon']); + + }//end testDecliningIsOfferedEvenWhenNoDatasetShips() + + /** + * The shipped dataset is offered with the count it actually carries. + * + * The card promises a number, so the number has to come from the file that + * will be imported rather than from a manifest that could disagree with it. + * + * @return void + */ + public function testTheShippedDatasetIsOfferedWithItsRealCount(): void { + $this->shipDescriptor(objects: 3); + + $choices = $this->service->listChoices(); + + $this->assertSame(['none', 'demo'], array_column($choices, 'id')); + $this->assertSame(3, $choices[1]['objectCount']); + // 🔴 NO NUMBER IN THE SENTENCE. The wizard translates a card's + // description by literal lookup, so an interpolated count would leave a + // Dutch operator reading English. + $this->assertDoesNotMatchRegularExpression('/\d/', $choices[1]['description']); + + }//end testTheShippedDatasetIsOfferedWithItsRealCount() + public function testItImportsTheDescriptorAndReportsTheCounts(): void { $this->shipDescriptor(objects: 5); $spy = $this->importerSpy(); diff --git a/tests/validate-json-strict.js b/tests/validate-json-strict.js index 8a27cecf..cd1982f6 100644 --- a/tests/validate-json-strict.js +++ b/tests/validate-json-strict.js @@ -45,7 +45,6 @@ function targetFiles() { // `pathPrefix` is the JSON-pointer-ish path used in the error message. function parseStrict(text, label) { const dupErrors = [] - const reviverPathStack = [] // JSON.parse's reviver can't see duplicates (the object is already // collapsed). So we re-implement just enough: tokenise object keys. // Simpler robust approach: walk the raw text with a tiny tokenizer. @@ -101,7 +100,7 @@ function parseStrict(text, label) { return } let idx = 0 - // eslint-disable-next-line no-constant-condition + while (true) { readValue(`${pathStr}/${idx}`) idx++ @@ -126,7 +125,7 @@ function parseStrict(text, label) { i++ return } - // eslint-disable-next-line no-constant-condition + while (true) { skipWs() if (text[i] !== '"') err('expected string key in object') diff --git a/tests/validate-manifest.js b/tests/validate-manifest.js index acdb2476..5983541a 100644 --- a/tests/validate-manifest.js +++ b/tests/validate-manifest.js @@ -68,7 +68,7 @@ function schemaFileName() { if (ref.includes('app-manifest-v2')) { return 'app-manifest-v2.schema.json' } - } catch (_) { + } catch { // fall through to the v1 default } return 'app-manifest.schema.json' @@ -96,7 +96,7 @@ function findSchemaPath() { if (fs.existsSync(candidate) && fs.statSync(candidate).isFile()) { return candidate } - } catch (_) { + } catch { // continue to next candidate } } @@ -112,16 +112,16 @@ function loadAjv() { // The canonical schema uses JSON Schema draft 2020-12. Standard Ajv (v7+) // does not auto-load the 2020 meta-schema; we need the `ajv/dist/2020` // entry point. - let Ajv2020 = null - let addFormats = null + let Ajv2020 + let addFormats try { // Ajv 8+ ships the 2020 draft entry point. Ajv2020 = require('ajv/dist/2020').default || require('ajv/dist/2020') - } catch (_) { + } catch { try { // Fall back to standard Ajv. Ajv2020 = require('ajv').default || require('ajv') - } catch (__) { + } catch { console.error('[validate-manifest] Ajv not installed in node_modules.') console.error( '[validate-manifest] Install with: npm i -D ajv ajv-formats', @@ -134,7 +134,7 @@ function loadAjv() { } try { addFormats = require('ajv-formats').default || require('ajv-formats') - } catch (_) { + } catch { // ajv-formats is optional; the schema uses "uri" format on $schema // which without ajv-formats is silently accepted. addFormats = null diff --git a/tests/vitest/graphql.spec.js b/tests/vitest/graphql.spec.js index 3aaaef74..8106b125 100644 --- a/tests/vitest/graphql.spec.js +++ b/tests/vitest/graphql.spec.js @@ -8,7 +8,7 @@ * @nextcloud/router + @nextcloud/auth helpers are aliased to stubs. */ -import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { queryGraphQL } from '../../src/services/graphql.js' function mockFetchOnce({ ok = true, status = 200, json = {}, headers = {} } = {}) { diff --git a/tests/vitest/manifestRegistry.spec.js b/tests/vitest/manifestRegistry.spec.js index 6b7b5c28..44f47909 100644 --- a/tests/vitest/manifestRegistry.spec.js +++ b/tests/vitest/manifestRegistry.spec.js @@ -33,7 +33,7 @@ import fs from 'fs' import path from 'path' import { fileURLToPath } from 'url' -import { describe, it, expect } from 'vitest' +import { describe, expect, it } from 'vitest' const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../..') diff --git a/tests/vitest/objectStoreTenant.spec.js b/tests/vitest/objectStoreTenant.spec.js index d834669c..85069e41 100644 --- a/tests/vitest/objectStoreTenant.spec.js +++ b/tests/vitest/objectStoreTenant.spec.js @@ -21,7 +21,7 @@ * by this vitest runner). */ -import { describe, it, expect, beforeEach, vi } from 'vitest' +import { beforeEach, describe, expect, it, vi } from 'vitest' let capturedOptions = null diff --git a/tests/vitest/settingsStore.spec.js b/tests/vitest/settingsStore.spec.js index 73fde3dd..1836b03b 100644 --- a/tests/vitest/settingsStore.spec.js +++ b/tests/vitest/settingsStore.spec.js @@ -9,8 +9,8 @@ * save / reimport round-trips. global fetch + the OC global are mocked. */ -import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest' import { createPinia, setActivePinia } from 'pinia' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { useSettingsStore } from '../../src/store/modules/settings.js' function mockFetchOnce({ ok = true, statusText = 'OK', json = {} }) { diff --git a/tests/vitest/skillTreeGraph.spec.js b/tests/vitest/skillTreeGraph.spec.js index 0ddc7700..6127a7ff 100644 --- a/tests/vitest/skillTreeGraph.spec.js +++ b/tests/vitest/skillTreeGraph.spec.js @@ -10,13 +10,13 @@ * @spec openspec/specs/skill-tree-visualization/spec.md */ -import { describe, it, expect } from 'vitest' +import { describe, expect, it } from 'vitest' import { - idList, - indexNames, - computeStateBySkill, buildNodes, + computeStateBySkill, computeTiers, + idList, + indexNames, } from '../../src/views/skillTreeGraph.js' const HEAL1 = { id: 'h1', name: 'Healing Lvl 1', requiredSkills: [] } diff --git a/tests/vitest/stubs/nextcloud-logger.js b/tests/vitest/stubs/nextcloud-logger.js index 43f1fb68..e22c7167 100644 --- a/tests/vitest/stubs/nextcloud-logger.js +++ b/tests/vitest/stubs/nextcloud-logger.js @@ -15,7 +15,7 @@ * error path under test logs without writing noise into the test output. */ -const noop = () => {} +function noop() {} const logger = { debug: noop, diff --git a/webpack.config.js b/webpack.config.js index 1fb572fc..91e067af 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -210,6 +210,9 @@ webpackConfig.plugins = [ // `^3.x` line), preventing @conduction/nextcloud-vue's nested `@nextcloud/dialogs@^7` // — which drags in a Vue-3 `@nextcloud/vue` + floating-vue and breaks the Vue-2 // build with "export 'createApp' was not found in 'vue'". Mirrors procest/decidesk. -webpackConfig.resolve.alias['@nextcloud/dialogs'] = path.resolve(__dirname, 'node_modules/@nextcloud/dialogs') +webpackConfig.resolve.alias['@nextcloud/dialogs'] = path.resolve( + __dirname, + 'node_modules/@nextcloud/dialogs', +) module.exports = webpackConfig