Compare commits

..

52 Commits

Author SHA1 Message Date
Codegen Bot 0720a65de3 Update yarn.lock for React 18 dependencies 2025-05-20 03:33:22 +00:00
Codegen Bot 95d1f52c2e Update React and React DOM to version 18 and update related dependencies 2025-05-20 03:30:40 +00:00
Codegen Bot a52d9232a9 Update React types to match React 18 version and update testing library 2025-05-20 03:25:53 +00:00
Codegen Bot fe1672356a Update React types to match React 18 version and update testing library 2025-05-20 03:22:18 +00:00
codegen-sh[bot] 2a8d845cbc Update tsconfig.json for React 18 JSX transform 2025-05-20 03:09:58 +00:00
codegen-sh[bot] b593930338 Update ReactDOM.render to createRoot for React 18 2025-05-20 03:09:35 +00:00
codegen-sh[bot] 050200af36 Update React to version 18 2025-05-20 03:04:02 +00:00
codegen-sh[bot] 5274b99277 fix: Update handleDisclosureClick to handle undefined events (#9254)
* fix: Pass synthetic event to onDisclosureClick to prevent TypeError

* fix: Update handleDisclosureClick to handle undefined events

---------

Co-authored-by: codegen-sh[bot] <131295404+codegen-sh[bot]@users.noreply.github.com>
2025-05-19 22:34:01 -04:00
dependabot[bot] 7cabefaf34 chore(deps): bump the aws group with 5 updates (#9250)
Bumps the aws group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@aws-sdk/client-s3](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3) | `3.806.0` | `3.812.0` |
| [@aws-sdk/lib-storage](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/lib/lib-storage) | `3.806.0` | `3.812.0` |
| [@aws-sdk/s3-presigned-post](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/packages/s3-presigned-post) | `3.806.0` | `3.812.0` |
| [@aws-sdk/s3-request-presigner](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/packages/s3-request-presigner) | `3.806.0` | `3.812.0` |
| [@aws-sdk/signature-v4-crt](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/packages/signature-v4-crt) | `3.806.0` | `3.812.0` |


Updates `@aws-sdk/client-s3` from 3.806.0 to 3.812.0
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.812.0/clients/client-s3)

Updates `@aws-sdk/lib-storage` from 3.806.0 to 3.812.0
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/lib/lib-storage/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.812.0/lib/lib-storage)

Updates `@aws-sdk/s3-presigned-post` from 3.806.0 to 3.812.0
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/packages/s3-presigned-post/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.812.0/packages/s3-presigned-post)

Updates `@aws-sdk/s3-request-presigner` from 3.806.0 to 3.812.0
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/packages/s3-request-presigner/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.812.0/packages/s3-request-presigner)

Updates `@aws-sdk/signature-v4-crt` from 3.806.0 to 3.812.0
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/packages/signature-v4-crt/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.812.0/packages/signature-v4-crt)

---
updated-dependencies:
- dependency-name: "@aws-sdk/client-s3"
  dependency-version: 3.812.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: aws
- dependency-name: "@aws-sdk/lib-storage"
  dependency-version: 3.812.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: aws
- dependency-name: "@aws-sdk/s3-presigned-post"
  dependency-version: 3.812.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: aws
- dependency-name: "@aws-sdk/s3-request-presigner"
  dependency-version: 3.812.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: aws
- dependency-name: "@aws-sdk/signature-v4-crt"
  dependency-version: 3.812.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: aws
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-19 19:31:32 -04:00
dependabot[bot] 81729ae72b chore(deps-dev): bump eslint-import-resolver-typescript (#9252)
Bumps [eslint-import-resolver-typescript](https://github.com/import-js/eslint-import-resolver-typescript) from 3.8.0 to 3.10.1.
- [Release notes](https://github.com/import-js/eslint-import-resolver-typescript/releases)
- [Changelog](https://github.com/import-js/eslint-import-resolver-typescript/blob/v3.10.1/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-import-resolver-typescript/compare/v3.8.0...v3.10.1)

---
updated-dependencies:
- dependency-name: eslint-import-resolver-typescript
  dependency-version: 3.10.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-19 17:56:34 -04:00
dependabot[bot] cd2d9fc218 chore(deps): bump @tanstack/react-table from 8.20.6 to 8.21.3 (#9249)
Bumps [@tanstack/react-table](https://github.com/TanStack/table/tree/HEAD/packages/react-table) from 8.20.6 to 8.21.3.
- [Release notes](https://github.com/TanStack/table/releases)
- [Commits](https://github.com/TanStack/table/commits/v8.21.3/packages/react-table)

---
updated-dependencies:
- dependency-name: "@tanstack/react-table"
  dependency-version: 8.21.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-19 17:56:18 -04:00
dependabot[bot] 4d7340d70b chore(deps): bump @radix-ui/react-visually-hidden from 1.2.0 to 1.2.2 (#9248)
Bumps [@radix-ui/react-visually-hidden](https://github.com/radix-ui/primitives) from 1.2.0 to 1.2.2.
- [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md)
- [Commits](https://github.com/radix-ui/primitives/commits)

---
updated-dependencies:
- dependency-name: "@radix-ui/react-visually-hidden"
  dependency-version: 1.2.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-19 17:56:11 -04:00
Tom Moor e596b57cc2 chore: Add additional details to validation errors (#9243)
This will help us get to the bottom of Notion importer failures
2025-05-18 20:27:47 -04:00
Translate-O-Tron 58b6901b7b New Crowdin updates (#9046)
* fix: New Korean translations from Crowdin [ci skip]

* fix: New German translations from Crowdin [ci skip]

* fix: New Dutch translations from Crowdin [ci skip]

* fix: New French translations from Crowdin [ci skip]

* fix: New Spanish translations from Crowdin [ci skip]

* fix: New Czech translations from Crowdin [ci skip]

* fix: New Danish translations from Crowdin [ci skip]

* fix: New Hebrew translations from Crowdin [ci skip]

* fix: New Hungarian translations from Crowdin [ci skip]

* fix: New Italian translations from Crowdin [ci skip]

* fix: New Japanese translations from Crowdin [ci skip]

* fix: New Polish translations from Crowdin [ci skip]

* fix: New Portuguese translations from Crowdin [ci skip]

* fix: New Swedish translations from Crowdin [ci skip]

* fix: New Turkish translations from Crowdin [ci skip]

* fix: New Ukrainian translations from Crowdin [ci skip]

* fix: New Chinese Simplified translations from Crowdin [ci skip]

* fix: New Chinese Traditional translations from Crowdin [ci skip]

* fix: New Vietnamese translations from Crowdin [ci skip]

* fix: New Portuguese, Brazilian translations from Crowdin [ci skip]

* fix: New Indonesian translations from Crowdin [ci skip]

* fix: New Persian translations from Crowdin [ci skip]

* fix: New Thai translations from Crowdin [ci skip]

* fix: New Norwegian Bokmal translations from Crowdin [ci skip]

* fix: New Romanian translations from Crowdin [ci skip]

* fix: New Japanese translations from Crowdin [ci skip]

* fix: New Japanese translations from Crowdin [ci skip]

* fix: New Portuguese translations from Crowdin [ci skip]

* fix: New Portuguese translations from Crowdin [ci skip]

* fix: New Portuguese, Brazilian translations from Crowdin [ci skip]

* fix: New Korean translations from Crowdin [ci skip]

* fix: New German translations from Crowdin [ci skip]

* fix: New Dutch translations from Crowdin [ci skip]

* fix: New French translations from Crowdin [ci skip]

* fix: New Spanish translations from Crowdin [ci skip]

* fix: New Czech translations from Crowdin [ci skip]

* fix: New Danish translations from Crowdin [ci skip]

* fix: New Hebrew translations from Crowdin [ci skip]

* fix: New Hungarian translations from Crowdin [ci skip]

* fix: New Italian translations from Crowdin [ci skip]

* fix: New Japanese translations from Crowdin [ci skip]

* fix: New Polish translations from Crowdin [ci skip]

* fix: New Portuguese translations from Crowdin [ci skip]

* fix: New Swedish translations from Crowdin [ci skip]

* fix: New Turkish translations from Crowdin [ci skip]

* fix: New Ukrainian translations from Crowdin [ci skip]

* fix: New Chinese Simplified translations from Crowdin [ci skip]

* fix: New Chinese Traditional translations from Crowdin [ci skip]

* fix: New Vietnamese translations from Crowdin [ci skip]

* fix: New Portuguese, Brazilian translations from Crowdin [ci skip]

* fix: New Indonesian translations from Crowdin [ci skip]

* fix: New Persian translations from Crowdin [ci skip]

* fix: New Thai translations from Crowdin [ci skip]

* fix: New Norwegian Bokmal translations from Crowdin [ci skip]

* fix: New Romanian translations from Crowdin [ci skip]

* fix: New Korean translations from Crowdin [ci skip]

* fix: New Korean translations from Crowdin [ci skip]

* fix: New French translations from Crowdin [ci skip]

* fix: New French translations from Crowdin [ci skip]

* fix: New Portuguese, Brazilian translations from Crowdin [ci skip]

* fix: New Portuguese, Brazilian translations from Crowdin [ci skip]

* fix: New Portuguese, Brazilian translations from Crowdin [ci skip]

* fix: New Korean translations from Crowdin [ci skip]

* fix: New German translations from Crowdin [ci skip]

* fix: New Dutch translations from Crowdin [ci skip]

* fix: New French translations from Crowdin [ci skip]

* fix: New Spanish translations from Crowdin [ci skip]

* fix: New Czech translations from Crowdin [ci skip]

* fix: New Danish translations from Crowdin [ci skip]

* fix: New Hebrew translations from Crowdin [ci skip]

* fix: New Hungarian translations from Crowdin [ci skip]

* fix: New Italian translations from Crowdin [ci skip]

* fix: New Japanese translations from Crowdin [ci skip]

* fix: New Polish translations from Crowdin [ci skip]

* fix: New Portuguese translations from Crowdin [ci skip]

* fix: New Swedish translations from Crowdin [ci skip]

* fix: New Turkish translations from Crowdin [ci skip]

* fix: New Ukrainian translations from Crowdin [ci skip]

* fix: New Chinese Simplified translations from Crowdin [ci skip]

* fix: New Chinese Traditional translations from Crowdin [ci skip]

* fix: New Vietnamese translations from Crowdin [ci skip]

* fix: New Portuguese, Brazilian translations from Crowdin [ci skip]

* fix: New Indonesian translations from Crowdin [ci skip]

* fix: New Persian translations from Crowdin [ci skip]

* fix: New Thai translations from Crowdin [ci skip]

* fix: New Norwegian Bokmal translations from Crowdin [ci skip]

* fix: New Romanian translations from Crowdin [ci skip]

* fix: New Polish translations from Crowdin [ci skip]

* fix: New Polish translations from Crowdin [ci skip]

* fix: New Korean translations from Crowdin [ci skip]

* fix: New Italian translations from Crowdin [ci skip]

* fix: New Polish translations from Crowdin [ci skip]

* fix: New Chinese Simplified translations from Crowdin [ci skip]

* fix: New Chinese Simplified translations from Crowdin [ci skip]

* fix: New Korean translations from Crowdin [ci skip]

* fix: New German translations from Crowdin [ci skip]

* fix: New Dutch translations from Crowdin [ci skip]

* fix: New French translations from Crowdin [ci skip]

* fix: New Spanish translations from Crowdin [ci skip]

* fix: New Czech translations from Crowdin [ci skip]

* fix: New Danish translations from Crowdin [ci skip]

* fix: New Hebrew translations from Crowdin [ci skip]

* fix: New Hungarian translations from Crowdin [ci skip]

* fix: New Italian translations from Crowdin [ci skip]

* fix: New Japanese translations from Crowdin [ci skip]

* fix: New Polish translations from Crowdin [ci skip]

* fix: New Portuguese translations from Crowdin [ci skip]

* fix: New Swedish translations from Crowdin [ci skip]

* fix: New Turkish translations from Crowdin [ci skip]

* fix: New Ukrainian translations from Crowdin [ci skip]

* fix: New Chinese Simplified translations from Crowdin [ci skip]

* fix: New Chinese Traditional translations from Crowdin [ci skip]

* fix: New Vietnamese translations from Crowdin [ci skip]

* fix: New Portuguese, Brazilian translations from Crowdin [ci skip]

* fix: New Indonesian translations from Crowdin [ci skip]

* fix: New Persian translations from Crowdin [ci skip]

* fix: New Thai translations from Crowdin [ci skip]

* fix: New Norwegian Bokmal translations from Crowdin [ci skip]

* fix: New Romanian translations from Crowdin [ci skip]

* fix: New Spanish translations from Crowdin [ci skip]

* fix: New Polish translations from Crowdin [ci skip]

* fix: New French translations from Crowdin [ci skip]

* fix: New Norwegian Bokmal translations from Crowdin [ci skip]

* fix: New Hungarian translations from Crowdin [ci skip]

* fix: New Hungarian translations from Crowdin [ci skip]

* fix: New Hungarian translations from Crowdin [ci skip]

* fix: New Hungarian translations from Crowdin [ci skip]

* fix: New Korean translations from Crowdin [ci skip]

* fix: New German translations from Crowdin [ci skip]

* fix: New Dutch translations from Crowdin [ci skip]

* fix: New French translations from Crowdin [ci skip]

* fix: New Spanish translations from Crowdin [ci skip]

* fix: New Czech translations from Crowdin [ci skip]

* fix: New Danish translations from Crowdin [ci skip]

* fix: New Hebrew translations from Crowdin [ci skip]

* fix: New Hungarian translations from Crowdin [ci skip]

* fix: New Italian translations from Crowdin [ci skip]

* fix: New Japanese translations from Crowdin [ci skip]

* fix: New Polish translations from Crowdin [ci skip]

* fix: New Portuguese translations from Crowdin [ci skip]

* fix: New Swedish translations from Crowdin [ci skip]

* fix: New Turkish translations from Crowdin [ci skip]

* fix: New Ukrainian translations from Crowdin [ci skip]

* fix: New Chinese Simplified translations from Crowdin [ci skip]

* fix: New Chinese Traditional translations from Crowdin [ci skip]

* fix: New Vietnamese translations from Crowdin [ci skip]

* fix: New Portuguese, Brazilian translations from Crowdin [ci skip]

* fix: New Indonesian translations from Crowdin [ci skip]

* fix: New Persian translations from Crowdin [ci skip]

* fix: New Thai translations from Crowdin [ci skip]

* fix: New Norwegian Bokmal translations from Crowdin [ci skip]

* fix: New Romanian translations from Crowdin [ci skip]

* fix: New Hungarian translations from Crowdin [ci skip]

* fix: New Hungarian translations from Crowdin [ci skip]

* touch

---------

Co-authored-by: Tom Moor <tom@getoutline.com>
2025-05-18 23:27:23 +00:00
Tom Moor b8fd239f2e Add additional logging to getFileStream failures (#9242) 2025-05-18 19:24:50 -04:00
Tom Moor 201fbb56eb perf: Add cache for document structure (#9196)
* Normalize Collection.findByPk

* Add caching of documentStructure

* fix: Do not set cache before transaction is flushed

* Mock Redis
2025-05-18 18:45:00 -04:00
Tom Moor 823b0442a2 fix: Image caption uncentered (#9239) 2025-05-18 18:51:50 +00:00
Tom Moor 4ff663e112 Adds menu option to apply template to existing document (#9236)
* Adds menu option to apply template to existing document

* Memoize, docs

* docs
2025-05-18 09:40:37 -04:00
codegen-sh[bot] e5ded0a6a5 Fix misalignment between email and comment mentions (#9234)
* Fix misalignment between email and comment mentions

* Add test

* Update ProsemirrorHelper.tsx

* Optimize user mention processing with batch loading

* Add test for multiple mentions

---------

Co-authored-by: codegen-sh[bot] <131295404+codegen-sh[bot]@users.noreply.github.com>
Co-authored-by: Tom Moor <tom@getoutline.com>
2025-05-17 12:45:45 -04:00
Balázs Úr 784d075233 feat: Add Hungarian translations (#9230) 2025-05-17 12:22:03 -04:00
codegen-sh[bot] 1c9b300e25 feat: add lint:changed script to lint only unstaged files (#9235)
Co-authored-by: codegen-sh[bot] <131295404+codegen-sh[bot]@users.noreply.github.com>
2025-05-17 12:21:15 -04:00
codegen-sh[bot] 870bf1157b fix: Increase defaultSignedUrlExpires from 60s to 5 minutes (#9233)
Closes #8921

Co-authored-by: codegen-sh[bot] <131295404+codegen-sh[bot]@users.noreply.github.com>
2025-05-17 13:07:01 +00:00
codegen-sh[bot] d2aba1de96 feat: Add POST method option to redirectOnClient (#9228)
* feat: Add POST method option to redirectOnClient helper

* Applied automatic fixes

* fix: Add missing closing HTML tag in redirectOnClient GET method

* fix: Use lodash escape for form field values to prevent XSS

* Applied automatic fixes

* fix: Add missing lodash/escape import

* Applied automatic fixes

* fix: Escape all URLs in redirectOnClient function

* Update index.ts

* fix: CSP

* Refactor CSP middleware

* docs, only use for email signin

---------

Co-authored-by: codegen-sh[bot] <131295404+codegen-sh[bot]@users.noreply.github.com>
Co-authored-by: Tom Moor <tom@getoutline.com>
2025-05-17 09:06:32 -04:00
Hemachandar 052924d816 Resolve index collision when restoring collection (#9229)
* Resolve index collision when restoring collection

* use beforeUpdate hook
2025-05-16 23:56:46 -04:00
Apoorv Mishra 2fe887ef57 Refactor Placeholder plugin to make it configurable (#9224)
* fix: refactor to make configurable

* fix: make it a reusable plugin so that it can be colocated with nodes eligible for placeholders

* fix: cond -> condition

* fix: `pos` -> `$start` as param

* fix: cleanup
2025-05-16 20:58:06 -04:00
Tom Moor e288a5d38e fix: Remove # from stored filesystem keys (#9231) 2025-05-17 00:14:42 +00:00
Hemachandar dc5c3f5280 fix: Consider non-archived collections only for index computation (#9225) 2025-05-16 09:39:32 -04:00
Hemachandar 610721eed6 fix: Ensure collection withUser scope is not overriden (#9226) 2025-05-16 08:16:25 -04:00
Hemachandar d50f0986bb fix: Reset editing state when collection/document title is unmodified (#9221) 2025-05-15 14:12:26 +00:00
Tom Moor 90af35d4bd Update .env.sample (#9217) 2025-05-15 02:08:15 +00:00
Tom Moor 3810373195 fix: CleanupDeletedDocumentsTask attribute selection (#9215) 2025-05-14 20:45:29 -04:00
Tom Moor 3fd893e728 Add new markdown shortcut for tables to shortcut UI (#9216) 2025-05-14 23:52:32 +00:00
Tom Moor 13e3aaf861 chore: Add Sentry breadcrumbs to websocket messages for debugging (#9211) 2025-05-14 19:37:29 -04:00
Tom Moor b43ebabbaf fix: Apex redirect regression (#9214) 2025-05-14 19:37:16 -04:00
Tom Moor 42550a003a fix: Icon on collection home does not match sidebar when private (#9209) 2025-05-14 04:23:55 +00:00
Tom Moor 08b7c11461 Normalize Collection.findByPk (#9193) 2025-05-14 00:05:45 -04:00
Tom Moor 8a9a8cf751 fix: Archived documents should not show in @mention suggestions (#9208) 2025-05-13 22:47:58 -04:00
Tom Moor 2d6167e933 fix: Add encoding meta tag to exported HTML (#9207)
closes #9194
2025-05-13 22:47:48 -04:00
dependabot[bot] 6b05b101d0 chore(deps): bump the aws group with 5 updates (#9186)
Bumps the aws group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@aws-sdk/client-s3](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3) | `3.803.0` | `3.806.0` |
| [@aws-sdk/lib-storage](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/lib/lib-storage) | `3.803.0` | `3.806.0` |
| [@aws-sdk/s3-presigned-post](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/packages/s3-presigned-post) | `3.803.0` | `3.806.0` |
| [@aws-sdk/s3-request-presigner](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/packages/s3-request-presigner) | `3.803.0` | `3.806.0` |
| [@aws-sdk/signature-v4-crt](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/packages/signature-v4-crt) | `3.803.0` | `3.806.0` |


Updates `@aws-sdk/client-s3` from 3.803.0 to 3.806.0
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.806.0/clients/client-s3)

Updates `@aws-sdk/lib-storage` from 3.803.0 to 3.806.0
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/lib/lib-storage/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.806.0/lib/lib-storage)

Updates `@aws-sdk/s3-presigned-post` from 3.803.0 to 3.806.0
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/packages/s3-presigned-post/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.806.0/packages/s3-presigned-post)

Updates `@aws-sdk/s3-request-presigner` from 3.803.0 to 3.806.0
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/packages/s3-request-presigner/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.806.0/packages/s3-request-presigner)

Updates `@aws-sdk/signature-v4-crt` from 3.803.0 to 3.806.0
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/packages/signature-v4-crt/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.806.0/packages/signature-v4-crt)

---
updated-dependencies:
- dependency-name: "@aws-sdk/client-s3"
  dependency-version: 3.806.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: aws
- dependency-name: "@aws-sdk/lib-storage"
  dependency-version: 3.806.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: aws
- dependency-name: "@aws-sdk/s3-presigned-post"
  dependency-version: 3.806.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: aws
- dependency-name: "@aws-sdk/s3-request-presigner"
  dependency-version: 3.806.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: aws
- dependency-name: "@aws-sdk/signature-v4-crt"
  dependency-version: 3.806.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: aws
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-13 21:06:24 -04:00
Adam Roe 79fe73fbe1 fix: fall back to id_token when OIDC userinfo endpoint is sparse (#9172)
* Fall back to id_token if profile does not contain username or email

* More comments

* Add error handling to id_token decode

* simplify username fallback logic using nullish coalescing

Co-authored-by: Tom Moor <tom.moor@gmail.com>

* make id_token decoding more tolerant of malformed or invalid tokens

---------

Co-authored-by: Tom Moor <tom.moor@gmail.com>
2025-05-13 21:06:14 -04:00
MehdiBouzouaya 63376ed9c8 Fix flash of previous value after editing title in sidebar for documents (#9197)
* Fix flash of previous value after editing title in sidebar for documents

* Fix flash of previous value after editing title in sidebar for documents
2025-05-13 22:36:47 +00:00
MehdiBouzouaya 0cec66b3bb Fix: Add missing key prop to context menu items to avoid React warning (#9202) 2025-05-13 18:31:21 -04:00
dependabot[bot] fcc73e772b chore(deps): bump the babel group with 2 updates (#9185)
Bumps the babel group with 2 updates: [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) and [@babel/cli](https://github.com/babel/babel/tree/HEAD/packages/babel-cli).


Updates `@babel/preset-env` from 7.27.1 to 7.27.2
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.2/packages/babel-preset-env)

Updates `@babel/cli` from 7.27.1 to 7.27.2
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.2/packages/babel-cli)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-version: 7.27.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: babel
- dependency-name: "@babel/cli"
  dependency-version: 7.27.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: babel
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-12 19:29:38 -04:00
dependabot[bot] b5cb6128c4 chore(deps-dev): bump react-refresh from 0.14.2 to 0.17.0 (#9187)
Bumps [react-refresh](https://github.com/facebook/react/tree/HEAD/packages/react) from 0.14.2 to 0.17.0.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/HEAD/packages/react)

---
updated-dependencies:
- dependency-name: react-refresh
  dependency-version: 0.17.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-12 19:29:22 -04:00
dependabot[bot] 261226c110 chore(deps): bump @types/mailparser from 3.4.5 to 3.4.6 (#9188)
Bumps [@types/mailparser](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/mailparser) from 3.4.5 to 3.4.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/mailparser)

---
updated-dependencies:
- dependency-name: "@types/mailparser"
  dependency-version: 3.4.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-12 19:05:25 -04:00
Tom Moor 6fff437196 fix: Incorrect translation string on disabled API keys (#9183) 2025-05-12 07:56:46 -04:00
Tom Moor 4f34e70d32 chore: Add automation to close PRs that never accept CLA (#9179)
* Add script to auto-close stale PRs

* Improve specificity
2025-05-11 17:14:55 -04:00
Tom Moor 4c04bd9359 v0.84.0 (#9176) 2025-05-11 15:58:16 +00:00
Tom Moor 16c8ae6132 Create README.md (#9174) 2025-05-11 12:56:26 +00:00
Tom Moor 30bba3a69b fix: JS error when no integrations are connected (#9170) 2025-05-11 02:05:18 +00:00
Tom Moor 32c1712fdc fix: Various cases that could leave file handles open on export (#9168)
* fix: Various cases that could leave file handles open on export

* Consolidate error handling
2025-05-10 17:48:24 -04:00
Tom Moor d392149860 fix: Non-integration plugins missing in settings (#9167)
Other minor refactors
2025-05-10 12:45:06 -04:00
103 changed files with 4910 additions and 1935 deletions
+165 -140
View File
@@ -1,48 +1,80 @@
# –––––––––––––––– REQUIRED ––––––––––––––––
NODE_ENV=production
# Generate a hex-encoded 32-byte random key. You should use `openssl rand -hex 32`
# in your terminal to generate a random value.
SECRET_KEY=generate_a_new_key
# Generate a unique random key. The format is not important but you could still use
# `openssl rand -hex 32` in your terminal to produce this.
UTILS_SECRET=generate_a_new_key
# For production point these at your databases, in development the default
# should work out of the box.
DATABASE_URL=postgres://user:pass@postgres:5432/outline
DATABASE_CONNECTION_POOL_MIN=
DATABASE_CONNECTION_POOL_MAX=
# Uncomment this to disable SSL for connecting to Postgres
# PGSSLMODE=disable
# For redis you can either specify an ioredis compatible url like this
REDIS_URL=redis://redis:6379
# or alternatively, if you would like to provide additional connection options,
# use a base64 encoded JSON connection option object. Refer to the ioredis documentation
# for a list of available options.
# Example: Use Redis Sentinel for high availability
# {"sentinels":[{"host":"sentinel-0","port":26379},{"host":"sentinel-1","port":26379}],"name":"mymaster"}
# REDIS_URL=ioredis://eyJzZW50aW5lbHMiOlt7Imhvc3QiOiJzZW50aW5lbC0wIiwicG9ydCI6MjYzNzl9LHsiaG9zdCI6InNlbnRpbmVsLTEiLCJwb3J0IjoyNjM3OX1dLCJuYW1lIjoibXltYXN0ZXIifQ==
# URL should point to the fully qualified, publicly accessible URL. If using a
# proxy the port in URL and PORT may be different.
# This URL should point to the fully qualified, publicly accessible, URL. If using a
# proxy this will be the proxy's URL.
URL=
# The port to expose the Outline server on, this should match what is configured
# in your docker-compose.yml
PORT=3000
# See [documentation](docs/SERVICES.md) on running a separate collaboration
# server, for normal operation this does not need to be set.
COLLABORATION_URL=
# If using a Cloudfront/Cloudflare distribution or similar it can be set below.
# This will cause paths to javascript, stylesheets, and images to be updated to
# the hostname defined in CDN_URL. In your CDN configuration the origin server
# should be set to the same as URL.
CDN_URL=
# How many processes should be spawned. As a reasonable rule divide your servers
# available memory by 512 for a rough estimate
WEB_CONCURRENCY=1
# Generate a hex-encoded 32-byte random key. Use `openssl rand -hex 32` in your
# terminal to generate a random value.
SECRET_KEY=generate_a_new_key
# Generate a unique random key. The format is not important but you could still use
# `openssl rand -hex 32` in your terminal to generate a random value.
UTILS_SECRET=generate_a_new_key
# The default interface language. See translate.getoutline.com for a list of
# available language codes and their rough percentage translated.
DEFAULT_LANGUAGE=en_US
# ––––––––––––––––––––––––––––––––––––––
# ––––––––––––– DATABASE –––––––––––––
# ––––––––––––––––––––––––––––––––––––––
# The database URL for your production database, including username, password, and database name.
DATABASE_URL=postgres://user:pass@postgres:5432/outline
# The in-memory database pool per-process settings. Ensure that the pool size that will not exceed
# the maximum number of connections allowed by your database. Defaults to 0 and 5.
DATABASE_CONNECTION_POOL_MIN=
DATABASE_CONNECTION_POOL_MAX=
# Uncomment this line if you will not use SSL for connecting to Postgres. This is acceptable
# if the database and the application are on the same machine.
# PGSSLMODE=disable
# ––––––––––––––––––––––––––––––––––––––
# –––––––––––––– REDIS –––––––––––––––
# ––––––––––––––––––––––––––––––––––––––
# The Redis URL for your environment you can either specify an ioredis compatible url or a Base64
# encoded configuration object.
# DOCS: https://docs.getoutline.com/s/hosting/doc/redis-LGM4BFXYp4
REDIS_URL=redis://redis:6379
# ––––––––––––––––––––––––––––––––––––––
# ––––––––––– FILE STORAGE –––––––––––
# ––––––––––––––––––––––––––––––––––––––
# Specify what storage system to use. Possible value is one of "s3" or "local".
# For "local", the avatar images and document attachments will be saved on local disk.
# For "local" images and document attachments will be saved on local disk, for "s3" they
# will be stored in an S3-compatible network store.
# DOCS: https://docs.getoutline.com/s/hosting/doc/file-storage-N4M0T6Ypu7
FILE_STORAGE=local
# If "local" is configured for FILE_STORAGE above, then this sets the parent directory under
# which all attachments/images go. Make sure that the process has permissions to create
# this path and also to write files to it.
# which all attachments/images are stored. Make sure that the process has permissions to
# create this path and also to write files to it.
FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/data
# Maximum allowed size for the uploaded attachment.
@@ -56,8 +88,8 @@ FILE_STORAGE_IMPORT_MAX_SIZE=
# and the files are temporary being automatically deleted after a period of time.
FILE_STORAGE_WORKSPACE_IMPORT_MAX_SIZE=
# To support uploading of images for avatars and document attachments in a distributed
# architecture an s3-compatible storage can be configured if FILE_STORAGE=s3 above.
# To support uploading of images for avatars and document attachments in a distributed
# architecture, an s3-compatible storage can be configured if FILE_STORAGE=s3 above.
AWS_ACCESS_KEY_ID=get_a_key_from_aws
AWS_SECRET_ACCESS_KEY=get_the_secret_of_above_key
AWS_REGION=xx-xxxx-x
@@ -67,38 +99,55 @@ AWS_S3_UPLOAD_BUCKET_NAME=bucket_name_here
AWS_S3_FORCE_PATH_STYLE=true
AWS_S3_ACL=private
# –––––––––––––– AUTHENTICATION ––––––––––––––
# ––––––––––––––––––––––––––––––––––––––
# –––––––––––––––– SSL –––––––––––––––
# ––––––––––––––––––––––––––––––––––––––
# Base64 encoded private key and certificate for HTTPS termination. This is one
# of three ways to configure SSL and can be left empty.
# DOCS: https://docs.getoutline.com/s/hosting/doc/ssl-pzk7WO8d1n
SSL_KEY=
SSL_CERT=
# Auto-redirect to https in production. The default is true but you may set to
# false if you can be sure that SSL is terminated at an external loadbalancer.
FORCE_HTTPS=true
# ––––––––––––––––––––––––––––––––––––––
# –––––––––– AUTHENTICATION ––––––––––
# ––––––––––––––––––––––––––––––––––––––
# Third party signin credentials, at least ONE OF EITHER Google, Slack,
# or Microsoft is required for a working installation or you'll have no sign-in
# options.
# Discord, or Microsoft is required for a working installation or you'll
# have no sign-in options.
# To configure Slack auth, you'll need to create an Application at
# => https://api.slack.com/apps
#
# When configuring the Client ID, add a redirect URL under "OAuth & Permissions":
# https://<URL>/auth/slack.callback
# Slack sign-in provider
# DOCS: https://docs.getoutline.com/s/hosting/doc/slack-sgMujR8J9J
SLACK_CLIENT_ID=get_a_key_from_slack
SLACK_CLIENT_SECRET=get_the_secret_of_above_key
# To configure Google auth, you'll need to create an OAuth Client ID at
# => https://console.cloud.google.com/apis/credentials
#
# When configuring the Client ID, add an Authorized redirect URI:
# https://<URL>/auth/google.callback
# Google sign-in provider
# DOCS: https://docs.getoutline.com/s/hosting/doc/google-hOuvtCmTqQ
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
# To configure Microsoft/Azure auth, you'll need to create an OAuth Client. See
# the guide for details on setting up your Azure App:
# => https://wiki.generaloutline.com/share/dfa77e56-d4d2-4b51-8ff8-84ea6608faa4
# Microsoft Entra / Azure AD sign-in provider
# DOCS: https://docs.getoutline.com/s/hosting/doc/microsoft-entra-UVz6jsIOcv
AZURE_CLIENT_ID=
AZURE_CLIENT_SECRET=
AZURE_RESOURCE_APP_ID=
# To configure generic OIDC auth, you'll need some kind of identity provider.
# See documentation for whichever IdP you use to acquire the following info:
# Redirect URI is https://<URL>/auth/oidc.callback
# Discord sign-in provider
# DOCS: https://docs.getoutline.com/s/hosting/doc/discord-g4JdWFFub6
DISCORD_CLIENT_ID=
DISCORD_CLIENT_SECRET=
DISCORD_SERVER_ID=
DISCORD_SERVER_ROLES=
# Generic OIDC provider
# DOCS: https://docs.getoutline.com/s/hosting/doc/oidc-8CPBm6uC0I
OIDC_CLIENT_ID=
OIDC_CLIENT_SECRET=
OIDC_AUTH_URI=
@@ -116,83 +165,54 @@ OIDC_DISPLAY_NAME=OpenID Connect
# Space separated auth scopes.
OIDC_SCOPES=openid profile email
# To configure the GitHub integration, you'll need to create a GitHub App at
# => https://github.com/settings/apps
#
# When configuring the Client ID, add a redirect URL under "Permissions & events":
# https://<URL>/api/github.callback
# ––––––––––––––––––––––––––––––––––––––
# –––––––––––––– EMAIL –––––––––––––––
# ––––––––––––––––––––––––––––––––––––––
# To support sending outgoing transactional emails such as "document updated" or
# email sign-in you'll need to connect an SMTP server. Service can be configured
# with any service from this list: https://community.nodemailer.com/2-0-0-beta/setup-smtp/well-known-services/
# DOCS: https://docs.getoutline.com/s/hosting/doc/smtp-cqCJyZGMIB
SMTP_SERVICE=
SMTP_USERNAME=
SMTP_PASSWORD=
SMTP_FROM_EMAIL=
# ––––––––––––––––––––––––––––––––––––––
# –––––––––– RATE LIMITER ––––––––––––
# ––––––––––––––––––––––––––––––––––––––
# Whether the rate limiter is enabled or not
RATE_LIMITER_ENABLED=true
# Individual endpoints have hardcoded rate limits that are enabled
# with the above setting, however this is a global rate limiter
# across all requests
RATE_LIMITER_REQUESTS=1000
RATE_LIMITER_DURATION_WINDOW=60
# ––––––––––––––––––––––––––––––––––––––
# ––––––––––– INTEGRATIONS –––––––––––
# ––––––––––––––––––––––––––––––––––––––
# The GitHub integration allows previewing issue and pull request links
# DOCS: https://docs.getoutline.com/s/hosting/doc/github-GchT3NNxI9
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GITHUB_APP_NAME=
GITHUB_APP_ID=
GITHUB_APP_PRIVATE_KEY=
# Linear
# The Linear integration allows previewing issue links as rich mentions
LINEAR_CLIENT_ID=
LINEAR_CLIENT_SECRET=
# To configure Discord auth, you'll need to create a Discord Application at
# => https://discord.com/developers/applications/
#
# When configuring the Client ID, add a redirect URL under "OAuth2":
# https://<URL>/auth/discord.callback
DISCORD_CLIENT_ID=
DISCORD_CLIENT_SECRET=
# DISCORD_SERVER_ID should be the ID of the Discord server that Outline is
# integrated with.
# Used to verify that the user is a member of the server as well as server
# metadata such as nicknames, server icon and name.
DISCORD_SERVER_ID=
# DISCORD_SERVER_ROLES should be a comma separated list of role IDs that are
# allowed to access Outline. If this is not set, all members of the server
# will be allowed to access Outline.
# DISCORD_SERVER_ID and DISCORD_SERVER_ROLES must be set together.
DISCORD_SERVER_ROLES=
# –––––––––––––– IMPORTS ––––––––––––––
NOTION_CLIENT_ID=
NOTION_CLIENT_SECRET=
# –––––––––––––––– OPTIONAL ––––––––––––––––
# Base64 encoded private key and certificate for HTTPS termination. This is only
# required if you do not use an external reverse proxy. See documentation:
# https://wiki.generaloutline.com/share/1c922644-40d8-41fe-98f9-df2b67239d45
SSL_KEY=
SSL_CERT=
# If using a Cloudfront/Cloudflare distribution or similar it can be set below.
# This will cause paths to javascript, stylesheets, and images to be updated to
# the hostname defined in CDN_URL. In your CDN configuration the origin server
# should be set to the same as URL.
CDN_URL=
# Auto-redirect to https in production. The default is true but you may set to
# false if you can be sure that SSL is terminated at an external loadbalancer.
FORCE_HTTPS=true
# Have the installation check for updates by sending anonymized statistics to
# the maintainers
ENABLE_UPDATES=true
# How many processes should be spawned. As a reasonable rule divide your servers
# available memory by 512 for a rough estimate
WEB_CONCURRENCY=1
# You can remove this line if your reverse proxy already logs incoming http
# requests and this ends up being duplicative
DEBUG=http
# Configure lowest severity level for server logs. Should be one of
# error, warn, info, http, verbose, debug and silly
LOG_LEVEL=info
# For a complete Slack integration with search and posting to channels the
# following configs are also needed, some more details
# => https://wiki.generaloutline.com/share/be25efd1-b3ef-4450-b8e5-c4a4fc11e02a
#
# following configs are also needed in addition to Slack authentication:
# DOCS: https://docs.getoutline.com/s/hosting/doc/slack-G2mc8DOJHk
SLACK_VERIFICATION_TOKEN=your_token
SLACK_APP_ID=A0XXXXXXX
SLACK_MESSAGE_ACTIONS=true
@@ -202,29 +222,34 @@ SLACK_MESSAGE_ACTIONS=true
DROPBOX_APP_KEY=
# Optionally enable Sentry (sentry.io) to track errors and performance,
# and optionally add a Sentry proxy tunnel for bypassing ad blockers in the UI:
# https://docs.sentry.io/platforms/javascript/troubleshooting/#using-the-tunnel-option)
# DOCS: https://docs.getoutline.com/s/hosting/doc/sentry-jxcFttcDl5
SENTRY_DSN=
SENTRY_TUNNEL=
# To support sending outgoing transactional emails such as "document updated" or
# "you've been invited" you'll need to provide authentication for an SMTP server
SMTP_SERVICE=
SMTP_USERNAME=
SMTP_PASSWORD=
SMTP_FROM_EMAIL=
# Enable importing pages from a Notion workspace
# DOCS: https://docs.getoutline.com/s/hosting/doc/notion-2v6g7WY3l3
NOTION_CLIENT_ID=
NOTION_CLIENT_SECRET=
# The default interface language. See translate.getoutline.com for a list of
# available language codes and their rough percentage translated.
DEFAULT_LANGUAGE=en_US
# Optionally enable rate limiter at application web server
RATE_LIMITER_ENABLED=true
# Configure default throttling parameters for rate limiter
RATE_LIMITER_REQUESTS=1000
RATE_LIMITER_DURATION_WINDOW=60
# Iframely API config
# The Iframely integration allows previews of third-party content within Outline.
# For example, hovering over an external link will show a preview.
# DOCS: https://docs.getoutline.com/s/hosting/doc/iframely-HwLF1EZ9mo
IFRAMELY_URL=
IFRAMELY_API_KEY=
# ––––––––––––––––––––––––––––––––––––––
# ––––––––––––– DEBUGGING ––––––––––––
# ––––––––––––––––––––––––––––––––––––––
# Have the installation check for updates by sending anonymized statistics to
# the maintainers
ENABLE_UPDATES=true
# Debugging categories to enable you can remove the default "http" value if
# your proxy already logs incoming http requests and this ends up being duplicative
DEBUG=http
# Configure lowest severity level for server logs. Should be one of
# error, warn, info, http, verbose, debug, or silly
LOG_LEVEL=info
+59
View File
@@ -0,0 +1,59 @@
name: Auto Close Unsigned PRs
on:
schedule:
- cron: '0 0 * * *' # Run daily at midnight UTC
jobs:
close-unsigned-prs:
runs-on: ubuntu-latest
permissions:
pull-requests: write
issues: write
steps:
- name: Close unsigned PRs
uses: actions/github-script@v6
with:
script: |
const now = new Date();
const TWO_WEEKS = 14 * 24 * 60 * 60 * 1000; // 14 days in milliseconds
const prs = await github.rest.pulls.list({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open'
});
for (const pr of prs.data) {
const prCreatedAt = new Date(pr.created_at);
const prAge = now - prCreatedAt;
if (prAge < TWO_WEEKS) continue;
const comments = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number
});
const hasNotSignedComment = comments.data.some(comment =>
comment.body.toLowerCase().includes('https://cla-assistant.io/pull/badge/not_signed')
);
if (hasNotSignedComment) {
await github.rest.pulls.update({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pr.number,
state: 'closed'
});
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
body: 'This PR has been automatically closed because it has been open for more than 14 days and has not accepted the CLA.'
});
}
}
+2 -2
View File
@@ -3,7 +3,7 @@ Business Source License 1.1
Parameters
Licensor: General Outline, Inc.
Licensed Work: Outline 0.83.0
Licensed Work: Outline 0.84.0
The Licensed Work is (c) 2025 General Outline, Inc.
Additional Use Grant: You may make use of the Licensed Work, provided that
you may not use the Licensed Work for a Document
@@ -15,7 +15,7 @@ Additional Use Grant: You may make use of the Licensed Work, provided that
Licensed Work by creating teams and documents
controlled by such third parties.
Change Date: 2029-04-11
Change Date: 2029-05-11
Change License: Apache License, Version 2.0
+19 -10
View File
@@ -138,7 +138,7 @@ function Template({ items, actions, context, showIcons, ...menu }: Props) {
as={Link}
id={`${item.title}-${index}`}
to={item.to}
key={index}
key={`${item.type}-${item.title}-${index}`}
disabled={item.disabled}
selected={item.selected}
icon={showIcons !== false ? item.icon : undefined}
@@ -154,7 +154,7 @@ function Template({ items, actions, context, showIcons, ...menu }: Props) {
<MenuItem
id={`${item.title}-${index}`}
href={item.href}
key={index}
key={`${item.type}-${item.title}-${index}`}
disabled={item.disabled}
selected={item.selected}
level={item.level}
@@ -176,7 +176,7 @@ function Template({ items, actions, context, showIcons, ...menu }: Props) {
disabled={item.disabled}
selected={item.selected}
dangerous={item.dangerous}
key={index}
key={`${item.type}-${item.title}-${index}`}
icon={showIcons !== false ? item.icon : undefined}
{...menu}
>
@@ -185,18 +185,25 @@ function Template({ items, actions, context, showIcons, ...menu }: Props) {
);
return item.tooltip ? (
<Tooltip content={item.tooltip} placement={"bottom"}>
<Tooltip
content={item.tooltip}
placement={"bottom"}
key={`tooltip-${item.title}-${index}`}
>
<div>{menuItem}</div>
</Tooltip>
) : (
<>{menuItem}</>
<React.Fragment key={`${item.type}-${item.title}-${index}`}>
{menuItem}
</React.Fragment>
);
}
if (item.type === "submenu") {
return (
// Skip rendering empty submenus
return item.items.length > 0 ? (
<BaseMenuItem
key={index}
key={`${item.type}-${item.title}-${index}`}
as={SubMenu}
id={`${item.title}-${index}`}
templateItems={item.items}
@@ -209,15 +216,17 @@ function Template({ items, actions, context, showIcons, ...menu }: Props) {
}
{...menu}
/>
);
) : null;
}
if (item.type === "separator") {
return <Separator key={index} />;
return <Separator key={`separator-${index}`} />;
}
if (item.type === "heading") {
return <Header key={index}>{item.title}</Header>;
return (
<Header key={`heading-${item.title}-${index}`}>{item.title}</Header>
);
}
const _exhaustiveCheck: never = item;
+4 -1
View File
@@ -64,11 +64,12 @@ function EditableTitle(
async (ev) => {
ev.preventDefault();
ev.stopPropagation();
setIsEditing(false);
const trimmedValue = value.trim();
if (trimmedValue === originalValue || trimmedValue.length === 0) {
setValue(originalValue);
setIsEditing(false);
onCancel?.();
return;
}
@@ -80,6 +81,8 @@ function EditableTitle(
setValue(originalValue);
toast.error(error.message);
throw error;
} finally {
setIsEditing(false);
}
},
[originalValue, value, onCancel, onSubmit]
+5 -1
View File
@@ -45,6 +45,7 @@ type Props = {
onChange: (icon: string | null, color: string | null) => void;
onOpen?: () => void;
onClose?: () => void;
children?: React.ReactNode;
};
const IconPicker = ({
@@ -59,6 +60,7 @@ const IconPicker = ({
onOpen,
onClose,
borderOnHover,
children,
}: Props) => {
const { t } = useTranslation();
@@ -174,7 +176,9 @@ const IconPicker = ({
onClick={handlePopoverButtonClick}
$borderOnHover={borderOnHover}
>
{iconType && icon ? (
{children ? (
children
) : iconType && icon ? (
<Icon value={icon} color={color} size={size} initial={initial} />
) : (
<StyledSmileyIcon color={theme.placeholder} size={size} />
@@ -22,7 +22,7 @@ import SidebarContext from "./SidebarContext";
function Collections() {
const { documents, collections } = useStores();
const { t } = useTranslation();
const orderedCollections = collections.orderedData;
const orderedCollections = collections.allActive;
const params = React.useMemo(
() => ({
@@ -78,9 +78,9 @@ function StarredLink({ star }: Props) {
}, [documentId, documents]);
const handleDisclosureClick = React.useCallback(
(ev: React.MouseEvent<HTMLButtonElement>) => {
ev.preventDefault();
ev.stopPropagation();
(ev?: React.MouseEvent<HTMLButtonElement>) => {
ev?.preventDefault();
ev?.stopPropagation();
setExpanded((prevExpanded) => !prevExpanded);
},
[]
+14 -2
View File
@@ -1,3 +1,4 @@
import * as Sentry from "@sentry/react";
import invariant from "invariant";
import find from "lodash/find";
import { action, observable } from "mobx";
@@ -134,6 +135,15 @@ class WebsocketProvider extends React.Component<Props> {
throw err;
});
// add a listener for all events that logs a sentry breadcrumb
this.socket.onAny((event: string, data: Record<string, unknown>) => {
Sentry.addBreadcrumb({
category: "websocket",
message: `Received event: ${event}`,
data,
});
});
this.socket.on(
"entities",
action(async (event: WebsocketEntitiesEvent) => {
@@ -251,8 +261,10 @@ class WebsocketProvider extends React.Component<Props> {
}
policies.remove(document.id);
const collection = collections.get(event.collectionId);
collection?.removeDocument(document.id);
if (event.collectionId) {
const collection = collections.get(event.collectionId);
collection?.removeDocument(document.id);
}
}
)
);
+35 -25
View File
@@ -1,10 +1,12 @@
import { action } from "mobx";
import { PlusIcon } from "outline-icons";
import { Plugin } from "prosemirror-state";
import { Node, ResolvedPos } from "prosemirror-model";
import { EditorState, Plugin } from "prosemirror-state";
import { Decoration, DecorationSet } from "prosemirror-view";
import * as React from "react";
import ReactDOM from "react-dom";
import { createRoot } from "react-dom/client";
import { WidgetProps } from "@shared/editor/lib/Extension";
import { PlaceholderPlugin } from "@shared/editor/plugins/PlaceholderPlugin";
import { findParentNode } from "@shared/editor/queries/findParentNode";
import Suggestion from "~/editor/extensions/Suggestion";
import BlockMenu from "../components/BlockMenu";
@@ -27,7 +29,10 @@ export default class BlockMenuExtension extends Suggestion {
const button = document.createElement("button");
button.className = "block-menu-trigger";
button.type = "button";
ReactDOM.render(<PlusIcon />, button);
button.addEventListener("click", this.handleClick);
const root = createRoot(button);
root.render(<PlusIcon />);
return button;
return [
...super.plugins,
@@ -49,7 +54,6 @@ export default class BlockMenuExtension extends Suggestion {
const decorations: Decoration[] = [];
const isEmptyNode = parent && parent.node.content.size === 0;
const isSlash = parent && parent.node.textContent === "/";
if (isEmptyNode) {
decorations.push(
@@ -69,33 +73,39 @@ export default class BlockMenuExtension extends Suggestion {
}
)
);
const isEmptyDoc = state.doc.textContent === "";
if (!isEmptyDoc) {
decorations.push(
Decoration.node(
parent.pos,
parent.pos + parent.node.nodeSize,
{
class: "placeholder",
"data-empty-text": this.options.dictionary.newLineEmpty,
}
)
);
}
} else if (isSlash) {
decorations.push(
Decoration.node(parent.pos, parent.pos + parent.node.nodeSize, {
class: "placeholder",
"data-empty-text": ` ${this.options.dictionary.newLineWithSlash}`,
})
);
}
return DecorationSet.create(state.doc, decorations);
},
},
}),
new PlaceholderPlugin([
{
condition: (
node: Node,
$start: ResolvedPos,
_parent: Node | null,
state: EditorState
) =>
$start.depth === 1 &&
node.textContent === "" &&
!!state.doc.textContent &&
state.selection.$from.pos === $start.pos + node.content.size,
text: this.options.dictionary.newLineEmpty,
},
{
condition: (
node: Node,
$start: ResolvedPos,
_parent: Node,
state: EditorState
) =>
$start.depth === 1 &&
node.textContent === "/" &&
state.selection.$from.pos === $start.pos + node.content.size,
text: ` ${this.options.dictionary.newLineWithSlash}`,
},
]),
];
}
+88
View File
@@ -0,0 +1,88 @@
import { DocumentIcon } from "outline-icons";
import * as React from "react";
import { useTranslation } from "react-i18next";
import Icon from "@shared/components/Icon";
import { TextHelper } from "@shared/utils/TextHelper";
import Document from "~/models/Document";
import useCurrentUser from "~/hooks/useCurrentUser";
import useStores from "~/hooks/useStores";
import { MenuItem } from "~/types";
type Props = {
/** The document to which the templates will be applied */
document: Document;
/** Callback to handle when a template is selected */
onSelectTemplate?: (template: Document) => void;
};
/**
* This hook provides a memoized list of menu items for both collection-specific
* templates and workspace-wide templates. It filters templates based on whether
* they are published and organizes them into appropriate sections.
*
* Collection-specific templates are displayed first, followed by workspace templates
* with a separator in between (if both types exist).
*
* @returns An array of MenuItem objects representing templates that can be applied
* to the current document. Returns an empty array if no callback is provided.
*/
export function useTemplateMenuItems({ document, onSelectTemplate }: Props) {
const user = useCurrentUser();
const { documents } = useStores();
const { t } = useTranslation();
const templateToMenuItem = React.useCallback(
(template: Document): MenuItem => ({
type: "button",
title: TextHelper.replaceTemplateVariables(
template.titleWithDefault,
user
),
icon: template.icon ? (
<Icon value={template.icon} color={template.color ?? undefined} />
) : (
<DocumentIcon />
),
onClick: () => onSelectTemplate?.(template),
}),
[user, onSelectTemplate]
);
const templates = documents.templates.filter(
(template) => template.publishedAt
);
const collectionItems = templates
.filter(
(template) =>
!template.isWorkspaceTemplate &&
template.collectionId === document.collectionId
)
.map(templateToMenuItem);
const workspaceTemplates = templates
.filter((tmpl) => tmpl.isWorkspaceTemplate)
.map(templateToMenuItem);
const workspaceItems: MenuItem[] = React.useMemo(
() =>
workspaceTemplates.length
? [{ type: "heading", title: t("Workspace") }, ...workspaceTemplates]
: [],
[t, workspaceTemplates]
);
if (!onSelectTemplate) {
return [];
}
return collectionItems
? workspaceItems.length
? [
...collectionItems,
{ type: "separator" } as MenuItem,
...workspaceItems,
]
: collectionItems
: workspaceItems;
}
+3 -2
View File
@@ -4,7 +4,7 @@ import { LazyMotion } from "framer-motion";
import { KBarProvider } from "kbar";
import { Provider } from "mobx-react";
import * as React from "react";
import { render } from "react-dom";
import { createRoot } from "react-dom/client";
import { HelmetProvider } from "react-helmet-async";
import { Router } from "react-router-dom";
import stores from "~/stores";
@@ -79,7 +79,8 @@ if (element) {
</React.StrictMode>
);
render(<App />, element);
const root = createRoot(element);
root.render(<App />);
}
window.addEventListener("load", async () => {
+24 -1
View File
@@ -2,7 +2,13 @@ import capitalize from "lodash/capitalize";
import isEmpty from "lodash/isEmpty";
import noop from "lodash/noop";
import { observer } from "mobx-react";
import { EditIcon, InputIcon, RestoreIcon, SearchIcon } from "outline-icons";
import {
EditIcon,
InputIcon,
RestoreIcon,
SearchIcon,
ShapesIcon,
} from "outline-icons";
import * as React from "react";
import { useTranslation } from "react-i18next";
import { useHistory } from "react-router-dom";
@@ -57,6 +63,7 @@ import useMobile from "~/hooks/useMobile";
import usePolicy from "~/hooks/usePolicy";
import useRequest from "~/hooks/useRequest";
import useStores from "~/hooks/useStores";
import { useTemplateMenuItems } from "~/hooks/useTemplateMenuItems";
import { MenuItem, MenuItemButton } from "~/types";
import { documentEditPath } from "~/utils/routeHelpers";
import { MenuContext, useMenuContext } from "./MenuContext";
@@ -76,6 +83,7 @@ type Props = {
label?: (props: MenuButtonHTMLProps) => React.ReactNode;
/** Invoked when the "Find and replace" menu item is clicked */
onFindAndReplace?: () => void;
onSelectTemplate?: (template: Document) => void;
/** Invoked when the "Rename" menu item is clicked */
onRename?: () => void;
/** Invoked when menu is opened */
@@ -147,6 +155,7 @@ type MenuContentProps = {
onOpen?: () => void;
onClose?: () => void;
onFindAndReplace?: () => void;
onSelectTemplate?: (template: Document) => void;
onRename?: () => void;
showDisplayOptions?: boolean;
showToggleEmbeds?: boolean;
@@ -156,6 +165,7 @@ const MenuContent: React.FC<MenuContentProps> = observer(function MenuContent_({
onOpen,
onClose,
onFindAndReplace,
onSelectTemplate,
onRename,
showDisplayOptions,
showToggleEmbeds,
@@ -218,6 +228,11 @@ const MenuContent: React.FC<MenuContentProps> = observer(function MenuContent_({
[collections.orderedData, handleRestore, policies]
);
const templateMenuItems = useTemplateMenuItems({
document,
onSelectTemplate,
});
return !isEmpty(can) ? (
<ContextMenu
{...menuState}
@@ -310,6 +325,12 @@ const MenuContent: React.FC<MenuContentProps> = observer(function MenuContent_({
actionToMenuItem(archiveDocument, context),
actionToMenuItem(moveDocument, context),
actionToMenuItem(moveTemplate, context),
{
type: "submenu",
title: t("Apply template"),
icon: <ShapesIcon />,
items: templateMenuItems,
},
actionToMenuItem(pinDocument, context),
actionToMenuItem(createDocumentFromTemplate, context),
{
@@ -383,6 +404,7 @@ function DocumentMenu({
modal = true,
showToggleEmbeds,
showDisplayOptions,
onSelectTemplate,
label,
onRename,
onOpen,
@@ -466,6 +488,7 @@ function DocumentMenu({
onOpen={onOpen}
onClose={onClose}
onRename={onRename}
onSelectTemplate={onSelectTemplate}
showDisplayOptions={showDisplayOptions}
showToggleEmbeds={showToggleEmbeds}
/>
+4 -53
View File
@@ -1,17 +1,13 @@
import { observer } from "mobx-react";
import { DocumentIcon, ShapesIcon } from "outline-icons";
import { ShapesIcon } from "outline-icons";
import * as React from "react";
import { useTranslation } from "react-i18next";
import { MenuButton, useMenuState } from "reakit/Menu";
import Icon from "@shared/components/Icon";
import { TextHelper } from "@shared/utils/TextHelper";
import Document from "~/models/Document";
import Button from "~/components/Button";
import ContextMenu from "~/components/ContextMenu";
import Template from "~/components/ContextMenu/Template";
import useCurrentUser from "~/hooks/useCurrentUser";
import useStores from "~/hooks/useStores";
import { MenuItem } from "~/types";
import { useTemplateMenuItems } from "~/hooks/useTemplateMenuItems";
type Props = {
/** The document to which the templates will be applied */
@@ -23,57 +19,12 @@ type Props = {
};
function TemplatesMenu({ isCompact, onSelectTemplate, document }: Props) {
const { t } = useTranslation();
const menu = useMenuState({
modal: true,
});
const user = useCurrentUser();
const { documents } = useStores();
const { t } = useTranslation();
const templateToMenuItem = React.useCallback(
(tmpl: Document): MenuItem => ({
type: "button",
title: TextHelper.replaceTemplateVariables(tmpl.titleWithDefault, user),
icon: tmpl.icon ? (
<Icon value={tmpl.icon} color={tmpl.color ?? undefined} />
) : (
<DocumentIcon />
),
onClick: () => onSelectTemplate(tmpl),
}),
[user, onSelectTemplate]
);
const templates = documents.templates.filter((tmpl) => tmpl.publishedAt);
const collectionItems = templates
.filter(
(tmpl) =>
!tmpl.isWorkspaceTemplate && tmpl.collectionId === document.collectionId
)
.map(templateToMenuItem);
const workspaceTemplates = templates
.filter((tmpl) => tmpl.isWorkspaceTemplate)
.map(templateToMenuItem);
const workspaceItems: MenuItem[] = React.useMemo(
() =>
workspaceTemplates.length
? [{ type: "heading", title: t("Workspace") }, ...workspaceTemplates]
: [],
[t, workspaceTemplates]
);
const items = collectionItems
? workspaceItems.length
? [
...collectionItems,
{ type: "separator" } as MenuItem,
...workspaceItems,
]
: collectionItems
: workspaceItems;
const items = useTemplateMenuItems({ onSelectTemplate, document });
if (!items.length) {
return null;
+6 -8
View File
@@ -12,7 +12,7 @@ import {
} from "react-router-dom";
import styled from "styled-components";
import breakpoint from "styled-components-breakpoint";
import Icon, { IconTitleWrapper } from "@shared/components/Icon";
import { IconTitleWrapper } from "@shared/components/Icon";
import { s } from "@shared/styles";
import { StatusFilter } from "@shared/types";
import { colorPalette } from "@shared/utils/collections";
@@ -139,11 +139,7 @@ const CollectionScene = observer(function _CollectionScene() {
const hasOverview = can.update || collection?.hasDescription;
const fallbackIcon = collection ? (
<Icon
value={collection.icon ?? "collection"}
color={collection.color || undefined}
size={40}
/>
<CollectionIcon collection={collection} size={40} expanded />
) : null;
const tabProps = (path: CollectionPath) => ({
@@ -162,7 +158,7 @@ const CollectionScene = observer(function _CollectionScene() {
left={
collection.isArchived ? (
<CollectionBreadcrumb collection={collection} />
) : collection.isEmpty ? undefined : (
) : (
<InputSearchPage
source="collection"
placeholder={`${t("Search in collection")}`}
@@ -206,7 +202,9 @@ const CollectionScene = observer(function _CollectionScene() {
popoverPosition="bottom-start"
onChange={handleIconChange}
borderOnHover
/>
>
{fallbackIcon}
</IconPicker>
</React.Suspense>
) : (
fallbackIcon
+19 -9
View File
@@ -4,7 +4,7 @@ import isEqual from "lodash/isEqual";
import { action, observable } from "mobx";
import { observer } from "mobx-react";
import { Node } from "prosemirror-model";
import { AllSelection } from "prosemirror-state";
import { AllSelection, TextSelection } from "prosemirror-state";
import * as React from "react";
import { WithTranslation, withTranslation } from "react-i18next";
import {
@@ -146,7 +146,17 @@ class DocumentScene extends React.Component<Props> {
}
}
replaceDocument = (template: Document | Revision) => {
/**
* Replaces the given selection with a template, if no selection is provided
* then the template is inserted at the beginning of the document.
*
* @param template The template to use
* @param selection The selection to replace, if any
*/
replaceSelection = (
template: Document | Revision,
selection?: TextSelection | AllSelection
) => {
const editorRef = this.editor.current;
if (!editorRef) {
@@ -154,6 +164,7 @@ class DocumentScene extends React.Component<Props> {
}
const { view, schema } = editorRef;
const sel = selection ?? TextSelection.near(view.state.doc.resolve(0));
const doc = Node.fromJSON(
schema,
ProsemirrorHelper.replaceTemplateVariables(
@@ -163,11 +174,7 @@ class DocumentScene extends React.Component<Props> {
);
if (doc) {
view.dispatch(
view.state.tr
.setSelection(new AllSelection(view.state.doc))
.replaceSelectionWith(doc)
);
view.dispatch(view.state.tr.setSelection(sel).replaceSelectionWith(doc));
}
this.isEditorDirty = true;
@@ -217,7 +224,10 @@ class DocumentScene extends React.Component<Props> {
});
if (response) {
await this.replaceDocument(response.data);
await this.replaceSelection(
response.data,
new AllSelection(editorRef.view.state.doc)
);
toast.success(t("Document restored"));
history.replace(this.props.document.url, history.location.state);
}
@@ -518,7 +528,7 @@ class DocumentScene extends React.Component<Props> {
}
savingIsDisabled={document.isSaving || this.isEmpty}
sharedTree={this.props.sharedTree}
onSelectTemplate={this.replaceDocument}
onSelectTemplate={this.replaceSelection}
onSave={this.onSave}
/>
<Main fullWidth={document.fullWidth} tocPosition={tocPos}>
@@ -387,6 +387,7 @@ function DocumentHeader({
neutral
/>
)}
onSelectTemplate={onSelectTemplate}
onFindAndReplace={editor?.commands.openFindAndReplace}
showToggleEmbeds={canToggleEmbeds}
showDisplayOptions
+4
View File
@@ -415,6 +415,10 @@ function KeyboardShortcuts() {
shortcut: <Key>---</Key>,
label: t("Horizontal divider"),
},
{
shortcut: <Key>{"|--"}</Key>,
label: t("Table"),
},
{
shortcut: <Key>{"```"}</Key>,
label: t("Code block"),
+1 -3
View File
@@ -67,9 +67,7 @@ function APIAndApps() {
/>
</Text>
) : (
<Trans>
{t("API keys have been disabled by an admin for your account")}
</Trans>
<Trans>API keys have been disabled by an admin for your account</Trans>
)}
<PaginatedList<ApiKey>
fetch={apiKeys.fetchPage}
+2 -2
View File
@@ -55,10 +55,10 @@ export function Integrations() {
</StickyFilters>
<Cards gap={30} wrap>
{groupedItems.connected.map((item) => (
{groupedItems.connected?.map((item) => (
<IntegrationCard key={item.path} integration={item} isConnected />
))}
{groupedItems.available.map((item) => (
{groupedItems.available?.map((item) => (
<IntegrationCard key={item.path} integration={item} />
))}
</Cards>
+6
View File
@@ -104,6 +104,9 @@ export default abstract class Store<T extends Model> {
if ("deletedAt" in item && item.deletedAt) {
return false;
}
if ("archivedAt" in item && item.archivedAt) {
return false;
}
return true;
})
.slice(0, options?.maxResults);
@@ -114,6 +117,9 @@ export default abstract class Store<T extends Model> {
if ("deletedAt" in item && item.deletedAt) {
return false;
}
if ("archivedAt" in item && item.archivedAt) {
return false;
}
if ("searchContent" in item) {
const seachables =
typeof item.searchContent === "string"
+20 -18
View File
@@ -14,6 +14,7 @@
"dev:backend": "NODE_ENV=development nodemon --exec \"yarn build:server && yarn dev\" -e js,ts,tsx --ignore *.test.ts --ignore data/ --ignore build/ --ignore app/ --ignore shared/editor --ignore server/migrations",
"dev:watch": "NODE_ENV=development yarn concurrently -n backend,frontend \"yarn dev:backend\" \"yarn vite:dev\"",
"lint": "eslint app server shared plugins",
"lint:changed": "git diff --name-only --diff-filter=ACMRTUXB | grep -E '\\.(js|jsx|ts|tsx)$' | xargs -r yarn eslint --fix",
"prepare": "husky install",
"postinstall": "yarn patch-package",
"install-local-ssl": "node ./server/scripts/install-local-ssl.js",
@@ -48,17 +49,17 @@
"> 0.25%, not dead"
],
"dependencies": {
"@aws-sdk/client-s3": "3.803.0",
"@aws-sdk/lib-storage": "3.803.0",
"@aws-sdk/s3-presigned-post": "3.803.0",
"@aws-sdk/s3-request-presigner": "3.803.0",
"@aws-sdk/signature-v4-crt": "^3.803.0",
"@aws-sdk/client-s3": "3.812.0",
"@aws-sdk/lib-storage": "3.812.0",
"@aws-sdk/s3-presigned-post": "3.812.0",
"@aws-sdk/s3-request-presigner": "3.812.0",
"@aws-sdk/signature-v4-crt": "^3.812.0",
"@babel/core": "^7.27.1",
"@babel/plugin-proposal-decorators": "^7.27.1",
"@babel/plugin-transform-class-properties": "^7.27.1",
"@babel/plugin-transform-destructuring": "^7.27.1",
"@babel/plugin-transform-regenerator": "^7.27.1",
"@babel/preset-env": "^7.27.1",
"@babel/preset-env": "^7.27.2",
"@babel/preset-react": "^7.27.1",
"@benrbray/prosemirror-math": "^0.2.2",
"@bull-board/api": "^6.7.10",
@@ -86,15 +87,15 @@
"@outlinewiki/koa-passport": "^4.2.1",
"@outlinewiki/passport-azure-ad-oauth2": "^0.1.0",
"@radix-ui/react-select": "^2.1.4",
"@radix-ui/react-visually-hidden": "^1.2.0",
"@radix-ui/react-visually-hidden": "^1.2.2",
"@renderlesskit/react": "^0.11.0",
"@sentry/node": "^7.120.3",
"@sentry/react": "^7.120.3",
"@tanstack/react-table": "^8.20.6",
"@tanstack/react-table": "^8.21.3",
"@tanstack/react-virtual": "^3.13.6",
"@tippyjs/react": "^4.2.6",
"@types/form-data": "^2.5.2",
"@types/mailparser": "^3.4.5",
"@types/mailparser": "^3.4.6",
"@types/sanitize-filename": "^1.6.3",
"@vitejs/plugin-react": "^3.1.0",
"addressparser": "^1.0.1",
@@ -197,13 +198,13 @@
"query-string": "^7.1.3",
"randomstring": "1.3.1",
"rate-limiter-flexible": "^2.4.2",
"react": "^17.0.2",
"react": "^18.2.0",
"react-avatar-editor": "^13.0.2",
"react-color": "^2.17.3",
"react-day-picker": "^8.10.1",
"react-dnd": "^16.0.1",
"react-dnd-html5-backend": "^16.0.1",
"react-dom": "^17.0.2",
"react-dom": "^18.2.0",
"react-dropzone": "^11.7.1",
"react-helmet-async": "^2.0.5",
"react-hook-form": "^7.54.2",
@@ -263,11 +264,12 @@
"zod": "^3.24.2"
},
"devDependencies": {
"@babel/cli": "^7.27.1",
"@babel/cli": "^7.27.2",
"@babel/preset-typescript": "^7.27.1",
"@faker-js/faker": "^8.4.1",
"@relative-ci/agent": "^4.3.0",
"@testing-library/react": "^12.0.0",
"@testing-library/jest-dom": "^6.4.2",
"@testing-library/react": "^14.0.0",
"@types/addressparser": "^1.0.3",
"@types/body-scroll-lock": "^3.1.2",
"@types/crypto-js": "^4.2.2",
@@ -307,10 +309,10 @@
"@types/png-chunks-extract": "^1.0.2",
"@types/quoted-printable": "^1.0.2",
"@types/randomstring": "^1.3.0",
"@types/react": "^17.0.34",
"@types/react": "^18.2.0",
"@types/react-avatar-editor": "^13.0.4",
"@types/react-color": "^3.0.13",
"@types/react-dom": "^17.0.11",
"@types/react-dom": "^18.2.0",
"@types/react-helmet": "^6.1.11",
"@types/react-portal": "^4.0.7",
"@types/react-router-dom": "^5.3.3",
@@ -343,7 +345,7 @@
"discord-api-types": "^0.37.119",
"eslint": "^8.57.0",
"eslint-config-prettier": "^8.10.0",
"eslint-import-resolver-typescript": "^3.8.0",
"eslint-import-resolver-typescript": "^3.10.1",
"eslint-plugin-es": "^4.1.0",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jsx-a11y": "^6.10.2",
@@ -361,7 +363,7 @@
"nodemon": "^3.1.10",
"postinstall-postinstall": "^2.1.0",
"prettier": "^2.8.8",
"react-refresh": "^0.14.2",
"react-refresh": "^0.17.0",
"rimraf": "^2.5.4",
"rollup-plugin-webpack-stats": "^2.0.5",
"terser": "^5.39.0",
@@ -379,6 +381,6 @@
"qs": "6.9.7",
"prismjs": "1.30.0"
},
"version": "0.83.0",
"version": "0.84.0",
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
}
+50 -52
View File
@@ -1,5 +1,5 @@
import Router from "koa-router";
import { NotificationEventType } from "@shared/types";
import { Client, NotificationEventType } from "@shared/types";
import { parseDomain } from "@shared/utils/domains";
import InviteAcceptedEmail from "@server/emails/templates/InviteAcceptedEmail";
import SigninEmail from "@server/emails/templates/SigninEmail";
@@ -86,66 +86,64 @@ router.post(
}
);
router.get(
"email.callback",
validate(T.EmailCallbackSchema),
async (ctx: APIContext<T.EmailCallbackReq>) => {
const { token, client, follow } = ctx.input.query;
const emailCallback = async (ctx: APIContext<T.EmailCallbackReq>) => {
const token = ctx.input.query?.token || ctx.input.body?.token;
const client = ctx.input.query?.client || ctx.input.body?.client;
const follow = ctx.input.query?.follow || ctx.input.body?.follow;
// The link in the email does not include the follow query param, this
// is to help prevent anti-virus, and email clients from pre-fetching the link
// and spending the token before the user clicks on it. Instead we redirect
// to the same URL with the follow query param added from the client side.
if (!follow) {
return ctx.redirectOnClient(ctx.request.href + "&follow=true");
}
// The link in the email does not include the follow query param, this
// is to help prevent anti-virus, and email clients from pre-fetching the link
// and spending the token before the user clicks on it. Instead we redirect
// to the same URL with the follow query param added from the client side.
if (!follow) {
return ctx.redirectOnClient(ctx.request.href + "&follow=true", "POST");
}
let user!: User;
let user!: User;
try {
user = await getUserForEmailSigninToken(token as string);
} catch (err) {
ctx.redirect(`/?notice=expired-token`);
return;
}
try {
user = await getUserForEmailSigninToken(token as string);
} catch (err) {
ctx.redirect(`/?notice=expired-token`);
return;
}
if (!user.team.emailSigninEnabled) {
return ctx.redirect("/?notice=auth-error");
}
if (!user.team.emailSigninEnabled) {
return ctx.redirect("/?notice=auth-error");
}
if (user.isSuspended) {
return ctx.redirect("/?notice=user-suspended");
}
if (user.isSuspended) {
return ctx.redirect("/?notice=user-suspended");
}
if (user.isInvited) {
await new WelcomeEmail({
to: user.email,
role: user.role,
if (user.isInvited) {
await new WelcomeEmail({
to: user.email,
role: user.role,
teamUrl: user.team.url,
}).schedule();
const inviter = await user.$get("invitedBy");
if (inviter?.subscribedToEventType(NotificationEventType.InviteAccepted)) {
await new InviteAcceptedEmail({
to: inviter.email,
inviterId: inviter.id,
invitedName: user.name,
teamUrl: user.team.url,
}).schedule();
const inviter = await user.$get("invitedBy");
if (
inviter?.subscribedToEventType(NotificationEventType.InviteAccepted)
) {
await new InviteAcceptedEmail({
to: inviter.email,
inviterId: inviter.id,
invitedName: user.name,
teamUrl: user.team.url,
}).schedule();
}
}
// set cookies on response and redirect to team subdomain
await signIn(ctx, "email", {
user,
team: user.team,
isNewTeam: false,
isNewUser: false,
client,
});
}
);
// set cookies on response and redirect to team subdomain
await signIn(ctx, "email", {
user,
team: user.team,
isNewTeam: false,
isNewUser: false,
client: client ?? Client.Web,
});
};
router.get("email.callback", validate(T.EmailCallbackSchema), emailCallback);
router.post("email.callback", validate(T.EmailCallbackSchema), emailCallback);
export default router;
+6 -1
View File
@@ -13,7 +13,12 @@ export type EmailReq = z.infer<typeof EmailSchema>;
export const EmailCallbackSchema = BaseSchema.extend({
query: z.object({
token: z.string(),
token: z.string().optional(),
client: z.nativeEnum(Client).default(Client.Web),
follow: z.string().default(""),
}),
body: z.object({
token: z.string().optional(),
client: z.nativeEnum(Client).default(Client.Web),
follow: z.string().default(""),
}),
+37 -7
View File
@@ -1,4 +1,5 @@
import passport from "@outlinewiki/koa-passport";
import JWT from "jsonwebtoken";
import type { Context } from "koa";
import Router from "koa-router";
import get from "lodash/get";
@@ -9,6 +10,7 @@ import {
OIDCMalformedUserInfoError,
AuthenticationError,
} from "@server/errors";
import Logger from "@server/logging/Logger";
import passportMiddleware from "@server/middlewares/passport";
import { AuthenticationProvider, User } from "@server/models";
import { AuthenticationResult } from "@server/types";
@@ -58,7 +60,7 @@ if (
ctx: Context,
accessToken: string,
refreshToken: string,
params: { expires_in: number },
params: { expires_in: number; id_token: string },
_profile: unknown,
done: (
err: Error | null,
@@ -78,14 +80,39 @@ if (
accessToken
);
if (!profile.email) {
// Some providers, namely ADFS, don't provide anything more than the `sub` claim in the userinfo endpoint
// So, we'll decode the params.id_token and see if that contains what we need.
const token = (() => {
try {
const decoded = JWT.decode(params.id_token);
if (!decoded || typeof decoded !== "object") {
Logger.warn("Decoded id_token is not a valid object");
return {};
}
return decoded as {
email?: string;
preferred_username?: string;
sub?: string;
};
} catch (err) {
Logger.error("id_token decode threw error: ", err);
return {};
}
})();
const email = profile.email ?? token.email ?? null;
if (!email) {
throw AuthenticationError(
`An email field was not returned in the profile parameter, but is required.`
`An email field was not returned in the profile or id_token parameter, but is required.`
);
}
const team = await getTeamFromContext(ctx);
const client = getClientFromContext(ctx);
const { domain } = parseEmail(profile.email);
const { domain } = parseEmail(email);
// Only a single OIDC provider is supported find the existing, if any.
const authenticationProvider = team
@@ -118,13 +145,16 @@ if (
// Claim name can be overriden using an env variable.
// Default is 'preferred_username' as per OIDC spec.
const username = get(profile, env.OIDC_USERNAME_CLAIM);
// This will default to the profile.preferred_username, but will fall back to preferred_username from the id_token
const username =
get(profile, env.OIDC_USERNAME_CLAIM) ??
get(token, env.OIDC_USERNAME_CLAIM);
const name = profile.name || username || profile.username;
const profileId = profile.sub ? profile.sub : profile.id;
if (!name) {
throw AuthenticationError(
`Neither a name or username was returned in the profile parameter, but at least one is required.`
`Neither a ${env.OIDC_USERNAME_CLAIM}, name or username was returned in the profile parameter, but at least one is required.`
);
}
@@ -138,7 +168,7 @@ if (
},
user: {
name,
email: profile.email,
email,
avatarUrl: profile.picture,
},
authenticationProvider: {
+3 -3
View File
@@ -156,9 +156,9 @@ if (env.SLACK_CLIENT_ID && env.SLACK_CLIENT_SECRET) {
switch (type) {
case IntegrationType.Post: {
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collectionId);
const collection = await Collection.findByPk(collectionId, {
userId: user.id,
});
authorize(user, "read", collection);
authorize(user, "update", user.team);
+8 -12
View File
@@ -116,12 +116,10 @@ export default async function loadDocument({
if (canReadDocument) {
if (document.collectionId) {
collection = await Collection.scope("withDocumentStructure").findByPk(
document.collectionId,
{
rejectOnEmpty: true,
}
);
collection = await Collection.findByPk(document.collectionId, {
includeDocumentStructure: true,
rejectOnEmpty: true,
});
}
return {
@@ -140,12 +138,10 @@ export default async function loadDocument({
// It is possible to disable sharing at the collection so we must check
if (document.collectionId) {
collection = await Collection.scope("withDocumentStructure").findByPk(
document.collectionId,
{
rejectOnEmpty: true,
}
);
collection = await Collection.findByPk(document.collectionId, {
includeDocumentStructure: true,
rejectOnEmpty: true,
});
}
if (!collection?.sharing) {
+12 -17
View File
@@ -65,21 +65,18 @@ async function documentMover({
result.documents.push(document);
} else {
// Load the current and the next collection upfront and lock them
const collection = await Collection.scope("withDocumentStructure").findByPk(
document.collectionId!,
{
transaction,
lock: Transaction.LOCK.UPDATE,
paranoid: false,
}
);
const collection = await Collection.findByPk(document.collectionId!, {
includeDocumentStructure: true,
transaction,
lock: Transaction.LOCK.UPDATE,
paranoid: false,
});
let newCollection = collection;
if (collectionChanged) {
if (collectionId) {
newCollection = await Collection.scope(
"withDocumentStructure"
).findByPk(collectionId, {
newCollection = await Collection.findByPk(collectionId, {
includeDocumentStructure: true,
transaction,
lock: Transaction.LOCK.UPDATE,
});
@@ -148,13 +145,11 @@ async function documentMover({
if (collectionId) {
// Reload the collection to get relationship data
newCollection = await Collection.scope([
{
method: ["withMembership", user.id],
},
]).findByPk(collectionId, {
transaction,
newCollection = await Collection.findByPk(collectionId, {
userId: user.id,
includeDocumentStructure: true,
rejectOnEmpty: true,
transaction,
});
result.collections.push(newCollection);
+6 -1
View File
@@ -296,7 +296,12 @@ export default abstract class BaseEmail<
return undefined;
}
let content = ProsemirrorHelper.toHTML(node, {
// Process user mentions to ensure they are uptodate with database
const processedNode = ProsemirrorHelper.toProsemirror(
await ProsemirrorHelper.processMentions(node)
);
let content = ProsemirrorHelper.toHTML(processedNode, {
centered: false,
});
@@ -37,9 +37,10 @@ export default class CollectionCreatedEmail extends BaseEmail<
}
protected async beforeSend(props: InputProps) {
const collection = await Collection.scope("withUser").findByPk(
props.collectionId
);
const collection = await Collection.findByPk(props.collectionId, {
includeOwner: true,
});
if (!collection) {
return false;
}
+46 -5
View File
@@ -13,6 +13,7 @@ import Router from "koa-router";
import { AddressInfo } from "net";
import stoppable from "stoppable";
import throng from "throng";
import escape from "lodash/escape";
import Logger from "./logging/Logger";
import services from "./services";
import { getArg } from "./utils/args";
@@ -88,13 +89,53 @@ async function start(_id: number, disconnect: () => void) {
app.use(defaultRateLimiter());
/** Perform a redirect on the browser so that the user's auth cookies are included in the request. */
app.context.redirectOnClient = function (url: string) {
app.context.redirectOnClient = function (
/** The URL to redirect to */
url: string,
/**
* The HTTP method to use for the redirect. Use POST when preventing links in emails from being
* clicked by bots. Otherwise, use GET.
*/
method: "GET" | "POST" = "GET"
) {
this.type = "text/html";
this.body = `
if (method === "POST") {
// For POST method, create a form that auto-submits
const urlObj = new URL(url);
const formAction = `${urlObj.origin}${urlObj.pathname}`;
const searchParams = urlObj.searchParams;
let formFields = "";
searchParams.forEach((value, key) => {
formFields += `<input type="hidden" name="${escape(
key
)}" value="${escape(value)}" />`;
});
this.body = `
<html>
<head>
<meta http-equiv="refresh" content="0;URL='${url}'"/>
</head>`;
<title>Redirecting…</title>
</head>
<body>
<form id="redirect-form" method="POST" action="${formAction}">
${formFields}
</form>
<script nonce="${this.state.cspNonce}">
document.getElementById('redirect-form').submit();
</script>
</body>
</html>`;
} else {
// Default GET method using meta refresh
this.body = `
<html>
<head>
<meta http-equiv="refresh" content="0;URL='${escape(url)}'" />
</head>
</html>`;
}
};
// Add a health check endpoint to all services
@@ -133,7 +174,7 @@ async function start(_id: number, disconnect: () => void) {
server.on("error", (err) => {
if ("code" in err && err.code === "EADDRINUSE") {
Logger.error(`Port ${normalizedPort} is already in use. Exiting…`, err);
Logger.error(`Port ${normalizedPort} is already in use. Exiting…`, err);
process.exit(0);
}
+3 -1
View File
@@ -1,5 +1,6 @@
import { Next } from "koa";
import { parseDomain } from "@shared/utils/domains";
import Logger from "@server/logging/Logger";
import { Team } from "@server/models";
import { APIContext } from "@server/types";
@@ -37,7 +38,7 @@ export default function apexAuthRedirect<T>({
if (teamId) {
try {
const team = await Team.findByPk(teamId, {
attributes: ["id", "subdomain"],
attributes: ["id", "domain", "subdomain"],
rejectOnEmpty: true,
});
@@ -45,6 +46,7 @@ export default function apexAuthRedirect<T>({
? ctx.redirect("/")
: ctx.redirectOnClient(getRedirectPath(ctx, team));
} catch (err) {
Logger.error("Error fetching team", err);
return ctx.redirect(getErrorPath(ctx));
}
} else {
+61
View File
@@ -0,0 +1,61 @@
import crypto from "crypto";
import { Context, Next } from "koa";
import { contentSecurityPolicy } from "koa-helmet";
import uniq from "lodash/uniq";
import env from "@server/env";
/**
* Create a Content Security Policy middleware for the application.
*/
export default function createCSPMiddleware() {
// Construct scripts CSP based on options in use
const defaultSrc = ["'self'"];
const scriptSrc = ["'self'"];
const styleSrc = ["'self'", "'unsafe-inline'"];
if (env.isCloudHosted) {
scriptSrc.push("www.googletagmanager.com");
scriptSrc.push("cdn.zapier.com");
styleSrc.push("cdn.zapier.com");
}
// Allow to load assets from Vite
if (!env.isProduction) {
scriptSrc.push(env.URL.replace(`:${env.PORT}`, ":3001"));
scriptSrc.push("localhost:3001");
}
if (env.GOOGLE_ANALYTICS_ID) {
scriptSrc.push("www.googletagmanager.com");
scriptSrc.push("www.google-analytics.com");
}
if (env.CDN_URL) {
scriptSrc.push(env.CDN_URL);
styleSrc.push(env.CDN_URL);
defaultSrc.push(env.CDN_URL);
}
return function cspMiddleware(ctx: Context, next: Next) {
ctx.state.cspNonce = crypto.randomBytes(16).toString("hex");
return contentSecurityPolicy({
directives: {
defaultSrc,
styleSrc,
scriptSrc: [
...uniq(scriptSrc),
env.DEVELOPMENT_UNSAFE_INLINE_CSP
? "'unsafe-inline'"
: `'nonce-${ctx.state.cspNonce}'`,
],
mediaSrc: ["*", "data:", "blob:"],
imgSrc: ["*", "data:", "blob:"],
frameSrc: ["*", "data:"],
// Do not use connect-src: because self + websockets does not work in
// Safari, ref: https://bugs.webkit.org/show_bug.cgi?id=201591
connectSrc: ["*"],
},
})(ctx, next);
};
}
+64 -10
View File
@@ -14,6 +14,8 @@ import {
EmptyResultError,
type CreateOptions,
type UpdateOptions,
type ScopeOptions,
type SaveOptions,
} from "sequelize";
import {
Sequelize,
@@ -38,6 +40,7 @@ import {
BeforeCreate,
BeforeUpdate,
DefaultScope,
AfterSave,
} from "sequelize-typescript";
import isUUID from "validator/lib/isUUID";
import type { CollectionSort, ProsemirrorData } from "@shared/types";
@@ -47,6 +50,7 @@ import { sortNavigationNodes } from "@shared/utils/collections";
import slugify from "@shared/utils/slugify";
import { CollectionValidation } from "@shared/validations";
import { ValidationError } from "@server/errors";
import { CacheHelper } from "@server/utils/CacheHelper";
import removeIndexCollision from "@server/utils/removeIndexCollision";
import { generateUrlId } from "@server/utils/url";
import { ValidateIndex } from "@server/validation";
@@ -67,6 +71,9 @@ import Length from "./validators/Length";
import NotContainsUrl from "./validators/NotContainsUrl";
type AdditionalFindOptions = {
userId?: string;
includeDocumentStructure?: boolean;
includeOwner?: boolean;
rejectOnEmpty?: boolean | Error;
};
@@ -330,6 +337,34 @@ class Collection extends ParanoidModel<
if (!model.content) {
model.content = await DocumentHelper.toJSON(model);
}
if (model.changed("documentStructure")) {
await CacheHelper.clearData(
CacheHelper.getCollectionDocumentsKey(model.id)
);
}
}
@AfterSave
static async cacheDocumentStructure(
model: Collection,
options: SaveOptions<Collection>
) {
if (model.changed("documentStructure")) {
const setData = () =>
CacheHelper.setData(
CacheHelper.getCollectionDocumentsKey(model.id),
model.documentStructure,
60
);
if (options.transaction) {
return (options.transaction.parent || options.transaction).afterCommit(
setData
);
}
await setData();
}
}
@BeforeDestroy
@@ -392,8 +427,11 @@ class Collection extends ParanoidModel<
model: Collection,
options: UpdateOptions<Collection>
) {
if (model.index && model.changed("index")) {
model.index = await removeIndexCollision(model.teamId, model.index, {
if (
(model.index && model.changed("index")) ||
(!model.archivedAt && model.changed("archivedAt"))
) {
model.index = await removeIndexCollision(model.teamId, model.index!, {
transaction: options.transaction,
});
}
@@ -466,9 +504,9 @@ class Collection extends ParanoidModel<
* @returns userIds
*/
static async membershipUserIds(collectionId: string) {
const collection = await this.scope("withAllMemberships").findByPk(
collectionId
);
const collection = await this.scope("withAllMemberships").findOne({
where: { id: collectionId },
});
if (!collection) {
return [];
}
@@ -485,6 +523,7 @@ class Collection extends ParanoidModel<
/**
* Overrides the standard findByPk behavior to allow also querying by urlId
* and loading memberships for a user passed in by `userId`
*
* @param id uuid or urlId
* @param options FindOptions
@@ -506,16 +545,31 @@ class Collection extends ParanoidModel<
return null;
}
const { includeDocumentStructure, includeOwner, userId, ...rest } = options;
const scopes: (string | ScopeOptions)[] = [
includeDocumentStructure ? "withDocumentStructure" : "defaultScope",
{
method: ["withMembership", userId],
},
];
if (includeOwner) {
scopes.push("withUser");
}
const scope = this.scope(scopes);
if (isUUID(id)) {
const collection = await this.findOne({
const collection = await scope.findOne({
where: {
id,
},
...options,
...rest,
rejectOnEmpty: false,
});
if (!collection && options.rejectOnEmpty) {
if (!collection && rest.rejectOnEmpty) {
throw new EmptyResultError(`Collection doesn't exist with id: ${id}`);
}
@@ -524,7 +578,7 @@ class Collection extends ParanoidModel<
const match = id.match(UrlHelper.SLUG_URL_REGEX);
if (match) {
const collection = await this.findOne({
const collection = await scope.findOne({
where: {
urlId: match[1],
},
@@ -532,7 +586,7 @@ class Collection extends ParanoidModel<
rejectOnEmpty: false,
});
if (!collection && options.rejectOnEmpty) {
if (!collection && rest.rejectOnEmpty) {
throw new EmptyResultError(`Collection doesn't exist with id: ${id}`);
}
+26 -33
View File
@@ -426,13 +426,11 @@ class Document extends ArchivableModel<
return;
}
const collection = await Collection.scope("withDocumentStructure").findByPk(
model.collectionId,
{
transaction,
lock: Transaction.LOCK.UPDATE,
}
);
const collection = await Collection.findByPk(model.collectionId, {
includeDocumentStructure: true,
transaction,
lock: Transaction.LOCK.UPDATE,
});
if (!collection) {
return;
}
@@ -453,9 +451,8 @@ class Document extends ArchivableModel<
}
return this.sequelize!.transaction(async (transaction: Transaction) => {
const collection = await Collection.scope(
"withDocumentStructure"
).findByPk(model.collectionId!, {
const collection = await Collection.findByPk(model.collectionId!, {
includeDocumentStructure: true,
transaction,
lock: transaction.LOCK.UPDATE,
});
@@ -667,10 +664,11 @@ class Document extends ArchivableModel<
/**
* Overrides the standard findByPk behavior to allow also querying by urlId
* and loading memberships for a user passed in by `userId`
*
* @param id uuid or urlId
* @param options FindOptions
* @returns A promise resolving to a collection instance or null
* @returns A promise resolving to a document instance or null
*/
static async findByPk(
id: Identifier,
@@ -695,7 +693,7 @@ class Document extends ArchivableModel<
// almost every endpoint needs the collection membership to determine policy permissions.
const scope = this.scope([
"withDrafts",
options.includeState ? "withState" : "withoutState",
includeState ? "withState" : "withoutState",
{
method: ["withViews", userId],
},
@@ -943,9 +941,8 @@ class Document extends ArchivableModel<
}
if (!this.template && this.collectionId) {
const collection = await Collection.scope(
"withDocumentStructure"
).findByPk(this.collectionId, {
const collection = await Collection.findByPk(this.collectionId, {
includeDocumentStructure: true,
transaction,
lock: Transaction.LOCK.UPDATE,
});
@@ -1012,13 +1009,11 @@ class Document extends ArchivableModel<
await this.sequelize.transaction(async (transaction: Transaction) => {
const collection = this.collectionId
? await Collection.scope("withDocumentStructure").findByPk(
this.collectionId,
{
transaction,
lock: transaction.LOCK.UPDATE,
}
)
? await Collection.findByPk(this.collectionId, {
includeDocumentStructure: true,
transaction,
lock: transaction.LOCK.UPDATE,
})
: undefined;
if (collection) {
@@ -1049,13 +1044,11 @@ class Document extends ArchivableModel<
archive = async (user: User, options?: FindOptions) => {
const { transaction } = { ...options };
const collection = this.collectionId
? await Collection.scope("withDocumentStructure").findByPk(
this.collectionId,
{
transaction,
lock: transaction?.LOCK.UPDATE,
}
)
? await Collection.findByPk(this.collectionId, {
includeDocumentStructure: true,
transaction,
lock: transaction?.LOCK.UPDATE,
})
: undefined;
if (collection) {
@@ -1076,7 +1069,8 @@ class Document extends ArchivableModel<
) => {
const { transaction } = { ...options };
const collection = collectionId
? await Collection.scope("withDocumentStructure").findByPk(collectionId, {
? await Collection.findByPk(collectionId, {
includeDocumentStructure: true,
transaction,
lock: transaction?.LOCK.UPDATE,
})
@@ -1128,9 +1122,8 @@ class Document extends ArchivableModel<
let deleted = false;
if (!this.template && this.collectionId) {
const collection = await Collection.scope(
"withDocumentStructure"
).findByPk(this.collectionId!, {
const collection = await Collection.findByPk(this.collectionId!, {
includeDocumentStructure: true,
transaction,
lock: transaction.LOCK.UPDATE,
paranoid: false,
+179 -1
View File
@@ -1,9 +1,187 @@
import { faker } from "@faker-js/faker";
import { DeepPartial } from "utility-types";
import { MentionType, ProsemirrorData } from "@shared/types";
import { buildProseMirrorDoc } from "@server/test/factories";
import { buildProseMirrorDoc, buildUser } from "@server/test/factories";
import { MentionAttrs, ProsemirrorHelper } from "./ProsemirrorHelper";
describe("ProsemirrorHelper", () => {
describe("processMentions", () => {
it("should handle deleted users", async () => {
const user = await buildUser();
const mentionAttrs: MentionAttrs = {
id: "9a17c1c8-d178-4350-9001-203a73070fcb",
type: MentionType.User,
label: "test.user",
actorId: user.id,
modelId: user.id,
};
await user.destroy();
const mentionedParagraph: DeepPartial<ProsemirrorData> = {
type: "paragraph",
content: [
{
type: "text",
text: "a paragraph with ",
},
{
type: "mention",
attrs: mentionAttrs,
},
{
type: "text",
text: " mentioned",
},
],
};
const doc = buildProseMirrorDoc([
{
type: "paragraph",
content: [
{
type: "text",
text: "some content in a paragraph",
},
],
},
mentionedParagraph,
]);
const newDoc = await ProsemirrorHelper.processMentions(doc);
expect(newDoc.content?.[1]?.content?.[1].attrs?.label).toEqual("Unknown");
});
it("should handle updated users", async () => {
const user = await buildUser();
const mentionAttrs: MentionAttrs = {
id: "9a17c1c8-d178-4350-9001-203a73070fcb",
type: MentionType.User,
label: "test.user",
actorId: user.id,
modelId: user.id,
};
await user.update({
name: faker.name.firstName(),
});
const mentionedParagraph: DeepPartial<ProsemirrorData> = {
type: "paragraph",
content: [
{
type: "text",
text: "a paragraph with ",
},
{
type: "mention",
attrs: mentionAttrs,
},
{
type: "text",
text: " mentioned",
},
],
};
const doc = buildProseMirrorDoc([
{
type: "paragraph",
content: [
{
type: "text",
text: "some content in a paragraph",
},
],
},
mentionedParagraph,
]);
const newDoc = await ProsemirrorHelper.processMentions(doc);
expect(newDoc.content?.[1]?.content?.[1].attrs?.label).toEqual(user.name);
});
it("should handle multiple renamed users", async () => {
const firstUser = await buildUser();
const secondUser = await buildUser();
const firstMentionAttrs: MentionAttrs = {
id: "9a17c1c8-d178-4350-9001-203a73070fcb",
type: MentionType.User,
label: "first.user",
actorId: firstUser.id,
modelId: firstUser.id,
};
const secondMentionAttrs: MentionAttrs = {
id: "31d5899f-e544-4ff6-b6d3-c49dd6b81901",
type: MentionType.User,
label: "second.user",
actorId: secondUser.id,
modelId: secondUser.id,
};
const firstNewName = faker.name.firstName();
const secondNewName = faker.name.firstName();
await firstUser.update({
name: firstNewName,
});
await secondUser.update({
name: secondNewName,
});
const mentionedParagraph: DeepPartial<ProsemirrorData> = {
type: "paragraph",
content: [
{
type: "text",
text: "a paragraph with ",
},
{
type: "mention",
attrs: firstMentionAttrs,
},
{
type: "text",
text: " and ",
},
{
type: "mention",
attrs: secondMentionAttrs,
},
{
type: "text",
text: " mentioned",
},
],
};
const doc = buildProseMirrorDoc([
{
type: "paragraph",
content: [
{
type: "text",
text: "some content in a paragraph",
},
],
},
mentionedParagraph,
]);
const newDoc = await ProsemirrorHelper.processMentions(doc);
expect(newDoc.content?.[1]?.content?.[1].attrs?.label).toEqual(
firstNewName
);
expect(newDoc.content?.[1]?.content?.[3].attrs?.label).toEqual(
secondNewName
);
});
});
describe("getNodeForMentionEmail", () => {
it("should return the paragraph node", () => {
const mentionAttrs: MentionAttrs = {
+77 -1
View File
@@ -21,6 +21,7 @@ import { schema, parser } from "@server/editor";
import Logger from "@server/logging/Logger";
import { trace } from "@server/logging/tracing";
import Attachment from "@server/models/Attachment";
import User from "@server/models/User";
import FileStorage from "@server/storage/files";
export type HTMLOptions = {
@@ -490,7 +491,7 @@ export class ProsemirrorHelper {
// Render the Prosemirror document using virtual DOM and serialize the
// result to a string
const dom = new JSDOM(
`<!DOCTYPE html>${
`<!DOCTYPE html><meta charset="utf-8">${
options?.includeStyles === false ? "" : styleTags
}${html}`
);
@@ -558,4 +559,79 @@ export class ProsemirrorHelper {
return dom.serialize();
}
/**
* Processes mentions in the Prosemirror data, ensuring that mentions
* for deleted users are displayed as "@unknown" and updated names are
* displayed correctly.
*
* @param data The ProsemirrorData object to process
* @returns The processed ProsemirrorData with updated mentions
*/
static async processMentions(data: ProsemirrorData | Node) {
const json = "toJSON" in data ? (data.toJSON() as ProsemirrorData) : data;
// First pass: collect all user IDs from mentions
const userIds: string[] = [];
function collectUserIds(node: ProsemirrorData) {
if (
node.type === "mention" &&
node.attrs?.type === MentionType.User &&
node.attrs?.modelId
) {
userIds.push(node.attrs.modelId as string);
}
if (node.content) {
for (const child of node.content) {
collectUserIds(child);
}
}
}
collectUserIds(json);
// Load all users in a single query
const uniqueUserIds = [...new Set(userIds)];
const users = uniqueUserIds.length
? await User.findAll({
where: {
id: uniqueUserIds,
},
attributes: ["id", "name"],
})
: [];
// Create a map for quick lookup
const userMap = new Map();
users.forEach((user) => {
userMap.set(user.id, user.name);
});
// Second pass: transform mentions with loaded user data
function transformMentions(node: ProsemirrorData) {
if (
node.type === "mention" &&
node.attrs?.type === MentionType.User &&
node.attrs?.modelId
) {
const userId = node.attrs.modelId as string;
node.attrs = {
...node.attrs,
label: userMap.get(userId) || "Unknown",
};
}
if (node.content) {
for (const child of node.content) {
transformMentions(child);
}
}
return node;
}
return transformMentions(json);
}
}
+39 -39
View File
@@ -14,9 +14,9 @@ describe("admin", () => {
const admin = await buildAdmin({ teamId: team.id });
const collection = await buildCollection({ teamId: team.id });
// reload to get membership
const reloaded = await Collection.scope({
method: ["withMembership", admin.id],
}).findByPk(collection.id);
const reloaded = await Collection.findByPk(collection.id, {
userId: admin.id,
});
const abilities = serialize(admin, reloaded);
expect(abilities.read).toBeTruthy();
expect(abilities.update).toBeTruthy();
@@ -36,9 +36,9 @@ describe("admin", () => {
permission: null,
});
// reload to get membership
const reloaded = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collection.id);
const reloaded = await Collection.findByPk(collection.id, {
userId: user.id,
});
const abilities = serialize(user, reloaded);
expect(abilities.readDocument).toEqual(false);
expect(abilities.updateDocument).toEqual(false);
@@ -59,9 +59,9 @@ describe("admin", () => {
permission: CollectionPermission.Read,
});
// reload to get membership
const reloaded = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collection.id);
const reloaded = await Collection.findByPk(collection.id, {
userId: user.id,
});
const abilities = serialize(user, reloaded);
expect(abilities.readDocument).toBeTruthy();
expect(abilities.updateDocument).toBeTruthy();
@@ -87,9 +87,9 @@ describe("member", () => {
},
});
// reload to get membership
const reloaded = await Collection.scope({
method: ["withMembership", member.id],
}).findByPk(collection.id);
const reloaded = await Collection.findByPk(collection.id, {
userId: member.id,
});
const abilities = serialize(member, reloaded);
expect(abilities.read).toBeTruthy();
expect(abilities.update).toBeTruthy();
@@ -116,9 +116,9 @@ describe("member", () => {
},
});
// reload to get membership
const reloaded = await Collection.scope({
method: ["withMembership", member.id],
}).findByPk(collection.id);
const reloaded = await Collection.findByPk(collection.id, {
userId: member.id,
});
const abilities = serialize(member, reloaded);
expect(abilities.read).toBeTruthy();
expect(abilities.update).toBe(false);
@@ -161,9 +161,9 @@ describe("member", () => {
permission: CollectionPermission.Read,
});
// reload to get membership
const reloaded = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collection.id);
const reloaded = await Collection.findByPk(collection.id, {
userId: user.id,
});
const abilities = serialize(user, reloaded);
expect(abilities.read).toBeTruthy();
expect(abilities.readDocument).toBeTruthy();
@@ -189,9 +189,9 @@ describe("member", () => {
},
});
// reload to get membership
const reloaded = await Collection.scope({
method: ["withMembership", member.id],
}).findByPk(collection.id);
const reloaded = await Collection.findByPk(collection.id, {
userId: member.id,
});
const abilities = serialize(member, reloaded);
expect(abilities.read).toBeTruthy();
expect(abilities.update).not.toBeTruthy();
@@ -232,9 +232,9 @@ describe("member", () => {
},
});
// reload to get membership
const reloaded = await Collection.scope({
method: ["withMembership", member.id],
}).findByPk(collection.id);
const reloaded = await Collection.findByPk(collection.id, {
userId: member.id,
});
const abilities = serialize(member, reloaded);
expect(abilities.read).toBeTruthy();
expect(abilities.readDocument).toBeTruthy();
@@ -279,9 +279,9 @@ describe("member", () => {
permission: CollectionPermission.ReadWrite,
});
// reload to get membership
const reloaded = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collection.id);
const reloaded = await Collection.findByPk(collection.id, {
userId: user.id,
});
const abilities = serialize(user, reloaded);
expect(abilities.read).toBeTruthy();
expect(abilities.readDocument).toBeTruthy();
@@ -331,9 +331,9 @@ describe("viewer", () => {
permission: CollectionPermission.ReadWrite,
});
// reload to get membership
const reloaded = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collection.id);
const reloaded = await Collection.findByPk(collection.id, {
userId: user.id,
});
const abilities = serialize(user, reloaded);
expect(abilities.read).toBeTruthy();
expect(abilities.readDocument).toBeTruthy();
@@ -361,9 +361,9 @@ describe("viewer", () => {
permission: CollectionPermission.ReadWrite,
});
// reload to get membership
const reloaded = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collection.id);
const reloaded = await Collection.findByPk(collection.id, {
userId: user.id,
});
const abilities = serialize(user, reloaded);
expect(abilities.read).toBeTruthy();
expect(abilities.readDocument).toBeTruthy();
@@ -409,9 +409,9 @@ describe("viewer", () => {
permission: CollectionPermission.ReadWrite,
});
// reload to get membership
const reloaded = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collection.id);
const reloaded = await Collection.findByPk(collection.id, {
userId: user.id,
});
const abilities = serialize(user, reloaded);
expect(abilities.read).toBeTruthy();
expect(abilities.readDocument).toBeTruthy();
@@ -462,9 +462,9 @@ describe("guest", () => {
permission: CollectionPermission.Read,
});
// reload to get membership
const reloaded = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collection.id);
const reloaded = await Collection.findByPk(collection.id, {
userId: user.id,
});
const abilities = serialize(user, reloaded);
expect(abilities.read).toBeTruthy();
expect(abilities.readDocument).toBeTruthy();
+18 -12
View File
@@ -353,9 +353,9 @@ export default class WebsocketsProcessor {
case "collections.remove_user": {
const [collection, user] = await Promise.all([
Collection.scope({
method: ["withMembership", event.userId],
}).findByPk(event.collectionId),
Collection.findByPk(event.collectionId, {
userId: event.userId,
}),
User.findByPk(event.userId),
]);
if (!user) {
@@ -424,9 +424,9 @@ export default class WebsocketsProcessor {
async (groupUsers) => {
for (const groupUser of groupUsers) {
const [collection, user] = await Promise.all([
Collection.scope({
method: ["withMembership", groupUser.userId],
}).findByPk(event.collectionId),
Collection.findByPk(event.collectionId, {
userId: groupUser.userId,
}),
User.findByPk(groupUser.userId),
]);
if (!user) {
@@ -716,9 +716,12 @@ export default class WebsocketsProcessor {
presentGroupMembership(groupMembership)
);
const collection = await Collection.scope({
method: ["withMembership", event.userId],
}).findByPk(groupMembership.collectionId);
const collection = await Collection.findByPk(
groupMembership.collectionId,
{
userId: event.userId,
}
);
if (cannot(user, "read", collection)) {
// tell any user clients to disconnect from the websocket channel for the collection
@@ -772,9 +775,12 @@ export default class WebsocketsProcessor {
.to(`user-${groupUser.userId}`)
.emit("collections.remove_group", payload);
const collection = await Collection.scope({
method: ["withMembership", groupUser.userId],
}).findByPk(groupMembership.collectionId);
const collection = await Collection.findByPk(
groupMembership.collectionId,
{
userId: groupUser.userId,
}
);
if (cannot(groupUser.user, "read", collection)) {
// tell any user clients to disconnect from the websocket channel for the collection
@@ -17,8 +17,10 @@ export default class CleanupDeletedDocumentsTask extends BaseTask<Props> {
"task",
`Permanently destroying upto ${limit} documents older than 30 days…`
);
const documents = await Document.scope("withDrafts").findAll({
attributes: ["id", "teamId", "content", "text", "deletedAt"],
const documents = await Document.scope([
"withDrafts",
"withoutState",
]).findAll({
where: {
deletedAt: {
[Op.lt]: subDays(new Date(), 30),
@@ -16,9 +16,9 @@ export default class CollectionSubscriptionRemoveUserTask extends BaseTask<Colle
return;
}
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(event.collectionId);
const collection = await Collection.findByPk(event.collectionId, {
userId: user.id,
});
if (can(user, "read", collection)) {
Logger.debug(
@@ -1917,4 +1917,34 @@ describe("#collections.restore", () => {
expect(body.data.archivedAt).toBe(null);
expect(collection.documentStructure).not.toBe(null);
});
it("should resolve index collision when restoring", async () => {
const admin = await buildAdmin();
let collection = await buildCollection({
teamId: admin.teamId,
});
let archivedCollection = await buildCollection({
teamId: admin.teamId,
archivedAt: new Date(),
archivedById: admin.id,
});
[collection, archivedCollection] = await Promise.all([
collection.update({ index: "P" }, { hooks: false }),
archivedCollection.update({ index: "P" }, { hooks: false }),
]);
expect(collection.index).toEqual("P");
expect(archivedCollection.index).toEqual("P");
const res = await server.post("/api/collections.restore", {
body: {
token: admin.getJwtToken(),
id: archivedCollection.id,
},
});
const body = await res.json();
expect(res.status).toEqual(200);
expect(body.data.archivedAt).toBe(null);
expect(body.data.index).not.toBe("P");
});
});
+51 -49
View File
@@ -1,4 +1,3 @@
import invariant from "invariant";
import Router from "koa-router";
import { Sequelize, Op, WhereOptions } from "sequelize";
import {
@@ -39,6 +38,7 @@ import {
presentFileOperation,
} from "@server/presenters";
import { APIContext } from "@server/types";
import { CacheHelper } from "@server/utils/CacheHelper";
import { RateLimiterStrategy } from "@server/utils/RateLimiter";
import { collectionIndexing } from "@server/utils/indexing";
import pagination from "../middlewares/pagination";
@@ -96,12 +96,11 @@ router.post(
},
});
// we must reload the collection to get memberships for policy presenter
const reloaded = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collection.id, {
const reloaded = await Collection.findByPk(collection.id, {
userId: user.id,
transaction,
rejectOnEmpty: true,
});
invariant(reloaded, "collection not found");
ctx.body = {
data: await presentCollection(ctx, reloaded),
@@ -118,11 +117,14 @@ router.post(
const { id } = ctx.input.body;
const { user } = ctx.state.auth;
const collection = await Collection.scope([
"defaultScope",
"withArchivedBy",
{
method: ["withMembership", user.id],
},
"withArchivedBy",
]).findByPk(id);
]).findOne({
where: { id },
});
authorize(user, "read", collection);
@@ -140,16 +142,27 @@ router.post(
async (ctx: APIContext<T.CollectionsDocumentsReq>) => {
const { id } = ctx.input.body;
const { user } = ctx.state.auth;
const collection = await Collection.scope([
{
method: ["withMembership", user.id],
},
]).findByPk(id);
const collection = await Collection.findByPk(id, {
userId: user.id,
});
authorize(user, "readDocument", collection);
const documentStructure = await CacheHelper.getDataOrSet(
CacheHelper.getCollectionDocumentsKey(collection.id),
async () =>
(
await Collection.findByPk(collection.id, {
attributes: ["documentStructure"],
includeDocumentStructure: true,
rejectOnEmpty: true,
})
).documentStructure,
60
);
ctx.body = {
data: collection.documentStructure || [],
data: documentStructure || [],
};
}
);
@@ -201,9 +214,7 @@ router.post(
const { user } = ctx.state.auth;
const [collection, group] = await Promise.all([
Collection.scope({
method: ["withMembership", user.id],
}).findByPk(id, { transaction }),
Collection.findByPk(id, { userId: user.id, transaction }),
Group.findByPk(groupId, { transaction }),
]);
authorize(user, "update", collection);
@@ -248,9 +259,8 @@ router.post(
const { transaction } = ctx.state;
const [collection, group] = await Promise.all([
Collection.scope({
method: ["withMembership", user.id],
}).findByPk(id, {
Collection.findByPk(id, {
userId: user.id,
transaction,
}),
Group.findByPk(groupId, {
@@ -286,9 +296,9 @@ router.post(
const { id, query, permission } = ctx.input.body;
const { user } = ctx.state.auth;
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(id);
const collection = await Collection.findByPk(id, {
userId: user.id,
});
authorize(user, "read", collection);
let where: WhereOptions<GroupMembership> = {
@@ -356,9 +366,7 @@ router.post(
const { id, userId, permission } = ctx.input.body;
const [collection, user] = await Promise.all([
Collection.scope({
method: ["withMembership", actor.id],
}).findByPk(id, { transaction }),
Collection.findByPk(id, { userId, transaction }),
User.findByPk(userId, { transaction }),
]);
authorize(actor, "update", collection);
@@ -402,9 +410,7 @@ router.post(
const { id, userId } = ctx.input.body;
const [collection, user] = await Promise.all([
Collection.scope({
method: ["withMembership", actor.id],
}).findByPk(id, { transaction }),
Collection.findByPk(id, { userId, transaction }),
User.findByPk(userId, { transaction }),
]);
authorize(actor, "update", collection);
@@ -435,9 +441,9 @@ router.post(
const { id, query, permission } = ctx.input.body;
const { user } = ctx.state.auth;
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(id);
const collection = await Collection.findByPk(id, {
userId: user.id,
});
authorize(user, "read", collection);
let where: WhereOptions<UserMembership> = {
@@ -503,9 +509,10 @@ router.post(
const team = await Team.findByPk(user.teamId, { transaction });
authorize(user, "createExport", team);
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(id, { transaction });
const collection = await Collection.findByPk(id, {
userId: user.id,
transaction,
});
authorize(user, "export", collection);
const fileOperation = await collectionExporter({
@@ -576,9 +583,8 @@ router.post(
} = ctx.input.body;
const { user } = ctx.state.auth;
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(id, {
const collection = await Collection.findByPk(id, {
userId: user.id,
transaction,
});
authorize(user, "update", collection);
@@ -814,9 +820,8 @@ router.post(
const { id } = ctx.input.body;
const { user } = ctx.state.auth;
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(id, {
const collection = await Collection.findByPk(id, {
userId: user.id,
transaction,
});
@@ -845,11 +850,8 @@ router.post(
const { id } = ctx.input.body;
const { user } = ctx.state.auth;
const collection = await Collection.scope([
{
method: ["withMembership", user.id],
},
]).findByPk(id, {
const collection = await Collection.findByPk(id, {
userId: user.id,
transaction,
rejectOnEmpty: true,
});
@@ -905,11 +907,11 @@ router.post(
const { id } = ctx.input.body;
const { user } = ctx.state.auth;
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(id, {
transaction,
const collection = await Collection.findByPk(id, {
userId: user.id,
includeDocumentStructure: true,
rejectOnEmpty: true,
transaction,
});
authorize(user, "restore", collection);
+3 -1
View File
@@ -154,7 +154,9 @@ router.post(
]);
comments.forEach((comment) => (comment.document = document));
} else if (collectionId) {
const collection = await Collection.findByPk(collectionId);
const collection = await Collection.findByPk(collectionId, {
userId: user.id,
});
authorize(user, "read", collection);
const include = [
{
+49 -58
View File
@@ -133,12 +133,10 @@ router.post(
// if a specific collection is passed then we need to check auth to view it
if (collectionId) {
where[Op.and].push({ collectionId: [collectionId] });
const collection = await Collection.scope([
sort === "index" ? "withDocumentStructure" : "defaultScope",
{
method: ["withMembership", user.id],
},
]).findByPk(collectionId);
const collection = await Collection.findByPk(collectionId, {
userId: user.id,
includeDocumentStructure: sort === "index",
});
authorize(user, "readDocument", collection);
@@ -331,9 +329,9 @@ router.post(
// if a specific collection is passed then we need to check auth to view it
if (collectionId) {
where = { ...where, collectionId };
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collectionId);
const collection = await Collection.findByPk(collectionId, {
userId: user.id,
});
authorize(user, "readDocument", collection);
// index sort is special because it uses the order of the documents in the
@@ -512,9 +510,9 @@ router.post(
const { user } = ctx.state.auth;
if (collectionId) {
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collectionId);
const collection = await Collection.findByPk(collectionId, {
userId: user.id,
});
authorize(user, "readDocument", collection);
}
@@ -821,15 +819,20 @@ router.post(
const destCollectionId = collectionId ?? sourceCollectionId;
const srcCollection = sourceCollectionId
? await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(sourceCollectionId, { paranoid: false })
? await Collection.findByPk(sourceCollectionId, {
userId: user.id,
includeDocumentStructure: true,
paranoid: false,
transaction,
})
: undefined;
const destCollection = destCollectionId
? await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(destCollectionId)
? await Collection.findByPk(destCollectionId, {
userId: user.id,
includeDocumentStructure: true,
transaction,
})
: undefined;
// In case of workspace templates, both source and destination collections are undefined.
@@ -931,9 +934,9 @@ router.post(
let collaboratorIds = undefined;
if (collectionId) {
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collectionId);
const collection = await Collection.findByPk(collectionId, {
userId: user.id,
});
authorize(user, "readDocument", collection);
}
@@ -1027,9 +1030,9 @@ router.post(
teamId = user.teamId;
if (collectionId) {
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collectionId);
const collection = await Collection.findByPk(collectionId, {
userId: user.id,
});
authorize(user, "readDocument", collection);
}
@@ -1118,9 +1121,10 @@ router.post(
authorize(user, "update", original);
if (collectionId) {
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collectionId, { transaction });
const collection = await Collection.findByPk(collectionId, {
userId: user.id,
transaction,
});
authorize(user, "createDocument", collection);
} else {
authorize(user, "createTemplate", user.team);
@@ -1205,9 +1209,10 @@ router.post(
collectionId,
"collectionId is required to publish a draft without collection"
);
collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collectionId!, { transaction });
collection = await Collection.findByPk(collectionId!, {
userId: user.id,
transaction,
});
}
if (document.parentDocumentId) {
@@ -1261,9 +1266,10 @@ router.post(
authorize(user, "read", document);
const collection = collectionId
? await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collectionId, { transaction })
? await Collection.findByPk(collectionId, {
userId: user.id,
transaction,
})
: document?.collection;
if (collection) {
@@ -1323,9 +1329,10 @@ router.post(
authorize(user, "move", document);
if (collectionId) {
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collectionId, { transaction });
const collection = await Collection.findByPk(collectionId, {
userId: user.id,
transaction,
});
authorize(user, "updateDocument", collection);
} else if (document.template) {
authorize(user, "updateTemplate", user.team);
@@ -1503,13 +1510,8 @@ router.post(
const file = ctx.input.file;
const { user } = ctx.state.auth;
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findOne({
where: {
id: collectionId,
teamId: user.teamId,
},
const collection = await Collection.findByPk(collectionId, {
userId: user.id,
});
authorize(user, "createDocument", collection);
let parentDocument;
@@ -1606,14 +1608,8 @@ router.post(
});
if (parentDocument?.collectionId) {
collection = await Collection.scope({
method: ["withMembership", user.id],
}).findOne({
where: {
id: parentDocument.collectionId,
teamId: user.teamId,
},
transaction,
collection = await Collection.findByPk(parentDocument.collectionId, {
userId: user.id,
});
}
@@ -1621,13 +1617,8 @@ router.post(
collection,
});
} else if (collectionId) {
collection = await Collection.scope({
method: ["withMembership", user.id],
}).findOne({
where: {
id: collectionId,
teamId: user.teamId,
},
collection = await Collection.findByPk(collectionId, {
userId: user.id,
transaction,
});
authorize(user, "createDocument", collection);
+3 -3
View File
@@ -61,9 +61,9 @@ router.post(
if (collectionId) {
where = { ...where, collectionId };
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collectionId);
const collection = await Collection.findByPk(collectionId, {
userId: user.id,
});
authorize(user, "read", collection);
} else {
const collectionIds = await user.collectionIds({
+4 -3
View File
@@ -33,9 +33,10 @@ router.post(
authorize(user, "read", document);
if (collectionId) {
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collectionId, { transaction });
const collection = await Collection.findByPk(collectionId, {
userId: user.id,
transaction,
});
authorize(user, "update", collection);
authorize(user, "pin", document);
} else {
+4 -3
View File
@@ -55,9 +55,10 @@ router.post(
authorize(user, "read", document);
const collection = document.collectionId
? await Collection.scope("withDocumentStructure").findByPk(
document.collectionId
)
? await Collection.findByPk(document.collectionId, {
userId: user.id,
includeDocumentStructure: true,
})
: undefined;
const parentIds = collection?.getDocumentParents(documentId);
const parentShare = parentIds
+4 -3
View File
@@ -37,9 +37,10 @@ router.post(
}
if (collectionId) {
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collectionId, { transaction });
const collection = await Collection.findByPk(collectionId, {
userId: user.id,
transaction,
});
authorize(user, "star", collection);
}
@@ -34,9 +34,10 @@ router.post(
};
if (collectionId) {
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collectionId);
const collection = await Collection.findByPk(collectionId, {
userId: user.id,
transaction: ctx.state.transaction,
});
authorize(user, "read", collection);
where.collectionId = collectionId;
@@ -78,9 +79,9 @@ router.post(
};
if (collectionId) {
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collectionId);
const collection = await Collection.findByPk(collectionId, {
userId: user.id,
});
authorize(user, "read", collection);
where.collectionId = collectionId;
@@ -116,9 +117,9 @@ router.post(
const { event, collectionId, documentId } = ctx.input.body;
if (collectionId) {
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(collectionId);
const collection = await Collection.findByPk(collectionId, {
userId: user.id,
});
authorize(user, "subscribe", collection);
} else {
@@ -1,6 +1,7 @@
import Router from "koa-router";
import { Op } from "sequelize";
import { Sequelize } from "sequelize-typescript";
import { StatusFilter } from "@shared/types";
import auth from "@server/middlewares/authentication";
import validate from "@server/middlewares/validate";
import { User } from "@server/models";
@@ -28,6 +29,7 @@ router.post(
query,
offset,
limit,
statusFilter: [StatusFilter.Published],
}),
User.findAll({
where: {
-2
View File
@@ -260,8 +260,6 @@ router.get(
// The link in the email does not include the follow query param, this
// is to help prevent anti-virus, and email clients from pre-fetching the link
// and spending the token before the user clicks on it. Instead we redirect
// to the same URL with the follow query param added from the client side.
if (!follow) {
return ctx.redirectOnClient(ctx.request.href + "&follow=true");
}
+7 -60
View File
@@ -1,13 +1,8 @@
/* eslint-disable @typescript-eslint/no-var-requires */
import crypto from "crypto";
import { Server } from "https";
import Koa from "koa";
import compress from "koa-compress";
import {
contentSecurityPolicy,
dnsPrefetchControl,
referrerPolicy,
} from "koa-helmet";
import { dnsPrefetchControl, referrerPolicy } from "koa-helmet";
import mount from "koa-mount";
import enforceHttps, {
httpsResolver,
@@ -17,6 +12,7 @@ import { Second } from "@shared/utils/time";
import env from "@server/env";
import Logger from "@server/logging/Logger";
import Metrics from "@server/logging/Metrics";
import csp from "@server/middlewares/csp";
import ShutdownHelper, { ShutdownOrder } from "@server/utils/ShutdownHelper";
import { initI18n } from "@server/utils/i18n";
import routes from "../routes";
@@ -24,32 +20,6 @@ import api from "../routes/api";
import auth from "../routes/auth";
import oauth from "../routes/oauth";
// Construct scripts CSP based on services in use by this installation
const defaultSrc = ["'self'"];
const scriptSrc = ["'self'", "www.googletagmanager.com"];
const styleSrc = ["'self'", "'unsafe-inline'"];
if (env.isCloudHosted) {
scriptSrc.push("cdn.zapier.com");
styleSrc.push("cdn.zapier.com");
}
// Allow to load assets from Vite
if (!env.isProduction) {
scriptSrc.push(env.URL.replace(`:${env.PORT}`, ":3001"));
scriptSrc.push("localhost:3001");
}
if (env.GOOGLE_ANALYTICS_ID) {
scriptSrc.push("www.google-analytics.com");
}
if (env.CDN_URL) {
scriptSrc.push(env.CDN_URL);
styleSrc.push(env.CDN_URL);
defaultSrc.push(env.CDN_URL);
}
export default function init(app: Koa = new Koa(), server?: Server) {
void initI18n();
@@ -76,10 +46,6 @@ export default function init(app: Koa = new Koa(), server?: Server) {
app.use(compress());
app.use(mount("/oauth", oauth));
app.use(mount("/auth", auth));
app.use(mount("/api", api));
// Monitor server connections
if (server) {
setInterval(() => {
@@ -96,31 +62,10 @@ export default function init(app: Koa = new Koa(), server?: Server) {
Metrics.gaugePerInstance("connections.count", 0);
});
// Sets common security headers by default, such as no-sniff, hsts, hide powered
// by etc, these are applied after auth and api so they are only returned on
// standard non-XHR accessed routes
app.use((ctx, next) => {
ctx.state.cspNonce = crypto.randomBytes(16).toString("hex");
app.use(mount("/api", api));
return contentSecurityPolicy({
directives: {
defaultSrc,
styleSrc,
scriptSrc: [
...scriptSrc,
env.DEVELOPMENT_UNSAFE_INLINE_CSP
? "'unsafe-inline'"
: `'nonce-${ctx.state.cspNonce}'`,
],
mediaSrc: ["*", "data:", "blob:"],
imgSrc: ["*", "data:", "blob:"],
frameSrc: ["*", "data:"],
// Do not use connect-src: because self + websockets does not work in
// Safari, ref: https://bugs.webkit.org/show_bug.cgi?id=201591
connectSrc: ["*"],
},
})(ctx, next);
});
// Apply CSP middleware after API as these responses are rendered in the browser
app.use(csp());
// Allow DNS prefetching for performance, we do not care about leaking requests
// to our own CDN's
@@ -135,6 +80,8 @@ export default function init(app: Koa = new Koa(), server?: Server) {
})
);
app.use(mount("/oauth", oauth));
app.use(mount("/auth", auth));
app.use(mount(routes));
return app;
+3 -3
View File
@@ -191,9 +191,9 @@ async function authenticated(io: IO.Server, socket: SocketWithAuth) {
// user is joining a collection channel, because their permissions have
// changed, granting them access.
if (event.collectionId) {
const collection = await Collection.scope({
method: ["withMembership", user.id],
}).findByPk(event.collectionId);
const collection = await Collection.findByPk(event.collectionId, {
userId: user.id,
});
if (can(user, "read", collection)) {
await socket.join(`collection-${event.collectionId}`);
+47
View File
@@ -0,0 +1,47 @@
import { EventEmitter } from "events";
// Create a mock Redis client with all needed methods mocked
class RedisMock extends EventEmitter {
constructor() {
super();
}
get = jest.fn().mockResolvedValue(null);
set = jest.fn().mockResolvedValue("OK");
del = jest.fn().mockResolvedValue(1);
keys = jest.fn().mockResolvedValue([]);
ping = jest.fn().mockResolvedValue("PONG");
disconnect = jest.fn();
setMaxListeners = jest.fn();
}
// Mock the RedisAdapter class
class RedisAdapter extends RedisMock {
constructor(_url: string | undefined, _options = {}) {
super();
}
private static client: RedisAdapter;
private static subscriber: RedisAdapter;
public static get defaultClient(): RedisAdapter {
return (
this.client ||
(this.client = new this(undefined, {
connectionNameSuffix: "client",
}))
);
}
public static get defaultSubscriber(): RedisAdapter {
return (
this.subscriber ||
(this.subscriber = new this(undefined, {
maxRetriesPerRequest: null,
connectionNameSuffix: "subscriber",
}))
);
}
}
export default RedisAdapter;
+1 -1
View File
@@ -10,7 +10,7 @@ import fetch, { chromeUserAgent, RequestInit } from "@server/utils/fetch";
export default abstract class BaseStorage {
/** The default number of seconds until a signed URL expires. */
public static defaultSignedUrlExpires = 60;
public static defaultSignedUrlExpires = 300;
/**
* Returns a presigned post for uploading files to the storage provider.
+28 -3
View File
@@ -8,7 +8,7 @@ import invariant from "invariant";
import JWT from "jsonwebtoken";
import safeResolvePath from "resolve-path";
import env from "@server/env";
import { ValidationError } from "@server/errors";
import { InternalError, ValidationError } from "@server/errors";
import Logger from "@server/logging/Logger";
import BaseStorage from "./BaseStorage";
@@ -132,8 +132,33 @@ export default class LocalStorage extends BaseStorage {
};
}
public getFileStream(key: string, range?: { start: number; end: number }) {
return Promise.resolve(fs.createReadStream(this.getFilePath(key), range));
public async getFileStream(
key: string,
range?: { start: number; end: number }
) {
const filePath = this.getFilePath(key);
const exists = await fs.pathExists(filePath);
if (!exists) {
throw InternalError(`File not found at ${key}`);
}
if (range) {
if (
typeof range.start !== "number" ||
typeof range.end !== "number" ||
range.start < 0 ||
range.end < range.start
) {
throw ValidationError("Invalid range specified");
}
}
try {
return fs.createReadStream(filePath, range);
} catch (err) {
Logger.error(`Failed to create read stream`, err, { filePath });
throw ValidationError("Unable to read file");
}
}
public stat(key: string) {
+3 -3
View File
@@ -416,9 +416,9 @@ export async function buildDocument(
if (overrides.collectionId && overrides.publishedAt !== null) {
collection = collection
? await Collection.scope("withDocumentStructure").findByPk(
overrides.collectionId
)
? await Collection.findByPk(overrides.collectionId, {
includeDocumentStructure: true,
})
: undefined;
await collection?.addDocumentToStructure(document, 0);
+8 -1
View File
@@ -7,6 +7,11 @@ require("@server/storage/database");
jest.mock("bull");
// Enable mocks for Redis-related modules
jest.mock("@server/storage/redis");
jest.mock("@server/utils/MutexLock");
jest.mock("@server/utils/CacheHelper");
// This is needed for the relative manual mock to be picked up
jest.mock("../queues");
@@ -34,7 +39,9 @@ jest.mock("@aws-sdk/s3-request-presigner", () => ({
getSignedUrl: jest.fn(),
}));
afterAll(() => Redis.defaultClient.disconnect());
afterAll(() => {
Redis.defaultClient.disconnect();
});
beforeEach(() => {
env.URL = sharedEnv.URL = "https://app.outline.dev";
+4
View File
@@ -125,4 +125,8 @@ export class CacheHelper {
public static getUnfurlKey(teamId: string, url = "") {
return `unfurl:${teamId}:${url}`;
}
public static getCollectionDocumentsKey(collectionId: string) {
return `cd:${collectionId}`;
}
}
+54 -28
View File
@@ -41,7 +41,7 @@ export default class ZipHelper {
prefix: "export-",
postfix: ".zip",
},
(err, path) => {
(err, filePath) => {
if (err) {
return reject(err);
}
@@ -51,13 +51,24 @@ export default class ZipHelper {
currentFile: null,
};
const handleError = (error: Error) => {
dest.destroy();
fs.remove(filePath)
.catch((rmErr) => {
Logger.error("Failed to remove tmp file", rmErr);
})
.finally(() => {
reject(error);
});
};
const dest = fs
.createWriteStream(path)
.createWriteStream(filePath)
.on("finish", () => {
Logger.debug("utils", "Writing zip complete", { path });
return resolve(path);
Logger.debug("utils", "Writing zip complete", { path: filePath });
return resolve(filePath);
})
.on("error", reject);
.on("error", handleError);
zip
.generateNodeStream(
@@ -85,11 +96,9 @@ export default class ZipHelper {
}
}
)
.on("error", (rErr) => {
dest.end();
reject(rErr);
})
.pipe(dest);
.on("error", handleError)
.pipe(dest)
.on("error", handleError);
}
);
});
@@ -126,32 +135,38 @@ export default class ZipHelper {
const fileName = Buffer.from(entry.fileName).toString("utf8");
Logger.debug("utils", "Extracting zip entry", { fileName });
const processNext = (error?: NodeJS.ErrnoException | null) => {
if (error) {
zipfile.close();
reject(error);
return;
}
zipfile.readEntry();
};
if (validateFileName(fileName)) {
Logger.warn("Invalid zip entry", { fileName });
zipfile.readEntry();
} else if (/\/$/.test(fileName)) {
processNext();
return;
}
if (/\/$/.test(fileName)) {
// directory file names end with '/'
fs.mkdirp(
path.join(outputDir, fileName),
function (mErr: Error) {
if (mErr) {
return reject(mErr);
}
zipfile.readEntry();
}
fs.mkdirp(path.join(outputDir, fileName), (mkErr) =>
processNext(mkErr)
);
} else {
// file entry
zipfile.openReadStream(entry, function (rErr, readStream) {
if (rErr) {
return reject(rErr);
return processNext(rErr);
}
// ensure parent directory exists
fs.mkdirp(
path.join(outputDir, path.dirname(fileName)),
function (mkErr) {
if (mkErr) {
return reject(mkErr);
return processNext(mkErr);
}
const location = trimFileAndExt(
@@ -163,15 +178,20 @@ export default class ZipHelper {
);
const dest = fs
.createWriteStream(location)
.on("error", reject);
.on("error", (error) => {
readStream.destroy();
dest.destroy();
processNext(error);
});
readStream
.on("error", (rsErr) => {
dest.end();
reject(rsErr);
.on("error", (error) => {
dest.destroy();
readStream.destroy();
processNext(error);
})
.on("end", function () {
zipfile.readEntry();
processNext();
})
.pipe(dest);
}
@@ -180,8 +200,14 @@ export default class ZipHelper {
}
});
zipfile.on("close", resolve);
zipfile.on("error", reject);
zipfile.on("error", (error) => {
zipfile.close();
reject(error);
});
} catch (zErr) {
if (zipfile) {
zipfile.close();
}
reject(zErr);
}
}
+54
View File
@@ -0,0 +1,54 @@
import { Day } from "@shared/utils/time";
/**
* A Mock Helper class for server-side cache management
*/
export class CacheHelper {
// Default expiry time for cache data in seconds
private static defaultDataExpiry = Day.seconds;
/**
* Mocked method that resolves with the callback result
*/
public static async getDataOrSet<T>(
key: string,
callback: () => Promise<T | undefined>,
_expiry: number,
_lockTimeout: number
): Promise<T | undefined> {
return await callback();
}
/**
* Mocked method that resolves with undefined
*/
public static async getData<T>(_key: string): Promise<T | undefined> {
return undefined;
}
/**
* Mocked method that resolves with void
*/
public static async setData<T>(_key: string, _data: T, _expiry?: number) {
return;
}
/**
* Mocked method that resolves with void
*/
public static async clearData(_prefix: string) {
return;
}
/**
* These are real methods that don't require mocking as they don't
* interact with Redis directly
*/
public static getUnfurlKey(teamId: string, url = "") {
return `unfurl:${teamId}:${url}`;
}
public static getCollectionDocumentsKey(collectionId: string) {
return `cd:${collectionId}`;
}
}
+18
View File
@@ -0,0 +1,18 @@
export class MutexLock {
// Default expiry time for acquiring lock in milliseconds
public static defaultLockTimeout = 4000;
/**
* Returns the mock redlock instance
*/
public static get lock() {
return {
acquire: jest.fn().mockResolvedValue({
release: jest.fn().mockResolvedValue(true),
expiration: Date.now() + 10000,
}),
};
}
private static redlock: any;
}
+8
View File
@@ -56,4 +56,12 @@ describe("#ValidateKey.sanitize", () => {
ValidateKey.sanitize(`public/${uuid1}/${uuid2}/../../malicious_key`)
).toEqual(`public/${uuid1}/${uuid2}/malicious_key`);
});
it("should remove problematic characters", () => {
const uuid1 = uuidv4();
const uuid2 = uuidv4();
expect(ValidateKey.sanitize(`public/${uuid1}/${uuid2}/test#:*?`)).toEqual(
`public/${uuid1}/${uuid2}/test`
);
});
});
+22 -16
View File
@@ -26,7 +26,7 @@ export function assertArray(
message?: string
): asserts value {
if (!isArrayLike(value)) {
throw ValidationError(message);
throw ValidationError(message ?? `${String(value)} is not an array`);
}
}
@@ -55,13 +55,11 @@ export function assertKeysIn(
Object.keys(obj).forEach((key) => assertIn(key, Object.values(type)));
}
export const assertSort = (
value: string,
model: any,
message = "Invalid sort parameter"
) => {
export const assertSort = (value: string, model: any, message?: string) => {
if (!Object.keys(model.rawAttributes).includes(value)) {
throw ValidationError(message);
throw ValidationError(
message ?? `${String(value)} is not a valid sort field`
);
}
};
@@ -72,7 +70,7 @@ export function assertNotEmpty(
assertPresent(value, message);
if (typeof value === "string" && value.trim() === "") {
throw ValidationError(message);
throw ValidationError(message ?? `${String(value)} is empty`);
}
}
@@ -81,7 +79,7 @@ export function assertEmail(
message?: string
): asserts value {
if (typeof value !== "string" || !validator.isEmail(value)) {
throw ValidationError(message);
throw ValidationError(message ?? `${String(value)} is not a valid email`);
}
}
@@ -121,10 +119,12 @@ export function assertUuid(
message?: string
): asserts value {
if (typeof value !== "string") {
throw ValidationError(message);
throw ValidationError(
message ?? `${String(value)} is not a string, expected UUID`
);
}
if (!validator.isUUID(value)) {
throw ValidationError(message);
throw ValidationError(message ?? `${String(value)} is not a valid UUID`);
}
}
@@ -137,13 +137,17 @@ export const assertPositiveInteger = (
min: 0,
})
) {
throw ValidationError(message);
throw ValidationError(
message ?? `${String(value)} is not a positive integer`
);
}
};
export const assertHexColor = (value: string, message?: string) => {
if (!validateColorHex(value)) {
throw ValidationError(message);
throw ValidationError(
message ?? `${String(value)} is not a valid hex color`
);
}
};
@@ -153,7 +157,9 @@ export const assertValueInArray = (
message?: string
) => {
if (!values.includes(value)) {
throw ValidationError(message);
throw ValidationError(
message ?? `${String(value)} is not in the allowed values`
);
}
};
@@ -162,7 +168,7 @@ export const assertIndexCharacters = (
message = "index must be between x20 to x7E ASCII"
) => {
if (!validateIndexCharacters(value)) {
throw ValidationError(message);
throw ValidationError(message ?? `${String(value)} is not a valid index`);
}
};
@@ -209,7 +215,7 @@ export class ValidateKey {
.slice(0, -1)
.filter((part) => part !== "" && part !== ".." && part !== ".")
.join("/")
.concat(`/${sanitize(filename)}`);
.concat(`/${sanitize(filename.replace(/#/g, ""))}`);
};
public static message = "Must be of the form <bucket>/<uuid>/<uuid>/<name>";
+1
View File
@@ -708,6 +708,7 @@ img.ProseMirror-separator {
resize: none;
user-select: text;
margin: 0 auto !important;
width: 100%;
max-width: 100vw;
}
-49
View File
@@ -1,49 +0,0 @@
import { Plugin } from "prosemirror-state";
import { Decoration, DecorationSet } from "prosemirror-view";
import Extension from "../lib/Extension";
export default class Placeholder extends Extension {
get name() {
return "empty-placeholder";
}
get defaultOptions() {
return {
emptyNodeClass: "placeholder",
placeholder: "",
};
}
get plugins() {
return [
new Plugin({
props: {
decorations: (state) => {
const { doc } = state;
const decorations: Decoration[] = [];
const completelyEmpty =
doc.childCount <= 1 &&
doc.content.size <= 2 &&
doc.textContent === "";
if (completelyEmpty) {
doc.descendants((node, pos) => {
if (pos !== 0 || node.type.name !== "paragraph") {
return;
}
const decoration = Decoration.node(pos, pos + node.nodeSize, {
class: this.options.emptyNodeClass,
"data-empty-text": this.options.placeholder,
});
decorations.push(decoration);
});
}
return DecorationSet.create(doc, decorations);
},
},
}),
];
}
}
+3 -2
View File
@@ -1,7 +1,7 @@
import { EditorState, Plugin } from "prosemirror-state";
import { Decoration, DecorationSet } from "prosemirror-view";
import * as React from "react";
import ReactDOM from "react-dom";
import { createRoot } from "react-dom/client";
import FileExtension from "../components/FileExtension";
import { isRemoteTransaction } from "./multiplayer";
import { recreateTransform } from "./prosemirror-recreate-transform";
@@ -100,7 +100,8 @@ const uploadPlaceholder = new Plugin({
subtitle.className = "subtitle";
subtitle.innerText = "Uploading…";
ReactDOM.render(<FileExtension title={action.add.file.name} />, icon);
const root = createRoot(icon);
root.render(<FileExtension title={action.add.file.name} />);
element.appendChild(icon);
element.appendChild(title);
+29 -1
View File
@@ -1,4 +1,11 @@
import { NodeSpec } from "prosemirror-model";
import isNull from "lodash/isNull";
import {
NodeSpec,
Node as ProsemirrorNode,
ResolvedPos,
} from "prosemirror-model";
import { EditorState } from "prosemirror-state";
import { PlaceholderPlugin } from "../plugins/PlaceholderPlugin";
import Node from "./Node";
export default class Doc extends Node {
@@ -11,4 +18,25 @@ export default class Doc extends Node {
content: "block+",
};
}
get plugins() {
return [
new PlaceholderPlugin([
{
condition: (
node: ProsemirrorNode,
$start: ResolvedPos,
parent: ProsemirrorNode | null,
state: EditorState
) =>
node.textContent === "" &&
!isNull(parent) &&
parent.type === state.doc.type &&
parent.childCount === 1 &&
$start.index($start.depth - 1) === 0,
text: this.options.placeholder,
},
]),
];
}
}
+3 -2
View File
@@ -4,7 +4,7 @@ import { wrappingInputRule } from "prosemirror-inputrules";
import { NodeSpec, Node as ProsemirrorNode, NodeType } from "prosemirror-model";
import { Command, EditorState, Transaction } from "prosemirror-state";
import * as React from "react";
import ReactDOM from "react-dom";
import { createRoot } from "react-dom/client";
import { Primitive } from "utility-types";
import toggleWrap from "../commands/toggleWrap";
import { MarkdownSerializerState } from "../lib/markdown/serializer";
@@ -107,7 +107,8 @@ export default class Notice extends Node {
icon = document.createElement("div");
icon.className = "icon";
ReactDOM.render(component, icon);
const root = createRoot(icon);
root.render(component);
}
return [
-2
View File
@@ -1,7 +1,6 @@
import DateTime from "../extensions/DateTime";
import History from "../extensions/History";
import MaxLength from "../extensions/MaxLength";
import Placeholder from "../extensions/Placeholder";
import TrailingNode from "../extensions/TrailingNode";
import Extension from "../lib/Extension";
import Bold from "../marks/Bold";
@@ -64,7 +63,6 @@ export const basicExtensions: Nodes = [
Strikethrough,
History,
TrailingNode,
Placeholder,
MaxLength,
DateTime,
];
@@ -0,0 +1,73 @@
import filter from "lodash/filter";
import find from "lodash/find";
import map from "lodash/map";
import { Node, ResolvedPos } from "prosemirror-model";
import { EditorState, Plugin } from "prosemirror-state";
import { Decoration, DecorationSet } from "prosemirror-view";
type Config = Array<{
/** Condition to meet for the placeholder to be applied to a node */
condition: (
/** Node to which the placeholder is expected to be applied */
node: Node,
/** Resolved position corresponding to start of node */
$start: ResolvedPos,
/** Parent of node to which the placeholder is expected to be applied */
parent: Node | null,
state: EditorState
) => boolean;
/** Placeholder text */
text: string;
}>;
export class PlaceholderPlugin extends Plugin {
private config: Config;
constructor(config: Config) {
super({
props: {
decorations: (state) => {
const decorations: Decoration[] = map(
this.placeholders(state),
(placeholder) =>
Decoration.node(placeholder.from, placeholder.to, {
class: "placeholder",
"data-empty-text": placeholder.text,
})
);
return DecorationSet.create(state.doc, decorations);
},
},
});
this.config = config;
}
private placeholders(state: EditorState) {
const paras: Array<{
node: Node;
$start: ResolvedPos;
parent: Node | null;
}> = [];
state.doc.descendants((node, pos, parent) => {
if (node.type.name === "paragraph") {
paras.push({ node, $start: state.doc.resolve(pos + 1), parent });
}
});
return filter(
map(paras, (para) => {
const condMet = find(this.config, (conf) =>
conf.condition(para.node, para.$start, para.parent, state)
);
return condMet
? {
from: para.$start.pos - 1,
to: para.$start.pos - 1 + para.node.nodeSize,
text: condMet.text,
}
: undefined;
}),
(placeholder) => placeholder !== undefined
);
}
}
+3
View File
@@ -0,0 +1,3 @@
Do not edit files in `/locales` directly these are machine generated. Translations are provided through CrowdIn, see the documentation here:
https://github.com/outline/outline/blob/main/docs/TRANSLATION.md
+4
View File
@@ -48,6 +48,10 @@ export const languageOptions: LanguageOption[] = [
label: "한국어 (Korean)",
value: "ko_KR",
},
{
label: "Magyar (Hungarian)",
value: "hu_HU",
},
{
label: "Nederland (Dutch, Netherlands)",
value: "nl_NL",
+84 -10
View File
@@ -120,6 +120,8 @@
"Log out": "Odhlásit se",
"Mark notifications as read": "Označit upozornění jako přečtená",
"Archive all notifications": "Archivovat všechny notifikace",
"New App": "New App",
"New Application": "New Application",
"Restore revision": "Obnovit revizi",
"Link copied": "Odkaz zkopírován",
"Dark": "Temný",
@@ -170,8 +172,6 @@
"Deleting": "Mazání",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "Jste si jisti? Smazání sbírky <em>{{collectionName}}</em> je trvalé a nelze vrátit zpět. Všechny publikované dokumenty ze smazané sbírky budou přesunuty do koše.",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "<em>{{collectionName}}</em> se také používá jako domovská stránka odstraněním se obnoví výchozí nastavení.",
"Sorry, an error occurred saving the collection": "Omlouváme se, při ukládání sbírky došlo k chybě",
"Add a description": "Přidat popis",
"Type a command or search": "Zadejte příkaz nebo začněte vyhledávat",
"Choose a template": "Vybrat šablonu",
"Are you sure you want to permanently delete this entire comment thread?": "Jste si jisti, že chcete natrvalo odstranit vlákno komentářů?",
@@ -308,6 +308,13 @@
"Unknown": "Neznámý",
"Mark all as read": "Označit vše jako přečtené",
"You're all caught up": "Již nic nového",
"Icon": "Icon",
"My App": "My App",
"Tagline": "Tagline",
"A short description": "A short description",
"Callback URLs": "Callback URLs",
"Published": "Zveřejněno",
"Allow this app to be installed by other workspaces": "Allow this app to be installed by other workspaces",
"{{ username }} reacted with {{ emoji }}": "{{ username }} reagoval s {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} a {{ secondUsername }} reagovali s {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} a {{ count }} reagovali s {{ emoji }}",
@@ -395,7 +402,6 @@
"Star document": "Označit dokument",
"Template created, go ahead and customize it": "Šablona vytvořena, pokračujte a přizpůsobte ji",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "Vytvoření šablony z <em>{{titleWithDefault}}</em> je nedestruktivní akce vytvoříme kopii dokumentu a přeměníme ji na šablonu, kterou lze použít jako výchozí bod pro nové dokumenty.",
"Published": "Zveřejněno",
"Enable other members to use the template immediately": "Enable other members to use the template immediately",
"Location": "Location",
"Admins can manage the workspace and access billing.": "Administrátoři mohou spravovat pracovní prostor a přistupovat k fakturacím.",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "Upozornění vypnuta",
"Unsubscribed from collection": "Unsubscribed from collection",
"Account": "Účet",
"API Keys": "API Keys",
"API & Apps": "API & Apps",
"Details": "Podrobnosti",
"Security": "Zabezpečení",
"Features": "Funkce",
"Members": "Uživatelé",
"Groups": "Skupiny",
"API Keys": "API Keys",
"Applications": "Applications",
"Shared Links": "Sdílené odkazy",
"Import": "Import",
"Install": "Install",
"Integrations": "Integrace",
"Revoke token": "Odvolat tokeny",
"Revoke": "Zrušit",
@@ -538,6 +547,7 @@
"Document options": "Možnosti dokumentů",
"Choose a collection": "Vybrat sbírku",
"Subscription inherited from collection": "Subscription inherited from collection",
"Apply template": "Apply template",
"Enable embeds": "Povolit embed vkládání",
"Export options": "Možnosti exportu",
"Group members": "Členové skupiny",
@@ -551,6 +561,10 @@
"New child document": "Nový vložený dokument",
"Save in workspace": "Save in workspace",
"Notification settings": "Nastavení oznámení",
"Revoke {{ appName }}": "Revoke {{ appName }}",
"Revoking": "Odvolávání",
"Are you sure you want to revoke access?": "Are you sure you want to revoke access?",
"Delete app": "Delete app",
"Revision options": "Možnosti revize",
"Share link revoked": "Odkaz na sdílení zrušen",
"Share link copied": "Odkaz pro sdílení zkopírován",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} skupina s přístupem",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} skupin s přístupem",
"Archived by {{userName}}": "Archivoval {{userName}}",
"Sorry, an error occurred saving the collection": "Omlouváme se, při ukládání sbírky došlo k chybě",
"Add a description": "Přidat popis",
"Share": "Sdílet",
"Overview": "Přehled",
"Recently updated": "Nedávno aktualizováno",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "Ověření se nezdařilo tento způsob přihlášení byl zakázán správcem týmu.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "Pracovní prostor, ke kterému se pokoušíte připojit, vyžaduje před vytvořením účtu pozvánku.<1></1> Požádejte správce pracovního prostoru o pozvánku a zkuste to znovu.",
"Sorry, an unknown error occurred.": "Sorry, an unknown error occurred.",
"Choose a workspace": "Choose a workspace",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choose an {{ appName }} workspace or login to continue connecting this app",
"Login": "Přihlášení",
"Error": "Chyba",
"Failed to load configuration.": "Nepodařilo se načíst konfiguraci.",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "Naposledy jste se přihlásili pomocí {{ authProviderName }}.",
"Or": "Nebo",
"Already have an account? Go to <1>login</1>.": "Máte již účet? <1>Přihlaste se</1>.",
"An error occurred": "An error occurred",
"The OAuth client could not be found, please check the provided client ID": "The OAuth client could not be found, please check the provided client ID",
"The OAuth client could not be loaded, please check the redirect URI is valid": "The OAuth client could not be loaded, please check the redirect URI is valid",
"Required OAuth parameters are missing": "Required OAuth parameters are missing",
"Authorize": "Authorize",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} wants to access {{ teamName }}",
"By <em>{{ developerName }}</em>": "By <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} will be able to access your account and perform the following actions",
"read": "read",
"write": "write",
"read and write": "read and write",
"API keys": "API keys",
"attachments": "attachments",
"collections": "collections",
"comments": "comments",
"documents": "documents",
"events": "events",
"groups": "groups",
"integrations": "integrations",
"notifications": "notifications",
"reactions": "reactions",
"pins": "pins",
"shares": "shares",
"users": "users",
"teams": "teams",
"workspace": "workspace",
"Read all data": "Read all data",
"Write all data": "Write all data",
"Any collection": "Jakákoli sbírka",
"All time": "All time",
"Past day": "Včera",
@@ -837,15 +883,37 @@
"Something went wrong": "Something went wrong",
"Please try again or contact support if the problem persists": "Please try again or contact support if the problem persists",
"No documents found for your search filters.": "Pro zadaný požadavek nebyly nalezeny žádné dokumenty.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"API keys have been disabled by an admin for your account": "API keys have been disabled by an admin for your account",
"Application access": "Application access",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Manage which third-party and internal applications have been granted access to your {{ appName }} account.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"Application published": "Application published",
"Application updated": "Application updated",
"Client secret rotated": "Client secret rotated",
"Rotate secret": "Rotate secret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.",
"Displayed to users when authorizing": "Displayed to users when authorizing",
"Developer information shown to users when authorizing": "Developer information shown to users when authorizing",
"Developer name": "Developer name",
"Developer URL": "Developer URL",
"Allow users from other workspaces to authorize this app": "Allow users from other workspaces to authorize this app",
"Credentials": "Credentials",
"OAuth client ID": "OAuth client ID",
"The public identifier for this app": "The public identifier for this app",
"OAuth client secret": "OAuth client secret",
"Store this value securely, do not expose it publicly": "Store this value securely, do not expose it publicly",
"Where users are redirected after authorizing this app": "Where users are redirected after authorizing this app",
"Authorization URL": "Authorization URL",
"Where users are redirected to authorize this app": "Where users are redirected to authorize this app",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.",
"by {{ name }}": "by {{ name }}",
"Last used": "Naposledy použito",
"No expiry": "Bez vypršení platnosti",
"Restricted scope": "Restricted scope",
"API key copied to clipboard": "Klíč API byl zkopírován do schránky",
"Copied": "Zkopírováno",
"Revoking": "Odvolávání",
"Are you sure you want to revoke the {{ tokenName }} token?": "Skutečně chcete zrušit token {{ tokenName }}?",
"Disconnect integration": "Odebrat integraci",
"Connected": "Připojeno",
@@ -892,7 +960,7 @@
"No people matching your search": "Vašemu vyhledávání neodpovídají žádní lidé",
"No people left to add": "Nezbývají žádní lidé, které by bylo možné přidat",
"Date created": "Datum vytvoření",
"Upload": "Nahrát",
"Crop Image": "Crop Image",
"Crop image": "Crop image",
"Uploading": "Nahrávání",
"How does this work?": "Jak to funguje?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "{{ count }} dokumentů importováno",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "Můžete importovat soubor zip, který byl dříve exportován z instalace Outline budou importovány sbírky, dokumenty a obrázky. V aplikaci Outline otevřete <em>Export</em> na postranním panelu Nastavení a klikněte na <em>Exportovat data</em>.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Přetáhněte soubor zip z možnosti exportu Markdown z {{appName}} nebo kliknutím nahrajte",
"Configure": "Configure",
"Connect": "Připojit",
"Last active": "Poslední aktivita",
"Guest": "Host",
"Never used": "Never used",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Are you sure you want to delete the {{ appName }} application? This cannot be undone.",
"Shared by": "Sdíleno uživatelem",
"Date shared": "Datum zveřejnění",
"Last accessed": "Poslední přístup",
@@ -965,6 +1037,7 @@
"Enterprise": "Podnik",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Rychle přeneste své stávající dokumenty, stránky a soubory z jiných nástrojů a služeb do {{appName}}. Jakékoli HTML, Markdown a textové dokumenty můžete také přetáhnout přímo do sbírky v aplikaci.",
"Recent imports": "Nedávné importy",
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
"Could not load members": "Could not load members",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Zde je uveden každý, kdo se přihlásil do {{appName}}. Je možné, že existuje více uživatelů, kteří mají přístup přes {{signinMethods}}, ale ještě se nepřihlásili.",
"Receive a notification whenever a new document is published": "Dostat upozornění, když bude publikován nový obsah",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "Odhlášení bylo úspěšné. Nastavení oznámení bylo aktualizováno",
"Manage when and where you receive email notifications.": "Spravujte, kdy a kde budete dostávat e-mailová upozornění.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "Integrace e-mailu je momentálně zakázána. Nastavte přidružené proměnné parametry a restartujte server, abyste povolili oznámení.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Vytvořte si osobní API klíče pro ověření pomocí API rozhraní a ovládejte programově\n data vašeho pracovního prostoru. API klíče mají stejná oprávnění jako váš uživatelský účet.\n Další detaily naleznete ve <em>vývojářské dokumentaci</em>.",
"Personal keys": "Osobní klíče",
"Preferences saved": "Nastavení uložena",
"Delete account": "Odstranit účet",
"Manage settings that affect your personal experience.": "Spravujte nastavení, která ovlivňují vaše uživatelské rozhraní.",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "Můžete vytvářet šablony, které vašemu týmu pomohou vytvořit konzistentní a přesnou dokumentaci.",
"Alphabetical": "Abecedně",
"There are no templates just yet.": "Zatím nejsou k dispozici žádné šablony.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier je platforma, která umožňuje {{appName}} snadnou integraci s tisíci dalších obchodních nástrojů. Automatizujte své pracovní postupy, synchronizujte data a další.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "Potvrzovací kód byl odeslán na vaši e-mailovou adresu, zadejte jej prosím níže pro trvalé odstranění tohoto pracovního prostoru.",
"Confirmation code": "Potvrzovací kód",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Smazání <1>{{workspaceName}}</1> pracovního prostoru odstraní všechny kolekce, dokumenty, uživatele a související data. Budete okamžitě odhlášeni z {{appName}}.",
@@ -1077,7 +1147,6 @@
"Expires today": "Vyprší dnes",
"Expires tomorrow": "Vyprší zítra",
"Expires {{ date }}": "Vyprší {{ date }}",
"Connect": "Připojit",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Jejda, pro připojení {{appName}} k vašemu týmu musíte přijmout oprávnění ve Slacku. Zkusit znovu?",
"Something went wrong while authenticating your request. Please try logging in again.": "Při ověřování vašeho požadavku se něco pokazilo. Zkuste se prosím přihlásit znovu.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "Vlastník GitHub účtu byl požádán o instalaci aplikace {{githubAppName}} GitHub. Po schválení budou náhledy zobrazeny pro příslušné odkazy.",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Přidejte ID měření Google Analytics 4, abyste mohli odesílat zobrazení dokumentů a analýzy z pracovního prostoru do svého vlastního účtu Google Analytics.",
"Measurement ID": "ID měření",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Na hlavním panelu administrátora Google Analytics vytvořte stream „Web“ a zkopírujte ID měření z vygenerovaného fragmentu kódu k instalaci.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Nastavte si instalaci Matomo pro odesílání zobrazení a analýz pracovního prostoru do vlastní Matomo instance.",
"Instance URL": "URL instance",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "URL adresa Matomo instance. Pokud používáte Matomo Cloud, adresa má na konci matomo.cloud/",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Webhooky lze použít k upozornění vaší aplikace, když dojde k události v {{appName}}. Události jsou odesílány jako požadavek https s datovou částí JSON téměř v reálném čase.",
"Inactive": "Neaktivní",
"Create a webhook": "Vytvořit webhook",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier je platforma, která umožňuje {{appName}} snadnou integraci s tisíci dalších obchodních nástrojů. Automatizujte své pracovní postupy, synchronizujte data a další.",
"Never logged in": "Nikdy nepřihlášen",
"Online now": "Online",
"Online {{ timeAgo }}": "Online {{ timeAgo }}",
+84 -10
View File
@@ -120,6 +120,8 @@
"Log out": "Log ud",
"Mark notifications as read": "Markér notifikationer som læst",
"Archive all notifications": "Arkiver alle notifikationer",
"New App": "New App",
"New Application": "New Application",
"Restore revision": "Gendan revision",
"Link copied": "Link kopieret",
"Dark": "Mørk",
@@ -170,8 +172,6 @@
"Deleting": "Sletter",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.",
"Sorry, an error occurred saving the collection": "Sorry, an error occurred saving the collection",
"Add a description": "Add a description",
"Type a command or search": "Type a command or search",
"Choose a template": "Choose a template",
"Are you sure you want to permanently delete this entire comment thread?": "Are you sure you want to permanently delete this entire comment thread?",
@@ -308,6 +308,13 @@
"Unknown": "Ukendt",
"Mark all as read": "Marker alle som læst",
"You're all caught up": "Du er helt ajour",
"Icon": "Icon",
"My App": "My App",
"Tagline": "Tagline",
"A short description": "A short description",
"Callback URLs": "Callback URLs",
"Published": "Published",
"Allow this app to be installed by other workspaces": "Allow this app to be installed by other workspaces",
"{{ username }} reacted with {{ emoji }}": "{{ username }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} and {{ count }} other reacted with {{ emoji }}",
@@ -395,7 +402,6 @@
"Star document": "Star document",
"Template created, go ahead and customize it": "Skabelon oprettet. Gør med den hvad du vil",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "Oprettelse af en skabelon fra <em>{{titleWithDefault}}</em> er en ikke-destruktiv handling en kopi af dokumentet vil blive lavet til en skabelon, der kan bruges som udgangspunkt for nye dokumenter.",
"Published": "Published",
"Enable other members to use the template immediately": "Enable other members to use the template immediately",
"Location": "Location",
"Admins can manage the workspace and access billing.": "Admins can manage the workspace and access billing.",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "Unsubscribed from document",
"Unsubscribed from collection": "Unsubscribed from collection",
"Account": "Account",
"API Keys": "API Keys",
"API & Apps": "API & Apps",
"Details": "Details",
"Security": "Security",
"Features": "Features",
"Members": "Members",
"Groups": "Groups",
"API Keys": "API Keys",
"Applications": "Applications",
"Shared Links": "Shared Links",
"Import": "Import",
"Install": "Install",
"Integrations": "Integrations",
"Revoke token": "Revoke token",
"Revoke": "Revoke",
@@ -538,6 +547,7 @@
"Document options": "Document options",
"Choose a collection": "Choose a collection",
"Subscription inherited from collection": "Subscription inherited from collection",
"Apply template": "Apply template",
"Enable embeds": "Enable embeds",
"Export options": "Export options",
"Group members": "Gruppemedlemmer",
@@ -551,6 +561,10 @@
"New child document": "New child document",
"Save in workspace": "Save in workspace",
"Notification settings": "Notification settings",
"Revoke {{ appName }}": "Revoke {{ appName }}",
"Revoking": "Revoking",
"Are you sure you want to revoke access?": "Are you sure you want to revoke access?",
"Delete app": "Delete app",
"Revision options": "Revision options",
"Share link revoked": "Share link revoked",
"Share link copied": "Share link copied",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} group with access",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} groups with access",
"Archived by {{userName}}": "Archived by {{userName}}",
"Sorry, an error occurred saving the collection": "Sorry, an error occurred saving the collection",
"Add a description": "Add a description",
"Share": "Del",
"Overview": "Overview",
"Recently updated": "Recently updated",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "Authentication failed this login method was disabled by a workspace admin.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.",
"Sorry, an unknown error occurred.": "Sorry, an unknown error occurred.",
"Choose a workspace": "Choose a workspace",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choose an {{ appName }} workspace or login to continue connecting this app",
"Login": "Login",
"Error": "Error",
"Failed to load configuration.": "Failed to load configuration.",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "You signed in with {{ authProviderName }} last time.",
"Or": "Or",
"Already have an account? Go to <1>login</1>.": "Already have an account? Go to <1>login</1>.",
"An error occurred": "An error occurred",
"The OAuth client could not be found, please check the provided client ID": "The OAuth client could not be found, please check the provided client ID",
"The OAuth client could not be loaded, please check the redirect URI is valid": "The OAuth client could not be loaded, please check the redirect URI is valid",
"Required OAuth parameters are missing": "Required OAuth parameters are missing",
"Authorize": "Authorize",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} wants to access {{ teamName }}",
"By <em>{{ developerName }}</em>": "By <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} will be able to access your account and perform the following actions",
"read": "read",
"write": "write",
"read and write": "read and write",
"API keys": "API keys",
"attachments": "attachments",
"collections": "collections",
"comments": "comments",
"documents": "documents",
"events": "events",
"groups": "groups",
"integrations": "integrations",
"notifications": "notifications",
"reactions": "reactions",
"pins": "pins",
"shares": "shares",
"users": "users",
"teams": "teams",
"workspace": "workspace",
"Read all data": "Read all data",
"Write all data": "Write all data",
"Any collection": "Any collection",
"All time": "All time",
"Past day": "Past day",
@@ -837,15 +883,37 @@
"Something went wrong": "Something went wrong",
"Please try again or contact support if the problem persists": "Please try again or contact support if the problem persists",
"No documents found for your search filters.": "No documents found for your search filters.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"API keys have been disabled by an admin for your account": "API keys have been disabled by an admin for your account",
"Application access": "Application access",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Manage which third-party and internal applications have been granted access to your {{ appName }} account.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"Application published": "Application published",
"Application updated": "Application updated",
"Client secret rotated": "Client secret rotated",
"Rotate secret": "Rotate secret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.",
"Displayed to users when authorizing": "Displayed to users when authorizing",
"Developer information shown to users when authorizing": "Developer information shown to users when authorizing",
"Developer name": "Developer name",
"Developer URL": "Developer URL",
"Allow users from other workspaces to authorize this app": "Allow users from other workspaces to authorize this app",
"Credentials": "Credentials",
"OAuth client ID": "OAuth client ID",
"The public identifier for this app": "The public identifier for this app",
"OAuth client secret": "OAuth client secret",
"Store this value securely, do not expose it publicly": "Store this value securely, do not expose it publicly",
"Where users are redirected after authorizing this app": "Where users are redirected after authorizing this app",
"Authorization URL": "Authorization URL",
"Where users are redirected to authorize this app": "Where users are redirected to authorize this app",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.",
"by {{ name }}": "by {{ name }}",
"Last used": "Last used",
"No expiry": "No expiry",
"Restricted scope": "Restricted scope",
"API key copied to clipboard": "API key copied to clipboard",
"Copied": "Copied",
"Revoking": "Revoking",
"Are you sure you want to revoke the {{ tokenName }} token?": "Are you sure you want to revoke the {{ tokenName }} token?",
"Disconnect integration": "Disconnect integration",
"Connected": "Connected",
@@ -892,7 +960,7 @@
"No people matching your search": "No people matching your search",
"No people left to add": "No people left to add",
"Date created": "Date created",
"Upload": "Upload",
"Crop Image": "Crop Image",
"Crop image": "Crop image",
"Uploading": "Uploading",
"How does this work?": "How does this work?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "{{ count }} documents imported",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload",
"Configure": "Configure",
"Connect": "Connect",
"Last active": "Last active",
"Guest": "Guest",
"Never used": "Never used",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Are you sure you want to delete the {{ appName }} application? This cannot be undone.",
"Shared by": "Shared by",
"Date shared": "Date shared",
"Last accessed": "Last accessed",
@@ -965,6 +1037,7 @@
"Enterprise": "Enterprise",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.",
"Recent imports": "Recent imports",
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
"Could not load members": "Could not load members",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.",
"Receive a notification whenever a new document is published": "Receive a notification whenever a new document is published",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "Unsubscription successful. Your notification settings were updated",
"Manage when and where you receive email notifications.": "Manage when and where you receive email notifications.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.",
"Personal keys": "Personal keys",
"Preferences saved": "Preferences saved",
"Delete account": "Delete account",
"Manage settings that affect your personal experience.": "Manage settings that affect your personal experience.",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "You can create templates to help your team create consistent and accurate documentation.",
"Alphabetical": "Alphabetical",
"There are no templates just yet.": "There are no templates just yet.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.",
"Confirmation code": "Confirmation code",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.",
@@ -1077,7 +1147,6 @@
"Expires today": "Expires today",
"Expires tomorrow": "Expires tomorrow",
"Expires {{ date }}": "Expires {{ date }}",
"Connect": "Connect",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?",
"Something went wrong while authenticating your request. Please try logging in again.": "Something went wrong while authenticating your request. Please try logging in again.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.",
"Measurement ID": "Measurement ID",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.",
"Instance URL": "Instance URL",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.",
"Inactive": "Inactive",
"Create a webhook": "Create a webhook",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.",
"Never logged in": "Never logged in",
"Online now": "Online now",
"Online {{ timeAgo }}": "Online {{ timeAgo }}",
+84 -10
View File
@@ -120,6 +120,8 @@
"Log out": "Ausloggen",
"Mark notifications as read": "Markiere Benachrichtigungen als gelesen",
"Archive all notifications": "Archiviere alle Benachrichtigungen",
"New App": "New App",
"New Application": "New Application",
"Restore revision": "Version wiederherstellen",
"Link copied": "Link wurde kopiert",
"Dark": "Dunkel",
@@ -170,8 +172,6 @@
"Deleting": "Wird gelöscht",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "Bist du sicher? Die Löschung der <em>{{collectionName}}</em> Sammlung ist dauerhaft und nicht wiederrufbar. Alle freigegebenen Dokumente werden in den Papierkorb verschoben.",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "Die Sammlung <em>{{collectionName}}</em> wird außerdem als Startseite genutzt sollte diese Sammlung gelöscht werden, wird die Startseite auf die Standardeinstellung zurückgesetzt.",
"Sorry, an error occurred saving the collection": "Beim Speichern der Sammlung ist leider ein Fehler aufgetreten",
"Add a description": "Beschreibung hinzufügen",
"Type a command or search": "Gib einen Befehl oder eine Suche ein",
"Choose a template": "Wähle eine Vorlage",
"Are you sure you want to permanently delete this entire comment thread?": "Bist du sicher, dass du diesen Kommentarverlauf löschen möchtest?",
@@ -308,6 +308,13 @@
"Unknown": "Unbekannt",
"Mark all as read": "Alle als gelesen markieren",
"You're all caught up": "Du bist auf dem neusten Stand",
"Icon": "Icon",
"My App": "My App",
"Tagline": "Tagline",
"A short description": "A short description",
"Callback URLs": "Callback URLs",
"Published": "Veröffentlicht",
"Allow this app to be installed by other workspaces": "Allow this app to be installed by other workspaces",
"{{ username }} reacted with {{ emoji }}": "{{ username }} hat mit {{ emoji }} reagiert",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} und {{ secondUsername }} reagierten mit {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} und {{ count }} weitere reagierten mit {{ emoji }}",
@@ -395,7 +402,6 @@
"Star document": "Dokument zu Favoriten hinzufügen",
"Template created, go ahead and customize it": "Vorlage erstellt, fortfahren und anpassen",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "Das Erstellen einer Vorlage durch <em>{{titleWithDefault}}</em> ist eine non-destruktive Aktion wir erstellen eine Kopie des Dokuments und verwandeln es in eine Vorlage, die als Ausgangspunkt für neue Dokumente verwendet werden kann.",
"Published": "Veröffentlicht",
"Enable other members to use the template immediately": "Erlaube anderen Mitgliedern die Vorlage sofort zu verwenden",
"Location": "Ort",
"Admins can manage the workspace and access billing.": "Administratoren können den Arbeitsbereich verwalten und auf die Abrechnung zugreifen.",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "Dokument nicht abonniert",
"Unsubscribed from collection": "Von der Sammlung abgemeldet",
"Account": "Konto",
"API Keys": "API-Schlüssel",
"API & Apps": "API & Apps",
"Details": "Details",
"Security": "Sicherheit",
"Features": "Funktionen",
"Members": "Mitglieder",
"Groups": "Gruppen",
"API Keys": "API-Schlüssel",
"Applications": "Applications",
"Shared Links": "Geteilte Links",
"Import": "Import",
"Install": "Install",
"Integrations": "Integrationen",
"Revoke token": "Token widerrufen",
"Revoke": "Widerrufen",
@@ -538,6 +547,7 @@
"Document options": "Dokument-Einstellungen",
"Choose a collection": "Sammlung auswählen",
"Subscription inherited from collection": "Abonnement aus der Sammlung vererbt",
"Apply template": "Apply template",
"Enable embeds": "Einbettungen aktivieren",
"Export options": "Exportoptionen",
"Group members": "Gruppenmitglieder",
@@ -551,6 +561,10 @@
"New child document": "Neues Unterdokument",
"Save in workspace": "Im Arbeitsbereich speichern",
"Notification settings": "Benachrichtigungs-Einstellungen",
"Revoke {{ appName }}": "Revoke {{ appName }}",
"Revoking": "Wird widerrufen",
"Are you sure you want to revoke access?": "Are you sure you want to revoke access?",
"Delete app": "Delete app",
"Revision options": "Version-Einstellungen",
"Share link revoked": "Freigabelink widerrufen",
"Share link copied": "Freigabelink wurde kopiert",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} Gruppe mit Zugriff",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} Gruppen mit Zugriff",
"Archived by {{userName}}": "Archiviert durch {{userName}}",
"Sorry, an error occurred saving the collection": "Beim Speichern der Sammlung ist leider ein Fehler aufgetreten",
"Add a description": "Beschreibung hinzufügen",
"Share": "Teilen",
"Overview": "Übersicht",
"Recently updated": "Vor Kurzem aktualisiert",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "Authentifizierung fehlgeschlagen diese Login-Methode wurde von deinem Bereichs-Administrator deaktiviert.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "Der Arbeitsbereich, dem du beitreten möchtest, benötigt eine Einladung, bevor du ein Konto erstellen kannst. <1></1>Bitte fordere eine Einladung von deinem Arbeitsbereich-Administrator an und versuche es erneut.",
"Sorry, an unknown error occurred.": "Entschuldigung, ein unbekannter Fehler ist aufgetreten.",
"Choose a workspace": "Choose a workspace",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choose an {{ appName }} workspace or login to continue connecting this app",
"Login": "Anmelden",
"Error": "Fehler",
"Failed to load configuration.": "Fehler beim Laden der Konfiguration.",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "Du hast dich das letzte Mal mit {{ authProviderName }} angemeldet.",
"Or": "Oder",
"Already have an account? Go to <1>login</1>.": "Du hast bereits ein Konto? <1>Anmelden</1>.",
"An error occurred": "An error occurred",
"The OAuth client could not be found, please check the provided client ID": "The OAuth client could not be found, please check the provided client ID",
"The OAuth client could not be loaded, please check the redirect URI is valid": "The OAuth client could not be loaded, please check the redirect URI is valid",
"Required OAuth parameters are missing": "Required OAuth parameters are missing",
"Authorize": "Authorize",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} wants to access {{ teamName }}",
"By <em>{{ developerName }}</em>": "By <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} will be able to access your account and perform the following actions",
"read": "read",
"write": "write",
"read and write": "read and write",
"API keys": "API keys",
"attachments": "attachments",
"collections": "collections",
"comments": "comments",
"documents": "documents",
"events": "events",
"groups": "groups",
"integrations": "integrations",
"notifications": "notifications",
"reactions": "reactions",
"pins": "pins",
"shares": "shares",
"users": "users",
"teams": "teams",
"workspace": "workspace",
"Read all data": "Read all data",
"Write all data": "Write all data",
"Any collection": "Beliebige Sammlung",
"All time": "Gesamter Zeitraum",
"Past day": "Letzter Tag",
@@ -837,15 +883,37 @@
"Something went wrong": "Etwas ist schiefgelaufen",
"Please try again or contact support if the problem persists": "Bitte versuchen Sie es erneut oder wenden Sie sich an den Support, falls das Problem weiterhin besteht",
"No documents found for your search filters.": "Keine Dokumente für diese Suchfilter gefunden.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"API keys have been disabled by an admin for your account": "API keys have been disabled by an admin for your account",
"Application access": "Application access",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Manage which third-party and internal applications have been granted access to your {{ appName }} account.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API-Schlüssel können verwendet werden, um sich mit der API zu authentifizieren und die Daten des Arbeitsbereiches\n programmatisch zu steuern. Weitere Details finden Sie in der <em>Entwicklerdokumentation</em>.",
"Application published": "Application published",
"Application updated": "Application updated",
"Client secret rotated": "Client secret rotated",
"Rotate secret": "Rotate secret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.",
"Displayed to users when authorizing": "Displayed to users when authorizing",
"Developer information shown to users when authorizing": "Developer information shown to users when authorizing",
"Developer name": "Developer name",
"Developer URL": "Developer URL",
"Allow users from other workspaces to authorize this app": "Allow users from other workspaces to authorize this app",
"Credentials": "Credentials",
"OAuth client ID": "OAuth client ID",
"The public identifier for this app": "The public identifier for this app",
"OAuth client secret": "OAuth client secret",
"Store this value securely, do not expose it publicly": "Store this value securely, do not expose it publicly",
"Where users are redirected after authorizing this app": "Where users are redirected after authorizing this app",
"Authorization URL": "Authorization URL",
"Where users are redirected to authorize this app": "Where users are redirected to authorize this app",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.",
"by {{ name }}": "von {{ name }}",
"Last used": "Zuletzt verwendet",
"No expiry": "Kein Verfall",
"Restricted scope": "Eingeschränkter Bereich",
"API key copied to clipboard": "API-Schlüssel wurde in die Zwischenablage kopiert",
"Copied": "Kopiert",
"Revoking": "Wird widerrufen",
"Are you sure you want to revoke the {{ tokenName }} token?": "Sind Sie sicher, den Token {{ tokenName }} zu widerrufen?",
"Disconnect integration": "Integration trennen",
"Connected": "Verbunden",
@@ -892,7 +960,7 @@
"No people matching your search": "Keine Personen, die Ihrer Suche entsprechen",
"No people left to add": "Keine Personen übrig zum Hinzufügen",
"Date created": "Erstellungsdatum",
"Upload": "Hochladen",
"Crop Image": "Crop Image",
"Crop image": "Bild zuschneiden",
"Uploading": "Wird hochgeladen",
"How does this work?": "Wie funktioniert das?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "{{ count }} dokumente importiert",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "Sie können eine ZIP-Datei importieren, die zuvor aus einer Outline-Installation exportiert wurde. Es werden Sammlungen, Dokumente und Bilder importiert. Rufen Sie in Outline <em>Exportieren</em> in der Seitenleiste der Einstellungen auf und klicken Sie auf <em>Daten exportierten</em>.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Drag-and-Drop die Zip-Datei von Markdown Export Funktion in {{appName}}, oder klicke auf Upload",
"Configure": "Configure",
"Connect": "Verbinden",
"Last active": "Zuletzt aktiv",
"Guest": "Gast",
"Never used": "Never used",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Are you sure you want to delete the {{ appName }} application? This cannot be undone.",
"Shared by": "Geteilt durch",
"Date shared": "Datum geteilt",
"Last accessed": "Letzter Zugriff",
@@ -965,6 +1037,7 @@
"Enterprise": "Unternehmen",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Übertrage unkompliziert bestehende Dokumente, Seiten und Dateien aus anderen Tools und Diensten nach {{appName}}. Ebenso kannst du per Drag-and-Drop beliebige HTML-, Markdown- oder Textdateien direkt in Sammlungen innerhalb der Anwendungen ziehen.",
"Recent imports": "Neueste Importe",
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
"Could not load members": "Mitglieder konnten nicht geladen werden",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Jeder, der sich bei {{appName}} angemeldet hat, ist hier aufgelistet. Es ist möglich, dass es andere Benutzer gibt, die Zugriff über {{signinMethods}} haben, sich aber noch nicht angemeldet haben.",
"Receive a notification whenever a new document is published": "Erhalten Sie eine Benachrichtigung, wenn ein neues Dokument veröffentlicht wird",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "Abmeldung erfolgreich. Ihre Benachrichtigungseinstellungen wurden aktualisiert",
"Manage when and where you receive email notifications.": "Verwalten Sie, wann und wo Sie E-Mail-Benachrichtigungen erhalten.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "Die E-Mail-Integration ist derzeit deaktiviert. Legen Sie die zugehörigen Umgebungsvariablen fest und starten Sie den Server neu, um Benachrichtigungen zu aktivieren.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Erstelle persönliche API-Schlüssel, um dich mit der API zu authentifizieren und\n die Daten deines Arbeitsbereichs programmiert zu kontrollieren. API-Schlüssel haben die gleichen Berechtigungen wie Ihr Benutzerkonto.\n Weitere Details finden Sie in der <em>Entwicklerdokumentation</em>.",
"Personal keys": "Persönliche Schlüssel",
"Preferences saved": "Einstellungen gespeichert",
"Delete account": "Konto löschen",
"Manage settings that affect your personal experience.": "Verwalten Sie Einstellungen, die Ihr persönliches Erlebnis beeinflussen.",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "Du kannst Vorlagen erstellen, um deinem Team zu helfen, eine konsistente und genaue Dokumentation zu schaffen.",
"Alphabetical": "Alphabetisch",
"There are no templates just yet.": "Es gibt noch keine Vorlagen.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier ist eine Plattform, die es {{appName}} ermöglicht, sich einfach mit Tausenden anderer Business-Tools zu verbinden. Automatisiere deine Arbeitsabläufe, synchronisieren deine Daten und mehr.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "Ein Bestätigungscode wurde an deine E-Mail-Adresse gesendet. Bitte gebe diesen Code unten ein, um diesen Arbeitsbereich endgültig zu löschen.",
"Confirmation code": "Bestätigungscode",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Das Löschen des <1>{{workspaceName}}</1>-Arbeitsbereichs entfernt alle Sammlungen, Dokumente, Benutzer und zugehörigen Daten. Du wirst sofort von {{appName}} abgemeldet.",
@@ -1077,7 +1147,6 @@
"Expires today": "Läuft heute ab",
"Expires tomorrow": "Läuft morgen ab",
"Expires {{ date }}": "Läuft am {{ date }} ab",
"Connect": "Verbinden",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Hoppla, du musst die Berechtigungen in GitHub akzeptieren, um {{appName}} mit deinem Team zu verbinden. Nochmal versuchen?",
"Something went wrong while authenticating your request. Please try logging in again.": "Bei der Authentifizierung der Anfrage ist ein Fehler aufgetreten. Bitte versuche dich erneut anzumelden.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "Der Besitzer des GitHub Kontos wurde aufgefordert, die {{githubAppName}} GitHub App zu installieren. Sobald diese genehmigt ist, werden Vorschaubilder für entsprechende Links angezeigt.",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Füge eine Google Analytics 4-Measurement-ID hinzu, um Dokumentansichten und Analysen aus dem Arbeitsbereich an dein eigenes Google Analytics-Konto zu senden.",
"Measurement ID": "Measurement ID",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Erstelle einen \"Web\"-Stream in deinem Google Analytics-Admin-Dashboard und kopiere die Measurement-ID aus dem generierten Code-Snippet für die Installation.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Konfigurieren Sie eine Matomo-Installation, um Ansichten und Analysen aus dem Arbeitsbereich an Ihre eigene Matomo-Instanz zu verwalten.",
"Instance URL": "Instanz-URL",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "Die URL Ihrer Matomo Instanz. Wenn Sie die Matomo Cloud verwenden, endet sie in matomo.cloud/",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Webhooks können verwendet werden, um andere Anwendungen zu benachrichtigen, wenn Ereignisse in {{appName}} auftreten. Ereignisse werden als HTTPS-Anfrage mit einer JSON-Nachricht, annähernd in Echtzeit verschickt.",
"Inactive": "Nicht aktiv",
"Create a webhook": "Webhook erstellen",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier ist eine Plattform, die es {{appName}} ermöglicht, sich einfach mit Tausenden anderer Business-Tools zu verbinden. Automatisiere deine Arbeitsabläufe, synchronisieren deine Daten und mehr.",
"Never logged in": "Nie angemeldet",
"Online now": "Jetzt online",
"Online {{ timeAgo }}": "Online {{ timeAgo }}",
+1 -1
View File
@@ -547,6 +547,7 @@
"Document options": "Document options",
"Choose a collection": "Choose a collection",
"Subscription inherited from collection": "Subscription inherited from collection",
"Apply template": "Apply template",
"Enable embeds": "Enable embeds",
"Export options": "Export options",
"Group members": "Group members",
@@ -883,7 +884,6 @@
"Please try again or contact support if the problem persists": "Please try again or contact support if the problem persists",
"No documents found for your search filters.": "No documents found for your search filters.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"{t(\"API keys have been disabled by an admin for your account\")}": "{t(\"API keys have been disabled by an admin for your account\")}",
"API keys have been disabled by an admin for your account": "API keys have been disabled by an admin for your account",
"Application access": "Application access",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Manage which third-party and internal applications have been granted access to your {{ appName }} account.",
+84 -10
View File
@@ -120,6 +120,8 @@
"Log out": "Salir",
"Mark notifications as read": "Marcar notificaciones como leídas",
"Archive all notifications": "Archivar todas las notificaciones",
"New App": "Nueva aplicación",
"New Application": "Nueva solicitud",
"Restore revision": "Restaurar revisión",
"Link copied": "Enlace copiado",
"Dark": "Oscuro",
@@ -170,8 +172,6 @@
"Deleting": "Eliminando",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "¿Estás seguro? La eliminación de la colección <em>{{collectionName}}</em> es permanente y no se podrá restaurar. Sin embargo, todos los documentos publicados dentro de esta se moverán a la papelera.",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "Además, la colección <em>{{collectionName}}</em> está siendo utilizada como vista inicial eliminarla restablecerá la vista inicial a la página de Inicio.",
"Sorry, an error occurred saving the collection": "Lo sentimos, se ha producido un error al guardar la colección",
"Add a description": "Añadir una descripción",
"Type a command or search": "Escribe un comando o busca",
"Choose a template": "Elige una plantilla",
"Are you sure you want to permanently delete this entire comment thread?": "¿Estás seguro de que quieres eliminar permanentemente todo este hilo de comentarios?",
@@ -308,6 +308,13 @@
"Unknown": "Desconocido",
"Mark all as read": "Marcar todas como leídas",
"You're all caught up": "Estás al día",
"Icon": "Ícono",
"My App": "Mi aplicación",
"Tagline": "Lema",
"A short description": "Una breve descripción",
"Callback URLs": "URL de retorno",
"Published": "Publicado",
"Allow this app to be installed by other workspaces": " Permitir que esta aplicación sea instalada por otros espacios de trabajo.\n",
"{{ username }} reacted with {{ emoji }}": "{{ username }} reaccionó con {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} y {{ secondUsername }} han reaccionado con {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} y {{ count }} otro han reaccionado con {{ emoji }}",
@@ -395,7 +402,6 @@
"Star document": "Marcar documento como favorito",
"Template created, go ahead and customize it": "Plantilla creada, procede a personalizarla",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "Crear una plantilla a partir de <em>{{titleWithDefault}}</em> es una acción no destructiva crearemos una copia del documento y la convertiremos en una plantilla que se puede utilizar como punto de partida para nuevos documentos.",
"Published": "Publicado",
"Enable other members to use the template immediately": "Habilitar a otros miembros para utilizar la plantilla inmediatamente",
"Location": "Ubicación",
"Admins can manage the workspace and access billing.": "Los administradores pueden administrar el área de trabajo y acceder a la facturación.",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "Desuscrito del documento",
"Unsubscribed from collection": "Dado de baja de la colección",
"Account": "Cuenta",
"API Keys": "Claves API",
"API & Apps": "API y aplicaciones",
"Details": "Detalles",
"Security": "Seguridad",
"Features": "Características",
"Members": "Miembros",
"Groups": "Grupos",
"API Keys": "Claves API",
"Applications": "Aplicaciones",
"Shared Links": "Enlaces compartidos",
"Import": "Importar",
"Install": "Instalar",
"Integrations": "Integraciones",
"Revoke token": "Revocar token",
"Revoke": "Revocar",
@@ -538,6 +547,7 @@
"Document options": "Opciones del documento",
"Choose a collection": "Elige una colección",
"Subscription inherited from collection": "Suscripción heredada de la colección",
"Apply template": "Apply template",
"Enable embeds": "Habilitar embeds",
"Export options": "Opciones de exportación",
"Group members": "Miembros del grupo",
@@ -551,6 +561,10 @@
"New child document": "Nuevo documento anidado",
"Save in workspace": "Guardar en el espacio de trabajo",
"Notification settings": "Ajustes de notificaciones",
"Revoke {{ appName }}": "Revocar {{ appName }}",
"Revoking": "Revocando",
"Are you sure you want to revoke access?": "Are you sure you want to revoke access?",
"Delete app": "Eliminar aplicación",
"Revision options": "Opciones de revisión",
"Share link revoked": "Enlace para compartir revocado",
"Share link copied": "Enlace para compartir copiado",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} grupo con acceso",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} grupos con acceso",
"Archived by {{userName}}": "Archivado por {{userName}}",
"Sorry, an error occurred saving the collection": "Lo sentimos, se ha producido un error al guardar la colección",
"Add a description": "Añadir una descripción",
"Share": "Compartir",
"Overview": "Resumen",
"Recently updated": "Actualizado recientemente",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "Error de autenticación: este método de inicio de sesión ha sido desactivado por un administrador del espacio de trabajo.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "El espacio de trabajo al que estás intentando unirte requiere una invitación antes de que puedas crear una cuenta.<1></1>Por favor, solicita una invitación del administrador de tu espacio de trabajo e inténtalo de nuevo.",
"Sorry, an unknown error occurred.": "Lo sentimos, se ha producido un error desconocido.",
"Choose a workspace": "Elegir un espacio de trabajo",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choose an {{ appName }} workspace or login to continue connecting this app",
"Login": "Iniciar sesión",
"Error": "Error",
"Failed to load configuration.": "No se pudo cargar la configuración.",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "Iniciaste sesión con {{ authProviderName }} la última vez.",
"Or": "O",
"Already have an account? Go to <1>login</1>.": "¿Ya tienes una cuenta? Ve a <1>iniciar sesión</1>.",
"An error occurred": "An error occurred",
"The OAuth client could not be found, please check the provided client ID": "The OAuth client could not be found, please check the provided client ID",
"The OAuth client could not be loaded, please check the redirect URI is valid": "The OAuth client could not be loaded, please check the redirect URI is valid",
"Required OAuth parameters are missing": "Required OAuth parameters are missing",
"Authorize": " Ocurrió un error",
"{{ appName }} wants to access {{ teamName }}": "",
"By <em>{{ developerName }}</em>": "By <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} will be able to access your account and perform the following actions",
"read": "leer",
"write": "escribir",
"read and write": "leer y escribir",
"API keys": "Claves API",
"attachments": "attachments",
"collections": "colecciones",
"comments": "comentarios",
"documents": "documentos",
"events": "eventos",
"groups": "grupos",
"integrations": "integraciones",
"notifications": "notificaciones",
"reactions": "reacciones",
"pins": "elementos fijados",
"shares": "compartidos",
"users": "usuarios",
"teams": "equipos",
"workspace": "espacio de trabajo",
"Read all data": "Leer todos los datos",
"Write all data": "Escribir todos los datos",
"Any collection": "Cualquier colección",
"All time": "Desde siempre",
"Past day": "Último día",
@@ -837,15 +883,37 @@
"Something went wrong": "Algo ha salido mal",
"Please try again or contact support if the problem persists": "Por favor, inténtelo de nuevo o póngase en contacto con el soporte técnico si el problema persiste",
"No documents found for your search filters.": "No se encontraron documentos para tus filtros de búsqueda.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": ".",
"API keys have been disabled by an admin for your account": "API keys have been disabled by an admin for your account",
"Application access": ".",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Manage which third-party and internal applications have been granted access to your {{ appName }} account.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Las claves API se pueden usar para autenticarse con la API y controlar de forma programática los datos de tu espacio de trabajo. Para más detalles, consulta la <em>documentación para desarrolladores</em>.",
"Application published": "Aplicación publicada",
"Application updated": "Aplicación actualizada",
"Client secret rotated": "Client secret rotated",
"Rotate secret": "Rotate secret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.",
"Displayed to users when authorizing": "Displayed to users when authorizing",
"Developer information shown to users when authorizing": "Developer information shown to users when authorizing",
"Developer name": "Developer name",
"Developer URL": "Developer URL",
"Allow users from other workspaces to authorize this app": "Allow users from other workspaces to authorize this app",
"Credentials": "Credenciales",
"OAuth client ID": "OAuth client ID",
"The public identifier for this app": "El identificador público de esta aplicación",
"OAuth client secret": "OAuth client secret",
"Store this value securely, do not expose it publicly": "Store this value securely, do not expose it publicly",
"Where users are redirected after authorizing this app": "Where users are redirected after authorizing this app",
"Authorization URL": "Authorization URL",
"Where users are redirected to authorize this app": "Where users are redirected to authorize this app",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.",
"by {{ name }}": "por {{ name }}",
"Last used": "Utilizado por última vez",
"No expiry": "No expira",
"Restricted scope": "Ámbito restringido",
"API key copied to clipboard": "Clave API copiada al portapapeles",
"Copied": "Copiado",
"Revoking": "Revocando",
"Are you sure you want to revoke the {{ tokenName }} token?": "¿Estás seguro de que quieres revocar el token {{ tokenName }}?",
"Disconnect integration": "Desconectar integración",
"Connected": "Conectado",
@@ -892,7 +960,7 @@
"No people matching your search": "No hay personas que coincidan con tu búsqueda",
"No people left to add": "No quedan personas para agregar",
"Date created": "Fecha de creación",
"Upload": "Subir",
"Crop Image": "Crop Image",
"Crop image": "Recortar imagen",
"Uploading": "Subiendo",
"How does this work?": "¿Cómo funciona esto?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "{{ count }} documentos importados",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "Puedes importar un archivo zip que se exportó previamente desde la opción Markdown en otra instancia de Outline. En Outline, abre <em>Exportar</em> en la barra lateral de configuración y haz clic en <em>Exportar datos</em>.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Arrastra y suelta el archivo zip de la opción de exportación Markdown de {{appName}}, o haz clic para cargarlo",
"Configure": "Configure",
"Connect": "Conectar",
"Last active": "Última vez activo",
"Guest": "Invitado",
"Never used": "Never used",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Are you sure you want to delete the {{ appName }} application? This cannot be undone.",
"Shared by": "Compartido por",
"Date shared": "Fecha en que se compartió",
"Last accessed": "Ultimo acceso",
@@ -965,6 +1037,7 @@
"Enterprise": "Enterprise",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Transfiere rápidamente tus documentos, páginas y archivos existentes desde otras herramientas y servicios a {{appName}}. También puedes arrastrar y soltar cualquier archivo HTML, Markdown y de texto directamente a Colecciones en la aplicación.",
"Recent imports": "Importaciones recientes",
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
"Could not load members": "No se han podido cargar miembros",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Todos los que han iniciado sesión en {{appName}} aparecen aquí. Es posible que haya otros usuarios que tengan acceso a través de {{signinMethods}} pero que aún no hayan iniciado sesión.",
"Receive a notification whenever a new document is published": "Recibir notificaciones cuando se publique un nuevo documento",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "Cancelación de suscripción exitosa. Tu configuración de notificaciones se ha actualizado",
"Manage when and where you receive email notifications.": "Gestiona cuándo y dónde recibirás notificaciones por correo electrónico.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "La integración de correo electrónico está deshabilitada actualmente. Configura las variables de entorno asociadas y reinicia el servidor para habilitar las notificaciones.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Crea claves API personales para autenticarte con la API y controlar programáticamente\n los datos de tu área de trabajo. Las claves de API tienen los mismos permisos que tu cuenta de usuario.\n Para más detalles vea la documentación <em>de desarrollador</em>.",
"Personal keys": "Claves personales",
"Preferences saved": "Preferencias guardadas",
"Delete account": "Eliminar cuenta",
"Manage settings that affect your personal experience.": "Administra las configuraciones que afectan tu experiencia personal.",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "Puedes crear plantillas para ayudar a tu equipo a crear documentación coherente y precisa.",
"Alphabetical": "Alfabético",
"There are no templates just yet.": "Aún no hay plantillas.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier es una plataforma que permite que {{appName}} se integre fácilmente con miles de otras herramientas de negocio. Automatiza tus flujos de trabajo, sincroniza datos y más.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "Un código de confirmación ha sido enviado a tu dirección de correo electrónico, por favor ingresa el código a continuación para eliminar permanentemente este espacio de trabajo.",
"Confirmation code": "Código de confirmación",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Eliminar el espacio de trabajo <1>{{workspaceName}}</1> eliminará todas las colecciones, documentos, usuarios y datos asociados. Se cerrará inmediatamente la sesión de {{appName}}.",
@@ -1077,7 +1147,6 @@
"Expires today": "Expira hoy",
"Expires tomorrow": "Expira mañana",
"Expires {{ date }}": "Expira el {{ date }}",
"Connect": "Conectar",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Ups, necesitas aceptar los permisos en GitHub para conectar {{appName}} a tu área de trabajo. ¿Intentar de nuevo?",
"Something went wrong while authenticating your request. Please try logging in again.": "Ocurrió un error autenticando tu solicitud. Por favor, intenta iniciar sesión de nuevo.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "Se ha solicitado al propietario de la cuenta de GitHub que instale la aplicación de GitHub {{githubAppName}}. Una vez aprobada, las vistas previas se mostrarán para los enlaces respectivos.",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Añade un ID de seguimiento de Google Analytics 4 para enviar vistas y análisis de documentos desde el espacio de trabajo a tu propia cuenta de Google Analytics.",
"Measurement ID": "ID de seguimiento",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Crea un flujo \"Web\" en tu panel de administración de Google Analytics y copia el ID de seguimiento del fragmento de código generado para instalar.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Configura una instalación de Matomo para enviar vistas y analíticas desde el espacio de trabajo a tu propia instancia de Matomo.",
"Instance URL": "URL de la instancia",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "La URL de tu instancia Matomo. Si estás usando Matomo Cloud, esta terminará en matomo.cloud/",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Los webhooks pueden ser utilizados para notificar tu aplicación cuando ocurren eventos en {{appName}}. Los eventos se envían como una solicitud HTTPS con una carga útil JSON casi en tiempo real.",
"Inactive": "Inactivo",
"Create a webhook": "Crear un webhook",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier es una plataforma que permite que {{appName}} se integre fácilmente con miles de otras herramientas de negocio. Automatiza tus flujos de trabajo, sincroniza datos y más.",
"Never logged in": "Nunca ha iniciado sesión",
"Online now": "En línea ahora",
"Online {{ timeAgo }}": "En línea {{ timeAgo }}",
+84 -10
View File
@@ -120,6 +120,8 @@
"Log out": "خروج",
"Mark notifications as read": "Mark notifications as read",
"Archive all notifications": "Archive all notifications",
"New App": "New App",
"New Application": "New Application",
"Restore revision": "بازیابی نسخه",
"Link copied": "پیوند کپی شد",
"Dark": "تیره",
@@ -170,8 +172,6 @@
"Deleting": "در حال حذف کردن",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "آیا مطمئن هستید؟ حذف مجموعه <em>{{collectionName}}</em> دائمی و غیرقابل بازیابی‌ست؛ هرچند اسناد داخل آن به سطل زباله منتقل می‌شوند.",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "همچنین، <em>{{collectionName}}</em> به عنوان نمای شروع استفاده می شود - با حذف آن، نمای شروع به صفحه اصلی بازگردانده می شود.",
"Sorry, an error occurred saving the collection": "متاسفانه خطایی در ذخیره‌سازی مجموعه رخ داد",
"Add a description": "توضیحاتی اضافه کنید",
"Type a command or search": "دستوری تایپ و یا جستجو کنید",
"Choose a template": "انتخاب قالب",
"Are you sure you want to permanently delete this entire comment thread?": "Are you sure you want to permanently delete this entire comment thread?",
@@ -308,6 +308,13 @@
"Unknown": "ناشناخته",
"Mark all as read": "علامتگذاری همه بعنوان خوانده شده",
"You're all caught up": "شما همه اعلانها و پیامها را دیده اید",
"Icon": "Icon",
"My App": "My App",
"Tagline": "Tagline",
"A short description": "A short description",
"Callback URLs": "Callback URLs",
"Published": "Published",
"Allow this app to be installed by other workspaces": "Allow this app to be installed by other workspaces",
"{{ username }} reacted with {{ emoji }}": "{{ username }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} and {{ count }} other reacted with {{ emoji }}",
@@ -395,7 +402,6 @@
"Star document": "Star document",
"Template created, go ahead and customize it": "الگو ایجاد شد، پیش بروید و آن را سفارشی کنید",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "ایجاد الگو از <em>{{titleWithDefault}}</em> باعث تخریب چیزی نمی‌شود - ما یک کپی از سند ایجاد می کنیم و آن را به الگویی تبدیل می کنیم که می تواند به عنوان نقطه شروع اسناد جدید استفاده شود.",
"Published": "Published",
"Enable other members to use the template immediately": "Enable other members to use the template immediately",
"Location": "Location",
"Admins can manage the workspace and access billing.": "Admins can manage the workspace and access billing.",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "Unsubscribed from document",
"Unsubscribed from collection": "Unsubscribed from collection",
"Account": "حساب",
"API Keys": "API Keys",
"API & Apps": "API & Apps",
"Details": "جزئیات",
"Security": "امنیت",
"Features": "امکانات",
"Members": "اعضا",
"Groups": "گروه‌ها",
"API Keys": "API Keys",
"Applications": "Applications",
"Shared Links": "Shared Links",
"Import": "وارد کردن",
"Install": "Install",
"Integrations": "یکپارچه‌سازی‌ها",
"Revoke token": "Revoke token",
"Revoke": "Revoke",
@@ -538,6 +547,7 @@
"Document options": "گزینه‌های سند",
"Choose a collection": "انتخاب یک مجموعه",
"Subscription inherited from collection": "Subscription inherited from collection",
"Apply template": "Apply template",
"Enable embeds": "فعال‌سازی جاسازی‌ها",
"Export options": "گزینه های صدور",
"Group members": "اعضای گروه",
@@ -551,6 +561,10 @@
"New child document": "سند فرزند جدید",
"Save in workspace": "Save in workspace",
"Notification settings": "Notification settings",
"Revoke {{ appName }}": "Revoke {{ appName }}",
"Revoking": "Revoking",
"Are you sure you want to revoke access?": "Are you sure you want to revoke access?",
"Delete app": "Delete app",
"Revision options": "گزینه‌های بازنگری‌ها",
"Share link revoked": "پیوند اشتراک‌گذاری حذف شد",
"Share link copied": "پیوند اشتراک‌گذاری کپی شد",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} group with access",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} groups with access",
"Archived by {{userName}}": "بایگانی شده توسط {{userName}}",
"Sorry, an error occurred saving the collection": "متاسفانه خطایی در ذخیره‌سازی مجموعه رخ داد",
"Add a description": "توضیحاتی اضافه کنید",
"Share": "اشتراک‌گذاری",
"Overview": "Overview",
"Recently updated": "آخرین به‌روزرسانی",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "Authentication failed this login method was disabled by a workspace admin.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.",
"Sorry, an unknown error occurred.": "Sorry, an unknown error occurred.",
"Choose a workspace": "Choose a workspace",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choose an {{ appName }} workspace or login to continue connecting this app",
"Login": "ورود",
"Error": "Error",
"Failed to load configuration.": "پیکربندی بارگیری نشد.",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "شما آخرین بار با {{ authProviderName }} وارد شدید.",
"Or": "یا",
"Already have an account? Go to <1>login</1>.": "حساب کاربری دارید؟ به بخش <1>ورود</1> بروید.",
"An error occurred": "An error occurred",
"The OAuth client could not be found, please check the provided client ID": "The OAuth client could not be found, please check the provided client ID",
"The OAuth client could not be loaded, please check the redirect URI is valid": "The OAuth client could not be loaded, please check the redirect URI is valid",
"Required OAuth parameters are missing": "Required OAuth parameters are missing",
"Authorize": "Authorize",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} wants to access {{ teamName }}",
"By <em>{{ developerName }}</em>": "By <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} will be able to access your account and perform the following actions",
"read": "read",
"write": "write",
"read and write": "read and write",
"API keys": "API keys",
"attachments": "attachments",
"collections": "collections",
"comments": "comments",
"documents": "documents",
"events": "events",
"groups": "groups",
"integrations": "integrations",
"notifications": "notifications",
"reactions": "reactions",
"pins": "pins",
"shares": "shares",
"users": "users",
"teams": "teams",
"workspace": "workspace",
"Read all data": "Read all data",
"Write all data": "Write all data",
"Any collection": "هر مجموعه‌ای",
"All time": "All time",
"Past day": "روز گذشته",
@@ -837,15 +883,37 @@
"Something went wrong": "Something went wrong",
"Please try again or contact support if the problem persists": "Please try again or contact support if the problem persists",
"No documents found for your search filters.": "سندی برای فیلترهای جستجوی شما پیدا نشد.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"API keys have been disabled by an admin for your account": "API keys have been disabled by an admin for your account",
"Application access": "Application access",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Manage which third-party and internal applications have been granted access to your {{ appName }} account.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"Application published": "Application published",
"Application updated": "Application updated",
"Client secret rotated": "Client secret rotated",
"Rotate secret": "Rotate secret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.",
"Displayed to users when authorizing": "Displayed to users when authorizing",
"Developer information shown to users when authorizing": "Developer information shown to users when authorizing",
"Developer name": "Developer name",
"Developer URL": "Developer URL",
"Allow users from other workspaces to authorize this app": "Allow users from other workspaces to authorize this app",
"Credentials": "Credentials",
"OAuth client ID": "OAuth client ID",
"The public identifier for this app": "The public identifier for this app",
"OAuth client secret": "OAuth client secret",
"Store this value securely, do not expose it publicly": "Store this value securely, do not expose it publicly",
"Where users are redirected after authorizing this app": "Where users are redirected after authorizing this app",
"Authorization URL": "Authorization URL",
"Where users are redirected to authorize this app": "Where users are redirected to authorize this app",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.",
"by {{ name }}": "by {{ name }}",
"Last used": "Last used",
"No expiry": "No expiry",
"Restricted scope": "Restricted scope",
"API key copied to clipboard": "API key copied to clipboard",
"Copied": "Copied",
"Revoking": "Revoking",
"Are you sure you want to revoke the {{ tokenName }} token?": "Are you sure you want to revoke the {{ tokenName }} token?",
"Disconnect integration": "Disconnect integration",
"Connected": "Connected",
@@ -892,7 +960,7 @@
"No people matching your search": "فردی با جستجوی شما مطابقت ندارد",
"No people left to add": "فردی برای افزودن باقی نمانده است",
"Date created": "Date created",
"Upload": "بارگذاری",
"Crop Image": "Crop Image",
"Crop image": "Crop image",
"Uploading": "در حال بارگذاری",
"How does this work?": "How does this work?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "{{ count }} documents imported",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload",
"Configure": "Configure",
"Connect": "اتصال",
"Last active": "آخرین فعالیت",
"Guest": "Guest",
"Never used": "Never used",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Are you sure you want to delete the {{ appName }} application? This cannot be undone.",
"Shared by": "Shared by",
"Date shared": "Date shared",
"Last accessed": "آخرین دسترسی",
@@ -965,6 +1037,7 @@
"Enterprise": "Enterprise",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.",
"Recent imports": "وارد شده‌های اخیر",
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
"Could not load members": "Could not load members",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.",
"Receive a notification whenever a new document is published": "هر زمان سند جدیدی منتشر شد، اعلانی دریافت کنید",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "لغو اشتراک موفقیت‌آمیز بود. تنظیمات اعلان شما به روز شد",
"Manage when and where you receive email notifications.": "Manage when and where you receive email notifications.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "ادغام ایمیلی غیرفعال است. لطفاً متغیرهای محیطی مربوطه را تنظیم کرده و سرور را دوباره راه‌اندازی کنید تا اعلان‌ها را فعال کنید.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.",
"Personal keys": "Personal keys",
"Preferences saved": "Preferences saved",
"Delete account": "حذف حساب",
"Manage settings that affect your personal experience.": "Manage settings that affect your personal experience.",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "با ساخت قالب‌ها به تیم خود کمک می‌کنید که مستنداتی سازگار و درست ایجاد کنند.",
"Alphabetical": "الفبایی",
"There are no templates just yet.": "هنوز هیچ قالبی وجود ندارد.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.",
"Confirmation code": "Confirmation code",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.",
@@ -1077,7 +1147,6 @@
"Expires today": "Expires today",
"Expires tomorrow": "Expires tomorrow",
"Expires {{ date }}": "Expires {{ date }}",
"Connect": "اتصال",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?",
"Something went wrong while authenticating your request. Please try logging in again.": "Something went wrong while authenticating your request. Please try logging in again.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.",
"Measurement ID": "Measurement ID",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.",
"Instance URL": "Instance URL",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "از Webhooks می توان برای اطلاع دادن به برنامه شما در صورت وقوع رویدادها در {{appName}}استفاده کرد. رویدادها به عنوان یک درخواست https با یک بار JSON در زمان واقعی ارسال می شوند.",
"Inactive": "Inactive",
"Create a webhook": "ساخت وب هوک",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.",
"Never logged in": "Never logged in",
"Online now": "Online now",
"Online {{ timeAgo }}": "Online {{ timeAgo }}",
+84 -10
View File
@@ -120,6 +120,8 @@
"Log out": "Déconnexion",
"Mark notifications as read": "Marquer les notifications comme lues",
"Archive all notifications": "Archiver toutes les notifications",
"New App": "Nouvelle application",
"New Application": "Nouvelle application",
"Restore revision": "Restaurer cette version",
"Link copied": "Lien copié",
"Dark": "Sombre",
@@ -170,8 +172,6 @@
"Deleting": "Suppression",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "Êtes-vous sûr ? Supprimer la collection <em>{{collectionName}}</em> est définitif et celle-ci ne pourra pas être restaurée. Cependant, les documents inclus seront déplacés vers la corbeille.",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "De plus, la collection <em>{{collectionName}}</em> est affichée par défaut au démarrage - sa suppression réinitialisera la vue de démarrage sur la page d'accueil.",
"Sorry, an error occurred saving the collection": "Désolé, une erreur s'est produite lors de l'enregistrement de la collection",
"Add a description": "Ajouter une description",
"Type a command or search": "Entrez une commande ou faites une recherche",
"Choose a template": "Choisir un modèle",
"Are you sure you want to permanently delete this entire comment thread?": "Êtes-vous sûr de vouloir supprimer définitivement ce fil de commentaires ?",
@@ -308,6 +308,13 @@
"Unknown": "Inconnu",
"Mark all as read": "Tout marquer comme lu",
"You're all caught up": "Vous êtes à jour",
"Icon": "Icône",
"My App": "Mon application",
"Tagline": "Accroche",
"A short description": "Une courte description",
"Callback URLs": "URLs de callback",
"Published": "Publié",
"Allow this app to be installed by other workspaces": "Autoriser cette application à être installée par d'autres espaces de travail",
"{{ username }} reacted with {{ emoji }}": "{{ username }} A réagi avec {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} et {{ secondUsername }} ont réagi avec {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} et {{ count }} autres ont réagi avec {{ emoji }}",
@@ -395,7 +402,6 @@
"Star document": "Mettre en favoris le document",
"Template created, go ahead and customize it": "Le modèle a été créé, vous pouvez maintenant le personnaliser",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "La création d'un modèle à partir de <em>{{titleWithDefault}}</em> est une action non destructrice - nous allons faire une copie du document et le transformer en un modèle qui peut être utilisé comme point de départ pour de nouveaux documents.",
"Published": "Publié",
"Enable other members to use the template immediately": "Autoriser les autres membres à utiliser le modèle immédiatement",
"Location": "Localisation",
"Admins can manage the workspace and access billing.": "Les administrateurs peuvent gérer l'espace de travail et la facturation d'accès.",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "Se désabonner du document",
"Unsubscribed from collection": "Désabonné de la collection",
"Account": "Compte",
"API Keys": "Clés API",
"API & Apps": "API & Applications",
"Details": "Détails",
"Security": "Sécurité",
"Features": "Fonctionnalités",
"Members": "Membres",
"Groups": "Groupes",
"API Keys": "Clés API",
"Applications": "Applications",
"Shared Links": "Liens partagés",
"Import": "Importer",
"Install": "Installer",
"Integrations": "Intégrations",
"Revoke token": "Supprimer le jeton",
"Revoke": "Supprimer",
@@ -538,6 +547,7 @@
"Document options": "Options de document",
"Choose a collection": "Choisir une collection",
"Subscription inherited from collection": "Abonnement hérité de la collection",
"Apply template": "Apply template",
"Enable embeds": "Activer les intégrations",
"Export options": "Options d'exportation",
"Group members": "Membres du groupe",
@@ -551,6 +561,10 @@
"New child document": "Nouveau document fils",
"Save in workspace": "Enregistrer dans l'espace de travail",
"Notification settings": "Paramètres des notifications",
"Revoke {{ appName }}": "Révoquer {{ appName }}",
"Revoking": "Supression en cours",
"Are you sure you want to revoke access?": "Êtes-vous sûr de vouloir révoquer l'accès ?",
"Delete app": "Supprimer l'application",
"Revision options": "Options de version",
"Share link revoked": "Lien de partage révoqué",
"Share link copied": "Lien de partage copié",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} groupe a accès",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} groupes ont accès",
"Archived by {{userName}}": "Archivé par {{userName}}",
"Sorry, an error occurred saving the collection": "Désolé, une erreur s'est produite lors de l'enregistrement de la collection",
"Add a description": "Ajouter une description",
"Share": "Partager",
"Overview": "Aperçu",
"Recently updated": "Récemment mis à jour",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "L'authentification a échoué - cette méthode de connexion a été désactivée par un administrateur de l'espace de travail.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "L'espace de travail que vous essayez de rejoindre nécessite une invitation avant de pouvoir créer un compte.<1></1> Veuillez demander une invitation à l'administrateur de votre espace de travail et réessayer.",
"Sorry, an unknown error occurred.": "Désolé, une erreur inconnue s'est produite.",
"Choose a workspace": "Choisir un espace de travail",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choisissez un espace de travail {{ appName }} ou connectez-vous pour continuer à connecter cette application",
"Login": "Identification",
"Error": "Erreur",
"Failed to load configuration.": "Échec du chargement de la configuration.",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "Vous vous êtes connecté avec {{ authProviderName }} la dernière fois.",
"Or": "Ou",
"Already have an account? Go to <1>login</1>.": "Vous avez déjà un compte ? <1>Connectez-vous</1>.",
"An error occurred": "Une erreur est survenue",
"The OAuth client could not be found, please check the provided client ID": "Le client OAuth n'a pas pu être trouvé, veuillez vérifier l'ID du client fourni",
"The OAuth client could not be loaded, please check the redirect URI is valid": "Le client 0Auth n'a pas pu etre chargé, veuillez vérifier que l'URI de redirection est valide",
"Required OAuth parameters are missing": "Les paramètres 0Auth requis sont manquants",
"Authorize": "Autoriser",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} souhaite accéder a {{ teamName }}",
"By <em>{{ developerName }}</em>": "Par <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} pourra accéder à votre compte et effectuer les actions suivantes",
"read": "lire",
"write": "écrire",
"read and write": "lire et écrire",
"API keys": "Clés API",
"attachments": "pièces jointes",
"collections": "collections",
"comments": "commentaires",
"documents": "documents",
"events": "évènements",
"groups": "groupes",
"integrations": "intégrations",
"notifications": "notifications",
"reactions": "réactions",
"pins": "épingles",
"shares": "partages",
"users": "utilisateurs",
"teams": "équipes",
"workspace": "espace de travail",
"Read all data": "Lire toutes les données",
"Write all data": "Écrire toutes les données",
"Any collection": "Toutes les collections",
"All time": "Tout l'historique",
"Past day": "Hier",
@@ -837,15 +883,37 @@
"Something went wrong": "Un problème est survenu",
"Please try again or contact support if the problem persists": "Veuillez réessayer ou contacter le support si le problème persiste",
"No documents found for your search filters.": "Aucun document trouvé pour vos critères de recherche.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Créez des clés d'API personnelles pour vous authentifier avec l'API et contrôlez par programmation\n les données de votre espace de travail. Pour plus de détails, consultez la <em>documentation développeur</em>.",
"API keys have been disabled by an admin for your account": "Les clés API ont été désactivées par un administrateur pour votre compte",
"Application access": "Accès a l'application",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Gérer quelles applications tierces et internes ont été autorisées à accéder à votre compte {{ appName }}.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Les clés API peuvent être utilisées pour s'authentifier avec l'API et contrôler par programmation\n les données de votre espace de travail. Pour plus de détails, consultez la documentation <em>développeur</em>.",
"Application published": "Application publiée",
"Application updated": "Application mise à jour",
"Client secret rotated": "Le client secret a changé",
"Rotate secret": "Changer le secret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotation du secret client invalidera le secret actuel. Assurez-vous de mettre à jour toutes les applications utilisant ces identifiants.",
"Displayed to users when authorizing": "Affiché aux utilisateurs lors de l'autorisation",
"Developer information shown to users when authorizing": "Informations du développeur affichées aux utilisateurs lors de l'autorisation",
"Developer name": "Nom du développeur",
"Developer URL": "URL de développement",
"Allow users from other workspaces to authorize this app": "Autoriser les utilisateurs des autres espaces de travail à autoriser cette application",
"Credentials": "Identifiants",
"OAuth client ID": "ID du client OAuth",
"The public identifier for this app": "L'identifiant public pour cette application",
"OAuth client secret": "Secret du client OAuth",
"Store this value securely, do not expose it publicly": "Stocker cette valeur en toute sécurité, ne l'exposer pas publiquement",
"Where users are redirected after authorizing this app": "Là où les utilisateurs sont redirigés après avoir autorisé cette application",
"Authorization URL": "URL d'autorisation",
"Where users are redirected to authorize this app": "Là où les utilisateurs sont redirigés pour autoriser cette application",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Les applications vous permettent de construire des intégrations internes ou publiques avec Outline et de fournir un accès sécurisé via OAuth. Pour plus de détails, consultez la <em>documentation développeur</em>.",
"by {{ name }}": "par {{ name }}",
"Last used": "Dernier utilisé",
"No expiry": "Pas d'expiration",
"Restricted scope": "Portée restreinte",
"API key copied to clipboard": "Clé API copiée dans le presse-papier",
"Copied": "Copié",
"Revoking": "Supression en cours",
"Are you sure you want to revoke the {{ tokenName }} token?": "Voulez-vous vraiment supprimer le jeton {{ tokenName }}?",
"Disconnect integration": "Déconnecter l'intégration",
"Connected": "Connecté",
@@ -892,7 +960,7 @@
"No people matching your search": "Aucune personne ne correspond à votre recherche",
"No people left to add": "Plus aucune personne à ajouter",
"Date created": "Créé le",
"Upload": "Envoyer",
"Crop Image": "Rogner l'image",
"Crop image": "Rogner limage",
"Uploading": "Transfert en cours",
"How does this work?": "Comment cela fonctionne-t-il ?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "{{ count }} Documents importés",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "Vous pouvez importer un fichier zip précédemment exporté à partir d'une installation Outline - les collections, les documents et les images seront importés. Dans Outline, ouvrez <em>Exporter</em> dans la barre latérale Paramètres et cliquez sur <em>Exporter les données</em>.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Glissez et déposez le fichier zip provenant d'un export {{appName}}, ou cliquez pour le téléverser",
"Configure": "Configurer",
"Connect": "Se connecter",
"Last active": "Dernière activité",
"Guest": "Invité",
"Never used": "Jamais utilisé",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Êtes-vous sûr de vouloir supprimer l'application {{ appName }} ? Cette action est irréversible.",
"Shared by": "Partagé par",
"Date shared": "Date du partage",
"Last accessed": "Dernier accès",
@@ -965,6 +1037,7 @@
"Enterprise": "Entreprise",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Transférez rapidement vos documents, pages et fichiers existants à partir d'autres outils et services vers {{appName}}. Vous pouvez également glisser-déposer n'importe quel document HTML, Markdown et texte dans les collections de l'application.",
"Recent imports": "Importé récemment",
"Configure a variety of integrations with third-party services.": "Configurer une variété d'intégration avec des services tiers.",
"Could not load members": "Impossible de charger les membres",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Toutes les personnes qui se sont connectées à {{appName}} s'affichent ici. Il est possible que d'autres utilisateurs aient accès via {{signinMethods}} mais ne se soient pas encore connectés.",
"Receive a notification whenever a new document is published": "Recevez une notification chaque fois qu'un nouveau document est publié",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "Désinscription réussie. Vos paramètres de notification ont été mis à jour",
"Manage when and where you receive email notifications.": "Gérez quand et où vous recevez des notifications par e-mail.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "L'intégration des e-mails est actuellement désactivée. Veuillez définir les variables d'environnement associées et redémarrer le serveur pour activer les notifications.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Créez des clés d'API personnelles pour vous authentifier avec l'API et contrôlez par programmation\n les données de votre espace de travail. Les clés API ont les mêmes autorisations que votre compte utilisateur.\n Pour plus de détails, voir la documentation <em>développeur</em>.",
"Personal keys": "Clés personnelles",
"Preferences saved": "Préférences enregistrées",
"Delete account": "Supprimer compte",
"Manage settings that affect your personal experience.": "Gérer les paramètres qui affectent votre expérience utilisateur.",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "Vous pouvez créer des modèles pour aider votre équipe à créer une documentation cohérente et précise.",
"Alphabetical": "Alphabétique",
"There are no templates just yet.": "Il n'y a pas encore de modèles.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier est une plate-forme qui permet à {{appName}} de s'intégrer facilement à des milliers d'autres outils professionnels. Automatisez vos flux de travail, synchronisez les données, et plus.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "Un code de confirmation a été envoyé à votre adresse e-mail, veuillez saisir le code ci-dessous pour supprimer définitivement cet espace de travail.",
"Confirmation code": "Code de confirmation",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Supprimer l'espace de travail <1>{{workspaceName}}</1> va détruire toutes les collections, tous les documents et utilisateurs ainsi que les données associées. Vous serez immédiatement déconnecté de {{appName}}.",
@@ -1077,7 +1147,6 @@
"Expires today": "Expire aujourd'hui",
"Expires tomorrow": "Expire demain",
"Expires {{ date }}": "Expire le {{ date }}",
"Connect": "Se connecter",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Oups, vous devez accepter les autorisations dans GitHub pour connecter {{appName}} à votre espace de travail. Réessayer?",
"Something went wrong while authenticating your request. Please try logging in again.": "Une erreur s'est produite lors de l'authentification de votre requête. Veuillez essayer de vous connecter à nouveau.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "Le propriétaire du compte GitHub a été invité à installer l'application GitHub {{githubAppName}} . Une fois approuvé, les aperçus seront affichés pour les liens respectifs.",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Ajouter un identifiant de mesure Google Analytics 4 pour envoyer le nombre de vues de documents et les statistiques de l'espace de travail à votre propre compte Google Analytics.",
"Measurement ID": "ID de mesure",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Créez un flux \"Web\" dans votre tableau de bord d'administration de Google Analytics et copiez l'ID de mesure à partir du code extrait généré pour l'installer.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Oups, vous devez accepter les autorisations dans Linear pour connecter {{appName}} à votre espace de travail. Réessayer ?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Activer les aperçus des problèmes de Linear dans les documents en connectant un espace de travail Linear à {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "La déconnexion empêchera l'aperçu des liens Linear de cet espace de travail dans les documents. Êtes-vous sûr ?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "L'intégration Linear est actuellement désactivée. Veuillez définir les variables d'environnement associées et redémarrer le serveur pour activer l'intégration.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Configurer une installation de Matomo pour envoyer des vues et des analyses depuis l'espace de travail à votre propre instance Matomo.",
"Instance URL": "URL de linstance",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "L'URL de votre instance Matomo. Si vous utilisez Matomo Cloud, cela se terminera par matomo.cloud/",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Les Webhooks peuvent être utilisés pour notifier votre application lorsque des événements se produisent dans {{appName}}. Les événements sont envoyés en tant que requête https contenant un bloc JSON en temps quasi réel.",
"Inactive": "Inactif",
"Create a webhook": "Créer un webhook",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier est une plate-forme qui permet à {{appName}} de s'intégrer facilement à des milliers d'autres outils professionnels. Automatisez vos flux de travail, synchronisez les données, et plus.",
"Never logged in": "Jamais connecté",
"Online now": "En ligne actuellement",
"Online {{ timeAgo }}": "En ligne il y a {{ timeAgo }}",
+84 -10
View File
@@ -120,6 +120,8 @@
"Log out": "Log out",
"Mark notifications as read": "Mark notifications as read",
"Archive all notifications": "Archive all notifications",
"New App": "New App",
"New Application": "New Application",
"Restore revision": "Restore revision",
"Link copied": "Link copied",
"Dark": "Dark",
@@ -170,8 +172,6 @@
"Deleting": "מוחק",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.",
"Sorry, an error occurred saving the collection": "Sorry, an error occurred saving the collection",
"Add a description": "הוסף תיאור",
"Type a command or search": "Type a command or search",
"Choose a template": "בחר תבנית",
"Are you sure you want to permanently delete this entire comment thread?": "Are you sure you want to permanently delete this entire comment thread?",
@@ -308,6 +308,13 @@
"Unknown": "Unknown",
"Mark all as read": "Mark all as read",
"You're all caught up": "You're all caught up",
"Icon": "Icon",
"My App": "My App",
"Tagline": "Tagline",
"A short description": "A short description",
"Callback URLs": "Callback URLs",
"Published": "Published",
"Allow this app to be installed by other workspaces": "Allow this app to be installed by other workspaces",
"{{ username }} reacted with {{ emoji }}": "{{ username }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} and {{ count }} other reacted with {{ emoji }}",
@@ -395,7 +402,6 @@
"Star document": "Star document",
"Template created, go ahead and customize it": "Template created, go ahead and customize it",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.",
"Published": "Published",
"Enable other members to use the template immediately": "Enable other members to use the template immediately",
"Location": "Location",
"Admins can manage the workspace and access billing.": "Admins can manage the workspace and access billing.",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "Unsubscribed from document",
"Unsubscribed from collection": "Unsubscribed from collection",
"Account": "Account",
"API Keys": "API Keys",
"API & Apps": "API & Apps",
"Details": "Details",
"Security": "Security",
"Features": "Features",
"Members": "Members",
"Groups": "Groups",
"API Keys": "API Keys",
"Applications": "Applications",
"Shared Links": "Shared Links",
"Import": "Import",
"Install": "Install",
"Integrations": "Integrations",
"Revoke token": "Revoke token",
"Revoke": "Revoke",
@@ -538,6 +547,7 @@
"Document options": "Document options",
"Choose a collection": "Choose a collection",
"Subscription inherited from collection": "Subscription inherited from collection",
"Apply template": "Apply template",
"Enable embeds": "Enable embeds",
"Export options": "Export options",
"Group members": "Group members",
@@ -551,6 +561,10 @@
"New child document": "New child document",
"Save in workspace": "Save in workspace",
"Notification settings": "Notification settings",
"Revoke {{ appName }}": "Revoke {{ appName }}",
"Revoking": "Revoking",
"Are you sure you want to revoke access?": "Are you sure you want to revoke access?",
"Delete app": "Delete app",
"Revision options": "Revision options",
"Share link revoked": "Share link revoked",
"Share link copied": "Share link copied",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} group with access",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} groups with access",
"Archived by {{userName}}": "Archived by {{userName}}",
"Sorry, an error occurred saving the collection": "Sorry, an error occurred saving the collection",
"Add a description": "הוסף תיאור",
"Share": "שיתוף",
"Overview": "Overview",
"Recently updated": "Recently updated",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "Authentication failed this login method was disabled by a workspace admin.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.",
"Sorry, an unknown error occurred.": "Sorry, an unknown error occurred.",
"Choose a workspace": "Choose a workspace",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choose an {{ appName }} workspace or login to continue connecting this app",
"Login": "Login",
"Error": "Error",
"Failed to load configuration.": "Failed to load configuration.",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "You signed in with {{ authProviderName }} last time.",
"Or": "Or",
"Already have an account? Go to <1>login</1>.": "Already have an account? Go to <1>login</1>.",
"An error occurred": "An error occurred",
"The OAuth client could not be found, please check the provided client ID": "The OAuth client could not be found, please check the provided client ID",
"The OAuth client could not be loaded, please check the redirect URI is valid": "The OAuth client could not be loaded, please check the redirect URI is valid",
"Required OAuth parameters are missing": "Required OAuth parameters are missing",
"Authorize": "Authorize",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} wants to access {{ teamName }}",
"By <em>{{ developerName }}</em>": "By <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} will be able to access your account and perform the following actions",
"read": "read",
"write": "write",
"read and write": "read and write",
"API keys": "API keys",
"attachments": "attachments",
"collections": "collections",
"comments": "comments",
"documents": "documents",
"events": "events",
"groups": "groups",
"integrations": "integrations",
"notifications": "notifications",
"reactions": "reactions",
"pins": "pins",
"shares": "shares",
"users": "users",
"teams": "teams",
"workspace": "workspace",
"Read all data": "Read all data",
"Write all data": "Write all data",
"Any collection": "Any collection",
"All time": "All time",
"Past day": "Past day",
@@ -837,15 +883,37 @@
"Something went wrong": "Something went wrong",
"Please try again or contact support if the problem persists": "Please try again or contact support if the problem persists",
"No documents found for your search filters.": "No documents found for your search filters.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"API keys have been disabled by an admin for your account": "API keys have been disabled by an admin for your account",
"Application access": "Application access",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Manage which third-party and internal applications have been granted access to your {{ appName }} account.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"Application published": "Application published",
"Application updated": "Application updated",
"Client secret rotated": "Client secret rotated",
"Rotate secret": "Rotate secret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.",
"Displayed to users when authorizing": "Displayed to users when authorizing",
"Developer information shown to users when authorizing": "Developer information shown to users when authorizing",
"Developer name": "Developer name",
"Developer URL": "Developer URL",
"Allow users from other workspaces to authorize this app": "Allow users from other workspaces to authorize this app",
"Credentials": "Credentials",
"OAuth client ID": "OAuth client ID",
"The public identifier for this app": "The public identifier for this app",
"OAuth client secret": "OAuth client secret",
"Store this value securely, do not expose it publicly": "Store this value securely, do not expose it publicly",
"Where users are redirected after authorizing this app": "Where users are redirected after authorizing this app",
"Authorization URL": "Authorization URL",
"Where users are redirected to authorize this app": "Where users are redirected to authorize this app",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.",
"by {{ name }}": "by {{ name }}",
"Last used": "Last used",
"No expiry": "No expiry",
"Restricted scope": "Restricted scope",
"API key copied to clipboard": "API key copied to clipboard",
"Copied": "Copied",
"Revoking": "Revoking",
"Are you sure you want to revoke the {{ tokenName }} token?": "Are you sure you want to revoke the {{ tokenName }} token?",
"Disconnect integration": "Disconnect integration",
"Connected": "Connected",
@@ -892,7 +960,7 @@
"No people matching your search": "No people matching your search",
"No people left to add": "No people left to add",
"Date created": "Date created",
"Upload": "Upload",
"Crop Image": "Crop Image",
"Crop image": "Crop image",
"Uploading": "Uploading",
"How does this work?": "How does this work?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "{{ count }} documents imported",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload",
"Configure": "Configure",
"Connect": "Connect",
"Last active": "Last active",
"Guest": "Guest",
"Never used": "Never used",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Are you sure you want to delete the {{ appName }} application? This cannot be undone.",
"Shared by": "Shared by",
"Date shared": "Date shared",
"Last accessed": "Last accessed",
@@ -965,6 +1037,7 @@
"Enterprise": "Enterprise",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.",
"Recent imports": "Recent imports",
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
"Could not load members": "Could not load members",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.",
"Receive a notification whenever a new document is published": "Receive a notification whenever a new document is published",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "Unsubscription successful. Your notification settings were updated",
"Manage when and where you receive email notifications.": "Manage when and where you receive email notifications.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.",
"Personal keys": "Personal keys",
"Preferences saved": "Preferences saved",
"Delete account": "Delete account",
"Manage settings that affect your personal experience.": "Manage settings that affect your personal experience.",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "You can create templates to help your team create consistent and accurate documentation.",
"Alphabetical": "Alphabetical",
"There are no templates just yet.": "There are no templates just yet.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.",
"Confirmation code": "Confirmation code",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.",
@@ -1077,7 +1147,6 @@
"Expires today": "Expires today",
"Expires tomorrow": "Expires tomorrow",
"Expires {{ date }}": "Expires {{ date }}",
"Connect": "Connect",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?",
"Something went wrong while authenticating your request. Please try logging in again.": "Something went wrong while authenticating your request. Please try logging in again.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.",
"Measurement ID": "Measurement ID",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.",
"Instance URL": "Instance URL",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.",
"Inactive": "Inactive",
"Create a webhook": "Create a webhook",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.",
"Never logged in": "Never logged in",
"Online now": "Online now",
"Online {{ timeAgo }}": "Online {{ timeAgo }}",
+237 -163
View File
@@ -1,53 +1,53 @@
{
"New API key": "Új API kulcs",
"New API key": "Új API-kulcs",
"Open collection": "Gyűjtemény megnyitása",
"New collection": "Új gyűjtemény",
"Create a collection": "Gyűjtemény létrehozása",
"Edit": "Szerkesztés",
"Edit collection": "Gyűjtemény szerkesztése",
"Permissions": "Jogosultságok",
"Collection permissions": "Gyűjtemény jogosultságok",
"Collection permissions": "Gyűjtemény jogosultságai",
"Share this collection": "Gyűjtemény megosztása",
"Search in collection": "Keresés a gyűjteményben",
"Star": "Csillagozás",
"Unstar": "Csillagozás törlése",
"Unstar": "Csillagozás megszüntetése",
"Subscribe": "Feliratkozás",
"Subscribed to document notifications": "Feliratkozás megtörtént a dokumentum értesítéseire",
"Subscribed to document notifications": "Feliratkozva a dokumentum értesítéseire",
"Unsubscribe": "Leiratkozás",
"Unsubscribed from document notifications": "Leiratkozás megtörtént a dokumentum értesítéseiről",
"Unsubscribed from document notifications": "Leiratkozva a dokumentum értesítéseiről",
"Archive": "Archiválás",
"Archive collection": "Keresés a gyűjteményben",
"Collection archived": "Collection archived",
"Archive collection": "Gyűjtemény archiválása",
"Collection archived": "Gyűjtemény archiválva",
"Archiving": "Archiválás",
"Archiving this collection will also archive all documents within it. Documents from the collection will no longer be visible in search results.": "Archiving this collection will also archive all documents within it. Documents from the collection will no longer be visible in search results.",
"Restore": "Visszaállítás",
"Collection restored": "Gyűjtemény törölve",
"Archiving this collection will also archive all documents within it. Documents from the collection will no longer be visible in search results.": "A gyűjtemény archiválása a benne lévő összes dokumentumot is archiválja. A gyűjteményből származó dokumentumok többé nem lesznek láthatóak a keresési eredményekben.",
"Restore": "Helyreállítás",
"Collection restored": "Gyűjtemény helyreállítva",
"Delete": "Törlés",
"Delete collection": "Gyűjtemény törlése",
"New template": "Új sablon",
"Delete comment": "Hozzászólás törlése",
"Mark as resolved": "Megjelölés megoldottként",
"Thread resolved": "Thread resolved",
"Thread resolved": "Szál megoldva",
"Mark as unresolved": "Megjelölés megoldatlanként",
"View reactions": "View reactions",
"Reactions": "Reakciók",
"Copy ID": "ID másolása",
"Clear IndexedDB cache": "IndexedDB cache törlése",
"IndexedDB cache cleared": "IndexedDB cache törölve",
"Toggle debug logging": "Hibakeresési naplózás váltása",
"View reactions": "Reagálások megtekintése",
"Reactions": "Reagálások",
"Copy ID": "Azonosító másolása",
"Clear IndexedDB cache": "IndexedDB gyorsítótárának törlése",
"IndexedDB cache cleared": "Az IndexedDB gyorsítótára törölve",
"Toggle debug logging": "Hibakeresési naplózás be- vagy kikapcsolása",
"Debug logging enabled": "Hibakeresési naplózás engedélyezve",
"Debug logging disabled": "Hibakeresési naplózás letiltva",
"Development": "Fejlesztés",
"Open document": "Dokumentum megnyitása",
"New document": "Új dokumentum",
"New draft": "New draft",
"New draft": "Új piszkozat",
"New from template": "Új, sablonból",
"New nested document": "Új beágyozott dokumentum",
"Publish": "Közzétesz",
"Published {{ documentName }}": "{{ documentName }} publikálva",
"New nested document": "Új beágyazott dokumentum",
"Publish": "Közzététel",
"Published {{ documentName }}": "A(z) {{ documentName }} közzétéve",
"Publish document": "Dokumentum közzététele",
"Unpublish": "Közzététel visszavonása",
"Unpublished {{ documentName }}": "{{ documentName }} visszavonva",
"Unpublished {{ documentName }}": "A(z) {{ documentName }} közzététele visszavonva",
"Share this document": "Dokumentum megosztása",
"HTML": "HTML",
"PDF": "PDF",
@@ -59,12 +59,12 @@
"Markdown copied to clipboard": "Markdown vágólapra másolva",
"Copy as text": "Másolás szövegként",
"Text copied to clipboard": "Szöveg másolva a vágólapra",
"Copy public link": "Megosztható hivatkozás",
"Copy public link": "Nyilvános hivatkozás másolása",
"Link copied to clipboard": "Hivatkozás vágólapra másolva",
"Copy link": "Hivatkozás másolása",
"Copy": "Másolás",
"Duplicate": "Duplikálás",
"Duplicate document": "Dokumentum duplikálása",
"Duplicate": "Kettőzés",
"Duplicate document": "Dokumentum kettőzése",
"Copy document": "Dokumentum másolása",
"collection": "gyűjtemény",
"Pin to {{collectionName}}": "Rögzítés ide: {{collectionName}}",
@@ -108,10 +108,10 @@
"Profile": "Profil",
"Templates": "Sablonok",
"Notifications": "Értesítések",
"Preferences": "Testreszabás",
"Preferences": "Beállítások",
"Documentation": "Dokumentáció",
"API documentation": "API dokumentáció",
"Toggle sidebar": "Oldalsáv váltása",
"API documentation": "API-dokumentáció",
"Toggle sidebar": "Oldalsáv be- vagy kikapcsolása",
"Send us feedback": "Visszajelzés küldése",
"Report a bug": "Hiba bejelentése",
"Changelog": "Változások listája",
@@ -120,6 +120,8 @@
"Log out": "Kijelentkezés",
"Mark notifications as read": "Értesítések olvasottnak jelölése",
"Archive all notifications": "Összes értesítés archiválása",
"New App": "New App",
"New Application": "New Application",
"Restore revision": "Revízió visszaállítása",
"Link copied": "Hivatkozás másolva",
"Dark": "Sötét",
@@ -135,9 +137,9 @@
"Login to workspace": "Login to workspace",
"Invite people": "Mások meghívása",
"Invite to workspace": "Meghívása a munkaterületbe",
"Promote to {{ role }}": "Promote to {{ role }}",
"Demote to {{ role }}": "Demote to {{ role }}",
"Update role": "Szerepkör módosítása",
"Promote to {{ role }}": "Előléptetés {{ role }} szerepbe",
"Demote to {{ role }}": "Lefokozás {{ role }} szerepbe",
"Update role": "Szerep frissítése",
"Delete user": "Felhasználó törlése",
"Collection": "Gyűjtemény",
"Collections": "Gyűjtemények",
@@ -154,8 +156,8 @@
"currently editing": "jelenleg szerkeszti",
"currently viewing": "jelenleg megtekinti",
"previously edited": "előzőleg szerkesztette",
"You": "Te",
"Viewers": "Megtekintésre jogosult",
"You": "Ön",
"Viewers": "Megtekintők",
"Collections are used to group documents and choose permissions": "A gyűjtemények dokumentuok csoportosítására és jogosultságok beállítására szolgálnak",
"Name": "Név",
"The default access for workspace members, you can share with more users or groups later.": "The default access for workspace members, you can share with more users or groups later.",
@@ -170,8 +172,6 @@
"Deleting": "Törlés",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "Biztos benne? A(z) <em>{{collectionName}}</em> gyűjtemény törlése végleges, és nem lehet majd visszaállítani, azonban minden benne foglalt, publikált dokumentum a kukába kerül.",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "Ezen felül a(z) <em>{{collectionName}}</em> gyűjtemény nyitólapként van beállítva a törlése visszaállítja a nyitólapot is az eredetire.",
"Sorry, an error occurred saving the collection": "Sajnálom, valami hiba merült fel a gyűjtemény mentése közben",
"Add a description": "Adja meg a leírást",
"Type a command or search": "Írjon be egy parancsot vagy keresést",
"Choose a template": "Válasszon egy sablont",
"Are you sure you want to permanently delete this entire comment thread?": "Biztos benne, hogy véglegesen törölni szeretné az egész hozzászólás szálat?",
@@ -247,7 +247,7 @@
"Sorry, an unrecoverable error occurred{{notified}}. Please try reloading the page, it may have been a temporary glitch.": "Elnézést, egy helyrehozhatatlan hiba történt {{notified}}. Kérem próbálja újratölteni a lapot, lehet, hogy csak átmeneti a probléma.",
"our engineers have been notified": "a mérnökeinket éretsítettük",
"Show detail": "Részletek mutatása",
"Current version": "Aktuális verzió",
"Current version": "Jelenlegi verzió",
"{{userName}} edited": "{{userName}} módosította",
"{{userName}} archived": "{{userName}} archiválta",
"{{userName}} restored": "{{userName}} visszaállította",
@@ -299,7 +299,7 @@
"Can edit": "Szerkesztheti",
"No access": "Nincs hozzáférés",
"Default access": "Alapértelmezett hozzáférés",
"Change Language": "Nyelv váltása",
"Change Language": "Nyelv megváltoztatása",
"Dismiss": "Bezár",
"Youre offline.": "Az Ön állapota offline.",
"Sorry, an error occurred.": "Elnézést, valami hiba történt.",
@@ -308,14 +308,21 @@
"Unknown": "Ismeretlen",
"Mark all as read": "Összes megjelölése olvasottként",
"You're all caught up": "Minden hozzászólást elolvasott",
"Icon": "Icon",
"My App": "My App",
"Tagline": "Tagline",
"A short description": "A short description",
"Callback URLs": "Callback URLs",
"Published": "Közzétéve",
"Allow this app to be installed by other workspaces": "Allow this app to be installed by other workspaces",
"{{ username }} reacted with {{ emoji }}": "{{ username }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} and {{ count }} other reacted with {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}_plural": "{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}",
"Add reaction": "Add reaction",
"Reaction picker": "Reaction picker",
"Could not load reactions": "Could not load reactions",
"Reaction": "Reakció",
"Add reaction": "Reagálás hozzáadása",
"Reaction picker": "Reagálásválasztó",
"Could not load reactions": "Nem sikerült betölteni a reagálásokat",
"Reaction": "Reagálás",
"Results": "Eredmények",
"No results for {{query}}": "Nincs találat: {{query}}",
"Manage": "Kezelés",
@@ -331,7 +338,7 @@
"{{ count }} people and {{ count2 }} groups added to the collection_plural": "{{ count }} személy és {{ count2 }} csoport hozzáadva a gyűjteményhez",
"Add": "Hozzáadás",
"Add or invite": "Add or invite",
"Viewer": "Néző",
"Viewer": "Megtekintő",
"Editor": "Szerkesztő",
"Suggestions for invitation": "Suggestions for invitation",
"No matches": "Nincs találat",
@@ -362,7 +369,7 @@
"Publish to internet": "Publikálás interneten",
"Search engine indexing": "Keresőmotor indexelése",
"Disable this setting to discourage search engines from indexing the page": "Disable this setting to discourage search engines from indexing the page",
"Nested documents are not shared on the web. Toggle sharing to enable access, this will be the default behavior in the future": "Nested documents are not shared on the web. Toggle sharing to enable access, this will be the default behavior in the future",
"Nested documents are not shared on the web. Toggle sharing to enable access, this will be the default behavior in the future": "A beágyazott dokumentumok nem kerülnek megosztásra a weben. Kapcsolja be a megosztást a hozzáférés engedélyezéséhez, ez lesz az alapértelmezett viselkedés a jövőben.",
"{{ userName }} was added to the document": "{{ userName }} eltávolítva a dokumentumból",
"{{ count }} people added to the document": "{{ count }} eltávolítva a dokumentumból",
"{{ count }} people added to the document_plural": "{{ count }} eltávolítva a dokumentumból",
@@ -395,13 +402,12 @@
"Star document": "Dokumentum csillagozása",
"Template created, go ahead and customize it": "A sablon elkészült, fogjon bele a testreszabásba",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "Sablon létrehozása a(z) <em>{{titleWithDefault}}</em> dokumentumból \"roncsolásmentes\" művelet egy másolatot készítünk a dokumentumból, melyből sablon lesz, ami új dokumentumok kiinduló pontjának használható.",
"Published": "Közzétéve",
"Enable other members to use the template immediately": "Enable other members to use the template immediately",
"Location": "Hely",
"Admins can manage the workspace and access billing.": "Admins can manage the workspace and access billing.",
"Editors can create, edit, and comment on documents.": "Editors can create, edit, and comment on documents.",
"Viewers can only view and comment on documents.": "Viewers can only view and comment on documents.",
"Are you sure you want to make {{ userName }} a {{ role }}?": "Biztos, hogy {{ userName }} tag legyen?",
"Are you sure you want to make {{ userName }} a {{ role }}?": "Biztosan {{ role }} szerepbe szeretné helyezni {{ userName }} felhasználót?",
"I understand, delete": "Megértettem, töröljük",
"Are you sure you want to permanently delete {{ userName }}? This operation is unrecoverable, consider suspending the user instead.": "Biztos, hogy {{ userName }} véglegesen törölve legyen? Ez a művelet nem vonható vissza, fontolja meg a felfüggesztést helyette.",
"Are you sure you want to suspend {{ userName }}? Suspended users will be prevented from logging in.": "Bizthogy, hogy {{ userName }} fel legyen függesztve? A felfüggesztett felhasználók belépni sem tudnak.",
@@ -429,7 +435,7 @@
"{{ userName }} won't be notified, as they do not have access to this document": "{{ userName }} won't be notified, as they do not have access to this document",
"Keep as link": "Keep as link",
"Mention": "Mention",
"Embed": "Beágyazás",
"Embed": "Beágyazott",
"Add column after": "Oszlop hozzáadása utána",
"Add column before": "Oszlop hozzáadása előtte",
"Add row after": "Add row after",
@@ -439,8 +445,8 @@
"Align right": "Jobbra igazítás",
"Default width": "Alapértelmezett szélesség",
"Full width": "Teljes szélesség",
"Bulleted list": "Egyszerű lista",
"Todo list": "Teendő lista",
"Bulleted list": "Felsorolásjeles lista",
"Todo list": "Feladatlista",
"Code block": "Kódblokk",
"Copied to clipboard": "Vágólapra másolva",
"Code": "Kód",
@@ -456,29 +462,29 @@
"Download image": "Kép letöltése",
"Replace image": "Kép cseréje",
"Italic": "Dőlt",
"Sorry, that link wont work for this embed type": "Elnézést, ez a hivatkozás nem működik ezzel a beágyazás típussal",
"File attachment": "Fájl csatolmány",
"Sorry, that link wont work for this embed type": "Sajnálom, ez a hivatkozás nem működik ennél a beágyazott típusl",
"File attachment": "Fájlmelléklet",
"Enter a link": "Enter a link",
"Big heading": "Nagy cím",
"Medium heading": "Közepes cím",
"Small heading": "Kis cím",
"Extra small heading": "Extra small heading",
"Heading": "Főcím",
"Divider": "Osztó",
"Big heading": "Nagy címsor",
"Medium heading": "Közepes címsor",
"Small heading": "Kis címsor",
"Extra small heading": "Nagyon kicsi címsor",
"Heading": "Címsor",
"Divider": "Elválasztó",
"Image": "Kép",
"Sorry, an error occurred uploading the file": "Elnézést, valami hiba történt a fájl feltöltése közben",
"Write a caption": "Írjon egy elnevezést",
"Info": "Infó",
"Info notice": "Infó értesítés",
"Info notice": "Információs értesítés",
"Link": "Hivatkozás",
"Highlight": "Kiemel",
"Type '/' to insert": "Gépeljen '/' jelet a beszúráshoz",
"Highlight": "Kiemelés",
"Type '/' to insert": "Gépeljen be egy „/” karaktert a beszúráshoz",
"Keep typing to filter": "Gépeljen tovább a szűréshez",
"Open link": "Hivatkozás megnyitása",
"Go to link": "Ugrás a hivatkozásra",
"Sorry, that type of link is not supported": "Elnézést, ez a hivatkozás típus nem támogatott",
"Ordered list": "Rendezett lista",
"Page break": "Laptörés",
"Page break": "Oldaltörés",
"Paste a link": "Szúrjon be egy hivatkozást",
"Paste a {{service}} link…": "Szúrjon be egy {{service}} hivatkozást…",
"Placeholder": "Helykitöltő",
@@ -487,23 +493,23 @@
"Search or paste a link": "Keressen vagy szúrjon be egy hivatkozást",
"Strikethrough": "Áthúzott",
"Bold": "Félkövér",
"Subheading": "Alcím",
"Subheading": "Alcímsor",
"Sort ascending": "Rendezés növekvő sorrendben",
"Sort descending": "Rendezés csökkenő sorrendben",
"Table": "Táblázat",
"Export as CSV": "CSV exportálás",
"Toggle header": "Toggle header",
"Toggle header": "Fejléc be- vagy kikapcsolása",
"Math inline (LaTeX)": "Matek képlet a sorban (LaTeX)",
"Math block (LaTeX)": "Matek blokk (LaTeX)",
"Math block (LaTeX)": "Matematikablokk (LaTeX)",
"Tip": "Tipp",
"Tip notice": "Tipp kiemelés",
"Tip notice": "Tipp értesítés",
"Warning": "Figyelmeztetés",
"Warning notice": "Figyelmeztetés kiemelés",
"Warning notice": "Figyelmeztető értesítés",
"Success": "Siker",
"Success notice": "Siker kiemelés",
"Current date": "Aktuális dátum",
"Current time": "Aktuális idő",
"Current date and time": "Aktuális dátum és idő",
"Success notice": "Siker értesítés",
"Current date": "Jelenlegi dátum",
"Current time": "Jelenlegi idő",
"Current date and time": "Jelenlegi dátum és idő",
"Indent": "Behúzás növelése",
"Outdent": "Behúzás csökkentése",
"Video": "Videó",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "Leiratkozott a dokumentumról",
"Unsubscribed from collection": "Leiratkozott a dokumentumról",
"Account": "Fiók",
"API Keys": "API Keys",
"API & Apps": "API és alkalmazások",
"Details": "Megjelenés",
"Security": "Biztonság",
"Features": "Funkciók",
"Members": "Tagok",
"Groups": "Csoportok",
"API Keys": "API-kulcsok",
"Applications": "Applications",
"Shared Links": "Megosztott hivatkozások",
"Import": "Importálás",
"Install": "Install",
"Integrations": "Integrációk",
"Revoke token": "Token visszavonása",
"Revoke": "Visszavonás",
@@ -536,11 +545,12 @@
"Show document menu": "Show document menu",
"{{ documentName }} restored": "{{ documentName}} visszaállította",
"Document options": "Dokumentum beállítások",
"Choose a collection": "Válasszon egy gyűjteményt",
"Choose a collection": "Gyűjtemény kiválasztása",
"Subscription inherited from collection": "Subscription inherited from collection",
"Apply template": "Apply template",
"Enable embeds": "Beágyazások engedélyezése",
"Export options": "Exportálási beállítások",
"Group members": "Csoport tagok",
"Group members": "Csoport tagjai",
"Edit group": "Csoport szerkesztése",
"Delete group": "Csoport törlése",
"Group options": "Csoport beállítások",
@@ -549,8 +559,12 @@
"Member options": "Tag beállítások",
"New document in <em>{{ collectionName }}</em>": "Új dokumentum a(z) <em>{{ collectionName }}</em> gyűjteményben.",
"New child document": "Új gyermek dokumentum",
"Save in workspace": "Save in workspace",
"Save in workspace": "Mentés a munkaterületen",
"Notification settings": "Értesítési beállítások",
"Revoke {{ appName }}": "Revoke {{ appName }}",
"Revoking": "Revoking",
"Are you sure you want to revoke access?": "Are you sure you want to revoke access?",
"Delete app": "Delete app",
"Revision options": "Revízió beállítások",
"Share link revoked": "Hivatkozás megosztás visszavonva",
"Share link copied": "Megosztási hivatkozás másolva",
@@ -558,14 +572,14 @@
"Go to document": "Tovább a dokumentumhoz",
"Revoke link": "Hivatkozás visszavonása",
"Contents": "Tartalom",
"Headings you add to the document will appear here": "A dokumentumhoz adott címek itt jelennek meg",
"Headings you add to the document will appear here": "A dokumentumhoz hozzáadott címsorok itt jelennek meg",
"Table of contents": "Tartalomjegyzék",
"Change name": "Név módosítása",
"Change email": "Email-cím megváltoztatása",
"Suspend user": "Felfüggesztett felhasználó",
"An error occurred while sending the invite": "Valami hiba történt a meghívó küldése közben",
"User options": "Felhasználó beállításai",
"Change role": "Szerep módosítása",
"Change role": "Szerep megváltoztatása",
"Resend invite": "Meghívó újraküldése",
"Revoke invite": "Meghívó visszavonása",
"Activate user": "Felhasználó aktiválása",
@@ -580,7 +594,7 @@
"shared": "megosztva",
"invited you to": "invited you to",
"Choose a date": "Válassz dátumot",
"API key created. Please copy the value now as it will not be shown again.": "API key created. Please copy the value now as it will not be shown again.",
"API key created. Please copy the value now as it will not be shown again.": "API-kulcs létrehozva. Most másolja ki az értéket, mivel ez többé nem jelenik meg.",
"Scopes": "Hatáskörök",
"Space-separated scopes restrict the access of this API key to specific parts of the API. Leave blank for full access": "Space-separated scopes restrict the access of this API key to specific parts of the API. Leave blank for full access",
"Expiration": "Expiration",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} csoport rendelkezik hozzáféréssel",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} csoport rendelkezik hozzáféréssel",
"Archived by {{userName}}": "Archiválta: {{userName}}",
"Sorry, an error occurred saving the collection": "Sajnálom, valami hiba merült fel a gyűjtemény mentése közben",
"Add a description": "Adja meg a leírást",
"Share": "Megosztás",
"Overview": "Áttekintés",
"Recently updated": "Nemrég módosítva",
@@ -636,7 +652,7 @@
"only you": "only you",
"person": "személy",
"people": "személyek",
"Type '/' to insert, or start writing…": "Type '/' to insert, or start writing…",
"Type '/' to insert, or start writing…": "Gépeljen be egy „/” karaktert a beszúráshoz, vagy kezdjen el írni…",
"Hide contents": "Tartalomjegyzék elrejtése",
"Show contents": "Tartalomjegyzék megjelenítése",
"available when headings are added": "available when headings are added",
@@ -678,7 +694,7 @@
"{{ count }} days_plural": "{{ count }} szó",
"This template will be permanently deleted in <2></2> unless restored.": "Ez a sablon véglegesen törölve lesz <2></2>, hacsak nem álítja vissza.",
"This document will be permanently deleted in <2></2> unless restored.": "Ez a dokumentum véglegesen törölve lesz <2></2>, hacsak nem álítja vissza.",
"Highlight some text and use the <1></1> control to add placeholders that can be filled out when creating new documents": "Jelöljön ki szöveget, és használja a <1></1> vezérlőt üres mezők hozzáadására, amiket majd ki lehet tölteni új dokumentum létrehozása során",
"Highlight some text and use the <1></1> control to add placeholders that can be filled out when creating new documents": "Jelöljön ki valamilyen szöveget, és használja a <1></1> vezérlőt olyan helykitöltők hozzáadásához, amelyek kitöltésre kerülhetnek új dokumentumok létrehozásakor",
"Youre editing a template": "Ön egy sablont szerkeszt",
"Deleted by {{userName}}": "Törölte: {{userName}}",
"Observing {{ userName }}": "Vizsgálja: {{ userName }}",
@@ -712,7 +728,7 @@
"The page youre looking for cannot be found. It might have been deleted or the link is incorrect.": "The page youre looking for cannot be found. It might have been deleted or the link is incorrect.",
"Offline": "Offline",
"We were unable to load the document while offline.": "We were unable to load the document while offline.",
"Your account has been suspended": "A fiókod felfüggesztésre került",
"Your account has been suspended": "A fiókja felfüggesztésre került",
"Warning Sign": "Warning Sign",
"A workspace admin (<em>{{ suspendedContactEmail }}</em>) has suspended your account. To re-activate your account, please reach out to them directly.": "A workspace admin (<em>{{ suspendedContactEmail }}</em>) has suspended your account. To re-activate your account, please reach out to them directly.",
"Created by me": "Created by me",
@@ -724,7 +740,7 @@
"Sorry, you can only send {{MAX_INVITES}} invites at a time": "Sorry, you can only send {{MAX_INVITES}} invites at a time",
"Invited {{roleName}} will receive access to": "Invited {{roleName}} will receive access to",
"{{collectionCount}} collections": "{{collectionCount}} collections",
"Admin": "Admin",
"Admin": "Adminisztrátor",
"Can manage all workspace settings": "Can manage all workspace settings",
"Can create, edit, and delete documents": "Can create, edit, and delete documents",
"Can view and comment": "Can view and comment",
@@ -732,7 +748,7 @@
"Invite members to join your workspace. They will need to sign in with {{signinMethods}}.": "Invite members to join your workspace. They will need to sign in with {{signinMethods}}.",
"As an admin you can also <2>enable email sign-in</2>.": "As an admin you can also <2>enable email sign-in</2>.",
"Invite as": "Invite as",
"Role": "Szerepkör",
"Role": "Szerep",
"Email": "Email",
"Add another": "Add another",
"Inviting": "Inviting",
@@ -759,28 +775,28 @@
"Underline": "Aláhúzás",
"Undo": "Visszavonás",
"Redo": "Redo",
"Lists": "Lists",
"Toggle task list item": "Toggle task list item",
"Lists": "Listák",
"Toggle task list item": "Feladatlista-elem be- vagy kikapcsolása",
"Tab": "Tab",
"Indent list item": "Indent list item",
"Outdent list item": "Outdent list item",
"Move list item up": "Move list item up",
"Move list item down": "Move list item down",
"Indent list item": "Listaelem behúzása",
"Outdent list item": "Listaelem kihúzása",
"Move list item up": "Listaelem feljebb helyezése",
"Move list item down": "Listaelem lejjebb helyezése",
"Tables": "Táblázatok",
"Insert row": "Sor beszúrása",
"Next cell": "Következő cella",
"Previous cell": "Előző cella",
"Space": "Space",
"Numbered list": "Numbered list",
"Numbered list": "Számozott lista",
"Blockquote": "Idézet",
"Horizontal divider": "Horizontális elválasztó",
"LaTeX block": "LaTeX blokk",
"LaTeX block": "LaTeX-blokk",
"Inline code": "Beágyazott kód",
"Inline LaTeX": "Beágyazott LaTeX",
"Triggers": "Triggers",
"Mention users and more": "Mention users and more",
"Emoji": "Emoji",
"Insert block": "Insert block",
"Insert block": "Blokk beszúrása",
"Sign In": "Bejelentkezés",
"Continue with Email": "Continue with Email",
"Continue with {{ authProviderName }}": "Continue with {{ authProviderName }}",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "Authentication failed this login method was disabled by a workspace admin.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.",
"Sorry, an unknown error occurred.": "Sorry, an unknown error occurred.",
"Choose a workspace": "Choose a workspace",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choose an {{ appName }} workspace or login to continue connecting this app",
"Login": "Login",
"Error": "Error",
"Failed to load configuration.": "Failed to load configuration.",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "You signed in with {{ authProviderName }} last time.",
"Or": "Or",
"Already have an account? Go to <1>login</1>.": "Already have an account? Go to <1>login</1>.",
"An error occurred": "An error occurred",
"The OAuth client could not be found, please check the provided client ID": "The OAuth client could not be found, please check the provided client ID",
"The OAuth client could not be loaded, please check the redirect URI is valid": "The OAuth client could not be loaded, please check the redirect URI is valid",
"Required OAuth parameters are missing": "Required OAuth parameters are missing",
"Authorize": "Authorize",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} wants to access {{ teamName }}",
"By <em>{{ developerName }}</em>": "By <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} will be able to access your account and perform the following actions",
"read": "read",
"write": "write",
"read and write": "read and write",
"API keys": "API-kulcsok",
"attachments": "attachments",
"collections": "collections",
"comments": "comments",
"documents": "documents",
"events": "events",
"groups": "groups",
"integrations": "integrations",
"notifications": "értesítések",
"reactions": "reagálások",
"pins": "pins",
"shares": "shares",
"users": "users",
"teams": "teams",
"workspace": "workspace",
"Read all data": "Read all data",
"Write all data": "Write all data",
"Any collection": "Any collection",
"All time": "All time",
"Past day": "Past day",
@@ -837,15 +883,37 @@
"Something went wrong": "Something went wrong",
"Please try again or contact support if the problem persists": "Please try again or contact support if the problem persists",
"No documents found for your search filters.": "No documents found for your search filters.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Személyes API-kulcsok létrehozása az API-val való hitelesítéshez és a munkaterület adatainak programozott vezérléséhez. További részletekért nézze meg a <em>fejlesztői dokumentációt</em>.",
"API keys have been disabled by an admin for your account": "Egy adminisztrátor letiltotta az API-kulcsokat az Ön fiókjánál",
"Application access": "Application access",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Manage which third-party and internal applications have been granted access to your {{ appName }} account.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Az API-kulcsok az API-val való hitelesítéshez és a munkaterület adatainak programozott vezérléséhez használhatók. További részletekért nézze meg a <em>fejlesztői dokumentációt</em>.",
"Application published": "Application published",
"Application updated": "Application updated",
"Client secret rotated": "Client secret rotated",
"Rotate secret": "Rotate secret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.",
"Displayed to users when authorizing": "Displayed to users when authorizing",
"Developer information shown to users when authorizing": "Developer information shown to users when authorizing",
"Developer name": "Developer name",
"Developer URL": "Developer URL",
"Allow users from other workspaces to authorize this app": "Allow users from other workspaces to authorize this app",
"Credentials": "Credentials",
"OAuth client ID": "OAuth client ID",
"The public identifier for this app": "The public identifier for this app",
"OAuth client secret": "OAuth client secret",
"Store this value securely, do not expose it publicly": "Store this value securely, do not expose it publicly",
"Where users are redirected after authorizing this app": "Where users are redirected after authorizing this app",
"Authorization URL": "Authorization URL",
"Where users are redirected to authorize this app": "Where users are redirected to authorize this app",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.",
"by {{ name }}": "by {{ name }}",
"Last used": "Last used",
"No expiry": "No expiry",
"Restricted scope": "Restricted scope",
"API key copied to clipboard": "API key copied to clipboard",
"API key copied to clipboard": "API-kulcs a vágólapra másolva",
"Copied": "Copied",
"Revoking": "Revoking",
"Are you sure you want to revoke the {{ tokenName }} token?": "Are you sure you want to revoke the {{ tokenName }} token?",
"Disconnect integration": "Disconnect integration",
"Connected": "Connected",
@@ -855,7 +923,7 @@
"The domains which should be allowed to create new accounts using SSO. Changing this setting does not affect existing user accounts.": "The domains which should be allowed to create new accounts using SSO. Changing this setting does not affect existing user accounts.",
"Remove domain": "Remove domain",
"Add a domain": "Add a domain",
"Save changes": "Save changes",
"Save changes": "Változtatások mentése",
"Please choose a single file to import": "Please choose a single file to import",
"Your import is being processed, you can safely leave this page": "Your import is being processed, you can safely leave this page",
"File not supported please upload a valid ZIP file": "File not supported please upload a valid ZIP file",
@@ -880,7 +948,7 @@
"{{userName}} was removed from the group": "{{userName}} was removed from the group",
"Add and remove members to the <em>{{groupName}}</em> group. Members of the group will have access to any collections this group has been added to.": "Add and remove members to the <em>{{groupName}}</em> group. Members of the group will have access to any collections this group has been added to.",
"Add people": "Személyek hozzáadása",
"Listing members of the <em>{{groupName}}</em> group.": "Listing members of the <em>{{groupName}}</em> group.",
"Listing members of the <em>{{groupName}}</em> group.": "A(z) <em>{{groupName}}</em> csoport tagjainak felsorolása.",
"This group has no members.": "This group has no members.",
"{{userName}} was added to the group": "{{userName}} was added to the group",
"Could not add user": "A felhasználó nem adható hozzá",
@@ -891,8 +959,8 @@
"Search people": "Emberek keresése",
"No people matching your search": "Egy személy sem felel meg a keresési szempontoknak",
"No people left to add": "Nincs több hozzáadható személy",
"Date created": "Date created",
"Upload": "Feltöltés",
"Date created": "Létrehozás dátuma",
"Crop Image": "Crop Image",
"Crop image": "Crop image",
"Uploading": "Uploading",
"How does this work?": "How does this work?",
@@ -907,26 +975,30 @@
"{{ count }} document imported_plural": "{{ count }} documents imported",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload",
"Last active": "Last active",
"Configure": "Configure",
"Connect": "Connect",
"Last active": "Utoljára aktív",
"Guest": "Vendég",
"Never used": "Never used",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Are you sure you want to delete the {{ appName }} application? This cannot be undone.",
"Shared by": "Megosztotta: ",
"Date shared": "Date shared",
"Last accessed": "Last accessed",
"Domain": "Domain",
"Views": "Megtekintések",
"All roles": "Minden szerepkör",
"Admins": "Adminok",
"All roles": "Összes szerep",
"Admins": "Adminisztrátorok",
"Editors": "Szerkesztők",
"All status": "All status",
"Active": "Active",
"All status": "Összes állapot",
"Active": "Aktív",
"Left": "Left",
"Right": "Right",
"Settings saved": "Settings saved",
"Settings saved": "Beállítások elmentve",
"Logo updated": "Logo updated",
"Unable to upload new logo": "Unable to upload new logo",
"Unable to upload new logo": "Nem lehet új logót feltölteni",
"Delete workspace": "Delete workspace",
"These settings affect the way that your workspace appears to everyone on the team.": "These settings affect the way that your workspace appears to everyone on the team.",
"Display": "Display",
"Display": "Megjelenítés",
"The logo is displayed at the top left of the application.": "The logo is displayed at the top left of the application.",
"The workspace name, usually the same as your company name.": "The workspace name, usually the same as your company name.",
"Theme": "Téma",
@@ -938,7 +1010,7 @@
"Show your teams logo on public pages like login and shared documents.": "Show your teams logo on public pages like login and shared documents.",
"Table of contents position": "Table of contents position",
"The side to display the table of contents in relation to the main content.": "The side to display the table of contents in relation to the main content.",
"Behavior": "Behavior",
"Behavior": "Viselkedés",
"Subdomain": "Subdomain",
"Your workspace will be accessible at": "Your workspace will be accessible at",
"Choose a subdomain to enable a login page just for your team.": "Choose a subdomain to enable a login page just for your team.",
@@ -956,7 +1028,7 @@
"Create a group": "Csoport létrehozása",
"Could not load groups": "Could not load groups",
"New group": "New group",
"Groups can be used to organize and manage the people on your team.": "Groups can be used to organize and manage the people on your team.",
"Groups can be used to organize and manage the people on your team.": "A csoportok a csapatban lévő emberek szervezésére és kezelésére használhatók.",
"No groups have been created yet": "No groups have been created yet",
"Import a zip file of Markdown documents (exported from version 0.67.0 or earlier)": "Import a zip file of Markdown documents (exported from version 0.67.0 or earlier)",
"Import data": "Import data",
@@ -965,59 +1037,58 @@
"Enterprise": "Enterprise",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.",
"Recent imports": "Recent imports",
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
"Could not load members": "Could not load members",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.",
"Receive a notification whenever a new document is published": "Receive a notification whenever a new document is published",
"Document updated": "Document updated",
"Receive a notification when a document you are subscribed to is edited": "Receive a notification when a document you are subscribed to is edited",
"Comment posted": "Comment posted",
"Receive a notification when a document you are subscribed to or a thread you participated in receives a comment": "Receive a notification when a document you are subscribed to or a thread you participated in receives a comment",
"Mentioned": "Mentioned",
"Receive a notification when someone mentions you in a document or comment": "Receive a notification when someone mentions you in a document or comment",
"Receive a notification when a comment thread you were involved in is resolved": "Receive a notification when a comment thread you were involved in is resolved",
"Collection created": "Collection created",
"Receive a notification whenever a new collection is created": "Receive a notification whenever a new collection is created",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Itt van mindenki felsorolva, aki bejelentkezett az {{appName}} alkalmazásba. Lehetséges, hogy vannak olyan egyéb felhasználók, akik {{signinMethods}} módon rendelkeznek hozzáféréssel, de még nem jelentkeztek be.",
"Receive a notification whenever a new document is published": "Értesítés fogadása, amikor új dokumentumot tesznek közzé",
"Document updated": "Dokumentum frissítve",
"Receive a notification when a document you are subscribed to is edited": "Értesítés fogadása, amikor egy feliratkozott dokumentumot szerkesztenek",
"Comment posted": "Hozzászólás elküldve",
"Receive a notification when a document you are subscribed to or a thread you participated in receives a comment": "Értesítés fogadása, amikor egy feliratkozott dokumentumhoz vagy egy olyan témához, amelyben részt vett, hozzászólás érkezik",
"Mentioned": "Megemlítve",
"Receive a notification when someone mentions you in a document or comment": "Értesítés fogadása, amikor valaki megemlíti Önt egy dokumentumban vagy hozzászólásban",
"Receive a notification when a comment thread you were involved in is resolved": "Értesítés fogadása, amikor megoldanak egy olyan hozzászólási szálat, amelyben Ön is részt vett",
"Collection created": "Gyűjtemény létrehozva",
"Receive a notification whenever a new collection is created": "Értesítés fogadása, amikor új gyűjteményt hoznak létre",
"Invite accepted": "Meghívás elfogadva",
"Receive a notification when someone you invited creates an account": "Receive a notification when someone you invited creates an account",
"Invited to document": "Invited to document",
"Receive a notification when a document is shared with you": "Receive a notification when a document is shared with you",
"Invited to collection": "Invited to collection",
"Receive a notification when you are given access to a collection": "Receive a notification when you are given access to a collection",
"Export completed": "Export completed",
"Receive a notification when an export you requested has been completed": "Receive a notification when an export you requested has been completed",
"Receive a notification when someone you invited creates an account": "Értesítés fogadása, amikor valaki, akit Ön meghívott, létrehoz egy fiókot",
"Invited to document": "Meghívva dokumentumba",
"Receive a notification when a document is shared with you": "Értesítés fogadása, amikor egy dokumentumot megosztanak Önnel",
"Invited to collection": "Meghívva gyűjteménybe",
"Receive a notification when you are given access to a collection": "Értesítés fogadása, amikor hozzáférést kap egy gyűjteményhez",
"Export completed": "Exportálás befejezve",
"Receive a notification when an export you requested has been completed": "Értesítés fogadása, amikor az Ön által kért exportálás befejeződött",
"Getting started": "Első lépések",
"Tips on getting started with features and functionality": "Tips on getting started with features and functionality",
"New features": "Új funkciók",
"Receive an email when new features of note are added": "Receive an email when new features of note are added",
"Notifications saved": "Notifications saved",
"Notifications saved": "Értesítések elmentve",
"Unsubscription successful. Your notification settings were updated": "Unsubscription successful. Your notification settings were updated",
"Manage when and where you receive email notifications.": "Manage when and where you receive email notifications.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.",
"Personal keys": "Personal keys",
"Preferences saved": "Beállítások elmentve",
"Delete account": "Fiók törlése",
"Manage settings that affect your personal experience.": "Manage settings that affect your personal experience.",
"Manage settings that affect your personal experience.": "A személyes élményt befolyásoló beállítások kezelése.",
"Language": "Nyelv",
"Choose the interface language. Community translations are accepted though our <2>translation portal</2>.": "Choose the interface language. Community translations are accepted though our <2>translation portal</2>.",
"Choose your preferred interface color scheme.": "Choose your preferred interface color scheme.",
"Use pointer cursor": "Use pointer cursor",
"Show a hand cursor when hovering over interactive elements.": "Kéz kurzor mutatása interaktív elemek felett.",
"Show line numbers": "Sorszámok mutatása",
"Show line numbers on code blocks in documents.": "Sorszám mutatása kód blokkoknál a dokumentumokban.",
"When enabled, documents have a separate editing mode. When disabled, documents are always editable when you have permission.": "Engedélyezés esetén a dokumentumoknak külön szerkesztési módja van. Kikapcsolt állapotban a dokumentumok mindig szerkeszthetőek, ha rendelkezel jogosultságokkal.",
"Remember previous location": "Remember previous location",
"Automatically return to the document you were last viewing when the app is re-opened.": "Automatically return to the document you were last viewing when the app is re-opened.",
"Smart text replacements": "Smart text replacements",
"Auto-format text by replacing shortcuts with symbols, dashes, smart quotes, and other typographical elements.": "Auto-format text by replacing shortcuts with symbols, dashes, smart quotes, and other typographical elements.",
"Choose the interface language. Community translations are accepted though our <2>translation portal</2>.": "A felület nyelvének kiválasztása. A közösségi fordítások a <2>fordítási portálon</2> keresztül kerülnek elfogadásra.",
"Choose your preferred interface color scheme.": "A felület előnyben részesített színsémájának kiválasztása.",
"Use pointer cursor": "Mutató kurzor használata",
"Show a hand cursor when hovering over interactive elements.": "Kéz alakú kurzor megjelenítése az interaktív elemekre történő rámutatáskor.",
"Show line numbers": "Sorszámok megjelenítése",
"Show line numbers on code blocks in documents.": "Sorszámok megjelenítése a dokumentumokban lévő kódblokkokban.",
"When enabled, documents have a separate editing mode. When disabled, documents are always editable when you have permission.": "Ha engedélyezve van, akkor a dokumentumok külön szerkesztési móddal rendelkeznek. Ha le van tiltva, akkor a dokumentumok mindig szerkeszthetők, ha van jogosultsága.",
"Remember previous location": "Emlékezés az előző helyre",
"Automatically return to the document you were last viewing when the app is re-opened.": "Automatikus visszatérés az utoljára megtekintett dokumentumhoz az alkalmazás újbóli megnyitásakor.",
"Smart text replacements": "Intelligens szöveghelyettesítések",
"Auto-format text by replacing shortcuts with symbols, dashes, smart quotes, and other typographical elements.": "Automatikus szövegformázás a rövidítések szimbólumokkal, kötőjelekkel, intelligens idézőjelekkel és más tipográfiai elemekkel való helyettesítésével.",
"You may delete your account at any time, note that this is unrecoverable": "You may delete your account at any time, note that this is unrecoverable",
"Profile saved": "Profile saved",
"Profile picture updated": "Profile picture updated",
"Unable to upload new profile picture": "Unable to upload new profile picture",
"Profile saved": "Profil elmentve",
"Profile picture updated": "Profilkép frissítve",
"Unable to upload new profile picture": "Nem lehet új profilképet feltölteni",
"Manage how you appear to other members of the workspace.": "Manage how you appear to other members of the workspace.",
"Photo": "Photo",
"Choose a photo or image to represent yourself.": "Choose a photo or image to represent yourself.",
"This could be your real name, or a nickname — however youd like people to refer to you.": "This could be your real name, or a nickname — however youd like people to refer to you.",
"Photo": "Fénykép",
"Choose a photo or image to represent yourself.": "Az Önt ábrázoló fénykép vagy kép kiválasztása.",
"This could be your real name, or a nickname — however youd like people to refer to you.": "Ez lehet a valódi neve vagy egy becenév ahogyan azt szeretné, hogy az emberek hivatkozzanak Önre.",
"Email address": "E-mail cím",
"Are you sure you want to require invites?": "Are you sure you want to require invites?",
"New users will first need to be invited to create an account. <em>Default role</em> and <em>Allowed domains</em> will no longer apply.": "New users will first need to be invited to create an account. <em>Default role</em> and <em>Allowed domains</em> will no longer apply.",
@@ -1031,7 +1102,7 @@
"Allow editors to invite other people to the workspace": "Allow editors to invite other people to the workspace",
"Require invites": "Require invites",
"Require members to be invited to the workspace before they can create an account using SSO.": "Require members to be invited to the workspace before they can create an account using SSO.",
"Default role": "Alapértelmezett szerepkör",
"Default role": "Alapértelmezett szerep",
"The default user role for new accounts. Changing this setting does not affect existing user accounts.": "The default user role for new accounts. Changing this setting does not affect existing user accounts.",
"When enabled, documents can be shared publicly on the internet by any member of the workspace": "When enabled, documents can be shared publicly on the internet by any member of the workspace",
"Viewer document exports": "Viewer document exports",
@@ -1048,10 +1119,9 @@
"Sharing is currently disabled.": "Sharing is currently disabled.",
"You can globally enable and disable public document sharing in the <em>security settings</em>.": "You can globally enable and disable public document sharing in the <em>security settings</em>.",
"Documents that have been shared are listed below. Anyone that has the public link can access a read-only version of the document until the link has been revoked.": "Documents that have been shared are listed below. Anyone that has the public link can access a read-only version of the document until the link has been revoked.",
"You can create templates to help your team create consistent and accurate documentation.": "You can create templates to help your team create consistent and accurate documentation.",
"You can create templates to help your team create consistent and accurate documentation.": "Sablonokat hozhat létre, hogy segítse a csapatát a következetes és pontos dokumentáció létrehozásában.",
"Alphabetical": "Betűrendi",
"There are no templates just yet.": "Nincsenek még sablonok.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.",
"There are no templates just yet.": "Jelenleg még nincsenek sablonok.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.",
"Confirmation code": "Megerősítő kód",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.",
@@ -1077,7 +1147,6 @@
"Expires today": "Expires today",
"Expires tomorrow": "Expires tomorrow",
"Expires {{ date }}": "Expires {{ date }}",
"Connect": "Connect",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?",
"Something went wrong while authenticating your request. Please try logging in again.": "Something went wrong while authenticating your request. Please try logging in again.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.",
"Measurement ID": "Measurement ID",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.",
"Instance URL": "Instance URL",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/",
@@ -1124,33 +1197,34 @@
"Script name": "Script name",
"The name of the script file that Umami uses to track analytics.": "The name of the script file that Umami uses to track analytics.",
"An ID that uniquely identifies the website in your Umami instance.": "An ID that uniquely identifies the website in your Umami instance.",
"Are you sure you want to delete the {{ name }} webhook?": "Are you sure you want to delete the {{ name }} webhook?",
"Webhook updated": "Webhook updated",
"Are you sure you want to delete the {{ name }} webhook?": "Biztosan törölni szeretné a(z) {{ name }} webhorgot?",
"Webhook updated": "Webhorog frissítve",
"Update": "Update",
"Updating": "Updating",
"Provide a descriptive name for this webhook and the URL we should send a POST request to when matching events are created.": "Provide a descriptive name for this webhook and the URL we should send a POST request to when matching events are created.",
"Provide a descriptive name for this webhook and the URL we should send a POST request to when matching events are created.": "Adjon egy leíró nevet ennek a webhorognak és URL-nek, amelyre POST-kérést kell küldenünk, amikor illeszkedő események jönnek létre.",
"A memorable identifer": "A memorable identifer",
"URL": "URL",
"Signing secret": "Signing secret",
"Subscribe to all events, groups, or individual events. We recommend only subscribing to the minimum amount of events that your application needs to function.": "Subscribe to all events, groups, or individual events. We recommend only subscribing to the minimum amount of events that your application needs to function.",
"All events": "Minden esemény",
"All {{ groupName }} events": "All {{ groupName }} events",
"Delete webhook": "Webhook törlése",
"Delete webhook": "Webhorog törlése",
"Subscribed events": "Subscribed events",
"Edit webhook": "Webhook szerkesztése",
"Webhook created": "Webhook létrehozva",
"Webhooks": "Webhooks",
"New webhook": "New webhook",
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.",
"Inactive": "Inactive",
"Create a webhook": "Create a webhook",
"Edit webhook": "Webhorog szerkesztése",
"Webhook created": "Webhorog létrehozva",
"Webhooks": "Webhorgok",
"New webhook": "Új webhorog",
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "A webhorgok az alkalmazás értesítésére használhatók, amikor az {{appName}} alkalmazásban események történnek. Az események HTTPS-kérésként kerülnek elküldésre JSON-tartalommal, közel valós időben.",
"Inactive": "Inaktív",
"Create a webhook": "Webhorog létrehozása",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.",
"Never logged in": "Never logged in",
"Online now": "Online now",
"Online {{ timeAgo }}": "Online {{ timeAgo }}",
"Viewed just now": "Viewed just now",
"You updated {{ timeAgo }}": "You updated {{ timeAgo }}",
"{{ user }} updated {{ timeAgo }}": "{{ user }} updated {{ timeAgo }}",
"You created {{ timeAgo }}": "You created {{ timeAgo }}",
"You created {{ timeAgo }}": "Ön hozta létre {{ timeAgo }}",
"{{ user }} created {{ timeAgo }}": "{{ user }} created {{ timeAgo }}",
"Error loading data": "Error loading data"
}
+84 -10
View File
@@ -120,6 +120,8 @@
"Log out": "Keluar",
"Mark notifications as read": "Mark notifications as read",
"Archive all notifications": "Archive all notifications",
"New App": "New App",
"New Application": "New Application",
"Restore revision": "Kembalikan revisi",
"Link copied": "Tautan disalin",
"Dark": "Gelap",
@@ -170,8 +172,6 @@
"Deleting": "Menghapus",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "Anda yakin? Menghapus koleksi <em>{{collectionName}}</em> bersifat permanen dan tidak dapat dipulihkan, namun dokumen di dalamnya akan dipindahkan ke tempat sampah.",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "Dan, <em>{{collectionName}}</em> digunakan sebagai tampilan awal menghapusnya akan mengatur ulang tampilan awal ke halaman Beranda.",
"Sorry, an error occurred saving the collection": "Maaf, terjadi kesalahan saat menyimpan koleksi",
"Add a description": "Tambahkan keterangan",
"Type a command or search": "Ketik perintah atau penelusuran",
"Choose a template": "Pilih templat",
"Are you sure you want to permanently delete this entire comment thread?": "Apakah Anda yakin ingin menghapus semua komentar ini secara permanen?",
@@ -308,6 +308,13 @@
"Unknown": "Unknown",
"Mark all as read": "Mark all as read",
"You're all caught up": "You're all caught up",
"Icon": "Icon",
"My App": "My App",
"Tagline": "Tagline",
"A short description": "A short description",
"Callback URLs": "Callback URLs",
"Published": "Published",
"Allow this app to be installed by other workspaces": "Allow this app to be installed by other workspaces",
"{{ username }} reacted with {{ emoji }}": "{{ username }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} and {{ count }} other reacted with {{ emoji }}",
@@ -395,7 +402,6 @@
"Star document": "Star document",
"Template created, go ahead and customize it": "Template telah dibuat, silakan disesuaikan",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "Membuat template dari <em>{{titleWithDefault}}</em> adalah tindakan yang tidak merusak kami akan membuat salinan dokumen dan mengubahnya menjadi template yang dapat digunakan sebagai titik awal untuk dokumen baru.",
"Published": "Published",
"Enable other members to use the template immediately": "Enable other members to use the template immediately",
"Location": "Location",
"Admins can manage the workspace and access billing.": "Admins can manage the workspace and access billing.",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "Unsubscribed from document",
"Unsubscribed from collection": "Unsubscribed from collection",
"Account": "Akun",
"API Keys": "API Keys",
"API & Apps": "API & Apps",
"Details": "Rincian",
"Security": "Keamanan",
"Features": "Fitur",
"Members": "Anggota",
"Groups": "Grup",
"API Keys": "API Keys",
"Applications": "Applications",
"Shared Links": "Tautan yang dibagikan",
"Import": "Impor",
"Install": "Install",
"Integrations": "Integrasi",
"Revoke token": "Cabut token",
"Revoke": "Cabut",
@@ -538,6 +547,7 @@
"Document options": "Opsi dokumen",
"Choose a collection": "Pilih koleksi",
"Subscription inherited from collection": "Subscription inherited from collection",
"Apply template": "Apply template",
"Enable embeds": "Aktifkan penyematan",
"Export options": "Opsi ekspor",
"Group members": "Anggota grup",
@@ -551,6 +561,10 @@
"New child document": "Dokumen bersarang baru",
"Save in workspace": "Save in workspace",
"Notification settings": "Notification settings",
"Revoke {{ appName }}": "Revoke {{ appName }}",
"Revoking": "Mencabut",
"Are you sure you want to revoke access?": "Are you sure you want to revoke access?",
"Delete app": "Delete app",
"Revision options": "Opsi revisi",
"Share link revoked": "Tautan berbagi dicabut",
"Share link copied": "Tautan berbagi disalin",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} grup dengan akses",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} grup dengan akses",
"Archived by {{userName}}": "Diarsipkan oleh {{userName}}",
"Sorry, an error occurred saving the collection": "Maaf, terjadi kesalahan saat menyimpan koleksi",
"Add a description": "Tambahkan keterangan",
"Share": "Bagikan",
"Overview": "Overview",
"Recently updated": "Baru diperbarui",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "Authentication failed this login method was disabled by a workspace admin.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "Workspace yang ingin Anda masuki memerlukan undangan sebelum Anda dapat membuat akun.<1></1> Harap minta undangan dari admin workspace Anda dan coba lagi.",
"Sorry, an unknown error occurred.": "Sorry, an unknown error occurred.",
"Choose a workspace": "Choose a workspace",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choose an {{ appName }} workspace or login to continue connecting this app",
"Login": "Masuk",
"Error": "Kesalahan",
"Failed to load configuration.": "Gagal memuat konfigurasi.",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "Anda masuk dengan {{ authProviderName }} terakhir kali.",
"Or": "Atau",
"Already have an account? Go to <1>login</1>.": "Sudah punya akun? <1>Masuk</1>.",
"An error occurred": "An error occurred",
"The OAuth client could not be found, please check the provided client ID": "The OAuth client could not be found, please check the provided client ID",
"The OAuth client could not be loaded, please check the redirect URI is valid": "The OAuth client could not be loaded, please check the redirect URI is valid",
"Required OAuth parameters are missing": "Required OAuth parameters are missing",
"Authorize": "Authorize",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} wants to access {{ teamName }}",
"By <em>{{ developerName }}</em>": "By <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} will be able to access your account and perform the following actions",
"read": "read",
"write": "write",
"read and write": "read and write",
"API keys": "API keys",
"attachments": "attachments",
"collections": "collections",
"comments": "comments",
"documents": "documents",
"events": "events",
"groups": "groups",
"integrations": "integrations",
"notifications": "notifications",
"reactions": "reactions",
"pins": "pins",
"shares": "shares",
"users": "users",
"teams": "teams",
"workspace": "workspace",
"Read all data": "Read all data",
"Write all data": "Write all data",
"Any collection": "Semua koleksi",
"All time": "All time",
"Past day": "Kemarin",
@@ -837,15 +883,37 @@
"Something went wrong": "Something went wrong",
"Please try again or contact support if the problem persists": "Please try again or contact support if the problem persists",
"No documents found for your search filters.": "Tidak ada dokumen yang ditemukan untuk filter pencarian Anda.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"API keys have been disabled by an admin for your account": "API keys have been disabled by an admin for your account",
"Application access": "Application access",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Manage which third-party and internal applications have been granted access to your {{ appName }} account.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"Application published": "Application published",
"Application updated": "Application updated",
"Client secret rotated": "Client secret rotated",
"Rotate secret": "Rotate secret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.",
"Displayed to users when authorizing": "Displayed to users when authorizing",
"Developer information shown to users when authorizing": "Developer information shown to users when authorizing",
"Developer name": "Developer name",
"Developer URL": "Developer URL",
"Allow users from other workspaces to authorize this app": "Allow users from other workspaces to authorize this app",
"Credentials": "Credentials",
"OAuth client ID": "OAuth client ID",
"The public identifier for this app": "The public identifier for this app",
"OAuth client secret": "OAuth client secret",
"Store this value securely, do not expose it publicly": "Store this value securely, do not expose it publicly",
"Where users are redirected after authorizing this app": "Where users are redirected after authorizing this app",
"Authorization URL": "Authorization URL",
"Where users are redirected to authorize this app": "Where users are redirected to authorize this app",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.",
"by {{ name }}": "by {{ name }}",
"Last used": "Last used",
"No expiry": "No expiry",
"Restricted scope": "Restricted scope",
"API key copied to clipboard": "API key copied to clipboard",
"Copied": "Disalin",
"Revoking": "Mencabut",
"Are you sure you want to revoke the {{ tokenName }} token?": "Apakah Anda yakin ingin mencabut token {{ tokenName }}?",
"Disconnect integration": "Disconnect integration",
"Connected": "Terhubung",
@@ -892,7 +960,7 @@
"No people matching your search": "Tak ada orang yang cocok dengan pencarian Anda",
"No people left to add": "Tak ada orang lagi yang dapat ditambahkan",
"Date created": "Date created",
"Upload": "Unggah",
"Crop Image": "Crop Image",
"Crop image": "Crop image",
"Uploading": "Mengunggah",
"How does this work?": "Bagaimana cara kerjanya?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "{{ count }} documents imported",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "Anda dapat mengimpor file zip yang sebelumnya diekspor dari penginstalan Outline koleksi, dokumen, dan gambar akan diimpor. Di Outline, buka <em>Export</em> di sidebar Settings dan klik <em>Export Data</em>.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Drag and drop file zip dari opsi Markdown export di {{appName}}, atau klik untuk mengunggah",
"Configure": "Configure",
"Connect": "Hubungkan",
"Last active": "Terakhir aktif",
"Guest": "Guest",
"Never used": "Never used",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Are you sure you want to delete the {{ appName }} application? This cannot be undone.",
"Shared by": "Shared by",
"Date shared": "Tanggal dibagikan",
"Last accessed": "Terakhir diakses",
@@ -965,6 +1037,7 @@
"Enterprise": "Enterprise",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Transfer dokumen, halaman, dan file Anda dengan cepat dari alat dan layanan lain ke {{appName}}. Anda juga dapat drag and drop dokumen HTML, Markdown, dan teks apa pun langsung ke Koleksi di aplikasi.",
"Recent imports": "Impor terbaru",
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
"Could not load members": "Could not load members",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.",
"Receive a notification whenever a new document is published": "Terima pemberitahuan setiap kali dokumen baru diterbitkan",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "Berhasil berhenti berlangganan. Pengaturan notifikasi Anda diperbarui",
"Manage when and where you receive email notifications.": "Kelola kapan dan di mana Anda mendapat notifikasi surel.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "Integrasi email saat ini dinonaktifkan. Harap setel variabel environment terkait dan mulai ulang server untuk mengaktifkan notifikasi.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.",
"Personal keys": "Personal keys",
"Preferences saved": "Preferensi disimpan",
"Delete account": "Hapus akun",
"Manage settings that affect your personal experience.": "Kelola pengaturan yang memengaruhi pengalaman pribadi Anda.",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "Anda dapat membuat template untuk membantu tim Anda membuat dokumentasi yang konsisten dan akurat.",
"Alphabetical": "Alfabetis",
"There are no templates just yet.": "Belum ada template.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier adalah platform yang memungkinkan {{appName}} untuk berintegrasi dengan mudah dengan ribuan alat bisnis lainnya. Otomatiskan alur kerja Anda, sinkronkan data, dan lainnya.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.",
"Confirmation code": "Confirmation code",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.",
@@ -1077,7 +1147,6 @@
"Expires today": "Expires today",
"Expires tomorrow": "Expires tomorrow",
"Expires {{ date }}": "Expires {{ date }}",
"Connect": "Hubungkan",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?",
"Something went wrong while authenticating your request. Please try logging in again.": "Something went wrong while authenticating your request. Please try logging in again.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Tambahkan ID measurement Google Analytics 4 untuk mengirimkan tampilan dokumen dan analitik dari workspace ke akun Google Analytics Anda sendiri.",
"Measurement ID": "ID Measurement",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Buat \"Web\" stream di dasbor admin Google Analytics Anda dan salin ID measurement dari snippet kode yang dihasilkan untuk menginstal.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.",
"Instance URL": "Instance URL",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Webhook dapat digunakan untuk memberi tahu aplikasi Anda saat peristiwa terjadi di {{appName}}. Event dikirim sebagai permintaan https dengan payload JSON hampir secara real-time.",
"Inactive": "Tidak aktif",
"Create a webhook": "Buat webhook",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier adalah platform yang memungkinkan {{appName}} untuk berintegrasi dengan mudah dengan ribuan alat bisnis lainnya. Otomatiskan alur kerja Anda, sinkronkan data, dan lainnya.",
"Never logged in": "Never logged in",
"Online now": "Online now",
"Online {{ timeAgo }}": "Online {{ timeAgo }}",
+129 -55
View File
@@ -120,6 +120,8 @@
"Log out": "Log out",
"Mark notifications as read": "Segnare tutte le notifiche come lette",
"Archive all notifications": "Archivia tutte le notifiche",
"New App": "New App",
"New Application": "Nuova Applicazione",
"Restore revision": "Ripristina la revisione",
"Link copied": "Collegamento copiato",
"Dark": "Scuro",
@@ -170,8 +172,6 @@
"Deleting": "Sto eliminando",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "Sei sicuro di quello? L'eliminazione della raccolta <em>{{collectionName}}</em> è permanente e non può essere ripristinata, tuttavia tutti i documenti pubblicati all'interno saranno spostati nel cestino.",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "<em>{{collectionName}}</em> è anche usata come schermata iniziale - eliminarla comporterebbe il reset della schermata iniziale alla pagina Home.",
"Sorry, an error occurred saving the collection": "Spiacenti, si è verificato un errore durante il salvataggio della raccolta",
"Add a description": "Aggiungi una descrizione",
"Type a command or search": "Digita un comando o cerca",
"Choose a template": "Scegli un modello",
"Are you sure you want to permanently delete this entire comment thread?": "Sei sicuro di voler eliminare definitivamente l'intero thread di commenti?",
@@ -259,7 +259,7 @@
"{{userName}} unpublished": "{{userName}} ha annullato la pubblicazione",
"{{userName}} moved": "{{userName}} ha spostato",
"Export started": "Esportazione avviata",
"Your file will be available in {{ location }} soon": "Your file will be available in {{ location }} soon",
"Your file will be available in {{ location }} soon": "Il tuo file sarà disponibile presto in {{ location }}",
"View": "Visualizza",
"A ZIP file containing the images, and documents in the Markdown format.": "Un file ZIP contenente le immagini e i documenti nel formato Markdown.",
"A ZIP file containing the images, and documents as HTML files.": "Un file ZIP contenente le immagini e documenti come file HTML.",
@@ -308,10 +308,17 @@
"Unknown": "Sconosciuto",
"Mark all as read": "Contrassegna tutto come letto",
"You're all caught up": "Sei completamente aggiornato",
"Icon": "Icona",
"My App": "La mia App",
"Tagline": "Slogan",
"A short description": "Una breve descrizione",
"Callback URLs": "URL di richiamata",
"Published": "Pubblicato",
"Allow this app to be installed by other workspaces": "Consenti l'installazione di questa app da parte di altri spazio di lavoro",
"{{ username }} reacted with {{ emoji }}": "Reagito con",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} and {{ count }} other reacted with {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}_plural": "{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "Reazione di {{ firstUsername }} e {{ secondUsername }} con {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "Reazione da parte di {{ firstUsername }} insieme ad altri {{ count }} con {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}_plural": "Reazione di {{ firstUsername }} insieme ad altri {{ count }} con {{ emoji }}_plural",
"Add reaction": "Aggiungi reazione",
"Reaction picker": "Selettore di reazione",
"Could not load reactions": "Impossibile caricare le reazioni",
@@ -326,9 +333,9 @@
"Invite": "Invita",
"{{ userName }} was added to the collection": "{{ userName }} stato aggiunto alla raccolta",
"{{ count }} people added to the collection": "Persone aggiunte alla collezione",
"{{ count }} people added to the collection_plural": "{{ count }} people added to the collection",
"{{ count }} people and {{ count2 }} groups added to the collection": "{{ count }} people and {{ count2 }} groups added to the collection",
"{{ count }} people and {{ count2 }} groups added to the collection_plural": "{{ count }} people and {{ count2 }} groups added to the collection",
"{{ count }} people added to the collection_plural": "{{ count }} Persone aggiunte alla collezione",
"{{ count }} people and {{ count2 }} groups added to the collection": "Aggiunte alla raccolta {{ count }} persone oltre a {{ count2 }} gruppi",
"{{ count }} people and {{ count2 }} groups added to the collection_plural": "Aggiunte alla raccolta {{ count }} persone oltre a {{ count2 }} gruppi",
"Add": "Aggiungi",
"Add or invite": "Aggiungi o invita",
"Viewer": "Visualizzatore",
@@ -341,13 +348,13 @@
"Created the document": "ha creato il documento",
"Other people": "Altre persone",
"Other workspace members may have access": "Altri membri del workspace potrebbero avere accesso",
"This document may be shared with more workspace members through a parent document or collection you do not have access to": "This document may be shared with more workspace members through a parent document or collection you do not have access to",
"This document may be shared with more workspace members through a parent document or collection you do not have access to": "Questo documento può essere condiviso con altri membri dello spazio di lavoro tramite un documento principale oppure una raccolta non accessibile",
"Access inherited from collection": "Accesso ereditato dalla collezione",
"{{ userName }} was removed from the document": "È stato rimosso dal documento",
"Could not remove user": "Impossibile eliminare l'utente",
"Permissions for {{ userName }} updated": "Permissions for {{ userName }} updated",
"Permissions for {{ userName }} updated": "Permessi aggiornati per {{ userName }}",
"Could not update user": "Impossibile aggiornare l'utente",
"Has access through <2>parent</2>": "Has access through <2>parent</2>",
"Has access through <2>parent</2>": "Ha accesso tramite <2>genitori </2>",
"Suspended": "Sospeso",
"Invited": "Invitato",
"Active <1></1> ago": "Attivo <1></1> fa",
@@ -355,9 +362,9 @@
"Leave": "Lascia",
"Only lowercase letters, digits and dashes allowed": "Sono consentite solo lettere minuscole, cifre e trattini",
"Sorry, this link has already been used": "Spiacenti, questo link è già stato utilizzato",
"Public link copied to clipboard": "Public link copied to clipboard",
"Public link copied to clipboard": "Link pubblico copiato negli appunti",
"Web": "Web",
"Anyone with the link can access because the parent document, <2>{{documentTitle}}</2>, is shared": "Anyone with the link can access because the parent document, <2>{{documentTitle}}</2>, is shared",
"Anyone with the link can access because the parent document, <2>{{documentTitle}}</2>, is shared": "Chiunque abbia il link può accedere poiché il documento principale, <2>{{documentTitle}}</2>, risulta condiviso",
"Allow anyone with the link to access": "Consenti a chiunque abbia il link di accedere",
"Publish to internet": "Pubblica su internet",
"Search engine indexing": "Indicizzazione nei motori di ricerca",
@@ -386,58 +393,57 @@
"{{ releasesBehind }} versions behind": "{{ releasesBehind }} versione indietro",
"{{ releasesBehind }} versions behind_plural": "{{ releasesBehind }} versioni indietro",
"Change permissions?": "Modificare i permessi?",
"{{ documentName }} cannot be moved within {{ parentDocumentName }}": "{{ documentName }} cannot be moved within {{ parentDocumentName }}",
"{{ documentName }} cannot be moved within {{ parentDocumentName }}": "Impossibile spostare {{ documentName }} all'interno di {{ parentDocumentName }}",
"You can't reorder documents in an alphabetically sorted collection": "Non è possibile riordinare i documenti in una raccolta ordinata alfabeticamente",
"The {{ documentName }} cannot be moved here": "Non può essere spostato qui",
"Return to App": "Torna all'applicazione",
"Installation": "Installazione",
"Unstar document": "Unstar document",
"Star document": "Star document",
"Unstar document": "Rimuovi dai preferiti",
"Star document": "Condividi documento",
"Template created, go ahead and customize it": "Modello creato, procedi e personalizzalo",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "Creare un modello da <em>{{titleWithDefault}}</em> è un'azione non distruttiva - faremo una copia del documento e lo convertiremo in un modello, così che potrà essere usato come punto d'inizio per nuovi documenti.",
"Published": "Pubblicato",
"Enable other members to use the template immediately": "Consenti agli altri membri di utilizzare il modello immediatamente",
"Location": "Posizione",
"Admins can manage the workspace and access billing.": "Gli amministratori possono gestire il workspace e accedere alla fatturazione.\n\n\n\n\n\n\n\n\n",
"Editors can create, edit, and comment on documents.": "I redattori possono creare, modificare e commentare i documenti.\n\n\n\n\n\n\n\n\n",
"Viewers can only view and comment on documents.": "Gli spettatori possono solo visualizzare e commentare i documenti.",
"Are you sure you want to make {{ userName }} a {{ role }}?": "Are you sure you want to make {{ userName }} a {{ role }}?",
"Are you sure you want to make {{ userName }} a {{ role }}?": "Sei sicuro di voler rendere {{ userName }} un {{ role }}?",
"I understand, delete": "Capisco, elimina",
"Are you sure you want to permanently delete {{ userName }}? This operation is unrecoverable, consider suspending the user instead.": "Are you sure you want to permanently delete {{ userName }}? This operation is unrecoverable, consider suspending the user instead.",
"Are you sure you want to permanently delete {{ userName }}? This operation is unrecoverable, consider suspending the user instead.": "Sei sicuro di voler eliminare definitivamente {{ userName }}? Questa operazione non è recuperabile, considera invece di sospendere l'utente.",
"Are you sure you want to suspend {{ userName }}? Suspended users will be prevented from logging in.": "Sei sicuro di voler sospendere {{ userName }}? Gli utenti sospesi non potranno accedere.",
"New name": "Nuovo nome",
"Name can't be empty": "Il nome non può essere vuoto",
"Check your email to verify the new address.": "Check your email to verify the new address.",
"The email will be changed once verified.": "The email will be changed once verified.",
"You will receive an email to verify your new address. It must be unique in the workspace.": "You will receive an email to verify your new address. It must be unique in the workspace.",
"A confirmation email will be sent to the new address before it is changed.": "A confirmation email will be sent to the new address before it is changed.",
"Check your email to verify the new address.": "Controlla la tua email per verificare il nuovo indirizzo.",
"The email will be changed once verified.": "L'email verrà modificata una volta verificata.",
"You will receive an email to verify your new address. It must be unique in the workspace.": "Riceverai un'email per verificare il tuo nuovo indirizzo. Deve essere univoco nello spazio di lavoro.",
"A confirmation email will be sent to the new address before it is changed.": "Una email di conferma verrà inviata al nuovo indirizzo prima che venga modificato.",
"New email": "Nuova email",
"Email can't be empty": "Email can't be empty",
"Your import completed": "Your import completed",
"Previous match": "Previous match",
"Next match": "Next match",
"Find and replace": "Find and replace",
"Email can't be empty": "L'email non può essere vuota",
"Your import completed": "Importazione completata",
"Previous match": "Pagina precedente",
"Next match": "Prossima Partita",
"Find and replace": "Trova e sostituisci",
"Find": "Trova",
"Match case": "Match case",
"Enable regex": "Enable regex",
"Replace options": "Replace options",
"Replacement": "Replacement",
"Replace": "Replace",
"Replace all": "Replace all",
"Match case": "Maiuscole/minuscole",
"Enable regex": "Abilita l'uso delle Egea",
"Replace options": "Sostituisci opzioni",
"Replacement": "Sostituire",
"Replace": "Sostituisci",
"Replace all": "Sostituisci tutti",
"Profile picture": "Immagine del profilo",
"Create a new doc": "Crea un nuovo documento",
"{{ userName }} won't be notified, as they do not have access to this document": "{{ userName }} won't be notified, as they do not have access to this document",
"Keep as link": "Keep as link",
"Mention": "Mention",
"Embed": "Embed",
"Add column after": "Add column after",
"Add column before": "Add column before",
"Add row after": "Add row after",
"Add row before": "Add row before",
"{{ userName }} won't be notified, as they do not have access to this document": "{{ userName }} Non verrà notificato, in quanto Non",
"Keep as link": "Mantieni come link",
"Mention": "Menzione",
"Embed": "Incorpora",
"Add column after": "Aggiungi colonna dopo",
"Add column before": "Aggiungi colonna prima",
"Add row after": "Aggiungi riga dopo",
"Add row before": "Aggiungi riga prima",
"Align center": "Allinea al centro",
"Align left": "Allinea a sinistra",
"Align right": "Allinea a destra",
"Default width": "Default width",
"Default width": "Larghezza default",
"Full width": "Larghezza massima",
"Bulleted list": "Elenco puntato",
"Todo list": "Elenco attività",
@@ -447,11 +453,11 @@
"Comment": "Commenta",
"Create link": "Crea collegamento",
"Sorry, an error occurred creating the link": "Spiacenti, si è verificato un errore durante la creazione del collegamento",
"Create a new child doc": "Create a new child doc",
"Create a new child doc": "Crea un nuovo documento",
"Delete table": "Elimina tabella",
"Delete file": "Delete file",
"Download file": "Download file",
"Replace file": "Replace file",
"Delete file": "Cancella file",
"Download file": "Scarica il file",
"Replace file": "Sostituisci file",
"Delete image": "Elimina immagine",
"Download image": "Scarica immagine",
"Replace image": "Sostituisci immagine",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "Annullata l'iscrizione al documento",
"Unsubscribed from collection": "Annullata l'iscrizione alla raccolta",
"Account": "Account",
"API Keys": "Chiavi API",
"API & Apps": "API & Apps",
"Details": "Dettagli",
"Security": "Sicurezza",
"Features": "Caratteristiche",
"Members": "Membri",
"Groups": "Gruppi",
"API Keys": "Chiavi API",
"Applications": "Applications",
"Shared Links": "Link condivisi",
"Import": "Importa",
"Install": "Install",
"Integrations": "Integrazioni",
"Revoke token": "Revoca token",
"Revoke": "Revoca",
@@ -538,6 +547,7 @@
"Document options": "Opzioni documento",
"Choose a collection": "Scegli una raccolta",
"Subscription inherited from collection": "Iscrizione ereditata dalla raccolta",
"Apply template": "Apply template",
"Enable embeds": "Abilita l'embedding",
"Export options": "Opzioni di esportazione",
"Group members": "Membri del gruppo",
@@ -551,6 +561,10 @@
"New child document": "Nuovo documento annidato",
"Save in workspace": "Salva nello spazio di lavoro",
"Notification settings": "Impostazioni di notifica",
"Revoke {{ appName }}": "Revoke {{ appName }}",
"Revoking": "Sto revocando",
"Are you sure you want to revoke access?": "Are you sure you want to revoke access?",
"Delete app": "Delete app",
"Revision options": "Opzioni revisione",
"Share link revoked": "Link condivisione revocato",
"Share link copied": "Link di condivisione copiato",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} gruppo con accesso",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} gruppi con accesso",
"Archived by {{userName}}": "Archiviato da {{userName}}",
"Sorry, an error occurred saving the collection": "Spiacenti, si è verificato un errore durante il salvataggio della raccolta",
"Add a description": "Aggiungi una descrizione",
"Share": "Condividi",
"Overview": "Overview",
"Recently updated": "Aggiornati di recente",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "Authentication failed this login method was disabled by a workspace admin.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "L'area di lavoro a cui stai tentando di accedere richiede un invito prima di poter creare un account.<1></1>Richiedi un invito all'amministratore dell'area di lavoro e riprova.",
"Sorry, an unknown error occurred.": "Sorry, an unknown error occurred.",
"Choose a workspace": "Choose a workspace",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choose an {{ appName }} workspace or login to continue connecting this app",
"Login": "Accedi",
"Error": "Errore",
"Failed to load configuration.": "Impossibile caricare la configurazione.",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "L'ultima volta hai effettuato l'accesso a {{ authProviderName }}.",
"Or": "O",
"Already have an account? Go to <1>login</1>.": "Hai già un account? Vai al <1>login</1>.",
"An error occurred": "An error occurred",
"The OAuth client could not be found, please check the provided client ID": "The OAuth client could not be found, please check the provided client ID",
"The OAuth client could not be loaded, please check the redirect URI is valid": "The OAuth client could not be loaded, please check the redirect URI is valid",
"Required OAuth parameters are missing": "Required OAuth parameters are missing",
"Authorize": "Authorize",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} wants to access {{ teamName }}",
"By <em>{{ developerName }}</em>": "By <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} will be able to access your account and perform the following actions",
"read": "read",
"write": "write",
"read and write": "read and write",
"API keys": "API keys",
"attachments": "attachments",
"collections": "collections",
"comments": "comments",
"documents": "documents",
"events": "events",
"groups": "groups",
"integrations": "integrations",
"notifications": "notifications",
"reactions": "reactions",
"pins": "pins",
"shares": "shares",
"users": "users",
"teams": "teams",
"workspace": "workspace",
"Read all data": "Read all data",
"Write all data": "Write all data",
"Any collection": "Qualsiasi raccolta",
"All time": "All time",
"Past day": "Ieri",
@@ -837,15 +883,37 @@
"Something went wrong": "Something went wrong",
"Please try again or contact support if the problem persists": "Please try again or contact support if the problem persists",
"No documents found for your search filters.": "Nessun documento trovato per i tuoi filtri.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"API keys have been disabled by an admin for your account": "API keys have been disabled by an admin for your account",
"Application access": "Application access",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Manage which third-party and internal applications have been granted access to your {{ appName }} account.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"Application published": "Application published",
"Application updated": "Application updated",
"Client secret rotated": "Client secret rotated",
"Rotate secret": "Rotate secret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.",
"Displayed to users when authorizing": "Displayed to users when authorizing",
"Developer information shown to users when authorizing": "Developer information shown to users when authorizing",
"Developer name": "Developer name",
"Developer URL": "Developer URL",
"Allow users from other workspaces to authorize this app": "Allow users from other workspaces to authorize this app",
"Credentials": "Credentials",
"OAuth client ID": "OAuth client ID",
"The public identifier for this app": "The public identifier for this app",
"OAuth client secret": "OAuth client secret",
"Store this value securely, do not expose it publicly": "Store this value securely, do not expose it publicly",
"Where users are redirected after authorizing this app": "Where users are redirected after authorizing this app",
"Authorization URL": "Authorization URL",
"Where users are redirected to authorize this app": "Where users are redirected to authorize this app",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.",
"by {{ name }}": "by {{ name }}",
"Last used": "Last used",
"No expiry": "No expiry",
"Restricted scope": "Restricted scope",
"API key copied to clipboard": "API key copied to clipboard",
"Copied": "Copiato",
"Revoking": "Sto revocando",
"Are you sure you want to revoke the {{ tokenName }} token?": "Sei sicuro di voler revocare il token {{ tokenName }}?",
"Disconnect integration": "Disconnect integration",
"Connected": "Connesso",
@@ -892,7 +960,7 @@
"No people matching your search": "Nessuna persona corrisponde alla tua ricerca",
"No people left to add": "Non sono rimaste persone da aggiungere",
"Date created": "Date created",
"Upload": "Carica",
"Crop Image": "Crop Image",
"Crop image": "Crop image",
"Uploading": "Caricamento",
"How does this work?": "Come funziona?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "{{ count }} documents imported",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "È possibile importare un file zip precedentemente esportato da un'installazione Outline raccolte, documenti e immagini verranno importate. In Outline, apri <em>Esporta</em> nella barra laterale delle impostazioni e fai clic su <em>Esporta dati</em>.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Trascina e rilascia il file zip dell'export Markdown su {{appName}} o fai clic per caricarlo",
"Configure": "Configure",
"Connect": "Connetti",
"Last active": "Ultima attività",
"Guest": "Guest",
"Never used": "Never used",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Are you sure you want to delete the {{ appName }} application? This cannot be undone.",
"Shared by": "Shared by",
"Date shared": "Data condivisa",
"Last accessed": "Ultima visita",
@@ -965,6 +1037,7 @@
"Enterprise": "Enterprise",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Trasferisci rapidamente documenti, pagine e file esistenti da altri strumenti e servizi verso {{appName}}. Puoi anche trascinare e rilasciare qualsiasi documento HTML, Markdown e di testo direttamente nelle Raccolte.",
"Recent imports": "Importazioni recenti",
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
"Could not load members": "Could not load members",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.",
"Receive a notification whenever a new document is published": "Ricevi una notifica ogni volta che viene pubblicato un nuovo documento",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "Annullamento dell'iscrizione riuscito. Le tue impostazioni di notifica sono state aggiornate",
"Manage when and where you receive email notifications.": "Gestisci quando e dove ricevere le notifiche email.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "L'integrazione email è attualmente disabilitata. Imposta le variabili di ambiente associate e riavvia il server per abilitare le notifiche.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.",
"Personal keys": "Personal keys",
"Preferences saved": "Impostazioni salvate",
"Delete account": "Elimina l'account",
"Manage settings that affect your personal experience.": "Gestisci le impostazioni che influenzano la tua esperienza personale.",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "Puoi creare modelli per aiutare il tuo team a creare una documentazione coerente e accurata.",
"Alphabetical": "Alfabetico",
"There are no templates just yet.": "Non ci sono modelli.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier è una piattaforma che consente a {{appName}} di integrarsi facilmente con migliaia di altri strumenti aziendali. Automatizza i tuoi flussi di lavoro, sincronizza i dati e altro ancora.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.",
"Confirmation code": "Confirmation code",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.",
@@ -1077,7 +1147,6 @@
"Expires today": "Expires today",
"Expires tomorrow": "Expires tomorrow",
"Expires {{ date }}": "Expires {{ date }}",
"Connect": "Connetti",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?",
"Something went wrong while authenticating your request. Please try logging in again.": "Something went wrong while authenticating your request. Please try logging in again.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Aggiungi un ID misurazione Google Analytics 4 per inviare visualizzazioni di documenti e analisi dall'area di lavoro al tuo account Google Analytics.",
"Measurement ID": "ID misurazione",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Crea uno stream \"Web\" nella dashboard di amministrazione di Google Analytics e copia l'ID misurazione dallo snippet di codice generato per l'installazione.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.",
"Instance URL": "Instance URL",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "I webhook possono essere utilizzati per creare notifiche nella tua applicazione quando si verificano eventi in {{appName}}. Gli eventi vengono inviati come richiesta https con un payload JSON quasi in tempo reale.",
"Inactive": "Inattivo",
"Create a webhook": "Crea webhook",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier è una piattaforma che consente a {{appName}} di integrarsi facilmente con migliaia di altri strumenti aziendali. Automatizza i tuoi flussi di lavoro, sincronizza i dati e altro ancora.",
"Never logged in": "Never logged in",
"Online now": "Online now",
"Online {{ timeAgo }}": "Online {{ timeAgo }}",
+102 -28
View File
@@ -120,6 +120,8 @@
"Log out": "ログアウト",
"Mark notifications as read": "通知を既読済みにする",
"Archive all notifications": "全ての通知をアーカイブ",
"New App": "New App",
"New Application": "New Application",
"Restore revision": "このバージョンを復元",
"Link copied": "リンクをコピーしました",
"Dark": "ダークモード",
@@ -170,8 +172,6 @@
"Deleting": "削除中",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "<em> {{collectionName}} </em> コレクションの削除は永久的で、復元はできません。ただし、コレクション内の全ての公開されたドキュメントはゴミ箱に移動されます。",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "また、<em>{{collectionName}}</em> がホームページとして使用されています – これを削除すると、ホームページはデフォルトのオプションにリセットされます。",
"Sorry, an error occurred saving the collection": "コレクションの保存中にエラーが発生しました",
"Add a description": "説明文を追加",
"Type a command or search": "コマンドを入力または検索",
"Choose a template": "テンプレートを選択",
"Are you sure you want to permanently delete this entire comment thread?": "このコメントのスレッド全体を完全に削除してもよろしいですか?",
@@ -308,6 +308,13 @@
"Unknown": "不明",
"Mark all as read": "全て既読にする",
"You're all caught up": "全て確認済み",
"Icon": "Icon",
"My App": "My App",
"Tagline": "Tagline",
"A short description": "A short description",
"Callback URLs": "Callback URLs",
"Published": "公開済み",
"Allow this app to be installed by other workspaces": "Allow this app to be installed by other workspaces",
"{{ username }} reacted with {{ emoji }}": "{{ username }} が {{ emoji }} でリアクション",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} と {{ secondUsername }} が {{ emoji }} でリアクション",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }}と他{{ count }}人が{{ emoji }}で反応した",
@@ -395,7 +402,6 @@
"Star document": "お気に入りに追加",
"Template created, go ahead and customize it": "テンプレートが作成されました",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "<em>{{titleWithDefault}}</em>のドキュメントからテンプレートを作成すると、元のドキュメントはコピーされ、テンプレートになります。",
"Published": "公開済み",
"Enable other members to use the template immediately": "他のメンバーがテンプレートをすぐに利用できるようにする",
"Location": "場所",
"Admins can manage the workspace and access billing.": "管理者はワークスペースと請求書へのアクセスを管理できます",
@@ -428,7 +434,7 @@
"Create a new doc": "ドキュメントを作成",
"{{ userName }} won't be notified, as they do not have access to this document": "{{ userName }} はこのドキュメントへのアクセス権限がないため、通知されません",
"Keep as link": "リンクとして保持",
"Mention": "Mention",
"Mention": "メンション",
"Embed": "埋め込み",
"Add column after": "後ろに列を挿入",
"Add column before": "前に列を挿入",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "ドキュメントの通知を解除しました",
"Unsubscribed from collection": "コレクションの登録を解除しました",
"Account": "アカウント",
"API Keys": "APIキー",
"API & Apps": "API & Apps",
"Details": "詳細情報",
"Security": "セキュリティ",
"Features": "機能",
"Members": "メンバー",
"Groups": "グループ",
"API Keys": "APIキー",
"Applications": "Applications",
"Shared Links": "共有済みのリンク",
"Import": "インポート",
"Install": "Install",
"Integrations": "連携",
"Revoke token": "トークンを取り消す",
"Revoke": "無効化",
@@ -538,6 +547,7 @@
"Document options": "ドキュメントオプション",
"Choose a collection": "コレクションを選ぶ",
"Subscription inherited from collection": "コレクションから継承されたサブスクリプション",
"Apply template": "Apply template",
"Enable embeds": "埋め込みを有効にする",
"Export options": "エクスポートオプション",
"Group members": "グループのメンバー",
@@ -551,6 +561,10 @@
"New child document": "新しい子ドキュメント",
"Save in workspace": "ワークスペースに保存",
"Notification settings": "通知設定",
"Revoke {{ appName }}": "Revoke {{ appName }}",
"Revoking": "無効化しています",
"Are you sure you want to revoke access?": "Are you sure you want to revoke access?",
"Delete app": "Delete app",
"Revision options": "改訂オプション",
"Share link revoked": "共有リンクを無効にしました",
"Share link copied": "共有リンクをコピーしました",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "アクセス権を持つ {{ groupsCount }} 個のグループ",
"{{ groupsCount }} groups with access_plural": "アクセス権を持つ {{ groupsCount }} 個のグループ",
"Archived by {{userName}}": "{{userName}} がアーカイブしました",
"Sorry, an error occurred saving the collection": "コレクションの保存中にエラーが発生しました",
"Add a description": "説明文を追加",
"Share": "共有",
"Overview": "概要",
"Recently updated": "更新日の新しい順",
@@ -708,8 +724,8 @@
"No access to this doc": "このドキュメントにアクセスできません",
"It doesnt look like you have permission to access this document.": "このドキュメントにアクセスする権限がないようです。",
"Please request access from the document owner.": "Please request access from the document owner.",
"Not found": "Not found",
"The page youre looking for cannot be found. It might have been deleted or the link is incorrect.": "The page youre looking for cannot be found. It might have been deleted or the link is incorrect.",
"Not found": "見つかりません",
"The page youre looking for cannot be found. It might have been deleted or the link is incorrect.": "お探しのページが見つかりません。削除されたか、リンクが正しくありません。",
"Offline": "オフライン",
"We were unable to load the document while offline.": "インターネットに接続していない状態でドキュメントを読み込むことができません。",
"Your account has been suspended": "あなたのアカウントは凍結されています。",
@@ -778,7 +794,7 @@
"Inline code": "インラインコード",
"Inline LaTeX": "インライン LaTeX",
"Triggers": "トリガー",
"Mention users and more": "Mention users and more",
"Mention users and more": "ユーザーなどをメンションする",
"Emoji": "絵文字",
"Insert block": "ブロックの挿入",
"Sign In": "ログイン",
@@ -802,9 +818,11 @@
"Sorry, it looks like that sign-in link is no longer valid, please try requesting another.": "このログインリンクは無効になりました。別のリンクを発行してください。",
"Your account has been suspended. To re-activate your account, please contact a workspace admin.": "あなたのアカウントは凍結されています。アカウントを再度有効にするには、ワークスペース管理者にお問い合わせください。",
"This workspace has been suspended. Please contact support to restore access.": "このワークスペースは凍結されています。アクセスを復元するにはサポートにお問い合わせください。",
"Authentication failed this login method was disabled by a workspace admin.": "Authentication failed this login method was disabled by a workspace admin.",
"Authentication failed this login method was disabled by a workspace admin.": "認証に失敗しました – このログイン方法はワークスペース管理者によって無効化されています。",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "アカウントを作成するには、参加しようとしているワークスペースの招待が必要です。 <1></1>ワークスペース管理者に招待をリクエストしてから、もう一度お試しください。",
"Sorry, an unknown error occurred.": "申し訳ありません、不明なエラーが発生しました。",
"Choose a workspace": "Choose a workspace",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choose an {{ appName }} workspace or login to continue connecting this app",
"Login": "ログイン",
"Error": "エラー",
"Failed to load configuration.": "構成の読み込みに失敗しました",
@@ -822,8 +840,36 @@
"You signed in with {{ authProviderName }} last time.": "前回は {{ authProviderName }} でログインしました",
"Or": "または",
"Already have an account? Go to <1>login</1>.": "すでにアカウントをお持ちですか?<1>ログイン</1>",
"An error occurred": "An error occurred",
"The OAuth client could not be found, please check the provided client ID": "The OAuth client could not be found, please check the provided client ID",
"The OAuth client could not be loaded, please check the redirect URI is valid": "The OAuth client could not be loaded, please check the redirect URI is valid",
"Required OAuth parameters are missing": "Required OAuth parameters are missing",
"Authorize": "Authorize",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} wants to access {{ teamName }}",
"By <em>{{ developerName }}</em>": "By <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} will be able to access your account and perform the following actions",
"read": "read",
"write": "write",
"read and write": "read and write",
"API keys": "API keys",
"attachments": "attachments",
"collections": "collections",
"comments": "comments",
"documents": "documents",
"events": "events",
"groups": "groups",
"integrations": "integrations",
"notifications": "notifications",
"reactions": "reactions",
"pins": "pins",
"shares": "shares",
"users": "users",
"teams": "teams",
"workspace": "workspace",
"Read all data": "Read all data",
"Write all data": "Write all data",
"Any collection": "コレクション",
"All time": "All time",
"All time": "全期間",
"Past day": "一日前",
"Past week": "直近1週間",
"Past month": "直近1ヶ月",
@@ -837,15 +883,37 @@
"Something went wrong": "エラーが発生しました",
"Please try again or contact support if the problem persists": "問題が解決しない場合は、もう一度やり直すか、サポートにお問い合わせください",
"No documents found for your search filters.": "検索条件に該当するドキュメントは見つかりませんでした",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"API keys have been disabled by an admin for your account": "API keys have been disabled by an admin for your account",
"Application access": "Application access",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Manage which third-party and internal applications have been granted access to your {{ appName }} account.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API キーを使用すると、API で認証し、\n ワークスペースのデータをプログラムで制御できます。詳細については、<em>開発者向けドキュメント</em>を参照してください。",
"Application published": "Application published",
"Application updated": "Application updated",
"Client secret rotated": "Client secret rotated",
"Rotate secret": "Rotate secret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.",
"Displayed to users when authorizing": "Displayed to users when authorizing",
"Developer information shown to users when authorizing": "Developer information shown to users when authorizing",
"Developer name": "Developer name",
"Developer URL": "Developer URL",
"Allow users from other workspaces to authorize this app": "Allow users from other workspaces to authorize this app",
"Credentials": "Credentials",
"OAuth client ID": "OAuth client ID",
"The public identifier for this app": "The public identifier for this app",
"OAuth client secret": "OAuth client secret",
"Store this value securely, do not expose it publicly": "Store this value securely, do not expose it publicly",
"Where users are redirected after authorizing this app": "Where users are redirected after authorizing this app",
"Authorization URL": "Authorization URL",
"Where users are redirected to authorize this app": "Where users are redirected to authorize this app",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.",
"by {{ name }}": "{{ name }}",
"Last used": "最終使用日",
"No expiry": "無期限",
"Restricted scope": "制限付きスコープ",
"API key copied to clipboard": "API キーをクリップボードにコピーしました",
"Copied": "コピーしました",
"Revoking": "無効化しています",
"Are you sure you want to revoke the {{ tokenName }} token?": "トークン {{ tokenName }} を失効します\nよろしいですか?",
"Disconnect integration": "連携を解除",
"Connected": "接続されました",
@@ -892,23 +960,27 @@
"No people matching your search": "検索に一致する人は見つかりませんでした",
"No people left to add": "追加できる人は存在しません",
"Date created": "作成日時",
"Upload": "アップロード",
"Crop image": "Crop image",
"Crop Image": "Crop Image",
"Crop image": "画像を切り取る",
"Uploading": "アップロード中",
"How does this work?": "これはどのように機能しますか?",
"You can import a zip file that was previously exported from the JSON option in another instance. In {{ appName }}, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "以前にエクスポートした zip ファイルをインポートできます。 {{ appName }} で、サイドバーの <em>エクスポート画面</em> を開き、 <em>データのエクスポート</em> をクリックします。",
"Drag and drop the zip file from the JSON export option in {{appName}}, or click to upload": "{{appName}} の JSON エクスポートオプションから zip ファイルをドラッグ&ドロップするか、クリックしてアップロードします",
"Canceled": "Canceled",
"Import canceled": "Import canceled",
"Are you sure you want to cancel this import?": "Are you sure you want to cancel this import?",
"Canceling": "Canceling",
"Canceling this import will discard any progress made. This cannot be undone.": "Canceling this import will discard any progress made. This cannot be undone.",
"{{ count }} document imported": "{{ count }} document imported",
"{{ count }} document imported_plural": "{{ count }} documents imported",
"Canceled": "キャンセルしました",
"Import canceled": "インポートをキャンセルしました",
"Are you sure you want to cancel this import?": "インポートをキャンセルしても良いですか?",
"Canceling": "キャンセル中",
"Canceling this import will discard any progress made. This cannot be undone.": "インポートをキャンセルすると進捗状況は破棄されます。元に戻すことはできません。",
"{{ count }} document imported": "{{ count }} ドキュメントがインポートされました",
"{{ count }} document imported_plural": "{{ count }} ドキュメントがインポートされました",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "以前、 Outline からエクスポートされた zip ファイルをインポートできます。コレクション、ドキュメント、および画像がインポートされます。 設定から、 <em>エクスポート画面</em> を開き、 <em>データのエクスポート</em>をクリックします。",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "{{appName}} の Markdown エクスポートオプションから zip ファイルをドラッグ&ドロップするか、クリックしてアップロードします",
"Configure": "Configure",
"Connect": "接続",
"Last active": "最終ログイン",
"Guest": "ゲスト",
"Never used": "Never used",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Are you sure you want to delete the {{ appName }} application? This cannot be undone.",
"Shared by": "共有者",
"Date shared": "共有日",
"Last accessed": "最終アクセス",
@@ -946,7 +1018,7 @@
"Danger": "危険",
"You can delete this entire workspace including collections, documents, and users.": "コレクション、ドキュメント、およびユーザーを含むワークスペース全体を削除できます。",
"Export data": "データのエクスポート",
"A full export might take some time, consider exporting a single document or collection. You may leave this page once the export has started if you have notifications enabled, we will email a link to <em>{{ userEmail }}</em> when its complete.": "A full export might take some time, consider exporting a single document or collection. You may leave this page once the export has started if you have notifications enabled, we will email a link to <em>{{ userEmail }}</em> when its complete.",
"A full export might take some time, consider exporting a single document or collection. You may leave this page once the export has started if you have notifications enabled, we will email a link to <em>{{ userEmail }}</em> when its complete.": "完全なデータをエクスポートするには、時間がかかることがあります。代わりに、単一のドキュメントまたはコレクションをエクスポートすることを検討してください。処理が開始された後、このウェブページを閉じることができます。通知を有効にした場合、エクスポートが完了すると、Url が <em>{{ userEmail }}</em> にメールされます。",
"Recent exports": "最近のエクスポート",
"Manage optional and beta features. Changing these settings will affect the experience for all members of the workspace.": "オプション機能とベータ機能を管理します。これらの設定を変更すると、ワークスペースの全てのメンバーのエクスペリエンスに影響します。",
"Separate editing": "閲覧モードで開く",
@@ -965,6 +1037,7 @@
"Enterprise": "エンタープライズ",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "既存のドキュメント、ページ、ファイルを他のツールやサービスから {{appName}} にすばやく転送します。 HTML、Markdown、およびドキュメントをアプリ内のコレクションに直接ドラッグ&ドロップすることもできます。",
"Recent imports": "最近のインポート",
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
"Could not load members": "メンバーを読み込めませんでした",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "{{appName}} にログインした全員が表示されます。\n{{signinMethods}} でアクセスできるものの、まだログインしていないユーザーが他にもいる可能性があります。",
"Receive a notification whenever a new document is published": "新しいドキュメントが公開されたときに通知を受け取る",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "通知を解除しました。",
"Manage when and where you receive email notifications.": "メール通知を管理する",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "現在、メールとの連携は無効になっています。\n通知を有効にするためには、関連する環境変数を正しく設定し、サーバーを再起動してください。",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "あなたのワークスペースのデータをプログラムで制御するためにパーソナル API キーを作成します。\nAPI キーはあなたのアカウントと同じ権限を持ちます。詳しくは <em>開発者向けドキュメント</em> を参照してください。",
"Personal keys": "パーソナルキー",
"Preferences saved": "設定を保存しました",
"Delete account": "アカウントの削除",
"Manage settings that affect your personal experience.": "個人的な体験を設定します。",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "チームが一貫性のある正確なドキュメントを作成するのに役立つテンプレートを作成できます。",
"Alphabetical": "アルファベット順",
"There are no templates just yet.": "テンプレートが見つかりません。",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier は、 {{appName}} を他の何千ものビジネスツールと簡単に統合できるプラットフォームです。ワークフローやデータの同期などを自動化できます。",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "登録されたメールアドレスに認証用のコードが送信されました。ワークスペースを永久に削除するには、メール内のコードを入力してください。",
"Confirmation code": "認証コード",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "<1>{{workspaceName}}</1> ワークスペースを削除すると、全てのコレクション、ドキュメント、ユーザー、および関連データが破棄されます。 {{appName}} からすぐにログアウトされます。",
@@ -1077,7 +1147,6 @@
"Expires today": "今日で期限切れ",
"Expires tomorrow": "明日で期限切れ",
"Expires {{ date }}": "期限: {{ date }}",
"Connect": "接続",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "{{appName}} をワークスペースに接続するには、GitHub で権限を許可する必要があります。もう一度試しますか?",
"Something went wrong while authenticating your request. Please try logging in again.": "リクエストの認証中に問題が発生しました。もう一度ログインしてください。",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "GitHub アカウントの所有者は GitHub App {{githubAppName}} をインストールするようにリクエストされています。承認すると、それぞれのリンクにプレビューが表示されます。",
@@ -1089,13 +1158,17 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Google Analytics 4 measurement ID を追加すると、Google Analytics アカウントにドキュメントの閲覧数と分析を送信します。",
"Measurement ID": "測定 ID",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Google Analytics 管理ダッシュボードに「Web」ストリームを作成し、生成されたコードスニペットから測定 ID をコピーしてインストールします。",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "{{appName}} をワークスペースに接続するには、Linear で権限を許可する必要があります。もう一度試しますか?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Linear ワークスペースを {appName} に接続することで、ドキュメントの Linear 課題のプレビューを有効にします。",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "連携を解除すると、Linear のリンクをドキュメントでプレビューできなくなります。よろしいですか?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "現在、Linear との連携は無効になっています。\n関連する環境変数を正しく設定し、サーバーを再起動すると有効になります。",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "あなたのインスタンスにワークスペースのビューと分析を送信するために、Matomo インスタンスを構成します",
"Instance URL": "インスタンスURL",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "Matomo インスタンスの URL\nMatomo クラウドを利用している場合の URL は matomo.cloud/ で終わります。",
"Site ID": "サイト ID",
"An ID that uniquely identifies the website in your Matomo instance.": "Matomo インスタンスでウェブサイトを一意に識別する ID",
"Whoops, you need to accept the permissions in Notion to connect {{ appName }} to your workspace. Try again?": "Whoops, you need to accept the permissions in Notion to connect {{ appName }} to your workspace. Try again?",
"Import pages from Notion": "Import pages from Notion",
"Whoops, you need to accept the permissions in Notion to connect {{ appName }} to your workspace. Try again?": "{{ appName }} をワークスペースに接続するには、Notionで権限を許可する必要があります。もう一度試しますか?",
"Import pages from Notion": "Notion からページをインポートする",
"Add to Slack": "Slack に追加",
"document published": "ドキュメントを公開",
"document updated": "ドキュメントが更新されました",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Webhook は、{{appName}} でイベントが発生した際にアプリケーションに通知するものです。イベントは、ほぼリアルタイムで JSON ペイロードを含む https リクエストとして送信されます。",
"Inactive": "無効",
"Create a webhook": "Webhook を作成",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier は、 {{appName}} を他の何千ものビジネスツールと簡単に統合できるプラットフォームです。ワークフローやデータの同期などを自動化できます。",
"Never logged in": "未ログイン",
"Online now": "オンライン",
"Online {{ timeAgo }}": "{{ timeAgo }} 前にオンライン",
@@ -1152,5 +1226,5 @@
"{{ user }} updated {{ timeAgo }}": "{{ user }} が {{ timeAgo }} に更新しました",
"You created {{ timeAgo }}": "あなたが {{ timeAgo }} に作成しました",
"{{ user }} created {{ timeAgo }}": "{{ user }} が {{ timeAgo }} に作成しました",
"Error loading data": "Error loading data"
"Error loading data": "データ読込エラー"
}
+84 -10
View File
@@ -120,6 +120,8 @@
"Log out": "로그아웃",
"Mark notifications as read": "알림을 읽은 상태로 표시",
"Archive all notifications": "모든 알림 보관",
"New App": "새로운 앱",
"New Application": "새 애플리케이션",
"Restore revision": "리비전 복구하기",
"Link copied": "링크 복사됨",
"Dark": "어둡게 보기",
@@ -170,8 +172,6 @@
"Deleting": "삭제 중",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "정말로 <em>{{collectionName}}</em> 컬렉션을 삭제하시겠습니까? 컬렉션 삭제는 영구적이며 복원할 수 없지만 그 안에 있는 문서는 휴지통으로 이동됩니다",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "또한 <em>{{collectionName}}</em> 는(은) 초기 화면으로 사용 중입니다. 삭제하면 초기 화면이 홈 페이지로 재설정됩니다.",
"Sorry, an error occurred saving the collection": "컬렉션을 저장하는 중에 오류가 발생했습니다.",
"Add a description": "설명 추가",
"Type a command or search": "명령어를 입력하거나 검색",
"Choose a template": "템플릿 선택",
"Are you sure you want to permanently delete this entire comment thread?": "이 쓰레드에 있는 댓글들을 영구적으로 삭제하시겠습니까?",
@@ -308,6 +308,13 @@
"Unknown": "알 수 없음",
"Mark all as read": "모두 읽은 상태로 표시",
"You're all caught up": "모두 확인함",
"Icon": "아이콘",
"My App": "내 앱",
"Tagline": "태그라인",
"A short description": "간단한 설명",
"Callback URLs": "콜백 URL",
"Published": "게시됨",
"Allow this app to be installed by other workspaces": "다른 작업 공간에서 이 앱을 설치하도록 허용",
"{{ username }} reacted with {{ emoji }}": "{{ username }} 사용자가 {{ emoji }}로 반응함",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} 사용자와 {{ secondUsername }} 사용자가 {{ emoji }}로 반응함",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} 사용자와 {{ count }}명이 {{ emoji }}로 반응함",
@@ -395,7 +402,6 @@
"Star document": "문서 별표 표시",
"Template created, go ahead and customize it": "템플릿이 생성되었습니다. 커스터마이징이 가능합니다.",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "<em>{{titleWithDefault}}</em>에서 템플릿을 만들더라도 원본 문서는 수정되지 않습니다. 이 문서의 복사본을 생성해서 새 문서의 시작점으로 사용할 수 있는 템플릿을 만듭니다.",
"Published": "게시됨",
"Enable other members to use the template immediately": "다른 멤버가 템플릿을 즉시 사용할 수 있도록 설정",
"Location": "위치",
"Admins can manage the workspace and access billing.": "관리자는 워크스페이스를 관리하고 과금 기능에 접근할 수 있습니다.",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "문서 구독이 취소됨",
"Unsubscribed from collection": "컬렉션 구독 취소",
"Account": "계정",
"API Keys": "API ",
"API & Apps": "API 및 앱",
"Details": "세부 정보",
"Security": "보안",
"Features": "실험적 기능",
"Members": "멤버",
"Groups": "그룹",
"API Keys": "API 키",
"Applications": "애플리케이션",
"Shared Links": "공유한 링크",
"Import": "불러오기",
"Install": "설치",
"Integrations": "연동",
"Revoke token": "토큰 취소",
"Revoke": "취소",
@@ -538,6 +547,7 @@
"Document options": "문서 옵션",
"Choose a collection": "컬렉션 선택",
"Subscription inherited from collection": "컬렉션으로부터 상속된 구독",
"Apply template": "Apply template",
"Enable embeds": "임베드 활성화",
"Export options": "내보내기 옵션",
"Group members": "그룹 구성원",
@@ -551,6 +561,10 @@
"New child document": "새 하위 문서",
"Save in workspace": "워크스페이스에 저장",
"Notification settings": "알림 설정",
"Revoke {{ appName }}": "{{ appName }} 취소",
"Revoking": "취소",
"Are you sure you want to revoke access?": "정말로 접근을 취소하시겠습니까?",
"Delete app": "앱 삭제",
"Revision options": "수정 옵션",
"Share link revoked": "링크 공유가 취소되었습니다.",
"Share link copied": "공유 할 링크가 복사되었습니다.",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "액세스 권한이 있는 그룹 {{ groupsCount }} 개",
"{{ groupsCount }} groups with access_plural": "액세스 권한이 있는 그룹 {{ groupsCount }} 개",
"Archived by {{userName}}": "{{userName}} 에 의해 보관됨",
"Sorry, an error occurred saving the collection": "컬렉션을 저장하는 중에 오류가 발생했습니다.",
"Add a description": "설명 추가",
"Share": "공유하기",
"Overview": "개요",
"Recently updated": "최근에 업데이트됨",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "인증 실패 - 작업 공간 관리자가 이 로그인 방법을 비활성화했습니다.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "가입하려는 워크스페이스는 계정을 생성하기 전에 초대가 필요합니다.<1></1> 워크스페이스 관리자에게 초대를 요청하고 다시 시도하세요.",
"Sorry, an unknown error occurred.": "죄송합니다. 알 수 없는 오류가 발생했습니다.",
"Choose a workspace": "작업 공간 선택",
"Choose an {{ appName }} workspace or login to continue connecting this app": "{{ appName }} 작업 공간을 선택하거나 로그인하여 이 앱 연결을 계속하세요.",
"Login": "로그인",
"Error": "오류",
"Failed to load configuration.": "구성을 로드하지 못했습니다.",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "최근 {{ authProviderName }} 으로 로그인했습니다.",
"Or": "또는",
"Already have an account? Go to <1>login</1>.": "이미 계정이 있으신가요? <1>로그인</1>.",
"An error occurred": "오류 발생",
"The OAuth client could not be found, please check the provided client ID": "OAuth 클라이언트를 찾을 수 없습니다. 제공된 클라이언트 ID를 확인하세요.",
"The OAuth client could not be loaded, please check the redirect URI is valid": "OAuth 클라이언트를 로드할 수 없습니다. 리디렉션 URI가 유효한지 확인하세요.",
"Required OAuth parameters are missing": "필수 OAuth 매개변수가 누락됨",
"Authorize": "인증",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }}이(가) {{ teamName }}에 액세스하려고 합니다",
"By <em>{{ developerName }}</em>": "<em>{{ developerName }}</em>님이 작성",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }}이(가) 귀하의 계정에 액세스하여 다음 작업을 수행할 수 있습니다",
"read": "읽기",
"write": "쓰기",
"read and write": "읽기 및 쓰기",
"API keys": "API 키",
"attachments": "첨부",
"collections": "컬렉션",
"comments": "댓글",
"documents": "문서",
"events": "이벤트",
"groups": "그룹",
"integrations": "통합",
"notifications": "알림",
"reactions": "반응",
"pins": "고정",
"shares": "공유",
"users": "사용자",
"teams": "팀",
"workspace": "작업 공간",
"Read all data": "모든 데이터 읽기",
"Write all data": "모든 데이터 쓰기",
"Any collection": "모든 컬렉션",
"All time": "모든 시간",
"Past day": "어제",
@@ -837,15 +883,37 @@
"Something went wrong": "문제가 발생했습니다",
"Please try again or contact support if the problem persists": "다시 한 번 시도해 보시고 문제가 계속된다면 문의해주세요",
"No documents found for your search filters.": "검색조건과 맞는 문서를 찾을 수 없습니다.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "개인 API 키를 생성하여 API를 인증하고 작업 공간 데이터를 프로그래밍 방식으로 제어하세요.\n 자세한 내용은 <em>개발자 문서</em>를 참조하세요.",
"API keys have been disabled by an admin for your account": "관리자가 귀하의 계정에 대한 API 키를 비활성화했습니다.",
"Application access": "애플리케이션 액세스",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "{{ appName }} 계정에 대한 액세스 권한이 부여된 타사 및 내부 애플리케이션을 관리합니다.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API 키는 API와 인증하고 작업 공간의 데이터를 프로그래밍 방식으로 제어하는 데\n 사용될 수 있습니다. 자세한 내용은 <em>개발자 문서</em>를 참조하세요.",
"Application published": "애플리케이션이 게시됨",
"Application updated": "애플리케이션이 업데이트됨",
"Client secret rotated": "클라이언트 시크릿이 교체됨",
"Rotate secret": "시크릿 교체",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "클라이언트 시크릿을 교체하면 현재 시크릿이 무효화됩니다. 이 자격 증명을 사용하는 모든 애플리케이션을 업데이트해야 합니다.",
"Displayed to users when authorizing": "사용자가 권한을 부여할 때 표시됨",
"Developer information shown to users when authorizing": "사용자가 권한을 부여할 때 표시되는 개발자 정보",
"Developer name": "개발자 이름",
"Developer URL": "개발자 URL",
"Allow users from other workspaces to authorize this app": "다른 작업 공간의 사용자가 이 앱을 승인하도록 허용",
"Credentials": "자격 증명",
"OAuth client ID": "OAuth 클라이언트 ID",
"The public identifier for this app": "이 앱의 공개 식별자",
"OAuth client secret": "OAuth 클라이언트 시크릿",
"Store this value securely, do not expose it publicly": "이 값을 안전하게 저장하고 공개적으로 노출하지 마세요.",
"Where users are redirected after authorizing this app": "이 앱을 승인한 후 사용자가 리디렉션되는 위치",
"Authorization URL": "인증 URL",
"Where users are redirected to authorize this app": "사용자가 이 앱을 승인하도록 리디렉션되는 위치",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "애플리케이션을 사용하면 Outline과 내부 또는 공개 통합을 구축하고 OAuth를 통해 보안 액세스를 제공할 수 있습니다. 자세한 내용은 <em>개발자 문서</em>를 참조하세요.",
"by {{ name }}": "{{ name }} 에 의해",
"Last used": "최근 사용됨",
"No expiry": "만료 없음",
"Restricted scope": "제한된 범위",
"API key copied to clipboard": "API 키가 클립보드에 복사됨",
"Copied": "복사됨",
"Revoking": "취소",
"Are you sure you want to revoke the {{ tokenName }} token?": "{{ tokenName }} 토큰을 취소하시겠습니까?",
"Disconnect integration": "통합 해제",
"Connected": "연결됨",
@@ -892,7 +960,7 @@
"No people matching your search": "찾으시는 사용자가 없습니다.",
"No people left to add": "추가할 사용자가 없습니다",
"Date created": "생성 일자",
"Upload": "업로드",
"Crop Image": "이미지 자르기",
"Crop image": "이미지 자르기",
"Uploading": "업로드 중",
"How does this work?": "어떻게 동작합니까?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "문서 {{ count }}개 가져옴",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "이전에 Outline 설치에서 내보낸 Zip 파일을 가져올 수 있습니다. 이는 컬렉션, 문서, 이미지를 가져옵니다. Outline에서 설정 사이드바의 <em>내보내기</em> 열고 <em>데이터 내보내기</em>클릭합니다.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "{{appName}} 의 Json 내보내기 옵션에서 zip 파일을 드래그 앤 드롭하거나 클릭하여 업로드",
"Configure": "구성",
"Connect": "연결",
"Last active": "최근 활동",
"Guest": "게스트",
"Never used": "사용한 적 없음",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "{{ appName }} 애플리케이션을 삭제하시겠습니까? 삭제 후에는 취소할 수 없습니다.",
"Shared by": "~으로부터 공유됨:",
"Date shared": "공유 날짜",
"Last accessed": "마지막으로 액세스",
@@ -965,6 +1037,7 @@
"Enterprise": "엔터프라이즈",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "기존 문서, 페이지 및 파일을 다른 도구 및 서비스에서 {{appName}} 으로 빠르게 전송합니다. HTML, Markdown 및 텍스트 문서를 앱의 컬렉션으로 직접 끌어다 놓을 수도 있습니다.",
"Recent imports": "최근에 가져온",
"Configure a variety of integrations with third-party services.": "다양한 타사 서비스와의 통합을 구성합니다.",
"Could not load members": "멤버를 불러올 수 없습니다",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "{{appName}} 에 로그인한 모든 사람이 여기에 나열됩니다. {{signinMethods}} 을(를) 통해 접근한 비로그인 사용자가 있을 수 있습니다.",
"Receive a notification whenever a new document is published": "새 문서가 게시될 때마다 알림을 받습니다",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "구독 취소에 성공했습니다. 알림 설정이 업데이트되었습니다.",
"Manage when and where you receive email notifications.": "이메일 알림을 받는 시기와 장소를 관리합니다.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "이메일 통합은 현재 비활성화되어 있습니다. 관련 환경 변수를 설정하고 서버를 다시 시작하여 알림을 활성화하십시오.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "개인 API 키를 만들어 API 인증 후 워크스페이스 데이터를\n 프로그래밍 방식으로 제어하세요. API 키는 사용자 계정과 동일한 권한을 가집니다.\n 자세한 내용은 <em>개발자 문서</em>를 참조하세요.",
"Personal keys": "개인 키",
"Preferences saved": "설정 저장됨",
"Delete account": "계정 삭제",
"Manage settings that affect your personal experience.": "개인 경험에 영향을 미치는 설정을 관리합니다.",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "템플릿을 추가해서 팀이 일관성 있고 정확한 문서를 만들도록 도와줄 수 있습니다.",
"Alphabetical": "알파벳 순",
"There are no templates just yet.": "템플릿이 아직 없습니다.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier는 {{appName}} 수천 개의 다른 비즈니스 도구와 쉽게 통합할 수 있는 플랫폼입니다. 워크플로를 자동화하고 데이터를 동기화하는 등의 작업을 수행하세요.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "귀하의 이메일 주소로 확인 코드가 전송되었습니다. 워크스페이스를 영구적으로 제거하려면 아래에 코드를 입력하세요.",
"Confirmation code": "확인 코드",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "워크스페이스 <1>{{workspaceName}}</1>를 지우면 모든 컬렉션, 문서, 유저, 관련된 데이터를 제거하고 즉시 {{appName}} 에서 로그아웃 됩니다.",
@@ -1077,7 +1147,6 @@
"Expires today": "오늘 만료",
"Expires tomorrow": "내일 만료",
"Expires {{ date }}": "{{ date }} 에 만료",
"Connect": "연결",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "죄송합니다. {{appName}} 을 워크스페이스에 연결하려면 GitHub에서 권한을 수락해야 합니다. 다시 시도하시겠습니까?",
"Something went wrong while authenticating your request. Please try logging in again.": "요청을 인증하던 중 문제가 발생했습니다. 다시 로그인해 주세요.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "GitHub 계정의 소유자가 {{githubAppName}} GitHub 앱을 설치하도록 요청하였습니다. 승인되면 각각의 링크에 따른 미리보기가 표시됩니다.",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Google 애널리틱스 4에 Measurement ID를 추가하여 작업공간에서 자신의 Google 애널리틱스 계정으로 문서 보기 및 분석을 전송하세요.",
"Measurement ID": "Measurement ID",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Google 애널리틱스 관리 대시보드에서 \"Web\" 스트림을 만들고 생성된 코드 스니펫에서 Measurement ID를 복사하여 설치합니다.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "죄송합니다. {{appName}}을(를) 작업 공간에 연결하려면 Linear에서 권한을 수락해야 합니다. 다시 시도할까요?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "{appName}에 Linear 작업 공간을 연결하여 문서에서 Linear 문제의 미리 보기를 활성화합니다.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "연결을 끊으면 이 작업공간의 Linear 링크를 문서에서 미리보기할 수 없습니다. 정말로 계속할까요?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "Linear 통합이 현재 비활성화되어 있습니다. 관련 환경 변수를 설정하고 서버를 재시작하여 통합을 활성화하세요.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "조회수 및 분석 정보를 워크스페이스에서 당신의 Matomo 인스턴스로 보내도록 Matomo 설치를 구성하세요.",
"Instance URL": "인스턴스 URL",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "Matomo 인스턴스의 URL입니다. Matomo Cloud를 사용하는 경우 matomo.cloud/로 끝납니다.",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "웹훅은 {{appName}} 에서 이벤트가 발생할 때 애플리케이션에 알리는 데 사용할 수 있습니다. 이벤트는 JSON 페이로드와 함께 https 요청으로 거의 실시간 전송됩니다.",
"Inactive": "비활성화",
"Create a webhook": "웹훅 만들기",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier는 {{appName}} 수천 개의 다른 비즈니스 도구와 쉽게 통합할 수 있는 플랫폼입니다. 워크플로를 자동화하고 데이터를 동기화하는 등의 작업을 수행하세요.",
"Never logged in": "로그인 한 적 없음",
"Online now": "현재 온라인",
"Online {{ timeAgo }}": "{{ timeAgo }} 전에 온라인",
+85 -11
View File
@@ -120,6 +120,8 @@
"Log out": "Logg ut",
"Mark notifications as read": "Merk varsler som lest",
"Archive all notifications": "Arkiver alle varsler",
"New App": "Ny app",
"New Application": "Ny applikasjon",
"Restore revision": "Gjenopprett revisjon",
"Link copied": "Lenke kopiert",
"Dark": "Mørk",
@@ -170,8 +172,6 @@
"Deleting": "Sletter",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "Er du sikker? Å slette <em>{{collectionName}}</em>-samlingen er permanent og kan ikke gjenopprettes, men alle publiserte dokumenter innenfor vil bli flyttet til søppel.",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "<em>{{collectionName}}</em> brukes som startvisning å slette den vil tilbakestille startvisningen til hjemmesiden.",
"Sorry, an error occurred saving the collection": "Beklager, det oppstod en feil ved lagring av samlingen",
"Add a description": "Legg til en beskrivelse",
"Type a command or search": "Skriv en kommando eller søk",
"Choose a template": "Velg en mal",
"Are you sure you want to permanently delete this entire comment thread?": "Er du sikker på at du vil slette hele kommentartråden permanent?",
@@ -308,6 +308,13 @@
"Unknown": "Ukjent",
"Mark all as read": "Merk alle som lest",
"You're all caught up": "Du er helt oppdatert",
"Icon": "Ikon",
"My App": "Min app",
"Tagline": "Slagord",
"A short description": "En kort beskrivelse",
"Callback URLs": "Callback URL-er",
"Published": "Publisert",
"Allow this app to be installed by other workspaces": "Tillat denne appen å bli installert av andre arbeidsområder",
"{{ username }} reacted with {{ emoji }}": "{{ username }} reagerte med {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} og {{ secondUsername }} reagerte med {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} og {{ count }} andre reagerte med {{ emoji }}",
@@ -395,7 +402,6 @@
"Star document": "Stjernemarker dokument",
"Template created, go ahead and customize it": "Mal opprettet, gå videre og tilpass den",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "Å opprette en mal fra <em>{{titleWithDefault}}</em> er en ikke-destruktiv handling vi vil lage en kopi av dokumentet og gjøre det til en mal som kan brukes som utgangspunkt for nye dokumenter.",
"Published": "Publisert",
"Enable other members to use the template immediately": "Tillat andre medlemmer å bruke malen nå",
"Location": "Plassering",
"Admins can manage the workspace and access billing.": "Administratorer kan administrere arbeidsområdet og få tilgang til fakturering.",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "Avsluttet abonnement fra dokument",
"Unsubscribed from collection": "Avsluttet abonnement fra samling",
"Account": "Konto",
"API Keys": "API-nøkler",
"API & Apps": "API og apper",
"Details": "Detaljer",
"Security": "Sikkerhet",
"Features": "Funksjoner",
"Members": "Medlemmer",
"Groups": "Grupper",
"API Keys": "API-nøkler",
"Applications": "Applikasjoner",
"Shared Links": "Delte Lenker",
"Import": "Importer",
"Install": "Installer",
"Integrations": "Integrasjoner",
"Revoke token": "Opphev token",
"Revoke": "Opphev",
@@ -538,6 +547,7 @@
"Document options": "Dokumentalternativer",
"Choose a collection": "Velg en samling",
"Subscription inherited from collection": "Abonnement arvet fra samling",
"Apply template": "Apply template",
"Enable embeds": "Aktiver innebygginger",
"Export options": "Eksportalternativer",
"Group members": "Gruppemedlemmer",
@@ -551,6 +561,10 @@
"New child document": "Nytt underdokument",
"Save in workspace": "Lagre i arbeidsområdet",
"Notification settings": "Varslingsinnstillinger",
"Revoke {{ appName }}": "Tilbakekall {{ appName }}",
"Revoking": "Tilbakekaller",
"Are you sure you want to revoke access?": "Er du sikker på at du vil tilbakekalle tilgangen?",
"Delete app": "Slett app",
"Revision options": "Revisjonsalternativer",
"Share link revoked": "Delingslenke opphevet",
"Share link copied": "Delingslenke kopiert",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} grupper med tilgang",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} grupper med tilgang",
"Archived by {{userName}}": "Arkivert av {{userName}}",
"Sorry, an error occurred saving the collection": "Beklager, det oppstod en feil ved lagring av samlingen",
"Add a description": "Legg til en beskrivelse",
"Share": "Del",
"Overview": "Oversikt",
"Recently updated": "Nylig oppdatert",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "Autentisering feilet denne innloggingsmetoden ble deaktivert av en administrator.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "Arbeidsområdet du prøver å bli med krever en invitasjon før du kan opprette en konto.<1></1>Vennligst be om en invitasjon fra din arbeidsområdeadministrator og prøv igjen.",
"Sorry, an unknown error occurred.": "Beklager, det oppstod en ukjent feil.",
"Choose a workspace": "Velg et arbeidsområde",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choose an {{ appName }} workspace or login to continue connecting this app",
"Login": "Logg inn",
"Error": "Feil",
"Failed to load configuration.": "Kunne ikke laste konfigurasjonen.",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "Du logget inn med {{ authProviderName }} forrige gang.",
"Or": "Eller",
"Already have an account? Go to <1>login</1>.": "Har du allerede en konto? Gå til <1>innlogging</1>.",
"An error occurred": "En feil oppstod",
"The OAuth client could not be found, please check the provided client ID": "OAuth-klienten ble ikke funnet, vennligst sjekk den oppgitte klient-IDen",
"The OAuth client could not be loaded, please check the redirect URI is valid": "OAuth-klienten kunne ikke bli lastet inn, vennligst sjekk om redirect-URL er gyldig",
"Required OAuth parameters are missing": "Påkrevde OAuth-parametere mangler",
"Authorize": "Autoriser",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} ønsker tilgang til {{ teamName }}",
"By <em>{{ developerName }}</em>": "Av <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} vil få tilgang til din konto og utføre følgende handlinger",
"read": "les",
"write": "skriv",
"read and write": "les og skriv",
"API keys": "API-nøkler",
"attachments": "vedlegg",
"collections": "samlinger",
"comments": "kommentarer",
"documents": "dokumenter",
"events": "hendelser",
"groups": "grupper",
"integrations": "integrasjoner",
"notifications": "varsler",
"reactions": "reaksjoner",
"pins": "festede",
"shares": "delinger",
"users": "brukere",
"teams": "teams",
"workspace": "arbeidsområde",
"Read all data": "Lese alle data",
"Write all data": "Skrive alle data",
"Any collection": "Enhver samling",
"All time": "Når som helst",
"Past day": "Siste dag",
@@ -837,15 +883,37 @@
"Something went wrong": "Noe gikk galt",
"Please try again or contact support if the problem persists": "Prøv igjen eller kontakt kundestøtte hvis problemet vedvarer",
"No documents found for your search filters.": "Ingen dokumenter funnet for søkefiltrene dine.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API-nøkler kan brukes til å autentisere API-et og gi programmatisk kontroll over\n dataen i ditt arbeidsområdet. For flere detaljer, se <em>utviklerdokumentasjonen</em>.",
"API keys have been disabled by an admin for your account": "API-nøkler har blitt deaktivert av en kontoadministrator",
"Application access": "Applikasjonstilgang",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Administrer hvilke tredjeparter og interne applikasjoner som har blitt gitt tilgang til {{ appName }}-kontoen din.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API-nøkler kan brukes til å autentisere API-et og gi programmatisk kontroll over\n dataen i ditt arbeidsområdet. For flere detaljer, se <em>utviklerdokumentasjonen</em>.",
"Application published": "Applikasjon publisert",
"Application updated": "Applikasjon oppdatert",
"Client secret rotated": "Klientnøkkel rotert",
"Rotate secret": "Roter klientnøkkel",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotering vil ugyldiggjøre gjeldende klientnøkkel. Sørg for å oppdatere alle applikasjoner med disse nøklene.",
"Displayed to users when authorizing": "Vist til brukere ved autorisering",
"Developer information shown to users when authorizing": "Utviklerinformasjon som vises til brukere ved autorisering",
"Developer name": "Utviklernavn",
"Developer URL": "Utvikler-URL",
"Allow users from other workspaces to authorize this app": "Tillat brukere fra andre arbeidsområder å autorisere denne appen",
"Credentials": "Nøkler",
"OAuth client ID": "OAuth-klient ID",
"The public identifier for this app": "Den offentlige identifikatoren for denne appen",
"OAuth client secret": "OAuth-klientnøkkel",
"Store this value securely, do not expose it publicly": "Lagre verdien et sikkert sted, ikke vis den offentlig",
"Where users are redirected after authorizing this app": "Dit brukere blir omdirigert etter autorisering av denne appen",
"Authorization URL": "Autorisasjons-URL",
"Where users are redirected to authorize this app": "Dit brukere blir omdirigert for autorisering av denne appen",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Applikasjoner tillater deg å bygge interne eller offentlige integrasjoner med Outline og gi sikker tilgang via OAuth. For flere detaljer, se <em>utviklerdokumentasjonen</em>.",
"by {{ name }}": "av {{ name }}",
"Last used": "Sist brukt",
"No expiry": "Ingen utløpsdato",
"Restricted scope": "Begrenset scope",
"API key copied to clipboard": "API-nøkkel kopiert til utklippstavlen",
"Copied": "Kopiert",
"Revoking": "Tilbakekaller",
"Are you sure you want to revoke the {{ tokenName }} token?": "Er du sikker på at du vil tilbakekalle {{ tokenName }} token?",
"Disconnect integration": "Koble fra integrasjon",
"Connected": "Tilkoblet",
@@ -892,7 +960,7 @@
"No people matching your search": "Ingen personer matcher søket ditt",
"No people left to add": "Ingen flere personer å legge til",
"Date created": "Dato opprettet",
"Upload": "Last opp",
"Crop Image": "Beskjær bilde",
"Crop image": "Beskjær bilde",
"Uploading": "Laster opp",
"How does this work?": "Hvordan fungerer dette?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "{{ count }} dokumenter importert",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "Du kan importere en zip-fil som tidligere ble eksportert fra en Outline-installasjon samlinger, dokumenter og bilder vil bli importert. I Outline, åpne <em>Eksport</em> i innstillingssidestolpen og klikk på <em>Eksporter Data</em>.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Dra og slipp zip-filen fra Markdown-eksportalternativet i {{appName}}, eller klikk for å laste opp",
"Configure": "Konfigurer",
"Connect": "Koble til",
"Last active": "Sist aktiv",
"Guest": "Gjest",
"Never used": "Aldri brukt",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Er du sikker på at du vil slette {{ appName }} applikasjonen? Dette kan ikke angres.",
"Shared by": "Delt av",
"Date shared": "Dato delt",
"Last accessed": "Sist tilgjengelig",
@@ -965,6 +1037,7 @@
"Enterprise": "Bedrift",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Overfør raskt dine eksisterende dokumenter, sider og filer fra andre verktøy og tjenester til {{appName}}. Du kan også dra og slippe HTML-, Markdown- og tekst-dokumenter direkte inn i Samlinger i appen.",
"Recent imports": "Nylige importer",
"Configure a variety of integrations with third-party services.": "Konfigurer en rekke integrasjoner med tredjepartstjenester.",
"Could not load members": "Kunne ikke laste medlemmer",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Alle som er logget inn i {{appName}} vises her. Det er mulig at det er andre brukere som har tilgang via {{signinMethods}}, men som ikke har logget inn enda.",
"Receive a notification whenever a new document is published": "Motta et varsel hver gang et nytt dokument blir publisert",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "Avmelding vellykket. Dine varslingsinnstillinger er oppdatert",
"Manage when and where you receive email notifications.": "Administrer når og hvor du mottar e-postvarsler.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "E-postintegrasjonen er for øyeblikket deaktivert. Vennligst sett de tilhørende miljøvariablene og start serveren på nytt for å aktivere varslinger.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Opprett en personlig API-nøkkel for å legitimere deg ved bruk av APIet. API-nøkler har samme tilgang som din brukerkonto. For mer informasjon se <em>utviklerdokumentasjonen</em>.",
"Personal keys": "Personlige nøkler",
"Preferences saved": "Preferanser lagret",
"Delete account": "Slett konto",
"Manage settings that affect your personal experience.": "Administrer innstillinger som påvirker din personlige opplevelse.",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "Du kan opprette maler for å hjelpe teamet ditt med å lage konsistent og nøyaktig dokumentasjon.",
"Alphabetical": "Alfabetisk",
"There are no templates just yet.": "Det er ingen maler ennå.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier er en plattform som lar {{appName}} enkelt integrere seg med tusenvis av andre forretningsverktøy. Automatiser arbeidsflytene dine, synkroniser data og mer.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "En bekreftelseskode har blitt sendt til din e-postadresse, vennligst skriv inn koden nedenfor for å slette dette arbeidsområdet permanent.",
"Confirmation code": "Bekreftelseskode",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Sletting av <1>{{workspaceName}}</1>-arbeidsområdet vil ødelegge alle samlinger, dokumenter, brukere og tilknyttede data. Du vil umiddelbart bli logget ut av {{appName}}.",
@@ -1077,7 +1147,6 @@
"Expires today": "Utløper i dag",
"Expires tomorrow": "Utløper i morgen",
"Expires {{ date }}": "Utløper {{ date }}",
"Connect": "Koble til",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Hoppsann, du må akseptere tillatelsene i GitHub for å koble {{appName}} til arbeidsområdet ditt. Prøv igjen?",
"Something went wrong while authenticating your request. Please try logging in again.": "Noe gikk galt under autentisering av forespørselen din. Vennligst prøv å logge inn igjen.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "Eieren av GitHub kontoen er bedt om å installere {{githubAppName}} GitHub appen. Når godkjent, vil forhåndsvisninger vises for respektive lenker.",
@@ -1089,12 +1158,16 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Legg til en Google Analytics 4 målings-ID for å sende dokumentvisninger og analyser fra arbeidsområdet til din egen Google Analytics-konto.",
"Measurement ID": "Målings-ID",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Opprett en \"Web\"-strøm i administrasjonsdashboardet ditt for Google Analytics og kopier målings-IDen fra det genererte kodeutdraget for å installere.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Oisann, du må akseptere tillatelsene i GitHub for å koble {{appName}} til arbeidsområdet ditt. Prøv igjen?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Aktiver forhåndsvisninger av Linear issues i dokumenter ved å koble et Linear-arbeidsområde til {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Frakobling vil forhindre forhåndsvisning av Linear-lenker fra denne organisasjonen i dokumenter. Er du sikker?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "Linear-integrasjonen er for øyeblikket deaktivert. Vennligst sett de tilhørende variablene og start serveren på nytt for å aktivere integrasjonen.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Konfigurer en Matomo-installasjon til å sende visninger og analyser fra arbeidsområdet til din egen Matomo-forekomst.",
"Instance URL": "Forekomstens URL",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "URL-adressen til Matomo-forekomsten. Hvis du bruker Matomo Cloud slutter den på matomo.cloud/",
"Site ID": "Site ID",
"An ID that uniquely identifies the website in your Matomo instance.": "En ID som unikt identifiserer nettstedet i din Matomo-forekomst.",
"Whoops, you need to accept the permissions in Notion to connect {{ appName }} to your workspace. Try again?": "Ops, du må akseptere tillatelsene i Notion for å koble til {{ appName }} til ditt arbeidsområde. Prøv igjen?",
"Whoops, you need to accept the permissions in Notion to connect {{ appName }} to your workspace. Try again?": "Oisann, du må akseptere tillatelsene i Notion for å koble til {{ appName }} til ditt arbeidsområde. Prøv igjen?",
"Import pages from Notion": "Importer sider fra Notion",
"Add to Slack": "Legg til i Slack",
"document published": "dokument publisert",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Webhooker kan brukes til å varsle applikasjonen din når hendelser skjer i {{appName}}. Hendelser sendes som en https-forespørsel med en JSON-last i nær sanntid.",
"Inactive": "Inaktiv",
"Create a webhook": "Opprett en webhook",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier er en plattform som lar {{appName}} enkelt integrere seg med tusenvis av andre forretningsverktøy. Automatiser arbeidsflytene dine, synkroniser data og mer.",
"Never logged in": "Aldri logget inn",
"Online now": "Online nå",
"Online {{ timeAgo }}": "Online {{ timeAgo }}",
+84 -10
View File
@@ -120,6 +120,8 @@
"Log out": "Uitloggen",
"Mark notifications as read": "Markeer meldingen als gelezen",
"Archive all notifications": "Archiveer alle meldingen",
"New App": "New App",
"New Application": "New Application",
"Restore revision": "Revisie herstellen",
"Link copied": "Link gekopieerd",
"Dark": "Donker",
@@ -170,8 +172,6 @@
"Deleting": "Verwijderen",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "Weet je dat zeker? Het verwijderen van de collectie <em>{{collectionName}}</em> is permanent en kan niet worden hersteld. Alle gepubliceerde documenten in deze collectie worden echter verplaatst naar de prullenbak.",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "Ook wordt <em>{{collectionName}}</em> gebruikt als de startweergave. Als je deze verwijdert, wordt de startweergave teruggezet naar het startscherm.",
"Sorry, an error occurred saving the collection": "Er is een fout opgetreden bij het opslaan van de collectie",
"Add a description": "Beschrijving toevoegen",
"Type a command or search": "Zoek of typ een opdracht",
"Choose a template": "Kies een sjabloon",
"Are you sure you want to permanently delete this entire comment thread?": "Weet je zeker dat je deze thread definitief wil verwijderen?",
@@ -308,6 +308,13 @@
"Unknown": "Onbekend",
"Mark all as read": "Markeer alles als gelezen",
"You're all caught up": "Je bent helemaal bij",
"Icon": "Icon",
"My App": "My App",
"Tagline": "Tagline",
"A short description": "A short description",
"Callback URLs": "Callback URLs",
"Published": "Gepubliceerd",
"Allow this app to be installed by other workspaces": "Allow this app to be installed by other workspaces",
"{{ username }} reacted with {{ emoji }}": "{{ username }} reageerde met {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} en {{ secondUsername }} reageerden met {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} en {{ count }} reageerden met {{ emoji }}",
@@ -395,7 +402,6 @@
"Star document": "Document toevoegen aan favorieten",
"Template created, go ahead and customize it": "Sjabloon gemaakt, ga aan de gang en pas het aan",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "Het maken van een sjabloon van <em>{{titleWithDefault}}</em> is een niet-destructieve actie we maken een kopie van het document en maken daar een sjabloon van dat kan worden gebruikt als uitgangspunt voor nieuwe documenten.",
"Published": "Gepubliceerd",
"Enable other members to use the template immediately": "Schakel andere leden in om de sjabloon onmiddellijk te gebruiken",
"Location": "Locatie",
"Admins can manage the workspace and access billing.": "Beheerders kunnen de werkruimte en toegangsadministratie beheren.",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "Afgemeld voor document",
"Unsubscribed from collection": "Afgemeld voor collectie",
"Account": "Account",
"API Keys": "API-sleutels",
"API & Apps": "API & Apps",
"Details": "Details",
"Security": "Beveiliging",
"Features": "Features",
"Members": "Gebruikers",
"Groups": "Groepen",
"API Keys": "API-sleutels",
"Applications": "Applications",
"Shared Links": "Gedeelde links",
"Import": "Importeer",
"Install": "Install",
"Integrations": "Intergraties",
"Revoke token": "Tokens intrekken",
"Revoke": "Intrekken",
@@ -538,6 +547,7 @@
"Document options": "Documentopties",
"Choose a collection": "Kies een collectie",
"Subscription inherited from collection": "Abonnement overgenomen van de collectie",
"Apply template": "Apply template",
"Enable embeds": "Embeds inschakelen",
"Export options": "Exporteer instellingen",
"Group members": "Groepeer leden",
@@ -551,6 +561,10 @@
"New child document": "Nieuw subdocument",
"Save in workspace": "Verplaats naar workspace",
"Notification settings": "Meldingsinstellingen",
"Revoke {{ appName }}": "Revoke {{ appName }}",
"Revoking": "Intrekken",
"Are you sure you want to revoke access?": "Are you sure you want to revoke access?",
"Delete app": "Delete app",
"Revision options": "Revisie opties",
"Share link revoked": "Deel-link ingetrokken",
"Share link copied": "Deel-link gekopieerd",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} groepen hebben toegang",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} groepen hebben toegang",
"Archived by {{userName}}": "Gearchiveerd door {{userName}}",
"Sorry, an error occurred saving the collection": "Er is een fout opgetreden bij het opslaan van de collectie",
"Add a description": "Beschrijving toevoegen",
"Share": "Deel",
"Overview": "Overzicht",
"Recently updated": "Onlangs bijgewerkt",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "Authenticatie mislukt deze inlogmethode is uitgeschakeld door een workspace-admin.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "De werkruimte die u probeert toe te treden vereist een uitnodiging voordat u een account kunt aanmaken. <1></1>Vraag een uitnodiging aan van uw werkruimte beheerder en probeer het opnieuw.",
"Sorry, an unknown error occurred.": "Sorry, een onbekende fout is opgetreden.",
"Choose a workspace": "Choose a workspace",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choose an {{ appName }} workspace or login to continue connecting this app",
"Login": "Inloggen",
"Error": "Foutmelding",
"Failed to load configuration.": "Laden van configuratiebestand mislukt.",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "Je hebt de laatste keer ingelogd met {{ authProviderName }}.",
"Or": "Of",
"Already have an account? Go to <1>login</1>.": "Heb je al een account? <1>Inloggen</1>.",
"An error occurred": "An error occurred",
"The OAuth client could not be found, please check the provided client ID": "The OAuth client could not be found, please check the provided client ID",
"The OAuth client could not be loaded, please check the redirect URI is valid": "The OAuth client could not be loaded, please check the redirect URI is valid",
"Required OAuth parameters are missing": "Required OAuth parameters are missing",
"Authorize": "Authorize",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} wants to access {{ teamName }}",
"By <em>{{ developerName }}</em>": "By <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} will be able to access your account and perform the following actions",
"read": "read",
"write": "write",
"read and write": "read and write",
"API keys": "API keys",
"attachments": "attachments",
"collections": "collections",
"comments": "comments",
"documents": "documents",
"events": "events",
"groups": "groups",
"integrations": "integrations",
"notifications": "notifications",
"reactions": "reactions",
"pins": "pins",
"shares": "shares",
"users": "users",
"teams": "teams",
"workspace": "workspace",
"Read all data": "Read all data",
"Write all data": "Write all data",
"Any collection": "Elke collectie",
"All time": "Gehele tijd",
"Past day": "Afgelopen dag",
@@ -837,15 +883,37 @@
"Something went wrong": "Er ging iets mis",
"Please try again or contact support if the problem persists": "Probeer het opnieuw of neem contact op met support als het probleem aanhoudt",
"No documents found for your search filters.": "Geen documenten gevonden voor je zoekfilters.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"API keys have been disabled by an admin for your account": "API keys have been disabled by an admin for your account",
"Application access": "Application access",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Manage which third-party and internal applications have been granted access to your {{ appName }} account.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API-sleutels kunnen worden gebruikt om te verifiëren met behulp van de API en het programma\n de gegevens van je werkruimte te beheren. Zie de <em>documentatie</em> voor meer informatie.",
"Application published": "Application published",
"Application updated": "Application updated",
"Client secret rotated": "Client secret rotated",
"Rotate secret": "Rotate secret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.",
"Displayed to users when authorizing": "Displayed to users when authorizing",
"Developer information shown to users when authorizing": "Developer information shown to users when authorizing",
"Developer name": "Developer name",
"Developer URL": "Developer URL",
"Allow users from other workspaces to authorize this app": "Allow users from other workspaces to authorize this app",
"Credentials": "Credentials",
"OAuth client ID": "OAuth client ID",
"The public identifier for this app": "The public identifier for this app",
"OAuth client secret": "OAuth client secret",
"Store this value securely, do not expose it publicly": "Store this value securely, do not expose it publicly",
"Where users are redirected after authorizing this app": "Where users are redirected after authorizing this app",
"Authorization URL": "Authorization URL",
"Where users are redirected to authorize this app": "Where users are redirected to authorize this app",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.",
"by {{ name }}": "door {{ name }}",
"Last used": "Laatst gebruikt",
"No expiry": "Geen vervaldatum",
"Restricted scope": "Beperkt bereik",
"API key copied to clipboard": "API-sleutel naar klembord gekopieerd",
"Copied": "Gekopieerd",
"Revoking": "Intrekken",
"Are you sure you want to revoke the {{ tokenName }} token?": "Weet je zeker dat je de {{ tokenName }} token wilt intrekken?",
"Disconnect integration": "Ontkoppel integratie",
"Connected": "Verbonden",
@@ -892,7 +960,7 @@
"No people matching your search": "Geen personen die aan de zoekopdracht voldoen",
"No people left to add": "Geen personen meer om toe te voegen",
"Date created": "Aanmaakdatum",
"Upload": "Upload",
"Crop Image": "Crop Image",
"Crop image": "Afbeelding bijsnijden",
"Uploading": "Bezig met uploaden",
"How does this work?": "Hoe werkt dit?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "{{ count }} document geïmporteerd",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "Je kunt een zipbestand importeren dat eerder is geëxporteerd vanuit een Outline-installatie collecties, documenten en afbeeldingen worden geïmporteerd. Open in Overzicht <em>Export</em> in de zijbalk Instellingen en klik op <em>Export Data</em>.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Sleep het zip-bestand vanuit de Markdown-exportoptie in {{appName}}, of klik om te uploaden",
"Configure": "Configure",
"Connect": "Verbinden",
"Last active": "Laatst actief",
"Guest": "Gast",
"Never used": "Never used",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Are you sure you want to delete the {{ appName }} application? This cannot be undone.",
"Shared by": "Gedeeld door",
"Date shared": "Datum gedeeld",
"Last accessed": "Laatst geopend",
@@ -965,6 +1037,7 @@
"Enterprise": "Zakelijk",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Zet snel je bestaande documenten, pagina's en bestanden van andere tools en services over naar {{appName}}. Je kunt HTML-, Markdown- en tekstdocumenten ook rechtstreeks naar Collecties in de app slepen.",
"Recent imports": "Recent geïmporteerd",
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
"Could not load members": "Kon leden niet laden",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Iedereen die {{appName}} heeft aangemeld staat hier vermeld. Het is mogelijk dat er andere gebruikers zijn die toegang hebben via {{signinMethods}} maar nog niet zijn aangemeld.",
"Receive a notification whenever a new document is published": "Ontvang een melding wanneer een nieuw document wordt gepubliceerd",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "Uitschrijven gelukt. Je instellingen voor meldingen zijn bijgewerkt",
"Manage when and where you receive email notifications.": "Beheer wanneer en waar je e-mailmeldingen ontvangt.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "De e-mailintegratie is momenteel uitgeschakeld. Stel de bijbehorende omgevingsvariabelen in en herstart de server om meldingen in te schakelen.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Maak persoonlijke API-sleutels aan om te verifiëren met de API en het programma\n de gegevens van je werkruimte te beheren. API sleutels hebben dezelfde rechten als uw gebruikersaccount.\n Voor meer details, zie de <em>documentatie</em> van de ontwikkelaar.",
"Personal keys": "Persoonlijke sleutels",
"Preferences saved": "Voorkeuren opgeslagen",
"Delete account": "Verwijder account",
"Manage settings that affect your personal experience.": "Beheer instellingen die van invloed zijn op je persoonlijke ervaring.",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "Je kan sjablonen maken om je team te helpen met het maken van consistente en nauwkeurige documentatie.",
"Alphabetical": "Alfabetisch",
"There are no templates just yet.": "Er zijn nog geen sjablonen.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier is een platform waarmee {{appName}} eenvoudig kan worden geïntegreerd met duizenden andere zakelijke tools. Automatiseer je workflows, synchroniseer gegevens en meer.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "Een bevestigingscode is naar je e-mailadres verzonden, voer hieronder de code in om deze workspace permanent te verwijderen.",
"Confirmation code": "Bevestigingscode",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Het verwijderen van de <1>{{workspaceName}}</1> workspace zal alle collecties, documenten, gebruikers en bijbehorende gegevens verwijderen. Je wordt onmiddellijk uitgelogd bij {{appName}}.",
@@ -1077,7 +1147,6 @@
"Expires today": "Verloopt vandaag",
"Expires tomorrow": "Verloopt morgen",
"Expires {{ date }}": "Verlopen {{ date }}",
"Connect": "Verbinden",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Oeps, je moet de machtigingen in GitHub accepteren om {{appName}} te verbinden met je werkruimte. Probeer het opnieuw?",
"Something went wrong while authenticating your request. Please try logging in again.": "Er is iets misgegaan bij het verifiëren van je verzoek. Probeer opnieuw in te loggen.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "De eigenaar van het GitHub account is verzocht om de {{githubAppName}} GitHub app te installeren. Eenmaal goedgekeurd, zullen de previews getoond worden voor de betreffende links.",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Voeg een Google Analytics 4 meet-ID toe om documentweergaven en analytics van je workspace naar je eigen Google Analytics-account te sturen.",
"Measurement ID": "Measurement ID",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Maak een \"web\"-stream in uw Google Analytics-beheerdersdashboard en kopieer de metings-ID van het gegenereerde codefragment om te installeren.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.",
"Instance URL": "Instance URL",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Webhooks kunnen worden gebruikt om uw toepassing op de hoogte te stellen wanneer er gebeurtenissen plaatsvinden in {{appName}}. Gebeurtenissen worden bijna realtime verzonden als een https-verzoek met een JSON-payload.",
"Inactive": "Inactief",
"Create a webhook": "Een webhook maken",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier is een platform waarmee {{appName}} eenvoudig kan worden geïntegreerd met duizenden andere zakelijke tools. Automatiseer je workflows, synchroniseer gegevens en meer.",
"Never logged in": "Nog nooit ingelogd",
"Online now": "Nu online",
"Online {{ timeAgo }}": "{{ timeAgo }} online",
+130 -56
View File
@@ -1,6 +1,6 @@
{
"New API key": "Nowy klucz API",
"Open collection": "Nowa kolekcja",
"Open collection": "Otwórz kolekcję",
"New collection": "Nowa kolekcja",
"Create a collection": "Utwórz kolekcję",
"Edit": "Edytuj",
@@ -40,7 +40,7 @@
"Development": "Wersja testowa",
"Open document": "Otwórz dokument",
"New document": "Nowy dokument",
"New draft": "New draft",
"New draft": "Nowy szkic",
"New from template": "Nowy z szablonu",
"New nested document": "Nowy zagnieżdżony dokument",
"Publish": "Opublikuj",
@@ -57,8 +57,8 @@
"Download document": "Pobierz dokument",
"Copy as Markdown": "Kopiuj jako Markdown",
"Markdown copied to clipboard": "Markdown skopiowany do schowka",
"Copy as text": "Copy as text",
"Text copied to clipboard": "Text copied to clipboard",
"Copy as text": "Kopiuj jako tekst",
"Text copied to clipboard": "Tekst został skopiowany do schowka",
"Copy public link": "Kopiuj publiczny link",
"Link copied to clipboard": "Link został skopiowany do schowka",
"Copy link": "Kopiuj link",
@@ -95,8 +95,8 @@
"Comments": "Komentarze",
"History": "Historia",
"Insights": "Statystyki",
"Disable viewer insights": "Wyłącz spostrzeżenia widzów",
"Enable viewer insights": "Włącz spostrzeżenia widzów",
"Disable viewer insights": "Wyłącz informacje o oglądających",
"Enable viewer insights": "Włącz informacje o oglądających",
"Leave document": "Opuść dokument",
"You have left the shared document": "Opuściłeś udostępniony dokument",
"Could not leave document": "Nie udało się opuścić dokumentu",
@@ -120,6 +120,8 @@
"Log out": "Wyloguj",
"Mark notifications as read": "Oznaczaj powiadomienia jako przeczytane",
"Archive all notifications": "Archiwizuj wszystkie powiadomienia",
"New App": "Nowa aplikacja",
"New Application": "Nowa aplikacja",
"Restore revision": "Przywróć wersję",
"Link copied": "Link skopiowany",
"Dark": "Ciemny",
@@ -170,8 +172,6 @@
"Deleting": "Usuwanie",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "Czy jesteś tego pewien? Usunięcie kolekcji <em>{{collectionName}}</em> jest trwałe i nie można jej przywrócić, jednak wszystkie opublikowane w niej dokumenty zostaną przeniesione do kosza.",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "Ponadto widok <em>{{collectionName}}</em> jest używany jako widok początkowy usunięcie go spowoduje zresetowanie widoku początkowego do strony głównej.",
"Sorry, an error occurred saving the collection": "Przepraszamy, wystąpił błąd podczas zapisywania kolekcji",
"Add a description": "Dodaj opis",
"Type a command or search": "Wpisz komendę lub wyszukiwanie",
"Choose a template": "Wybierz szablon",
"Are you sure you want to permanently delete this entire comment thread?": "Czy na pewno chcesz permanentnie usunąć ten wątek komentarzy?",
@@ -203,7 +203,7 @@
"Deleted Collection": "Usunięta kolekcja",
"Untitled": "Bez tytułu",
"Unpin": "Odepnij",
"{{ minutes }}m read": "{{ minutes }}m read",
"{{ minutes }}m read": "{{ minutes }} minut czytania",
"Select a location to copy": "Wybierz lokalizację do przeniesienia",
"Document copied": "Dokument skopiowany",
"Couldnt copy the document, try again?": "Nie udało się przenieść dokumentu, spróbować ponownie?",
@@ -308,6 +308,13 @@
"Unknown": "Nieznane",
"Mark all as read": "Oznacz wszystkie jako przeczytane",
"You're all caught up": "Jesteś na bieżąco",
"Icon": "Ikona",
"My App": "Moja aplikacja",
"Tagline": "Opis",
"A short description": "Krótki opis",
"Callback URLs": "Adresy URL wywołania zwrotnego",
"Published": "Opublikowano",
"Allow this app to be installed by other workspaces": "Zezwalaj na instalowanie tej aplikacji przez inne obszary robocze",
"{{ username }} reacted with {{ emoji }}": "{{ username }} zareagował/a {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} i {{ secondUsername }} zareagowali z {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} i {{ count }} innych zareagował z {{ emoji }}",
@@ -386,16 +393,15 @@
"{{ releasesBehind }} versions behind": "{{ releasesBehind }} wersji do aktualizacji",
"{{ releasesBehind }} versions behind_plural": "{{ releasesBehind }} wersji do aktualizacji",
"Change permissions?": "Zmienić uprawnienia?",
"{{ documentName }} cannot be moved within {{ parentDocumentName }}": "{{ documentName }} cannot be moved within {{ parentDocumentName }}",
"{{ documentName }} cannot be moved within {{ parentDocumentName }}": "{{ documentName }} nie może zostać przeniesiony w obrębie {{ parentDocumentName }}",
"You can't reorder documents in an alphabetically sorted collection": "Nie możesz zmieniać kolejności dokumentów w kolekcji posortowanej alfabetycznie",
"The {{ documentName }} cannot be moved here": "The {{ documentName }} cannot be moved here",
"The {{ documentName }} cannot be moved here": "{{ documentName }} nie może zostać tutaj przeniesiony",
"Return to App": "Wróć do aplikacji",
"Installation": "Instalacja",
"Unstar document": "Usuń oznaczenie gwiazdką",
"Star document": "Oznacz dokument gwiazdką",
"Template created, go ahead and customize it": "Szablon utworzony, przejdź do przodu i dostosuj go",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "Tworzenie szablonu z <em>{{titleWithDefault}}</em> jest akcją nieniszczącą - zrobimy kopię dokumentu i zamienimy go w szablonie, który może być użyty jako punkt wyjścia dla nowych dokumentów.",
"Published": "Opublikowano",
"Enable other members to use the template immediately": "Pozwól innym użytkownikom użyć tego szablonu",
"Location": "Położenie",
"Admins can manage the workspace and access billing.": "Administratorzy mogą zarządzać obszarem roboczym i uzyskiwać dostęp do rozliczeń.",
@@ -427,9 +433,9 @@
"Profile picture": "Zdjęcie profilowe",
"Create a new doc": "Utwórz nowy dokument",
"{{ userName }} won't be notified, as they do not have access to this document": "{{ userName }} nie zostanie powiadomiony, ponieważ nie mają dostępu do tego dokumentu",
"Keep as link": "Keep as link",
"Mention": "Mention",
"Embed": "Embed",
"Keep as link": "Zachowaj jako link",
"Mention": "Wzmianka",
"Embed": "Osadzenie",
"Add column after": "Dodaj kolumnę po",
"Add column before": "Dodaj kolumnę przed",
"Add row after": "Dodaj wiersz po",
@@ -458,7 +464,7 @@
"Italic": "Kursywa",
"Sorry, that link wont work for this embed type": "Niestety, ten link nie będzie działał dla tego typu osadzenia",
"File attachment": "Załącznik pliku",
"Enter a link": "Enter a link",
"Enter a link": "Wprowadź link",
"Big heading": "Duży nagłówek",
"Medium heading": "Średni nagłówek",
"Small heading": "Mały nagłówek",
@@ -510,16 +516,19 @@
"None": "Brak",
"Could not import file": "Nie można zaimportować pliku",
"Unsubscribed from document": "Wypisano z dokumentu",
"Unsubscribed from collection": "Unsubscribed from collection",
"Unsubscribed from collection": "Zrezygnowano z subskrypcji kolekcji",
"Account": "Konto",
"API Keys": "Klucze API",
"API & Apps": "API i aplikacje",
"Details": "Szczegóły",
"Security": "Bezpieczeństwo",
"Features": "Funkcje",
"Members": "Członkowie",
"Groups": "Grupy",
"API Keys": "Klucze API",
"Applications": "Aplikacje",
"Shared Links": "Udostępnione linki",
"Import": "Importuj",
"Install": "Zainstaluj",
"Integrations": "Integracje",
"Revoke token": "Unieważnij token",
"Revoke": "Unieważnij",
@@ -537,7 +546,8 @@
"{{ documentName }} restored": "{{ documentName }} przywrócony",
"Document options": "Opcje dokumentu",
"Choose a collection": "Wybierz kolekcję",
"Subscription inherited from collection": "Subscription inherited from collection",
"Subscription inherited from collection": "Subskrypcja odziedziczona z kolekcji",
"Apply template": "Apply template",
"Enable embeds": "Włącz osadzanie",
"Export options": "Opcje eksportu",
"Group members": "Członkowie grupy",
@@ -545,12 +555,16 @@
"Delete group": "Usuń grupę",
"Group options": "Opcje grupy",
"Cancel": "Anuluj",
"Import menu options": "Import menu options",
"Import menu options": "Opcje menu importu",
"Member options": "Opcje członka",
"New document in <em>{{ collectionName }}</em>": "Nowy dokument w <em>{{ collectionName }}</em>",
"New child document": "Nowy dokument podrzędny",
"Save in workspace": "Zapisz w obszarze roboczym",
"Notification settings": "Ustawienia powiadomień",
"Revoke {{ appName }}": "Unieważnij {{ appName }}",
"Revoking": "Unieważnianie...",
"Are you sure you want to revoke access?": "Czy na pewno chcesz cofnąć dostęp?",
"Delete app": "Usuń aplikację",
"Revision options": "Opcje rewizji",
"Share link revoked": "Unieważniono link udostępniania",
"Share link copied": "Skopiowano link udostępnienia",
@@ -581,8 +595,8 @@
"invited you to": "zaprosił cię do",
"Choose a date": "Wybierz datę",
"API key created. Please copy the value now as it will not be shown again.": "Klucz API został utworzony. Skopiuj wartość teraz, ponieważ nie będzie wyświetlany ponownie.",
"Scopes": "Scopes",
"Space-separated scopes restrict the access of this API key to specific parts of the API. Leave blank for full access": "Space-separated scopes restrict the access of this API key to specific parts of the API. Leave blank for full access",
"Scopes": "Zakresy",
"Space-separated scopes restrict the access of this API key to specific parts of the API. Leave blank for full access": "Oddzielone spacjami zakresy ograniczają dostęp tego klucza API do określonych części interfejsu API. Pozostaw puste dla pełnego dostępu",
"Expiration": "Data wygaśnięcia",
"Never expires": "Nigdy nie wygasa",
"7 days": "7 dni",
@@ -604,8 +618,10 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} grupa z dostępem",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} grup z dostępem",
"Archived by {{userName}}": "Zarchiwizowane przez {{userName}}",
"Sorry, an error occurred saving the collection": "Przepraszamy, wystąpił błąd podczas zapisywania kolekcji",
"Add a description": "Dodaj opis",
"Share": "Udostępnij",
"Overview": "Overview",
"Overview": "Informacje ogólne",
"Recently updated": "Ostatnio zaktualizowane",
"Recently published": "Ostatnio opublikowane",
"Least recently updated": "Najmniej ostatnio zaktualizowane",
@@ -705,11 +721,11 @@
"No documents found for your filters.": "Nie znaleziono dokumentów dla Twoich filtrów.",
"Youve not got any drafts at the moment.": "Nie masz obecnie żadnych szkiców.",
"Payment Required": "Wymagana płatność",
"No access to this doc": "No access to this doc",
"It doesnt look like you have permission to access this document.": "It doesnt look like you have permission to access this document.",
"Please request access from the document owner.": "Please request access from the document owner.",
"Not found": "Not found",
"The page youre looking for cannot be found. It might have been deleted or the link is incorrect.": "The page youre looking for cannot be found. It might have been deleted or the link is incorrect.",
"No access to this doc": "Brak dostępu do tego dokumentu",
"It doesnt look like you have permission to access this document.": "Wygląda na to, że nie masz uprawnień dostępu do tego dokumentu.",
"Please request access from the document owner.": "Poproś właściciela dokumentu o dostęp.",
"Not found": "Nie znaleziono",
"The page youre looking for cannot be found. It might have been deleted or the link is incorrect.": "Nie można znaleźć strony, której szukasz. Mogła zostać usunięta lub link jest nieprawidłowy.",
"Offline": "Tryb offline",
"We were unable to load the document while offline.": "Nie mogliśmy załadować dokumentu podczas trybu offline.",
"Your account has been suspended": "Twoje konto zostało zawieszone",
@@ -777,10 +793,10 @@
"LaTeX block": "Blok LaTeX",
"Inline code": "Kod w linii",
"Inline LaTeX": "LaTeX w linii",
"Triggers": "Triggers",
"Mention users and more": "Mention users and more",
"Emoji": "Emoji",
"Insert block": "Insert block",
"Triggers": "Wyzwalacze",
"Mention users and more": "Wzmianki o użytkownikach i nie tylko",
"Emoji": "Emotikony",
"Insert block": "Wstaw blok",
"Sign In": "Zaloguj się",
"Continue with Email": "Kontynuuj przy użyciu e-maila",
"Continue with {{ authProviderName }}": "Kontynuuj za pomocą {{ authProviderName }}",
@@ -802,9 +818,11 @@
"Sorry, it looks like that sign-in link is no longer valid, please try requesting another.": "Przepraszamy, wygląda na to, że ten link logowania jest już nieważny. Spróbuj poprosić o inny.",
"Your account has been suspended. To re-activate your account, please contact a workspace admin.": "Twoje konto zostało zablokowane. Aby ponownie aktywować konto, skontaktuj się z administratorem obszaru roboczego.",
"This workspace has been suspended. Please contact support to restore access.": "Ten obszar roboczy został zawieszony. Skontaktuj się z wsparciem, aby przywrócić dostęp.",
"Authentication failed this login method was disabled by a workspace admin.": "Authentication failed this login method was disabled by a workspace admin.",
"Authentication failed this login method was disabled by a workspace admin.": "Uwierzytelnianie nie powiodło się - ta metoda logowania została wyłączona przez administratora obszaru roboczego.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "Obszar roboczy, do którego próbujesz dołączyć, wymaga zaproszenia przed utworzeniem konta.<1></1> Poproś administratora obszaru roboczego o zaproszenie i spróbuj ponownie.",
"Sorry, an unknown error occurred.": "Przepraszamy, wystąpił nieznany błąd.",
"Choose a workspace": "Wybierz obszar roboczy",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Wybierz obszar roboczy {{ appName }} lub zaloguj się, aby kontynuować łączenie tej aplikacji",
"Login": "Zaloguj się",
"Error": "Błąd",
"Failed to load configuration.": "Nie udało się załadować konfiguracji.",
@@ -822,8 +840,36 @@
"You signed in with {{ authProviderName }} last time.": "Zalogowałeś się za pomocą {{ authProviderName }} ostatnim razem.",
"Or": "Lub",
"Already have an account? Go to <1>login</1>.": "Masz już konto? <1>Zaloguj się</1>.",
"An error occurred": "Wystąpił błąd",
"The OAuth client could not be found, please check the provided client ID": "Nie można znaleźć klienta OAuth, sprawdź podany identyfikator klienta",
"The OAuth client could not be loaded, please check the redirect URI is valid": "Nie można załadować klienta OAuth, sprawdź, czy adres przekierowania jest poprawny",
"Required OAuth parameters are missing": "Brak wymaganych parametrów OAuth",
"Authorize": "Autoryzuj",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} chce uzyskać dostęp do {{ teamName }}",
"By <em>{{ developerName }}</em>": "Stworzona przez <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} będzie mógł uzyskać dostęp do konta i wykonać następujące czynności",
"read": "odczyt",
"write": "zapis",
"read and write": "odczyt i zapis",
"API keys": "Klucze API",
"attachments": "załączniki",
"collections": "kolekcje",
"comments": "komentarze",
"documents": "dokumenty",
"events": "zdarzenia",
"groups": "grupy",
"integrations": "integracje",
"notifications": "powiadomienia",
"reactions": "reakcje",
"pins": "przypięcia",
"shares": "udostępnienia",
"users": "użytkownicy",
"teams": "zespoły",
"workspace": "obszar roboczy",
"Read all data": "Odczyt wszystkich danych",
"Write all data": "Zapis wszystkich danych",
"Any collection": "Dowolna kolekcja",
"All time": "All time",
"All time": "Przez cały czas",
"Past day": "Poprzedni dzień",
"Past week": "Poprzedni tydzień",
"Past month": "Poprzedni miesiąc",
@@ -837,15 +883,37 @@
"Something went wrong": "Coś poszło nie tak",
"Please try again or contact support if the problem persists": "Spróbuj ponownie lub skontaktuj się z pomocą techniczną, jeśli problem będzie się powtarzał.",
"No documents found for your search filters.": "Nie znaleziono dokumentów dla Twoich filtrów wyszukiwania.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Utwórz klucze API, aby uwierzytelniać się w API i programowo zarządzać danymi obszaru roboczego. Więcej informacji znajdziesz w <em>dokumentacji dla deweloperów</em>.",
"API keys have been disabled by an admin for your account": "Klucze API zostały wyłączone dla Twojego konta przez administratora",
"Application access": "Dostęp aplikacji",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Zarządzaj aplikacjami zewnętrznymi i wewnętrznymi, które uzyskały dostęp do Twojego konta {{ appName }}.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Klucze API mogą zostać użyte, aby uwierzytelniać się w API i programowo zarządzać danymi obszaru roboczego. Więcej informacji znajdziesz w <em>dokumentacji dla deweloperów</em>.",
"Application published": "Aplikacja opublikowana",
"Application updated": "Aplikacja zaktualizowana",
"Client secret rotated": "Zmieniono sekret klienta",
"Rotate secret": "Zmień sekret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotacja (zmiana) sekretu klienta spowoduje unieważnienie bieżącego sekretu. Upewnij się, że zaktualizujesz wszystkie aplikacje korzystające z tych danych uwierzytelniających.",
"Displayed to users when authorizing": "Wyświetlane użytkownikom podczas autoryzacji",
"Developer information shown to users when authorizing": "Informacje o deweloperze wyświetlane użytkownikom podczas autoryzacji",
"Developer name": "Nazwa dewelopera",
"Developer URL": "Adres URL dewelopera",
"Allow users from other workspaces to authorize this app": "Zezwalanie użytkownikom z innych obszarów roboczych na autoryzację tej aplikacji",
"Credentials": "Poświadczenia",
"OAuth client ID": "Identyfikator klienta OAuth",
"The public identifier for this app": "Publiczny identyfikator tej aplikacji",
"OAuth client secret": "Sekret klienta OAuth",
"Store this value securely, do not expose it publicly": "Przechowuj tę wartość bezpiecznie, nie ujawniaj jej publicznie",
"Where users are redirected after authorizing this app": "Gdzie użytkownicy są przekierowywani po autoryzacji aplikacji",
"Authorization URL": "Adres URL autoryzacji",
"Where users are redirected to authorize this app": "Gdzie użytkownicy są przekierowywani podczas autoryzacji aplikacji",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Aplikacje umożliwiają tworzenie wewnętrznych lub publicznych integracji z Outline i zapewniają bezpieczny dostęp za pośrednictwem OAuth. Więcej informacji znajdziesz w <em>dokumentacji dla deweloperów</em>.",
"by {{ name }}": "przez {{ name }}",
"Last used": "Ostatnio używane",
"No expiry": "Brak terminu ważności",
"Restricted scope": "Restricted scope",
"Restricted scope": "Ograniczony zakres",
"API key copied to clipboard": "Klucz API został skopiowany do schowka",
"Copied": "Skopiowano",
"Revoking": "Unieważnianie...",
"Are you sure you want to revoke the {{ tokenName }} token?": "Czy na pewno chcesz unieważnić token {{ tokenName }}?",
"Disconnect integration": "Rozłącz integrację",
"Connected": "Połączono",
@@ -892,23 +960,27 @@
"No people matching your search": "Brak osób pasujących do Twojego wyszukiwania",
"No people left to add": "Brak osób do dodania",
"Date created": "Data utworzenia",
"Upload": "Prześlij",
"Crop image": "Crop image",
"Crop Image": "Przytnij obraz",
"Crop image": "Przytnij obraz",
"Uploading": "Wysyłanie",
"How does this work?": "Jak to działa?",
"You can import a zip file that was previously exported from the JSON option in another instance. In {{ appName }}, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "Możesz zaimportować plik zip, który został wcześniej wyeksportowany z opcji JSON w innej instancji. W {{ appName }} otwórz <em>Eksport</em> w pasku bocznym Ustawień i kliknij <em>Eksportuj dane</em>.",
"Drag and drop the zip file from the JSON export option in {{appName}}, or click to upload": "Przeciągnij i upuść plik zip z opcji eksportu JSON w {{appName}} lub kliknij, aby wybrać plik do przesłania",
"Canceled": "Canceled",
"Import canceled": "Import canceled",
"Are you sure you want to cancel this import?": "Are you sure you want to cancel this import?",
"Canceling": "Canceling",
"Canceling this import will discard any progress made. This cannot be undone.": "Canceling this import will discard any progress made. This cannot be undone.",
"{{ count }} document imported": "{{ count }} document imported",
"{{ count }} document imported_plural": "{{ count }} documents imported",
"Canceled": "Anulowano",
"Import canceled": "Import anulowany",
"Are you sure you want to cancel this import?": "Czy na pewno chcesz anulować ten import?",
"Canceling": "Anulowanie",
"Canceling this import will discard any progress made. This cannot be undone.": "Anulowanie tego importu spowoduje usunięcie wszystkich postępów. Nie można tego cofnąć.",
"{{ count }} document imported": "{{ count }} zaimportowany dokument",
"{{ count }} document imported_plural": "{{ count }} zaimportowanych dokumentów",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "Możesz zaimportować plik zip, który został wcześniej wyeksportowany z instalacji Outline zostaną zaimportowane kolekcje, dokumenty i obrazy. W Outline otwórz <em>Eksport</em> w pasku bocznym Ustawień i kliknij <em>Eksportuj dane</em>.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Przeciągnij i upuść plik zip z opcji eksportu Markdown w {{appName}} lub kliknij, aby wybrać plik do przesłania",
"Configure": "Konfiguruj",
"Connect": "Połącz",
"Last active": "Ostatnio aktywny",
"Guest": "Gość",
"Never used": "Nigdy nie używany",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Czy na pewno chcesz usunąć aplikację {{ appName }}? Nie można tego cofnąć.",
"Shared by": "Udostępnione przez",
"Date shared": "Data udostępnienia",
"Last accessed": "Ostatnio otwarto",
@@ -946,7 +1018,7 @@
"Danger": "Uwaga",
"You can delete this entire workspace including collections, documents, and users.": "Możesz usunąć całą tę przestrzeń roboczą, w tym kolekcje, dokumenty i użytkowników.",
"Export data": "Eksportuj dane",
"A full export might take some time, consider exporting a single document or collection. You may leave this page once the export has started if you have notifications enabled, we will email a link to <em>{{ userEmail }}</em> when its complete.": "A full export might take some time, consider exporting a single document or collection. You may leave this page once the export has started if you have notifications enabled, we will email a link to <em>{{ userEmail }}</em> when its complete.",
"A full export might take some time, consider exporting a single document or collection. You may leave this page once the export has started if you have notifications enabled, we will email a link to <em>{{ userEmail }}</em> when its complete.": "Pełny eksport może zająć trochę czasu — rozważ wyeksportowanie pojedynczego dokumentu lub kolekcji. Możesz zamknąć tę stronę po rozpoczęciu eksportu — jeśli masz włączone powiadomienia, wyślemy link na adres <em>{{ userEmail }}</em>, gdy eksport zostanie zakończony.",
"Recent exports": "Najnowsze eksporty",
"Manage optional and beta features. Changing these settings will affect the experience for all members of the workspace.": "Zarządzaj funkcjami opcjonalnymi i beta. Zmiana tych ustawień wpłynie na doświadczenie wszystkich członków przestrzeni roboczej.",
"Separate editing": "Osobny tryb edycji",
@@ -965,6 +1037,7 @@
"Enterprise": "Przedsiębiorstwo",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Szybko przenieś swoje istniejące dokumenty, strony i pliki z innych narzędzi i usług do {{appName}}. Możesz także przeciągnąć i upuścić dowolne dokumenty HTML, Markdown i tekstowe bezpośrednio do Kolekcji w aplikacji.",
"Recent imports": "Ostatnio zaimportowane",
"Configure a variety of integrations with third-party services.": "Konfiguruj integracje z usługami innych firm.",
"Could not load members": "Nie można załadować członków",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Tutaj są wyświetlane wszystkie osoby, które zalogowały się w {{appName}}. Możliwe, że istnieją inni użytkownicy, którzy mają dostęp przez {{signinMethods}} ale jeszcze się nie zalogowali.",
"Receive a notification whenever a new document is published": "Otrzymuj powiadomienie o każdym nowym opublikowanym dokumencie",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "Udało się anulować subskrypcję. Twoje ustawienia powiadomień zostały zaktualizowane",
"Manage when and where you receive email notifications.": "Zarządzaj, kiedy i gdzie otrzymujesz powiadomienia e-mail.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "Integracja e-mail jest obecnie wyłączona. Ustaw powiązane zmienne środowiskowe i uruchom ponownie serwer, aby włączyć powiadomienia.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Utwórz osobiste klucze API, aby uwierzytelnić się z API i programowo kontrolować\n dane swojego obszaru roboczego. Klucze API mają takie same uprawnienia jak Twoje konto użytkownika.\n Aby uzyskać więcej szczegółów, zobacz <em>dokumentację API </em>.",
"Personal keys": "Klucze prywatne",
"Preferences saved": "Preferencje zostały zapisane",
"Delete account": "Usuń konto",
"Manage settings that affect your personal experience.": "Zarządzaj ustawieniami, które wpływają na Twoje osobiste doświadczenia.",
@@ -1044,14 +1115,13 @@
"Allow editors to create new collections within the workspace": "Zezwalaj edytorom na tworzenie nowych kolekcji w obszarze roboczym",
"Workspace creation": "Tworzenie obszaru roboczego",
"Allow editors to create new workspaces": "Pozwól edytorom tworzyć nowe projekty",
"Could not load shares": "Could not load shares",
"Could not load shares": "Nie można załadować udostępnień",
"Sharing is currently disabled.": "Udostępnianie jest obecnie wyłączone.",
"You can globally enable and disable public document sharing in the <em>security settings</em>.": "Możesz globalnie włączać i wyłączać publiczne udostępnianie dokumentów w <em>ustawieniach zabezpieczeń</em>.",
"Documents that have been shared are listed below. Anyone that has the public link can access a read-only version of the document until the link has been revoked.": "Dokumenty udostępnione są wymienione poniżej. Każdy, kto ma link publiczny, może uzyskać dostęp do wersji dokumentu tylko do odczytu do czasu cofnięcia linku.",
"You can create templates to help your team create consistent and accurate documentation.": "Możesz utworzyć szablony, aby ułatwić swojemu zespołowi tworzenie spójnej i dokładnej dokumentacji.",
"Alphabetical": "Alfabetycznie",
"There are no templates just yet.": "Nie ma jeszcze żadnych szablonów.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier to platforma, która umożliwia łatwą integrację {{appName}} z tysiącami innych narzędzi biznesowych. Automatyzuj swoje przepływy pracy, synchronizuj dane i nie tylko.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "Na Twój adres e-mail został wysłany kod potwierdzający, wpisz poniżej kod, aby trwale zniszczyć ten obszar roboczy.",
"Confirmation code": "Kod potwierdzający",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Usunięcie obszaru roboczego <1>{{workspaceName}}</1> zniszczy wszystkie kolekcje, dokumenty, użytkowników i powiązane dane. Zostaniesz natychmiast wylogowany z {{appName}}.",
@@ -1077,7 +1147,6 @@
"Expires today": "Wygasa dzisiaj",
"Expires tomorrow": "Wygasa jutro",
"Expires {{ date }}": "Wygasa {{ date }}",
"Connect": "Połącz",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Ups, musisz zaakceptować uprawnienia w Slack, aby połączyć {{appName}} z Twoim obszarem roboczym. Spróbować ponownie?",
"Something went wrong while authenticating your request. Please try logging in again.": "Coś poszło nie tak podczas uwierzytelniania Twojego żądania. Proszę spróbuj zalogować się ponownie.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "Właściciel konta GitHub został poproszony o zainstalowanie aplikacji {{githubAppName}} GitHub. Po zatwierdzeniu podglądy zostaną wyświetlone dla odpowiednich linków.",
@@ -1089,13 +1158,17 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Dodaj identyfikator pomiarowy Google Analytics 4, aby wysyłać wyświetlenia dokumentów i analizy z przestrzeni roboczej do własnego konta Google Analytics.",
"Measurement ID": "Identyfikator pomiarowy",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Utwórz strumień \"Web\" w panelu administratora Google Analytics i skopiuj identyfikator pomiarowy z wygenerowanego fragmentu kodu, aby go zainstalować.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Ups, musisz zaakceptować uprawnienia w Linear, aby połączyć {{appName}} ze swoim obszarem roboczym. Spróbować ponownie?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Włącz podgląd Linear issues w dokumentach, łącząc obszar roboczy Linear z {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Odłączenie uniemożliwi podgląd linków Linear z tego obszaru roboczego w dokumentach. Czy na pewno?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "Integracja Linear jest obecnie wyłączona. Aby włączyć integrację, należy ustawić związane z nią zmienne środowiskowe i ponownie uruchomić serwer.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Skonfiguruj instalację Matomo, aby wysyłać widoki i analizy z obszaru roboczego do Twojej instancji Matomo.",
"Instance URL": "URL instancji",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "Adres URL twojej instancji Matomo. Jeśli używasz Matomo Cloud, adres zakończy się na matomo.cloud/",
"Site ID": "ID witryny",
"An ID that uniquely identifies the website in your Matomo instance.": "Identyfikator, który jednoznacznie identyfikuje witrynę w Twojej instancji Matomo.",
"Whoops, you need to accept the permissions in Notion to connect {{ appName }} to your workspace. Try again?": "Whoops, you need to accept the permissions in Notion to connect {{ appName }} to your workspace. Try again?",
"Import pages from Notion": "Import pages from Notion",
"Whoops, you need to accept the permissions in Notion to connect {{ appName }} to your workspace. Try again?": "Ups, musisz zaakceptować uprawnienia w Notion, aby połączyć {{ appName }} ze swoim obszarem roboczym. Spróbować ponownie?",
"Import pages from Notion": "Importowanie stron z aplikacji Notion",
"Add to Slack": "Dodaj do Slacka",
"document published": "dokument opublikowany",
"document updated": "dokument zaktualizowany",
@@ -1119,7 +1192,7 @@
"It looks like you havent linked your {{ appName }} account to Slack yet": "Wygląda na to, że nie połączyłeś jeszcze swojego konta {{ appName }} ze Slack",
"Link your account": "Połącz swoje konto",
"Link your account in {{ appName }} settings to search from Slack": "Połącz swoje konto w ustawieniach {{ appName }} , aby wyszukać ze Slack",
"Configure a Umami installation to send views and analytics from the workspace to your own Umami instance.": "Skonfiguruj instalację Umami, aby wysyłać widoki i analizy z obszaru roboczego na własną instancję Unami.",
"Configure a Umami installation to send views and analytics from the workspace to your own Umami instance.": "Skonfiguruj instalację Umami, aby wysyłać widoki i analizy z obszaru roboczego na własną instancję Umami.",
"The URL of your Umami instance. If you are using Umami Cloud it will begin with {{ url }}": "Adres URL twojej instancji Umami. Jeśli używasz Umami Cloud zaczyna się od {{ url }}",
"Script name": "Nazwa skryptu",
"The name of the script file that Umami uses to track analytics.": "Nazwa pliku skryptu, który Umami wykorzystuje do śledzenia analiz.",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Webhooki mogą być używane do powiadamiania twojej aplikacji o wydarzeniach w {{appName}}. Wydarzenia są wysyłane jako żądanie https z ładunkiem JSON w czasie zbliżonym do rzeczywistego.",
"Inactive": "Nieaktywny",
"Create a webhook": "Utwórz webhook",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier to platforma, która umożliwia łatwą integrację {{appName}} z tysiącami innych narzędzi biznesowych. Automatyzuj swoje przepływy pracy, synchronizuj dane i nie tylko.",
"Never logged in": "Nigdy nie zalogowany",
"Online now": "Teraz online",
"Online {{ timeAgo }}": "Online {{ timeAgo }}",
@@ -1152,5 +1226,5 @@
"{{ user }} updated {{ timeAgo }}": "{{ user }} zaktualizował {{ timeAgo }}",
"You created {{ timeAgo }}": "Utworzyłeś {{ timeAgo }}",
"{{ user }} created {{ timeAgo }}": "{{ user }} utworzył {{ timeAgo }}",
"Error loading data": "Error loading data"
"Error loading data": "Błąd ładowania danych"
}
+112 -38
View File
@@ -57,8 +57,8 @@
"Download document": "Baixar documento",
"Copy as Markdown": "Copiar como Markdown",
"Markdown copied to clipboard": "Markdown copiado para a área de transferência",
"Copy as text": "Copy as text",
"Text copied to clipboard": "Text copied to clipboard",
"Copy as text": "Copiar como texto",
"Text copied to clipboard": "Texto copiado para área de transferência",
"Copy public link": "Copiar link público",
"Link copied to clipboard": "Link copiado para área de transferência",
"Copy link": "Copiar link",
@@ -120,6 +120,8 @@
"Log out": "Sair",
"Mark notifications as read": "Marcar notificações como lidas",
"Archive all notifications": "Arquivar todas as notificações",
"New App": "Novo App",
"New Application": "Nova Aplicação",
"Restore revision": "Restaurar revisão",
"Link copied": "Link copiado",
"Dark": "Escuro",
@@ -170,8 +172,6 @@
"Deleting": "Excluindo",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "Você tem certeza disso? A exclusão da coleção <em>{{collectionName}}</em> é permanente e não pode ser restaurada, no entanto, todos os documentos publicados nela serão movidos para a lixeira.",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "Além disso, <em>{{collectionName}}</em> está sendo utilizada como visualização inicial excluí-la irá redefinir a visualização inicial para a página inicial.",
"Sorry, an error occurred saving the collection": "Desculpe, ocorreu um erro ao salvar a coleção",
"Add a description": "Adicionar uma descrição",
"Type a command or search": "Digite um comando ou pesquise",
"Choose a template": "Escolha um modelo",
"Are you sure you want to permanently delete this entire comment thread?": "Tem certeza de que deseja excluir permanentemente todos os comentários associados a este tópico?",
@@ -248,7 +248,7 @@
"our engineers have been notified": "nossos engenheiros foram notificados",
"Show detail": "Exibir detalhes",
"Current version": "Versão atual",
"{{userName}} edited": "{{userName}} editado",
"{{userName}} edited": "{{userName}} editou",
"{{userName}} archived": "{{userName}} arquivado",
"{{userName}} restored": "{{userName}} restaurado",
"{{userName}} deleted": "{{userName}} deletado",
@@ -274,7 +274,7 @@
"{{authorName}} created <3></3>": "{{authorName}} criou <3></3>",
"{{authorName}} opened <3></3>": "{{authorName}} abriu <3></3>",
"Search emoji": "Pesquisar emoji",
"Search icons": "Buscar ícones",
"Search icons": "Pesquisar ícones",
"Choose default skin tone": "Escolha o tom de pele padrão",
"Show menu": "Mostrar menu",
"Icon Picker": "Seletor de ícone",
@@ -308,6 +308,13 @@
"Unknown": "Desconhecido",
"Mark all as read": "Marcar tudo como lido",
"You're all caught up": "Você está em dia",
"Icon": "Ícone",
"My App": "Meu Aplicativo",
"Tagline": "Slogan",
"A short description": "Uma breve descrição",
"Callback URLs": "URL de Retorno de Chamada",
"Published": "Publicado",
"Allow this app to be installed by other workspaces": "Permitir que este aplicativo seja instalado por outros espaços de trabalho",
"{{ username }} reacted with {{ emoji }}": "{{ username }} reagiu com {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} e {{ secondUsername }} reagiram com {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} e {{ count }} outros reagiram com {{ emoji }}",
@@ -395,7 +402,6 @@
"Star document": "Favoritar documento",
"Template created, go ahead and customize it": "Modelo criado, vá em frente e personalize-o",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "Criar um modelo a partir de <em>{{titleWithDefault}}</em> é uma ação não destrutiva — faremos uma cópia do documento e o transformaremos em um modelo que pode ser usado como ponto de partida para novos documentos.",
"Published": "Publicado",
"Enable other members to use the template immediately": "Permitir que outros membros usem o modelo imediatamente",
"Location": "Localização",
"Admins can manage the workspace and access billing.": "Administradores podem gerenciar o espaço de trabalho e acessar o faturamento.",
@@ -428,7 +434,7 @@
"Create a new doc": "Criar um novo documento",
"{{ userName }} won't be notified, as they do not have access to this document": "{{ userName }} não será notificado, pois não tem acesso a este documento",
"Keep as link": "Manter como link",
"Mention": "Mention",
"Mention": "Menção",
"Embed": "Incorporar",
"Add column after": "Adicionar coluna depois",
"Add column before": "Adicionar coluna antes",
@@ -510,16 +516,19 @@
"None": "Nada",
"Could not import file": "Não foi possível importar o arquivo",
"Unsubscribed from document": "Cancelada inscrição do documento",
"Unsubscribed from collection": "Unsubscribed from collection",
"Unsubscribed from collection": "Cancelada inscrição da coleção",
"Account": "Conta",
"API Keys": "Chaves API",
"API & Apps": "API & Aplicativos",
"Details": "Detalhes",
"Security": "Segurança",
"Features": "Funcionalidades",
"Members": "Membros",
"Groups": "Grupos",
"API Keys": "Chaves API",
"Applications": "Aplicações",
"Shared Links": "Links compartilhados",
"Import": "Importar",
"Install": "Install",
"Integrations": "Integrações",
"Revoke token": "Revogar token",
"Revoke": "Revogar",
@@ -538,6 +547,7 @@
"Document options": "Opções do documento",
"Choose a collection": "Escolha uma coleção",
"Subscription inherited from collection": "Subscrição herdada da coleção",
"Apply template": "Apply template",
"Enable embeds": "Habilitar incorporações",
"Export options": "Opções de exportação",
"Group members": "Membros do grupo",
@@ -545,12 +555,16 @@
"Delete group": "Remover grupo",
"Group options": "Opções do grupo",
"Cancel": "Cancelar",
"Import menu options": "Import menu options",
"Import menu options": "Opções do menu de importação",
"Member options": "Opções do membro",
"New document in <em>{{ collectionName }}</em>": "Novo documento em <em>{{ collectionName }}</em>",
"New child document": "Novo documento aninhado",
"Save in workspace": "Salvar no espaço de trabalho",
"Notification settings": "Configurações de notificação",
"Revoke {{ appName }}": "Revogar {{ appName }}",
"Revoking": "Revogando",
"Are you sure you want to revoke access?": "Tem certeza de que deseja revogar o acesso?",
"Delete app": "Excluir aplicativo",
"Revision options": "Opções de revisão",
"Share link revoked": "Link de compartilhamento revogado",
"Share link copied": "Link de compartilhamento copiado",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} grupo com acesso",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} grupos com acesso",
"Archived by {{userName}}": "Arquivado por {{userName}}",
"Sorry, an error occurred saving the collection": "Desculpe, ocorreu um erro ao salvar a coleção",
"Add a description": "Adicionar uma descrição",
"Share": "Compartilhar",
"Overview": "Visão geral",
"Recently updated": "Atualizado recentemente",
@@ -705,11 +721,11 @@
"No documents found for your filters.": "Nenhum documento foi encontrado para seus filtros.",
"Youve not got any drafts at the moment.": "Você não tem rascunhos no momento.",
"Payment Required": "Pagamento necessário",
"No access to this doc": "No access to this doc",
"It doesnt look like you have permission to access this document.": "It doesnt look like you have permission to access this document.",
"Please request access from the document owner.": "Please request access from the document owner.",
"Not found": "Not found",
"The page youre looking for cannot be found. It might have been deleted or the link is incorrect.": "The page youre looking for cannot be found. It might have been deleted or the link is incorrect.",
"No access to this doc": "Sem acesso a este documento",
"It doesnt look like you have permission to access this document.": "Parece que você não tem permissão para acessar este documento.",
"Please request access from the document owner.": "Por favor, solicite acesso ao proprietário do documento.",
"Not found": "Não encontrado",
"The page youre looking for cannot be found. It might have been deleted or the link is incorrect.": "A página que você está procurando não pôde ser encontrada. Ela pode ter sido excluída ou o link está incorreto.",
"Offline": "Desconectado",
"We were unable to load the document while offline.": "Não foi possível carregar o documento enquanto desconectado.",
"Your account has been suspended": "Sua conta foi suspensa",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "Falha na autenticação este método de login foi desativado por um administrador do espaço de trabalho.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "O espaço de trabalho que você está tentando entrar requer um convite antes de criar uma conta.<1></1>Solicite um convite do administrador do seu espaço de trabalho e tente novamente.",
"Sorry, an unknown error occurred.": "Desculpe, um erro desconhecido ocorreu.",
"Choose a workspace": "Escolha um espaço de trabalho",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Escolha um espaço de trabalho {{ appName }} ou logue para continuar a se conectar a este aplicativo",
"Login": "Iniciar sessão",
"Error": "Erro",
"Failed to load configuration.": "Falha ao carregar configuração.",
@@ -822,8 +840,36 @@
"You signed in with {{ authProviderName }} last time.": "Você fez login com {{ authProviderName }} da última vez.",
"Or": "Ou",
"Already have an account? Go to <1>login</1>.": "Já tem uma conta? Ir para<1>login</1>.",
"An error occurred": "Ocorreu um erro",
"The OAuth client could not be found, please check the provided client ID": "O cliente OAuth não pôde ser encontrado, verifique o ID de cliente fornecido",
"The OAuth client could not be loaded, please check the redirect URI is valid": "O cliente OAuth não pôde ser carregado, por favor, verifique se a URI de redirecionamento é válida",
"Required OAuth parameters are missing": "Parâmetros OAuth obrigatórios estão faltando",
"Authorize": "Autorizar",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} quer acessar {{ teamName }}",
"By <em>{{ developerName }}</em>": "Por <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} será capaz de acessar sua conta e executar as seguintes ações",
"read": "ler",
"write": "escrever",
"read and write": "leitura e escrita",
"API keys": "Chaves API",
"attachments": "anexos",
"collections": "coleções",
"comments": "comentários",
"documents": "documentos",
"events": "eventos",
"groups": "grupos",
"integrations": "integrações",
"notifications": "notificações",
"reactions": "reações",
"pins": "fixações",
"shares": "compartilhamentos",
"users": "usuários",
"teams": "equipes",
"workspace": "espaço de trabalho",
"Read all data": "Ler todos os dados",
"Write all data": "Escrever todos os dados",
"Any collection": "Qualquer coleção",
"All time": "All time",
"All time": "Desde o início",
"Past day": "Dia anterior",
"Past week": "Semana passada",
"Past month": "Mês passado",
@@ -837,15 +883,37 @@
"Something went wrong": "Algo deu errado",
"Please try again or contact support if the problem persists": "Tente novamente ou entre em contato com o suporte se o problema persistir",
"No documents found for your search filters.": "Nenhum documento encontrado para seus filtros de pesquisa.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Crie chaves de API pessoais para autenticar com a API e controlar programaticamente os dados do\n seu espaço de trabalho. Para mais detalhes consulte a <em>documentação de desenvolvedor</em>.",
"API keys have been disabled by an admin for your account": "Chaves de API foram desativadas por um administrador para sua conta",
"Application access": "Acesso de aplicativos",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Gerencie quais aplicativos de terceiros e internos foram autorizados a acessar a sua conta {{ appName }}.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Chaves de API podem ser usadas para autenticar com a API e controlar programaticamente\n os dados de seu espaço de trabalho. Para mais detalhes consulte a <em>documentação de desenvolvedor</em>.",
"Application published": "Aplicação publicada",
"Application updated": "Aplicação atualizada",
"Client secret rotated": "Segredo do cliente rotacionado",
"Rotate secret": "Rotacionar segredo",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotacionar o segredo do cliente invalidará o segredo atual. Certifique-se de atualizar todas as aplicações usando essas credenciais.",
"Displayed to users when authorizing": "Visível aos usuários ao autorizar",
"Developer information shown to users when authorizing": "Informações de desenvolvedor exibidas aos usuários ao autorizar",
"Developer name": "Nome do desenvolvedor",
"Developer URL": "URL do desenvolvedor",
"Allow users from other workspaces to authorize this app": "Permitir que usuários de outros espaços de trabalho autorizem este aplicativo",
"Credentials": "Credenciais",
"OAuth client ID": "ID de cliente OAuth",
"The public identifier for this app": "O identificador público para este aplicativo",
"OAuth client secret": "Segredo de cliente OAuth",
"Store this value securely, do not expose it publicly": "Armazene este valor de forma segura, não o exponha publicamente",
"Where users are redirected after authorizing this app": "Onde os usuários são redirecionados após a autorização deste aplicativo",
"Authorization URL": "URL de Autorização",
"Where users are redirected to authorize this app": "Onde os usuários serão redirecionados para autorizar este aplicativo",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Aplicações permitem que você crie integrações internas ou públicas com o Outline e forneça acesso seguro via OAuth. Para obter mais detalhes, consulte a <em>documentação para desenvolvedores</em>.",
"by {{ name }}": "por {{ name }}",
"Last used": "Última utilização",
"No expiry": "Não expira",
"Restricted scope": "Escopo restrito",
"API key copied to clipboard": "Chave da API copiada para a área de transferência",
"Copied": "Copiado",
"Revoking": "Revogando",
"Are you sure you want to revoke the {{ tokenName }} token?": "Tem certeza de que deseja revogar a chave de api {{ tokenName }}?",
"Disconnect integration": "Desconectar integração",
"Connected": "Conectado",
@@ -892,23 +960,27 @@
"No people matching your search": "Nenhuma pessoa corresponde à sua pesquisa",
"No people left to add": "Nenhuma pessoa restante para adicionar",
"Date created": "Data de criação",
"Upload": "Enviar",
"Crop image": "Crop image",
"Crop Image": "Cortar imagem",
"Crop image": "Cortar imagem",
"Uploading": "Enviando",
"How does this work?": "Como isso funciona?",
"You can import a zip file that was previously exported from the JSON option in another instance. In {{ appName }}, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "Você pode importar um arquivo zip que foi exportado anteriormente da opção JSON em outra instância. Em {{ appName }}, abra <em>Exportar</em> na barra lateral de Configurações e clique em <em>Exportar Dados</em>.",
"Drag and drop the zip file from the JSON export option in {{appName}}, or click to upload": "Arraste e solte o arquivo zip da opção de exportação JSON em {{appName}}, ou clique para realizar o upload",
"Canceled": "Canceled",
"Import canceled": "Import canceled",
"Are you sure you want to cancel this import?": "Are you sure you want to cancel this import?",
"Canceling": "Canceling",
"Canceling this import will discard any progress made. This cannot be undone.": "Canceling this import will discard any progress made. This cannot be undone.",
"{{ count }} document imported": "{{ count }} document imported",
"{{ count }} document imported_plural": "{{ count }} documents imported",
"Canceled": "Cancelado",
"Import canceled": "Importação cancelada",
"Are you sure you want to cancel this import?": "Tem certeza de que deseja cancelar esta importação?",
"Canceling": "Cancelando",
"Canceling this import will discard any progress made. This cannot be undone.": "Cancelar esta importação descartará qualquer progresso realizado. Isso não poderá ser desfeito.",
"{{ count }} document imported": "{{ count }} documento importado",
"{{ count }} document imported_plural": "{{ count }} documentos importados",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "Você pode importar um arquivo zip que foi exportado anteriormente de uma instalação do Outline coleções, documentos e imagens serão importados. No Outline, abra <em>Exportar</em> na barra lateral de Configurações e clique em <em>Exportar Dados</em>.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Arraste e solte o arquivo zip da opção de exportação Markdown em {{appName}}, ou clique para realizar o upload",
"Configure": "Configure",
"Connect": "Conectar",
"Last active": "Última atividade",
"Guest": "Visitante",
"Never used": "Nunca utilizado",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Tem certeza de que deseja excluir a aplicação {{ appName }} ? Isso não pode ser desfeito.",
"Shared by": "Compartilhado por",
"Date shared": "Data de compartilhamento",
"Last accessed": "Último acessado",
@@ -965,6 +1037,7 @@
"Enterprise": "Empresarial",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Transfira rapidamente seus documentos, páginas e arquivos existentes de outras ferramentas e serviços para o {{appName}}. Você também pode arrastar e soltar qualquer documento HTML, Markdown e texto diretamente nas Coleções do aplicativo.",
"Recent imports": "Importações recentes",
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
"Could not load members": "Não foi possível carregar membros",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Todos que fizeram login em {{appName}} estão listados aqui. É possível que existam outros usuários que tenham acesso através de {{signinMethods}} mas que ainda não tenham feito login.",
"Receive a notification whenever a new document is published": "Receba uma notificação sempre que um novo documento for publicado",
@@ -979,7 +1052,7 @@
"Receive a notification whenever a new collection is created": "Receba uma notificação sempre que uma nova coleção for criada",
"Invite accepted": "Convite aceito",
"Receive a notification when someone you invited creates an account": "Receba uma notificação quando alguém que você convidou criar uma conta",
"Invited to document": "Convidou para documentar",
"Invited to document": "Convidado para o documento",
"Receive a notification when a document is shared with you": "Receba uma notificação quando um documento for compartilhado com você",
"Invited to collection": "Convidado para a coleção",
"Receive a notification when you are given access to a collection": "Receba uma notificação quando lhe for dado acesso a uma coleção",
@@ -993,20 +1066,18 @@
"Unsubscription successful. Your notification settings were updated": "Cancelamento de inscrição bem-sucedido. Suas configurações de notificação foram atualizadas",
"Manage when and where you receive email notifications.": "Gerencie quando e onde você recebe notificações por e-mail.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "A integração de e-mail está atualmente desativada. Defina as variáveis de ambiente associadas e reinicie o servidor para ativar as notificações.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Crie chaves de API pessoais para autenticar com a API e controlar programaticamente os dados\n do espaço de trabalho. Chaves API têm as mesmas permissões que a sua conta de usuário.\n Para mais detalhes, consulte a <em>documentação para desenvolvedores</em>.",
"Personal keys": "Chaves pessoais",
"Preferences saved": "Preferências salvas",
"Delete account": "Excluir a conta",
"Manage settings that affect your personal experience.": "Gerencie as configurações que afetam sua experiência pessoal.",
"Language": "Idioma",
"Choose the interface language. Community translations are accepted though our <2>translation portal</2>.": "Escolha o idioma da interface. As traduções da comunidade são aceitas através do nosso <2>portal de tradução</2>.",
"Choose your preferred interface color scheme.": "Escolha seu esquema de cores da interface preferido.",
"Choose your preferred interface color scheme.": "Escolha seu esquema de cores preferido para a interface.",
"Use pointer cursor": "Usar cursor do mouse",
"Show a hand cursor when hovering over interactive elements.": "Mostre um cursor de mão ao passar o mouse sobre os elementos interativos.",
"Show line numbers": "Mostrar número de linhas",
"Show line numbers on code blocks in documents.": "Mostrar números de linha nos blocos de código em documentos.",
"When enabled, documents have a separate editing mode. When disabled, documents are always editable when you have permission.": "Quando habilitado, os documentos têm um modo separado de edição. Quando desabilitado, documentos são sempre editáveis quando você possui permissão.",
"Remember previous location": "Lembrar escolha anterior",
"Remember previous location": "Lembrar localização anterior",
"Automatically return to the document you were last viewing when the app is re-opened.": "Retorne automaticamente ao documento que você estava visualizando pela última vez quando o aplicativo for reaberto.",
"Smart text replacements": "Substituições inteligentes de texto",
"Auto-format text by replacing shortcuts with symbols, dashes, smart quotes, and other typographical elements.": "Formatar automaticamente o texto substituindo os atalhos por símbolos, traços, aspas inteligentes e outros elementos tipográficos.",
@@ -1016,7 +1087,7 @@
"Unable to upload new profile picture": "Não foi possível carregar a nova imagem de perfil",
"Manage how you appear to other members of the workspace.": "Gerencie como você aparece para outros membros do espaço de trabalho.",
"Photo": "Foto",
"Choose a photo or image to represent yourself.": "Escolha uma foto ou imagem para se representar.",
"Choose a photo or image to represent yourself.": "Escolha uma foto ou imagem para te representar.",
"This could be your real name, or a nickname — however youd like people to refer to you.": "Este pode ser o seu nome verdadeiro ou um apelido — como você gostaria que as pessoas se referissem a você.",
"Email address": "Endereço de Email",
"Are you sure you want to require invites?": "Tem certeza de que deseja exigir convites?",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "Você pode criar modelos para ajudar sua equipe a criar documentação consistente e precisa.",
"Alphabetical": "Alfabética",
"There are no templates just yet.": "Ainda não há modelos.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier é uma plataforma que permite o {{appName}} uma fácil integração com outras ferramentas de negócios. Automatize seus fluxos de trabalho, sincronize dados e muito mais.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "Um código de confirmação foi enviado para seu endereço de e-mail, por favor insira o código abaixo para destruir permanentemente este espaço de trabalho.",
"Confirmation code": "Código de confirmação",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Excluindo o espaço de trabalho <1>{{workspaceName}}</1> destruirá todas as coleções, documentos, usuários e dados associados. Você será desconectado imediatamente do {{appName}}.",
@@ -1077,7 +1147,6 @@
"Expires today": "Vence hoje",
"Expires tomorrow": "Vence amanhã",
"Expires {{ date }}": "Vence em {{ date }}",
"Connect": "Conectar",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Ops, você precisa aceitar as permissões no GitHub para conectar {{appName}} ao seu espaço de trabalho. Tentar novamente?",
"Something went wrong while authenticating your request. Please try logging in again.": "Algo deu errado durante a autenticação da sua solicitação. Por favor, tente realizar o login novamente.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "O proprietário da conta do GitHub solicitou a instalação do aplicativo {{githubAppName}} do GitHub. Uma vez aprovada, as pré-visualizações serão mostradas para os respectivos links.",
@@ -1089,13 +1158,17 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Adicione um ID de métricas do Google Analytics 4 para enviar visualizações e estatisticas de documentos do espaço de trabalho para sua própria conta do Google Analytics.",
"Measurement ID": "ID de Métricas",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Crie um fluxo \"Web\" no painel de administração do Google Analytics e copie o ID de métricas gerado para instalar.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Ops, você precisa aceitar as permissões no Linear para conectar {{appName}} ao seu espaço de trabalho. Tentar novamente?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Habilite visualizações de issues do Linear nos documentos, conectando um Workspace Linear com {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Desconectar impedirá a pré-visualização de links do Linear nos documentos neste espaço de trabalho. Tem certeza?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "A integração com o Linear está desativada no momento. Defina as variáveis de ambiente associadas e reinicie o servidor para habilitar a integração.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Configure uma instalação do Matomo para enviar visualizações de paginas e informações analíticas do espaço de trabalho para sua instância Matomo.",
"Instance URL": "URL da Instância",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "A URL da sua instância Matomo. Se você estiver usando Matomo Cloud, ela terminará em matomo.cloud/",
"Site ID": "ID do Site",
"An ID that uniquely identifies the website in your Matomo instance.": "Um ID que identifica unicamente o site na sua instância Matomo.",
"Whoops, you need to accept the permissions in Notion to connect {{ appName }} to your workspace. Try again?": "Whoops, you need to accept the permissions in Notion to connect {{ appName }} to your workspace. Try again?",
"Import pages from Notion": "Import pages from Notion",
"Whoops, you need to accept the permissions in Notion to connect {{ appName }} to your workspace. Try again?": "Ops, você precisa aceitar as permissões no Notion para conectar {{ appName }} ao seu espaço de trabalho. Tentar novamente?",
"Import pages from Notion": "Importar páginas do Notion",
"Add to Slack": "Adicionar ao Slack",
"document published": "documento publicado",
"document updated": "documento atualizado",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Webhooks podem ser usados para notificar seu aplicativo quando eventos acontecem no {{appName}}. Os eventos são enviados como uma solicitação https com dados no formato JSON quase em tempo real.",
"Inactive": "Inativo",
"Create a webhook": "Criar um webhook",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier é uma plataforma que permite o {{appName}} uma fácil integração com outras ferramentas de negócios. Automatize seus fluxos de trabalho, sincronize dados e muito mais.",
"Never logged in": "Nunca iniciou sessão",
"Online now": "Conectado agora",
"Online {{ timeAgo }}": "Conectado {{ timeAgo }}",
@@ -1152,5 +1226,5 @@
"{{ user }} updated {{ timeAgo }}": "{{ user }} atualizou {{ timeAgo }}",
"You created {{ timeAgo }}": "Você criou {{ timeAgo }}",
"{{ user }} created {{ timeAgo }}": "{{ user }} criou {{ timeAgo }}",
"Error loading data": "Error loading data"
"Error loading data": "Erro ao carregar os dados"
}
+111 -37
View File
@@ -1,5 +1,5 @@
{
"New API key": "Nova chave de API",
"New API key": "Nova chave API",
"Open collection": "Abrir coleção",
"New collection": "Nova coleção",
"Create a collection": "Criar coleção",
@@ -7,7 +7,7 @@
"Edit collection": "Editar coleção",
"Permissions": "Permissões",
"Collection permissions": "Permissões da coleção",
"Share this collection": "Compartilhar esta coleção",
"Share this collection": "Partilhe esta coleção",
"Search in collection": "Procurar na coleção",
"Star": "Estrela",
"Unstar": "Tirar estrela",
@@ -18,22 +18,22 @@
"Archive": "Arquivo",
"Archive collection": "Archive collection",
"Collection archived": "Collection archived",
"Archiving": "Arquivando",
"Archiving": "A arquivar",
"Archiving this collection will also archive all documents within it. Documents from the collection will no longer be visible in search results.": "Archiving this collection will also archive all documents within it. Documents from the collection will no longer be visible in search results.",
"Restore": "Restaurar",
"Collection restored": "Collection restored",
"Delete": "Apagar",
"Delete collection": "Remover coleção",
"Delete collection": "Apagar coleção",
"New template": "Novo template",
"Delete comment": "Excluir Comentário",
"Delete comment": "Eliminar comentário",
"Mark as resolved": "Marcar como resolvido",
"Thread resolved": "Tópico resolvido",
"Mark as unresolved": "Marcar como não resolvido",
"Mark as unresolved": "Marcar como por resolver",
"View reactions": "View reactions",
"Reactions": "Reactions",
"Copy ID": "Copiar ID",
"Clear IndexedDB cache": "Limpar cache do IndexedDB",
"IndexedDB cache cleared": "Cache IndexedDB limpo",
"Clear IndexedDB cache": "Apagar cache do IndexedDB",
"IndexedDB cache cleared": "Cache do IndexedDB apagada",
"Toggle debug logging": "Alternar log de depuração",
"Debug logging enabled": "Log de depuração habilitado",
"Debug logging disabled": "Log de depuração desativado",
@@ -80,23 +80,23 @@
"Create template": "Criar template",
"Open random document": "Abrir documento aleatório",
"Search documents for \"{{searchQuery}}\"": "Pesquisar documentos por \"{{searchQuery}}\"",
"Move to workspace": "Mover para espaço de trabalho",
"Move to workspace": "Mover para área de trabalho",
"Move": "Mover",
"Move to collection": "Mover para coleção",
"Move to collection": "Mover para colecção",
"Move {{ documentType }}": "Mover {{ documentType }}",
"Are you sure you want to archive this document?": "Tem certeza que deseja arquivar este documento?",
"Are you sure you want to archive this document?": "Tem a certeza que quer arquivar este documento?",
"Document archived": "Documento arquivado",
"Archiving this document will remove it from the collection and search results.": "Arquivar este documento irá removê-lo da coleção e dos resultados de pesquisas.",
"Archiving this document will remove it from the collection and search results.": "Arquivar este documento irá removê-lo da coleção e dos resultados de pesquisa.",
"Delete {{ documentName }}": "Apagar {{ documentName }}",
"Permanently delete": "Excluir permanentemente",
"Permanently delete {{ documentName }}": "Excluir permanentemente {{ documentName }}",
"Empty trash": "Esvaziar lixeira",
"Permanently delete documents in trash": "Excluir permanentemente documentos na lixeira",
"Permanently delete": "Eliminar permanentemente",
"Permanently delete {{ documentName }}": "Eliminar permanentemente {{ documentName }}",
"Empty trash": "Esvaziar lixo",
"Permanently delete documents in trash": "Eliminar os documentos no lixo",
"Comments": "Comentários",
"History": "Historia",
"Insights": "Estatísticas",
"Disable viewer insights": "Desativar estatísticas de visualização",
"Enable viewer insights": "Habilitar estatísticas de visualização",
"Disable viewer insights": "Desativar estatísticas do utilizador",
"Enable viewer insights": "Habilitar estatísticas do utilizador",
"Leave document": "Leave document",
"You have left the shared document": "You have left the shared document",
"Could not leave document": "Could not leave document",
@@ -116,11 +116,13 @@
"Report a bug": "Reportar um erro técnico",
"Changelog": "Changelog",
"Keyboard shortcuts": "Atalhos do teclado",
"Download {{ platform }} app": "Baixar o aplicativo para {{ platform }}",
"Download {{ platform }} app": "Descarregar {{ platform }} app",
"Log out": "Deslogar",
"Mark notifications as read": "Marcar notificações como lidas",
"Archive all notifications": "Arquivar todas as notificações",
"Restore revision": "Restaurar revisão",
"New App": "New App",
"New Application": "New Application",
"Restore revision": "Restaurar versão",
"Link copied": "Link copiado",
"Dark": "Escuro",
"Light": "Claro",
@@ -129,15 +131,15 @@
"Change theme": "Alterar tema",
"Change theme to": "Alterar tema para",
"Switch workspace": "Alternar área de trabalho",
"Select a workspace": "Selecionar espaço de trabalho",
"New workspace": "Novo espaço de trabalho",
"Create a workspace": "Criar um espaço de trabalho",
"Login to workspace": "Entrar no espaço de trabalho",
"Select a workspace": "Selecionar área de trabalho",
"New workspace": "Nova área de trabalho",
"Create a workspace": "Criar área de trabalho",
"Login to workspace": "Entrar em área de trabalho",
"Invite people": "Convidar pessoas",
"Invite to workspace": "Convidar para espaço de trabalho",
"Invite to workspace": "Convidar para área de trabalho",
"Promote to {{ role }}": "Promover para {{ role }}",
"Demote to {{ role }}": "Rebaixar para {{ role }}",
"Update role": "Atualizar função",
"Update role": "Atualizar papel",
"Delete user": "Eliminar utilizador",
"Collection": "Coleção",
"Collections": "Coleções",
@@ -170,8 +172,6 @@
"Deleting": "Excluindo",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "Tem certeza? Eliminar a coleção <em>{{collectionName}}</em> é permanente e não pode ser reposta, embora todos os documentos publicados serão movidos para o lixo.",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "Além disso, <em>{{collectionName}}</em> está a ser usada como vista inicial — Eliminar irá reiniciar a vista inicial da página inicial.",
"Sorry, an error occurred saving the collection": "Ocorreu um erro ao guardar a coleção",
"Add a description": "Adicionar descrição",
"Type a command or search": "Digite um comando ou pesquisa",
"Choose a template": "Escolha um modelo",
"Are you sure you want to permanently delete this entire comment thread?": "Tem certeza de que deseja excluir permanentemente todo o tópico?",
@@ -308,6 +308,13 @@
"Unknown": "Desconhecido",
"Mark all as read": "Marcar todos como lido",
"You're all caught up": "Já estás a par de tudo",
"Icon": "Icon",
"My App": "My App",
"Tagline": "Tagline",
"A short description": "A short description",
"Callback URLs": "Callback URLs",
"Published": "Publicado",
"Allow this app to be installed by other workspaces": "Allow this app to be installed by other workspaces",
"{{ username }} reacted with {{ emoji }}": "{{ username }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} and {{ count }} other reacted with {{ emoji }}",
@@ -395,7 +402,6 @@
"Star document": "Documento favorito",
"Template created, go ahead and customize it": "Modelo criado, já o pode personalizar",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "Criar um modelo de <em>{{titleWithDefault}}</em> é uma ação não destrutiva — será efetuada cópia do documento e será transformado em modelo que poderá ser usado como ponto de partida para novos documentos.",
"Published": "Publicado",
"Enable other members to use the template immediately": "Permitir que outros membros usem o modelo imediatamente",
"Location": "Localização",
"Admins can manage the workspace and access billing.": "Administradores podem gerir a área de trabalho e faturação.",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "Desinscrever do documento",
"Unsubscribed from collection": "Unsubscribed from collection",
"Account": "Conta",
"API Keys": "API Keys",
"API & Apps": "API & Apps",
"Details": "Detalhes",
"Security": "Segurança",
"Features": "Funcionalidades",
"Members": "Membros",
"Groups": "Grupos",
"API Keys": "API Keys",
"Applications": "Applications",
"Shared Links": "Ligações partilhadas",
"Import": "Importar",
"Install": "Install",
"Integrations": "Integrações",
"Revoke token": "Revogar token",
"Revoke": "Revogar",
@@ -538,6 +547,7 @@
"Document options": "Opções do documento",
"Choose a collection": "Escolher coleção",
"Subscription inherited from collection": "Subscription inherited from collection",
"Apply template": "Apply template",
"Enable embeds": "Ativar embeds",
"Export options": "Opções de exportação",
"Group members": "Membros do grupo",
@@ -551,6 +561,10 @@
"New child document": "Novo documento aninhado",
"Save in workspace": "Guardar na área de trabalho",
"Notification settings": "Definições de notificação",
"Revoke {{ appName }}": "Revoke {{ appName }}",
"Revoking": "A revogar",
"Are you sure you want to revoke access?": "Are you sure you want to revoke access?",
"Delete app": "Delete app",
"Revision options": "Opções de revisão",
"Share link revoked": "Link de partilha foi revogado",
"Share link copied": "Link de partilha foi copiado",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ usersCount }} grupo com acesso",
"{{ groupsCount }} groups with access_plural": "{{ usersCount }} grupos com acesso",
"Archived by {{userName}}": "Arquivado por {{userName}}",
"Sorry, an error occurred saving the collection": "Ocorreu um erro ao guardar a coleção",
"Add a description": "Adicionar descrição",
"Share": "Compartilhar",
"Overview": "Overview",
"Recently updated": "Atualizado recentemente",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "Authentication failed this login method was disabled by a workspace admin.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "A área de trabalho em que tenta entrar requer um convite antes de criar uma conta. <1></1>Solicite um convite do administrador da sua área de trabalho e tente novamente.",
"Sorry, an unknown error occurred.": "Sorry, an unknown error occurred.",
"Choose a workspace": "Choose a workspace",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choose an {{ appName }} workspace or login to continue connecting this app",
"Login": "Entrada",
"Error": "Erro",
"Failed to load configuration.": "Falha ao carregar a configuração.",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "Entrou com {{ authProviderName }} da última vez.",
"Or": "ou",
"Already have an account? Go to <1>login</1>.": "Já tem conta? Entre em <1>login</1>.",
"An error occurred": "An error occurred",
"The OAuth client could not be found, please check the provided client ID": "The OAuth client could not be found, please check the provided client ID",
"The OAuth client could not be loaded, please check the redirect URI is valid": "The OAuth client could not be loaded, please check the redirect URI is valid",
"Required OAuth parameters are missing": "Required OAuth parameters are missing",
"Authorize": "Authorize",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} wants to access {{ teamName }}",
"By <em>{{ developerName }}</em>": "By <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} will be able to access your account and perform the following actions",
"read": "read",
"write": "write",
"read and write": "read and write",
"API keys": "API keys",
"attachments": "attachments",
"collections": "collections",
"comments": "comments",
"documents": "documents",
"events": "events",
"groups": "groups",
"integrations": "integrations",
"notifications": "notifications",
"reactions": "reactions",
"pins": "pins",
"shares": "shares",
"users": "users",
"teams": "teams",
"workspace": "workspace",
"Read all data": "Read all data",
"Write all data": "Write all data",
"Any collection": "Qualquer coleção",
"All time": "All time",
"Past day": "Último dia",
@@ -837,15 +883,37 @@
"Something went wrong": "Ocorreu um erro",
"Please try again or contact support if the problem persists": "Tente novamente ou contate o suporte se o problema persistir",
"No documents found for your search filters.": "Nenhum documento encontrado para os seus filtros.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"API keys have been disabled by an admin for your account": "API keys have been disabled by an admin for your account",
"Application access": "Application access",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Manage which third-party and internal applications have been granted access to your {{ appName }} account.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"Application published": "Application published",
"Application updated": "Application updated",
"Client secret rotated": "Client secret rotated",
"Rotate secret": "Rotate secret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.",
"Displayed to users when authorizing": "Displayed to users when authorizing",
"Developer information shown to users when authorizing": "Developer information shown to users when authorizing",
"Developer name": "Developer name",
"Developer URL": "Developer URL",
"Allow users from other workspaces to authorize this app": "Allow users from other workspaces to authorize this app",
"Credentials": "Credentials",
"OAuth client ID": "OAuth client ID",
"The public identifier for this app": "The public identifier for this app",
"OAuth client secret": "OAuth client secret",
"Store this value securely, do not expose it publicly": "Store this value securely, do not expose it publicly",
"Where users are redirected after authorizing this app": "Where users are redirected after authorizing this app",
"Authorization URL": "Authorization URL",
"Where users are redirected to authorize this app": "Where users are redirected to authorize this app",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.",
"by {{ name }}": "by {{ name }}",
"Last used": "Última utilização",
"No expiry": "Sem expiração",
"Restricted scope": "Restricted scope",
"API key copied to clipboard": "A chave API foi copiada para a área de transferência",
"Copied": "Copiado",
"Revoking": "A revogar",
"Are you sure you want to revoke the {{ tokenName }} token?": "Tem certeza que quer revogar o token {{ tokenName }}?",
"Disconnect integration": "Desligar integração",
"Connected": "Ligado",
@@ -892,7 +960,7 @@
"No people matching your search": "Nenhuma pessoa corresponde à sua pesquisa",
"No people left to add": "Não sobrou ninguém para adicionar",
"Date created": "Date created",
"Upload": "Upload",
"Crop Image": "Crop Image",
"Crop image": "Crop image",
"Uploading": "A carregar",
"How does this work?": "Como funciona?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "{{ count }} documents imported",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "Pode importar um arquivo ZIP que foi exportado anteriormente a partir de uma instalação de Outline — coleções, documentos e imagens serão importadas. No Outline, abra <em>Exportar</em> na barra lateral de Configurações e clique em <em>Exportar Dados</em>.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Arraste e solte o arquivo ZIP da opção de exportação Markdown em {{appName}}, ou clique para carregar",
"Configure": "Configure",
"Connect": "Ligado",
"Last active": "Última atividade",
"Guest": "Convidado",
"Never used": "Never used",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Are you sure you want to delete the {{ appName }} application? This cannot be undone.",
"Shared by": "Partilhado por",
"Date shared": "Data da partilha",
"Last accessed": "Acessado pela última vez",
@@ -934,7 +1006,7 @@
"Reset theme": "Redefinir tema",
"Accent color": "Acentuar cor",
"Accent text color": "Acentuar cor do texto",
"Public branding": "Publicação da marca",
"Public branding": "Public branding",
"Show your teams logo on public pages like login and shared documents.": "Mostre o logotipo da sua equipa em páginas públicas, como login e documentos partilhados.",
"Table of contents position": "Posição do índice",
"The side to display the table of contents in relation to the main content.": "O lado para exibir a tabela de conteúdo em relação ao conteúdo principal.",
@@ -965,6 +1037,7 @@
"Enterprise": "Empresa",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Transfira rapidamente os documentos existentes, páginas e ficheiros de outras ferramentas e serviços para {{appName}}. Também pode arrastar e soltar qualquer documento HTML, Markdown e documento de texto diretamente para as Coleções na aplicação.",
"Recent imports": "Importações recentes",
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
"Could not load members": "Could not load members",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Todos que entraram em {{appName}} estão listados aqui. É possível que haja outros utilizadores que tenham acesso através de {{signinMethods}}, mas ainda não efetuaram login.",
"Receive a notification whenever a new document is published": "Receber uma notificação sempre que um novo documento for publicado",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "Inscrição anulada. Configurações de notificação atualizadas",
"Manage when and where you receive email notifications.": "Gerir quando e onde recebe notificações por e-mail.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "A integração de e-mail está inativa. Por favor, defina as variáveis de ambiente associadas e reinicie o servidor para habilitar notificações.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Crie chaves de API pessoais para autenticar com a API e controlar programaticamente os dados de\n da área de trabalho. Chaves API têm as mesmas permissões que a sua conta de usuário.\n Para mais detalhes, consulte a documentação de desenvolvedor <em>do</em>.",
"Personal keys": "Chaves pessoais",
"Preferences saved": "Preferências guardadas",
"Delete account": "Apagar conta",
"Manage settings that affect your personal experience.": "Faça a gestão das configurações que afetam a sua experiência pessoal.",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "Pode criar modelos para ajudar a sua equipa a criar documentação consistente e precisa.",
"Alphabetical": "Alfabético",
"There are no templates just yet.": "Ainda não existem modelos.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier é uma plataforma que permite que {{appName}} se integre facilmente com milhares de outras ferramentas de produtividade. Automatize os fluxos de trabalho, sincronize dados e muito mais.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "Um código de confirmação foi enviado para o seu endereço de e-mail, por favor introduza o código abaixo para eliminar permanentemente a área de trabalho.",
"Confirmation code": "Código de confirmação",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Excluir área de trabalho <1>{{workspaceName}}</1> eliminará todas as coleções, documentos, utilizadores, e dados associados. Será desligado imediatamente do {{appName}}.",
@@ -1077,7 +1147,6 @@
"Expires today": "Expira hoje",
"Expires tomorrow": "Expira amanhã",
"Expires {{ date }}": "Expira em {{ date }}",
"Connect": "Ligado",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Ops, precisa aceitar as permissões no GitHub para ligar {{appName}} à sua área de trabalho. Tentar novamente?",
"Something went wrong while authenticating your request. Please try logging in again.": "Aconteceu um erro durante a autenticação. Por favor, tente iniciar a sessão novamente.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "Foi pedido ao proprietário da conta do GitHub a instalação da aplicação de {{githubAppName}} . Uma vez aprovada, as ligações de pré-visualização ficarão visíveis.",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Adicione um ID de medição do Google Analytics 4 para enviar as visualizações e análises do documento da área de trabalho para a sua conta do Google Analytics.",
"Measurement ID": "ID de Medição",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Crie um fluxo \"Web\" no painel de administração do Google Analytics e copie o ID de medição a partir do trecho de código gerado para instalar.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Configurar uma instalação do Matomo para enviar visualizações e análises da área de trabalho para a sua instância de Matomo.",
"Instance URL": "Instância URL",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "A URL da sua instância Matomo. Se você usar Matomo Cloud, terminará em matomo.cloud/",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Webhooks podem ser usados para notificar a sua aplicação quando eventos acontecem no {{appName}}. Os eventos são enviados como um pedido https com uma carga JSON em tempo real.",
"Inactive": "Inativo",
"Create a webhook": "Criar um webhook",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier é uma plataforma que permite que {{appName}} se integre facilmente com milhares de outras ferramentas de produtividade. Automatize os fluxos de trabalho, sincronize dados e muito mais.",
"Never logged in": "Nunca iniciou sessão",
"Online now": "Online agora",
"Online {{ timeAgo }}": "Visto à {{ timeAgo }}",
+84 -10
View File
@@ -120,6 +120,8 @@
"Log out": "Log out",
"Mark notifications as read": "Mark notifications as read",
"Archive all notifications": "Archive all notifications",
"New App": "New App",
"New Application": "New Application",
"Restore revision": "Restore revision",
"Link copied": "Link copied",
"Dark": "Dark",
@@ -170,8 +172,6 @@
"Deleting": "Deleting",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.",
"Sorry, an error occurred saving the collection": "Sorry, an error occurred saving the collection",
"Add a description": "Add a description",
"Type a command or search": "Type a command or search",
"Choose a template": "Choose a template",
"Are you sure you want to permanently delete this entire comment thread?": "Are you sure you want to permanently delete this entire comment thread?",
@@ -308,6 +308,13 @@
"Unknown": "Unknown",
"Mark all as read": "Mark all as read",
"You're all caught up": "You're all caught up",
"Icon": "Icon",
"My App": "My App",
"Tagline": "Tagline",
"A short description": "A short description",
"Callback URLs": "Callback URLs",
"Published": "Published",
"Allow this app to be installed by other workspaces": "Allow this app to be installed by other workspaces",
"{{ username }} reacted with {{ emoji }}": "{{ username }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} and {{ count }} other reacted with {{ emoji }}",
@@ -395,7 +402,6 @@
"Star document": "Star document",
"Template created, go ahead and customize it": "Template created, go ahead and customize it",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.",
"Published": "Published",
"Enable other members to use the template immediately": "Enable other members to use the template immediately",
"Location": "Location",
"Admins can manage the workspace and access billing.": "Admins can manage the workspace and access billing.",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "Unsubscribed from document",
"Unsubscribed from collection": "Unsubscribed from collection",
"Account": "Account",
"API Keys": "API Keys",
"API & Apps": "API & Apps",
"Details": "Details",
"Security": "Security",
"Features": "Features",
"Members": "Members",
"Groups": "Groups",
"API Keys": "API Keys",
"Applications": "Applications",
"Shared Links": "Shared Links",
"Import": "Import",
"Install": "Install",
"Integrations": "Integrations",
"Revoke token": "Revoke token",
"Revoke": "Revoke",
@@ -538,6 +547,7 @@
"Document options": "Document options",
"Choose a collection": "Choose a collection",
"Subscription inherited from collection": "Subscription inherited from collection",
"Apply template": "Apply template",
"Enable embeds": "Enable embeds",
"Export options": "Export options",
"Group members": "Group members",
@@ -551,6 +561,10 @@
"New child document": "New child document",
"Save in workspace": "Save in workspace",
"Notification settings": "Notification settings",
"Revoke {{ appName }}": "Revoke {{ appName }}",
"Revoking": "Revoking",
"Are you sure you want to revoke access?": "Are you sure you want to revoke access?",
"Delete app": "Delete app",
"Revision options": "Revision options",
"Share link revoked": "Share link revoked",
"Share link copied": "Share link copied",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} group with access",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} groups with access",
"Archived by {{userName}}": "Archived by {{userName}}",
"Sorry, an error occurred saving the collection": "Sorry, an error occurred saving the collection",
"Add a description": "Add a description",
"Share": "Share",
"Overview": "Overview",
"Recently updated": "Recently updated",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "Authentication failed this login method was disabled by a workspace admin.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.",
"Sorry, an unknown error occurred.": "Sorry, an unknown error occurred.",
"Choose a workspace": "Choose a workspace",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choose an {{ appName }} workspace or login to continue connecting this app",
"Login": "Login",
"Error": "Error",
"Failed to load configuration.": "Failed to load configuration.",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "You signed in with {{ authProviderName }} last time.",
"Or": "Or",
"Already have an account? Go to <1>login</1>.": "Already have an account? Go to <1>login</1>.",
"An error occurred": "An error occurred",
"The OAuth client could not be found, please check the provided client ID": "The OAuth client could not be found, please check the provided client ID",
"The OAuth client could not be loaded, please check the redirect URI is valid": "The OAuth client could not be loaded, please check the redirect URI is valid",
"Required OAuth parameters are missing": "Required OAuth parameters are missing",
"Authorize": "Authorize",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} wants to access {{ teamName }}",
"By <em>{{ developerName }}</em>": "By <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} will be able to access your account and perform the following actions",
"read": "read",
"write": "write",
"read and write": "read and write",
"API keys": "API keys",
"attachments": "attachments",
"collections": "collections",
"comments": "comments",
"documents": "documents",
"events": "events",
"groups": "groups",
"integrations": "integrations",
"notifications": "notifications",
"reactions": "reactions",
"pins": "pins",
"shares": "shares",
"users": "users",
"teams": "teams",
"workspace": "workspace",
"Read all data": "Read all data",
"Write all data": "Write all data",
"Any collection": "Any collection",
"All time": "All time",
"Past day": "Past day",
@@ -837,15 +883,37 @@
"Something went wrong": "Something went wrong",
"Please try again or contact support if the problem persists": "Please try again or contact support if the problem persists",
"No documents found for your search filters.": "No documents found for your search filters.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"API keys have been disabled by an admin for your account": "API keys have been disabled by an admin for your account",
"Application access": "Application access",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Manage which third-party and internal applications have been granted access to your {{ appName }} account.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"Application published": "Application published",
"Application updated": "Application updated",
"Client secret rotated": "Client secret rotated",
"Rotate secret": "Rotate secret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.",
"Displayed to users when authorizing": "Displayed to users when authorizing",
"Developer information shown to users when authorizing": "Developer information shown to users when authorizing",
"Developer name": "Developer name",
"Developer URL": "Developer URL",
"Allow users from other workspaces to authorize this app": "Allow users from other workspaces to authorize this app",
"Credentials": "Credentials",
"OAuth client ID": "OAuth client ID",
"The public identifier for this app": "The public identifier for this app",
"OAuth client secret": "OAuth client secret",
"Store this value securely, do not expose it publicly": "Store this value securely, do not expose it publicly",
"Where users are redirected after authorizing this app": "Where users are redirected after authorizing this app",
"Authorization URL": "Authorization URL",
"Where users are redirected to authorize this app": "Where users are redirected to authorize this app",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.",
"by {{ name }}": "by {{ name }}",
"Last used": "Last used",
"No expiry": "No expiry",
"Restricted scope": "Restricted scope",
"API key copied to clipboard": "API key copied to clipboard",
"Copied": "Copied",
"Revoking": "Revoking",
"Are you sure you want to revoke the {{ tokenName }} token?": "Are you sure you want to revoke the {{ tokenName }} token?",
"Disconnect integration": "Disconnect integration",
"Connected": "Connected",
@@ -892,7 +960,7 @@
"No people matching your search": "No people matching your search",
"No people left to add": "No people left to add",
"Date created": "Date created",
"Upload": "Upload",
"Crop Image": "Crop Image",
"Crop image": "Crop image",
"Uploading": "Uploading",
"How does this work?": "How does this work?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "{{ count }} documents imported",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload",
"Configure": "Configure",
"Connect": "Connect",
"Last active": "Last active",
"Guest": "Guest",
"Never used": "Never used",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Are you sure you want to delete the {{ appName }} application? This cannot be undone.",
"Shared by": "Shared by",
"Date shared": "Date shared",
"Last accessed": "Last accessed",
@@ -965,6 +1037,7 @@
"Enterprise": "Enterprise",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.",
"Recent imports": "Recent imports",
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
"Could not load members": "Could not load members",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.",
"Receive a notification whenever a new document is published": "Receive a notification whenever a new document is published",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "Unsubscription successful. Your notification settings were updated",
"Manage when and where you receive email notifications.": "Manage when and where you receive email notifications.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.",
"Personal keys": "Personal keys",
"Preferences saved": "Preferences saved",
"Delete account": "Delete account",
"Manage settings that affect your personal experience.": "Manage settings that affect your personal experience.",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "You can create templates to help your team create consistent and accurate documentation.",
"Alphabetical": "Alphabetical",
"There are no templates just yet.": "There are no templates just yet.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.",
"Confirmation code": "Confirmation code",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.",
@@ -1077,7 +1147,6 @@
"Expires today": "Expires today",
"Expires tomorrow": "Expires tomorrow",
"Expires {{ date }}": "Expires {{ date }}",
"Connect": "Connect",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?",
"Something went wrong while authenticating your request. Please try logging in again.": "Something went wrong while authenticating your request. Please try logging in again.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.",
"Measurement ID": "Measurement ID",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.",
"Instance URL": "Instance URL",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.",
"Inactive": "Inactive",
"Create a webhook": "Create a webhook",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.",
"Never logged in": "Never logged in",
"Online now": "Online now",
"Online {{ timeAgo }}": "Online {{ timeAgo }}",
+84 -10
View File
@@ -120,6 +120,8 @@
"Log out": "Logga ut",
"Mark notifications as read": "Markera alla aviseringar som lästa",
"Archive all notifications": "Arkivera alla aviseringar",
"New App": "New App",
"New Application": "New Application",
"Restore revision": "Återställ version",
"Link copied": "Länk kopierad",
"Dark": "Mörk",
@@ -170,8 +172,6 @@
"Deleting": "Raderar",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "Är du säker på det? Att ta bort <em>{{collectionName}}</em> samlingen är permanent och kan inte återställas, men alla publicerade dokument inom kommer att flyttas till papperskorgen.",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "Dessutom används <em>{{collectionName}}</em> som startvyn tar bort den kommer att återställa startvyn till startsidan.",
"Sorry, an error occurred saving the collection": "Tyvärr, ett fel uppstod när samlingen skulle sparas",
"Add a description": "Lägg till en beskrivning",
"Type a command or search": "Skriv ett kommando eller sök",
"Choose a template": "Välj en mall",
"Are you sure you want to permanently delete this entire comment thread?": "Är du säker på att du vill ta bort denna konversationen permanent?",
@@ -308,6 +308,13 @@
"Unknown": "Okänd",
"Mark all as read": "Markera alla som lästa",
"You're all caught up": "Inga olästa meddelanden",
"Icon": "Icon",
"My App": "My App",
"Tagline": "Tagline",
"A short description": "A short description",
"Callback URLs": "Callback URLs",
"Published": "Publiserad",
"Allow this app to be installed by other workspaces": "Allow this app to be installed by other workspaces",
"{{ username }} reacted with {{ emoji }}": "{{ username }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} and {{ count }} other reacted with {{ emoji }}",
@@ -395,7 +402,6 @@
"Star document": "Stjärnmärk dokument",
"Template created, go ahead and customize it": "Mall skapad, gå vidare och anpassa den",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "Att skapa en mall från <em>{{titleWithDefault}}</em> är en icke-förstörande åtgärd vi gör en kopia av dokumentet och förvandlar det till en mall som kan användas som utgångspunkt för nya dokument.",
"Published": "Publiserad",
"Enable other members to use the template immediately": "Tillåt andra medlemmar att använda mallen omedelbart",
"Location": "Plats",
"Admins can manage the workspace and access billing.": "Administratörer kan hantera arbetsytan och få tillgång till betalning.",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "Prenumeration avslutad från dokument",
"Unsubscribed from collection": "Unsubscribed from collection",
"Account": "Konto",
"API Keys": "API Keys",
"API & Apps": "API & Apps",
"Details": "Detaljer",
"Security": "Säkerhet",
"Features": "Funktioner",
"Members": "Medlemmar",
"Groups": "Grupper",
"API Keys": "API Keys",
"Applications": "Applications",
"Shared Links": "Delade länkar",
"Import": "Importera",
"Install": "Install",
"Integrations": "Integrationer",
"Revoke token": "Återkalla token",
"Revoke": "Återkalla",
@@ -538,6 +547,7 @@
"Document options": "Dokumentalternativ",
"Choose a collection": "Välj en samling",
"Subscription inherited from collection": "Subscription inherited from collection",
"Apply template": "Apply template",
"Enable embeds": "Aktivera inbäddningar",
"Export options": "Exportalternativ",
"Group members": "Gruppmedlemmar",
@@ -551,6 +561,10 @@
"New child document": "Nytt underordnat dokument",
"Save in workspace": "Spara i arbetsytan",
"Notification settings": "Aviseringsinställningar",
"Revoke {{ appName }}": "Revoke {{ appName }}",
"Revoking": "Återkallar",
"Are you sure you want to revoke access?": "Are you sure you want to revoke access?",
"Delete app": "Delete app",
"Revision options": "Alternativ för revidering",
"Share link revoked": "Delningslänk återkallad",
"Share link copied": "Delningslänken är kopierad",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} grupp med behörighet",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} grupper med behörighet",
"Archived by {{userName}}": "Arkiverad av {{userName}}",
"Sorry, an error occurred saving the collection": "Tyvärr, ett fel uppstod när samlingen skulle sparas",
"Add a description": "Lägg till en beskrivning",
"Share": "Dela",
"Overview": "Overview",
"Recently updated": "Nyligen uppdaterad",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "Authentication failed this login method was disabled by a workspace admin.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "Den arbetsyta du försöker ansluta till kräver en inbjudan innan du kan skapa ett konto. <1></1>Vänligen begär en inbjudan från din arbetsyta-administratör och försök igen.",
"Sorry, an unknown error occurred.": "Sorry, an unknown error occurred.",
"Choose a workspace": "Choose a workspace",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choose an {{ appName }} workspace or login to continue connecting this app",
"Login": "Logga in",
"Error": "Fel",
"Failed to load configuration.": "Det gick inte att ladda konfigurationen.",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "Du loggade in med {{ authProviderName }} förra gången.",
"Or": "Eller",
"Already have an account? Go to <1>login</1>.": "Har du redan ett konto? Gå till <1>login</1>.",
"An error occurred": "An error occurred",
"The OAuth client could not be found, please check the provided client ID": "The OAuth client could not be found, please check the provided client ID",
"The OAuth client could not be loaded, please check the redirect URI is valid": "The OAuth client could not be loaded, please check the redirect URI is valid",
"Required OAuth parameters are missing": "Required OAuth parameters are missing",
"Authorize": "Authorize",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} wants to access {{ teamName }}",
"By <em>{{ developerName }}</em>": "By <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} will be able to access your account and perform the following actions",
"read": "read",
"write": "write",
"read and write": "read and write",
"API keys": "API keys",
"attachments": "attachments",
"collections": "collections",
"comments": "comments",
"documents": "documents",
"events": "events",
"groups": "groups",
"integrations": "integrations",
"notifications": "notifications",
"reactions": "reactions",
"pins": "pins",
"shares": "shares",
"users": "users",
"teams": "teams",
"workspace": "workspace",
"Read all data": "Read all data",
"Write all data": "Write all data",
"Any collection": "Valfri samling",
"All time": "All time",
"Past day": "Föregående dag",
@@ -837,15 +883,37 @@
"Something went wrong": "Något gick fel",
"Please try again or contact support if the problem persists": "Vänligen försök igen eller kontakta supporten om problemet kvarstår",
"No documents found for your search filters.": "Inga dokument funna för dina sökfilter.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"API keys have been disabled by an admin for your account": "API keys have been disabled by an admin for your account",
"Application access": "Application access",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Manage which third-party and internal applications have been granted access to your {{ appName }} account.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"Application published": "Application published",
"Application updated": "Application updated",
"Client secret rotated": "Client secret rotated",
"Rotate secret": "Rotate secret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.",
"Displayed to users when authorizing": "Displayed to users when authorizing",
"Developer information shown to users when authorizing": "Developer information shown to users when authorizing",
"Developer name": "Developer name",
"Developer URL": "Developer URL",
"Allow users from other workspaces to authorize this app": "Allow users from other workspaces to authorize this app",
"Credentials": "Credentials",
"OAuth client ID": "OAuth client ID",
"The public identifier for this app": "The public identifier for this app",
"OAuth client secret": "OAuth client secret",
"Store this value securely, do not expose it publicly": "Store this value securely, do not expose it publicly",
"Where users are redirected after authorizing this app": "Where users are redirected after authorizing this app",
"Authorization URL": "Authorization URL",
"Where users are redirected to authorize this app": "Where users are redirected to authorize this app",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.",
"by {{ name }}": "by {{ name }}",
"Last used": "Senast använd",
"No expiry": "Ingen utgång",
"Restricted scope": "Restricted scope",
"API key copied to clipboard": "API-nyckel kopierad till urklipp",
"Copied": "Kopierad",
"Revoking": "Återkallar",
"Are you sure you want to revoke the {{ tokenName }} token?": "Är du säker på att du vill återkalla {{ tokenName }} -token?",
"Disconnect integration": "Koppla från integration",
"Connected": "Ansluten",
@@ -892,7 +960,7 @@
"No people matching your search": "Inga personer matchar din sökning",
"No people left to add": "Inga personer kvar att lägga till",
"Date created": "Date created",
"Upload": "Ladda upp",
"Crop Image": "Crop Image",
"Crop image": "Crop image",
"Uploading": "Laddar upp",
"How does this work?": "Hur fungerar detta?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "{{ count }} documents imported",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "Du kan importera en zip-fil som tidigare exporterades från en Outline installation samlingar, dokument och bilder kommer att importeras. Öppna <em>Exportera</em> i sidomenyn Inställningar och klicka på <em>Exportera data</em>.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Dra och släpp zip-filen från markdown-exportalternativet i {{appName}}, eller klicka för att ladda upp",
"Configure": "Configure",
"Connect": "Anslut",
"Last active": "Senast aktiv",
"Guest": "Gäst",
"Never used": "Never used",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Are you sure you want to delete the {{ appName }} application? This cannot be undone.",
"Shared by": "Delad av",
"Date shared": "Datum delat",
"Last accessed": "Senast besökt",
@@ -965,6 +1037,7 @@
"Enterprise": "Enterprise",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Överför snabbt dina befintliga dokument, sidor och filer från andra verktyg och tjänster till {{appName}}. Du kan också dra och släppa alla HTML, Markdown och textdokument direkt till Samlingar i appen.",
"Recent imports": "Senaste importer",
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
"Could not load members": "Could not load members",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Alla som har loggat in på {{appName}} är listade här. Det är möjligt att det finns andra användare som har åtkomst genom {{signinMethods}} men som inte har loggat in ännu.",
"Receive a notification whenever a new document is published": "Få en avisering när ett nytt dokument publiceras",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "Avprenumerationen lyckades. Dina aviseringsinställningar uppdaterades",
"Manage when and where you receive email notifications.": "Hantera när och var du får e-postmeddelanden.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "E-postintegrationen är för närvarande inaktiverad. Ställ in de associerade miljövariablerna och starta om servern för att aktivera aviseringar.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Skapa personliga API-nycklar för att autentisera dig med API:et och styra din arbetsytas data på ett systematiskt sätt. API-nycklar har samma behörigheter som ditt användarkonto. För mer information se <em>utvecklardokumentationen</em>.",
"Personal keys": "Personliga nycklar",
"Preferences saved": "Inställningar sparade",
"Delete account": "Radera konto",
"Manage settings that affect your personal experience.": "Hantera inställningar som påverkar din personliga upplevelse.",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "Du kan skapa mallar för att hjälpa ditt team att skapa en konsekvent och korrekt dokumentation.",
"Alphabetical": "Alfabetiskt",
"There are no templates just yet.": "Det finns inga mallar ännu.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier är en plattform som gör det möjligt för {{appName}} att enkelt integrera med tusentals andra affärsverktyg. Automatisera dina arbetsflöden, synkronisera data och mycket mer.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "En bekräftelsekod har skickats till din e-postadress, ange koden nedan för att permanent förstöra denna arbetsyta.",
"Confirmation code": "Bekräftelsekod",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Om du tar bort arbetsytan <1>{{workspaceName}}</1> kommer alla samlingar, dokument, användare och tillhörande data att förstöras. Du kommer omedelbart att loggas ut från {{appName}}.",
@@ -1077,7 +1147,6 @@
"Expires today": "Går ut idag",
"Expires tomorrow": "Går ut imorgon",
"Expires {{ date }}": "Utgår {{ date }}",
"Connect": "Anslut",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Hoppsan, du måste acceptera behörigheterna i GitHub för att ansluta {{appName}} till din arbetsyta. Försök igen?",
"Something went wrong while authenticating your request. Please try logging in again.": "Något gick fel vid autentisering av din begäran. Var god försök logga in igen.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "Ägaren av GitHub-kontot har tillfrågats om att installera {{githubAppName}} GitHub-app. När den har godkänts visas förhandsvisningar för respektive länk.",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Lägg till ett Google Analytics 4-mätnings-ID för att skicka dokumentvyer och analyser från arbetsytan till ditt eget Google Analytics-konto.",
"Measurement ID": "Mätnings ID",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Skapa en \"Web\"-ström i din Google Analytics-administratörspanelen och kopiera mätnings-ID från den genererade kodsnippet för att installera.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Konfigurera en Matomo-installation för att skicka visningar och statistik från arbetsytan till din egen Matomo-instans.",
"Instance URL": "Instansens URL",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "Webbadressen till din Matomo instans. Om du använder Matomo Cloud slutar den i matomo.cloud/",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Webhooks kan användas för att meddela din ansökan när händelser inträffar i {{appName}}. Händelser skickas som en https begäran med en JSON nyttolast i nära realtid.",
"Inactive": "Inaktiv",
"Create a webhook": "Skapa webhook",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier är en plattform som gör det möjligt för {{appName}} att enkelt integrera med tusentals andra affärsverktyg. Automatisera dina arbetsflöden, synkronisera data och mycket mer.",
"Never logged in": "Aldrig inloggad",
"Online now": "Online nu",
"Online {{ timeAgo }}": "Online {{ timeAgo }}",
+84 -10
View File
@@ -120,6 +120,8 @@
"Log out": "ออกจากระบบ",
"Mark notifications as read": "Mark notifications as read",
"Archive all notifications": "Archive all notifications",
"New App": "New App",
"New Application": "New Application",
"Restore revision": "Restore revision",
"Link copied": "คัดลอกลิงก์แล้ว",
"Dark": "มืด",
@@ -170,8 +172,6 @@
"Deleting": "กำลังลบ",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "นอกจากนี้ <em>{{collectionName}}</em> ยังถูกใช้เป็นมุมมองเริ่มต้น – การลบจะเป็นการรีเซ็ตมุมมองเริ่มต้นไปที่โฮมเพจ",
"Sorry, an error occurred saving the collection": "ขออภัย เกิดข้อผิดพลาดขณะบันทึกคอลเลคชั่น",
"Add a description": "เพิ่มคำอธิบาย",
"Type a command or search": "พิมพ์คำสั่งหรือค้นหา",
"Choose a template": "Choose a template",
"Are you sure you want to permanently delete this entire comment thread?": "Are you sure you want to permanently delete this entire comment thread?",
@@ -308,6 +308,13 @@
"Unknown": "Unknown",
"Mark all as read": "Mark all as read",
"You're all caught up": "You're all caught up",
"Icon": "Icon",
"My App": "My App",
"Tagline": "Tagline",
"A short description": "A short description",
"Callback URLs": "Callback URLs",
"Published": "Published",
"Allow this app to be installed by other workspaces": "Allow this app to be installed by other workspaces",
"{{ username }} reacted with {{ emoji }}": "{{ username }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} and {{ count }} other reacted with {{ emoji }}",
@@ -395,7 +402,6 @@
"Star document": "Star document",
"Template created, go ahead and customize it": "สร้างเทมเพลตแล้ว ปรับแต่งได้เลย",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "การสร้างเทมเพลตจาก <em>{{titleWithDefault}}</em> เป็นการกระทำที่ไม่ทำลายเอกสารเก่า - เราจะทำสำเนาและเปลี่ยนเป็นเทมเพลตที่สามารถใช้ในการสร้างเอกสารใหม่ได้",
"Published": "Published",
"Enable other members to use the template immediately": "Enable other members to use the template immediately",
"Location": "Location",
"Admins can manage the workspace and access billing.": "Admins can manage the workspace and access billing.",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "Unsubscribed from document",
"Unsubscribed from collection": "Unsubscribed from collection",
"Account": "บัญชีผู้ใช้",
"API Keys": "API Keys",
"API & Apps": "API & Apps",
"Details": "ราย​ละเอียด",
"Security": "ความปลอดภัย",
"Features": "คุณสมบัติ",
"Members": "สมาชิก",
"Groups": "กลุ่ม",
"API Keys": "API Keys",
"Applications": "Applications",
"Shared Links": "Shared Links",
"Import": "นำเข้า",
"Install": "Install",
"Integrations": "Integration",
"Revoke token": "Revoke token",
"Revoke": "Revoke",
@@ -538,6 +547,7 @@
"Document options": "ตัวเลือกเอกสาร",
"Choose a collection": "เลือกคอลเลกชั่น",
"Subscription inherited from collection": "Subscription inherited from collection",
"Apply template": "Apply template",
"Enable embeds": "Enable embeds",
"Export options": "ตัวเลือกการส่งออก",
"Group members": "Group members",
@@ -551,6 +561,10 @@
"New child document": "New child document",
"Save in workspace": "Save in workspace",
"Notification settings": "Notification settings",
"Revoke {{ appName }}": "Revoke {{ appName }}",
"Revoking": "Revoking",
"Are you sure you want to revoke access?": "Are you sure you want to revoke access?",
"Delete app": "Delete app",
"Revision options": "Revision options",
"Share link revoked": "Share link revoked",
"Share link copied": "Share link copied",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} group with access",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} groups with access",
"Archived by {{userName}}": "Archived by {{userName}}",
"Sorry, an error occurred saving the collection": "ขออภัย เกิดข้อผิดพลาดขณะบันทึกคอลเลคชั่น",
"Add a description": "เพิ่มคำอธิบาย",
"Share": "Share",
"Overview": "Overview",
"Recently updated": "Recently updated",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "Authentication failed this login method was disabled by a workspace admin.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.",
"Sorry, an unknown error occurred.": "Sorry, an unknown error occurred.",
"Choose a workspace": "Choose a workspace",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choose an {{ appName }} workspace or login to continue connecting this app",
"Login": "Login",
"Error": "Error",
"Failed to load configuration.": "Failed to load configuration.",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "You signed in with {{ authProviderName }} last time.",
"Or": "Or",
"Already have an account? Go to <1>login</1>.": "Already have an account? Go to <1>login</1>.",
"An error occurred": "An error occurred",
"The OAuth client could not be found, please check the provided client ID": "The OAuth client could not be found, please check the provided client ID",
"The OAuth client could not be loaded, please check the redirect URI is valid": "The OAuth client could not be loaded, please check the redirect URI is valid",
"Required OAuth parameters are missing": "Required OAuth parameters are missing",
"Authorize": "Authorize",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} wants to access {{ teamName }}",
"By <em>{{ developerName }}</em>": "By <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} will be able to access your account and perform the following actions",
"read": "read",
"write": "write",
"read and write": "read and write",
"API keys": "API keys",
"attachments": "attachments",
"collections": "collections",
"comments": "comments",
"documents": "documents",
"events": "events",
"groups": "groups",
"integrations": "integrations",
"notifications": "notifications",
"reactions": "reactions",
"pins": "pins",
"shares": "shares",
"users": "users",
"teams": "teams",
"workspace": "workspace",
"Read all data": "Read all data",
"Write all data": "Write all data",
"Any collection": "Any collection",
"All time": "All time",
"Past day": "Past day",
@@ -837,15 +883,37 @@
"Something went wrong": "Something went wrong",
"Please try again or contact support if the problem persists": "Please try again or contact support if the problem persists",
"No documents found for your search filters.": "No documents found for your search filters.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"API keys have been disabled by an admin for your account": "API keys have been disabled by an admin for your account",
"Application access": "Application access",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Manage which third-party and internal applications have been granted access to your {{ appName }} account.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"Application published": "Application published",
"Application updated": "Application updated",
"Client secret rotated": "Client secret rotated",
"Rotate secret": "Rotate secret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.",
"Displayed to users when authorizing": "Displayed to users when authorizing",
"Developer information shown to users when authorizing": "Developer information shown to users when authorizing",
"Developer name": "Developer name",
"Developer URL": "Developer URL",
"Allow users from other workspaces to authorize this app": "Allow users from other workspaces to authorize this app",
"Credentials": "Credentials",
"OAuth client ID": "OAuth client ID",
"The public identifier for this app": "The public identifier for this app",
"OAuth client secret": "OAuth client secret",
"Store this value securely, do not expose it publicly": "Store this value securely, do not expose it publicly",
"Where users are redirected after authorizing this app": "Where users are redirected after authorizing this app",
"Authorization URL": "Authorization URL",
"Where users are redirected to authorize this app": "Where users are redirected to authorize this app",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.",
"by {{ name }}": "by {{ name }}",
"Last used": "Last used",
"No expiry": "No expiry",
"Restricted scope": "Restricted scope",
"API key copied to clipboard": "API key copied to clipboard",
"Copied": "Copied",
"Revoking": "Revoking",
"Are you sure you want to revoke the {{ tokenName }} token?": "Are you sure you want to revoke the {{ tokenName }} token?",
"Disconnect integration": "Disconnect integration",
"Connected": "Connected",
@@ -892,7 +960,7 @@
"No people matching your search": "ไม่มีคนที่ตรงกับการค้นหาของคุณ",
"No people left to add": "ไม่มีคนเหลือให้เพิ่ม",
"Date created": "Date created",
"Upload": "Upload",
"Crop Image": "Crop Image",
"Crop image": "Crop image",
"Uploading": "Uploading",
"How does this work?": "How does this work?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "{{ count }} documents imported",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload",
"Configure": "Configure",
"Connect": "Connect",
"Last active": "Last active",
"Guest": "Guest",
"Never used": "Never used",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Are you sure you want to delete the {{ appName }} application? This cannot be undone.",
"Shared by": "Shared by",
"Date shared": "Date shared",
"Last accessed": "Last accessed",
@@ -965,6 +1037,7 @@
"Enterprise": "Enterprise",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.",
"Recent imports": "Recent imports",
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
"Could not load members": "Could not load members",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.",
"Receive a notification whenever a new document is published": "Receive a notification whenever a new document is published",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "Unsubscription successful. Your notification settings were updated",
"Manage when and where you receive email notifications.": "Manage when and where you receive email notifications.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.",
"Personal keys": "Personal keys",
"Preferences saved": "Preferences saved",
"Delete account": "Delete account",
"Manage settings that affect your personal experience.": "Manage settings that affect your personal experience.",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "You can create templates to help your team create consistent and accurate documentation.",
"Alphabetical": "Alphabetical",
"There are no templates just yet.": "There are no templates just yet.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.",
"Confirmation code": "Confirmation code",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.",
@@ -1077,7 +1147,6 @@
"Expires today": "Expires today",
"Expires tomorrow": "Expires tomorrow",
"Expires {{ date }}": "Expires {{ date }}",
"Connect": "Connect",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?",
"Something went wrong while authenticating your request. Please try logging in again.": "Something went wrong while authenticating your request. Please try logging in again.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.",
"Measurement ID": "Measurement ID",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.",
"Instance URL": "Instance URL",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.",
"Inactive": "Inactive",
"Create a webhook": "Create a webhook",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.",
"Never logged in": "Never logged in",
"Online now": "Online now",
"Online {{ timeAgo }}": "Online {{ timeAgo }}",
+84 -10
View File
@@ -120,6 +120,8 @@
"Log out": "Oturumu kapat",
"Mark notifications as read": "Bildirimleri okundu olarak işaretle",
"Archive all notifications": "Tüm bildirimleri arşivle",
"New App": "New App",
"New Application": "New Application",
"Restore revision": "Bu sürüme döndür",
"Link copied": "Bağlantı kopyalandı",
"Dark": "Koyu",
@@ -170,8 +172,6 @@
"Deleting": "Siliniyor",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "Bundan emin misiniz? <em>{{collectionName}}</em> koleksiyonunu silmek kalıcıdır ve geri alınamaz, ancak içindeki tüm yayımlanan belgeler çöp kutusuna taşınacaktır.",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "Ayrıca, başlangıç görünümü olarak <em>{{collectionName}}</em> kullanılıyor - silinmesi, başlangıç görünümünü Ana sayfaya sıfırlayacaktır.",
"Sorry, an error occurred saving the collection": "Üzgünüz, koleksiyon kaydedilirken bir hata oluştu",
"Add a description": "Açıklama ekle",
"Type a command or search": "Bir komut yazın veya arayın",
"Choose a template": "Bir şablon seç",
"Are you sure you want to permanently delete this entire comment thread?": "Bu yorum dizisinin tamamını kalıcı olarak silmek istediğinizden emin misiniz?",
@@ -308,6 +308,13 @@
"Unknown": "Bilinmeyen",
"Mark all as read": "Tümünü okundu olarak işaretle",
"You're all caught up": "You're all caught up",
"Icon": "Icon",
"My App": "My App",
"Tagline": "Tagline",
"A short description": "A short description",
"Callback URLs": "Callback URLs",
"Published": "Published",
"Allow this app to be installed by other workspaces": "Allow this app to be installed by other workspaces",
"{{ username }} reacted with {{ emoji }}": "{{ username }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} and {{ count }} other reacted with {{ emoji }}",
@@ -395,7 +402,6 @@
"Star document": "Star document",
"Template created, go ahead and customize it": "Şablon oluşturuldu, devam edin ve özelleştirin",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "<em>{{titleWithDefault}}</em> belgesinden şablon oluşturmak bozucu olmayan bir işlemdir belgenin bir kopyasını oluşturacağız ve onu yeni belgeler için başlangıç noktası olarak kullanılabilecek bir şablona dönüştüreceğiz.",
"Published": "Published",
"Enable other members to use the template immediately": "Enable other members to use the template immediately",
"Location": "Location",
"Admins can manage the workspace and access billing.": "Admins can manage the workspace and access billing.",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "Unsubscribed from document",
"Unsubscribed from collection": "Unsubscribed from collection",
"Account": "Hesap",
"API Keys": "API Keys",
"API & Apps": "API & Apps",
"Details": "Ayrıntılar",
"Security": "Güvenlik",
"Features": "Özellikler",
"Members": "Üyeler",
"Groups": "Gruplar",
"API Keys": "API Keys",
"Applications": "Applications",
"Shared Links": "Paylaşılan Bağlantılar",
"Import": "İçe aktar",
"Install": "Install",
"Integrations": "Entegrasyonlar",
"Revoke token": "Tokenleri iptal et",
"Revoke": "Geri al",
@@ -538,6 +547,7 @@
"Document options": "Belge ayarları",
"Choose a collection": "Bir koleksiyon seç",
"Subscription inherited from collection": "Subscription inherited from collection",
"Apply template": "Apply template",
"Enable embeds": "Yerleştirmeleri etkinleştir",
"Export options": "Dışa aktarma seçenekleri",
"Group members": "Grup üyeleri",
@@ -551,6 +561,10 @@
"New child document": "Yeni alt belge",
"Save in workspace": "Save in workspace",
"Notification settings": "Notification settings",
"Revoke {{ appName }}": "Revoke {{ appName }}",
"Revoking": "Revoking",
"Are you sure you want to revoke access?": "Are you sure you want to revoke access?",
"Delete app": "Delete app",
"Revision options": "Revizyon seçenekleri",
"Share link revoked": "Paylaşım bağlantısı iptal edildi",
"Share link copied": "Paylaşım bağlantısı kopyalandı",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "erişimi olan {{ groupsCount }} grup",
"{{ groupsCount }} groups with access_plural": "erişimi olan {{ groupsCount }} grup",
"Archived by {{userName}}": "{{userName}} tarafından arşivlendi",
"Sorry, an error occurred saving the collection": "Üzgünüz, koleksiyon kaydedilirken bir hata oluştu",
"Add a description": "Açıklama ekle",
"Share": "Paylaş",
"Overview": "Overview",
"Recently updated": "Yakında güncellendi",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "Authentication failed this login method was disabled by a workspace admin.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.",
"Sorry, an unknown error occurred.": "Sorry, an unknown error occurred.",
"Choose a workspace": "Choose a workspace",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choose an {{ appName }} workspace or login to continue connecting this app",
"Login": "Oturum aç",
"Error": "Error",
"Failed to load configuration.": "Konfigürasyon yüklenemedi.",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "En son {{ authProviderName }} ile giriş yaptınız.",
"Or": "Or",
"Already have an account? Go to <1>login</1>.": "Zaten hesabınız var mı? <1>Oturum açın</1>.",
"An error occurred": "An error occurred",
"The OAuth client could not be found, please check the provided client ID": "The OAuth client could not be found, please check the provided client ID",
"The OAuth client could not be loaded, please check the redirect URI is valid": "The OAuth client could not be loaded, please check the redirect URI is valid",
"Required OAuth parameters are missing": "Required OAuth parameters are missing",
"Authorize": "Authorize",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} wants to access {{ teamName }}",
"By <em>{{ developerName }}</em>": "By <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} will be able to access your account and perform the following actions",
"read": "read",
"write": "write",
"read and write": "read and write",
"API keys": "API keys",
"attachments": "attachments",
"collections": "collections",
"comments": "comments",
"documents": "documents",
"events": "events",
"groups": "groups",
"integrations": "integrations",
"notifications": "notifications",
"reactions": "reactions",
"pins": "pins",
"shares": "shares",
"users": "users",
"teams": "teams",
"workspace": "workspace",
"Read all data": "Read all data",
"Write all data": "Write all data",
"Any collection": "Herhangi bir koleksiyon",
"All time": "All time",
"Past day": "Geçen gün",
@@ -837,15 +883,37 @@
"Something went wrong": "Something went wrong",
"Please try again or contact support if the problem persists": "Please try again or contact support if the problem persists",
"No documents found for your search filters.": "Arama filtreleriniz için belge bulunamadı.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"API keys have been disabled by an admin for your account": "API keys have been disabled by an admin for your account",
"Application access": "Application access",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Manage which third-party and internal applications have been granted access to your {{ appName }} account.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"Application published": "Application published",
"Application updated": "Application updated",
"Client secret rotated": "Client secret rotated",
"Rotate secret": "Rotate secret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.",
"Displayed to users when authorizing": "Displayed to users when authorizing",
"Developer information shown to users when authorizing": "Developer information shown to users when authorizing",
"Developer name": "Developer name",
"Developer URL": "Developer URL",
"Allow users from other workspaces to authorize this app": "Allow users from other workspaces to authorize this app",
"Credentials": "Credentials",
"OAuth client ID": "OAuth client ID",
"The public identifier for this app": "The public identifier for this app",
"OAuth client secret": "OAuth client secret",
"Store this value securely, do not expose it publicly": "Store this value securely, do not expose it publicly",
"Where users are redirected after authorizing this app": "Where users are redirected after authorizing this app",
"Authorization URL": "Authorization URL",
"Where users are redirected to authorize this app": "Where users are redirected to authorize this app",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.",
"by {{ name }}": "by {{ name }}",
"Last used": "Last used",
"No expiry": "No expiry",
"Restricted scope": "Restricted scope",
"API key copied to clipboard": "API key copied to clipboard",
"Copied": "Copied",
"Revoking": "Revoking",
"Are you sure you want to revoke the {{ tokenName }} token?": "Are you sure you want to revoke the {{ tokenName }} token?",
"Disconnect integration": "Disconnect integration",
"Connected": "Connected",
@@ -892,7 +960,7 @@
"No people matching your search": "Aramanızla eşleşen kişi yok",
"No people left to add": "Eklenecek kişi kalmadı",
"Date created": "Date created",
"Upload": "Yükle",
"Crop Image": "Crop Image",
"Crop image": "Crop image",
"Uploading": "Yükleniyor",
"How does this work?": "Bu nasıl çalışıyor?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "{{ count }} documents imported",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "Daha önce Outline kurulumundan dışa aktarılan bir zip dosyasını içe aktarabilirsiniz; koleksiyonlar, belgeler ve görüntüler içe aktarılacaktır. Outline'da, Ayarlar kenar çubuğunda <em>Dışa Aktar</em>'ı açın ve <em>Verileri Dışa Aktar</em>'a tıklayın.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload",
"Configure": "Configure",
"Connect": "Bağla",
"Last active": "Son aktiflik",
"Guest": "Guest",
"Never used": "Never used",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Are you sure you want to delete the {{ appName }} application? This cannot be undone.",
"Shared by": "Shared by",
"Date shared": "Paylaşılan tarih",
"Last accessed": "Son erişim",
@@ -965,6 +1037,7 @@
"Enterprise": "Enterprise",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.",
"Recent imports": "Son içe aktarmalar",
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
"Could not load members": "Could not load members",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.",
"Receive a notification whenever a new document is published": "Yeni bir belge yayınlandığında bildirim alın",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "Abonelikten çıkma başarılı. Bildirim ayarlarınız güncellendi",
"Manage when and where you receive email notifications.": "E-posta bildirimlerini ne zaman ve nerede alacağınızı yönetin.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "E-posta entegrasyonu şu anda devre dışı. Lütfen ilişkili ortam değişkenlerini ayarlayın ve bildirimleri etkinleştirmek için sunucuyu yeniden başlatın.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.",
"Personal keys": "Personal keys",
"Preferences saved": "Preferences saved",
"Delete account": "Hesabı sil",
"Manage settings that affect your personal experience.": "Manage settings that affect your personal experience.",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "Ekibinizin tutarlı ve doğru belgeler oluşturmasına yardımcı olacak şablonlar oluşturabilirsiniz.",
"Alphabetical": "Alfabetik",
"There are no templates just yet.": "Henüz şablon yok.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.",
"Confirmation code": "Confirmation code",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.",
@@ -1077,7 +1147,6 @@
"Expires today": "Expires today",
"Expires tomorrow": "Expires tomorrow",
"Expires {{ date }}": "Expires {{ date }}",
"Connect": "Bağla",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?",
"Something went wrong while authenticating your request. Please try logging in again.": "Something went wrong while authenticating your request. Please try logging in again.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.",
"Measurement ID": "Measurement ID",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.",
"Instance URL": "Instance URL",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.",
"Inactive": "Inactive",
"Create a webhook": "Create a webhook",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.",
"Never logged in": "Never logged in",
"Online now": "Online now",
"Online {{ timeAgo }}": "Online {{ timeAgo }}",
+84 -10
View File
@@ -120,6 +120,8 @@
"Log out": "Вийти",
"Mark notifications as read": "Позначити сповіщення як прочитані",
"Archive all notifications": "Архівувати всі сповіщення",
"New App": "New App",
"New Application": "New Application",
"Restore revision": "Відновити версію",
"Link copied": "Посилання скопійовано",
"Dark": "Темна",
@@ -170,8 +172,6 @@
"Deleting": "Видаляємо",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "Ви впевнені в цьому? Видалення колекції <em>{{collectionName}}</em> є остаточним і не підлягає відновленню, однак усі опубліковані документи буде переміщено до кошика.",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "Крім того, <em>{{collectionName}}</em> використовується як стартова сторінка – її видалення скине стартову сторінку до домашньої сторінки.",
"Sorry, an error occurred saving the collection": "На жаль, під час збереження колекції сталася помилка",
"Add a description": "Додати опис",
"Type a command or search": "Введіть команду або текст для пошуку",
"Choose a template": "Виберіть шаблон",
"Are you sure you want to permanently delete this entire comment thread?": "Ви впевнені, що бажаєте остаточно видалити весь цей ланцюжок коментарів?",
@@ -308,6 +308,13 @@
"Unknown": "Невідомо",
"Mark all as read": "Позначити все як прочитане",
"You're all caught up": "У вас все налаштовано",
"Icon": "Icon",
"My App": "My App",
"Tagline": "Tagline",
"A short description": "A short description",
"Callback URLs": "Callback URLs",
"Published": "Опубліковано",
"Allow this app to be installed by other workspaces": "Allow this app to be installed by other workspaces",
"{{ username }} reacted with {{ emoji }}": "{{ username }} відреагував з {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} та {{ secondUsername }} відреагували з {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} та {{ count }} інші відреагували з {{ emoji }}",
@@ -395,7 +402,6 @@
"Star document": "Додати до обраного",
"Template created, go ahead and customize it": "Шаблон створено, тепер налаштуйте його під ваші потреби",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "Створення шаблону з <em>{{titleWithDefault}}</em> не є руйнівною дією – ми зробимо копію документа та перетворимо її на шаблон, який можна використовувати як основу для нових документів.",
"Published": "Опубліковано",
"Enable other members to use the template immediately": "Дозволити іншим учасникам відразу використовувати шаблон",
"Location": "Місцезнаходження",
"Admins can manage the workspace and access billing.": "Адміністратори можуть керувати робочою областю та оплатою доступу.",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "Unsubscribed from document",
"Unsubscribed from collection": "Unsubscribed from collection",
"Account": "Обліковий запис",
"API Keys": "API Keys",
"API & Apps": "API & Apps",
"Details": "Деталі",
"Security": "Безпека",
"Features": "Фічі",
"Members": "Учасники",
"Groups": "Групи",
"API Keys": "API Keys",
"Applications": "Applications",
"Shared Links": "Поширені посилання",
"Import": "Імпортувати",
"Install": "Install",
"Integrations": "Інтеграції",
"Revoke token": "Відкликати токен",
"Revoke": "Відкликати",
@@ -538,6 +547,7 @@
"Document options": "Налаштування документа",
"Choose a collection": "Оберіть колекцію",
"Subscription inherited from collection": "Subscription inherited from collection",
"Apply template": "Apply template",
"Enable embeds": "Увімкнути вкладення",
"Export options": "Параметри експорту",
"Group members": "Учасники групи",
@@ -551,6 +561,10 @@
"New child document": "Новий вкладений документ",
"Save in workspace": "Save in workspace",
"Notification settings": "Налаштування сповіщень",
"Revoke {{ appName }}": "Revoke {{ appName }}",
"Revoking": "Анулювання",
"Are you sure you want to revoke access?": "Are you sure you want to revoke access?",
"Delete app": "Delete app",
"Revision options": "Варіанти перегляду",
"Share link revoked": "Посилання для спільного доступу скасовано",
"Share link copied": "Посилання скопійоване",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} група з доступом",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} груп з доступом",
"Archived by {{userName}}": "Архівовано {{userName}}",
"Sorry, an error occurred saving the collection": "На жаль, під час збереження колекції сталася помилка",
"Add a description": "Додати опис",
"Share": "Поширити",
"Overview": "Overview",
"Recently updated": "Нещодавно оновлені",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "Authentication failed this login method was disabled by a workspace admin.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "Робоче середовище, до якого ви намагаєтеся приєднатися, потребує запрошення перед тим, як створити обліковий запис. <1></1>, будь ласка, запитайте запрошення від адміністратора робочого середовища та спробуйте ще раз.",
"Sorry, an unknown error occurred.": "Sorry, an unknown error occurred.",
"Choose a workspace": "Choose a workspace",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choose an {{ appName }} workspace or login to continue connecting this app",
"Login": "Логін",
"Error": "Помилка",
"Failed to load configuration.": "Не вдалося завантажити налаштування.",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "Останнього разу ви ввійшли з {{ authProviderName }}.",
"Or": "Або",
"Already have an account? Go to <1>login</1>.": "Вже маєте обліковий запис? <1>Увійдіть</1>.",
"An error occurred": "An error occurred",
"The OAuth client could not be found, please check the provided client ID": "The OAuth client could not be found, please check the provided client ID",
"The OAuth client could not be loaded, please check the redirect URI is valid": "The OAuth client could not be loaded, please check the redirect URI is valid",
"Required OAuth parameters are missing": "Required OAuth parameters are missing",
"Authorize": "Authorize",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} wants to access {{ teamName }}",
"By <em>{{ developerName }}</em>": "By <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} will be able to access your account and perform the following actions",
"read": "read",
"write": "write",
"read and write": "read and write",
"API keys": "API keys",
"attachments": "attachments",
"collections": "collections",
"comments": "comments",
"documents": "documents",
"events": "events",
"groups": "groups",
"integrations": "integrations",
"notifications": "notifications",
"reactions": "reactions",
"pins": "pins",
"shares": "shares",
"users": "users",
"teams": "teams",
"workspace": "workspace",
"Read all data": "Read all data",
"Write all data": "Write all data",
"Any collection": "Будь-яка колекція",
"All time": "All time",
"Past day": "Учора",
@@ -837,15 +883,37 @@
"Something went wrong": "Something went wrong",
"Please try again or contact support if the problem persists": "Please try again or contact support if the problem persists",
"No documents found for your search filters.": "Не знайдено жодного документу за вашими фільтрами.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"API keys have been disabled by an admin for your account": "API keys have been disabled by an admin for your account",
"Application access": "Application access",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Manage which third-party and internal applications have been granted access to your {{ appName }} account.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"Application published": "Application published",
"Application updated": "Application updated",
"Client secret rotated": "Client secret rotated",
"Rotate secret": "Rotate secret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.",
"Displayed to users when authorizing": "Displayed to users when authorizing",
"Developer information shown to users when authorizing": "Developer information shown to users when authorizing",
"Developer name": "Developer name",
"Developer URL": "Developer URL",
"Allow users from other workspaces to authorize this app": "Allow users from other workspaces to authorize this app",
"Credentials": "Credentials",
"OAuth client ID": "OAuth client ID",
"The public identifier for this app": "The public identifier for this app",
"OAuth client secret": "OAuth client secret",
"Store this value securely, do not expose it publicly": "Store this value securely, do not expose it publicly",
"Where users are redirected after authorizing this app": "Where users are redirected after authorizing this app",
"Authorization URL": "Authorization URL",
"Where users are redirected to authorize this app": "Where users are redirected to authorize this app",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.",
"by {{ name }}": "by {{ name }}",
"Last used": "Last used",
"No expiry": "No expiry",
"Restricted scope": "Restricted scope",
"API key copied to clipboard": "API key copied to clipboard",
"Copied": "Скопійовано",
"Revoking": "Анулювання",
"Are you sure you want to revoke the {{ tokenName }} token?": "Ви впевнені, що хочете відкликати {{ tokenName }} токен?",
"Disconnect integration": "Disconnect integration",
"Connected": "Підключено",
@@ -892,7 +960,7 @@
"No people matching your search": "Немає користувачів за вашим пошуковим запитом",
"No people left to add": "Немає користувачів, щоб додати",
"Date created": "Date created",
"Upload": "Завантажити",
"Crop Image": "Crop Image",
"Crop image": "Crop image",
"Uploading": "Завантажується",
"How does this work?": "Як це працює?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "{{ count }} documents imported",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "Ви можете імпортувати zip-файл, який раніше було експортовано з інсталяції Outline – колекції, документи та зображення будуть імпортовані. У Outline відкрийте <em>Експорт</em> на бічній панелі налаштувань і натисніть <em>Експортувати Дані</em>.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Перетягніть zip-файл з опції експорту Markdown в {{appName}} або натисніть щоб завантажити",
"Configure": "Configure",
"Connect": "Під’єднатися",
"Last active": "Остання активність",
"Guest": "Гість",
"Never used": "Never used",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Are you sure you want to delete the {{ appName }} application? This cannot be undone.",
"Shared by": "Поділився",
"Date shared": "Дата публікації",
"Last accessed": "Останній доступ",
@@ -965,6 +1037,7 @@
"Enterprise": "Enterprise",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Швидко перенесіть наявні документи, сторінки та файли з інших інструментів і служб у {{appName}}. Ви також можете перетягувати будь-які документи HTML, Markdown і текстові документи безпосередньо в колекції програми.",
"Recent imports": "Останні імпорти",
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
"Could not load members": "Could not load members",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.",
"Receive a notification whenever a new document is published": "Отримувати сповіщення щоразу, коли публікується новий документ",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "Відписка пройшла успішно. Ваші налаштування сповіщень було оновлено",
"Manage when and where you receive email notifications.": "Керувати коли і де ви отримуєте повідомлення на електронну пошту.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "Інтеграцію електронної пошти наразі вимкнено. Встановіть відповідні змінні середовища та перезапустіть сервер, щоб увімкнути сповіщення.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.",
"Personal keys": "Personal keys",
"Preferences saved": "Налаштування збережено",
"Delete account": "Видалити обліковий запис",
"Manage settings that affect your personal experience.": "Керувати налаштуваннями, які впливають на ваш особистий досвід.",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "Ви можете створювати шаблони, щоб допомогти вашій команді створювати послідовну та точну документацію.",
"Alphabetical": "За алфавітом",
"There are no templates just yet.": "Шаблонів поки що немає.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier — це платформа, яка дозволяє {{appName}} легко інтегруватися з тисячами інших бізнес-інструментів. Автоматизуйте свої робочі процеси, синхронізуйте дані тощо.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "Код підтвердження надіслано на вашу електронну пошту. Введіть код в поле нижче, щоб назавжди видалити цей робочий простір.",
"Confirmation code": "Код підтвердження",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.",
@@ -1077,7 +1147,6 @@
"Expires today": "Expires today",
"Expires tomorrow": "Expires tomorrow",
"Expires {{ date }}": "Expires {{ date }}",
"Connect": "Під’єднатися",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?",
"Something went wrong while authenticating your request. Please try logging in again.": "Something went wrong while authenticating your request. Please try logging in again.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Додайте ідентифікатор вимірювання Google Analytics 4, щоб надсилати статистику переглядів документів і аналітику з робочого простору в свій обліковий запис Google Analytics.",
"Measurement ID": "Ідентифікатор вимірювання",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Створіть Веб стрім на інформаційній панелі адміністратора Google Analytics і скопіюйте ідентифікатор вимірювання зі згенерованого фрагмента коду для встановлення.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.",
"Instance URL": "Instance URL",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Вебхуки можна використовувати для сповіщення вашої програми, коли події відбуваються в {{appName}}. Події надсилаються як https-запит з кодом JSON майже в реальному часі.",
"Inactive": "Неактивний",
"Create a webhook": "Створити вебхук",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier — це платформа, яка дозволяє {{appName}} легко інтегруватися з тисячами інших бізнес-інструментів. Автоматизуйте свої робочі процеси, синхронізуйте дані тощо.",
"Never logged in": "Не було входу в систему",
"Online now": "Зараз онлайн",
"Online {{ timeAgo }}": "Онлайн {{ timeAgo }}",
+84 -10
View File
@@ -120,6 +120,8 @@
"Log out": "Đăng xuất",
"Mark notifications as read": "Đánh dấu thông báo là đã đọc",
"Archive all notifications": "Lưu trữ tất cả thông báo",
"New App": "New App",
"New Application": "New Application",
"Restore revision": "Khôi phục phiên bản",
"Link copied": "Đã sao chép Link",
"Dark": "Dark",
@@ -170,8 +172,6 @@
"Deleting": "Đang xóa",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "Việc xóa bộ sưu tập <em>{{collectionName}}</em> là vĩnh viễn và không thể khôi phục. Mặc dù, tất cả các tài liệu đã xuất bản trong đó sẽ được chuyển vào thùng rác. Bạn có chắc muốn xoá?",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "Ngoài ra, <em>{{collectionName}}</em> đang được sử dụng làm chế độ xem bắt đầu - việc xóa nó sẽ đặt lại chế độ xem bắt đầu về Trang chủ.",
"Sorry, an error occurred saving the collection": "Xin lỗi, đã xảy ra lỗi khi lưu bộ sưu tập",
"Add a description": "Thêm mô tả",
"Type a command or search": "Nhập lệnh hoặc tìm kiếm",
"Choose a template": "Chọn một kiểu mẫu",
"Are you sure you want to permanently delete this entire comment thread?": "Bạn có chắc chắn muốn xóa bình luận này vĩnh viễn?",
@@ -308,6 +308,13 @@
"Unknown": "Không xác định",
"Mark all as read": "Đánh dấu tất cả là đã đọc",
"You're all caught up": "Bạn đã xem hết",
"Icon": "Icon",
"My App": "My App",
"Tagline": "Tagline",
"A short description": "A short description",
"Callback URLs": "Callback URLs",
"Published": "Đã đăng tải",
"Allow this app to be installed by other workspaces": "Allow this app to be installed by other workspaces",
"{{ username }} reacted with {{ emoji }}": "{{ username }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} and {{ count }} other reacted with {{ emoji }}",
@@ -395,7 +402,6 @@
"Star document": "Star document",
"Template created, go ahead and customize it": "Đã tạo mẫu, hãy tiếp tục và tùy chỉnh nó",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "Đang tạo mẫu từ <em>{{titleWithDefault}}</em> là một hành động không phá hủy - chúng tôi sẽ tạo một bản sao của tài liệu và biến nó thành một mẫu có thể được sử dụng làm điểm bắt đầu cho các tài liệu mới.",
"Published": "Đã đăng tải",
"Enable other members to use the template immediately": "Enable other members to use the template immediately",
"Location": "Location",
"Admins can manage the workspace and access billing.": "Admins can manage the workspace and access billing.",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "Unsubscribed from document",
"Unsubscribed from collection": "Unsubscribed from collection",
"Account": "Tài khoản",
"API Keys": "API Keys",
"API & Apps": "API & Apps",
"Details": "Chi tiết",
"Security": "Bảo mật",
"Features": "Các tính năng",
"Members": "Thành Viên",
"Groups": "Nhóm",
"API Keys": "API Keys",
"Applications": "Applications",
"Shared Links": "Chia sẻ link",
"Import": "Nhập",
"Install": "Install",
"Integrations": "Tích hợp",
"Revoke token": "Thu hồi token",
"Revoke": "Thu hồi",
@@ -538,6 +547,7 @@
"Document options": "Tùy chọn tài liệu",
"Choose a collection": "Chọn Bộ Sưu Tập",
"Subscription inherited from collection": "Subscription inherited from collection",
"Apply template": "Apply template",
"Enable embeds": "Bật tính năng nhúng",
"Export options": "Tuỳ chọn xuất",
"Group members": "Thành viên trong nhóm",
@@ -551,6 +561,10 @@
"New child document": "Tài liệu con mới",
"Save in workspace": "Save in workspace",
"Notification settings": "Notification settings",
"Revoke {{ appName }}": "Revoke {{ appName }}",
"Revoking": "Đang thu hồi",
"Are you sure you want to revoke access?": "Are you sure you want to revoke access?",
"Delete app": "Delete app",
"Revision options": "Tùy chọn sửa đổi",
"Share link revoked": "Đã thu hồi Link chia sẻ",
"Share link copied": "Đã sao chép Link chia sẻ",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} nhóm có quyền truy cập",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} nhóm có quyền truy cập",
"Archived by {{userName}}": "Được lưu trữ bởi {{userName}}",
"Sorry, an error occurred saving the collection": "Xin lỗi, đã xảy ra lỗi khi lưu bộ sưu tập",
"Add a description": "Thêm mô tả",
"Share": "Chia sẻ",
"Overview": "Overview",
"Recently updated": "Được cập nhật gần đây",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "Authentication failed this login method was disabled by a workspace admin.",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.",
"Sorry, an unknown error occurred.": "Sorry, an unknown error occurred.",
"Choose a workspace": "Choose a workspace",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choose an {{ appName }} workspace or login to continue connecting this app",
"Login": "Đăng nhập",
"Error": "Lỗi",
"Failed to load configuration.": "Không tải được cấu hình.",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "Bạn đã đăng nhập bằng {{ authProviderName }} lần trước.",
"Or": "Hoặc",
"Already have an account? Go to <1>login</1>.": "Bạn đã có tài khoản? <1>Đăng nhập</1>.",
"An error occurred": "An error occurred",
"The OAuth client could not be found, please check the provided client ID": "The OAuth client could not be found, please check the provided client ID",
"The OAuth client could not be loaded, please check the redirect URI is valid": "The OAuth client could not be loaded, please check the redirect URI is valid",
"Required OAuth parameters are missing": "Required OAuth parameters are missing",
"Authorize": "Authorize",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} wants to access {{ teamName }}",
"By <em>{{ developerName }}</em>": "By <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} will be able to access your account and perform the following actions",
"read": "read",
"write": "write",
"read and write": "read and write",
"API keys": "API keys",
"attachments": "attachments",
"collections": "collections",
"comments": "comments",
"documents": "documents",
"events": "events",
"groups": "groups",
"integrations": "integrations",
"notifications": "notifications",
"reactions": "reactions",
"pins": "pins",
"shares": "shares",
"users": "users",
"teams": "teams",
"workspace": "workspace",
"Read all data": "Read all data",
"Write all data": "Write all data",
"Any collection": "Tất cả bộ sưu tập",
"All time": "All time",
"Past day": "Ngày hôm qua",
@@ -837,15 +883,37 @@
"Something went wrong": "Something went wrong",
"Please try again or contact support if the problem persists": "Please try again or contact support if the problem persists",
"No documents found for your search filters.": "Không tìm thấy tài liệu nào cho bộ lọc tìm kiếm của bạn.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"API keys have been disabled by an admin for your account": "API keys have been disabled by an admin for your account",
"Application access": "Application access",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Manage which third-party and internal applications have been granted access to your {{ appName }} account.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"Application published": "Application published",
"Application updated": "Application updated",
"Client secret rotated": "Client secret rotated",
"Rotate secret": "Rotate secret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.",
"Displayed to users when authorizing": "Displayed to users when authorizing",
"Developer information shown to users when authorizing": "Developer information shown to users when authorizing",
"Developer name": "Developer name",
"Developer URL": "Developer URL",
"Allow users from other workspaces to authorize this app": "Allow users from other workspaces to authorize this app",
"Credentials": "Credentials",
"OAuth client ID": "OAuth client ID",
"The public identifier for this app": "The public identifier for this app",
"OAuth client secret": "OAuth client secret",
"Store this value securely, do not expose it publicly": "Store this value securely, do not expose it publicly",
"Where users are redirected after authorizing this app": "Where users are redirected after authorizing this app",
"Authorization URL": "Authorization URL",
"Where users are redirected to authorize this app": "Where users are redirected to authorize this app",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.",
"by {{ name }}": "by {{ name }}",
"Last used": "Last used",
"No expiry": "No expiry",
"Restricted scope": "Restricted scope",
"API key copied to clipboard": "API key copied to clipboard",
"Copied": "\u001dĐã sao chép",
"Revoking": "Đang thu hồi",
"Are you sure you want to revoke the {{ tokenName }} token?": "Bạn có chắc chắn muốn thu hồi Token {{ tokenName }} không?",
"Disconnect integration": "Disconnect integration",
"Connected": "Đã kết nối",
@@ -892,7 +960,7 @@
"No people matching your search": "Không có người nào phù hợp với tìm kiếm của bạn",
"No people left to add": "Không còn người để thêm",
"Date created": "Date created",
"Upload": "Tải lên",
"Crop Image": "Crop Image",
"Crop image": "Crop image",
"Uploading": "Đang tải lên",
"How does this work?": "Nó hoạt động như thế nào?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "{{ count }} documents imported",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "Bạn có thể nhập tệp zip đã được xuất trước đó từ cài đặt Outline - các bộ sưu tập, tài liệu và hình ảnh sẽ được nhập. Trong Outline, mở <em>Xuất</em> trong thanh bên Cài đặt và nhấp vào <em>Xuất dữ liệu</em>.",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "Kéo và thả tệp zip từ tùy chọn xuất Markdown trong {{appName}} hoặc nhấp để tải lên",
"Configure": "Configure",
"Connect": "Kết nối",
"Last active": "Hoạt động lần cuối",
"Guest": "Guest",
"Never used": "Never used",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Are you sure you want to delete the {{ appName }} application? This cannot be undone.",
"Shared by": "Shared by",
"Date shared": "Ngày chia sẻ",
"Last accessed": "Truy nhập lần cuối",
@@ -965,6 +1037,7 @@
"Enterprise": "Doanh nghiệp",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Chuyển nhanh các tài liệu, trang và tệp hiện có của bạn từ các công cụ và dịch vụ khác sang {{appName}}. Bạn cũng có thể kéo và thả bất kỳ tài liệu HTML, Markdown và văn bản nào trực tiếp vào Bộ sưu tập trong ứng dụng.",
"Recent imports": "Kết xuất gần đây",
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
"Could not load members": "Could not load members",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.",
"Receive a notification whenever a new document is published": "Nhận thông báo bất cứ khi nào một tài liệu mới được xuất bản",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "Hủy đăng ký thành công. Cài đặt thông báo của bạn đã được cập nhật",
"Manage when and where you receive email notifications.": "Quản lý thời gian và địa điểm bạn nhận được thông báo qua email.",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "Tích hợp email hiện đã bị vô hiệu hóa. Vui lòng đặt các biến môi trường được liên kết và khởi động lại máy chủ để bật thông báo.",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.",
"Personal keys": "Personal keys",
"Preferences saved": "Lưu tùy chọn",
"Delete account": "Xoá tài khoản",
"Manage settings that affect your personal experience.": "Quản lý cài đặt ảnh hưởng đến trải nghiệm cá nhân của bạn.",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "Bạn có thể tạo các mẫu để giúp nhóm của mình tạo tài liệu nhất quán và chính xác.",
"Alphabetical": "Bảng chữ cái",
"There are no templates just yet.": "Không có mẫu nào được nêu ra.",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier là một nền tảng cho phép {{appName}} dễ dàng tích hợp với hàng nghìn công cụ kinh doanh khác. Tự động hóa quy trình công việc của bạn, đồng bộ hóa dữ liệu, v. v.",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.",
"Confirmation code": "Confirmation code",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.",
@@ -1077,7 +1147,6 @@
"Expires today": "Expires today",
"Expires tomorrow": "Expires tomorrow",
"Expires {{ date }}": "Expires {{ date }}",
"Connect": "Kết nối",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?",
"Something went wrong while authenticating your request. Please try logging in again.": "Something went wrong while authenticating your request. Please try logging in again.",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "Thêm ID đo lường Google Analytics 4 để gửi lượt xem tài liệu và số liệu phân tích từ không gian làm việc đến tài khoản Google Analytics của riêng bạn.",
"Measurement ID": "ID đo lường",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "Tạo luồng \"Web\" trong bảng điều khiển quản trị Google Analytics của bạn và sao chép ID đo lường từ đoạn mã đã tạo để cài đặt.",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.",
"Instance URL": "Instance URL",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Webhook có thể được sử dụng để thông báo cho ứng dụng của bạn khi các sự kiện xảy ra trong {{appName}}. Các sự kiện được gửi dưới dạng yêu cầu https với tải trọng JSON gần thời gian thực.",
"Inactive": "Không hoạt động",
"Create a webhook": "Tạo Webhook",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier là một nền tảng cho phép {{appName}} dễ dàng tích hợp với hàng nghìn công cụ kinh doanh khác. Tự động hóa quy trình công việc của bạn, đồng bộ hóa dữ liệu, v. v.",
"Never logged in": "Never logged in",
"Online now": "Online now",
"Online {{ timeAgo }}": "Online {{ timeAgo }}",
+84 -10
View File
@@ -120,6 +120,8 @@
"Log out": "退出登录",
"Mark notifications as read": "将通知标记为已读",
"Archive all notifications": "将所有通知存档",
"New App": "新建应用",
"New Application": "新应用",
"Restore revision": "还原修改",
"Link copied": "链接已复制",
"Dark": "深色模式",
@@ -170,8 +172,6 @@
"Deleting": "正在删除",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "你确定吗? 删除 <em>{{collectionName}}</em> 文档集是永久性的且无法恢复,但其中所有已发布的文档将被移至回收站。",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "另外,<em>{{collectionName}}</em> 被用作起始视图 - 删除它将重置起始视图为主页。",
"Sorry, an error occurred saving the collection": "抱歉,保存文档集时出错",
"Add a description": "添加描述",
"Type a command or search": "输入命令或搜索",
"Choose a template": "选择模板",
"Are you sure you want to permanently delete this entire comment thread?": "你确定要永久删除此评论吗?",
@@ -308,6 +308,13 @@
"Unknown": "未知",
"Mark all as read": "全部标记为已读",
"You're all caught up": "你已了解所有情况",
"Icon": "图标",
"My App": "我的应用",
"Tagline": "标识语",
"A short description": "一个简短的描述",
"Callback URLs": "回调 URL",
"Published": "已发布",
"Allow this app to be installed by other workspaces": "允许其他工作区安装此应用",
"{{ username }} reacted with {{ emoji }}": "{{ username }} 回应 {{ emoji }}",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }} 和 {{ secondUsername }} 已回应 {{ emoji }}",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }} 和 {{ count }} 其他人已回应 {{ emoji }}",
@@ -395,7 +402,6 @@
"Star document": "收藏文档",
"Template created, go ahead and customize it": "模板已创建,继续进行自定义",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "从 <em>{{titleWithDefault}}</em> 创建模板是一个非破坏性的操作 - 我们将制作一个文档副本,并将其变成一个可以用作新文档起点的模板。",
"Published": "已发布",
"Enable other members to use the template immediately": "允许其他成员立即使用该模板",
"Location": "地点",
"Admins can manage the workspace and access billing.": "管理员可以管理工作区和访问账单。",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "取消订阅文档",
"Unsubscribed from collection": "取消订阅集合",
"Account": "账号",
"API Keys": "API 密钥",
"API & Apps": "API 与应用程序",
"Details": "详情",
"Security": "安全性",
"Features": "功能",
"Members": "成员",
"Groups": "群组",
"API Keys": "API 密钥",
"Applications": "应用",
"Shared Links": "分享的链接",
"Import": "导入",
"Install": "安装",
"Integrations": "集成",
"Revoke token": "吊销 token",
"Revoke": "吊销",
@@ -538,6 +547,7 @@
"Document options": "文档选项",
"Choose a collection": "选择一个文档集",
"Subscription inherited from collection": "从收藏继承下来的订阅",
"Apply template": "Apply template",
"Enable embeds": "启用嵌入",
"Export options": "导出选项",
"Group members": "群组成员",
@@ -551,6 +561,10 @@
"New child document": "新建子文档",
"Save in workspace": "保存到工作区",
"Notification settings": "通知设置",
"Revoke {{ appName }}": "撤回 {{ appName }}",
"Revoking": "吊销中",
"Are you sure you want to revoke access?": "你确定要吊销权限吗?",
"Delete app": "删除应用",
"Revision options": "修订选项",
"Share link revoked": "此分享链接已被撤销",
"Share link copied": "分享链接已复制",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} 个组有访问权限",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} 个组有访问权限",
"Archived by {{userName}}": "已被 {{userName}} 存档",
"Sorry, an error occurred saving the collection": "抱歉,保存文档集时出错",
"Add a description": "添加描述",
"Share": "分享",
"Overview": "概览",
"Recently updated": "最近更新",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "身份验证失败 - 此登录方法被工作区管理员禁用。",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "你正在尝试加入的工作区需要邀请才能创建账户。<1></1>请向你的工作区管理员申请邀请并重试。",
"Sorry, an unknown error occurred.": "抱歉,发生未知错误。",
"Choose a workspace": "选择一个工作区",
"Choose an {{ appName }} workspace or login to continue connecting this app": "选择 {{ appName }} 工作区或登录以继续连接该应用",
"Login": "登录",
"Error": "加载失败",
"Failed to load configuration.": "配置文件加载失败。",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "你上次登录的方式为 {{ authProviderName }}。",
"Or": "或",
"Already have an account? Go to <1>login</1>.": "已经有帐户了?前往<1>登录</1>。",
"An error occurred": "发生错误",
"The OAuth client could not be found, please check the provided client ID": "找不到 OAuth 客户端,请检查提供的客户端 ID",
"The OAuth client could not be loaded, please check the redirect URI is valid": "无法加载 OAuth 客户端,请检查回调 URI 是否有效",
"Required OAuth parameters are missing": "缺少所需的 OAuth 链接参数",
"Authorize": "授权",
"{{ appName }} wants to access {{ teamName }}": "应用 {{ appName }} 想要访问 {{ teamName }}",
"By <em>{{ developerName }}</em>": "创建人 <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} 将会获得访问你账户的权限,并将可以执行以下操作",
"read": "读",
"write": "写",
"read and write": "读写",
"API keys": "API 密钥",
"attachments": "附件",
"collections": "文档集",
"comments": "评论",
"documents": "文档",
"events": "事件",
"groups": "群组",
"integrations": "集成",
"notifications": "通知",
"reactions": "回应",
"pins": "固定",
"shares": "共享",
"users": "用户",
"teams": "团队",
"workspace": "工作区",
"Read all data": "读所有数据",
"Write all data": "写所有数据",
"Any collection": "文档集",
"All time": "所有时间",
"Past day": "过去一天",
@@ -837,15 +883,37 @@
"Something went wrong": "出现了一些错误",
"Please try again or contact support if the problem persists": "如果问题持续存在,请重试或联系支持人员。",
"No documents found for your search filters.": "没有为你的搜索筛选找到文档。",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "创建个人 API 密钥以便通过 API 进行身份验证,并以编程方式管控您工作区的数据。详见 <em>开发者文档</em>。",
"API keys have been disabled by an admin for your account": "你账户的 API 密钥已被管理员禁用",
"Application access": "应用权限",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "管理第三方及内部应用对您 {{ appName }} 账户的访问权限。",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API 密钥可以用于验证 API 并通过编程的方式控制\n 您的工作区数据。 了解更多详情,请参阅 <em>开发者文档</em>",
"Application published": "应用已发布",
"Application updated": "应用已更新",
"Client secret rotated": "轮换客户端密钥",
"Rotate secret": "轮换密钥",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "轮换客户端密钥将会使之前的密钥不再有效。请确保更新使用这些密钥的应用程序。",
"Displayed to users when authorizing": "在授权时显示给用户",
"Developer information shown to users when authorizing": "在授权时显示给用户的开发者信息",
"Developer name": "开发者名称",
"Developer URL": "开发者 URL",
"Allow users from other workspaces to authorize this app": "允许其他工作区的用户授权此应用",
"Credentials": "凭据",
"OAuth client ID": "OAuth 客户端 ID",
"The public identifier for this app": "此应用的公共标识符",
"OAuth client secret": "OAuth 客户端密钥",
"Store this value securely, do not expose it publicly": "将在这个值储存在非公开的安全位置",
"Where users are redirected after authorizing this app": "用户授权此应用时被重定向到的地址",
"Authorization URL": "授权 URL",
"Where users are redirected to authorize this app": "用户登录此应用时被重定向到的地址",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "通过应用,您可以为 Outline 构建内部或公开的集成方案,并通过 OAuth 协议实现安全访问。详见<em>开发者文档</em>。",
"by {{ name }}": "由 {{ name }}创建",
"Last used": "最后使用的",
"No expiry": "没有到期",
"Restricted scope": "受限作用域",
"API key copied to clipboard": "API key 已复制到剪贴板",
"Copied": "已复制",
"Revoking": "吊销中",
"Are you sure you want to revoke the {{ tokenName }} token?": "确认吊销这个 {{ tokenName }} token 吗?",
"Disconnect integration": "断开集成",
"Connected": "已连接",
@@ -892,7 +960,7 @@
"No people matching your search": "没有符合搜索条件的用户",
"No people left to add": "没有人可以添加",
"Date created": "创建日期",
"Upload": "上传",
"Crop Image": "裁剪图像",
"Crop image": "裁剪图像",
"Uploading": "上传中",
"How does this work?": "这是如何工作的?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "{{ count }} 个文档已导入",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "你可以导入以前从 Outline 安装中导出的 zip 文件 – 文档集、文档和图片将会被导入。在 Outline 的侧边栏设置中打开 <em>导出</em> 并单击 <em>导出数据</em>。",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "拖放或单击上传从 {{appName}} 的 Markdown 导出选项导出的 zip 文件",
"Configure": "配置",
"Connect": "连接",
"Last active": "最近活跃",
"Guest": "访客",
"Never used": "从未被使用过",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "你确定要删除应用 {{ appName }} 吗?此操作不可被撤回。",
"Shared by": "共享自",
"Date shared": "分享日期",
"Last accessed": "上次访问",
@@ -965,6 +1037,7 @@
"Enterprise": "企业服务",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "快速将你现有的文件、页面和文件从其他工具和服务转移到 {{appName}}。你还可以将任何 HTML、Markdown 和文本文件直接拖放到应用程序中的文档集中。",
"Recent imports": "最近导入",
"Configure a variety of integrations with third-party services.": "配置各种与第三方服务的集成。",
"Could not load members": "无法加载成员",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "每个登录到 {{appName}} 的用户都会出现在这里。可能还有其他用户可以通过 {{signinMethods}} 访问,但还尚未登录。",
"Receive a notification whenever a new document is published": "每当发布新文档时收到通知",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "取消订阅成功。你的通知设置已更新",
"Manage when and where you receive email notifications.": "管理你接收电子邮件通知的时间和地点。",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "电子邮件集成当前已禁用。请设置相关的环境变量并重新启动服务器以启用通知。",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "创建个人的 API key 以通过 API 进行身份验证并在程序上控制\n 你的工作区数据。 API key 与你的用户帐户具有相同的权限。\n 关于更多详细信息,请参阅 <em>开发者文档</em>。",
"Personal keys": "个人密钥",
"Preferences saved": "首选项已保存",
"Delete account": "删除账户",
"Manage settings that affect your personal experience.": "管理影响你个人体验的设置。",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "创建模板来帮助你的团队创建风格一致和准确的文档。",
"Alphabetical": "按字母顺序排列",
"There are no templates just yet.": "尚无可用模板。",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier 是一个平台,可以让 {{appName}} 轻松地与数以千计的其他业务工具集成。自动化你的工作流程、同步数据等。",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "验证码已经发送至你的电子邮箱,请在下面输入代码以永久销毁此工作区。",
"Confirmation code": "验证码",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "删除 <1>{{workspaceName}}</1> 工作区将销毁所有文档集、文档、用户和关联数据。 您将立即登出 {{appName}}。",
@@ -1077,7 +1147,6 @@
"Expires today": "今天过期",
"Expires tomorrow": "明天过期",
"Expires {{ date }}": "{{date}} 到期",
"Connect": "连接",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "糟糕,你需要在 Slack 中接受权限才能将 {{appName}} 连接到你的团队。再试一次?",
"Something went wrong while authenticating your request. Please try logging in again.": "验证你的请求时出现问题。请尝试重新登录。",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "GitHub帐户的所有者已被要求安装 {{githubAppName}} GitHub应用程序。一旦批准,预览将显示各自的链接。",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "添加 Google Analytics 4 Measurement ID 后会将文档访问量和分析从工作区发送到你自己的 Google Analytics 帐户。",
"Measurement ID": "Measurement ID",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "在你的 Google Analytics 管理仪表板中创建一个 “Web” 流,从生成的代码片段中可以找到 Measurement ID。",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "糟糕,你需要在 Linear 中接受权限才能将 {{appName}} 连接到你的工作区。再试一次?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "将一个 Linear 工作区连接到 {appName} 从而可以在文档中预览 Linear Issues。",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "断开链接将会使此工作区中文档中的 Linear 链接不再可以被预览。你确定吗?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "Linear 集成已被禁用。请设置相关的环境变量并重新启动服务以启用此集成。",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "配置一个 Matomo 安装,将视图和分析从工作区发送到你的 Matomo 实例。",
"Instance URL": "实例 URL",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "你的 Matomo 实例 URL。如果你使用 Matomo 云,它将在 matomo.cloud/ 中结束。",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Webhooks 可以用来在 {{appName}} 中发生事件时通知你的应用程序。事件作为带有 JSON 负载的 https 请求近乎实时地发送。",
"Inactive": "未激活",
"Create a webhook": "创建一个 Webhook",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier 是一个平台,可以让 {{appName}} 轻松地与数以千计的其他业务工具集成。自动化你的工作流程、同步数据等。",
"Never logged in": "从未登录",
"Online now": "当前在线",
"Online {{ timeAgo }}": "{{ timeAgo }} 在线",
+84 -10
View File
@@ -120,6 +120,8 @@
"Log out": "登出",
"Mark notifications as read": "標記所有通知為已讀",
"Archive all notifications": "封存所有通知",
"New App": "New App",
"New Application": "New Application",
"Restore revision": "還原舊版",
"Link copied": "已複製連結",
"Dark": "深色",
@@ -170,8 +172,6 @@
"Deleting": "正在刪除",
"Are you sure about that? Deleting the <em>{{collectionName}}</em> collection is permanent and cannot be restored, however all published documents within will be moved to the trash.": "您確定這麼做嗎? 刪除 <em>{{collectionName}}</em> 文件集後將無法還原,而文件集中包含的文件會被移動到垃圾桶。",
"Also, <em>{{collectionName}}</em> is being used as the start view deleting it will reset the start view to the Home page.": "此外, <em>{{collectionName}}</em> 被用作開始視圖 - 刪除它會將開始頁面重置為主頁。",
"Sorry, an error occurred saving the collection": "抱歉,儲存到文件集時發生了錯誤。",
"Add a description": "新增描述",
"Type a command or search": "輸入或搜尋指令",
"Choose a template": "選擇範本",
"Are you sure you want to permanently delete this entire comment thread?": "您確定要永久刪除整個留言串嗎?",
@@ -308,6 +308,13 @@
"Unknown": "未知",
"Mark all as read": "全部標記為已讀",
"You're all caught up": "已看完所有評論!",
"Icon": "Icon",
"My App": "My App",
"Tagline": "Tagline",
"A short description": "A short description",
"Callback URLs": "Callback URLs",
"Published": "已發佈",
"Allow this app to be installed by other workspaces": "Allow this app to be installed by other workspaces",
"{{ username }} reacted with {{ emoji }}": "{{ username }}發佈了{{ emoji }}迴響",
"{{ firstUsername }} and {{ secondUsername }} reacted with {{ emoji }}": "{{ firstUsername }}及{{ secondUsername }}發佈了{{ emoji }}迴響",
"{{ firstUsername }} and {{ count }} others reacted with {{ emoji }}": "{{ firstUsername }}及{{ count }}人發佈了{{ emoji }}迴響",
@@ -395,7 +402,6 @@
"Star document": "標示星號",
"Template created, go ahead and customize it": "範本已經建立,繼續將其客製化",
"Creating a template from <em>{{titleWithDefault}}</em> is a non-destructive action we'll make a copy of the document and turn it into a template that can be used as a starting point for new documents.": "從 <em>{{titleWithDefault}}</em> 建立範本是不會對原本的文件造成影響-我們會將文件複製後並將其轉換為可以用來建立新文件的範本。",
"Published": "已發佈",
"Enable other members to use the template immediately": "允許其它成員立即使用此範本",
"Location": "位置",
"Admins can manage the workspace and access billing.": "管理員可以管理工作區和帳單資訊",
@@ -512,14 +518,17 @@
"Unsubscribed from document": "取消訂閱文件",
"Unsubscribed from collection": "取消訂閱文件",
"Account": "帳號",
"API Keys": "API金鑰",
"API & Apps": "API & Apps",
"Details": "詳細",
"Security": "安全性",
"Features": "功能特色",
"Members": "成員",
"Groups": "群組",
"API Keys": "API金鑰",
"Applications": "Applications",
"Shared Links": "已分享的連結",
"Import": "匯入",
"Install": "Install",
"Integrations": "整合",
"Revoke token": "撤銷權杖",
"Revoke": "撤銷",
@@ -538,6 +547,7 @@
"Document options": "文件選項",
"Choose a collection": "選擇一個文件集",
"Subscription inherited from collection": "訂閱繼承自集合",
"Apply template": "Apply template",
"Enable embeds": "啟用嵌入物件",
"Export options": "匯出選項",
"Group members": "群組成員",
@@ -551,6 +561,10 @@
"New child document": "建立新的子文件",
"Save in workspace": "儲存在工作區",
"Notification settings": "通知設定",
"Revoke {{ appName }}": "Revoke {{ appName }}",
"Revoking": "撤銷中",
"Are you sure you want to revoke access?": "Are you sure you want to revoke access?",
"Delete app": "Delete app",
"Revision options": "修訂版本選項",
"Share link revoked": "分享連結已註銷",
"Share link copied": "分享網址已複製",
@@ -604,6 +618,8 @@
"{{ groupsCount }} groups with access": "{{ groupsCount }} 個群組擁有存取權限",
"{{ groupsCount }} groups with access_plural": "{{ groupsCount }} 個群組擁有存取權限",
"Archived by {{userName}}": "已由 {{userName}} 封存",
"Sorry, an error occurred saving the collection": "抱歉,儲存到文件集時發生了錯誤。",
"Add a description": "新增描述",
"Share": "分享",
"Overview": "概覽",
"Recently updated": "最近更新",
@@ -805,6 +821,8 @@
"Authentication failed this login method was disabled by a workspace admin.": "身份驗證失敗——此登錄方法已被工作區管理員禁用。",
"The workspace you are trying to join requires an invite before you can create an account.<1></1>Please request an invite from your workspace admin and try again.": "您正嘗試加入的工作區需要先得到邀請才能建立帳戶。<1></1>請向工作區管理員獲得邀請後再試一次。",
"Sorry, an unknown error occurred.": "抱歉,發生了未知的錯誤。",
"Choose a workspace": "Choose a workspace",
"Choose an {{ appName }} workspace or login to continue connecting this app": "Choose an {{ appName }} workspace or login to continue connecting this app",
"Login": "登入",
"Error": "發生錯誤",
"Failed to load configuration.": "設定載入失敗",
@@ -822,6 +840,34 @@
"You signed in with {{ authProviderName }} last time.": "您上次使用 {{ authProviderName }} 進行登入。",
"Or": "或",
"Already have an account? Go to <1>login</1>.": "已經有帳號了嗎?馬上 <1>登入</1>。",
"An error occurred": "An error occurred",
"The OAuth client could not be found, please check the provided client ID": "The OAuth client could not be found, please check the provided client ID",
"The OAuth client could not be loaded, please check the redirect URI is valid": "The OAuth client could not be loaded, please check the redirect URI is valid",
"Required OAuth parameters are missing": "Required OAuth parameters are missing",
"Authorize": "Authorize",
"{{ appName }} wants to access {{ teamName }}": "{{ appName }} wants to access {{ teamName }}",
"By <em>{{ developerName }}</em>": "By <em>{{ developerName }}</em>",
"{{ appName }} will be able to access your account and perform the following actions": "{{ appName }} will be able to access your account and perform the following actions",
"read": "read",
"write": "write",
"read and write": "read and write",
"API keys": "API keys",
"attachments": "attachments",
"collections": "collections",
"comments": "comments",
"documents": "documents",
"events": "events",
"groups": "groups",
"integrations": "integrations",
"notifications": "notifications",
"reactions": "reactions",
"pins": "pins",
"shares": "shares",
"users": "users",
"teams": "teams",
"workspace": "workspace",
"Read all data": "Read all data",
"Write all data": "Write all data",
"Any collection": "任何文件集",
"All time": "全天",
"Past day": "過去一天",
@@ -837,15 +883,37 @@
"Something went wrong": "發生了某些錯誤",
"Please try again or contact support if the problem persists": "Please try again or contact support if the problem persists",
"No documents found for your search filters.": "沒有符合篩選條件的文件。",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.",
"API keys have been disabled by an admin for your account": "API keys have been disabled by an admin for your account",
"Application access": "Application access",
"Manage which third-party and internal applications have been granted access to your {{ appName }} account.": "Manage which third-party and internal applications have been granted access to your {{ appName }} account.",
"API": "API",
"API keys can be used to authenticate with the API and programatically control\n your workspace's data. For more details see the <em>developer documentation</em>.": "API 金鑰可用於對 API 進行身份驗證,並透過程式控制您工作區的資料。如需更多詳細資訊,請參閱<em>開發人員文件</em>。",
"Application published": "Application published",
"Application updated": "Application updated",
"Client secret rotated": "Client secret rotated",
"Rotate secret": "Rotate secret",
"Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.": "Rotating the client secret will invalidate the current secret. Make sure to update any applications using these credentials.",
"Displayed to users when authorizing": "Displayed to users when authorizing",
"Developer information shown to users when authorizing": "Developer information shown to users when authorizing",
"Developer name": "Developer name",
"Developer URL": "Developer URL",
"Allow users from other workspaces to authorize this app": "Allow users from other workspaces to authorize this app",
"Credentials": "Credentials",
"OAuth client ID": "OAuth client ID",
"The public identifier for this app": "The public identifier for this app",
"OAuth client secret": "OAuth client secret",
"Store this value securely, do not expose it publicly": "Store this value securely, do not expose it publicly",
"Where users are redirected after authorizing this app": "Where users are redirected after authorizing this app",
"Authorization URL": "Authorization URL",
"Where users are redirected to authorize this app": "Where users are redirected to authorize this app",
"Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.": "Applications allow you to build internal or public integrations with Outline and provide secure access via OAuth. For more details see the <em>developer documentation</em>.",
"by {{ name }}": "来自 {{ name }}",
"Last used": "最近使用",
"No expiry": "永久有效",
"Restricted scope": "範圍受限",
"API key copied to clipboard": "API 金鑰已複製到剪貼簿",
"Copied": "已複製",
"Revoking": "撤銷中",
"Are you sure you want to revoke the {{ tokenName }} token?": "您確定要撤銷 {{ tokenName }} 權杖嗎?",
"Disconnect integration": "中斷整合",
"Connected": "已連接",
@@ -892,7 +960,7 @@
"No people matching your search": "找不到符合搜尋條件的使用者",
"No people left to add": "所有人員都已經被新增",
"Date created": "創建日期",
"Upload": "上傳",
"Crop Image": "Crop Image",
"Crop image": "Crop image",
"Uploading": "正在上傳",
"How does this work?": "這是如何運作的?",
@@ -907,8 +975,12 @@
"{{ count }} document imported_plural": "{{ count }} documents imported",
"You can import a zip file that was previously exported from an Outline installation collections, documents, and images will be imported. In Outline, open <em>Export</em> in the Settings sidebar and click on <em>Export Data</em>.": "你可以輸入自先前其他Outline實例輸出的zip檔案 – 文件集,文件,以及照片都會被匯入。在Outline中,在側邊欄的設定中打開<em>匯出</em>並且選取<em>匯出資料</em>。",
"Drag and drop the zip file from the Markdown export option in {{appName}}, or click to upload": "請將從 {{appName}} 的 Markdown 匯出選項中匯出的 zip 檔案拖放到此處,或點擊上傳",
"Configure": "Configure",
"Connect": "連結",
"Last active": "最近一次活動",
"Guest": "訪客",
"Never used": "Never used",
"Are you sure you want to delete the {{ appName }} application? This cannot be undone.": "Are you sure you want to delete the {{ appName }} application? This cannot be undone.",
"Shared by": "分享自",
"Date shared": "分享日期",
"Last accessed": "最近存取",
@@ -965,6 +1037,7 @@
"Enterprise": "企業用戶",
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "快速將您現有的文件、頁面和檔案從其他工具和服務轉移到 {{appName}}。您還可以直接將任何 HTML、Markdown 和純文本文件拖放到應用程式中的文件集中。",
"Recent imports": "最近匯入的",
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
"Could not load members": "無法移除群組",
"Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "",
"Receive a notification whenever a new document is published": "當新文件被發布時接收通知",
@@ -993,8 +1066,6 @@
"Unsubscription successful. Your notification settings were updated": "取消訂閱成功。您的通知設定已被更新",
"Manage when and where you receive email notifications.": "管理您接收電子郵件通知的時間和地點。",
"The email integration is currently disabled. Please set the associated environment variables and restart the server to enable notifications.": "電子郵件整合目前已停用,若要啟用通知,請設定相關的環境變數並重新啟動伺服器",
"Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.": "Create personal API keys to authenticate with the API and programatically control\n your workspace's data. API keys have the same permissions as your user account.\n For more details see the <em>developer documentation</em>.",
"Personal keys": "個人金鑰",
"Preferences saved": "已保存偏好設定",
"Delete account": "刪除帳號",
"Manage settings that affect your personal experience.": "管理影響您個人體驗的設定。",
@@ -1051,7 +1122,6 @@
"You can create templates to help your team create consistent and accurate documentation.": "您可以建立文件範本來幫助團隊建立一致且準確的文件。",
"Alphabetical": "依照字母",
"There are no templates just yet.": "目前還沒有任何文件範本。",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier是一個可以讓 {{appName}} 簡單的跟上千個商業工具整合的平台。自動化你的工作流程,同步資料,以及更多。",
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "確認碼已發送至您的電子郵件,請輸入確認碼以永久地刪除這個工作區。",
"Confirmation code": "驗證碼",
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "刪除<1>{{workspaceName}}</1>工作區會刪除所有文件集,文件,使用者,以及相關資料。您會立即從{{appName}} 登出。",
@@ -1077,7 +1147,6 @@
"Expires today": "今天到期",
"Expires tomorrow": "明天到期",
"Expires {{ date }}": "{{ date }} 到期",
"Connect": "連結",
"Whoops, you need to accept the permissions in GitHub to connect {{appName}} to your workspace. Try again?": "喔歐!您必須在 GitHub 允許 {{appName}} 取得權限連結您的工作區。再試一次?",
"Something went wrong while authenticating your request. Please try logging in again.": "請求認證時發生一些錯誤,請嘗試重新登入。",
"The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.": "The owner of GitHub account has been requested to install the {{githubAppName}} GitHub app. Once approved, previews will be shown for respective links.",
@@ -1089,6 +1158,10 @@
"Add a Google Analytics 4 measurement ID to send document views and analytics from the workspace to your own Google Analytics account.": "添加你的 Google Analytics ,以將知識庫的文件檢視和分析數據發送到您自己的 Google Analytics 帳戶。",
"Measurement ID": "Measurement ID",
"Create a \"Web\" stream in your Google Analytics admin dashboard and copy the measurement ID from the generated code snippet to install.": "在 Google Analytics 管理儀表板中創建 \"Web\" 流,並從生成的程式碼片段中複製 measurement ID 進行安裝。",
"Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?": "Whoops, you need to accept the permissions in Linear to connect {{appName}} to your workspace. Try again?",
"Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.": "Enable previews of Linear issues in documents by connecting a Linear workspace to {appName}.",
"Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?": "Disconnecting will prevent previewing Linear links from this workspace in documents. Are you sure?",
"The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.": "The Linear integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration.",
"Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.": "Configure a Matomo installation to send views and analytics from the workspace to your own Matomo instance.",
"Instance URL": "執行個體 URL",
"The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/": "The URL of your Matomo instance. If you are using Matomo Cloud it will end in matomo.cloud/",
@@ -1144,6 +1217,7 @@
"Webhooks can be used to notify your application when events happen in {{appName}}. Events are sent as a https request with a JSON payload in near real-time.": "Webhooks 用在當 {{appName}} 事件發生時通知您的應用程式。事件會使用帶有 JSON payload 的 https 請求近乎即時地發送。",
"Inactive": "已停用",
"Create a webhook": "建立 Webhook",
"Zapier is a platform that allows {{appName}} to easily integrate with thousands of other business tools. Automate your workflows, sync data, and more.": "Zapier是一個可以讓 {{appName}} 簡單的跟上千個商業工具整合的平台。自動化你的工作流程,同步資料,以及更多。",
"Never logged in": "從未登入",
"Online now": "正在線上",
"Online {{ timeAgo }}": "{{ timeAgo }} 前上線",

Some files were not shown because too many files have changed in this diff Show More