From 7e1782dab3d1c0d2634433ee4e8af757807e6ddc Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Sat, 10 Oct 2026 23:29:25 +0200 Subject: [PATCH 1/5] feat(dmn): named decision tables are stored once and flows reference them by key Decision 186: a reusable decision table lives in OpenRegister as a generic capability (ADR-118 C15). A core decision-tables register, refused at save when the evaluator cannot run a table or its key is taken; DecisionTableStore resolves a table by key or uuid and evaluates it for apps; the decision-table flow step takes tableRef as an alternative to an inline table. --- appinfo/info.xml | 4 +- lib/AppInfo/Application.php | 3 + .../DecisionTableValidationListener.php | 187 ++++++++++++++++++ lib/Repair/ImportDecisionTableRegister.php | 142 +++++++++++++ lib/Service/Dmn/DecisionTableStore.php | 186 +++++++++++++++++ lib/Service/Flow/Nodes/DecisionTableNode.php | 106 ++++++++-- lib/Settings/decision_table_register.json | 108 ++++++++++ .../stored-decision-tables/proposal.md | 21 ++ .../specs/flow-decision-tables/spec.md | 44 +++++ .../changes/stored-decision-tables/tasks.md | 10 + .../DecisionTableValidationListenerTest.php | 80 ++++++++ .../Service/Dmn/DecisionTableStoreTest.php | 123 ++++++++++++ .../DecisionTableNodeStoredTableTest.php | 104 ++++++++++ 13 files changed, 1099 insertions(+), 19 deletions(-) create mode 100644 lib/Listener/DecisionTableValidationListener.php create mode 100644 lib/Repair/ImportDecisionTableRegister.php create mode 100644 lib/Service/Dmn/DecisionTableStore.php create mode 100644 lib/Settings/decision_table_register.json create mode 100644 openspec/changes/stored-decision-tables/proposal.md create mode 100644 openspec/changes/stored-decision-tables/specs/flow-decision-tables/spec.md create mode 100644 openspec/changes/stored-decision-tables/tasks.md create mode 100644 tests/Unit/Listener/DecisionTableValidationListenerTest.php create mode 100644 tests/Unit/Service/Dmn/DecisionTableStoreTest.php create mode 100644 tests/Unit/Service/Flow/Nodes/DecisionTableNodeStoredTableTest.php diff --git a/appinfo/info.xml b/appinfo/info.xml index 611e320354..1b0cf10adf 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -40,7 +40,7 @@ Open Register drijft apps zoals OpenCatalogi, Procest, Pipelinq en Software Cata Vrij en open source onder de EUPL-licentie. ]]> - 2.1.35-unstable.20261009130000 + 2.1.35-unstable.20261010220000 EUPL-1.2 Conduction OpenRegister @@ -273,6 +273,7 @@ Vrij en open source onder de EUPL-licentie. and a reversal that has nothing to read. --> OCA\OpenRegister\Repair\ImportMergeOperationRegister OCA\OpenRegister\Repair\ImportDismissedPairRegister + OCA\OpenRegister\Repair\ImportDecisionTableRegister OCA\OpenRegister\Repair\ImportMergeOperationRegister OCA\OpenRegister\Repair\ImportDismissedPairRegister + OCA\OpenRegister\Repair\ImportDecisionTableRegister + +- [x] 1.1 Ship the `decision-tables` register and its import repair step (REQ-SDT-01) +- [x] 1.2 Refuse a stored table the evaluator cannot run, and a duplicate key, at save (REQ-SDT-02) +- [x] 1.3 `DecisionTableStore` resolves by key or uuid and refuses an unknown reference (REQ-SDT-03) +- [x] 1.4 The decision-table step accepts `tableRef`, exactly one of `table` and `tableRef` (REQ-SDT-04) +- [ ] 1.5 Live: import the register on a running instance, store a table, run a flow step by `tableRef` (owed to the live pass) +- [ ] 1.6 Point the decision-table editor at the register (follow-up) diff --git a/tests/Unit/Listener/DecisionTableValidationListenerTest.php b/tests/Unit/Listener/DecisionTableValidationListenerTest.php new file mode 100644 index 0000000000..c7753ade59 --- /dev/null +++ b/tests/Unit/Listener/DecisionTableValidationListenerTest.php @@ -0,0 +1,80 @@ +setSlug($slug); + $schemas = $this->createMock(SchemaMapper::class); + $schemas->method('find')->willReturn($schema); + + $objects = $this->createMock(ObjectService::class); + $objects->method('searchObjectsBySlug')->willReturn($sameKey); + + return new DecisionTableValidationListener($schemas, new DecisionTableValidator(), $objects); + } + + private function row(array $data, string $uuid = 'u-1'): ObjectEntity { + $object = new ObjectEntity(); + $object->setUuid($uuid); + $object->setSchema('7'); + $object->setObject($data); + return $object; + } + + public function testAnExecutableTableIsSaved(): void { + $event = new ObjectCreatingEvent($this->row(DecisionTableStoreTest::shippingTable())); + $this->listener('decision-table')->handle($event); + $this->assertFalse($event->isPropagationStopped()); + } + + public function testATableTheEngineCannotRunIsRefused(): void { + $table = DecisionTableStoreTest::shippingTable(); + $table['rules'][0]['inputEntries'] = []; + $event = new ObjectCreatingEvent($this->row($table)); + $this->listener('decision-table')->handle($event); + $this->assertTrue($event->isPropagationStopped()); + $this->assertSame(DecisionTableValidationListener::ERROR_CODE, $event->getErrors()['code']); + } + + public function testASecondTableUnderTheSameKeyIsRefused(): void { + $other = $this->row(DecisionTableStoreTest::shippingTable(), 'u-2'); + $event = new ObjectCreatingEvent($this->row(DecisionTableStoreTest::shippingTable())); + $this->listener('decision-table', [$other])->handle($event); + $this->assertTrue($event->isPropagationStopped()); + $this->assertStringContainsString('already used by decision table u-2', $event->getErrors()['message']); + } + + public function testUpdatingATableKeepsItsOwnKey(): void { + $self = $this->row(DecisionTableStoreTest::shippingTable()); + $event = new ObjectUpdatingEvent($this->row(DecisionTableStoreTest::shippingTable()), $self); + $this->listener('decision-table', [$self])->handle($event); + $this->assertFalse($event->isPropagationStopped()); + } + + public function testOtherSchemasAreLeftAlone(): void { + $event = new ObjectCreatingEvent($this->row(['anything' => true])); + $this->listener('invoice')->handle($event); + $this->assertFalse($event->isPropagationStopped()); + } +} diff --git a/tests/Unit/Service/Dmn/DecisionTableStoreTest.php b/tests/Unit/Service/Dmn/DecisionTableStoreTest.php new file mode 100644 index 0000000000..764137ec8d --- /dev/null +++ b/tests/Unit/Service/Dmn/DecisionTableStoreTest.php @@ -0,0 +1,123 @@ + + */ + public static function shippingTable(string $key = 'parcel-carrier', string $carrier = 'freight'): array { + return [ + 'key' => $key, + 'name' => 'Parcel carrier', + 'hitPolicy' => 'FIRST', + 'inputs' => [['name' => 'weight', 'type' => 'number']], + 'outputs' => [['name' => 'carrier', 'type' => 'string']], + 'rules' => [ + ['id' => 'light', 'inputEntries' => ['< 2'], 'outputEntries' => ['letterbox']], + ['id' => 'heavy', 'inputEntries' => ['>= 2'], 'outputEntries' => [$carrier]], + ], + ]; + }//end shippingTable() + + /** + * A store over the given rows. + * + * @param array}> $rows Uuid and data per row. + * @param bool $unreadable Whether the register read fails. + * + * @return DecisionTableStore + */ + private function store(array $rows, bool $unreadable = false): DecisionTableStore { + $objects = $this->createMock(ObjectService::class); + $method = $objects->method('searchObjectsBySlug')->with(DecisionTableStore::REGISTER, DecisionTableStore::SCHEMA); + if ($unreadable === true) { + $method->willThrowException(new RuntimeException('register missing')); + } else { + $entities = []; + foreach ($rows as [$uuid, $data]) { + $entity = new ObjectEntity(); + $entity->setUuid($uuid); + $entity->setObject($data); + $entities[] = $entity; + } + + $method->willReturn($entities); + } + + return new DecisionTableStore($objects, new DecisionTableValidator(), new DecisionTableEvaluator()); + }//end store() + + public function testATableIsFoundByKey(): void { + $store = $this->store([['u-1', self::shippingTable()]]); + $this->assertSame('Parcel carrier', $store->find('parcel-carrier')['name']); + } + + public function testATableIsFoundByUuid(): void { + $store = $this->store([['u-1', self::shippingTable()]]); + $this->assertSame('parcel-carrier', $store->find('u-1')['key']); + } + + public function testAKeyWinsOverAUuidThatHappensToMatch(): void { + $store = $this->store([['parcel-carrier', self::shippingTable('other', 'van')], ['u-2', self::shippingTable()]]); + $this->assertSame('freight', $store->evaluate('parcel-carrier', ['weight' => 5])['outputs']['carrier']); + } + + public function testEvaluateRunsTheStoredTable(): void { + $store = $this->store([['u-1', self::shippingTable()]]); + $result = $store->evaluate('parcel-carrier', ['weight' => 1.5]); + $this->assertSame(['carrier' => 'letterbox'], $result['outputs']); + $this->assertSame(['light'], $result['matchedRuleIds']); + $this->assertSame('FIRST', $result['hitPolicy']); + $this->assertSame('parcel-carrier', $result['tableKey']); + } + + public function testAnUnknownReferenceIsRefusedNotAnsweredEmpty(): void { + $this->expectException(UnexpectedValueException::class); + $this->expectExceptionMessage('No decision table has the key or id "nope"'); + $this->store([['u-1', self::shippingTable()]])->find('nope'); + } + + public function testAnEmptyReferenceIsRefused(): void { + $this->expectException(UnexpectedValueException::class); + $this->store([])->find(' '); + } + + public function testAStoredTableTheEngineCannotRunIsRefusedOnRead(): void { + $broken = self::shippingTable(); + $broken['hitPolicy'] = 'OUTPUT ORDER'; + $this->expectException(UnexpectedValueException::class); + $this->expectExceptionMessage('cannot be run'); + $this->store([['u-1', $broken]])->find('parcel-carrier'); + } + + public function testAnUnreadableRegisterIsAFaultNotANoMatch(): void { + $this->expectException(UnexpectedValueException::class); + $this->expectExceptionMessage('could not be read'); + $this->store([], unreadable: true)->find('parcel-carrier'); + } +} diff --git a/tests/Unit/Service/Flow/Nodes/DecisionTableNodeStoredTableTest.php b/tests/Unit/Service/Flow/Nodes/DecisionTableNodeStoredTableTest.php new file mode 100644 index 0000000000..186ff2c424 --- /dev/null +++ b/tests/Unit/Service/Flow/Nodes/DecisionTableNodeStoredTableTest.php @@ -0,0 +1,104 @@ +createMock(IL10N::class); + $l10n->method('t')->willReturnCallback( + static fn (string $text, array $params = []): string => vsprintf($text, $params) + ); + $urls = $this->createMock(IURLGenerator::class); + + $entity = new ObjectEntity(); + $entity->setUuid('u-1'); + $entity->setObject(DecisionTableStoreTest::shippingTable()); + $objects = $this->createMock(ObjectService::class); + $objects->method('searchObjectsBySlug')->willReturn([$entity]); + + $store = null; + if ($withStore === true) { + $store = new DecisionTableStore($objects, new DecisionTableValidator(), new DecisionTableEvaluator()); + } + + return new DecisionTableNode( + engine: new DecisionTableEvaluator(), + validator: new DecisionTableValidator(), + l10n: $l10n, + urls: $urls, + store: $store, + ); + } + + public function testAStepDecidesWithAStoredTable(): void { + $out = $this->node()->execute( + items: [FlowItems::item(json: ['parcel' => ['kg' => 7]])], + config: [ + 'tableRef' => 'parcel-carrier', + 'inputMapping' => ['weight' => 'parcel.kg'], + 'resultKey' => 'decision', + ], + context: [] + ); + + $json = $out[0][FlowItems::JSON]; + $this->assertSame('freight', $json['carrier']); + $this->assertSame(['heavy'], $json['decision']['matchedRuleIds']); + $this->assertSame('parcel-carrier', $json['decision']['tableKey']); + } + + public function testAStoredTableIsAcceptedAtSave(): void { + $this->node()->validateConfig(['tableRef' => 'u-1', 'outputMapping' => ['carrier' => 'shipping.carrier']]); + $this->addToAssertionCount(1); + } + + public function testAnUnknownReferenceIsRefusedAtSave(): void { + $this->expectException(UnexpectedValueException::class); + $this->expectExceptionMessage('No decision table has the key or id "missing"'); + $this->node()->validateConfig(['tableRef' => 'missing']); + } + + public function testAMappingTheStoredTableDoesNotDeclareIsRefused(): void { + $this->expectException(UnexpectedValueException::class); + $this->node()->validateConfig(['tableRef' => 'parcel-carrier', 'inputMapping' => ['volume' => 'parcel.m3']]); + } + + public function testBothAnInlineAndAStoredTableAreRefused(): void { + $this->expectException(UnexpectedValueException::class); + $this->expectExceptionMessage('not both'); + $this->node()->validateConfig(['tableRef' => 'parcel-carrier', 'table' => DecisionTableStoreTest::shippingTable()]); + } + + public function testNeitherIsRefused(): void { + $this->expectException(UnexpectedValueException::class); + $this->expectExceptionMessage('needs a table'); + $this->node()->validateConfig([]); + } + + public function testWithoutAStoreAReferenceIsRefusedNotIgnored(): void { + $this->expectException(UnexpectedValueException::class); + $this->expectExceptionMessage('not available'); + $this->node(withStore: false)->validateConfig(['tableRef' => 'parcel-carrier']); + } +} From 359f5c3981545251f290c4337bebc9844c763339 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Sun, 11 Oct 2026 08:35:53 +0200 Subject: [PATCH 2/5] fix(ci): catalogue keys for the decision table register's schema strings --- l10n/en.js | 12 ++++++++++++ l10n/nl.js | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/l10n/en.js b/l10n/en.js index 9628bec18e..2d703d4e82 100644 --- a/l10n/en.js +++ b/l10n/en.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.", "Connect account": "Connect account", "Connected accounts": "Connected accounts", "Could not disconnect this account.": "Could not disconnect this account.", "Could not load your connected accounts.": "Could not load your connected accounts.", "Could not start the connection. Check the provider and try again.": "Could not start the connection. Check the provider and try again.", + "Decision Table": "Decision Table", "Disconnect": "Disconnect", "Expired": "Expired", "Expires {date}": "Expires {date}", + "Hit policy": "Hit policy", + "How the matching rules become one answer.": "How the matching rules become one answer.", + "Input columns, each with a `name` and an optional `type`.": "Input columns, each with a `name` and an optional `type`.", + "Inputs": "Inputs", + "Name shown to the people who author and read the table.": "Name shown to the people who author and read the table.", "No accounts are connected yet.": "No accounts are connected yet.", "Not connected yet": "Not connected yet", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.", + "Outputs": "Outputs", "Reconnect": "Reconnect", "Relink needed": "Relink needed", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).", "Server address": "Server address", "Load example data?": "Load example data?", "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Each card has its own Load button. Pick \"None\" on a production install.": "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Each card has its own Load button. Pick \"None\" on a production install.", @@ -26,6 +36,8 @@ OC.L10N.register( "Declare x-openregister-approval-chains on this schema to gate a lifecycle transition on approval.": "Declare x-openregister-approval-chains on this schema to gate a lifecycle transition on approval.", "Approval sequences": "Approval sequences", "(Dolphin required)": "(Dolphin required)", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.", + "What the table decides and where its rules come from.": "What the table decides and where its rules come from.", "from amount {amount}": "from amount {amount}", "Gated transition: {transition}": "Gated transition: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.", diff --git a/l10n/nl.js b/l10n/nl.js index f998a767e5..cae5ccdf74 100644 --- a/l10n/nl.js +++ b/l10n/nl.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "App die deze tabel meelevert of beheert, bijvoorbeeld `dossiq`. Leeg voor een tabel die een beheerder zelf heeft gemaakt.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Koppel een social- of analytics-account één keer. OpenRegister bewaart het token en vernieuwt het, zodat apps het nooit zelf hoeven te houden.", "Connect account": "Account koppelen", "Connected accounts": "Gekoppelde accounts", "Could not disconnect this account.": "Kon dit account niet ontkoppelen.", "Could not load your connected accounts.": "Kon je gekoppelde accounts niet laden.", "Could not start the connection. Check the provider and try again.": "Kon de koppeling niet starten. Controleer de provider en probeer het opnieuw.", + "Decision Table": "Beslistabel", "Disconnect": "Ontkoppelen", "Expired": "Verlopen", "Expires {date}": "Verloopt {date}", + "Hit policy": "Hitbeleid", + "How the matching rules become one answer.": "Hoe de passende regels samen één antwoord worden.", + "Input columns, each with a `name` and an optional `type`.": "Invoerkolommen, elk met een `name` en een optioneel `type`.", + "Inputs": "Invoer", + "Name shown to the people who author and read the table.": "Naam zoals de mensen die de tabel opstellen en lezen hem zien.", "No accounts are connected yet.": "Er zijn nog geen accounts gekoppeld.", "Not connected yet": "Nog niet gekoppeld", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Uitvoerkolommen, elk met een `name` en, bij PRIORITY, een geordende lijst `values`.", + "Outputs": "Uitvoer", "Reconnect": "Opnieuw koppelen", "Relink needed": "Opnieuw koppelen nodig", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Regels, elk met een `id`, `inputEntries` (één unaire test per invoer) en `outputEntries` (één waarde per uitvoer).", "Server address": "Serveradres", "Load example data?": "Voorbeeldgegevens laden?", "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Each card has its own Load button. Pick \"None\" on a production install.": "Voorbeeldgegevens vullen de lijsten, detailpagina’s en dashboards, zodat je de app meteen ziet werken. Elke kaart heeft een eigen knop Laden. Kies \"Geen\" op een productieomgeving.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Vaste verwijzing die een flowstap of een app voor deze tabel gebruikt, bijvoorbeeld `enforcement-intervention`. Uniek binnen het register.", + "What the table decides and where its rules come from.": "Wat de tabel beslist en waar de regels vandaan komen.", "from amount {amount}": "vanaf bedrag {amount}", "Role {role}": "Rol {role}", "The transition is applied automatically once every step approves.": "De overgang wordt automatisch toegepast zodra elke stap is goedgekeurd.", From 94211c62ff9c25c5597fbe3fe818db5f32190b62 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Sun, 11 Oct 2026 08:40:52 +0200 Subject: [PATCH 3/5] fix(ci): translate the decision table register's schema strings into every locale --- l10n/be.js | 12 ++++++++++++ l10n/bg.js | 12 ++++++++++++ l10n/bs.js | 12 ++++++++++++ l10n/ca.js | 12 ++++++++++++ l10n/cs.js | 12 ++++++++++++ l10n/da.js | 12 ++++++++++++ l10n/de.js | 12 ++++++++++++ l10n/el.js | 12 ++++++++++++ l10n/es.js | 12 ++++++++++++ l10n/et.js | 12 ++++++++++++ l10n/fi.js | 12 ++++++++++++ l10n/fr.js | 12 ++++++++++++ l10n/ga.js | 12 ++++++++++++ l10n/hr.js | 12 ++++++++++++ l10n/hu.js | 12 ++++++++++++ l10n/is.js | 12 ++++++++++++ l10n/it.js | 12 ++++++++++++ l10n/lb.js | 12 ++++++++++++ l10n/lt.js | 12 ++++++++++++ l10n/lv.js | 12 ++++++++++++ l10n/mk.js | 12 ++++++++++++ l10n/mt.js | 12 ++++++++++++ l10n/nb.js | 12 ++++++++++++ l10n/pl.js | 12 ++++++++++++ l10n/pt.js | 12 ++++++++++++ l10n/rm.js | 12 ++++++++++++ l10n/ro.js | 12 ++++++++++++ l10n/ru.js | 12 ++++++++++++ l10n/sk.js | 12 ++++++++++++ l10n/sl.js | 12 ++++++++++++ l10n/sq.js | 12 ++++++++++++ l10n/sr.js | 12 ++++++++++++ l10n/sv.js | 12 ++++++++++++ l10n/tr.js | 12 ++++++++++++ l10n/uk.js | 12 ++++++++++++ 35 files changed, 420 insertions(+) diff --git a/l10n/be.js b/l10n/be.js index 244c0c06ae..256511b962 100644 --- a/l10n/be.js +++ b/l10n/be.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Праграма, якая пастаўляе або валодае гэтай табліцай, напрыклад `dossiq`. Пуста для табліцы, створанай адміністратарам.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Падлучыце ўліковы запіс сацсеткі або аналітыкі адзін раз. OpenRegister захоўвае токен і абнаўляе яго, таму праграмы ніколі яго не трымаюць.", "Connect account": "Падлучыць уліковы запіс", "Connected accounts": "Падлучаныя ўліковыя запісы", "Could not disconnect this account.": "Не ўдалося адлучыць гэты ўліковы запіс.", "Could not load your connected accounts.": "Не ўдалося загрузіць вашы падлучаныя ўліковыя запісы.", "Could not start the connection. Check the provider and try again.": "Не ўдалося пачаць падлучэнне. Праверце пастаўшчыка і паспрабуйце зноў.", + "Decision Table": "Табліца рашэнняў", "Disconnect": "Адлучыць", "Expired": "Пратэрмінавана", "Expires {date}": "Сканчаецца {date}", + "Hit policy": "Палітыка супадзення", + "How the matching rules become one answer.": "Як адпаведныя правілы становяцца адным адказам.", + "Input columns, each with a `name` and an optional `type`.": "Слупкі ўводу, кожны з `name` і неабавязковым `type`.", + "Inputs": "Увод", + "Name shown to the people who author and read the table.": "Назва, якую бачаць людзі, што складаюць і чытаюць табліцу.", "No accounts are connected yet.": "Пакуль не падлучаны ніводны ўліковы запіс.", "Not connected yet": "Яшчэ не падлучана", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Слупкі вываду, кожны з `name` і, для PRIORITY, упарадкаваным спісам `values`.", + "Outputs": "Вывад", "Reconnect": "Падлучыць зноў", "Relink needed": "Патрэбна паўторная прывязка", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Правілы, кожнае з `id`, `inputEntries` (адна ўнарная праверка на ўвод) і `outputEntries` (адно значэнне на вывад).", "Server address": "Адрас сервера", "Load example data?": "Загрузіць прыклады даных?", "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Each card has its own Load button. Pick \"None\" on a production install.": "Прыклады даных запаўняюць спісы, старонкі падрабязнасцей і панэлі, каб вы адразу ўбачылі праграму ў працы. Кожная картка мае ўласную кнопку \"Загрузіць\". На працоўнай усталёўцы абярыце \"Няма\".", @@ -23,6 +33,8 @@ OC.L10N.register( "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.": "Прыклады значэнняў для кожнай схемы, якую пастаўляе гэтая праграма, згенераваныя з саміх схем. Яны паказваюць спісы, старонкі падрабязнасцей і панэлі ў працы, а не расказваюць гісторыю. Бяспечна паўтараць і потым выдаліць.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Стабільная спасылка, якую крок патоку або праграма выкарыстоўвае для гэтай табліцы, напрыклад `enforcement-intervention`. Унікальная ў межах рэестра.", + "What the table decides and where its rules come from.": "Што вырашае табліца і адкуль бяруцца яе правілы.", "from amount {amount}": "ад сумы {amount}", "Gated transition: {transition}": "Кантраляваны пераход: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Кожны абвешчаны ланцужок адкрывае ўпарадкаваную паслядоўнасць задач пры спробе пераходу. Узгадняльнікі вырашаюць у сваёй скрыні задач, а не тут.", diff --git a/l10n/bg.js b/l10n/bg.js index 030e865daf..7ff16ac216 100644 --- a/l10n/bg.js +++ b/l10n/bg.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Приложението, което доставя или притежава тази таблица, например `dossiq`. Празно за таблица, създадена от администратор.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Свържете социален или аналитичен акаунт еднократно. OpenRegister пази токена и го подновява, така че приложенията никога не го държат.", "Connect account": "Свързване на акаунт", "Connected accounts": "Свързани акаунти", "Could not disconnect this account.": "Този акаунт не можа да бъде разкачен.", "Could not load your connected accounts.": "Свързаните ви акаунти не можаха да бъдат заредени.", "Could not start the connection. Check the provider and try again.": "Свързването не можа да започне. Проверете доставчика и опитайте отново.", + "Decision Table": "Таблица за решения", "Disconnect": "Разкачване", "Expired": "Изтекъл", "Expires {date}": "Изтича на {date}", + "Hit policy": "Политика на съвпадение", + "How the matching rules become one answer.": "Как съвпадащите правила се превръщат в един отговор.", + "Input columns, each with a `name` and an optional `type`.": "Входни колони, всяка с `name` и по избор `type`.", + "Inputs": "Входове", + "Name shown to the people who author and read the table.": "Име, което виждат хората, които съставят и четат таблицата.", "No accounts are connected yet.": "Още няма свързани акаунти.", "Not connected yet": "Още не е свързан", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Изходни колони, всяка с `name` и, за PRIORITY, подреден списък `values`.", + "Outputs": "Изходи", "Reconnect": "Свързване отново", "Relink needed": "Нужно е ново свързване", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Правила, всяко с `id`, `inputEntries` (по един унарен тест за вход) и `outputEntries` (по една стойност за изход).", "Server address": "Адрес на сървъра", "Load example data?": "Да се заредят ли примерни данни?", "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Each card has its own Load button. Pick \"None\" on a production install.": "Примерните данни попълват списъците, страниците с подробности и таблата, за да видите приложението веднага в действие. Всяка карта има собствен бутон \"Зареждане\". Изберете \"Няма\" при производствена инсталация.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.": "Примерни стойности за всяка схема, която приложението предоставя, генерирани от самите схеми. Показват списъците, страниците с подробности и таблата в действие, вместо да разказват история. Безопасно за повторно изпълнение и може да се изтрие после.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Стабилна препратка, която стъпка от поток или приложение използва за тази таблица, например `enforcement-intervention`. Уникална в регистъра.", + "What the table decides and where its rules come from.": "Какво решава таблицата и откъде идват правилата ѝ.", "from amount {amount}": "от сума {amount}", "Gated transition: {transition}": "Контролиран преход: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Всяка декларирана верига отваря подредена последователност от задачи при опит за прехода. Одобряващите решават в своята кутия със задачи, не тук.", diff --git a/l10n/bs.js b/l10n/bs.js index 08ef27fe92..2f37aaf388 100644 --- a/l10n/bs.js +++ b/l10n/bs.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Aplikacija koja isporučuje ili posjeduje ovu tabelu, na primjer `dossiq`. Prazno za tabelu koju je napisao administrator.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Poveži društveni ili analitički nalog jednom. OpenRegister čuva token i obnavlja ga, pa ga aplikacije nikada ne drže.", "Connect account": "Poveži nalog", "Connected accounts": "Povezani nalozi", "Could not disconnect this account.": "Ovaj nalog nije bilo moguće odspojiti.", "Could not load your connected accounts.": "Nije bilo moguće učitati tvoje povezane naloge.", "Could not start the connection. Check the provider and try again.": "Nije bilo moguće pokrenuti povezivanje. Provjeri pružaoca i pokušaj ponovo.", + "Decision Table": "Tabela odluka", "Disconnect": "Odspoji", "Expired": "Isteklo", "Expires {date}": "Ističe {date}", + "Hit policy": "Pravilo podudaranja", + "How the matching rules become one answer.": "Kako podudarna pravila postaju jedan odgovor.", + "Input columns, each with a `name` and an optional `type`.": "Ulazne kolone, svaka sa `name` i neobaveznim `type`.", + "Inputs": "Ulazi", + "Name shown to the people who author and read the table.": "Naziv koji vide ljudi koji pišu i čitaju tabelu.", "No accounts are connected yet.": "Još nije povezan nijedan nalog.", "Not connected yet": "Još nije povezano", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Izlazne kolone, svaka sa `name` i, za PRIORITY, uređenom listom `values`.", + "Outputs": "Izlazi", "Reconnect": "Poveži ponovo", "Relink needed": "Potrebno je ponovno povezivanje", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Pravila, svako sa `id`, `inputEntries` (jedan unarni test po ulazu) i `outputEntries` (jedna vrijednost po izlazu).", "Server address": "Adresa servera", "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. Each card has its own Load button. Pick \"None\" on a production install.": "Primjeri podataka popunjavaju liste, stranice s detaljima i kontrolne table, pa aplikaciju odmah vidite kako radi. Svaka kartica ima svoje dugme \"Učitaj\". Odaberite \"Ništa\" na produkcijskoj instalaciji.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Stabilna referenca koju korak toka ili aplikacija koristi za ovu tabelu, na primjer `enforcement-intervention`. Jedinstvena unutar registra.", + "What the table decides and where its rules come from.": "Šta tabela odlučuje i odakle dolaze njena pravila.", "from amount {amount}": "od iznosa {amount}", "Gated transition: {transition}": "Nadzirani prelaz: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Svaki deklarisani lanac otvara uređeni niz zadataka kad se prelaz pokuša. Odobravaoci odlučuju u svom sandučetu zadataka, ne ovdje.", diff --git a/l10n/ca.js b/l10n/ca.js index ebcbbef711..4e59a0b1c7 100644 --- a/l10n/ca.js +++ b/l10n/ca.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Aplicació que subministra o posseeix aquesta taula, per exemple `dossiq`. Buit per a una taula creada per un administrador.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Connecta un compte social o d’analítica una sola vegada. L’OpenRegister desa el testimoni i el renova, de manera que les aplicacions no el retenen mai.", "Connect account": "Connecta el compte", "Connected accounts": "Comptes connectats", "Could not disconnect this account.": "No s’ha pogut desconnectar aquest compte.", "Could not load your connected accounts.": "No s’han pogut carregar els vostres comptes connectats.", "Could not start the connection. Check the provider and try again.": "No s’ha pogut iniciar la connexió. Comproveu el proveïdor i torneu-ho a provar.", + "Decision Table": "Taula de decisions", "Disconnect": "Desconnecta", "Expired": "Caducat", "Expires {date}": "Caduca el {date}", + "Hit policy": "Política de coincidència", + "How the matching rules become one answer.": "Com les regles que coincideixen esdevenen una única resposta.", + "Input columns, each with a `name` and an optional `type`.": "Columnes d'entrada, cadascuna amb un `name` i un `type` opcional.", + "Inputs": "Entrades", + "Name shown to the people who author and read the table.": "Nom que veuen les persones que redacten i llegeixen la taula.", "No accounts are connected yet.": "Encara no hi ha cap compte connectat.", "Not connected yet": "Encara no connectat", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Columnes de sortida, cadascuna amb un `name` i, per a PRIORITY, una llista ordenada `values`.", + "Outputs": "Sortides", "Reconnect": "Torna a connectar", "Relink needed": "Cal tornar a enllaçar", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Regles, cadascuna amb un `id`, `inputEntries` (una prova unària per entrada) i `outputEntries` (un valor per sortida).", "Server address": "Adreça del servidor", "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. Each card has its own Load button. 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. Cada targeta té el seu propi botó \"Carrega\". Trieu \"Cap\" en una instal·lació de producció.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Referència estable que un pas de flux o una aplicació fa servir per a aquesta taula, per exemple `enforcement-intervention`. Única dins del registre.", + "What the table decides and where its rules come from.": "Què decideix la taula i d'on vénen les seves regles.", "from amount {amount}": "a partir de l'import {amount}", "Gated transition: {transition}": "Transició controlada: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Cada cadena declarada obre una seqüència ordenada de tasques quan s'intenta la transició. Els aprovadors decideixen a la seva safata de tasques, no aquí.", diff --git a/l10n/cs.js b/l10n/cs.js index 077a77bb99..9acca0aee1 100644 --- a/l10n/cs.js +++ b/l10n/cs.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Aplikace, která tuto tabulku dodává nebo vlastní, například `dossiq`. Prázdné u tabulky, kterou vytvořil správce.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Připojte účet sociální sítě nebo analytiky jednou. OpenRegister uchová token a obnovuje jej, takže jej aplikace nikdy nedrží.", "Connect account": "Připojit účet", "Connected accounts": "Připojené účty", "Could not disconnect this account.": "Tento účet se nepodařilo odpojit.", "Could not load your connected accounts.": "Vaše připojené účty se nepodařilo načíst.", "Could not start the connection. Check the provider and try again.": "Připojení se nepodařilo spustit. Zkontrolujte poskytovatele a zkuste to znovu.", + "Decision Table": "Rozhodovací tabulka", "Disconnect": "Odpojit", "Expired": "Vypršelo", "Expires {date}": "Vyprší {date}", + "Hit policy": "Pravidlo shody", + "How the matching rules become one answer.": "Jak se odpovídající pravidla stanou jednou odpovědí.", + "Input columns, each with a `name` and an optional `type`.": "Vstupní sloupce, každý s `name` a volitelným `type`.", + "Inputs": "Vstupy", + "Name shown to the people who author and read the table.": "Název, který vidí lidé, kteří tabulku sestavují a čtou.", "No accounts are connected yet.": "Zatím nejsou připojeny žádné účty.", "Not connected yet": "Zatím nepřipojeno", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Výstupní sloupce, každý s `name` a u PRIORITY s uspořádaným seznamem `values`.", + "Outputs": "Výstupy", "Reconnect": "Připojit znovu", "Relink needed": "Je potřeba znovu propojit", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Pravidla, každé s `id`, `inputEntries` (jeden unární test na vstup) a `outputEntries` (jedna hodnota na výstup).", "Server address": "Adresa serveru", "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. Each card has its own Load button. 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. Každá karta má vlastní tlačítko \"Načíst\". Na produkční instalaci zvolte \"Žádná\".", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Stabilní odkaz, který krok toku nebo aplikace používá pro tuto tabulku, například `enforcement-intervention`. Jedinečný v rámci registru.", + "What the table decides and where its rules come from.": "O čem tabulka rozhoduje a odkud pocházejí její pravidla.", "from amount {amount}": "od částky {amount}", "Gated transition: {transition}": "Hlídaný přechod: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Každý deklarovaný řetězec otevře uspořádanou sekvenci úkolů při pokusu o přechod. Schvalovatelé rozhodují ve své schránce úkolů, ne zde.", diff --git a/l10n/da.js b/l10n/da.js index 97b8af964b..618662c712 100644 --- a/l10n/da.js +++ b/l10n/da.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Appen, der leverer eller ejer denne tabel, for eksempel `dossiq`. Tom for en tabel, en administrator har oprettet.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Forbind en social konto eller analysekonto én gang. OpenRegister opbevarer token og fornyer det, så apps aldrig selv har det.", "Connect account": "Forbind konto", "Connected accounts": "Forbundne konti", "Could not disconnect this account.": "Denne konto kunne ikke afbrydes.", "Could not load your connected accounts.": "Dine forbundne konti kunne ikke indlæses.", "Could not start the connection. Check the provider and try again.": "Forbindelsen kunne ikke startes. Tjek udbyderen, og prøv igen.", + "Decision Table": "Beslutningstabel", "Disconnect": "Afbryd", "Expired": "Udløbet", "Expires {date}": "Udløber {date}", + "Hit policy": "Træfpolitik", + "How the matching rules become one answer.": "Hvordan de matchende regler bliver til ét svar.", + "Input columns, each with a `name` and an optional `type`.": "Inputkolonner, hver med et `name` og en valgfri `type`.", + "Inputs": "Input", + "Name shown to the people who author and read the table.": "Navn, som de der opretter og læser tabellen, ser.", "No accounts are connected yet.": "Der er endnu ikke forbundet nogen konti.", "Not connected yet": "Endnu ikke forbundet", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Outputkolonner, hver med et `name` og for PRIORITY en ordnet `values`-liste.", + "Outputs": "Output", "Reconnect": "Forbind igen", "Relink needed": "Ny tilknytning er nødvendig", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Regler, hver med et `id`, `inputEntries` (én unær test pr. input) og `outputEntries` (én værdi pr. output).", "Server address": "Serveradresse", "Load example data?": "Indlæs eksempeldata?", "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Each card has its own Load button. Pick \"None\" on a production install.": "Eksempeldata fylder lister, detaljesider og dashboards, så du med det samme ser appen virke. Hvert kort har sin egen \"Indlæs\"-knap. Vælg \"Ingen\" på en produktionsinstallation.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Stabil reference, som et flowtrin eller en app bruger til denne tabel, for eksempel `enforcement-intervention`. Entydig i registret.", + "What the table decides and where its rules come from.": "Hvad tabellen afgør, og hvor dens regler kommer fra.", "from amount {amount}": "fra beløb {amount}", "Gated transition: {transition}": "Overvåget overgang: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Hver deklareret kæde åbner en ordnet opgavesekvens, når overgangen forsøges. Godkendere beslutter i deres opgaveindbakke, ikke her.", diff --git a/l10n/de.js b/l10n/de.js index 92f468f9ce..3afc0e9c9a 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "App, die diese Tabelle mitliefert oder besitzt, zum Beispiel `dossiq`. Leer bei einer Tabelle, die ein Administrator angelegt hat.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Verbinde ein Social- oder Analytics-Konto einmalig. OpenRegister bewahrt das Token auf und erneuert es, damit Apps es nie selbst halten.", "Connect account": "Konto verbinden", "Connected accounts": "Verbundene Konten", "Could not disconnect this account.": "Dieses Konto konnte nicht getrennt werden.", "Could not load your connected accounts.": "Deine verbundenen Konten konnten nicht geladen werden.", "Could not start the connection. Check the provider and try again.": "Die Verbindung konnte nicht gestartet werden. Prüfe den Anbieter und versuche es erneut.", + "Decision Table": "Entscheidungstabelle", "Disconnect": "Trennen", "Expired": "Abgelaufen", "Expires {date}": "Läuft am {date} ab", + "Hit policy": "Trefferrichtlinie", + "How the matching rules become one answer.": "Wie aus den passenden Regeln eine einzige Antwort wird.", + "Input columns, each with a `name` and an optional `type`.": "Eingabespalten, jede mit einem `name` und einem optionalen `type`.", + "Inputs": "Eingaben", + "Name shown to the people who author and read the table.": "Name, den die Personen sehen, die die Tabelle erstellen und lesen.", "No accounts are connected yet.": "Es sind noch keine Konten verbunden.", "Not connected yet": "Noch nicht verbunden", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Ausgabespalten, jede mit einem `name` und, bei PRIORITY, einer geordneten `values`-Liste.", + "Outputs": "Ausgaben", "Reconnect": "Erneut verbinden", "Relink needed": "Neuverknüpfung nötig", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Regeln, jede mit einer `id`, `inputEntries` (ein unärer Test pro Eingabe) und `outputEntries` (ein Wert pro Ausgabe).", "Server address": "Serveradresse", "Load example data?": "Beispieldaten laden?", "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Each card has its own Load button. Pick \"None\" on a production install.": "Beispieldaten füllen die Listen, Detailseiten und Dashboards, damit Sie die App sofort in Betrieb sehen. Jede Karte hat eine eigene Schaltfläche \"Laden\". Wählen Sie \"Keine\" bei einer Produktivinstallation.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Stabile Referenz, die ein Flow-Schritt oder eine App für diese Tabelle verwendet, zum Beispiel `enforcement-intervention`. Eindeutig innerhalb des Registers.", + "What the table decides and where its rules come from.": "Was die Tabelle entscheidet und woher ihre Regeln stammen.", "from amount {amount}": "ab Betrag {amount}", "Gated transition: {transition}": "Bewachter Übergang: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Jede deklarierte Kette eröffnet beim Versuch des Übergangs eine geordnete Aufgabensequenz. Freigebende entscheiden in ihrem Aufgabeneingang, nicht hier.", diff --git a/l10n/el.js b/l10n/el.js index 737869f625..487f23fb6c 100644 --- a/l10n/el.js +++ b/l10n/el.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Η εφαρμογή που παρέχει ή κατέχει αυτόν τον πίνακα, για παράδειγμα `dossiq`. Κενό για πίνακα που δημιούργησε διαχειριστής.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Συνδέστε έναν λογαριασμό κοινωνικού δικτύου ή αναλυτικών μία φορά. Το OpenRegister κρατά το διακριτικό και το ανανεώνει, ώστε οι εφαρμογές να μην το κρατούν ποτέ.", "Connect account": "Σύνδεση λογαριασμού", "Connected accounts": "Συνδεδεμένοι λογαριασμοί", "Could not disconnect this account.": "Δεν ήταν δυνατή η αποσύνδεση αυτού του λογαριασμού.", "Could not load your connected accounts.": "Δεν ήταν δυνατή η φόρτωση των συνδεδεμένων λογαριασμών σας.", "Could not start the connection. Check the provider and try again.": "Δεν ήταν δυνατή η έναρξη της σύνδεσης. Ελέγξτε τον πάροχο και δοκιμάστε ξανά.", + "Decision Table": "Πίνακας αποφάσεων", "Disconnect": "Αποσύνδεση", "Expired": "Έληξε", "Expires {date}": "Λήγει στις {date}", + "Hit policy": "Πολιτική αντιστοίχισης", + "How the matching rules become one answer.": "Πώς οι κανόνες που ταιριάζουν γίνονται μία απάντηση.", + "Input columns, each with a `name` and an optional `type`.": "Στήλες εισόδου, καθεμία με `name` και προαιρετικό `type`.", + "Inputs": "Είσοδοι", + "Name shown to the people who author and read the table.": "Όνομα που βλέπουν όσοι συντάσσουν και διαβάζουν τον πίνακα.", "No accounts are connected yet.": "Δεν έχει συνδεθεί ακόμη κανένας λογαριασμός.", "Not connected yet": "Δεν έχει συνδεθεί ακόμη", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Στήλες εξόδου, καθεμία με `name` και, για PRIORITY, ταξινομημένη λίστα `values`.", + "Outputs": "Έξοδοι", "Reconnect": "Επανασύνδεση", "Relink needed": "Απαιτείται νέα σύνδεση", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Κανόνες, καθένας με `id`, `inputEntries` (ένας μοναδιαίος έλεγχος ανά είσοδο) και `outputEntries` (μία τιμή ανά έξοδο).", "Server address": "Διεύθυνση διακομιστή", "Load example data?": "Να φορτωθούν δεδομένα παραδείγματος;", "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Each card has its own Load button. Pick \"None\" on a production install.": "Τα δεδομένα παραδείγματος γεμίζουν τις λίστες, τις σελίδες λεπτομερειών και τους πίνακες, ώστε να δείτε αμέσως την εφαρμογή να λειτουργεί. Κάθε κάρτα έχει το δικό της κουμπί \"Φόρτωση\". Επιλέξτε \"Κανένα\" σε εγκατάσταση παραγωγής.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.": "Τιμές παραδείγματος για κάθε σχήμα που παρέχει αυτή η εφαρμογή, παραγμένες από τα ίδια τα σχήματα. Δείχνουν τις λίστες, τις σελίδες λεπτομερειών και τους πίνακες σε λειτουργία αντί να αφηγούνται μια ιστορία. Ασφαλής επανάληψη και διαγραφή μετά.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Σταθερή αναφορά που χρησιμοποιεί ένα βήμα ροής ή μια εφαρμογή για αυτόν τον πίνακα, για παράδειγμα `enforcement-intervention`. Μοναδική μέσα στο μητρώο.", + "What the table decides and where its rules come from.": "Τι αποφασίζει ο πίνακας και από πού προέρχονται οι κανόνες του.", "from amount {amount}": "από ποσό {amount}", "Gated transition: {transition}": "Ελεγχόμενη μετάβαση: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Κάθε δηλωμένη αλυσίδα ανοίγει μια διατεταγμένη ακολουθία εργασιών όταν επιχειρείται η μετάβαση. Οι εγκρίνοντες αποφασίζουν στα εισερχόμενα εργασιών τους, όχι εδώ.", diff --git a/l10n/es.js b/l10n/es.js index c21e5e4777..2e7772956b 100644 --- a/l10n/es.js +++ b/l10n/es.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Aplicación que suministra o posee esta tabla, por ejemplo `dossiq`. Vacío para una tabla creada por un administrador.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Conecta una cuenta social o de analítica una sola vez. OpenRegister guarda el token y lo renueva, de modo que las aplicaciones nunca lo retienen.", "Connect account": "Conectar cuenta", "Connected accounts": "Cuentas conectadas", "Could not disconnect this account.": "No se pudo desconectar esta cuenta.", "Could not load your connected accounts.": "No se pudieron cargar tus cuentas conectadas.", "Could not start the connection. Check the provider and try again.": "No se pudo iniciar la conexión. Comprueba el proveedor e inténtalo de nuevo.", + "Decision Table": "Tabla de decisiones", "Disconnect": "Desconectar", "Expired": "Caducado", "Expires {date}": "Caduca el {date}", + "Hit policy": "Política de coincidencia", + "How the matching rules become one answer.": "Cómo las reglas que coinciden se convierten en una sola respuesta.", + "Input columns, each with a `name` and an optional `type`.": "Columnas de entrada, cada una con un `name` y un `type` opcional.", + "Inputs": "Entradas", + "Name shown to the people who author and read the table.": "Nombre que ven las personas que redactan y leen la tabla.", "No accounts are connected yet.": "Aún no hay cuentas conectadas.", "Not connected yet": "Aún no conectado", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Columnas de salida, cada una con un `name` y, para PRIORITY, una lista ordenada `values`.", + "Outputs": "Salidas", "Reconnect": "Reconectar", "Relink needed": "Hace falta volver a enlazar", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Reglas, cada una con un `id`, `inputEntries` (una prueba unaria por entrada) y `outputEntries` (un valor por salida).", "Server address": "Dirección del servidor", "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. Each card has its own Load button. 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. Cada tarjeta tiene su propio botón \"Cargar\". Elige \"Ninguno\" en una instalación de producción.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Referencia estable que un paso de flujo o una aplicación usa para esta tabla, por ejemplo `enforcement-intervention`. Única dentro del registro.", + "What the table decides and where its rules come from.": "Qué decide la tabla y de dónde vienen sus reglas.", "from amount {amount}": "a partir del importe {amount}", "Gated transition: {transition}": "Transición controlada: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Cada cadena declarada abre una secuencia ordenada de tareas cuando se intenta la transición. Quienes aprueban deciden en su bandeja de tareas, no aquí.", diff --git a/l10n/et.js b/l10n/et.js index ef9e53910a..6a4f5da2c9 100644 --- a/l10n/et.js +++ b/l10n/et.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Rakendus, mis selle tabeli kaasa annab või omab, näiteks `dossiq`. Tühi, kui tabeli lõi administraator.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Ühenda sotsiaal- või analüütikakonto ühe korra. OpenRegister hoiab loa alles ja uuendab seda, nii et rakendused ei hoia seda kunagi ise.", "Connect account": "Ühenda konto", "Connected accounts": "Ühendatud kontod", "Could not disconnect this account.": "Selle konto ühendust ei õnnestunud katkestada.", "Could not load your connected accounts.": "Sinu ühendatud kontode laadimine ebaõnnestus.", "Could not start the connection. Check the provider and try again.": "Ühenduse alustamine ebaõnnestus. Kontrolli teenusepakkujat ja proovi uuesti.", + "Decision Table": "Otsustustabel", "Disconnect": "Katkesta ühendus", "Expired": "Aegunud", "Expires {date}": "Aegub {date}", + "Hit policy": "Vaste poliitika", + "How the matching rules become one answer.": "Kuidas sobivad reeglid muutuvad üheks vastuseks.", + "Input columns, each with a `name` and an optional `type`.": "Sisendveerud, igaühel `name` ja valikuline `type`.", + "Inputs": "Sisendid", + "Name shown to the people who author and read the table.": "Nimi, mida näevad tabeli koostajad ja lugejad.", "No accounts are connected yet.": "Ühtegi kontot pole veel ühendatud.", "Not connected yet": "Pole veel ühendatud", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Väljundveerud, igaühel `name` ja PRIORITY puhul järjestatud `values` loend.", + "Outputs": "Väljundid", "Reconnect": "Ühenda uuesti", "Relink needed": "Vaja on uut sidumist", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Reeglid, igaühel `id`, `inputEntries` (üks unaarne test sisendi kohta) ja `outputEntries` (üks väärtus väljundi kohta).", "Server address": "Serveri aadress", "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. Each card has its own Load button. Pick \"None\" on a production install.": "Näidisandmed täidavad loendid, detailvaated ja töölauad, nii et näete rakendust kohe töötamas. Igal kaardil on oma nupp \"Laadi\". Tootmispaigalduses valige \"Puudub\".", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Püsiv viide, mida voo samm või rakendus selle tabeli jaoks kasutab, näiteks `enforcement-intervention`. Registris kordumatu.", + "What the table decides and where its rules come from.": "Mida tabel otsustab ja kust selle reeglid pärinevad.", "from amount {amount}": "alates summast {amount}", "Gated transition: {transition}": "Valvatud üleminek: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Iga deklareeritud ahel avab ülemineku proovimisel järjestatud ülesannete jada. Kinnitajad otsustavad oma ülesannete postkastis, mitte siin.", diff --git a/l10n/fi.js b/l10n/fi.js index e8437be211..7f46bbcdd8 100644 --- a/l10n/fi.js +++ b/l10n/fi.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Sovellus, joka toimittaa tai omistaa tämän taulukon, esimerkiksi `dossiq`. Tyhjä, jos ylläpitäjä on laatinut taulukon.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Yhdistä sosiaalisen median tai analytiikan tili kerran. OpenRegister säilyttää tunnisteen ja uusii sen, joten sovellukset eivät koskaan pidä sitä hallussaan.", "Connect account": "Yhdistä tili", "Connected accounts": "Yhdistetyt tilit", "Could not disconnect this account.": "Tämän tilin yhteyttä ei voitu katkaista.", "Could not load your connected accounts.": "Yhdistettyjä tilejäsi ei voitu ladata.", "Could not start the connection. Check the provider and try again.": "Yhteyttä ei voitu aloittaa. Tarkista palveluntarjoaja ja yritä uudelleen.", + "Decision Table": "Päätöstaulukko", "Disconnect": "Katkaise yhteys", "Expired": "Vanhentunut", "Expires {date}": "Vanhenee {date}", + "Hit policy": "Osumakäytäntö", + "How the matching rules become one answer.": "Miten täsmäävistä säännöistä tulee yksi vastaus.", + "Input columns, each with a `name` and an optional `type`.": "Syöttösarakkeet, joilla kullakin on `name` ja valinnainen `type`.", + "Inputs": "Syötteet", + "Name shown to the people who author and read the table.": "Nimi, jonka taulukon laatijat ja lukijat näkevät.", "No accounts are connected yet.": "Yhtään tiliä ei ole vielä yhdistetty.", "Not connected yet": "Ei vielä yhdistetty", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Tulossarakkeet, joilla kullakin on `name` ja PRIORITY-tapauksessa järjestetty `values`-luettelo.", + "Outputs": "Tulosteet", "Reconnect": "Yhdistä uudelleen", "Relink needed": "Uudelleenlinkitys tarvitaan", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Säännöt, joilla kullakin on `id`, `inputEntries` (yksi unaarinen testi syötettä kohti) ja `outputEntries` (yksi arvo tulostetta kohti).", "Server address": "Palvelimen osoite", "Load example data?": "Ladataanko esimerkkitiedot?", "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Each card has its own Load button. Pick \"None\" on a production install.": "Esimerkkitiedot täyttävät luettelot, tietosivut ja koontinäytöt, joten näet sovelluksen heti toiminnassa. Jokaisessa kortissa on oma \"Lataa\"-painike. Valitse tuotantoasennuksessa \"Ei mitään\".", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Pysyvä viittaus, jota työnkulun vaihe tai sovellus käyttää tälle taulukolle, esimerkiksi `enforcement-intervention`. Yksilöllinen rekisterissä.", + "What the table decides and where its rules come from.": "Mistä taulukko päättää ja mistä sen säännöt tulevat.", "from amount {amount}": "summasta {amount} alkaen", "Gated transition: {transition}": "Valvottu siirtymä: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Jokainen määritetty ketju avaa järjestetyn tehtäväsarjan, kun siirtymää yritetään. Hyväksyjät päättävät tehtäväpostilaatikossaan, eivät täällä.", diff --git a/l10n/fr.js b/l10n/fr.js index ad90f4aefa..b862e2090a 100644 --- a/l10n/fr.js +++ b/l10n/fr.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Application qui fournit ou possède cette table, par exemple `dossiq`. Vide pour une table créée par un administrateur.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Connectez un compte social ou analytique une seule fois. OpenRegister conserve le jeton et le renouvelle, pour que les applications ne le détiennent jamais.", "Connect account": "Connecter un compte", "Connected accounts": "Comptes connectés", "Could not disconnect this account.": "Impossible de déconnecter ce compte.", "Could not load your connected accounts.": "Impossible de charger vos comptes connectés.", "Could not start the connection. Check the provider and try again.": "Impossible de démarrer la connexion. Vérifiez le fournisseur et réessayez.", + "Decision Table": "Table de décision", "Disconnect": "Déconnecter", "Expired": "Expiré", "Expires {date}": "Expire le {date}", + "Hit policy": "Politique de correspondance", + "How the matching rules become one answer.": "Comment les règles correspondantes deviennent une seule réponse.", + "Input columns, each with a `name` and an optional `type`.": "Colonnes d'entrée, chacune avec un `name` et un `type` facultatif.", + "Inputs": "Entrées", + "Name shown to the people who author and read the table.": "Nom affiché aux personnes qui rédigent et lisent la table.", "No accounts are connected yet.": "Aucun compte n’est encore connecté.", "Not connected yet": "Pas encore connecté", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Colonnes de sortie, chacune avec un `name` et, pour PRIORITY, une liste ordonnée `values`.", + "Outputs": "Sorties", "Reconnect": "Reconnecter", "Relink needed": "Nouvelle liaison requise", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Règles, chacune avec un `id`, `inputEntries` (un test unaire par entrée) et `outputEntries` (une valeur par sortie).", "Server address": "Adresse du serveur", "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. Each card has its own Load button. 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. Chaque carte a son propre bouton \"Charger\". Choisissez \"Aucune\" sur une installation de production.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Référence stable qu'une étape de flux ou une application utilise pour cette table, par exemple `enforcement-intervention`. Unique dans le registre.", + "What the table decides and where its rules come from.": "Ce que la table décide et d'où viennent ses règles.", "from amount {amount}": "à partir du montant {amount}", "Gated transition: {transition}": "Transition contrôlée : {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Chaque chaîne déclarée ouvre une séquence de tâches ordonnée dès que la transition est tentée. Les approbateurs décident dans leur boîte de tâches, pas ici.", diff --git a/l10n/ga.js b/l10n/ga.js index 16ef1d03f6..ac87b6e5c1 100644 --- a/l10n/ga.js +++ b/l10n/ga.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "An aip a sholáthraíonn nó a bhfuil úinéireacht aici ar an tábla seo, mar shampla `dossiq`. Folamh i gcás tábla a chruthaigh riarthóir.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Ceangail cuntas sóisialta nó anailíse uair amháin. Coinníonn OpenRegister an ceadchomhartha agus athnuann é, sa chaoi nach mbíonn sé ag na feidhmchláir riamh.", "Connect account": "Ceangail cuntas", "Connected accounts": "Cuntais cheangailte", "Could not disconnect this account.": "Níorbh fhéidir an cuntas seo a dhícheangal.", "Could not load your connected accounts.": "Níorbh fhéidir do chuntais cheangailte a lódáil.", "Could not start the connection. Check the provider and try again.": "Níorbh fhéidir an ceangal a thosú. Seiceáil an soláthraí agus bain triail eile as.", + "Decision Table": "Tábla cinntí", "Disconnect": "Dícheangail", "Expired": "As dáta", "Expires {date}": "Rachaidh sé in éag {date}", + "Hit policy": "Polasaí meaitseála", + "How the matching rules become one answer.": "Conas a thagann freagra amháin as na rialacha comhoiriúnacha.", + "Input columns, each with a `name` and an optional `type`.": "Colúin ionchuir, gach ceann acu le `name` agus `type` roghnach.", + "Inputs": "Ionchuir", + "Name shown to the people who author and read the table.": "Ainm a fheiceann na daoine a scríobhann agus a léann an tábla.", "No accounts are connected yet.": "Níl aon chuntas ceangailte fós.", "Not connected yet": "Gan cheangal fós", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Colúin aschuir, gach ceann acu le `name` agus, le haghaidh PRIORITY, liosta ordaithe `values`.", + "Outputs": "Aschuir", "Reconnect": "Athcheangail", "Relink needed": "Teastaíonn athnascadh", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Rialacha, gach ceann acu le `id`, `inputEntries` (tástáil aonártha amháin in aghaidh gach ionchuir) agus `outputEntries` (luach amháin in aghaidh gach aschuir).", "Server address": "Seoladh an fhreastalaí", "Load example data?": "Luchtaigh sonraí samplacha?", "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Each card has its own Load button. 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. Tá a cnaipe \"Luchtaigh\" féin ag gach cárta. Roghnaigh \"Ceann ar bith\" ar shuiteáil táirgthe.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Tagairt sheasmhach a úsáideann céim sreafa nó aip don tábla seo, mar shampla `enforcement-intervention`. Uathúil laistigh den chlár.", + "What the table decides and where its rules come from.": "Cad a chinneann an tábla agus cárb as a dtagann a rialacha.", "from amount {amount}": "ó mhéid {amount}", "Gated transition: {transition}": "Aistriú faoi gharda: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Osclaíonn gach slabhra dearbhaithe seicheamh ordaithe tascanna nuair a dhéantar iarracht ar an aistriú. Cinneann ceadaitheoirí ina mbosca isteach tascanna, ní anseo.", diff --git a/l10n/hr.js b/l10n/hr.js index b41528a5aa..00440b6779 100644 --- a/l10n/hr.js +++ b/l10n/hr.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Aplikacija koja isporučuje ili posjeduje ovu tablicu, na primjer `dossiq`. Prazno za tablicu koju je izradio administrator.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Poveži društveni ili analitički račun jednom. OpenRegister čuva token i obnavlja ga, pa ga aplikacije nikada ne drže.", "Connect account": "Poveži račun", "Connected accounts": "Povezani računi", "Could not disconnect this account.": "Ovaj račun nije bilo moguće odspojiti.", "Could not load your connected accounts.": "Nije bilo moguće učitati tvoje povezane račune.", "Could not start the connection. Check the provider and try again.": "Nije bilo moguće pokrenuti povezivanje. Provjeri pružatelja i pokušaj ponovno.", + "Decision Table": "Tablica odluka", "Disconnect": "Odspoji", "Expired": "Isteklo", "Expires {date}": "Ističe {date}", + "Hit policy": "Pravilo podudaranja", + "How the matching rules become one answer.": "Kako podudarna pravila postaju jedan odgovor.", + "Input columns, each with a `name` and an optional `type`.": "Ulazni stupci, svaki s `name` i neobaveznim `type`.", + "Inputs": "Ulazi", + "Name shown to the people who author and read the table.": "Naziv koji vide osobe koje sastavljaju i čitaju tablicu.", "No accounts are connected yet.": "Još nije povezan nijedan račun.", "Not connected yet": "Još nije povezano", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Izlazni stupci, svaki s `name` i, za PRIORITY, uređenim popisom `values`.", + "Outputs": "Izlazi", "Reconnect": "Poveži ponovno", "Relink needed": "Potrebno je ponovno povezivanje", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Pravila, svako s `id`, `inputEntries` (jedan unarni test po ulazu) i `outputEntries` (jedna vrijednost po izlazu).", "Server address": "Adresa poslužitelja", "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. Each card has its own Load button. Pick \"None\" on a production install.": "Primjeri podataka popunjavaju popise, stranice s detaljima i nadzorne ploče, pa aplikaciju odmah vidite kako radi. Svaka kartica ima vlastiti gumb \"Učitaj\". Odaberite \"Nema\" na produkcijskoj instalaciji.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Stabilna referenca koju korak toka ili aplikacija koristi za ovu tablicu, na primjer `enforcement-intervention`. Jedinstvena unutar registra.", + "What the table decides and where its rules come from.": "Što tablica odlučuje i odakle dolaze njezina pravila.", "from amount {amount}": "od iznosa {amount}", "Gated transition: {transition}": "Nadzirani prijelaz: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Svaki deklarirani lanac otvara uređeni niz zadataka kad se prijelaz pokuša. Odobravatelji odlučuju u svojoj ulaznoj listi zadataka, ne ovdje.", diff --git a/l10n/hu.js b/l10n/hu.js index 9e009a31a2..d92cab4862 100644 --- a/l10n/hu.js +++ b/l10n/hu.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Az alkalmazás, amely ezt a táblázatot szállítja vagy birtokolja, például `dossiq`. Üres, ha a táblázatot egy rendszergazda hozta létre.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Csatlakoztass egy közösségi vagy analitikai fiókot egyszer. Az OpenRegister megőrzi és megújítja a tokent, így az alkalmazások soha nem tárolják.", "Connect account": "Fiók csatlakoztatása", "Connected accounts": "Csatlakoztatott fiókok", "Could not disconnect this account.": "Ezt a fiókot nem sikerült leválasztani.", "Could not load your connected accounts.": "A csatlakoztatott fiókjaidat nem sikerült betölteni.", "Could not start the connection. Check the provider and try again.": "A kapcsolatot nem sikerült elindítani. Ellenőrizd a szolgáltatót, és próbáld újra.", + "Decision Table": "Döntési táblázat", "Disconnect": "Leválasztás", "Expired": "Lejárt", "Expires {date}": "Lejár: {date}", + "Hit policy": "Találati szabályzat", + "How the matching rules become one answer.": "Hogyan lesz az egyező szabályokból egyetlen válasz.", + "Input columns, each with a `name` and an optional `type`.": "Bemeneti oszlopok, mindegyik egy `name` mezővel és egy opcionális `type` mezővel.", + "Inputs": "Bemenetek", + "Name shown to the people who author and read the table.": "A név, amelyet a táblázatot szerkesztők és olvasók látnak.", "No accounts are connected yet.": "Még nincs csatlakoztatott fiók.", "Not connected yet": "Még nincs csatlakoztatva", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Kimeneti oszlopok, mindegyik egy `name` mezővel és PRIORITY esetén egy rendezett `values` listával.", + "Outputs": "Kimenetek", "Reconnect": "Újracsatlakoztatás", "Relink needed": "Újbóli összekapcsolás szükséges", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Szabályok, mindegyik egy `id` mezővel, `inputEntries` (bemenetenként egy unáris teszt) és `outputEntries` (kimenetenként egy érték) mezőkkel.", "Server address": "Kiszolgáló címe", "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. Each card has its own Load button. 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. Minden kártyának saját \"Betöltés\" gombja van. Éles telepítésen válassza a \"Nincs\" lehetőséget.", @@ -23,6 +33,8 @@ OC.L10N.register( "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ő.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Állandó hivatkozás, amelyet egy folyamatlépés vagy alkalmazás használ ehhez a táblázathoz, például `enforcement-intervention`. A nyilvántartáson belül egyedi.", + "What the table decides and where its rules come from.": "Miről dönt a táblázat, és honnan származnak a szabályai.", "from amount {amount}": "{amount} összegtől", "Gated transition: {transition}": "Őrzött átmenet: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Minden deklarált lánc rendezett feladatsorozatot nyit, amikor az átmenetet megkísérlik. A jóváhagyók a feladat-bejövőjükben döntenek, nem itt.", diff --git a/l10n/is.js b/l10n/is.js index 314be37a81..0b78a9c19a 100644 --- a/l10n/is.js +++ b/l10n/is.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Forritið sem útvegar eða á þessa töflu, til dæmis `dossiq`. Autt fyrir töflu sem stjórnandi bjó til.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Tengdu samfélags- eða greiningarreikning einu sinni. OpenRegister geymir teiknið og endurnýjar það, svo forrit haldi því aldrei sjálf.", "Connect account": "Tengja reikning", "Connected accounts": "Tengdir reikningar", "Could not disconnect this account.": "Ekki tókst að aftengja þennan reikning.", "Could not load your connected accounts.": "Ekki tókst að hlaða tengdum reikningum þínum.", "Could not start the connection. Check the provider and try again.": "Ekki tókst að hefja tenginguna. Athugaðu þjónustuaðilann og reyndu aftur.", + "Decision Table": "Ákvörðunartafla", "Disconnect": "Aftengja", "Expired": "Útrunnið", "Expires {date}": "Rennur út {date}", + "Hit policy": "Samsvörunarregla", + "How the matching rules become one answer.": "Hvernig samsvarandi reglur verða að einu svari.", + "Input columns, each with a `name` and an optional `type`.": "Inntaksdálkar, hver með `name` og valkvæðu `type`.", + "Inputs": "Inntök", + "Name shown to the people who author and read the table.": "Heiti sem fólk sem semur og les töfluna sér.", "No accounts are connected yet.": "Engir reikningar eru tengdir enn.", "Not connected yet": "Ekki tengt enn", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Úttaksdálkar, hver með `name` og, fyrir PRIORITY, raðaðan `values` lista.", + "Outputs": "Úttök", "Reconnect": "Tengja aftur", "Relink needed": "Endurtenging nauðsynleg", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Reglur, hver með `id`, `inputEntries` (eitt einundarpróf á hvert inntak) og `outputEntries` (eitt gildi á hvert úttak).", "Server address": "Vistfang þjóns", "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. Each card has its own Load button. Pick \"None\" on a production install.": "Sýnigögn fylla listana, upplýsingasíðurnar og mælaborðin, svo þú sérð forritið virka strax. Hvert spjald hefur sinn eigin \"Hlaða\"-hnapp. Veldu \"Engin\" á framleiðsluuppsetningu.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Stöðug tilvísun sem flæðisskref eða forrit notar fyrir þessa töflu, til dæmis `enforcement-intervention`. Einkvæm innan skrárinnar.", + "What the table decides and where its rules come from.": "Hvað taflan ákveður og hvaðan reglur hennar koma.", "from amount {amount}": "frá upphæð {amount}", "Gated transition: {transition}": "Vöktuð umskipti: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Hver skilgreind keðja opnar raðaða verkefnaröð þegar reynt er við umskiptin. Samþykkjendur ákveða í verkefnahólfinu sínu, ekki hér.", diff --git a/l10n/it.js b/l10n/it.js index 1e2517a583..afa551d345 100644 --- a/l10n/it.js +++ b/l10n/it.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "App che fornisce o possiede questa tabella, per esempio `dossiq`. Vuoto per una tabella creata da un amministratore.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Collega un account social o di analisi una sola volta. OpenRegister conserva il token e lo rinnova, così le app non lo detengono mai.", "Connect account": "Collega account", "Connected accounts": "Account collegati", "Could not disconnect this account.": "Impossibile scollegare questo account.", "Could not load your connected accounts.": "Impossibile caricare i tuoi account collegati.", "Could not start the connection. Check the provider and try again.": "Impossibile avviare la connessione. Controlla il provider e riprova.", + "Decision Table": "Tabella decisionale", "Disconnect": "Scollega", "Expired": "Scaduto", "Expires {date}": "Scade il {date}", + "Hit policy": "Criterio di corrispondenza", + "How the matching rules become one answer.": "Come le regole corrispondenti diventano un'unica risposta.", + "Input columns, each with a `name` and an optional `type`.": "Colonne di input, ciascuna con un `name` e un `type` facoltativo.", + "Inputs": "Input", + "Name shown to the people who author and read the table.": "Nome mostrato alle persone che scrivono e leggono la tabella.", "No accounts are connected yet.": "Nessun account è ancora collegato.", "Not connected yet": "Non ancora collegato", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Colonne di output, ciascuna con un `name` e, per PRIORITY, un elenco ordinato `values`.", + "Outputs": "Output", "Reconnect": "Ricollega", "Relink needed": "Serve un nuovo collegamento", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Regole, ciascuna con un `id`, `inputEntries` (un test unario per input) e `outputEntries` (un valore per output).", "Server address": "Indirizzo del server", "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. Each card has its own Load button. Pick \"None\" on a production install.": "I dati di esempio riempiono elenchi, pagine di dettaglio e dashboard, così vedi subito l’app in funzione. Ogni scheda ha il proprio pulsante \"Carica\". Scegli \"Nessuno\" su un’installazione di produzione.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Riferimento stabile che un passo del flusso o un'app usa per questa tabella, per esempio `enforcement-intervention`. Univoco nel registro.", + "What the table decides and where its rules come from.": "Che cosa decide la tabella e da dove vengono le sue regole.", "from amount {amount}": "a partire dall'importo {amount}", "Gated transition: {transition}": "Transizione controllata: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Ogni catena dichiarata apre una sequenza ordinata di attività quando la transizione viene tentata. Gli approvatori decidono nella loro casella attività, non qui.", diff --git a/l10n/lb.js b/l10n/lb.js index 74ec09946c..608d6df9c0 100644 --- a/l10n/lb.js +++ b/l10n/lb.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "App, déi dës Tabell matbréngt oder besëtzt, zum Beispill `dossiq`. Eidel bei enger Tabell, déi en Administrateur ugeluecht huet.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Verbann eemol e soziale Kont oder en Analytics-Kont. OpenRegister behält den Token a verlängert en, sou datt d’Apps en ni selwer halen.", "Connect account": "Kont verbannen", "Connected accounts": "Verbonne Konten", "Could not disconnect this account.": "Dëse Kont konnt net getrennt ginn.", "Could not load your connected accounts.": "Deng verbonne Konten konnten net gelueden ginn.", "Could not start the connection. Check the provider and try again.": "D’Verbindung konnt net gestart ginn. Kuck de Fournisseur no a probéier nach eng Kéier.", + "Decision Table": "Entscheedungstabell", "Disconnect": "Trennen", "Expired": "Ofgelaf", "Expires {date}": "Leeft de(n) {date} of", + "Hit policy": "Treffer-Richtlinn", + "How the matching rules become one answer.": "Wéi aus de passende Reegele jee eng Äntwert gëtt.", + "Input columns, each with a `name` and an optional `type`.": "Aganskolonnen, all mat engem `name` an engem optionalen `type`.", + "Inputs": "Agäng", + "Name shown to the people who author and read the table.": "Numm, deen d'Leit gesinn, déi d'Tabell erstellen a liesen.", "No accounts are connected yet.": "Et ass nach kee Kont verbonnen.", "Not connected yet": "Nach net verbonnen", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Ausgangskolonnen, all mat engem `name` a bei PRIORITY enger gerangenger `values`-Lëscht.", + "Outputs": "Ausgäng", "Reconnect": "Nei verbannen", "Relink needed": "Nei Verbindung néideg", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Reegelen, all mat enger `id`, `inputEntries` (een unären Test pro Gang) an `outputEntries` (een Wäert pro Ausgang).", "Server address": "Serveradress", "Load example data?": "Beispilldate lueden?", "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Each card has its own Load button. 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. All Kaart huet hiren eegene Knäppchen \"Lueden\". Wielt \"Keng\" bei enger Produktiounsinstallatioun.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Stabil Referenz, déi e Flow-Schrëtt oder eng App fir dës Tabell benotzt, zum Beispill `enforcement-intervention`. Eenzegaarteg am Register.", + "What the table decides and where its rules come from.": "Wat d'Tabell entscheet a vu wou hir Reegele kommen.", "from amount {amount}": "ab Betrag {amount}", "Gated transition: {transition}": "Iwwerwaachten Iwwergang: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "All deklaréiert Kette mécht eng geuerdnet Aufgabesequenz op, wann den Iwwergang probéiert gëtt. Genehmeger entscheeden an hirer Aufgabemailbox, net hei.", diff --git a/l10n/lt.js b/l10n/lt.js index 4724cb07cd..eac6de8dd8 100644 --- a/l10n/lt.js +++ b/l10n/lt.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Programa, kuri pateikia šią lentelę arba ją valdo, pavyzdžiui, `dossiq`. Tuščia, jei lentelę sukūrė administratorius.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Prijunkite socialinio tinklo ar analitikos paskyrą vieną kartą. OpenRegister saugo prieigos raktą ir jį atnaujina, todėl programos jo niekada nelaiko.", "Connect account": "Prijungti paskyrą", "Connected accounts": "Prijungtos paskyros", "Could not disconnect this account.": "Nepavyko atjungti šios paskyros.", "Could not load your connected accounts.": "Nepavyko įkelti jūsų prijungtų paskyrų.", "Could not start the connection. Check the provider and try again.": "Nepavyko pradėti jungimosi. Patikrinkite tiekėją ir bandykite dar kartą.", + "Decision Table": "Sprendimų lentelė", "Disconnect": "Atjungti", "Expired": "Nebegalioja", "Expires {date}": "Galioja iki {date}", + "Hit policy": "Atitikimo politika", + "How the matching rules become one answer.": "Kaip atitinkančios taisyklės tampa vienu atsakymu.", + "Input columns, each with a `name` and an optional `type`.": "Įvesties stulpeliai, kiekvienas su `name` ir pasirenkamu `type`.", + "Inputs": "Įvestys", + "Name shown to the people who author and read the table.": "Pavadinimas, kurį mato lentelę rengiantys ir skaitantys žmonės.", "No accounts are connected yet.": "Kol kas neprijungta nė viena paskyra.", "Not connected yet": "Dar neprijungta", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Išvesties stulpeliai, kiekvienas su `name` ir, esant PRIORITY, sutvarkytu `values` sąrašu.", + "Outputs": "Išvestys", "Reconnect": "Prijungti iš naujo", "Relink needed": "Reikia susieti iš naujo", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Taisyklės, kiekviena su `id`, `inputEntries` (vienas unarinis testas kiekvienai įvesčiai) ir `outputEntries` (viena reikšmė kiekvienai išvesčiai).", "Server address": "Serverio adresas", "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. Each card has its own Load button. 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ą. Kiekviena kortelė turi savo mygtuką \"Įkelti\". Gamybinėje diegtyje pasirinkite \"Nėra\".", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Pastovi nuoroda, kurią šiai lentelei naudoja srauto žingsnis ar programa, pavyzdžiui, `enforcement-intervention`. Unikali registre.", + "What the table decides and where its rules come from.": "Ką lentelė sprendžia ir iš kur atsiranda jos taisyklės.", "from amount {amount}": "nuo sumos {amount}", "Gated transition: {transition}": "Prižiūrimas perėjimas: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Kiekviena deklaruota grandinė atveria surikiuotą užduočių seką, kai bandomas perėjimas. Tvirtintojai sprendžia savo užduočių aplanke, ne čia.", diff --git a/l10n/lv.js b/l10n/lv.js index 1c0c15dcf6..ebf6e8b533 100644 --- a/l10n/lv.js +++ b/l10n/lv.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Lietotne, kas piegādā vai pārvalda šo tabulu, piemēram, `dossiq`. Tukšs, ja tabulu izveidoja administrators.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Pievieno sociālo vai analītikas kontu vienu reizi. OpenRegister glabā pilnvaru un to atjauno, tāpēc lietotnes to nekad netur.", "Connect account": "Pievienot kontu", "Connected accounts": "Pievienotie konti", "Could not disconnect this account.": "Neizdevās atvienot šo kontu.", "Could not load your connected accounts.": "Neizdevās ielādēt tavus pievienotos kontus.", "Could not start the connection. Check the provider and try again.": "Neizdevās sākt savienojumu. Pārbaudi pakalpojuma sniedzēju un mēģini vēlreiz.", + "Decision Table": "Lēmumu tabula", "Disconnect": "Atvienot", "Expired": "Beidzies", "Expires {date}": "Beidzas {date}", + "Hit policy": "Atbilstības politika", + "How the matching rules become one answer.": "Kā atbilstošie noteikumi kļūst par vienu atbildi.", + "Input columns, each with a `name` and an optional `type`.": "Ievades kolonnas, katrai ir `name` un neobligāts `type`.", + "Inputs": "Ievades", + "Name shown to the people who author and read the table.": "Nosaukums, ko redz cilvēki, kas tabulu sastāda un lasa.", "No accounts are connected yet.": "Vēl nav pievienots neviens konts.", "Not connected yet": "Vēl nav pievienots", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Izvades kolonnas, katrai ir `name` un PRIORITY gadījumā sakārtots `values` saraksts.", + "Outputs": "Izvades", "Reconnect": "Pievienot atkārtoti", "Relink needed": "Nepieciešama atkārtota sasaiste", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Noteikumi, katram ir `id`, `inputEntries` (viens unārs tests katrai ievadei) un `outputEntries` (viena vērtība katrai izvadei).", "Server address": "Servera adrese", "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. Each card has its own Load button. 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ā. Katrai kartītei ir sava poga \"Ielādēt\". Ražošanas instalācijā izvēlieties \"Nav\".", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Stabila atsauce, ko šai tabulai izmanto plūsmas solis vai lietotne, piemēram, `enforcement-intervention`. Unikāla reģistrā.", + "What the table decides and where its rules come from.": "Ko tabula nosaka un no kurienes nāk tās noteikumi.", "from amount {amount}": "no summas {amount}", "Gated transition: {transition}": "Uzraudzīta pāreja: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Katra deklarētā ķēde atver sakārtotu uzdevumu secību, kad pāreja tiek mēģināta. Apstiprinātāji lemj savā uzdevumu iesūtnē, nevis šeit.", diff --git a/l10n/mk.js b/l10n/mk.js index 5e1e5ff3d6..4f4ccbffa6 100644 --- a/l10n/mk.js +++ b/l10n/mk.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Апликацијата што ја испорачува или ја поседува оваа табела, на пример `dossiq`. Празно за табела што ја создал администратор.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Поврзи социјална или аналитичка сметка еднаш. OpenRegister го чува токенот и го обновува, така што апликациите никогаш не го држат.", "Connect account": "Поврзи сметка", "Connected accounts": "Поврзани сметки", "Could not disconnect this account.": "Оваа сметка не можеше да се исклучи.", "Could not load your connected accounts.": "Твоите поврзани сметки не можеа да се вчитаат.", "Could not start the connection. Check the provider and try again.": "Поврзувањето не можеше да започне. Провери го давателот и обиди се повторно.", + "Decision Table": "Табела на одлуки", "Disconnect": "Исклучи", "Expired": "Истечено", "Expires {date}": "Истекува {date}", + "Hit policy": "Правило за совпаѓање", + "How the matching rules become one answer.": "Како правилата што се совпаѓаат стануваат еден одговор.", + "Input columns, each with a `name` and an optional `type`.": "Влезни колони, секоја со `name` и по избор `type`.", + "Inputs": "Влезови", + "Name shown to the people who author and read the table.": "Име што го гледаат луѓето што ја составуваат и ја читаат табелата.", "No accounts are connected yet.": "Сè уште нема поврзани сметки.", "Not connected yet": "Сè уште не е поврзано", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Излезни колони, секоја со `name` и, за PRIORITY, подредена листа `values`.", + "Outputs": "Излези", "Reconnect": "Поврзи повторно", "Relink needed": "Потребно е ново поврзување", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Правила, секое со `id`, `inputEntries` (еден унарен тест по влез) и `outputEntries` (една вредност по излез).", "Server address": "Адреса на серверот", "Load example data?": "Да се вчитаат примероци од податоци?", "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Each card has its own Load button. Pick \"None\" on a production install.": "Примероците од податоци ги полнат списоците, страниците со детали и таблите, за да ја видите апликацијата како работи веднаш. Секоја картичка има свое копче \"Вчитај\". Изберете \"Ништо\" на продукциска инсталација.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.": "Примерни вредности за секоја шема што ја носи оваа апликација, генерирани од самите шеми. Ги покажуваат списоците, страниците со детали и таблите во работа наместо да раскажуваат приказна. Безбедно за повторување и бришење потоа.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Стабилна референца што чекор од тек или апликација ја користи за оваа табела, на пример `enforcement-intervention`. Уникатна во регистарот.", + "What the table decides and where its rules come from.": "Што одлучува табелата и од каде доаѓаат нејзините правила.", "from amount {amount}": "од износ {amount}", "Gated transition: {transition}": "Надгледуван премин: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Секој деклариран синџир отвора подредена низа задачи кога преминот ќе се обиде. Одобрувачите одлучуваат во своето сандаче со задачи, не овде.", diff --git a/l10n/mt.js b/l10n/mt.js index 73c22dfb33..b8cb1b0bd9 100644 --- a/l10n/mt.js +++ b/l10n/mt.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "L-applikazzjoni li tipprovdi jew li tippossjedi din it-tabella, pereżempju `dossiq`. Vojt għal tabella maħluqa minn amministratur.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Qabbad kont soċjali jew ta’ analitika darba. OpenRegister iżomm it-token u jġeddu, biex l-applikazzjonijiet qatt ma jżommuh.", "Connect account": "Qabbad kont", "Connected accounts": "Kontijiet imqabbda", "Could not disconnect this account.": "Ma setax jiġi skonnettjat dan il-kont.", "Could not load your connected accounts.": "Ma setgħux jitgħabbew il-kontijiet imqabbda tiegħek.", "Could not start the connection. Check the provider and try again.": "Il-konnessjoni ma setgħetx tinbeda. Iċċekkja l-fornitur u erġa’ pprova.", + "Decision Table": "Tabella tad-deċiżjonijiet", "Disconnect": "Skonnettja", "Expired": "Skada", "Expires {date}": "Jiskadi fi {date}", + "Hit policy": "Politika tat-tqabbil", + "How the matching rules become one answer.": "Kif ir-regoli li jaqblu jsiru tweġiba waħda.", + "Input columns, each with a `name` and an optional `type`.": "Kolonni tal-input, kull waħda b'`name` u `type` fakultattiv.", + "Inputs": "Dħul", + "Name shown to the people who author and read the table.": "L-isem li jaraw in-nies li jikteb u jaqraw it-tabella.", "No accounts are connected yet.": "Għad m’hemm ebda kont imqabbad.", "Not connected yet": "Għadu mhux imqabbad", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Kolonni tal-output, kull waħda b'`name` u, għal PRIORITY, lista ordnata `values`.", + "Outputs": "Ħruġ", "Reconnect": "Erġa’ qabbad", "Relink needed": "Hemm bżonn rabta ġdida", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Regoli, kull waħda b'`id`, `inputEntries` (test unarju wieħed għal kull input) u `outputEntries` (valur wieħed għal kull output).", "Server address": "Indirizz tas-server", "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. Each card has its own Load button. 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. Kull karta għandha l-buttuna \"Għabbi\" tagħha. Agħżel \"Xejn\" fuq installazzjoni tal-produzzjoni.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Referenza stabbli li pass tal-fluss jew applikazzjoni juża għal din it-tabella, pereżempju `enforcement-intervention`. Unika fir-reġistru.", + "What the table decides and where its rules come from.": "X'tiddeċiedi t-tabella u minn fejn ġejjin ir-regoli tagħha.", "from amount {amount}": "minn ammont {amount}", "Gated transition: {transition}": "Tranżizzjoni mgħassa: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Kull katina ddikjarata tiftaħ sekwenza ordnata ta' kompiti meta t-tranżizzjoni tiġi ppruvata. L-approvaturi jiddeċiedu fl-inbox tal-kompiti tagħhom, mhux hawn.", diff --git a/l10n/nb.js b/l10n/nb.js index 4c4dc591ef..61b01fa469 100644 --- a/l10n/nb.js +++ b/l10n/nb.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Appen som leverer eller eier denne tabellen, for eksempel `dossiq`. Tom for en tabell en administrator har laget.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Koble til en sosial konto eller analysekonto én gang. OpenRegister tar vare på tokenet og fornyer det, slik at apper aldri holder det selv.", "Connect account": "Koble til konto", "Connected accounts": "Tilkoblede kontoer", "Could not disconnect this account.": "Denne kontoen kunne ikke kobles fra.", "Could not load your connected accounts.": "Kunne ikke laste de tilkoblede kontoene dine.", "Could not start the connection. Check the provider and try again.": "Kunne ikke starte tilkoblingen. Sjekk leverandøren og prøv igjen.", + "Decision Table": "Beslutningstabell", "Disconnect": "Koble fra", "Expired": "Utløpt", "Expires {date}": "Utløper {date}", + "Hit policy": "Treffregel", + "How the matching rules become one answer.": "Hvordan de matchende reglene blir til ett svar.", + "Input columns, each with a `name` and an optional `type`.": "Inndatakolonner, hver med et `name` og en valgfri `type`.", + "Inputs": "Inndata", + "Name shown to the people who author and read the table.": "Navnet som de som lager og leser tabellen, ser.", "No accounts are connected yet.": "Ingen kontoer er tilkoblet ennå.", "Not connected yet": "Ikke tilkoblet ennå", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Utdatakolonner, hver med et `name` og, for PRIORITY, en ordnet `values`-liste.", + "Outputs": "Utdata", "Reconnect": "Koble til på nytt", "Relink needed": "Ny tilkobling kreves", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Regler, hver med en `id`, `inputEntries` (én unær test per inndata) og `outputEntries` (én verdi per utdata).", "Server address": "Serveradresse", "Load example data?": "Laste inn eksempeldata?", "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Each card has its own Load button. Pick \"None\" on a production install.": "Eksempeldata fyller listene, detaljsidene og dashbordene, så du ser appen virke med en gang. Hvert kort har sin egen \"Last inn\"-knapp. Velg \"Ingen\" på en produksjonsinstallasjon.", @@ -23,6 +33,8 @@ OC.L10N.register( "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å.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Stabil referanse som et flytsteg eller en app bruker for denne tabellen, for eksempel `enforcement-intervention`. Unik i registeret.", + "What the table decides and where its rules come from.": "Hva tabellen avgjør, og hvor reglene kommer fra.", "from amount {amount}": "fra beløp {amount}", "Gated transition: {transition}": "Overvåket overgang: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Hver deklarerte kjede åpner en ordnet oppgavesekvens når overgangen forsøkes. Godkjennere beslutter i oppgaveinnboksen sin, ikke her.", diff --git a/l10n/pl.js b/l10n/pl.js index 46ac55f54e..d8104a8020 100644 --- a/l10n/pl.js +++ b/l10n/pl.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Aplikacja, która dostarcza tę tabelę lub jest jej właścicielem, na przykład `dossiq`. Puste dla tabeli utworzonej przez administratora.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Połącz konto społecznościowe lub analityczne raz. OpenRegister przechowuje token i go odnawia, dzięki czemu aplikacje nigdy go nie trzymają.", "Connect account": "Połącz konto", "Connected accounts": "Połączone konta", "Could not disconnect this account.": "Nie udało się odłączyć tego konta.", "Could not load your connected accounts.": "Nie udało się wczytać Twoich połączonych kont.", "Could not start the connection. Check the provider and try again.": "Nie udało się rozpocząć połączenia. Sprawdź dostawcę i spróbuj ponownie.", + "Decision Table": "Tabela decyzyjna", "Disconnect": "Odłącz", "Expired": "Wygasło", "Expires {date}": "Wygasa {date}", + "Hit policy": "Reguła dopasowania", + "How the matching rules become one answer.": "Jak pasujące reguły stają się jedną odpowiedzią.", + "Input columns, each with a `name` and an optional `type`.": "Kolumny wejściowe, każda z `name` i opcjonalnym `type`.", + "Inputs": "Wejścia", + "Name shown to the people who author and read the table.": "Nazwa widoczna dla osób, które tworzą i czytają tabelę.", "No accounts are connected yet.": "Nie połączono jeszcze żadnego konta.", "Not connected yet": "Jeszcze niepołączone", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Kolumny wyjściowe, każda z `name` i, dla PRIORITY, uporządkowaną listą `values`.", + "Outputs": "Wyjścia", "Reconnect": "Połącz ponownie", "Relink needed": "Wymagane ponowne połączenie", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Reguły, każda z `id`, `inputEntries` (jeden test unarny na wejście) i `outputEntries` (jedna wartość na wyjście).", "Server address": "Adres serwera", "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. Each card has its own Load button. 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ę. Każda karta ma własny przycisk \"Wczytaj\". Na instalacji produkcyjnej wybierz \"Brak\".", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Stałe odwołanie, którego krok przepływu lub aplikacja używa dla tej tabeli, na przykład `enforcement-intervention`. Unikalne w rejestrze.", + "What the table decides and where its rules come from.": "O czym decyduje tabela i skąd pochodzą jej reguły.", "from amount {amount}": "od kwoty {amount}", "Gated transition: {transition}": "Nadzorowane przejście: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Każdy zadeklarowany łańcuch otwiera uporządkowaną sekwencję zadań przy próbie przejścia. Zatwierdzający decydują w swojej skrzynce zadań, nie tutaj.", diff --git a/l10n/pt.js b/l10n/pt.js index c7a32e19f7..e64f92d48f 100644 --- a/l10n/pt.js +++ b/l10n/pt.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Aplicação que fornece ou possui esta tabela, por exemplo `dossiq`. Vazio para uma tabela criada por um administrador.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Ligue uma conta social ou de análise uma única vez. O OpenRegister guarda o token e renova-o, para que as aplicações nunca o detenham.", "Connect account": "Ligar conta", "Connected accounts": "Contas ligadas", "Could not disconnect this account.": "Não foi possível desligar esta conta.", "Could not load your connected accounts.": "Não foi possível carregar as suas contas ligadas.", "Could not start the connection. Check the provider and try again.": "Não foi possível iniciar a ligação. Verifique o fornecedor e tente novamente.", + "Decision Table": "Tabela de decisão", "Disconnect": "Desligar", "Expired": "Expirado", "Expires {date}": "Expira a {date}", + "Hit policy": "Política de correspondência", + "How the matching rules become one answer.": "Como as regras correspondentes se tornam uma única resposta.", + "Input columns, each with a `name` and an optional `type`.": "Colunas de entrada, cada uma com um `name` e um `type` opcional.", + "Inputs": "Entradas", + "Name shown to the people who author and read the table.": "Nome mostrado às pessoas que redigem e leem a tabela.", "No accounts are connected yet.": "Ainda não há contas ligadas.", "Not connected yet": "Ainda não ligado", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Colunas de saída, cada uma com um `name` e, para PRIORITY, uma lista ordenada `values`.", + "Outputs": "Saídas", "Reconnect": "Ligar de novo", "Relink needed": "É preciso voltar a ligar", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Regras, cada uma com um `id`, `inputEntries` (um teste unário por entrada) e `outputEntries` (um valor por saída).", "Server address": "Endereço do servidor", "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. Each card has its own Load button. 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. Cada cartão tem o seu próprio botão \"Carregar\". Escolha \"Nenhum\" numa instalação de produção.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Referência estável que um passo de fluxo ou uma aplicação usa para esta tabela, por exemplo `enforcement-intervention`. Única no registo.", + "What the table decides and where its rules come from.": "O que a tabela decide e de onde vêm as suas regras.", "from amount {amount}": "a partir do montante {amount}", "Gated transition: {transition}": "Transição vigiada: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Cada cadeia declarada abre uma sequência ordenada de tarefas quando a transição é tentada. Os aprovadores decidem na sua caixa de tarefas, não aqui.", diff --git a/l10n/rm.js b/l10n/rm.js index 8bb8d88fa0..f3970fc5ce 100644 --- a/l10n/rm.js +++ b/l10n/rm.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "L'app che furnescha u posseda questa tabella, per exempel `dossiq`. Vid per ina tabella creada d'in administratur.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Collia ina giada in conto social u d’analitica. OpenRegister tegna il token ed al renovescha, uschè che las applicaziuns nal tegnan mai.", "Connect account": "Colliar il conto", "Connected accounts": "Contos colliads", "Could not disconnect this account.": "Betg reussì da discolliar quest conto.", "Could not load your connected accounts.": "Betg reussì da chargiar tes contos colliads.", "Could not start the connection. Check the provider and try again.": "Betg reussì da cumenzar la colliaziun. Controllescha il purschider ed emprova anc ina giada.", + "Decision Table": "Tabella da decisiuns", "Disconnect": "Discolliar", "Expired": "Scrudà", "Expires {date}": "Scroda ils {date}", + "Hit policy": "Politica da correspundenza", + "How the matching rules become one answer.": "Co che las reglas correspundentas daventan ina sulet resposta.", + "Input columns, each with a `name` and an optional `type`.": "Colonnas d'endataziun, mintgina cun in `name` ed in `type` opziunal.", + "Inputs": "Endaziuns", + "Name shown to the people who author and read the table.": "Num che las persunas che scrivan e legian la tabella vesan.", "No accounts are connected yet.": "Anc nagin conto n’è collià.", "Not connected yet": "Anc betg collià", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Colonnas d'surtida, mintgina cun in `name` e, per PRIORITY, ina glista urdinada `values`.", + "Outputs": "Surtidas", "Reconnect": "Colliar da nov", "Relink needed": "Ina nova colliaziun è necessaria", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Reglas, mintgina cun in `id`, `inputEntries` (in test unar per endataziun) ed `outputEntries` (ina valur per surtida).", "Server address": "Adressa dal server", "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. Each card has its own Load button. 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. Mintga carta ha ses agen buttun \"Chargiar\". Tscherna \"Nagina\" sin ina installaziun da producziun.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Referenza stabila che in pass dal flux u ina app duvra per questa tabella, per exempel `enforcement-intervention`. Unica aint il register.", + "What the table decides and where its rules come from.": "Tge che la tabella decida e danunder che ses reglas derivan.", "from amount {amount}": "a partir da l'import {amount}", "Gated transition: {transition}": "Transiziun surveglianta: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Mintga chadaina deklarada avra ina sequenza ordinada da incumbensas cur che la transiziun vegn empruvada. Ils approvaders decidan en lur chascha d'incumbensas, betg qua.", diff --git a/l10n/ro.js b/l10n/ro.js index 4793c0c230..81262cf00a 100644 --- a/l10n/ro.js +++ b/l10n/ro.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Aplicația care furnizează sau deține acest tabel, de exemplu `dossiq`. Gol pentru un tabel creat de un administrator.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Conectează o dată un cont social sau de analiză. OpenRegister păstrează jetonul și îl reînnoiește, astfel încât aplicațiile să nu îl dețină niciodată.", "Connect account": "Conectează contul", "Connected accounts": "Conturi conectate", "Could not disconnect this account.": "Acest cont nu a putut fi deconectat.", "Could not load your connected accounts.": "Conturile tale conectate nu au putut fi încărcate.", "Could not start the connection. Check the provider and try again.": "Conexiunea nu a putut fi pornită. Verifică furnizorul și încearcă din nou.", + "Decision Table": "Tabel de decizie", "Disconnect": "Deconectează", "Expired": "Expirat", "Expires {date}": "Expiră la {date}", + "Hit policy": "Politică de potrivire", + "How the matching rules become one answer.": "Cum devin regulile potrivite un singur răspuns.", + "Input columns, each with a `name` and an optional `type`.": "Coloane de intrare, fiecare cu un `name` și un `type` opțional.", + "Inputs": "Intrări", + "Name shown to the people who author and read the table.": "Numele văzut de persoanele care redactează și citesc tabelul.", "No accounts are connected yet.": "Încă nu este conectat niciun cont.", "Not connected yet": "Încă neconectat", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Coloane de ieșire, fiecare cu un `name` și, pentru PRIORITY, o listă ordonată `values`.", + "Outputs": "Ieșiri", "Reconnect": "Reconectează", "Relink needed": "Este necesară o nouă legătură", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Reguli, fiecare cu un `id`, `inputEntries` (un test unar pe intrare) și `outputEntries` (o valoare pe ieșire).", "Server address": "Adresa serverului", "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. Each card has its own Load button. 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. Fiecare card are propriul buton \"Încarcă\". Alegeți \"Niciunul\" pe o instalare de producție.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Referință stabilă pe care un pas de flux sau o aplicație o folosește pentru acest tabel, de exemplu `enforcement-intervention`. Unică în registru.", + "What the table decides and where its rules come from.": "Ce decide tabelul și de unde provin regulile lui.", "from amount {amount}": "de la suma {amount}", "Gated transition: {transition}": "Tranziție supravegheată: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Fiecare lanț declarat deschide o secvență ordonată de sarcini când tranziția este încercată. Aprobatorii decid în inboxul lor de sarcini, nu aici.", diff --git a/l10n/ru.js b/l10n/ru.js index 403a8a23d2..3252d6440e 100644 --- a/l10n/ru.js +++ b/l10n/ru.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Приложение, которое поставляет эту таблицу или владеет ею, например `dossiq`. Пусто для таблицы, созданной администратором.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Подключите аккаунт соцсети или аналитики один раз. OpenRegister хранит токен и обновляет его, поэтому приложения никогда его не держат.", "Connect account": "Подключить аккаунт", "Connected accounts": "Подключённые аккаунты", "Could not disconnect this account.": "Не удалось отключить этот аккаунт.", "Could not load your connected accounts.": "Не удалось загрузить ваши подключённые аккаунты.", "Could not start the connection. Check the provider and try again.": "Не удалось начать подключение. Проверьте поставщика и попробуйте снова.", + "Decision Table": "Таблица решений", "Disconnect": "Отключить", "Expired": "Истёк", "Expires {date}": "Истекает {date}", + "Hit policy": "Политика совпадения", + "How the matching rules become one answer.": "Как подходящие правила превращаются в один ответ.", + "Input columns, each with a `name` and an optional `type`.": "Столбцы ввода, каждый с `name` и необязательным `type`.", + "Inputs": "Входы", + "Name shown to the people who author and read the table.": "Название, которое видят люди, составляющие и читающие таблицу.", "No accounts are connected yet.": "Пока не подключён ни один аккаунт.", "Not connected yet": "Ещё не подключён", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Столбцы вывода, каждый с `name` и, для PRIORITY, упорядоченным списком `values`.", + "Outputs": "Выходы", "Reconnect": "Подключить заново", "Relink needed": "Нужна повторная привязка", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Правила, каждое с `id`, `inputEntries` (одна унарная проверка на вход) и `outputEntries` (одно значение на выход).", "Server address": "Адрес сервера", "Load example data?": "Загрузить примеры данных?", "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Each card has its own Load button. Pick \"None\" on a production install.": "Примеры данных заполняют списки, страницы подробностей и панели, чтобы вы сразу увидели приложение в работе. У каждой карточки есть своя кнопка \"Загрузить\". На рабочей установке выберите \"Нет\".", @@ -23,6 +33,8 @@ OC.L10N.register( "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.": "Примеры значений для каждой схемы, которую поставляет это приложение, созданные из самих схем. Они показывают списки, страницы подробностей и панели в работе, а не рассказывают историю. Безопасно повторять и потом удалить.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Стабильная ссылка, которую шаг потока или приложение использует для этой таблицы, например `enforcement-intervention`. Уникальна в реестре.", + "What the table decides and where its rules come from.": "Что решает таблица и откуда берутся её правила.", "from amount {amount}": "от суммы {amount}", "Gated transition: {transition}": "Контролируемый переход: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Каждая объявленная цепочка открывает упорядоченную последовательность задач при попытке перехода. Согласующие решают в своём ящике задач, а не здесь.", diff --git a/l10n/sk.js b/l10n/sk.js index d7ad3e9daf..c182dd95e1 100644 --- a/l10n/sk.js +++ b/l10n/sk.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Aplikácia, ktorá túto tabuľku dodáva alebo vlastní, napríklad `dossiq`. Prázdne pri tabuľke, ktorú vytvoril správca.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Pripojte účet sociálnej siete alebo analytiky raz. OpenRegister uchová token a obnovuje ho, takže ho aplikácie nikdy nedržia.", "Connect account": "Pripojiť účet", "Connected accounts": "Pripojené účty", "Could not disconnect this account.": "Tento účet sa nepodarilo odpojiť.", "Could not load your connected accounts.": "Vaše pripojené účty sa nepodarilo načítať.", "Could not start the connection. Check the provider and try again.": "Pripojenie sa nepodarilo spustiť. Skontrolujte poskytovateľa a skúste to znova.", + "Decision Table": "Rozhodovacia tabuľka", "Disconnect": "Odpojiť", "Expired": "Vypršalo", "Expires {date}": "Vyprší {date}", + "Hit policy": "Pravidlo zhody", + "How the matching rules become one answer.": "Ako sa zhodné pravidlá stanú jednou odpoveďou.", + "Input columns, each with a `name` and an optional `type`.": "Vstupné stĺpce, každý s `name` a voliteľným `type`.", + "Inputs": "Vstupy", + "Name shown to the people who author and read the table.": "Názov, ktorý vidia ľudia, ktorí tabuľku zostavujú a čítajú.", "No accounts are connected yet.": "Zatiaľ nie sú pripojené žiadne účty.", "Not connected yet": "Zatiaľ nepripojené", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Výstupné stĺpce, každý s `name` a pri PRIORITY s usporiadaným zoznamom `values`.", + "Outputs": "Výstupy", "Reconnect": "Pripojiť znova", "Relink needed": "Je potrebné znova prepojiť", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Pravidlá, každé s `id`, `inputEntries` (jeden unárny test na vstup) a `outputEntries` (jedna hodnota na výstup).", "Server address": "Adresa servera", "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. Each card has its own Load button. 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. Každá karta má vlastné tlačidlo \"Načítať\". Na produkčnej inštalácii zvoľte \"Žiadne\".", @@ -23,6 +33,8 @@ OC.L10N.register( "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ť.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Stabilný odkaz, ktorý krok toku alebo aplikácia používa pre túto tabuľku, napríklad `enforcement-intervention`. Jedinečný v rámci registra.", + "What the table decides and where its rules come from.": "O čom tabuľka rozhoduje a odkiaľ pochádzajú jej pravidlá.", "from amount {amount}": "od sumy {amount}", "Gated transition: {transition}": "Strážený prechod: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Každý deklarovaný reťazec otvorí usporiadanú sekvenciu úloh pri pokuse o prechod. Schvaľovatelia rozhodujú vo svojej schránke úloh, nie tu.", diff --git a/l10n/sl.js b/l10n/sl.js index c8c7b779af..1ee4c56f95 100644 --- a/l10n/sl.js +++ b/l10n/sl.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Aplikacija, ki to tabelo dobavlja ali jo ima v lasti, na primer `dossiq`. Prazno za tabelo, ki jo je ustvaril skrbnik.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Poveži družbeni ali analitični račun enkrat. OpenRegister hrani žeton in ga obnavlja, tako da ga aplikacije nikoli ne hranijo.", "Connect account": "Poveži račun", "Connected accounts": "Povezani računi", "Could not disconnect this account.": "Tega računa ni bilo mogoče odklopiti.", "Could not load your connected accounts.": "Vaših povezanih računov ni bilo mogoče naložiti.", "Could not start the connection. Check the provider and try again.": "Povezave ni bilo mogoče začeti. Preveri ponudnika in poskusi znova.", + "Decision Table": "Odločitvena tabela", "Disconnect": "Odklopi", "Expired": "Poteklo", "Expires {date}": "Poteče {date}", + "Hit policy": "Pravilo ujemanja", + "How the matching rules become one answer.": "Kako ujemajoča se pravila postanejo en odgovor.", + "Input columns, each with a `name` and an optional `type`.": "Vhodni stolpci, vsak z `name` in neobveznim `type`.", + "Inputs": "Vhodi", + "Name shown to the people who author and read the table.": "Ime, ki ga vidijo osebe, ki tabelo pišejo in berejo.", "No accounts are connected yet.": "Noben račun še ni povezan.", "Not connected yet": "Še ni povezano", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Izhodni stolpci, vsak z `name` in pri PRIORITY z urejenim seznamom `values`.", + "Outputs": "Izhodi", "Reconnect": "Poveži znova", "Relink needed": "Potrebna je nova povezava", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Pravila, vsako z `id`, `inputEntries` (en unarni test na vhod) in `outputEntries` (ena vrednost na izhod).", "Server address": "Naslov strežnika", "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. Each card has its own Load button. Pick \"None\" on a production install.": "Vzorčni podatki napolnijo sezname, strani s podrobnostmi in nadzorne plošče, tako da aplikacijo takoj vidite delovati. Vsaka kartica ima svoj gumb \"Naloži\". Pri produkcijski namestitvi izberite \"Brez\".", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Stalna referenca, ki jo korak toka ali aplikacija uporablja za to tabelo, na primer `enforcement-intervention`. Enolična v registru.", + "What the table decides and where its rules come from.": "O čem tabela odloča in od kod izhajajo njena pravila.", "from amount {amount}": "od zneska {amount}", "Gated transition: {transition}": "Nadzorovan prehod: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Vsaka deklarirana veriga ob poskusu prehoda odpre urejeno zaporedje nalog. Odobritelji odločajo v svojem nabiralniku nalog, ne tukaj.", diff --git a/l10n/sq.js b/l10n/sq.js index 8f96f6d640..06e2976b34 100644 --- a/l10n/sq.js +++ b/l10n/sq.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Aplikacioni që e ofron ose e zotëron këtë tabelë, për shembull `dossiq`. Bosh për një tabelë të krijuar nga një administrator.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Lidh një llogari sociale ose analitike një herë. OpenRegister e ruan token-in dhe e rinovon, që aplikacionet të mos e mbajnë kurrë.", "Connect account": "Lidh llogarinë", "Connected accounts": "Llogari të lidhura", "Could not disconnect this account.": "Kjo llogari nuk u shkëput dot.", "Could not load your connected accounts.": "Llogaritë e tua të lidhura nuk u ngarkuan dot.", "Could not start the connection. Check the provider and try again.": "Lidhja nuk u nis dot. Kontrollo ofruesin dhe provo sërish.", + "Decision Table": "Tabelë vendimesh", "Disconnect": "Shkëput", "Expired": "Skaduar", "Expires {date}": "Skadon më {date}", + "Hit policy": "Politika e përputhjes", + "How the matching rules become one answer.": "Si rregullat që përputhen bëhen një përgjigje e vetme.", + "Input columns, each with a `name` and an optional `type`.": "Kolona hyrjeje, secila me një `name` dhe një `type` opsional.", + "Inputs": "Hyrjet", + "Name shown to the people who author and read the table.": "Emri që e shohin njerëzit që e hartojnë dhe e lexojnë tabelën.", "No accounts are connected yet.": "Ende nuk është lidhur asnjë llogari.", "Not connected yet": "Ende e palidhur", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Kolona daljeje, secila me një `name` dhe, për PRIORITY, një listë të renditur `values`.", + "Outputs": "Daljet", "Reconnect": "Rilidh", "Relink needed": "Nevojitet rilidhje", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Rregulla, secili me një `id`, `inputEntries` (një provë njëkëshe për çdo hyrje) dhe `outputEntries` (një vlerë për çdo dalje).", "Server address": "Adresa e serverit", "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. Each card has its own Load button. 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ë. Çdo kartë ka butonin e vet \"Ngarko\". Zgjidhni \"Asnjë\" në një instalim prodhimi.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Referencë e qëndrueshme që një hap rrjedhe ose një aplikacion e përdor për këtë tabelë, për shembull `enforcement-intervention`. Unike brenda regjistrit.", + "What the table decides and where its rules come from.": "Çfarë vendos tabela dhe nga vijnë rregullat e saj.", "from amount {amount}": "nga shuma {amount}", "Gated transition: {transition}": "Kalim i mbikëqyrur: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Çdo zinxhir i deklaruar hap një sekuencë të renditur detyrash kur kalimi provohet. Miratuesit vendosin në kutinë e tyre të detyrave, jo këtu.", diff --git a/l10n/sr.js b/l10n/sr.js index 8ba461eeab..63ce0cf32f 100644 --- a/l10n/sr.js +++ b/l10n/sr.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Апликација која испоручује или поседује ову табелу, на пример `dossiq`. Празно за табелу коју је направио администратор.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Повежи друштвени или аналитички налог једном. OpenRegister чува токен и обнавља га, па га апликације никада не држе.", "Connect account": "Повежи налог", "Connected accounts": "Повезани налози", "Could not disconnect this account.": "Овај налог није било могуће одспојити.", "Could not load your connected accounts.": "Није било могуће учитати твоје повезане налоге.", "Could not start the connection. Check the provider and try again.": "Није било могуће покренути повезивање. Провери пружаоца и покушај поново.", + "Decision Table": "Табела одлука", "Disconnect": "Одспоји", "Expired": "Истекло", "Expires {date}": "Истиче {date}", + "Hit policy": "Правило подударања", + "How the matching rules become one answer.": "Како подударна правила постају један одговор.", + "Input columns, each with a `name` and an optional `type`.": "Улазне колоне, свака са `name` и необавезним `type`.", + "Inputs": "Улази", + "Name shown to the people who author and read the table.": "Назив који виде људи који пишу и читају табелу.", "No accounts are connected yet.": "Још није повезан ниједан налог.", "Not connected yet": "Још није повезано", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Излазне колоне, свака са `name` и, за PRIORITY, уређеном листом `values`.", + "Outputs": "Излази", "Reconnect": "Повежи поново", "Relink needed": "Потребно је поновно повезивање", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Правила, свако са `id`, `inputEntries` (један унарни тест по улазу) и `outputEntries` (једна вредност по излазу).", "Server address": "Адреса сервера", "Load example data?": "Учитати примере података?", "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Each card has its own Load button. Pick \"None\" on a production install.": "Примери података попуњавају листе, странице са детаљима и командне табле, па апликацију одмах видите како ради. Свака картица има своје дугме \"Учитај\". Изаберите \"Ништа\" на продукцијској инсталацији.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.": "Примери вредности за сваку шему коју ова апликација доноси, генерисани из самих шема. Показују листе, странице са детаљима и командне табле у раду уместо да причају причу. Безбедно за понављање и брисање после.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Стабилна референца коју корак тока или апликација користи за ову табелу, на пример `enforcement-intervention`. Јединствена унутар регистра.", + "What the table decides and where its rules come from.": "Шта табела одлучује и одакле долазе њена правила.", "from amount {amount}": "od iznosa {amount}", "Gated transition: {transition}": "Nadzirani prelaz: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Svaki deklarisani lanac otvara uređeni niz zadataka kada se prelaz pokuša. Odobravaoci odlučuju u svom prijemnom sandučetu zadataka, ne ovde.", diff --git a/l10n/sv.js b/l10n/sv.js index 73b8f11303..bb438df30d 100644 --- a/l10n/sv.js +++ b/l10n/sv.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Appen som levererar eller äger den här tabellen, till exempel `dossiq`. Tom för en tabell som en administratör har skapat.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Anslut ett socialt konto eller analyskonto en gång. OpenRegister förvarar token och förnyar den, så att appar aldrig håller den själva.", "Connect account": "Anslut konto", "Connected accounts": "Anslutna konton", "Could not disconnect this account.": "Det gick inte att koppla från detta konto.", "Could not load your connected accounts.": "Det gick inte att läsa in dina anslutna konton.", "Could not start the connection. Check the provider and try again.": "Det gick inte att starta anslutningen. Kontrollera leverantören och försök igen.", + "Decision Table": "Beslutstabell", "Disconnect": "Koppla från", "Expired": "Utgången", "Expires {date}": "Går ut {date}", + "Hit policy": "Träffpolicy", + "How the matching rules become one answer.": "Hur de matchande reglerna blir ett svar.", + "Input columns, each with a `name` and an optional `type`.": "Indatakolumner, var och en med ett `name` och en valfri `type`.", + "Inputs": "Indata", + "Name shown to the people who author and read the table.": "Namn som de som skriver och läser tabellen ser.", "No accounts are connected yet.": "Inga konton är anslutna ännu.", "Not connected yet": "Inte ansluten ännu", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Utdatakolumner, var och en med ett `name` och, för PRIORITY, en ordnad `values`-lista.", + "Outputs": "Utdata", "Reconnect": "Anslut igen", "Relink needed": "Ny länkning behövs", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Regler, var och en med ett `id`, `inputEntries` (ett unärt test per indata) och `outputEntries` (ett värde per utdata).", "Server address": "Serveradress", "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. Each card has its own Load button. Pick \"None\" on a production install.": "Exempeldata fyller listor, detaljsidor och instrumentpaneler, så att du direkt ser appen fungera. Varje kort har en egen \"Läs in\"-knapp. Välj \"Inga\" vid en produktionsinstallation.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Stabil referens som ett flödessteg eller en app använder för den här tabellen, till exempel `enforcement-intervention`. Unik i registret.", + "What the table decides and where its rules come from.": "Vad tabellen avgör och var reglerna kommer ifrån.", "from amount {amount}": "från belopp {amount}", "Gated transition: {transition}": "Bevakad övergång: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Varje deklarerad kedja öppnar en ordnad uppgiftssekvens när övergången försöks. Godkännare beslutar i sin uppgiftsinkorg, inte här.", diff --git a/l10n/tr.js b/l10n/tr.js index 7d41d2bb07..e64ed2634c 100644 --- a/l10n/tr.js +++ b/l10n/tr.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Bu tabloyu sağlayan veya sahiplenen uygulama, örneğin `dossiq`. Bir yönetici tarafından oluşturulan tablolar için boştur.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Bir sosyal veya analitik hesabı bir kez bağlayın. OpenRegister belirteci saklar ve yeniler, böylece uygulamalar onu asla tutmaz.", "Connect account": "Hesap bağla", "Connected accounts": "Bağlı hesaplar", "Could not disconnect this account.": "Bu hesabın bağlantısı kesilemedi.", "Could not load your connected accounts.": "Bağlı hesaplarınız yüklenemedi.", "Could not start the connection. Check the provider and try again.": "Bağlantı başlatılamadı. Sağlayıcıyı denetleyip yeniden deneyin.", + "Decision Table": "Karar tablosu", "Disconnect": "Bağlantıyı kes", "Expired": "Süresi doldu", "Expires {date}": "{date} tarihinde doluyor", + "Hit policy": "Eşleşme ilkesi", + "How the matching rules become one answer.": "Eşleşen kuralların nasıl tek bir yanıta dönüştüğü.", + "Input columns, each with a `name` and an optional `type`.": "Giriş sütunları; her birinde bir `name` ve isteğe bağlı bir `type` bulunur.", + "Inputs": "Girişler", + "Name shown to the people who author and read the table.": "Tabloyu hazırlayan ve okuyan kişilerin gördüğü ad.", "No accounts are connected yet.": "Henüz bağlı hesap yok.", "Not connected yet": "Henüz bağlı değil", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Çıkış sütunları; her birinde bir `name` ve PRIORITY için sıralı bir `values` listesi bulunur.", + "Outputs": "Çıkışlar", "Reconnect": "Yeniden bağla", "Relink needed": "Yeniden bağlama gerekiyor", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Kurallar; her birinde bir `id`, `inputEntries` (giriş başına bir tekli sınama) ve `outputEntries` (çıkış başına bir değer) bulunur.", "Server address": "Sunucu adresi", "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. Each card has its own Load button. 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. Her kartın kendi \"Yükle\" düğmesi vardır. Üretim kurulumunda \"Hiçbiri\" seçin.", @@ -23,6 +33,8 @@ OC.L10N.register( "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.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Bir akış adımının veya uygulamanın bu tablo için kullandığı kalıcı başvuru, örneğin `enforcement-intervention`. Kayıt içinde benzersizdir.", + "What the table decides and where its rules come from.": "Tablonun neye karar verdiği ve kurallarının nereden geldiği.", "from amount {amount}": "{amount} tutarından itibaren", "Gated transition: {transition}": "Denetimli geçiş: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Bildirilen her zincir, geçiş denendiğinde sıralı bir görev dizisi açar. Onaylayanlar burada değil, görev gelen kutularında karar verir.", diff --git a/l10n/uk.js b/l10n/uk.js index 9d65f408c9..6bfcbf2e21 100644 --- a/l10n/uk.js +++ b/l10n/uk.js @@ -3,19 +3,29 @@ OC.L10N.register( { "3": "3", "30": "30", + "App that ships or owns this table, for example `dossiq`. Empty for a table an administrator authored.": "Застосунок, що постачає цю таблицю або володіє нею, наприклад `dossiq`. Порожньо для таблиці, створеної адміністратором.", "Connect a social or analytics account once. OpenRegister keeps the token and refreshes it, so apps never hold it.": "Підключіть обліковий запис соцмережі або аналітики один раз. OpenRegister зберігає токен і оновлює його, тож застосунки ніколи його не тримають.", "Connect account": "Підключити обліковий запис", "Connected accounts": "Підключені облікові записи", "Could not disconnect this account.": "Не вдалося відʼєднати цей обліковий запис.", "Could not load your connected accounts.": "Не вдалося завантажити ваші підключені облікові записи.", "Could not start the connection. Check the provider and try again.": "Не вдалося почати підключення. Перевірте постачальника та спробуйте ще раз.", + "Decision Table": "Таблиця рішень", "Disconnect": "Відʼєднати", "Expired": "Прострочено", "Expires {date}": "Спливає {date}", + "Hit policy": "Політика збігу", + "How the matching rules become one answer.": "Як відповідні правила перетворюються на одну відповідь.", + "Input columns, each with a `name` and an optional `type`.": "Стовпці введення, кожен з `name` і необов'язковим `type`.", + "Inputs": "Входи", + "Name shown to the people who author and read the table.": "Назва, яку бачать люди, що складають і читають таблицю.", "No accounts are connected yet.": "Ще не підключено жодного облікового запису.", "Not connected yet": "Ще не підключено", + "Output columns, each with a `name` and, for PRIORITY, an ordered `values` list.": "Стовпці виведення, кожен з `name` і, для PRIORITY, впорядкованим списком `values`.", + "Outputs": "Виходи", "Reconnect": "Підключити знову", "Relink needed": "Потрібне повторне звʼязування", + "Rules, each with an `id`, `inputEntries` (one unary test per input) and `outputEntries` (one value per output).": "Правила, кожне з `id`, `inputEntries` (одна унарна перевірка на вхід) і `outputEntries` (одне значення на вихід).", "Server address": "Адреса сервера", "Load example data?": "Завантажити приклади даних?", "Example data fills the lists, detail pages and dashboards so you can see the app working straight away. Each card has its own Load button. Pick \"None\" on a production install.": "Приклади даних заповнюють списки, сторінки деталей і панелі, тож ви одразу побачите застосунок у роботі. Кожна картка має власну кнопку \"Завантажити\". На робочій інсталяції оберіть \"Немає\".", @@ -23,6 +33,8 @@ OC.L10N.register( "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.": "Приклади значень для кожної схеми, яку постачає цей застосунок, згенеровані з самих схем. Вони показують списки, сторінки деталей і панелі в роботі, а не розповідають історію. Безпечно повторювати і потім видалити.", + "Stable reference a flow step or an app uses for this table, for example `enforcement-intervention`. Unique within the register.": "Стабільне посилання, яке крок потоку або застосунок використовує для цієї таблиці, наприклад `enforcement-intervention`. Унікальне в реєстрі.", + "What the table decides and where its rules come from.": "Що вирішує таблиця і звідки беруться її правила.", "from amount {amount}": "від суми {amount}", "Gated transition: {transition}": "Контрольований перехід: {transition}", "Each declared chain provisions an ordered task sequence when its transition is attempted. Approvers decide in their task inbox, not here.": "Кожен оголошений ланцюжок відкриває впорядковану послідовність завдань під час спроби переходу. Погоджувачі вирішують у своїй скриньці завдань, а не тут.", From ce3a58e1546b5d36e90a9567e5ebb6807ed1cddb Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Sun, 11 Oct 2026 08:44:45 +0200 Subject: [PATCH 4/5] fix(ci): mark the decision table schema as holding no demo data (gate 101) --- lib/Settings/decision_table_register.json | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/Settings/decision_table_register.json b/lib/Settings/decision_table_register.json index dcfd94f832..4b70d14316 100644 --- a/lib/Settings/decision_table_register.json +++ b/lib/Settings/decision_table_register.json @@ -29,6 +29,7 @@ "schemas": { "decision-table": { "slug": "decision-table", + "x-openregister-demo-data": "Decision tables are the rules an administrator or an app ships, not sample content: a generated table would be evaluated by real flows.", "title": "Decision Table", "version": "1.0.0", "published": "2026-01-01T00:00:00+00:00", From 6a89b48bd1df077efe23bf448f8c954131e7cd80 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Sun, 11 Oct 2026 10:24:59 +0200 Subject: [PATCH 5/5] fix(dmn): validate only rows in the decision-tables register; test the register import The listener matched a row by schema slug alone, so another app's own decision-table schema (buildiq's, until it moves onto this register) would have had its rows refused. It now also requires the decision-tables register. ImportDecisionTableRegister gains its unit tests (CI's coverage guard read the added statements as untested). --- .../DecisionTableValidationListener.php | 34 +++- .../DecisionTableValidationListenerTest.php | 54 +++++- .../ImportDecisionTableRegisterTest.php | 168 ++++++++++++++++++ 3 files changed, 253 insertions(+), 3 deletions(-) create mode 100644 tests/Unit/Repair/ImportDecisionTableRegisterTest.php diff --git a/lib/Listener/DecisionTableValidationListener.php b/lib/Listener/DecisionTableValidationListener.php index 536c4c9949..84f78844c6 100644 --- a/lib/Listener/DecisionTableValidationListener.php +++ b/lib/Listener/DecisionTableValidationListener.php @@ -26,6 +26,7 @@ namespace OCA\OpenRegister\Listener; use OCA\OpenRegister\Db\ObjectEntity; +use OCA\OpenRegister\Db\RegisterMapper; use OCA\OpenRegister\Db\SchemaMapper; use OCA\OpenRegister\Event\ObjectCreatingEvent; use OCA\OpenRegister\Event\ObjectUpdatingEvent; @@ -62,11 +63,13 @@ class DecisionTableValidationListener implements IEventListener { * @param SchemaMapper $schemas Tells a decision-table row from any other. * @param DecisionTableValidator $validator The validator the inline step uses. * @param ObjectService $objects Finds a table already carrying the key. + * @param RegisterMapper $registers Tells the decision-tables register from another app's. */ public function __construct( private readonly SchemaMapper $schemas, private readonly DecisionTableValidator $validator, private readonly ObjectService $objects, + private readonly RegisterMapper $registers, ) { }//end __construct() @@ -146,9 +149,38 @@ private function isDecisionTable(ObjectEntity $object): bool { return false; } - return $schema->getSlug() === DecisionTableStore::SCHEMA; + if ($schema->getSlug() !== DecisionTableStore::SCHEMA) { + return false; + } + + // The slug alone is not the table: another app may still hold a schema + // of the same slug in its own register (buildiq did until decision + // 196), and its rows are not OpenRegister's tables to validate. + return $this->inDecisionTableRegister(object: $object); }//end isDecisionTable() + /** + * Whether the object lives in the decision-tables register. + * + * @param ObjectEntity $object The object being saved. + * + * @return bool True when its register is `decision-tables`. + */ + private function inDecisionTableRegister(ObjectEntity $object): bool { + $reference = $object->getRegister(); + if ($reference === null || $reference === '') { + return false; + } + + try { + $register = $this->registers->find($reference, _rbac: false, _multitenancy: false); + } catch (Throwable $unresolved) { + return false; + } + + return $register->getSlug() === DecisionTableStore::REGISTER; + }//end inDecisionTableRegister() + /** * The uuid of another table already carrying the key, if any. * diff --git a/tests/Unit/Listener/DecisionTableValidationListenerTest.php b/tests/Unit/Listener/DecisionTableValidationListenerTest.php index c7753ade59..3b73f7585d 100644 --- a/tests/Unit/Listener/DecisionTableValidationListenerTest.php +++ b/tests/Unit/Listener/DecisionTableValidationListenerTest.php @@ -5,6 +5,8 @@ namespace OCA\OpenRegister\Tests\Unit\Listener; use OCA\OpenRegister\Db\ObjectEntity; +use OCA\OpenRegister\Db\Register; +use OCA\OpenRegister\Db\RegisterMapper; use OCA\OpenRegister\Db\Schema; use OCA\OpenRegister\Db\SchemaMapper; use OCA\OpenRegister\Event\ObjectCreatingEvent; @@ -13,6 +15,7 @@ use OCA\OpenRegister\Service\Dmn\DecisionTableValidator; use OCA\OpenRegister\Service\ObjectService; use OCA\OpenRegister\Tests\Unit\Service\Dmn\DecisionTableStoreTest; +use OCP\AppFramework\Db\DoesNotExistException; use PHPUnit\Framework\TestCase; /** @@ -22,7 +25,7 @@ */ class DecisionTableValidationListenerTest extends TestCase { - private function listener(string $slug, array $sameKey = []): DecisionTableValidationListener { + private function listener(string $slug, array $sameKey = [], ?string $registerSlug = 'decision-tables'): DecisionTableValidationListener { $schema = new Schema(); $schema->setSlug($slug); $schemas = $this->createMock(SchemaMapper::class); @@ -31,13 +34,23 @@ private function listener(string $slug, array $sameKey = []): DecisionTableValid $objects = $this->createMock(ObjectService::class); $objects->method('searchObjectsBySlug')->willReturn($sameKey); - return new DecisionTableValidationListener($schemas, new DecisionTableValidator(), $objects); + $registers = $this->createMock(RegisterMapper::class); + if ($registerSlug === null) { + $registers->method('find')->willThrowException(new DoesNotExistException('no register')); + } else { + $register = new Register(); + $register->setSlug($registerSlug); + $registers->method('find')->willReturn($register); + } + + return new DecisionTableValidationListener($schemas, new DecisionTableValidator(), $objects, $registers); } private function row(array $data, string $uuid = 'u-1'): ObjectEntity { $object = new ObjectEntity(); $object->setUuid($uuid); $object->setSchema('7'); + $object->setRegister('3'); $object->setObject($data); return $object; } @@ -77,4 +90,41 @@ public function testOtherSchemasAreLeftAlone(): void { $this->listener('invoice')->handle($event); $this->assertFalse($event->isPropagationStopped()); } + + /** + * A schema of the same slug in another app's register is not OpenRegister's + * table: its rows are left alone (buildiq's own `decision-table` until it moved). + * + * @return void + */ + public function testTheSameSlugInAnotherRegisterIsLeftAlone(): void { + $event = new ObjectCreatingEvent($this->row(['ruleSetId' => 'loan', 'hitPolicy' => 'first'])); + $this->listener('decision-table', [], 'buildiq')->handle($event); + $this->assertFalse($event->isPropagationStopped()); + } + + /** + * A row whose register cannot be resolved is left alone. + * + * @return void + */ + public function testAnUnresolvableRegisterIsLeftAlone(): void { + $event = new ObjectCreatingEvent($this->row(['anything' => true])); + $this->listener('decision-table', [], null)->handle($event); + $this->assertFalse($event->isPropagationStopped()); + } + + /** + * A row without a schema is left alone. + * + * @return void + */ + public function testARowWithoutASchemaIsLeftAlone(): void { + $object = new ObjectEntity(); + $object->setUuid('u-9'); + $object->setObject(['anything' => true]); + $event = new ObjectCreatingEvent($object); + $this->listener('decision-table')->handle($event); + $this->assertFalse($event->isPropagationStopped()); + } } diff --git a/tests/Unit/Repair/ImportDecisionTableRegisterTest.php b/tests/Unit/Repair/ImportDecisionTableRegisterTest.php new file mode 100644 index 0000000000..b469164c5b --- /dev/null +++ b/tests/Unit/Repair/ImportDecisionTableRegisterTest.php @@ -0,0 +1,168 @@ + + * @copyright 2026 Conduction B.V. + * @license EUPL-1.2 https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * @version GIT: + * + * @link https://conduction.nl + * + * @spec openspec/changes/stored-decision-tables/specs/flow-decision-tables/spec.md + */ + +declare(strict_types=1); + +namespace OCA\OpenRegister\Tests\Unit\Repair; + +use OCA\OpenRegister\Repair\ImportDecisionTableRegister; +use OCA\OpenRegister\Service\ConfigurationService; +use OCP\App\IAppManager; +use OCP\Migration\IOutput; +use PHPUnit\Framework\MockObject\MockObject; +use PHPUnit\Framework\TestCase; +use Psr\Log\LoggerInterface; +use RuntimeException; + +/** + * Tests for the decision-table register import. + */ +class ImportDecisionTableRegisterTest extends TestCase { + + /** + * @var ConfigurationService&MockObject + */ + private ConfigurationService&MockObject $configurationService; + + /** + * @var IAppManager&MockObject + */ + private IAppManager&MockObject $appManager; + + /** + * @var IOutput&MockObject + */ + private IOutput&MockObject $output; + + /** + * Build the step with mocked collaborators. + * + * @return void + */ + protected function setUp(): void { + $this->configurationService = $this->createMock(ConfigurationService::class); + $this->appManager = $this->createMock(IAppManager::class); + $this->output = $this->createMock(IOutput::class); + + }//end setUp() + + /** + * The step, with the app living at a path. + * + * @param string $appPath Where the app is installed. + * + * @return ImportDecisionTableRegister + */ + private function step(string $appPath): ImportDecisionTableRegister { + $this->appManager->method('getAppPath')->with('openregister')->willReturn($appPath); + + return new ImportDecisionTableRegister( + configurationService: $this->configurationService, + appManager: $this->appManager, + logger: $this->createMock(LoggerInterface::class) + ); + + }//end step() + + /** + * The shipped descriptor is imported as the decision-tables register with + * its `decision-table` schema, under the step's own configuration id. + * + * @return void + */ + public function testTheShippedDescriptorIsImported(): void { + $this->configurationService->expects($this->once()) + ->method('importFromApp') + ->with( + $this->equalTo('openregister.decision-tables'), + $this->callback( + static function (array $data): bool { + return isset($data['components']['registers']['decision-tables']) === true + && ($data['components']['schemas']['decision-table']['slug'] ?? null) === 'decision-table'; + } + ), + $this->equalTo('1.0.0'), + $this->equalTo(false) + ); + $this->output->expects($this->once())->method('info'); + + $step = $this->step(appPath: (string)realpath(__DIR__ . '/../../..')); + $step->run($this->output); + + $this->assertStringContainsString('decision-table', $step->getName()); + + }//end testTheShippedDescriptorIsImported() + + /** + * A missing descriptor is a warning, not an import. + * + * @return void + */ + public function testAMissingDescriptorWarnsAndImportsNothing(): void { + $this->configurationService->expects($this->never())->method('importFromApp'); + $this->output->expects($this->once())->method('warning') + ->with($this->stringContains('not found')); + + $this->step(appPath: sys_get_temp_dir() . '/no-such-openregister-' . getmypid())->run($this->output); + + }//end testAMissingDescriptorWarnsAndImportsNothing() + + /** + * A descriptor that is not JSON is a warning, not an import. + * + * @return void + */ + public function testADescriptorThatIsNotJsonWarns(): void { + $root = sys_get_temp_dir() . '/or-dt-' . getmypid() . '-' . bin2hex(random_bytes(4)); + mkdir($root . '/lib/Settings', 0777, true); + file_put_contents($root . '/lib/Settings/decision_table_register.json', '{not json'); + + $this->configurationService->expects($this->never())->method('importFromApp'); + $this->output->expects($this->once())->method('warning') + ->with($this->stringContains('not valid JSON')); + + try { + $this->step(appPath: $root)->run($this->output); + } finally { + unlink($root . '/lib/Settings/decision_table_register.json'); + rmdir($root . '/lib/Settings'); + rmdir($root . '/lib'); + rmdir($root); + } + + }//end testADescriptorThatIsNotJsonWarns() + + /** + * A failing import is caught and reported, never thrown. + * + * @return void + */ + public function testAFailingImportIsReportedNotThrown(): void { + $this->configurationService->method('importFromApp')->willThrowException(new RuntimeException('database gone')); + $this->output->expects($this->once())->method('warning') + ->with($this->stringContains('database gone')); + + $this->step(appPath: (string)realpath(__DIR__ . '/../../..'))->run($this->output); + + }//end testAFailingImportIsReportedNotThrown() +}//end class