Compare commits
95 commits
86c7f9543d
...
3354bdd606
Author | SHA1 | Date | |
---|---|---|---|
teutat3s | 3354bdd606 | ||
1335bbfcd5 | |||
44074ff1a3 | |||
54344acf4b | |||
fe58a2b522 | |||
4d95c17e86 | |||
2f4ee35561 | |||
10076be909 | |||
7ab2f16f35 | |||
7a1ed8f9a2 | |||
744c1784c3 | |||
7aabe17860 | |||
bc324ec8ae | |||
ff9c025126 | |||
662a8aec69 | |||
01ffb1a3e1 | |||
4061075dde | |||
dbf743afd9 | |||
dd6fab86ee | |||
344ec56da0 | |||
672e8a9a24 | |||
201ab3b13a | |||
6fd288dcc1 | |||
41eb84416a | |||
e477cd8ee2 | |||
4caa63e84f | |||
3054667050 | |||
b2102732cf | |||
7141a75544 | |||
926f7769c2 | |||
538fadc908 | |||
f605d96836 | |||
0c1dd1cb7b | |||
53f3d44f21 | |||
faae7e32f4 | |||
b8efd67e83 | |||
7de45d154e | |||
1353f62ebb | |||
e22555b581 | |||
55372aa530 | |||
efa8a89f92 | |||
0fba07e6e5 | |||
23f82d3296 | |||
bd7fd961d0 | |||
1a8d365779 | |||
335ae78a67 | |||
bdf5a18b4d | |||
71369c4c78 | |||
1d62c2640e | |||
d79add2ddb | |||
f15c8a18d0 | |||
879f0d8648 | |||
20ac0d5066 | |||
fb7f2b5a8e | |||
4a3218dae3 | |||
21f7a029fa | |||
f8b4f700e7 | |||
d2aee8fc37 | |||
2144f2484b | |||
83de5da08a | |||
108db77a9d | |||
385f218e7b | |||
f224acb4e2 | |||
0d84257ac0 | |||
b4886fa135 | |||
16a09cd959 | |||
97ce2fc819 | |||
9a864e8bcb | |||
ca34d3df70 | |||
2c889a39b8 | |||
7047968cfc | |||
0b207c3bb5 | |||
6f7efc9f32 | |||
a88d51b60b | |||
65557fab5e | |||
09b5dd6ac9 | |||
a1b5cbc12e | |||
bd950af9cf | |||
04befd6138 | |||
0b53dfc89f | |||
c39b60d448 | |||
50481af19e | |||
6c2e5849ef | |||
9496ffc3e6 | |||
ab92fd696c | |||
7d4b84fda8 | |||
a67b3efde2 | |||
e546e665d8 | |||
d1ae45de14 | |||
8ad05dfd47 | |||
09cae9f924 | |||
bd8cfc7b57 | |||
77f0e2c2f8 | |||
57ff04853b | |||
1eaaa6ce9a |
1
.github/renovate.json5
vendored
1
.github/renovate.json5
vendored
|
@ -40,7 +40,6 @@
|
||||||
"groupName": "lint",
|
"groupName": "lint",
|
||||||
"matchPackageNames": [
|
"matchPackageNames": [
|
||||||
"@antfu/eslint-config",
|
"@antfu/eslint-config",
|
||||||
"@types/prettier",
|
|
||||||
"eslint",
|
"eslint",
|
||||||
"prettier"
|
"prettier"
|
||||||
]
|
]
|
||||||
|
|
2
.github/workflows/docker.yml
vendored
2
.github/workflows/docker.yml
vendored
|
@ -35,7 +35,7 @@ jobs:
|
||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ github.token }}
|
password: ${{ github.token }}
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
|
|
2
.github/workflows/semantic-pull-request.yml
vendored
2
.github/workflows/semantic-pull-request.yml
vendored
|
@ -19,6 +19,6 @@ jobs:
|
||||||
name: Semantic Pull Request
|
name: Semantic Pull Request
|
||||||
steps:
|
steps:
|
||||||
- name: Validate PR title
|
- name: Validate PR title
|
||||||
uses: amannn/action-semantic-pull-request@v5.4.0
|
uses: amannn/action-semantic-pull-request@v5.5.3
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
1
.npmrc
1
.npmrc
|
@ -1,3 +1,4 @@
|
||||||
shamefully-hoist=true
|
shamefully-hoist=true
|
||||||
shell-emulator=true
|
shell-emulator=true
|
||||||
ignore-workspace-root-check=true
|
ignore-workspace-root-check=true
|
||||||
|
package-manager-strict=false
|
||||||
|
|
|
@ -18,10 +18,10 @@ To develop and test the Elk package:
|
||||||
|
|
||||||
1. Fork the Elk repository to your own GitHub account and then clone it to your local device.
|
1. Fork the Elk repository to your own GitHub account and then clone it to your local device.
|
||||||
|
|
||||||
2. Ensure using the latest Node.js (16.x).
|
2. Ensure using the latest Node.js (20.x).
|
||||||
If you have [nvm](https://github.com/nvm-sh/nvm), you can run `nvm i` to install the required version.
|
If you have [nvm](https://github.com/nvm-sh/nvm), you can run `nvm i` to install the required version.
|
||||||
|
|
||||||
3. The package manager used to install and link dependencies must be [pnpm](https://pnpm.io/) v7. To use it you must first enable [Corepack](https://github.com/nodejs/corepack) by running `corepack enable`. (Note: on Linux in a standard Node 16+ environment, you should follow the instructions to install via Node's `corepack` rather than using the `curl` command)
|
3. The package manager used to install and link dependencies must be [pnpm](https://pnpm.io/) v9. To use it you must first enable [Corepack](https://github.com/nodejs/corepack) by running `corepack enable`. (Note: on Linux in a standard Node 20+ environment, you should follow the instructions to install via Node's `corepack` rather than using the `curl` command)
|
||||||
|
|
||||||
4. Check out a branch where you can work and commit your changes:
|
4. Check out a branch where you can work and commit your changes:
|
||||||
```shell
|
```shell
|
||||||
|
@ -97,7 +97,7 @@ You can check the current [translation status](https://docs.elk.zone/docs/guide/
|
||||||
If you are updating a translation in your local environment, you can run the following commands to check the status:
|
If you are updating a translation in your local environment, you can run the following commands to check the status:
|
||||||
- from root folder: `nr prepare-translation-status`
|
- from root folder: `nr prepare-translation-status`
|
||||||
- change to `docs` folder and run docs dev server `nr dev`
|
- change to `docs` folder and run docs dev server `nr dev`
|
||||||
- open `http://localhost:3000/docs/guide/contributing#translation-status` in your browser
|
- open `http://localhost:3000/guide/contributing#translation-status` in your browser
|
||||||
|
|
||||||
### Adding a new language
|
### Adding a new language
|
||||||
|
|
||||||
|
|
|
@ -67,6 +67,7 @@ These are known deployments using Elk as an alternative Web client for Mastodon
|
||||||
- [elk.mstdn.ca](https://elk.mstdn.ca) - Use Elk for the `mstdn.ca` Server
|
- [elk.mstdn.ca](https://elk.mstdn.ca) - Use Elk for the `mstdn.ca` Server
|
||||||
- [elk.mastodonapp.uk](https://elk.mastodonapp.uk) - Use Elk for the `mastodonapp.uk` Server
|
- [elk.mastodonapp.uk](https://elk.mastodonapp.uk) - Use Elk for the `mastodonapp.uk` Server
|
||||||
- [elk.bolha.us](https://elk.bolha.us) - Use Elk for the `bolha.us` Server
|
- [elk.bolha.us](https://elk.bolha.us) - Use Elk for the `bolha.us` Server
|
||||||
|
- [crab.bumscode.com](https://crab.bumscode.com) - Use [crab](https://github.com/maybeanerd/crab) - a soft fork of Elk - for the `bumscode.com` Server
|
||||||
|
|
||||||
> **Note**: Community deployments are **NOT** maintained by the Elk team. It may not be synced with Elk's source code. Please do your own research about the host servers before using them.
|
> **Note**: Community deployments are **NOT** maintained by the Elk team. It may not be synced with Elk's source code. Please do your own research about the host servers before using them.
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<script lang="ts" setup>
|
<script setup lang="ts">
|
||||||
import type { mastodon } from 'masto'
|
import type { mastodon } from 'masto'
|
||||||
|
|
||||||
defineOptions({
|
defineOptions({
|
||||||
|
|
|
@ -189,7 +189,6 @@ async function copyAccountName() {
|
||||||
<div flex="~ col gap1" pt2>
|
<div flex="~ col gap1" pt2>
|
||||||
<div flex gap2 items-center flex-wrap>
|
<div flex gap2 items-center flex-wrap>
|
||||||
<AccountDisplayName :account="account" font-bold sm:text-2xl text-xl />
|
<AccountDisplayName :account="account" font-bold sm:text-2xl text-xl />
|
||||||
<AccountRolesIndicator v-if="account.roles?.length" :account="account" />
|
|
||||||
<AccountLockIndicator v-if="account.locked" show-label />
|
<AccountLockIndicator v-if="account.locked" show-label />
|
||||||
<AccountBotIndicator v-if="account.bot" show-label />
|
<AccountBotIndicator v-if="account.bot" show-label />
|
||||||
</div>
|
</div>
|
||||||
|
@ -202,6 +201,9 @@ async function copyAccountName() {
|
||||||
</button>
|
</button>
|
||||||
</CommonTooltip>
|
</CommonTooltip>
|
||||||
</div>
|
</div>
|
||||||
|
<div self-start mt-1>
|
||||||
|
<AccountRolesIndicator v-if="account.roles?.length" :account="account" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<label
|
<label
|
||||||
|
|
|
@ -12,7 +12,7 @@ const relationship = useRelationship(account)
|
||||||
<div v-show="relationship" flex="~ col gap2" rounded min-w-90 max-w-120 z-100 overflow-hidden p-4>
|
<div v-show="relationship" flex="~ col gap2" rounded min-w-90 max-w-120 z-100 overflow-hidden p-4>
|
||||||
<div flex="~ gap2" items-center>
|
<div flex="~ gap2" items-center>
|
||||||
<NuxtLink :to="getAccountRoute(account)" flex-auto rounded-full hover:bg-active transition-100 pe5 me-a>
|
<NuxtLink :to="getAccountRoute(account)" flex-auto rounded-full hover:bg-active transition-100 pe5 me-a>
|
||||||
<AccountInfo :account="account" />
|
<AccountInfo :account="account" :hover-card="true" />
|
||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
<AccountFollowButton text-sm :account="account" :relationship="relationship" />
|
<AccountFollowButton text-sm :account="account" :relationship="relationship" />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -16,18 +16,20 @@ const { account, as = 'div' } = defineProps<{
|
||||||
<!-- TODO: Make this work for both buttons and links -->
|
<!-- TODO: Make this work for both buttons and links -->
|
||||||
<!-- This is sometimes (like in the sidebar) used directly as a button, and sometimes, like in follow notifications, as a link. I think this component may need a second refactor that either lets an implementation pass in a link or an action and adapt to what's passed in, or the implementations need to be updated to wrap in the action they want to take and this be just the layout for these items -->
|
<!-- This is sometimes (like in the sidebar) used directly as a button, and sometimes, like in follow notifications, as a link. I think this component may need a second refactor that either lets an implementation pass in a link or an action and adapt to what's passed in, or the implementations need to be updated to wrap in the action they want to take and this be just the layout for these items -->
|
||||||
<template>
|
<template>
|
||||||
<component :is="as" flex gap-3 v-bind="$attrs">
|
<component :is="as" flex items-center gap-3 v-bind="$attrs">
|
||||||
<AccountHoverWrapper :disabled="!hoverCard" :account="account">
|
<AccountHoverWrapper :disabled="!hoverCard" :account="account">
|
||||||
<AccountBigAvatar :account="account" shrink-0 :square="square" />
|
<AccountBigAvatar :account="account" shrink-0 :square="square" />
|
||||||
</AccountHoverWrapper>
|
</AccountHoverWrapper>
|
||||||
<div flex="~ col" shrink pt-1 h-full overflow-hidden justify-center leading-none select-none>
|
<div flex="~ col" shrink h-full overflow-hidden justify-center leading-none select-none p-1>
|
||||||
<div flex="~" gap-2>
|
<div flex="~" gap-2>
|
||||||
<AccountDisplayName :account="account" font-bold line-clamp-1 ws-pre-wrap break-all text-lg />
|
<AccountDisplayName :account="account" font-bold line-clamp-1 ws-pre-wrap break-all text-lg />
|
||||||
<AccountRolesIndicator v-if="account.roles?.length" :account="account" :limit="1" />
|
|
||||||
<AccountLockIndicator v-if="account.locked" text-xs />
|
<AccountLockIndicator v-if="account.locked" text-xs />
|
||||||
<AccountBotIndicator v-if="account.bot" text-xs />
|
<AccountBotIndicator v-if="account.bot" text-xs />
|
||||||
</div>
|
</div>
|
||||||
<AccountHandle :account="account" text-secondary-light />
|
<AccountHandle :account="account" text-secondary-light />
|
||||||
|
<div self-start mt-1>
|
||||||
|
<AccountRolesIndicator v-if="account.roles?.length" :account="account" :limit="1" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</component>
|
</component>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -56,7 +56,7 @@ async function removeUserNote() {
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<CommonDropdown :eager-mount="command">
|
<CommonDropdown :eager-mount="command">
|
||||||
<button flex gap-1 items-center w-full rounded op75 hover="op100 text-purple" group aria-label="More actions">
|
<button flex gap-1 items-center w-full rounded op75 hover="op100 text-purple" group :aria-label="t('actions.more')">
|
||||||
<div rounded-5 p2 elk-group-hover="bg-purple/10">
|
<div rounded-5 p2 elk-group-hover="bg-purple/10">
|
||||||
<div i-ri:more-2-fill />
|
<div i-ri:more-2-fill />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -38,12 +38,14 @@ onMounted(() => {
|
||||||
announce(t('a11y.loading_page'))
|
announce(t('a11y.loading_page'))
|
||||||
})
|
})
|
||||||
router.afterEach((to, from) => {
|
router.afterEach((to, from) => {
|
||||||
from && setTimeout(() => {
|
if (from) {
|
||||||
requestAnimationFrame(() => {
|
setTimeout(() => {
|
||||||
const title = document.title.trim().split('|')
|
requestAnimationFrame(() => {
|
||||||
announce(t('a11y.route_loaded', [title[0]]))
|
const title = document.title.trim().split('|')
|
||||||
})
|
announce(t('a11y.route_loaded', [title[0]]))
|
||||||
}, 512)
|
})
|
||||||
|
}, 512)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<script lang="ts" setup>
|
<script setup lang="ts">
|
||||||
import type { ResolvedCommand } from '~/composables/command'
|
import type { ResolvedCommand } from '~/composables/command'
|
||||||
|
|
||||||
const {
|
const {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<script lang="ts" setup>
|
<script setup lang="ts">
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
(event: 'close'): void
|
(event: 'close'): void
|
||||||
}>()
|
}>()
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<script lang="ts" setup>
|
<script setup lang="ts">
|
||||||
import type { Boundaries } from 'vue-advanced-cropper'
|
import type { Boundaries } from 'vue-advanced-cropper'
|
||||||
import { Cropper } from 'vue-advanced-cropper'
|
import { Cropper } from 'vue-advanced-cropper'
|
||||||
import 'vue-advanced-cropper/dist/style.css'
|
import 'vue-advanced-cropper/dist/style.css'
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<script lang="ts" setup>
|
<script setup lang="ts">
|
||||||
import { fileOpen } from 'browser-fs-access'
|
import { fileOpen } from 'browser-fs-access'
|
||||||
import type { FileWithHandle } from 'browser-fs-access'
|
import type { FileWithHandle } from 'browser-fs-access'
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
import { DynamicScroller } from 'vue-virtual-scroller'
|
import { DynamicScroller } from 'vue-virtual-scroller'
|
||||||
import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'
|
import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'
|
||||||
import type { mastodon } from 'masto'
|
import type { mastodon } from 'masto'
|
||||||
import type { UnwrapRef } from 'vue'
|
|
||||||
|
|
||||||
const {
|
const {
|
||||||
paginator,
|
paginator,
|
||||||
|
@ -33,7 +32,7 @@ defineSlots<{
|
||||||
newer: U // newer is undefined when index === 0
|
newer: U // newer is undefined when index === 0
|
||||||
}) => void
|
}) => void
|
||||||
items: (props: {
|
items: (props: {
|
||||||
items: UnwrapRef<U[]>
|
items: U[]
|
||||||
}) => void
|
}) => void
|
||||||
updater: (props: {
|
updater: (props: {
|
||||||
number: number
|
number: number
|
||||||
|
@ -74,7 +73,7 @@ defineExpose({ createEntry, removeEntry, updateEntry })
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<slot v-if="prevItems.length" name="updater" v-bind="{ number: prevItems.length, update }" />
|
<slot v-if="prevItems.length" name="updater" v-bind="{ number: prevItems.length, update }" />
|
||||||
<slot name="items" :items="items">
|
<slot name="items" :items="items as U[]">
|
||||||
<template v-if="virtualScroller">
|
<template v-if="virtualScroller">
|
||||||
<DynamicScroller
|
<DynamicScroller
|
||||||
v-slot="{ item, active, index }"
|
v-slot="{ item, active, index }"
|
||||||
|
|
|
@ -20,7 +20,7 @@ const tabs = computed(() => {
|
||||||
})
|
})
|
||||||
|
|
||||||
function toValidName(option: string) {
|
function toValidName(option: string) {
|
||||||
return option.toLowerCase().replace(/[^a-zA-Z0-9]/g, '-')
|
return option.toLowerCase().replace(/[^a-z0-9]/gi, '-')
|
||||||
}
|
}
|
||||||
|
|
||||||
useCommands(() => command
|
useCommands(() => command
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<script lang="ts" setup>
|
<script setup lang="ts">
|
||||||
import type { mastodon } from 'masto'
|
import type { mastodon } from 'masto'
|
||||||
|
|
||||||
const {
|
const {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<script lang="ts" setup>
|
<script setup lang="ts">
|
||||||
import type { mastodon } from 'masto'
|
import type { mastodon } from 'masto'
|
||||||
import sparkline from '@fnando/sparkline'
|
import sparkline from '@fnando/sparkline'
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ const vAutoFocus = (el: HTMLElement) => el.focus()
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div my-8 px-3 sm:px-8 md:max-w-200 flex="~ col gap-4" relative>
|
<div my-8 px-3 sm:px-8 md:max-w-200 flex="~ col gap-4" relative>
|
||||||
<button v-auto-focus type="button" btn-action-icon absolute top--8 right-0 m1 aria-label="Close" @click="emit('close')">
|
<button v-auto-focus type="button" btn-action-icon absolute top--8 right-0 m1 :aria-label="$t('action.close')" @click="emit('close')">
|
||||||
<span i-ri:close-line />
|
<span i-ri:close-line />
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
|
|
@ -15,9 +15,10 @@ const isRemoved = ref(false)
|
||||||
|
|
||||||
async function edit() {
|
async function edit() {
|
||||||
try {
|
try {
|
||||||
isRemoved.value
|
if (isRemoved.value)
|
||||||
? await client.v1.lists.$select(list).accounts.create({ accountIds: [account.id] })
|
await client.v1.lists.$select(list).accounts.create({ accountIds: [account.id] })
|
||||||
: await client.v1.lists.$select(list).accounts.remove({ accountIds: [account.id] })
|
else
|
||||||
|
await client.v1.lists.$select(list).accounts.remove({ accountIds: [account.id] })
|
||||||
isRemoved.value = !isRemoved.value
|
isRemoved.value = !isRemoved.value
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<script lang="ts" setup>
|
<script setup lang="ts">
|
||||||
const { userId } = defineProps<{
|
const { userId } = defineProps<{
|
||||||
userId: string
|
userId: string
|
||||||
}>()
|
}>()
|
||||||
|
|
|
@ -32,14 +32,14 @@ const shortcutItemGroups = computed<ShortcutItemGroup[]>(() => [
|
||||||
description: t('magic_keys.groups.navigation.shortcut_help'),
|
description: t('magic_keys.groups.navigation.shortcut_help'),
|
||||||
shortcut: { keys: ['?'], isSequence: false },
|
shortcut: { keys: ['?'], isSequence: false },
|
||||||
},
|
},
|
||||||
// {
|
{
|
||||||
// description: t('magic_keys.groups.navigation.next_status'),
|
description: t('magic_keys.groups.navigation.next_status'),
|
||||||
// shortcut: { keys: ['j'], isSequence: false },
|
shortcut: { keys: ['j'], isSequence: false },
|
||||||
// },
|
},
|
||||||
// {
|
{
|
||||||
// description: t('magic_keys.groups.navigation.previous_status'),
|
description: t('magic_keys.groups.navigation.previous_status'),
|
||||||
// shortcut: { keys: ['k'], isSequence: false },
|
shortcut: { keys: ['k'], isSequence: false },
|
||||||
// },
|
},
|
||||||
{
|
{
|
||||||
description: t('magic_keys.groups.navigation.go_to_search'),
|
description: t('magic_keys.groups.navigation.go_to_search'),
|
||||||
shortcut: { keys: ['/'], isSequence: false },
|
shortcut: { keys: ['/'], isSequence: false },
|
||||||
|
|
|
@ -27,7 +27,7 @@ const containerClass = computed(() => {
|
||||||
<template>
|
<template>
|
||||||
<div ref="container" :class="containerClass">
|
<div ref="container" :class="containerClass">
|
||||||
<div
|
<div
|
||||||
sticky top-0 z10
|
sticky top-0 z-20
|
||||||
pt="[env(safe-area-inset-top,0)]"
|
pt="[env(safe-area-inset-top,0)]"
|
||||||
bg="[rgba(var(--rgb-bg-base),0.7)]"
|
bg="[rgba(var(--rgb-bg-base),0.7)]"
|
||||||
class="native:lg:w-[calc(100vw-5rem)] native:xl:w-[calc(135%+(100vw-1200px)/2)]"
|
class="native:lg:w-[calc(100vw-5rem)] native:xl:w-[calc(135%+(100vw-1200px)/2)]"
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import type { ConfirmDialogChoice, ConfirmDialogOptions } from '~/types'
|
import type { ConfirmDialogChoice, ConfirmDialogOptions } from '~/types'
|
||||||
import DurationPicker from '~/components/modal/DurationPicker.vue'
|
|
||||||
|
|
||||||
const props = defineProps<ConfirmDialogOptions>()
|
const props = defineProps<ConfirmDialogOptions>()
|
||||||
|
|
||||||
|
|
|
@ -63,13 +63,14 @@ function handleFavouritedBoostedByClose() {
|
||||||
</ModalDialog>
|
</ModalDialog>
|
||||||
<ModalDialog
|
<ModalDialog
|
||||||
v-model="isPublishDialogOpen"
|
v-model="isPublishDialogOpen"
|
||||||
max-w-180 flex
|
max-w-180 flex w-full
|
||||||
@close="handlePublishClose"
|
@close="handlePublishClose"
|
||||||
>
|
>
|
||||||
<!-- This `w-0` style is used to avoid overflow problems in flex layouts,so don't remove it unless you know what you're doing -->
|
|
||||||
<PublishWidgetList
|
<PublishWidgetList
|
||||||
v-if="dialogDraftKey"
|
v-if="dialogDraftKey"
|
||||||
:draft-key="dialogDraftKey" expanded flex-1 w-0
|
:draft-key="dialogDraftKey"
|
||||||
|
expanded
|
||||||
|
class="flex-1"
|
||||||
@published="handlePublished"
|
@published="handlePublished"
|
||||||
/>
|
/>
|
||||||
</ModalDialog>
|
</ModalDialog>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<script lang="ts" setup>
|
<script setup lang="ts">
|
||||||
import { useFocusTrap } from '@vueuse/integrations/useFocusTrap'
|
import { useFocusTrap } from '@vueuse/integrations/useFocusTrap'
|
||||||
|
|
||||||
export interface Props {
|
export interface Props {
|
||||||
|
|
|
@ -39,14 +39,14 @@ onUnmounted(() => locked.value = false)
|
||||||
<template>
|
<template>
|
||||||
<div relative h-full w-full flex pt-12 @click="onClick">
|
<div relative h-full w-full flex pt-12 @click="onClick">
|
||||||
<button
|
<button
|
||||||
v-if="hasNext" pointer-events-auto btn-action-icon bg="black/20" :aria-label="$t('action.previous')"
|
v-if="hasNext" pointer-events-auto btn-action-icon bg="black/20" :aria-label="$t('action.next')"
|
||||||
hover:bg="black/40" dark:bg="white/30" dark-hover:bg="white/20" absolute top="1/2" right-1 z5
|
hover:bg="black/40" dark:bg="white/30" dark-hover:bg="white/20" absolute top="1/2" right-1 z5
|
||||||
:title="$t('action.next')" @click="next"
|
:title="$t('action.next')" @click="next"
|
||||||
>
|
>
|
||||||
<div i-ri:arrow-right-s-line text-white />
|
<div i-ri:arrow-right-s-line text-white />
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
v-if="hasPrev" pointer-events-auto btn-action-icon bg="black/20" aria-label="action.next"
|
v-if="hasPrev" pointer-events-auto btn-action-icon bg="black/20" :aria-label="$t('action.prev')"
|
||||||
hover:bg="black/40" dark:bg="white/30" dark:hover-bg="white/20" absolute top="1/2" left-1 z5
|
hover:bg="black/40" dark:bg="white/30" dark:hover-bg="white/20" absolute top="1/2" left-1 z5
|
||||||
:title="$t('action.prev')" @click="prev"
|
:title="$t('action.prev')" @click="prev"
|
||||||
>
|
>
|
||||||
|
@ -71,7 +71,7 @@ onUnmounted(() => locked.value = false)
|
||||||
|
|
||||||
<div absolute top-0 w-full flex justify-end>
|
<div absolute top-0 w-full flex justify-end>
|
||||||
<button
|
<button
|
||||||
btn-action-icon bg="black/30" aria-label="action.close" hover:bg="black/40" dark:bg="white/30"
|
btn-action-icon bg="black/30" :aria-label="$t('action.close')" hover:bg="black/40" dark:bg="white/30"
|
||||||
dark:hover-bg="white/20" pointer-events-auto shrink-0 @click="emit('close')"
|
dark:hover-bg="white/20" pointer-events-auto shrink-0 @click="emit('close')"
|
||||||
>
|
>
|
||||||
<div i-ri:close-line text-white />
|
<div i-ri:close-line text-white />
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<script lang="ts" setup>
|
<script setup lang="ts">
|
||||||
import { invoke } from '@vueuse/core'
|
import { invoke } from '@vueuse/core'
|
||||||
|
|
||||||
const modelValue = defineModel<boolean>({ required: true })
|
const modelValue = defineModel<boolean>({ required: true })
|
||||||
|
|
|
@ -8,6 +8,31 @@ const { notifications } = useNotifications()
|
||||||
const useStarFavoriteIcon = usePreferences('useStarFavoriteIcon')
|
const useStarFavoriteIcon = usePreferences('useStarFavoriteIcon')
|
||||||
const lastAccessedNotificationRoute = useLocalStorage(STORAGE_KEY_LAST_ACCESSED_NOTIFICATION_ROUTE, '')
|
const lastAccessedNotificationRoute = useLocalStorage(STORAGE_KEY_LAST_ACCESSED_NOTIFICATION_ROUTE, '')
|
||||||
const lastAccessedExploreRoute = useLocalStorage(STORAGE_KEY_LAST_ACCESSED_EXPLORE_ROUTE, '')
|
const lastAccessedExploreRoute = useLocalStorage(STORAGE_KEY_LAST_ACCESSED_EXPLORE_ROUTE, '')
|
||||||
|
|
||||||
|
const notificationsLink = computed(() => {
|
||||||
|
const hydrated = isHydrated.value
|
||||||
|
const user = currentUser.value
|
||||||
|
const lastRoute = lastAccessedNotificationRoute.value
|
||||||
|
if (!hydrated || !user || !lastRoute) {
|
||||||
|
return '/notifications'
|
||||||
|
}
|
||||||
|
|
||||||
|
return `/notifications/${lastRoute}`
|
||||||
|
})
|
||||||
|
const exploreLink = computed(() => {
|
||||||
|
const hydrated = isHydrated.value
|
||||||
|
const server = currentServer.value
|
||||||
|
let lastRoute = lastAccessedExploreRoute.value
|
||||||
|
if (!hydrated) {
|
||||||
|
return '/explore'
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lastRoute.length) {
|
||||||
|
lastRoute = `/${lastRoute}`
|
||||||
|
}
|
||||||
|
|
||||||
|
return server ? `/${server}/explore${lastRoute}` : `/explore${lastRoute}`
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
@ -16,7 +41,7 @@ const lastAccessedExploreRoute = useLocalStorage(STORAGE_KEY_LAST_ACCESSED_EXPLO
|
||||||
|
|
||||||
<div class="spacer" shrink xl:hidden />
|
<div class="spacer" shrink xl:hidden />
|
||||||
<NavSideItem :text="$t('nav.home')" to="/home" icon="i-ri:home-5-line" user-only :command="command" />
|
<NavSideItem :text="$t('nav.home')" to="/home" icon="i-ri:home-5-line" user-only :command="command" />
|
||||||
<NavSideItem :text="$t('nav.notifications')" :to="`/notifications/${lastAccessedNotificationRoute}`" icon="i-ri:notification-4-line" user-only :command="command">
|
<NavSideItem :text="$t('nav.notifications')" :to="notificationsLink" icon="i-ri:notification-4-line" user-only :command="command">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<div flex relative>
|
<div flex relative>
|
||||||
<div class="i-ri:notification-4-line" text-xl />
|
<div class="i-ri:notification-4-line" text-xl />
|
||||||
|
@ -34,7 +59,7 @@ const lastAccessedExploreRoute = useLocalStorage(STORAGE_KEY_LAST_ACCESSED_EXPLO
|
||||||
<NavSideItem :text="$t('action.compose')" to="/compose" icon="i-ri:quill-pen-line" user-only :command="command" />
|
<NavSideItem :text="$t('action.compose')" to="/compose" icon="i-ri:quill-pen-line" user-only :command="command" />
|
||||||
|
|
||||||
<div class="spacer" shrink hidden sm:block />
|
<div class="spacer" shrink hidden sm:block />
|
||||||
<NavSideItem :text="$t('nav.explore')" :to="isHydrated ? `/${currentServer}/explore/${lastAccessedExploreRoute}` : `/explore/${lastAccessedExploreRoute}`" icon="i-ri:compass-3-line" :command="command" />
|
<NavSideItem :text="$t('nav.explore')" :to="exploreLink" icon="i-ri:compass-3-line" :command="command" />
|
||||||
<NavSideItem :text="$t('nav.local')" :to="isHydrated ? `/${currentServer}/public/local` : '/public/local'" icon="i-ri:group-2-line " :command="command" />
|
<NavSideItem :text="$t('nav.local')" :to="isHydrated ? `/${currentServer}/public/local` : '/public/local'" icon="i-ri:group-2-line " :command="command" />
|
||||||
<NavSideItem :text="$t('nav.federated')" :to="isHydrated ? `/${currentServer}/public` : '/public'" icon="i-ri:earth-line" :command="command" />
|
<NavSideItem :text="$t('nav.federated')" :to="isHydrated ? `/${currentServer}/public` : '/public'" icon="i-ri:earth-line" :command="command" />
|
||||||
<NavSideItem :text="$t('nav.lists')" :to="isHydrated ? `/${currentServer}/lists` : '/lists'" icon="i-ri:list-check" user-only :command="command" />
|
<NavSideItem :text="$t('nav.lists')" :to="isHydrated ? `/${currentServer}/lists` : '/lists'" icon="i-ri:list-check" user-only :command="command" />
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<script setup>
|
<script setup lang="ts">
|
||||||
const { busy, oauth, singleInstanceServer } = useSignIn()
|
const { busy, oauth, singleInstanceServer } = useSignIn()
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ defineModel<boolean>()
|
||||||
<button
|
<button
|
||||||
flex items-center place-content-center h-full flex-1 class="select-none"
|
flex items-center place-content-center h-full flex-1 class="select-none"
|
||||||
:class="show ? '!text-primary' : ''"
|
:class="show ? '!text-primary' : ''"
|
||||||
aria-label="More menu"
|
:aria-label="$t('nav.more_menu')"
|
||||||
@click="toggleVisible"
|
@click="toggleVisible"
|
||||||
>
|
>
|
||||||
<span :class="show ? 'i-ri:close-fill' : 'i-ri:more-fill'" />
|
<span :class="show ? 'i-ri:close-fill' : 'i-ri:more-fill'" />
|
||||||
|
|
|
@ -27,16 +27,16 @@ const likes = computed(() => group.likes.filter(i => i.favourite && !i.reblog))
|
||||||
{{ $t('notification.reblogged_post') }}
|
{{ $t('notification.reblogged_post') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="likes.length" flex="~ gap-1">
|
<div v-if="likes.length" flex="~ gap-1 wrap">
|
||||||
<div :class="useStarFavoriteIcon ? 'i-ri:star-line color-yellow' : 'i-ri:heart-line color-red'" text-xl me-2 />
|
<div :class="useStarFavoriteIcon ? 'i-ri:star-line color-yellow' : 'i-ri:heart-line color-red'" text-xl me-2 />
|
||||||
<template v-for="i, idx of likes" :key="idx">
|
<template v-for="i, idx of likes" :key="idx">
|
||||||
<AccountHoverWrapper :account="i.account">
|
<AccountHoverWrapper :account="i.account" relative me--4 border="2 bg-base" rounded-full hover:z-1 focus-within:z-1>
|
||||||
<NuxtLink :to="getAccountRoute(i.account)">
|
<NuxtLink :to="getAccountRoute(i.account)">
|
||||||
<AccountAvatar text-primary font-bold :account="i.account" class="h-1.5em w-1.5em" />
|
<AccountAvatar text-primary font-bold :account="i.account" class="h-1.5em w-1.5em" />
|
||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
</AccountHoverWrapper>
|
</AccountHoverWrapper>
|
||||||
</template>
|
</template>
|
||||||
<div ms1>
|
<div ms-4>
|
||||||
{{ $t('notification.favourited_post') }}
|
{{ $t('notification.favourited_post') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -17,7 +17,7 @@ const modelValue = defineModel<boolean>({ required: true })
|
||||||
text-red-600 dark:text-red-400
|
text-red-600 dark:text-red-400
|
||||||
border="~ base rounded red-600 dark:red-400"
|
border="~ base rounded red-600 dark:red-400"
|
||||||
>
|
>
|
||||||
<head id="notification-failed" flex justify-between>
|
<header id="notification-failed" flex justify-between>
|
||||||
<div flex items-center gap-x-2 font-bold>
|
<div flex items-center gap-x-2 font-bold>
|
||||||
<div aria-hidden="true" i-ri:error-warning-fill />
|
<div aria-hidden="true" i-ri:error-warning-fill />
|
||||||
<p>{{ title ?? $t('settings.notifications.push_notifications.subscription_error.title') }}</p>
|
<p>{{ title ?? $t('settings.notifications.push_notifications.subscription_error.title') }}</p>
|
||||||
|
@ -32,7 +32,7 @@ const modelValue = defineModel<boolean>({ required: true })
|
||||||
<span aria-hidden="true" w="1.75em" h="1.75em" i-ri:close-line />
|
<span aria-hidden="true" w="1.75em" h="1.75em" i-ri:close-line />
|
||||||
</button>
|
</button>
|
||||||
</CommonTooltip>
|
</CommonTooltip>
|
||||||
</head>
|
</header>
|
||||||
<p>{{ message }}</p>
|
<p>{{ message }}</p>
|
||||||
<p py-2>
|
<p py-2>
|
||||||
<i18n-t keypath="settings.notifications.push_notifications.subscription_error.error_hint">
|
<i18n-t keypath="settings.notifications.push_notifications.subscription_error.error_hint">
|
||||||
|
|
|
@ -32,9 +32,10 @@ async function openEmojiPicker() {
|
||||||
picker.value = new Picker({
|
picker.value = new Picker({
|
||||||
data: () => dataPromise,
|
data: () => dataPromise,
|
||||||
onEmojiSelect({ native, src, alt, name }: any) {
|
onEmojiSelect({ native, src, alt, name }: any) {
|
||||||
native
|
if (native)
|
||||||
? emit('select', native)
|
emit('select', native)
|
||||||
: emit('selectCustom', { src, alt, 'data-emoji-id': name })
|
else
|
||||||
|
emit('selectCustom', { src, alt, 'data-emoji-id': name })
|
||||||
},
|
},
|
||||||
set: 'twitter',
|
set: 'twitter',
|
||||||
theme: colorMode,
|
theme: colorMode,
|
||||||
|
|
|
@ -5,6 +5,7 @@ import type { mastodon } from 'masto'
|
||||||
import type { DraftItem } from '~/types'
|
import type { DraftItem } from '~/types'
|
||||||
|
|
||||||
const {
|
const {
|
||||||
|
threadComposer,
|
||||||
draftKey,
|
draftKey,
|
||||||
draftItemIndex,
|
draftItemIndex,
|
||||||
expanded = false,
|
expanded = false,
|
||||||
|
@ -15,6 +16,7 @@ const {
|
||||||
draftKey: string
|
draftKey: string
|
||||||
draftItemIndex: number
|
draftItemIndex: number
|
||||||
initial?: () => DraftItem
|
initial?: () => DraftItem
|
||||||
|
threadComposer?: ReturnType<typeof useThreadComposer>
|
||||||
placeholder?: string
|
placeholder?: string
|
||||||
inReplyToId?: string
|
inReplyToId?: string
|
||||||
inReplyToVisibility?: mastodon.v1.StatusVisibility
|
inReplyToVisibility?: mastodon.v1.StatusVisibility
|
||||||
|
@ -28,7 +30,7 @@ const emit = defineEmits<{
|
||||||
|
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
|
|
||||||
const { threadItems, threadIsActive, publishThread } = useThreadComposer(draftKey)
|
const { threadItems, threadIsActive, publishThread } = threadComposer ?? useThreadComposer(draftKey)
|
||||||
|
|
||||||
const draft = computed({
|
const draft = computed({
|
||||||
get: () => threadItems.value[draftItemIndex],
|
get: () => threadItems.value[draftItemIndex],
|
||||||
|
@ -85,10 +87,12 @@ function trimPollOptions() {
|
||||||
const trimmedOptions = draft.value.params.poll!.options.slice(0, indexLastNonEmpty + 1)
|
const trimmedOptions = draft.value.params.poll!.options.slice(0, indexLastNonEmpty + 1)
|
||||||
|
|
||||||
if (currentInstance.value?.configuration
|
if (currentInstance.value?.configuration
|
||||||
&& trimmedOptions.length >= currentInstance.value?.configuration?.polls.maxOptions)
|
&& trimmedOptions.length >= currentInstance.value?.configuration?.polls.maxOptions) {
|
||||||
draft.value.params.poll!.options = trimmedOptions
|
draft.value.params.poll!.options = trimmedOptions
|
||||||
else
|
}
|
||||||
|
else {
|
||||||
draft.value.params.poll!.options = [...trimmedOptions, '']
|
draft.value.params.poll!.options = [...trimmedOptions, '']
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function editPollOptionDraft(event: Event, index: number) {
|
function editPollOptionDraft(event: Event, index: number) {
|
||||||
|
@ -135,10 +139,10 @@ const characterCount = computed(() => {
|
||||||
let length = stringLength(text)
|
let length = stringLength(text)
|
||||||
|
|
||||||
// taken from https://github.com/mastodon/mastodon/blob/07f8b4d1b19f734d04e69daeb4c3421ef9767aac/app/lib/text_formatter.rb
|
// taken from https://github.com/mastodon/mastodon/blob/07f8b4d1b19f734d04e69daeb4c3421ef9767aac/app/lib/text_formatter.rb
|
||||||
const linkRegex = /(https?:\/\/(www\.)?|xmpp:)\S+/g
|
const linkRegex = /(https?:\/\/|xmpp:)\S+/g
|
||||||
|
|
||||||
// taken from https://github.com/mastodon/mastodon/blob/af578e/app/javascript/mastodon/features/compose/util/counter.js
|
// taken from https://github.com/mastodon/mastodon/blob/af578e/app/javascript/mastodon/features/compose/util/counter.js
|
||||||
const countableMentionRegex = /(^|[^/\w])@(([a-z0-9_]+)@[a-z0-9.-]+[a-z0-9]+)/ig
|
const countableMentionRegex = /(^|[^/\w])@((\w+)@[a-z0-9.-]+[a-z0-9])/gi
|
||||||
|
|
||||||
// maximum of 23 chars per link
|
// maximum of 23 chars per link
|
||||||
// https://github.com/elk-zone/elk/issues/1651
|
// https://github.com/elk-zone/elk/issues/1651
|
||||||
|
|
|
@ -20,9 +20,8 @@ const {
|
||||||
dialogLabelledBy?: string
|
dialogLabelledBy?: string
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const threadItems = computed(() =>
|
const threadComposer = useThreadComposer(draftKey, initial)
|
||||||
useThreadComposer(draftKey, initial).threadItems.value,
|
const threadItems = computed(() => threadComposer.threadItems.value)
|
||||||
)
|
|
||||||
|
|
||||||
onDeactivated(() => {
|
onDeactivated(() => {
|
||||||
clearEmptyDrafts()
|
clearEmptyDrafts()
|
||||||
|
@ -37,6 +36,8 @@ function isFirstItem(index: number) {
|
||||||
<template v-if="isHydrated && currentUser">
|
<template v-if="isHydrated && currentUser">
|
||||||
<PublishWidget
|
<PublishWidget
|
||||||
v-for="(_, index) in threadItems" :key="`${draftKey}-${index}`"
|
v-for="(_, index) in threadItems" :key="`${draftKey}-${index}`"
|
||||||
|
v-bind="$attrs"
|
||||||
|
:thread-composer="threadComposer"
|
||||||
:draft-key="draftKey"
|
:draft-key="draftKey"
|
||||||
:draft-item-index="index"
|
:draft-item-index="index"
|
||||||
:expanded="isFirstItem(index) ? expanded : true"
|
:expanded="isFirstItem(index) ? expanded : true"
|
||||||
|
|
|
@ -97,7 +97,7 @@ function resetModal() {
|
||||||
<b text-primary>@{{ account.acct }}</b>
|
<b text-primary>@{{ account.acct }}</b>
|
||||||
</i18n-t>
|
</i18n-t>
|
||||||
</h2>
|
</h2>
|
||||||
<button ref="dismissButton" btn-action-icon absolute top--8 right-0 m1 aria-label="Close" @click="emit('close')">
|
<button ref="dismissButton" btn-action-icon absolute top--8 right-0 m1 :aria-label="$t('action.close')" @click="emit('close')">
|
||||||
<div i-ri:close-line />
|
<div i-ri:close-line />
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
|
|
@ -90,7 +90,7 @@ function activate() {
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<!-- Results -->
|
<!-- Results -->
|
||||||
<div left-0 top-11 absolute w-full z10 group-focus-within="pointer-events-auto visible" invisible pointer-events-none>
|
<div left-0 top-11 absolute w-full z-10 group-focus-within="pointer-events-auto visible" invisible pointer-events-none>
|
||||||
<div w-full bg-base border="~ base" rounded-3 max-h-100 overflow-auto py2>
|
<div w-full bg-base border="~ base" rounded-3 max-h-100 overflow-auto py2>
|
||||||
<span v-if="query.trim().length === 0" block text-center text-sm text-secondary>
|
<span v-if="query.trim().length === 0" block text-center text-sm text-secondary>
|
||||||
{{ t('search.search_desc') }}
|
{{ t('search.search_desc') }}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<script lang="ts" setup>
|
<script setup lang="ts">
|
||||||
import { DEFAULT_FONT_SIZE } from '~/constants'
|
import { DEFAULT_FONT_SIZE } from '~/constants'
|
||||||
import type { FontSize } from '~/composables/settings'
|
import type { FontSize } from '~/composables/settings'
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<script lang="ts" setup>
|
<script setup lang="ts">
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
text?: string
|
text?: string
|
||||||
content?: string
|
content?: string
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<script lang="ts" setup>
|
<script setup lang="ts">
|
||||||
import type { ComputedRef } from 'vue'
|
import type { ComputedRef } from 'vue'
|
||||||
import type { LocaleObject } from '@nuxtjs/i18n'
|
import type { LocaleObject } from '@nuxtjs/i18n'
|
||||||
|
|
||||||
|
|
|
@ -15,34 +15,34 @@ const { disabled = false } = defineProps<{
|
||||||
:disabled="disabled"
|
:disabled="disabled"
|
||||||
:class="disabled ? 'opacity-50 cursor-not-allowed' : ''"
|
:class="disabled ? 'opacity-50 cursor-not-allowed' : ''"
|
||||||
>
|
>
|
||||||
<div
|
<span
|
||||||
w-full flex px5 py3 md:gap2 gap4 items-center
|
w-full flex px5 py3 md:gap2 gap4 items-center
|
||||||
transition-250
|
transition-250
|
||||||
:class="disabled ? '' : 'group-hover:bg-active'"
|
:class="disabled ? '' : 'group-hover:bg-active'"
|
||||||
group-focus-visible:ring="2 current"
|
group-focus-visible:ring="2 current"
|
||||||
>
|
>
|
||||||
<div flex-1 flex items-center md:gap2 gap4>
|
<span flex-1 flex items-center md:gap2 gap4>
|
||||||
<div
|
<span
|
||||||
v-if="icon" flex items-center justify-center
|
v-if="icon" flex items-center justify-center
|
||||||
flex-shrink-0
|
flex-shrink-0
|
||||||
:class="$slots.description ? 'w-12 h-12' : ''"
|
:class="$slots.description ? 'w-12 h-12' : ''"
|
||||||
>
|
>
|
||||||
<slot name="icon">
|
<slot name="icon">
|
||||||
<div v-if="icon" :class="icon" md:text-size-inherit text-xl />
|
<span v-if="icon" :class="icon" md:text-size-inherit text-xl />
|
||||||
</slot>
|
</slot>
|
||||||
</div>
|
</span>
|
||||||
<div space-y-1>
|
<span space-y-1>
|
||||||
<p :class="checked ? 'text-base' : 'text-secondary'">
|
<span :class="checked ? 'text-base' : 'text-secondary'">
|
||||||
<slot>
|
<slot>
|
||||||
<span>{{ text }}</span>
|
<span>{{ text }}</span>
|
||||||
</slot>
|
</slot>
|
||||||
</p>
|
</span>
|
||||||
<p v-if="$slots.description" text-sm text-secondary>
|
<span v-if="$slots.description" block text-sm text-secondary>
|
||||||
<slot name="description" />
|
<slot name="description" />
|
||||||
</p>
|
</span>
|
||||||
</div>
|
</span>
|
||||||
</div>
|
</span>
|
||||||
<div text-lg :class="checked ? 'i-ri-checkbox-line text-primary' : 'i-ri-checkbox-blank-line text-secondary'" />
|
<span text-lg :class="checked ? 'i-ri-checkbox-line text-primary' : 'i-ri-checkbox-blank-line text-secondary'" />
|
||||||
</div>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<script lang="ts" setup>
|
<script setup lang="ts">
|
||||||
import ISO6391 from 'iso-639-1'
|
import ISO6391 from 'iso-639-1'
|
||||||
|
|
||||||
const supportedTranslationLanguages = ISO6391.getLanguages([...supportedTranslationCodes])
|
const supportedTranslationLanguages = ISO6391.getLanguages([...supportedTranslationCodes])
|
||||||
|
|
|
@ -83,7 +83,8 @@ useIntersectionObserver(video, (entries) => {
|
||||||
|
|
||||||
entries.forEach((entry) => {
|
entries.forEach((entry) => {
|
||||||
if (entry.intersectionRatio <= 0.75) {
|
if (entry.intersectionRatio <= 0.75) {
|
||||||
ready && !video.value?.paused && video.value?.pause()
|
if (ready && !video.value?.paused)
|
||||||
|
video.value?.pause()
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
video.value?.play().then(() => {
|
video.value?.play().then(() => {
|
||||||
|
@ -211,7 +212,7 @@ watch(shouldLoadAttachment, () => {
|
||||||
rounded-lg
|
rounded-lg
|
||||||
h-full
|
h-full
|
||||||
w-full
|
w-full
|
||||||
aria-label="Open image preview dialog"
|
:aria-label="$t('action.open_image_preview_dialog')"
|
||||||
relative
|
relative
|
||||||
@click="!shouldLoadAttachment ? loadAttachment() : openMediaPreview(attachments ? attachments : [attachment], attachments?.indexOf(attachment) || 0)"
|
@click="!shouldLoadAttachment ? loadAttachment() : openMediaPreview(attachments ? attachments : [attachment], attachments?.indexOf(attachment) || 0)"
|
||||||
>
|
>
|
||||||
|
|
|
@ -72,7 +72,7 @@ const forceShow = ref(false)
|
||||||
<template>
|
<template>
|
||||||
<StatusLink :status="status" :hover="hover">
|
<StatusLink :status="status" :hover="hover">
|
||||||
<!-- Upper border -->
|
<!-- Upper border -->
|
||||||
<div :h="showUpperBorder ? '1px' : '0'" w-auto bg-border mb-1 />
|
<div :h="showUpperBorder ? '1px' : '0'" w-auto bg-border mb-1 z--1 />
|
||||||
|
|
||||||
<slot name="meta">
|
<slot name="meta">
|
||||||
<!-- Line connecting to previous status -->
|
<!-- Line connecting to previous status -->
|
||||||
|
|
|
@ -44,7 +44,9 @@ const allowEmbeddedMedia = computed(() => status.card?.html && embeddedMediaPref
|
||||||
<StatusBody v-if="(!isFiltered && isSensitiveNonSpoiler) || hideAllMedia" :status="status" :newer="newer" :with-action="!isDetails" :class="isDetails ? 'text-xl' : ''" />
|
<StatusBody v-if="(!isFiltered && isSensitiveNonSpoiler) || hideAllMedia" :status="status" :newer="newer" :with-action="!isDetails" :class="isDetails ? 'text-xl' : ''" />
|
||||||
<StatusSpoiler :enabled="hasSpoilerOrSensitiveMedia || isFiltered" :filter="isFiltered" :sensitive-non-spoiler="isSensitiveNonSpoiler || hideAllMedia" :is-d-m="isDM">
|
<StatusSpoiler :enabled="hasSpoilerOrSensitiveMedia || isFiltered" :filter="isFiltered" :sensitive-non-spoiler="isSensitiveNonSpoiler || hideAllMedia" :is-d-m="isDM">
|
||||||
<template v-if="spoilerTextPresent" #spoiler>
|
<template v-if="spoilerTextPresent" #spoiler>
|
||||||
<p>{{ status.spoilerText }}</p>
|
<p>
|
||||||
|
<ContentRich :content="status.spoilerText" :emojis="status.emojis" :markdown="false" />
|
||||||
|
</p>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="filterPhrase" #spoiler>
|
<template v-else-if="filterPhrase" #spoiler>
|
||||||
<p>{{ `${$t('status.filter_hidden_phrase')}: ${filterPhrase}` }}</p>
|
<p>{{ `${$t('status.filter_hidden_phrase')}: ${filterPhrase}` }}</p>
|
||||||
|
|
|
@ -28,7 +28,7 @@ const card = ref(status.card)
|
||||||
absolute
|
absolute
|
||||||
w-full
|
w-full
|
||||||
h-full
|
h-full
|
||||||
z-100
|
z-10
|
||||||
rounded-lg
|
rounded-lg
|
||||||
style="background: linear-gradient(black, rgba(0,0,0,0.5), transparent, transparent, rgba(0,0,0,0.20))"
|
style="background: linear-gradient(black, rgba(0,0,0,0.5), transparent, transparent, rgba(0,0,0,0.20))"
|
||||||
>
|
>
|
||||||
|
|
|
@ -26,7 +26,7 @@ async function toggleFollowTag() {
|
||||||
|
|
||||||
emit('change')
|
emit('change')
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch {
|
||||||
// eslint-disable-next-line vue/no-mutating-props
|
// eslint-disable-next-line vue/no-mutating-props
|
||||||
tag.following = previousFollowingState
|
tag.following = previousFollowingState
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import type { mastodon } from 'masto'
|
import type { mastodon } from 'masto'
|
||||||
|
|
||||||
const paginator = useMastoClient().v1.timelines.home.list({ limit: 30 })
|
const { isSupported, effectiveType } = useNetwork()
|
||||||
|
const isSlow = computed(() => isSupported.value && effectiveType.value && ['slow-2g', '2g', '3g'].includes(effectiveType.value))
|
||||||
|
const limit = computed(() => isSlow.value ? 10 : 30)
|
||||||
|
|
||||||
|
const paginator = useMastoClient().v1.timelines.home.list({ limit: limit.value })
|
||||||
const stream = useStreaming(client => client.user.subscribe())
|
const stream = useStreaming(client => client.user.subscribe())
|
||||||
function reorderAndFilter(items: mastodon.v1.Status[]) {
|
function reorderAndFilter(items: mastodon.v1.Status[]) {
|
||||||
return reorderedTimeline(items, 'home')
|
return reorderedTimeline(items, 'home')
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { getEmojiMatchesInText } from '@iconify/utils/lib/emoji/replace/find'
|
import { getEmojiMatchesInText } from '@iconify/utils/lib/emoji/replace/find'
|
||||||
import CommonScrollIntoView from '../common/CommonScrollIntoView.vue'
|
|
||||||
import type { CustomEmoji, Emoji } from '~/composables/tiptap/suggestion'
|
import type { CustomEmoji, Emoji } from '~/composables/tiptap/suggestion'
|
||||||
import { isCustomEmoji } from '~/composables/tiptap/suggestion'
|
import { isCustomEmoji } from '~/composables/tiptap/suggestion'
|
||||||
import { emojiFilename, emojiPrefix, emojiRegEx } from '~~/config/emojis'
|
import { emojiFilename, emojiPrefix, emojiRegEx } from '~~/config/emojis'
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import type { mastodon } from 'masto'
|
import type { mastodon } from 'masto'
|
||||||
import CommonScrollIntoView from '../common/CommonScrollIntoView.vue'
|
|
||||||
import type { CommandHandler } from '~/composables/command'
|
import type { CommandHandler } from '~/composables/command'
|
||||||
|
|
||||||
const { items, command } = defineProps<{
|
const { items, command } = defineProps<{
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import type { mastodon } from 'masto'
|
import type { mastodon } from 'masto'
|
||||||
import CommonScrollIntoView from '../common/CommonScrollIntoView.vue'
|
|
||||||
import type { CommandHandler } from '~/composables/command'
|
import type { CommandHandler } from '~/composables/command'
|
||||||
|
|
||||||
const { items, command } = defineProps<{
|
const { items, command } = defineProps<{
|
||||||
|
|
|
@ -20,7 +20,7 @@ function clickUser(user: UserLogin) {
|
||||||
<button
|
<button
|
||||||
flex rounded
|
flex rounded
|
||||||
cursor-pointer
|
cursor-pointer
|
||||||
aria-label="Switch user"
|
:aria-label="$t('action.switch_account')"
|
||||||
:class="user.account.acct === currentUser?.account.acct ? '' : 'op25 grayscale'"
|
:class="user.account.acct === currentUser?.account.acct ? '' : 'op25 grayscale'"
|
||||||
hover="filter-none op100"
|
hover="filter-none op100"
|
||||||
@click="clickUser(user)"
|
@click="clickUser(user)"
|
||||||
|
|
|
@ -27,7 +27,7 @@ function isValidUrl(str: string) {
|
||||||
new URL(str)
|
new URL(str)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,13 +42,16 @@ async function handleInput() {
|
||||||
|
|
||||||
if (
|
if (
|
||||||
isValidUrl(`https://${input}`)
|
isValidUrl(`https://${input}`)
|
||||||
&& input.match(/^[a-z0-9-]+(\.[a-z0-9-]+)+(:[0-9]+)?$/i)
|
&& input.match(/^[a-z0-9-]+(\.[a-z0-9-]+)+(:\d+)?$/i)
|
||||||
// Do not hide the autocomplete if a result has an exact substring match on the input
|
// Do not hide the autocomplete if a result has an exact substring match on the input
|
||||||
&& !filteredServers.value.some(s => s.includes(input))
|
&& !filteredServers.value.some(s => s.includes(input))
|
||||||
)
|
) {
|
||||||
autocompleteShow.value = false
|
autocompleteShow.value = false
|
||||||
else
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
autocompleteShow.value = true
|
autocompleteShow.value = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function toSelector(server: string) {
|
function toSelector(server: string) {
|
||||||
|
|
|
@ -36,7 +36,7 @@ function processSignIn() {
|
||||||
<button
|
<button
|
||||||
flex rounded px4 py3 text-left
|
flex rounded px4 py3 text-left
|
||||||
hover:bg-active cursor-pointer transition-100
|
hover:bg-active cursor-pointer transition-100
|
||||||
aria-label="Switch user"
|
:aria-label="$t('action.switch_account')"
|
||||||
@click="clickUser(user)"
|
@click="clickUser(user)"
|
||||||
>
|
>
|
||||||
<AccountInfo :account="user.account" :hover-card="false" square />
|
<AccountInfo :account="user.account" :hover-card="false" square />
|
||||||
|
|
|
@ -19,7 +19,7 @@ export interface ContentParseOptions {
|
||||||
inReplyToStatus?: mastodon.v1.Status
|
inReplyToStatus?: mastodon.v1.Status
|
||||||
}
|
}
|
||||||
|
|
||||||
const sanitizerBasicClasses = filterClasses(/^(h-\S*|p-\S*|u-\S*|dt-\S*|e-\S*|mention|hashtag|ellipsis|invisible)$/u)
|
const sanitizerBasicClasses = filterClasses(/^h-\S*|p-\S*|u-\S*|dt-\S*|e-\S*|mention|hashtag|ellipsis|invisible$/u)
|
||||||
const sanitizer = sanitize({
|
const sanitizer = sanitize({
|
||||||
// Allow basic elements as seen in https://github.com/mastodon/mastodon/blob/17f79082b098e05b68d6f0d38fabb3ac121879a9/lib/sanitize_ext/sanitize_config.rb
|
// Allow basic elements as seen in https://github.com/mastodon/mastodon/blob/17f79082b098e05b68d6f0d38fabb3ac121879a9/lib/sanitize_ext/sanitize_config.rb
|
||||||
br: {},
|
br: {},
|
||||||
|
@ -93,6 +93,7 @@ export function parseMastodonHTML(
|
||||||
if (markdown) {
|
if (markdown) {
|
||||||
// Handle code blocks
|
// Handle code blocks
|
||||||
html = html
|
html = html
|
||||||
|
/* eslint-disable regexp/no-super-linear-backtracking, regexp/no-misleading-capturing-group */
|
||||||
.replace(/>(```|~~~)(\w*)([\s\S]+?)\1/g, (_1, _2, lang: string, raw: string) => {
|
.replace(/>(```|~~~)(\w*)([\s\S]+?)\1/g, (_1, _2, lang: string, raw: string) => {
|
||||||
const code = htmlToText(raw)
|
const code = htmlToText(raw)
|
||||||
.replace(/</g, '<')
|
.replace(/</g, '<')
|
||||||
|
@ -191,7 +192,7 @@ export function recursiveTreeToText(input: Node): string {
|
||||||
return treeToText(input)
|
return treeToText(input)
|
||||||
}
|
}
|
||||||
|
|
||||||
const emojiIdNeedsWrappingRE = /^(\d|\w|-|_)+$/
|
const emojiIdNeedsWrappingRE = /^([\w\-])+$/
|
||||||
|
|
||||||
export function treeToText(input: Node): string {
|
export function treeToText(input: Node): string {
|
||||||
let pre = ''
|
let pre = ''
|
||||||
|
@ -417,7 +418,7 @@ function removeCustomEmoji(customEmojis: Record<string, mastodon.v1.CustomEmoji>
|
||||||
if (node.type !== TEXT_NODE)
|
if (node.type !== TEXT_NODE)
|
||||||
return node
|
return node
|
||||||
|
|
||||||
const split = node.value.split(/\s?:([\w-]+?):/g)
|
const split = node.value.split(/\s?:([\w-]+):/g)
|
||||||
if (split.length === 1)
|
if (split.length === 1)
|
||||||
return node
|
return node
|
||||||
|
|
||||||
|
@ -439,7 +440,7 @@ function replaceCustomEmoji(customEmojis: Record<string, mastodon.v1.CustomEmoji
|
||||||
if (node.type !== TEXT_NODE)
|
if (node.type !== TEXT_NODE)
|
||||||
return node
|
return node
|
||||||
|
|
||||||
const split = node.value.split(/:([\w-]+?):/g)
|
const split = node.value.split(/:([\w-]+):/g)
|
||||||
if (split.length === 1)
|
if (split.length === 1)
|
||||||
return node
|
return node
|
||||||
|
|
||||||
|
@ -484,9 +485,9 @@ const _markdownReplacements: [RegExp, (c: (string | Node)[]) => Node][] = [
|
||||||
[/\*\*(.*?)\*\*/g, c => h('b', null, c)],
|
[/\*\*(.*?)\*\*/g, c => h('b', null, c)],
|
||||||
[/\*(.*?)\*/g, c => h('em', null, c)],
|
[/\*(.*?)\*/g, c => h('em', null, c)],
|
||||||
[/~~(.*?)~~/g, c => h('del', null, c)],
|
[/~~(.*?)~~/g, c => h('del', null, c)],
|
||||||
[/`([^`]+?)`/g, c => h('code', null, c)],
|
[/`([^`]+)`/g, c => h('code', null, c)],
|
||||||
// transform @username@twitter.com as links
|
// transform @username@twitter.com as links
|
||||||
[/\B@([a-zA-Z0-9_]+)@twitter\.com\b/gi, c => h('a', { href: `https://twitter.com/${c}`, target: '_blank', rel: 'nofollow noopener noreferrer', class: 'mention external' }, `@${c}@twitter.com`)],
|
[/\B@(\w+)@twitter\.com\b/gi, c => h('a', { href: `https://twitter.com/${c}`, target: '_blank', rel: 'nofollow noopener noreferrer', class: 'mention external' }, `@${c}@twitter.com`)],
|
||||||
]
|
]
|
||||||
|
|
||||||
function _markdownProcess(value: string) {
|
function _markdownProcess(value: string) {
|
||||||
|
|
|
@ -1,63 +1,53 @@
|
||||||
import type { MaybeRefOrGetter, RemovableRef } from '@vueuse/core'
|
import type { MaybeRefOrGetter, RemovableRef } from '@vueuse/core'
|
||||||
import type { Ref } from 'vue'
|
|
||||||
import type { UseIDBOptions } from '@vueuse/integrations/useIDBKeyval'
|
import type { UseIDBOptions } from '@vueuse/integrations/useIDBKeyval'
|
||||||
import { del, get, set, update } from '~/utils/elk-idb'
|
import { del, get, set, update } from '~/utils/elk-idb'
|
||||||
|
|
||||||
const isIDBSupported = !process.test && typeof indexedDB !== 'undefined'
|
export interface UseAsyncIDBKeyvalReturn<T> {
|
||||||
|
set: (value: T) => Promise<void>
|
||||||
|
readIDB: () => Promise<T | undefined>
|
||||||
|
}
|
||||||
|
|
||||||
export async function useAsyncIDBKeyval<T>(
|
export async function useAsyncIDBKeyval<T>(
|
||||||
key: IDBValidKey,
|
key: IDBValidKey,
|
||||||
initialValue: MaybeRefOrGetter<T>,
|
initialValue: MaybeRefOrGetter<T>,
|
||||||
options: UseIDBOptions = {},
|
source: RemovableRef<T>,
|
||||||
): Promise<RemovableRef<T>> {
|
options: Omit<UseIDBOptions, 'shallow'> = {},
|
||||||
|
): Promise<UseAsyncIDBKeyvalReturn<T>> {
|
||||||
const {
|
const {
|
||||||
flush = 'pre',
|
flush = 'pre',
|
||||||
deep = true,
|
deep = true,
|
||||||
shallow,
|
writeDefaults = true,
|
||||||
onError = (e: unknown) => {
|
onError = (e: unknown) => {
|
||||||
console.error(e)
|
console.error(e)
|
||||||
},
|
},
|
||||||
} = options
|
} = options
|
||||||
|
|
||||||
const data = (shallow ? shallowRef : ref)(initialValue) as Ref<T>
|
const rawInit: T = toValue<T>(initialValue)
|
||||||
|
|
||||||
const rawInit: T = toValue(initialValue)
|
try {
|
||||||
|
const rawValue = await get<T>(key)
|
||||||
async function read() {
|
if (rawValue === undefined) {
|
||||||
if (!isIDBSupported)
|
if (rawInit !== undefined && rawInit !== null && writeDefaults) {
|
||||||
return
|
await set(key, rawInit)
|
||||||
try {
|
source.value = rawInit
|
||||||
const rawValue = await get<T>(key)
|
|
||||||
if (rawValue === undefined) {
|
|
||||||
if (rawInit !== undefined && rawInit !== null)
|
|
||||||
await set(key, rawInit)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
data.value = rawValue
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (e) {
|
else {
|
||||||
onError(e)
|
source.value = rawValue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (e) {
|
||||||
|
onError(e)
|
||||||
|
}
|
||||||
|
|
||||||
await read()
|
async function write(data: T) {
|
||||||
|
|
||||||
async function write() {
|
|
||||||
if (!isIDBSupported)
|
|
||||||
return
|
|
||||||
try {
|
try {
|
||||||
if (data.value == null) {
|
if (data == null) {
|
||||||
await del(key)
|
await del(key)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// IndexedDB does not support saving proxies, convert from proxy before saving
|
// IndexedDB does not support saving proxies, convert from proxy before saving
|
||||||
if (Array.isArray(data.value))
|
await update(key, () => toRaw(data))
|
||||||
await update(key, () => (JSON.parse(JSON.stringify(data.value))))
|
|
||||||
else if (typeof data.value === 'object')
|
|
||||||
await update(key, () => ({ ...data.value }))
|
|
||||||
else
|
|
||||||
await update(key, () => (data.value))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
|
@ -65,7 +55,21 @@ export async function useAsyncIDBKeyval<T>(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
watch(data, () => write(), { flush, deep })
|
const {
|
||||||
|
pause: pauseWatch,
|
||||||
|
resume: resumeWatch,
|
||||||
|
} = watchPausable(source, data => write(data), { flush, deep })
|
||||||
|
|
||||||
return data as RemovableRef<T>
|
async function setData(value: T): Promise<void> {
|
||||||
|
pauseWatch()
|
||||||
|
try {
|
||||||
|
await write(value)
|
||||||
|
source.value = value
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
resumeWatch()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return { set: setData, readIDB: () => get<T>(key) }
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ export function getDisplayName(account: mastodon.v1.Account, options?: { rich?:
|
||||||
const displayName = account.displayName || account.username || account.acct || ''
|
const displayName = account.displayName || account.username || account.acct || ''
|
||||||
if (options?.rich)
|
if (options?.rich)
|
||||||
return displayName
|
return displayName
|
||||||
return displayName.replace(/:([\w-]+?):/g, '')
|
return displayName.replace(/:([\w-]+):/g, '')
|
||||||
}
|
}
|
||||||
|
|
||||||
export function accountToShortHandle(acct: string) {
|
export function accountToShortHandle(acct: string) {
|
||||||
|
|
|
@ -80,8 +80,9 @@ export function usePublish(options: {
|
||||||
options.length < currentInstance.value.configuration.polls.maxOptions
|
options.length < currentInstance.value.configuration.polls.maxOptions
|
||||||
|| options[options.length - 1].trim().length === 0
|
|| options[options.length - 1].trim().length === 0
|
||||||
)
|
)
|
||||||
)
|
) {
|
||||||
options = options.slice(0, options.length - 1)
|
options = options.slice(0, options.length - 1)
|
||||||
|
}
|
||||||
|
|
||||||
poll = { ...draftItem.value.params.poll, options }
|
poll = { ...draftItem.value.params.poll, options }
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,8 +123,9 @@ export function usePaginator<T, P, U = T>(
|
||||||
&& state.value === 'idle'
|
&& state.value === 'idle'
|
||||||
// No new content is loaded when the keepAlive page enters the background
|
// No new content is loaded when the keepAlive page enters the background
|
||||||
&& deactivated.value === false
|
&& deactivated.value === false
|
||||||
)
|
) {
|
||||||
loadNext()
|
loadNext()
|
||||||
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,7 +102,8 @@ async function unsubscribeFromBackend(fromSWPushManager: boolean, removePushNoti
|
||||||
const cu = currentUser.value
|
const cu = currentUser.value
|
||||||
if (cu) {
|
if (cu) {
|
||||||
await removePushNotifications(cu)
|
await removePushNotifications(cu)
|
||||||
removePushNotification && await removePushNotificationData(cu, fromSWPushManager)
|
if (removePushNotification)
|
||||||
|
await removePushNotificationData(cu, fromSWPushManager)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -178,7 +178,8 @@ export function usePushManager() {
|
||||||
else
|
else
|
||||||
currentUser.value.pushSubscription = await client.value.v1.push.subscription.update({ data })
|
currentUser.value.pushSubscription = await client.value.v1.push.subscription.update({ data })
|
||||||
|
|
||||||
policyChanged && await nextTick()
|
if (policyChanged)
|
||||||
|
await nextTick()
|
||||||
|
|
||||||
// force change policy when changed: watch is resetting it on push subscription update
|
// force change policy when changed: watch is resetting it on push subscription update
|
||||||
await saveSettings(policyChanged ? policy : undefined)
|
await saveSettings(policyChanged ? policy : undefined)
|
||||||
|
|
|
@ -29,7 +29,7 @@ declare module '@tiptap/core' {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const inputRegex = /(?:^|\s)(!\[(.+|:?)]\((\S+)(?:(?:\s+)["'](\S+)["'])?\))$/
|
const inputRegex = /(?:^|\s)(!\[(.+|:?)\]\((\S+)(?:\s+["'](\S+)["'])?\))$/
|
||||||
|
|
||||||
export const TiptapPluginCustomEmoji = Node.create<EmojiOptions>({
|
export const TiptapPluginCustomEmoji = Node.create<EmojiOptions>({
|
||||||
name: 'custom-emoji',
|
name: 'custom-emoji',
|
||||||
|
|
|
@ -14,7 +14,7 @@ function wrapHandler<T extends (...args: any[]) => any>(handler: T): T {
|
||||||
try {
|
try {
|
||||||
return handler(...args)
|
return handler(...args)
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -119,7 +119,8 @@ function createSuggestionRenderer(component: Component): SuggestionOptions['rend
|
||||||
|
|
||||||
// Use arrow function here because Nuxt will transform it incorrectly as Vue hook causing the build to fail
|
// Use arrow function here because Nuxt will transform it incorrectly as Vue hook causing the build to fail
|
||||||
onBeforeUpdate: (props) => {
|
onBeforeUpdate: (props) => {
|
||||||
props.editor.isFocused && renderer.updateProps({ ...props, isPending: true })
|
if (props.editor.isFocused)
|
||||||
|
renderer.updateProps({ ...props, isPending: true })
|
||||||
},
|
},
|
||||||
|
|
||||||
onUpdate(props) {
|
onUpdate(props) {
|
||||||
|
|
|
@ -12,39 +12,14 @@ import {
|
||||||
STORAGE_KEY_NOTIFICATION,
|
STORAGE_KEY_NOTIFICATION,
|
||||||
STORAGE_KEY_NOTIFICATION_POLICY,
|
STORAGE_KEY_NOTIFICATION_POLICY,
|
||||||
STORAGE_KEY_SERVERS,
|
STORAGE_KEY_SERVERS,
|
||||||
STORAGE_KEY_USERS,
|
|
||||||
} from '~/constants'
|
} from '~/constants'
|
||||||
import type { PushNotificationPolicy, PushNotificationRequest } from '~/composables/push-notifications/types'
|
import type { PushNotificationPolicy, PushNotificationRequest } from '~/composables/push-notifications/types'
|
||||||
import { useAsyncIDBKeyval } from '~/composables/idb'
|
|
||||||
|
|
||||||
const mock = process.mock
|
const mock = process.mock
|
||||||
|
|
||||||
function initializeUsers(): Promise<Ref<UserLogin[]> | RemovableRef<UserLogin[]>> | Ref<UserLogin[]> | RemovableRef<UserLogin[]> {
|
const users: Ref<UserLogin[]> | RemovableRef<UserLogin[]> = import.meta.server ? ref<UserLogin[]>([]) : ref<UserLogin[]>([]) as RemovableRef<UserLogin[]>
|
||||||
let defaultUsers = mock ? [mock.user] : []
|
|
||||||
|
|
||||||
// Backward compatibility with localStorage
|
|
||||||
let removeUsersOnLocalStorage = false
|
|
||||||
if (globalThis?.localStorage) {
|
|
||||||
const usersOnLocalStorageString = globalThis.localStorage.getItem(STORAGE_KEY_USERS)
|
|
||||||
if (usersOnLocalStorageString) {
|
|
||||||
defaultUsers = JSON.parse(usersOnLocalStorageString)
|
|
||||||
removeUsersOnLocalStorage = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const users = import.meta.server
|
|
||||||
? ref<UserLogin[]>(defaultUsers)
|
|
||||||
: useAsyncIDBKeyval<UserLogin[]>(STORAGE_KEY_USERS, defaultUsers, { deep: true })
|
|
||||||
|
|
||||||
if (removeUsersOnLocalStorage)
|
|
||||||
globalThis.localStorage.removeItem(STORAGE_KEY_USERS)
|
|
||||||
|
|
||||||
return users
|
|
||||||
}
|
|
||||||
|
|
||||||
const users = import.meta.server ? initializeUsers() as Ref<UserLogin[]> | RemovableRef<UserLogin[]> : await initializeUsers()
|
|
||||||
const nodes = useLocalStorage<Record<string, any>>(STORAGE_KEY_NODES, {}, { deep: true })
|
const nodes = useLocalStorage<Record<string, any>>(STORAGE_KEY_NODES, {}, { deep: true })
|
||||||
const currentUserHandle = useLocalStorage<string>(STORAGE_KEY_CURRENT_USER_HANDLE, mock ? mock.user.account.id : '')
|
export const currentUserHandle = useLocalStorage<string>(STORAGE_KEY_CURRENT_USER_HANDLE, mock ? mock.user.account.id : '')
|
||||||
export const instanceStorage = useLocalStorage<Record<string, mastodon.v1.Instance>>(STORAGE_KEY_SERVERS, mock ? mock.server : {}, { deep: true })
|
export const instanceStorage = useLocalStorage<Record<string, mastodon.v1.Instance>>(STORAGE_KEY_SERVERS, mock ? mock.server : {}, { deep: true })
|
||||||
|
|
||||||
export type ElkInstance = Partial<mastodon.v1.Instance> & {
|
export type ElkInstance = Partial<mastodon.v1.Instance> & {
|
||||||
|
@ -57,17 +32,24 @@ export function getInstanceCache(server: string): mastodon.v1.Instance | undefin
|
||||||
}
|
}
|
||||||
|
|
||||||
export const currentUser = computed<UserLogin | undefined>(() => {
|
export const currentUser = computed<UserLogin | undefined>(() => {
|
||||||
if (currentUserHandle.value) {
|
const handle = currentUserHandle.value
|
||||||
const user = users.value.find(user => user.account?.acct === currentUserHandle.value)
|
const currentUsers = users.value
|
||||||
|
if (handle) {
|
||||||
|
const user = currentUsers.find(user => user.account?.acct === handle)
|
||||||
if (user)
|
if (user)
|
||||||
return user
|
return user
|
||||||
}
|
}
|
||||||
// Fallback to the first account
|
// Fallback to the first account
|
||||||
return users.value[0]
|
return currentUsers.length ? currentUsers[0] : undefined
|
||||||
})
|
})
|
||||||
|
|
||||||
const publicInstance = ref<ElkInstance | null>(null)
|
const publicInstance = ref<ElkInstance | null>(null)
|
||||||
export const currentInstance = computed<null | ElkInstance>(() => currentUser.value ? instanceStorage.value[currentUser.value.server] ?? null : publicInstance.value)
|
export const currentInstance = computed<null | ElkInstance>(() => {
|
||||||
|
const user = currentUser.value
|
||||||
|
const storage = instanceStorage.value
|
||||||
|
const instance = publicInstance.value
|
||||||
|
return user ? storage[user.server] ?? null : instance
|
||||||
|
})
|
||||||
|
|
||||||
export function getInstanceDomain(instance: ElkInstance) {
|
export function getInstanceDomain(instance: ElkInstance) {
|
||||||
return instance.accountDomain || withoutProtocol(instance.uri)
|
return instance.accountDomain || withoutProtocol(instance.uri)
|
||||||
|
@ -80,37 +62,6 @@ export const currentNodeInfo = computed<null | Record<string, any>>(() => nodes.
|
||||||
export const isGotoSocial = computed(() => currentNodeInfo.value?.software?.name === 'gotosocial')
|
export const isGotoSocial = computed(() => currentNodeInfo.value?.software?.name === 'gotosocial')
|
||||||
export const isGlitchEdition = computed(() => currentInstance.value?.version?.includes('+glitch'))
|
export const isGlitchEdition = computed(() => currentInstance.value?.version?.includes('+glitch'))
|
||||||
|
|
||||||
// when multiple tabs: we need to reload window when sign in, switch account or sign out
|
|
||||||
if (import.meta.client) {
|
|
||||||
const windowReload = () => {
|
|
||||||
document.visibilityState === 'visible' && window.location.reload()
|
|
||||||
}
|
|
||||||
watch(currentUserHandle, async (handle, oldHandle) => {
|
|
||||||
// when sign in or switch account
|
|
||||||
if (handle) {
|
|
||||||
if (handle === currentUser.value?.account?.acct) {
|
|
||||||
// when sign in, the other tab will not have the user, idb is not reactive
|
|
||||||
const newUser = users.value.find(user => user.account?.acct === handle)
|
|
||||||
// if the user is there, then we are switching account
|
|
||||||
if (newUser) {
|
|
||||||
// check if the change is on current tab: if so, don't reload
|
|
||||||
if (document.hasFocus() || document.visibilityState === 'visible')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
window.addEventListener('visibilitychange', windowReload, { capture: true })
|
|
||||||
}
|
|
||||||
// when sign out
|
|
||||||
else if (oldHandle) {
|
|
||||||
const oldUser = users.value.find(user => user.account?.acct === oldHandle)
|
|
||||||
// when sign out, the other tab will not have the user, idb is not reactive
|
|
||||||
if (oldUser)
|
|
||||||
window.addEventListener('visibilitychange', windowReload, { capture: true })
|
|
||||||
}
|
|
||||||
}, { immediate: true, flush: 'post' })
|
|
||||||
}
|
|
||||||
|
|
||||||
export function useUsers() {
|
export function useUsers() {
|
||||||
return users
|
return users
|
||||||
}
|
}
|
||||||
|
@ -120,7 +71,10 @@ export function useSelfAccount(user: MaybeRefOrGetter<mastodon.v1.Account | unde
|
||||||
|
|
||||||
export const characterLimit = computed(() => currentInstance.value?.configuration?.statuses.maxCharacters ?? DEFAULT_POST_CHARS_LIMIT)
|
export const characterLimit = computed(() => currentInstance.value?.configuration?.statuses.maxCharacters ?? DEFAULT_POST_CHARS_LIMIT)
|
||||||
|
|
||||||
export async function loginTo(masto: ElkMasto, user: Overwrite<UserLogin, { account?: mastodon.v1.AccountCredentials }>) {
|
export async function loginTo(
|
||||||
|
masto: ElkMasto,
|
||||||
|
user: Overwrite<UserLogin, { account?: mastodon.v1.AccountCredentials }>,
|
||||||
|
) {
|
||||||
const { client } = masto
|
const { client } = masto
|
||||||
const instance = mastoLogin(masto, user)
|
const instance = mastoLogin(masto, user)
|
||||||
|
|
||||||
|
@ -321,7 +275,7 @@ export async function signOut() {
|
||||||
if (!currentUserHandle.value)
|
if (!currentUserHandle.value)
|
||||||
await useRouter().push('/')
|
await useRouter().push('/')
|
||||||
|
|
||||||
loginTo(masto, currentUser.value || { server: publicServer.value })
|
await loginTo(masto, currentUser.value || { server: publicServer.value })
|
||||||
}
|
}
|
||||||
|
|
||||||
export function checkLogin() {
|
export function checkLogin() {
|
||||||
|
|
|
@ -114,6 +114,11 @@ const locales: LocaleObjectData[] = [
|
||||||
file: 'ca.json',
|
file: 'ca.json',
|
||||||
name: 'Català',
|
name: 'Català',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
code: 'el-GR',
|
||||||
|
file: 'el-GR.json',
|
||||||
|
name: 'Ελληνικά',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
code: 'de-DE',
|
code: 'de-DE',
|
||||||
file: 'de-DE.json',
|
file: 'de-DE.json',
|
||||||
|
@ -213,8 +218,8 @@ const locales: LocaleObjectData[] = [
|
||||||
name: 'Indonesia',
|
name: 'Indonesia',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
code: 'fi-FI',
|
code: 'fi',
|
||||||
file: 'fi-FI.json',
|
file: 'fi.json',
|
||||||
name: 'Suomi',
|
name: 'Suomi',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -7,7 +7,7 @@ export const pwa: VitePWANuxtOptions = {
|
||||||
disable: /* temporarily test in CI isPreview || */ (isDevelopment && process.env.VITE_DEV_PWA !== 'true'),
|
disable: /* temporarily test in CI isPreview || */ (isDevelopment && process.env.VITE_DEV_PWA !== 'true'),
|
||||||
scope: '/',
|
scope: '/',
|
||||||
srcDir: './service-worker',
|
srcDir: './service-worker',
|
||||||
filename: 'sw.ts',
|
filename: 'elk-sw.ts',
|
||||||
strategies: 'injectManifest',
|
strategies: 'injectManifest',
|
||||||
injectRegister: false,
|
injectRegister: false,
|
||||||
includeManifestIcons: false,
|
includeManifestIcons: false,
|
||||||
|
|
|
@ -26,7 +26,7 @@ export const STORAGE_KEY_LAST_ACCESSED_NOTIFICATION_ROUTE = 'elk-last-accessed-n
|
||||||
export const STORAGE_KEY_LAST_ACCESSED_EXPLORE_ROUTE = 'elk-last-accessed-explore-route'
|
export const STORAGE_KEY_LAST_ACCESSED_EXPLORE_ROUTE = 'elk-last-accessed-explore-route'
|
||||||
export const STORAGE_KEY_BOTTOM_NAV_BUTTONS = 'elk-bottom-nav-buttons'
|
export const STORAGE_KEY_BOTTOM_NAV_BUTTONS = 'elk-bottom-nav-buttons'
|
||||||
|
|
||||||
export const HANDLED_MASTO_URLS = /^(https?:\/\/)?([\w\d-]+\.)+\w+\/(@[@\w\d-\.]+)(\/objects)?(\/\d+)?$/
|
export const HANDLED_MASTO_URLS = /^(https?:\/\/)?([\w\-]+\.)+\w+\/(@[@\w\-.]+)(\/objects)?(\/\d+)?$/
|
||||||
|
|
||||||
export const NOTIFICATION_FILTER_TYPES: mastodon.v1.NotificationType[] = ['status', 'reblog', 'follow', 'follow_request', 'favourite', 'poll', 'update', 'admin.sign_up', 'admin.report']
|
export const NOTIFICATION_FILTER_TYPES: mastodon.v1.NotificationType[] = ['status', 'reblog', 'follow', 'follow_request', 'favourite', 'poll', 'update', 'admin.sign_up', 'admin.report']
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
<script>
|
<script setup lang="ts">
|
||||||
export default {
|
const { copy } = defineProps<{
|
||||||
name: 'ClipboardIcon',
|
copy?: boolean
|
||||||
props: { copy: Boolean },
|
}>()
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|
|
@ -1,8 +1,4 @@
|
||||||
<script>
|
<script setup lang="ts"></script>
|
||||||
export default {
|
|
||||||
name: 'IconMastodon',
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<svg width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M21.258 13.99c-.274 1.41-2.456 2.955-4.962 3.254c-1.306.156-2.593.3-3.965.236c-2.243-.103-4.014-.535-4.014-.535c0 .218.014.426.04.62c.292 2.215 2.196 2.347 4 2.41c1.82.062 3.44-.45 3.44-.45l.076 1.646s-1.274.684-3.542.81c-1.25.068-2.803-.032-4.612-.51c-3.923-1.039-4.598-5.22-4.701-9.464c-.031-1.26-.012-2.447-.012-3.44c0-4.34 2.843-5.611 2.843-5.611c1.433-.658 3.892-.935 6.45-.956h.062c2.557.02 5.018.298 6.451.956c0 0 2.843 1.272 2.843 5.61c0 0 .036 3.201-.397 5.424zm-2.956-5.087c0-1.074-.273-1.927-.822-2.558c-.567-.631-1.308-.955-2.229-.955c-1.065 0-1.871.41-2.405 1.228l-.518.87l-.519-.87C11.276 5.8 10.47 5.39 9.405 5.39c-.921 0-1.663.324-2.229.955c-.549.631-.822 1.484-.822 2.558v5.253h2.081V9.057c0-1.075.452-1.62 1.357-1.62c1 0 1.501.647 1.501 1.927v2.79h2.07v-2.79c0-1.28.5-1.927 1.5-1.927c.905 0 1.358.545 1.358 1.62v5.1h2.08V8.902z" /></svg>
|
<svg width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M21.258 13.99c-.274 1.41-2.456 2.955-4.962 3.254c-1.306.156-2.593.3-3.965.236c-2.243-.103-4.014-.535-4.014-.535c0 .218.014.426.04.62c.292 2.215 2.196 2.347 4 2.41c1.82.062 3.44-.45 3.44-.45l.076 1.646s-1.274.684-3.542.81c-1.25.068-2.803-.032-4.612-.51c-3.923-1.039-4.598-5.22-4.701-9.464c-.031-1.26-.012-2.447-.012-3.44c0-4.34 2.843-5.611 2.843-5.611c1.433-.658 3.892-.935 6.45-.956h.062c2.557.02 5.018.298 6.451.956c0 0 2.843 1.272 2.843 5.61c0 0 .036 3.201-.397 5.424zm-2.956-5.087c0-1.074-.273-1.927-.822-2.558c-.567-.631-1.308-.955-2.229-.955c-1.065 0-1.871.41-2.405 1.228l-.518.87l-.519-.87C11.276 5.8 10.47 5.39 9.405 5.39c-.921 0-1.663.324-2.229.955c-.549.631-.822 1.484-.822 2.558v5.253h2.081V9.057c0-1.075.452-1.62 1.357-1.62c1 0 1.501.647 1.501 1.927v2.79h2.07v-2.79c0-1.28.5-1.927 1.5-1.927c.905 0 1.358.545 1.358 1.62v5.1h2.08V8.902z" /></svg>
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
<script>
|
<script setup lang="ts">
|
||||||
export default {
|
const { up } = defineProps<{
|
||||||
name: 'ToggleIcon',
|
up?: boolean
|
||||||
props: { up: Boolean },
|
}>()
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|
|
@ -13,6 +13,6 @@
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@nuxt-themes/docus": "^1.15.0",
|
"@nuxt-themes/docus": "^1.15.0",
|
||||||
"nuxt": "^3.11.2"
|
"nuxt": "^3.13.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
18
fly.toml
Normal file
18
fly.toml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# fly.toml app configuration file generated for elk on 2023-07-15T00:09:39+02:00
|
||||||
|
#
|
||||||
|
# See https://fly.io/docs/reference/configuration/ for information about how to use this file.
|
||||||
|
#
|
||||||
|
|
||||||
|
app = "elk"
|
||||||
|
primary_region = "ams"
|
||||||
|
|
||||||
|
[http_service]
|
||||||
|
internal_port = 5314
|
||||||
|
force_https = true
|
||||||
|
auto_stop_machines = true
|
||||||
|
auto_start_machines = true
|
||||||
|
min_machines_running = 0
|
||||||
|
|
||||||
|
[mounts]
|
||||||
|
source="elkdata"
|
||||||
|
destination="/elk/data"
|
|
@ -1,4 +1,4 @@
|
||||||
<script lang="ts" setup>
|
<script setup lang="ts">
|
||||||
import { usePreferences } from '~/composables/settings'
|
import { usePreferences } from '~/composables/settings'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|
|
@ -7,6 +7,8 @@
|
||||||
"route_loaded": "Seite {0} geladen"
|
"route_loaded": "Seite {0} geladen"
|
||||||
},
|
},
|
||||||
"account": {
|
"account": {
|
||||||
|
"authorize": "Erlauben zu folgen",
|
||||||
|
"authorized": "Du hast die Folgeanfrage erlaubt",
|
||||||
"avatar_description": "{0}'s Avatar",
|
"avatar_description": "{0}'s Avatar",
|
||||||
"blocked_by": "Du wurdest von diesem Account geblockt",
|
"blocked_by": "Du wurdest von diesem Account geblockt",
|
||||||
"blocked_domains": "Geblockte Mastodon-Instanzen",
|
"blocked_domains": "Geblockte Mastodon-Instanzen",
|
||||||
|
@ -25,6 +27,7 @@
|
||||||
"follows_you": "Folgt dir",
|
"follows_you": "Folgt dir",
|
||||||
"go_to_profile": "Gehe zum Profil",
|
"go_to_profile": "Gehe zum Profil",
|
||||||
"joined": "Beigetreten",
|
"joined": "Beigetreten",
|
||||||
|
"lock": "Sperren",
|
||||||
"moved_title": "hat angegeben, dass dies der neue Account ist:",
|
"moved_title": "hat angegeben, dass dies der neue Account ist:",
|
||||||
"muted_users": "Stummgeschaltete Accounts",
|
"muted_users": "Stummgeschaltete Accounts",
|
||||||
"muting": "Stummgeschaltet",
|
"muting": "Stummgeschaltet",
|
||||||
|
@ -37,12 +40,16 @@
|
||||||
"profile_description": "{0}'s Profil",
|
"profile_description": "{0}'s Profil",
|
||||||
"profile_personal_note": "Persönliche Notiz",
|
"profile_personal_note": "Persönliche Notiz",
|
||||||
"profile_unavailable": "Profil nicht verfügbar",
|
"profile_unavailable": "Profil nicht verfügbar",
|
||||||
|
"reject": "Folgeanfrage ablehnen",
|
||||||
|
"rejected": "Du hast den Antrag abgelehnt",
|
||||||
"request_follow": "Folgeanfrage senden",
|
"request_follow": "Folgeanfrage senden",
|
||||||
|
"requested": "{0} hat beantragt, dir zu folgen",
|
||||||
"unblock": "Entblocken",
|
"unblock": "Entblocken",
|
||||||
"unfollow": "Entfolgen",
|
"unfollow": "Entfolgen",
|
||||||
"unmute": "Stummschaltung aufheben",
|
"unmute": "Stummschaltung aufheben",
|
||||||
"view_other_followers": "Follower aus anderen Instanzen werden möglicherweise nicht angezeigt.",
|
"view_other_followers": "Follower aus anderen Instanzen werden möglicherweise nicht angezeigt.",
|
||||||
"view_other_following": "Das Folgen von anderen Instanzen wird möglicherweise nicht angezeigt."
|
"view_other_following": "Das Folgen von anderen Instanzen wird möglicherweise nicht angezeigt.",
|
||||||
|
"withdraw_follow_request": "Folgeanfrage zurückziehen"
|
||||||
},
|
},
|
||||||
"action": {
|
"action": {
|
||||||
"apply": "Anwenden",
|
"apply": "Anwenden",
|
||||||
|
@ -52,7 +59,8 @@
|
||||||
"boost_count": "{0}",
|
"boost_count": "{0}",
|
||||||
"boosted": "Geteilt",
|
"boosted": "Geteilt",
|
||||||
"clear_publish_failed": "Veröffentlichungsfehler löschen",
|
"clear_publish_failed": "Veröffentlichungsfehler löschen",
|
||||||
"clear_upload_failed": "Fehler beim Hochladen von Dateien entfernen",
|
"clear_save_failed": "Speicherfehler löschen",
|
||||||
|
"clear_upload_failed": "Uploadfehler entfernen",
|
||||||
"close": "Schließen",
|
"close": "Schließen",
|
||||||
"compose": "Verfassen",
|
"compose": "Verfassen",
|
||||||
"confirm": "Bestätigen",
|
"confirm": "Bestätigen",
|
||||||
|
@ -64,6 +72,7 @@
|
||||||
"favourited": "Favorisiert",
|
"favourited": "Favorisiert",
|
||||||
"more": "Mehr",
|
"more": "Mehr",
|
||||||
"next": "Nächster",
|
"next": "Nächster",
|
||||||
|
"open_image_preview_dialog": "Bildvorschau öffnen",
|
||||||
"prev": "Vorheriger",
|
"prev": "Vorheriger",
|
||||||
"publish": "Veröffentlichen",
|
"publish": "Veröffentlichen",
|
||||||
"publish_thread": "Thread veröffentlichen",
|
"publish_thread": "Thread veröffentlichen",
|
||||||
|
@ -114,12 +123,14 @@
|
||||||
"block_account": {
|
"block_account": {
|
||||||
"cancel": "Abbrechen",
|
"cancel": "Abbrechen",
|
||||||
"confirm": "Blockieren",
|
"confirm": "Blockieren",
|
||||||
"description": "Bist du sicher, dass du {0} blockieren möchtest?"
|
"description": "Bist du sicher, dass du {0} blockieren möchtest?",
|
||||||
|
"title": "Konto blockieren"
|
||||||
},
|
},
|
||||||
"block_domain": {
|
"block_domain": {
|
||||||
"cancel": "Abbrechen",
|
"cancel": "Abbrechen",
|
||||||
"confirm": "Blockieren",
|
"confirm": "Blockieren",
|
||||||
"description": "Bist du sicher, dass du {0} blockieren möchtest?"
|
"description": "Bist du sicher, dass du {0} blockieren möchtest?",
|
||||||
|
"title": "Domain blockieren"
|
||||||
},
|
},
|
||||||
"common": {
|
"common": {
|
||||||
"cancel": "Abbrechen",
|
"cancel": "Abbrechen",
|
||||||
|
@ -128,27 +139,37 @@
|
||||||
"delete_list": {
|
"delete_list": {
|
||||||
"cancel": "Abbrechen",
|
"cancel": "Abbrechen",
|
||||||
"confirm": "Löschen",
|
"confirm": "Löschen",
|
||||||
"description": "Bist du sicher, dass du die Liste \"{0}\" löschen möchtest?"
|
"description": "Bist du sicher, dass du die Liste \"{0}\" löschen möchtest?",
|
||||||
|
"title": "Liste löschen"
|
||||||
},
|
},
|
||||||
"delete_posts": {
|
"delete_posts": {
|
||||||
"cancel": "Abbrechen",
|
"cancel": "Abbrechen",
|
||||||
"confirm": "Löschen",
|
"confirm": "Löschen",
|
||||||
"description": "Möchtest du diesen Beitrag wirklich löschen?"
|
"description": "Möchtest du diesen Beitrag wirklich löschen?",
|
||||||
|
"title": "Beitrag löschen"
|
||||||
},
|
},
|
||||||
"mute_account": {
|
"mute_account": {
|
||||||
"cancel": "Abbrechen",
|
"cancel": "Abbrechen",
|
||||||
"confirm": "Stummschalten",
|
"confirm": "Stummschalten",
|
||||||
"description": "Bist du sicher, dass du {0} stummschalten möchtest?"
|
"days": "Tage|Tag|Tage",
|
||||||
|
"description": "Bist du sicher, dass du {0} stummschalten möchtest?",
|
||||||
|
"hours": "Stunden|Stunde|Stunden",
|
||||||
|
"minute": "Minuten|Minute|Minuten",
|
||||||
|
"notifications": "Benachrichtigungen stummschalten",
|
||||||
|
"specify_duration": "Dauer der Stummschaltung festlegen",
|
||||||
|
"title": "Konto stummschalten"
|
||||||
},
|
},
|
||||||
"show_reblogs": {
|
"show_reblogs": {
|
||||||
"cancel": "Abbrechen",
|
"cancel": "Abbrechen",
|
||||||
"confirm": "Anzeigen",
|
"confirm": "Anzeigen",
|
||||||
"description": "Bist du sicher, dass du Weiterleitungen von {0} anzeigen möchtest?"
|
"description": "Bist du sicher, dass du Weiterleitungen von {0} anzeigen möchtest?",
|
||||||
|
"title": "Weiterleitungen anzeigen"
|
||||||
},
|
},
|
||||||
"unfollow": {
|
"unfollow": {
|
||||||
"cancel": "Abbrechen",
|
"cancel": "Abbrechen",
|
||||||
"confirm": "Entfolgen",
|
"confirm": "Entfolgen",
|
||||||
"description": "Bist du sicher, dass du entfolgen möchtest?"
|
"description": "Bist du sicher, dass du entfolgen möchtest?",
|
||||||
|
"title": "Entfolgen"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"conversation": {
|
"conversation": {
|
||||||
|
@ -213,6 +234,8 @@
|
||||||
"command_mode": "Befehlsmodus",
|
"command_mode": "Befehlsmodus",
|
||||||
"compose": "Verfassen",
|
"compose": "Verfassen",
|
||||||
"favourite": "Favorisieren",
|
"favourite": "Favorisieren",
|
||||||
|
"search": "Suchen",
|
||||||
|
"show_new_items": "Neue Einträge anzeigen",
|
||||||
"title": "Aktionen"
|
"title": "Aktionen"
|
||||||
},
|
},
|
||||||
"media": {
|
"media": {
|
||||||
|
@ -257,6 +280,7 @@
|
||||||
"pin_on_profile": "An Profil anpinnen",
|
"pin_on_profile": "An Profil anpinnen",
|
||||||
"remove_personal_note": "Persönliche Notiz von {0} entfernen",
|
"remove_personal_note": "Persönliche Notiz von {0} entfernen",
|
||||||
"report_account": "{0} melden",
|
"report_account": "{0} melden",
|
||||||
|
"share_account": "Konto von {0} teilen",
|
||||||
"share_post": "Teile diesen Beitrag",
|
"share_post": "Teile diesen Beitrag",
|
||||||
"show_favourited_and_boosted_by": "Zeige mir, wer favorisiert und geboostet hat",
|
"show_favourited_and_boosted_by": "Zeige mir, wer favorisiert und geboostet hat",
|
||||||
"show_reblogs": "Boosts von {0} anzeigen",
|
"show_reblogs": "Boosts von {0} anzeigen",
|
||||||
|
@ -284,13 +308,16 @@
|
||||||
"built_at": "Letzter Build: {0}",
|
"built_at": "Letzter Build: {0}",
|
||||||
"compose": "Verfassen",
|
"compose": "Verfassen",
|
||||||
"conversations": "Direktnachrichten",
|
"conversations": "Direktnachrichten",
|
||||||
|
"docs": "Dokumentation",
|
||||||
"explore": "Entdecken",
|
"explore": "Entdecken",
|
||||||
"favourites": "Favoriten",
|
"favourites": "Favoriten",
|
||||||
"federated": "Föderiert",
|
"federated": "Föderiert",
|
||||||
|
"hashtags": "Hashtags",
|
||||||
"home": "Startseite",
|
"home": "Startseite",
|
||||||
"list": "Liste",
|
"list": "Liste",
|
||||||
"lists": "Listen",
|
"lists": "Listen",
|
||||||
"local": "Lokal",
|
"local": "Lokal",
|
||||||
|
"more_menu": "Mehr Menü",
|
||||||
"muted_users": "Stummgeschaltete Benutzer",
|
"muted_users": "Stummgeschaltete Benutzer",
|
||||||
"notifications": "Mitteilungen",
|
"notifications": "Mitteilungen",
|
||||||
"privacy": "Datenschutz",
|
"privacy": "Datenschutz",
|
||||||
|
@ -436,6 +463,7 @@
|
||||||
},
|
},
|
||||||
"language": {
|
"language": {
|
||||||
"display_language": "Anzeigesprache",
|
"display_language": "Anzeigesprache",
|
||||||
|
"how_to_contribute": "Wie kann ich mithelfen?",
|
||||||
"label": "Sprache",
|
"label": "Sprache",
|
||||||
"post_language": "Beitragssprache",
|
"post_language": "Beitragssprache",
|
||||||
"status": "Übersetzungsstatus: {0}/{1} ({2}%)",
|
"status": "Übersetzungsstatus: {0}/{1} ({2}%)",
|
||||||
|
@ -503,6 +531,8 @@
|
||||||
},
|
},
|
||||||
"notifications_settings": "Benachrichtigungen",
|
"notifications_settings": "Benachrichtigungen",
|
||||||
"preferences": {
|
"preferences": {
|
||||||
|
"embedded_media": "Eingebetteter Mediaplayer",
|
||||||
|
"embedded_media_description": "Zeige einen eingebetteten Player anstelle der normalen Vorschaukarte an, wenn gemeinsam genutzte Medien-Streaming-Links erweitert werden.",
|
||||||
"enable_autoplay": "Autoplay aktivieren",
|
"enable_autoplay": "Autoplay aktivieren",
|
||||||
"enable_data_saving": "Daten sparen aktivieren",
|
"enable_data_saving": "Daten sparen aktivieren",
|
||||||
"enable_data_saving_description": "Spare Daten, indem du das automatische Laden von Anhängen verhinderst.",
|
"enable_data_saving_description": "Spare Daten, indem du das automatische Laden von Anhängen verhinderst.",
|
||||||
|
@ -511,16 +541,19 @@
|
||||||
"github_cards_description": "Wenn ein GitHub-Link gepostet wird, wird anstelle des sozialen Bildes eine zugängliche HTML-Karte mit der Social-Graph-Meta angezeigt.",
|
"github_cards_description": "Wenn ein GitHub-Link gepostet wird, wird anstelle des sozialen Bildes eine zugängliche HTML-Karte mit der Social-Graph-Meta angezeigt.",
|
||||||
"grayscale_mode": "Graustufenmodus",
|
"grayscale_mode": "Graustufenmodus",
|
||||||
"hide_account_hover_card": "Benutzer-Hover-Karte verbergen",
|
"hide_account_hover_card": "Benutzer-Hover-Karte verbergen",
|
||||||
"hide_alt_indi_on_posts": "Alternativtext-Hinweis in Beiträgen ausblenden",
|
"hide_alt_indi_on_posts": "Alternativtext-Hinweis in Beiträgen verbergen",
|
||||||
"hide_boost_count": "Boost-Zähler ausblenden",
|
"hide_boost_count": "Boost-Zähler verbergen",
|
||||||
"hide_favorite_count": "Favoritenzahl ausblenden",
|
"hide_favorite_count": "Favoritenzahl verbergen",
|
||||||
"hide_follower_count": "Anzahl der Follower ausblenden",
|
"hide_follower_count": "Anzahl der Follower verbergen",
|
||||||
"hide_news": "Nachrichten ausblenden",
|
"hide_gif_indi_on_posts": "GIF-Indikator auf Beiträgen verbergen",
|
||||||
"hide_reply_count": "Antwortanzahl ausblenden",
|
"hide_news": "Nachrichten verbergen",
|
||||||
"hide_translation": "Übersetzungen komplett ausblenden",
|
"hide_reply_count": "Antwortanzahl verbergen",
|
||||||
"hide_username_emojis": "Emojis in Namen ausblenden",
|
"hide_tag_hover_card": "Tag-Hover-Karte verbergen",
|
||||||
"hide_username_emojis_description": "Blendet in der Timeline Emojis in den Namen von Kommentator:innen aus. In deren Profilen sind die Emojis weiterhin zu sehen.",
|
"hide_translation": "Übersetzungen komplett verbergen",
|
||||||
|
"hide_username_emojis": "Emojis in Namen verbergen",
|
||||||
|
"hide_username_emojis_description": "Verbirgt in der Timeline Emojis in den Namen von Kommentator:innen. In deren Profilen sind die Emojis weiterhin zu sehen.",
|
||||||
"label": "Einstellungen",
|
"label": "Einstellungen",
|
||||||
|
"optimize_for_low_performance_device": "Für Geräte mit geringer Leistung optimieren.",
|
||||||
"title": "Experimentelle Funktionen",
|
"title": "Experimentelle Funktionen",
|
||||||
"use_star_favorite_icon": "Stern als Favoriten-Symbol verwenden",
|
"use_star_favorite_icon": "Stern als Favoriten-Symbol verwenden",
|
||||||
"user_picker": "Benutzerauswahl",
|
"user_picker": "Benutzerauswahl",
|
||||||
|
@ -564,12 +597,17 @@
|
||||||
},
|
},
|
||||||
"state": {
|
"state": {
|
||||||
"attachments_exceed_server_limit": "Die Anzahl der Anhänge hat das Limit pro Beitrag überschritten.",
|
"attachments_exceed_server_limit": "Die Anzahl der Anhänge hat das Limit pro Beitrag überschritten.",
|
||||||
|
"attachments_limit_audio_error": "Maximale Audio-Größe überschritten: {0}",
|
||||||
"attachments_limit_error": "Limit pro Beitrag überschritten",
|
"attachments_limit_error": "Limit pro Beitrag überschritten",
|
||||||
|
"attachments_limit_image_error": "Maximale Bildgröße überschritten: {0}",
|
||||||
|
"attachments_limit_unknown_error": "Maximale Dateigröße überschritten: {0}",
|
||||||
|
"attachments_limit_video_error": "Maximale Video-Größe überschritten: {0}",
|
||||||
"edited": "(bearbeitet)",
|
"edited": "(bearbeitet)",
|
||||||
"editing": "Bearbeiten",
|
"editing": "Bearbeiten",
|
||||||
"loading": "Laden...",
|
"loading": "Laden...",
|
||||||
"publish_failed": "Veröffentlichung fehlgeschlagen",
|
"publish_failed": "Veröffentlichung fehlgeschlagen",
|
||||||
"publishing": "Veröffentlichung",
|
"publishing": "Veröffentlichung",
|
||||||
|
"save_failed": "Speichern fehlgeschlagen",
|
||||||
"upload_failed": "Upload fehlgeschlagen",
|
"upload_failed": "Upload fehlgeschlagen",
|
||||||
"uploading": "Hochladen..."
|
"uploading": "Hochladen..."
|
||||||
},
|
},
|
||||||
|
@ -580,9 +618,11 @@
|
||||||
},
|
},
|
||||||
"boosted_by": "Boosted von",
|
"boosted_by": "Boosted von",
|
||||||
"edited": "Zuletzt bearbeitet: {0}",
|
"edited": "Zuletzt bearbeitet: {0}",
|
||||||
|
"embedded_warning": "Das Abspielen kann deine IP-Adresse anderen offenlegen.",
|
||||||
"favourited_by": "Favorisiert von",
|
"favourited_by": "Favorisiert von",
|
||||||
"filter_hidden_phrase": "Versteckt durch",
|
"filter_hidden_phrase": "Versteckt durch",
|
||||||
"filter_show_anyway": "Trotzdem zeigen",
|
"filter_show_anyway": "Trotzdem zeigen",
|
||||||
|
"gif": "GIF",
|
||||||
"img_alt": {
|
"img_alt": {
|
||||||
"ALT": "ALT",
|
"ALT": "ALT",
|
||||||
"desc": "Beschreibung",
|
"desc": "Beschreibung",
|
||||||
|
@ -615,9 +655,17 @@
|
||||||
"media": "Medien",
|
"media": "Medien",
|
||||||
"news": "Nachrichten",
|
"news": "Nachrichten",
|
||||||
"notifications_all": "Alle",
|
"notifications_all": "Alle",
|
||||||
|
"notifications_favourite": "Favorit",
|
||||||
|
"notifications_follow": "Folgen",
|
||||||
|
"notifications_follow_request": "Folgeanfrage",
|
||||||
"notifications_mention": "Erwähnungen",
|
"notifications_mention": "Erwähnungen",
|
||||||
|
"notifications_more_tooltip": "Benachrichtigungen nach Typ filtern",
|
||||||
|
"notifications_poll": "Umfrage",
|
||||||
|
"notifications_reblog": "Boost",
|
||||||
|
"notifications_status": "Status",
|
||||||
|
"notifications_update": "Aktualisierung",
|
||||||
"posts": "Beiträge",
|
"posts": "Beiträge",
|
||||||
"posts_with_replies": "Beiträge und Antworten"
|
"posts_with_replies": "Beiträge & Antworten"
|
||||||
},
|
},
|
||||||
"tag": {
|
"tag": {
|
||||||
"follow": "Folgen",
|
"follow": "Folgen",
|
||||||
|
|
746
locales/el-GR.json
Normal file
746
locales/el-GR.json
Normal file
|
@ -0,0 +1,746 @@
|
||||||
|
{
|
||||||
|
"a11y": {
|
||||||
|
"loading_page": "Η σελίδα φορτώνει, παρακαλώ περίμενε",
|
||||||
|
"loading_titled_page": "Η σελίδα {0} φορτώνει, παρακαλώ περίμενε",
|
||||||
|
"locale_changed": " Η γλώσσα άλλαξε σε {0}",
|
||||||
|
"locale_changing": "Η γλώσσα αλλάζει, παρακαλώ περίμενε",
|
||||||
|
"route_loaded": "Η σελίδα {0} φορτώθηκε"
|
||||||
|
},
|
||||||
|
"account": {
|
||||||
|
"authorize": "Εξουσιοδότησε για να ακολουθήσεις",
|
||||||
|
"authorized": "You have Authorized the request",
|
||||||
|
"avatar_description": "το άβαταρ του χρήστη {0}",
|
||||||
|
"blocked_by": "Είσαι αποκλεισμένος από αυτόν τον χρήστη.",
|
||||||
|
"blocked_domains": "Αποκλεισμένοι τομείς",
|
||||||
|
"blocked_users": "Αποκλεισμένοι χρήστες",
|
||||||
|
"blocking": "Αποκλεισμένοι",
|
||||||
|
"bot": "BOT",
|
||||||
|
"copy_account_name": "Αντιγραφή ονόματος λογαριασμού",
|
||||||
|
"favourites": "Αγαπημένα",
|
||||||
|
"follow": "Ακολούθησε",
|
||||||
|
"follow_back": "Ακολούθησε και συ",
|
||||||
|
"follow_requested": "Αιτήθηκε",
|
||||||
|
"followers": "Ακόλουθοι",
|
||||||
|
"followers_count": "{0} Ακόλουθοι|{0} Ακόλουθος|{0} Ακόλουθοι",
|
||||||
|
"following": "Ακολουθεί",
|
||||||
|
"following_count": "Ακολουθεί {0}",
|
||||||
|
"follows_you": "Σε ακολουθεί",
|
||||||
|
"go_to_profile": "Πήγαινε στο προφίλ",
|
||||||
|
"joined": "έγινε μέλος",
|
||||||
|
"lock": "Κλείδωμα",
|
||||||
|
"moved_title": "έχει δηλώσει ότι ο νέος του λογαριασμός είναι:",
|
||||||
|
"muted_users": "Χρήστες σε σίγαση",
|
||||||
|
"muting": "Σε σίγαση",
|
||||||
|
"mutuals": "Κοινοί",
|
||||||
|
"notifications_on_post_disable": "Σταμάτα να με ειδοποιείς όταν ο χρήστης {username} κάνει ανάρτηση",
|
||||||
|
"notifications_on_post_enable": "Ειδοποίησέ με όταν ο χρήστης {username} κάνει ανάρτηση",
|
||||||
|
"pinned": "Καρφιτσώθηκε",
|
||||||
|
"posts": "Αναρτήσεις",
|
||||||
|
"posts_count": "{0} Αναρτήσεις|{0} Ανάρτηση|{0} Αναρτήσεις",
|
||||||
|
"profile_description": "Κεφαλίδα προφίλ του χρήστη {0}",
|
||||||
|
"profile_personal_note": "Προσωπική Σημείωση",
|
||||||
|
"profile_unavailable": "Μη διαθέσιμο προφίλ",
|
||||||
|
"reject": "Άρνηση ακολούθησης",
|
||||||
|
"rejected": "Αρνήθηκες το αίτημα",
|
||||||
|
"request_follow": "Αίτημα ακολούθησης",
|
||||||
|
"requested": "Ο χρήστης {0} ζήτησε να σε ακολουθήσει",
|
||||||
|
"unblock": "Άρση αποκλεισμού",
|
||||||
|
"unfollow": "Άρση ακολούθησης",
|
||||||
|
"unmute": "Άρση σίγασης",
|
||||||
|
"view_other_followers": "Οι ακόλουθοι από άλλες οντότητες μπορεί να μην εμφανίζονται.",
|
||||||
|
"view_other_following": "Αυτοί που ακολουθείς από άλλες οντότητες μπορεί να μην εμφανίζονται.",
|
||||||
|
"withdraw_follow_request": "Ανάκληση αιτήματος ακολούθησης"
|
||||||
|
},
|
||||||
|
"action": {
|
||||||
|
"apply": "Εφαρμογή",
|
||||||
|
"bookmark": "Σελιδοδείκτης",
|
||||||
|
"bookmarked": "Με Σελιδοδείκτη",
|
||||||
|
"boost": "Ενίσχυση",
|
||||||
|
"boost_count": "{0}",
|
||||||
|
"boosted": "Ενισχύθηκε",
|
||||||
|
"clear_publish_failed": "Καθαρισμός σφαλμάτων ανάρτησης",
|
||||||
|
"clear_save_failed": "Καθαρισμός σφαλμάτων αποθήκευσης",
|
||||||
|
"clear_upload_failed": "Εκκαθάριση σφαλμάτων μεταμόρφωσης αρχείων",
|
||||||
|
"close": "Κλείσιμο",
|
||||||
|
"compose": "Σύνταξη",
|
||||||
|
"confirm": "Επιβεβαίωση",
|
||||||
|
"done": "Έγινε",
|
||||||
|
"edit": "Επεξεργασία",
|
||||||
|
"enter_app": "Είσοδος στην εφαρμογή",
|
||||||
|
"favourite": "Αγαπημένο",
|
||||||
|
"favourite_count": "{0}",
|
||||||
|
"favourited": "Είναι αγαπημένο",
|
||||||
|
"more": "Περισσότερα",
|
||||||
|
"next": "Επόμενο",
|
||||||
|
"prev": "Προηγ.",
|
||||||
|
"publish": "Δημοσίευση",
|
||||||
|
"reply": "Απάντηση",
|
||||||
|
"reply_count": "{0}",
|
||||||
|
"reset": "Επαναφορά",
|
||||||
|
"save": "Αποθήκευση",
|
||||||
|
"save_changes": "Αποθήκευση αλλαγών",
|
||||||
|
"sign_in": "Σύνδεση",
|
||||||
|
"sign_in_to": "Σύνδεση σε {0}",
|
||||||
|
"switch_account": "Εναλλαγή λογαριασμού",
|
||||||
|
"vote": "Ψήφος"
|
||||||
|
},
|
||||||
|
"app_desc_short": "Ένας ελαφρώς προσαρμοσμένος πελάτης για το Mastodon",
|
||||||
|
"app_logo": "Λογότυπο Elk",
|
||||||
|
"app_name": "Elk",
|
||||||
|
"attachment": {
|
||||||
|
"edit_title": "Περιγραφή",
|
||||||
|
"remove_label": "Αφαίρεση επισύναψης"
|
||||||
|
},
|
||||||
|
"command": {
|
||||||
|
"activate": "Ενεργοποίηση",
|
||||||
|
"complete": "Ολοκλήρωση",
|
||||||
|
"compose_desc": "Γράψε νέα ανάρτηση",
|
||||||
|
"n_people_in_the_past_n_days": "{0} άτομα τις τελευταίες {1} μέρες",
|
||||||
|
"select_lang": "Επιλογή γλώσσας",
|
||||||
|
"sign_in_desc": "Προσθήκη υπάρχοντος λογαριασμού",
|
||||||
|
"switch_account": "Εναλλαγή σε {0}",
|
||||||
|
"switch_account_desc": "Εναλλαγή σε άλλο λογαριασμό",
|
||||||
|
"toggle_dark_mode": "Εναλλαγή σκοτεινής λειτουργίας",
|
||||||
|
"toggle_zen_mode": "Εναλλαγή λειτουργίας Zen"
|
||||||
|
},
|
||||||
|
"common": {
|
||||||
|
"end_of_list": "Τέλος της λίστας",
|
||||||
|
"error": "ΣΦΑΛΜΑ",
|
||||||
|
"fetching": "Ανάκτηση...",
|
||||||
|
"in": "σε",
|
||||||
|
"no_bookmarks": "Δεν υπάρχουν αναρτήσεις με σελιδοδείκτη ακόμα",
|
||||||
|
"no_favourites": "Δεν υπάρχουν αγαπημένες αναρτήσεις ακόμα",
|
||||||
|
"not_found": "404 Δε βρέθηκε",
|
||||||
|
"offline_desc": "Φαίνεται να είσαι αποσυνδεδεμένος. Παρακαλώ έλεγξε τη σύνδεση σου στο διαδίκτυο."
|
||||||
|
},
|
||||||
|
"compose": {
|
||||||
|
"draft_title": "Πρόχειρο {0}",
|
||||||
|
"drafts": "Πρόχειρο ({v})"
|
||||||
|
},
|
||||||
|
"confirm": {
|
||||||
|
"block_account": {
|
||||||
|
"cancel": "Ακύρωση",
|
||||||
|
"confirm": "Αποκλεισμός",
|
||||||
|
"description": "Σίγουρα θες να αποκλείσεις τον {0};",
|
||||||
|
"title": "Αποκλεισμός λογαριασμού"
|
||||||
|
},
|
||||||
|
"block_domain": {
|
||||||
|
"cancel": "Ακύρωση",
|
||||||
|
"confirm": "Αποκλεισμός",
|
||||||
|
"description": "Σίγουρα θες να αποκλείσεις τον {0}?;",
|
||||||
|
"title": "Αποκλεισμός τομέα"
|
||||||
|
},
|
||||||
|
"common": {
|
||||||
|
"cancel": "Όχι",
|
||||||
|
"confirm": "Ναι"
|
||||||
|
},
|
||||||
|
"delete_list": {
|
||||||
|
"cancel": "Ακύρωση",
|
||||||
|
"confirm": "Διαγραφή",
|
||||||
|
"description": "Θες σίγουρα να διαγράψεις την λίστα \"{0}\";",
|
||||||
|
"title": "Διαγραφή λίστας"
|
||||||
|
},
|
||||||
|
"delete_posts": {
|
||||||
|
"cancel": "Ακύρωση",
|
||||||
|
"confirm": "Διαγραφή",
|
||||||
|
"description": "Θες σίγουρα να διαγράψεις αυτή την ανάρτηση;",
|
||||||
|
"title": "Διαγραφή ανάρτησης"
|
||||||
|
},
|
||||||
|
"mute_account": {
|
||||||
|
"cancel": "Ακύρωση",
|
||||||
|
"confirm": "Σίγαση",
|
||||||
|
"days": "μέρες|μέρα|μέρες",
|
||||||
|
"description": "Θες σίγουρα να κάνεις σίγαση στον {0};",
|
||||||
|
"hours": "ώρες|ώρα|ώρες",
|
||||||
|
"minute": "λεπτά|λεπτό|λεπτά",
|
||||||
|
"notifications": "Σίγαση ειδοποιήσεων",
|
||||||
|
"specify_duration": "Προσδιόρισε διάρκεια σίγασης",
|
||||||
|
"title": "Σίγαση λογαριασμού"
|
||||||
|
},
|
||||||
|
"show_reblogs": {
|
||||||
|
"cancel": "Ακύρωση",
|
||||||
|
"confirm": "Εμφάνιση",
|
||||||
|
"description": "Θες σίγουρα να εμφανίζεις τις ενισχύσεις του {0}?",
|
||||||
|
"title": "Εμφάνιση ενισχύσεων"
|
||||||
|
},
|
||||||
|
"unfollow": {
|
||||||
|
"cancel": "Ακύρωση",
|
||||||
|
"confirm": "Άρση ακολούθησης",
|
||||||
|
"description": "Θες σίγουρα να κάνεις άρση ακολούθησης στον {0};",
|
||||||
|
"title": "Άρση ακολούθησης"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"conversation": {
|
||||||
|
"with": "με"
|
||||||
|
},
|
||||||
|
"custom_cards": {
|
||||||
|
"stackblitz": {
|
||||||
|
"lines": "Γραμμές {0}",
|
||||||
|
"open": "Άνοιγμα",
|
||||||
|
"snippet_from": "Απόκομμα από {0}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"account_not_found": "Ο λογαριασμός {0} δεν βρέθηκε",
|
||||||
|
"explore_list_empty": "Δεν υπάρχει τίποτα δημοφιλές αυτήν τη στιγμή. Έλεγξε ξανά αργότερα!",
|
||||||
|
"file_size_cannot_exceed_n_mb": "Το μέγεθος του αρχείου δεν μπορεί να υπερβαίνει τα {0}MB",
|
||||||
|
"sign_in_error": "Σφάλμα σύνδεσης με τον διακομιστή",
|
||||||
|
"status_not_found": "Η ανάρτηση δεν βρέθηκε",
|
||||||
|
"unsupported_file_format": "Μη υποστηριζόμενη μορφή αρχείου"
|
||||||
|
},
|
||||||
|
"help": {
|
||||||
|
"build_preview": {
|
||||||
|
"desc1": "Βλέπεις, για την ώρα, μια δοκιμαστική έκδοση του Elk από την κοινότητα - {0}.",
|
||||||
|
"desc2": "Μπορεί να περιέχει μη αξιολογημένες ή ακόμα και κακόβουλες αλλαγές.",
|
||||||
|
"desc3": "Μην συνδεθείς με τον πραγματικό σου λογαριασμό",
|
||||||
|
"title": "Εκκίνηση προεπισκόπησης"
|
||||||
|
},
|
||||||
|
"desc_highlight": "Αναμένονται μερικά σφάλματα και ελλείψεις δυνατοτήτων πού και πού.",
|
||||||
|
"desc_para1": "Ευχαριστούμε για το ενδιαφέρον σου να δοκιμάσεις το Elk, τον εν εξελίξει πελάτη Mastodon για τον ιστό!",
|
||||||
|
"desc_para2": "Δουλεύουμε σκληρά στην ανάπτυξη και βελτίωσή του με τον καιρό.",
|
||||||
|
"desc_para3": "Για την ενίσχυση της ανάπτυξης, μπορείς να χρηματοδοτήσεις την Ομάδα μέσω του GitHub Sponsors. Ελπίζουμε να απολαμβάνεις τον Elk!",
|
||||||
|
"desc_para4": "Ο Elk είναι Ανοιχτού Κώδικα. Αν θες να βοηθήσεις με την αποσφαλμάτωση, να προσφέρεις σχόλια ή να συνεισφέρεις,",
|
||||||
|
"desc_para5": " βρες μας στο GitHub",
|
||||||
|
"desc_para6": " και αναμείξου.",
|
||||||
|
"footer_team": "Η ομάδα του Elk",
|
||||||
|
"title": "Ο Elk είναι σε προεπισκόπηση!"
|
||||||
|
},
|
||||||
|
"language": {
|
||||||
|
"search": "Αναζήτηση"
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"add_account": "Προσθήκη λογαριασμού στη λίστα",
|
||||||
|
"cancel_edit": "Ακύρωση επεξεργασίας",
|
||||||
|
"clear_error": "Εκκαθάριση σφάλματος",
|
||||||
|
"create": "Δημιουργία",
|
||||||
|
"delete": "Διαγραφή λίστας",
|
||||||
|
"delete_error": "Υπήρξε ένα σφάλμα κατά τη διαγραφή της λίστας",
|
||||||
|
"edit": "Επεξεργασία αυτής της λίστας",
|
||||||
|
"edit_error": "Παρουσιάστηκε σφάλμα κατά την ενημέρωση της λίστας",
|
||||||
|
"error": "Παρουσιάστηκε ένα σφάλμα κατά τη δημιουργία της λίστας",
|
||||||
|
"error_prefix": "Σφάλμα: ",
|
||||||
|
"list_title_placeholder": "Τίτλος λίστας",
|
||||||
|
"modify_account": "Τροποποίηση λιστών με λογαριασμό",
|
||||||
|
"remove_account": "Αφαίρεση λογαριασμού από τη λίστα",
|
||||||
|
"save": "Αποθήκευση αλλαγών"
|
||||||
|
},
|
||||||
|
"magic_keys": {
|
||||||
|
"dialog_header": "Συντομεύσεις πληκτρολογίου",
|
||||||
|
"groups": {
|
||||||
|
"actions": {
|
||||||
|
"boost": "Ενίσχυση",
|
||||||
|
"command_mode": "Λειτουργία εντολών",
|
||||||
|
"compose": "Σύνταξη",
|
||||||
|
"favourite": "Αγαπημένο",
|
||||||
|
"search": "Αναζήτηση",
|
||||||
|
"show_new_items": "Εμφάνιση νέων αντικειμένων",
|
||||||
|
"title": "Ενέργειες"
|
||||||
|
},
|
||||||
|
"media": {
|
||||||
|
"title": "Πολυμέσα"
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"go_to_bookmarks": "Σελιδοδείκτες",
|
||||||
|
"go_to_conversations": "Συζητήσεις",
|
||||||
|
"go_to_explore": "Εξερεύνηση",
|
||||||
|
"go_to_favourites": "Αγαπημένα",
|
||||||
|
"go_to_federated": "Σε ομοσπονδία",
|
||||||
|
"go_to_home": "Αρχική",
|
||||||
|
"go_to_lists": "Λίστες",
|
||||||
|
"go_to_local": "Τοπικό",
|
||||||
|
"go_to_notifications": "Ειδοποιήσεις",
|
||||||
|
"go_to_profile": "Προφίλ",
|
||||||
|
"go_to_search": "Αναζήτηση",
|
||||||
|
"go_to_settings": "Ρυθμίσεις",
|
||||||
|
"next_status": "Επόμενη ανάρτηση",
|
||||||
|
"previous_status": "Προηγούμενη ανάρτηση",
|
||||||
|
"shortcut_help": "Συντόμευση βοήθεια",
|
||||||
|
"title": "Πλοήγηση"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sequence_then": "τότε"
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"add_personal_note": "Προσθήκη προσωπικής σημείωσης σε {0}",
|
||||||
|
"block_account": "Αποκλεισμός {0}",
|
||||||
|
"block_domain": "Αποκλεισμός τομέα {0}",
|
||||||
|
"copy_link_to_post": "Αντιγραφή συνδέσμου σε αυτήν την ανάρτηση",
|
||||||
|
"copy_original_link_to_post": "Αντιγραφή αρχικού συνδέσμου σε αυτή την ανάρτηση",
|
||||||
|
"delete": "Διαγραφή",
|
||||||
|
"delete_and_redraft": "Διαγραφή & επαναδημιουργία",
|
||||||
|
"direct_message_account": "Άμεσο μήνυμα {0}",
|
||||||
|
"edit": "Επεξεργασία",
|
||||||
|
"hide_reblogs": "Απόκρυψη ενισχύσεων από {0}",
|
||||||
|
"mention_account": "Επισήμανση {0}",
|
||||||
|
"mute_account": "Σίγαση {0}",
|
||||||
|
"mute_conversation": "Σίγαση αυτής της ανάρτησης",
|
||||||
|
"open_in_original_site": "Άνοιγμα σε αρχικό ιστότοπο",
|
||||||
|
"pin_on_profile": "Καρφίτσωμα στο προφίλ",
|
||||||
|
"remove_personal_note": "Αφαίρεση προσωπικής σημείωσης {0}",
|
||||||
|
"report_account": "Αναφορά {0}",
|
||||||
|
"share_account": "Κοινοποίηση {0}",
|
||||||
|
"share_post": "Κοινοποίηση αυτής της ανάρτησης",
|
||||||
|
"show_favourited_and_boosted_by": "Εμφάνιση αυτών που το ενίσχυσαν ή το επισήμαναν ως αγαπημένο ",
|
||||||
|
"show_reblogs": "Εμφάνιση ενισχύσεων από {0}",
|
||||||
|
"show_untranslated": "Εμφάνιση μη μεταφρασμένου",
|
||||||
|
"toggle_theme": {
|
||||||
|
"dark": "Εναλλαγή σε σκοτεινή λειτουργία",
|
||||||
|
"light": "Εναλλαγή σε φωτεινή λειτουργία"
|
||||||
|
},
|
||||||
|
"translate_post": "Μετάφραση ανάρτησης",
|
||||||
|
"unblock_account": "Άρση αποκλεισμού {0}",
|
||||||
|
"unblock_domain": "Άρση αποκλεισμού τομέα {0}",
|
||||||
|
"unfollow_account": "Άρση ακολούθησης {0}",
|
||||||
|
"unmute_account": "Άρση σίγασης {0}",
|
||||||
|
"unmute_conversation": "Άρση σίγασης αυτής της ανάρτησης",
|
||||||
|
"unpin_on_profile": "Ξεκαρφίτσωμα από το προφίλ"
|
||||||
|
},
|
||||||
|
"modals": {
|
||||||
|
"aria_label_close": "Κλείσιμο"
|
||||||
|
},
|
||||||
|
"nav": {
|
||||||
|
"back": "Πίσω",
|
||||||
|
"blocked_domains": "Αποκλεισμένοι τομείς",
|
||||||
|
"blocked_users": "Αποκλεισμένοι χρήστες",
|
||||||
|
"bookmarks": "Σελιδοδείκτες",
|
||||||
|
"built_at": "Δημιουργήθηκε {0}",
|
||||||
|
"compose": "Σύνταξη",
|
||||||
|
"conversations": "Συζητήσεις",
|
||||||
|
"explore": "Εξερεύνηση",
|
||||||
|
"favourites": "Αγαπημένα",
|
||||||
|
"federated": "Σε ομοσπονδία",
|
||||||
|
"hashtags": "Ετικέτες",
|
||||||
|
"home": "Αρχική",
|
||||||
|
"list": "Λίστα",
|
||||||
|
"lists": "Λίστες",
|
||||||
|
"local": "Τοπικό",
|
||||||
|
"muted_users": "Χρήστες σε σίγαση",
|
||||||
|
"notifications": "Ειδοποιήσεις",
|
||||||
|
"privacy": "Ιδιωτικότητα",
|
||||||
|
"profile": "Προφίλ",
|
||||||
|
"search": "Αναζήτηση",
|
||||||
|
"select_feature_flags": "Εναλλαγή σημαιών δυνατοτήτων",
|
||||||
|
"select_font_size": "Μέγεθος γραμματοσειράς",
|
||||||
|
"select_language": "Επιλογή γλώσσας εμφάνισης",
|
||||||
|
"settings": "Ρυθμίσεις",
|
||||||
|
"show_intro": "Εμφάνιση εισαγωγής",
|
||||||
|
"toggle_theme": "Εναλλαγή θέματος",
|
||||||
|
"zen_mode": "Λειτουργία Ζεν"
|
||||||
|
},
|
||||||
|
"notification": {
|
||||||
|
"favourited_post": "Επισήμανε την ανάρτηση σου ως αγαπημένη",
|
||||||
|
"followed_you": "σε ακολούθησε",
|
||||||
|
"followed_you_count": "{0} άτομα σε ακολούθησαν|{0} άτομο σε ακολούθησε|{0} άτομα σε ακολούθησαν",
|
||||||
|
"missing_type": "ΛΕΙΠΕΙ ειδοποίηση.τύπος:",
|
||||||
|
"reblogged_post": "ενίσχυσε την ανάρτησή σου",
|
||||||
|
"reported": "Ο χρήστης {0} ανέφερε {1}",
|
||||||
|
"request_to_follow": "αιτήθηκε να σε ακολουθήσει",
|
||||||
|
"signed_up": "έκανε εγγραφή",
|
||||||
|
"update_status": "ενημέρωσε την ανάρτησή του"
|
||||||
|
},
|
||||||
|
"placeholder": {
|
||||||
|
"content_warning": "Γράψε την προειδοποίησή σου εδώ",
|
||||||
|
"default_1": "Τί σκέφτεσαι;",
|
||||||
|
"reply_to_account": "Απάντηση σε {0}",
|
||||||
|
"replying": "Απαντάται"
|
||||||
|
},
|
||||||
|
"polls": {
|
||||||
|
"allow_multiple": "Επιτρέπεται πολλαπλή επιλογή",
|
||||||
|
"cancel": "Ακύρωση",
|
||||||
|
"create": "Δημιουργία δημοσκόπησης",
|
||||||
|
"disallow_multiple": "Να μην επιτρέπεται πολλαπλή επιλογή",
|
||||||
|
"expiration": "Λήξη δημοσκόπησης",
|
||||||
|
"hide_votes": "Απόκρυψη συνολικών ψήφων μέχρι το τέλος",
|
||||||
|
"option_placeholder": "Επιλογή δημοσκόπησης {current}/{max}",
|
||||||
|
"remove_option": "Αφαίρεση επιλογής",
|
||||||
|
"settings": "Επιλογές δημοσκόπησης",
|
||||||
|
"show_votes": "Εμφάνιση συνολικών ψήφων πάντα"
|
||||||
|
},
|
||||||
|
"pwa": {
|
||||||
|
"dismiss": "Απόρριψη",
|
||||||
|
"install": "Εγκατάσταση",
|
||||||
|
"install_title": "Εγκατάσταση Elk",
|
||||||
|
"screenshots": {
|
||||||
|
"dark": "Στιγμιότυπο του Elk σε σκοτεινή λειτουργία",
|
||||||
|
"light": "Στιγμιότυπο του Elk σε φωτεινή λειτουργία"
|
||||||
|
},
|
||||||
|
"title": "Νέα διαθέσιμη ενημέρωση του Elk!",
|
||||||
|
"update": "Ενημέρωση",
|
||||||
|
"update_available_short": "Ενημέρωση του Elk",
|
||||||
|
"webmanifest": {
|
||||||
|
"canary": {
|
||||||
|
"description": "Ένας ελαφρώς προσαρμοσμένος πελάτης για το Mastodon (canary)",
|
||||||
|
"name": "Elk (canary)",
|
||||||
|
"short_name": "Elk (canary)"
|
||||||
|
},
|
||||||
|
"dev": {
|
||||||
|
"description": "Ένας ελαφρώς προσαρμοσμένος πελάτης για το Mastodon (dev)",
|
||||||
|
"name": "Elk (dev)",
|
||||||
|
"short_name": "Elk (dev)"
|
||||||
|
},
|
||||||
|
"preview": {
|
||||||
|
"description": "Ένας ελαφρώς προσαρμοσμένος πελάτης για το Mastodon (preview)",
|
||||||
|
"name": "Elk (preview)",
|
||||||
|
"short_name": "Elk (preview)"
|
||||||
|
},
|
||||||
|
"release": {
|
||||||
|
"description": "Ένας ελαφρώς προσαρμοσμένος πελάτης για το Mastodon",
|
||||||
|
"name": "Elk",
|
||||||
|
"short_name": "Elk"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"report": {
|
||||||
|
"additional_comments": "Επιπρόσθετα σχόλια",
|
||||||
|
"another_server": "Ο χρήστης που αναφέρεις είναι από άλλο διακομιστή",
|
||||||
|
"anything_else": "Υπάρχει κάτι άλλο που πιστεύεις ότι πρέπει να γνωρίζουμε;",
|
||||||
|
"block_desc": "Δεν θα βλέπεις πλέον καμία ανάρτηση από αυτόν τον χρήστη. Δεν θα μπορεί να δει τις αναρτήσεις σου ή να σε ακολουθήσει. Θα μπορεί να διαπιστώσει ότι έχει αποκλειστεί.",
|
||||||
|
"dontlike": "Δεν μου αρέσει",
|
||||||
|
"dontlike_desc": "Δεν είναι κάτι που θες να βλέπεις",
|
||||||
|
"forward": "Ναι, προώθηση αυτής της αναφοράς σε {0}",
|
||||||
|
"forward_question": "Θες να στείλεις ένα ανώνυμο αντίγραφο αυτής της αναφοράς και σε εκείνον τον διακομιστή;",
|
||||||
|
"further_actions": {
|
||||||
|
"limit": {
|
||||||
|
"description": "Ορίστε οι επιλογές σου για τον έλεγχο του τί βλέπεις:",
|
||||||
|
"title": "Δε θες να το βλέπεις αυτό;"
|
||||||
|
},
|
||||||
|
"report": {
|
||||||
|
"description": "Όσο το εξετάζουμε, ορίστε μερικές ενέργειες που μπορείς να κάνεις:",
|
||||||
|
"title": "Ευχαριστούμε για την αναφορά, θα το κοιτάξουμε"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"limiting": "Περιορίζεται ο χρήστης {0}",
|
||||||
|
"mute_desc": "Δεν θα βλέπεις πλέον αναρτήσεις από αυτόν τον χρήστη. Μπορεί ακόμα να σε ακολουθήσει και να βλέπει τις αναρτήσεις σου. Δεν θα ξέρει ότι είναι σε σίγαση.",
|
||||||
|
"other": "Είναι κάτι άλλο",
|
||||||
|
"other_desc": "Το ζήτημα δεν ταιριάζει στις άλλες κατηγορίες",
|
||||||
|
"reporting": "Γίνεται αναφορά του χρήστη {0}",
|
||||||
|
"select_many": "Επίλεξε όλα όσα ισχύουν:",
|
||||||
|
"select_one": "Διάλεξε τη καλύτερη αντιστοίχιση:",
|
||||||
|
"select_posts": "Υπάρχει κάποια ανάρτηση που υποστηρίζει αυτή την αναφορά;",
|
||||||
|
"select_posts_other": "Υπάρχουν άλλες αναρτήσεις που υποστηρίζουν αυτή την αναφορά;",
|
||||||
|
"spam": "Είναι σπαμ",
|
||||||
|
"spam_desc": "Επιβλαβείς σύνδεσμοι, ψεύτικη αλληλεπίδραση ή επαναλαμβανόμενες απαντήσεις",
|
||||||
|
"submit": "Καταχώριση Αναφοράς",
|
||||||
|
"unfollow_desc": "Δεν θα βλέπεις πλέον αναρτήσεις από αυτόν τον χρήστη στην αρχική ροή σου. Μπορεί να βλέπεις τις αναρτήσεις του αλλού.",
|
||||||
|
"violation": "Παραβιάζει τουλάχιστον ένα κανόνα του διακομιστή",
|
||||||
|
"whats_wrong_account": "Πες μας τί πάει στραβά με αυτόν τον λογαριασμό",
|
||||||
|
"whats_wrong_post": "Πες μας τί πάει στραβά με αυτή την ανάρτηση"
|
||||||
|
},
|
||||||
|
"search": {
|
||||||
|
"search_desc": "Αναζήτησε για άτομα & ετικέτες",
|
||||||
|
"search_empty": "Δεν βρέθηκε τίποτα με αυτούς τους όρους αναζήτησης"
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"about": {
|
||||||
|
"built_at": "Δομήθηκε",
|
||||||
|
"label": "Σχετικά",
|
||||||
|
"meet_the_team": "Γνώρισε την ομάδα",
|
||||||
|
"sponsor_action": "Χορήγησέ μας",
|
||||||
|
"sponsor_action_desc": "Για να υποστηρίξεις την ομάδα που αναπτύσσει το Elk",
|
||||||
|
"sponsors": "Χορηγοί",
|
||||||
|
"sponsors_body_1": "Ο Elk έγινε πραγματικότητα χάρη στις γενναιόδωρες χορηγίες και βοήθεια των:",
|
||||||
|
"sponsors_body_2": "Και όλες τις εταιρείες και άτομα που χορήγησαν στην ομάδα του Elk και των μελών της.",
|
||||||
|
"sponsors_body_3": "Αν απολαμβάνεις την εφαρμογή, σκέψου να μας χορηγήσεις:",
|
||||||
|
"version": "Έκδοση"
|
||||||
|
},
|
||||||
|
"account_settings": {
|
||||||
|
"description": "Επεξεργάσου τις ρυθμίσεις του λογαριασμού σου στο UI του Mastodon",
|
||||||
|
"label": "Ρυθμίσεις λογαριασμού"
|
||||||
|
},
|
||||||
|
"interface": {
|
||||||
|
"color_mode": "Λειτουργία Χρώματος",
|
||||||
|
"dark_mode": "Σκοτεινό",
|
||||||
|
"default": " (προεπιλογή)",
|
||||||
|
"font_size": "Μέγεθος Γραμματοσειράς",
|
||||||
|
"label": "Διεπαφή",
|
||||||
|
"light_mode": "Φωτεινό",
|
||||||
|
"system_mode": "Σύστημα",
|
||||||
|
"theme_color": "Χρώμα Θέματος"
|
||||||
|
},
|
||||||
|
"language": {
|
||||||
|
"display_language": "Γλώσσα Εμφάνισης",
|
||||||
|
"label": "Γλώσσα",
|
||||||
|
"post_language": "Γλώσσα ανάρτησης",
|
||||||
|
"status": "Κατάσταση μετάφρασης: {0}/{1} ({2}%)",
|
||||||
|
"translations": {
|
||||||
|
"add": "Προσθήκη",
|
||||||
|
"choose_language": "Επίλεξε γλώσσα",
|
||||||
|
"heading": "Μεταφράσεις",
|
||||||
|
"hide_specific": "Απόκρυψη συγκεκριμένων μεταφράσεων",
|
||||||
|
"remove": "Remove"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notifications": {
|
||||||
|
"label": "Ειδοποιήσεις",
|
||||||
|
"notifications": {
|
||||||
|
"label": "Ρυθμίσεις ειδοποιήσεων"
|
||||||
|
},
|
||||||
|
"push_notifications": {
|
||||||
|
"alerts": {
|
||||||
|
"favourite": "Αγαπημένα",
|
||||||
|
"follow": "Νέοι ακόλουθοι",
|
||||||
|
"mention": "Αναφορές",
|
||||||
|
"poll": "Δημοσκοπήσεις",
|
||||||
|
"reblog": "Ενισχύσεις",
|
||||||
|
"title": "Τί ειδοποιήσεις να λαμβάνω;"
|
||||||
|
},
|
||||||
|
"description": "Λήψη ειδοποιήσεων ακόμα και όταν δεν χρησιμοποιείς τον Elk.",
|
||||||
|
"instructions": "Μη ξεχάσεις να αποθηκεύσεις τις αλλαγές σου χρησιμοποιώντας το κουμπί @:settings.notifications.push_notifications.save_settings !",
|
||||||
|
"label": "Ρυθμίσεις ειδοποιήσεων Push",
|
||||||
|
"policy": {
|
||||||
|
"all": "Από όλους",
|
||||||
|
"followed": "Από άτομα που ακολουθώ",
|
||||||
|
"follower": "Από άτομα που με ακολουθούν",
|
||||||
|
"none": "Από κανένα",
|
||||||
|
"title": "Από ποιον μπορώ να λαμβάνω ειδοποιήσεις;"
|
||||||
|
},
|
||||||
|
"save_settings": "Αποθήκευση ρυθμίσεων",
|
||||||
|
"subscription_error": {
|
||||||
|
"clear_error": "Εκκαθάριση σφάλματος",
|
||||||
|
"error_hint": "Μπορείς να συμβουλευτείς τη λίστα των συχνών ερωτήσεων για να προσπαθήσεις να λύσεις το πρόβλημα: {0}.",
|
||||||
|
"invalid_vapid_key": "Το δημόσιο κλειδί VAPID φαίνεται να είναι άκυρο.",
|
||||||
|
"permission_denied": "Απορρίφθηκε άδεια: ενεργοποίησε τις ειδοποιήσεις στον περιηγητή σου.",
|
||||||
|
"repo_link": "Το αποθετήριο του Elk στο GitHub",
|
||||||
|
"request_error": "Προέκυψε σφάλμα κατά την αίτηση της εγγραφής, προσπάθησε ξανά και αν το σφάλμα παραμένει, παρακαλώ ανέφερε το ζήτημα στο αποθετήριο του Elk.",
|
||||||
|
"title": "Δε μπορούσες να κάνεις εγγραφή για ειδοποιήσεις push",
|
||||||
|
"too_many_registrations": "Λόγω περιορισμών του περιηγητή, ο Elk δε μπορεί να χρησιμοποιήσει την υπηρεσία ειδοποιήσεων push για πολλαπλούς λογαριασμούς σε διαφορετικούς διακομιστές. Πρέπει να καταργήσεις την εγγραφή από τις ειδοποιήσεις push σε έναν άλλο λογαριασμό και να προσπαθήσεις ξανά.",
|
||||||
|
"vapid_not_supported": "Ο περιηγητής σου υποστηρίζει Ειδοποιήσεις Ιστοτόπου Push αλλά, δε φαίνεται να υλοποιεί το πρωτόκολλο VAPID."
|
||||||
|
},
|
||||||
|
"title": "Ρυθμίσεις ειδοποιήσεων Push",
|
||||||
|
"undo_settings": "Αναίρεση αλλαγών",
|
||||||
|
"unsubscribe": "Απενεργοποίηση ειδοποιήσεων push",
|
||||||
|
"unsupported": "Ο περιηγητής σου δεν υποστηρίζει ειδοποιήσεις push.",
|
||||||
|
"warning": {
|
||||||
|
"enable_close": "Κλείσιμο",
|
||||||
|
"enable_description": "Για να λαμβάνεις ειδοποιήσεις όταν ο Elk δεν είναι ανοιχτός, ενεργοποίησε τις ειδοποιήσεις push. Μπορείς να ελέγξεις ακριβώς τί τύπου αλληλεπίδραση δημιουργεί ειδοποιήσεις push μέσω του κουμπιού \"@:settings.notifications.show_btn{'\"'} παραπάνω, μόλις ενεργοποιηθεί.",
|
||||||
|
"enable_description_desktop": "Για να λαμβάνεις ειδοποιήσεις όταν ο Elk δεν είναι ανοιχτός, ενεργοποίησε τις ειδοποιήσεις push. Μπορείς να χειρίζεσαι με ακρίβεια τί είδους αλληλεπιδράσεις δημιουργούν ειδοποιήσεις push στο \"Ρυθμίσεις > Ειδοποιήσεις > Ρυθμίσεις ειδοποιήσεων push\" μόλις ενεργοποιηθούν.",
|
||||||
|
"enable_description_mobile": "Μπορείς να έχεις πρόσβαση στις ειδοποιήσεις χρησιμοποιώντας το μενού πλοήγησης \"Ρυθμίσεις > Ειδοποιήσεις > Ρυθμίσεις ειδοποιήσεων\".",
|
||||||
|
"enable_description_settings": "Για να λαμβάνεις ειδοποιήσεις όταν ο Elk δεν είναι ανοιχτός, ενεργοποίησε τις ειδοποιήσεις push. Μπορείς να ελέγξεις ακριβώς τί τύπου αλληλεπίδραση δημιουργεί ειδοποιήσεις push σε αυτή την οθόνη, μόλις τις ενεργοποιήσεις.",
|
||||||
|
"enable_desktop": "ενεργοποίησε τις ειδοποιήσεις push",
|
||||||
|
"enable_title": "Μη χάσεις τίποτα",
|
||||||
|
"re_auth": "Από ό,τι φαίνεται, ο διακομιστής σου δεν υποστηρίζει ειδοποιήσεις push. Δοκίμασε να αποσυνδεθείς και να συνδεθείς ξανά και αν το μήνυμα παραμένει, επικοινώνησε με τον διαχειριστή του διακομιστή σου."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"show_btn": "Πήγαινε στις ρυθμίσεις ειδοποιήσεων",
|
||||||
|
"under_construction": "Υπό κατασκευή"
|
||||||
|
},
|
||||||
|
"notifications_settings": "Ειδοποιήσεις",
|
||||||
|
"preferences": {
|
||||||
|
"embedded_media": "Ενσωματωμένος Αναπαραγωγέας Πολυμέσων",
|
||||||
|
"embedded_media_description": "Προβάλλει έναν Ενσωματωμένο αναπαραγωγέα αντί για την κανονική κάρτα προεπισκόπησης όταν γίνεται επέκταση κοινοποιημένων συνδέσμων ροής.",
|
||||||
|
"enable_autoplay": "Ενεργοποίηση Αυτόματης αναπαραγωγής",
|
||||||
|
"enable_data_saving": "Ενεργοποίηση εξοικονόμησης δεδομένων",
|
||||||
|
"enable_data_saving_description": "Εξοικονόμησε δεδομένα αποτρέποντας τα συνημμένα από το να φορτώνουν αυτόματα.",
|
||||||
|
"enable_pinch_to_zoom": "Ενεργοποίηση του τσίμπημα για ζουμ",
|
||||||
|
"github_cards": "Κάρτες GitHub",
|
||||||
|
"github_cards_description": "Όταν ένας σύνδεσμος GitHub αναρτάται, εμφανίζεται μια προσβάσιμη κάρτα HTML που χρησιμοποιεί μεταδεδομένα κοινωνικών γράφων αντί για την κοινωνική εικόνα.",
|
||||||
|
"grayscale_mode": "Λειτουργία κλίμακα του γκρι",
|
||||||
|
"hide_account_hover_card": "Απόκρυψη αιωρούμενης κάρτας λογαριασμού",
|
||||||
|
"hide_alt_indi_on_posts": "Απόκρυψη ένδειξης ενλ στις αναρτήσεις",
|
||||||
|
"hide_boost_count": "Απόκρυψη αριθμού ενισχύσεων",
|
||||||
|
"hide_favorite_count": "Απόκρυψη αριθμού αγαπημένων",
|
||||||
|
"hide_follower_count": "Απόκρυψη αριθμού ακολούθων/ακολουθούμενων",
|
||||||
|
"hide_news": "Απόκρυψη ειδήσεων",
|
||||||
|
"hide_reply_count": "Απόκρυψη αριθμού απαντήσεων",
|
||||||
|
"hide_tag_hover_card": "Απόκρυψη αιωρούμενης κάρτας ετικέτας",
|
||||||
|
"hide_translation": "Απόκρυψη μετάφρασης",
|
||||||
|
"hide_username_emojis": "Απόκρυψη εμότζι στο όνομα χρήστη",
|
||||||
|
"hide_username_emojis_description": "Κρύβει τα εμότζι στις από τα ονόματα χρήστη στις ροές. Τα εμότζι θα είναι ορατά στα προφίλ τους.",
|
||||||
|
"label": "Προτιμήσεις",
|
||||||
|
"optimize_for_low_performance_device": "Βελτιστοποίηση γισ συσκευές χαμηλών επιδόσεων",
|
||||||
|
"title": "Πειραματικές Λειτουργίες",
|
||||||
|
"use_star_favorite_icon": "Χρήση εικονιδίου αστεριού για αγαπημένα",
|
||||||
|
"user_picker": "Επιλογέας Χρήστη",
|
||||||
|
"user_picker_description": "Εμφανίζει όλα τα άβαταρ των συνδεδεμένων λογαριασμών κάτω αριστερά για να μπορείς να εναλλάξεις μεταξύ τους εύκολα.",
|
||||||
|
"virtual_scroll": "Εικονική Κύλιση",
|
||||||
|
"virtual_scroll_description": "Χρήστη εικονικής λίστας στις ροές, ώστε να εμφανίζεται μεγαλύτερος αριθμός αντικειμένων αποδοτικότερα.",
|
||||||
|
"wellbeing": "Ψηφιακή Ευεξία",
|
||||||
|
"zen_mode": "Λειτουργία Ζεν",
|
||||||
|
"zen_mode_description": "Κρύβει τα πλαϊνά πεδία εκτός αν τοποθετηθεί το ποντίκι επάνω τους. Επίσης, κρύβει μερικά στοιχεία από τη ροή."
|
||||||
|
},
|
||||||
|
"profile": {
|
||||||
|
"appearance": {
|
||||||
|
"bio": "Βιογραφικό",
|
||||||
|
"description": "Επεξεργασία άβαταρ, ονόματος χρήστη, προφίλ κτλ.",
|
||||||
|
"display_name": "Εμφανιζόμενο όνομα",
|
||||||
|
"label": "Εμφάνιση",
|
||||||
|
"profile_metadata": "Μεταδεδομένα προφίλ",
|
||||||
|
"profile_metadata_desc": "Μπορείς να έχεις μέχρι {0} αντικείμενα εμφανιζόμενα σε πίνακα στο προφίλ σου",
|
||||||
|
"profile_metadata_label": "Ετικέτα",
|
||||||
|
"profile_metadata_value": "Περιεχόμενο",
|
||||||
|
"title": "Επεξεργασία προφίλ"
|
||||||
|
},
|
||||||
|
"featured_tags": {
|
||||||
|
"description": "Άτομα μπορούν να περιηγηθούν στις δημόσιες αναρτήσεις μέσω αυτών των ετικετών.",
|
||||||
|
"label": "Παρεχόμενες ετικέτες",
|
||||||
|
"under_construction": "Υπό κατασκευή"
|
||||||
|
},
|
||||||
|
"label": "Προφίλ"
|
||||||
|
},
|
||||||
|
"select_a_settings": "Επίλεξε μία ρύθμιση",
|
||||||
|
"users": {
|
||||||
|
"export": "Εξαγωγή Αναγνωριστικών Χρήστη",
|
||||||
|
"import": "Εισαγωγή Αναγνωριστικών Χρήστη",
|
||||||
|
"label": "Συνδεδεμένοι χρήστες"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"share_target": {
|
||||||
|
"description": "Ο Elk μπορεί να ρυθμιστεί έτσι ώστε να μπορείς να κοινοποιήσεις περιεχόμενο από άλλες εφαρμογές, απλά εγκατέστησε τον Elk στη συσκευή σου και συνδέσου.",
|
||||||
|
"hint": "Για να κοινοποιήσεις περιεχόμενο με τον Elk, πρέπει να είναι εγκατεστημένος και να έχεις συνδεθεί.",
|
||||||
|
"title": "Κοινοποίησε με τον Elk"
|
||||||
|
},
|
||||||
|
"state": {
|
||||||
|
"attachments_exceed_server_limit": "Ο αριθμός των συνημμένων ξεπερνάει το όριο ανά ανάρτηση.",
|
||||||
|
"attachments_limit_error": "Το όριο ανά ανάρτηση ξεπεράστηκε",
|
||||||
|
"edited": "(Επεξεργάστηκε)",
|
||||||
|
"editing": "Επεξεργάζεται",
|
||||||
|
"loading": "Φόρτωση...",
|
||||||
|
"publish_failed": "Η δημοσίευση απέτυχε",
|
||||||
|
"publishing": "Δημοσιεύεται",
|
||||||
|
"save_failed": "Η αποθήκευση απέτυχε",
|
||||||
|
"upload_failed": "Η μεταφόρτωση απέτυχε",
|
||||||
|
"uploading": "Μεταμόρφωση..."
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"account": {
|
||||||
|
"suspended_message": "Ο λογαριασμός αυτής της ανάρτησης έχει ανασταλεί.",
|
||||||
|
"suspended_show": "Εμφάνιση περιεχομένου ούτως ή άλλως;"
|
||||||
|
},
|
||||||
|
"boosted_by": "Ενισχύθηκε από",
|
||||||
|
"edited": "Επεξεργάστηκε {0}",
|
||||||
|
"embedded_warning": "Η αναπαραγωγή αυτού ίσως αποκαλύψει την διεύθυνση IP σου σε άλλους.",
|
||||||
|
"favourited_by": "Αγαπημένο από",
|
||||||
|
"filter_hidden_phrase": "Φιλτραρισμένο από",
|
||||||
|
"filter_show_anyway": "Εμφάνιση ούτως ή άλλως",
|
||||||
|
"img_alt": {
|
||||||
|
"ALT": "ΕΝΛ",
|
||||||
|
"desc": "Περιγραφή",
|
||||||
|
"dismiss": "Απόρριψη",
|
||||||
|
"read": "Ανάγνωση {0} περιγραφής"
|
||||||
|
},
|
||||||
|
"poll": {
|
||||||
|
"count": "{0} ψήφοι|{0} ψήφος|{0} ψήφοι",
|
||||||
|
"ends": "μέχρι {0}",
|
||||||
|
"finished": "ολοκληρώθηκε στις {0}"
|
||||||
|
},
|
||||||
|
"replying_to": "Απάντηση σε {0}",
|
||||||
|
"show_full_thread": "Εμφάνιση Πλήρους Νήματος",
|
||||||
|
"someone": "κάποιος",
|
||||||
|
"spoiler_media_hidden": "Κρυμμένα πολυμέσα",
|
||||||
|
"spoiler_show_less": "Εμφάνιση λιγότερων",
|
||||||
|
"spoiler_show_more": "Εμφάνιση περισσότερων",
|
||||||
|
"thread": "Νήμα",
|
||||||
|
"try_original_site": "Δοκίμασε την αρχική ιστοσελίδα"
|
||||||
|
},
|
||||||
|
"status_history": {
|
||||||
|
"created": "Δημιουργήθηκε στις {0}",
|
||||||
|
"edited": "επεξεργάστηκε στις {0}"
|
||||||
|
},
|
||||||
|
"tab": {
|
||||||
|
"accounts": "Λογαριασμοί",
|
||||||
|
"for_you": "Για σένα",
|
||||||
|
"hashtags": "Ετικέτες",
|
||||||
|
"list": "Λίστα",
|
||||||
|
"media": "Πολυμέσα",
|
||||||
|
"news": "Ειδήσεις",
|
||||||
|
"notifications_admin": {
|
||||||
|
"report": "Αναφορά",
|
||||||
|
"sign_up": "Εγγραφή"
|
||||||
|
},
|
||||||
|
"notifications_all": "Όλα",
|
||||||
|
"notifications_favourite": "Αγαπημένα",
|
||||||
|
"notifications_follow": "Ακολουθείς",
|
||||||
|
"notifications_follow_request": "Αιτήματα ακολούθησης",
|
||||||
|
"notifications_mention": "Αναφορές",
|
||||||
|
"notifications_more_tooltip": "Φιλτράρισμα ειδοποιήσεων βάσει τύπου",
|
||||||
|
"notifications_poll": "Δημοσκόπηση",
|
||||||
|
"notifications_reblog": "Ενίσχυση",
|
||||||
|
"notifications_status": "Κατάσταση",
|
||||||
|
"notifications_update": "Ενημέρωση",
|
||||||
|
"posts": "Αναρτήσεις",
|
||||||
|
"posts_with_replies": "Αναρτήσεις & Απαντήσεις"
|
||||||
|
},
|
||||||
|
"tag": {
|
||||||
|
"follow": "Ακολούθησε",
|
||||||
|
"follow_label": "Ακολούθησε την ετικέτα {0}",
|
||||||
|
"unfollow": "Άρση ακολούθησης",
|
||||||
|
"unfollow_label": "Άρση ακολούθησης ετικέτας {0}"
|
||||||
|
},
|
||||||
|
"time_ago_options": {
|
||||||
|
"day_future": "σε 0 ημέρες|αύριο|σε {n} ημέρες",
|
||||||
|
"day_past": "0 ημέρες πριν|χθες|{n} ημέρες πριν",
|
||||||
|
"hour_future": "σε 0 ώρες|σε 1 ώρα|σε {n} ώρες",
|
||||||
|
"hour_past": "0 ώρες πριν|1 ώρα πριν|{n} ώρες πριν",
|
||||||
|
"just_now": "μόλις τώρα",
|
||||||
|
"minute_future": "σε 0 λεπτά|σε 1 λεπτό|σε {n} λεπτά",
|
||||||
|
"minute_past": "0 λεπτά πριν|1 λεπτό πριν|{n} λεπτά πριν",
|
||||||
|
"month_future": "σε 0 μήνες|τον επόμενο μήνα|σε {n} μήνες",
|
||||||
|
"month_past": "0 μήνες πριν|τον προηγούμενο μήνα|{n} μήνες πριν",
|
||||||
|
"second_future": "μόλις τώρα|σε {n} δευτερόλεπτο|σε {n} δευτερόλεπτα",
|
||||||
|
"second_past": "μόλις τώρα|{n} δευτερόλεπτο πριν|{n} δευτερόλεπτα πριν",
|
||||||
|
"short_day_future": "σε {n}η",
|
||||||
|
"short_day_past": "{n}η",
|
||||||
|
"short_hour_future": "σε {n}ώ",
|
||||||
|
"short_hour_past": "{n}ώ",
|
||||||
|
"short_minute_future": "σε {n}λ",
|
||||||
|
"short_minute_past": "{n}λ",
|
||||||
|
"short_month_future": "σε {n}μήν",
|
||||||
|
"short_month_past": "{n}μήν",
|
||||||
|
"short_second_future": "σε {n}δ",
|
||||||
|
"short_second_past": "{n}δ",
|
||||||
|
"short_week_future": "σε {n}εβδ",
|
||||||
|
"short_week_past": "{n}εβδ",
|
||||||
|
"short_year_future": "σε {n}χ",
|
||||||
|
"short_year_past": "{n}χ",
|
||||||
|
"week_future": "σε 0 εβδομάδες|την επόμενη εβδομάδα|σε {n} εβδομάδες",
|
||||||
|
"week_past": "0 εβδομάδες πριν|την προηγούμενη εβδομάδα|{n} εβδομάδες πριν",
|
||||||
|
"year_future": "σε 0 χρόνια|τον επόμενο χρόνο|σε {n} χρόνια",
|
||||||
|
"year_past": "0 χρόνια πριν|πέρυσι|{n} χρόνια πριν"
|
||||||
|
},
|
||||||
|
"timeline": {
|
||||||
|
"show_new_items": "Εμφάνιση {v} νέων αντικειμένων|Εμφάνιση {v} νέου αντικειμένου|Εμφάνιση {v} νέων αντικειμένων",
|
||||||
|
"view_older_posts": "Παλιότερες αναρτήσεις από άλλες οντότητες ίσως δεν εμφανίζονται."
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"federated_timeline": "Ροή Ομοσπονδίας",
|
||||||
|
"local_timeline": "Τοπική Ροή"
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"add_content_warning": "Προσθήκη προειδοποίησης περιεχομένου",
|
||||||
|
"add_emojis": "Προσθήκη εμότζι",
|
||||||
|
"add_media": "Προσθήκη εικόνων, βίντεο ή αρχείου ήχου",
|
||||||
|
"add_publishable_content": "Προσθήκη περιεχομένου προς δημοσίευση",
|
||||||
|
"change_content_visibility": "Αλλαγή ορατότητας περιεχομένου",
|
||||||
|
"change_language": "Αλλαγή γλώσσας",
|
||||||
|
"emoji": "Εμότζι",
|
||||||
|
"explore_links_intro": "Αυτές οι νέες ιστορίες συζητιούνται, αυτή τη στιγμή, από άτομα σε αυτόν και σε άλλους διακομιστές στο αποκεντρωμένο δίκτυο.",
|
||||||
|
"explore_posts_intro": "Αυτές οι αναρτήσεις λαμβάνουν προσοχή, αυτή τη στιγμή, από αυτόν και από άλλους διακομιστές σε αυτόν τον διακομιστή.",
|
||||||
|
"explore_tags_intro": "Αυτές οι ετικέτες λαμβάνουν προσοχή, αυτή τη στιγμή, από άτομα σε αυτόν και από άλλους διακομιστές του αποκεντρωμένου δικτύου.",
|
||||||
|
"open_editor_tools": "Εργαλεία συντάκτη",
|
||||||
|
"pick_an_icon": "Επιλογή ενός εικονιδίου",
|
||||||
|
"publish_failed": "Κλείσιμο αποτυχημένων μηνυμάτων στο πάνω μέρος του συντάκτη για επαναδημοσίευση αναρτήσεων",
|
||||||
|
"toggle_bold": "Εναλλαγή έντονης γραφής",
|
||||||
|
"toggle_code_block": "Εναλλαγή μπλοκ κώδικα",
|
||||||
|
"toggle_italic": "Εναλλαγή πλάγιας γραφής"
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"add_existing": "Προσθήκη υπάρχοντος λογαριασμού",
|
||||||
|
"server_address_label": "Διεύθυνση Διακομιστή Mastodon",
|
||||||
|
"sign_in_desc": "Συνδέσου για να ακολουθείς προφίλ ή ετικέτες, αγάπησε, μοιράσου και απάντησε σε αναρτήσεις ή αλληλεπίδρασε από τον λογαριασμό σου σε διαφορετικό διακομιστή.",
|
||||||
|
"sign_in_notice_title": "Προβολή δημοσίων δεδομένων {0}",
|
||||||
|
"sign_out_account": "Αποσύνδεση {0}",
|
||||||
|
"single_instance_sign_in_desc": "Συνδέσου για να ακολουθείς προφίλ ή ετικέτες, αγάπησε, μοιράσου και απάντησε σε αναρτήσεις.",
|
||||||
|
"tip_no_account": "Αν δεν έχεις ακόμα λογαριασμό στο Mastodon, {0}.",
|
||||||
|
"tip_register_account": "Επίλεξε τον διακομιστή σου και εγγράψου"
|
||||||
|
},
|
||||||
|
"visibility": {
|
||||||
|
"direct": "Άμεση",
|
||||||
|
"direct_desc": "Ορατή μόνο σε αναφερόμενους χρήστες",
|
||||||
|
"private": "Μόνο ακόλουθους",
|
||||||
|
"private_desc": "Ορατή μόνο σε ακόλουθους",
|
||||||
|
"public": "Δημόσια",
|
||||||
|
"public_desc": "Ορατή για όλους",
|
||||||
|
"unlisted": "Μη καταχωρημένη",
|
||||||
|
"unlisted_desc": "Ορατή για όλους, αλλά δεν εμφανίζεται σε ροές ανακάλυψης"
|
||||||
|
}
|
||||||
|
}
|
|
@ -73,6 +73,7 @@
|
||||||
"favourited": "Favorited",
|
"favourited": "Favorited",
|
||||||
"more": "More",
|
"more": "More",
|
||||||
"next": "Next",
|
"next": "Next",
|
||||||
|
"open_image_preview_dialog": "Open image preview dialog",
|
||||||
"prev": "Prev",
|
"prev": "Prev",
|
||||||
"publish": "Publish",
|
"publish": "Publish",
|
||||||
"publish_thread": "Publish thread",
|
"publish_thread": "Publish thread",
|
||||||
|
|
|
@ -73,6 +73,7 @@
|
||||||
"favourited": "Marcado como favorita",
|
"favourited": "Marcado como favorita",
|
||||||
"more": "Más",
|
"more": "Más",
|
||||||
"next": "Siguiente",
|
"next": "Siguiente",
|
||||||
|
"open_image_preview_dialog": "Abrir diálogo de vista previa de la imagen",
|
||||||
"prev": "Anterior",
|
"prev": "Anterior",
|
||||||
"publish": "Publicar",
|
"publish": "Publicar",
|
||||||
"publish_thread": "Publicar hilo",
|
"publish_thread": "Publicar hilo",
|
||||||
|
@ -217,11 +218,12 @@
|
||||||
"create": "Crear",
|
"create": "Crear",
|
||||||
"delete": "Eliminar esta lista",
|
"delete": "Eliminar esta lista",
|
||||||
"delete_error": "Se produjo un error eliminando la lista",
|
"delete_error": "Se produjo un error eliminando la lista",
|
||||||
"edit": "Ediar esta lista",
|
"edit": "Editar esta lista",
|
||||||
"edit_error": "Se produjo un error modificando la lista",
|
"edit_error": "Se produjo un error modificando la lista",
|
||||||
"error": "Se produjo un error creando la lista",
|
"error": "Se produjo un error creando la lista",
|
||||||
"error_prefix": "Error: ",
|
"error_prefix": "Error: ",
|
||||||
"list_title_placeholder": "Título de la lista",
|
"list_title_placeholder": "Título de la lista",
|
||||||
|
"manage": "Administrar listas",
|
||||||
"modify_account": "Modificar listas con cuenta",
|
"modify_account": "Modificar listas con cuenta",
|
||||||
"remove_account": "Eliminar cuenta de la lista",
|
"remove_account": "Eliminar cuenta de la lista",
|
||||||
"save": "Guardar"
|
"save": "Guardar"
|
||||||
|
|
|
@ -73,6 +73,7 @@
|
||||||
"favourited": "Gogoko eginda",
|
"favourited": "Gogoko eginda",
|
||||||
"more": "Gehiago",
|
"more": "Gehiago",
|
||||||
"next": "Hurrengoa",
|
"next": "Hurrengoa",
|
||||||
|
"open_image_preview_dialog": "Ireki irudiaren aurrebista-koadroa",
|
||||||
"prev": "Aurrekoa",
|
"prev": "Aurrekoa",
|
||||||
"publish": "Argitaratu",
|
"publish": "Argitaratu",
|
||||||
"publish_thread": "Argitaratu haria",
|
"publish_thread": "Argitaratu haria",
|
||||||
|
@ -469,7 +470,7 @@
|
||||||
"how_to_contribute": "Nola lagun dezaket?",
|
"how_to_contribute": "Nola lagun dezaket?",
|
||||||
"label": "Hizkuntza",
|
"label": "Hizkuntza",
|
||||||
"post_language": "Bidalketen hizkuntza",
|
"post_language": "Bidalketen hizkuntza",
|
||||||
"status": "Itzulpenaren egoera: {1} kateetatik {0} itzulita (%{2}a)",
|
"status": "Itzulpenaren egoera: {1} kateetatik {0} itzulita ({'%'}{2}a)",
|
||||||
"translations": {
|
"translations": {
|
||||||
"add": "Gehitu",
|
"add": "Gehitu",
|
||||||
"choose_language": "Hautatu hizkuntza",
|
"choose_language": "Hautatu hizkuntza",
|
||||||
|
@ -537,7 +538,7 @@
|
||||||
"embedded_media": "Kapsulatutako multimedia erreproduzigailua",
|
"embedded_media": "Kapsulatutako multimedia erreproduzigailua",
|
||||||
"embedded_media_description": "Kapsulatutako erreproduzigailu bat erakusten du partekatutako multimedia jarioen estekak zabaltzean, ez aurrebista txartel arrunta.",
|
"embedded_media_description": "Kapsulatutako erreproduzigailu bat erakusten du partekatutako multimedia jarioen estekak zabaltzean, ez aurrebista txartel arrunta.",
|
||||||
"enable_autoplay": "Gaitu erreproduzitze automatikoa",
|
"enable_autoplay": "Gaitu erreproduzitze automatikoa",
|
||||||
"enable_data_saving": "Gaitu datu aurrezlea",
|
"enable_data_saving": "Gaitu datu-aurrezlea",
|
||||||
"enable_data_saving_description": "Aurreztu datuak eranskinen kargatze-automatikoa galarazten.",
|
"enable_data_saving_description": "Aurreztu datuak eranskinen kargatze-automatikoa galarazten.",
|
||||||
"enable_pinch_to_zoom": "Gaitu atximur keinua zoom egiteko",
|
"enable_pinch_to_zoom": "Gaitu atximur keinua zoom egiteko",
|
||||||
"github_cards": "GitHub txartelak",
|
"github_cards": "GitHub txartelak",
|
||||||
|
@ -547,30 +548,30 @@
|
||||||
"hide_alt_indi_on_posts": "Ezkutatu ALT adierazlea bidalketetan",
|
"hide_alt_indi_on_posts": "Ezkutatu ALT adierazlea bidalketetan",
|
||||||
"hide_boost_count": "Ezkutatu bultzaden kopurua",
|
"hide_boost_count": "Ezkutatu bultzaden kopurua",
|
||||||
"hide_favorite_count": "Ezkutatu gogokoen kopurua",
|
"hide_favorite_count": "Ezkutatu gogokoen kopurua",
|
||||||
"hide_follower_count": "Ezkutatu jarraitzaile kopurua",
|
"hide_follower_count": "Ezkutatu jarraitzaileen kopurua",
|
||||||
"hide_gif_indi_on_posts": "Ezkutatu GIF adierazlea bidalketetan",
|
"hide_gif_indi_on_posts": "Ezkutatu GIF adierazlea bidalketetan",
|
||||||
"hide_news": "Ezkutatu berriak",
|
"hide_news": "Ezkutatu berriak",
|
||||||
"hide_reply_count": "Ezkutatu erantzunen kopurua",
|
"hide_reply_count": "Ezkutatu erantzunen kopurua",
|
||||||
"hide_tag_hover_card": "Ezkutatu traolen aurrebista-txartelak sagua gainetik pasatzean",
|
"hide_tag_hover_card": "Ezkutatu traolen aurrebista-txartelak sagua gainetik pasatzean",
|
||||||
"hide_translation": "Ezkutatu itzulpenak",
|
"hide_translation": "Ezkutatu itzulpenak",
|
||||||
"hide_username_emojis": "Ezkutatu emojiak erabiltzaile izenetan",
|
"hide_username_emojis": "Ezkutatu emojiak erabiltzaile-izenetan",
|
||||||
"hide_username_emojis_description": "Denbora-lerroetan erabiltzaile izenetako emojiak ezkutatzen ditu. Emojiak ikusgai egoten jarraituko dute euren profiletan.",
|
"hide_username_emojis_description": "Denbora-lerroetan erabiltzaile-izenetako emojiak ezkutatzen ditu. Emojiak ikusgai egoten jarraituko dute euren profiletan.",
|
||||||
"label": "Hobespenak",
|
"label": "Hobespenak",
|
||||||
"optimize_for_low_performance_device": "Optimizatu errendimendu baxuko gailuetarako",
|
"optimize_for_low_performance_device": "Optimizatu errendimendu baxuko gailuetarako",
|
||||||
"title": "Ezaugarri esperimentalak",
|
"title": "Ezaugarri esperimentalak",
|
||||||
"use_star_favorite_icon": "Erabili izarraren ikonoa gogokoetarako",
|
"use_star_favorite_icon": "Erabili izarraren ikonoa gogokoetarako",
|
||||||
"user_picker": "Erabiltzaile hautatzailea",
|
"user_picker": "Erabiltzaile-hautatzailea",
|
||||||
"user_picker_description": "Beheko ezkerreko aldean saioa hasia duten kontuen abatar guztiak erakusten ditu, haien artean azkar aldatu ahal dezazun.",
|
"user_picker_description": "Beheko ezkerreko aldean saioa hasia duten kontuen abatar guztiak erakusten ditu, haien artean azkar aldatu ahal dezazun.",
|
||||||
"virtual_scroll": "Korritze birtuala",
|
"virtual_scroll": "Korritze birtuala",
|
||||||
"virtual_scroll_description": "Zerrenda birtual bat erabiltzen du denbora-lerroetan, item kopuru handiagoa modu eraginkorrean erakutsi ahal izateko.",
|
"virtual_scroll_description": "Zerrenda birtual bat erabiltzen du denbora-lerroetan, item kopuru handiagoa modu eraginkorrean erakutsi ahal izateko.",
|
||||||
"wellbeing": "Ongizatea",
|
"wellbeing": "Ongizatea",
|
||||||
"zen_mode": "ZEN modua",
|
"zen_mode": "ZEN modua",
|
||||||
"zen_mode_description": "Aldamenetako elementuak ezkutatzen ditu xagua gainean jarri arte. Denbora-lerroko elementu batzuk ere ezkutatzen ditu."
|
"zen_mode_description": "Aldamenetako elementuak ezkutatzen ditu sagua gainean jarri arte. Denbora-lerroko elementu batzuk ere ezkutatzen ditu."
|
||||||
},
|
},
|
||||||
"profile": {
|
"profile": {
|
||||||
"appearance": {
|
"appearance": {
|
||||||
"bio": "Bio",
|
"bio": "Bio",
|
||||||
"description": "Editatu abatarra, erabiltzaile izena, profila, etab.",
|
"description": "Editatu abatarra, erabiltzaile-izena, profila, etab.",
|
||||||
"display_name": "Pantaila izena",
|
"display_name": "Pantaila izena",
|
||||||
"label": "Itxura",
|
"label": "Itxura",
|
||||||
"profile_metadata": "Profileko metadatuak",
|
"profile_metadata": "Profileko metadatuak",
|
||||||
|
|
|
@ -7,7 +7,9 @@
|
||||||
"route_loaded": "Sivu {0} ladattu"
|
"route_loaded": "Sivu {0} ladattu"
|
||||||
},
|
},
|
||||||
"account": {
|
"account": {
|
||||||
"avatar_description": "Käyttäjän {0} avatar",
|
"authorize": "Valtuuta seurataksesi",
|
||||||
|
"authorized": "Olet valtuuttanut pyynnön",
|
||||||
|
"avatar_description": "Käyttäjän {0} profiilikuva",
|
||||||
"blocked_by": "Tämä käyttäjä on estänyt sinut.",
|
"blocked_by": "Tämä käyttäjä on estänyt sinut.",
|
||||||
"blocked_domains": "Estetyt verkkotunnukset",
|
"blocked_domains": "Estetyt verkkotunnukset",
|
||||||
"blocked_users": "Estetyt käyttäjät",
|
"blocked_users": "Estetyt käyttäjät",
|
||||||
|
@ -25,6 +27,7 @@
|
||||||
"follows_you": "Seuraa sinua",
|
"follows_you": "Seuraa sinua",
|
||||||
"go_to_profile": "Siirry profiiliin",
|
"go_to_profile": "Siirry profiiliin",
|
||||||
"joined": "Liittynyt",
|
"joined": "Liittynyt",
|
||||||
|
"lock": "Lukittu",
|
||||||
"moved_title": "on siirtynyt uudelle tilille:",
|
"moved_title": "on siirtynyt uudelle tilille:",
|
||||||
"muted_users": "Hiljennetyt käyttäjät",
|
"muted_users": "Hiljennetyt käyttäjät",
|
||||||
"muting": "Hiljennetty",
|
"muting": "Hiljennetty",
|
||||||
|
@ -35,14 +38,18 @@
|
||||||
"posts": "Julkaisut",
|
"posts": "Julkaisut",
|
||||||
"posts_count": "{0} julkaisua|{0} julkaisu|{0} julkaisua",
|
"posts_count": "{0} julkaisua|{0} julkaisu|{0} julkaisua",
|
||||||
"profile_description": "Käyttäjän {0} profiilin ylätunniste",
|
"profile_description": "Käyttäjän {0} profiilin ylätunniste",
|
||||||
"profile_personal_note": "Henkilökohtainen muistiinpano",
|
"profile_personal_note": "Henkilökohtainen merkintä",
|
||||||
"profile_unavailable": "Profiili ei saatavilla",
|
"profile_unavailable": "Profiili ei saatavilla",
|
||||||
|
"reject": "Hylkää seuraamispyyntö",
|
||||||
|
"rejected": "Olet hylännyt pyynnön",
|
||||||
"request_follow": "Pyydä lupaa seurata",
|
"request_follow": "Pyydä lupaa seurata",
|
||||||
|
"requested": "{0} on pyytänyt lupaa saada seurata sinua",
|
||||||
"unblock": "Poista esto",
|
"unblock": "Poista esto",
|
||||||
"unfollow": "Älä seuraa",
|
"unfollow": "Älä seuraa",
|
||||||
"unmute": "Poista hiljennys",
|
"unmute": "Poista hiljennys",
|
||||||
"view_other_followers": "Seuraajat muilta palvelimilta eivät välttämättä näy.",
|
"view_other_followers": "Seuraajat muilta palvelimilta eivät välttämättä näy.",
|
||||||
"view_other_following": "Seuratut muilta palvelimilta eivät välttämättä näy."
|
"view_other_following": "Seuratut muilta palvelimilta eivät välttämättä näy.",
|
||||||
|
"withdraw_follow_request": "Peruuta seuraamispyyntö"
|
||||||
},
|
},
|
||||||
"action": {
|
"action": {
|
||||||
"apply": "Käytä",
|
"apply": "Käytä",
|
||||||
|
@ -51,6 +58,7 @@
|
||||||
"boost": "Tehosta",
|
"boost": "Tehosta",
|
||||||
"boost_count": "{0}",
|
"boost_count": "{0}",
|
||||||
"boosted": "Tehostettu",
|
"boosted": "Tehostettu",
|
||||||
|
"clear": "Tyhjennä",
|
||||||
"clear_publish_failed": "Pyyhi julkaisuvirheet",
|
"clear_publish_failed": "Pyyhi julkaisuvirheet",
|
||||||
"clear_save_failed": "Pyyhi tallennusvirheet",
|
"clear_save_failed": "Pyyhi tallennusvirheet",
|
||||||
"clear_upload_failed": "Pyyhi tiedostojen lähetysvirheet",
|
"clear_upload_failed": "Pyyhi tiedostojen lähetysvirheet",
|
||||||
|
@ -65,8 +73,10 @@
|
||||||
"favourited": "Lisätty suosikkeihin",
|
"favourited": "Lisätty suosikkeihin",
|
||||||
"more": "Lisää",
|
"more": "Lisää",
|
||||||
"next": "Seuraava",
|
"next": "Seuraava",
|
||||||
|
"open_image_preview_dialog": "Avaa kuvan esikatseluikkuna",
|
||||||
"prev": "Edellinen",
|
"prev": "Edellinen",
|
||||||
"publish": "Julkaise",
|
"publish": "Julkaise",
|
||||||
|
"publish_thread": "Julkaise ketju",
|
||||||
"reply": "Vastaa",
|
"reply": "Vastaa",
|
||||||
"reply_count": "{0}",
|
"reply_count": "{0}",
|
||||||
"reset": "Palauta",
|
"reset": "Palauta",
|
||||||
|
@ -88,7 +98,7 @@
|
||||||
"activate": "Valitse",
|
"activate": "Valitse",
|
||||||
"complete": "Täydennä",
|
"complete": "Täydennä",
|
||||||
"compose_desc": "Kirjoita uusi julkaisu",
|
"compose_desc": "Kirjoita uusi julkaisu",
|
||||||
"n_people_in_the_past_n_days": "{0} ihmistä viime {1} päivän aikana",
|
"n_people_in_the_past_n_days": "{0} ihmistä viimeisinä {1} päivänä",
|
||||||
"select_lang": "Valitse kieli",
|
"select_lang": "Valitse kieli",
|
||||||
"sign_in_desc": "Lisää olemassa oleva tili",
|
"sign_in_desc": "Lisää olemassa oleva tili",
|
||||||
"switch_account": "Vaihda tiliin {0}",
|
"switch_account": "Vaihda tiliin {0}",
|
||||||
|
@ -114,12 +124,14 @@
|
||||||
"block_account": {
|
"block_account": {
|
||||||
"cancel": "Peruuta",
|
"cancel": "Peruuta",
|
||||||
"confirm": "Estä",
|
"confirm": "Estä",
|
||||||
"description": "Haluatko varmasti estää käyttäjän {0}?"
|
"description": "Haluatko varmasti estää tilin {0}?",
|
||||||
|
"title": "Estä tili"
|
||||||
},
|
},
|
||||||
"block_domain": {
|
"block_domain": {
|
||||||
"cancel": "Peruuta",
|
"cancel": "Peruuta",
|
||||||
"confirm": "Estä",
|
"confirm": "Estä",
|
||||||
"description": "Haluatko varmasti estää verkkotunnuksen {0}?"
|
"description": "Haluatko varmasti estää verkkotunnuksen {0}?",
|
||||||
|
"title": "Estä verkkotunnus"
|
||||||
},
|
},
|
||||||
"common": {
|
"common": {
|
||||||
"cancel": "Kyllä",
|
"cancel": "Kyllä",
|
||||||
|
@ -128,27 +140,37 @@
|
||||||
"delete_list": {
|
"delete_list": {
|
||||||
"cancel": "Peruuta",
|
"cancel": "Peruuta",
|
||||||
"confirm": "Poista",
|
"confirm": "Poista",
|
||||||
"description": "Haluatko varmasti poistaa listan \"{0}\"?"
|
"description": "Haluatko varmasti poistaa listan \"{0}\"?",
|
||||||
|
"title": "Poista lista"
|
||||||
},
|
},
|
||||||
"delete_posts": {
|
"delete_posts": {
|
||||||
"cancel": "Peruuta",
|
"cancel": "Peruuta",
|
||||||
"confirm": "Poista",
|
"confirm": "Poista",
|
||||||
"description": "Haluatko varmasti poistaa tämän julkaisun?"
|
"description": "Haluatko varmasti poistaa tämän julkaisun?",
|
||||||
|
"title": "Poista julkaisu"
|
||||||
},
|
},
|
||||||
"mute_account": {
|
"mute_account": {
|
||||||
"cancel": "Peruuta",
|
"cancel": "Peruuta",
|
||||||
"confirm": "Hiljennä",
|
"confirm": "Hiljennä",
|
||||||
"description": "Haluatko varmasti hiljentää käyttäjän {0}?"
|
"days": "päivää|päivä|päivää",
|
||||||
|
"description": "Haluatko varmasti hiljentää tilin {0}?",
|
||||||
|
"hours": "tuntia|tunti|tuntia",
|
||||||
|
"minute": "minuuttia|minuutti|minuuttia",
|
||||||
|
"notifications": "Hiljennä ilmoitukset",
|
||||||
|
"specify_duration": "Määrittele hiljennyksen kesto",
|
||||||
|
"title": "Hiljennä tili"
|
||||||
},
|
},
|
||||||
"show_reblogs": {
|
"show_reblogs": {
|
||||||
"cancel": "Peruuta",
|
"cancel": "Peruuta",
|
||||||
"confirm": "Näytä",
|
"confirm": "Näytä",
|
||||||
"description": "Haluatko varmasti näyttää tehostukset käyttäjältä {0}?"
|
"description": "Haluatko varmasti näyttää tehostukset tililtä {0}?",
|
||||||
|
"title": "Näytä tehostukset"
|
||||||
},
|
},
|
||||||
"unfollow": {
|
"unfollow": {
|
||||||
"cancel": "Peruuta",
|
"cancel": "Peruuta",
|
||||||
"confirm": "Lopeta seuraaminen",
|
"confirm": "Lopeta seuraaminen",
|
||||||
"description": "Haluatko varmasti lopettaa seuraamisen?"
|
"description": "Haluatko varmasti lopettaa tilin {0} seuraamisen?",
|
||||||
|
"title": "Lopeta seuraaminen"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"conversation": {
|
"conversation": {
|
||||||
|
@ -177,14 +199,14 @@
|
||||||
"title": "Esijulkaisu"
|
"title": "Esijulkaisu"
|
||||||
},
|
},
|
||||||
"desc_highlight": "Saatat löytää bugeja ja puuttuvia ominaisuuksia sieltä täältä.",
|
"desc_highlight": "Saatat löytää bugeja ja puuttuvia ominaisuuksia sieltä täältä.",
|
||||||
"desc_para1": "Kiitos, että kokeilet Elkiä, keskeneräistä Mastodon-verkkosovellustamme!",
|
"desc_para1": "Elk on ketterä verkkosovellus Mastodonille. Voit kirjautua sisään Mastodon-tilillesi ja olla sen avulla vuorovaikutuksessa fediversumin kanssa.",
|
||||||
"desc_para2": "Teemme kovasti töitä sen kehittämiseksi ja parantamiseksi.",
|
"desc_para2": "Elk on avointa lähdekoodia, ja me parantelemme sitä vilkkaasti yhteisöprojektina. Liity joukkoomme, niin rakennamme sitä yhdessä!",
|
||||||
"desc_para3": "Voit auttaa kehityksessä tukemalla tiimiä GitHub-sponsorina. Toivomme, että nautit Elkin käytöstä!",
|
"desc_para3": "Voit auttaa kehityksessä tukemalla tiimiä GitHub-sponsorina. Toivomme, että nautit Elkin käytöstä!",
|
||||||
"desc_para4": "Elk on avointa lähdekoodia. Jos haluat auttaa testaamalla, antamalla palautetta tai lahjoittamalla koodia,",
|
"desc_para4": "Jos haluat ilmoittaa ohjelmontivirheestä, auttaa testauksessa, antaa palautetta tai osallistua,",
|
||||||
"desc_para5": "ota meihin yhteyttä GitHubissa",
|
"desc_para5": "ota meihin yhteyttä GitHubissa",
|
||||||
"desc_para6": "ja liity joukkoomme.",
|
"desc_para6": "ja tule mukaan.",
|
||||||
"footer_team": "Elk-tiimi",
|
"footer_team": "Elk-tiimi",
|
||||||
"title": "Elk on koekäytössä!"
|
"title": "Tervetuloa Elkiin!"
|
||||||
},
|
},
|
||||||
"language": {
|
"language": {
|
||||||
"search": "Haku"
|
"search": "Haku"
|
||||||
|
@ -201,6 +223,7 @@
|
||||||
"error": "Listan luonnissa tapahtui virhe",
|
"error": "Listan luonnissa tapahtui virhe",
|
||||||
"error_prefix": "Virhe: ",
|
"error_prefix": "Virhe: ",
|
||||||
"list_title_placeholder": "Listan nimi",
|
"list_title_placeholder": "Listan nimi",
|
||||||
|
"manage": "Hallitse listoja",
|
||||||
"modify_account": "Muokkaa listoja, joilla tämä tili on",
|
"modify_account": "Muokkaa listoja, joilla tämä tili on",
|
||||||
"remove_account": "Poista tili listalta",
|
"remove_account": "Poista tili listalta",
|
||||||
"save": "Tallenna muutokset"
|
"save": "Tallenna muutokset"
|
||||||
|
@ -213,24 +236,36 @@
|
||||||
"command_mode": "Komentotila",
|
"command_mode": "Komentotila",
|
||||||
"compose": "Kirjoita",
|
"compose": "Kirjoita",
|
||||||
"favourite": "Lisää suosikkeihin",
|
"favourite": "Lisää suosikkeihin",
|
||||||
"title": "Toimet"
|
"search": "Hae",
|
||||||
|
"show_new_items": "Näytä uudet kohteet",
|
||||||
|
"title": "Toiminnot"
|
||||||
},
|
},
|
||||||
"media": {
|
"media": {
|
||||||
"title": "Media"
|
"title": "Media"
|
||||||
},
|
},
|
||||||
"navigation": {
|
"navigation": {
|
||||||
|
"go_to_bookmarks": "Kirjanmerkit",
|
||||||
|
"go_to_conversations": "Keskustelut",
|
||||||
|
"go_to_explore": "Tutustu",
|
||||||
|
"go_to_favourites": "Suosikit",
|
||||||
|
"go_to_federated": "Federoitu",
|
||||||
"go_to_home": "Koti",
|
"go_to_home": "Koti",
|
||||||
|
"go_to_lists": "Listat",
|
||||||
|
"go_to_local": "Paikallinen",
|
||||||
"go_to_notifications": "Ilmoitukset",
|
"go_to_notifications": "Ilmoitukset",
|
||||||
|
"go_to_profile": "Profiili",
|
||||||
|
"go_to_search": "Haku",
|
||||||
|
"go_to_settings": "Asetukset",
|
||||||
"next_status": "Seuraava julkaisu",
|
"next_status": "Seuraava julkaisu",
|
||||||
"previous_status": "Edellinen julkaisu",
|
"previous_status": "Edellinen julkaisu",
|
||||||
"shortcut_help": "Oikoteiden ohje",
|
"shortcut_help": "Oikoteiden ohje",
|
||||||
"title": "Navigointi"
|
"title": "Siirtyminen"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sequence_then": "sitten"
|
"sequence_then": "ja sitten"
|
||||||
},
|
},
|
||||||
"menu": {
|
"menu": {
|
||||||
"add_personal_note": "Lisää oma muistiinpano käyttäjälle {0}",
|
"add_personal_note": "Lisää oma merkintä käyttäjälle {0}",
|
||||||
"block_account": "Estä {0}",
|
"block_account": "Estä {0}",
|
||||||
"block_domain": "Estä verkkotunnus {0}",
|
"block_domain": "Estä verkkotunnus {0}",
|
||||||
"copy_link_to_post": "Kopioi linkki tähän julkaisuun",
|
"copy_link_to_post": "Kopioi linkki tähän julkaisuun",
|
||||||
|
@ -245,8 +280,9 @@
|
||||||
"mute_conversation": "Hiljennä tämä julkaisu",
|
"mute_conversation": "Hiljennä tämä julkaisu",
|
||||||
"open_in_original_site": "Avaa alkuperäisellä sivustolla",
|
"open_in_original_site": "Avaa alkuperäisellä sivustolla",
|
||||||
"pin_on_profile": "Kiinnitä profiiliin",
|
"pin_on_profile": "Kiinnitä profiiliin",
|
||||||
"remove_personal_note": "Poista oma muistiinpano käyttäjältä {0}",
|
"remove_personal_note": "Poista oma merkintä käyttäjältä {0}",
|
||||||
"report_account": "Ilmianna {0}",
|
"report_account": "Ilmianna {0}",
|
||||||
|
"share_account": "Jaa {0}",
|
||||||
"share_post": "Jaa tämä julkaisu",
|
"share_post": "Jaa tämä julkaisu",
|
||||||
"show_favourited_and_boosted_by": "Näytä suosikkeihinsa lisänneet ja tehostaneet",
|
"show_favourited_and_boosted_by": "Näytä suosikkeihinsa lisänneet ja tehostaneet",
|
||||||
"show_reblogs": "Näytä tehostukset käyttäjältä {0}",
|
"show_reblogs": "Näytä tehostukset käyttäjältä {0}",
|
||||||
|
@ -274,13 +310,16 @@
|
||||||
"built_at": "Koottu {0}",
|
"built_at": "Koottu {0}",
|
||||||
"compose": "Kirjoita",
|
"compose": "Kirjoita",
|
||||||
"conversations": "Keskustelut",
|
"conversations": "Keskustelut",
|
||||||
|
"docs": "Dokumentaatio",
|
||||||
"explore": "Tutustu",
|
"explore": "Tutustu",
|
||||||
"favourites": "Suosikit",
|
"favourites": "Suosikit",
|
||||||
"federated": "Federoitu",
|
"federated": "Federoitu",
|
||||||
|
"hashtags": "Aihetunnisteet",
|
||||||
"home": "Koti",
|
"home": "Koti",
|
||||||
"list": "Lista",
|
"list": "Lista",
|
||||||
"lists": "Listat",
|
"lists": "Listat",
|
||||||
"local": "Paikallinen",
|
"local": "Paikallinen",
|
||||||
|
"more_menu": "Lisää-valikko",
|
||||||
"muted_users": "Hiljennetyt käyttäjät",
|
"muted_users": "Hiljennetyt käyttäjät",
|
||||||
"notifications": "Ilmoitukset",
|
"notifications": "Ilmoitukset",
|
||||||
"privacy": "Yksityisyys",
|
"privacy": "Yksityisyys",
|
||||||
|
@ -314,13 +353,13 @@
|
||||||
"polls": {
|
"polls": {
|
||||||
"allow_multiple": "Salli monen valinta",
|
"allow_multiple": "Salli monen valinta",
|
||||||
"cancel": "Peruuta",
|
"cancel": "Peruuta",
|
||||||
"create": "Luo kysely",
|
"create": "Luo äänestys",
|
||||||
"disallow_multiple": "Estä monen valinta",
|
"disallow_multiple": "Estä monen valinta",
|
||||||
"expiration": "Kyselyn päättyminen",
|
"expiration": "Äänestyksen päättyminen",
|
||||||
"hide_votes": "Piilota äänestystulokset vastausaikana",
|
"hide_votes": "Piilota äänestystulokset vastausaikana",
|
||||||
"option_placeholder": "Vastausvaihtoehto {current}/{max}",
|
"option_placeholder": "Vastausvaihtoehto {current}/{max}",
|
||||||
"remove_option": "Poista vaihtoehto",
|
"remove_option": "Poista vaihtoehto",
|
||||||
"settings": "Kyselyn asetukset",
|
"settings": "Äänestyksen asetukset",
|
||||||
"show_votes": "Näytä äänestystulokset koko ajan"
|
"show_votes": "Näytä äänestystulokset koko ajan"
|
||||||
},
|
},
|
||||||
"pwa": {
|
"pwa": {
|
||||||
|
@ -415,6 +454,8 @@
|
||||||
"label": "Tiliasetukset"
|
"label": "Tiliasetukset"
|
||||||
},
|
},
|
||||||
"interface": {
|
"interface": {
|
||||||
|
"bottom_nav": "Alanavigaatio",
|
||||||
|
"bottom_nav_instructions": "Valitse enintään viisi suosikkipainikettasi alanavigaatioon. Niiden joukossa pitää olla Lisää-valikon painike.",
|
||||||
"color_mode": "Pohjaväri",
|
"color_mode": "Pohjaväri",
|
||||||
"dark_mode": "Tumma",
|
"dark_mode": "Tumma",
|
||||||
"default": " (oletus)",
|
"default": " (oletus)",
|
||||||
|
@ -426,6 +467,7 @@
|
||||||
},
|
},
|
||||||
"language": {
|
"language": {
|
||||||
"display_language": "Sovelluksen kieli",
|
"display_language": "Sovelluksen kieli",
|
||||||
|
"how_to_contribute": "Miten osallistua?",
|
||||||
"label": "Kieli",
|
"label": "Kieli",
|
||||||
"post_language": "Julkaisukieli",
|
"post_language": "Julkaisukieli",
|
||||||
"status": "Käännöksen tila: {0}/{1} ({2}\u00A0%)",
|
"status": "Käännöksen tila: {0}/{1} ({2}\u00A0%)",
|
||||||
|
@ -447,7 +489,7 @@
|
||||||
"favourite": "Suosikit",
|
"favourite": "Suosikit",
|
||||||
"follow": "Uudet seuraajat",
|
"follow": "Uudet seuraajat",
|
||||||
"mention": "Maininnat",
|
"mention": "Maininnat",
|
||||||
"poll": "Kyselyt",
|
"poll": "Äänestykset",
|
||||||
"reblog": "Tehostukset",
|
"reblog": "Tehostukset",
|
||||||
"title": "Mitä ilmoituksia haluat saada?"
|
"title": "Mitä ilmoituksia haluat saada?"
|
||||||
},
|
},
|
||||||
|
@ -493,6 +535,8 @@
|
||||||
},
|
},
|
||||||
"notifications_settings": "Ilmoitukset",
|
"notifications_settings": "Ilmoitukset",
|
||||||
"preferences": {
|
"preferences": {
|
||||||
|
"embedded_media": "Upotettu mediasoitin",
|
||||||
|
"embedded_media_description": "Näytä upotettu mediasoitin tavallisen esikatselukortin sijaan, kun jaettu linkki johtaa median suoratoistoon.",
|
||||||
"enable_autoplay": "Toista automaattisesti",
|
"enable_autoplay": "Toista automaattisesti",
|
||||||
"enable_data_saving": "Säästä tiedonsiirrossa",
|
"enable_data_saving": "Säästä tiedonsiirrossa",
|
||||||
"enable_data_saving_description": "Estä liitteitä latautumasta automaattisesti.",
|
"enable_data_saving_description": "Estä liitteitä latautumasta automaattisesti.",
|
||||||
|
@ -504,13 +548,16 @@
|
||||||
"hide_alt_indi_on_posts": "Piilota julkaisujen ALT-ilmaisin",
|
"hide_alt_indi_on_posts": "Piilota julkaisujen ALT-ilmaisin",
|
||||||
"hide_boost_count": "Piilota tehostusten lukumäärä",
|
"hide_boost_count": "Piilota tehostusten lukumäärä",
|
||||||
"hide_favorite_count": "Piilota suosikkien lukumäärä",
|
"hide_favorite_count": "Piilota suosikkien lukumäärä",
|
||||||
"hide_follower_count": "Piilota seurattujen/seuraajien lukumäärä",
|
"hide_follower_count": "Piilota seurattujen ja seuraajien lukumäärä",
|
||||||
|
"hide_gif_indi_on_posts": "Piilota julkaisujen GIF-ilmaisin",
|
||||||
"hide_news": "Piilota uutiset",
|
"hide_news": "Piilota uutiset",
|
||||||
"hide_reply_count": "Piilota vastausten lukumäärä",
|
"hide_reply_count": "Piilota vastausten lukumäärä",
|
||||||
|
"hide_tag_hover_card": "Piilota tunnisteiden leijukortti",
|
||||||
"hide_translation": "Piilota käännös",
|
"hide_translation": "Piilota käännös",
|
||||||
"hide_username_emojis": "Piilota käyttäjänimien emojit",
|
"hide_username_emojis": "Piilota käyttäjänimien emojit",
|
||||||
"hide_username_emojis_description": "Piilottaa emojit käyttäjien nimistä aikajanoilla. Emojit näkyvät silti heidän profiileissaan.",
|
"hide_username_emojis_description": "Piilottaa emojit käyttäjien nimistä aikajanoilla. Emojit näkyvät silti heidän profiileissaan.",
|
||||||
"label": "Mieltymykset",
|
"label": "Mieltymykset",
|
||||||
|
"optimize_for_low_performance_device": "Optimoi heikon suorituskyvyn laitteelle",
|
||||||
"title": "Kokeelliset ominaisuudet",
|
"title": "Kokeelliset ominaisuudet",
|
||||||
"use_star_favorite_icon": "Käytä tähteä suosikkikuvakkeena",
|
"use_star_favorite_icon": "Käytä tähteä suosikkikuvakkeena",
|
||||||
"user_picker": "Käyttäjävalitsin",
|
"user_picker": "Käyttäjävalitsin",
|
||||||
|
@ -549,12 +596,16 @@
|
||||||
},
|
},
|
||||||
"share_target": {
|
"share_target": {
|
||||||
"description": "Elkin voi määrittää niin, että voit jakaa sisältöä muista sovelluksista: asenna Elk laitteellesi ja kirjaudu sisään.",
|
"description": "Elkin voi määrittää niin, että voit jakaa sisältöä muista sovelluksista: asenna Elk laitteellesi ja kirjaudu sisään.",
|
||||||
"hint": "Jotta voit jakaa sisältöä Elkillä, sen täytyy olla asennettuna ja sisään kirjautuneena.",
|
"hint": "Jotta voit jakaa sisältöä Elkillä, sen täytyy olla asennettuna ja sinun sisäänkirjautuneena.",
|
||||||
"title": "Jaa Elkillä"
|
"title": "Jaa Elkillä"
|
||||||
},
|
},
|
||||||
"state": {
|
"state": {
|
||||||
"attachments_exceed_server_limit": "Julkaisussa on liian monta liitettä.",
|
"attachments_exceed_server_limit": "Julkaisussa on liian monta liitettä.",
|
||||||
"attachments_limit_error": "Liikaa liitteitä",
|
"attachments_limit_audio_error": "Ylitetty audion enimmäiskoko: {0}",
|
||||||
|
"attachments_limit_error": "Julkaisussa liikaa liitteitä",
|
||||||
|
"attachments_limit_image_error": "Ylitetty kuvan enimmäiskoko: {0}",
|
||||||
|
"attachments_limit_unknown_error": "Ylitetty tiedoston enimmäiskoko: {0}",
|
||||||
|
"attachments_limit_video_error": "Ylitetty videon enimmäiskoko: {0}",
|
||||||
"edited": "(Muokattu)",
|
"edited": "(Muokattu)",
|
||||||
"editing": "Muokkaa",
|
"editing": "Muokkaa",
|
||||||
"loading": "Ladataan...",
|
"loading": "Ladataan...",
|
||||||
|
@ -571,9 +622,11 @@
|
||||||
},
|
},
|
||||||
"boosted_by": "Tehostaneet",
|
"boosted_by": "Tehostaneet",
|
||||||
"edited": "Muokattu {0}",
|
"edited": "Muokattu {0}",
|
||||||
|
"embedded_warning": "Tämän toistaminen voi paljastaa IP-osoitteesi muille.",
|
||||||
"favourited_by": "Lisänneet suosikiksi",
|
"favourited_by": "Lisänneet suosikiksi",
|
||||||
"filter_hidden_phrase": "Suodatettu",
|
"filter_hidden_phrase": "Suodatettu",
|
||||||
"filter_show_anyway": "Näytä silti",
|
"filter_show_anyway": "Näytä silti",
|
||||||
|
"gif": "GIF",
|
||||||
"img_alt": {
|
"img_alt": {
|
||||||
"ALT": "ALT",
|
"ALT": "ALT",
|
||||||
"desc": "Kuvaus",
|
"desc": "Kuvaus",
|
||||||
|
@ -605,8 +658,20 @@
|
||||||
"list": "Lista",
|
"list": "Lista",
|
||||||
"media": "Media",
|
"media": "Media",
|
||||||
"news": "Uutiset",
|
"news": "Uutiset",
|
||||||
|
"notifications_admin": {
|
||||||
|
"report": "Ilmianto",
|
||||||
|
"sign_up": "Rekisteröityminen"
|
||||||
|
},
|
||||||
"notifications_all": "Kaikki",
|
"notifications_all": "Kaikki",
|
||||||
|
"notifications_favourite": "Suosikki",
|
||||||
|
"notifications_follow": "Seuraaminen",
|
||||||
|
"notifications_follow_request": "Seuraamispyyntö",
|
||||||
"notifications_mention": "Maininnat",
|
"notifications_mention": "Maininnat",
|
||||||
|
"notifications_more_tooltip": "Suodata ilmoitustyypin perusteella",
|
||||||
|
"notifications_poll": "Äänestys",
|
||||||
|
"notifications_reblog": "Tehostus",
|
||||||
|
"notifications_status": "Tila",
|
||||||
|
"notifications_update": "Päivitys",
|
||||||
"posts": "Julkaisut",
|
"posts": "Julkaisut",
|
||||||
"posts_with_replies": "Julkaisut ja vastaukset"
|
"posts_with_replies": "Julkaisut ja vastaukset"
|
||||||
},
|
},
|
||||||
|
@ -660,6 +725,7 @@
|
||||||
"add_emojis": "Lisää emojeja",
|
"add_emojis": "Lisää emojeja",
|
||||||
"add_media": "Lisää kuvia, video tai äänitiedosto",
|
"add_media": "Lisää kuvia, video tai äänitiedosto",
|
||||||
"add_publishable_content": "Lisää julkaisuun sisältöä",
|
"add_publishable_content": "Lisää julkaisuun sisältöä",
|
||||||
|
"add_thread_item": "Lisää kohde ketjuun",
|
||||||
"change_content_visibility": "Muuta sisällön näkyvyyttä",
|
"change_content_visibility": "Muuta sisällön näkyvyyttä",
|
||||||
"change_language": "Vaihda kieli",
|
"change_language": "Vaihda kieli",
|
||||||
"emoji": "Emoji",
|
"emoji": "Emoji",
|
||||||
|
@ -669,6 +735,8 @@
|
||||||
"open_editor_tools": "Editorin työkalut",
|
"open_editor_tools": "Editorin työkalut",
|
||||||
"pick_an_icon": "Valitse kuvake",
|
"pick_an_icon": "Valitse kuvake",
|
||||||
"publish_failed": "Sulje epäonnistuneet viestit editorin yläosasta, niin voit julkaista uudelleen",
|
"publish_failed": "Sulje epäonnistuneet viestit editorin yläosasta, niin voit julkaista uudelleen",
|
||||||
|
"remove_thread_item": "Poista kohde ketjusta",
|
||||||
|
"start_thread": "Aloita ketju",
|
||||||
"toggle_bold": "Lihavoi",
|
"toggle_bold": "Lihavoi",
|
||||||
"toggle_code_block": "Koodilohko",
|
"toggle_code_block": "Koodilohko",
|
||||||
"toggle_italic": "Kursivoi"
|
"toggle_italic": "Kursivoi"
|
|
@ -63,7 +63,7 @@
|
||||||
"enter_app": "Entrer dans l'application",
|
"enter_app": "Entrer dans l'application",
|
||||||
"favourite": "J'aime",
|
"favourite": "J'aime",
|
||||||
"favourite_count": "{0}",
|
"favourite_count": "{0}",
|
||||||
"favourited": "Aimé",
|
"favourited": "J'aime",
|
||||||
"more": "Plus",
|
"more": "Plus",
|
||||||
"next": "Suivant",
|
"next": "Suivant",
|
||||||
"prev": "Précédent",
|
"prev": "Précédent",
|
||||||
|
@ -277,7 +277,7 @@
|
||||||
"compose": "Composer",
|
"compose": "Composer",
|
||||||
"conversations": "Conversations",
|
"conversations": "Conversations",
|
||||||
"explore": "Explorer",
|
"explore": "Explorer",
|
||||||
"favourites": "Favoris",
|
"favourites": "Aimés",
|
||||||
"federated": "Fédérés",
|
"federated": "Fédérés",
|
||||||
"home": "Accueil",
|
"home": "Accueil",
|
||||||
"list": "Liste",
|
"list": "Liste",
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
{
|
{
|
||||||
"a11y": {
|
"a11y": {
|
||||||
"loading_page": "Az oldal töltődik, kérjük várjon",
|
"loading_page": "Az oldal töltődik, kérjük várj",
|
||||||
"loading_titled_page": "Töltődik a(z) {0} oldal, kérjük várjon",
|
"loading_titled_page": "Töltődik a(z) {0} oldal, kérjük várj",
|
||||||
"locale_changed": "A nyelv megváltoztatva: {0}",
|
"locale_changed": "A nyelv megváltoztatva: {0}",
|
||||||
"locale_changing": "Nyelv változtatás, kérjük várjon",
|
"locale_changing": "Nyelv változtatás, kérjük várj",
|
||||||
"route_loaded": "Oldal {0} betöltődött"
|
"route_loaded": "Oldal {0} betöltődött"
|
||||||
},
|
},
|
||||||
"account": {
|
"account": {
|
||||||
|
@ -32,8 +32,8 @@
|
||||||
"muted_users": "Némított felhasználók",
|
"muted_users": "Némított felhasználók",
|
||||||
"muting": "Némított",
|
"muting": "Némított",
|
||||||
"mutuals": "Kölcsönös",
|
"mutuals": "Kölcsönös",
|
||||||
"notifications_on_post_disable": "Ne értesítsen, mikor {username} felhasználó bejegyzést tesz közzé",
|
"notifications_on_post_disable": "Ne értesíts, mikor {username} felhasználó bejegyzést tesz közzé",
|
||||||
"notifications_on_post_enable": "Értesítsen, mikor {username} felhasználó bejegyzést tesz közzé",
|
"notifications_on_post_enable": "Értesíts, mikor {username} felhasználó bejegyzést tesz közzé",
|
||||||
"pinned": "Kitűzött",
|
"pinned": "Kitűzött",
|
||||||
"posts": "Bejegyzések",
|
"posts": "Bejegyzések",
|
||||||
"posts_count": "{0} Bejegyzések|{0} Bejegyzés|{0} Bejegyzések",
|
"posts_count": "{0} Bejegyzések|{0} Bejegyzés|{0} Bejegyzések",
|
||||||
|
@ -41,15 +41,15 @@
|
||||||
"profile_personal_note": "Személyes jegyzetek",
|
"profile_personal_note": "Személyes jegyzetek",
|
||||||
"profile_unavailable": "A profil nem elérhető",
|
"profile_unavailable": "A profil nem elérhető",
|
||||||
"reject": "Követés elutasítása",
|
"reject": "Követés elutasítása",
|
||||||
"rejected": "Elutasítottad a kérést",
|
"rejected": "Elutasított kérés",
|
||||||
"request_follow": "Követés kérése",
|
"request_follow": "Követés kérése",
|
||||||
"requested": "{0} kérte, hogy kövessen",
|
"requested": "{0} kérte, hogy kövessen",
|
||||||
"unblock": "Ne legyen blokkolva",
|
"unblock": "Ne legyen blokkolva",
|
||||||
"unfollow": "Nem követem",
|
"unfollow": "Nem követem",
|
||||||
"unmute": "Némítás megszűntetve",
|
"unmute": "Némítás megszűntetve",
|
||||||
"view_other_followers": "A másik instancekról származó követések nem feltétlenül lesznek megjelenítve.",
|
"view_other_followers": "Másik instancekról származó követések nem feltétlenül lesznek megjelenítve.",
|
||||||
"view_other_following": "A másik instancekról származó követők nem feltétlenül lesznek megjelenítve.",
|
"view_other_following": "Másik instancekról származó követők nem feltétlenül lesznek megjelenítve.",
|
||||||
"withdraw_follow_request": "A követési kérés visszavonása"
|
"withdraw_follow_request": "Követési kérés visszavonása"
|
||||||
},
|
},
|
||||||
"action": {
|
"action": {
|
||||||
"apply": "Alkalmaz",
|
"apply": "Alkalmaz",
|
||||||
|
@ -73,6 +73,7 @@
|
||||||
"favourited": "Kedvencnek jelölt",
|
"favourited": "Kedvencnek jelölt",
|
||||||
"more": "Tovább",
|
"more": "Tovább",
|
||||||
"next": "Következő",
|
"next": "Következő",
|
||||||
|
"open_image_preview_dialog": "Kép előnézeti megnyitása",
|
||||||
"prev": "Előző",
|
"prev": "Előző",
|
||||||
"publish": "Közzététel",
|
"publish": "Közzététel",
|
||||||
"publish_thread": "Szál közzététele",
|
"publish_thread": "Szál közzététele",
|
||||||
|
@ -112,7 +113,7 @@
|
||||||
"in": "be",
|
"in": "be",
|
||||||
"no_bookmarks": "Még nincs könyvjelzőzött bejegyzés",
|
"no_bookmarks": "Még nincs könyvjelzőzött bejegyzés",
|
||||||
"no_favourites": "Még nincs kedvelt bejegyzés",
|
"no_favourites": "Még nincs kedvelt bejegyzés",
|
||||||
"not_found": "404 Nem található",
|
"not_found": "404 - Nem található",
|
||||||
"offline_desc": "Offline állapot. Kérljük ellenőrízze a hálózati csatlatkozását."
|
"offline_desc": "Offline állapot. Kérljük ellenőrízze a hálózati csatlatkozását."
|
||||||
},
|
},
|
||||||
"compose": {
|
"compose": {
|
||||||
|
@ -123,13 +124,13 @@
|
||||||
"block_account": {
|
"block_account": {
|
||||||
"cancel": "Mégsem",
|
"cancel": "Mégsem",
|
||||||
"confirm": "Blokkol",
|
"confirm": "Blokkol",
|
||||||
"description": "Biztosan blokkolod? {0}",
|
"description": "Biztosan blokkolod {0}?",
|
||||||
"title": "Hozzáférés blokkolása"
|
"title": "Hozzáférés blokkolása"
|
||||||
},
|
},
|
||||||
"block_domain": {
|
"block_domain": {
|
||||||
"cancel": "Mégsem",
|
"cancel": "Mégsem",
|
||||||
"confirm": "Blokkol",
|
"confirm": "Blokkol",
|
||||||
"description": "Biztosan blokkolod? {0}",
|
"description": "Biztosan blokkolod {0}?",
|
||||||
"title": "Domain blokkolása"
|
"title": "Domain blokkolása"
|
||||||
},
|
},
|
||||||
"common": {
|
"common": {
|
||||||
|
@ -173,13 +174,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"conversation": {
|
"conversation": {
|
||||||
"with": "vele: "
|
"with": "vele"
|
||||||
},
|
},
|
||||||
"custom_cards": {
|
"custom_cards": {
|
||||||
"stackblitz": {
|
"stackblitz": {
|
||||||
"lines": "Sorok: {0}",
|
"lines": "Sorok {0}",
|
||||||
"open": "Megnyit",
|
"open": "Megnyit",
|
||||||
"snippet_from": "Töredék ebből: {0}"
|
"snippet_from": "Töredék ebből {0}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"error": {
|
"error": {
|
||||||
|
@ -197,10 +198,10 @@
|
||||||
"desc3": "Ne lépj be valódi hozzáféréssel.",
|
"desc3": "Ne lépj be valódi hozzáféréssel.",
|
||||||
"title": "Előzetes változatát telepítése"
|
"title": "Előzetes változatát telepítése"
|
||||||
},
|
},
|
||||||
"desc_highlight": "Számíthat néhány hibára és hiányzó funkcióra itt és ott.",
|
"desc_highlight": "Számíthatsz néhány hibára és hiányzó funkcióra itt és ott.",
|
||||||
"desc_para1": "Köszönjük az érdeklődésedet és hogy kipróbálod az Elk folyamazban lévő és fejlesztés alatt álló Mastodon klienst!",
|
"desc_para1": "Köszönjük az érdeklődésedet és hogy kipróbálod az Elk folyamazban lévő és fejlesztés alatt álló Mastodon klienst!",
|
||||||
"desc_para2": "keményen dolgozunk a fejlesztésen és a javításokon időről időre.",
|
"desc_para2": "keményen dolgozunk a fejlesztésen és a javításokon időről időre.",
|
||||||
"desc_para3": "A fejlesztés lendületéhez tudja támogatni csapatunkat a GitHub szponoráción keresztül. Reméljük elnyeri tetszésedét az Elk!",
|
"desc_para3": "A fejlesztés lendületéhez tudod támogatni csapatunkat a GitHub szponoráción keresztül. Reméljük elnyeri tetszésedét az Elk!",
|
||||||
"desc_para4": "Az Elk nyílt forráskódú. Ha segíteni akar a tesztelésben, adhat visszajelzést vagy hozzájárulást,",
|
"desc_para4": "Az Elk nyílt forráskódú. Ha segíteni akar a tesztelésben, adhat visszajelzést vagy hozzájárulást,",
|
||||||
"desc_para5": "elér minket a GitHub-on",
|
"desc_para5": "elér minket a GitHub-on",
|
||||||
"desc_para6": "és legyen elkötelezett.",
|
"desc_para6": "és legyen elkötelezett.",
|
||||||
|
@ -329,7 +330,7 @@
|
||||||
"select_language": "Megjelenítő nyelv",
|
"select_language": "Megjelenítő nyelv",
|
||||||
"settings": "Beállítások",
|
"settings": "Beállítások",
|
||||||
"show_intro": "Bemutatkozás",
|
"show_intro": "Bemutatkozás",
|
||||||
"toggle_theme": "Téma váltás",
|
"toggle_theme": "Téma váltása",
|
||||||
"zen_mode": "Zen mód"
|
"zen_mode": "Zen mód"
|
||||||
},
|
},
|
||||||
"notification": {
|
"notification": {
|
||||||
|
@ -344,13 +345,13 @@
|
||||||
"update_status": "frissítette a bejegyzését"
|
"update_status": "frissítette a bejegyzését"
|
||||||
},
|
},
|
||||||
"placeholder": {
|
"placeholder": {
|
||||||
"content_warning": "Írja ide figyelmeztetését",
|
"content_warning": "Írj ide figyelmeztetést",
|
||||||
"default_1": "Mi jár a fejedben?",
|
"default_1": "Mi jár a fejedben?",
|
||||||
"reply_to_account": "Válasz erre: {0}",
|
"reply_to_account": "Válasz erre {0}",
|
||||||
"replying": "Válaszol"
|
"replying": "Válaszol"
|
||||||
},
|
},
|
||||||
"polls": {
|
"polls": {
|
||||||
"allow_multiple": "Több választás megenedése",
|
"allow_multiple": "Több választás megengedése",
|
||||||
"cancel": "Mégsem",
|
"cancel": "Mégsem",
|
||||||
"create": "Szavazás készítése",
|
"create": "Szavazás készítése",
|
||||||
"disallow_multiple": "Több válasz tiltása",
|
"disallow_multiple": "Több válasz tiltása",
|
||||||
|
@ -366,8 +367,8 @@
|
||||||
"install": "Telepítés",
|
"install": "Telepítés",
|
||||||
"install_title": "Elk telepítése",
|
"install_title": "Elk telepítése",
|
||||||
"screenshots": {
|
"screenshots": {
|
||||||
"dark": "Az Elk képernyőképe sötét módban fut",
|
"dark": "Az Elk képernyőkép sötét módban fut",
|
||||||
"light": "Az Elk képernyőképe világos módban fut"
|
"light": "Az Elk képernyőkép világos módban fut"
|
||||||
},
|
},
|
||||||
"title": "Új Elk frissítés elérhető!",
|
"title": "Új Elk frissítés elérhető!",
|
||||||
"update": "Frissítés",
|
"update": "Frissítés",
|
||||||
|
@ -449,7 +450,7 @@
|
||||||
"version": "Verzió"
|
"version": "Verzió"
|
||||||
},
|
},
|
||||||
"account_settings": {
|
"account_settings": {
|
||||||
"description": "Szerkessze fiókbeállításait a Mastodonban.",
|
"description": "Szerkeszd fiókbeállításaid a Mastodonban.",
|
||||||
"label": "Fiók beállítások"
|
"label": "Fiók beállítások"
|
||||||
},
|
},
|
||||||
"interface": {
|
"interface": {
|
||||||
|
@ -523,13 +524,13 @@
|
||||||
"enable_description": "Ha értesítéseket szeretne kapni amikor az Elk nincs nyitva, engedélyezze a push értesítéseket. A fenti \"@:settings.notifications.show_btn{'\"'} gomb segítségével pontosan szabályozhatja, hogy milyen típusú interakciók generáljanak push értesítéseket.",
|
"enable_description": "Ha értesítéseket szeretne kapni amikor az Elk nincs nyitva, engedélyezze a push értesítéseket. A fenti \"@:settings.notifications.show_btn{'\"'} gomb segítségével pontosan szabályozhatja, hogy milyen típusú interakciók generáljanak push értesítéseket.",
|
||||||
"enable_description_desktop": "Ha értesítéseket szeretne kapni amikor az Elk nincs nyitva, engedélyezze a push értesítéseket. A \"Beállítások > Értesítések > Push értesítések beállításai\" menüpontban pontosan szabályozhatja, hogy az engedélyezést követően milyen típusú interakciók generáljanak push értesítéseket.",
|
"enable_description_desktop": "Ha értesítéseket szeretne kapni amikor az Elk nincs nyitva, engedélyezze a push értesítéseket. A \"Beállítások > Értesítések > Push értesítések beállításai\" menüpontban pontosan szabályozhatja, hogy az engedélyezést követően milyen típusú interakciók generáljanak push értesítéseket.",
|
||||||
"enable_description_mobile": "A beállításokat a \"Beállítások > Értesítések > Push értesítési beállítások\" navigációs menü segítségével is elérheti.",
|
"enable_description_mobile": "A beállításokat a \"Beállítások > Értesítések > Push értesítési beállítások\" navigációs menü segítségével is elérheti.",
|
||||||
"enable_description_settings": "Ha értesítéseket szeretne kapni amikor az Elk nincs nyitva, engedélyezze a push értesítéseket. Pontosan szabályozhatja, hogy milyen típusú interakciók generálnak push értesítéseket ugyanazon a képernyőn, miután engedélyezte őket.",
|
"enable_description_settings": "Ha értesítéseket szeretnél kapni amikor az Elk nincs nyitva, engedélyezd a push értesítéseket. Pontosan szabályozhatod, hogy milyen típusú interakciók generálhatnak push értesítéseket ugyanazon a képernyőn, miután engedélyezted őket.",
|
||||||
"enable_desktop": "Push értesítések engedélyezése",
|
"enable_desktop": "Push értesítések engedélyezése",
|
||||||
"enable_title": "Sose hagyj ki semmit",
|
"enable_title": "Sose hagyj ki semmit",
|
||||||
"re_auth": "Úgy tűnik, hogy a szervere nem támogatja a push értesítéseket. Próbáljon kijelentkezni, majd újra bejelentkezni. Ha ez az üzenet továbbra is megjelenik, forduljon a szerver rendszergazdájához."
|
"re_auth": "Úgy tűnik, hogy szervered nem támogatja a push értesítéseket. Próbáljon kijelentkezni, majd újra bejelentkezni. Ha ez az üzenet továbbra is megjelenik, forduljon a szerver rendszergazdájához."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"show_btn": "Nyissa meg az értesítési beállításokat",
|
"show_btn": "Nyisd meg az értesítési beállításokat",
|
||||||
"under_construction": "Felújítás alatt"
|
"under_construction": "Felújítás alatt"
|
||||||
},
|
},
|
||||||
"notifications_settings": "Értesítések",
|
"notifications_settings": "Értesítések",
|
||||||
|
@ -580,7 +581,7 @@
|
||||||
"title": "Profil szerkesztése"
|
"title": "Profil szerkesztése"
|
||||||
},
|
},
|
||||||
"featured_tags": {
|
"featured_tags": {
|
||||||
"description": "Az emberek ezen címkék alatt böngészhetik nyilvános bejegyzéseit.",
|
"description": "Az emberek ezen címkék alatt böngészhetik a nyilvános bejegyzéseid.",
|
||||||
"label": "Kiemelt címkék",
|
"label": "Kiemelt címkék",
|
||||||
"under_construction": "Felújítás alatt"
|
"under_construction": "Felújítás alatt"
|
||||||
},
|
},
|
||||||
|
@ -594,8 +595,8 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"share_target": {
|
"share_target": {
|
||||||
"description": "Az Elk konfigurálható úgy, hogy más alkalmazásokból is megoszthasson tartalmat, egyszerűen telepítse az Elket eszközére vagy számítógépére, és jelentkezzen be.",
|
"description": "Az Elk konfigurálható úgy, hogy más alkalmazásokból is megoszthass tartalmat, egyszerűen telepítse az Elket eszközödre vagy számítógépedre, és jelentkezz be.",
|
||||||
"hint": "A tartalom megosztásához telepíteni kell az Elket, és be kell jelentkeznie.",
|
"hint": "A tartalom megosztásához telepíteni kell az Elket, és be kell jelentkezni.",
|
||||||
"title": "Oszd meg Elkkel"
|
"title": "Oszd meg Elkkel"
|
||||||
},
|
},
|
||||||
"state": {
|
"state": {
|
||||||
|
@ -616,7 +617,7 @@
|
||||||
},
|
},
|
||||||
"status": {
|
"status": {
|
||||||
"account": {
|
"account": {
|
||||||
"suspended_message": "A bejegyzéshez tartoz fiókot felfüggesztettük.",
|
"suspended_message": "A bejegyzéshez tartoz fiók felfüggesztésre került.",
|
||||||
"suspended_show": "Ennek ellenére megjeleníti?"
|
"suspended_show": "Ennek ellenére megjeleníti?"
|
||||||
},
|
},
|
||||||
"boosted_by": "Kiemelve: ",
|
"boosted_by": "Kiemelve: ",
|
||||||
|
|
|
@ -73,6 +73,7 @@
|
||||||
"favourited": "Apprezzato",
|
"favourited": "Apprezzato",
|
||||||
"more": "Altro",
|
"more": "Altro",
|
||||||
"next": "Successivo",
|
"next": "Successivo",
|
||||||
|
"open_image_preview_dialog": "Apri finestra di anteprima",
|
||||||
"prev": "Precedente",
|
"prev": "Precedente",
|
||||||
"publish": "Pubblica",
|
"publish": "Pubblica",
|
||||||
"publish_thread": "Pubblica discussione",
|
"publish_thread": "Pubblica discussione",
|
||||||
|
@ -466,7 +467,7 @@
|
||||||
},
|
},
|
||||||
"language": {
|
"language": {
|
||||||
"display_language": "Lingua interfaccia",
|
"display_language": "Lingua interfaccia",
|
||||||
"how_to_contribute": "Come posso contribuire?",
|
"how_to_contribute": "Come contribuire?",
|
||||||
"label": "Lingua",
|
"label": "Lingua",
|
||||||
"post_language": "Lingua di pubblicazione",
|
"post_language": "Lingua di pubblicazione",
|
||||||
"status": "Stato traduzione: {0}/{1} ({2}%)",
|
"status": "Stato traduzione: {0}/{1} ({2}%)",
|
||||||
|
@ -544,7 +545,7 @@
|
||||||
"github_cards_description": "Quando viene pubblicato un link GitHub, viene mostrato un riquadro HTML accessibile usando i metadati del grafico sociale invece dell'immmagine.",
|
"github_cards_description": "Quando viene pubblicato un link GitHub, viene mostrato un riquadro HTML accessibile usando i metadati del grafico sociale invece dell'immmagine.",
|
||||||
"grayscale_mode": "Modalità scala di grigi",
|
"grayscale_mode": "Modalità scala di grigi",
|
||||||
"hide_account_hover_card": "Nascondi anteprima profilo al passaggio del mouse",
|
"hide_account_hover_card": "Nascondi anteprima profilo al passaggio del mouse",
|
||||||
"hide_alt_indi_on_posts": "Nascondi indicatori testo alternativo sui post",
|
"hide_alt_indi_on_posts": "Nascondi indicatore testo alternativo sui post",
|
||||||
"hide_boost_count": "Nascondi contatore potenziamenti",
|
"hide_boost_count": "Nascondi contatore potenziamenti",
|
||||||
"hide_favorite_count": "Nascondi contatore apprezzamenti",
|
"hide_favorite_count": "Nascondi contatore apprezzamenti",
|
||||||
"hide_follower_count": "Nascondi contatore seguaci/seguiti",
|
"hide_follower_count": "Nascondi contatore seguaci/seguiti",
|
||||||
|
|
|
@ -61,7 +61,7 @@
|
||||||
"confirm": "確認",
|
"confirm": "確認",
|
||||||
"done": "完了",
|
"done": "完了",
|
||||||
"edit": "編集する",
|
"edit": "編集する",
|
||||||
"enter_app": "使い始める",
|
"enter_app": "始める",
|
||||||
"favourite": "お気に入り",
|
"favourite": "お気に入り",
|
||||||
"favourite_count": "{0}",
|
"favourite_count": "{0}",
|
||||||
"favourited": "お気に入り済み",
|
"favourited": "お気に入り済み",
|
||||||
|
@ -116,12 +116,12 @@
|
||||||
"block_account": {
|
"block_account": {
|
||||||
"cancel": "キャンセル",
|
"cancel": "キャンセル",
|
||||||
"confirm": "ブロック",
|
"confirm": "ブロック",
|
||||||
"description": "{0}さんを本当にミュートしたいですか?"
|
"description": "{0}さんを本当にミュートしますか?"
|
||||||
},
|
},
|
||||||
"block_domain": {
|
"block_domain": {
|
||||||
"cancel": "キャンセル",
|
"cancel": "キャンセル",
|
||||||
"confirm": "ブロック",
|
"confirm": "ブロック",
|
||||||
"description": "{0}さんを本当にブロックしたいですか?"
|
"description": "{0}さんを本当にブロックしますか?"
|
||||||
},
|
},
|
||||||
"common": {
|
"common": {
|
||||||
"cancel": "いいえ",
|
"cancel": "いいえ",
|
||||||
|
@ -130,27 +130,27 @@
|
||||||
"delete_list": {
|
"delete_list": {
|
||||||
"cancel": "キャンセル",
|
"cancel": "キャンセル",
|
||||||
"confirm": "削除",
|
"confirm": "削除",
|
||||||
"description": "リスト \"{0}\" を本当に削除したいですか?"
|
"description": "リスト \"{0}\" を本当に削除しますか?"
|
||||||
},
|
},
|
||||||
"delete_posts": {
|
"delete_posts": {
|
||||||
"cancel": "キャンセル",
|
"cancel": "キャンセル",
|
||||||
"confirm": "削除",
|
"confirm": "削除",
|
||||||
"description": "この投稿を本当に削除したいですか?"
|
"description": "この投稿を本当に削除しますか?"
|
||||||
},
|
},
|
||||||
"mute_account": {
|
"mute_account": {
|
||||||
"cancel": "キャンセル",
|
"cancel": "キャンセル",
|
||||||
"confirm": "ミュート",
|
"confirm": "ミュート",
|
||||||
"description": "{0}さんを本当にミュートしたいですか?"
|
"description": "{0}さんを本当にミュートしますか?"
|
||||||
},
|
},
|
||||||
"show_reblogs": {
|
"show_reblogs": {
|
||||||
"cancel": "キャンセル",
|
"cancel": "キャンセル",
|
||||||
"confirm": "表示",
|
"confirm": "表示",
|
||||||
"description": "{0}さんのブーストを本当に表示したいですか?"
|
"description": "{0}さんのブーストを本当に表示しますか?"
|
||||||
},
|
},
|
||||||
"unfollow": {
|
"unfollow": {
|
||||||
"cancel": "キャンセル",
|
"cancel": "キャンセル",
|
||||||
"confirm": "フォロー解除",
|
"confirm": "フォロー解除",
|
||||||
"description": "本当にフォロー解除したいですか?"
|
"description": "本当にフォローを解除しますか?"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"conversation": {
|
"conversation": {
|
||||||
|
@ -166,7 +166,7 @@
|
||||||
"error": {
|
"error": {
|
||||||
"account_not_found": "アカウント {0} が見つかりません",
|
"account_not_found": "アカウント {0} が見つかりません",
|
||||||
"explore_list_empty": "現在トレンドには何もありません。またあとで!",
|
"explore_list_empty": "現在トレンドには何もありません。またあとで!",
|
||||||
"file_size_cannot_exceed_n_mb": "ファイルサイズは{0}MBを超えてはいけません",
|
"file_size_cannot_exceed_n_mb": "{0}MBを超えるファイルはアップロードできません",
|
||||||
"sign_in_error": "サーバーに接続できません。",
|
"sign_in_error": "サーバーに接続できません。",
|
||||||
"status_not_found": "投稿が見つかりません",
|
"status_not_found": "投稿が見つかりません",
|
||||||
"unsupported_file_format": "対応していないファイル形式です"
|
"unsupported_file_format": "対応していないファイル形式です"
|
||||||
|
@ -367,7 +367,7 @@
|
||||||
"anything_else": "他に私たちが知る必要があることはありますか?",
|
"anything_else": "他に私たちが知る必要があることはありますか?",
|
||||||
"block_desc": "あなたは今後、このユーザーの投稿を見ることはありません。このユーザーもあなたの投稿を見たり、あなたをフォローしたりすることもできなくなります。ただし、相手はブロックされたことが分かります。",
|
"block_desc": "あなたは今後、このユーザーの投稿を見ることはありません。このユーザーもあなたの投稿を見たり、あなたをフォローしたりすることもできなくなります。ただし、相手はブロックされたことが分かります。",
|
||||||
"dontlike": "気に入りません",
|
"dontlike": "気に入りません",
|
||||||
"dontlike_desc": "これは見たくない投稿です。",
|
"dontlike_desc": "これは閲覧したくない投稿です",
|
||||||
"forward": "はい、この報告を {0} に転送してください。",
|
"forward": "はい、この報告を {0} に転送してください。",
|
||||||
"forward_question": "この報告の匿名化されたコピーをそのサーバーにも送信しますか?",
|
"forward_question": "この報告の匿名化されたコピーをそのサーバーにも送信しますか?",
|
||||||
"further_actions": {
|
"further_actions": {
|
||||||
|
@ -453,7 +453,7 @@
|
||||||
"mention": "メンション",
|
"mention": "メンション",
|
||||||
"poll": "投票",
|
"poll": "投票",
|
||||||
"reblog": "投稿のリブログ",
|
"reblog": "投稿のリブログ",
|
||||||
"title": "どの通知を受け取りますか?"
|
"title": "受け取りたい通知を選択してください"
|
||||||
},
|
},
|
||||||
"description": "Elkを使用していないときでも通知を受け取ります。",
|
"description": "Elkを使用していないときでも通知を受け取ります。",
|
||||||
"instructions": "@:settings.notifications.push_notifications.save_settings ボタンで設定を保存するのを忘れないように!",
|
"instructions": "@:settings.notifications.push_notifications.save_settings ボタンで設定を保存するのを忘れないように!",
|
||||||
|
@ -472,9 +472,9 @@
|
||||||
"invalid_vapid_key": "VAPID公開鍵が無効なようです。",
|
"invalid_vapid_key": "VAPID公開鍵が無効なようです。",
|
||||||
"permission_denied": "パーミッション拒否: ブラウザで通知を有効にしてください。",
|
"permission_denied": "パーミッション拒否: ブラウザで通知を有効にしてください。",
|
||||||
"repo_link": "ElkのGitHubリポジトリ",
|
"repo_link": "ElkのGitHubリポジトリ",
|
||||||
"request_error": "購読のリクエスト中にエラーが発生しました。再試行してもエラーが解消しない場合、Elkリポジトリにissueを報告してください。",
|
"request_error": "登録のリクエスト中にエラーが発生しました。再試行してもエラーが解消しない場合、Elkリポジトリにissueを報告してください。",
|
||||||
"title": "プッシュ通知を購読できませんでした",
|
"title": "プッシュ通知を登録できませんでした",
|
||||||
"too_many_registrations": "ブラウザーの制限により、Elkは異なるサーバー上の複数アカウントに対してプッシュ通知サービスを使用できません。他のアカウントのプッシュ通知の購読を解除して、再購読する必要があります。",
|
"too_many_registrations": "ブラウザーの制限により、Elkは異なるサーバー上の複数アカウントに対してプッシュ通知サービスを使用できません。他のアカウントのプッシュ通知の登録を解除して、再登録する必要があります。",
|
||||||
"vapid_not_supported": "このブラウザはWeb Push通知をサポートしていませんが、VAPIDプロトコルをサポートしているようです。"
|
"vapid_not_supported": "このブラウザはWeb Push通知をサポートしていませんが、VAPIDプロトコルをサポートしているようです。"
|
||||||
},
|
},
|
||||||
"title": "プッシュ通知の設定",
|
"title": "プッシュ通知の設定",
|
||||||
|
@ -572,7 +572,7 @@
|
||||||
"status": {
|
"status": {
|
||||||
"account": {
|
"account": {
|
||||||
"suspended_message": "この投稿のアカウントは凍結されました。",
|
"suspended_message": "この投稿のアカウントは凍結されました。",
|
||||||
"suspended_show": "それでもコンテンツを表示しますか?"
|
"suspended_show": "本当にコンテンツを表示しますか?"
|
||||||
},
|
},
|
||||||
"boosted_by": "ブーストしたユーザー",
|
"boosted_by": "ブーストしたユーザー",
|
||||||
"edited": "編集済み {0}",
|
"edited": "編集済み {0}",
|
||||||
|
@ -708,6 +708,6 @@
|
||||||
"public": "公開",
|
"public": "公開",
|
||||||
"public_desc": "誰でも閲覧可能",
|
"public_desc": "誰でも閲覧可能",
|
||||||
"unlisted": "非掲載",
|
"unlisted": "非掲載",
|
||||||
"unlisted_desc": "誰でも閲覧可能、検索機能からはオプトアウトする"
|
"unlisted_desc": "誰でも閲覧可能ですが、検索機能からは非表示にします"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,6 +73,7 @@
|
||||||
"favourited": "Adicionado aos favoritos",
|
"favourited": "Adicionado aos favoritos",
|
||||||
"more": "Mais",
|
"more": "Mais",
|
||||||
"next": "Próximo",
|
"next": "Próximo",
|
||||||
|
"open_image_preview_dialog": "Abrir caixa de diálogo de pré-visualização da imagem",
|
||||||
"prev": "Anterior",
|
"prev": "Anterior",
|
||||||
"publish": "Publicar",
|
"publish": "Publicar",
|
||||||
"publish_thread": "Publicar sequência",
|
"publish_thread": "Publicar sequência",
|
||||||
|
|
|
@ -343,10 +343,10 @@
|
||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
"about": {
|
"about": {
|
||||||
"built_at": "Kurulmuş",
|
"built_at": "Kurulum",
|
||||||
"label": "Hakkında",
|
"label": "Hakkında",
|
||||||
"meet_the_team": "Takım ile buluş",
|
"meet_the_team": "Takım ile buluş",
|
||||||
"sponsor_action": "Bize spponsor ol",
|
"sponsor_action": "Bize sponsor ol",
|
||||||
"sponsor_action_desc": "Elk'i geliştiren takıma destek olmak için",
|
"sponsor_action_desc": "Elk'i geliştiren takıma destek olmak için",
|
||||||
"sponsors": "Sponsorlar",
|
"sponsors": "Sponsorlar",
|
||||||
"sponsors_body_1": "Elk cömert sponsorluk ve şunların yardımı sayesinde mümkün oldu:",
|
"sponsors_body_1": "Elk cömert sponsorluk ve şunların yardımı sayesinde mümkün oldu:",
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
{
|
{
|
||||||
"a11y": {
|
"a11y": {
|
||||||
"loading_page": "Завантаження сторінки, будь ласка, зачекайте",
|
"loading_page": "Завантаження сторінки, просимо почекати",
|
||||||
"loading_titled_page": "Завантаження сторінки {0}, будь ласка, зачекайте",
|
"loading_titled_page": "Завантаження сторінки {0}, просимо почекати",
|
||||||
"locale_changed": "Мову змінено на {0}",
|
"locale_changed": "Мова змінена на {0}",
|
||||||
"locale_changing": "Зміна мови, будь ласка, зачекайте",
|
"locale_changing": "Зміна мови, просимо почекати",
|
||||||
"route_loaded": "Сторінка {0} завантажена"
|
"route_loaded": "Сторінка {0} завантажена"
|
||||||
},
|
},
|
||||||
"account": {
|
"account": {
|
||||||
|
@ -13,78 +13,96 @@
|
||||||
"blocked_users": "Заблоковані користувачі",
|
"blocked_users": "Заблоковані користувачі",
|
||||||
"blocking": "Заблоковані",
|
"blocking": "Заблоковані",
|
||||||
"bot": "БОТ",
|
"bot": "БОТ",
|
||||||
"copy_account_name": "Скопіюйте назву облікового запису",
|
"copy_account_name": "Скопіювати назву облікового запису",
|
||||||
"favourites": "Улюблені",
|
"favourites": "Уподобані",
|
||||||
"follow": "Підписатися",
|
"follow": "Підписатися",
|
||||||
"follow_back": "Підписатися",
|
"follow_back": "Підписатися взаємно",
|
||||||
"follow_requested": "Запити",
|
"follow_requested": "Запитані",
|
||||||
"followers": "Підписники",
|
"followers": "Підписники",
|
||||||
"followers_count": "{0} підписників|{0} підписник|{0} підписники|{0} підписників",
|
"followers_count": "{0} підписників|{0} підписник|{0} підписники|{0} підписників",
|
||||||
"following": "Підписаний",
|
"following": "Підписані",
|
||||||
"following_count": "{0} підписок",
|
"following_count": "{0} підписок|{0} підписка|{0} підписки|{0} підписок",
|
||||||
"follows_you": "Підписаний на вас",
|
"follows_you": "Підписані на вас",
|
||||||
"go_to_profile": "Перейти до профілю",
|
"go_to_profile": "Перейти до профілю",
|
||||||
"joined": "Зареєстровано",
|
"joined": "Долучені",
|
||||||
"moved_title": "вказав, що його новий обліковий запис тепер:",
|
"lock": "Прихований",
|
||||||
"muted_users": "Приховані користувачі",
|
"moved_title": "указали, що їхній новий обліковий запис тепер:",
|
||||||
"muting": "Приховано",
|
"muted_users": "Іґноровані користувачі",
|
||||||
"mutuals": "Взаємно",
|
"muting": "Іґноровані",
|
||||||
|
"mutuals": "Підписані взаємно",
|
||||||
|
"notifications_on_post_disable": "Не сповіщати про дописи від {username}",
|
||||||
|
"notifications_on_post_enable": "Сповіщати про дописи від {username}",
|
||||||
"pinned": "Закріплені дописи",
|
"pinned": "Закріплені дописи",
|
||||||
"posts": "Дописи",
|
"posts": "Дописи",
|
||||||
"posts_count": "{0} дописів|{0} допис|{0} дописи|{0} дописів",
|
"posts_count": "{0} дописів|{0} допис|{0} дописи|{0} дописів",
|
||||||
"profile_description": "Заголовок профілю {0}",
|
"profile_description": "Заголовок профілю {0}",
|
||||||
|
"profile_personal_note": "Нотатка",
|
||||||
"profile_unavailable": "Профіль недоступний",
|
"profile_unavailable": "Профіль недоступний",
|
||||||
"unblock": "Розблокувати",
|
"reject": "Відхилити підписку",
|
||||||
|
"rejected": "Ви відхилили запит",
|
||||||
|
"request_follow": "Запит підписки",
|
||||||
|
"requested": "{0} запитали підписку на вас",
|
||||||
|
"unblock": "Розблочити",
|
||||||
"unfollow": "Відписатися",
|
"unfollow": "Відписатися",
|
||||||
"unmute": "Приховати"
|
"unmute": "Розіґнорити",
|
||||||
|
"view_other_followers": "Підписники з інших серверів можуть не відображатися.",
|
||||||
|
"view_other_following": "Підписки з інших серверів можуть не відображатися.",
|
||||||
|
"withdraw_follow_request": "Відкликати запит підписки"
|
||||||
},
|
},
|
||||||
"action": {
|
"action": {
|
||||||
"apply": "Застосувати",
|
"apply": "Застосувати",
|
||||||
"bookmark": "Додати в закладки",
|
"bookmark": "Додати в закладки",
|
||||||
"bookmarked": "Додано з закладки",
|
"bookmarked": "Додано в закладки",
|
||||||
"boost": "Поширити",
|
"boost": "Поширити",
|
||||||
"boost_count": "{0}",
|
"boost_count": "{0}",
|
||||||
"boosted": "Поширено",
|
"boosted": "Поширено",
|
||||||
|
"clear": "Очистити",
|
||||||
|
"clear_publish_failed": "Очистити помилки оприлюднення",
|
||||||
|
"clear_save_failed": "Очистити помилки збереження",
|
||||||
"clear_upload_failed": "Очистити помилки завантаження",
|
"clear_upload_failed": "Очистити помилки завантаження",
|
||||||
"close": "Закрити",
|
"close": "Закрити",
|
||||||
"compose": "Написати",
|
"compose": "Написати",
|
||||||
"confirm": "Підтвердити",
|
"confirm": "Підтвердити",
|
||||||
"edit": "Редагувати",
|
"done": "Зроблено",
|
||||||
"enter_app": "Перейти до додатку",
|
"edit": "Правити",
|
||||||
"favourite": "Вподобати",
|
"enter_app": "Ввійти в застосунок",
|
||||||
|
"favourite": "Уподобати",
|
||||||
"favourite_count": "{0}",
|
"favourite_count": "{0}",
|
||||||
"favourited": "Подобається",
|
"favourited": "Уподобані",
|
||||||
"more": "Більше",
|
"more": "Більше",
|
||||||
"next": "Наступний",
|
"next": "Наступний",
|
||||||
|
"open_image_preview_dialog": "Відкрити діалоґ передпоказу зображення",
|
||||||
"prev": "Попередній",
|
"prev": "Попередній",
|
||||||
"publish": "Опублікувати",
|
"publish": "Оприлюднити",
|
||||||
|
"publish_thread": "Оприлюднити ряд дописів",
|
||||||
"reply": "Відповісти",
|
"reply": "Відповісти",
|
||||||
"reply_count": "{0}",
|
"reply_count": "{0}",
|
||||||
"reset": "Скинути",
|
"reset": "Скинути",
|
||||||
"save": "Зберегти",
|
"save": "Зберегти",
|
||||||
"save_changes": "Зберегти зміни",
|
"save_changes": "Зберегти зміни",
|
||||||
"sign_in": "Увійти",
|
"sign_in": "Ввійти",
|
||||||
|
"sign_in_to": "Ввійти до {0}",
|
||||||
"switch_account": "Змінити обліковий запис",
|
"switch_account": "Змінити обліковий запис",
|
||||||
"vote": "Голосувати"
|
"vote": "Голосувати"
|
||||||
},
|
},
|
||||||
"app_desc_short": "Спритний веб-клієнт для Mastodon",
|
"app_desc_short": "Спритний вебклієнт для Mastodon",
|
||||||
"app_logo": "Elk лого",
|
"app_logo": "Лоґо Elk",
|
||||||
"app_name": "Elk",
|
"app_name": "Elk",
|
||||||
"attachment": {
|
"attachment": {
|
||||||
"edit_title": "Опис",
|
"edit_title": "Опис",
|
||||||
"remove_label": "Видалити вкладення"
|
"remove_label": "Вилучити вкладення"
|
||||||
},
|
},
|
||||||
"command": {
|
"command": {
|
||||||
"activate": "Активувати",
|
"activate": "Активувати",
|
||||||
"complete": "Вибрати",
|
"complete": "Вибрати",
|
||||||
"compose_desc": "Написати новий допис",
|
"compose_desc": "Написати новий допис",
|
||||||
"n_people_in_the_past_n_days": "{0} користувачів за останні {1} днів",
|
"n_people_in_the_past_n_days": "{0} користувачів за останні {1} днів",
|
||||||
"select_lang": "Змінити мову",
|
"select_lang": "Вибрати мову",
|
||||||
"sign_in_desc": "Додати існуючий обліковий запис",
|
"sign_in_desc": "Додати наявний обліковий запис",
|
||||||
"switch_account": "Змінити обліковий запис на {0}",
|
"switch_account": "Змінити обліковий запис на {0}",
|
||||||
"switch_account_desc": "Змінити активний обліковий запис",
|
"switch_account_desc": "Змінити активний обліковий запис",
|
||||||
"toggle_dark_mode": "Перемкнути темний режим",
|
"toggle_dark_mode": "Перемикнути темний режим",
|
||||||
"toggle_zen_mode": "Перемкнути режим Zen"
|
"toggle_zen_mode": "Перемикнути Zen режим"
|
||||||
},
|
},
|
||||||
"common": {
|
"common": {
|
||||||
"end_of_list": "Кінець списку",
|
"end_of_list": "Кінець списку",
|
||||||
|
@ -92,9 +110,9 @@
|
||||||
"fetching": "Завантаження...",
|
"fetching": "Завантаження...",
|
||||||
"in": "в",
|
"in": "в",
|
||||||
"no_bookmarks": "Немає збережених дописів",
|
"no_bookmarks": "Немає збережених дописів",
|
||||||
"no_favourites": "Немає вподобаних дописів",
|
"no_favourites": "Немає уподобаних дописів",
|
||||||
"not_found": "404 Не знайдено",
|
"not_found": "404 Не знайдено",
|
||||||
"offline_desc": "Схоже, ви відключені від мережі. Будь ласка, перевірте ваше підключення до мережі."
|
"offline_desc": "Схоже, ви відключені від мережі. Просимо перевірити підключення до мережі."
|
||||||
},
|
},
|
||||||
"compose": {
|
"compose": {
|
||||||
"draft_title": "Чернетка {0}",
|
"draft_title": "Чернетка {0}",
|
||||||
|
@ -103,15 +121,15 @@
|
||||||
"confirm": {
|
"confirm": {
|
||||||
"block_account": {
|
"block_account": {
|
||||||
"cancel": "Скасувати",
|
"cancel": "Скасувати",
|
||||||
"confirm": "Блокувати",
|
"confirm": "Блочити",
|
||||||
"description": "Ви впевнені, що бажаєте заблокувати {0}?",
|
"description": "Упевнені, що хочете заблочити {0}?",
|
||||||
"title": "Заблокувати користувача"
|
"title": "Заблочити користувача"
|
||||||
},
|
},
|
||||||
"block_domain": {
|
"block_domain": {
|
||||||
"cancel": "Скасувати",
|
"cancel": "Скасувати",
|
||||||
"confirm": "Блокувати",
|
"confirm": "Блочити",
|
||||||
"description": "Ви впевнені, що бажаєте заблокувати {0}?",
|
"description": "Упевнені, що хочете заблочити {0}?",
|
||||||
"title": "Заблокувати домен"
|
"title": "Заблочити домен"
|
||||||
},
|
},
|
||||||
"common": {
|
"common": {
|
||||||
"cancel": "Скасувати",
|
"cancel": "Скасувати",
|
||||||
|
@ -120,73 +138,90 @@
|
||||||
"delete_list": {
|
"delete_list": {
|
||||||
"cancel": "Скасувати",
|
"cancel": "Скасувати",
|
||||||
"confirm": "Видалити",
|
"confirm": "Видалити",
|
||||||
"description": "Ви впевнені, що бажаєте видалити список \"{0}\"?",
|
"description": "Упевнені, що хочете видалити список «{0}»?",
|
||||||
"title": "Видалити список"
|
"title": "Видалити список"
|
||||||
},
|
},
|
||||||
"delete_posts": {
|
"delete_posts": {
|
||||||
"cancel": "Скасувати",
|
"cancel": "Скасувати",
|
||||||
"confirm": "Видалити",
|
"confirm": "Видалити",
|
||||||
"description": "Ви впевнені, що хочете видалити цей допис?",
|
"description": "Упевнені, що хочете видалити допис?",
|
||||||
"title": "Видалити допис"
|
"title": "Видалити допис"
|
||||||
},
|
},
|
||||||
"mute_account": {
|
"mute_account": {
|
||||||
"cancel": "Скасувати",
|
"cancel": "Скасувати",
|
||||||
"confirm": "Приховати",
|
"confirm": "Іґнорити",
|
||||||
"description": "Ви впевнені, що бажаєте приховати {0}?",
|
"days": "днів|день|дні|днів",
|
||||||
"title": "Приховати обліковий запис"
|
"description": "Упевнені, що бажаєте іґнорити {0}?",
|
||||||
|
"hours": "годин|година|години|годин",
|
||||||
|
"minute": "хвилин|хвилина|хвилини|хвилин",
|
||||||
|
"title": "Іґнорити обліковий запис"
|
||||||
},
|
},
|
||||||
"show_reblogs": {
|
"show_reblogs": {
|
||||||
"cancel": "Скасувати",
|
"cancel": "Скасувати",
|
||||||
"confirm": "Показати",
|
"confirm": "Показати",
|
||||||
"description": "Ви впевнені, що хочете показати поширення від {0}?",
|
"description": "Упевнені, що хочете показати поширення від {0}?",
|
||||||
"title": "Показати поширення"
|
"title": "Показати поширення"
|
||||||
},
|
},
|
||||||
"unfollow": {
|
"unfollow": {
|
||||||
"cancel": "Скасувати",
|
"cancel": "Скасувати",
|
||||||
"confirm": "Відписатися",
|
"confirm": "Відписатися",
|
||||||
"description": "Ви впевнені, що бажаєте відписатися від {0}?",
|
"description": "Упевнені, що бажаєте відписатися від {0}?",
|
||||||
"title": "Відписатися"
|
"title": "Відписатися"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"conversation": {
|
"conversation": {
|
||||||
"with": "з"
|
"with": "з"
|
||||||
},
|
},
|
||||||
|
"custom_cards": {
|
||||||
|
"stackblitz": {
|
||||||
|
"lines": "Рядків {0}",
|
||||||
|
"open": "Відкрити",
|
||||||
|
"snippet_from": "Сніпет від {0}"
|
||||||
|
}
|
||||||
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"account_not_found": "Обліковий запис {0} не знайдено",
|
"account_not_found": "Обліковий запис {0} не знайдено",
|
||||||
"explore_list_empty": "Зараз нічого не в тренді. Перевірте пізніше!",
|
"explore_list_empty": "Зараз нічого не в тренді. Можете перевірити пізніше!",
|
||||||
"file_size_cannot_exceed_n_mb": "Розмір файлу не може перевищувати {0} Мб",
|
"file_size_cannot_exceed_n_mb": "Розмір файлу не може перевищувати {0} Мб",
|
||||||
"sign_in_error": "Не вдалося підключитися до сервера.",
|
"sign_in_error": "Не вдалося підключитися до сервера.",
|
||||||
"status_not_found": "Допис не знайдено",
|
"status_not_found": "Допис не знайдено",
|
||||||
"unsupported_file_format": "Непідтримуваний формат файлу"
|
"unsupported_file_format": "Непідтримуваний формат файлу"
|
||||||
},
|
},
|
||||||
"help": {
|
"help": {
|
||||||
"desc_highlight": "Очікуйте деякі помилки та відсутні функції тут і там.",
|
"build_preview": {
|
||||||
"desc_para1": "Дякуємо за ваш інтерес до випробування Elk, нашого універсального клієнта Mastodon, який ще у розробці!",
|
"desc1": "Зараз бачите попередню версію Elk від спільноти - {0}.",
|
||||||
"desc_para2": "Ми наполегливо працюємо над розробкою та вдосконалюємо його. Ми відкриємо вихідний код, коли він буде готовий для загального використання.",
|
"desc2": "Може містити неоглянути або навіть зловмисні зміни.",
|
||||||
"desc_para3": "Щоб допомогти прискорити розробку, ви можете спонсорувати членів нашої команди за посиланнями нижче. Сподіваємося, вам сподобається Elk!",
|
"desc3": "Не треба заходити з дійсним обліковим записом.",
|
||||||
"desc_para4": "До цього, якщо ви хочете допомогти з тестуванням, надіслати відгук або зробити внесок,",
|
"title": "Попередній вигляд"
|
||||||
"desc_para5": "зв’яжіться з нами на GitHub",
|
},
|
||||||
"desc_para6": "і долучіться.",
|
"desc_highlight": "Можете очікувати деякі помилки і відсутні функції тут і там.",
|
||||||
|
"desc_para1": "Elk є спритним вебклієнтом для Mastodon. Можете ввійти в обліковий Mastodon запис, через котрого взаємодіяти з Fediverse.",
|
||||||
|
"desc_para2": "Elk є відкритим ПЗ, котрого жваво покращуємо, як проєкт спільноти. Можете долучитися до нас і розвивати його разом!",
|
||||||
|
"desc_para3": "Аби прискорити розробку, можете спонсорувати Команду через GitHub Sponsors. Сподіваємося, ви задоволені застосунком Elk!",
|
||||||
|
"desc_para4": "Якщо хочете повідомити про помилку, допомогти з тестуванням, надіслати відгук чи зробити внесок,",
|
||||||
|
"desc_para5": "то можете подати до нас в GitHub",
|
||||||
|
"desc_para6": "і взяти участь.",
|
||||||
"footer_team": "Команда Elk",
|
"footer_team": "Команда Elk",
|
||||||
"title": "Elk у попередньому перегляді!"
|
"title": "Ласкаво просимо до Elk!"
|
||||||
},
|
},
|
||||||
"language": {
|
"language": {
|
||||||
"search": "Пошук"
|
"search": "Пошук"
|
||||||
},
|
},
|
||||||
"list": {
|
"list": {
|
||||||
"add_account": "Додати обліковий запис до списку",
|
"add_account": "Додати обліковий запис до списку",
|
||||||
"cancel_edit": "Скасувати редагування",
|
"cancel_edit": "Скасувати правку",
|
||||||
"clear_error": "Очистити помилку",
|
"clear_error": "Очистити помилку",
|
||||||
"create": "Створити",
|
"create": "Створити",
|
||||||
"delete": "Видалити список",
|
"delete": "Видалити список",
|
||||||
"delete_error": "Під час видалення списку сталася помилка",
|
"delete_error": "Під час видалення списку сталася помилка",
|
||||||
"edit": "Редагувати список",
|
"edit": "Правити список",
|
||||||
"edit_error": "Під час редагування списку сталася помилка",
|
"edit_error": "Під час оновлення списку сталася помилка",
|
||||||
"error": "Під час створення списку сталася помилка",
|
"error": "Під час створення списку сталася помилка",
|
||||||
"error_prefix": "Помилка:",
|
"error_prefix": "Помилка: ",
|
||||||
"list_title_placeholder": "Назва списку",
|
"list_title_placeholder": "Назва списку",
|
||||||
"modify_account": "Редагувати списки з цим обліковим записом",
|
"manage": "Управляти списками",
|
||||||
"remove_account": "Видалити обліковий запис зі списку",
|
"modify_account": "Змінити належність облікового запису до списків",
|
||||||
|
"remove_account": "Вилучити обліковий запис зі списку",
|
||||||
"save": "Зберегти зміни"
|
"save": "Зберегти зміни"
|
||||||
},
|
},
|
||||||
"magic_keys": {
|
"magic_keys": {
|
||||||
|
@ -196,8 +231,8 @@
|
||||||
"boost": "Поширити",
|
"boost": "Поширити",
|
||||||
"command_mode": "Командний режим",
|
"command_mode": "Командний режим",
|
||||||
"compose": "Написати",
|
"compose": "Написати",
|
||||||
"favourite": "Вподобати",
|
"favourite": "Уподобати",
|
||||||
"search": "Пошук",
|
"search": "Шукати",
|
||||||
"show_new_items": "Показати нові елементи",
|
"show_new_items": "Показати нові елементи",
|
||||||
"title": "Дії"
|
"title": "Дії"
|
||||||
},
|
},
|
||||||
|
@ -208,8 +243,8 @@
|
||||||
"go_to_bookmarks": "Закладки",
|
"go_to_bookmarks": "Закладки",
|
||||||
"go_to_conversations": "Розмови",
|
"go_to_conversations": "Розмови",
|
||||||
"go_to_explore": "Огляд",
|
"go_to_explore": "Огляд",
|
||||||
"go_to_favourites": "Вподобане",
|
"go_to_favourites": "Уподобане",
|
||||||
"go_to_federated": "Глобальна",
|
"go_to_federated": "Ґлобальна",
|
||||||
"go_to_home": "Головна",
|
"go_to_home": "Головна",
|
||||||
"go_to_lists": "Списки",
|
"go_to_lists": "Списки",
|
||||||
"go_to_local": "Локальна",
|
"go_to_local": "Локальна",
|
||||||
|
@ -220,90 +255,108 @@
|
||||||
"next_status": "Наступний допис",
|
"next_status": "Наступний допис",
|
||||||
"previous_status": "Попередній допис",
|
"previous_status": "Попередній допис",
|
||||||
"shortcut_help": "Допомога з гарячими клавішами",
|
"shortcut_help": "Допомога з гарячими клавішами",
|
||||||
"title": "Навігація"
|
"title": "Навіґація"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sequence_then": "потім"
|
"sequence_then": "потім"
|
||||||
},
|
},
|
||||||
"menu": {
|
"menu": {
|
||||||
"add_personal_note": "Додати нотатку до {0}",
|
"add_personal_note": "Додати нотатку до {0}",
|
||||||
"block_account": "Заблокувати {0}",
|
"block_account": "Заблочити {0}",
|
||||||
"block_domain": "Заблокувати домен {0}",
|
"block_domain": "Заблочити домен {0}",
|
||||||
"copy_link_to_post": "Скопіювати посилання на цей допис",
|
"copy_link_to_post": "Скопіювати посилання на допис",
|
||||||
"copy_original_link_to_post": "Скопіювати оригінальне посилання на цей допис",
|
"copy_original_link_to_post": "Скопіювати ориґінальне посилання на допис",
|
||||||
"delete": "Видалити",
|
"delete": "Видалити",
|
||||||
"delete_and_redraft": "Видалити і переписати",
|
"delete_and_redraft": "Видалити і переписати",
|
||||||
"direct_message_account": "Пряме повідомлення {0}",
|
"direct_message_account": "Пряме повідомлення {0}",
|
||||||
"edit": "Редагувати",
|
"edit": "Правити",
|
||||||
"hide_reblogs": "Приховати поширення від {0}",
|
"hide_reblogs": "Сховати поширення від {0}",
|
||||||
"mention_account": "Згадати {0}",
|
"mention_account": "Згадати {0}",
|
||||||
"mute_account": "Приховати {0}",
|
"mute_account": "Іґнорити {0}",
|
||||||
"mute_conversation": "Ігнорувати цей допис",
|
"mute_conversation": "Іґнорити допис",
|
||||||
"open_in_original_site": "Відкрити на оригінальному сайті",
|
"open_in_original_site": "Відкрити на ориґінальному сайті",
|
||||||
"pin_on_profile": "Закріпити на профілі",
|
"pin_on_profile": "Закріпити на профілі",
|
||||||
"remove_personal_note": "Вилучити нотатку з {0}",
|
"remove_personal_note": "Вилучити нотатку з {0}",
|
||||||
"report_account": "Повідомити про зловживання {0}",
|
"report_account": "Поскаржитися на {0}",
|
||||||
"share_account": "Поділитися {0}",
|
"share_account": "Поділитися {0}",
|
||||||
"share_post": "Поділіться цим дописом",
|
"share_post": "Поділитися дописом",
|
||||||
"show_favourited_and_boosted_by": "Показати, хто вподобав та поширив",
|
"show_favourited_and_boosted_by": "Показати, хто уподобали і поширили",
|
||||||
"show_reblogs": "Показати поширення від {0}",
|
"show_reblogs": "Показати поширення від {0}",
|
||||||
"show_untranslated": "Показати без перекладу",
|
"show_untranslated": "Показати без перекладу",
|
||||||
"toggle_theme": {
|
"toggle_theme": {
|
||||||
"dark": "Увімкнути темний режим",
|
"dark": "Перемикнути темний режим",
|
||||||
"light": "Увімкнути світлий режим"
|
"light": "Перемикнути світлий режим"
|
||||||
},
|
},
|
||||||
"translate_post": "Перекласти допис",
|
"translate_post": "Перекласти допис",
|
||||||
"unblock_account": "Розблокувати {0}",
|
"unblock_account": "Розблочити {0}",
|
||||||
"unblock_domain": "Розблокувати домен {0}",
|
"unblock_domain": "Розблочити домен {0}",
|
||||||
"unfollow_account": "Скасувати підписку на {0}",
|
"unfollow_account": "Відписатися від {0}",
|
||||||
"unmute_account": "Не приховувати {0}",
|
"unmute_account": "Розіґнорити {0}",
|
||||||
"unmute_conversation": "Не ігнорувати цей допис",
|
"unmute_conversation": "Розіґнорити допис",
|
||||||
"unpin_on_profile": "Відкріпити з профілю"
|
"unpin_on_profile": "Відкріпити з профілю"
|
||||||
},
|
},
|
||||||
|
"modals": {
|
||||||
|
"aria_label_close": "Закрити"
|
||||||
|
},
|
||||||
"nav": {
|
"nav": {
|
||||||
"back": "Назад",
|
"back": "Перейти назад",
|
||||||
"blocked_domains": "Заблоковані домени",
|
"blocked_domains": "Заблоковані домени",
|
||||||
"blocked_users": "Заблоковані користувачі",
|
"blocked_users": "Заблоковані користувачі",
|
||||||
"bookmarks": "Закладки",
|
"bookmarks": "Закладки",
|
||||||
"built_at": "Оновлено {0}",
|
"built_at": "Оновлено {0}",
|
||||||
"compose": "Написати",
|
"compose": "Написати",
|
||||||
"conversations": "Розмови",
|
"conversations": "Розмови",
|
||||||
|
"docs": "Документація",
|
||||||
"explore": "Огляд",
|
"explore": "Огляд",
|
||||||
"favourites": "Вподобане",
|
"favourites": "Уподобане",
|
||||||
"federated": "Глобальна стрічка",
|
"federated": "Ґлобальна",
|
||||||
"hashtags": "Хештеґи",
|
"hashtags": "Гаштаґи",
|
||||||
"home": "Головна",
|
"home": "Головна",
|
||||||
"list": "Список",
|
"list": "Список",
|
||||||
"lists": "Списки",
|
"lists": "Списки",
|
||||||
"local": "Локальна стрічка",
|
"local": "Локальна",
|
||||||
"muted_users": "Приховані користувачі",
|
"more_menu": "Додаткове меню",
|
||||||
|
"muted_users": "Іґноровані користувачі",
|
||||||
"notifications": "Сповіщення",
|
"notifications": "Сповіщення",
|
||||||
"privacy": "Конфіденційність",
|
"privacy": "Конфіденційність",
|
||||||
"profile": "Профіль",
|
"profile": "Профіль",
|
||||||
"search": "Пошук",
|
"search": "Пошук",
|
||||||
"select_feature_flags": "Налаштування функцій",
|
"select_feature_flags": "Перемикнути параметри",
|
||||||
"select_font_size": "Вибрати розмір шрифту",
|
"select_font_size": "Розмір шрифту",
|
||||||
"select_language": "Вибрати мову",
|
"select_language": "Відображати мову",
|
||||||
"settings": "Налаштування",
|
"settings": "Налаштування",
|
||||||
"show_intro": "Показати інтро",
|
"show_intro": "Показати вступ",
|
||||||
"toggle_theme": "Змінити тему",
|
"toggle_theme": "Перемикнути тему",
|
||||||
"zen_mode": "Zen-режим"
|
"zen_mode": "Zen режим"
|
||||||
},
|
},
|
||||||
"notification": {
|
"notification": {
|
||||||
"favourited_post": "вподобав ваший допис",
|
"favourited_post": "уподобали допис",
|
||||||
"followed_you": "підписались на вас",
|
"followed_you": "підписалися на вас",
|
||||||
"followed_you_count": "{0} людей підписалися на вас|{0} людина підписалися на вас|{0} людини підписалися на вас|{0} людей підписалися на вас",
|
"followed_you_count": "{0} підписалися на вас",
|
||||||
"missing_type": "ВІДСУТНІЙ notification.type:",
|
"missing_type": "ВІДСУТНІЙ notification.type:",
|
||||||
"reblogged_post": "поширили ваш допис",
|
"reblogged_post": "поширили допис",
|
||||||
"request_to_follow": "попросили підписатися на вас",
|
"reported": "{0} поскаржилися на {1}",
|
||||||
"signed_up": "зареєструвалися",
|
"request_to_follow": "запитали підписку на вас",
|
||||||
"update_status": "оновили свій допис"
|
"signed_up": "долучилися",
|
||||||
|
"update_status": "оновили допис"
|
||||||
},
|
},
|
||||||
"placeholder": {
|
"placeholder": {
|
||||||
"content_warning": "Напишіть ваше попередження тут",
|
"content_warning": "Напишіть попередження тут",
|
||||||
"default_1": "Що у вас на думці?",
|
"default_1": "Що маєте на думці?",
|
||||||
"reply_to_account": "Відповісти {0}",
|
"reply_to_account": "Відповісти до {0}",
|
||||||
"replying": "Відповідь"
|
"replying": "Відповiдь"
|
||||||
|
},
|
||||||
|
"polls": {
|
||||||
|
"allow_multiple": "Дозволяти чисельний вибір",
|
||||||
|
"cancel": "Скасувати",
|
||||||
|
"create": "Створити опит",
|
||||||
|
"disallow_multiple": "Не дозволяти чисельний вибір",
|
||||||
|
"expiration": "Завершення опиту",
|
||||||
|
"hide_votes": "Сховати кількість голосів до завершення",
|
||||||
|
"option_placeholder": "Вибір опиту {current}/{max}",
|
||||||
|
"remove_option": "Вилучити вибір",
|
||||||
|
"settings": "Опції опиту",
|
||||||
|
"show_votes": "Завжди показувати кількість голосів"
|
||||||
},
|
},
|
||||||
"pwa": {
|
"pwa": {
|
||||||
"dismiss": "Закрити",
|
"dismiss": "Закрити",
|
||||||
|
@ -318,43 +371,90 @@
|
||||||
"update_available_short": "Оновити Elk",
|
"update_available_short": "Оновити Elk",
|
||||||
"webmanifest": {
|
"webmanifest": {
|
||||||
"canary": {
|
"canary": {
|
||||||
"description": "Спритний веб-клієнт для Mastodon (canary)",
|
"description": "Спритний вебклієнт для Mastodon (canary)",
|
||||||
"name": "Elk (canary)",
|
"name": "Elk (canary)",
|
||||||
"short_name": "Elk (canary)"
|
"short_name": "Elk (canary)"
|
||||||
},
|
},
|
||||||
"dev": {
|
"dev": {
|
||||||
"description": "Спритний веб-клієнт для Mastodon (dev)",
|
"description": "Спритний вебклієнт для Mastodon (dev)",
|
||||||
"name": "Elk (dev)",
|
"name": "Elk (dev)",
|
||||||
"short_name": "Elk (dev)"
|
"short_name": "Elk (dev)"
|
||||||
},
|
},
|
||||||
"preview": {
|
"preview": {
|
||||||
"description": "Спритний веб-клієнт для Mastodon (preview)",
|
"description": "Спритний вебклієнт для Mastodon (preview)",
|
||||||
"name": "Elk (preview)",
|
"name": "Elk (preview)",
|
||||||
"short_name": "Elk (preview)"
|
"short_name": "Elk (preview)"
|
||||||
},
|
},
|
||||||
"release": {
|
"release": {
|
||||||
"description": "Спритний веб-клієнт для Mastodon",
|
"description": "Спритний вебклієнт для Mastodon",
|
||||||
"name": "Elk",
|
"name": "Elk",
|
||||||
"short_name": "Elk"
|
"short_name": "Elk"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"report": {
|
||||||
|
"additional_comments": "Додаткові коментарі",
|
||||||
|
"another_server": "Користувач, на котрого скаржите, з іншого серверу",
|
||||||
|
"anything_else": "Чи щось ще ми повинні знати?",
|
||||||
|
"block_desc": "Більше не бачитимете дописів цього користувача. Він не зможе бачити ваші дописи чи підписатися на вас. Він зможе визначити, що він заблокований.",
|
||||||
|
"dontlike": "Не люблю це",
|
||||||
|
"dontlike_desc": "Це щось не те, що хочу бачити",
|
||||||
|
"forward": "Так, переслати скаргу до {0}",
|
||||||
|
"forward_question": "Хочeте також надіслати безіменну копію скарги на той сервер?",
|
||||||
|
"further_actions": {
|
||||||
|
"limit": {
|
||||||
|
"description": "Варіанти дій щодо того, що бачите:",
|
||||||
|
"title": "Не хочете бачити це?"
|
||||||
|
},
|
||||||
|
"report": {
|
||||||
|
"description": "Поки розглядаємо, ось що можете зробити:",
|
||||||
|
"title": "Дякуємо за скаргу, ми розглянемо"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"limiting": "Обмеження {0}",
|
||||||
|
"mute_desc": "Більше не бачитимете дописів цього користувача. Він все ще може бачити ваші дописи чи підписатися на вас. Він не зможе визначити, що він іґнорований.",
|
||||||
|
"other": "Щось інше",
|
||||||
|
"other_desc": "Проблема не підпадає під інші категорії",
|
||||||
|
"reporting": "Скарга {0}",
|
||||||
|
"select_many": "Можете вибрати все що підходить:",
|
||||||
|
"select_one": "Виберіть найкращий варіант:",
|
||||||
|
"select_posts": "Чи є якісь дописи, що підпадають під скаргу?",
|
||||||
|
"select_posts_other": "Чи є якісь інші дописи, що підпадають під скаргу?",
|
||||||
|
"spam": "Спам",
|
||||||
|
"spam_desc": "Зловмисні посилання, брехливі домовленості чи повторювані відповіді",
|
||||||
|
"submit": "Подати скаргу",
|
||||||
|
"unfollow_desc": "Більше не бачитимете дописів цього користувача в вашій головній стрічці. Все ще можете бачити дописи деінде.",
|
||||||
|
"violation": "Порушує одне чи більше правил сервера",
|
||||||
|
"whats_wrong_account": "Що не так з цим обліковим записом",
|
||||||
|
"whats_wrong_post": "Що не так з цим дописом"
|
||||||
|
},
|
||||||
"search": {
|
"search": {
|
||||||
"search_desc": "Пошук користувачів та хештеґів",
|
"search_desc": "Пошук користувачів і гаштаґів",
|
||||||
"search_empty": "Не вдалося знайти нічого, що відповідає цим пошуковим термінам"
|
"search_empty": "Не вдалося знайти нічого під ці пошукові терміни"
|
||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
"about": {
|
"about": {
|
||||||
"label": "Про нас"
|
"built_at": "Оновлено",
|
||||||
|
"label": "Про нас",
|
||||||
|
"meet_the_team": "Команда",
|
||||||
|
"sponsor_action": "Спонсорувати",
|
||||||
|
"sponsor_action_desc": "Підтримати команду розробників Elk",
|
||||||
|
"sponsors": "Спонсори",
|
||||||
|
"sponsors_body_1": "Elk існує завдяки благородному спонсоруванню і допомозі:",
|
||||||
|
"sponsors_body_2": "І всім компанійним і індивідуальним спонсоруванням Команді Elk і її членам.",
|
||||||
|
"sponsors_body_3": "Якщо ви задоволені застосунком, то можете розглянути спонсорування нам:",
|
||||||
|
"version": "Версія"
|
||||||
},
|
},
|
||||||
"account_settings": {
|
"account_settings": {
|
||||||
"description": "Відредагуйте налаштування облікового запису використовуєчи інтерфейс Mastodon",
|
"description": "Правити налаштування облікового запису через інтерфейс Mastodon",
|
||||||
"label": "Налаштування облікового запису"
|
"label": "Налаштування облікового запису"
|
||||||
},
|
},
|
||||||
"interface": {
|
"interface": {
|
||||||
"color_mode": "Кольорова тема",
|
"bottom_nav": "Нижня навіґація",
|
||||||
|
"bottom_nav_instructions": "Можете вибрати до пʼять бажаних кнопок до нижної навіґації. Мусить включати кнопку «Додаткове меню».",
|
||||||
|
"color_mode": "Кольоровий режим",
|
||||||
"dark_mode": "Темна",
|
"dark_mode": "Темна",
|
||||||
"default": " (за замовчуванням)",
|
"default": " (уставно)",
|
||||||
"font_size": "Розмір шрифта",
|
"font_size": "Розмір шрифта",
|
||||||
"label": "Інтерфейс",
|
"label": "Інтерфейс",
|
||||||
"light_mode": "Світла",
|
"light_mode": "Світла",
|
||||||
|
@ -362,16 +462,16 @@
|
||||||
"theme_color": "Колір теми"
|
"theme_color": "Колір теми"
|
||||||
},
|
},
|
||||||
"language": {
|
"language": {
|
||||||
"display_language": "Мова інтерфейсу",
|
"display_language": "Відображати мову",
|
||||||
"label": "Мова",
|
"label": "Мова",
|
||||||
"post_language": "Мова дописів",
|
"post_language": "Мова дописів",
|
||||||
"status": "Статус перекладу: {0}/{1} ({2}%)",
|
"status": "Стан перекладу: {0}/{1} ({2}%)",
|
||||||
"translations": {
|
"translations": {
|
||||||
"add": "Додати",
|
"add": "Додати",
|
||||||
"choose_language": "Виберіть мову",
|
"choose_language": "Вибрати мову",
|
||||||
"heading": "Переклад",
|
"heading": "Переклади",
|
||||||
"hide_specific": "Приховати переклад з мов",
|
"hide_specific": "Сховати окремі переклади",
|
||||||
"remove": "Видалити"
|
"remove": "Вилучити"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"notifications": {
|
"notifications": {
|
||||||
|
@ -381,214 +481,278 @@
|
||||||
},
|
},
|
||||||
"push_notifications": {
|
"push_notifications": {
|
||||||
"alerts": {
|
"alerts": {
|
||||||
"favourite": "Вподобання",
|
"favourite": "Уподобання",
|
||||||
"follow": "Нові підписники",
|
"follow": "Нові підписники",
|
||||||
"mention": "Згадки",
|
"mention": "Згадки",
|
||||||
"poll": "Опитування",
|
"poll": "Опит",
|
||||||
"reblog": "Поширення вашого допису",
|
"reblog": "Поширення",
|
||||||
"title": "Які сповіщення отримувати?"
|
"title": "Які сповіщення отримувати?"
|
||||||
},
|
},
|
||||||
"description": "Отримуйте сповіщення, навіть якщо ви не використовуєте Elk.",
|
"description": "Отримувати сповіщення навіть поза Elk.",
|
||||||
"instructions": "Не забудьте зберегти зміни за допомогою кнопки \"@:settings.notifications.push_notifications.save_settings{'\"'}!",
|
"instructions": "Нагадка: зберегти зміни кнопкою «@:settings.notifications.push_notifications.save_settings{'»'}!",
|
||||||
"label": "Налаштування push-сповіщень",
|
"label": "Налаштування push-сповіщень",
|
||||||
"policy": {
|
"policy": {
|
||||||
"all": "Від будь-кого",
|
"all": "Будь-кого",
|
||||||
"followed": "Людей, за якими я стежу",
|
"followed": "Підписок",
|
||||||
"follower": "Людей, які слідкують за мною",
|
"follower": "Підписників",
|
||||||
"none": "Ні від кого",
|
"none": "Жодного",
|
||||||
"title": "Від кого отримувати сповіщення?"
|
"title": "Від кого отримувати сповіщення?"
|
||||||
},
|
},
|
||||||
"save_settings": "Зберегти налаштування",
|
"save_settings": "Зберегти налаштування",
|
||||||
"subscription_error": {
|
"subscription_error": {
|
||||||
"clear_error": "Очистити помилку",
|
"clear_error": "Очистити помилку",
|
||||||
"permission_denied": "У дозволі відмовлено: увімкніть сповіщення у своєму браузері.",
|
"error_hint": "Можете порадитися зі списком поширених запитань, аби спробувати рішити проблему: {0}.",
|
||||||
"request_error": "Під час запиту на підписку сталася помилка. Повторіть спробу, а якщо помилка не зникне, повідомте про проблему в репозиторій Elk.",
|
"invalid_vapid_key": "Схоже, прилюдний ключ VAPID є непридатним.",
|
||||||
"title": "Не вдалося підписатися на push-сповіщення"
|
"permission_denied": "У дозволі відмовлено: треба включити сповіщення в своєму бравзері.",
|
||||||
|
"repo_link": "Репозиторій Elk на GitHub",
|
||||||
|
"request_error": "Під час запиту на підписку сталася помилка. Можете повторити спробу, якщо помилка не зникне, просимо повідомити про проблему в репозиторій Elk.",
|
||||||
|
"title": "Не вдалося підписатися на push-сповіщення",
|
||||||
|
"too_many_registrations": "Через обмеження бравзера, Elk не може користуватися сервісом push-сповіщень для чисельних облікових записів на різних серверах. Ви повинні відписатися від push-сповіщення від інших облікових записів і спробувати знову.",
|
||||||
|
"vapid_not_supported": "Ваш бравзер підтримує push-сповіщення, але, схоже, не впровадив VAPID протокол."
|
||||||
},
|
},
|
||||||
|
"title": "Налаштування push-сповіщення",
|
||||||
"undo_settings": "Скасувати зміни",
|
"undo_settings": "Скасувати зміни",
|
||||||
"unsubscribe": "Вимкнути push-сповіщення",
|
"unsubscribe": "Вимкнути push-сповіщення",
|
||||||
"unsupported": "Ваш браузер не підтримує push-сповіщення.",
|
"unsupported": "Ваш бравзер не підтримує push-сповіщення.",
|
||||||
"warning": {
|
"warning": {
|
||||||
"enable_close": "Закрити",
|
"enable_close": "Закрити",
|
||||||
"enable_description": "Щоб отримувати сповіщення, коли Elk не відкрито, увімкніть push-сповіщення. Ви можете контролювати, які саме типи сповіщень генерують push-повідомлення, за допомогою кнопки \"@:settings.notifications.show_btn{'\"'} після ввімкнення.",
|
"enable_description": "Push-сповіщення надають змогу отримувати сповіщення при невідкритому Elk. Після ввімкнення їх можете указати які види взаємодій створюють вони за кнопкою «@:settings.notifications.show_btn{'»'} .",
|
||||||
"enable_desktop": "Увімкнути push-повідомлення",
|
"enable_description_desktop": "Push-сповіщення надають змогу отримувати сповіщення при невідкритому Elk. Після ввімкнення їх можете указати які види взаємодій створюють вони в «Налаштування > Сповіщення > Налаштування push-сповіщення».",
|
||||||
|
"enable_description_mobile": "Налаштування також доступне за навіґаційним меню «Налаштування > Сповіщення > Налаштування push-сповіщення».",
|
||||||
|
"enable_description_settings": "Push-сповіщення надають змогу отримувати сповіщення при невідкритому Elk. Після ввімкнення їх тут зможете указати які види взаємодій створюють вони.",
|
||||||
|
"enable_desktop": "Ввімкнути push-сповіщення",
|
||||||
"enable_title": "Ніколи нічого не пропускайте",
|
"enable_title": "Ніколи нічого не пропускайте",
|
||||||
"re_auth": "Здається, ваш сервер не підтримує push-повідомлення. Спробуйте вийти та увійти знову, якщо це повідомлення все одно з’являється, зверніться до адміністратора свого сервера."
|
"re_auth": "Здається, ваш сервер не підтримує push-сповіщення. Спробуйте вийти і ввійти знову, якщо це повідомлення однаково з’являється, варто звернутися до адміністратора сервера."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"show_btn": "Перейти до налаштувань сповіщень"
|
"show_btn": "Перейти до налаштувань сповіщень",
|
||||||
|
"under_construction": "Під розробкою"
|
||||||
},
|
},
|
||||||
"notifications_settings": "Сповіщення",
|
"notifications_settings": "Сповіщення",
|
||||||
"preferences": {
|
"preferences": {
|
||||||
"embedded_media": "Вбудований медіаплеєр",
|
"embedded_media": "Вбудований медіаплеєр",
|
||||||
"embedded_media_description": "Відображати вбудований медіаплеєр замість картки, коли допис містить посилання на медіа.",
|
"embedded_media_description": "Відображати вбудований медіаплеєр замість картки в дописі з посиланням на медіа.",
|
||||||
"enable_autoplay": "Увімкнути автовідтворення",
|
"enable_autoplay": "Ввімкнути автовідтворення",
|
||||||
"enable_data_saving": "Увімкнути економію трафіку",
|
"enable_data_saving": "Ввімкнути заощадження трафіку",
|
||||||
"enable_data_saving_description": "Економте трафік, відключивши автоматичне завантаження вкладень.",
|
"enable_data_saving_description": "Заощаджити трафік через запобігання автозавантаження вкладень.",
|
||||||
"github_cards": "Картки GitHub",
|
"github_cards": "Картки GitHub",
|
||||||
"grayscale_mode": "Режим відтінків сірого",
|
"github_cards_description": "Посилання в дописі на GitHub створює доступну HTML картку з соціальним метаґрафом замість соціального зображення.",
|
||||||
"hide_account_hover_card": "Не відображати картку при наведенні на обліковий запис",
|
"grayscale_mode": "Сіротонний режим",
|
||||||
"hide_alt_indi_on_posts": "Приховати індикатор альтернативного тексту у дописах",
|
"hide_account_hover_card": "Сховати картку при наведенні на обліковий запис",
|
||||||
"hide_boost_count": "Приховати кількість поширень",
|
"hide_alt_indi_on_posts": "Сховати ALT-покажчик в дописах",
|
||||||
"hide_favorite_count": "Приховати кількість вподобань",
|
"hide_boost_count": "Сховати кількість поширень",
|
||||||
"hide_follower_count": "Приховати кількість підписок/підписників",
|
"hide_favorite_count": "Сховати кількість уподобань",
|
||||||
"hide_news": "Приховати новини",
|
"hide_follower_count": "Сховати кількість підписок/підписників",
|
||||||
"hide_reply_count": "Приховати кількість відповідей",
|
"hide_gif_indi_on_posts": "Сховати GIF-покажчик в дописах",
|
||||||
"hide_tag_hover_card": "Не відображати картку при наведенні на хештеґ",
|
"hide_news": "Сховати новини",
|
||||||
"hide_translation": "Приховати переклад",
|
"hide_reply_count": "Сховати кількість відповідей",
|
||||||
"hide_username_emojis": "Приховати емодзі в іменах користувачів",
|
"hide_tag_hover_card": "Сховати картку при наведенні на гаштаґ",
|
||||||
"hide_username_emojis_description": "Приховати емодзі в іменах користувачів у стрічках дописів. \nЕмодзі все одно відображатимуться на сторінках профілів.",
|
"hide_translation": "Сховати переклад",
|
||||||
|
"hide_username_emojis": "Сховати емоджі в назвах користувачів",
|
||||||
|
"hide_username_emojis_description": "Сховати емоджі в назвах користувачів в стрічках дописів. \nЕмоджі все ще відображатимуться на сторінках профілів.",
|
||||||
"label": "Налаштування",
|
"label": "Налаштування",
|
||||||
"optimize_for_low_performance_device": "Оптимізувати для низькопродуктивних пристроїв",
|
"optimize_for_low_performance_device": "Оптимізувати для низькопродуктивних пристроїв",
|
||||||
"title": "Експериментальні налаштування",
|
"title": "Дослідні налаштування",
|
||||||
"use_star_favorite_icon": "Використовувати піктограму \"зірка\" для вподобань",
|
"use_star_favorite_icon": "Використовувати іконку «зірка» для уподобань",
|
||||||
"user_picker": "Перемикач облікових записів",
|
"user_picker": "Перемикач облікових записів",
|
||||||
"user_picker_description": "Відображати аватари ваших облікових записів у нижньому лівому куті, щоб ви могли швидко перемикатися між ними.",
|
"user_picker_description": "Відображати аватари ваших облікових записів в нижньолівому куті для швидкого перемикатися між ними.",
|
||||||
"virtual_scroll": "Віртуальний список",
|
"virtual_scroll": "Віртуальний список",
|
||||||
"virtual_scroll_description": "Використовувати віртуальний список у стрічках дописів. Це дозволяє відображати більшу кількість елементів без втрати продуктивності.",
|
"virtual_scroll_description": "Використовувати віртуальний список в стрічках дописів. Це дозволяє відображати більшу кількість елементів без втрати продуктивності.",
|
||||||
"zen_mode": "Дзен режим",
|
"wellbeing": "Благополуччя",
|
||||||
"zen_mode_description": "Приховати бокові панелі, якщо на них не наведено курсор миші. \nТакож приховує деякі елементи у стрічці дописів."
|
"zen_mode": "Zen режим",
|
||||||
|
"zen_mode_description": "Сховати бічні панелі, якщо на них не наведено курсор миші. \nТакож приховує деякі елементи в стрічці дописів."
|
||||||
},
|
},
|
||||||
"profile": {
|
"profile": {
|
||||||
"appearance": {
|
"appearance": {
|
||||||
"bio": "Про Вас",
|
"bio": "Про вас",
|
||||||
"description": "Редагувати аватар, ім'я, профіль, тощо.",
|
"description": "Правити аватар, назву, профіль тощо.",
|
||||||
"display_name": "Ім'я",
|
"display_name": "Відображати назву",
|
||||||
"label": "Вигляд",
|
"label": "Вигляд",
|
||||||
"profile_metadata": "Метадані профілю",
|
"profile_metadata": "Метадані профілю",
|
||||||
"profile_metadata_desc": "У вашому профілі можна відображати до 4 елементів у вигляді таблиці",
|
"profile_metadata_desc": "Можете відобразити до {0} елементів як таблицю в профілі",
|
||||||
"title": "Редагувати профіль"
|
"profile_metadata_label": "Ярлик",
|
||||||
|
"profile_metadata_value": "Вміст",
|
||||||
|
"title": "Правити профіль"
|
||||||
},
|
},
|
||||||
"featured_tags": {
|
"featured_tags": {
|
||||||
"description": "Користувачі можуть фільтрувати ваші загальнодоступні дописи за цими хештеґами.",
|
"description": "Ваші прилюдні дописи можуть бути проглянуті за цими гаштаґами.",
|
||||||
"label": "Рекомендовані хештеґи"
|
"label": "Рекомендовані гаштаґи",
|
||||||
|
"under_construction": "Під розробкою"
|
||||||
},
|
},
|
||||||
"label": "Профіль"
|
"label": "Профіль"
|
||||||
},
|
},
|
||||||
"select_a_settings": "Виберіть налаштування",
|
"select_a_settings": "Вибрати налаштування",
|
||||||
"users": {
|
"users": {
|
||||||
"export": "Експортувати токени користувачів",
|
"export": "Винести токени користувачів",
|
||||||
"import": "Імпортувати токени користувачів",
|
"import": "Внести токени користувачів",
|
||||||
"label": "Користувачі"
|
"label": "Користувачі"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"share_target": {
|
||||||
|
"description": "Можна підлаштувати Elk, тож можете ділитися контентом з інших застосунків лише встановивши Elk на вашому пристрої чи компʼютері і ввійшовши.",
|
||||||
|
"hint": "Щоби поширити контент з Elk, Elk мусть бути встановленим, а ви мусите бути ввійденим.",
|
||||||
|
"title": "Поділитися з Elk"
|
||||||
|
},
|
||||||
"state": {
|
"state": {
|
||||||
"attachments_exceed_server_limit": "Кількість вкладених файлів перевищила ліміт на допис.",
|
"attachments_exceed_server_limit": "Кількість вкладених файлів на допис перевищено.",
|
||||||
"attachments_limit_error": "Перевищено максимальну кількість вкладень",
|
"attachments_limit_audio_error": "Перевищено маскимальний розмір авдіо: {0}",
|
||||||
"edited": "(Відредаговано)",
|
"attachments_limit_error": "Перевищено максимальну кількість вкладень: {0}",
|
||||||
"editing": "Редагування",
|
"attachments_limit_image_error": "Перевищено маскимальний розмір зображення: {0}",
|
||||||
|
"attachments_limit_unknown_error": "Перевищено маскимальний розмір файла: {0}",
|
||||||
|
"attachments_limit_video_error": "Перевищено маскимальний розмір відео: {0}",
|
||||||
|
"edited": "(Виправлено)",
|
||||||
|
"editing": "Виправлення",
|
||||||
"loading": "Завантаження...",
|
"loading": "Завантаження...",
|
||||||
|
"publish_failed": "Помилка оприлюднення",
|
||||||
|
"publishing": "Оприлюднення",
|
||||||
|
"save_failed": "Помилка збереження",
|
||||||
"upload_failed": "Помилка завантаження",
|
"upload_failed": "Помилка завантаження",
|
||||||
"uploading": "Завантаження..."
|
"uploading": "Завантаження..."
|
||||||
},
|
},
|
||||||
"status": {
|
"status": {
|
||||||
"edited": "Редаговано {0}",
|
"account": {
|
||||||
"filter_hidden_phrase": "Відфільтровано",
|
"suspended_message": "Обліковий запис цього допису заморожений.",
|
||||||
|
"suspended_show": "Все одно показати допис?"
|
||||||
|
},
|
||||||
|
"boosted_by": "Поширено від",
|
||||||
|
"edited": "Виправлено {0}",
|
||||||
|
"embedded_warning": "Програвання цього може розкрити ваш IP-адрес іншим.",
|
||||||
|
"favourited_by": "Уподобано від",
|
||||||
|
"filter_hidden_phrase": "Відфільтровано від",
|
||||||
"filter_show_anyway": "Показати все одно",
|
"filter_show_anyway": "Показати все одно",
|
||||||
|
"gif": "GIF",
|
||||||
"img_alt": {
|
"img_alt": {
|
||||||
"desc": "Опис зображення",
|
"ALT": "ALT",
|
||||||
"dismiss": "Закрити"
|
"desc": "Опис",
|
||||||
|
"dismiss": "Закрити",
|
||||||
|
"read": "Читати {0} опис"
|
||||||
},
|
},
|
||||||
"poll": {
|
"poll": {
|
||||||
"count": "{0} голосів|{0} голос|{0} голоси|{0} голосів",
|
"count": "{0} голосів|{0} голос|{0} голоси|{0} голосів",
|
||||||
"ends": "завершується {0}",
|
"ends": "завершується {0}",
|
||||||
"finished": "зевершилось {0}"
|
"finished": "зевершилось {0}"
|
||||||
},
|
},
|
||||||
"replying_to": "Відповідає {0}",
|
"replying_to": "Відповідь до {0}",
|
||||||
"show_full_thread": "Показати потік дописів",
|
"show_full_thread": "Показати ряд дописів",
|
||||||
"someone": "комусь",
|
"someone": "когось",
|
||||||
|
"spoiler_media_hidden": "Медіа приховано",
|
||||||
"spoiler_show_less": "Показувати менше",
|
"spoiler_show_less": "Показувати менше",
|
||||||
"spoiler_show_more": "Показати більше",
|
"spoiler_show_more": "Показати більше",
|
||||||
"try_original_site": "Спробуйте оригінальний сайт"
|
"thread": "Ряд дописів",
|
||||||
|
"try_original_site": "Спробувати ориґінальний сайт"
|
||||||
},
|
},
|
||||||
"status_history": {
|
"status_history": {
|
||||||
"created": "створено {0}",
|
"created": "створено {0}",
|
||||||
"edited": "редаговано {0}"
|
"edited": "виправлено {0}"
|
||||||
},
|
},
|
||||||
"tab": {
|
"tab": {
|
||||||
|
"accounts": "Облікові записи",
|
||||||
"for_you": "Для вас",
|
"for_you": "Для вас",
|
||||||
"hashtags": "Хештеґи",
|
"hashtags": "Гаштаґи",
|
||||||
|
"list": "Список",
|
||||||
"media": "Медіа",
|
"media": "Медіа",
|
||||||
"news": "Новини",
|
"news": "Новини",
|
||||||
"notifications_all": "Усі",
|
"notifications_admin": {
|
||||||
|
"report": "Скагра",
|
||||||
|
"sign_up": "Долучення"
|
||||||
|
},
|
||||||
|
"notifications_all": "Всі",
|
||||||
|
"notifications_favourite": "Уподобані",
|
||||||
|
"notifications_follow": "Підписки",
|
||||||
|
"notifications_follow_request": "Запит підписки",
|
||||||
"notifications_mention": "Згадки",
|
"notifications_mention": "Згадки",
|
||||||
|
"notifications_more_tooltip": "Фільтрувати сповіщення за типом",
|
||||||
|
"notifications_poll": "Опити",
|
||||||
|
"notifications_reblog": "Поширення",
|
||||||
|
"notifications_status": "Статуси",
|
||||||
|
"notifications_update": "Оновлення",
|
||||||
"posts": "Дописи",
|
"posts": "Дописи",
|
||||||
"posts_with_replies": "Дописи та відповіді"
|
"posts_with_replies": "Дописи і відповіді"
|
||||||
},
|
},
|
||||||
"tag": {
|
"tag": {
|
||||||
"follow": "Стежити",
|
"follow": "Підписатися",
|
||||||
"follow_label": "Стежити за хештеґом {0}",
|
"follow_label": "Підписатися на гаштаґ {0}",
|
||||||
"unfollow": "Не стежити",
|
"unfollow": "Відписатися",
|
||||||
"unfollow_label": "Не стежити за хештеґом {0}"
|
"unfollow_label": "Відписатися від гаштаґа {0}"
|
||||||
},
|
},
|
||||||
"time_ago_options": {
|
"time_ago_options": {
|
||||||
"day_future": "через {n} днів|через {n} день|через {n} дні|через {n} днів",
|
"day_future": "через {n} днів|через {n} день|через {n} дні|через {n} днів",
|
||||||
"day_past": "{n} днів томо|{n} день тому|{n} дні тому|{n} днів тому",
|
"day_past": "{n} днів тому|{n} день тому|{n} дні тому|{n} днів тому",
|
||||||
"hour_future": "через {n} годин|через {n} годину|через {n} години|через {n} годин",
|
"hour_future": "через {n} годин|через {n} годину|через {n} години|через {n} годин",
|
||||||
"hour_past": "{n} годин тому|{n} годину тому|{n} години тому|{n} годин тому",
|
"hour_past": "{n} годин тому|{n} годину тому|{n} години тому|{n} годин тому",
|
||||||
"just_now": "тільки що",
|
"just_now": "щойно",
|
||||||
"minute_future": "через {n} хвилин|через {n} хвилину|через {n} хвилини|через {n} хвилин",
|
"minute_future": "через {n} хвилин|через {n} хвилину|через {n} хвилини|через {n} хвилин",
|
||||||
"minute_past": "{n} хвилин тому|{n} хвилину тому|{n} хвилини тому|{n} хвилин тому",
|
"minute_past": "{n} хвилин тому|{n} хвилину тому|{n} хвилини тому|{n} хвилин тому",
|
||||||
"month_future": "через {n} місяців|через {n} місяць|через {n} місяці|через {n} місяців",
|
"month_future": "через {n} місяців|через {n} місяць|через {n} місяці|через {n} місяців",
|
||||||
"month_past": "{n} місяців тому|{n} місяць тому|{n} місяці тому|{n} місяців тому",
|
"month_past": "{n} місяців тому|{n} місяць тому|{n} місяці тому|{n} місяців тому",
|
||||||
"second_future": "тільки що|через {n} секунду|через {n} секунди|через {n} секунд",
|
"second_future": "щойно|через {n} секунду|через {n} секунди|через {n} секунд",
|
||||||
"second_past": "тільки що|{n} секунду тому|{n} секунди тому|{n} секунд тому",
|
"second_past": "щойно|{n} секунду тому|{n} секунди тому|{n} секунд тому",
|
||||||
"short_day_future": "через {n}дн",
|
"short_day_future": "через {n} д",
|
||||||
"short_day_past": "{n}дн",
|
"short_day_past": "{n} д",
|
||||||
"short_hour_future": "через {n}год",
|
"short_hour_future": "через {n} г",
|
||||||
"short_hour_past": "{n}год",
|
"short_hour_past": "{n} г",
|
||||||
"short_minute_future": "через {n}хв",
|
"short_minute_future": "через {n} хв",
|
||||||
"short_minute_past": "{n}хв",
|
"short_minute_past": "{n} хв",
|
||||||
"short_month_future": "через {n}міс",
|
"short_month_future": "через {n} м",
|
||||||
"short_month_past": "{n}міс",
|
"short_month_past": "{n} м",
|
||||||
"short_second_future": "через {n}сек",
|
"short_second_future": "через {n} с",
|
||||||
"short_second_past": "{n}сек",
|
"short_second_past": "{n} с",
|
||||||
"short_week_future": "через {n}тиж",
|
"short_week_future": "через {n} т",
|
||||||
"short_week_past": "{n}тиж",
|
"short_week_past": "{n} т",
|
||||||
"short_year_future": "через {n}р",
|
"short_year_future": "через {n} р",
|
||||||
"short_year_past": "{n}р",
|
"short_year_past": "{n} р",
|
||||||
"week_future": "через {n} тижнів|через {n} тиждень|через {n} тижні|через {n} тижнів",
|
"week_future": "через {n} тижнів|через {n} тиждень|через {n} тижні|через {n} тижнів",
|
||||||
"week_past": "{n} тижнів тому|{n} тиждень тому|{n} тижні тому|{n} тижнів тому",
|
"week_past": "{n} тижнів тому|{n} тиждень тому|{n} тижні тому|{n} тижнів тому",
|
||||||
"year_future": "через {n} років|через {n} рік|через {n} роки|через {n} років",
|
"year_future": "через {n} років|через {n} рік|через {n} роки|через {n} років",
|
||||||
"year_past": "{n} років тому|{n} рік тому|{n} роки тому|{n} років тому"
|
"year_past": "{n} років тому|{n} рік тому|{n} роки тому|{n} років тому"
|
||||||
},
|
},
|
||||||
"timeline": {
|
"timeline": {
|
||||||
"show_new_items": "Показати {v} нових дописів|Показати {v} новий допис|Показати {v} нових дописи|Показати {v} нових дописів",
|
"show_new_items": "Показати {v} нових дописів|Показати {v} новий допис|Показати {v} нових дописів|Показати {v} нових дописів",
|
||||||
"view_older_posts": "Старіші дописи з інших серверів можуть не відображатися."
|
"view_older_posts": "Старіші дописи з інших серверів можуть не відображатися."
|
||||||
},
|
},
|
||||||
"title": {
|
"title": {
|
||||||
"federated_timeline": "Глобальна стрічка",
|
"federated_timeline": "Ґлобальна стрічка",
|
||||||
"local_timeline": "Локальна стрічка"
|
"local_timeline": "Локальна стрічка"
|
||||||
},
|
},
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"add_content_warning": "Додати попередження про вміст",
|
"add_content_warning": "Додати попередження про вміст",
|
||||||
"add_media": "Додати зображення, відео або аудіо",
|
"add_emojis": "Додати емоджі",
|
||||||
|
"add_media": "Додати зображення, відео або авдіо",
|
||||||
|
"add_publishable_content": "Варто додати вміст для оприлюднення",
|
||||||
|
"add_thread_item": "Додати допис до ряду",
|
||||||
"change_content_visibility": "Змінити видимість вмісту",
|
"change_content_visibility": "Змінити видимість вмісту",
|
||||||
"change_language": "Змінити мову",
|
"change_language": "Змінити мову",
|
||||||
"emoji": "Емодзі",
|
"emoji": "Емоджі",
|
||||||
"explore_links_intro": "Ці новини розповідають історії про людей на цих та інших серверах децентралізованої мережі прямо зараз.",
|
"explore_links_intro": "Прямо зараз на цьому і інших серверах децентралізованої мережі обговорюють ці новини.",
|
||||||
"explore_posts_intro": "Ці дописи з цього та інших серверів децентралізованої мережі зараз набирають популярності на цьому сервері.",
|
"explore_posts_intro": "Прямо зараз на цьому і інших серверах децентралізованої мережі розходяться ці дописи.",
|
||||||
"explore_tags_intro": "Ці хештеґи зараз набирають популярності серед людей на цьому та інших серверах децентралізованої мережі.",
|
"explore_tags_intro": "Прямо зараз на цьому і інших серверах децентралізованої мережі розходяться ці гаштаґи",
|
||||||
"toggle_code_block": "Блок коду"
|
"open_editor_tools": "Інструменти редактора",
|
||||||
|
"pick_an_icon": "Підібрати іконку",
|
||||||
|
"publish_failed": "Закрити повідомлення помилок нагорі редактора для переоприлюднення дописів",
|
||||||
|
"remove_thread_item": "Вилучити допис з ряду",
|
||||||
|
"start_thread": "Запустити ряд дописів",
|
||||||
|
"toggle_bold": "Жирний",
|
||||||
|
"toggle_code_block": "Блок коду",
|
||||||
|
"toggle_italic": "Курсив"
|
||||||
},
|
},
|
||||||
"user": {
|
"user": {
|
||||||
"add_existing": "Додати аккаунт",
|
"add_existing": "Додати наявний обліковий запис",
|
||||||
"server_address_label": "Адреса серверу Mastodon",
|
"server_address_label": "Адреса серверу Mastodon",
|
||||||
"sign_in_desc": "Увійдіть, щоб стежити за профілями або хештеґами, додавати до обраного, ділитися дописами та відповідати на них, або взаємодіяти з вашого аккаунту на іншому сервері.",
|
"sign_in_desc": "Ввійти, аби підписатися на профілі або гаштаґи; уподобувати, відповідати на і ділитися з кимось дописи, або взаємодіяти з вашого облікового запису на іншому сервері.",
|
||||||
"sign_in_notice_title": "Перегляд публічних даних {0}",
|
"sign_in_notice_title": "Перегляд прилюдних даних {0}",
|
||||||
"sign_out_account": "Вийти з {0}",
|
"sign_out_account": "Вийти з {0}",
|
||||||
"single_instance_sign_in_desc": "Увійдіть, щоб стежити за профілями чи хештеґами, додавати до обраного, ділитися дописами та відповідати на них.",
|
"single_instance_sign_in_desc": "Ввійти, аби підписатися на профілі або гаштаґи; уподобувати, відповідати на і ділитися з кимось дописи.",
|
||||||
"tip_no_account": "Якщо у вас ще немає аккаунту Mastodon, {0}.",
|
"tip_no_account": "Якщо не маєте облікового Mastodon запису, {0}.",
|
||||||
"tip_register_account": "оберіть сервер і зареєструйтесь"
|
"tip_register_account": "то можете підібрати сервер і долучитися"
|
||||||
},
|
},
|
||||||
"visibility": {
|
"visibility": {
|
||||||
"direct": "Лише згадані користувачі",
|
"direct": "Прямий",
|
||||||
"direct_desc": "Показати лише згаданим користувачам",
|
"direct_desc": "Видимий лише згаданим користувачам",
|
||||||
"private": "Тільки для підписників",
|
"private": "Лише підписникам",
|
||||||
"private_desc": "Показати лише підписникам",
|
"private_desc": "Видимий лише підписникам",
|
||||||
"public": "Публічно",
|
"public": "Прилюдний",
|
||||||
"public_desc": "Видимий для всіх",
|
"public_desc": "Видимий всім",
|
||||||
"unlisted": "Прихований",
|
"unlisted": "Прихований",
|
||||||
"unlisted_desc": "Видимий для всіх, але не через можливості виявлення"
|
"unlisted_desc": "Видимий всім, але не в прилюдних стрічках"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
"go_to_profile": "Xem hồ sơ",
|
"go_to_profile": "Xem hồ sơ",
|
||||||
"joined": "Đã tham gia",
|
"joined": "Đã tham gia",
|
||||||
"lock": "KHÓA",
|
"lock": "KHÓA",
|
||||||
"moved_title": "cho hay địa chỉ mới của họ bây giờ là:",
|
"moved_title": "đã chuyển sang địa chỉ mới:",
|
||||||
"muted_users": "Người đã ẩn",
|
"muted_users": "Người đã ẩn",
|
||||||
"muting": "Đã ẩn",
|
"muting": "Đã ẩn",
|
||||||
"mutuals": "Theo dõi nhau",
|
"mutuals": "Theo dõi nhau",
|
||||||
|
@ -73,6 +73,7 @@
|
||||||
"favourited": "Đã thích",
|
"favourited": "Đã thích",
|
||||||
"more": "Xem thêm",
|
"more": "Xem thêm",
|
||||||
"next": "Kế tiếp",
|
"next": "Kế tiếp",
|
||||||
|
"open_image_preview_dialog": "Mở hộp thoại xem trước hình ảnh",
|
||||||
"prev": "Trước đó",
|
"prev": "Trước đó",
|
||||||
"publish": "Đăng",
|
"publish": "Đăng",
|
||||||
"publish_thread": "Đăng chuỗi tút",
|
"publish_thread": "Đăng chuỗi tút",
|
||||||
|
@ -186,7 +187,7 @@
|
||||||
"account_not_found": "Không tìm thấy {0}",
|
"account_not_found": "Không tìm thấy {0}",
|
||||||
"explore_list_empty": "Chưa có xu hướng. Hãy quay lại sau!",
|
"explore_list_empty": "Chưa có xu hướng. Hãy quay lại sau!",
|
||||||
"file_size_cannot_exceed_n_mb": "Dung lượng file tối đa {0}MB",
|
"file_size_cannot_exceed_n_mb": "Dung lượng file tối đa {0}MB",
|
||||||
"sign_in_error": "Không thể kết nối tới máy chủ.",
|
"sign_in_error": "Không thể kết nối đến máy chủ.",
|
||||||
"status_not_found": "Không tìm thấy tút",
|
"status_not_found": "Không tìm thấy tút",
|
||||||
"unsupported_file_format": "Định dạng file không được hỗ trợ"
|
"unsupported_file_format": "Định dạng file không được hỗ trợ"
|
||||||
},
|
},
|
||||||
|
@ -246,7 +247,7 @@
|
||||||
"go_to_bookmarks": "Tút đã lưu",
|
"go_to_bookmarks": "Tút đã lưu",
|
||||||
"go_to_conversations": "Nhắn riêng",
|
"go_to_conversations": "Nhắn riêng",
|
||||||
"go_to_explore": "Khám phá",
|
"go_to_explore": "Khám phá",
|
||||||
"go_to_favourites": "Lượt thích",
|
"go_to_favourites": "Đã thích",
|
||||||
"go_to_federated": "Liên hợp",
|
"go_to_federated": "Liên hợp",
|
||||||
"go_to_home": "Trang chủ",
|
"go_to_home": "Trang chủ",
|
||||||
"go_to_lists": "Danh sách",
|
"go_to_lists": "Danh sách",
|
||||||
|
@ -305,13 +306,13 @@
|
||||||
"back": "Quay về",
|
"back": "Quay về",
|
||||||
"blocked_domains": "Máy chủ đã chặn",
|
"blocked_domains": "Máy chủ đã chặn",
|
||||||
"blocked_users": "Người đã chặn",
|
"blocked_users": "Người đã chặn",
|
||||||
"bookmarks": "Tút đã lưu",
|
"bookmarks": "Đã lưu",
|
||||||
"built_at": "Bản dựng {0}",
|
"built_at": "Bản dựng {0}",
|
||||||
"compose": "Soạn tút",
|
"compose": "Soạn tút",
|
||||||
"conversations": "Nhắn riêng",
|
"conversations": "Nhắn riêng",
|
||||||
"docs": "Tài liệu",
|
"docs": "Tài liệu",
|
||||||
"explore": "Khám phá",
|
"explore": "Khám phá",
|
||||||
"favourites": "Lượt thích",
|
"favourites": "Đã thích",
|
||||||
"federated": "Liên hợp",
|
"federated": "Liên hợp",
|
||||||
"hashtags": "Hashtag",
|
"hashtags": "Hashtag",
|
||||||
"home": "Trang chủ",
|
"home": "Trang chủ",
|
||||||
|
@ -345,8 +346,8 @@
|
||||||
},
|
},
|
||||||
"placeholder": {
|
"placeholder": {
|
||||||
"content_warning": "Viết cảnh báo của bạn ở đây",
|
"content_warning": "Viết cảnh báo của bạn ở đây",
|
||||||
"default_1": "Bạn đang nghĩ gì vậy?",
|
"default_1": "Bạn đang nghĩ gì đó?",
|
||||||
"reply_to_account": "Trả lời {0}",
|
"reply_to_account": "Trả lời đến {0}",
|
||||||
"replying": "Trả lời"
|
"replying": "Trả lời"
|
||||||
},
|
},
|
||||||
"polls": {
|
"polls": {
|
||||||
|
@ -355,7 +356,7 @@
|
||||||
"create": "Tạo bình chọn",
|
"create": "Tạo bình chọn",
|
||||||
"disallow_multiple": "Chỉ chọn một lựa chọn",
|
"disallow_multiple": "Chỉ chọn một lựa chọn",
|
||||||
"expiration": "Hết hạn",
|
"expiration": "Hết hạn",
|
||||||
"hide_votes": "Ẩn số lượt bình chọn cho tới khi hết hạn",
|
"hide_votes": "Ẩn số lượt bình chọn đến khi hết hạn",
|
||||||
"option_placeholder": "Lựa chọn {current}/{max}",
|
"option_placeholder": "Lựa chọn {current}/{max}",
|
||||||
"remove_option": "Xóa lựa chọn",
|
"remove_option": "Xóa lựa chọn",
|
||||||
"settings": "Tùy chọn",
|
"settings": "Tùy chọn",
|
||||||
|
@ -402,8 +403,8 @@
|
||||||
"block_desc": "Bạn sẽ không còn thấy tút của người này. Họ sẽ không thể thấy tút của bạn hoặc theo dõi bạn. Họ biết là bạn đã chặn họ.",
|
"block_desc": "Bạn sẽ không còn thấy tút của người này. Họ sẽ không thể thấy tút của bạn hoặc theo dõi bạn. Họ biết là bạn đã chặn họ.",
|
||||||
"dontlike": "Tôi không thích nó",
|
"dontlike": "Tôi không thích nó",
|
||||||
"dontlike_desc": "Đó không phải là thứ gì mà bạn muốn thấy",
|
"dontlike_desc": "Đó không phải là thứ gì mà bạn muốn thấy",
|
||||||
"forward": "Gửi luôn báo cáo tới {0}",
|
"forward": "Gửi luôn báo cáo đến {0}",
|
||||||
"forward_question": "Bạn có chắc muốn gửi luôn báo cáo tới máy chủ của người này?",
|
"forward_question": "Bạn có chắc muốn gửi luôn báo cáo đến máy chủ của người này?",
|
||||||
"further_actions": {
|
"further_actions": {
|
||||||
"limit": {
|
"limit": {
|
||||||
"description": "Đây là cách kiểm soát những thứ mà bạn thấy:",
|
"description": "Đây là cách kiểm soát những thứ mà bạn thấy:",
|
||||||
|
@ -441,7 +442,7 @@
|
||||||
"label": "Giới thiệu",
|
"label": "Giới thiệu",
|
||||||
"meet_the_team": "Đội ngũ",
|
"meet_the_team": "Đội ngũ",
|
||||||
"sponsor_action": "Tài trợ",
|
"sponsor_action": "Tài trợ",
|
||||||
"sponsor_action_desc": "Hỗ trợ đội ngũ phát triển Elk",
|
"sponsor_action_desc": "Ủng hộ đội ngũ phát triển Elk",
|
||||||
"sponsors": "Nhà tài trợ",
|
"sponsors": "Nhà tài trợ",
|
||||||
"sponsors_body_1": "Elk được thực hiện nhờ sự tài trợ và giúp đỡ hào phóng của:",
|
"sponsors_body_1": "Elk được thực hiện nhờ sự tài trợ và giúp đỡ hào phóng của:",
|
||||||
"sponsors_body_2": "Và tất cả các công ty, cá nhân tài trợ cho đội ngũ Elk.",
|
"sponsors_body_2": "Và tất cả các công ty, cá nhân tài trợ cho đội ngũ Elk.",
|
||||||
|
@ -493,7 +494,7 @@
|
||||||
"title": "Bạn muốn nhận những kiểu thông báo nào?"
|
"title": "Bạn muốn nhận những kiểu thông báo nào?"
|
||||||
},
|
},
|
||||||
"description": "Nhận thông báo kể cả khi bạn không sử dụng Elk.",
|
"description": "Nhận thông báo kể cả khi bạn không sử dụng Elk.",
|
||||||
"instructions": "Nhớ lưu các thay đổi của bạn bằng cách nhấn @:settings.notifications.push_notifications.save_settings !",
|
"instructions": "Nhớ @:settings.notifications.push_notifications.save_settings sau khi chọn xong!",
|
||||||
"label": "Cài đặt thông báo đẩy",
|
"label": "Cài đặt thông báo đẩy",
|
||||||
"policy": {
|
"policy": {
|
||||||
"all": "Từ bất kỳ ai",
|
"all": "Từ bất kỳ ai",
|
||||||
|
@ -550,7 +551,7 @@
|
||||||
"hide_follower_count": "Ẩn số lượt người theo dõi/đang theo dõi",
|
"hide_follower_count": "Ẩn số lượt người theo dõi/đang theo dõi",
|
||||||
"hide_gif_indi_on_posts": "Ẩn biểu tượng GIF trên tút",
|
"hide_gif_indi_on_posts": "Ẩn biểu tượng GIF trên tút",
|
||||||
"hide_news": "Ẩn tin tức",
|
"hide_news": "Ẩn tin tức",
|
||||||
"hide_reply_count": "Ẩn số lượt trả lời",
|
"hide_reply_count": "Ẩn số lượng trả lời",
|
||||||
"hide_tag_hover_card": "Ẩn xem trước hashtag",
|
"hide_tag_hover_card": "Ẩn xem trước hashtag",
|
||||||
"hide_translation": "Ẩn chức năng dịch",
|
"hide_translation": "Ẩn chức năng dịch",
|
||||||
"hide_username_emojis": "Ẩn emoji trong tên người dùng",
|
"hide_username_emojis": "Ẩn emoji trong tên người dùng",
|
||||||
|
@ -634,8 +635,8 @@
|
||||||
},
|
},
|
||||||
"poll": {
|
"poll": {
|
||||||
"count": "{0} bình chọn|{0} bình chọn|{0} bình chọn",
|
"count": "{0} bình chọn|{0} bình chọn|{0} bình chọn",
|
||||||
"ends": "kết thúc {0}",
|
"ends": "đóng {0}",
|
||||||
"finished": "hết hạn {0}"
|
"finished": "kết thúc {0}"
|
||||||
},
|
},
|
||||||
"replying_to": "Trả lời {0}",
|
"replying_to": "Trả lời {0}",
|
||||||
"show_full_thread": "Chuỗi tút liên quan",
|
"show_full_thread": "Chuỗi tút liên quan",
|
||||||
|
@ -672,7 +673,7 @@
|
||||||
"notifications_status": "Tút mới",
|
"notifications_status": "Tút mới",
|
||||||
"notifications_update": "Sửa tút",
|
"notifications_update": "Sửa tút",
|
||||||
"posts": "Tút",
|
"posts": "Tút",
|
||||||
"posts_with_replies": "Lượt trả lời"
|
"posts_with_replies": "Trả lời"
|
||||||
},
|
},
|
||||||
"tag": {
|
"tag": {
|
||||||
"follow": "Theo dõi",
|
"follow": "Theo dõi",
|
||||||
|
@ -735,7 +736,7 @@
|
||||||
"pick_an_icon": "Chọn biểu tượng",
|
"pick_an_icon": "Chọn biểu tượng",
|
||||||
"publish_failed": "Đóng các thông báo không thành công để đăng lại tút",
|
"publish_failed": "Đóng các thông báo không thành công để đăng lại tút",
|
||||||
"remove_thread_item": "Xóa tút khỏi chuỗi",
|
"remove_thread_item": "Xóa tút khỏi chuỗi",
|
||||||
"start_thread": "Bắt đầu chuỗi tút",
|
"start_thread": "Tạo chuỗi tút",
|
||||||
"toggle_bold": "In đậm",
|
"toggle_bold": "In đậm",
|
||||||
"toggle_code_block": "Đoạn mã",
|
"toggle_code_block": "Đoạn mã",
|
||||||
"toggle_italic": "In nghiêng"
|
"toggle_italic": "In nghiêng"
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
"follows_you": "已关注你",
|
"follows_you": "已关注你",
|
||||||
"go_to_profile": "转到个人资料",
|
"go_to_profile": "转到个人资料",
|
||||||
"joined": "已加入",
|
"joined": "已加入",
|
||||||
|
"lock": "非公开",
|
||||||
"moved_title": "的新账号是:",
|
"moved_title": "的新账号是:",
|
||||||
"muted_users": "已屏蔽的用户",
|
"muted_users": "已屏蔽的用户",
|
||||||
"muting": "已屏蔽",
|
"muting": "已屏蔽",
|
||||||
|
@ -57,7 +58,9 @@
|
||||||
"boost": "转发",
|
"boost": "转发",
|
||||||
"boost_count": "{0}",
|
"boost_count": "{0}",
|
||||||
"boosted": "已转发",
|
"boosted": "已转发",
|
||||||
|
"clear": "清除",
|
||||||
"clear_publish_failed": "清除发布失败信息",
|
"clear_publish_failed": "清除发布失败信息",
|
||||||
|
"clear_save_failed": "清除保存失败信息",
|
||||||
"clear_upload_failed": "清除上传失败信息",
|
"clear_upload_failed": "清除上传失败信息",
|
||||||
"close": "关闭",
|
"close": "关闭",
|
||||||
"compose": "撰写",
|
"compose": "撰写",
|
||||||
|
@ -70,8 +73,10 @@
|
||||||
"favourited": "已喜欢",
|
"favourited": "已喜欢",
|
||||||
"more": "更多",
|
"more": "更多",
|
||||||
"next": "下一个",
|
"next": "下一个",
|
||||||
|
"open_image_preview_dialog": "打开图像预览框",
|
||||||
"prev": "上一个",
|
"prev": "上一个",
|
||||||
"publish": "发布",
|
"publish": "发布",
|
||||||
|
"publish_thread": "发布串",
|
||||||
"reply": "回复",
|
"reply": "回复",
|
||||||
"reply_count": "{0}",
|
"reply_count": "{0}",
|
||||||
"reset": "重置",
|
"reset": "重置",
|
||||||
|
@ -119,12 +124,14 @@
|
||||||
"block_account": {
|
"block_account": {
|
||||||
"cancel": "取消",
|
"cancel": "取消",
|
||||||
"confirm": "拉黑",
|
"confirm": "拉黑",
|
||||||
"description": "你确定拉黑 {0} 吗?"
|
"description": "你确定拉黑 {0} 吗?",
|
||||||
|
"title": "拉黑用户"
|
||||||
},
|
},
|
||||||
"block_domain": {
|
"block_domain": {
|
||||||
"cancel": "取消",
|
"cancel": "取消",
|
||||||
"confirm": "拉黑",
|
"confirm": "拉黑",
|
||||||
"description": "你确定拉黑域名 {0} 吗?"
|
"description": "你确定拉黑域名 {0} 吗?",
|
||||||
|
"title": "拉黑域名"
|
||||||
},
|
},
|
||||||
"common": {
|
"common": {
|
||||||
"cancel": "否",
|
"cancel": "否",
|
||||||
|
@ -133,27 +140,37 @@
|
||||||
"delete_list": {
|
"delete_list": {
|
||||||
"cancel": "取消",
|
"cancel": "取消",
|
||||||
"confirm": "删除",
|
"confirm": "删除",
|
||||||
"description": "你确定要删除 \"{0}\" 列表吗?"
|
"description": "你确定要删除 \"{0}\" 列表吗?",
|
||||||
|
"title": "删除列表"
|
||||||
},
|
},
|
||||||
"delete_posts": {
|
"delete_posts": {
|
||||||
"cancel": "取消",
|
"cancel": "取消",
|
||||||
"confirm": "删除",
|
"confirm": "删除",
|
||||||
"description": "你确定要删除这条帖文吗?"
|
"description": "你确定要删除这条帖文吗?",
|
||||||
|
"title": "删除帖文"
|
||||||
},
|
},
|
||||||
"mute_account": {
|
"mute_account": {
|
||||||
"cancel": "取消",
|
"cancel": "取消",
|
||||||
"confirm": "屏蔽",
|
"confirm": "屏蔽",
|
||||||
"description": "你确定屏蔽 {0} 吗?"
|
"days": "{0} 天",
|
||||||
|
"description": "你确定屏蔽{0} 吗?",
|
||||||
|
"hours": "{0} 小时",
|
||||||
|
"minute": "{0} 分钟",
|
||||||
|
"notifications": "屏蔽通知",
|
||||||
|
"specify_duration": "指定时长",
|
||||||
|
"title": "屏蔽用户"
|
||||||
},
|
},
|
||||||
"show_reblogs": {
|
"show_reblogs": {
|
||||||
"cancel": "取消",
|
"cancel": "取消",
|
||||||
"confirm": "显示",
|
"confirm": "显示",
|
||||||
"description": "你确定要显示来自 {0} 的转发吗?"
|
"description": "你确定要显示来自 {0} 的转发吗?",
|
||||||
|
"title": "显示转发"
|
||||||
},
|
},
|
||||||
"unfollow": {
|
"unfollow": {
|
||||||
"cancel": "取消",
|
"cancel": "取消",
|
||||||
"confirm": "取消关注",
|
"confirm": "取消关注",
|
||||||
"description": "你确定要取消关注吗?"
|
"description": "你确定要取消关注吗?",
|
||||||
|
"title": "取消关注"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"conversation": {
|
"conversation": {
|
||||||
|
@ -206,6 +223,7 @@
|
||||||
"error": "创建列表时出现了一个错误",
|
"error": "创建列表时出现了一个错误",
|
||||||
"error_prefix": "错误:",
|
"error_prefix": "错误:",
|
||||||
"list_title_placeholder": "列表标题",
|
"list_title_placeholder": "列表标题",
|
||||||
|
"manage": "管理列表",
|
||||||
"modify_account": "修改列表中的用户",
|
"modify_account": "修改列表中的用户",
|
||||||
"remove_account": "移除列表中的用户",
|
"remove_account": "移除列表中的用户",
|
||||||
"save": "保存更改"
|
"save": "保存更改"
|
||||||
|
@ -218,14 +236,26 @@
|
||||||
"command_mode": "命令面板",
|
"command_mode": "命令面板",
|
||||||
"compose": "撰写",
|
"compose": "撰写",
|
||||||
"favourite": "喜欢",
|
"favourite": "喜欢",
|
||||||
|
"search": "搜索",
|
||||||
|
"show_new_items": "显示新的帖子",
|
||||||
"title": "操作"
|
"title": "操作"
|
||||||
},
|
},
|
||||||
"media": {
|
"media": {
|
||||||
"title": "媒体"
|
"title": "媒体"
|
||||||
},
|
},
|
||||||
"navigation": {
|
"navigation": {
|
||||||
|
"go_to_bookmarks": "书签",
|
||||||
|
"go_to_conversations": "会话",
|
||||||
|
"go_to_explore": "探索",
|
||||||
|
"go_to_favourites": "收藏",
|
||||||
|
"go_to_federated": "联合",
|
||||||
"go_to_home": "首页",
|
"go_to_home": "首页",
|
||||||
|
"go_to_lists": "列表",
|
||||||
|
"go_to_local": "本地",
|
||||||
"go_to_notifications": "通知",
|
"go_to_notifications": "通知",
|
||||||
|
"go_to_profile": "个人资料",
|
||||||
|
"go_to_search": "搜索",
|
||||||
|
"go_to_settings": "设置",
|
||||||
"next_status": "下一条帖文",
|
"next_status": "下一条帖文",
|
||||||
"previous_status": "上一条帖文",
|
"previous_status": "上一条帖文",
|
||||||
"shortcut_help": "快捷键帮助",
|
"shortcut_help": "快捷键帮助",
|
||||||
|
@ -280,13 +310,16 @@
|
||||||
"built_at": "构建于 {0}",
|
"built_at": "构建于 {0}",
|
||||||
"compose": "撰写",
|
"compose": "撰写",
|
||||||
"conversations": "私信",
|
"conversations": "私信",
|
||||||
|
"docs": "文档",
|
||||||
"explore": "探索",
|
"explore": "探索",
|
||||||
"favourites": "喜欢",
|
"favourites": "喜欢",
|
||||||
"federated": "跨站",
|
"federated": "跨站",
|
||||||
|
"hashtags": "标签",
|
||||||
"home": "主页",
|
"home": "主页",
|
||||||
"list": "列表",
|
"list": "列表",
|
||||||
"lists": "列表",
|
"lists": "列表",
|
||||||
"local": "本地",
|
"local": "本地",
|
||||||
|
"more_menu": "更多",
|
||||||
"muted_users": "已屏蔽的用户",
|
"muted_users": "已屏蔽的用户",
|
||||||
"notifications": "通知",
|
"notifications": "通知",
|
||||||
"privacy": "隐私协议",
|
"privacy": "隐私协议",
|
||||||
|
@ -421,6 +454,8 @@
|
||||||
"label": "账号设置"
|
"label": "账号设置"
|
||||||
},
|
},
|
||||||
"interface": {
|
"interface": {
|
||||||
|
"bottom_nav": "底部导航",
|
||||||
|
"bottom_nav_instructions": "选择您最喜欢的导航按钮(最多五个)作为底部导航。\n必须包含“更多菜单”按钮。",
|
||||||
"color_mode": "颜色",
|
"color_mode": "颜色",
|
||||||
"dark_mode": "深色",
|
"dark_mode": "深色",
|
||||||
"default": "(默认)",
|
"default": "(默认)",
|
||||||
|
@ -432,7 +467,9 @@
|
||||||
},
|
},
|
||||||
"language": {
|
"language": {
|
||||||
"display_language": "首选语言",
|
"display_language": "首选语言",
|
||||||
|
"how_to_contribute": "如何贡献?",
|
||||||
"label": "语言",
|
"label": "语言",
|
||||||
|
"post_language": "发布语言",
|
||||||
"status": "翻译进度: {0}/{1} ({2}%)",
|
"status": "翻译进度: {0}/{1} ({2}%)",
|
||||||
"translations": {
|
"translations": {
|
||||||
"add": "添加",
|
"add": "添加",
|
||||||
|
@ -498,6 +535,8 @@
|
||||||
},
|
},
|
||||||
"notifications_settings": "通知",
|
"notifications_settings": "通知",
|
||||||
"preferences": {
|
"preferences": {
|
||||||
|
"embedded_media": "嵌入式媒体播放器",
|
||||||
|
"embedded_media_description": "扩展共享媒体流链接时显示嵌入式播放器而不是普通预览卡。",
|
||||||
"enable_autoplay": "开启自动播放",
|
"enable_autoplay": "开启自动播放",
|
||||||
"enable_data_saving": "启用数据流量节省",
|
"enable_data_saving": "启用数据流量节省",
|
||||||
"enable_data_saving_description": "通过阻止附件自动加载来节省数据流量。",
|
"enable_data_saving_description": "通过阻止附件自动加载来节省数据流量。",
|
||||||
|
@ -510,12 +549,15 @@
|
||||||
"hide_boost_count": "隐藏转发数",
|
"hide_boost_count": "隐藏转发数",
|
||||||
"hide_favorite_count": "隐藏收藏数",
|
"hide_favorite_count": "隐藏收藏数",
|
||||||
"hide_follower_count": "隐藏关注者数",
|
"hide_follower_count": "隐藏关注者数",
|
||||||
|
"hide_gif_indi_on_posts": "隐藏帖子上的 gif 指示器",
|
||||||
"hide_news": "隐藏新闻页",
|
"hide_news": "隐藏新闻页",
|
||||||
"hide_reply_count": "隐藏回复数",
|
"hide_reply_count": "隐藏回复数",
|
||||||
|
"hide_tag_hover_card": "隐藏标签悬停卡",
|
||||||
"hide_translation": "隐藏翻译",
|
"hide_translation": "隐藏翻译",
|
||||||
"hide_username_emojis": "隐藏用户昵称的表情符号",
|
"hide_username_emojis": "隐藏用户昵称的表情符号",
|
||||||
"hide_username_emojis_description": "隐藏时间线上用户的表情符号。表情符号仍然会在用户个人资料中展示。",
|
"hide_username_emojis_description": "隐藏时间线上用户的表情符号。表情符号仍然会在用户个人资料中展示。",
|
||||||
"label": "首选项",
|
"label": "首选项",
|
||||||
|
"optimize_for_low_performance_device": "针对低性能设备进行优化",
|
||||||
"title": "实验功能",
|
"title": "实验功能",
|
||||||
"use_star_favorite_icon": "使用星形喜欢图标",
|
"use_star_favorite_icon": "使用星形喜欢图标",
|
||||||
"user_picker": "用户选择器",
|
"user_picker": "用户选择器",
|
||||||
|
@ -559,12 +601,17 @@
|
||||||
},
|
},
|
||||||
"state": {
|
"state": {
|
||||||
"attachments_exceed_server_limit": "附件的数量超出了最大限制",
|
"attachments_exceed_server_limit": "附件的数量超出了最大限制",
|
||||||
|
"attachments_limit_audio_error": "超出最大音频尺寸:{0}",
|
||||||
"attachments_limit_error": "超出每篇帖文的最大限制",
|
"attachments_limit_error": "超出每篇帖文的最大限制",
|
||||||
|
"attachments_limit_image_error": "超出最大图像尺寸:{0}",
|
||||||
|
"attachments_limit_unknown_error": "超出最大文件尺寸:{0}",
|
||||||
|
"attachments_limit_video_error": "超出最大视频尺寸:{0}",
|
||||||
"edited": "(已编辑)",
|
"edited": "(已编辑)",
|
||||||
"editing": "编辑中",
|
"editing": "编辑中",
|
||||||
"loading": "加载中...",
|
"loading": "加载中...",
|
||||||
"publish_failed": "发布失败",
|
"publish_failed": "发布失败",
|
||||||
"publishing": "发布中...",
|
"publishing": "发布中...",
|
||||||
|
"save_failed": "保存失败",
|
||||||
"upload_failed": "上传失败",
|
"upload_failed": "上传失败",
|
||||||
"uploading": "上传中..."
|
"uploading": "上传中..."
|
||||||
},
|
},
|
||||||
|
@ -575,9 +622,11 @@
|
||||||
},
|
},
|
||||||
"boosted_by": "被转发",
|
"boosted_by": "被转发",
|
||||||
"edited": "在 {0} 编辑了",
|
"edited": "在 {0} 编辑了",
|
||||||
|
"embedded_warning": "播放此内容可能会将你的 IP 地址泄露给他人。",
|
||||||
"favourited_by": "被喜欢",
|
"favourited_by": "被喜欢",
|
||||||
"filter_hidden_phrase": "筛选依据",
|
"filter_hidden_phrase": "筛选依据",
|
||||||
"filter_show_anyway": "仍然展示",
|
"filter_show_anyway": "仍然展示",
|
||||||
|
"gif": "GIF",
|
||||||
"img_alt": {
|
"img_alt": {
|
||||||
"ALT": "ALT",
|
"ALT": "ALT",
|
||||||
"desc": "描述",
|
"desc": "描述",
|
||||||
|
@ -609,8 +658,20 @@
|
||||||
"list": "列表",
|
"list": "列表",
|
||||||
"media": "媒体",
|
"media": "媒体",
|
||||||
"news": "最新消息",
|
"news": "最新消息",
|
||||||
|
"notifications_admin": {
|
||||||
|
"report": "举报",
|
||||||
|
"sign_up": "注册"
|
||||||
|
},
|
||||||
"notifications_all": "全部",
|
"notifications_all": "全部",
|
||||||
|
"notifications_favourite": "喜欢",
|
||||||
|
"notifications_follow": "关注",
|
||||||
|
"notifications_follow_request": "请求关注",
|
||||||
"notifications_mention": "提及",
|
"notifications_mention": "提及",
|
||||||
|
"notifications_more_tooltip": "按类型筛选通知",
|
||||||
|
"notifications_poll": "投票",
|
||||||
|
"notifications_reblog": "转发",
|
||||||
|
"notifications_status": "状态",
|
||||||
|
"notifications_update": "更新",
|
||||||
"posts": "帖文",
|
"posts": "帖文",
|
||||||
"posts_with_replies": "帖文与留言"
|
"posts_with_replies": "帖文与留言"
|
||||||
},
|
},
|
||||||
|
@ -664,6 +725,7 @@
|
||||||
"add_emojis": "添加表情符号",
|
"add_emojis": "添加表情符号",
|
||||||
"add_media": "添加图片、视频或者音频文件",
|
"add_media": "添加图片、视频或者音频文件",
|
||||||
"add_publishable_content": "添加要发布的内容",
|
"add_publishable_content": "添加要发布的内容",
|
||||||
|
"add_thread_item": "添加到帖文串",
|
||||||
"change_content_visibility": "修改内容是否可见",
|
"change_content_visibility": "修改内容是否可见",
|
||||||
"change_language": "更改语言",
|
"change_language": "更改语言",
|
||||||
"emoji": "表情符号",
|
"emoji": "表情符号",
|
||||||
|
@ -673,6 +735,8 @@
|
||||||
"open_editor_tools": "编辑器工具",
|
"open_editor_tools": "编辑器工具",
|
||||||
"pick_an_icon": "选择一个图标",
|
"pick_an_icon": "选择一个图标",
|
||||||
"publish_failed": "关闭编辑器上方的错误信息以重新发布帖文。",
|
"publish_failed": "关闭编辑器上方的错误信息以重新发布帖文。",
|
||||||
|
"remove_thread_item": "从帖文串中移除",
|
||||||
|
"start_thread": "开始帖文串",
|
||||||
"toggle_bold": "切换加粗",
|
"toggle_bold": "切换加粗",
|
||||||
"toggle_code_block": "切换代码块",
|
"toggle_code_block": "切换代码块",
|
||||||
"toggle_italic": "切换斜体"
|
"toggle_italic": "切换斜体"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import fs from 'fs-extra'
|
import { lstat } from 'node:fs'
|
||||||
import { createResolver, defineNuxtModule } from '@nuxt/kit'
|
import { createResolver, defineNuxtModule } from '@nuxt/kit'
|
||||||
import { currentLocales } from '../config/i18n'
|
import { currentLocales } from '../config/i18n'
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ export default defineNuxtModule({
|
||||||
|
|
||||||
async function isFile(path: string) {
|
async function isFile(path: string) {
|
||||||
return new Promise<boolean>((resolve) => {
|
return new Promise<boolean>((resolve) => {
|
||||||
fs.lstat(path, (err, stats) => {
|
lstat(path, (err, stats) => {
|
||||||
if (err)
|
if (err)
|
||||||
resolve(false)
|
resolve(false)
|
||||||
else
|
else
|
||||||
|
|
|
@ -14,7 +14,7 @@ export default defineNuxtModule({
|
||||||
return
|
return
|
||||||
|
|
||||||
const s = new MagicString(code)
|
const s = new MagicString(code)
|
||||||
s.replace(/<!--(?:.*?)-->/sg, '')
|
s.replace(/<!--.*?-->/gs, '')
|
||||||
|
|
||||||
if (s.hasChanged()) {
|
if (s.hasChanged()) {
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -12,7 +12,7 @@ export function configurePWAOptions(options: Partial<VitePWAOptions>, nuxt: Nuxt
|
||||||
import('workbox-build').BasePartial
|
import('workbox-build').BasePartial
|
||||||
& import('workbox-build').GlobPartial
|
& import('workbox-build').GlobPartial
|
||||||
& import('workbox-build').RequiredGlobDirectoryPartial
|
& import('workbox-build').RequiredGlobDirectoryPartial
|
||||||
>
|
>
|
||||||
|
|
||||||
if (options.strategies === 'injectManifest') {
|
if (options.strategies === 'injectManifest') {
|
||||||
options.injectManifest = options.injectManifest ?? {}
|
options.injectManifest = options.injectManifest ?? {}
|
||||||
|
@ -76,7 +76,7 @@ function createManifestTransform(base: string, appManifestFolder?: string): impo
|
||||||
})
|
})
|
||||||
|
|
||||||
if (appManifestFolder) {
|
if (appManifestFolder) {
|
||||||
const regExp = /(\/)?[0-9a-f]{8}\b-[0-9a-f]{4}\b-[0-9a-f]{4}\b-[0-9a-f]{4}\b-[0-9a-f]{12}\.json$/i
|
const regExp = /\/?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\.json$/i
|
||||||
// we need to remove the revision from the sw prechaing manifest, UUID is enough:
|
// we need to remove the revision from the sw prechaing manifest, UUID is enough:
|
||||||
// we don't use dontCacheBustURLsMatching, single regex
|
// we don't use dontCacheBustURLsMatching, single regex
|
||||||
entries.filter(e => e && e.url.startsWith(appManifestFolder) && regExp.test(e.url)).forEach((e) => {
|
entries.filter(e => e && e.url.startsWith(appManifestFolder) && regExp.test(e.url)).forEach((e) => {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { Buffer } from 'node:buffer'
|
import { Buffer } from 'node:buffer'
|
||||||
import { readFile } from 'fs-extra'
|
import { readFile } from 'node:fs/promises'
|
||||||
import { createResolver } from '@nuxt/kit'
|
import { createResolver } from '@nuxt/kit'
|
||||||
import type { ManifestOptions } from 'vite-plugin-pwa'
|
import type { ManifestOptions } from 'vite-plugin-pwa'
|
||||||
import { getEnv } from '../../config/env'
|
import { getEnv } from '../../config/env'
|
||||||
|
|
|
@ -202,6 +202,11 @@ export default defineNuxtModule<VitePWANuxtOptions>({
|
||||||
'Cache-Control': 'public, max-age=0, must-revalidate',
|
'Cache-Control': 'public, max-age=0, must-revalidate',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
nitroConfig.routeRules!['/elk-sw.js'] = {
|
||||||
|
headers: {
|
||||||
|
'Cache-Control': 'public, max-age=0, must-revalidate',
|
||||||
|
},
|
||||||
|
}
|
||||||
for (const locale of pwaLocales) {
|
for (const locale of pwaLocales) {
|
||||||
nitroConfig.routeRules![`/manifest-${locale.code}.webmanifest`] = {
|
nitroConfig.routeRules![`/manifest-${locale.code}.webmanifest`] = {
|
||||||
headers: {
|
headers: {
|
||||||
|
|
2
modules/pwa/runtime/types.d.ts
vendored
2
modules/pwa/runtime/types.d.ts
vendored
|
@ -19,7 +19,7 @@ declare module '#app' {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
declare module '@vue/runtime-core' {
|
declare module 'vue' {
|
||||||
interface ComponentCustomProperties {
|
interface ComponentCustomProperties {
|
||||||
$pwa?: UnwrapNestedRefs<PwaInjection>
|
$pwa?: UnwrapNestedRefs<PwaInjection>
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,11 +8,12 @@ import { currentLocales } from './config/i18n'
|
||||||
const { resolve } = createResolver(import.meta.url)
|
const { resolve } = createResolver(import.meta.url)
|
||||||
|
|
||||||
export default defineNuxtConfig({
|
export default defineNuxtConfig({
|
||||||
|
compatibilityDate: '2024-09-11',
|
||||||
typescript: {
|
typescript: {
|
||||||
tsConfig: {
|
tsConfig: {
|
||||||
exclude: ['../service-worker'],
|
exclude: ['../service-worker'],
|
||||||
vueCompilerOptions: {
|
vueCompilerOptions: {
|
||||||
target: 3.4,
|
target: 3.5,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -261,7 +262,7 @@ export default defineNuxtConfig({
|
||||||
{ rel: 'apple-touch-icon', href: '/apple-touch-icon.png' },
|
{ rel: 'apple-touch-icon', href: '/apple-touch-icon.png' },
|
||||||
],
|
],
|
||||||
meta: [
|
meta: [
|
||||||
{ name: 'apple-mobile-web-app-status-bar-style', content: 'black-translucent' },
|
{ name: 'apple-mobile-web-app-status-bar-style', content: 'default' },
|
||||||
// open graph social image
|
// open graph social image
|
||||||
{ property: 'og:title', content: 'Elk' },
|
{ property: 'og:title', content: 'Elk' },
|
||||||
{ property: 'og:description', content: 'A nimble Mastodon web client' },
|
{ property: 'og:description', content: 'A nimble Mastodon web client' },
|
||||||
|
@ -270,13 +271,13 @@ export default defineNuxtConfig({
|
||||||
{ property: 'og:image:width', content: '3800' },
|
{ property: 'og:image:width', content: '3800' },
|
||||||
{ property: 'og:image:height', content: '1900' },
|
{ property: 'og:image:height', content: '1900' },
|
||||||
{ property: 'og:site_name', content: 'Elk' },
|
{ property: 'og:site_name', content: 'Elk' },
|
||||||
{ property: 'twitter:site', content: '@elk_zone' },
|
{ name: 'twitter:site', content: '@elk_zone' },
|
||||||
{ property: 'twitter:card', content: 'summary_large_image' },
|
{ name: 'twitter:card', content: 'summary_large_image' },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
// eslint-disable-next-line ts/prefer-ts-expect-error
|
// eslint-disable-next-line ts/ban-ts-comment
|
||||||
// @ts-ignore nuxt-security is conditional
|
// @ts-ignore nuxt-security is conditional
|
||||||
security: {
|
security: {
|
||||||
headers: {
|
headers: {
|
||||||
|
@ -299,7 +300,7 @@ export default defineNuxtConfig({
|
||||||
'upgrade-insecure-requests': true,
|
'upgrade-insecure-requests': true,
|
||||||
},
|
},
|
||||||
permissionsPolicy: {
|
permissionsPolicy: {
|
||||||
fullscreen: ['\'self\'', 'https:', 'http:'],
|
fullscreen: '*',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
rateLimiter: false,
|
rateLimiter: false,
|
||||||
|
@ -333,6 +334,10 @@ declare global {
|
||||||
}
|
}
|
||||||
|
|
||||||
declare module '#app' {
|
declare module '#app' {
|
||||||
|
interface PageMeta {
|
||||||
|
wideLayout?: boolean
|
||||||
|
}
|
||||||
|
|
||||||
interface RuntimeNuxtHooks {
|
interface RuntimeNuxtHooks {
|
||||||
'elk-logo:click': () => void
|
'elk-logo:click': () => void
|
||||||
}
|
}
|
||||||
|
|
107
package.json
107
package.json
|
@ -1,8 +1,8 @@
|
||||||
{
|
{
|
||||||
"name": "@elk-zone/elk",
|
"name": "@elk-zone/elk",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "0.14.0",
|
"version": "0.15.1",
|
||||||
"packageManager": "pnpm@8.15.5",
|
"packageManager": "pnpm@9.11.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"homepage": "https://elk.zone/",
|
"homepage": "https://elk.zone/",
|
||||||
"main": "./nuxt.config.ts",
|
"main": "./nuxt.config.ts",
|
||||||
|
@ -37,11 +37,11 @@
|
||||||
"@iconify-emoji/twemoji": "^1.0.2",
|
"@iconify-emoji/twemoji": "^1.0.2",
|
||||||
"@iconify/json": "^2.2.170",
|
"@iconify/json": "^2.2.170",
|
||||||
"@iconify/utils": "^2.1.22",
|
"@iconify/utils": "^2.1.22",
|
||||||
"@nuxt/devtools": "^1.0.8",
|
"@nuxt/devtools": "^1.5.0",
|
||||||
"@nuxt/test-utils": "^3.12.0",
|
"@nuxt/test-utils": "^3.14.2",
|
||||||
"@nuxtjs/color-mode": "^3.3.2",
|
"@nuxtjs/color-mode": "^3.4.4",
|
||||||
"@nuxtjs/i18n": "^8.3.0",
|
"@nuxtjs/i18n": "^8.5.3",
|
||||||
"@pinia/nuxt": "^0.5.1",
|
"@pinia/nuxt": "^0.5.4",
|
||||||
"@tiptap/core": "2.2.4",
|
"@tiptap/core": "2.2.4",
|
||||||
"@tiptap/extension-bold": "2.2.4",
|
"@tiptap/extension-bold": "2.2.4",
|
||||||
"@tiptap/extension-character-count": "2.2.4",
|
"@tiptap/extension-character-count": "2.2.4",
|
||||||
|
@ -56,39 +56,40 @@
|
||||||
"@tiptap/starter-kit": "2.2.4",
|
"@tiptap/starter-kit": "2.2.4",
|
||||||
"@tiptap/suggestion": "2.2.4",
|
"@tiptap/suggestion": "2.2.4",
|
||||||
"@tiptap/vue-3": "2.2.4",
|
"@tiptap/vue-3": "2.2.4",
|
||||||
"@unocss/nuxt": "^0.58.9",
|
"@unocss/nuxt": "^0.62.3",
|
||||||
"@upstash/redis": "^1.27.1",
|
"@upstash/redis": "^1.27.1",
|
||||||
"@vercel/kv": "^1.0.1",
|
"@vercel/kv": "^2.0.0",
|
||||||
"@vue-macros/nuxt": "^1.6.0",
|
"@vue-macros/nuxt": "^1.11.12",
|
||||||
"@vueuse/core": "^10.9.0",
|
"@vueuse/core": "^11.0.3",
|
||||||
"@vueuse/gesture": "^2.0.0",
|
"@vueuse/gesture": "^2.0.0",
|
||||||
"@vueuse/integrations": "^10.8.0",
|
"@vueuse/integrations": "^11.0.3",
|
||||||
"@vueuse/math": "^10.8.0",
|
"@vueuse/math": "^11.0.3",
|
||||||
"@vueuse/motion": "2.1.0",
|
"@vueuse/motion": "2.2.5",
|
||||||
"@vueuse/nuxt": "^10.8.0",
|
"@vueuse/nuxt": "^11.0.3",
|
||||||
"blurhash": "^2.0.5",
|
"blurhash": "^2.0.5",
|
||||||
"browser-fs-access": "^0.35.0",
|
"browser-fs-access": "^0.35.0",
|
||||||
"chroma-js": "^2.4.2",
|
"cheerio": "^1.0.0",
|
||||||
|
"chroma-js": "^3.0.0",
|
||||||
"emoji-mart": "^5.5.2",
|
"emoji-mart": "^5.5.2",
|
||||||
"file-saver": "^2.0.5",
|
"file-saver": "^2.0.5",
|
||||||
"floating-vue": "^5.2.2",
|
"floating-vue": "^5.2.2",
|
||||||
"focus-trap": "^7.5.1",
|
"focus-trap": "^7.5.1",
|
||||||
"form-data": "^4.0.0",
|
"form-data": "^4.0.0",
|
||||||
"fuse.js": "^6.6.2",
|
"fuse.js": "^7.0.0",
|
||||||
"github-reserved-names": "^2.0.4",
|
"github-reserved-names": "^2.0.4",
|
||||||
"happy-dom": "^10.5.2",
|
"happy-dom": "^15.0.0",
|
||||||
"idb-keyval": "^6.2.1",
|
"idb-keyval": "^6.2.1",
|
||||||
"ignore-dependency-scripts": "^1.0.1",
|
"ignore-dependency-scripts": "^1.0.1",
|
||||||
"iso-639-1": "^3.0.0",
|
"iso-639-1": "^3.0.0",
|
||||||
"js-yaml": "^4.1.0",
|
"js-yaml": "^4.1.0",
|
||||||
"lru-cache": "^10.0.0",
|
"lru-cache": "^11.0.0",
|
||||||
"masto": "^6.7.0",
|
"masto": "^6.7.5",
|
||||||
"node-emoji": "^2.1.3",
|
"node-emoji": "^2.1.3",
|
||||||
"nuxt-security": "^0.13.1",
|
"nuxt-security": "^1.4.3",
|
||||||
"page-lifecycle": "^0.1.2",
|
"page-lifecycle": "^0.1.2",
|
||||||
"pinia": "^2.1.7",
|
"pinia": "^2.2.2",
|
||||||
"postcss-nested": "^6.0.1",
|
"postcss-nested": "^6.0.1",
|
||||||
"prosemirror-highlight": "^0.5.0",
|
"prosemirror-highlight": "^0.9.0",
|
||||||
"rollup-plugin-node-polyfills": "^0.2.1",
|
"rollup-plugin-node-polyfills": "^0.2.1",
|
||||||
"shiki": "^1.0.0",
|
"shiki": "^1.0.0",
|
||||||
"simple-git": "^3.19.1",
|
"simple-git": "^3.19.1",
|
||||||
|
@ -98,61 +99,63 @@
|
||||||
"string-length": "^5.0.1",
|
"string-length": "^5.0.1",
|
||||||
"tauri-plugin-log-api": "github:tauri-apps/tauri-plugin-log",
|
"tauri-plugin-log-api": "github:tauri-apps/tauri-plugin-log",
|
||||||
"tauri-plugin-store-api": "github:tauri-apps/tauri-plugin-store",
|
"tauri-plugin-store-api": "github:tauri-apps/tauri-plugin-store",
|
||||||
"theme-vitesse": "^0.7.2",
|
"theme-vitesse": "^0.8.0",
|
||||||
"tiny-decode": "^0.1.3",
|
"tiny-decode": "^0.1.3",
|
||||||
"tippy.js": "^6.3.7",
|
"tippy.js": "^6.3.7",
|
||||||
"ufo": "^1.5.3",
|
"ufo": "^1.5.3",
|
||||||
"ultrahtml": "^1.5.3",
|
"ultrahtml": "^1.5.3",
|
||||||
"unimport": "^3.7.1",
|
"unimport": "^3.10.0",
|
||||||
"vite-plugin-pwa": "^0.19.2",
|
"vite-plugin-pwa": "^0.20.5",
|
||||||
"vue-advanced-cropper": "^2.8.8",
|
"vue-advanced-cropper": "^2.8.9",
|
||||||
"vue-virtual-scroller": "2.0.0-beta.8",
|
"vue-virtual-scroller": "2.0.0-beta.8",
|
||||||
"workbox-build": "^7.0.0",
|
"workbox-build": "^7.1.1",
|
||||||
"workbox-window": "^7.0.0",
|
"workbox-window": "^7.1.0",
|
||||||
"ws": "^8.15.1"
|
"ws": "^8.15.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@antfu/eslint-config": "^2.9.0",
|
"@antfu/eslint-config": "^2.27.3",
|
||||||
"@antfu/ni": "^0.21.12",
|
"@antfu/ni": "^0.23.0",
|
||||||
"@types/chroma-js": "^2.4.4",
|
"@types/chroma-js": "^2.4.4",
|
||||||
"@types/file-saver": "^2.0.7",
|
"@types/file-saver": "^2.0.7",
|
||||||
"@types/fnando__sparkline": "^0.3.7",
|
"@types/fnando__sparkline": "^0.3.7",
|
||||||
"@types/fs-extra": "^11.0.4",
|
"@types/fs-extra": "^11.0.4",
|
||||||
"@types/js-yaml": "^4.0.9",
|
"@types/js-yaml": "^4.0.9",
|
||||||
"@types/prettier": "^3.0.0",
|
|
||||||
"@types/wicg-file-system-access": "^2023.10.5",
|
"@types/wicg-file-system-access": "^2023.10.5",
|
||||||
"@types/ws": "^8.5.10",
|
"@types/ws": "^8.5.12",
|
||||||
"@unlazy/nuxt": "^0.11.2",
|
"@unlazy/nuxt": "^0.11.3",
|
||||||
"@unocss/eslint-config": "^0.58.9",
|
"@unocss/eslint-config": "^0.62.4",
|
||||||
"@vue/test-utils": "2.4.5",
|
"@vue/test-utils": "2.4.6",
|
||||||
"bumpp": "^9.4.0",
|
"bumpp": "^9.5.2",
|
||||||
"consola": "^3.2.3",
|
"consola": "^3.2.3",
|
||||||
"eslint": "^8.57.0",
|
"eslint": "^9.11.0",
|
||||||
"eslint-plugin-format": "^0.1.0",
|
"eslint-plugin-format": "^0.1.2",
|
||||||
"flat": "^6.0.1",
|
"flat": "^6.0.1",
|
||||||
"fs-extra": "^11.2.0",
|
"fs-extra": "^11.2.0",
|
||||||
"lint-staged": "^15.2.2",
|
"lint-staged": "^15.2.10",
|
||||||
"nuxt": "^3.11.2",
|
"nuxt": "^3.13.2",
|
||||||
"prettier": "^3.2.5",
|
"prettier": "^3.3.3",
|
||||||
"sharp": "^0.33.3",
|
"sharp": "^0.33.5",
|
||||||
"sharp-ico": "^0.1.5",
|
"sharp-ico": "^0.1.5",
|
||||||
"simple-git-hooks": "^2.11.1",
|
"simple-git-hooks": "^2.11.1",
|
||||||
"tsx": "^4.7.2",
|
"tsx": "^4.19.1",
|
||||||
"typescript": "^5.4.4",
|
"typescript": "^5.4.4",
|
||||||
"vitest": "1.4.0",
|
"vitest": "2.1.1",
|
||||||
"vue-tsc": "^2.0.10"
|
"vue-tsc": "^2.1.6"
|
||||||
},
|
},
|
||||||
"pnpm": {
|
"pnpm": {
|
||||||
"overrides": {
|
|
||||||
"unstorage": "^1.10.2"
|
|
||||||
},
|
|
||||||
"patchedDependencies": {
|
"patchedDependencies": {
|
||||||
"nuxt-security@0.13.1": "patches/nuxt-security@0.13.1.patch"
|
"@vueuse/motion": "patches/@vueuse__motion.patch",
|
||||||
|
"pinceau": "patches/pinceau.patch",
|
||||||
|
"vue-i18n": "patches/vue-i18n.patch",
|
||||||
|
"nuxt-security": "patches/nuxt-security.patch",
|
||||||
|
"nuxt": "patches/nuxt.patch"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"resolutions": {
|
"resolutions": {
|
||||||
"vitest": "1.4.0",
|
"nuxt-component-meta": "0.8.2",
|
||||||
"vue": "^3.4.21"
|
"unstorage": "^1.12.0",
|
||||||
|
"vitest": "2.1.1",
|
||||||
|
"vue": "^3.5.4"
|
||||||
},
|
},
|
||||||
"simple-git-hooks": {
|
"simple-git-hooks": {
|
||||||
"pre-commit": "pnpm lint-staged"
|
"pre-commit": "pnpm lint-staged"
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue