Compare commits

..

18 Commits

Author SHA1 Message Date
7e50b6e270
fix: lint
Some checks reported errors
continuous-integration/drone/pr Build was killed
2023-05-31 16:22:02 +02:00
4aad488707 chore: group return parameter
Some checks reported errors
continuous-integration/drone/pr Build was killed
2023-05-31 14:18:58 +00:00
61f0f5210a chore: make fuzzy matching a paramater 2023-05-31 14:18:58 +00:00
8ea27a6655 fix: make type singular 2023-05-31 14:18:58 +00:00
4993673d5c chore(i18n): clarify translation string 2023-05-31 14:18:58 +00:00
1510807164 chore: use startsWith for prefix matching 2023-05-31 14:18:58 +00:00
a99eb820eb fix: clarify user search setting 2023-05-31 14:18:58 +00:00
ef65853278 chore: remove user margin from the component 2023-05-31 14:18:58 +00:00
0bb6085fb1 chore: remove user margin from the component 2023-05-31 14:18:58 +00:00
ede1069577 feat(quick add magic): allow fuzzy matching of assignees when the api results are unambigous 2023-05-31 14:18:58 +00:00
15a5aedcf9 fix: ensure all matched quick add magic parts are correctly removed from the task 2023-05-31 14:18:58 +00:00
5f29624414 fix: lint 2023-05-31 14:18:58 +00:00
502241a173 feat(assignees): show user avatar in search results 2023-05-31 14:18:58 +00:00
7df5a0ba2e feat: show initial list of users when opening the assignees view 2023-05-31 14:18:58 +00:00
1d05675cbd chore: clarify users when can still be found even if they disabled it 2023-05-31 14:18:58 +00:00
0fcf949653 fix(quick add magic): cleanup all assignee properties 2023-05-31 14:18:58 +00:00
22c10d935a fix(quick add magic): use the project user service to find assignees for quick add magic 2023-05-31 14:18:58 +00:00
3d0753ebc8 fix(quick add magic): don't replace the prefix in every occurrence when it is present in the matched part 2023-05-31 14:18:58 +00:00
21 changed files with 1072 additions and 891 deletions

View File

@ -55,7 +55,6 @@ ENV VIKUNJA_API_URL /api/v1
ENV VIKUNJA_SENTRY_ENABLED false
ENV VIKUNJA_SENTRY_DSN https://85694a2d757547cbbc90cd4b55c5a18d@o1047380.ingest.sentry.io/6024480
ENV VIKUNJA_PROJECT_INFINITE_NESTING_ENABLED false
ENV VIKUNJA_ALLOW_ICON_CHANGES true
COPY docker/injector.sh /docker-entrypoint.d/50-injector.sh
COPY docker/ipv6-disable.sh /docker-entrypoint.d/60-ipv6-disable.sh

View File

@ -12,6 +12,5 @@ sed -ri "s:^(\s*window.API_URL\s*=)\s*.+:\1 '${VIKUNJA_API_URL}':g" /usr/share/n
sed -ri "s:^(\s*window.SENTRY_ENABLED\s*=)\s*.+:\1 ${VIKUNJA_SENTRY_ENABLED}:g" /usr/share/nginx/html/index.html
sed -ri "s:^(\s*window.SENTRY_DSN\s*=)\s*.+:\1 '${VIKUNJA_SENTRY_DSN}':g" /usr/share/nginx/html/index.html
sed -ri "s:^(\s*window.PROJECT_INFINITE_NESTING_ENABLED\s*=)\s*.+:\1 '${VIKUNJA_PROJECT_INFINITE_NESTING_ENABLED}':g" /usr/share/nginx/html/index.html
sed -ri "s:^(\s*window.ALLOW_ICON_CHANGES\s*=)\s*.+:\1 '${VIKUNJA_ALLOW_ICON_CHANGES}':g" /usr/share/nginx/html/index.html
date -uIseconds | xargs echo 'info: started at'

View File

@ -30,8 +30,6 @@
// If enabled, allows the user to nest projects infinitely, instead of the default 2 levels.
// This setting might change in the future or be removed completely.
window.PROJECT_INFINITE_NESTING_ENABLED = false
// Allow changing the logo and other icons based on various occasions throughout the year.
window.ALLOW_ICON_CHANGES = true
</script>
</body>
</html>

View File

@ -13,7 +13,7 @@
},
"homepage": "https://vikunja.io/",
"funding": "https://opencollective.com/vikunja",
"packageManager": "pnpm@8.6.1",
"packageManager": "pnpm@8.6.0",
"keywords": [
"todo",
"productivity",
@ -53,8 +53,8 @@
"@infectoone/vue-ganttastic": "2.1.4",
"@intlify/unplugin-vue-i18n": "0.11.0",
"@kyvg/vue3-notification": "2.9.1",
"@sentry/tracing": "7.54.0",
"@sentry/vue": "7.54.0",
"@sentry/tracing": "7.53.1",
"@sentry/vue": "7.53.1",
"@vueuse/core": "10.1.2",
"axios": "1.4.0",
"blurhash": "2.0.5",
@ -62,7 +62,7 @@
"camel-case": "4.1.2",
"codemirror": "5.65.13",
"date-fns": "2.30.0",
"dayjs": "1.11.8",
"dayjs": "1.11.7",
"dompurify": "3.0.3",
"easymde": "2.18.0",
"fast-deep-equal": "3.1.3",
@ -84,11 +84,11 @@
"vue-flatpickr-component": "11.0.3",
"vue-i18n": "9.2.2",
"vue-router": "4.2.2",
"workbox-precaching": "7.0.0",
"workbox-precaching": "6.6.1",
"zhyswan-vuedraggable": "4.1.3"
},
"devDependencies": {
"@4tw/cypress-drag-drop": "2.2.4",
"@4tw/cypress-drag-drop": "2.2.3",
"@cypress/vite-dev-server": "5.0.5",
"@cypress/vue": "5.0.5",
"@faker-js/faker": "8.0.2",
@ -113,34 +113,34 @@
"@vue/test-utils": "2.3.2",
"@vue/tsconfig": "0.4.0",
"autoprefixer": "10.4.14",
"browserslist": "4.21.7",
"caniuse-lite": "1.0.30001494",
"browserslist": "4.21.5",
"caniuse-lite": "1.0.30001489",
"css-has-pseudo": "5.0.2",
"csstype": "3.1.2",
"cypress": "12.13.0",
"esbuild": "0.17.19",
"eslint": "8.42.0",
"eslint": "8.41.0",
"eslint-plugin-vue": "9.13.0",
"happy-dom": "9.20.3",
"happy-dom": "9.20.1",
"histoire": "0.16.1",
"postcss": "8.4.24",
"postcss-easing-gradients": "3.0.1",
"postcss-easings": "3.0.1",
"postcss-focus-within": "7.0.2",
"postcss-preset-env": "8.4.2",
"rollup": "3.23.1",
"postcss-preset-env": "8.4.1",
"rollup": "3.23.0",
"rollup-plugin-visualizer": "5.9.0",
"sass": "1.62.1",
"start-server-and-test": "2.0.0",
"typescript": "5.1.3",
"typescript": "5.0.4",
"vite": "4.3.9",
"vite-plugin-inject-preload": "1.3.1",
"vite-plugin-pwa": "0.16.3",
"vite-plugin-pwa": "0.15.2",
"vite-svg-loader": "4.0.0",
"vitest": "0.31.4",
"vitest": "0.31.2",
"vue-tsc": "1.6.5",
"wait-on": "7.0.1",
"workbox-cli": "7.0.0"
"workbox-cli": "6.6.1"
},
"pnpm": {
"patchedDependencies": {

File diff suppressed because it is too large Load Diff

View File

@ -9,7 +9,7 @@ import {MILLISECONDS_A_HOUR} from '@/constants/date'
const now = useNow({
interval: MILLISECONDS_A_HOUR,
})
const Logo = computed(() => window.ALLOW_ICON_CHANGES && now.value.getMonth() === 5 ? LogoFullPride : LogoFull)
const Logo = computed(() => now.value.getMonth() === 5 ? LogoFullPride : LogoFull)
</script>
<template>

View File

@ -4,7 +4,7 @@
<vue-easymde
:configs="config"
@change="() => bubbleNow()"
@change="() => bubble()"
@update:modelValue="handleInput"
class="content"
v-if="isEditActive"
@ -35,7 +35,7 @@
</BaseButton>
<BaseButton
v-else-if="isEditActive"
@click="bubbleSaveClick"
@click="toggleEdit"
class="done-edit">
{{ $t('misc.save') }}
</BaseButton>
@ -56,7 +56,7 @@
</ul>
<x-button
v-else-if="isEditActive"
@click="bubbleSaveClick"
@click="toggleEdit"
variant="secondary"
:shadow="false"
v-cy="'saveEditor'">
@ -84,8 +84,8 @@ import {createRandomID} from '@/helpers/randomId'
import BaseButton from '@/components/base/BaseButton.vue'
import ButtonLink from '@/components/misc/ButtonLink.vue'
import type {IAttachment} from '@/modelTypes/IAttachment'
import type {ITask} from '@/modelTypes/ITask'
import type { IAttachment } from '@/modelTypes/IAttachment'
import type { ITask } from '@/modelTypes/ITask'
const props = defineProps({
modelValue: {
@ -115,7 +115,7 @@ const props = defineProps({
default: true,
},
bottomActions: {
type: Array,
type: Array,
default: () => [],
},
emptyText: {
@ -134,9 +134,10 @@ const props = defineProps({
},
})
const emit = defineEmits(['update:modelValue', 'save'])
const emit = defineEmits(['update:modelValue'])
const text = ref('')
const changeTimeout = ref<ReturnType<typeof setTimeout> | null>(null)
const isEditActive = ref(false)
const isPreviewActive = ref(true)
@ -147,7 +148,7 @@ const preview = ref('')
const attachmentService = new AttachmentService()
type CacheKey = `${ITask['id']}-${IAttachment['id']}`
const loadedAttachments = ref<{ [key: CacheKey]: string }>({})
const loadedAttachments = ref<{[key: CacheKey]: string}>({})
const config = ref(createEasyMDEConfig({
placeholder: props.placeholder,
uploadImage: props.uploadEnabled,
@ -174,7 +175,7 @@ watch(
if (oldVal === '' && text.value === modelValue.value) {
return
}
bubbleNow()
bubble()
},
)
@ -207,11 +208,17 @@ function handleInput(val: string) {
}
text.value = val
bubbleNow()
bubble(1000)
}
function bubbleNow() {
emit('update:modelValue', text.value)
function bubble(timeout = 5000) {
if (changeTimeout.value !== null) {
clearTimeout(changeTimeout.value)
}
changeTimeout.value = setTimeout(() => {
emit('update:modelValue', text.value)
}, timeout)
}
function replaceAt(str: string, index: number, replacement: string) {
@ -280,26 +287,24 @@ function handleCheckboxClick(e: Event) {
return
}
const projectPrefix = text.value.substring(index, index + 1)
console.debug({index, projectPrefix, checked, text: text.value})
text.value = replaceAt(text.value, index, `${projectPrefix} ${checked ? '[x]' : '[ ]'} `)
bubbleNow()
emit('save', text.value)
bubble()
renderPreview()
}
function toggleEdit() {
isPreviewActive.value = false
isEditActive.value = true
}
function bubbleSaveClick() {
isPreviewActive.value = true
isEditActive.value = false
renderPreview()
bubbleNow()
emit('save', text.value)
if (isEditActive.value) {
isPreviewActive.value = true
isEditActive.value = false
renderPreview()
bubble(0) // save instantly
} else {
isPreviewActive.value = false
isEditActive.value = true
}
}
</script>

View File

@ -74,13 +74,9 @@
@update:model-value="
() => {
toggleEdit(c)
editCommentWithDelay()
editComment()
}
"
@save="() => {
toggleEdit(c)
editComment()
}"
:bottom-actions="actions[c.id]"
:show-save="true"
/>
@ -283,26 +279,10 @@ function toggleDelete(commentId: ITaskComment['id']) {
commentToDelete.id = commentId
}
const changeTimeout = ref<ReturnType<typeof setTimeout> | null>(null)
async function editCommentWithDelay() {
if (changeTimeout.value !== null) {
clearTimeout(changeTimeout.value)
}
changeTimeout.value = setTimeout(async () => {
await editComment()
}, 5000)
}
async function editComment() {
if (commentEdit.comment === '') {
return
}
if (changeTimeout.value !== null) {
clearTimeout(changeTimeout.value)
}
saving.value = commentEdit.id

View File

@ -25,8 +25,7 @@
:show-save="true"
edit-shortcut="e"
v-model="task.description"
@update:model-value="saveWithDelay"
@save="save"
@update:model-value="save"
/>
</div>
</template>
@ -41,6 +40,7 @@ import type {ITask} from '@/modelTypes/ITask'
import {useTaskStore} from '@/stores/tasks'
import TaskModel from '@/models/task'
const props = defineProps({
modelValue: {
type: Object as PropType<ITask>,
@ -74,23 +74,7 @@ watch(
{immediate: true},
)
const changeTimeout = ref<ReturnType<typeof setTimeout> | null>(null)
async function saveWithDelay() {
if (changeTimeout.value !== null) {
clearTimeout(changeTimeout.value)
}
changeTimeout.value = setTimeout(async () => {
await save()
}, 5000)
}
async function save() {
if (changeTimeout.value !== null) {
clearTimeout(changeTimeout.value)
}
saving.value = true
try {

View File

@ -6,7 +6,9 @@
"welcomeEvening": "Good Evening {username}!",
"lastViewed": "Last viewed",
"project": {
"importText": "Import your projects and tasks from other services into Vikunja:",
"newText": "You can create a new project for your new tasks:",
"new": "New project",
"importText": "Or import your projects and tasks from other services into Vikunja:",
"import": "Import your data into Vikunja"
}
},
@ -141,7 +143,7 @@
},
"deletion": {
"title": "Delete your Vikunja Account",
"text1": "The deletion of your account is permanent and cannot be undone. We will delete all your projects, tasks and everything associated with it.",
"text1": "The deletion of your account is permanent and cannot be undone. We will delete all your namespaces, projects, tasks and everything associated with it.",
"text2": "To proceed, please enter your password. You will receive an email with further instructions.",
"confirm": "Delete my account",
"requestSuccess": "The request was successful. You'll receive an email with further instructions.",
@ -155,7 +157,7 @@
},
"export": {
"title": "Export your Vikunja data",
"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.",
"description": "You can request a copy of all your Vikunja data. This include Namespaces, Projects, Tasks and everything associated to them. You can import this data in any Vikunja instance through the migration function.",
"descriptionPasswordRequired": "Please enter your password to proceed:",
"request": "Request a copy of my Vikunja Data",
"success": "You've successfully requested your Vikunja Data! We will send you an email once it's ready to download.",
@ -163,18 +165,14 @@
}
},
"project": {
"archivedMessage": "This project is archived. It is not possible to create new or edit tasks for it.",
"archived": "Archived",
"showArchived": "Show Archived",
"archived": "This project is archived. It is not possible to create new or edit tasks for it.",
"title": "Project Title",
"color": "Color",
"projects": "Projects",
"parent": "Parent Project",
"search": "Type to search for a project…",
"searchSelect": "Click or press enter to select this project",
"shared": "Shared Projects",
"noDescriptionAvailable": "No project description is available.",
"inboxTitle": "Inbox",
"create": {
"header": "New project",
"titlePlaceholder": "The project's title goes here…",
@ -212,7 +210,7 @@
"duplicate": {
"title": "Duplicate this project",
"label": "Duplicate",
"text": "Select a parent project which should hold the duplicated project:",
"text": "Select a namespace which should hold the duplicated project:",
"success": "The project was successfully duplicated."
},
"edit": {
@ -323,6 +321,67 @@
}
}
},
"namespace": {
"title": "Namespaces & Projects",
"namespace": "Namespace",
"showArchived": "Show Archived",
"noneAvailable": "You don't have any namespaces right now.",
"unarchive": "Un-Archive",
"archived": "Archived",
"noProjects": "This namespace does not contain any projects.",
"createProject": "Create a new project in this namespace.",
"namespaces": "Namespaces",
"search": "Type to search for a namespace…",
"create": {
"title": "New namespace",
"titleRequired": "Please specify a title.",
"explanation": "A namespace is a collection of projects you can share and use to organize your projects with. In fact, every project belongs to a namespace.",
"tooltip": "What's a namespace?",
"success": "The namespace was successfully created."
},
"archive": {
"titleArchive": "Archive \"{namespace}\"",
"titleUnarchive": "Un-Archive \"{namespace}\"",
"archiveText": "You won't be able to edit this namespace or create new projects until you un-archive it. This will also archive all projects in this namespace.",
"unarchiveText": "You will be able to create new projects or edit it.",
"success": "The namespace was successfully archived.",
"unarchiveSuccess": "The namespace was successfully un-archived.",
"description": "If a namespace is archived, you cannot create new projects or edit it."
},
"delete": {
"title": "Delete \"{namespace}\"",
"text1": "Are you sure you want to delete this namespace and all of its contents?",
"text2": "This includes all projects and tasks and CANNOT BE UNDONE!",
"success": "The namespace was successfully deleted."
},
"edit": {
"title": "Edit \"{namespace}\"",
"success": "The namespace was successfully updated."
},
"share": {
"title": "Share \"{namespace}\""
},
"attributes": {
"title": "Namespace Title",
"titlePlaceholder": "The namespace title goes here…",
"description": "Description",
"descriptionPlaceholder": "The namespaces description goes here…",
"color": "Color",
"archived": "Is Archived",
"isArchived": "This namespace is archived"
},
"pseudo": {
"sharedProjects": {
"title": "Shared Projects"
},
"favorites": {
"title": "Favorites"
},
"savedFilters": {
"title": "Filters"
}
}
},
"filters": {
"title": "Filters",
"clear": "Clear Filters",
@ -344,7 +403,7 @@
},
"create": {
"title": "New Saved Filter",
"description": "A saved filter is a virtual project which is computed from a set of filters each time it is accessed.",
"description": "A saved filter is a virtual project which is computed from a set of filters each time it is accessed. Once created, it will appear in a special namespace.",
"action": "Create new saved filter",
"titleRequired": "Please provide a title for the filter."
},
@ -615,13 +674,19 @@
"updated": "Updated"
},
"subscription": {
"subscribedProjectThroughParentNamespace": "You can't unsubscribe here because you are subscribed to this project through its namespace.",
"subscribedTaskThroughParentNamespace": "You can't unsubscribe here because you are subscribed to this task through its namespace.",
"subscribedTaskThroughParentProject": "You can't unsubscribe here because you are subscribed to this task through its project.",
"subscribedNamespace": "You are currently subscribed to this namespace and will receive notifications for changes.",
"notSubscribedNamespace": "You are not subscribed to this namespace and won't receive notifications for changes.",
"subscribedProject": "You are currently subscribed to this project and will receive notifications for changes.",
"notSubscribedProject": "You are not subscribed to this project and won't receive notifications for changes.",
"subscribedTask": "You are currently subscribed to this task and will receive notifications for changes.",
"notSubscribedTask": "You are not subscribed to this task and won't receive notifications for changes.",
"subscribe": "Subscribe",
"unsubscribe": "Unsubscribe",
"subscribeSuccessNamespace": "You are now subscribed to this namespace",
"unsubscribeSuccessNamespace": "You are now unsubscribed to this namespace",
"subscribeSuccessProject": "You are now subscribed to this project",
"unsubscribeSuccessProject": "You are now unsubscribed to this project",
"subscribeSuccessTask": "You are now subscribed to this task",
@ -698,6 +763,7 @@
"searchPlaceholder": "Type search for a new task to add as related…",
"createPlaceholder": "Add this as new related task",
"differentProject": "This task belongs to a different project.",
"differentNamespace": "This task belongs to a different namespace.",
"noneYet": "No task relations yet.",
"delete": "Delete Task Relation",
"deleteText1": "Are you sure you want to delete this task relation?",
@ -782,19 +848,19 @@
"delete": {
"header": "Delete the team",
"text1": "Are you sure you want to delete this team and all of its members?",
"text2": "All team members will lose access to projects shared with this team. This CANNOT BE UNDONE!",
"text2": "All team members will lose access to projects and namespaces shared with this team. This CANNOT BE UNDONE!",
"success": "The team was successfully deleted."
},
"deleteUser": {
"header": "Remove a user from the team",
"text1": "Are you sure you want to remove this user from the team?",
"text2": "They will lose access to all projects this team has access to. This CANNOT BE UNDONE!",
"text2": "They will lose access to all projects and namespaces this team has access to. This CANNOT BE UNDONE!",
"success": "The user was successfully deleted from the team."
},
"leave": {
"title": "Leave team",
"text1": "Are you sure you want to leave this team?",
"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.",
"text2": "You will lose access to all projects and namespaces this team has access to. If you change your mind you'll need a team admin to add you again.",
"success": "You have successfully left the team."
}
},
@ -844,9 +910,9 @@
"title": "Navigation",
"overview": "Navigate to overview",
"upcoming": "Navigate to upcoming tasks",
"namespaces": "Navigate to namespaces & projects",
"labels": "Navigate to labels",
"teams": "Navigate to teams",
"projects": "Navigate to projects"
"teams": "Navigate to teams"
}
},
"update": {
@ -861,8 +927,7 @@
"unarchive": "Un-Archive",
"setBackground": "Set background",
"share": "Share",
"newProject": "New project",
"createProject": "Create project"
"newProject": "New project"
},
"apiConfig": {
"url": "Vikunja URL",
@ -881,7 +946,7 @@
"notification": {
"title": "Notifications",
"none": "You don't have any notifications. Have a nice day!",
"explainer": "Notifications will appear here when actions projects or tasks you subscribed to happen."
"explainer": "Notifications will appear here when actions on namespaces, projects or tasks you subscribed to happen."
},
"quickActions": {
"commands": "Commands",
@ -892,12 +957,14 @@
"teams": "Teams",
"newProject": "Enter the title of the new project…",
"newTask": "Enter the title of the new task…",
"newNamespace": "Enter the title of the new namespace…",
"newTeam": "Enter the name of the new team…",
"createTask": "Create a task in the current project ({title})",
"createProject": "Create a project",
"createProject": "Create a project in the current namespace ({title})",
"cmds": {
"newTask": "New task",
"newProject": "New project",
"newNamespace": "New namespace",
"newTeam": "New team"
}
},
@ -953,9 +1020,16 @@
"4017": "Invalid task filter comparator.",
"4018": "Invalid task filter concatenator.",
"4019": "Invalid task filter value.",
"5001": "The namespace does not exist.",
"5003": "You do not have access to the specified namespace.",
"5006": "The namespace name cannot be empty.",
"5009": "You need to have namespace read access to perform that action.",
"5010": "This team does not have access to that namespace.",
"5011": "This user has already access to that namespace.",
"5012": "The namespace is archived and can therefore only be accessed read only.",
"6001": "The team name cannot be empty.",
"6002": "The team does not exist.",
"6004": "The team already has access to that project.",
"6004": "The team already has access to that namespace or project.",
"6005": "The user is already a member of that team.",
"6006": "Cannot delete the last team member.",
"6007": "The team does not have access to the project to perform that action.",

View File

@ -6,7 +6,9 @@
"welcomeEvening": "Dobrý večer {username}!",
"lastViewed": "Naposledy zobrazeno",
"project": {
"importText": "Import your projects and tasks from other services into Vikunja:",
"newText": "You can create a new project for your new tasks:",
"new": "New project",
"importText": "Or import your projects and tasks from other services into Vikunja:",
"import": "Import your data into Vikunja"
}
},
@ -141,7 +143,7 @@
},
"deletion": {
"title": "Smazat svůj účet",
"text1": "The deletion of your account is permanent and cannot be undone. We will delete all your projects, tasks and everything associated with it.",
"text1": "The deletion of your account is permanent and cannot be undone. We will delete all your namespaces, projects, tasks and everything associated with it.",
"text2": "Chcete-li pokračovat, zadejte své heslo. Obdržíte e-mail s dalšími pokyny.",
"confirm": "Smazat můj účet",
"requestSuccess": "Požadavek byl úspěšný. Obdržíte e-mail s dalšími pokyny.",
@ -155,7 +157,7 @@
},
"export": {
"title": "Exportovat data účtu",
"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.",
"description": "You can request a copy of all your Vikunja data. This include Namespaces, Projects, Tasks and everything associated to them. You can import this data in any Vikunja instance through the migration function.",
"descriptionPasswordRequired": "Pokračujte zadáním vašeho hesla:",
"request": "Požádat o kopii mých dat",
"success": "Úspěšně jste požádali o svá data! Jakmile budou připravena ke stažení, pošleme Vám e-mail.",
@ -163,18 +165,14 @@
}
},
"project": {
"archivedMessage": "This project is archived. It is not possible to create new or edit tasks for it.",
"archived": "Archived",
"showArchived": "Show Archived",
"archived": "This project is archived. It is not possible to create new or edit tasks for it.",
"title": "Project Title",
"color": "Color",
"projects": "Projects",
"parent": "Parent Project",
"search": "Type to search for a project…",
"searchSelect": "Click or press enter to select this project",
"shared": "Shared Projects",
"noDescriptionAvailable": "No project description is available.",
"inboxTitle": "Inbox",
"create": {
"header": "New project",
"titlePlaceholder": "The project's title goes here…",
@ -212,7 +210,7 @@
"duplicate": {
"title": "Duplicate this project",
"label": "Duplicate",
"text": "Select a parent project which should hold the duplicated project:",
"text": "Select a namespace which should hold the duplicated project:",
"success": "The project was successfully duplicated."
},
"edit": {
@ -323,6 +321,67 @@
}
}
},
"namespace": {
"title": "Namespaces & Projects",
"namespace": "Prostor",
"showArchived": "Zobrazit archivované",
"noneAvailable": "Momentálně nemáte žádné prostory.",
"unarchive": "Obnovit archiv",
"archived": "Archivováno",
"noProjects": "This namespace does not contain any projects.",
"createProject": "Create a new project in this namespace.",
"namespaces": "Prostory",
"search": "Začni psát pro vyhledání prostoru…",
"create": {
"title": "Nový prostor",
"titleRequired": "Uveďte prosím název.",
"explanation": "A namespace is a collection of projects you can share and use to organize your projects with. In fact, every project belongs to a namespace.",
"tooltip": "Co je prostor?",
"success": "Prostor byl úspěšně vytvořen."
},
"archive": {
"titleArchive": "Archivovat \"{namespace}\"",
"titleUnarchive": "Odarchivovat \"{namespace}\"",
"archiveText": "You won't be able to edit this namespace or create new projects until you un-archive it. This will also archive all projects in this namespace.",
"unarchiveText": "You will be able to create new projects or edit it.",
"success": "Prostor byl úspěšně archivován.",
"unarchiveSuccess": "Jmenný prostor byl úspěšně obnoven.",
"description": "If a namespace is archived, you cannot create new projects or edit it."
},
"delete": {
"title": "Smazat \"{namespace}\"",
"text1": "Opravdu chcete odstranit tento prostor a všechen jeho obsah?",
"text2": "This includes all projects and tasks and CANNOT BE UNDONE!",
"success": "Prostor byl úspěšně smazán."
},
"edit": {
"title": "Upravit \"{namespace}\"",
"success": "Prostor byl úspěšně aktualizován."
},
"share": {
"title": "Sdílet \"{namespace}\""
},
"attributes": {
"title": "Název prostoru",
"titlePlaceholder": "Název seznamu přijde sem…",
"description": "Popis",
"descriptionPlaceholder": "Popis seznamu přijde sem…",
"color": "Barva",
"archived": "Archivováno",
"isArchived": "Tento prostor je archivován"
},
"pseudo": {
"sharedProjects": {
"title": "Shared Projects"
},
"favorites": {
"title": "Oblíbené"
},
"savedFilters": {
"title": "Filtry"
}
}
},
"filters": {
"title": "Filtry",
"clear": "Vymazat filtry",
@ -344,7 +403,7 @@
},
"create": {
"title": "Nový uložený filtr",
"description": "A saved filter is a virtual project which is computed from a set of filters each time it is accessed.",
"description": "A saved filter is a virtual project which is computed from a set of filters each time it is accessed. Once created, it will appear in a special namespace.",
"action": "Vytvořit uložený filtr",
"titleRequired": "Please provide a title for the filter."
},
@ -615,13 +674,19 @@
"updated": "Aktualizováno"
},
"subscription": {
"subscribedProjectThroughParentNamespace": "You can't unsubscribe here because you are subscribed to this project through its namespace.",
"subscribedTaskThroughParentNamespace": "Zde se nemůžete odhlásit, protože jste přihlášeni k odběru tohoto úkolu prostřednictvím jeho prostoru.",
"subscribedTaskThroughParentProject": "You can't unsubscribe here because you are subscribed to this task through its project.",
"subscribedNamespace": "Nyní jste přihlášeni k odběru tohoto prostoru a budete dostávat oznámení o změnách.",
"notSubscribedNamespace": "Nejste přihlášeni k odběru tohoto prostoru, takže nebudete dostávat upozornění na změny.",
"subscribedProject": "You are currently subscribed to this project and will receive notifications for changes.",
"notSubscribedProject": "You are not subscribed to this project and won't receive notifications for changes.",
"subscribedTask": "Nyní jste přihlášeni k odběru tohoto úkolu a budete dostávat oznámení o změnách.",
"notSubscribedTask": "Nejste přihlášeni k odběru tohoto úkolu, takže nebudete dostávat upozornění na změny.",
"subscribe": "Odebírat",
"unsubscribe": "Odhlásit odběr",
"subscribeSuccessNamespace": "Nyní jste přihlášeni k tomuto prostoru",
"unsubscribeSuccessNamespace": "Nyní jste odhlášeni od tohoto prostoru",
"subscribeSuccessProject": "You are now subscribed to this project",
"unsubscribeSuccessProject": "You are now unsubscribed to this project",
"subscribeSuccessTask": "Nyní jste přihlášeni k tomuto úkolu",
@ -698,6 +763,7 @@
"searchPlaceholder": "Hledejte nový úkol, který chcete přidat jako související…",
"createPlaceholder": "Přidat toto jako nový související úkol",
"differentProject": "This task belongs to a different project.",
"differentNamespace": "Tento úkol patří do jiného prostoru.",
"noneYet": "Zatím žádné vztahy mezi úkoly.",
"delete": "Odstranit vztah k úloze",
"deleteText1": "Jste si jisti, že chcete odstranit tento vztah úkolu?",
@ -782,19 +848,19 @@
"delete": {
"header": "Smazat tým",
"text1": "Jste si jisti, že chcete smazat tento tým a všechny jeho členy?",
"text2": "All team members will lose access to projects shared with this team. This CANNOT BE UNDONE!",
"text2": "All team members will lose access to projects and namespaces shared with this team. This CANNOT BE UNDONE!",
"success": "Tým byl úspěšně smazán."
},
"deleteUser": {
"header": "Odebrat uživatele z týmu",
"text1": "Opravdu chcete odebrat tohoto uživatele z týmu?",
"text2": "They will lose access to all projects this team has access to. This CANNOT BE UNDONE!",
"text2": "They will lose access to all projects and namespaces this team has access to. This CANNOT BE UNDONE!",
"success": "Uživatel byl úspěšně odstraněn z týmu."
},
"leave": {
"title": "Opustit tým",
"text1": "Opravdu chcete opustit tento tým?",
"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.",
"text2": "You will lose access to all projects and namespaces this team has access to. If you change your mind you'll need a team admin to add you again.",
"success": "Úspěšně jste opustili tým."
}
},
@ -844,9 +910,9 @@
"title": "Navigace",
"overview": "Přejít na přehled",
"upcoming": "Přejít na nadcházející úkoly",
"namespaces": "Navigate to namespaces & projects",
"labels": "Přejít na štítky",
"teams": "Přejít na týmy",
"projects": "Navigate to projects"
"teams": "Přejít na týmy"
}
},
"update": {
@ -861,8 +927,7 @@
"unarchive": "Zrušit archivaci",
"setBackground": "Nastavit pozadí",
"share": "Sdílet",
"newProject": "New project",
"createProject": "Create project"
"newProject": "New project"
},
"apiConfig": {
"url": "Vikunja URL",
@ -881,7 +946,7 @@
"notification": {
"title": "Oznámení",
"none": "Nemáte žádná oznámení. Mějte příjemný den!",
"explainer": "Notifications will appear here when actions projects or tasks you subscribed to happen."
"explainer": "Notifications will appear here when actions on namespaces, projects or tasks you subscribed to happen."
},
"quickActions": {
"commands": "Příkazy",
@ -892,12 +957,14 @@
"teams": "Týmy",
"newProject": "Enter the title of the new project…",
"newTask": "Zadejte název nového úkolu…",
"newNamespace": "Zadejte název nového prostoru…",
"newTeam": "Zadejte název nového týmu…",
"createTask": "Create a task in the current project ({title})",
"createProject": "Create a project",
"createProject": "Create a project in the current namespace ({title})",
"cmds": {
"newTask": "Nový úkol",
"newProject": "New project",
"newNamespace": "Nový prostor",
"newTeam": "Nový tým"
}
},
@ -953,9 +1020,16 @@
"4017": "Neplatný komparátor filtru úkolů.",
"4018": "Neplatné zřetězení filtru úkolů.",
"4019": "Neplatná hodnota filtru úkolů.",
"5001": "Prostor neexistuje.",
"5003": "Nemáte přístup ke zvolenému prostoru.",
"5006": "Název prostoru nemůže být prázdný.",
"5009": "Pro provedení této akce musíte mít k prostoru přístup ke čtení.",
"5010": "Tento tým nemá k tomuto prostoru přístup.",
"5011": "Tento uživatel již má přístup k tomuto prostoru.",
"5012": "Prostor je archivován, a proto je přístupný pouze pro čtení.",
"6001": "Název týmu nemůže být prázdný.",
"6002": "Tým neexistuje.",
"6004": "The team already has access to that project.",
"6004": "The team already has access to that namespace or project.",
"6005": "Uživatel je již členem tohoto týmu.",
"6006": "Nelze odstranit posledního člena týmu.",
"6007": "The team does not have access to the project to perform that action.",

View File

@ -894,7 +894,7 @@
"newTask": "Indtast titlen på den nye opgave…",
"newTeam": "Indtast navnet på det nye hold…",
"createTask": "Create a task in the current project ({title})",
"createProject": "Create a project",
"createProject": "Create a project in the current namespace ({title})",
"cmds": {
"newTask": "Ny Opgave",
"newProject": "New project",
@ -955,7 +955,7 @@
"4019": "Ugyldig værdi til opgavefilter.",
"6001": "Holdnavnet må ikke være tomt.",
"6002": "Holdet findes ikke.",
"6004": "The team already has access to that project.",
"6004": "The team already has access to that namespace or project.",
"6005": "Brugeren er allerede medlem af holdet.",
"6006": "Kan ikke slette det sidste holdmedlem.",
"6007": "The team does not have access to the project to perform that action.",

View File

@ -6,8 +6,8 @@
"welcomeEvening": "Guten Abend, {username}!",
"lastViewed": "Zuletzt angesehen",
"project": {
"importText": "Importiere deine Projekte und Aufgaben aus anderen Diensten in Vikunja:",
"import": "Importiere deine Daten in Vikunja"
"importText": "Import your projects and tasks from other services into Vikunja:",
"import": "Import your data into Vikunja"
}
},
"404": {
@ -83,7 +83,7 @@
"weekStartSunday": "Sonntag",
"weekStartMonday": "Montag",
"language": "Sprache",
"defaultProject": "Standard-Projekt",
"defaultProject": "Default Project",
"timezone": "Zeitzone",
"overdueTasksRemindersTime": "Zeit der E-Mail-Zusammenfassung der überfälligen Aufgaben"
},
@ -141,7 +141,7 @@
},
"deletion": {
"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": "The deletion of your account is permanent and cannot be undone. We will delete all your projects, tasks and everything associated with it.",
"text2": "Zum Fortfahren gib bitte dein Passwort ein. Du erhältst eine E-Mail mit weiteren Anweisungen.",
"confirm": "Meinen Account löschen",
"requestSuccess": "Die Anfrage war erfolgreich. Du erhältst eine E-Mail mit weiteren Anweisungen.",
@ -155,7 +155,7 @@
},
"export": {
"title": "Exportiere deine Vikunja-Daten",
"description": "Du kannst eine Kopie deiner Daten bei Vikunja anfordern. Dazu gehören Projekte, Aufgaben und alles, was damit zusammenhängt. Du kannst diese Daten dann in jeder Vikunja-Instanz über die Migrationsfunktion importieren.",
"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": "Bitte gib dein Passwort ein, um fortzufahren:",
"request": "Eine Kopie meiner Vikunja Daten anfordern",
"success": "Du hast deine Daten bei Vikunja erfolgreich angefordert! Wir schicken dir eine E-Mail, sobald sie zum Download bereitstehen.",
@ -163,163 +163,163 @@
}
},
"project": {
"archivedMessage": "Dieses Projekt ist archiviert. Es ist nicht möglich, neue Aufgaben zu erstellen oder es zu bearbeiten.",
"archived": "Archiviert",
"showArchived": "Archivierte anzeigen",
"title": "Projekttitel",
"color": "Farbe",
"projects": "Projekte",
"parent": "Übergeordnetes Projekt",
"search": "Tippe, um nach einem Projekt zu suchen…",
"searchSelect": "Klicke oder drücke die Eingabetaste, um dieses Projekt auszuwählen",
"shared": "Geteilte Projekte",
"noDescriptionAvailable": "Keine Projektbeschreibung verfügbar.",
"inboxTitle": "Eingang",
"archivedMessage": "This project is archived. It is not possible to create new or edit tasks for it.",
"archived": "Archived",
"showArchived": "Show Archived",
"title": "Project Title",
"color": "Color",
"projects": "Projects",
"parent": "Parent Project",
"search": "Type to search for a project…",
"searchSelect": "Click or press enter to select this project",
"shared": "Shared Projects",
"noDescriptionAvailable": "No project description is available.",
"inboxTitle": "Inbox",
"create": {
"header": "Neues Projekt",
"titlePlaceholder": "Der Titel des Projekts kommt hier hin…",
"addTitleRequired": "Bitte gebe einen Titel an.",
"createdSuccess": "Das Projekt wurde erfolgreich erstellt.",
"addProjectRequired": "Bitte gebe ein Projekt an oder lege ein Standard-Projekt in den Einstellungen fest."
"header": "New project",
"titlePlaceholder": "The project's title goes here…",
"addTitleRequired": "Please specify a title.",
"createdSuccess": "The project was successfully created.",
"addProjectRequired": "Please specify a project or set a default project in the settings."
},
"archive": {
"title": "„{project}“ archivieren",
"archive": "Dieses Projekt archivieren",
"unarchive": "Archivierung dieses Projekts aufheben",
"unarchiveText": "Du wirst neue Aufgaben erstellen oder sie bearbeiten können.",
"archiveText": "Du kannst dieses Projekt nicht bearbeiten oder neue Aufgaben erstellen, bis du die Archivierung aufhebst.",
"success": "Das Projekt wurde erfolgreich archiviert."
"title": "Archive \"{project}\"",
"archive": "Archive this project",
"unarchive": "Un-Archive this project",
"unarchiveText": "You will be able to create new tasks or edit it.",
"archiveText": "You won't be able to edit this project or create new tasks until you un-archive it.",
"success": "The project was successfully archived."
},
"background": {
"title": "Projekthintergrund festlegen",
"remove": "Hintergrund entfernen",
"upload": "Wähle einen Hintergrund von deinem Computer",
"searchPlaceholder": "Nach einem Hintergrund suchen…",
"title": "Set project background",
"remove": "Remove Background",
"upload": "Choose a background from your pc",
"searchPlaceholder": "Search for a background…",
"poweredByUnsplash": "Powered by Unsplash",
"loadMore": "Weitere Bilder laden",
"success": "Der Hintergrund wurde erfolgreich eingestellt!",
"removeSuccess": "Der Hintergrund wurde erfolgreich entfernt!"
"loadMore": "Load more photos",
"success": "The background has been set successfully!",
"removeSuccess": "The background has been removed successfully!"
},
"delete": {
"title": "„{project}“ löschen",
"header": "Dieses Projekt löschen",
"text1": "Bist du sicher, dass du dieses Projekt und alle seine Inhalte löschen willst?",
"text2": "Dies umfasst alle Aufgaben und kann NICHT rückgängig gemacht werden!",
"success": "Das Projekt wurde erfolgreich gelöscht.",
"tasksToDelete": "Dies löscht unwiderruflich ca. {count} Aufgaben.",
"noTasksToDelete": "Dieses Projekt enthält keine Aufgaben, es kann sicher gelöscht werden."
"title": "Delete \"{project}\"",
"header": "Delete this project",
"text1": "Are you sure you want to delete this project and all of its contents?",
"text2": "This includes all tasks and CANNOT BE UNDONE!",
"success": "The project was successfully deleted.",
"tasksToDelete": "This will irrevocably remove approx. {count} tasks.",
"noTasksToDelete": "This project does not contain any tasks, it should be safe to delete."
},
"duplicate": {
"title": "Dupliziere dieses Projekt",
"label": "Duplizieren",
"text": "Wähle ein übergeordnetes Projekt aus, welches das duplizierte Projekt enthalten soll:",
"success": "Das Projekt wurde erfolgreich dupliziert."
"title": "Duplicate this project",
"label": "Duplicate",
"text": "Select a parent project which should hold the duplicated project:",
"success": "The project was successfully duplicated."
},
"edit": {
"header": "Dieses Projekt bearbeiten",
"title": "„{project}“ bearbeiten",
"titlePlaceholder": "Der Titel des Projekts kommt hier hin…",
"identifierTooltip": "Der Projektbezeichner kann zur eindeutigen Identifizierung einer Aufgabe über mehrere Projekte hinweg verwendet werden. Du kannst ihn auf leer setzen, um ihn zu deaktivieren.",
"identifier": "Projektbezeichner",
"identifierPlaceholder": "Der Projektbezeichner kommt hierhin…",
"description": "Beschreibung",
"descriptionPlaceholder": "Projektbeschreibung eingeben…",
"color": "Farbe",
"success": "Das Projekt wurde erfolgreich aktualisiert."
"header": "Edit This Project",
"title": "Edit \"{project}\"",
"titlePlaceholder": "The project title goes here…",
"identifierTooltip": "The project identifier can be used to uniquely identify a task across projects. You can set it to empty to disable it.",
"identifier": "Project Identifier",
"identifierPlaceholder": "The project identifier goes here…",
"description": "Description",
"descriptionPlaceholder": "The projects description goes here…",
"color": "Color",
"success": "The project was successfully updated."
},
"share": {
"header": "Projekt teilen",
"title": "„{project}“ teilen",
"share": "Teilen",
"header": "Share this project",
"title": "Share \"{project}\"",
"share": "Share",
"links": {
"title": "Linkfreigaben",
"what": "Was ist eine Linkfreigabe?",
"explanation": "Mit Linkfreigaben kannst Projekt du Listen mit Benutzer:innen ohne Vikunja-Account teilen.",
"create": "Erstelle ein neue Linkfreigabe",
"title": "Share Links",
"what": "What is a share link?",
"explanation": "Share Links allow you to easily share a project with other users who don't have an account on Vikunja.",
"create": "Create a new link share",
"name": "Name (optional)",
"namePlaceholder": "z.B. Lorem Ipsum",
"nameExplanation": "Alle Aktionen, die mit dieser Linkfreigabe durchgeführt werden, werden mit diesem Namen angezeigt.",
"password": "Passwort (optional)",
"passwordExplanation": "Bei der Authentifizierung wird der:die Benutzer:in aufgefordert, dieses Passwort einzugeben.",
"noName": "Kein Name festgelegt",
"remove": "Linkfreigabe entfernen",
"removeText": "Bist du sicher, dass du diese Linkfreigabe unwiderruflich löschen möchtest? Über die Linkfreigabe ist danach der Zugriff auf dieses Projekt nicht mehr möglich!",
"createSuccess": "Die Linkfreigabe wurde erfolgreich erstellt.",
"deleteSuccess": "Die Linkfreigabe wurde erfolgreich gelöscht",
"view": "Ansicht",
"sharedBy": "Von {0} geteilt"
"namePlaceholder": "e.g. Lorem Ipsum",
"nameExplanation": "All actions done by this link share will show up with the name.",
"password": "Password (optional)",
"passwordExplanation": "When authenticating, the user will be required to enter this password.",
"noName": "No name set",
"remove": "Remove a link share",
"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": "The link share was successfully created.",
"deleteSuccess": "The link share was successfully deleted",
"view": "View",
"sharedBy": "Shared by {0}"
},
"userTeam": {
"typeUser": "Benutzer:in | Benutzer:innen",
"typeTeam": "Team | Teams",
"shared": "Geteilt mit diesen {type}",
"you": "Du",
"notShared": "Noch nicht mit einem {type} geteilt.",
"removeHeader": "Einen {type} von {sharable} entfernen",
"removeText": "Diesen {sharable} von {type} entfernen? Dies kann nicht rückgängig gemacht werden!",
"removeSuccess": "{sharable} wurde erfolgreich von {type} entfernt.",
"addedSuccess": "{type} wurde erfolgreich hinzugefügt.",
"updatedSuccess": "{type} wurde erfolgreich hinzugefügt."
"typeUser": "user | users",
"typeTeam": "team | teams",
"shared": "Shared with these {type}",
"you": "You",
"notShared": "Not shared with any {type} yet.",
"removeHeader": "Remove a {type} from the {sharable}",
"removeText": "Are you sure you want to remove this {sharable} from the {type}? This cannot be undone!",
"removeSuccess": "The {sharable} was successfully removed from the {type}.",
"addedSuccess": "The {type} was successfully added.",
"updatedSuccess": "The {type} was successfully added."
},
"right": {
"title": "Berechtigung",
"read": "Nur Leserechte",
"readWrite": "Lesen & Schreiben",
"title": "Permission",
"read": "Read only",
"readWrite": "Read & write",
"admin": "Admin"
},
"attributes": {
"link": "Link",
"delete": "Löschen"
"delete": "Delete"
}
},
"list": {
"title": "Liste",
"add": "Hinzufügen",
"addPlaceholder": "Neue Aufgabe hinzufügen…",
"empty": "Dieses Project ist derzeit leer.",
"newTaskCta": "Eine neue Aufgabe erstellen.",
"editTask": "Aufgabe bearbeiten"
"title": "List",
"add": "Add",
"addPlaceholder": "Add a new task…",
"empty": "This project is currently empty.",
"newTaskCta": "Create a new task.",
"editTask": "Edit Task"
},
"gantt": {
"title": "Gantt",
"showTasksWithoutDates": "Aufgaben anzeigen, für die keine Daten festgelegt sind",
"size": "Größe",
"default": "Standard",
"month": "Monat",
"day": "Tag",
"hour": "Stunde",
"range": "Zeitraum",
"noDates": "Diese Aufgabe hat keine Daten definiert."
"showTasksWithoutDates": "Show tasks which don't have dates set",
"size": "Size",
"default": "Default",
"month": "Month",
"day": "Day",
"hour": "Hour",
"range": "Date Range",
"noDates": "This task has no dates set."
},
"table": {
"title": "Tabelle",
"columns": "Spalten"
"title": "Table",
"columns": "Columns"
},
"kanban": {
"title": "Kanban",
"limit": "Limit: {limit}",
"noLimit": "Nicht gesetzt",
"doneBucket": "Erledigt Spalte",
"doneBucketHint": "Alle Aufgaben, die in diese Spalte verschoben werden, werden automatisch als erledigt markiert.",
"doneBucketHintExtended": "Alle Aufgaben, die in die Erledigt Spalte verschoben wurden, werden automatisch als erledigt markiert. Aufgaben, die in einer anderen Spalte als Erledigt markiert wurden, werden auch in diese Spalte verschoben.",
"doneBucketSavedSuccess": "Erledigt Spalte gespeichert.",
"deleteLast": "Du kannst die letzte Spalte nicht entfernen.",
"addTaskPlaceholder": "Gebe einen Aufgabentitel ein …",
"addTask": "Eine Aufgabe hinzufügen",
"addAnotherTask": "Weitere Aufgabe hinzufügen",
"addBucket": "Eine neue Spalte erstellen",
"addBucketPlaceholder": "Gebe einen Spaltentitel ein…",
"deleteHeaderBucket": "Spalte löschen",
"deleteBucketText1": "Bist du sicher, dass du diese Spalte löschen möchtest?",
"deleteBucketText2": "Dies löscht keine Aufgaben, sondern verschiebt sie in die Standardspalte.",
"deleteBucketSuccess": "Die Spalte wurde erfolgreich gelöscht.",
"bucketTitleSavedSuccess": "Der Spaltenname wurde erfolgreich gespeichert.",
"bucketLimitSavedSuccess": "Das Spaltenlimit wurde erfolgreich gespeichert.",
"collapse": "Spalte einklappen"
"noLimit": "Not Set",
"doneBucket": "Done bucket",
"doneBucketHint": "All tasks moved into this bucket will automatically marked as done.",
"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": "The done bucket has been saved successfully.",
"deleteLast": "You cannot remove the last bucket.",
"addTaskPlaceholder": "Enter the new task title…",
"addTask": "Add a task",
"addAnotherTask": "Add another task",
"addBucket": "Create a new bucket",
"addBucketPlaceholder": "Enter the new bucket title…",
"deleteHeaderBucket": "Delete the bucket",
"deleteBucketText1": "Are you sure you want to delete this bucket?",
"deleteBucketText2": "This will not delete any tasks but move them into the default bucket.",
"deleteBucketSuccess": "The bucket has been deleted successfully.",
"bucketTitleSavedSuccess": "The bucket title has been saved successfully.",
"bucketLimitSavedSuccess": "The bucket limit been saved successfully.",
"collapse": "Collapse this bucket"
},
"pseudo": {
"favorites": {
"title": "Favoriten"
"title": "Favorites"
}
}
},
@ -344,7 +344,7 @@
},
"create": {
"title": "Neuer gespeicherter Filter",
"description": "Ein gespeicherter Filter ist ein virtuelles Projekt, das bei jedem Zugriff aus einem Satz von Filtern errechnet wird.",
"description": "A saved filter is a virtual project which is computed from a set of filters each time it is accessed.",
"action": "Neuen gespeicherten Filter erstellen",
"titleRequired": "Bitte gib den Titel für den Filter an."
},
@ -376,7 +376,7 @@
"label": {
"title": "Labels",
"manage": "Label verwalten",
"description": "Klicke auf ein Label um es zu editieren. Du kannst alle Labels, welche du erstellt hast, editieren. Du kannst alle Labels, welche mit einer Aufgabe verknüpft sind, auf die du Zugriff hast, benutzen.",
"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": "Du hast momentan keine Labels.",
"search": "Beginne zu schreiben, um nach einem Label zu suchen…",
"create": {
@ -401,7 +401,7 @@
},
"sharing": {
"authenticating": "Authentifizierung …",
"passwordRequired": "Dieses geteilte Projekt benötigt ein Passwort. Bitte gebe es unten ein:",
"passwordRequired": "This shared project requires a password. Please enter it below:",
"error": "Es ist ein Fehler aufgetreten.",
"invalidPassword": "Das Passwort ist ungültig."
},
@ -560,7 +560,7 @@
"chooseDueDate": "Klicke hier, um ein Fälligkeitsdatum zu setzen",
"chooseStartDate": "Klicke hier, um ein Startdatum zu setzen",
"chooseEndDate": "Klicke hier, um ein Enddatum zu setzen",
"move": "Aufgabe in ein anderes Projekt verschieben",
"move": "Move task to a different project",
"done": "Als erledigt markieren!",
"undone": "Als nicht erledigt markieren",
"created": "Erstellt {0} von {1}",
@ -568,7 +568,7 @@
"doneAt": "Erledigt {0}",
"updateSuccess": "Die Aufgabe wurde erfolgreich gespeichert.",
"deleteSuccess": "Die Aufgabe wurde erfolgreich gelöscht.",
"belongsToProject": "Diese Aufgabe gehört zum Projekt „{project}“",
"belongsToProject": "This task belongs to project '{project}'",
"due": "Fällig {at}",
"closePopup": "Popup schließen",
"delete": {
@ -588,7 +588,7 @@
"percentDone": "Fortschritt einstellen",
"attachments": "Anhänge hinzufügen",
"relatedTasks": "Beziehung hinzufügen",
"moveProject": "Verschieben",
"moveProject": "Move",
"color": "Farbe setzen",
"delete": "Löschen",
"favorite": "Zu Favoriten hinzufügen",
@ -615,15 +615,15 @@
"updated": "Aktualisiert"
},
"subscription": {
"subscribedTaskThroughParentProject": "Du kannst hier nicht de-abonnieren, da du diese Aufgabe über ihr Projekt abonniert hast.",
"subscribedProject": "Du hast dieses Projekt abonniert und erhältst Benachrichtigungen über Änderungen.",
"notSubscribedProject": "Du hast dieses Projekt nicht abonniert und erhältst keine Benachrichtigungen über Änderungen.",
"subscribedTaskThroughParentProject": "You can't unsubscribe here because you are subscribed to this task through its project.",
"subscribedProject": "You are currently subscribed to this project and will receive notifications for changes.",
"notSubscribedProject": "You are not subscribed to this project and won't receive notifications for changes.",
"subscribedTask": "Du hast diese Aufgabe abonniert und erhältst Benachrichtigungen über Änderungen.",
"notSubscribedTask": "Du hast diese Aufgabe nicht abonniert und erhältst keine Benachrichtigungen über Änderungen.",
"subscribe": "Abonnieren",
"unsubscribe": "Abbestellen",
"subscribeSuccessProject": "Du hast dieses Projekt jetzt abonniert",
"unsubscribeSuccessProject": "Du hast dieses Projekt jetzt nicht mehr abonniert",
"subscribeSuccessProject": "You are now subscribed to this project",
"unsubscribeSuccessProject": "You are now unsubscribed to this project",
"subscribeSuccessTask": "Du hast diese Aufgabe jetzt abonniert",
"unsubscribeSuccessTask": "Du hast diese Aufgabe jetzt nicht mehr abonniert"
},
@ -697,7 +697,7 @@
"new": "Neue Aufgabenbeziehung",
"searchPlaceholder": "Beginne zu schreiben, um eine Aufgabe zu suchen, die als Beziehung hinzugefügt werden soll…",
"createPlaceholder": "Füge diese Aufgabe als neue Aufgabenbeziehung hinzu",
"differentProject": "Diese Aufgabe gehört zu einem anderen Projekt.",
"differentProject": "This task belongs to a different project.",
"noneYet": "Keine Aufgabenbeziehung vorhanden.",
"delete": "Aufgabenbeziehung entfernen",
"deleteText1": "Willst du diese Aufgabenbeziehung wirklich entfernen?",
@ -746,10 +746,10 @@
"priority1": "Um die Priorität einer Aufgabe zu setzen, gibt eine Zahl zwischen 1 und 5 mit einem vorangestellten {prefix} ein.",
"priority2": "Je höher die Zahl, desto höher die Priorität.",
"assignees": "Um die Aufgabe direkt jemandem zuzuweisen, füge vor dem Anmeldenamen der Person ein {prefix} Zeichen ein.",
"project1": "Um ein Projekt für die Aufgabe festzulegen, gib seinen Namen mit einem vorangestellten {prefix} ein.",
"project2": "Dies gibt einen Fehler zurück, wenn das Projekt nicht existiert.",
"project3": "Um Leerzeichen zu verwenden, füge einfach ein \" oder ' um den Namen des Projekts hinzu.",
"project4": "Zum Beispiel: {prefix}\"Projekt mit Leerzeichen\".",
"project1": "To set a project for the task to appear in, enter its name prefixed with {prefix}.",
"project2": "This will return an error if the project does not exist.",
"project3": "To use spaces, simply add a \" or ' around the project name.",
"project4": "For example: {prefix}\"Project with spaces\".",
"dateAndTime": "Datum und Uhrzeit",
"date": "Jedes Datum wird als Enddatum der neuen Aufgabe verwendet. Du kannst Daten in jedem dieser Formate verwenden:",
"dateWeekday": "jeder Wochentag, wird das nächste Datum mit diesem Tag verwenden",
@ -782,19 +782,19 @@
"delete": {
"header": "Team löschen",
"text1": "Bist du sicher, dass du dieses Team und alle seine Mitglieder löschen willst?",
"text2": "Alle Teammitglieder verlieren den Zugriff auf Projekte, die mit diesem Team geteilt sind. Dies KANN NICHT rückgängig gemacht werden!",
"text2": "All team members will lose access to projects shared with this team. This CANNOT BE UNDONE!",
"success": "Das Team wurde erfolgreich gelöscht."
},
"deleteUser": {
"header": "Benutzer:innen aus dem Team entfernen",
"text1": "Bist du sicher, dass du diese:n Benutzer:in aus dem Team entfernen willst?",
"text2": "Diese:r Benutzer:in verliert den Zugriff auf alle Projekte, auf die dieses Team Zugriff hat. Dies kann nicht rückgängig gemacht werden!",
"text2": "They will lose access to all projects this team has access to. This CANNOT BE UNDONE!",
"success": "Der:die Benutzer:in wurde erfolgreich aus dem Team gelöscht."
},
"leave": {
"title": "Team verlassen",
"text1": "Bist du sicher, dass du dieses Team verlassen willst?",
"text2": "Du wirst Zugriff auf alle Projekte verlieren, auf die dieses Team Zugriff hat. Wenn du deine Meinung änderst, musst du durch einen Team-Admin wieder hinzugefügt werden.",
"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": "Du hast das Team erfolgreich verlassen."
}
},
@ -826,19 +826,19 @@
"attachment": "Einen Anhang dieser Aufgabe hinzufügen",
"related": "Ändere die Abhängigen Aufgaben dieser Aufgabe",
"color": "Die Farbe dieser Aufgabe ändern",
"move": "Aufgabe in ein anderes Projekt verschieben",
"move": "Move this task to another project",
"reminder": "Erinnerungen für diese Aufgabe verwalten",
"description": "Aufgabenbeschreibung bearbeiten",
"delete": "Diese Aufgabe löschen",
"priority": "Die Priorität dieser Aufgabe ändern",
"favorite": "Diese Aufgabe zum Favoriten machen / von Favoriten entfernen"
"delete": "Delete this task",
"priority": "Change the priority of this task",
"favorite": "Mark this task as favorite / unfavorite"
},
"project": {
"title": "Projektansichten",
"switchToListView": "Zu Listenansicht wechseln",
"switchToGanttView": "Zur Ganttansicht wechseln",
"switchToKanbanView": "Zur Kanbanansicht wechseln",
"switchToTableView": "Zur Tabellenansicht wechseln"
"title": "Project Views",
"switchToListView": "Switch to list view",
"switchToGanttView": "Switch to gantt view",
"switchToKanbanView": "Switch to kanban view",
"switchToTableView": "Switch to table view"
},
"navigation": {
"title": "Navigation",
@ -846,7 +846,7 @@
"upcoming": "Anstehende Aufgaben aufrufen",
"labels": "Labels aufrufen",
"teams": "Teams aufrufen",
"projects": "Projekte aufrufen"
"projects": "Navigate to projects"
}
},
"update": {
@ -861,8 +861,8 @@
"unarchive": "Archivierung aufheben",
"setBackground": "Hintergrund einstellen",
"share": "Teilen",
"newProject": "Neues Projekt",
"createProject": "Projekt erstellen"
"newProject": "New project",
"createProject": "Create project"
},
"apiConfig": {
"url": "Vikunja-URL",
@ -881,23 +881,23 @@
"notification": {
"title": "Benachrichtigungen",
"none": "Du hast keine Benachrichtigungen. Einen schönen Tag noch!",
"explainer": "Benachrichtigungen werden hier angezeigt, wenn Aktionen für Projekte oder Aufgaben, die du abonniert hast, ausgeführt werden."
"explainer": "Notifications will appear here when actions projects or tasks you subscribed to happen."
},
"quickActions": {
"commands": "Befehle",
"placeholder": "Gib einen Befehl oder eine Suche ein …",
"hint": "Du kannst {project} verwenden, um die Suche auf ein Projekt zu beschränken. Kombiniere {project} oder {label} (Labels) mit einer Suchabfrage, um eine Aufgabe mit diesen Labels oder auf diesem Projekt zu suchen. Verwende {assignee}, um nur nach Teams zu suchen.",
"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": "Aufgaben",
"projects": "Projekte",
"projects": "Projects",
"teams": "Teams",
"newProject": "Gib den Titel des neuen Projekts ein…",
"newProject": "Enter the title of the new project…",
"newTask": "Gib den Titel der neuen Aufgabe ein …",
"newTeam": "Gib den Namen des neuen Teams ein …",
"createTask": "Eine Aufgabe im aktuellen Projekt erstellen ({title})",
"createProject": "Projekt erstellen",
"createTask": "Create a task in the current project ({title})",
"createProject": "Create a project",
"cmds": {
"newTask": "Neue Aufgabe",
"newProject": "Neues Projekt",
"newProject": "New project",
"newTeam": "Neues Team"
}
},
@ -928,15 +928,15 @@
"1018": "Die Avatareinstellungen sind falsch.",
"2001": "Die ID kann nicht leer oder 0 sein.",
"2002": "Ein Teil der Anfragedaten ist ungültig.",
"3001": "Das Projekt ist nicht vorhanden.",
"3004": "Um das zu machen, benötigst du eine Leseberechtigung für dieses Projekt.",
"3005": "Der Projekttitel darf nicht leer sein.",
"3006": "Diese Linkfreigabe existiert nicht.",
"3007": "Ein Projekt mit diesem Bezeichner existiert bereits.",
"3008": "Dieses Projekt ist archiviert und kann deshalb nur gelesen werden. Dies gilt auch für alle Aufgaben, die mit diesem Projekt verbunden sind.",
"4001": "Der Aufgabentitel kann nicht leer sein.",
"4002": "Diese Aufgabe existiert nicht.",
"4003": "Alle Massenbearbeitungen an Aufgaben müssen zum selben Projekt gehören.",
"3001": "The project does not exist.",
"3004": "You need to have read permissions on that project to perform that action.",
"3005": "The project title cannot be empty.",
"3006": "The project share does not exist.",
"3007": "A project with this identifier already exists.",
"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": "The project task text cannot be empty.",
"4002": "The project task does not exist.",
"4003": "All bulk editing tasks must belong to the same project.",
"4004": "Es benötigt mindestens einen Task, um eine Massenänderung durchzuführen.",
"4005": "Du hast keine Berechtigungen, um diese Aufgabe anzuzeigen.",
"4006": "Du kannst die übergeordnete Aufgabe nicht auf sich selbst referenzieren.",
@ -955,21 +955,21 @@
"4019": "Ungültiger Aufgabenfilter (Wert).",
"6001": "Der Teamname kann nicht leer sein.",
"6002": "Das Team existiert nicht.",
"6004": "Das Team hat bereits Zugriff auf dieses Projekt.",
"6004": "The team already has access to that project.",
"6005": "Diese:r Benutzer:in ist bereits dem Team beigetreten.",
"6006": "Du kannst den:die letzten Benutzer:in dieses Teams nicht löschen.",
"6007": "Das Team hat keine Berechtigungen auf diesem Projekt, um das durchzuführen.",
"7002": "Der:die Benutzer:in hat bereits Zugriff auf dieses Projekt",
"7003": "Du hast keinen Zugriff auf dieses Projekt.",
"6007": "The team does not have access to the project to perform that action.",
"7002": "The user already has access to that project.",
"7003": "You do not have access to that project.",
"8001": "Dieses Label existiert bereits auf dieser Aufgabe.",
"8002": "Das Label existiert nicht.",
"8003": "Du hast keinen Zugriff auf dieses Label.",
"9001": "Das Recht ist ungültig.",
"10001": "Diese Spalte existiert nicht.",
"10002": "Diese Spalte gehört nicht zu diesem Projekt.",
"10003": "Du kannst die letze Spalte in einem Projekt nicht entfernen.",
"10002": "The bucket does not belong to that project.",
"10003": "You cannot remove the last bucket on a project.",
"10004": "Du kannst die Aufgabe nicht in diese Spalte legen, da sie schon die maximale Anzahl an Aufgaben enthält.",
"10005": "Es kann nur eine Erledigt-Spalte pro Projekt geben.",
"10005": "There can be only one done bucket per project.",
"11001": "Der gespeicherte Filter existiert nicht.",
"11002": "Gespeicherte Ansichten sind für Linkfreigaben nicht verfügbar.",
"12001": "Der Abonnement-Typ ist ungültig.",

View File

@ -6,8 +6,8 @@
"welcomeEvening": "Guten Abend, {username}!",
"lastViewed": "Zletscht ahglueget",
"project": {
"importText": "Importiere deine Projekte und Aufgaben aus anderen Diensten in Vikunja:",
"import": "Importiere deine Daten in Vikunja"
"importText": "Import your projects and tasks from other services into Vikunja:",
"import": "Import your data into Vikunja"
}
},
"404": {
@ -83,7 +83,7 @@
"weekStartSunday": "Sunntig",
"weekStartMonday": "Määntig",
"language": "Sproch",
"defaultProject": "Standard-Projekt",
"defaultProject": "Default Project",
"timezone": "Zeitzone",
"overdueTasksRemindersTime": "Zeit der E-Mail-Zusammenfassung der überfälligen Aufgaben"
},
@ -141,7 +141,7 @@
},
"deletion": {
"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": "The deletion of your account is permanent and cannot be undone. We will delete all your projects, tasks and everything associated with it.",
"text2": "Zum Fortfahren gib bitte dein Passwort ein. Du erhältst eine E-Mail mit weiteren Anweisungen.",
"confirm": "Meinen Account löschen",
"requestSuccess": "Die Anfrage war erfolgreich. Du erhältst eine E-Mail mit weiteren Anweisungen.",
@ -155,7 +155,7 @@
},
"export": {
"title": "Exportiere deine Vikunja-Daten",
"description": "Du kannst eine Kopie deiner Daten bei Vikunja anfordern. Dazu gehören Projekte, Aufgaben und alles, was damit zusammenhängt. Du kannst diese Daten dann in jeder Vikunja-Instanz über die Migrationsfunktion importieren.",
"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": "Bitte gib dein Passwort ein, um fortzufahren:",
"request": "Eine Kopie meiner Vikunja Daten anfordern",
"success": "Du hast deine Daten bei Vikunja erfolgreich angefordert! Wir schicken dir eine E-Mail, sobald sie zum Download bereitstehen.",
@ -163,163 +163,163 @@
}
},
"project": {
"archivedMessage": "Dieses Projekt ist archiviert. Es ist nicht möglich, neue Aufgaben zu erstellen oder es zu bearbeiten.",
"archived": "Archiviert",
"showArchived": "Archivierte anzeigen",
"title": "Projekttitel",
"color": "Farbe",
"projects": "Projekte",
"parent": "Übergeordnetes Projekt",
"search": "Tippe, um nach einem Projekt zu suchen…",
"searchSelect": "Klicke oder drücke die Eingabetaste, um dieses Projekt auszuwählen",
"shared": "Geteilte Projekte",
"noDescriptionAvailable": "Keine Projektbeschreibung verfügbar.",
"inboxTitle": "Eingang",
"archivedMessage": "This project is archived. It is not possible to create new or edit tasks for it.",
"archived": "Archived",
"showArchived": "Show Archived",
"title": "Project Title",
"color": "Color",
"projects": "Projects",
"parent": "Parent Project",
"search": "Type to search for a project…",
"searchSelect": "Click or press enter to select this project",
"shared": "Shared Projects",
"noDescriptionAvailable": "No project description is available.",
"inboxTitle": "Inbox",
"create": {
"header": "Neues Projekt",
"titlePlaceholder": "Der Titel des Projekts kommt hier hin…",
"addTitleRequired": "Bitte gebe einen Titel an.",
"createdSuccess": "Das Projekt wurde erfolgreich erstellt.",
"addProjectRequired": "Bitte gebe ein Projekt an oder lege ein Standard-Projekt in den Einstellungen fest."
"header": "New project",
"titlePlaceholder": "The project's title goes here…",
"addTitleRequired": "Please specify a title.",
"createdSuccess": "The project was successfully created.",
"addProjectRequired": "Please specify a project or set a default project in the settings."
},
"archive": {
"title": "„{project}“ archivieren",
"archive": "Dieses Projekt archivieren",
"unarchive": "Archivierung dieses Projekts aufheben",
"unarchiveText": "Du wirst neue Aufgaben erstellen oder sie bearbeiten können.",
"archiveText": "Du kannst dieses Projekt nicht bearbeiten oder neue Aufgaben erstellen, bis du die Archivierung aufhebst.",
"success": "Das Projekt wurde erfolgreich archiviert."
"title": "Archive \"{project}\"",
"archive": "Archive this project",
"unarchive": "Un-Archive this project",
"unarchiveText": "You will be able to create new tasks or edit it.",
"archiveText": "You won't be able to edit this project or create new tasks until you un-archive it.",
"success": "The project was successfully archived."
},
"background": {
"title": "Projekthintergrund festlegen",
"remove": "Hintergrund entfernen",
"upload": "Wähle einen Hintergrund von deinem Computer",
"searchPlaceholder": "Nach einem Hintergrund suchen…",
"title": "Set project background",
"remove": "Remove Background",
"upload": "Choose a background from your pc",
"searchPlaceholder": "Search for a background…",
"poweredByUnsplash": "Powered by Unsplash",
"loadMore": "Weitere Bilder laden",
"success": "Der Hintergrund wurde erfolgreich eingestellt!",
"removeSuccess": "Der Hintergrund wurde erfolgreich entfernt!"
"loadMore": "Load more photos",
"success": "The background has been set successfully!",
"removeSuccess": "The background has been removed successfully!"
},
"delete": {
"title": "„{project}“ löschen",
"header": "Dieses Projekt löschen",
"text1": "Bist du sicher, dass du dieses Projekt und alle seine Inhalte löschen willst?",
"text2": "Dies umfasst alle Aufgaben und kann NICHT rückgängig gemacht werden!",
"success": "Das Projekt wurde erfolgreich gelöscht.",
"tasksToDelete": "Dies löscht unwiderruflich ca. {count} Aufgaben.",
"noTasksToDelete": "Dieses Projekt enthält keine Aufgaben, es kann sicher gelöscht werden."
"title": "Delete \"{project}\"",
"header": "Delete this project",
"text1": "Are you sure you want to delete this project and all of its contents?",
"text2": "This includes all tasks and CANNOT BE UNDONE!",
"success": "The project was successfully deleted.",
"tasksToDelete": "This will irrevocably remove approx. {count} tasks.",
"noTasksToDelete": "This project does not contain any tasks, it should be safe to delete."
},
"duplicate": {
"title": "Dupliziere dieses Projekt",
"label": "Duplizieren",
"text": "Wähle ein übergeordnetes Projekt aus, welches das duplizierte Projekt enthalten soll:",
"success": "Das Projekt wurde erfolgreich dupliziert."
"title": "Duplicate this project",
"label": "Duplicate",
"text": "Select a parent project which should hold the duplicated project:",
"success": "The project was successfully duplicated."
},
"edit": {
"header": "Dieses Projekt bearbeiten",
"title": "„{project}“ bearbeiten",
"titlePlaceholder": "Der Titel des Projekts kommt hier hin…",
"identifierTooltip": "Der Projektbezeichner kann zur eindeutigen Identifizierung einer Aufgabe über mehrere Projekte hinweg verwendet werden. Du kannst ihn auf leer setzen, um ihn zu deaktivieren.",
"identifier": "Projektbezeichner",
"identifierPlaceholder": "Der Projektbezeichner kommt hierhin…",
"description": "Beschreibung",
"descriptionPlaceholder": "Projektbeschreibung eingeben…",
"color": "Farbe",
"success": "Das Projekt wurde erfolgreich aktualisiert."
"header": "Edit This Project",
"title": "Edit \"{project}\"",
"titlePlaceholder": "The project title goes here…",
"identifierTooltip": "The project identifier can be used to uniquely identify a task across projects. You can set it to empty to disable it.",
"identifier": "Project Identifier",
"identifierPlaceholder": "The project identifier goes here…",
"description": "Description",
"descriptionPlaceholder": "The projects description goes here…",
"color": "Color",
"success": "The project was successfully updated."
},
"share": {
"header": "Projekt teilen",
"title": "„{project}“ teilen",
"share": "Teilen",
"header": "Share this project",
"title": "Share \"{project}\"",
"share": "Share",
"links": {
"title": "Linkfreigaben",
"what": "Was ist eine Linkfreigabe?",
"explanation": "Mit Linkfreigaben kannst Projekt du Listen mit Benutzer:innen ohne Vikunja-Account teilen.",
"create": "Erstelle ein neue Linkfreigabe",
"title": "Share Links",
"what": "What is a share link?",
"explanation": "Share Links allow you to easily share a project with other users who don't have an account on Vikunja.",
"create": "Create a new link share",
"name": "Name (optional)",
"namePlaceholder": "z.B. Lorem Ipsum",
"nameExplanation": "Alle Aktionen, die mit dieser Linkfreigabe durchgeführt werden, werden mit diesem Namen angezeigt.",
"password": "Passwort (optional)",
"passwordExplanation": "Bei der Authentifizierung wird der:die Benutzer:in aufgefordert, dieses Passwort einzugeben.",
"noName": "Kein Name festgelegt",
"remove": "Linkfreigabe entfernen",
"removeText": "Bist du sicher, dass du diese Linkfreigabe unwiderruflich löschen möchtest? Über die Linkfreigabe ist danach der Zugriff auf dieses Projekt nicht mehr möglich!",
"createSuccess": "Die Linkfreigabe wurde erfolgreich erstellt.",
"deleteSuccess": "Die Linkfreigabe wurde erfolgreich gelöscht",
"view": "Ansicht",
"sharedBy": "Von {0} geteilt"
"namePlaceholder": "e.g. Lorem Ipsum",
"nameExplanation": "All actions done by this link share will show up with the name.",
"password": "Password (optional)",
"passwordExplanation": "When authenticating, the user will be required to enter this password.",
"noName": "No name set",
"remove": "Remove a link share",
"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": "The link share was successfully created.",
"deleteSuccess": "The link share was successfully deleted",
"view": "View",
"sharedBy": "Shared by {0}"
},
"userTeam": {
"typeUser": "Benutzer:in | Benutzer:innen",
"typeTeam": "Team | Teams",
"shared": "Geteilt mit diesen {type}",
"you": "Du",
"notShared": "Noch nicht mit einem {type} geteilt.",
"removeHeader": "Einen {type} von {sharable} entfernen",
"removeText": "Diesen {sharable} von {type} entfernen? Dies kann nicht rückgängig gemacht werden!",
"removeSuccess": "{sharable} wurde erfolgreich von {type} entfernt.",
"addedSuccess": "{type} wurde erfolgreich hinzugefügt.",
"updatedSuccess": "{type} wurde erfolgreich hinzugefügt."
"typeUser": "user | users",
"typeTeam": "team | teams",
"shared": "Shared with these {type}",
"you": "You",
"notShared": "Not shared with any {type} yet.",
"removeHeader": "Remove a {type} from the {sharable}",
"removeText": "Are you sure you want to remove this {sharable} from the {type}? This cannot be undone!",
"removeSuccess": "The {sharable} was successfully removed from the {type}.",
"addedSuccess": "The {type} was successfully added.",
"updatedSuccess": "The {type} was successfully added."
},
"right": {
"title": "Berechtigung",
"read": "Nur Leserechte",
"readWrite": "Lesen & Schreiben",
"title": "Permission",
"read": "Read only",
"readWrite": "Read & write",
"admin": "Admin"
},
"attributes": {
"link": "Link",
"delete": "Löschen"
"delete": "Delete"
}
},
"list": {
"title": "Liste",
"add": "Hinzufügen",
"addPlaceholder": "Neue Aufgabe hinzufügen…",
"empty": "Dieses Project ist derzeit leer.",
"newTaskCta": "Eine neue Aufgabe erstellen.",
"editTask": "Aufgabe bearbeiten"
"title": "List",
"add": "Add",
"addPlaceholder": "Add a new task…",
"empty": "This project is currently empty.",
"newTaskCta": "Create a new task.",
"editTask": "Edit Task"
},
"gantt": {
"title": "Gantt",
"showTasksWithoutDates": "Aufgaben anzeigen, für die keine Daten festgelegt sind",
"size": "Größe",
"default": "Standard",
"month": "Monat",
"day": "Tag",
"hour": "Stunde",
"range": "Zeitraum",
"noDates": "Diese Aufgabe hat keine Daten definiert."
"showTasksWithoutDates": "Show tasks which don't have dates set",
"size": "Size",
"default": "Default",
"month": "Month",
"day": "Day",
"hour": "Hour",
"range": "Date Range",
"noDates": "This task has no dates set."
},
"table": {
"title": "Tabelle",
"columns": "Spalten"
"title": "Table",
"columns": "Columns"
},
"kanban": {
"title": "Kanban",
"limit": "Limit: {limit}",
"noLimit": "Nicht gesetzt",
"doneBucket": "Erledigt Spalte",
"doneBucketHint": "Alle Aufgaben, die in diese Spalte verschoben werden, werden automatisch als erledigt markiert.",
"doneBucketHintExtended": "Alle Aufgaben, die in die Erledigt Spalte verschoben wurden, werden automatisch als erledigt markiert. Aufgaben, die in einer anderen Spalte als Erledigt markiert wurden, werden auch in diese Spalte verschoben.",
"doneBucketSavedSuccess": "Erledigt Spalte gespeichert.",
"deleteLast": "Du kannst die letzte Spalte nicht entfernen.",
"addTaskPlaceholder": "Gebe einen Aufgabentitel ein …",
"addTask": "Eine Aufgabe hinzufügen",
"addAnotherTask": "Weitere Aufgabe hinzufügen",
"addBucket": "Eine neue Spalte erstellen",
"addBucketPlaceholder": "Gebe einen Spaltentitel ein…",
"deleteHeaderBucket": "Spalte löschen",
"deleteBucketText1": "Bist du sicher, dass du diese Spalte löschen möchtest?",
"deleteBucketText2": "Dies löscht keine Aufgaben, sondern verschiebt sie in die Standardspalte.",
"deleteBucketSuccess": "Die Spalte wurde erfolgreich gelöscht.",
"bucketTitleSavedSuccess": "Der Spaltenname wurde erfolgreich gespeichert.",
"bucketLimitSavedSuccess": "Das Spaltenlimit wurde erfolgreich gespeichert.",
"collapse": "Spalte einklappen"
"noLimit": "Not Set",
"doneBucket": "Done bucket",
"doneBucketHint": "All tasks moved into this bucket will automatically marked as done.",
"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": "The done bucket has been saved successfully.",
"deleteLast": "You cannot remove the last bucket.",
"addTaskPlaceholder": "Enter the new task title…",
"addTask": "Add a task",
"addAnotherTask": "Add another task",
"addBucket": "Create a new bucket",
"addBucketPlaceholder": "Enter the new bucket title…",
"deleteHeaderBucket": "Delete the bucket",
"deleteBucketText1": "Are you sure you want to delete this bucket?",
"deleteBucketText2": "This will not delete any tasks but move them into the default bucket.",
"deleteBucketSuccess": "The bucket has been deleted successfully.",
"bucketTitleSavedSuccess": "The bucket title has been saved successfully.",
"bucketLimitSavedSuccess": "The bucket limit been saved successfully.",
"collapse": "Collapse this bucket"
},
"pseudo": {
"favorites": {
"title": "Favoriten"
"title": "Favorites"
}
}
},
@ -344,7 +344,7 @@
},
"create": {
"title": "Neuer gespeicherter Filter",
"description": "Ein gespeicherter Filter ist ein virtuelles Projekt, das bei jedem Zugriff aus einem Satz von Filtern errechnet wird.",
"description": "A saved filter is a virtual project which is computed from a set of filters each time it is accessed.",
"action": "Neue gspeicherete Filter erstelle",
"titleRequired": "Bitte gib den Titel für den Filter an."
},
@ -376,7 +376,7 @@
"label": {
"title": "Labels",
"manage": "Label migriere",
"description": "Klicke auf ein Label um es zu editieren. Du kannst alle Labels, welche du erstellt hast, editieren. Du kannst alle Labels, welche mit einer Aufgabe verknüpft sind, auf die du Zugriff hast, benutzen.",
"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": "Du hesch momentan kei Labels.",
"search": "Schriib, um nachemne Label z'sueche…",
"create": {
@ -401,7 +401,7 @@
},
"sharing": {
"authenticating": "Authentifiziere…",
"passwordRequired": "Dieses geteilte Projekt benötigt ein Passwort. Bitte gebe es unten ein:",
"passwordRequired": "This shared project requires a password. Please enter it below:",
"error": "Het en Fähler geh. :(",
"invalidPassword": "Da Passwort isch ungültig."
},
@ -560,7 +560,7 @@
"chooseDueDate": "Druck da, um es Fälligkeitsdatum z'setze",
"chooseStartDate": "Druck dah, um es Startdatum z'setze",
"chooseEndDate": "Druck da, um es Enddatum z'setze",
"move": "Aufgabe in ein anderes Projekt verschieben",
"move": "Move task to a different project",
"done": "Als erledigt markieren!",
"undone": "Als unerledigt markierä",
"created": "Erstellt am {0} vo {1}",
@ -568,7 +568,7 @@
"doneAt": "{0} erledigt",
"updateSuccess": "Die Uufgab isch erfolgriich g'speichered wore.",
"deleteSuccess": "Die Uufgab isch erfolgriich g'chüblet wore.",
"belongsToProject": "Diese Aufgabe gehört zum Projekt „{project}“",
"belongsToProject": "This task belongs to project '{project}'",
"due": "Fällig bis {at}",
"closePopup": "Popup schließen",
"delete": {
@ -588,7 +588,7 @@
"percentDone": "Fortschritt einstellen",
"attachments": "Anhänge hinzufügen",
"relatedTasks": "Beziehung hinzufügen",
"moveProject": "Verschieben",
"moveProject": "Move",
"color": "Farbe setzen",
"delete": "Löschen",
"favorite": "Zu Favoriten hinzufügen",
@ -615,15 +615,15 @@
"updated": "Aktualisiert"
},
"subscription": {
"subscribedTaskThroughParentProject": "Du kannst hier nicht de-abonnieren, da du diese Aufgabe über ihr Projekt abonniert hast.",
"subscribedProject": "Du hast dieses Projekt abonniert und erhältst Benachrichtigungen über Änderungen.",
"notSubscribedProject": "Du hast dieses Projekt nicht abonniert und erhältst keine Benachrichtigungen über Änderungen.",
"subscribedTaskThroughParentProject": "You can't unsubscribe here because you are subscribed to this task through its project.",
"subscribedProject": "You are currently subscribed to this project and will receive notifications for changes.",
"notSubscribedProject": "You are not subscribed to this project and won't receive notifications for changes.",
"subscribedTask": "Du hast diese Aufgabe abonniert und erhältst Benachrichtigungen über Änderungen.",
"notSubscribedTask": "Du hast diese Aufgabe nicht abonniert und erhältst keine Benachrichtigungen über Änderungen.",
"subscribe": "Abooniere",
"unsubscribe": "Deabonniere",
"subscribeSuccessProject": "Du hast dieses Projekt jetzt abonniert",
"unsubscribeSuccessProject": "Du hast dieses Projekt jetzt nicht mehr abonniert",
"subscribeSuccessProject": "You are now subscribed to this project",
"unsubscribeSuccessProject": "You are now unsubscribed to this project",
"subscribeSuccessTask": "Du hast diese Aufgabe jetzt abonniert",
"unsubscribeSuccessTask": "Du hast diese Aufgabe jetzt nicht mehr abonniert"
},
@ -697,7 +697,7 @@
"new": "Neui Uufgabe Beziehig",
"searchPlaceholder": "Schriib, um e neui Uufgab als Zueghörigkeit hinzuezfüege…",
"createPlaceholder": "Das als en neui Zueghörigkeit hinzuefüege",
"differentProject": "Diese Aufgabe gehört zu einem anderen Projekt.",
"differentProject": "This task belongs to a different project.",
"noneYet": "S'git kei Uufgabe Beziehige.",
"delete": "Uufgabe Beziehig chüble",
"deleteText1": "Bisch du dir sicher, dass du die Zueghörigkeit chüblä wetsch?",
@ -746,10 +746,10 @@
"priority1": "Um e Task Priorität z'setze: füeg e nummere zwüsched 1 und 5, mit em {prefix} als Prefix iih.",
"priority2": "Je höher d'nummere, desto höher d'Priorität.",
"assignees": "Um die Aufgabe direkt jemandem zuzuweisen, füge vor dem Anmeldenamen der Person ein {prefix} Zeichen ein.",
"project1": "Um ein Projekt für die Aufgabe festzulegen, gib seinen Namen mit einem vorangestellten {prefix} ein.",
"project2": "Dies gibt einen Fehler zurück, wenn das Projekt nicht existiert.",
"project3": "Um Leerzeichen zu verwenden, füge einfach ein \" oder ' um den Namen des Projekts hinzu.",
"project4": "Zum Beispiel: {prefix}\"Projekt mit Leerzeichen\".",
"project1": "To set a project for the task to appear in, enter its name prefixed with {prefix}.",
"project2": "This will return an error if the project does not exist.",
"project3": "To use spaces, simply add a \" or ' around the project name.",
"project4": "For example: {prefix}\"Project with spaces\".",
"dateAndTime": "Datum und Ziit",
"date": "Jedes Datum wird als Abgabedatum für di neu Uufgab gnoh. Du chasch Date i de folgende Format verwende:",
"dateWeekday": "jede Wuchetaag wird nimmt s'negste Datum mit dem Datum",
@ -782,19 +782,19 @@
"delete": {
"header": "Das Team chüble",
"text1": "Bischder sicher, dasst wetsch da Team mit allne Mitglieder lösche?",
"text2": "Alle Teammitglieder verlieren den Zugriff auf Projekte, die mit diesem Team geteilt sind. Dies KANN NICHT rückgängig gemacht werden!",
"text2": "All team members will lose access to projects shared with this team. This CANNOT BE UNDONE!",
"success": "Da Team isch erfolgriich g'chüblet wore."
},
"deleteUser": {
"header": "Benutzer usem Team entferne",
"text1": "Bisch du dir sicher, dass du de Benutzer usm Team werfe wetsch?",
"text2": "Diese:r Benutzer:in verliert den Zugriff auf alle Projekte, auf die dieses Team Zugriff hat. Dies kann nicht rückgängig gemacht werden!",
"text2": "They will lose access to all projects this team has access to. This CANNOT BE UNDONE!",
"success": "Benutzer erfolgriich usegworfe."
},
"leave": {
"title": "Team verlassen",
"text1": "Bist du sicher, dass du dieses Team verlassen willst?",
"text2": "Du wirst Zugriff auf alle Projekte verlieren, auf die dieses Team Zugriff hat. Wenn du deine Meinung änderst, musst du durch einen Team-Admin wieder hinzugefügt werden.",
"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": "Du hast das Team erfolgreich verlassen."
}
},
@ -826,19 +826,19 @@
"attachment": "En Aahang dere Uufgab hinzuefüege",
"related": "Beziehige vo dere Uufgab bearbeite",
"color": "Die Farbe dieser Aufgabe ändern",
"move": "Aufgabe in ein anderes Projekt verschieben",
"move": "Move this task to another project",
"reminder": "Erinnerungen für diese Aufgabe verwalten",
"description": "Aufgabenbeschreibung bearbeiten",
"delete": "Diese Aufgabe löschen",
"priority": "Die Priorität dieser Aufgabe ändern",
"favorite": "Diese Aufgabe zum Favoriten machen / von Favoriten entfernen"
"delete": "Delete this task",
"priority": "Change the priority of this task",
"favorite": "Mark this task as favorite / unfavorite"
},
"project": {
"title": "Projektansichten",
"switchToListView": "Zu Listenansicht wechseln",
"switchToGanttView": "Zur Ganttansicht wechseln",
"switchToKanbanView": "Zur Kanbanansicht wechseln",
"switchToTableView": "Zur Tabellenansicht wechseln"
"title": "Project Views",
"switchToListView": "Switch to list view",
"switchToGanttView": "Switch to gantt view",
"switchToKanbanView": "Switch to kanban view",
"switchToTableView": "Switch to table view"
},
"navigation": {
"title": "Navigation",
@ -846,7 +846,7 @@
"upcoming": "Anstehende Aufgaben aufrufen",
"labels": "Labels aufrufen",
"teams": "Teams aufrufen",
"projects": "Projekte aufrufen"
"projects": "Navigate to projects"
}
},
"update": {
@ -861,8 +861,8 @@
"unarchive": "Ent-archiviere",
"setBackground": "Hintergrund iihstelle",
"share": "Teilä",
"newProject": "Neues Projekt",
"createProject": "Projekt erstellen"
"newProject": "New project",
"createProject": "Create project"
},
"apiConfig": {
"url": "Vikunja URL",
@ -881,23 +881,23 @@
"notification": {
"title": "Benachrichtigunge",
"none": "Du hesch kei neui Benachrichtunge. Heb e schös Tägli!",
"explainer": "Benachrichtigungen werden hier angezeigt, wenn Aktionen für Projekte oder Aufgaben, die du abonniert hast, ausgeführt werden."
"explainer": "Notifications will appear here when actions projects or tasks you subscribed to happen."
},
"quickActions": {
"commands": "Befehl",
"placeholder": "Schriib en Befehl oder suech…",
"hint": "Du kannst {project} verwenden, um die Suche auf ein Projekt zu beschränken. Kombiniere {project} oder {label} (Labels) mit einer Suchabfrage, um eine Aufgabe mit diesen Labels oder auf diesem Projekt zu suchen. Verwende {assignee}, um nur nach Teams zu suchen.",
"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": "Uufgabe",
"projects": "Projekte",
"projects": "Projects",
"teams": "Teams",
"newProject": "Gib den Titel des neuen Projekts ein…",
"newProject": "Enter the title of the new project…",
"newTask": "Gib en Titl für die neu Uufgab iih…",
"newTeam": "Gib en Name für da neui Team iih…",
"createTask": "Eine Aufgabe im aktuellen Projekt erstellen ({title})",
"createProject": "Projekt erstellen",
"createTask": "Create a task in the current project ({title})",
"createProject": "Create a project",
"cmds": {
"newTask": "Neui Uufgab",
"newProject": "Neues Projekt",
"newProject": "New project",
"newTeam": "Neus Team"
}
},
@ -928,15 +928,15 @@
"1018": "Die Benutzer Profilbild Iihstellige sind nid gültig.",
"2001": "ID chann nid leer oder 0 sii.",
"2002": "Ebbis vo de Ahfragedate isch ungültig.",
"3001": "Das Projekt ist nicht vorhanden.",
"3004": "Um das zu machen, benötigst du eine Leseberechtigung für dieses Projekt.",
"3005": "Der Projekttitel darf nicht leer sein.",
"3006": "Diese Linkfreigabe existiert nicht.",
"3007": "Ein Projekt mit diesem Bezeichner existiert bereits.",
"3008": "Dieses Projekt ist archiviert und kann deshalb nur gelesen werden. Dies gilt auch für alle Aufgaben, die mit diesem Projekt verbunden sind.",
"4001": "Der Aufgabentitel kann nicht leer sein.",
"4002": "Diese Aufgabe existiert nicht.",
"4003": "Alle Massenbearbeitungen an Aufgaben müssen zum selben Projekt gehören.",
"3001": "The project does not exist.",
"3004": "You need to have read permissions on that project to perform that action.",
"3005": "The project title cannot be empty.",
"3006": "The project share does not exist.",
"3007": "A project with this identifier already exists.",
"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": "The project task text cannot be empty.",
"4002": "The project task does not exist.",
"4003": "All bulk editing tasks must belong to the same project.",
"4004": "Es bruucht mindestens ei Uufgab, um e Masseänderig durezfüehre.",
"4005": "Du hesch kei Berechtigung, um die Uufgab ahzzeige.",
"4006": "Du chasch kei übergordneti Uufgab uf sich selbst refferenziere.",
@ -955,21 +955,21 @@
"4019": "Ungültigi Uufgabe Filter Wert.",
"6001": "Der Teamname kann nicht leer sein.",
"6002": "Da Team giz nid.",
"6004": "Das Team hat bereits Zugriff auf dieses Projekt.",
"6004": "The team already has access to that project.",
"6005": "De Benutzer isch scho bi dem Team.",
"6006": "Du chasch nid de letschti Benutzer vom Team lösche.",
"6007": "Das Team hat keine Berechtigungen auf diesem Projekt, um das durchzuführen.",
"7002": "Der:die Benutzer:in hat bereits Zugriff auf dieses Projekt",
"7003": "Du hast keinen Zugriff auf dieses Projekt.",
"6007": "The team does not have access to the project to perform that action.",
"7002": "The user already has access to that project.",
"7003": "You do not have access to that project.",
"8001": "Da Label existiert scho für die Uufgab.",
"8002": "Das Label giz nid.",
"8003": "Du hesch kei Zuegriff uf da Label.",
"9001": "Die Berechtigung isch ungültig.",
"10001": "De Chübl gits nid.",
"10002": "Diese Spalte gehört nicht zu diesem Projekt.",
"10003": "Du kannst die letze Spalte in einem Projekt nicht entfernen.",
"10002": "The bucket does not belong to that project.",
"10003": "You cannot remove the last bucket on a project.",
"10004": "Du chasch die Uufgab nid dem Chübl zue wiise, weil er d'Limite für Uufgabe erreicht het.",
"10005": "Es kann nur eine Erledigt-Spalte pro Projekt geben.",
"10005": "There can be only one done bucket per project.",
"11001": "De g'speicheret Filter giz nid.",
"11002": "G'speichereti Filter chend nid Teilt werde.",
"12001": "De Abonnement Entitätstyp isch ungültig.",

View File

@ -6,7 +6,7 @@
"welcomeEvening": "こんばんは、{username}さん",
"lastViewed": "最近の表示",
"project": {
"importText": "他のサービスからVikunjaにプロジェクトやタスクをインポートします:",
"importText": "Import your projects and tasks from other services into Vikunja:",
"import": "Vikunjaへのデータのインポート"
}
},
@ -141,8 +141,8 @@
},
"deletion": {
"title": "Vikunjaアカウントの削除",
"text1": "アカウントの削除は永久的なものであり、元に戻すことはできません。あなたのプロジェクト、タスク、それらに関連するすべてのものを削除します。",
"text2": "続行するにはパスワードを入力してください。詳しい案内の記載したメールを送信します。",
"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": "続行するにはパスワードを入力してください。詳しい案内の記載したメールを送信します。",
"confirm": "アカウントの削除",
"requestSuccess": "リクエストは成功しました。詳しい案内はメールでお知らせします。",
"passwordRequired": "パスワードを入力してください。",
@ -155,17 +155,17 @@
},
"export": {
"title": "Vikunjaデータのエクスポート",
"description": "利用しているVikunjaの全データのダウンロードをリクエストできます。これにはプロジェクト、タスク、およびそれらに関連するすべてを含みます。このデータはどのVikunjaインスタンスでもインポートすることができます。",
"descriptionPasswordRequired": "続行するにはパスワードを入力してください:",
"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": "続行するにはパスワードを入力してください:",
"request": "Vikunjaデータのリクエスト",
"success": "Vikunjaデータのリクエストに成功しましたダウンロードの準備が整い次第、メールでお知らせします。",
"downloadTitle": "エクスポートされたVikunjaデータのダウンロード"
}
},
"project": {
"archivedMessage": "アーカイブ済みプロジェクトです。タスクの作成や編集を行うことはできません。",
"archived": "アーカイブ済み",
"showArchived": "アーカイブ済みプロジェクトを表示",
"archivedMessage": "This project is archived. It is not possible to create new or edit tasks for it.",
"archived": "Archived",
"showArchived": "Show Archived",
"title": "プロジェクト名",
"color": "色",
"projects": "プロジェクト",
@ -376,7 +376,7 @@
"label": {
"title": "ラベル",
"manage": "ラベルの管理",
"description": "ラベルをクリックして編集します。ラベルはアクセス可能なプロジェクトのタスクで使用できます。",
"description": "ラベルをクリックすると編集できます。作成したすべてのラベルを編集できます。また、これらのラベルはアクセス可能なプロジェクトのタスクに関連付けることができます。",
"newCTA": "利用可能なラベルは存在しません。",
"search": "ラベルのキーワードを入力…",
"create": {
@ -557,15 +557,15 @@
"noTasks": "タスクはありません — それではよい一日を!"
},
"detail": {
"chooseDueDate": "期日を設定",
"chooseStartDate": "開始日を設定",
"chooseEndDate": "終了日を設定",
"chooseDueDate": "期日を設定する場合はこちら",
"chooseStartDate": "開始日を設定する場合はこちら",
"chooseEndDate": "終了日を設定する場合はこちら",
"move": "別のプロジェクトにタスクを移動",
"done": "タスク完了",
"done": "タスク完了",
"undone": "未完了に戻す",
"created": "Created {0} by {1}",
"updated": "Updated {0}",
"doneAt": "完了 {0}",
"doneAt": "Done {0}",
"updateSuccess": "タスクは正常に保存されました。",
"deleteSuccess": "タスクは正常に削除されました。",
"belongsToProject": "このタスクはプロジェクト「{project}」に含まれています。",
@ -638,10 +638,10 @@
"deleteText1": "添付ファイル「{filename}」を削除して本当によろしいですか?",
"copyUrl": "URLのコピー",
"copyUrlTooltip": "添付ファイルのURLをコピー",
"setAsCover": "カバー画像にする",
"unsetAsCover": "カバー画像から取り外す",
"successfullyChangedCoverImage": "カバー画像は正常に変更されました。",
"usedAsCover": "カバー画像"
"setAsCover": "Make cover",
"unsetAsCover": "Remove cover",
"successfullyChangedCoverImage": "The cover image was successfully changed.",
"usedAsCover": "Cover image"
},
"comment": {
"title": "コメント",
@ -723,7 +723,7 @@
"everyMonth": "毎月",
"mode": "繰り返しモード",
"monthly": "毎月",
"fromCurrentDate": "現在からの間隔",
"fromCurrentDate": "現在時からの相対的間隔",
"each": "隔",
"specifyAmount": "数字を入力…",
"hours": "時間ごと",

View File

@ -6,7 +6,7 @@
"welcomeEvening": "Добрый вечер, {username}!",
"lastViewed": "Последние просмотренные",
"project": {
"importText": "Импортировать проекты и задачи из других сервисов в Vikunja:",
"importText": "Import your projects and tasks from other services into Vikunja:",
"import": "Импорт данных в Vikunja"
}
},
@ -141,7 +141,7 @@
},
"deletion": {
"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": "Для продолжения введите свой пароль. На почту будет отправлено письмо с дальнейшими инструкциями.",
"confirm": "Удалить мой аккаунт",
"requestSuccess": "Запрос успешно выполнен. На почту будет отправлено письмо с дальнейшими инструкциями.",
@ -155,7 +155,7 @@
},
"export": {
"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": "Для продолжения введите свой пароль:",
"request": "Запросить копию моих данных Vikunja",
"success": "Данные Vikunja успешно запрошены! На почту придёт письмо, когда они будут готовы для скачивания.",
@ -163,13 +163,13 @@
}
},
"project": {
"archivedMessage": "Этот проект архивирован. В нём нельзя создавать или изменять задачи.",
"archived": "Архивировано",
"showArchived": "Показать архив",
"archivedMessage": "This project is archived. It is not possible to create new or edit tasks for it.",
"archived": "Archived",
"showArchived": "Show Archived",
"title": "Название проекта",
"color": "Цвет",
"projects": "Проекты",
"parent": "Родительский проект",
"parent": "Parent Project",
"search": "Введите запрос для поиска проекта…",
"searchSelect": "Кликните или нажмите Enter для выбора этого проекта",
"shared": "Shared Projects",
@ -212,7 +212,7 @@
"duplicate": {
"title": "Создание копии проекта",
"label": "Создать копию",
"text": "Выберите родительский проект, в который поместить копию проекта:",
"text": "Select a parent project which should hold the duplicated project:",
"success": "Копия проекта создана."
},
"edit": {
@ -782,19 +782,19 @@
"delete": {
"header": "Удалить команду",
"text1": "Удалить эту команду вместе с участниками?",
"text2": "Все участники команды потеряют доступ к проектам, которыми поделились с этой командой. Это действие отменить НЕЛЬЗЯ!",
"text2": "All team members will lose access to projects shared with this team. This CANNOT BE UNDONE!",
"success": "Команда удалена."
},
"deleteUser": {
"header": "Удалить пользователя из команды",
"text1": "Удалить этого пользователя из команды?",
"text2": "Пользователь потеряет доступ ко всем проектам, к которым есть доступ у команды. Это действие отменить нельзя!",
"text2": "They will lose access to all projects this team has access to. This CANNOT BE UNDONE!",
"success": "Пользователь удалён из команды."
},
"leave": {
"title": "Покинуть команду",
"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": "Вы покинули команду."
}
},
@ -846,7 +846,7 @@
"upcoming": "Перейти к предстоящим задачам",
"labels": "Перейти к меткам",
"teams": "Перейти к командам",
"projects": "Перейти к проектам"
"projects": "Navigate to projects"
}
},
"update": {
@ -862,7 +862,7 @@
"setBackground": "Задать фон",
"share": "Поделиться",
"newProject": "Создать проект",
"createProject": "Создать проект"
"createProject": "Create project"
},
"apiConfig": {
"url": "Vikunja URL",
@ -881,7 +881,7 @@
"notification": {
"title": "Уведомления",
"none": "Уведомлений нет. Хорошего дня!",
"explainer": "Здесь появятся уведомления, когда что-нибудь произойдёт с проектами или задачами, на которые вы подписаны."
"explainer": "Notifications will appear here when actions projects or tasks you subscribed to happen."
},
"quickActions": {
"commands": "Команды",
@ -894,7 +894,7 @@
"newTask": "Введите название задачи…",
"newTeam": "Введите название новой команды…",
"createTask": "Создать задачу в текущем проекте ({title})",
"createProject": "Создать проект",
"createProject": "Create a project",
"cmds": {
"newTask": "Новая задача",
"newProject": "Создать проект",
@ -955,7 +955,7 @@
"4019": "Неверное значение фильтра задач.",
"6001": "Имя команды не может быть пустым.",
"6002": "Команда не существует.",
"6004": "У команды уже есть доступ к этому проекту.",
"6004": "The team already has access to that project.",
"6005": "Пользователь уже является участником этой команды.",
"6006": "Нельзя удалить последнего участника команды.",
"6007": "У команды нет доступа к проекту, чтобы выполнить это действие.",

View File

@ -6,7 +6,9 @@
"welcomeEvening": "中午好,{username}",
"lastViewed": "最近查看",
"project": {
"importText": "Import your projects and tasks from other services into Vikunja:",
"newText": "You can create a new project for your new tasks:",
"new": "New project",
"importText": "Or import your projects and tasks from other services into Vikunja:",
"import": "Import your data into Vikunja"
}
},
@ -141,7 +143,7 @@
},
"deletion": {
"title": "删除您的 Vikunja 帐户",
"text1": "The deletion of your account is permanent and cannot be undone. We will delete all your projects, tasks and everything associated with it.",
"text1": "The deletion of your account is permanent and cannot be undone. We will delete all your namespaces, projects, tasks and everything associated with it.",
"text2": "若要继续,请输入您的密码。您将收到一封包含更多说明的电子邮件。",
"confirm": "删除我的帐户",
"requestSuccess": "请求成功。您将收到一封包含更多说明的电子邮件。",
@ -155,7 +157,7 @@
},
"export": {
"title": "导出 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.",
"description": "You can request a copy of all your Vikunja data. This include Namespaces, Projects, Tasks and everything associated to them. You can import this data in any Vikunja instance through the migration function.",
"descriptionPasswordRequired": "请输入您的密码以继续。",
"request": "请求我的 Vikunja 数据副本",
"success": "已成功请求您的 Vikunja 数据!一旦准备好下载,我们将向您发送一封电子邮件。",
@ -163,18 +165,14 @@
}
},
"project": {
"archivedMessage": "This project is archived. It is not possible to create new or edit tasks for it.",
"archived": "Archived",
"showArchived": "Show Archived",
"archived": "This project is archived. It is not possible to create new or edit tasks for it.",
"title": "Project Title",
"color": "Color",
"projects": "Projects",
"parent": "Parent Project",
"search": "Type to search for a project…",
"searchSelect": "Click or press enter to select this project",
"shared": "Shared Projects",
"noDescriptionAvailable": "No project description is available.",
"inboxTitle": "Inbox",
"create": {
"header": "New project",
"titlePlaceholder": "The project's title goes here…",
@ -212,7 +210,7 @@
"duplicate": {
"title": "Duplicate this project",
"label": "Duplicate",
"text": "Select a parent project which should hold the duplicated project:",
"text": "Select a namespace which should hold the duplicated project:",
"success": "The project was successfully duplicated."
},
"edit": {
@ -323,6 +321,67 @@
}
}
},
"namespace": {
"title": "Namespaces & Projects",
"namespace": "命名空间",
"showArchived": "显示已归档",
"noneAvailable": "你还没有创建任何空间。",
"unarchive": "取消存档",
"archived": "已归档",
"noProjects": "This namespace does not contain any projects.",
"createProject": "Create a new project in this namespace.",
"namespaces": "命名空间",
"search": "输入以搜索命名空间…",
"create": {
"title": "新建命名空间",
"titleRequired": "请指定一个标题。",
"explanation": "A namespace is a collection of projects you can share and use to organize your projects with. In fact, every project belongs to a namespace.",
"tooltip": "什么是命名空间?",
"success": "成功创建命名空间"
},
"archive": {
"titleArchive": "存档 \"{namespace}\"",
"titleUnarchive": "取消存档 \"{namespace}\"",
"archiveText": "You won't be able to edit this namespace or create new projects until you un-archive it. This will also archive all projects in this namespace.",
"unarchiveText": "You will be able to create new projects or edit it.",
"success": "已成功存档该命名空间",
"unarchiveSuccess": "已取消存档该命名空间",
"description": "If a namespace is archived, you cannot create new projects or edit it."
},
"delete": {
"title": "删除命名空间 \"{namespace}\"",
"text1": "确定删除此命名空间及其包含的所有内容吗?",
"text2": "This includes all projects and tasks and CANNOT BE UNDONE!",
"success": "命名空间已删除"
},
"edit": {
"title": "编辑 \"{namespace}\"",
"success": "命名空间更改成功"
},
"share": {
"title": "共享 \"{namespace}\""
},
"attributes": {
"title": "命名空间 · 标题",
"titlePlaceholder": "命名空间标题",
"description": "描述信息",
"descriptionPlaceholder": "填写描述详情markdown 语法格式)",
"color": "颜色",
"archived": "已存档",
"isArchived": "已存档此命名空间"
},
"pseudo": {
"sharedProjects": {
"title": "Shared Projects"
},
"favorites": {
"title": "收藏"
},
"savedFilters": {
"title": "筛选器"
}
}
},
"filters": {
"title": "筛选器",
"clear": "清除筛选条件",
@ -344,7 +403,7 @@
},
"create": {
"title": "新保存的过滤器",
"description": "A saved filter is a virtual project which is computed from a set of filters each time it is accessed.",
"description": "A saved filter is a virtual project which is computed from a set of filters each time it is accessed. Once created, it will appear in a special namespace.",
"action": "创建新保存的过滤器",
"titleRequired": "Please provide a title for the filter."
},
@ -615,13 +674,19 @@
"updated": "已更新"
},
"subscription": {
"subscribedProjectThroughParentNamespace": "You can't unsubscribe here because you are subscribed to this project through its namespace.",
"subscribedTaskThroughParentNamespace": "你无法在此处取消订阅,因为你通过其命名空间订阅了此任务。",
"subscribedTaskThroughParentProject": "You can't unsubscribe here because you are subscribed to this task through its project.",
"subscribedNamespace": "你当前订阅了此命名空间,并将收到更改通知。",
"notSubscribedNamespace": "你没有订阅此命名空间,也不会收到更改通知。",
"subscribedProject": "You are currently subscribed to this project and will receive notifications for changes.",
"notSubscribedProject": "You are not subscribed to this project and won't receive notifications for changes.",
"subscribedTask": "你当前已订阅此任务并将收到更改通知。",
"notSubscribedTask": "你没有订阅此任务,也不会收到更改通知。",
"subscribe": "订阅",
"unsubscribe": "取消订阅",
"subscribeSuccessNamespace": "你现在订阅了此命名空间",
"unsubscribeSuccessNamespace": "你现在已取消订阅此命名空间",
"subscribeSuccessProject": "You are now subscribed to this project",
"unsubscribeSuccessProject": "You are now unsubscribed to this project",
"subscribeSuccessTask": "你现在订阅了此任务",
@ -698,6 +763,7 @@
"searchPlaceholder": "输入以搜索要添加关联的新任务...",
"createPlaceholder": "添加为新的关联任务",
"differentProject": "This task belongs to a different project.",
"differentNamespace": "此任务属于不同的空间。",
"noneYet": "还没有任务关联。",
"delete": "删除关联",
"deleteText1": "确定要删除此任务关联吗?",
@ -782,19 +848,19 @@
"delete": {
"header": "删除此团队",
"text1": "确定要删除此团队及其所有成员吗?",
"text2": "All team members will lose access to projects shared with this team. This CANNOT BE UNDONE!",
"text2": "All team members will lose access to projects and namespaces shared with this team. This CANNOT BE UNDONE!",
"success": "团队已删除。"
},
"deleteUser": {
"header": "从团队中删除用户",
"text1": "确定要将此成员移出团队吗?",
"text2": "They will lose access to all projects this team has access to. This CANNOT BE UNDONE!",
"text2": "They will lose access to all projects and namespaces this team has access to. This CANNOT BE UNDONE!",
"success": "此用户已成功从团队中删除。"
},
"leave": {
"title": "离开团队",
"text1": "您确定要离开这个团队吗?",
"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.",
"text2": "You will lose access to all projects and namespaces this team has access to. If you change your mind you'll need a team admin to add you again.",
"success": "您已经成功离开了团队。"
}
},
@ -844,9 +910,9 @@
"title": "导航栏",
"overview": "导航到概览",
"upcoming": "导航到即将到来的任务",
"namespaces": "Navigate to namespaces & projects",
"labels": "导航到标签",
"teams": "导航到小组",
"projects": "Navigate to projects"
"teams": "导航到小组"
}
},
"update": {
@ -861,8 +927,7 @@
"unarchive": "取消存档",
"setBackground": "设置背景",
"share": "共享",
"newProject": "New project",
"createProject": "Create project"
"newProject": "New project"
},
"apiConfig": {
"url": "Vikunja URL",
@ -881,7 +946,7 @@
"notification": {
"title": "通知",
"none": "没有任何通知。 祝你今天过得愉快!",
"explainer": "Notifications will appear here when actions projects or tasks you subscribed to happen."
"explainer": "Notifications will appear here when actions on namespaces, projects or tasks you subscribed to happen."
},
"quickActions": {
"commands": "命令",
@ -892,12 +957,14 @@
"teams": "团队",
"newProject": "Enter the title of the new project…",
"newTask": "输入新任务的标题...",
"newNamespace": "输入新空间的标题...",
"newTeam": "输入新团队的名称...",
"createTask": "Create a task in the current project ({title})",
"createProject": "Create a project",
"createProject": "Create a project in the current namespace ({title})",
"cmds": {
"newTask": "新建任务",
"newProject": "New project",
"newNamespace": "新建命名空间",
"newTeam": "新建团队"
}
},
@ -953,9 +1020,16 @@
"4017": "任务筛选比较器无效。",
"4018": "任务筛选连接器无效。",
"4019": "任务筛选值无效。",
"5001": "空间不存在。",
"5003": "你没有权限访问指定的空间。",
"5006": "空间名称不能为空。",
"5009": "需要具有空间读取权限才能执行此操作。",
"5010": "该团队没有权限访问此空间。",
"5011": "该用户已经有权限访问此空间。",
"5012": "空间已归档,因此只能只读访问。",
"6001": "团队名称不能为空。",
"6002": "团队不存在。",
"6004": "The team already has access to that project.",
"6004": "The team already has access to that namespace or project.",
"6005": "该用户已经是此团队的成员。",
"6006": "无法删除最后一个团队成员。",
"6007": "The team does not have access to the project to perform that action.",

View File

@ -782,19 +782,19 @@
"delete": {
"header": "Delete the team",
"text1": "Are you sure you want to delete this team and all of its members?",
"text2": "All team members will lose access to projects shared with this team. This CANNOT BE UNDONE!",
"text2": "All team members will lose access to projects and namespaces shared with this team. This CANNOT BE UNDONE!",
"success": "The team was successfully deleted."
},
"deleteUser": {
"header": "Remove a user from the team",
"text1": "Are you sure you want to remove this user from the team?",
"text2": "They will lose access to all projects this team has access to. This CANNOT BE UNDONE!",
"text2": "They will lose access to all projects and namespaces this team has access to. This CANNOT BE UNDONE!",
"success": "The user was successfully deleted from the team."
},
"leave": {
"title": "Leave team",
"text1": "Are you sure you want to leave this team?",
"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.",
"text2": "You will lose access to all projects and namespaces this team has access to. If you change your mind you'll need a team admin to add you again.",
"success": "You have successfully left the team."
}
},
@ -846,7 +846,7 @@
"upcoming": "Navigate to upcoming tasks",
"labels": "Navigate to labels",
"teams": "Navigate to teams",
"projects": "Navigate to projects"
"projects": ""
}
},
"update": {
@ -862,7 +862,7 @@
"setBackground": "Set background",
"share": "Share",
"newProject": "New project",
"createProject": "Create project"
"createProject": ""
},
"apiConfig": {
"url": "Vikunja URL",
@ -881,7 +881,7 @@
"notification": {
"title": "Notifications",
"none": "You don't have any notifications. Have a nice day!",
"explainer": "Notifications will appear here when actions projects or tasks you subscribed to happen."
"explainer": "Notifications will appear here when actions on namespaces, projects or tasks you subscribed to happen."
},
"quickActions": {
"commands": "Commands",
@ -894,7 +894,7 @@
"newTask": "Enter the title of the new task…",
"newTeam": "Enter the name of the new team…",
"createTask": "Create a task in the current project ({title})",
"createProject": "Create a project",
"createProject": "Create a project in the current namespace ({title})",
"cmds": {
"newTask": "New task",
"newProject": "New project",
@ -955,7 +955,7 @@
"4019": "Invalid task filter value.",
"6001": "The team name cannot be empty.",
"6002": "The team does not exist.",
"6004": "The team already has access to that project.",
"6004": "The team already has access to that namespace or project.",
"6005": "The user is already a member of that team.",
"6006": "Cannot delete the last team member.",
"6007": "The team does not have access to the project to perform that action.",

View File

@ -24,7 +24,6 @@ declare global {
SENTRY_ENABLED: boolean;
SENTRY_DSN: string;
PROJECT_INFINITE_NESTING_ENABLED: boolean;
ALLOW_ICON_CHANGES: boolean;
}
}

View File

@ -250,10 +250,7 @@ export const useAuthStore = defineStore('auth', () => {
...(info.value?.exp && {exp: info.value?.exp}),
})
if (newUser.settings.language) {
await setLanguage(newUser.settings.language)
}
await setLanguage(newUser.settings.language)
setUser(newUser)
updateLastUserRefresh()

View File

@ -6,7 +6,7 @@ import {getFullBaseUrl} from './helpers/getFullBaseUrl'
declare let self: ServiceWorkerGlobalScope
const fullBaseUrl = getFullBaseUrl()
const workboxVersion = 'v7.0.0'
const workboxVersion = 'v6.6.1'
importScripts(`${fullBaseUrl}workbox-${workboxVersion}/workbox-sw.js`)
workbox.setConfig({