Compare commits

..

1 Commits

Author SHA1 Message Date
0142a7d91e chore(deps): update pnpm to v8.14.0
All checks were successful
continuous-integration/drone/pr Build is passing
2024-01-02 23:26:49 +00:00
32 changed files with 1196 additions and 1278 deletions

View File

@ -486,7 +486,7 @@ trigger:
steps: steps:
- name: download - name: download
pull: always pull: always
image: ghcr.io/kolaente/kolaente/drone-crowdin-v2:latest image: ghcr.io/lcomrade/drone-crowdin-v2
settings: settings:
crowdin_key: crowdin_key:
from_secret: crowdin_key from_secret: crowdin_key
@ -513,14 +513,14 @@ steps:
author_name: Frederick [Bot] author_name: Frederick [Bot]
branch: main branch: main
commit: true commit: true
commit_message: "chore(i18n): update translations via Crowdin" commit_message: "[skip ci] Updated translations via Crowdin"
remote: "ssh://git@kolaente.dev:9022/vikunja/frontend.git" remote: "ssh://git@kolaente.dev:9022/vikunja/frontend.git"
ssh_key: ssh_key:
from_secret: git_push_ssh_key from_secret: git_push_ssh_key
- name: upload - name: upload
pull: always pull: always
image: ghcr.io/kolaente/kolaente/drone-crowdin-v2:latest image: ghcr.io/lcomrade/drone-crowdin-v2
depends_on: depends_on:
- clone - clone
settings: settings:
@ -532,6 +532,6 @@ steps:
src/i18n/lang/en.json: en.json src/i18n/lang/en.json: en.json
--- ---
kind: signature kind: signature
hmac: ecb706a867b39f2501cc6cf587a535fe4cd6cfd0c339833a733d61a3349c5a54 hmac: 2d39d1c93e83aae7101a3f8c2607542c1ed0a33fa723a91d12c17dcca4cefafc
... ...

2
.nvmrc
View File

@ -1 +1 @@
20.11.0 20.10.0

View File

@ -13,7 +13,7 @@
}, },
"homepage": "https://vikunja.io/", "homepage": "https://vikunja.io/",
"funding": "https://opencollective.com/vikunja", "funding": "https://opencollective.com/vikunja",
"packageManager": "pnpm@8.14.1", "packageManager": "pnpm@8.14.0",
"keywords": [ "keywords": [
"todo", "todo",
"productivity", "productivity",
@ -52,57 +52,57 @@
"@github/hotkey": "3.1.0", "@github/hotkey": "3.1.0",
"@infectoone/vue-ganttastic": "2.2.0", "@infectoone/vue-ganttastic": "2.2.0",
"@intlify/unplugin-vue-i18n": "2.0.0", "@intlify/unplugin-vue-i18n": "2.0.0",
"@kyvg/vue3-notification": "3.1.3", "@kyvg/vue3-notification": "3.1.2",
"@sentry/tracing": "7.88.0", "@sentry/tracing": "7.88.0",
"@sentry/vue": "7.88.0", "@sentry/vue": "7.88.0",
"@tiptap/core": "2.1.15", "@tiptap/core": "2.1.13",
"@tiptap/extension-blockquote": "2.1.15", "@tiptap/extension-blockquote": "2.1.13",
"@tiptap/extension-bold": "2.1.15", "@tiptap/extension-bold": "2.1.13",
"@tiptap/extension-bullet-list": "2.1.15", "@tiptap/extension-bullet-list": "2.1.13",
"@tiptap/extension-code": "2.1.15", "@tiptap/extension-code": "2.1.13",
"@tiptap/extension-code-block-lowlight": "2.1.15", "@tiptap/extension-code-block-lowlight": "2.1.13",
"@tiptap/extension-document": "2.1.15", "@tiptap/extension-document": "2.1.13",
"@tiptap/extension-dropcursor": "2.1.15", "@tiptap/extension-dropcursor": "2.1.13",
"@tiptap/extension-gapcursor": "2.1.15", "@tiptap/extension-gapcursor": "2.1.13",
"@tiptap/extension-hard-break": "2.1.15", "@tiptap/extension-hard-break": "2.1.13",
"@tiptap/extension-heading": "2.1.15", "@tiptap/extension-heading": "2.1.13",
"@tiptap/extension-history": "2.1.15", "@tiptap/extension-history": "2.1.13",
"@tiptap/extension-horizontal-rule": "2.1.15", "@tiptap/extension-horizontal-rule": "2.1.13",
"@tiptap/extension-image": "2.1.15", "@tiptap/extension-image": "2.1.13",
"@tiptap/extension-italic": "2.1.15", "@tiptap/extension-italic": "2.1.13",
"@tiptap/extension-link": "2.1.15", "@tiptap/extension-link": "2.1.13",
"@tiptap/extension-list-item": "2.1.15", "@tiptap/extension-list-item": "2.1.13",
"@tiptap/extension-ordered-list": "2.1.15", "@tiptap/extension-ordered-list": "2.1.13",
"@tiptap/extension-paragraph": "2.1.15", "@tiptap/extension-paragraph": "2.1.13",
"@tiptap/extension-placeholder": "2.1.15", "@tiptap/extension-placeholder": "2.1.13",
"@tiptap/extension-strike": "2.1.15", "@tiptap/extension-strike": "2.1.13",
"@tiptap/extension-table": "2.1.15", "@tiptap/extension-table": "2.1.13",
"@tiptap/extension-table-cell": "2.1.15", "@tiptap/extension-table-cell": "2.1.13",
"@tiptap/extension-table-header": "2.1.15", "@tiptap/extension-table-header": "2.1.13",
"@tiptap/extension-table-row": "2.1.15", "@tiptap/extension-table-row": "2.1.13",
"@tiptap/extension-task-item": "2.1.15", "@tiptap/extension-task-item": "2.1.13",
"@tiptap/extension-task-list": "2.1.15", "@tiptap/extension-task-list": "2.1.13",
"@tiptap/extension-text": "2.1.15", "@tiptap/extension-text": "2.1.13",
"@tiptap/extension-typography": "2.1.15", "@tiptap/extension-typography": "2.1.13",
"@tiptap/extension-underline": "2.1.15", "@tiptap/extension-underline": "2.1.13",
"@tiptap/pm": "2.1.15", "@tiptap/pm": "2.1.13",
"@tiptap/suggestion": "2.1.15", "@tiptap/suggestion": "2.1.13",
"@tiptap/vue-3": "2.1.15", "@tiptap/vue-3": "2.1.13",
"@types/is-touch-device": "1.0.2", "@types/is-touch-device": "1.0.2",
"@types/lodash.clonedeep": "4.5.9", "@types/lodash.clonedeep": "4.5.9",
"@vueuse/core": "10.7.1", "@vueuse/core": "10.7.0",
"@vueuse/router": "10.7.1", "@vueuse/router": "10.7.0",
"axios": "1.6.5", "axios": "1.6.2",
"blurhash": "2.0.5", "blurhash": "2.0.5",
"bulma-css-variables": "0.9.33", "bulma-css-variables": "0.9.33",
"camel-case": "4.1.2", "camel-case": "4.1.2",
"date-fns": "3.2.0", "date-fns": "2.30.0",
"dayjs": "1.11.10", "dayjs": "1.11.10",
"dompurify": "3.0.8", "dompurify": "3.0.6",
"fast-deep-equal": "3.1.3", "fast-deep-equal": "3.1.3",
"flatpickr": "4.6.13", "flatpickr": "4.6.13",
"flexsearch": "0.7.31", "flexsearch": "0.7.31",
"floating-vue": "2.0.0", "floating-vue": "2.0.0-beta.24",
"is-touch-device": "1.0.1", "is-touch-device": "1.0.1",
"klona": "2.0.6", "klona": "2.0.6",
"lodash.debounce": "4.0.8", "lodash.debounce": "4.0.8",
@ -113,17 +113,17 @@
"sortablejs": "1.15.1", "sortablejs": "1.15.1",
"tippy.js": "6.3.7", "tippy.js": "6.3.7",
"ufo": "1.3.2", "ufo": "1.3.2",
"vue": "3.4.7", "vue": "3.3.13",
"vue-advanced-cropper": "2.8.8", "vue-advanced-cropper": "2.8.8",
"vue-flatpickr-component": "11.0.3", "vue-flatpickr-component": "11.0.3",
"vue-i18n": "9.9.0", "vue-i18n": "9.8.0",
"vue-router": "4.2.5", "vue-router": "4.2.5",
"workbox-precaching": "7.0.0", "workbox-precaching": "7.0.0",
"zhyswan-vuedraggable": "4.1.3" "zhyswan-vuedraggable": "4.1.3"
}, },
"devDependencies": { "devDependencies": {
"@4tw/cypress-drag-drop": "2.2.5", "@4tw/cypress-drag-drop": "2.2.5",
"@cypress/vite-dev-server": "5.0.7", "@cypress/vite-dev-server": "5.0.6",
"@cypress/vue": "6.0.0", "@cypress/vue": "6.0.0",
"@faker-js/faker": "8.3.1", "@faker-js/faker": "8.3.1",
"@histoire/plugin-screenshot": "0.17.6", "@histoire/plugin-screenshot": "0.17.6",
@ -136,44 +136,44 @@
"@types/is-touch-device": "1.0.2", "@types/is-touch-device": "1.0.2",
"@types/lodash.debounce": "4.0.9", "@types/lodash.debounce": "4.0.9",
"@types/marked": "5.0.2", "@types/marked": "5.0.2",
"@types/node": "20.10.8", "@types/node": "20.10.5",
"@types/postcss-preset-env": "7.7.0", "@types/postcss-preset-env": "7.7.0",
"@types/sortablejs": "1.15.7", "@types/sortablejs": "1.15.7",
"@typescript-eslint/eslint-plugin": "6.18.1", "@typescript-eslint/eslint-plugin": "6.15.0",
"@typescript-eslint/parser": "6.18.1", "@typescript-eslint/parser": "6.15.0",
"@vitejs/plugin-legacy": "5.2.0", "@vitejs/plugin-legacy": "5.2.0",
"@vitejs/plugin-vue": "4.6.2", "@vitejs/plugin-vue": "4.5.2",
"@vue/eslint-config-typescript": "12.0.0", "@vue/eslint-config-typescript": "12.0.0",
"@vue/test-utils": "2.4.3", "@vue/test-utils": "2.4.3",
"@vue/tsconfig": "0.5.1", "@vue/tsconfig": "0.5.1",
"autoprefixer": "10.4.16", "autoprefixer": "10.4.16",
"browserslist": "4.22.2", "browserslist": "4.22.2",
"caniuse-lite": "1.0.30001576", "caniuse-lite": "1.0.30001570",
"css-has-pseudo": "6.0.1", "css-has-pseudo": "6.0.1",
"csstype": "3.1.3", "csstype": "3.1.3",
"cypress": "13.6.2", "cypress": "13.6.1",
"esbuild": "0.19.11", "esbuild": "0.19.10",
"eslint": "8.56.0", "eslint": "8.56.0",
"eslint-plugin-vue": "9.19.2", "eslint-plugin-vue": "9.19.2",
"happy-dom": "12.10.3", "happy-dom": "12.10.3",
"histoire": "0.17.6", "histoire": "0.17.6",
"postcss": "8.4.33", "postcss": "8.4.32",
"postcss-easing-gradients": "3.0.1", "postcss-easing-gradients": "3.0.1",
"postcss-easings": "4.0.0", "postcss-easings": "4.0.0",
"postcss-focus-within": "8.0.1", "postcss-focus-within": "8.0.1",
"postcss-preset-env": "9.3.0", "postcss-preset-env": "9.3.0",
"rollup": "4.9.4", "rollup": "4.9.1",
"rollup-plugin-visualizer": "5.12.0", "rollup-plugin-visualizer": "5.11.0",
"sass": "1.69.7", "sass": "1.69.5",
"start-server-and-test": "2.0.3", "start-server-and-test": "2.0.3",
"typescript": "5.3.3", "typescript": "5.3.3",
"vite": "5.0.11", "vite": "5.0.10",
"vite-plugin-inject-preload": "1.3.3", "vite-plugin-inject-preload": "1.3.3",
"vite-plugin-pwa": "0.17.4", "vite-plugin-pwa": "0.17.4",
"vite-plugin-sentry": "1.3.0", "vite-plugin-sentry": "1.3.0",
"vite-svg-loader": "5.1.0", "vite-svg-loader": "5.1.0",
"vitest": "1.1.3", "vitest": "1.0.4",
"vue-tsc": "1.8.27", "vue-tsc": "1.8.25",
"wait-on": "7.2.0", "wait-on": "7.2.0",
"workbox-cli": "7.0.0" "workbox-cli": "7.0.0"
}, },

File diff suppressed because it is too large Load Diff

View File

@ -160,7 +160,6 @@
"expired": "انتهت صلاحية هذا الرمز {ago}.", "expired": "انتهت صلاحية هذا الرمز {ago}.",
"tokenCreatedSuccess": "إليك رمز Api الجديد: {token}", "tokenCreatedSuccess": "إليك رمز Api الجديد: {token}",
"tokenCreatedNotSeeAgain": "قم بتخزينه في مكان آمن، لن تتمكن من عرضه مرة أخرى!", "tokenCreatedNotSeeAgain": "قم بتخزينه في مكان آمن، لن تتمكن من عرضه مرة أخرى!",
"selectAll": "Select all",
"delete": { "delete": {
"header": "احذف هذا الرمز", "header": "احذف هذا الرمز",
"text1": "هل أنت متأكد من رغبتك في حذف الرمز \"{token}؟", "text1": "هل أنت متأكد من رغبتك في حذف الرمز \"{token}؟",

View File

@ -160,7 +160,6 @@
"expired": "This token has expired {ago}.", "expired": "This token has expired {ago}.",
"tokenCreatedSuccess": "Here is your new api token: {token}", "tokenCreatedSuccess": "Here is your new api token: {token}",
"tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!", "tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!",
"selectAll": "Select all",
"delete": { "delete": {
"header": "Delete this token", "header": "Delete this token",
"text1": "Are you sure you want to delete the token \"{token}\"?", "text1": "Are you sure you want to delete the token \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "Platnost tohoto tokenu vypršela {ago}.", "expired": "Platnost tohoto tokenu vypršela {ago}.",
"tokenCreatedSuccess": "Zde je tvůj nový api token: {token}", "tokenCreatedSuccess": "Zde je tvůj nový api token: {token}",
"tokenCreatedNotSeeAgain": "Ulož jej na zabezpečeném místě, už ho znovu neuvidíš!", "tokenCreatedNotSeeAgain": "Ulož jej na zabezpečeném místě, už ho znovu neuvidíš!",
"selectAll": "Označit vše",
"delete": { "delete": {
"header": "Smazat tento token", "header": "Smazat tento token",
"text1": "Opravdu chcete smazat token \"{token}\"?", "text1": "Opravdu chcete smazat token \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "This token has expired {ago}.", "expired": "This token has expired {ago}.",
"tokenCreatedSuccess": "Here is your new api token: {token}", "tokenCreatedSuccess": "Here is your new api token: {token}",
"tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!", "tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!",
"selectAll": "Select all",
"delete": { "delete": {
"header": "Delete this token", "header": "Delete this token",
"text1": "Are you sure you want to delete the token \"{token}\"?", "text1": "Are you sure you want to delete the token \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "Dieses Token ist {ago} abgelaufen.", "expired": "Dieses Token ist {ago} abgelaufen.",
"tokenCreatedSuccess": "Hier ist dein neues API Token: {token}", "tokenCreatedSuccess": "Hier ist dein neues API Token: {token}",
"tokenCreatedNotSeeAgain": "Speichere es an einem sicheren Ort, du wirst es nicht mehr sehen!", "tokenCreatedNotSeeAgain": "Speichere es an einem sicheren Ort, du wirst es nicht mehr sehen!",
"selectAll": "Alle auswählen",
"delete": { "delete": {
"header": "Dieses Token löschen", "header": "Dieses Token löschen",
"text1": "Bist Du sicher, dass Du das Token \"{token}\" löschen möchtest?", "text1": "Bist Du sicher, dass Du das Token \"{token}\" löschen möchtest?",
@ -178,7 +177,7 @@
"title": "Lösche deinen Vikunja-Account", "title": "Lösche deinen Vikunja-Account",
"text1": "Das Löschen deines Accounts ist dauerhaft und unwiderruflich. Alle Projekte, Aufgaben und zugehörige Daten werden gelöscht.", "text1": "Das Löschen deines Accounts ist dauerhaft und unwiderruflich. Alle Projekte, Aufgaben und zugehörige Daten werden gelöscht.",
"text2": "Zum Fortfahren gib bitte dein Passwort ein. Du erhältst eine E-Mail mit weiteren Anweisungen.", "text2": "Zum Fortfahren gib bitte dein Passwort ein. Du erhältst eine E-Mail mit weiteren Anweisungen.",
"text3": "Klicks zum Fortfahren auf den Button unten. Du erhältst eine E-Mail mit weiteren Anweisungen.", "text3": "To proceed, please press the button below. You will receive an email with further instructions.",
"confirm": "Meinen Account löschen", "confirm": "Meinen Account löschen",
"requestSuccess": "Die Anfrage war erfolgreich. Du erhältst eine E-Mail mit weiteren Anweisungen.", "requestSuccess": "Die Anfrage war erfolgreich. Du erhältst eine E-Mail mit weiteren Anweisungen.",
"passwordRequired": "Bitte gib dein Passwort ein.", "passwordRequired": "Bitte gib dein Passwort ein.",
@ -186,7 +185,7 @@
"scheduled": "Wir werden deinen Vikunja-Account am {date} ({dateSince}) löschen.", "scheduled": "Wir werden deinen Vikunja-Account am {date} ({dateSince}) löschen.",
"scheduledCancel": "Um die Löschung deines Accounts abzubrechen, klicke hier.", "scheduledCancel": "Um die Löschung deines Accounts abzubrechen, klicke hier.",
"scheduledCancelText": "Um die Löschung deines Accounts abzubrechen, gib bitte dein Passwort unten ein:", "scheduledCancelText": "Um die Löschung deines Accounts abzubrechen, gib bitte dein Passwort unten ein:",
"scheduledCancelButton": "Um die Löschung deines Accounts abzubrechen, klicke unten auf den Button:", "scheduledCancelButton": "To cancel the deletion of your account, please press the button below:",
"scheduledCancelConfirm": "Löschung meines Accounts abbrechen", "scheduledCancelConfirm": "Löschung meines Accounts abbrechen",
"scheduledCancelSuccess": "Wir werden deinen Account nicht löschen." "scheduledCancelSuccess": "Wir werden deinen Account nicht löschen."
}, },
@ -938,7 +937,7 @@
"delete": "Diese Aufgabe löschen", "delete": "Diese Aufgabe löschen",
"priority": "Die Priorität dieser Aufgabe ändern", "priority": "Die Priorität dieser Aufgabe ändern",
"favorite": "Diese Aufgabe zum Favoriten machen / von Favoriten entfernen", "favorite": "Diese Aufgabe zum Favoriten machen / von Favoriten entfernen",
"save": "Aktuelle Aufgabe speichern" "save": "Save the current task"
}, },
"project": { "project": {
"title": "Projektansichten", "title": "Projektansichten",

View File

@ -160,7 +160,6 @@
"expired": "Dieses Token ist {ago} abgelaufen.", "expired": "Dieses Token ist {ago} abgelaufen.",
"tokenCreatedSuccess": "Hier ist dein neues API Token: {token}", "tokenCreatedSuccess": "Hier ist dein neues API Token: {token}",
"tokenCreatedNotSeeAgain": "Speichere es an einem sicheren Ort, du wirst es nicht mehr sehen!", "tokenCreatedNotSeeAgain": "Speichere es an einem sicheren Ort, du wirst es nicht mehr sehen!",
"selectAll": "Alle auswählen",
"delete": { "delete": {
"header": "Dieses Token löschen", "header": "Dieses Token löschen",
"text1": "Bist Du sicher, dass Du das Token \"{token}\" löschen möchtest?", "text1": "Bist Du sicher, dass Du das Token \"{token}\" löschen möchtest?",
@ -178,7 +177,7 @@
"title": "Lösche deinen Vikunja-Account", "title": "Lösche deinen Vikunja-Account",
"text1": "Das Löschen deines Accounts ist dauerhaft und unwiderruflich. Alle Projekte, Aufgaben und zugehörige Daten werden gelöscht.", "text1": "Das Löschen deines Accounts ist dauerhaft und unwiderruflich. Alle Projekte, Aufgaben und zugehörige Daten werden gelöscht.",
"text2": "Zum Fortfahren gib bitte dein Passwort ein. Du erhältst eine E-Mail mit weiteren Anweisungen.", "text2": "Zum Fortfahren gib bitte dein Passwort ein. Du erhältst eine E-Mail mit weiteren Anweisungen.",
"text3": "Klicks zum Fortfahren auf den Button unten. Du erhältst eine E-Mail mit weiteren Anweisungen.", "text3": "To proceed, please press the button below. You will receive an email with further instructions.",
"confirm": "Meinen Account löschen", "confirm": "Meinen Account löschen",
"requestSuccess": "Die Anfrage war erfolgreich. Du erhältst eine E-Mail mit weiteren Anweisungen.", "requestSuccess": "Die Anfrage war erfolgreich. Du erhältst eine E-Mail mit weiteren Anweisungen.",
"passwordRequired": "Bitte gib dein Passwort ein.", "passwordRequired": "Bitte gib dein Passwort ein.",
@ -186,7 +185,7 @@
"scheduled": "Wir werden deinen Vikunja-Account am {date} ({dateSince}) löschen.", "scheduled": "Wir werden deinen Vikunja-Account am {date} ({dateSince}) löschen.",
"scheduledCancel": "Um die Löschung deines Accounts abzubrechen, klicke hier.", "scheduledCancel": "Um die Löschung deines Accounts abzubrechen, klicke hier.",
"scheduledCancelText": "Um die Löschung deines Accounts abzubrechen, gib bitte dein Passwort unten ein:", "scheduledCancelText": "Um die Löschung deines Accounts abzubrechen, gib bitte dein Passwort unten ein:",
"scheduledCancelButton": "Um die Löschung deines Accounts abzubrechen, klicke unten auf den Button:", "scheduledCancelButton": "To cancel the deletion of your account, please press the button below:",
"scheduledCancelConfirm": "Löschung meines Accounts abbrechen", "scheduledCancelConfirm": "Löschung meines Accounts abbrechen",
"scheduledCancelSuccess": "Wir werden deinen Account nicht löschen." "scheduledCancelSuccess": "Wir werden deinen Account nicht löschen."
}, },
@ -938,7 +937,7 @@
"delete": "Diese Aufgabe löschen", "delete": "Diese Aufgabe löschen",
"priority": "Die Priorität dieser Aufgabe ändern", "priority": "Die Priorität dieser Aufgabe ändern",
"favorite": "Diese Aufgabe zum Favoriten machen / von Favoriten entfernen", "favorite": "Diese Aufgabe zum Favoriten machen / von Favoriten entfernen",
"save": "Aktuelle Aufgabe speichern" "save": "Save the current task"
}, },
"project": { "project": {
"title": "Projektansichten", "title": "Projektansichten",

View File

@ -160,7 +160,6 @@
"expired": "This token has expired {ago}.", "expired": "This token has expired {ago}.",
"tokenCreatedSuccess": "Here is your new api token: {token}", "tokenCreatedSuccess": "Here is your new api token: {token}",
"tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!", "tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!",
"selectAll": "Select all",
"delete": { "delete": {
"header": "Delete this token", "header": "Delete this token",
"text1": "Are you sure you want to delete the token \"{token}\"?", "text1": "Are you sure you want to delete the token \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "This token has expired {ago}.", "expired": "This token has expired {ago}.",
"tokenCreatedSuccess": "Here is your new api token: {token}", "tokenCreatedSuccess": "Here is your new api token: {token}",
"tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!", "tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!",
"selectAll": "Select all",
"delete": { "delete": {
"header": "Delete this token", "header": "Delete this token",
"text1": "Are you sure you want to delete the token \"{token}\"?", "text1": "Are you sure you want to delete the token \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "This token has expired {ago}.", "expired": "This token has expired {ago}.",
"tokenCreatedSuccess": "Here is your new api token: {token}", "tokenCreatedSuccess": "Here is your new api token: {token}",
"tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!", "tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!",
"selectAll": "Select all",
"delete": { "delete": {
"header": "Delete this token", "header": "Delete this token",
"text1": "Are you sure you want to delete the token \"{token}\"?", "text1": "Are you sure you want to delete the token \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "Ez a token lejárt {ago}.", "expired": "Ez a token lejárt {ago}.",
"tokenCreatedSuccess": "Íme az új API tokenje: {token}", "tokenCreatedSuccess": "Íme az új API tokenje: {token}",
"tokenCreatedNotSeeAgain": "Tárolja el biztonságos helyen, többé nem fogja látni!", "tokenCreatedNotSeeAgain": "Tárolja el biztonságos helyen, többé nem fogja látni!",
"selectAll": "Select all",
"delete": { "delete": {
"header": "Token törlése", "header": "Token törlése",
"text1": "Biztos benne, hogy törölni akarja ezt a tokent \"{token}\"?", "text1": "Biztos benne, hogy törölni akarja ezt a tokent \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "This token has expired {ago}.", "expired": "This token has expired {ago}.",
"tokenCreatedSuccess": "Here is your new api token: {token}", "tokenCreatedSuccess": "Here is your new api token: {token}",
"tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!", "tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!",
"selectAll": "Select all",
"delete": { "delete": {
"header": "Delete this token", "header": "Delete this token",
"text1": "Are you sure you want to delete the token \"{token}\"?", "text1": "Are you sure you want to delete the token \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "This token has expired {ago}.", "expired": "This token has expired {ago}.",
"tokenCreatedSuccess": "Here is your new api token: {token}", "tokenCreatedSuccess": "Here is your new api token: {token}",
"tokenCreatedNotSeeAgain": "このトークンは二度と表示されません。安全な場所に保管してください。", "tokenCreatedNotSeeAgain": "このトークンは二度と表示されません。安全な場所に保管してください。",
"selectAll": "Select all",
"delete": { "delete": {
"header": "トークンの削除", "header": "トークンの削除",
"text1": "Are you sure you want to delete the token \"{token}\"?", "text1": "Are you sure you want to delete the token \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "This token has expired {ago}.", "expired": "This token has expired {ago}.",
"tokenCreatedSuccess": "Here is your new api token: {token}", "tokenCreatedSuccess": "Here is your new api token: {token}",
"tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!", "tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!",
"selectAll": "Select all",
"delete": { "delete": {
"header": "Delete this token", "header": "Delete this token",
"text1": "Are you sure you want to delete the token \"{token}\"?", "text1": "Are you sure you want to delete the token \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "This token has expired {ago}.", "expired": "This token has expired {ago}.",
"tokenCreatedSuccess": "Here is your new api token: {token}", "tokenCreatedSuccess": "Here is your new api token: {token}",
"tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!", "tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!",
"selectAll": "Select all",
"delete": { "delete": {
"header": "Delete this token", "header": "Delete this token",
"text1": "Are you sure you want to delete the token \"{token}\"?", "text1": "Are you sure you want to delete the token \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "This token has expired {ago}.", "expired": "This token has expired {ago}.",
"tokenCreatedSuccess": "Here is your new api token: {token}", "tokenCreatedSuccess": "Here is your new api token: {token}",
"tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!", "tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!",
"selectAll": "Select all",
"delete": { "delete": {
"header": "Delete this token", "header": "Delete this token",
"text1": "Are you sure you want to delete the token \"{token}\"?", "text1": "Are you sure you want to delete the token \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "Ten token wygasł {ago}.", "expired": "Ten token wygasł {ago}.",
"tokenCreatedSuccess": "Oto twój nowy token: {token}", "tokenCreatedSuccess": "Oto twój nowy token: {token}",
"tokenCreatedNotSeeAgain": "Przechowuj go w bezpiecznym miejscu, nie zobaczysz go ponownie!", "tokenCreatedNotSeeAgain": "Przechowuj go w bezpiecznym miejscu, nie zobaczysz go ponownie!",
"selectAll": "Wybierz wszystkie",
"delete": { "delete": {
"header": "Usuń ten token", "header": "Usuń ten token",
"text1": "Czy na pewno chcesz usunąć token \"{token}\"?", "text1": "Czy na pewno chcesz usunąć token \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "This token has expired {ago}.", "expired": "This token has expired {ago}.",
"tokenCreatedSuccess": "Here is your new api token: {token}", "tokenCreatedSuccess": "Here is your new api token: {token}",
"tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!", "tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!",
"selectAll": "Select all",
"delete": { "delete": {
"header": "Delete this token", "header": "Delete this token",
"text1": "Are you sure you want to delete the token \"{token}\"?", "text1": "Are you sure you want to delete the token \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "Este token expirou {ago}.", "expired": "Este token expirou {ago}.",
"tokenCreatedSuccess": "Aqui está o teu novo token de API: {token}", "tokenCreatedSuccess": "Aqui está o teu novo token de API: {token}",
"tokenCreatedNotSeeAgain": "Guarda-o num local seguro, não o vais poder visualizar novamente!", "tokenCreatedNotSeeAgain": "Guarda-o num local seguro, não o vais poder visualizar novamente!",
"selectAll": "Selecionar tudo",
"delete": { "delete": {
"header": "Eliminar este token", "header": "Eliminar este token",
"text1": "Tens a certeza que pretendes eliminar o token \"{token}\"?", "text1": "Tens a certeza que pretendes eliminar o token \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "This token has expired {ago}.", "expired": "This token has expired {ago}.",
"tokenCreatedSuccess": "Here is your new api token: {token}", "tokenCreatedSuccess": "Here is your new api token: {token}",
"tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!", "tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!",
"selectAll": "Select all",
"delete": { "delete": {
"header": "Delete this token", "header": "Delete this token",
"text1": "Are you sure you want to delete the token \"{token}\"?", "text1": "Are you sure you want to delete the token \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "Срок действия этого токена истёк {ago}.", "expired": "Срок действия этого токена истёк {ago}.",
"tokenCreatedSuccess": "Ваш новый токен: {token}", "tokenCreatedSuccess": "Ваш новый токен: {token}",
"tokenCreatedNotSeeAgain": "Сохраните его в безопасном месте, вы не увидите его снова!", "tokenCreatedNotSeeAgain": "Сохраните его в безопасном месте, вы не увидите его снова!",
"selectAll": "Выбрать всё",
"delete": { "delete": {
"header": "Удалить этот токен", "header": "Удалить этот токен",
"text1": "Удалить токен «{token}»?", "text1": "Удалить токен «{token}»?",

View File

@ -160,7 +160,6 @@
"expired": "This token has expired {ago}.", "expired": "This token has expired {ago}.",
"tokenCreatedSuccess": "Here is your new api token: {token}", "tokenCreatedSuccess": "Here is your new api token: {token}",
"tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!", "tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!",
"selectAll": "Select all",
"delete": { "delete": {
"header": "Delete this token", "header": "Delete this token",
"text1": "Are you sure you want to delete the token \"{token}\"?", "text1": "Are you sure you want to delete the token \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "Žeton je potekel pred {ago}.", "expired": "Žeton je potekel pred {ago}.",
"tokenCreatedSuccess": "Tu je vaš novi API žeton: {token}", "tokenCreatedSuccess": "Tu je vaš novi API žeton: {token}",
"tokenCreatedNotSeeAgain": "Shranite ga na varno mesto, ker ga ne boste več videli!", "tokenCreatedNotSeeAgain": "Shranite ga na varno mesto, ker ga ne boste več videli!",
"selectAll": "Select all",
"delete": { "delete": {
"header": "Izbriši ta žeton", "header": "Izbriši ta žeton",
"text1": "Ali ste prepričani, da želite izbrisati žeton \"{token}\"?", "text1": "Ali ste prepričani, da želite izbrisati žeton \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "This token has expired {ago}.", "expired": "This token has expired {ago}.",
"tokenCreatedSuccess": "Here is your new api token: {token}", "tokenCreatedSuccess": "Here is your new api token: {token}",
"tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!", "tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!",
"selectAll": "Select all",
"delete": { "delete": {
"header": "Delete this token", "header": "Delete this token",
"text1": "Are you sure you want to delete the token \"{token}\"?", "text1": "Are you sure you want to delete the token \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "This token has expired {ago}.", "expired": "This token has expired {ago}.",
"tokenCreatedSuccess": "Here is your new api token: {token}", "tokenCreatedSuccess": "Here is your new api token: {token}",
"tokenCreatedNotSeeAgain": "Förvara den på en säker plats, du kommer aldrig att se den igen!", "tokenCreatedNotSeeAgain": "Förvara den på en säker plats, du kommer aldrig att se den igen!",
"selectAll": "Select all",
"delete": { "delete": {
"header": "Delete this token", "header": "Delete this token",
"text1": "Are you sure you want to delete the token \"{token}\"?", "text1": "Are you sure you want to delete the token \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "This token has expired {ago}.", "expired": "This token has expired {ago}.",
"tokenCreatedSuccess": "Here is your new api token: {token}", "tokenCreatedSuccess": "Here is your new api token: {token}",
"tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!", "tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!",
"selectAll": "Select all",
"delete": { "delete": {
"header": "Delete this token", "header": "Delete this token",
"text1": "Are you sure you want to delete the token \"{token}\"?", "text1": "Are you sure you want to delete the token \"{token}\"?",

View File

@ -160,7 +160,6 @@
"expired": "This token has expired {ago}.", "expired": "This token has expired {ago}.",
"tokenCreatedSuccess": "Here is your new api token: {token}", "tokenCreatedSuccess": "Here is your new api token: {token}",
"tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!", "tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!",
"selectAll": "Select all",
"delete": { "delete": {
"header": "Delete this token", "header": "Delete this token",
"text1": "Are you sure you want to delete the token \"{token}\"?", "text1": "Are you sure you want to delete the token \"{token}\"?",

View File

@ -5,17 +5,17 @@
"welcomeDay": "嗨~{username}", "welcomeDay": "嗨~{username}",
"welcomeEvening": "中午好,{username}", "welcomeEvening": "中午好,{username}",
"lastViewed": "最近查看", "lastViewed": "最近查看",
"addToHomeScreen": "将此应用程序添加到您的主屏幕以便更快地访问和改善体验。", "addToHomeScreen": "Add this app to your home screen for faster access and improved experience.",
"goToOverview": "转到概览", "goToOverview": "Go to overview",
"project": { "project": {
"importText": "将您的项目和任务从其他服务导入 Vikunja", "importText": "Import your projects and tasks from other services into Vikunja:",
"import": "将您的数据导入到 Vikunja" "import": "Import your data into Vikunja"
} }
}, },
"demo": { "demo": {
"title": "此实例处于演示模式。不要将其用于真实数据!", "title": "This instance is in demo mode. Do not use this for real data!",
"everythingWillBeDeleted": "每隔一段时间,所有东西都将被删除!", "everythingWillBeDeleted": "Everything will be deleted in regular intervals!",
"accountWillBeDeleted": "您的账户将被删除,包括您可能创建的所有项目、任务和附件。" "accountWillBeDeleted": "Your account will be deleted, including all projects, tasks and attachments you might create."
}, },
"404": { "404": {
"title": "未找到数据", "title": "未找到数据",
@ -83,17 +83,17 @@
"savedSuccess": "成功更新了设置", "savedSuccess": "成功更新了设置",
"emailReminders": "通过电子邮件向我发送任务提醒", "emailReminders": "通过电子邮件向我发送任务提醒",
"overdueReminders": "每天给我发送我未完成任务的摘要", "overdueReminders": "每天给我发送我未完成任务的摘要",
"discoverableByName": "允许其他用户在搜索我的名字时将我添加为团队或项目的成员", "discoverableByName": "Allow other users to add me as a member to teams or projects when they search for my name",
"discoverableByEmail": "允许其他用户在搜索我的完整电子邮件时将我添加为团队或项目的成员", "discoverableByEmail": "Allow other users to add me as a member to teams or projects when they search for my full email",
"playSoundWhenDone": "将任务标记为已完成时播放声音", "playSoundWhenDone": "将任务标记为已完成时播放声音",
"weekStart": "一周起始日", "weekStart": "一周起始日",
"weekStartSunday": "星期日", "weekStartSunday": "星期日",
"weekStartMonday": "星期一", "weekStartMonday": "星期一",
"language": "语言设置", "language": "语言设置",
"defaultProject": "默认项目", "defaultProject": "Default Project",
"timezone": "时区", "timezone": "时区",
"overdueTasksRemindersTime": "逾期任务提醒邮件时间", "overdueTasksRemindersTime": "逾期任务提醒邮件时间",
"filterUsedOnOverview": "概述页面上使用已保存过滤器" "filterUsedOnOverview": "Saved filter used on the overview page"
}, },
"totp": { "totp": {
"title": "两步验证", "title": "两步验证",
@ -147,38 +147,37 @@
} }
}, },
"apiTokens": { "apiTokens": {
"title": "API 令牌", "title": "API Tokens",
"general": "API 令牌允许您在无需用户凭据的情况下使用 Vikunja 的 API。", "general": "API tokens allow you to use Vikunja's API without user credentials.",
"apiDocs": "查看 api 文档", "apiDocs": "Check out the api docs",
"createAToken": "创建令牌", "createAToken": "Create a token",
"createToken": "创建令牌", "createToken": "Create token",
"30d": "30 天", "30d": "30 Days",
"60d": "60 天", "60d": "60 Days",
"90d": "90 天", "90d": "90 Days",
"permissionExplanation": "权限允许您限制 api 令牌被允许做什么。", "permissionExplanation": "Permissions allow you to scope what an api token is allowed to do.",
"titleRequired": "需要指定标题", "titleRequired": "The title is required",
"expired": "Token {ago} 前到期", "expired": "This token has expired {ago}.",
"tokenCreatedSuccess": "这是您的令牌: {token}", "tokenCreatedSuccess": "Here is your new api token: {token}",
"tokenCreatedNotSeeAgain": "将其存储在一个安全的位置,你不会再看到它了!", "tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!",
"selectAll": "全选",
"delete": { "delete": {
"header": "删除该令牌", "header": "Delete this token",
"text1": "你确定要删除令牌 {token} 吗?", "text1": "Are you sure you want to delete the token \"{token}\"?",
"text2": "这将撤销使用它的所有应用程序或集成的访问权。您不能回退此操作。" "text2": "This will revoke access to all applications or integrations using it. You cannot undo this."
}, },
"attributes": { "attributes": {
"title": "标题", "title": "Title",
"titlePlaceholder": "输入一个你以后能够识别的标题", "titlePlaceholder": "Enter a title you will recognize later",
"expiresAt": "过期于", "expiresAt": "Expires at",
"permissions": "权限" "permissions": "Permissions"
} }
} }
}, },
"deletion": { "deletion": {
"title": "删除您的 Vikunja 帐户", "title": "删除您的 Vikunja 帐户",
"text1": "您账户的删除是永久性的且无法撤消。 我们将删除您的所有项目、任务以及与之相关的所有内容。", "text1": "The deletion of your account is permanent and cannot be undone. We will delete all your projects, tasks and everything associated with it.",
"text2": "若要继续,请输入您的密码。您将收到一封包含更多说明的电子邮件。", "text2": "若要继续,请输入您的密码。您将收到一封包含更多说明的电子邮件。",
"text3": "若要继续,请按下面的按钮。您将收到一封包含进一步说明的电子邮件。", "text3": "To proceed, please press the button below. You will receive an email with further instructions.",
"confirm": "删除我的帐户", "confirm": "删除我的帐户",
"requestSuccess": "请求成功。您将收到一封包含更多说明的电子邮件。", "requestSuccess": "请求成功。您将收到一封包含更多说明的电子邮件。",
"passwordRequired": "请输入密码", "passwordRequired": "请输入密码",
@ -186,13 +185,13 @@
"scheduled": "您的 Vikunja帐户将于 {date} ({dateSince}) 完成注销删除。", "scheduled": "您的 Vikunja帐户将于 {date} ({dateSince}) 完成注销删除。",
"scheduledCancel": "要取消您的帐户删除操作,请单击此处。", "scheduledCancel": "要取消您的帐户删除操作,请单击此处。",
"scheduledCancelText": "若要取消您的帐户删除操作,请在下面输入您的密码:", "scheduledCancelText": "若要取消您的帐户删除操作,请在下面输入您的密码:",
"scheduledCancelButton": "若要取消您的账户删除,请按下面的按钮:", "scheduledCancelButton": "To cancel the deletion of your account, please press the button below:",
"scheduledCancelConfirm": "取消删除我的帐户", "scheduledCancelConfirm": "取消删除我的帐户",
"scheduledCancelSuccess": "账户删除操作已撤销" "scheduledCancelSuccess": "账户删除操作已撤销"
}, },
"export": { "export": {
"title": "导出 Vikunja 数据", "title": "导出 Vikunja 数据",
"description": "您可以索取所有 Vikunja 数据的副本。 这包括项目、任务以及与它们相关的所有内容。 您可以通过迁移功能将这些数据导入到任何 Vikunja 实例中。", "description": "You can request a copy of all your Vikunja data. This includes Projects, Tasks and everything associated to them. You can import this data in any Vikunja instance through the migration function.",
"descriptionPasswordRequired": "请输入您的密码以继续。", "descriptionPasswordRequired": "请输入您的密码以继续。",
"request": "请求我的 Vikunja 数据副本", "request": "请求我的 Vikunja 数据副本",
"success": "已成功请求您的 Vikunja 数据!一旦准备好下载,我们将向您发送一封电子邮件。", "success": "已成功请求您的 Vikunja 数据!一旦准备好下载,我们将向您发送一封电子邮件。",
@ -200,182 +199,182 @@
} }
}, },
"project": { "project": {
"archivedMessage": "该项目已存档。 无法为其创建新任务或编辑任务。", "archivedMessage": "This project is archived. It is not possible to create new or edit tasks for it.",
"archived": "已归档", "archived": "Archived",
"showArchived": "显示已归档", "showArchived": "Show Archived",
"title": "项目标题", "title": "Project Title",
"color": "颜色", "color": "Color",
"projects": "项目", "projects": "Projects",
"parent": "父项目", "parent": "Parent Project",
"search": "输入以搜索项目…", "search": "Type to search for a project…",
"searchSelect": "点击或按下回车键以选择此项目", "searchSelect": "Click or press enter to select this project",
"shared": "共享项目", "shared": "Shared Projects",
"noDescriptionAvailable": "没有可用的项目描述。", "noDescriptionAvailable": "No project description is available.",
"inboxTitle": "收件箱", "inboxTitle": "Inbox",
"create": { "create": {
"header": "新项目", "header": "New project",
"titlePlaceholder": "项目标题", "titlePlaceholder": "The project's title goes here…",
"addTitleRequired": "请指定一个标题。", "addTitleRequired": "Please specify a title.",
"createdSuccess": "已成功创建此项目。", "createdSuccess": "The project was successfully created.",
"addProjectRequired": "请指定列表或在设置中设置默认列表。" "addProjectRequired": "Please specify a project or set a default project in the settings."
}, },
"archive": { "archive": {
"title": "存档 \"{project}\"", "title": "Archive \"{project}\"",
"archive": "存档此项目", "archive": "Archive this project",
"unarchive": "取消存档此项目", "unarchive": "Un-Archive this project",
"unarchiveText": "您将能够创建新任务或编辑此项目", "unarchiveText": "You will be able to create new tasks or edit it.",
"archiveText": "在您取消归档之前,您将无法编辑此项目或创建新任务。", "archiveText": "You won't be able to edit this project or create new tasks until you un-archive it.",
"success": "项目已成功归档。" "success": "The project was successfully archived."
}, },
"background": { "background": {
"title": "设置项目背景", "title": "Set project background",
"remove": "删除背景", "remove": "Remove Background",
"upload": "从您的pc选择背景", "upload": "Choose a background from your pc",
"searchPlaceholder": "搜索背景…", "searchPlaceholder": "Search for a background…",
"poweredByUnsplash": "由 Unsplash 提供技术支持", "poweredByUnsplash": "Powered by Unsplash",
"loadMore": "加载更多照片", "loadMore": "Load more photos",
"success": "背景图设置成功", "success": "The background has been set successfully!",
"removeSuccess": "已移除背景" "removeSuccess": "The background has been removed successfully!"
}, },
"delete": { "delete": {
"title": "删除\"{project}\"", "title": "Delete \"{project}\"",
"header": "删除此项目", "header": "Delete this project",
"text1": "确认删除此项目及其所有任务?", "text1": "Are you sure you want to delete this project and all of its contents?",
"text2": "这包括所有的任务,并且无法撤销!", "text2": "This includes all tasks and CANNOT BE UNDONE!",
"success": "项目已成功删除。", "success": "The project was successfully deleted.",
"tasksToDelete": "此操作无法撤消!将移除大约 {count} 个任务。", "tasksToDelete": "This will irrevocably remove approx. {count} tasks.",
"noTasksToDelete": "此列表不包含任何任务,可以安全删除。" "noTasksToDelete": "This project does not contain any tasks, it should be safe to delete."
}, },
"duplicate": { "duplicate": {
"title": "复制此项目", "title": "Duplicate this project",
"label": "复制", "label": "Duplicate",
"text": "选择一个已存在的命名空间以容纳该列表的副本", "text": "Select a parent project which should hold the duplicated project:",
"success": "项目已成功复制." "success": "The project was successfully duplicated."
}, },
"edit": { "edit": {
"header": "编辑此项目", "header": "Edit This Project",
"title": "编辑 \"{project}\"", "title": "Edit \"{project}\"",
"titlePlaceholder": "项目标题位于此处", "titlePlaceholder": "The project title goes here…",
"identifierTooltip": "项目标识符可以用来独特识别整个项目的任务。您可以设置为空以禁用它。", "identifierTooltip": "The project identifier can be used to uniquely identify a task across projects. You can set it to empty to disable it.",
"identifier": "项目标识符", "identifier": "Project Identifier",
"identifierPlaceholder": "项目标题位于此处", "identifierPlaceholder": "The project identifier goes here…",
"description": "描述", "description": "Description",
"descriptionPlaceholder": "输入此项目的描述,点击'/'获取更多选项…", "descriptionPlaceholder": "Enter a description for this project, hit '/' for more options…",
"color": "颜色", "color": "Color",
"success": "项目更新成功。" "success": "The project was successfully updated."
}, },
"share": { "share": {
"header": "共享项目", "header": "Share this project",
"title": "共享 \"{project}\"", "title": "Share \"{project}\"",
"share": "共享", "share": "Share",
"links": { "links": {
"title": "共享链接", "title": "Share Links",
"what": "什么是共享链接?", "what": "What is a share link?",
"explanation": "共享链接使您能够轻松地与其他未注册账户的访客共享一个列表。", "explanation": "Share Links allow you to easily share a project with other users who don't have an account on Vikunja.",
"create": "创建一个新的共享链接", "create": "Create a new link share",
"name": "共享链接名称 (可选)", "name": "Name (optional)",
"namePlaceholder": "例如:Lorem Ipsum", "namePlaceholder": "e.g. Lorem Ipsum",
"nameExplanation": "此共享链接中的所有动作都将显示该名称。", "nameExplanation": "All actions done by this link share will show up with the name.",
"password": "密码 (可选)", "password": "Password (optional)",
"passwordExplanation": "验证时,用户需要输入此密码。", "passwordExplanation": "When signing in, the user will be required to enter this password.",
"noName": "未设置名称", "noName": "No name set",
"remove": "删除链接共享", "remove": "Remove a link share",
"removeText": "您确定要删除此链接共享吗?它将无法使用此链接共享访问此项目。 这不能撤消!", "removeText": "Are you sure you want to remove this link share? It will no longer be possible to access this project with this link share. This cannot be undone!",
"createSuccess": "列表共享链接成功创建。", "createSuccess": "The link share was successfully created.",
"deleteSuccess": "共享链接已删除", "deleteSuccess": "The link share was successfully deleted",
"view": "查看", "view": "View",
"sharedBy": "{0} 分享" "sharedBy": "Shared by {0}"
}, },
"userTeam": { "userTeam": {
"typeUser": "用户名 | 用户", "typeUser": "user | users",
"typeTeam": "团队 | 团队", "typeTeam": "team | teams",
"shared": "与 {type} 共享", "shared": "Shared with these {type}",
"you": "", "you": "You",
"notShared": "尚未与任何 {type} 共享。", "notShared": "Not shared with any {type} yet.",
"removeHeader": "从 {sharable} 中移除一个 {type}", "removeHeader": "Remove a {type} from the {sharable}",
"removeText": "确定要将 {sharable} 从 {type} 中删除吗?此操作无法撤销。", "removeText": "Are you sure you want to remove this {sharable} from the {type}? This cannot be undone!",
"removeSuccess": "已成功将 {sharable} 从 {type} 中移除", "removeSuccess": "The {sharable} was successfully removed from the {type}.",
"addedSuccess": "{type} 已成功添加。", "addedSuccess": "The {type} was successfully added.",
"updatedSuccess": "{type} 已成功添加。" "updatedSuccess": "The {type} was successfully added."
}, },
"right": { "right": {
"title": "权限", "title": "Permission",
"read": "只读", "read": "Read only",
"readWrite": "可读并可写", "readWrite": "Read & write",
"admin": "管理员" "admin": "Admin"
}, },
"attributes": { "attributes": {
"link": "链接", "link": "Link",
"delete": "删除" "delete": "Delete"
} }
}, },
"list": { "list": {
"title": "列表", "title": "List",
"add": "添加", "add": "Add",
"addPlaceholder": "添加新任务", "addPlaceholder": "Add a new task…",
"empty": "此项目目前为空。", "empty": "This project is currently empty.",
"newTaskCta": "新建任务。", "newTaskCta": "Create a new task.",
"editTask": "编辑任务" "editTask": "Edit Task"
}, },
"gantt": { "gantt": {
"title": "甘特图", "title": "Gantt",
"showTasksWithoutDates": "显示未设定日期的任务", "showTasksWithoutDates": "Show tasks which don't have dates set",
"size": "时间粒度", "size": "Size",
"default": "默认", "default": "Default",
"month": "", "month": "Month",
"day": "", "day": "Day",
"hour": "", "hour": "Hour",
"range": "日期范围", "range": "Date Range",
"noDates": "此任务没有设定日期。" "noDates": "This task has no dates set."
}, },
"table": { "table": {
"title": "表格", "title": "Table",
"columns": "" "columns": "Columns"
}, },
"kanban": { "kanban": {
"title": "看板", "title": "Kanban",
"limit": "限制: {limit}", "limit": "Limit: {limit}",
"noLimit": "未设置", "noLimit": "Not Set",
"doneBucket": "已完成的桶数", "doneBucket": "Done bucket",
"doneBucketHint": "移入此存储桶的所有任务将自动标记为已完成。", "doneBucketHint": "All tasks moved into this bucket will automatically marked as done.",
"doneBucketHintExtended": "所有移入已完成存储桶的任务都将自动标记为已完成。 从其他位置标记为已完成的任务也将被移动。", "doneBucketHintExtended": "All tasks moved into the done bucket will be marked as done automatically. All tasks marked as done from elsewhere will be moved as well.",
"doneBucketSavedSuccess": "已完成存储桶已保存成功。", "doneBucketSavedSuccess": "The done bucket has been saved successfully.",
"defaultBucket": "默认桶", "defaultBucket": "Default bucket",
"defaultBucketHint": "当创建任务时没有指定一个桶,它们将被添加到此桶中。", "defaultBucketHint": "When creating tasks without specifying a bucket, they will be added to this bucket.",
"defaultBucketSavedSuccess": "默认存储桶已成功保存。", "defaultBucketSavedSuccess": "The default bucket has been saved successfully.",
"deleteLast": "无法删除最后一个存储桶。", "deleteLast": "You cannot remove the last bucket.",
"addTaskPlaceholder": "输入新任务标题…", "addTaskPlaceholder": "Enter the new task title…",
"addTask": "添加任务", "addTask": "Add a task",
"addAnotherTask": "添加另一个任务", "addAnotherTask": "Add another task",
"addBucket": "创建一个新的存储桶。", "addBucket": "Create a new bucket",
"addBucketPlaceholder": "输入新的存储桶标题…", "addBucketPlaceholder": "Enter the new bucket title…",
"deleteHeaderBucket": "删除存储桶", "deleteHeaderBucket": "Delete the bucket",
"deleteBucketText1": "您确定要删除此存储桶吗?", "deleteBucketText1": "Are you sure you want to delete this bucket?",
"deleteBucketText2": "这不会删除任何任务,而是将其移动到默认存储桶中。", "deleteBucketText2": "This will not delete any tasks but move them into the default bucket.",
"deleteBucketSuccess": "存储桶已删除。", "deleteBucketSuccess": "The bucket has been deleted successfully.",
"bucketTitleSavedSuccess": "存储桶标题已保存。", "bucketTitleSavedSuccess": "The bucket title has been saved successfully.",
"bucketLimitSavedSuccess": "存储桶限制已保存。", "bucketLimitSavedSuccess": "The bucket limit been saved successfully.",
"collapse": "折叠此存储桶" "collapse": "Collapse this bucket"
}, },
"pseudo": { "pseudo": {
"favorites": { "favorites": {
"title": "收藏" "title": "Favorites"
} }
}, },
"webhooks": { "webhooks": {
"title": "Webhook", "title": "Webhooks",
"targetUrl": "目标 Url", "targetUrl": "Target URL",
"targetUrlInvalid": "请提供有效的URL。", "targetUrlInvalid": "Please provide a valid URL.",
"events": "事件", "events": "Events",
"eventsHint": "选择此 webhook 应该接收更新的所有事件 (在当前项目内)。", "eventsHint": "Select all events this webhook should recieve updates for (within the current project).",
"mustSelectEvents": "您必须选择至少一个事件。", "mustSelectEvents": "You must select at least one event.",
"delete": "删除此 webhook", "delete": "Delete this webhook",
"deleteText": "您确定要删除此Webhook吗外部目标将不再收到其事件通知。", "deleteText": "Are you sure you want to delete this webhook? External targets will not be notified of its events anymore.",
"deleteSuccess": "Webhook 已成功删除。", "deleteSuccess": "The webhook was successfully deleted.",
"create": "创建 Webhook", "create": "Create webhook",
"secret": "密钥", "secret": "Secret",
"secretHint": "如果提供了 webhook 目标 URL 的所有请求都将使用 HMAC签名。", "secretHint": "If provided, all requests to the webhook target URL will be signed using HMAC.",
"secretDocs": "查看文档了解如何使用秘密的更多详情。" "secretDocs": "Check out the docs for more details about how to use secrets."
} }
}, },
"filters": { "filters": {
@ -385,7 +384,7 @@
"title": "标题", "title": "标题",
"titlePlaceholder": "填写筛选器标题", "titlePlaceholder": "填写筛选器标题",
"description": "描述信息", "description": "描述信息",
"descriptionPlaceholder": "在此处添加此过滤器的描述,点击'/'获取更多选项…", "descriptionPlaceholder": "Add a description for this filter here, hit '/' for more options…",
"includeNulls": "包含没有设置值的任务", "includeNulls": "包含没有设置值的任务",
"requireAll": "要求所有筛选器为真才能显示任务", "requireAll": "要求所有筛选器为真才能显示任务",
"showDoneTasks": "显示已完成的任务", "showDoneTasks": "显示已完成的任务",
@ -399,9 +398,9 @@
}, },
"create": { "create": {
"title": "新保存的过滤器", "title": "新保存的过滤器",
"description": "保存的过滤器是一个虚拟工程,每次访问时都从一组过滤器中计算。", "description": "A saved filter is a virtual project which is computed from a set of filters each time it is accessed.",
"action": "创建新保存的过滤器", "action": "创建新保存的过滤器",
"titleRequired": "请为该过滤器提供名称。" "titleRequired": "Please provide a title for the filter."
}, },
"delete": { "delete": {
"header": "删除此保存的过滤器", "header": "删除此保存的过滤器",
@ -414,7 +413,7 @@
} }
}, },
"migrate": { "migrate": {
"title": "从其他服务导入", "title": "Import from other services",
"titleService": "从 {name} 导入您的数据到 Vikunja", "titleService": "从 {name} 导入您的数据到 Vikunja",
"import": "导入数据到 Vikunja", "import": "导入数据到 Vikunja",
"description": "点击下面的第三方服务的徽标开始操作。", "description": "点击下面的第三方服务的徽标开始操作。",
@ -427,13 +426,13 @@
"confirm": "我确定, 请立即开始迁移!", "confirm": "我确定, 请立即开始迁移!",
"importUpload": "请点击下面的按钮选择一个文件,将 {name} 的数据导入到 Vikunja", "importUpload": "请点击下面的按钮选择一个文件,将 {name} 的数据导入到 Vikunja",
"upload": "点击上传文件", "upload": "点击上传文件",
"migrationStartedWillReciveEmail": "Vikunja 现在将从 {service} 导入您的列表/项目、任务、注释、提醒和文件。 由于这需要一段时间,完成后我们会向您发送一封电子邮件。 您现在可以关闭此窗口。", "migrationStartedWillReciveEmail": "Vikunja will now import your lists/projects, tasks, notes, reminders and files from {service}. As this will take a while, we will send you an email once done. You can close this window now.",
"migrationInProgress": "迁移正在进行中。请等待完成。" "migrationInProgress": "A migration is currently in progress. Please wait until it is done."
}, },
"label": { "label": {
"title": "标签", "title": "标签",
"manage": "管理标签", "manage": "管理标签",
"description": "点击标签进行编辑。 您可以编辑您创建的所有标签,您可以使用所有与您有访问权限的任务相关联的标签。", "description": "Click on a label to edit it. You can edit all labels you created, you can use all labels which are associated with a task to whose project you have access.",
"newCTA": "当前没有标签", "newCTA": "当前没有标签",
"search": "输入以搜索标签…", "search": "输入以搜索标签…",
"create": { "create": {
@ -444,7 +443,7 @@
}, },
"edit": { "edit": {
"header": "编辑标签", "header": "编辑标签",
"forbidden": "您无权编辑这个标签,因为您不拥有它。", "forbidden": "You are not allowed to edit this label because you don't own it.",
"success": "标签已更新" "success": "标签已更新"
}, },
"deleteSuccess": "标签已删除", "deleteSuccess": "标签已删除",
@ -458,7 +457,7 @@
}, },
"sharing": { "sharing": {
"authenticating": "验证中……", "authenticating": "验证中……",
"passwordRequired": "此共享项目需要密码。请在下面输入:", "passwordRequired": "This shared project requires a password. Please enter it below:",
"error": "发生错误", "error": "发生错误",
"invalidPassword": "密码错误" "invalidPassword": "密码错误"
}, },
@ -499,7 +498,7 @@
"custom": "自定义", "custom": "自定义",
"id": "ID", "id": "ID",
"created": "创建于", "created": "创建于",
"createdBy": "由 {0} 创建", "createdBy": "Created by {0}",
"actions": "行为", "actions": "行为",
"cannotBeUndone": "此操作无法撤消!" "cannotBeUndone": "此操作无法撤消!"
}, },
@ -518,59 +517,59 @@
"edit": "编辑", "edit": "编辑",
"done": "完成", "done": "完成",
"heading1": "一级标题", "heading1": "一级标题",
"heading1Tooltip": "大标题。", "heading1Tooltip": "Big section heading.",
"heading2": "二级标题", "heading2": "二级标题",
"heading2Tooltip": "中标题。", "heading2Tooltip": "Medium section heading.",
"heading3": "三级标题", "heading3": "三级标题",
"heading3Tooltip": "小标题。", "heading3Tooltip": "Smaller section header.",
"headingSmaller": "下一级标题", "headingSmaller": "下一级标题",
"headingBigger": "上一级标题", "headingBigger": "上一级标题",
"bold": "粗体", "bold": "粗体",
"italic": "斜体", "italic": "斜体",
"strikethrough": "删除线", "strikethrough": "删除线",
"underline": "下划线", "underline": "Underline",
"code": "代码", "code": "代码",
"codeTooltip": "捕获代码片段", "codeTooltip": "Capture a code snippet.",
"quote": "引用", "quote": "引用",
"quoteTooltip": "捕获引文。", "quoteTooltip": "Capture a quote.",
"bulletList": "符号列表", "bulletList": "Bullet list",
"bulletListTooltip": "创建一个简单的符号列表。", "bulletListTooltip": "Create a simple bullet list.",
"unorderedList": "无序列表", "unorderedList": "Unordered list",
"orderedList": "有序列表", "orderedList": "Ordered list",
"orderedListTooltip": "创建带编号的列表。", "orderedListTooltip": "Create a list with numbering.",
"cleanBlock": "清除格式", "cleanBlock": "清除格式",
"link": "链接", "link": "链接",
"image": "图片", "image": "图片",
"imageTooltip": "从您的计算机上传图片", "imageTooltip": "Upload an image from your computer.",
"table": { "table": {
"title": "表格", "title": "Table",
"insert": "插入表格", "insert": "Insert table",
"addColumnBefore": "在前面添加列", "addColumnBefore": "Add column before",
"addColumnAfter": "在后面添加列", "addColumnAfter": "Add column after",
"deleteColumn": "删除整列", "deleteColumn": "Delete column",
"addRowBefore": "在前面添加行", "addRowBefore": "Add row before",
"addRowAfter": "在后面添加行", "addRowAfter": "Add row after",
"deleteRow": "删除整行", "deleteRow": "Delete row",
"deleteTable": "删除表格", "deleteTable": "Delete table",
"mergeCells": "合并单元格", "mergeCells": "Merge cells",
"splitCell": "拆分单元格", "splitCell": "Split cell",
"toggleHeaderColumn": "切换头部列", "toggleHeaderColumn": "Toggle header column",
"toggleHeaderRow": "切换头部行", "toggleHeaderRow": "Toggle header row",
"toggleHeaderCell": "切换头部单元格", "toggleHeaderCell": "Toggle header cell",
"mergeOrSplit": "合并或拆分", "mergeOrSplit": "Merge or split",
"fixTables": "修复表格" "fixTables": "Fix tables"
}, },
"horizontalRule": "水平线", "horizontalRule": "水平线",
"horizontalRuleTooltip": "分割一节。", "horizontalRuleTooltip": "Divide a section.",
"sideBySide": "并排", "sideBySide": "并排",
"guide": "指南", "guide": "指南",
"text": "文本", "text": "Text",
"textTooltip": "只需开始用纯文本键入。", "textTooltip": "Just start typing with plain text.",
"taskList": "任务列表", "taskList": "Task list",
"taskListTooltip": "用待办事宜列表跟踪任务。", "taskListTooltip": "Track tasks with a to-do list.",
"undo": "撤销", "undo": "Undo",
"redo": "恢复", "redo": "Redo",
"placeholder": "输入一些文本或点击“/”查看更多选项…" "placeholder": "Type some text or hit '/' to see more options…"
}, },
"multiselect": { "multiselect": {
"createPlaceholder": "创建新的", "createPlaceholder": "创建新的",
@ -600,14 +599,14 @@
"canuse": "你可以使用 Date Math 来筛选相对日期。", "canuse": "你可以使用 Date Math 来筛选相对日期。",
"learnhow": "查看它如何工作", "learnhow": "查看它如何工作",
"title": "Date Math", "title": "Date Math",
"intro": "指定应用过滤器时 Vikunja 即时解析的相对日期。", "intro": "Specify relative dates which are resolved on the fly by Vikunja when applying the filter.",
"expression": "每个 Date Math 表达式以锚点日期开头,可以是 {0},也可以是以 {1} 结尾的日期文本。 这个锚点日期后可以跟一个或多个数学表达式。", "expression": "每个 Date Math 表达式以锚点日期开头,可以是 {0},也可以是以 {1} 结尾的日期文本。 这个锚点日期后可以跟一个或多个数学表达式。",
"similar": "这些表达式类似于 {0} 和 {1} 提供的表达式。", "similar": "这些表达式类似于 {0} 和 {1} 提供的表达式。",
"add1Day": "加一天", "add1Day": "加一天",
"minus1Day": "减一天", "minus1Day": "减一天",
"roundDay": "往最近的那天舍入", "roundDay": "往最近的那天舍入",
"supportedUnits": "支持的时间单位是:", "supportedUnits": "Supported time units",
"someExamples": "时间表达式的一些例子:", "someExamples": "Examples of time expressions",
"units": { "units": {
"seconds": "秒数。", "seconds": "秒数。",
"minutes": "分钟", "minutes": "分钟",
@ -636,7 +635,7 @@
"addReminder": "添加一个新的提醒…", "addReminder": "添加一个新的提醒…",
"doneSuccess": "待办事项已标记为完成。", "doneSuccess": "待办事项已标记为完成。",
"undoneSuccess": "待办事项已标记为未完成。", "undoneSuccess": "待办事项已标记为未完成。",
"undo": "撤销", "undo": "Undo",
"openDetail": "查看任务详细信息", "openDetail": "查看任务详细信息",
"checklistTotal": "{checked} 项任务,共 {total} 项。", "checklistTotal": "{checked} 项任务,共 {total} 项。",
"checklistAllDone": "一共 {total} 项任务", "checklistAllDone": "一共 {total} 项任务",
@ -653,7 +652,7 @@
"chooseDueDate": "点击设定截止日期", "chooseDueDate": "点击设定截止日期",
"chooseStartDate": "点击设置开始日期", "chooseStartDate": "点击设置开始日期",
"chooseEndDate": "点击设定结束日期", "chooseEndDate": "点击设定结束日期",
"move": "将任务移动到另一个项目", "move": "Move task to a different project",
"done": "标记为已完成", "done": "标记为已完成",
"undone": "标记为待办", "undone": "标记为待办",
"created": "{1} 创建于 {0}", "created": "{1} 创建于 {0}",
@ -661,12 +660,12 @@
"doneAt": "已完成 {0}", "doneAt": "已完成 {0}",
"updateSuccess": "该任务已保存", "updateSuccess": "该任务已保存",
"deleteSuccess": "任务已删除", "deleteSuccess": "任务已删除",
"belongsToProject": "该任务属于项目'{project}'", "belongsToProject": "This task belongs to project '{project}'",
"due": "截止至 {at}", "due": "截止至 {at}",
"closePopup": "关闭弹窗", "closePopup": "关闭弹窗",
"organization": "机构", "organization": "Organization",
"management": "管理", "management": "Management",
"dateAndTime": "日期与时间", "dateAndTime": "Date and time",
"delete": { "delete": {
"header": "删除此任务", "header": "删除此任务",
"text1": "确定要移除任务吗?", "text1": "确定要移除任务吗?",
@ -684,7 +683,7 @@
"percentDone": "设置进度", "percentDone": "设置进度",
"attachments": "添加附件", "attachments": "添加附件",
"relatedTasks": "添加关联", "relatedTasks": "添加关联",
"moveProject": "移动", "moveProject": "Move",
"color": "设置颜色", "color": "设置颜色",
"delete": "删除", "delete": "删除",
"favorite": "添加至收藏", "favorite": "添加至收藏",
@ -711,15 +710,15 @@
"updated": "已更新" "updated": "已更新"
}, },
"subscription": { "subscription": {
"subscribedTaskThroughParentProject": "你无法在此处取消订阅,因为你已通过其项目订阅了此任务。", "subscribedTaskThroughParentProject": "You can't unsubscribe here because you are subscribed to this task through its project.",
"subscribedProject": "你当前订阅了此项目,并将收到更改通知。", "subscribedProject": "You are currently subscribed to this project and will receive notifications for changes.",
"notSubscribedProject": "你没有订阅此项目,也不会收到更改通知。", "notSubscribedProject": "You are not subscribed to this project and won't receive notifications for changes.",
"subscribedTask": "你当前已订阅此任务并将收到更改通知。", "subscribedTask": "你当前已订阅此任务并将收到更改通知。",
"notSubscribedTask": "你没有订阅此任务,也不会收到更改通知。", "notSubscribedTask": "你没有订阅此任务,也不会收到更改通知。",
"subscribe": "订阅", "subscribe": "订阅",
"unsubscribe": "取消订阅", "unsubscribe": "取消订阅",
"subscribeSuccessProject": "你现在订阅了此项目", "subscribeSuccessProject": "You are now subscribed to this project",
"unsubscribeSuccessProject": "您已取消订阅此项目", "unsubscribeSuccessProject": "You are now unsubscribed to this project",
"subscribeSuccessTask": "你现在订阅了此任务", "subscribeSuccessTask": "你现在订阅了此任务",
"unsubscribeSuccessTask": "你现在已取消订阅此任务" "unsubscribeSuccessTask": "你现在已取消订阅此任务"
}, },
@ -744,7 +743,7 @@
"loading": "正在加载评论…", "loading": "正在加载评论…",
"edited": "编辑于 {date}", "edited": "编辑于 {date}",
"creating": "正在创建评论…", "creating": "正在创建评论…",
"placeholder": "添加您的评论,点击“/”获取更多选项…", "placeholder": "Add your comment, hit '/' for more options…",
"comment": "评论", "comment": "评论",
"delete": "删除此评论", "delete": "删除此评论",
"deleteText1": "确实要删除此评论吗?", "deleteText1": "确实要删除此评论吗?",
@ -758,7 +757,7 @@
"1week": "1周" "1week": "1周"
}, },
"description": { "description": {
"placeholder": "输入描述,点击'/'获取更多选项…", "placeholder": "Enter a description, hit '/' for more options…",
"empty": "尚无描述。" "empty": "尚无描述。"
}, },
"assignee": { "assignee": {
@ -793,7 +792,7 @@
"new": "新任务关系", "new": "新任务关系",
"searchPlaceholder": "输入以搜索要添加关联的新任务...", "searchPlaceholder": "输入以搜索要添加关联的新任务...",
"createPlaceholder": "添加为新的关联任务", "createPlaceholder": "添加为新的关联任务",
"differentProject": "此任务属于另一个项目。", "differentProject": "This task belongs to a different project.",
"noneYet": "还没有任务关联。", "noneYet": "还没有任务关联。",
"delete": "删除关联", "delete": "删除关联",
"deleteText1": "确定要删除此任务关联吗?", "deleteText1": "确定要删除此任务关联吗?",
@ -814,20 +813,20 @@
} }
}, },
"reminder": { "reminder": {
"before": "{type}前{amount} {unit} ", "before": "{amount} {unit} before {type}",
"after": "{type}后{amount} {unit} ", "after": "{amount} {unit} after {type}",
"beforeShort": "之前", "beforeShort": "before",
"afterShort": "之后", "afterShort": "after",
"onDueDate": "截止日期", "onDueDate": "On the due date",
"onStartDate": "开始日期", "onStartDate": "On the start date",
"onEndDate": "结束日期", "onEndDate": "On the end date",
"custom": "自定义", "custom": "Custom",
"dateAndTime": "日期与时间" "dateAndTime": "Date and time"
}, },
"repeat": { "repeat": {
"everyDay": "每天", "everyDay": "每天",
"everyWeek": "每周", "everyWeek": "每周",
"every30d": "每 30 天", "every30d": "Every 30 Days",
"mode": "重复模式", "mode": "重复模式",
"monthly": "每月", "monthly": "每月",
"fromCurrentDate": "从当前日期", "fromCurrentDate": "从当前日期",
@ -841,7 +840,7 @@
"invalidAmount": "请输入大于 0 的数。" "invalidAmount": "请输入大于 0 的数。"
}, },
"quickAddMagic": { "quickAddMagic": {
"hint": "使用魔法前缀来定义到期日期、受让人和其他任务属性。", "hint": "Use magic prefixes to define due dates, assignees and other task properties.",
"title": "快速添加 Magic", "title": "快速添加 Magic",
"intro": "创建任务时,可以使用特殊关键字直接为新创建的任务添加属性。 这能够更快地将常用属性添加到任务中。", "intro": "创建任务时,可以使用特殊关键字直接为新创建的任务添加属性。 这能够更快地将常用属性添加到任务中。",
"multiple": "你可以多次使用此功能。", "multiple": "你可以多次使用此功能。",
@ -852,10 +851,10 @@
"priority1": "要设置任务的优先级,请添加数字 1-5并以 {prefix} 为前缀。", "priority1": "要设置任务的优先级,请添加数字 1-5并以 {prefix} 为前缀。",
"priority2": "数字越大,优先级越高。", "priority2": "数字越大,优先级越高。",
"assignees": "将任务分配给用户,请将带有 {prefix} 前缀的用户名添加到此任务中。", "assignees": "将任务分配给用户,请将带有 {prefix} 前缀的用户名添加到此任务中。",
"project1": "要设置任务显示的项目,请输入其名称,前缀为{prefix}。", "project1": "To set a project for the task to appear in, enter its name prefixed with {prefix}.",
"project2": "如果项目不存在会返回错误。", "project2": "This will return an error if the project does not exist.",
"project3": "要使用空格,只需在项目名称周围添加一个 \" 或 '。", "project3": "To use spaces, simply add a \" or ' around the project name.",
"project4": "例如:{prefix} “带空格的项目”。", "project4": "For example: {prefix}\"Project with spaces\".",
"dateAndTime": "日期与时间", "dateAndTime": "日期与时间",
"date": "任何日期都将当做新任务的截止日期。 可以使用以下格式的日期:", "date": "任何日期都将当做新任务的截止日期。 可以使用以下格式的日期:",
"dateWeekday": "任意工作日,将使用该日期的下一个日期", "dateWeekday": "任意工作日,将使用该日期的下一个日期",
@ -888,19 +887,19 @@
"delete": { "delete": {
"header": "删除此团队", "header": "删除此团队",
"text1": "确定要删除此团队及其所有成员吗?", "text1": "确定要删除此团队及其所有成员吗?",
"text2": "所有团队成员都将无法访问共享给该团队的项目。并且无法撤消!", "text2": "All team members will lose access to projects shared with this team. This CANNOT BE UNDONE!",
"success": "团队已删除。" "success": "团队已删除。"
}, },
"deleteUser": { "deleteUser": {
"header": "从团队中删除用户", "header": "从团队中删除用户",
"text1": "确定要将此成员移出团队吗?", "text1": "确定要将此成员移出团队吗?",
"text2": "所有团队成员都将失去所有项目的访问权限,并且无法撤销!", "text2": "They will lose access to all projects this team has access to. This CANNOT BE UNDONE!",
"success": "此用户已成功从团队中删除。" "success": "此用户已成功从团队中删除。"
}, },
"leave": { "leave": {
"title": "离开团队", "title": "离开团队",
"text1": "您确定要离开这个团队吗?", "text1": "您确定要离开这个团队吗?",
"text2": "您将无法访问该团队拥有的所有项目。 如果你改变主意,你需要一个团队管理员来再次添加你。", "text2": "You will lose access to all projects this team has access to. If you change your mind you'll need a team admin to add you again.",
"success": "您已经成功离开了团队。" "success": "您已经成功离开了团队。"
} }
}, },
@ -909,7 +908,7 @@
"namePlaceholder": "团队的名字在这里……", "namePlaceholder": "团队的名字在这里……",
"nameRequired": "请指定名称。", "nameRequired": "请指定名称。",
"description": "描述信息", "description": "描述信息",
"descriptionPlaceholder": "在此描述团队,点击'/'获取更多选项…", "descriptionPlaceholder": "Describe the team here, hit '/' for more options…",
"admin": "管理员", "admin": "管理员",
"member": "成员" "member": "成员"
} }
@ -932,20 +931,20 @@
"attachment": "向此任务添加附件。", "attachment": "向此任务添加附件。",
"related": "修改此任务的相关任务", "related": "修改此任务的相关任务",
"color": "更改此任务的颜色", "color": "更改此任务的颜色",
"move": "将此任务移至另一个项目。", "move": "Move this task to another project",
"reminder": "管理此任务的提醒", "reminder": "管理此任务的提醒",
"description": "切换编辑时的任务描述", "description": "切换编辑时的任务描述",
"delete": "删除此任务", "delete": "Delete this task",
"priority": "更改此任务的优先级", "priority": "Change the priority of this task",
"favorite": "将此任务标记为收藏/取消收藏", "favorite": "Mark this task as favorite / unfavorite",
"save": "保存当前任务" "save": "Save the current task"
}, },
"project": { "project": {
"title": "项目视图", "title": "Project Views",
"switchToListView": "切换到列表视图", "switchToListView": "Switch to list view",
"switchToGanttView": "切换到甘特图", "switchToGanttView": "Switch to gantt view",
"switchToKanbanView": "切换到看板视图", "switchToKanbanView": "Switch to kanban view",
"switchToTableView": "切换为表格视图" "switchToTableView": "Switch to table view"
}, },
"navigation": { "navigation": {
"title": "导航栏", "title": "导航栏",
@ -953,11 +952,11 @@
"upcoming": "导航到即将到来的任务", "upcoming": "导航到即将到来的任务",
"labels": "导航到标签", "labels": "导航到标签",
"teams": "导航到小组", "teams": "导航到小组",
"projects": "导航到项目" "projects": "Navigate to projects"
} }
}, },
"update": { "update": {
"available": "有新版本可用。", "available": "There is an update available!",
"do": "立即更新" "do": "立即更新"
}, },
"menu": { "menu": {
@ -968,15 +967,15 @@
"unarchive": "取消存档", "unarchive": "取消存档",
"setBackground": "设置背景", "setBackground": "设置背景",
"share": "共享", "share": "共享",
"newProject": "新项目", "newProject": "New project",
"createProject": "创建项目" "createProject": "Create project"
}, },
"apiConfig": { "apiConfig": {
"url": "Vikunja URL", "url": "Vikunja URL",
"urlPlaceholder": "例如: http://localhost:3456", "urlPlaceholder": "例如: http://localhost:3456",
"change": "换一换", "change": "换一换",
"use": "在 {0} 使用 Vikunja 安装程序", "use": "在 {0} 使用 Vikunja 安装程序",
"error": "无法在“{domain}”找到或使用 Vikunja 安装。 请检查url格式是否正确直接访问是否可以访问然后重试。", "error": "Could not find or use Vikunja installation at \"{domain}\". Please check if the url has the correct format and you can reach it when accessing it directly and try again.",
"success": "在 “{domain}” 上使用 Vikunja 安装程序。", "success": "在 “{domain}” 上使用 Vikunja 安装程序。",
"urlRequired": "Url 是必需的。" "urlRequired": "Url 是必需的。"
}, },
@ -988,26 +987,26 @@
"notification": { "notification": {
"title": "通知", "title": "通知",
"none": "没有任何通知。 祝你今天过得愉快!", "none": "没有任何通知。 祝你今天过得愉快!",
"explainer": "当您订阅项目或任务发生时,通知将会显示在这里。", "explainer": "Notifications will appear here when actions projects or tasks you subscribed to happen.",
"markAllRead": "将所有通知标为已读", "markAllRead": "Mark all notifications as read",
"markAllReadSuccess": "成功标记所有通知为已读。" "markAllReadSuccess": "Successfully marked all notifications as read."
}, },
"quickActions": { "quickActions": {
"commands": "命令", "commands": "命令",
"placeholder": "输入命令或搜索…", "placeholder": "输入命令或搜索…",
"hint": "可以使用 {project} 将搜索限制在项目中。 将 {project} 或 {label}(标签)与搜索查询相结合,可以搜索有这些标签或在该项目中的任务。 {assignee} 仅适用于在团队中搜索。", "hint": "You can use {project} to limit the search to a project. Combine {project} or {label} (labels) with a search query to search for a task with these labels or on that project. Use {assignee} to only search for teams.",
"tasks": "任务", "tasks": "任务",
"projects": "项目", "projects": "Projects",
"teams": "团队", "teams": "团队",
"labels": "标签", "labels": "Labels",
"newProject": "输入新项目的标题…", "newProject": "Enter the title of the new project…",
"newTask": "输入新任务的标题...", "newTask": "输入新任务的标题...",
"newTeam": "输入新团队的名称...", "newTeam": "输入新团队的名称...",
"createTask": "在当前项目中创建一个任务 ({title})", "createTask": "Create a task in the current project ({title})",
"createProject": "创建一个项目", "createProject": "Create a project",
"cmds": { "cmds": {
"newTask": "新建任务", "newTask": "新建任务",
"newProject": "新项目", "newProject": "New project",
"newTeam": "新建团队" "newTeam": "新建团队"
} }
}, },
@ -1038,15 +1037,15 @@
"1018": "用户头像设置无效。", "1018": "用户头像设置无效。",
"2001": "ID 不能为空或 0。", "2001": "ID 不能为空或 0。",
"2002": "一些请求数据无效。", "2002": "一些请求数据无效。",
"3001": "项目不存在", "3001": "The project does not exist.",
"3004": "您需要读取该项目的权限才能执行此操作。", "3004": "You need to have read permissions on that project to perform that action.",
"3005": "列表标题不能为空。", "3005": "The project title cannot be empty.",
"3006": "项目共享不存在。", "3006": "The project share does not exist.",
"3007": "具有此标识符的项目已存在。", "3007": "A project with this identifier already exists.",
"3008": "该项目已存档,因此只能读取。与该项目相关的所有任务也是如此。", "3008": "The project is archived and can therefore only be accessed read only. This is also true for all tasks associated with this project.",
"4001": "项目任务文本不能为空。", "4001": "The project task text cannot be empty.",
"4002": "项目任务不存在。", "4002": "The project task does not exist.",
"4003": "所有批量编辑任务必须属于同一项目。", "4003": "All bulk editing tasks must belong to the same project.",
"4004": "批量编辑任务时至少需要选择一项任务。", "4004": "批量编辑任务时至少需要选择一项任务。",
"4005": "你没有权限查看此任务。", "4005": "你没有权限查看此任务。",
"4006": "不能将上级任务设置为任务本身。", "4006": "不能将上级任务设置为任务本身。",
@ -1065,21 +1064,21 @@
"4019": "任务筛选值无效。", "4019": "任务筛选值无效。",
"6001": "团队名称不能为空。", "6001": "团队名称不能为空。",
"6002": "团队不存在。", "6002": "团队不存在。",
"6004": "该团队已经可以访问该项目。", "6004": "The team already has access to that project.",
"6005": "该用户已经是此团队的成员。", "6005": "该用户已经是此团队的成员。",
"6006": "无法删除最后一个团队成员。", "6006": "无法删除最后一个团队成员。",
"6007": "该团队没有权限访问此项目来执行操作。", "6007": "The team does not have access to the project to perform that action.",
"7002": "用户已经有权访问此项目。", "7002": "The user already has access to that project.",
"7003": "您无权访问此项目", "7003": "You do not have access to that project.",
"8001": "此标签已存在于该任务中。", "8001": "此标签已存在于该任务中。",
"8002": "标签不存在。", "8002": "标签不存在。",
"8003": "你没有权限访问此标签。", "8003": "你没有权限访问此标签。",
"9001": "权限无效。", "9001": "权限无效。",
"10001": "存储桶不存在。", "10001": "存储桶不存在。",
"10002": "此存储桶不属于该项目。", "10002": "The bucket does not belong to that project.",
"10003": "无法删除项目中的最后一个存储桶。", "10003": "You cannot remove the last bucket on a project.",
"10004": "无法将任务添加到此存储桶,因为已超过此存储桶可容纳的任务限制。", "10004": "无法将任务添加到此存储桶,因为已超过此存储桶可容纳的任务限制。",
"10005": "每个项目只能有一个已完成的桶。", "10005": "There can be only one done bucket per project.",
"11001": "已保存筛选器不存在。", "11001": "已保存筛选器不存在。",
"11002": "已保存的筛选器不适用于链接共享。", "11002": "已保存的筛选器不适用于链接共享。",
"12001": "订阅实体类型无效。", "12001": "订阅实体类型无效。",
@ -1094,13 +1093,13 @@
}, },
"time": { "time": {
"units": { "units": {
"seconds": "秒|秒", "seconds": "second|seconds",
"minutes": "分|分钟", "minutes": "minute|minutes",
"hours": "时|小时", "hours": "hour|hours",
"days": "天|天", "days": "day|days",
"weeks": "周|周", "weeks": "week|weeks",
"months": "月|月", "months": "month|months",
"years": "年|年" "years": "year|years"
} }
} }
} }

View File

@ -160,7 +160,6 @@
"expired": "This token has expired {ago}.", "expired": "This token has expired {ago}.",
"tokenCreatedSuccess": "Here is your new api token: {token}", "tokenCreatedSuccess": "Here is your new api token: {token}",
"tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!", "tokenCreatedNotSeeAgain": "Store it in a secure location, you won't see it again!",
"selectAll": "Select all",
"delete": { "delete": {
"header": "Delete this token", "header": "Delete this token",
"text1": "Are you sure you want to delete the token \"{token}\"?", "text1": "Are you sure you want to delete the token \"{token}\"?",