Crude migration to fluent-vue

This commit is contained in:
Ivan Demchuk 2023-01-09 22:20:26 +02:00
parent 7e8da3cadc
commit 4f81964d6b
140 changed files with 4093 additions and 5103 deletions

View file

@ -3,5 +3,6 @@
*.ico *.ico
*.toml *.toml
*.patch *.patch
*.ftl
https-dev-config/localhost.crt https-dev-config/localhost.crt
https-dev-config/localhost.key https-dev-config/localhost.key

View file

@ -16,7 +16,7 @@ const error = $ref(false)
width="400" width="400"
height="400" height="400"
:src="error ? 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7' : account.avatar" :src="error ? 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7' : account.avatar"
:alt="$t('account.avatar_description', [account.username])" :alt="$t('account_avatar_description', { username: account.username })"
loading="lazy" loading="lazy"
:class="(loaded ? 'bg-base' : 'bg-gray:10') + (square ? ' ' : ' rounded-full')" :class="(loaded ? 'bg-base' : 'bg-gray:10') + (square ? ' ' : ' rounded-full')"
:style="{ 'clip-path': square ? `url(#avatar-mask)` : 'none' }" :style="{ 'clip-path': square ? `url(#avatar-mask)` : 'none' }"

View file

@ -18,7 +18,7 @@ defineOptions({
<!-- Banner --> <!-- Banner -->
<div px2 pt2> <div px2 pt2>
<div rounded of-hidden bg="gray-500/20" aspect="3.19"> <div rounded of-hidden bg="gray-500/20" aspect="3.19">
<img h-full w-full object-cover :src="account.header" :alt="$t('account.profile_description', [account.username])"> <img h-full w-full object-cover :src="account.header" :alt="$t('account_profile_description', { username: account.username })">
</div> </div>
</div> </div>
<div px-4 pb-4 space-y-2> <div px-4 pb-4 space-y-2>

View file

@ -11,11 +11,11 @@ defineProps<{
text-secondary-light text-secondary-light
> >
<slot name="prepend" /> <slot name="prepend" />
<CommonTooltip :content="$t('account.bot')" :disabled="showLabel"> <CommonTooltip :content="$t('account_bot')" :disabled="showLabel">
<div i-ri:robot-line /> <div i-ri:robot-line />
</CommonTooltip> </CommonTooltip>
<div v-if="showLabel"> <div v-if="showLabel">
{{ $t('account.bot') }} {{ $t('account_bot') }}
</div> </div>
</div> </div>
</template> </template>

View file

@ -48,13 +48,13 @@ async function unmute() {
} }
} }
const { t } = useI18n() const { $t } = useFluent()
useCommand({ useCommand({
scope: 'Actions', scope: 'Actions',
order: -2, order: -2,
visible: () => command && enable, visible: () => command && enable,
name: () => `${relationship?.following ? t('account.unfollow') : t('account.follow')} ${getShortHandle(account)}`, name: () => `${relationship?.following ? $t('account_unfollow') : $t('account_follow')} ${getShortHandle(account)}`,
icon: 'i-ri:star-line', icon: 'i-ri:star-line',
onActivate: () => toggleFollow(), onActivate: () => toggleFollow(),
}) })
@ -87,26 +87,26 @@ const buttonStyle = $computed(() => {
@click="relationship?.blocking ? unblock() : relationship?.muting ? unmute() : toggleFollow()" @click="relationship?.blocking ? unblock() : relationship?.muting ? unmute() : toggleFollow()"
> >
<template v-if="relationship?.blocking"> <template v-if="relationship?.blocking">
<span group-hover="hidden">{{ $t('account.blocking') }}</span> <span group-hover="hidden">{{ $t('account_blocking') }}</span>
<span hidden group-hover="inline">{{ $t('account.unblock') }}</span> <span hidden group-hover="inline">{{ $t('account_unblock') }}</span>
</template> </template>
<template v-if="relationship?.muting"> <template v-if="relationship?.muting">
<span group-hover="hidden">{{ $t('account.muting') }}</span> <span group-hover="hidden">{{ $t('account_muting') }}</span>
<span hidden group-hover="inline">{{ $t('account.unmute') }}</span> <span hidden group-hover="inline">{{ $t('account_unmute') }}</span>
</template> </template>
<template v-else-if="relationship?.following"> <template v-else-if="relationship?.following">
<span group-hover="hidden">{{ relationship.followedBy ? $t('account.mutuals') : $t('account.following') }}</span> <span group-hover="hidden">{{ relationship.followedBy ? $t('account_mutuals') : $t('account_following') }}</span>
<span hidden group-hover="inline">{{ $t('account.unfollow') }}</span> <span hidden group-hover="inline">{{ $t('account_unfollow') }}</span>
</template> </template>
<template v-else-if="relationship?.requested"> <template v-else-if="relationship?.requested">
<span>{{ $t('account.follow_requested') }}</span> <span>{{ $t('account_follow_requested') }}</span>
</template> </template>
<template v-else-if="relationship?.followedBy"> <template v-else-if="relationship?.followedBy">
<span group-hover="hidden">{{ $t('account.follows_you') }}</span> <span group-hover="hidden">{{ $t('account_follows_you') }}</span>
<span hidden group-hover="inline">{{ $t('account.follow_back') }}</span> <span hidden group-hover="inline">{{ $t('account_follow_back') }}</span>
</template> </template>
<template v-else> <template v-else>
<span>{{ $t('account.follow') }}</span> <span>{{ $t('account_follow') }}</span>
</template> </template>
</button> </button>
</template> </template>

View file

@ -6,7 +6,7 @@ const { account } = defineProps<{
command?: boolean command?: boolean
}>() }>()
const { t } = useI18n() const { $t } = useFluent()
const createdAt = $(useFormattedDateTime(() => account.createdAt, { const createdAt = $(useFormattedDateTime(() => account.createdAt, {
month: 'long', month: 'long',
@ -18,7 +18,7 @@ const namedFields = ref<mastodon.v1.AccountField[]>([])
const iconFields = ref<mastodon.v1.AccountField[]>([]) const iconFields = ref<mastodon.v1.AccountField[]>([])
function getFieldIconTitle(fieldName: string) { function getFieldIconTitle(fieldName: string) {
return fieldName === 'Joined' ? t('account.joined') : fieldName return fieldName === 'Joined' ? $t('account_joined') : fieldName
} }
function previewHeader() { function previewHeader() {
@ -26,7 +26,7 @@ function previewHeader() {
id: `${account.acct}:header`, id: `${account.acct}:header`,
type: 'image', type: 'image',
previewUrl: account.header, previewUrl: account.header,
description: t('account.profile_description', [account.username]), description: $t('account_profile_description', { username: account.username }),
}]) }])
} }
@ -35,7 +35,7 @@ function previewAvatar() {
id: `${account.acct}:avatar`, id: `${account.acct}:avatar`,
type: 'image', type: 'image',
previewUrl: account.avatar, previewUrl: account.avatar,
description: t('account.avatar_description', [account.username]), description: $t('account_avatar_description', { username: account.username }),
}]) }])
} }
@ -65,7 +65,7 @@ const isSelf = $computed(() => currentUser.value?.account.id === account.id)
<template> <template>
<div flex flex-col> <div flex flex-col>
<button border="b base" z-1> <button border="b base" z-1>
<img h-50 height="200" w-full object-cover :src="account.header" :alt="t('account.profile_description', [account.username])" @click="previewHeader"> <img h-50 height="200" w-full object-cover :src="account.header" :alt="$t('account_profile_description', { username: account.username })" @click="previewHeader">
</button> </button>
<div p4 mt--18 flex flex-col gap-4> <div p4 mt--18 flex flex-col gap-4>
<div relative> <div relative>
@ -91,7 +91,7 @@ const isSelf = $computed(() => currentUser.value?.account.id === account.id)
gap-1 items-center border="1" rounded-full flex="~ gap2 center" font-500 min-w-30 h-fit px3 py1 gap-1 items-center border="1" rounded-full flex="~ gap2 center" font-500 min-w-30 h-fit px3 py1
hover="border-primary text-primary bg-active" hover="border-primary text-primary bg-active"
> >
{{ $t('settings.profile.appearance.title') }} {{ $t('settings_profile_appearance_title') }}
</NuxtLink> </NuxtLink>
<!-- <button flex gap-1 items-center w-full rounded op75 hover="op100 text-purple" group> <!-- <button flex gap-1 items-center w-full rounded op75 hover="op100 text-purple" group>
<div rounded p2 group-hover="bg-rose/10"> <div rounded p2 group-hover="bg-rose/10">

View file

@ -54,7 +54,7 @@ const toggleReblogs = async () => {
<template #popper> <template #popper>
<NuxtLink :to="account.url" external target="_blank"> <NuxtLink :to="account.url" external target="_blank">
<CommonDropdownItem <CommonDropdownItem
:text="$t('menu.open_in_original_site')" :text="$t('menu_open_in_original_site')"
icon="i-ri:arrow-right-up-line" icon="i-ri:arrow-right-up-line"
:command="command" :command="command"
/> />
@ -63,13 +63,13 @@ const toggleReblogs = async () => {
<template v-if="currentUser"> <template v-if="currentUser">
<template v-if="!isSelf"> <template v-if="!isSelf">
<CommonDropdownItem <CommonDropdownItem
:text="$t('menu.mention_account', [`@${account.acct}`])" :text="$t('menu_mention_account', { username: `@${account.acct}` })"
icon="i-ri:at-line" icon="i-ri:at-line"
:command="command" :command="command"
@click="mentionUser(account)" @click="mentionUser(account)"
/> />
<CommonDropdownItem <CommonDropdownItem
:text="$t('menu.direct_message_account', [`@${account.acct}`])" :text="$t('menu_direct_message_account', { username: `@${account.acct}` })"
icon="i-ri:message-3-line" icon="i-ri:message-3-line"
:command="command" :command="command"
@click="directMessageUser(account)" @click="directMessageUser(account)"
@ -78,13 +78,13 @@ const toggleReblogs = async () => {
<CommonDropdownItem <CommonDropdownItem
v-if="!relationship?.showingReblogs" v-if="!relationship?.showingReblogs"
icon="i-ri:repeat-line" icon="i-ri:repeat-line"
:text="$t('menu.show_reblogs', [`@${account.acct}`])" :text="$t('menu_show_reblogs', { username: `@${account.acct}` })"
:command="command" :command="command"
@click="toggleReblogs" @click="toggleReblogs"
/> />
<CommonDropdownItem <CommonDropdownItem
v-else v-else
:text="$t('menu.hide_reblogs', [`@${account.acct}`])" :text="$t('menu_hide_reblogs', { username: `@${account.acct}` })"
icon="i-ri:repeat-line" icon="i-ri:repeat-line"
:command="command" :command="command"
@click="toggleReblogs" @click="toggleReblogs"
@ -92,14 +92,14 @@ const toggleReblogs = async () => {
<CommonDropdownItem <CommonDropdownItem
v-if="!relationship?.muting" v-if="!relationship?.muting"
:text="$t('menu.mute_account', [`@${account.acct}`])" :text="$t('menu_mute_account', { username: `@${account.acct}` })"
icon="i-ri:volume-up-fill" icon="i-ri:volume-up-fill"
:command="command" :command="command"
@click="toggleMute" @click="toggleMute"
/> />
<CommonDropdownItem <CommonDropdownItem
v-else v-else
:text="$t('menu.unmute_account', [`@${account.acct}`])" :text="$t('menu_unmute_account', { username: `@${account.acct}` })"
icon="i-ri:volume-mute-line" icon="i-ri:volume-mute-line"
:command="command" :command="command"
@click="toggleMute" @click="toggleMute"
@ -107,14 +107,14 @@ const toggleReblogs = async () => {
<CommonDropdownItem <CommonDropdownItem
v-if="!relationship?.blocking" v-if="!relationship?.blocking"
:text="$t('menu.block_account', [`@${account.acct}`])" :text="$t('menu_block_account', { username: `@${account.acct}` })"
icon="i-ri:forbid-2-line" icon="i-ri:forbid-2-line"
:command="command" :command="command"
@click="toggleBlockUser" @click="toggleBlockUser"
/> />
<CommonDropdownItem <CommonDropdownItem
v-else v-else
:text="$t('menu.unblock_account', [`@${account.acct}`])" :text="$t('menu_unblock_account', { username: `@${account.acct}` })"
icon="i-ri:checkbox-circle-line" icon="i-ri:checkbox-circle-line"
:command="command" :command="command"
@click="toggleBlockUser" @click="toggleBlockUser"
@ -123,14 +123,14 @@ const toggleReblogs = async () => {
<template v-if="getServerName(account) !== currentServer"> <template v-if="getServerName(account) !== currentServer">
<CommonDropdownItem <CommonDropdownItem
v-if="!relationship?.domainBlocking" v-if="!relationship?.domainBlocking"
:text="$t('menu.block_domain', [getServerName(account)])" :text="$t('menu_block_domain', { domain: getServerName(account) })"
icon="i-ri:shut-down-line" icon="i-ri:shut-down-line"
:command="command" :command="command"
@click="toggleBlockDomain" @click="toggleBlockDomain"
/> />
<CommonDropdownItem <CommonDropdownItem
v-else v-else
:text="$t('menu.unblock_domain', [getServerName(account)])" :text="$t('menu_unblock_domain', { domain: getServerName(account) })"
icon="i-ri:restart-line" icon="i-ri:restart-line"
:command="command" :command="command"
@click="toggleBlockDomain" @click="toggleBlockDomain"
@ -140,19 +140,19 @@ const toggleReblogs = async () => {
<template v-else> <template v-else>
<NuxtLink to="/pinned"> <NuxtLink to="/pinned">
<CommonDropdownItem :text="$t('account.pinned')" icon="i-ri:pushpin-line" :command="command" /> <CommonDropdownItem :text="$t('account_pinned')" icon="i-ri:pushpin-line" :command="command" />
</NuxtLink> </NuxtLink>
<NuxtLink to="/favourites"> <NuxtLink to="/favourites">
<CommonDropdownItem :text="$t('account.favourites')" icon="i-ri:heart-3-line" :command="command" /> <CommonDropdownItem :text="$t('account_favourites')" icon="i-ri:heart-3-line" :command="command" />
</NuxtLink> </NuxtLink>
<NuxtLink to="/mutes"> <NuxtLink to="/mutes">
<CommonDropdownItem :text="$t('account.muted_users')" icon="i-ri:volume-mute-line" :command="command" /> <CommonDropdownItem :text="$t('account_muted_users')" icon="i-ri:volume-mute-line" :command="command" />
</NuxtLink> </NuxtLink>
<NuxtLink to="/blocks"> <NuxtLink to="/blocks">
<CommonDropdownItem :text="$t('account.blocked_users')" icon="i-ri:forbid-2-line" :command="command" /> <CommonDropdownItem :text="$t('account_blocked_users')" icon="i-ri:forbid-2-line" :command="command" />
</NuxtLink> </NuxtLink>
<NuxtLink to="/domain_blocks"> <NuxtLink to="/domain_blocks">
<CommonDropdownItem :text="$t('account.blocked_domains')" icon="i-ri:shut-down-line" :command="command" /> <CommonDropdownItem :text="$t('account_blocked_domains')" icon="i-ri:shut-down-line" :command="command" />
</NuxtLink> </NuxtLink>
</template> </template>
</template> </template>

View file

@ -10,7 +10,7 @@ defineProps<{
<div flex="~ col gap-2" p4> <div flex="~ col gap-2" p4>
<div flex="~ gap-1" justify-center> <div flex="~ gap-1" justify-center>
<AccountInlineInfo :account="account" :link="false" /> <AccountInlineInfo :account="account" :link="false" />
{{ $t('account.moved_title') }} {{ $t('account_moved_title') }}
</div> </div>
<div flex> <div flex>
@ -21,7 +21,7 @@ defineProps<{
<div flex items-center> <div flex items-center>
<NuxtLink :to="getAccountRoute(account.moved as any)"> <NuxtLink :to="getAccountRoute(account.moved as any)">
<button btn-solid h-fit> <button btn-solid h-fit>
{{ $t('account.go_to_profile') }} {{ $t('account_go_to_profile') }}
</button> </button>
</NuxtLink> </NuxtLink>
</div> </div>

View file

@ -16,7 +16,7 @@ defineProps<{
> >
<template #default="{ isExactActive }"> <template #default="{ isExactActive }">
<CommonLocalizedNumber <CommonLocalizedNumber
keypath="account.posts_count" keypath="account_posts_count"
:count="account.statusesCount" :count="account.statusesCount"
font-bold font-bold
:class="isExactActive ? 'text-primary' : 'text-base'" :class="isExactActive ? 'text-primary' : 'text-base'"
@ -30,7 +30,7 @@ defineProps<{
> >
<template #default="{ isExactActive }"> <template #default="{ isExactActive }">
<CommonLocalizedNumber <CommonLocalizedNumber
keypath="account.following_count" keypath="account_following_count"
:count="account.followingCount" :count="account.followingCount"
font-bold font-bold
:class="isExactActive ? 'text-primary' : 'text-base'" :class="isExactActive ? 'text-primary' : 'text-base'"
@ -44,7 +44,7 @@ defineProps<{
> >
<template #default="{ isExactActive }"> <template #default="{ isExactActive }">
<CommonLocalizedNumber <CommonLocalizedNumber
keypath="account.followers_count" keypath="account_followers_count"
:count="account.followersCount" :count="account.followersCount"
font-bold font-bold
:class="isExactActive ? 'text-primary' : 'text-base'" :class="isExactActive ? 'text-primary' : 'text-base'"

View file

@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
const { t } = useI18n() const { $t } = useFluent()
const route = useRoute() const route = useRoute()
const server = $(computedEager(() => route.params.server as string)) const server = $(computedEager(() => route.params.server as string))
@ -12,7 +12,7 @@ const tabs = $computed(() => [
name: 'account-index', name: 'account-index',
params: { server, account }, params: { server, account },
}, },
display: t('tab.posts'), display: $t('tab_posts'),
icon: 'i-ri:file-list-2-line', icon: 'i-ri:file-list-2-line',
}, },
{ {
@ -21,7 +21,7 @@ const tabs = $computed(() => [
name: 'account-replies', name: 'account-replies',
params: { server, account }, params: { server, account },
}, },
display: t('tab.posts_with_replies'), display: $t('tab_posts_with_replies'),
icon: 'i-ri:chat-1-line', icon: 'i-ri:chat-1-line',
}, },
{ {
@ -30,7 +30,7 @@ const tabs = $computed(() => [
name: 'account-media', name: 'account-media',
params: { server, account }, params: { server, account },
}, },
display: t('tab.media'), display: $t('tab_media'),
icon: 'i-ri:camera-2-line', icon: 'i-ri:camera-2-line',
}, },
] as const) ] as const)

View file

@ -1,12 +1,12 @@
<script setup lang="ts"> <script setup lang="ts">
import type { AriaAnnounceType, AriaLive } from '~/composables/aria' import type { AriaAnnounceType, AriaLive } from '~/composables/aria'
import type { LocaleObject } from '#i18n' import { locale, locales } from '~/config/i18n'
const router = useRouter() const router = useRouter()
const { t, locale, locales } = useI18n() const { $t } = useFluent()
const { ariaAnnouncer, announce } = useAriaAnnouncer() const { ariaAnnouncer, announce } = useAriaAnnouncer()
const localeMap = (locales.value as LocaleObject[]).reduce((acc, l) => { const localeMap = locales.reduce((acc, l) => {
acc[l.code!] = l.name! acc[l.code!] = l.name!
return acc return acc
}, {} as Record<string, string>) }, {} as Record<string, string>)
@ -25,9 +25,9 @@ const onMessage = (event: AriaAnnounceType, message?: string) => {
watch(locale, (l, ol) => { watch(locale, (l, ol) => {
if (ol) { if (ol) {
announce(t('a11y.locale_changing', [localeMap[ol] ?? ol])) announce($t('a11y_locale_changing', { lang: localeMap[ol] ?? ol }))
setTimeout(() => { setTimeout(() => {
announce(t('a11y.locale_changed', [localeMap[l] ?? l])) announce($t('a11y_locale_changed', { lang: localeMap[l] ?? l }))
}, 1000) }, 1000)
} }
}, { immediate: true }) }, { immediate: true })
@ -35,13 +35,13 @@ watch(locale, (l, ol) => {
onMounted(() => { onMounted(() => {
ariaAnnouncer.on(onMessage) ariaAnnouncer.on(onMessage)
router.beforeEach(() => { router.beforeEach(() => {
announce(t('a11y.loading_page')) announce($t('a11y_loading_page'))
}) })
router.afterEach((to, from) => { router.afterEach((to, from) => {
from && setTimeout(() => { from && setTimeout(() => {
requestAnimationFrame(() => { requestAnimationFrame(() => {
const title = document.title.trim().split('|') const title = document.title.trim().split('|')
announce(t('a11y.route_loaded', [title[0]])) announce($t('a11y_route_loaded', { title: title[0] }))
}) })
}, 512) }, 512)
}) })

View file

@ -40,7 +40,7 @@ const {
:class="active ? 'opacity-100' : 'opacity-0'" :class="active ? 'opacity-100' : 'opacity-0'"
> >
<div class="text-xs text-secondary"> <div class="text-xs text-secondary">
{{ $t('command.complete') }} {{ $t('command_complete') }}
</div> </div>
<CommandKey name="Tab" /> <CommandKey name="Tab" />
</div> </div>
@ -50,7 +50,7 @@ const {
:class="active ? 'opacity-100' : 'opacity-0'" :class="active ? 'opacity-100' : 'opacity-0'"
> >
<div class="text-xs text-secondary"> <div class="text-xs text-secondary">
{{ $t('command.activate') }} {{ $t('command_activate') }}
</div> </div>
<CommandKey name="Enter" /> <CommandKey name="Enter" />
</div> </div>

View file

@ -222,8 +222,8 @@ const onKeyDown = (e: KeyboardEvent) => {
<div v-else p5 text-center text-secondary italic> <div v-else p5 text-center text-secondary italic>
{{ {{
input.trim().length input.trim().length
? $t('common.not_found') ? $t('common_not_found')
: $t('search.search_desc') : $t('search_search_desc')
}} }}
</div> </div>
</div> </div>

View file

@ -72,7 +72,7 @@ const cropImage = () => {
<div flex-1 w-0> <div flex-1 w-0>
<div text-lg text-center my2 px3> <div text-lg text-center my2 px3>
<h1> <h1>
{{ $t('action.edit') }} {{ $t('action_edit') }}
</h1> </h1>
</div> </div>
<div aspect-ratio-1> <div aspect-ratio-1>
@ -98,7 +98,7 @@ const cropImage = () => {
btn-solid w-full rounded text-sm btn-solid w-full rounded text-sm
@click="cropImage()" @click="cropImage()"
> >
{{ $t('action.confirm') }} {{ $t('action_confirm') }}
</button> </button>
</div> </div>
</div> </div>

View file

@ -26,7 +26,7 @@ const { modelValue: file } = defineModel<{
modelValue: FileWithHandle | null modelValue: FileWithHandle | null
}>() }>()
const { t } = useI18n() const { $t } = useFluent()
const defaultImage = computed(() => props.original || '') const defaultImage = computed(() => props.original || '')
/** Preview of selected images */ /** Preview of selected images */
@ -41,11 +41,11 @@ const pickImage = async () => {
}) })
if (!props.allowedFileTypes.includes(image.type)) { if (!props.allowedFileTypes.includes(image.type)) {
emit('error', 1, t('error.unsupported_file_format')) emit('error', 1, $t('error_unsupported_file_format'))
return return
} }
else if (image.size > props.allowedFileSize) { else if (image.size > props.allowedFileSize) {
emit('error', 2, t('error.file_size_cannot_exceed_n_mb', [5])) emit('error', 2, $t('error_file_size_cannot_exceed_n_mb', { size: props.allowedFileSize / 1024 / 1024 }))
return return
} }

View file

@ -2,7 +2,7 @@
<div flex="~ col" items-center> <div flex="~ col" items-center>
<div i-ri:forbid-line text-10 mt10 mb2 /> <div i-ri:forbid-line text-10 mt10 mb2 />
<div text-lg> <div text-lg>
<slot>{{ $t('common.not_found') }}</slot> <slot>{{ $t('common_not_found') }}</slot>
</div> </div>
</div> </div>
</template> </template>

View file

@ -45,8 +45,6 @@ defineSlots<{
done: {} done: {}
}>() }>()
const { t } = useI18n()
const { items, prevItems, update, state, endAnchor, error } = usePaginator(paginator, stream, eventType, preprocess) const { items, prevItems, update, state, endAnchor, error } = usePaginator(paginator, stream, eventType, preprocess)
</script> </script>
@ -91,11 +89,11 @@ const { items, prevItems, update, state, endAnchor, error } = usePaginator(pagin
</slot> </slot>
<slot v-else-if="state === 'done'" name="done"> <slot v-else-if="state === 'done'" name="done">
<div p5 text-secondary italic text-center> <div p5 text-secondary italic text-center>
{{ t('common.end_of_list') }} {{ $t('common_end_of_list') }}
</div> </div>
</slot> </slot>
<div v-else-if="state === 'error'" p5 text-secondary> <div v-else-if="state === 'error'" p5 text-secondary>
{{ t('common.error') }}: {{ error }} {{ $t('common_error') }}: {{ error }}
</div> </div>
</div> </div>
</template> </template>

View file

@ -18,6 +18,6 @@ const people = $computed(() =>
<template> <template>
<p> <p>
{{ $t('command.n-people-in-the-past-n-days', [people, maxDay]) }} {{ $t('command_n-people-in-the-past-n-days', { count: people, days: maxDay }) }}
</p> </p>
</template> </template>

View file

@ -12,15 +12,17 @@ const { formatHumanReadableNumber, formatNumber, forSR } = useHumanReadableNumbe
const useSR = $computed(() => forSR(props.count)) const useSR = $computed(() => forSR(props.count))
const rawNumber = $computed(() => formatNumber(props.count)) const rawNumber = $computed(() => formatNumber(props.count))
const humanReadableNumber = $computed(() => formatHumanReadableNumber(props.count)) const humanReadableNumber = $computed(() => formatHumanReadableNumber(props.count * 10000))
</script> </script>
<template> <template>
<i18n-t :keypath="keypath" :plural="count" tag="span" class="flex gap-x-1"> <i18n :path="keypath" :args="{ count }" tag="span" class="flex">
<template #formattedCount>
<CommonTooltip v-if="useSR" :content="rawNumber" placement="bottom"> <CommonTooltip v-if="useSR" :content="rawNumber" placement="bottom">
<span aria-hidden="true" v-bind="$attrs">{{ humanReadableNumber }}</span> <span aria-hidden="true" v-bind="$attrs">{{ humanReadableNumber }}</span>
<span sr-only>{{ rawNumber }}</span> <span sr-only>{{ rawNumber }}</span>
</CommonTooltip> </CommonTooltip>
<span v-else v-bind="$attrs">{{ humanReadableNumber }}</span> <span v-else v-bind="$attrs">{{ humanReadableNumber }}</span>
</i18n-t> </template>
</i18n>
</template> </template>

View file

@ -12,6 +12,6 @@ const online = useOnline()
border="t base" flex="~ gap-2 center" border="t base" flex="~ gap-2 center"
> >
<div i-ri:wifi-off-line /> <div i-ri:wifi-off-line />
{{ $t('common.offline_desc') }} {{ $t('common_offline_desc') }}
</div> </div>
</template> </template>

View file

@ -16,7 +16,7 @@ const withAccounts = $computed(() =>
<template #meta> <template #meta>
<div flex gap-2 text-sm text-secondary font-bold> <div flex gap-2 text-sm text-secondary font-bold>
<p me-1> <p me-1>
{{ $t('conversation.with') }} {{ $t('conversation_with') }}
</p> </p>
<AccountAvatar v-for="account in withAccounts" :key="account.id" h-5 w-5 :account="account" /> <AccountAvatar v-for="account in withAccounts" :key="account.id" h-5 w-5 :account="account" />
</div> </div>

View file

@ -12,23 +12,23 @@ const emit = defineEmits<{
<img :alt="$t('app_logo')" src="/logo.svg" w-20 h-20 height="80" width="80" mxa class="rtl-flip"> <img :alt="$t('app_logo')" src="/logo.svg" w-20 h-20 height="80" width="80" mxa class="rtl-flip">
<h1 mxa text-4xl mb4> <h1 mxa text-4xl mb4>
{{ $t('help.title') }} {{ $t('help_title') }}
</h1> </h1>
<p> <p>
{{ $t('help.desc_para1') }} {{ $t('help_desc_para1') }}
</p> </p>
<p> <p>
<b text-primary>{{ $t('help.desc_highlight') }}</b> <b text-primary>{{ $t('help_desc_highlight') }}</b>
{{ $t('help.desc_para2') }} {{ $t('help_desc_para2') }}
</p> </p>
<p> <p>
{{ $t('help.desc_para4') }} {{ $t('help_desc_para4') }}
<a font-bold text-primary href="/m.webtoo.ls/@elk" target="_blank"> <a font-bold text-primary href="/m.webtoo.ls/@elk" target="_blank">
{{ $t('help.desc_para5') }} {{ $t('help_desc_para5') }}
</a> </a>
{{ $t('help.desc_para6') }} {{ $t('help_desc_para6') }}
</p> </p>
{{ $t('help.desc_para3') }} {{ $t('help_desc_para3') }}
<p flex="~ gap-2 wrap" mxa> <p flex="~ gap-2 wrap" mxa>
<template v-for="team of teams" :key="team.github"> <template v-for="team of teams" :key="team.github">
<a :href="`https://github.com/sponsors/${team.github}`" target="_blank" rounded-full transition duration-300 border="~ transparent" hover="scale-105 border-primary"> <a :href="`https://github.com/sponsors/${team.github}`" target="_blank" rounded-full transition duration-300 border="~ transparent" hover="scale-105 border-primary">
@ -41,7 +41,7 @@ const emit = defineEmits<{
</p> </p>
<button btn-solid mxa tabindex="2" @click="emit('close')"> <button btn-solid mxa tabindex="2" @click="emit('close')">
{{ $t('action.enter_app') }} {{ $t('action_enter_app') }}
</button> </button>
</div> </div>
</template> </template>

View file

@ -19,7 +19,7 @@ defineProps<{
<NuxtLink <NuxtLink
v-if="backOnSmallScreen || back" flex="~ gap1" items-center btn-text p-0 v-if="backOnSmallScreen || back" flex="~ gap1" items-center btn-text p-0
:class="{ 'lg:hidden': backOnSmallScreen }" :class="{ 'lg:hidden': backOnSmallScreen }"
:aria-label="$t('nav.back')" :aria-label="$t('nav_back')"
@click="$router.go(-1)" @click="$router.go(-1)"
> >
<div i-ri:arrow-left-line class="rtl-flip" /> <div i-ri:arrow-left-line class="rtl-flip" />

View file

@ -18,10 +18,10 @@ const emit = defineEmits<{
</div> </div>
<div flex justify-end gap-2> <div flex justify-end gap-2>
<button btn-text @click="emit('choice', 'cancel')"> <button btn-text @click="emit('choice', 'cancel')">
{{ cancel || $t('common.confirm_dialog.cancel') }} {{ cancel || $t('common_confirm_dialog_cancel') }}
</button> </button>
<button btn-solid @click="emit('choice', 'confirm')"> <button btn-solid @click="emit('choice', 'confirm')">
{{ confirm || $t('common.confirm_dialog.confirm') }} {{ confirm || $t('common_confirm_dialog_confirm') }}
</button> </button>
</div> </div>
</div> </div>

View file

@ -39,16 +39,16 @@ onUnmounted(() => locked.value = false)
<template> <template>
<div relative h-full w-full flex pt-12 w-100vh @click="onClick"> <div relative h-full w-full flex pt-12 w-100vh @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_prev')"
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_next')"
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"
> >
<div i-ri:arrow-left-s-line text-white /> <div i-ri:arrow-left-s-line text-white />
</button> </button>

View file

@ -80,7 +80,7 @@ onBeforeUnmount(() => {
@click="toggleDark()" @click="toggleDark()"
> >
<span class="i-ri:sun-line dark:i-ri:moon-line flex-shrink-0 text-xl me-4 !align-middle" /> <span class="i-ri:sun-line dark:i-ri:moon-line flex-shrink-0 text-xl me-4 !align-middle" />
{{ colorMode.value === 'light' ? $t('menu.toggle_theme.dark') : $t('menu.toggle_theme.light') }} {{ colorMode.value === 'light' ? $t('menu_toggle_theme_dark') : $t('menu_toggle_theme_light') }}
</button> </button>
</div> </div>
</div> </div>

View file

@ -14,26 +14,25 @@ function toggleDark() {
<template> <template>
<footer p4 text-sm text-secondary-light flex="~ col"> <footer p4 text-sm text-secondary-light flex="~ col">
<div flex="~ gap2" items-center mb4> <div flex="~ gap2" items-center mb4>
<CommonTooltip :content="$t('nav.toggle_theme')"> <CommonTooltip :content="$t('nav_toggle_theme')">
<button flex i-ri:sun-line dark-i-ri:moon-line text-lg :aria-label="$t('nav.toggle_theme')" @click="toggleDark()" /> <button flex i-ri:sun-line dark-i-ri:moon-line text-lg :aria-label="$t('nav_toggle_theme')" @click="toggleDark()" />
</CommonTooltip> </CommonTooltip>
<CommonTooltip :content="$t('nav.zen_mode')"> <CommonTooltip :content="$t('nav_zen_mode')">
<button <button
flex flex
text-lg text-lg
:class="userSettings.zenMode ? 'i-ri:layout-right-2-line' : 'i-ri:layout-right-line'" :class="userSettings.zenMode ? 'i-ri:layout-right-2-line' : 'i-ri:layout-right-line'"
:aria-label="$t('nav.zen_mode')" :aria-label="$t('nav_zen_mode')"
@click="userSettings.zenMode = !userSettings.zenMode" @click="userSettings.zenMode = !userSettings.zenMode"
/> />
</CommonTooltip> </CommonTooltip>
</div> </div>
<div> <div>
<i18n-t v-if="isHydrated" keypath="nav.built_at"> <i18n v-if="isHydrated" path="nav_built_at" :args="{ date: buildTimeDate }">
<time :datetime="String(buildTimeDate)" :title="$d(buildTimeDate, 'long')">{{ buildTimeAgo }}</time> <template #date="{ formattedDate }">
</i18n-t> <time :datetime="String(buildTimeDate)" :title="formattedDate">{{ buildTimeAgo }}</time>
<span v-else> </template>
{{ $t('nav.built_at', [$d(buildTimeDate, 'shortDate')]) }} </i18n>
</span>
&middot; &middot;
<!-- TODO click version to show changelog --> <!-- TODO click version to show changelog -->
<span v-if="buildInfo.env === 'release'">v{{ buildInfo.version }}</span> <span v-if="buildInfo.env === 'release'">v{{ buildInfo.version }}</span>
@ -52,7 +51,7 @@ function toggleDark() {
</div> </div>
<div> <div>
<NuxtLink cursor-pointer hover:underline to="/settings/about"> <NuxtLink cursor-pointer hover:underline to="/settings/about">
{{ $t('settings.about.label') }} {{ $t('settings_about_label') }}
</NuxtLink> </NuxtLink>
&middot; &middot;
<a href="/m.webtoo.ls/@elk" target="_blank">Mastodon</a> <a href="/m.webtoo.ls/@elk" target="_blank">Mastodon</a>

View file

@ -9,11 +9,11 @@ const { notifications } = useNotifications()
<nav sm:px3 flex="~ col gap2" shrink text-size-base leading-normal md:text-lg> <nav sm:px3 flex="~ col gap2" shrink text-size-base leading-normal md:text-lg>
<div shrink hidden sm:block mt-4 /> <div shrink hidden sm:block mt-4 />
<SearchWidget lg:ms-1 lg:me-5 hidden xl:block /> <SearchWidget lg:ms-1 lg:me-5 hidden xl:block />
<NavSideItem :text="$t('nav.search')" to="/search" icon="i-ri:search-line" xl:hidden :command="command" /> <NavSideItem :text="$t('nav_search')" to="/search" icon="i-ri:search-line" xl:hidden :command="command" />
<div shrink hidden sm:block mt-4 /> <div shrink hidden sm:block mt-4 />
<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" icon="i-ri:notification-4-line" user-only :command="command"> <NavSideItem :text="$t('nav_notifications')" to="/notifications" 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" md:text-size-inherit text-xl /> <div class="i-ri:notification-4-line" md:text-size-inherit text-xl />
@ -23,17 +23,17 @@ const { notifications } = useNotifications()
</div> </div>
</template> </template>
</NavSideItem> </NavSideItem>
<NavSideItem :text="$t('nav.conversations')" to="/conversations" icon="i-ri:at-line" user-only :command="command" /> <NavSideItem :text="$t('nav_conversations')" to="/conversations" icon="i-ri:at-line" user-only :command="command" />
<NavSideItem :text="$t('nav.favourites')" to="/favourites" icon="i-ri:heart-3-line" user-only :command="command" /> <NavSideItem :text="$t('nav_favourites')" to="/favourites" icon="i-ri:heart-3-line" user-only :command="command" />
<NavSideItem :text="$t('nav.bookmarks')" to="/bookmarks" icon="i-ri:bookmark-line" user-only :command="command" /> <NavSideItem :text="$t('nav_bookmarks')" to="/bookmarks" icon="i-ri:bookmark-line" user-only :command="command" />
<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 shrink hidden sm:block mt-4 /> <div shrink hidden sm:block mt-4 />
<NavSideItem :text="$t('nav.explore')" :to="`/${currentServer}/explore`" icon="i-ri:hashtag" :command="command" /> <NavSideItem :text="$t('nav_explore')" :to="`/${currentServer}/explore`" icon="i-ri:hashtag" :command="command" />
<NavSideItem :text="$t('nav.local')" :to="`/${currentServer}/public/local`" icon="i-ri:group-2-line " :command="command" /> <NavSideItem :text="$t('nav_local')" :to="`/${currentServer}/public/local`" icon="i-ri:group-2-line " :command="command" />
<NavSideItem :text="$t('nav.federated')" :to="`/${currentServer}/public`" icon="i-ri:earth-line" :command="command" /> <NavSideItem :text="$t('nav_federated')" :to="`/${currentServer}/public`" icon="i-ri:earth-line" :command="command" />
<div shrink hidden sm:block mt-4 /> <div shrink hidden sm:block mt-4 />
<NavSideItem :text="$t('nav.settings')" to="/settings" icon="i-ri:settings-3-line" :command="command" /> <NavSideItem :text="$t('nav_settings')" to="/settings" icon="i-ri:settings-3-line" :command="command" />
</nav> </nav>
</template> </template>

View file

@ -20,7 +20,7 @@ const { env } = useBuildInfo()
</NuxtLink> </NuxtLink>
<div hidden xl:flex items-center me-8 mt-2> <div hidden xl:flex items-center me-8 mt-2>
<NuxtLink <NuxtLink
:aria-label="$t('nav.back')" :aria-label="$t('nav_back')"
@click="$router.go(-1)" @click="$router.go(-1)"
> >
<div i-ri:arrow-left-line class="rtl-flip" btn-text /> <div i-ri:arrow-left-line class="rtl-flip" btn-text />

View file

@ -16,6 +16,6 @@
</template> </template>
</VDropdown> </VDropdown>
<button v-else btn-solid text-sm px-2 py-1 text-center xl:hidden @click="openSigninDialog()"> <button v-else btn-solid text-sm px-2 py-1 text-center xl:hidden @click="openSigninDialog()">
{{ $t('action.sign_in') }} {{ $t('action_sign_in') }}
</button> </button>
</template> </template>

View file

@ -20,7 +20,7 @@ const { notification } = defineProps<{
<div i-ri:user-follow-fill me-1 color-primary /> <div i-ri:user-follow-fill me-1 color-primary />
<AccountDisplayName :account="notification.account" text-primary me-1 font-bold line-clamp-1 ws-pre-wrap break-all /> <AccountDisplayName :account="notification.account" text-primary me-1 font-bold line-clamp-1 ws-pre-wrap break-all />
<span ws-nowrap> <span ws-nowrap>
{{ $t('notification.followed_you') }} {{ $t('notification_followed_you') }}
</span> </span>
</div> </div>
<AccountBigCard <AccountBigCard
@ -36,7 +36,7 @@ const { notification } = defineProps<{
:account="notification.account" :account="notification.account"
text-purple me-1 font-bold line-clamp-1 ws-pre-wrap break-all text-purple me-1 font-bold line-clamp-1 ws-pre-wrap break-all
/> />
<span>{{ $t("notification.signed_up") }}</span> <span>{{ $t("notification_signed_up") }}</span>
</div> </div>
</template> </template>
<template v-else-if="notification.type === 'follow_request'"> <template v-else-if="notification.type === 'follow_request'">
@ -74,7 +74,7 @@ const { notification } = defineProps<{
<div i-ri:edit-2-fill text-xl me-1 text-secondary /> <div i-ri:edit-2-fill text-xl me-1 text-secondary />
<AccountInlineInfo :account="notification.account" me1 /> <AccountInlineInfo :account="notification.account" me1 />
<span ws-nowrap> <span ws-nowrap>
{{ $t('notification.update_status') }} {{ $t('notification_update_status') }}
</span> </span>
</div> </div>
</template> </template>
@ -85,7 +85,7 @@ const { notification } = defineProps<{
</template> </template>
<template v-else> <template v-else>
<div text-red font-bold> <div text-red font-bold>
[DEV] {{ $t('notification.missing_type') }} '{{ notification.type }}' [DEV] {{ $t('notification_missing_type') }} '{{ notification.type }}'
</div> </div>
</template> </template>
</article> </article>

View file

@ -28,13 +28,13 @@ const isLegacyAccount = computed(() => !currentUser.value?.vapidKey)
> >
<header flex items-center pb-2> <header flex items-center pb-2>
<h2 id="notifications-warning" text-md font-bold w-full> <h2 id="notifications-warning" text-md font-bold w-full>
{{ $t('settings.notifications.push_notifications.warning.enable_title') }} {{ $t('settings_notifications_push_notifications_warning_enable_title') }}
</h2> </h2>
<button <button
v-if="closeableHeader" v-if="closeableHeader"
flex rounded-4 flex rounded-4
type="button" type="button"
:title="$t('settings.notifications.push_notifications.warning.enable_close')" :title="$t('settings_notifications_push_notifications_warning_enable_close')"
hover:bg-active cursor-pointer transition-100 hover:bg-active cursor-pointer transition-100
:disabled="busy" :disabled="busy"
@click="$emit('hide')" @click="$emit('hide')"
@ -44,20 +44,20 @@ const isLegacyAccount = computed(() => !currentUser.value?.vapidKey)
</header> </header>
<template v-if="closeableHeader"> <template v-if="closeableHeader">
<p xl:hidden> <p xl:hidden>
{{ $t('settings.notifications.push_notifications.warning.enable_description') }} {{ $t('settings_notifications_push_notifications_warning_enable_description') }}
</p> </p>
<p xl:hidden> <p xl:hidden>
{{ $t('settings.notifications.push_notifications.warning.enable_description_mobile') }} {{ $t('settings_notifications_push_notifications_warning_enable_description_mobile') }}
</p> </p>
<p :class="xl ? null : 'hidden'"> <p :class="xl ? null : 'hidden'">
{{ $t('settings.notifications.push_notifications.warning.enable_description_desktop') }} {{ $t('settings_notifications_push_notifications_warning_enable_description_desktop') }}
</p> </p>
</template> </template>
<p v-else> <p v-else>
{{ $t('settings.notifications.push_notifications.warning.enable_description_settings') }} {{ $t('settings_notifications_push_notifications_warning_enable_description_settings') }}
</p> </p>
<p v-if="isLegacyAccount"> <p v-if="isLegacyAccount">
{{ $t('settings.notifications.push_notifications.warning.re_auth') }} {{ $t('settings_notifications_push_notifications_warning_re_auth') }}
</p> </p>
<button <button
btn-outline rounded-full font-bold py4 flex="~ gap2 center" m5 btn-outline rounded-full font-bold py4 flex="~ gap2 center" m5
@ -67,7 +67,7 @@ const isLegacyAccount = computed(() => !currentUser.value?.vapidKey)
@click="$emit('subscribe')" @click="$emit('subscribe')"
> >
<span aria-hidden="true" :class="busy && animate ? 'i-ri:loader-2-fill animate-spin' : 'i-ri:check-line'" /> <span aria-hidden="true" :class="busy && animate ? 'i-ri:loader-2-fill animate-spin' : 'i-ri:check-line'" />
<span>{{ $t('settings.notifications.push_notifications.warning.enable_desktop') }}</span> <span>{{ $t('settings_notifications_push_notifications_warning_enable_desktop') }}</span>
</button> </button>
<slot name="error" /> <slot name="error" />
</div> </div>

View file

@ -18,7 +18,7 @@ const lang = $computed(() => {
<div i-ri:user-follow-fill me-3 color-primary aria-hidden="true" /> <div i-ri:user-follow-fill me-3 color-primary aria-hidden="true" />
<template v-if="count > 1"> <template v-if="count > 1">
<CommonLocalizedNumber <CommonLocalizedNumber
keypath="notification.followed_you_count" keypath="notification_followed_you_count"
:count="count" :count="count"
/> />
</template> </template>
@ -28,7 +28,7 @@ const lang = $computed(() => {
text-primary me-1 font-bold line-clamp-1 ws-pre-wrap break-all text-primary me-1 font-bold line-clamp-1 ws-pre-wrap break-all
/> />
<span me-1 ws-nowrap> <span me-1 ws-nowrap>
{{ $t('notification.followed_you') }} {{ $t('notification_followed_you') }}
</span> </span>
</template> </template>
</div> </div>

View file

@ -131,7 +131,7 @@ const { formatNumber } = useHumanReadableNumber()
<CommonPaginator :paginator="paginator" :preprocess="preprocess" :stream="stream" :eager="3" event-type="notification"> <CommonPaginator :paginator="paginator" :preprocess="preprocess" :stream="stream" :eager="3" event-type="notification">
<template #updater="{ number, update }"> <template #updater="{ number, update }">
<button py-4 border="b base" flex="~ col" p-3 w-full text-primary font-bold @click="() => { update(); clearNotifications() }"> <button py-4 border="b base" flex="~ col" p-3 w-full text-primary font-bold @click="() => { update(); clearNotifications() }">
{{ $t('timeline.show_new_items', number, { named: { v: formatNumber(number) } }) }} {{ $t('timeline_show_new_items', { count: number }) }}
</button> </button>
</template> </template>
<template #items="{ items }"> <template #items="{ items }">

View file

@ -13,7 +13,7 @@ const {
subscribe, subscribe,
unsubscribe, unsubscribe,
} = usePushManager() } = usePushManager()
const { t } = useI18n() const { $t } = useFluent()
const pwaEnabled = useRuntimeConfig().public.pwaEnabled const pwaEnabled = useRuntimeConfig().public.pwaEnabled
@ -68,12 +68,15 @@ const doSubscribe = async () => {
try { try {
const result = await subscribe() const result = await subscribe()
if (result !== 'subscribed') { if (result !== 'subscribed') {
subscribeError = t(`settings.notifications.push_notifications.subscription_error.${result === 'notification-denied' ? 'permission_denied' : 'request_error'}`) subscribeError = result === 'notification-denied'
? $t('settings_notifications_push_notifications_subscription_error_permission_denied')
: $t('settings_notifications_push_notifications_subscription_error_request_error')
showSubscribeError = true showSubscribeError = true
} }
} }
catch { catch {
subscribeError = t('settings.notifications.push_notifications.subscription_error.request_error') subscribeError = $t('settings_notifications_push_notifications_subscription_error_request_error')
showSubscribeError = true showSubscribeError = true
} }
finally { finally {
@ -104,28 +107,28 @@ onActivated(() => (busy = false))
<Transition name="slide-down"> <Transition name="slide-down">
<div v-if="show" flex="~ col" border="b base"> <div v-if="show" flex="~ col" border="b base">
<h3 id="pn-settings" px6 py4 mt2 font-bold text-xl flex="~ gap-1" items-center> <h3 id="pn-settings" px6 py4 mt2 font-bold text-xl flex="~ gap-1" items-center>
{{ $t('settings.notifications.push_notifications.label') }} {{ $t('settings_notifications_push_notifications_label') }}
</h3> </h3>
<template v-if="isSupported"> <template v-if="isSupported">
<div v-if="isSubscribed" flex="~ col"> <div v-if="isSubscribed" flex="~ col">
<form flex="~ col" gap-y-2 px6 pb4 @submit.prevent="saveSettings"> <form flex="~ col" gap-y-2 px6 pb4 @submit.prevent="saveSettings">
<p id="pn-instructions" text-sm pb2 aria-hidden="true"> <p id="pn-instructions" text-sm pb2 aria-hidden="true">
{{ $t('settings.notifications.push_notifications.instructions') }} {{ $t('settings_notifications_push_notifications_instructions') }}
</p> </p>
<fieldset flex="~ col" gap-y-1 py-1> <fieldset flex="~ col" gap-y-1 py-1>
<legend>{{ $t('settings.notifications.push_notifications.alerts.title') }}</legend> <legend>{{ $t('settings_notifications_push_notifications_alerts_title') }}</legend>
<CommonCheckbox v-model="pushNotificationData.follow" hover :label="$t('settings.notifications.push_notifications.alerts.follow')" /> <CommonCheckbox v-model="pushNotificationData.follow" hover :label="$t('settings_notifications_push_notifications_alerts_follow')" />
<CommonCheckbox v-model="pushNotificationData.favourite" hover :label="$t('settings.notifications.push_notifications.alerts.favourite')" /> <CommonCheckbox v-model="pushNotificationData.favourite" hover :label="$t('settings_notifications_push_notifications_alerts_favourite')" />
<CommonCheckbox v-model="pushNotificationData.reblog" hover :label="$t('settings.notifications.push_notifications.alerts.reblog')" /> <CommonCheckbox v-model="pushNotificationData.reblog" hover :label="$t('settings_notifications_push_notifications_alerts_reblog')" />
<CommonCheckbox v-model="pushNotificationData.mention" hover :label="$t('settings.notifications.push_notifications.alerts.mention')" /> <CommonCheckbox v-model="pushNotificationData.mention" hover :label="$t('settings_notifications_push_notifications_alerts_mention')" />
<CommonCheckbox v-model="pushNotificationData.poll" hover :label="$t('settings.notifications.push_notifications.alerts.poll')" /> <CommonCheckbox v-model="pushNotificationData.poll" hover :label="$t('settings_notifications_push_notifications_alerts_poll')" />
</fieldset> </fieldset>
<fieldset flex="~ col" gap-y-1 py-1> <fieldset flex="~ col" gap-y-1 py-1>
<legend>{{ $t('settings.notifications.push_notifications.policy.title') }}</legend> <legend>{{ $t('settings_notifications_push_notifications_policy_title') }}</legend>
<CommonRadio v-model="pushNotificationData.policy" hover value="all" :label="$t('settings.notifications.push_notifications.policy.all')" /> <CommonRadio v-model="pushNotificationData.policy" hover value="all" :label="$t('settings_notifications_push_notifications_policy_all')" />
<CommonRadio v-model="pushNotificationData.policy" hover value="followed" :label="$t('settings.notifications.push_notifications.policy.followed')" /> <CommonRadio v-model="pushNotificationData.policy" hover value="followed" :label="$t('settings_notifications_push_notifications_policy_followed')" />
<CommonRadio v-model="pushNotificationData.policy" hover value="follower" :label="$t('settings.notifications.push_notifications.policy.follower')" /> <CommonRadio v-model="pushNotificationData.policy" hover value="follower" :label="$t('settings_notifications_push_notifications_policy_follower')" />
<CommonRadio v-model="pushNotificationData.policy" hover value="none" :label="$t('settings.notifications.push_notifications.policy.none')" /> <CommonRadio v-model="pushNotificationData.policy" hover value="none" :label="$t('settings_notifications_push_notifications_policy_none')" />
</fieldset> </fieldset>
<div flex="~ col" gap-y-4 gap-x-2 py-1 sm="~ justify-between flex-row"> <div flex="~ col" gap-y-4 gap-x-2 py-1 sm="~ justify-between flex-row">
<button <button
@ -134,7 +137,7 @@ onActivated(() => (busy = false))
:disabled="busy || !saveEnabled" :disabled="busy || !saveEnabled"
> >
<span :class="busy && animateSave ? 'i-ri:loader-2-fill animate-spin' : 'i-ri:save-2-fill'" /> <span :class="busy && animateSave ? 'i-ri:loader-2-fill animate-spin' : 'i-ri:save-2-fill'" />
{{ $t('settings.notifications.push_notifications.save_settings') }} {{ $t('settings_notifications_push_notifications_save_settings') }}
</button> </button>
<button <button
btn-outline font-bold py2 full-w sm-wa flex="~ gap2 center" btn-outline font-bold py2 full-w sm-wa flex="~ gap2 center"
@ -144,7 +147,7 @@ onActivated(() => (busy = false))
@click="undoChanges" @click="undoChanges"
> >
<span aria-hidden="true" class="i-material-symbols:undo-rounded" /> <span aria-hidden="true" class="i-material-symbols:undo-rounded" />
{{ $t('settings.notifications.push_notifications.undo_settings') }} {{ $t('settings_notifications_push_notifications_undo_settings') }}
</button> </button>
</div> </div>
</form> </form>
@ -156,7 +159,7 @@ onActivated(() => (busy = false))
:disabled="busy" :disabled="busy"
> >
<span aria-hidden="true" :class="busy && animateRemoveSubscription ? 'i-ri:loader-2-fill animate-spin' : 'i-material-symbols:cancel-rounded'" /> <span aria-hidden="true" :class="busy && animateRemoveSubscription ? 'i-ri:loader-2-fill animate-spin' : 'i-material-symbols:cancel-rounded'" />
{{ $t('settings.notifications.push_notifications.unsubscribe') }} {{ $t('settings_notifications_push_notifications_unsubscribe') }}
</button> </button>
</form> </form>
</div> </div>
@ -180,7 +183,7 @@ onActivated(() => (busy = false))
</template> </template>
<div v-else px6 pb4 role="alert" aria-labelledby="n-unsupported"> <div v-else px6 pb4 role="alert" aria-labelledby="n-unsupported">
<p id="n-unsupported"> <p id="n-unsupported">
{{ $t('settings.notifications.push_notifications.unsupported') }} {{ $t('settings_notifications_push_notifications_unsupported') }}
</p> </p>
</div> </div>
</div> </div>

View file

@ -22,13 +22,13 @@ const { modelValue } = defineModel<{
<head id="notification-failed" flex justify-between> <head 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>
</div> </div>
<CommonTooltip placement="bottom" :content="$t('settings.notifications.push_notifications.subscription_error.clear_error')"> <CommonTooltip placement="bottom" :content="$t('settings_notifications_push_notifications_subscription_error_clear_error')">
<button <button
flex rounded-4 p1 flex rounded-4 p1
hover:bg-active cursor-pointer transition-100 hover:bg-active cursor-pointer transition-100
:aria-label="$t('settings.notifications.push_notifications.subscription_error.clear_error')" :aria-label="$t('settings_notifications_push_notifications_subscription_error_clear_error')"
@click="modelValue = false" @click="modelValue = false"
> >
<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 />

View file

@ -29,7 +29,7 @@ const toggleApply = () => {
<div absolute right-2 top-2> <div absolute right-2 top-2>
<div <div
v-if="removable" v-if="removable"
:aria-label="$t('attachment.remove_label')" :aria-label="$t('attachment_remove_label')"
hover:bg="gray/40" transition-100 p-1 rounded-5 cursor-pointer hover:bg="gray/40" transition-100 p-1 rounded-5 cursor-pointer
:class="[isHydrated && isSmallScreen ? '' : 'op-0 group-hover:op-100hover:']" :class="[isHydrated && isSmallScreen ? '' : 'op-0 group-hover:op-100hover:']"
mix-blend-difference mix-blend-difference
@ -40,7 +40,7 @@ const toggleApply = () => {
</div> </div>
<div absolute right-2 bottom-2> <div absolute right-2 bottom-2>
<button class="bg-black/75" text-white px2 py1 rounded-2 @click="isEditDialogOpen = true"> <button class="bg-black/75" text-white px2 py1 rounded-2 @click="isEditDialogOpen = true">
{{ $t('action.edit') }} {{ $t('action_edit') }}
</button> </button>
</div> </div>
<ModalDialog <ModalDialog
@ -52,16 +52,16 @@ const toggleApply = () => {
<div flex flex-col-reverse gap-5 md:flex-row> <div flex flex-col-reverse gap-5 md:flex-row>
<div flex flex-col gap-2 justify-between> <div flex flex-col gap-2 justify-between>
<h1 id="edit-attachment" font-bold> <h1 id="edit-attachment" font-bold>
{{ $t('attachment.edit_title') }} {{ $t('attachment_edit_title') }}
</h1> </h1>
<div flex flex-col gap-2> <div flex flex-col gap-2>
<textarea v-model="description" p-3 h-50 bg-base rounded-2 border-strong border-1 md:w-100 /> <textarea v-model="description" p-3 h-50 bg-base rounded-2 border-strong border-1 md:w-100 />
<button btn-outline @click="toggleApply"> <button btn-outline @click="toggleApply">
{{ $t('action.apply') }} {{ $t('action_apply') }}
</button> </button>
</div> </div>
<button btn-outline @click="isEditDialogOpen = false"> <button btn-outline @click="isEditDialogOpen = false">
{{ $t('action.close') }} {{ $t('action_close') }}
</button> </button>
</div> </div>
<StatusAttachment :attachment="attachment" w-full /> <StatusAttachment :attachment="attachment" w-full />

View file

@ -17,6 +17,6 @@ const disabledVisual = computed(() => isMastoInitialised.value && !currentUser.v
@click="openPublishDialog()" @click="openPublishDialog()"
> >
<div i-ri:quill-pen-line /> <div i-ri:quill-pen-line />
<span hidden xl:block>{{ $t('action.compose') }}</span> <span hidden xl:block>{{ $t('action_compose') }}</span>
</button> </button>
</template> </template>

View file

@ -6,7 +6,7 @@ let { modelValue } = $defineModel<{
modelValue: string modelValue: string
}>() }>()
const { t } = useI18n() const { $t } = useFluent()
const languageKeyword = $ref('') const languageKeyword = $ref('')
@ -42,7 +42,7 @@ function chooseLanguage(language: string) {
<div> <div>
<input <input
v-model="languageKeyword" v-model="languageKeyword"
:placeholder="t('language.search')" :placeholder="$t('language_search')"
p2 mb2 border-rounded w-full bg-transparent p2 mb2 border-rounded w-full bg-transparent
outline-none border="~ base" outline-none border="~ base"
> >

View file

@ -17,7 +17,7 @@ const chooseVisibility = (visibility: string) => {
</script> </script>
<template> <template>
<CommonTooltip placement="top" :content="editing ? $t(`visibility.${currentVisibility.value}`) : $t('tooltip.change_content_visibility')"> <CommonTooltip placement="top" :content="editing ? $t(`visibility.${currentVisibility.value}`) : $t('tooltip_change_content_visibility')">
<CommonDropdown placement="bottom"> <CommonDropdown placement="bottom">
<slot :visibility="currentVisibility" /> <slot :visibility="currentVisibility" />
<template #popper> <template #popper>
@ -25,8 +25,8 @@ const chooseVisibility = (visibility: string) => {
v-for="visibility in statusVisibilities" v-for="visibility in statusVisibilities"
:key="visibility.value" :key="visibility.value"
:icon="visibility.icon" :icon="visibility.icon"
:text="$t(`visibility.${visibility.value}`)" :text="$t(`visibility_${visibility.value}`)"
:description="$t(`visibility.${visibility.value}_desc`)" :description="$t(`visibility_${visibility.value}_desc`)"
:checked="visibility.value === modelValue" :checked="visibility.value === modelValue"
@click="chooseVisibility(visibility.value)" @click="chooseVisibility(visibility.value)"
/> />

View file

@ -27,7 +27,7 @@ const emit = defineEmits<{
(evt: 'published', status: mastodon.v1.Status): void (evt: 'published', status: mastodon.v1.Status): void
}>() }>()
const { t } = useI18n() const { $t } = useFluent()
let { draft, isEmpty } = $(useDraft(draftKey, initial)) let { draft, isEmpty } = $(useDraft(draftKey, initial))
@ -43,7 +43,7 @@ const { editor } = useTiptap({
draft.lastUpdated = Date.now() draft.lastUpdated = Date.now()
}, },
}), }),
placeholder: computed(() => placeholder ?? draft.params.inReplyToId ? t('placeholder.replying') : t('placeholder.default_1')), placeholder: computed(() => placeholder ?? draft.params.inReplyToId ? $t('placeholder_replying') : $t('placeholder_default_1')),
autofocus: shouldExpanded, autofocus: shouldExpanded,
onSubmit: publish, onSubmit: publish,
onFocus() { onFocus() {
@ -116,7 +116,7 @@ async function uploadAttachments(files: File[]) {
} }
else { else {
isExceedingAttachmentLimit = true isExceedingAttachmentLimit = true
failed = [...failed, [file.name, t('state.attachments_limit_error')]] failed = [...failed, [file.name, $t('state_attachments_limit_error')]]
} }
} }
isUploading = false isUploading = false
@ -198,7 +198,7 @@ const isPublishDisabled = computed(() => {
<template v-if="draft.editingStatus"> <template v-if="draft.editingStatus">
<div flex="~ col gap-1"> <div flex="~ col gap-1">
<div id="state-editing" text-secondary self-center> <div id="state-editing" text-secondary self-center>
{{ $t('state.editing') }} {{ $t('state_editing') }}
</div> </div>
<StatusCard :status="draft.editingStatus" :actions="false" :hover="false" px-0 /> <StatusCard :status="draft.editingStatus" :actions="false" :hover="false" px-0 />
</div> </div>
@ -220,7 +220,7 @@ const isPublishDisabled = computed(() => {
<input <input
v-model="draft.params.spoilerText" v-model="draft.params.spoilerText"
type="text" type="text"
:placeholder="$t('placeholder.content_warning')" :placeholder="$t('placeholder_content_warning')"
p2 border-rounded w-full bg-transparent p2 border-rounded w-full bg-transparent
outline-none border="~ base" outline-none border="~ base"
> >
@ -236,7 +236,7 @@ const isPublishDisabled = computed(() => {
<div v-if="isUploading" flex gap-1 items-center text-sm p1 text-primary> <div v-if="isUploading" flex gap-1 items-center text-sm p1 text-primary>
<div i-ri:loader-2-fill animate-spin /> <div i-ri:loader-2-fill animate-spin />
{{ $t('state.uploading') }} {{ $t('state_uploading') }}
</div> </div>
<div <div
v-else-if="failed.length > 0" v-else-if="failed.length > 0"
@ -251,13 +251,13 @@ const isPublishDisabled = computed(() => {
<head id="upload-failed" flex justify-between> <head id="upload-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>{{ $t('state.upload_failed') }}</p> <p>{{ $t('state_upload_failed') }}</p>
</div> </div>
<CommonTooltip placement="bottom" :content="$t('action.clear_upload_failed')"> <CommonTooltip placement="bottom" :content="$t('action_clear_upload_failed')">
<button <button
flex rounded-4 p1 flex rounded-4 p1
hover:bg-active cursor-pointer transition-100 hover:bg-active cursor-pointer transition-100
:aria-label="$t('action.clear_upload_failed')" :aria-label="$t('action_clear_upload_failed')"
@click="failed = []" @click="failed = []"
> >
<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 />
@ -265,7 +265,7 @@ const isPublishDisabled = computed(() => {
</CommonTooltip> </CommonTooltip>
</head> </head>
<div v-if="isExceedingAttachmentLimit" id="uploads-per-post" ps-2 sm:ps-1 text-small> <div v-if="isExceedingAttachmentLimit" id="uploads-per-post" ps-2 sm:ps-1 text-small>
{{ $t('state.attachments_exceed_server_limit') }} {{ $t('state_attachments_exceed_server_limit') }}
</div> </div>
<ol ps-2 sm:ps-1> <ol ps-2 sm:ps-1>
<li v-for="error in failed" :key="error[0]" flex="~ col sm:row" gap-y-1 sm:gap-x-2> <li v-for="error in failed" :key="error[0]" flex="~ col sm:row" gap-y-1 sm:gap-x-2>
@ -296,22 +296,22 @@ const isPublishDisabled = computed(() => {
@select="insertEmoji" @select="insertEmoji"
@select-custom="insertCustomEmoji" @select-custom="insertCustomEmoji"
> >
<button btn-action-icon :title="$t('tooltip.emoji')"> <button btn-action-icon :title="$t('tooltip_emoji')">
<div i-ri:emotion-line /> <div i-ri:emotion-line />
</button> </button>
</PublishEmojiPicker> </PublishEmojiPicker>
<CommonTooltip placement="top" :content="$t('tooltip.add_media')"> <CommonTooltip placement="top" :content="$t('tooltip_add_media')">
<button btn-action-icon :aria-label="$t('tooltip.add_media')" @click="pickAttachments"> <button btn-action-icon :aria-label="$t('tooltip_add_media')" @click="pickAttachments">
<div i-ri:image-add-line /> <div i-ri:image-add-line />
</button> </button>
</CommonTooltip> </CommonTooltip>
<template v-if="editor"> <template v-if="editor">
<CommonTooltip placement="top" :content="$t('tooltip.toggle_code_block')"> <CommonTooltip placement="top" :content="$t('tooltip_toggle_code_block')">
<button <button
btn-action-icon btn-action-icon
:aria-label="$t('tooltip.toggle_code_block')" :aria-label="$t('tooltip_toggle_code_block')"
:class="editor.isActive('codeBlock') ? 'text-primary' : ''" :class="editor.isActive('codeBlock') ? 'text-primary' : ''"
@click="editor?.chain().focus().toggleCodeBlock().run()" @click="editor?.chain().focus().toggleCodeBlock().run()"
> >
@ -326,16 +326,16 @@ const isPublishDisabled = computed(() => {
{{ characterCount ?? 0 }}<span text-secondary-light>/</span><span text-secondary-light>{{ characterLimit }}</span> {{ characterCount ?? 0 }}<span text-secondary-light>/</span><span text-secondary-light>{{ characterLimit }}</span>
</div> </div>
<CommonTooltip placement="top" :content="$t('tooltip.add_content_warning')"> <CommonTooltip placement="top" :content="$t('tooltip_add_content_warning')">
<button btn-action-icon :aria-label="$t('tooltip.add_content_warning')" @click="toggleSensitive"> <button btn-action-icon :aria-label="$t('tooltip_add_content_warning')" @click="toggleSensitive">
<div v-if="draft.params.sensitive" i-ri:alarm-warning-fill text-orange /> <div v-if="draft.params.sensitive" i-ri:alarm-warning-fill text-orange />
<div v-else i-ri:alarm-warning-line /> <div v-else i-ri:alarm-warning-line />
</button> </button>
</CommonTooltip> </CommonTooltip>
<CommonTooltip placement="top" :content="$t('tooltip.change_language')"> <CommonTooltip placement="top" :content="$t('tooltip_change_language')">
<CommonDropdown placement="bottom" auto-boundary-max-size> <CommonDropdown placement="bottom" auto-boundary-max-size>
<button btn-action-icon :aria-label="$t('tooltip.change_language')" w-12 mr--1> <button btn-action-icon :aria-label="$t('tooltip_change_language')" w-12 mr--1>
<div i-ri:translate-2 /> <div i-ri:translate-2 />
<div i-ri:arrow-down-s-line text-sm text-secondary me--1 /> <div i-ri:arrow-down-s-line text-sm text-secondary me--1 />
</button> </button>
@ -348,14 +348,14 @@ const isPublishDisabled = computed(() => {
<PublishVisibilityPicker v-model="draft.params.visibility" :editing="!!draft.editingStatus"> <PublishVisibilityPicker v-model="draft.params.visibility" :editing="!!draft.editingStatus">
<template #default="{ visibility }"> <template #default="{ visibility }">
<button :disabled="!!draft.editingStatus" :aria-label="$t('tooltip.change_content_visibility')" btn-action-icon :class="{ 'w-12': !draft.editingStatus }"> <button :disabled="!!draft.editingStatus" :aria-label="$t('tooltip_change_content_visibility')" btn-action-icon :class="{ 'w-12': !draft.editingStatus }">
<div :class="visibility.icon" /> <div :class="visibility.icon" />
<div v-if="!draft.editingStatus" i-ri:arrow-down-s-line text-sm text-secondary me--1 /> <div v-if="!draft.editingStatus" i-ri:arrow-down-s-line text-sm text-secondary me--1 />
</button> </button>
</template> </template>
</PublishVisibilityPicker> </PublishVisibilityPicker>
<CommonTooltip id="publish-tooltip" placement="top" :content="$t('tooltip.add_publishable_content')" :disabled="!isPublishDisabled"> <CommonTooltip id="publish-tooltip" placement="top" :content="$t('tooltip_add_publishable_content')" :disabled="!isPublishDisabled">
<button <button
btn-solid rounded-3 text-sm w-full btn-solid rounded-3 text-sm w-full
md:w-fit md:w-fit
@ -364,7 +364,7 @@ const isPublishDisabled = computed(() => {
aria-describedby="publish-tooltip" aria-describedby="publish-tooltip"
@click="publish" @click="publish"
> >
{{ !draft.editingStatus ? $t('action.publish') : $t('action.save_changes') }} {{ !draft.editingStatus ? $t('action_publish') : $t('action_save_changes') }}
</button> </button>
</CommonTooltip> </CommonTooltip>
</div> </div>

View file

@ -27,7 +27,7 @@ onMounted(() => {
<div text-right h-8> <div text-right h-8>
<VDropdown v-if="nonEmptyDrafts.length" placement="bottom-end"> <VDropdown v-if="nonEmptyDrafts.length" placement="bottom-end">
<button btn-text flex="inline center"> <button btn-text flex="inline center">
{{ $t('compose.drafts', nonEmptyDrafts.length, { named: { v: formatNumber(nonEmptyDrafts.length) } }) }}&#160;<div aria-hidden="true" i-ri:arrow-down-s-line /> {{ $t('compose_drafts', { count: formatNumber(nonEmptyDrafts.length) }) }}&#160;<div aria-hidden="true" i-ri:arrow-down-s-line />
</button> </button>
<template #popper="{ hide }"> <template #popper="{ hide }">
<div flex="~ col"> <div flex="~ col">

View file

@ -7,7 +7,7 @@
> >
<div i-ri-download-cloud-2-line /> <div i-ri-download-cloud-2-line />
<h2 flex="~ gap-2" items-center> <h2 flex="~ gap-2" items-center>
{{ $t('pwa.update_available_short') }} {{ $t('pwa_update_available_short') }}
</h2> </h2>
</button> </button>
</template> </template>

View file

@ -6,14 +6,14 @@
flex="~ col gap-3" flex="~ col gap-3"
> >
<h2 flex="~ gap-2" items-center> <h2 flex="~ gap-2" items-center>
{{ $t('pwa.title') }} {{ $t('pwa_title') }}
</h2> </h2>
<div flex="~ gap-1"> <div flex="~ gap-1">
<button type="button" btn-solid px-4 py-1 text-center text-sm @click="$pwa.updateServiceWorker()"> <button type="button" btn-solid px-4 py-1 text-center text-sm @click="$pwa.updateServiceWorker()">
{{ $t('pwa.update') }} {{ $t('pwa_update') }}
</button> </button>
<button type="button" btn-text filter-saturate-0 px-4 py-1 text-center text-sm @click="$pwa.close()"> <button type="button" btn-text filter-saturate-0 px-4 py-1 text-center text-sm @click="$pwa.close()">
{{ $t('pwa.dismiss') }} {{ $t('pwa_dismiss') }}
</button> </button>
</div> </div>
<div i-ri-arrow-down-circle-line absolute text-8em bottom--10 inset-ie--10 text-primary op10 class="-z-1" /> <div i-ri-arrow-down-circle-line absolute text-8em bottom--10 inset-ie--10 text-primary op10 class="-z-1" />

View file

@ -3,7 +3,6 @@ const query = ref('')
const { accounts, hashtags, loading, statuses } = useSearch(query) const { accounts, hashtags, loading, statuses } = useSearch(query)
const index = ref(0) const index = ref(0)
const { t } = useI18n()
const el = ref<HTMLElement>() const el = ref<HTMLElement>()
const router = useRouter() const router = useRouter()
const { focused } = useFocusWithin(el) const { focused } = useFocusWithin(el)
@ -66,7 +65,7 @@ const activate = () => {
bg-transparent bg-transparent
outline="focus:none" outline="focus:none"
pe-4 pe-4
:placeholder="t('nav.search')" :placeholder="$t('nav_search')"
pb="1px" pb="1px"
placeholder-text-secondary placeholder-text-secondary
@keydown.down.prevent="shift(1)" @keydown.down.prevent="shift(1)"
@ -78,7 +77,7 @@ const activate = () => {
<div left-0 top-12 absolute w-full z10 group-focus-within="pointer-events-auto visible" invisible pointer-events-none> <div left-0 top-12 absolute w-full z10 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') }}
</span> </span>
<template v-else-if="!loading"> <template v-else-if="!loading">
<template v-if="results.length > 0"> <template v-if="results.length > 0">
@ -90,7 +89,7 @@ const activate = () => {
/> />
</template> </template>
<span v-else block text-center text-sm text-secondary> <span v-else block text-center text-sm text-secondary>
{{ t('search.search_empty') }} {{ $t('search_search_empty') }}
</span> </span>
</template> </template>
<div v-else> <div v-else>

View file

@ -17,7 +17,7 @@ function setColorMode(mode: ColorMode) {
@click="setColorMode('dark')" @click="setColorMode('dark')"
> >
<div i-ri:moon-line /> <div i-ri:moon-line />
{{ $t('settings.interface.dark_mode') }} {{ $t('settings_interface_dark_mode') }}
</button> </button>
<button <button
btn-text flex-1 flex="~ gap-1 center" p4 border="~ base rounded" bg-base btn-text flex-1 flex="~ gap-1 center" p4 border="~ base rounded" bg-base
@ -26,7 +26,7 @@ function setColorMode(mode: ColorMode) {
@click="setColorMode('light')" @click="setColorMode('light')"
> >
<div i-ri:sun-line /> <div i-ri:sun-line />
{{ $t('settings.interface.light_mode') }} {{ $t('settings_interface_light_mode') }}
</button> </button>
</div> </div>
</template> </template>

View file

@ -9,7 +9,7 @@ const fontSize = useFontSizeRef()
<template> <template>
<select v-model="fontSize"> <select v-model="fontSize">
<option v-for="size in sizes" :key="size" :value="size" :selected="fontSize === size"> <option v-for="size in sizes" :key="size" :value="size" :selected="fontSize === size">
{{ `${$t(`settings.interface.size_label.${size}`)}${size === DEFAULT_FONT_SIZE ? $t('settings.interface.default') : ''}` }} {{ `${$t(`settings_interface_size_label_${size}`)}${size === DEFAULT_FONT_SIZE ? ` ${$t('settings_interface_default')}` : ''}` }}
</option> </option>
</select> </select>
</template> </template>

View file

@ -1,9 +1,9 @@
<script lang="ts" setup> <script lang="ts" setup>
import type { ComputedRef } from 'vue' import { locale, locales } from '~/config/i18n'
import type { LocaleObject } from '#i18n'
const { locale, setLocale } = useI18n() const setLocale = (code: string) => {
const { locales } = useI18n() as { locales: ComputedRef<LocaleObject[]> } locale.value = code
}
</script> </script>
<template> <template>

View file

@ -34,7 +34,7 @@ const reply = () => {
<div flex justify-between> <div flex justify-between>
<div flex-1> <div flex-1>
<StatusActionButton <StatusActionButton
:content="$t('action.reply')" :content="$t('action_reply')"
:text="status.repliesCount || ''" :text="status.repliesCount || ''"
color="text-blue" hover="text-blue" group-hover="bg-blue/10" color="text-blue" hover="text-blue" group-hover="bg-blue/10"
icon="i-ri:chat-1-line" icon="i-ri:chat-1-line"
@ -43,7 +43,7 @@ const reply = () => {
> >
<template v-if="status.repliesCount" #text> <template v-if="status.repliesCount" #text>
<CommonLocalizedNumber <CommonLocalizedNumber
keypath="action.reply_count" keypath="action_reply_count"
:count="status.repliesCount" :count="status.repliesCount"
/> />
</template> </template>
@ -52,7 +52,7 @@ const reply = () => {
<div flex-1> <div flex-1>
<StatusActionButton <StatusActionButton
:content="$t('action.boost')" :content="$t('action_boost')"
:text="status.reblogsCount || ''" :text="status.reblogsCount || ''"
color="text-green" hover="text-green" group-hover="bg-green/10" color="text-green" hover="text-green" group-hover="bg-green/10"
icon="i-ri:repeat-line" icon="i-ri:repeat-line"
@ -64,7 +64,7 @@ const reply = () => {
> >
<template v-if="status.reblogsCount" #text> <template v-if="status.reblogsCount" #text>
<CommonLocalizedNumber <CommonLocalizedNumber
keypath="action.boost_count" keypath="action_boost_count"
:count="status.reblogsCount" :count="status.reblogsCount"
/> />
</template> </template>
@ -73,7 +73,7 @@ const reply = () => {
<div flex-1> <div flex-1>
<StatusActionButton <StatusActionButton
:content="$t('action.favourite')" :content="$t('action_favourite')"
:text="status.favouritesCount || ''" :text="status.favouritesCount || ''"
color="text-rose" hover="text-rose" group-hover="bg-rose/10" color="text-rose" hover="text-rose" group-hover="bg-rose/10"
icon="i-ri:heart-3-line" icon="i-ri:heart-3-line"
@ -85,7 +85,7 @@ const reply = () => {
> >
<template v-if="status.favouritesCount" #text> <template v-if="status.favouritesCount" #text>
<CommonLocalizedNumber <CommonLocalizedNumber
keypath="action.favourite_count" keypath="action_favourite_count"
:count="status.favouritesCount" :count="status.favouritesCount"
/> />
</template> </template>
@ -94,7 +94,7 @@ const reply = () => {
<div flex-none> <div flex-none>
<StatusActionButton <StatusActionButton
:content="$t('action.bookmark')" :content="$t('action_bookmark')"
color="text-yellow" hover="text-yellow" group-hover="bg-yellow/10" color="text-yellow" hover="text-yellow" group-hover="bg-yellow/10"
icon="i-ri:bookmark-line" icon="i-ri:bookmark-line"
active-icon="i-ri:bookmark-fill" active-icon="i-ri:bookmark-fill"

View file

@ -22,7 +22,7 @@ const {
const clipboard = useClipboard() const clipboard = useClipboard()
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()
const { t } = useI18n() const { $t } = useFluent()
const isAuthor = $computed(() => status.account.id === currentUser.value?.account.id) const isAuthor = $computed(() => status.account.id === currentUser.value?.account.id)
@ -62,9 +62,9 @@ const shareLink = async (status: mastodon.v1.Status) => {
const deleteStatus = async () => { const deleteStatus = async () => {
if (await openConfirmDialog({ if (await openConfirmDialog({
title: t('menu.delete_confirm.title'), title: $t('menu_delete_confirm_title'),
confirm: t('menu.delete_confirm.confirm'), confirm: $t('menu_delete_confirm_confirm'),
cancel: t('menu.delete_confirm.cancel'), cancel: $t('menu_delete_confirm_cancel'),
}) !== 'confirm') }) !== 'confirm')
return return
@ -120,7 +120,7 @@ const showFavoritedAndBoostedBy = () => {
<template> <template>
<CommonDropdown flex-none ms3 placement="bottom" :eager-mount="command"> <CommonDropdown flex-none ms3 placement="bottom" :eager-mount="command">
<StatusActionButton <StatusActionButton
:content="$t('action.more')" :content="$t('action_more')"
color="text-purple" color="text-purple"
hover="text-purple" hover="text-purple"
group-hover="bg-purple/10" group-hover="bg-purple/10"
@ -132,14 +132,14 @@ const showFavoritedAndBoostedBy = () => {
<div flex="~ col"> <div flex="~ col">
<template v-if="userSettings.zenMode"> <template v-if="userSettings.zenMode">
<CommonDropdownItem <CommonDropdownItem
:text="$t('action.reply')" :text="$t('action_reply')"
icon="i-ri:chat-1-line" icon="i-ri:chat-1-line"
:command="command" :command="command"
@click="reply()" @click="reply()"
/> />
<CommonDropdownItem <CommonDropdownItem
:text="status.reblogged ? $t('action.boosted') : $t('action.boost')" :text="status.reblogged ? $t('action_boosted') : $t('action_boost')"
icon="i-ri:repeat-fill" icon="i-ri:repeat-fill"
:class="status.reblogged ? 'text-green' : ''" :class="status.reblogged ? 'text-green' : ''"
:command="command" :command="command"
@ -148,7 +148,7 @@ const showFavoritedAndBoostedBy = () => {
/> />
<CommonDropdownItem <CommonDropdownItem
:text="status.favourited ? $t('action.favourited') : $t('action.favourite')" :text="status.favourited ? $t('action_favourited') : $t('action_favourite')"
:icon="status.favourited ? 'i-ri:heart-3-fill' : 'i-ri:heart-3-line'" :icon="status.favourited ? 'i-ri:heart-3-fill' : 'i-ri:heart-3-line'"
:class="status.favourited ? 'text-rose' : ''" :class="status.favourited ? 'text-rose' : ''"
:command="command" :command="command"
@ -157,7 +157,7 @@ const showFavoritedAndBoostedBy = () => {
/> />
<CommonDropdownItem <CommonDropdownItem
:text="status.bookmarked ? $t('action.bookmarked') : $t('action.bookmark')" :text="status.bookmarked ? $t('action_bookmarked') : $t('action_bookmark')"
:icon="status.bookmarked ? 'i-ri:bookmark-fill' : 'i-ri:bookmark-line'" :icon="status.bookmarked ? 'i-ri:bookmark-fill' : 'i-ri:bookmark-line'"
:class="status.bookmarked ? 'text-yellow' : ''" :class="status.bookmarked ? 'text-yellow' : ''"
:command="command" :command="command"
@ -167,14 +167,21 @@ const showFavoritedAndBoostedBy = () => {
</template> </template>
<CommonDropdownItem <CommonDropdownItem
:text="$t('menu.show_favourited_and_boosted_by')" :text="$t('menu_show_favourited_and_boosted_by')"
icon="i-ri:hearts-line" icon="i-ri:hearts-line"
:command="command" :command="command"
@click="showFavoritedAndBoostedBy()" @click="showFavoritedAndBoostedBy()"
/> />
<CommonDropdownItem <CommonDropdownItem
:text="$t('menu.copy_link_to_post')" :text="$t('menu_show_favourited_and_boosted_by')"
icon="i-ri:hearts-line"
:command="command"
@click="showFavoritedAndBoostedBy()"
/>
<CommonDropdownItem
:text="$t('menu_copy_link_to_post')"
icon="i-ri:link" icon="i-ri:link"
:command="command" :command="command"
@click="copyLink(status)" @click="copyLink(status)"
@ -182,7 +189,7 @@ const showFavoritedAndBoostedBy = () => {
<CommonDropdownItem <CommonDropdownItem
v-if="isShareSupported" v-if="isShareSupported"
:text="$t('menu.share_post')" :text="$t('menu_share_post')"
icon="i-ri:share-line" icon="i-ri:share-line"
:command="command" :command="command"
@click="shareLink(status)" @click="shareLink(status)"
@ -190,7 +197,7 @@ const showFavoritedAndBoostedBy = () => {
<CommonDropdownItem <CommonDropdownItem
v-if="currentUser && (status.account.id === currentUser.account.id || status.mentions.some(m => m.id === currentUser!.account.id))" v-if="currentUser && (status.account.id === currentUser.account.id || status.mentions.some(m => m.id === currentUser!.account.id))"
:text="status.muted ? $t('menu.unmute_conversation') : $t('menu.mute_conversation')" :text="status.muted ? $t('menu_unmute_conversation') : $t('menu_mute_conversation')"
:icon="status.muted ? 'i-ri:eye-line' : 'i-ri:eye-off-line'" :icon="status.muted ? 'i-ri:eye-line' : 'i-ri:eye-off-line'"
:command="command" :command="command"
:disabled="isLoading.muted" :disabled="isLoading.muted"
@ -199,7 +206,7 @@ const showFavoritedAndBoostedBy = () => {
<NuxtLink v-if="status.url" :to="status.url" external target="_blank"> <NuxtLink v-if="status.url" :to="status.url" external target="_blank">
<CommonDropdownItem <CommonDropdownItem
:text="$t('menu.open_in_original_site')" :text="$t('menu_open_in_original_site')"
icon="i-ri:arrow-right-up-line" icon="i-ri:arrow-right-up-line"
:command="command" :command="command"
/> />
@ -207,7 +214,7 @@ const showFavoritedAndBoostedBy = () => {
<CommonDropdownItem <CommonDropdownItem
v-if="isTranslationEnabled && status.language !== languageCode" v-if="isTranslationEnabled && status.language !== languageCode"
:text="translation.visible ? $t('menu.show_untranslated') : $t('menu.translate_post')" :text="translation.visible ? $t('menu_show_untranslated') : $t('menu_translate_post')"
icon="i-ri:translate" icon="i-ri:translate"
:command="command" :command="command"
@click="toggleTranslation" @click="toggleTranslation"
@ -216,21 +223,21 @@ const showFavoritedAndBoostedBy = () => {
<template v-if="isMastoInitialised && currentUser"> <template v-if="isMastoInitialised && currentUser">
<template v-if="isAuthor"> <template v-if="isAuthor">
<CommonDropdownItem <CommonDropdownItem
:text="status.pinned ? $t('menu.unpin_on_profile') : $t('menu.pin_on_profile')" :text="status.pinned ? $t('menu_unpin_on_profile') : $t('menu_pin_on_profile')"
icon="i-ri:pushpin-line" icon="i-ri:pushpin-line"
:command="command" :command="command"
@click="togglePin" @click="togglePin"
/> />
<CommonDropdownItem <CommonDropdownItem
:text="$t('menu.edit')" :text="$t('menu_edit')"
icon="i-ri:edit-line" icon="i-ri:edit-line"
:command="command" :command="command"
@click="editStatus" @click="editStatus"
/> />
<CommonDropdownItem <CommonDropdownItem
:text="$t('menu.delete')" :text="$t('menu_delete')"
icon="i-ri:delete-bin-line" icon="i-ri:delete-bin-line"
text-red-600 text-red-600
:command="command" :command="command"
@ -238,7 +245,7 @@ const showFavoritedAndBoostedBy = () => {
/> />
<CommonDropdownItem <CommonDropdownItem
:text="$t('menu.delete_and_redraft')" :text="$t('menu_delete_and_redraft')"
icon="i-ri:eraser-line" icon="i-ri:eraser-line"
text-red-600 text-red-600
:command="command" :command="command"
@ -247,7 +254,7 @@ const showFavoritedAndBoostedBy = () => {
</template> </template>
<template v-else> <template v-else>
<CommonDropdownItem <CommonDropdownItem
:text="$t('menu.mention_account', [`@${status.account.acct}`])" :text="$t('menu_mention_account', { account: `@${status.account.acct}` })"
icon="i-ri:at-line" icon="i-ri:at-line"
:command="command" :command="command"
@click="mentionUser(status.account)" @click="mentionUser(status.account)"

View file

@ -179,10 +179,10 @@ useIntersectionObserver(video, (entries) => {
<div p4 flex flex-col gap-2 max-w-130> <div p4 flex flex-col gap-2 max-w-130>
<div flex justify-between> <div flex justify-between>
<h2 font-bold text-xl text-secondary> <h2 font-bold text-xl text-secondary>
{{ $t('status.img_alt.desc') }} {{ $t('status_img_alt_desc') }}
</h2> </h2>
<button v-close-popper text-sm btn-outline py0 px2 text-secondary border-base> <button v-close-popper text-sm btn-outline py0 px2 text-secondary border-base>
{{ $t('status.img_alt.dismiss') }} {{ $t('status_img_alt_dismiss') }}
</button> </button>
</div> </div>
<p> <p>

View file

@ -188,7 +188,7 @@ const showReplyTo = $computed(() => !replyToMain && !directReply)
</div> </div>
<div v-else-if="isFiltered" gap-2 p-4 :class="{ 'border-t border-base': newer }"> <div v-else-if="isFiltered" gap-2 p-4 :class="{ 'border-t border-base': newer }">
<p text-center text-secondary text-sm> <p text-center text-secondary text-sm>
{{ filterPhrase && `${$t('status.filter_removed_phrase')}: ${filterPhrase}` }} {{ filterPhrase && `${$t('status_filter_removed_phrase')}: ${filterPhrase}` }}
</p> </p>
</div> </div>
</template> </template>

View file

@ -30,7 +30,7 @@ const isFiltered = $computed(() => filterPhrase && (context && context !== 'deta
<StatusBody v-if="!isFiltered && status.sensitive && !status.spoilerText" :status="status" :with-action="!isDetails" :class="isDetails ? 'text-xl' : ''" /> <StatusBody v-if="!isFiltered && status.sensitive && !status.spoilerText" :status="status" :with-action="!isDetails" :class="isDetails ? 'text-xl' : ''" />
<StatusSpoiler :enabled="status.sensitive || isFiltered" :filter="isFiltered"> <StatusSpoiler :enabled="status.sensitive || isFiltered" :filter="isFiltered">
<template v-if="filterPhrase" #spoiler> <template v-if="filterPhrase" #spoiler>
<p>{{ `${$t('status.filter_hidden_phrase')}: ${filterPhrase}` }}</p> <p>{{ `${$t('status_filter_hidden_phrase')}: ${filterPhrase}` }}</p>
</template> </template>
<template v-else-if="status.spoilerText" #spoiler> <template v-else-if="status.spoilerText" #spoiler>
<p>{{ status.spoilerText }}</p> <p>{{ status.spoilerText }}</p>

View file

@ -19,10 +19,10 @@ const createdAt = useFormattedDateTime(status.createdAt)
const visibility = $computed(() => statusVisibilities.find(v => v.value === status.visibility)!) const visibility = $computed(() => statusVisibilities.find(v => v.value === status.visibility)!)
const { t } = useI18n() const { $t } = useFluent()
useHeadFixed({ useHeadFixed({
title: () => `${status.account.displayName || status.account.acct} ${t('common.in')} ${t('app_name')}: "${removeHTMLTags(status.content) || ''}"`, title: () => `${status.account.displayName || status.account.acct} ${$t('common_in')} ${$t('app_name')}: "${removeHTMLTags(status.content) || ''}"`,
}) })
const isDM = $computed(() => status.visibility === 'direct') const isDM = $computed(() => status.visibility === 'direct')
@ -44,7 +44,7 @@ const isDM = $computed(() => status.visibility === 'direct')
:status="status" :status="status"
:inline="false" :inline="false"
> >
<span ms1 font-bold cursor-pointer>{{ $t('state.edited') }}</span> <span ms1 font-bold cursor-pointer>{{ $t('state_edited') }}</span>
</StatusEditIndicator> </StatusEditIndicator>
</div> </div>
<div>&middot;</div> <div>&middot;</div>

View file

@ -17,16 +17,16 @@ function showRebloggedBy() {
type.value = 'boosted-by' type.value = 'boosted-by'
} }
const { t } = useI18n() const { $t } = useFluent()
const tabs = [ const tabs = [
{ {
name: 'favourited-by', name: 'favourited-by',
display: t('status.favourited_by'), display: $t('status_favourited_by'),
onClick: showFavouritedBy, onClick: showFavouritedBy,
}, },
{ {
name: 'boosted-by', name: 'boosted-by',
display: t('status.boosted_by'), display: $t('status_boosted_by'),
onClick: showRebloggedBy, onClick: showRebloggedBy,
}, },
] ]

View file

@ -17,12 +17,12 @@ const originalUrl = computed(() => {
<template> <template>
<CommonNotFound> <CommonNotFound>
<div flex="~ col center gap2"> <div flex="~ col center gap2">
<div>{{ $t('error.status_not_found') }}</div> <div>{{ $t('error_status_not_found') }}</div>
<NuxtLink v-if="originalUrl" :to="originalUrl" external target="_blank"> <NuxtLink v-if="originalUrl" :to="originalUrl" external target="_blank">
<button btn-solid flex="~ center gap-2" text-sm px2 py1> <button btn-solid flex="~ center gap-2" text-sm px2 py1>
<div i-ri:arrow-right-up-line /> <div i-ri:arrow-right-up-line />
{{ $t('status.try_original_site') }} {{ $t('status_try_original_site') }}
</button> </button>
</NuxtLink> </NuxtLink>
</div> </div>

View file

@ -44,7 +44,7 @@ const votersCount = $computed(() => poll.votersCount ?? 0)
{{ option.title }} {{ option.title }}
</label> </label>
<button btn-solid> <button btn-solid>
{{ $t('action.vote') }} {{ $t('action_vote') }}
</button> </button>
</form> </form>
<template v-else> <template v-else>
@ -63,12 +63,12 @@ const votersCount = $computed(() => poll.votersCount ?? 0)
</template> </template>
<div text-sm flex="~ inline" gap-x-1> <div text-sm flex="~ inline" gap-x-1>
<CommonLocalizedNumber <CommonLocalizedNumber
keypath="status.poll.count" keypath="status_poll.count"
:count="poll.votesCount" :count="poll.votesCount"
/> />
&middot; &middot;
<CommonTooltip :content="expiredTimeFormatted" class="inline-block" placement="right"> <CommonTooltip :content="expiredTimeFormatted" class="inline-block" placement="right">
<time :datetime="poll.expiresAt!">{{ $t(poll.expired ? 'status.poll.finished' : 'status.poll.ends', [expiredTimeAgo]) }}</time> <time :datetime="poll.expiresAt!">{{ $t(poll.expired ? 'status_poll_finished' : 'status_poll_ends', { date: expiredTimeAgo }) }}</time>
</CommonTooltip> </CommonTooltip>
</div> </div>
</div> </div>

View file

@ -18,23 +18,23 @@ const account = isSelf ? computed(() => status.account) : useAccountById(status.
v-if="status.inReplyToId" v-if="status.inReplyToId"
flex="~ gap2" items-center h-auto text-sm text-secondary flex="~ gap2" items-center h-auto text-sm text-secondary
:to="getStatusInReplyToRoute(status)" :to="getStatusInReplyToRoute(status)"
:title="$t('status.replying_to', [account ? getDisplayName(account) : $t('status.someone')])" :title="$t('status_replying_to', { username: account ? getDisplayName(account) : $ta('status_replying_to').unknown })"
text-blue saturate-50 hover:saturate-100 text-blue saturate-50 hover:saturate-100
> >
<template v-if="isSelfReply"> <template v-if="isSelfReply">
<div i-ri-discuss-line text-blue /> <div i-ri-discuss-line text-blue />
<span>{{ $t('status.show_full_thread') }}</span> <span>{{ $t('status_show_full_thread') }}</span>
</template> </template>
<template v-else> <template v-else>
<div i-ri-chat-1-line text-blue /> <div i-ri-chat-1-line text-blue />
<i18n-t keypath="status.replying_to"> <i18n path="status_replying_to" flex gap-x-1>
<template v-if="account"> <template #username="{ unknown }">
<AccountInlineInfo :account="account" :link="false" /> <AccountInlineInfo v-if="account" :account="account" :link="false" />
</template>
<template v-else> <template v-else>
{{ $t('status.someone') }} {{ unknown }}
</template> </template>
</i18n-t> </template>
</i18n>
</template> </template>
</NuxtLink> </NuxtLink>
</template> </template>

View file

@ -18,7 +18,7 @@ watchEffect(() => {
<button btn-text px-2 py-1 bg-base flex="~ center gap-2" :class="showContent ? '' : 'filter-saturate-0 hover:filter-saturate-100'" @click="toggleContent()"> <button btn-text px-2 py-1 bg-base flex="~ center gap-2" :class="showContent ? '' : 'filter-saturate-0 hover:filter-saturate-100'" @click="toggleContent()">
<div v-if="showContent" i-ri:eye-line /> <div v-if="showContent" i-ri:eye-line />
<div v-else i-ri:eye-close-line /> <div v-else i-ri:eye-close-line />
{{ showContent ? $t('status.spoiler_show_less') : $t(filter ? 'status.filter_show_anyway' : 'status.spoiler_show_more') }} {{ showContent ? $t('status_spoiler_show_less') : $t(filter ? 'status.filter_show_anyway' : 'status.spoiler_show_more') }}
</button> </button>
</div> </div>
</div> </div>

View file

@ -12,7 +12,7 @@ const formatted = useFormattedDateTime(editedAt)
<template> <template>
<template v-if="editedAt"> <template v-if="editedAt">
<CommonTooltip v-if="inline" :content="$t('status.edited', [formatted])"> <CommonTooltip v-if="inline" :content="$t('status_edited', { date: formatted })">
&#160; &#160;
<time <time
:title="editedAt" :title="editedAt"
@ -28,7 +28,7 @@ const formatted = useFormattedDateTime(editedAt)
<template #popper> <template #popper>
<div text-sm p2> <div text-sm p2>
<div text-center mb1> <div text-center mb1>
{{ $t('status.edited', [formatted]) }} {{ $t('status_edited', { date: formatted }) }}
</div> </div>
<StatusEditHistory :status="status" /> <StatusEditHistory :status="status" />
</div> </div>

View file

@ -11,7 +11,7 @@ const { edit } = defineProps<{
<div text-center flex="~ row gap-1 wrap"> <div text-center flex="~ row gap-1 wrap">
<AccountInlineInfo :account="edit.account" /> <AccountInlineInfo :account="edit.account" />
<span> <span>
{{ $t('status_history.edited', [useFormattedDateTime(edit.createdAt).value]) }} {{ $t('status_history_edited', { date: useFormattedDateTime(edit.createdAt).value }) }}
</span> </span>
</div> </div>

View file

@ -25,10 +25,10 @@ const toggleFollowTag = async () => {
<button <button
rounded group focus:outline-none rounded group focus:outline-none
hover:text-primary focus-visible:text-primary hover:text-primary focus-visible:text-primary
:aria-label="tag.following ? $t('tag.unfollow_label', [tag.name]) : $t('tag.follow_label', [tag.name])" :aria-label="tag.following ? $t('tag_unfollow_label', { tag: tag.name }) : $t('tag_follow_label', { tag: tag.name })"
@click="toggleFollowTag()" @click="toggleFollowTag()"
> >
<CommonTooltip placement="bottom" :content="tag.following ? $t('tag.unfollow') : $t('tag.follow')"> <CommonTooltip placement="bottom" :content="tag.following ? $t('tag_unfollow') : $t('tag_follow')">
<div rounded-full p2 group-hover="bg-orange/10" group-focus-visible="bg-orange/10" group-focus-visible:ring="2 current"> <div rounded-full p2 group-hover="bg-orange/10" group-focus-visible="bg-orange/10" group-focus-visible:ring="2 current">
<div :class="[tag.following ? 'i-ri:star-fill' : 'i-ri:star-line']" /> <div :class="[tag.following ? 'i-ri:star-fill' : 'i-ri:star-line']" />
</div> </div>

View file

@ -13,7 +13,6 @@ const { paginator, stream, account, buffer = 10 } = defineProps<{
buffer?: number buffer?: number
}>() }>()
const { formatNumber } = useHumanReadableNumber()
const virtualScroller = $(useFeatureFlag('experimentalVirtualScroller')) const virtualScroller = $(useFeatureFlag('experimentalVirtualScroller'))
const showOriginSite = $computed(() => const showOriginSite = $computed(() =>
@ -25,7 +24,7 @@ const showOriginSite = $computed(() =>
<CommonPaginator v-bind="{ paginator, stream, preprocess, buffer }" :virtual-scroller="virtualScroller"> <CommonPaginator v-bind="{ paginator, stream, preprocess, buffer }" :virtual-scroller="virtualScroller">
<template #updater="{ number, update }"> <template #updater="{ number, update }">
<button py-4 border="b base" flex="~ col" p-3 w-full text-primary font-bold @click="update"> <button py-4 border="b base" flex="~ col" p-3 w-full text-primary font-bold @click="update">
{{ $t('timeline.show_new_items', number, { named: { v: formatNumber(number) } }) }} {{ $t('timeline_show_new_items', { count: number }) }}
</button> </button>
</template> </template>
<template #default="{ item, older, newer, active }"> <template #default="{ item, older, newer, active }">
@ -40,14 +39,14 @@ const showOriginSite = $computed(() =>
</template> </template>
<template v-if="context === 'account' && showOriginSite" #done> <template v-if="context === 'account' && showOriginSite" #done>
<div p5 text-secondary text-center flex flex-col items-center gap1> <div p5 text-secondary text-center flex flex-col items-center gap1>
<span italic>{{ $t('timeline.view_older_posts') }}</span> <span italic>{{ $t('timeline_view_older_posts') }}</span>
<a <a
:href="account!.url" target="_blank" :href="account!.url" target="_blank"
flex="~ gap-1" items-center text-primary flex="~ gap-1" items-center text-primary
hover="underline text-primary-active" hover="underline text-primary-active"
> >
<div i-ri:external-link-fill /> <div i-ri:external-link-fill />
{{ $t('menu.open_in_original_site') }} {{ $t('menu_open_in_original_site') }}
</a> </a>
</div> </div>
</template> </template>

View file

@ -1,6 +1,6 @@
<template> <template>
<VDropdown :distance="0" placement="top-start"> <VDropdown :distance="0" placement="top-start">
<button btn-action-icon :aria-label="$t('action.switch_account')"> <button btn-action-icon :aria-label="$t('action_switch_account')">
<div :class="{ 'hidden xl:block': currentUser }" i-ri:more-2-line /> <div :class="{ 'hidden xl:block': currentUser }" i-ri:more-2-line />
<AccountAvatar v-if="currentUser" xl:hidden :account="currentUser.account" w-9 h-9 square /> <AccountAvatar v-if="currentUser" xl:hidden :account="currentUser.account" w-9 h-9 square />
</button> </button>

View file

@ -109,11 +109,11 @@ onClickOutside($$(input), () => {
<div flex="~ center" items-end mb2 gap-x-2> <div flex="~ center" items-end mb2 gap-x-2>
<img src="/logo.svg" w-12 h-12 mxa height="48" width="48" :alt="$t('app_logo')" class="rtl-flip"> <img src="/logo.svg" w-12 h-12 mxa height="48" width="48" :alt="$t('app_logo')" class="rtl-flip">
<div text-3xl> <div text-3xl>
{{ $t('action.sign_in') }} {{ $t('action_sign_in') }}
</div> </div>
</div> </div>
<div> <div>
{{ $t('user.server_address_label') }} {{ $t('user_server_address_label') }}
</div> </div>
<div :class="error ? 'animate animate-shake-x animate-delay-100' : null"> <div :class="error ? 'animate animate-shake-x animate-delay-100' : null">
<div <div
@ -166,7 +166,7 @@ onClickOutside($$(input), () => {
<div min-h-4> <div min-h-4>
<Transition css enter-active-class="animate animate-fade-in"> <Transition css enter-active-class="animate animate-fade-in">
<p v-if="displayError" role="alert" p-0 m-0 text-xs text-red-600 dark:text-red-400> <p v-if="displayError" role="alert" p-0 m-0 text-xs text-red-600 dark:text-red-400>
{{ $t('error.sign_in_error') }} {{ $t('error_sign_in_error') }}
</p> </p>
</Transition> </Transition>
</div> </div>
@ -175,13 +175,13 @@ onClickOutside($$(input), () => {
<div i-ri:lightbulb-line me-1 /> <div i-ri:lightbulb-line me-1 />
<span> <span>
<i18n-t keypath="user.tip_no_account"> <i18n-t keypath="user.tip_no_account">
<a href="https://joinmastodon.org/servers" target="_blank" hover="underline text-primary">{{ $t('user.tip_register_account') }}</a> <a href="https://joinmastodon.org/servers" target="_blank" hover="underline text-primary">{{ $t('user_tip_register_account') }}</a>
</i18n-t> </i18n-t>
</span> </span>
</div> </div>
<button flex="~ row" gap-x-2 items-center btn-solid mt2 :disabled="!server || busy"> <button flex="~ row" gap-x-2 items-center btn-solid mt2 :disabled="!server || busy">
<span aria-hidden="true" inline-block :class="busy ? 'i-ri:loader-2-fill animate animate-spin' : 'i-ri:login-circle-line'" class="rtl-flip" /> <span aria-hidden="true" inline-block :class="busy ? 'i-ri:loader-2-fill animate animate-spin' : 'i-ri:login-circle-line'" class="rtl-flip" />
{{ $t('action.sign_in') }} {{ $t('action_sign_in') }}
</button> </button>
</form> </form>
</template> </template>

View file

@ -1,15 +1,17 @@
<template> <template>
<div p8 lg:flex="~ col gap2" hidden> <div p8 lg:flex="~ col gap2" hidden>
<p v-if="isMastoInitialised" text-sm> <p v-if="isMastoInitialised" text-sm>
<i18n-t keypath="user.sign_in_notice_title"> <i18n path="user_sign_in_notice_title">
<template #server>
<strong>{{ currentServer }}</strong> <strong>{{ currentServer }}</strong>
</i18n-t> </template>
</i18n>
</p> </p>
<p text-sm text-secondary> <p text-sm text-secondary>
{{ $t('user.sign_in_desc') }} {{ $t('user_sign_in_desc') }}
</p> </p>
<button btn-solid rounded-3 text-center mt-2 @click="openSigninDialog()"> <button btn-solid rounded-3 text-center mt-2 @click="openSigninDialog()">
{{ $t('action.sign_in') }} {{ $t('action_sign_in') }}
</button> </button>
</div> </div>
</template> </template>

View file

@ -40,13 +40,13 @@ const switchUser = (user: UserLogin) => {
</template> </template>
<div border="t base" pt2> <div border="t base" pt2>
<CommonDropdownItem <CommonDropdownItem
:text="$t('user.add_existing')" :text="$t('user_add_existing')"
icon="i-ri:user-add-line" icon="i-ri:user-add-line"
@click="openSigninDialog" @click="openSigninDialog"
/> />
<CommonDropdownItem <CommonDropdownItem
v-if="isMastoInitialised && currentUser" v-if="isMastoInitialised && currentUser"
:text="$t('user.sign_out_account', [getFullHandle(currentUser.account)])" :text="$t('user_sign_out_account', { username: getFullHandle(currentUser.account) })"
icon="i-ri:logout-box-line rtl-flip" icon="i-ri:logout-box-line rtl-flip"
@click="signout" @click="signout"
/> />

View file

@ -1,8 +1,7 @@
import type { ComputedRef } from 'vue'
import { defineStore } from 'pinia' import { defineStore } from 'pinia'
import Fuse from 'fuse.js' import Fuse from 'fuse.js'
import type { LocaleObject } from '#i18n'
import type { SearchResult } from '~/composables/masto/search' import type { SearchResult } from '~/composables/masto/search'
import { locale, locales } from '~~/config/i18n'
// @unocss-include // @unocss-include
@ -238,8 +237,7 @@ export function useCommands(cmds: () => CommandProvider[]) {
} }
export const provideGlobalCommands = () => { export const provideGlobalCommands = () => {
const { locale, t } = useI18n() const { $t } = useFluent()
const { locales } = useI18n() as { locales: ComputedRef<LocaleObject[]> }
const router = useRouter() const router = useRouter()
const users = useUsers() const users = useUsers()
const masto = useMasto() const masto = useMasto()
@ -248,7 +246,7 @@ export const provideGlobalCommands = () => {
useCommand({ useCommand({
scope: 'Navigation', scope: 'Navigation',
name: () => t('nav.settings'), name: () => $t('nav_settings'),
icon: 'i-ri:settings-3-line', icon: 'i-ri:settings-3-line',
onActivate() { onActivate() {
@ -259,7 +257,7 @@ export const provideGlobalCommands = () => {
useCommand({ useCommand({
scope: 'Preferences', scope: 'Preferences',
name: () => t('command.toggle_dark_mode'), name: () => $t('command_toggle_dark_mode'),
icon: () => colorMode.value === 'light' ? 'i-ri:sun-line' : 'i-ri:moon-line', icon: () => colorMode.value === 'light' ? 'i-ri:sun-line' : 'i-ri:moon-line',
onActivate() { onActivate() {
@ -270,7 +268,7 @@ export const provideGlobalCommands = () => {
useCommand({ useCommand({
scope: 'Preferences', scope: 'Preferences',
name: () => t('command.toggle_zen_mode'), name: () => $t('command_toggle_zen_mode'),
icon: () => userSettings.value.zenMode ? 'i-ri:layout-right-2-line' : 'i-ri:layout-right-line', icon: () => userSettings.value.zenMode ? 'i-ri:layout-right-2-line' : 'i-ri:layout-right-line',
onActivate() { onActivate() {
@ -281,7 +279,7 @@ export const provideGlobalCommands = () => {
useCommand({ useCommand({
scope: 'Preferences', scope: 'Preferences',
name: () => t('command.select_lang'), name: () => $t('command_select_lang'),
icon: 'i-ri:earth-line', icon: 'i-ri:earth-line',
onComplete: () => ({ onComplete: () => ({
@ -289,7 +287,7 @@ export const provideGlobalCommands = () => {
display: 'Languages', display: 'Languages',
}), }),
}) })
useCommands(() => locales.value.map(l => ({ useCommands(() => locales.map(l => ({
parent: 'language', parent: 'language',
scope: 'Languages', scope: 'Languages',
@ -304,8 +302,8 @@ export const provideGlobalCommands = () => {
useCommand({ useCommand({
scope: 'Account', scope: 'Account',
name: () => t('action.sign_in'), name: () => $t('action_sign_in'),
description: () => t('command.sign_in_desc'), description: () => $t('command_sign_in_desc'),
icon: 'i-ri:user-add-line', icon: 'i-ri:user-add-line',
onActivate() { onActivate() {
@ -317,8 +315,8 @@ export const provideGlobalCommands = () => {
visible: () => users.value.length > 1, visible: () => users.value.length > 1,
name: () => t('action.switch_account'), name: () => $t('action_switch_account'),
description: () => t('command.switch_account_desc'), description: () => $t('command_switch_account_desc'),
icon: 'i-ri:user-shared-line', icon: 'i-ri:user-shared-line',
onComplete: () => ({ onComplete: () => ({
@ -332,7 +330,7 @@ export const provideGlobalCommands = () => {
visible: () => user.account.id !== currentUser.value?.account.id, visible: () => user.account.id !== currentUser.value?.account.id,
name: () => t('command.switch_account', [getFullHandle(user.account)]), name: () => $t('command_switch_account', { username: getFullHandle(user.account) }),
icon: 'i-ri:user-shared-line', icon: 'i-ri:user-shared-line',
onActivate() { onActivate() {
@ -344,7 +342,7 @@ export const provideGlobalCommands = () => {
visible: () => currentUser.value, visible: () => currentUser.value,
name: () => t('user.sign_out_account', [getFullHandle(currentUser.value!.account)]), name: () => $t('user_sign_out_account', { username: getFullHandle(currentUser.value!.account) }),
icon: 'i-ri:logout-box-line', icon: 'i-ri:logout-box-line',
onActivate() { onActivate() {

1
composables/fluent.ts Normal file
View file

@ -0,0 +1 @@
export { useFluent } from 'fluent-vue'

View file

@ -1,4 +1,5 @@
import type { MaybeComputedRef, MaybeRef, UseTimeAgoOptions } from '@vueuse/core' import type { MaybeComputedRef, MaybeRef, UseTimeAgoOptions } from '@vueuse/core'
import { locale } from '~~/config/i18n'
const formatter = Intl.NumberFormat() const formatter = Intl.NumberFormat()
@ -6,32 +7,37 @@ export function formattedNumber(num: number, useFormatter: Intl.NumberFormat = f
return useFormatter.format(num) return useFormatter.format(num)
} }
const numberFormats = {
percentage: {
style: 'percent',
maximumFractionDigits: 1,
},
smallCounting: {
style: 'decimal',
maximumFractionDigits: 0,
},
bigCounting: {
notation: 'compact',
compactDisplay: 'short',
maximumFractionDigits: 0,
},
} as const
function format(number: MaybeRef<number>, format: keyof typeof numberFormats) {
return new Intl.NumberFormat(locale.value, numberFormats[format]).format(unref(number))
}
export function useHumanReadableNumber() { export function useHumanReadableNumber() {
const { n, locale } = useI18n()
const fn = (num: number) => {
return n(
num,
num < 10000
? 'smallCounting'
: num < 1000000
? 'kiloCounting'
: 'millionCounting',
locale.value,
)
}
return { return {
formatHumanReadableNumber: (num: MaybeRef<number>) => fn(unref(num)), formatHumanReadableNumber: (num: MaybeRef<number>) => format(num, unref(num) < 10000 ? 'smallCounting' : 'bigCounting'),
formatNumber: (num: MaybeRef<number>) => n(unref(num), 'smallCounting', locale.value), formatNumber: (num: MaybeRef<number>) => format(num, 'smallCounting'),
formatPercentage: (num: MaybeRef<number>) => n(unref(num), 'percentage', locale.value), formatPercentage: (num: MaybeRef<number>) => format(num, 'percentage'),
forSR: (num: MaybeRef<number>) => unref(num) > 10000, forSR: (num: MaybeRef<number>) => unref(num) > 10000,
} }
} }
export function useFormattedDateTime(value: MaybeComputedRef<string | number | Date | undefined | null>, export function useFormattedDateTime(value: MaybeComputedRef<string | number | Date | undefined | null>,
options: Intl.DateTimeFormatOptions = { dateStyle: 'long', timeStyle: 'medium' }) { options: Intl.DateTimeFormatOptions = { dateStyle: 'long', timeStyle: 'medium' }) {
const { locale } = useI18n()
const formatter = $computed(() => Intl.DateTimeFormat(locale.value, options)) const formatter = $computed(() => Intl.DateTimeFormat(locale.value, options))
return computed(() => { return computed(() => {
const v = resolveUnref(value) const v = resolveUnref(value)
@ -40,15 +46,11 @@ export function useFormattedDateTime(value: MaybeComputedRef<string | number | D
} }
export function useTimeAgoOptions(short = false): UseTimeAgoOptions<false> { export function useTimeAgoOptions(short = false): UseTimeAgoOptions<false> {
const { d, t, n: fnf, locale } = useI18n() const { $t } = useFluent()
const prefix = short ? 'short_' : '' const prefix = short ? 'short_' : ''
const fn = (n: number, past: boolean, key: string) => { const fn = (n: number, past: boolean, key: string) => {
return t(`time_ago_options.${prefix}${key}_${past ? 'past' : 'future'}`, n, { return $t(`time_ago_options_${prefix}${key}_${past ? 'past' : 'future'}`, { n })
named: {
v: fnf(n, 'smallCounting', locale.value),
},
})
} }
return { return {
@ -56,7 +58,7 @@ export function useTimeAgoOptions(short = false): UseTimeAgoOptions<false> {
showSecond: !short, showSecond: !short,
updateInterval: short ? 60000 : 1000, updateInterval: short ? 60000 : 1000,
messages: { messages: {
justNow: t('time_ago_options.just_now'), justNow: $t('time_ago_options_just_now'),
// just return the value // just return the value
past: n => n, past: n => n,
// just return the value // just return the value
@ -71,7 +73,19 @@ export function useTimeAgoOptions(short = false): UseTimeAgoOptions<false> {
invalid: '', invalid: '',
}, },
fullDateFormatter(date) { fullDateFormatter(date) {
return d(date, short ? 'short' : 'long') const options: Intl.DateTimeFormatOptions = short
? {
dateStyle: 'short',
timeStyle: 'short',
}
: {
dateStyle: 'long',
timeStyle: 'medium',
}
const intl = new Intl.DateTimeFormat(locale.value, options)
return intl.format(date)
}, },
} }
} }

View file

@ -1,14 +1,13 @@
import type { Directions } from 'vue-i18n-routing' import { locale, locales } from '~/config/i18n'
import type { LocaleObject } from '#i18n'
export function setupPageHeader() { export function setupPageHeader() {
const { locale, locales, t } = useI18n() const { $t } = useFluent()
const buildInfo = useBuildInfo() const buildInfo = useBuildInfo()
const localeMap = (locales.value as LocaleObject[]).reduce((acc, l) => { const localeMap = locales.reduce((acc, l) => {
acc[l.code!] = l.dir ?? 'auto' acc[l.code!] = l.dir ?? 'auto'
return acc return acc
}, {} as Record<string, Directions>) }, {} as Record<string, 'rtl' | 'ltr' | 'auto'>)
useHeadFixed({ useHeadFixed({
htmlAttrs: { htmlAttrs: {
@ -17,7 +16,7 @@ export function setupPageHeader() {
}, },
titleTemplate: (title) => { titleTemplate: (title) => {
let titleTemplate = title ? `${title} | ` : '' let titleTemplate = title ? `${title} | ` : ''
titleTemplate += t('app_name') titleTemplate += $t('app_name')
if (buildInfo.env !== 'release') if (buildInfo.env !== 'release')
titleTemplate += ` (${buildInfo.env})` titleTemplate += ` (${buildInfo.env})`
return titleTemplate return titleTemplate

View file

@ -1,169 +1,63 @@
import type { NuxtI18nOptions } from '@nuxtjs/i18n' import { ref } from 'vue'
import type { DateTimeFormats, NumberFormats, PluralizationRule, PluralizationRules } from '@intlify/core-base'
import type { LocaleObject } from '#i18n' interface LocaleObjectData {
code: string
interface LocaleObjectData extends LocaleObject { name: string
numberFormats?: NumberFormats dir?: 'ltr' | 'rtl'
dateTimeFormats?: DateTimeFormats
pluralRule?: PluralizationRule
} }
const locales: LocaleObjectData[] = [ export const defaultLocale = 'en-US'
export const locale = ref(defaultLocale)
export const locales: LocaleObjectData[] = [
{ {
code: 'en-US', code: 'en-US',
file: 'en-US.json',
name: 'English (US)', name: 'English (US)',
}, },
{ {
code: 'en-GB', code: 'en-GB',
file: 'en-GB.json',
name: 'English (UK)', name: 'English (UK)',
}, },
{ {
code: 'de-DE', code: 'de-DE',
file: 'de-DE.json',
name: 'Deutsch', name: 'Deutsch',
}, },
{ {
code: 'zh-CN', code: 'zh-CN',
file: 'zh-CN.json',
name: '简体中文', name: '简体中文',
}, },
{ {
code: 'zh-TW', code: 'zh-TW',
file: 'zh-TW.json',
name: '繁体中文', name: '繁体中文',
}, },
{ {
code: 'ja-JP', code: 'ja-JP',
file: 'ja-JP.json',
name: '日本語', name: '日本語',
}, },
{ {
code: 'nl-NL', code: 'nl-NL',
file: 'nl-NL.json',
name: 'Nederlands', name: 'Nederlands',
}, },
{ {
code: 'es-ES', code: 'es-ES',
file: 'es-ES.json',
name: 'Español', name: 'Español',
}, },
{ {
code: 'fr-FR', code: 'fr-FR',
file: 'fr-FR.json',
name: 'Français', name: 'Français',
}, },
{ {
code: 'uk-UA', code: 'uk-UA',
file: 'uk-UA.json',
name: 'Українська', name: 'Українська',
pluralRule: (choice: number) => {
if (choice === 0)
return 0
const name = new Intl.PluralRules('uk-UA').select(choice)
return { zero: 0, one: 1, two: 0 /* not used */, few: 2, many: 3, other: 4 }[name]
},
}, },
{ {
code: 'cs-CZ', code: 'cs-CZ',
file: 'cs-CZ.json',
name: 'Česky', name: 'Česky',
}, },
({ {
code: 'ar-EG', code: 'ar-EG',
file: 'ar-EG.json',
name: 'العربية', name: 'العربية',
dir: 'rtl', dir: 'rtl' as const,
pluralRule: (choice: number) => {
const name = new Intl.PluralRules('ar-EG').select(choice)
return { zero: 0, one: 1, two: 2, few: 3, many: 4, other: 5 }[name]
}, },
} satisfies LocaleObjectData),
].sort((a, b) => a.code.localeCompare(b.code)) ].sort((a, b) => a.code.localeCompare(b.code))
const datetimeFormats = Object.values(locales).reduce((acc, data) => {
const dateTimeFormats = data.dateTimeFormats
if (dateTimeFormats) {
acc[data.code] = { ...dateTimeFormats }
delete data.dateTimeFormats
}
else {
acc[data.code] = {
shortDate: {
dateStyle: 'short',
},
short: {
dateStyle: 'short',
timeStyle: 'short',
},
long: {
dateStyle: 'long',
timeStyle: 'medium',
},
}
}
return acc
}, <DateTimeFormats>{})
const numberFormats = Object.values(locales).reduce((acc, data) => {
const numberFormats = data.numberFormats
if (numberFormats) {
acc[data.code] = { ...numberFormats }
delete data.numberFormats
}
else {
acc[data.code] = {
percentage: {
style: 'percent',
maximumFractionDigits: 1,
},
smallCounting: {
style: 'decimal',
maximumFractionDigits: 0,
},
kiloCounting: {
notation: 'compact',
compactDisplay: 'short',
maximumFractionDigits: 1,
},
millionCounting: {
notation: 'compact',
compactDisplay: 'short',
maximumFractionDigits: 2,
},
}
}
return acc
}, <NumberFormats>{})
const pluralRules = Object.values(locales).reduce((acc, data) => {
const pluralRule = data.pluralRule
if (pluralRule) {
acc[data.code] = pluralRule
delete data.pluralRule
}
return acc
}, <PluralizationRules>{})
export const i18n: NuxtI18nOptions = {
locales,
strategy: 'no_prefix',
detectBrowserLanguage: false,
langDir: 'locales',
defaultLocale: 'en-US',
vueI18n: {
fallbackLocale: 'en-US',
fallbackWarn: false,
missingWarn: false,
datetimeFormats,
numberFormats,
pluralRules,
},
lazy: true,
}

319
locales/ar-EG.ftl Normal file
View file

@ -0,0 +1,319 @@
a11y_loading_page = الصفحة قيد التحميل، يرجى الانتظار
a11y_loading_titled_page = الصفحة {$title} قيد التحميل ، يرجى الانتظار
a11y_locale_changed = تم تغيير اللغة إلى {$lang}
a11y_locale_changing = يتم تغيير اللغة، يرجى الانتظار
a11y_route_loaded = تم تحميل الصفحة {$title}
account_avatar_description = صورة حساب {$username}
account_blocked_by = تم حظرك من قبل هذا المستخدم
account_blocked_domains = النطاقات المحظورة
account_blocked_users = المستخدمين المحظورين
account_blocking = محظور
account_bot = حساب آلي
account_favourites = المفضلة
account_follow = إتبع
account_follow_back = إعادة متابعة
account_follow_requested = طلبت المتابعة
account_followers = متابِعون
account_followers_count = { $count ->
[zero] لا يوجد متابعون
[one] { $formattedCount } متابِع
[two] { $formattedCount } متابِعين
[few] { $formattedCount } متابِعون
[many] { $formattedCount } متابِع
*[other] { $formattedCount } متابِع
}
account_following = مُتابَع
account_following_count = { $count ->
[zero] لا يتبع أحدا
[one] { $formattedCount } مُتابَع
[two] { $formattedCount } مُتابَعين
[few] { $formattedCount } مُتابَعون
[many] { $formattedCount } مُتابَع
*[other] { $formattedCount } مُتابَع
}
account_follows_you = يتابعك
account_go_to_profile = اعرض الصفحة التعريفية
account_joined = انضم
account_moved_title = أشار إلى أن حسابهم الجديد أصبح على
account_muted_users = المستخدمين المكتومين
account_muting = قُمتَ(ي) بكتم
account_mutuals = المتبادلين
account_pinned = المثبتة
account_posts = المنشورات
account_posts_count = { $count ->
[zero] {$formattedCount} منشورات
[one] {$formattedCount} منشور
[two] {$formattedCount} منشورين
[few] {$formattedCount} منشورات
[many] {$formattedCount} منشور
*[other] {$formattedCount} منشور
}
account_profile_description = {$username} رأسية حساب
account_profile_unavailable = حساب غير متوفر
account_unblock = إلغاء حظر
account_unfollow = إلغاء متابعة
account_unmute = إلغاء كتم
action_apply = تطبيق
action_bookmark = إضافة إلى العلامات المرجعية
action_bookmarked = مضاف إلى العلامات المرجعية
action_boost = إعادة نشر
action_boosted = أعيد نشرها
action_clear_upload_failed = مسح أخطاء تحميل الملف
action_close = أغلق
action_compose = منشور جديد
action_confirm = أكد
action_edit = تعديل
action_enter_app = أدخل التطبيق
action_favourite = إضافة إلى المفضلين
action_favourited = مضاف إلى المفضلين
action_more = المزيد
action_next = التالي
action_prev = السابق
action_publish = نشر
action_reply = رد
action_save = حفظ
action_save_changes = حفظ التغييرات
action_sign_in = تسجيل الدخول
action_switch_account = تغيير الحساب
action_vote = قم بالتصويت
app_desc_short = موقع الكتروني ماستدون رشيق
app_logo = Elk شعار
app_name = Elk
attachment_edit_title = وصف
attachment_remove_label = قم بإزالة المرفق
command_activate = تفعيل
command_complete = أكمل
command_compose_desc = اكتب منشور جديد
command_n-people-in-the-past-n-days = {$count} أشخاص في الأيام ال {$days} الماضية
command_select_lang = اختار اللغة
command_sign_in_desc = إضافة حساب قائم
command_switch_account = التبديل إلى {$username}
command_switch_account_desc = قم بالتبديل إلى حساب آخر
command_toggle_dark_mode = تبديل المظهر الداكن
command_toggle_zen_mode = تبديل وضع الهدوء
common_end_of_list = نهاية القائمة
common_error = حدث خطأ
common_in = في
common_not_found = 404 غير معثور عليه
common_offline_desc = يبدو أنك غير متصل بالإنترنت. يرجى التحقق من اتصالك.
conversation_with = مع
error_account_not_found = حساب {$username} غير موجود
error_explore-list-empty = لا توجد مشاركات شائعة الآن. تحقق مرة أخرى لاحقًا!
error_file_size_cannot_exceed_n_mb = لا يمكن أن يتجاوز حجم الملف {$size} ميغابايت
error_sign_in_error = لا يمكن الاتصال بالموقع
error_status_not_found = لا يمكن إيجاد المنشور
error_unsupported_file_format = لا يمكن تحميل هذا النوع من الملفات
help_desc_highlight = توقع بعض الأخطاء والميزات المفقودة هنا وهناك.
help_desc_para1 = نشكرك على اهتمامك بتجربة Elk ، عميل ماستدون العام!
help_desc_para2 = نحن نعمل بجد على التطوير وتحسينه بمرور الوقت. وسندعوك قريبًا للانضمام إلى القوة بمجرد أن نجعلها مفتوحة المصدر قريبًا!
help_desc_para3 = قبل ذلك ، للمساعدة في تعزيز التنمية ، يمكنك رعاية أعضاء فريقنا من خلال الروابط أدناه.
help_title = Elk في عرض مسبق
menu_block_account = حظر {$username}
menu_block_domain = حظر المجال {$domain}
menu_copy_link_to_post = انسخ الرابط إلى هذا المنشور
menu_delete = حذف
menu_delete_and_redraft = حذف وإعادة صياغة
menu_direct_message_account = إرسال رسالة مباشرة إلى {$username}
menu_edit = تعديل
menu_mention_account = أذكر {$username}
menu_mute_account = كتم {$username}
menu_mute_conversation = تجاهل هذا المنصب
menu_open_in_original_site = فتح في الموقع الأصلي
menu_pin_on_profile = تثبيت على حسابك الشخصي
menu_show_untranslated = عرض بدون ترجمة
menu_toggle_theme_dark = تبديل المظهر الداكن
menu_toggle_theme_light = تبديل المظهر الفاتح
menu_translate_post = ترجم المنشور
menu_unblock_account = رفع الحظر عن {$username}
menu_unblock_domain = رفع الحظر عن النطاق {$domain}
menu_unmute_account = إلغاء كتم الحساب {$username}
menu_unmute_conversation = إلغاء كتم المحادثة
menu_unpin_on_profile = إلغاء التثبيت من الملف الشخصي
nav_bookmarks = العلامات المرجعية
nav_built_at = Built {0}
nav_conversations = المحادثات
nav_explore = استكشف
nav_favourites = المفضلة
nav_federated = الفديرالية
nav_home = الرئيسيّة
nav_local = المحلي
nav_notifications = التنبيهات
nav_profile = الصفحة التعريفية
nav_search = البحث
nav_select_feature_flags = تبديل علامات الميزات
nav_select_font_size = حجم الخط
nav_select_language = اختار اللغة
nav_settings = الإعدادات
nav_show_intro = عرض المقدمة
nav_toggle_theme = تبديل المظهر
nav_zen_mode = الوضع الهادئ
notification_favourited_post = أُعجِب بمنشورك
notification_followed_you = بدأ في متابعتك
notification_followed_you_count = لم يتبعك أحد|تبعك شخص واحد|تبعك شخصان|تبعك {0} أشخاص|تبعك {0} شخص| تبعك {0} شخص
notification_missing_type = MISSING notification.type:
notification_reblogged_post = اعاد نشر منشورك
notification_request_to_follow = طلب(ت) متابعتك
notification_signed_up = تسجل
notification_update_status = قام(ت) بتحديث حالته(ا)
placeholder_content_warning = اكتب تحذيرك هنا
placeholder_default_1 = ماذا يدور في ذهنك؟
placeholder_reply_to_account = الرد على {0}
placeholder_replying = الرد
placeholder_the_thread = المحادثة
pwa_dismiss = تجاهل
pwa_title = يتوفر تحديث Elk الجديد
pwa_update = تحديث
pwa_update_available_short = تحديث Elk
search_search_desc = ابحث عن الأشخاص والهاشتاج
settings_about_label = بشأن Elk
settings_feature_flags_github_cards = GitHub بطاقات
settings_feature_flags_title = الميزات التجريبية
settings_feature_flags_user_picker = الشريط الجانبي لمبدل المستخدم
settings_feature_flags_virtual_scroll = التمرير الافتراضي
settings_interface_color_mode = وضع اللون
settings_interface_dark_mode = الوضع الداكن
settings_interface_default = (إفتراضي)
settings_interface_font_size = حجم الخط
settings_interface_label = واجهه المستخدم
settings_interface_light_mode = وضع الضوء
settings_language_display_language = اللغة المعروضة
settings_language_label = اللغة
settings_notifications_label = Notifications
settings_notifications_notifications_label = Notifications settings
settings_notifications_push_notifications_alerts_favourite = المفضلة
settings_notifications_push_notifications_alerts_follow = متابعين جدد
settings_notifications_push_notifications_alerts_mention = المنشورات التي تذكرني
settings_notifications_push_notifications_alerts_poll = استطلاعات الرأي
settings_notifications_push_notifications_alerts_reblog = إعادة نشر منشورك
settings_notifications_push_notifications_alerts_title = ما هي التنبيهات التي تريد تلقيها؟
settings_notifications_push_notifications_description = Receive notifications even when you are not using Elk.
settings_notifications_push_notifications_instructions = Don't forget to save your changes using @:settings.notifications.push_notifications.save_settings button!
settings_notifications_push_notifications_label = Push notifications settings
settings_notifications_push_notifications_policy_all = من اي شخص
settings_notifications_push_notifications_policy_followed = من الناس الذين أتابعهم
settings_notifications_push_notifications_policy_follower = من الناس الذين يتبعونني
settings_notifications_push_notifications_policy_none = من لا أحد
settings_notifications_push_notifications_policy_title = من الذي يمكنني تلقي التنبيهات منه؟
settings_notifications_push_notifications_save_settings = حفظ التغييرات الإعدادات
settings_notifications_push_notifications_undo_settings = تراجع عن تغييرات الإعدادات
settings_notifications_push_notifications_unsubscribe = تعطيل التنبيهات
settings_notifications_push_notifications_unsupported = متصفحك لا يدعم التنبيهات
settings_notifications_push_notifications_warning_enable_close = أغلق
settings_notifications_push_notifications_warning_enable_description = لتلقي التنبيهات عندما لا يكون Elk مفتوحًا، قم بتمكين تنبيهات النظام. يمكنك التحكم بدقة في أنواع التفاعلات التي تنشئ تنبيهات النظام عبر الزر "Show Settings" أعلاه.
settings_notifications_push_notifications_warning_enable_description_settings = To receive notifications when Elk is not open, enable push notifications. You will be able to control precisely what types of interactions generate push notifications on this same screen once you enable them.
settings_notifications_push_notifications_warning_enable_desktop = تفعيل تنبيهات النظام
settings_notifications_push_notifications_warning_enable_title = لا تفوت عليك أي شيء
settings_notifications_push_notifications_warning_re_auth = يبدو أن الخادم الخاص بك لا يدعم دفع التنبيهات. حاول تسجيل الخروج ثم تسجيل الدخول مرة أخرى ، إذا استمرت هذه الرسالة في الظهور ، فاتصل بمسؤول الخادم.
settings_notifications_show_btn = Go to notifications settings
settings_notifications_settings = Notifications
settings_preferences_label = التفضيلات
settings_profile_appearance_bio = النبذة التعريفية
settings_profile_appearance_description = تعديل الصورة الرمزية واسم المستخدم والملف الشخصي...
settings_profile_appearance_display_name = الاسم المعروض
settings_profile_appearance_label = المظهر
settings_profile_appearance_title = تعديل الملف الشخصي
settings_profile_featured_tags_description = يمكن للأشخاص تصفح مشاركاتك العامة تحت علامات الهاشتاغ هذه
settings_profile_featured_tags_label = الهاشتاغ البارزة
settings_profile_label = الملف الشخصي
settings_select_a_settings = اختر الإعداد
settings_users_export = Export User Tokens
settings_users_import = Import User Tokens
settings_users_label = المستخدمون المسجلون
state_edited = (معدل)
state_editing = تعديل
state_loading = جاري التحميل ...
state_upload_failed = التحميل فشل
state_uploading = جاري التحميل ...
status_edited = عدل {$date}
status_filter_hidden_phrase = تمت تصفيتها بواسطة
status_filter_removed_phrase = تمت إزالته بواسطة عامل التصفية
status_filter_show_anyway = عرض على أي حال
status_img_alt_desc = وصف
status_img_alt_dismiss = تجاهل
status_poll_count = لا توجد اصوات|صوت {0}|صوتين|{0} أصوات|{0} صوت|{0} صوت
status_poll_ends = ينتهي في {0}
status_poll_finished = انتهى في {0}
status_reblogged = {0} اعاد نشر
status_someone = شخص ما
status_spoiler_show_less = عرض أقل
status_spoiler_show_more = عرض المزيد
status_try_original_site = جرب الموقع الأصلي
status_history_created = تم إنشاؤه في {0}
status_history_edited = تم تعديله في {$date}
tab_for_you = مصممة لك
tab_hashtags = هاشتاغ
tab_media = الصور/الفيديو
tab_news = الأخبار
tab_notifications_all = كل شىء
tab_notifications_mention = موجهة إلي
tab_posts = المنشورات
tab_posts_with_replies = المنشورات والردود
time_ago_options_day_future = في 0 أيام|غدا|في يومين|في {v} أيام|في {v} يوم|في {v} يوم
time_ago_options_day_past = منذ 0 أيام|البارحة|منذ يومين|منذ {v} أيام|منذ {v} يوم|منذ {v} يوم
time_ago_options_hour_future = في 0 ساعات|في ساعة|في ساعتين|في {v} ساعات|في {v} ساعة|في {v} ساعة
time_ago_options_hour_past = منذ 0 ساعات|منذ ساعة واحدة|منذ ساعتين|منذ {v} ساعات|منذ {v} ساعة|منذ {v} ساعة
time_ago_options_just_now = الآن
time_ago_options_minute_future = في 0 دقائق|في دقيقة واحدة|في دقيقتين|في {v} دقائق|في {v} دقيقة|في {v} دقيقة
time_ago_options_minute_past = منذ 0 دقائق|منذ دقيقة واحدة|منذ دقيقتين|منذ {v} دقائق|منذ {v} دقيقة|منذ {v} دقيقة
time_ago_options_month_future = في 0 أشهر|الشهر القادم|في شهرين|في {v} أشهر|في {v} شهر|في {v} شهر
time_ago_options_month_past = منذ 0 أشهر|الشهر الماضي|منذ شهرين|منذ {v} أشهر|منذ {v} شهر|منذ {v} شهر
time_ago_options_second_future = الآن|في ثانية|في ثانيتين|في {v} ثواني|في {v} ثانية|في {v} ثانية
time_ago_options_second_past = للتو|منذ ثانية|منذ ثانيتين|منذ {v} ثواني|منذ {v} ثانية|منذ {v} ثانية
time_ago_options_short_day_future = في 0 أيام|غدا|في يومين|في {v} أيام|في {v} يوم|في {v} يوم
time_ago_options_short_day_past = منذ 0 أيام|البارحة|منذ يومين|منذ {v} أيام|منذ {v} يوم|منذ {v} يوم
time_ago_options_short_hour_future = في 0 ساعات|في ساعة|في ساعتين|في {v} ساعات|في {v} ساعة|في {v} ساعة
time_ago_options_short_hour_past = { $n ->
[zero] منذ 0 ساعات
[one] منذ ساعة واحدة
[two] منذ ساعتين
[few] منذ {$n} ساعات
[many] منذ {$n} ساعة
*[other] منذ {$n} ساعة
}
time_ago_options_short_minute_future = في 0 دقائق|في دقيقة واحدة|في دقيقتين|في {v} دقائق|في {v} دقيقة|في {v} دقيقة
time_ago_options_short_minute_past = { $n ->
[zero] منذ 0 دقائق
[one] منذ دقيقة واحدة
[two] منذ دقيقتين
[few] منذ {$n} دقائق
[many] منذ {$n} دقيقة
*[other] منذ {$n} دقيقة
}
time_ago_options_short_month_future = في 0 أشهر|الشهر القادم|في شهرين|في {v} أشهر|في {v} شهر|في {v} شهر
time_ago_options_short_month_past = منذ 0 أشهر|الشهر الماضي|منذ شهرين|منذ {v} أشهر|منذ {v} شهر|منذ {v} شهر
time_ago_options_short_second_future = الآن|في ثانية|في ثانيتين|في {v} ثواني|في {v} ثانية|في {v} ثانية
time_ago_options_short_second_past = للتو|منذ ثانية|منذ ثانيتين|منذ {v} ثواني|منذ {v} ثانية|منذ {v} ثانية
time_ago_options_short_week_future = في 0 أسابيع|الاسبوع القادم|في اسبوعين|في {v} أسابيع|في {v} اسبوع|في {v} اسبوع
time_ago_options_short_week_past = منذ 0 أسابيع|الاسبوع الماضي|منذ اسبوعين|منذ {v} أسابيع|منذ {v} اسبوع|منذ {v} اسبوع
time_ago_options_short_year_future = هذا العام|العام القادم|في عامين|في {v} عاما|في {v} عام|في {v} عام
time_ago_options_short_year_past = هذا العام|العام الماضي|منذ عامين|منذ {v} عاما|منذ {v} عام|منذ {v} عام
time_ago_options_week_future = في 0 أسابيع|الاسبوع القادم|في اسبوعين|في {v} أسابيع|في {v} اسبوع|في {v} اسبوع
time_ago_options_week_past = منذ 0 أسابيع|الاسبوع الماضي|منذ اسبوعين|منذ {v} أسابيع|منذ {v} اسبوع|منذ {v} اسبوع
time_ago_options_year_future = هذا العام|العام القادم|في عامين|في {v} عاما|في {v} عام|في {v} عام
time_ago_options_year_past = هذا العام|العام الماضي|منذ عامين|منذ {v} عاما|منذ {v} عام|منذ {v} عام
timeline_show_new_items = لا توجد عناصر جديدة|إظهار {v} عنصر جديد|إظهار {v} عنصرين جديدين|إظهار {v} عناصر جديدة|إظهار {v} عنصر جديد|إظهار {v} عنصر جديد
title_federated_timeline = الجدول الزمني الموحد
title_local_timeline = الجدول الزمني المحلي
tooltip_add_content_warning = إضافة تحذير المحتوى
tooltip_add_media = أضف صورًا أو مقطع فيديو أو ملفًا صوتيًا
tooltip_change_content_visibility = تغيير خصوصية المحتوى
tooltip_emoji = رمز تعبيري
tooltip_explore_links_intro = يتم التحدث عن هذه القصص الإخبارية من قبل الأشخاص الموجودين على هذه الشبكة وغيرها من الشبكات اللامركزية في الوقت الحالي
tooltip_explore_posts_intro = تكتسب هذه المنشورات الكثير من النشاط على الشبكة وغيرها من الشبكات اللامركزية في الوقت الحالي
tooltip_explore_tags_intro = تكتسب هذه الهاشتاغ الكثير من النشاط بين الأشخاص على هذه الشبكة وغيرها من الشبكات اللامركزية في الوقت الحالي
tooltip_toggle_code_block = تبديل كتلة التعليمات البرمجية
user_add_existing = إضافة حساب قائم
user_server_address_label = عنوان خادم ماستودون
user_sign_in_desc = قم بتسجيل الدخول لمتابعة الملفات الشخصية والمشاركة والرد على المنشورات أو التفاعل من حسابك على خادم مختلف
user_sign_in_notice_title = عرض البيانات العامة من {0}
user_sign_out_account = تسجيل الخروج من {$username}
user_tip_no_account = إذا ليس لديك حساب ماستودون ، {0}
user_tip_register_account = اختر خادم ماستودون الخاص بك وقم بتسجيل حساب
visibility_direct = رسالة مباشرة
visibility_direct_desc = مرئي للمستخدمين المذكورين فقط
visibility_private = المتابعون فقط
visibility_private_desc = مرئي للمتابعين فقط
visibility_public = عام
visibility_public_desc = مرئي للجميع
visibility_unlisted = غير مدرج
visibility_unlisted_desc = مرئي للجميع ، ولكن تم إلغاء الاشتراك في ميزات الاكتشاف

View file

@ -1,374 +0,0 @@
{
"a11y": {
"loading_page": "الصفحة قيد التحميل، يرجى الانتظار",
"loading_titled_page": "الصفحة {0} قيد التحميل ، يرجى الانتظار",
"locale_changed": "تم تغيير اللغة إلى {0}",
"locale_changing": "يتم تغيير اللغة، يرجى الانتظار",
"route_loaded": "تم تحميل الصفحة {0}"
},
"account": {
"avatar_description": "صورة حساب {0}",
"blocked_by": "تم حظرك من قبل هذا المستخدم",
"blocked_domains": "النطاقات المحظورة",
"blocked_users": "المستخدمين المحظورين",
"blocking": "محظور",
"bot": "حساب آلي",
"favourites": "المفضلة",
"follow": "إتبع",
"follow_back": "إعادة متابعة",
"follow_requested": "طلبت المتابعة",
"followers": "متابِعون",
"followers_count": "لا يوجد متابعون|{0} متابِع|{0} متابِعين|{0} متابِعون|{0} متابِع|{0} متابِع",
"following": "مُتابَع",
"following_count": "لا يتبع أحدا|{0} مُتابَع|{0} مُتابَعين|{0} مُتابَعون|{0} مُتابَع|{0} مُتابَع",
"follows_you": "يتابعك",
"go_to_profile": "اعرض الصفحة التعريفية",
"joined": "انضم",
"moved_title": "أشار إلى أن حسابهم الجديد أصبح على",
"muted_users": "المستخدمين المكتومين",
"muting": "قُمتَ(ي) بكتم",
"mutuals": "المتبادلين",
"pinned": "المثبتة",
"posts": "المنشورات",
"posts_count": "{0} منشورات|{0} منشور|{0} منشورين|{0} منشورات|{0} منشور|{0} منشور",
"profile_description": "{0} رأسية حساب",
"profile_unavailable": "حساب غير متوفر",
"unblock": "إلغاء حظر",
"unfollow": "إلغاء متابعة",
"unmute": "إلغاء كتم"
},
"action": {
"apply": "تطبيق",
"bookmark": "إضافة إلى العلامات المرجعية",
"bookmarked": "مضاف إلى العلامات المرجعية",
"boost": "إعادة نشر",
"boosted": "أعيد نشرها",
"clear_upload_failed": "مسح أخطاء تحميل الملف",
"close": "أغلق",
"compose": "منشور جديد",
"confirm": "أكد",
"edit": "تعديل",
"enter_app": "أدخل التطبيق",
"favourite": "إضافة إلى المفضلين",
"favourited": "مضاف إلى المفضلين",
"more": "المزيد",
"next": "التالي",
"prev": "السابق",
"publish": "نشر",
"reply": "رد",
"save": "حفظ",
"save_changes": "حفظ التغييرات",
"sign_in": "تسجيل الدخول",
"switch_account": "تغيير الحساب",
"vote": "قم بالتصويت"
},
"app_desc_short": "موقع الكتروني ماستدون رشيق",
"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": "تبديل وضع الهدوء"
},
"common": {
"end_of_list": "نهاية القائمة",
"error": "حدث خطأ",
"in": "في",
"not_found": "404 غير معثور عليه",
"offline_desc": "يبدو أنك غير متصل بالإنترنت. يرجى التحقق من اتصالك."
},
"conversation": {
"with": "مع"
},
"error": {
"account_not_found": "حساب {0} غير موجود",
"explore-list-empty": "لا توجد مشاركات شائعة الآن. تحقق مرة أخرى لاحقًا!",
"file_size_cannot_exceed_n_mb": "لا يمكن أن يتجاوز حجم الملف {0} ميغابايت",
"sign_in_error": "لا يمكن الاتصال بالموقع",
"status_not_found": "لا يمكن إيجاد المنشور",
"unsupported_file_format": "لا يمكن تحميل هذا النوع من الملفات"
},
"help": {
"desc_highlight": "توقع بعض الأخطاء والميزات المفقودة هنا وهناك.",
"desc_para1": "نشكرك على اهتمامك بتجربة Elk ، عميل ماستدون العام!",
"desc_para2": "نحن نعمل بجد على التطوير وتحسينه بمرور الوقت. وسندعوك قريبًا للانضمام إلى القوة بمجرد أن نجعلها مفتوحة المصدر قريبًا!",
"desc_para3": "قبل ذلك ، للمساعدة في تعزيز التنمية ، يمكنك رعاية أعضاء فريقنا من خلال الروابط أدناه.",
"title": "Elk في عرض مسبق"
},
"menu": {
"block_account": "حظر {0}",
"block_domain": "حظر المجال {0}",
"copy_link_to_post": "انسخ الرابط إلى هذا المنشور",
"delete": "حذف",
"delete_and_redraft": "حذف وإعادة صياغة",
"direct_message_account": "إرسال رسالة مباشرة إلى {0}",
"edit": "تعديل",
"mention_account": "أذكر {0}",
"mute_account": "كتم {0}",
"mute_conversation": "تجاهل هذا المنصب",
"open_in_original_site": "فتح في الموقع الأصلي",
"pin_on_profile": "تثبيت على حسابك الشخصي",
"show_untranslated": "عرض بدون ترجمة",
"toggle_theme": {
"dark": "تبديل المظهر الداكن",
"light": "تبديل المظهر الفاتح"
},
"translate_post": "ترجم المنشور",
"unblock_account": "رفع الحظر عن {0}",
"unblock_domain": "رفع الحظر عن النطاق {0}",
"unmute_account": "إلغاء كتم الحساب {0}",
"unmute_conversation": "إلغاء كتم المحادثة",
"unpin_on_profile": "إلغاء التثبيت من الملف الشخصي"
},
"nav": {
"bookmarks": "العلامات المرجعية",
"built_at": "Built {0}",
"conversations": "المحادثات",
"explore": "استكشف",
"favourites": "المفضلة",
"federated": "الفديرالية",
"home": "الرئيسيّة",
"local": "المحلي",
"notifications": "التنبيهات",
"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": "MISSING notification.type:",
"reblogged_post": "اعاد نشر منشورك",
"request_to_follow": "طلب(ت) متابعتك",
"signed_up": "تسجل",
"update_status": "قام(ت) بتحديث حالته(ا)"
},
"placeholder": {
"content_warning": "اكتب تحذيرك هنا",
"default_1": "ماذا يدور في ذهنك؟",
"reply_to_account": "الرد على {0}",
"replying": "الرد",
"the_thread": "المحادثة"
},
"pwa": {
"dismiss": "تجاهل",
"title": "يتوفر تحديث Elk الجديد",
"update": "تحديث",
"update_available_short": "تحديث Elk"
},
"search": {
"search_desc": "ابحث عن الأشخاص والهاشتاج"
},
"settings": {
"about": {
"label": "بشأن Elk"
},
"feature_flags": {
"github_cards": "GitHub بطاقات",
"title": "الميزات التجريبية",
"user_picker": "الشريط الجانبي لمبدل المستخدم",
"virtual_scroll": "التمرير الافتراضي"
},
"interface": {
"color_mode": "وضع اللون",
"dark_mode": "الوضع الداكن",
"default": "(إفتراضي)",
"font_size": "حجم الخط",
"label": "واجهه المستخدم",
"light_mode": "وضع الضوء"
},
"language": {
"display_language": "اللغة المعروضة",
"label": "اللغة"
},
"notifications": {
"label": "Notifications",
"notifications": {
"label": "Notifications settings"
},
"push_notifications": {
"alerts": {
"favourite": "المفضلة",
"follow": "متابعين جدد",
"mention": "المنشورات التي تذكرني",
"poll": "استطلاعات الرأي",
"reblog": "إعادة نشر منشورك",
"title": "ما هي التنبيهات التي تريد تلقيها؟"
},
"description": "Receive notifications even when you are not using Elk.",
"instructions": "Don't forget to save your changes using @:settings.notifications.push_notifications.save_settings button!",
"label": "Push notifications settings",
"policy": {
"all": "من اي شخص",
"followed": "من الناس الذين أتابعهم",
"follower": "من الناس الذين يتبعونني",
"none": "من لا أحد",
"title": "من الذي يمكنني تلقي التنبيهات منه؟"
},
"save_settings": "حفظ التغييرات الإعدادات",
"undo_settings": "تراجع عن تغييرات الإعدادات",
"unsubscribe": "تعطيل التنبيهات",
"unsupported": "متصفحك لا يدعم التنبيهات",
"warning": {
"enable_close": "أغلق",
"enable_description": "لتلقي التنبيهات عندما لا يكون Elk مفتوحًا، قم بتمكين تنبيهات النظام. يمكنك التحكم بدقة في أنواع التفاعلات التي تنشئ تنبيهات النظام عبر الزر \"Show Settings\" أعلاه.",
"enable_description_settings": "To receive notifications when Elk is not open, enable push notifications. You will be able to control precisely what types of interactions generate push notifications on this same screen once you enable them.",
"enable_desktop": "تفعيل تنبيهات النظام",
"enable_title": "لا تفوت عليك أي شيء",
"re_auth": "يبدو أن الخادم الخاص بك لا يدعم دفع التنبيهات. حاول تسجيل الخروج ثم تسجيل الدخول مرة أخرى ، إذا استمرت هذه الرسالة في الظهور ، فاتصل بمسؤول الخادم."
}
},
"show_btn": "Go to notifications settings"
},
"notifications_settings": "Notifications",
"preferences": {
"label": "التفضيلات"
},
"profile": {
"appearance": {
"bio": "النبذة التعريفية",
"description": "تعديل الصورة الرمزية واسم المستخدم والملف الشخصي...",
"display_name": "الاسم المعروض",
"label": "المظهر",
"title": "تعديل الملف الشخصي"
},
"featured_tags": {
"description": "يمكن للأشخاص تصفح مشاركاتك العامة تحت علامات الهاشتاغ هذه",
"label": "الهاشتاغ البارزة"
},
"label": "الملف الشخصي"
},
"select_a_settings": "اختر الإعداد",
"users": {
"export": "Export User Tokens",
"import": "Import User Tokens",
"label": "المستخدمون المسجلون"
}
},
"state": {
"edited": "(معدل)",
"editing": "تعديل",
"loading": "جاري التحميل ...",
"upload_failed": "التحميل فشل",
"uploading": "جاري التحميل ..."
},
"status": {
"edited": "عدل {0}",
"filter_hidden_phrase": "تمت تصفيتها بواسطة",
"filter_removed_phrase": "تمت إزالته بواسطة عامل التصفية",
"filter_show_anyway": "عرض على أي حال",
"img_alt": {
"desc": "وصف",
"dismiss": "تجاهل"
},
"poll": {
"count": "لا توجد اصوات|صوت {0}|صوتين|{0} أصوات|{0} صوت|{0} صوت",
"ends": "ينتهي في {0}",
"finished": "انتهى في {0}"
},
"reblogged": "{0} اعاد نشر",
"someone": "شخص ما",
"spoiler_show_less": "عرض أقل",
"spoiler_show_more": "عرض المزيد",
"try_original_site": "جرب الموقع الأصلي"
},
"status_history": {
"created": "تم إنشاؤه في {0}",
"edited": "تم تعديله في {0}"
},
"tab": {
"for_you": "مصممة لك",
"hashtags": "هاشتاغ",
"media": "الصور/الفيديو",
"news": "الأخبار",
"notifications_all": "كل شىء",
"notifications_mention": "موجهة إلي",
"posts": "المنشورات",
"posts_with_replies": "المنشورات والردود"
},
"time_ago_options": {
"day_future": "في 0 أيام|غدا|في يومين|في {v} أيام|في {v} يوم|في {v} يوم",
"day_past": "منذ 0 أيام|البارحة|منذ يومين|منذ {v} أيام|منذ {v} يوم|منذ {v} يوم",
"hour_future": "في 0 ساعات|في ساعة|في ساعتين|في {v} ساعات|في {v} ساعة|في {v} ساعة",
"hour_past": "منذ 0 ساعات|منذ ساعة واحدة|منذ ساعتين|منذ {v} ساعات|منذ {v} ساعة|منذ {v} ساعة",
"just_now": "الآن",
"minute_future": "في 0 دقائق|في دقيقة واحدة|في دقيقتين|في {v} دقائق|في {v} دقيقة|في {v} دقيقة",
"minute_past": "منذ 0 دقائق|منذ دقيقة واحدة|منذ دقيقتين|منذ {v} دقائق|منذ {v} دقيقة|منذ {v} دقيقة",
"month_future": "في 0 أشهر|الشهر القادم|في شهرين|في {v} أشهر|في {v} شهر|في {v} شهر",
"month_past": "منذ 0 أشهر|الشهر الماضي|منذ شهرين|منذ {v} أشهر|منذ {v} شهر|منذ {v} شهر",
"second_future": "الآن|في ثانية|في ثانيتين|في {v} ثواني|في {v} ثانية|في {v} ثانية",
"second_past": "للتو|منذ ثانية|منذ ثانيتين|منذ {v} ثواني|منذ {v} ثانية|منذ {v} ثانية",
"short_day_future": "في 0 أيام|غدا|في يومين|في {v} أيام|في {v} يوم|في {v} يوم",
"short_day_past": "منذ 0 أيام|البارحة|منذ يومين|منذ {v} أيام|منذ {v} يوم|منذ {v} يوم",
"short_hour_future": "في 0 ساعات|في ساعة|في ساعتين|في {v} ساعات|في {v} ساعة|في {v} ساعة",
"short_hour_past": "منذ 0 ساعات|منذ ساعة واحدة|منذ ساعتين|منذ {v} ساعات|منذ {v} ساعة|منذ {v} ساعة",
"short_minute_future": "في 0 دقائق|في دقيقة واحدة|في دقيقتين|في {v} دقائق|في {v} دقيقة|في {v} دقيقة",
"short_minute_past": "منذ 0 دقائق|منذ دقيقة واحدة|منذ دقيقتين|منذ {v} دقائق|منذ {v} دقيقة|منذ {v} دقيقة",
"short_month_future": "في 0 أشهر|الشهر القادم|في شهرين|في {v} أشهر|في {v} شهر|في {v} شهر",
"short_month_past": "منذ 0 أشهر|الشهر الماضي|منذ شهرين|منذ {v} أشهر|منذ {v} شهر|منذ {v} شهر",
"short_second_future": "الآن|في ثانية|في ثانيتين|في {v} ثواني|في {v} ثانية|في {v} ثانية",
"short_second_past": "للتو|منذ ثانية|منذ ثانيتين|منذ {v} ثواني|منذ {v} ثانية|منذ {v} ثانية",
"short_week_future": "في 0 أسابيع|الاسبوع القادم|في اسبوعين|في {v} أسابيع|في {v} اسبوع|في {v} اسبوع",
"short_week_past": "منذ 0 أسابيع|الاسبوع الماضي|منذ اسبوعين|منذ {v} أسابيع|منذ {v} اسبوع|منذ {v} اسبوع",
"short_year_future": "هذا العام|العام القادم|في عامين|في {v} عاما|في {v} عام|في {v} عام",
"short_year_past": "هذا العام|العام الماضي|منذ عامين|منذ {v} عاما|منذ {v} عام|منذ {v} عام",
"week_future": "في 0 أسابيع|الاسبوع القادم|في اسبوعين|في {v} أسابيع|في {v} اسبوع|في {v} اسبوع",
"week_past": "منذ 0 أسابيع|الاسبوع الماضي|منذ اسبوعين|منذ {v} أسابيع|منذ {v} اسبوع|منذ {v} اسبوع",
"year_future": "هذا العام|العام القادم|في عامين|في {v} عاما|في {v} عام|في {v} عام",
"year_past": "هذا العام|العام الماضي|منذ عامين|منذ {v} عاما|منذ {v} عام|منذ {v} عام"
},
"timeline": {
"show_new_items": "لا توجد عناصر جديدة|إظهار {v} عنصر جديد|إظهار {v} عنصرين جديدين|إظهار {v} عناصر جديدة|إظهار {v} عنصر جديد|إظهار {v} عنصر جديد"
},
"title": {
"federated_timeline": "الجدول الزمني الموحد",
"local_timeline": "الجدول الزمني المحلي"
},
"tooltip": {
"add_content_warning": "إضافة تحذير المحتوى",
"add_media": "أضف صورًا أو مقطع فيديو أو ملفًا صوتيًا",
"change_content_visibility": "تغيير خصوصية المحتوى",
"emoji": "رمز تعبيري",
"explore_links_intro": "يتم التحدث عن هذه القصص الإخبارية من قبل الأشخاص الموجودين على هذه الشبكة وغيرها من الشبكات اللامركزية في الوقت الحالي",
"explore_posts_intro": "تكتسب هذه المنشورات الكثير من النشاط على الشبكة وغيرها من الشبكات اللامركزية في الوقت الحالي",
"explore_tags_intro": "تكتسب هذه الهاشتاغ الكثير من النشاط بين الأشخاص على هذه الشبكة وغيرها من الشبكات اللامركزية في الوقت الحالي",
"toggle_code_block": "تبديل كتلة التعليمات البرمجية"
},
"user": {
"add_existing": "إضافة حساب قائم",
"server_address_label": "عنوان خادم ماستودون",
"sign_in_desc": "قم بتسجيل الدخول لمتابعة الملفات الشخصية والمشاركة والرد على المنشورات أو التفاعل من حسابك على خادم مختلف",
"sign_in_notice_title": "عرض البيانات العامة من {0}",
"sign_out_account": "تسجيل الخروج من {0}",
"tip_no_account": "إذا ليس لديك حساب ماستودون ، {0}",
"tip_register_account": "اختر خادم ماستودون الخاص بك وقم بتسجيل حساب"
},
"visibility": {
"direct": "رسالة مباشرة",
"direct_desc": "مرئي للمستخدمين المذكورين فقط",
"private": "المتابعون فقط",
"private_desc": "مرئي للمتابعين فقط",
"public": "عام",
"public_desc": "مرئي للجميع",
"unlisted": "غير مدرج",
"unlisted_desc": "مرئي للجميع ، ولكن تم إلغاء الاشتراك في ميزات الاكتشاف"
}
}

204
locales/cs-CZ.ftl Normal file
View file

@ -0,0 +1,204 @@
account_avatar_description = profilová fotka uživatele {$username}
account_blocked_by = Tohoto uživatele jste zablokovali.
account_blocked_domains = Zablokované domény
account_blocked_users = Zablokovaní uživatelé
account_bot = ROBOT
account_favourites = Oblíbené
account_follow = Sledovat
account_follow_back = Taky sledovat
account_follow_requested = Požádáno o sledování
account_followers = Sledující
account_followers_count = {$formattedCount} sledujících
account_following = Sleduje
account_following_count = {$formattedCount} sleduje
account_follows_you = Sleduje vás
account_go_to_profile = Jít na profil
account_joined = Joined
account_moved_title = uživatel se přestěhoval na adresu:
account_muted_users = Ztlumení
account_mutuals = Přátelé
account_pinned = Připnuto
account_posts = Příspěvky
account_posts_count = {$formattedCount} Příspěvků
account_profile_description = pozadí profilu {$username}
account_profile_unavailable = Profil není dostupný
account_unfollow = Přestat sledovat
action_bookmark = Uložit do záložek
action_bookmarked = Založeno
action_boost = Přeposlat
action_boosted = Přeposláno
action_close = Zavřít
action_compose = Napsat
action_enter_app = Spustit aplikaci
action_favourite = Přidat k oblíbeným
action_favourited = Oblíbené
action_more = Více
action_next = Dále
action_prev = Zpět
action_publish = Zveřejnit
action_reply = Odpovědět
action_save_changes = Uložit změny
action_sign_in = Přihlásit se
action_switch_account = Přepnout účet
action_vote = Hlasovat
app_desc_short = Elk - hbitý webklient pro Mastodon.
app_logo = logo Elk
app_name = Elk
command_activate = Aktivovat
command_complete = Dokončit
command_compose_desc = Napsat příspěvek
command_n-people-in-the-past-n-days = {$count} lidí v posledních {$days} dnech
command_select_lang = Vybrat jazyk
command_sign_in_desc = Přidat existující účet
command_switch_account = Přepnout na {$username}
command_switch_account_desc = Přepnout na jiný účet
command_toggle_dark_mode = Zapnout tmavý režim
command_toggle_zen_mode = Zapnout zenový režim
common_end_of_list = Konec seznamu
common_error = CHYBA
common_not_found = 404 Nenalezeno!
common_offline_desc = Zdá se, že jste offline. Zkontrolujte připojení k internetu.
conversation_with = s
error_account_not_found = Účet {$username} nenalezen
error_explore-list-empty = Momentálně tu není nic zajímavého. Zkuste to jindy.
error_sign_in_error = Nemohu se připojit k serveru.
error_status_not_found = Status nenalezen
help_desc_highlight = Z toho důvodu může tu a tam nastat chyba nebo chybět nějaká ta funkce.
help_desc_para1 = Těší nás váš zájem o Elk - Mastodoní klient na kterém právě pracujeme.
help_desc_para2 = Pracujeme na vývoji a průběžně Elk vylepšujeme. Brzy ho zveřejníme jako open source a budete mít možnost přispět svou troškou do mlýna.
help_desc_para3 = Předtím můžete přispět do klobouku našim vývojářům na níže uvedených odkazech:
help_title = Elk ještě není hotový
menu_block_account = Zablokovat {$username}
menu_block_domain = Zablokovat doménu {$domain}
menu_copy_link_to_post = Zkopírovat odkaz na příspěvek
menu_delete = Odstranit
menu_delete_and_redraft = Odstranit a přepsat
menu_direct_message_account = Napsat soukromou zprávu pro {$username}
menu_edit = Upravit
menu_mention_account = Zmínit {$username}
menu_mute_account = Umlčet {$username}
menu_mute_conversation = Umlčet příspěvek
menu_open_in_original_site = Otevřít na původní stránce
menu_pin_on_profile = Připíchnout na profil
menu_show_untranslated = Zobrazit nepřeložené
menu_toggle_theme_dark = Zapnout tmavý vzhled
menu_toggle_theme_light = Zapnout světlý vzhled
menu_translate_post = Přeložit příspěvek
menu_unblock_account = Odblokovat {$username}
menu_unblock_domain = Odblokovat doménu {$domain}
menu_unmute_account = Odmlčet {$username}
menu_unmute_conversation = Přestat ignorovat příspěvek
menu_unpin_on_profile = Odepnout z profilu
nav_bookmarks = Záložky
nav_built_at = Zprovozněno {0}
nav_conversations = Pošta
nav_explore = Zajímavé
nav_favourites = Oblíbené
nav_federated = Federované
nav_home = Hlavní stránka
nav_local = Lokální
nav_notifications = Upozornění
nav_profile = Profil
nav_search = Vyhledávání
nav_select_feature_flags = Zapnout funkce
nav_select_language = Vybrat jazyk
nav_show_intro = Zobrazit více informací o aplikaci
nav_toggle_theme = Přepnout vzhled
nav_zen_mode = Tichý režim
notification_favourited_post = si oblíbil váš příspěvek
notification_followed_you = vás nyní sleduje
notification_followed_you_count = {n} osoba vás začala sledovat|{n} lidí vás začalo sledovat
notification_missing_type = MISSING notification.type:
notification_reblogged_post = přeposlal váš příspěvek
notification_request_to_follow = požádal o sledování
notification_update_status = aktualizoval svůj status
placeholder_content_warning = Sem napište varování
placeholder_default_1 = O čem chcete psát?
placeholder_reply_to_account = Odpovědět {0}
placeholder_replying = Sem napište odpověď
placeholder_the_thread = vlákno
settings_feature_flags_github_cards = GitHub Cards
settings_feature_flags_user_picker = User Picker
settings_feature_flags_virtual_scroll = Virtual Scrolling
state_edited = (Upraveno)
state_editing = Upravuje se
state_loading = Čekejte...
state_uploading = Nahrává se...
status_edited = Upraveno {$date}
status_filter_hidden_phrase = Vyfiltrováno
status_filter_removed_phrase = Vyfiltrováno
status_filter_show_anyway = Ukázat i tak
status_img_alt_desc = Popis
status_img_alt_dismiss = Skrýt
status_poll_count = {0} hlasů|{0} hlas|{0} hlasů
status_poll_ends = končí {0}
status_poll_finished = ukončeno {0}
status_reblogged = {0} přeposlal
status_someone = Někdo
status_spoiler_show_less = Skrýt
status_spoiler_show_more = Ukázat
status_thread = Vlákno
status_try_original_site = Zkus původní stránku
status_history_created = vytvořeno {0}
status_history_edited = upraveno {$date}
tab_for_you = Možná znáte
tab_hashtags = Hashtagy
tab_media = Multimédia
tab_news = Zprávy
tab_notifications_all = Vše
tab_notifications_mention = Zmínky
tab_posts = Příspěvky
tab_posts_with_replies = Příspěvky a odpovědi
time_ago_options_day_future = za 0 dní|zítra|za {n} dní
time_ago_options_day_past = před 0 dny|včera|{n} dní zpátky
time_ago_options_hour_future = za 0 hodin|za hodinu|za {n} hodin
time_ago_options_hour_past = před 0 hodinami|před hodinou|před {n} hodinami
time_ago_options_just_now = nyní
time_ago_options_minute_future = za 0 minut|za minutu|za {n} minut
time_ago_options_minute_past = před 0 minutami|před minutou|před {n} minutami
time_ago_options_month_future = za 0 měsíců|příští měsíc|za {n} měsíců
time_ago_options_month_past = před 0 měsíci|minulý měsíc|před {n} měsíci
time_ago_options_second_future = právě teď|za {n} sekund|za {n} sekund
time_ago_options_second_past = právě teď|před {n} sekundami|před {n} sekundami
time_ago_options_short_day_future = za {n}d
time_ago_options_short_day_past = {n}d
time_ago_options_short_hour_future = za {n}h
time_ago_options_short_hour_past = {$n}h
time_ago_options_short_minute_future = za {n}min
time_ago_options_short_minute_past = {$n}min
time_ago_options_short_month_future = za {n}měs.
time_ago_options_short_month_past = {n}měs.
time_ago_options_short_second_future = za {n}s
time_ago_options_short_second_past = {n}s
time_ago_options_short_week_future = za {n}t.
time_ago_options_short_week_past = {n}t
time_ago_options_short_year_future = za {n}r
time_ago_options_short_year_past = {n}r
time_ago_options_week_future = za 0 týdnů|příští týden|za {n} týdnů
time_ago_options_week_past = před 0 týdny|minulý týden|před {n} týdny
time_ago_options_year_future = za 0 let|příští rok|za {n} let
time_ago_options_year_past = před 0 roky|minulý rok|před {n} lety
timeline_show_new_items = Ukázat {v} nových položek|Ukázat {v} novou položku|Ukázat {v} nových položek
title_federated_timeline = Federovaná časová osa
title_local_timeline = Lokální časová osa
tooltip_add_content_warning = Přidat varování
tooltip_add_media = Přidat obrázek, video nebo nahrávku
tooltip_change_content_visibility = Změnit viditelnost příspěvku
tooltip_explore_links_intro = O těchto zprávách se nyní mluví na tomto nebo dalších serverech.
tooltip_explore_posts_intro = Tyto příspěvky jsou nyní populární na tomto nebo dalších serverech.
tooltip_explore_tags_intro = Tyto hashtagy se nyní šíří mezi lidmi na tomto nebo dalších serverech.
tooltip_toggle_code_block = Přepnout na režim kódu
user_add_existing = Přidat existující účet
user_server_address_label = Adresa Mastodon serveru:
user_sign_in_desc = Přihlaste se, abyste mohli sledovat profily nebo hashtagy, psát a sdílet příspěvky a odpovídat na ně na tomto nebo jiných serverech.
user_sign_out_account = Odhlásit {$username}
user_tip_no_account = Pokud nemáte účet na Mastodonu, {0}.
user_tip_register_account = vyberte server a zaregistrujte se
visibility_direct = Soukromé
visibility_direct_desc = Uvidí to pouze uživatelé, které zmíníte.
visibility_private = Jen pro sledující
visibility_private_desc = Uvidí to jen sledující.
visibility_public = Veřejné
visibility_public_desc = Uvidí to všichni.
visibility_unlisted = Nenabízené
visibility_unlisted_desc = Uvidí to všichni, ale nebude to nabízeno mezi Zajímavými.

View file

@ -1,258 +0,0 @@
{
"account": {
"avatar_description": "profilová fotka uživatele {0}",
"blocked_by": "Tohoto uživatele jste zablokovali.",
"blocked_domains": "Zablokované domény",
"blocked_users": "Zablokovaní uživatelé",
"bot": "ROBOT",
"favourites": "Oblíbené",
"follow": "Sledovat",
"follow_back": "Taky sledovat",
"follow_requested": "Požádáno o sledování",
"followers": "Sledující",
"followers_count": "{0} sledujících",
"following": "Sleduje",
"following_count": "{0} sleduje",
"follows_you": "Sleduje vás",
"go_to_profile": "Jít na profil",
"joined": "Joined",
"moved_title": "uživatel se přestěhoval na adresu:",
"muted_users": "Ztlumení",
"mutuals": "Přátelé",
"pinned": "Připnuto",
"posts": "Příspěvky",
"posts_count": "{0} Příspěvků",
"profile_description": "pozadí profilu {0}",
"profile_unavailable": "Profil není dostupný",
"unfollow": "Přestat sledovat"
},
"action": {
"bookmark": "Uložit do záložek",
"bookmarked": "Založeno",
"boost": "Přeposlat",
"boosted": "Přeposláno",
"close": "Zavřít",
"compose": "Napsat",
"enter_app": "Spustit aplikaci",
"favourite": "Přidat k oblíbeným",
"favourited": "Oblíbené",
"more": "Více",
"next": "Dále",
"prev": "Zpět",
"publish": "Zveřejnit",
"reply": "Odpovědět",
"save_changes": "Uložit změny",
"sign_in": "Přihlásit se",
"switch_account": "Přepnout účet",
"vote": "Hlasovat"
},
"app_desc_short": "Elk - hbitý webklient pro Mastodon.",
"app_logo": "logo Elk",
"app_name": "Elk",
"command": {
"activate": "Aktivovat",
"complete": "Dokončit",
"compose_desc": "Napsat příspěvek",
"n-people-in-the-past-n-days": "{0} lidí v posledních {1} dnech",
"select_lang": "Vybrat jazyk",
"sign_in_desc": "Přidat existující účet",
"switch_account": "Přepnout na {0}",
"switch_account_desc": "Přepnout na jiný účet",
"toggle_dark_mode": "Zapnout tmavý režim",
"toggle_zen_mode": "Zapnout zenový režim"
},
"common": {
"end_of_list": "Konec seznamu",
"error": "CHYBA",
"not_found": "404 Nenalezeno!",
"offline_desc": "Zdá se, že jste offline. Zkontrolujte připojení k internetu."
},
"conversation": {
"with": "s"
},
"error": {
"account_not_found": "Účet {0} nenalezen",
"explore-list-empty": "Momentálně tu není nic zajímavého. Zkuste to jindy.",
"sign_in_error": "Nemohu se připojit k serveru.",
"status_not_found": "Status nenalezen"
},
"help": {
"desc_highlight": "Z toho důvodu může tu a tam nastat chyba nebo chybět nějaká ta funkce.",
"desc_para1": "Těší nás váš zájem o Elk - Mastodoní klient na kterém právě pracujeme.",
"desc_para2": "Pracujeme na vývoji a průběžně Elk vylepšujeme. Brzy ho zveřejníme jako open source a budete mít možnost přispět svou troškou do mlýna.",
"desc_para3": "Předtím můžete přispět do klobouku našim vývojářům na níže uvedených odkazech:",
"title": "Elk ještě není hotový"
},
"menu": {
"block_account": "Zablokovat {0}",
"block_domain": "Zablokovat doménu {0}",
"copy_link_to_post": "Zkopírovat odkaz na příspěvek",
"delete": "Odstranit",
"delete_and_redraft": "Odstranit a přepsat",
"direct_message_account": "Napsat soukromou zprávu pro {0}",
"edit": "Upravit",
"mention_account": "Zmínit {0}",
"mute_account": "Umlčet {0}",
"mute_conversation": "Umlčet příspěvek",
"open_in_original_site": "Otevřít na původní stránce",
"pin_on_profile": "Připíchnout na profil",
"show_untranslated": "Zobrazit nepřeložené",
"toggle_theme": {
"dark": "Zapnout tmavý vzhled",
"light": "Zapnout světlý vzhled"
},
"translate_post": "Přeložit příspěvek",
"unblock_account": "Odblokovat {0}",
"unblock_domain": "Odblokovat doménu {0}",
"unmute_account": "Odmlčet {0}",
"unmute_conversation": "Přestat ignorovat příspěvek",
"unpin_on_profile": "Odepnout z profilu"
},
"nav": {
"bookmarks": "Záložky",
"built_at": "Zprovozněno {0}",
"conversations": "Pošta",
"explore": "Zajímavé",
"favourites": "Oblíbené",
"federated": "Federované",
"home": "Hlavní stránka",
"local": "Lokální",
"notifications": "Upozornění",
"profile": "Profil",
"search": "Vyhledávání",
"select_feature_flags": "Zapnout funkce",
"select_language": "Vybrat jazyk",
"show_intro": "Zobrazit více informací o aplikaci",
"toggle_theme": "Přepnout vzhled",
"zen_mode": "Tichý režim"
},
"notification": {
"favourited_post": "si oblíbil váš příspěvek",
"followed_you": "vás nyní sleduje",
"followed_you_count": "{n} osoba vás začala sledovat|{n} lidí vás začalo sledovat",
"missing_type": "MISSING notification.type:",
"reblogged_post": "přeposlal váš příspěvek",
"request_to_follow": "požádal o sledování",
"update_status": "aktualizoval svůj status"
},
"placeholder": {
"content_warning": "Sem napište varování",
"default_1": "O čem chcete psát?",
"reply_to_account": "Odpovědět {0}",
"replying": "Sem napište odpověď",
"the_thread": "vlákno"
},
"settings": {
"feature_flags": {
"github_cards": "GitHub Cards",
"user_picker": "User Picker",
"virtual_scroll": "Virtual Scrolling"
}
},
"state": {
"edited": "(Upraveno)",
"editing": "Upravuje se",
"loading": "Čekejte...",
"uploading": "Nahrává se..."
},
"status": {
"edited": "Upraveno {0}",
"filter_hidden_phrase": "Vyfiltrováno",
"filter_removed_phrase": "Vyfiltrováno",
"filter_show_anyway": "Ukázat i tak",
"img_alt": {
"desc": "Popis",
"dismiss": "Skrýt"
},
"poll": {
"count": "{0} hlasů|{0} hlas|{0} hlasů",
"ends": "končí {0}",
"finished": "ukončeno {0}"
},
"reblogged": "{0} přeposlal",
"someone": "Někdo",
"spoiler_show_less": "Skrýt",
"spoiler_show_more": "Ukázat",
"thread": "Vlákno",
"try_original_site": "Zkus původní stránku"
},
"status_history": {
"created": "vytvořeno {0}",
"edited": "upraveno {0}"
},
"tab": {
"for_you": "Možná znáte",
"hashtags": "Hashtagy",
"media": "Multimédia",
"news": "Zprávy",
"notifications_all": "Vše",
"notifications_mention": "Zmínky",
"posts": "Příspěvky",
"posts_with_replies": "Příspěvky a odpovědi"
},
"time_ago_options": {
"day_future": "za 0 dní|zítra|za {n} dní",
"day_past": "před 0 dny|včera|{n} dní zpátky",
"hour_future": "za 0 hodin|za hodinu|za {n} hodin",
"hour_past": "před 0 hodinami|před hodinou|před {n} hodinami",
"just_now": "nyní",
"minute_future": "za 0 minut|za minutu|za {n} minut",
"minute_past": "před 0 minutami|před minutou|před {n} minutami",
"month_future": "za 0 měsíců|příští měsíc|za {n} měsíců",
"month_past": "před 0 měsíci|minulý měsíc|před {n} měsíci",
"second_future": "právě teď|za {n} sekund|za {n} sekund",
"second_past": "právě teď|před {n} sekundami|před {n} sekundami",
"short_day_future": "za {n}d",
"short_day_past": "{n}d",
"short_hour_future": "za {n}h",
"short_hour_past": "{n}h",
"short_minute_future": "za {n}min",
"short_minute_past": "{n}min",
"short_month_future": "za {n}měs.",
"short_month_past": "{n}měs.",
"short_second_future": "za {n}s",
"short_second_past": "{n}s",
"short_week_future": "za {n}t.",
"short_week_past": "{n}t",
"short_year_future": "za {n}r",
"short_year_past": "{n}r",
"week_future": "za 0 týdnů|příští týden|za {n} týdnů",
"week_past": "před 0 týdny|minulý týden|před {n} týdny",
"year_future": "za 0 let|příští rok|za {n} let",
"year_past": "před 0 roky|minulý rok|před {n} lety "
},
"timeline": {
"show_new_items": "Ukázat {v} nových položek|Ukázat {v} novou položku|Ukázat {v} nových položek"
},
"title": {
"federated_timeline": "Federovaná časová osa",
"local_timeline": "Lokální časová osa"
},
"tooltip": {
"add_content_warning": "Přidat varování",
"add_media": "Přidat obrázek, video nebo nahrávku",
"change_content_visibility": "Změnit viditelnost příspěvku",
"explore_links_intro": "O těchto zprávách se nyní mluví na tomto nebo dalších serverech.",
"explore_posts_intro": "Tyto příspěvky jsou nyní populární na tomto nebo dalších serverech.",
"explore_tags_intro": "Tyto hashtagy se nyní šíří mezi lidmi na tomto nebo dalších serverech.",
"toggle_code_block": "Přepnout na režim kódu"
},
"user": {
"add_existing": "Přidat existující účet",
"server_address_label": "Adresa Mastodon serveru:",
"sign_in_desc": "Přihlaste se, abyste mohli sledovat profily nebo hashtagy, psát a sdílet příspěvky a odpovídat na ně na tomto nebo jiných serverech.",
"sign_out_account": "Odhlásit {0}",
"tip_no_account": "Pokud nemáte účet na Mastodonu, {0}.",
"tip_register_account": "vyberte server a zaregistrujte se"
},
"visibility": {
"direct": "Soukromé",
"direct_desc": "Uvidí to pouze uživatelé, které zmíníte.",
"private": "Jen pro sledující",
"private_desc": "Uvidí to jen sledující.",
"public": "Veřejné",
"public_desc": "Uvidí to všichni.",
"unlisted": "Nenabízené",
"unlisted_desc": "Uvidí to všichni, ale nebude to nabízeno mezi Zajímavými."
}
}

238
locales/de-DE.ftl Normal file
View file

@ -0,0 +1,238 @@
account_avatar_description = {$username}'s Avatar
account_blocked_by = Du wurdest von diesem Account geblockt
account_blocked_domains = Gesperrte Domänen
account_blocked_users = Gesperrte Accounts
account_bot = BOT
account_favourites = Favoriten
account_follow = Folgen
account_follow_back = Zurück folgen
account_follow_requested = Angefragt
account_followers = Follower
account_followers_count = {$formattedCount} Follower
account_following = Du folgst
account_following_count = Folgt {$formattedCount}
account_follows_you = Folgt dir
account_go_to_profile = Gehe zum Profil
account_joined = Beigetreten
account_moved_title = hat angegeben, dass dies der neue Account ist:
account_muted_users = Stummgeschaltete Accounts
account_mutuals = Freunde
account_pinned = Angepinnt
account_posts = Beiträge
account_posts_count = {$formattedCount} Beiträge
account_profile_description = {$username}'s Profil
account_profile_unavailable = Profil nicht verfügbar
account_unfollow = Entfolgen
action_bookmark = Lesezeichen
action_bookmarked = Gemerkt
action_boost = Teilen
action_boosted = Geteilt
action_close = Schliessen
action_compose = Verfassen
action_enter_app = App öffnen
action_favourite = Favorisieren
action_favourited = Favorisiert
action_more = Mehr
action_next = Nächster
action_prev = Vorheriger
action_publish = Veröffentlichen
action_reply = Antworten
action_save_changes = Änderungen speichern
action_sign_in = Anmelden
action_switch_account = Account wechseln
action_vote = Abstimmen
app_desc_short = Ein flinker Mastodon Web-Client
app_logo = Elk Logo
app_name = Elk
command_activate = Aktivieren
command_complete = Vollständig
command_compose_desc = Schreib einen neuen Beitrag
command_n-people-in-the-past-n-days = {$count} Personen in den vergangenen {$days} Tagen
command_select_lang = Sprache auswählen
command_sign_in_desc = Bestehenden Account hinzufügen
command_switch_account = Zu {$username} wechseln
command_switch_account_desc = Zu einem anderen Account wechseln
command_toggle_dark_mode = Farbschema ändern
command_toggle_zen_mode = Zen-Modus ändern
common_end_of_list = Ende der Liste
common_error = FEHLER
common_not_found = 404 Nicht Gefunden
common_offline_desc = Anscheinend bist du offline. Bitte überprüfe deine Netzwerkverbindung.
conversation_with = mit
error_account_not_found = Account {$username} nicht gefunden
error_explore-list-empty = Momentan ist nichts im Trend. Schau später nochmal vorbei!
error_sign_in_error = Kann nicht zu Server verbinden
error_status_not_found = Beitrag nicht gefunden
help_desc_highlight = Erwarte hier und da einige Bugs und fehlende Funktionen.
help_desc_para1 = Danke für dein Interesse in Elk, unser noch in der Bearbeitung befindliche, generische Mastodon Client!
help_desc_para2 = Wir arbeiten hart an der Entwicklung und verbessern ihn mit der Zeit. Und wir laden dich schon sehr bald ein uns zu helfen, sobald wir ihn Quelloffen machen!
help_desc_para3 = Doch in der Zwischenzeit kannst du der Entwicklung aushelfen, indem du unsere Teammitglieder durch die unten stehenden Links unterstützt.
help_title = Elk ist in der Alpha!
language_none = Keine
language_search = Suche
menu_block_account = Sperre {$username}
menu_block_domain = Sperre Domain {$domain}
menu_copy_link_to_post = Link zu diesem Beitrag kopieren
menu_delete = Löschen
menu_delete_and_redraft = Löschen und neu erstellen
menu_direct_message_account = Direktnachricht an {$username}
menu_edit = Bearbeiten
menu_mention_account = Erwähne {$username}
menu_mute_account = {$username} stummschalten
menu_mute_conversation = Diesem Beitrag stummschalten
menu_open_in_original_site = Auf Originalseite öffnen
menu_pin_on_profile = An Profil anpinnen
menu_show_untranslated = Übersetzung schliessen
menu_toggle_theme_dark = Dunkles Farbschema aktivieren
menu_toggle_theme_light = Helles Farbschema aktivieren
menu_translate_post = Beitrag übersetzen
menu_unblock_account = Entsperre {$username}
menu_unblock_domain = Entsperren Domain {$domain}
menu_unmute_account = Stummschaltung von {$username} aufheben
menu_unmute_conversation = Stummschaltung aufheben
menu_unpin_on_profile = Von Profil lösen
nav_bookmarks = Lesezeichen
nav_built_at = Letzter Build: {0}
nav_conversations = Direktnachrichten
nav_explore = Entdecken
nav_favourites = Favoriten
nav_federated = Föderiert
nav_home = Startseite
nav_local = Lokal
nav_notifications = Mitteilungen
nav_profile = Profil
nav_search = Suche
nav_select_feature_flags = Feature-Flags aktivieren
nav_select_language = Sprache auswählen
nav_settings = Einstellungen
nav_show_intro = Intro anzeigen
nav_toggle_theme = Farbschema wechseln
nav_zen_mode = Zen-Modus
notification_favourited_post = hat deinen Beitrag favorisiert
notification_followed_you = folgt dir
notification_followed_you_count = {n} Account folgt dir|{n} Accounts folgen dir
notification_missing_type = MISSING notification.type:
notification_reblogged_post = hat deinen Beitrag geteilt
notification_request_to_follow = möchte dir folgen
notification_signed_up = hat sich registriert
notification_update_status = hat diesen Beitrag aktualisiert
placeholder_content_warning = Schreib hier deine Warnung
placeholder_default_1 = Was geht dir gerade durch den Kopf?
placeholder_reply_to_account = Antwort an {0}
placeholder_replying = Antworten
search_search_desc = Suche nach Accounts & Hashtags
search_search_empty = Nichts für diese Suchbegriffe gefunden
settings_about_label = Info
settings_feature_flags_github_cards = GitHub-Karten
settings_feature_flags_title = Experimentelle Funktionen
settings_feature_flags_user_picker = Benutzerauswahl
settings_feature_flags_virtual_scroll = Virtuelles Scrollen
settings_interface_color_mode = Farbschema
settings_interface_dark_mode = Dunkles Farbschema
settings_interface_default = (Standard)
settings_interface_font_size = Schriftgröße
settings_interface_label = Oberfläche
settings_interface_light_mode = Helles Farbschema
settings_language_display_language = Anzeigesprache
settings_language_label = Sprache
settings_preferences_label = Einstellungen
settings_profile_appearance_bio = Bio
settings_profile_appearance_description = Avatar, Benutzername, Profil, etc. bearbeiten
settings_profile_appearance_display_name = Anzeigename
settings_profile_appearance_label = Erscheinungsbild
settings_profile_appearance_profile_metadata = Profil-Metadaten
settings_profile_appearance_profile_metadata_desc = Du kannst bis zu vier Einträge als Tabelle in deinem Profil anzeigen lassen
settings_profile_appearance_title = Profil bearbeiten
settings_profile_featured_tags_description = Leute können deine öffentlichen Beiträge mit diesen Hashtags ansehen.
settings_profile_featured_tags_label = Ausgewählte Hashtags
settings_profile_label = Profil
settings_select_a_settings = Einstellung auswählen
settings_users_export = Benutzer-Token exportieren
settings_users_import = Benutzer-Token importieren
settings_users_label = Eingeloggte Benutzer
state_edited = (bearbeitet)
state_editing = Bearbeiten
state_loading = Laden...
state_uploading = Hochladen...
status_edited = Zuletzt bearbeitet: {$date}
status_filter_hidden_phrase = Versteckt durch
status_filter_removed_phrase = Entfernt durch Filter
status_filter_show_anyway = Trotzdem zeigen
status_img_alt_desc = Beschreibung
status_img_alt_dismiss = Schliessen
status_poll_count = {0} Stimmen|{0} Stimme|{0} Stimmen
status_poll_ends = Endet: {0}
status_poll_finished = Beendet: {0}
status_reblogged = {0} teilte
status_someone = Jemand
status_spoiler_show_less = Zeige weniger
status_spoiler_show_more = Zeige mehr
status_try_original_site = Versuche die original Seite
status_history_created = Erstellt: {0}
status_history_edited = Bearbeitet: {$date}
tab_for_you = Für dich
tab_hashtags = Hashtags
tab_media = Medien
tab_news = Nachrichten
tab_notifications_all = Alle
tab_notifications_mention = Erwähnungen
tab_posts = Beiträge
tab_posts_with_replies = Beiträge und Antworten
tag_follow = Folgen
tag_follow_label = Folge dem {$tag}-Tag
tag_unfollow = Entfolgen
tag_unfollow_label = Entfolge dem {$tag}-Tag
time_ago_options_day_future = in 0 Tagen|morgen|in {n} Tagen
time_ago_options_day_past = vor 0 Tagen|gestern|vor {n} Tagen
time_ago_options_hour_future = in 0 Stunden|in 1 Stunde|in {n} Stunden
time_ago_options_hour_past = vor 0 Stunden|vor 1 Stunde|vor {n} Stunden
time_ago_options_just_now = gerade eben
time_ago_options_minute_future = in 0 Minuten|in 1 Minute|in {n} Minuten
time_ago_options_minute_past = vor 0 Minuten|vor 1 Minute|vor {n} Minuten
time_ago_options_month_future = in 0 Monaten|nächsten Monat|in {n} Monaten
time_ago_options_month_past = vor 0 Monaten|letzten Monat|vor {n} Monaten
time_ago_options_second_future = gerade eben|in {n} Sekunde|in {n} Sekunden
time_ago_options_second_past = gerade eben|vor {n} Sekunde|vor {n} Sekunden
time_ago_options_short_day_future = in {n}T
time_ago_options_short_day_past = {n}T
time_ago_options_short_hour_future = in {n}Std
time_ago_options_short_hour_past = {$n}Std
time_ago_options_short_minute_future = in {n}Min
time_ago_options_short_minute_past = {$n}Min
time_ago_options_short_month_future = in {n}Mo
time_ago_options_short_month_past = {n}Mo
time_ago_options_short_second_future = in {n}Sek
time_ago_options_short_second_past = {n}Sek
time_ago_options_short_week_future = in {n}W
time_ago_options_short_week_past = {n}W
time_ago_options_short_year_future = in {n}J
time_ago_options_short_year_past = {n}J
time_ago_options_week_future = in 0 Wochen|nächste Woche|in {n} Wochen
time_ago_options_week_past = vor 0 Wochen|letzte Woche|vor {n} Wochen
time_ago_options_year_future = in 0 Jahren|nächstes Jahr|in {n} Jahren
time_ago_options_year_past = vor 0 Jahren|letztes Jahren|vor {n} Jahren
timeline_show_new_items = Zeige {v} neue Beiträge|Zeige {v} neuen Beitrag|Zeige {v} neue Beiträge
title_federated_timeline = Föderierte Timeline
title_local_timeline = Lokale Timeline
tooltip_add_content_warning = Inhaltswarnung hinzufügen
tooltip_add_media = Bilder, ein Video oder eine Audiodatei hinzufügen
tooltip_change_content_visibility = Sichtbarkeit von Inhalten ändern
tooltip_change_language = Sprache ändern
tooltip_explore_links_intro = Diese Nachrichten werden gerade von Leuten auf diesem und anderen Servern des dezentralen Netzwerks besprochen.
tooltip_explore_posts_intro = Diese Beiträge von diesem Server gewinnen gerade unter den Leuten von diesem und anderen Servern des dezentralen Netzweks an Reichweite.
tooltip_explore_tags_intro = Diese Hashtags gewinnen gerade unter den Leuten von diesem und anderen Servern des dezentralen Netzweks an Reichweite.
tooltip_toggle_code_block = Codeblock umschalten
user_add_existing = Bestehendes Konto hinzufügen
user_server_address_label = Mastodon Server Adresse
user_sign_in_desc = Melde dich an, um Profilen oder Hashtags zu folgen, Beiträge zu favorisieren, zu teilen und zu beantworten oder von deinem Konto auf einem anderen Server aus zu interagieren.
user_sign_out_account = {$username} abmelden
user_tip_no_account = Wenn du noch kein Mastodon-Konto hast, {0}.
user_tip_register_account = wähle einen Server aus und registriere eines
visibility_direct = Nur erwähnte Accounts
visibility_direct_desc = Nur für erwähnte Accounts sichtbar
visibility_private = Nur Follower
visibility_private_desc = Nur für Follower sichtbar
visibility_public = Öffentlich
visibility_public_desc = Für alle sichtbar
visibility_unlisted = Nicht gelistet
visibility_unlisted_desc = Für alle sichtbar, aber Erkennungsfunktionen deaktiviert

View file

@ -1,314 +0,0 @@
{
"account": {
"avatar_description": "{0}'s Avatar",
"blocked_by": "Du wurdest von diesem Account geblockt",
"blocked_domains": "Gesperrte Domänen",
"blocked_users": "Gesperrte Accounts",
"bot": "BOT",
"favourites": "Favoriten",
"follow": "Folgen",
"follow_back": "Zurück folgen",
"follow_requested": "Angefragt",
"followers": "Follower",
"followers_count": "{0} Follower",
"following": "Du folgst",
"following_count": "Folgt {0}",
"follows_you": "Folgt dir",
"go_to_profile": "Gehe zum Profil",
"joined": "Beigetreten",
"moved_title": "hat angegeben, dass dies der neue Account ist:",
"muted_users": "Stummgeschaltete Accounts",
"mutuals": "Freunde",
"pinned": "Angepinnt",
"posts": "Beiträge",
"posts_count": "{0} Beiträge",
"profile_description": "{0}'s Profil",
"profile_unavailable": "Profil nicht verfügbar",
"unfollow": "Entfolgen"
},
"action": {
"bookmark": "Lesezeichen",
"bookmarked": "Gemerkt",
"boost": "Teilen",
"boosted": "Geteilt",
"close": "Schliessen",
"compose": "Verfassen",
"enter_app": "App öffnen",
"favourite": "Favorisieren",
"favourited": "Favorisiert",
"more": "Mehr",
"next": "Nächster",
"prev": "Vorheriger",
"publish": "Veröffentlichen",
"reply": "Antworten",
"save_changes": "Änderungen speichern",
"sign_in": "Anmelden",
"switch_account": "Account wechseln",
"vote": "Abstimmen"
},
"app_desc_short": "Ein flinker Mastodon Web-Client",
"app_logo": "Elk Logo",
"app_name": "Elk",
"command": {
"activate": "Aktivieren",
"complete": "Vollständig",
"compose_desc": "Schreib einen neuen Beitrag",
"n-people-in-the-past-n-days": "{0} Personen in den vergangenen {1} Tagen",
"select_lang": "Sprache auswählen",
"sign_in_desc": "Bestehenden Account hinzufügen",
"switch_account": "Zu {0} wechseln",
"switch_account_desc": "Zu einem anderen Account wechseln",
"toggle_dark_mode": "Farbschema ändern",
"toggle_zen_mode": "Zen-Modus ändern"
},
"common": {
"end_of_list": "Ende der Liste",
"error": "FEHLER",
"not_found": "404 Nicht Gefunden",
"offline_desc": "Anscheinend bist du offline. Bitte überprüfe deine Netzwerkverbindung."
},
"conversation": {
"with": "mit"
},
"error": {
"account_not_found": "Account {0} nicht gefunden",
"explore-list-empty": "Momentan ist nichts im Trend. Schau später nochmal vorbei!",
"sign_in_error": "Kann nicht zu Server verbinden",
"status_not_found": "Beitrag nicht gefunden"
},
"help": {
"desc_highlight": "Erwarte hier und da einige Bugs und fehlende Funktionen.",
"desc_para1": "Danke für dein Interesse in Elk, unser noch in der Bearbeitung befindliche, generische Mastodon Client!",
"desc_para2": "Wir arbeiten hart an der Entwicklung und verbessern ihn mit der Zeit. Und wir laden dich schon sehr bald ein uns zu helfen, sobald wir ihn Quelloffen machen!",
"desc_para3": "Doch in der Zwischenzeit kannst du der Entwicklung aushelfen, indem du unsere Teammitglieder durch die unten stehenden Links unterstützt.",
"title": "Elk ist in der Alpha!"
},
"language": {
"none": "Keine",
"search": "Suche"
},
"menu": {
"block_account": "Sperre {0}",
"block_domain": "Sperre Domain {0}",
"copy_link_to_post": "Link zu diesem Beitrag kopieren",
"delete": "Löschen",
"delete_and_redraft": "Löschen und neu erstellen",
"direct_message_account": "Direktnachricht an {0}",
"edit": "Bearbeiten",
"mention_account": "Erwähne {0}",
"mute_account": "{0} stummschalten",
"mute_conversation": "Diesem Beitrag stummschalten",
"open_in_original_site": "Auf Originalseite öffnen",
"pin_on_profile": "An Profil anpinnen",
"show_untranslated": "Übersetzung schliessen",
"toggle_theme": {
"dark": "Dunkles Farbschema aktivieren",
"light": "Helles Farbschema aktivieren"
},
"translate_post": "Beitrag übersetzen",
"unblock_account": "Entsperre {0}",
"unblock_domain": "Entsperren Domain {0}",
"unmute_account": "Stummschaltung von {0} aufheben",
"unmute_conversation": "Stummschaltung aufheben",
"unpin_on_profile": "Von Profil lösen"
},
"nav": {
"bookmarks": "Lesezeichen",
"built_at": "Letzter Build: {0}",
"conversations": "Direktnachrichten",
"explore": "Entdecken",
"favourites": "Favoriten",
"federated": "Föderiert",
"home": "Startseite",
"local": "Lokal",
"notifications": "Mitteilungen",
"profile": "Profil",
"search": "Suche",
"select_feature_flags": "Feature-Flags aktivieren",
"select_language": "Sprache auswählen",
"settings": "Einstellungen",
"show_intro": "Intro anzeigen",
"toggle_theme": "Farbschema wechseln",
"zen_mode": "Zen-Modus"
},
"notification": {
"favourited_post": "hat deinen Beitrag favorisiert",
"followed_you": "folgt dir",
"followed_you_count": "{n} Account folgt dir|{n} Accounts folgen dir",
"missing_type": "MISSING notification.type:",
"reblogged_post": "hat deinen Beitrag geteilt",
"request_to_follow": "möchte dir folgen",
"signed_up": "hat sich registriert",
"update_status": "hat diesen Beitrag aktualisiert"
},
"placeholder": {
"content_warning": "Schreib hier deine Warnung",
"default_1": "Was geht dir gerade durch den Kopf?",
"reply_to_account": "Antwort an {0}",
"replying": "Antworten"
},
"search": {
"search_desc": "Suche nach Accounts & Hashtags",
"search_empty": "Nichts für diese Suchbegriffe gefunden"
},
"settings": {
"about": {
"label": "Info"
},
"feature_flags": {
"github_cards": "GitHub-Karten",
"title": "Experimentelle Funktionen",
"user_picker": "Benutzerauswahl",
"virtual_scroll": "Virtuelles Scrollen"
},
"interface": {
"color_mode": "Farbschema",
"dark_mode": "Dunkles Farbschema",
"default": " (Standard)",
"font_size": "Schriftgröße",
"label": "Oberfläche",
"light_mode": "Helles Farbschema"
},
"language": {
"display_language": "Anzeigesprache",
"label": "Sprache"
},
"preferences": {
"label": "Einstellungen"
},
"profile": {
"appearance": {
"bio": "Bio",
"description": "Avatar, Benutzername, Profil, etc. bearbeiten",
"display_name": "Anzeigename",
"label": "Erscheinungsbild",
"profile_metadata": "Profil-Metadaten",
"profile_metadata_desc": "Du kannst bis zu vier Einträge als Tabelle in deinem Profil anzeigen lassen",
"title": "Profil bearbeiten"
},
"featured_tags": {
"description": "Leute können deine öffentlichen Beiträge mit diesen Hashtags ansehen.",
"label": "Ausgewählte Hashtags"
},
"label": "Profil"
},
"select_a_settings": "Einstellung auswählen",
"users": {
"export": "Benutzer-Token exportieren",
"import": "Benutzer-Token importieren",
"label": "Eingeloggte Benutzer"
}
},
"state": {
"edited": "(bearbeitet)",
"editing": "Bearbeiten",
"loading": "Laden...",
"uploading": "Hochladen..."
},
"status": {
"edited": "Zuletzt bearbeitet: {0}",
"filter_hidden_phrase": "Versteckt durch",
"filter_removed_phrase": "Entfernt durch Filter",
"filter_show_anyway": "Trotzdem zeigen",
"img_alt": {
"desc": "Beschreibung",
"dismiss": "Schliessen"
},
"poll": {
"count": "{0} Stimmen|{0} Stimme|{0} Stimmen",
"ends": "Endet: {0}",
"finished": "Beendet: {0}"
},
"reblogged": "{0} teilte",
"someone": "Jemand",
"spoiler_show_less": "Zeige weniger",
"spoiler_show_more": "Zeige mehr",
"try_original_site": "Versuche die original Seite"
},
"status_history": {
"created": "Erstellt: {0}",
"edited": "Bearbeitet: {0}"
},
"tab": {
"for_you": "Für dich",
"hashtags": "Hashtags",
"media": "Medien",
"news": "Nachrichten",
"notifications_all": "Alle",
"notifications_mention": "Erwähnungen",
"posts": "Beiträge",
"posts_with_replies": "Beiträge und Antworten"
},
"tag": {
"follow": "Folgen",
"follow_label": "Folge dem {0}-Tag",
"unfollow": "Entfolgen",
"unfollow_label": "Entfolge dem {0}-Tag"
},
"time_ago_options": {
"day_future": "in 0 Tagen|morgen|in {n} Tagen",
"day_past": "vor 0 Tagen|gestern|vor {n} Tagen",
"hour_future": "in 0 Stunden|in 1 Stunde|in {n} Stunden",
"hour_past": "vor 0 Stunden|vor 1 Stunde|vor {n} Stunden",
"just_now": "gerade eben",
"minute_future": "in 0 Minuten|in 1 Minute|in {n} Minuten",
"minute_past": "vor 0 Minuten|vor 1 Minute|vor {n} Minuten",
"month_future": "in 0 Monaten|nächsten Monat|in {n} Monaten",
"month_past": "vor 0 Monaten|letzten Monat|vor {n} Monaten",
"second_future": "gerade eben|in {n} Sekunde|in {n} Sekunden",
"second_past": "gerade eben|vor {n} Sekunde|vor {n} Sekunden",
"short_day_future": "in {n}T",
"short_day_past": "{n}T",
"short_hour_future": "in {n}Std",
"short_hour_past": "{n}Std",
"short_minute_future": "in {n}Min",
"short_minute_past": "{n}Min",
"short_month_future": "in {n}Mo",
"short_month_past": "{n}Mo",
"short_second_future": "in {n}Sek",
"short_second_past": "{n}Sek",
"short_week_future": "in {n}W",
"short_week_past": "{n}W",
"short_year_future": "in {n}J",
"short_year_past": "{n}J",
"week_future": "in 0 Wochen|nächste Woche|in {n} Wochen",
"week_past": "vor 0 Wochen|letzte Woche|vor {n} Wochen",
"year_future": "in 0 Jahren|nächstes Jahr|in {n} Jahren",
"year_past": "vor 0 Jahren|letztes Jahren|vor {n} Jahren"
},
"timeline": {
"show_new_items": "Zeige {v} neue Beiträge|Zeige {v} neuen Beitrag|Zeige {v} neue Beiträge"
},
"title": {
"federated_timeline": "Föderierte Timeline",
"local_timeline": "Lokale Timeline"
},
"tooltip": {
"add_content_warning": "Inhaltswarnung hinzufügen",
"add_media": "Bilder, ein Video oder eine Audiodatei hinzufügen",
"change_content_visibility": "Sichtbarkeit von Inhalten ändern",
"change_language": "Sprache ändern",
"explore_links_intro": "Diese Nachrichten werden gerade von Leuten auf diesem und anderen Servern des dezentralen Netzwerks besprochen.",
"explore_posts_intro": "Diese Beiträge von diesem Server gewinnen gerade unter den Leuten von diesem und anderen Servern des dezentralen Netzweks an Reichweite.",
"explore_tags_intro": "Diese Hashtags gewinnen gerade unter den Leuten von diesem und anderen Servern des dezentralen Netzweks an Reichweite.",
"toggle_code_block": "Codeblock umschalten"
},
"user": {
"add_existing": "Bestehendes Konto hinzufügen",
"server_address_label": "Mastodon Server Adresse",
"sign_in_desc": "Melde dich an, um Profilen oder Hashtags zu folgen, Beiträge zu favorisieren, zu teilen und zu beantworten oder von deinem Konto auf einem anderen Server aus zu interagieren.",
"sign_out_account": "{0} abmelden",
"tip_no_account": "Wenn du noch kein Mastodon-Konto hast, {0}.",
"tip_register_account": "wähle einen Server aus und registriere eines"
},
"visibility": {
"direct": "Nur erwähnte Accounts",
"direct_desc": "Nur für erwähnte Accounts sichtbar",
"private": "Nur Follower",
"private_desc": "Nur für Follower sichtbar",
"public": "Öffentlich",
"public_desc": "Für alle sichtbar",
"unlisted": "Nicht gelistet",
"unlisted_desc": "Für alle sichtbar, aber Erkennungsfunktionen deaktiviert"
}
}

308
locales/en-GB.ftl Normal file
View file

@ -0,0 +1,308 @@
a11y_loading_page = Loading page, please wait
a11y_loading_titled_page = Loading {$title} page, please wait
a11y_locale_changed = Language changed to {$lang}
a11y_locale_changing = Changing language, please wait
a11y_route_loaded = Page {$title} loaded
account_avatar_description = {$username}'s avatar
account_blocked_by = You're blocked by this user.
account_blocked_domains = Blocked domains
account_blocked_users = Blocked users
account_blocking = Blocked
account_bot = BOT
account_favourites = Favourites
account_follow = Follow
account_follow_back = Follow back
account_follow_requested = Requested
account_followers = Followers
account_followers_count = { $count ->
[one] {$formattedCount} Follower
*[other] {$formattedCount} Followers
}
account_following = Following
account_following_count = {$formattedCount} Following
account_follows_you = Follows you
account_go_to_profile = Go to profile
account_joined = Joined
account_moved_title = has indicated that their new account is now:
account_muted_users = Muted users
account_muting = Muted
account_mutuals = Mutuals
account_pinned = Pinned
account_posts = Posts
account_posts_count = { $count ->
[one] {$formattedCount} Post
*[other] {$formattedCount} Posts
}
account_profile_description = {$username}'s profile header
account_profile_unavailable = Profile unavailable
account_unblock = Unblock
account_unfollow = Unfollow
account_unmute = Unmute
action_apply = Apply
action_bookmark = Bookmark
action_bookmarked = Bookmarked
action_boost = Boost
action_boosted = Boosted
action_clear_upload_failed = Clear file upload errors
action_close = Close
action_compose = Compose
action_confirm = Confirm
action_edit = Edit
action_enter_app = Enter App
action_favourite = Favourite
action_favourited = Favourited
action_more = More
action_next = Next
action_prev = Prev
action_publish = Publish
action_reply = Reply
action_save = Save
action_save_changes = Save changes
action_sign_in = Sign in
action_switch_account = Switch account
action_vote = Vote
app_desc_short = A nimble Mastodon web client
app_logo = Elk Logo
app_name = Elk
attachment_edit_title = Description
attachment_remove_label = Remove attachment
command_activate = Activate
command_complete = Complete
command_compose_desc = Write a new post
command_n-people-in-the-past-n-days = {$count} people in the past {$days} days
command_select_lang = Select language
command_sign_in_desc = Add an existing account
command_switch_account = Switch to {$username}
command_switch_account_desc = Switch to another account
command_toggle_dark_mode = Toggle dark mode
command_toggle_zen_mode = Toggle zen mode
common_end_of_list = End of the list
common_error = ERROR
common_in = in
common_not_found = 404 Not Found
common_offline_desc = Seems like you are offline. Please check your network connection.
compose_draft_title = Draft {0}
compose_drafts = Drafts ({$count})
conversation_with = with
error_account_not_found = Account {$username} not found
error_explore-list-empty = Nothing is trending right now. Check back later!
error_file_size_cannot_exceed_n_mb = File size cannot exceed {$size}MB
error_sign_in_error = Cannot connect to the server.
error_status_not_found = Post not found
error_unsupported_file_format = Unsupported file format
help_desc_highlight = Expect some bugs and missing features here and there.
help_desc_para1 = Thanks for your interest in trying out Elk, our work-in-progress generic Mastodon client!
help_desc_para2 = We are working hard on the development and improving it over time. We will open source the app once it is ready for public use.
help_desc_para3 = To help boosting out development, you can sponsor our team members with the links below. We hope you enjoy Elk!
help_desc_para4 = Before that, if you'd like to help with testing, giving feedback, or contributing,
help_desc_para5 = reach out to us on Mastodon
help_desc_para6 = and get involved.
help_title = Elk is in Preview!
menu_block_account = Block {$username}
menu_block_domain = Block domain {$domain}
menu_copy_link_to_post = Copy link to this post
menu_delete = Delete
menu_delete_and_redraft = Delete & re-draft
menu_direct_message_account = Direct message {$username}
menu_edit = Edit
menu_mention_account = Mention {$username}
menu_mute_account = Mute {$username}
menu_mute_conversation = Mute this post
menu_open_in_original_site = Open in original site
menu_pin_on_profile = Pin on profile
menu_share_post = Share this post
menu_show_untranslated = Show untranslated
menu_toggle_theme_dark = Toggle dark mode
menu_toggle_theme_light = Toggle light mode
menu_translate_post = Translate post
menu_unblock_account = Unblock {$username}
menu_unblock_domain = Unblock domain {$domain}
menu_unmute_account = Unmute {$username}
menu_unmute_conversation = Unmute this post
menu_unpin_on_profile = Unpin on profile
nav_bookmarks = Bookmarks
nav_built_at = Built {0}
nav_conversations = Conversations
nav_explore = Explore
nav_favourites = Favourites
nav_federated = Federated
nav_home = Home
nav_local = Local
nav_notifications = Notifications
nav_profile = Profile
nav_search = Search
nav_select_feature_flags = Toggle Feature Flags
nav_select_font_size = Select Font Size
nav_select_language = Select Language
nav_settings = Settings
nav_show_intro = Show intro
nav_toggle_theme = Toggle Theme
nav_zen_mode = Zen Mode
notification_favourited_post = favourited your post
notification_followed_you = followed you
notification_followed_you_count = {0} people followed you|{0} person followed you|{0} people followed you
notification_missing_type = MISSING notification.type:
notification_reblogged_post = reblogged your post
notification_request_to_follow = requested to follow you
notification_signed_up = signed up
notification_update_status = updated their post
placeholder_content_warning = Write your warning here
placeholder_default_1 = What is on your mind?
placeholder_reply_to_account = Reply to {0}
placeholder_replying = Replying
placeholder_the_thread = the thread
pwa_dismiss = Dismiss
pwa_title = New Elk update available!
pwa_update = Update
pwa_update_available_short = Update Elk
search_search_desc = Search for people & hashtags
search_search_empty = Could not find anything for these search terms
settings_about_label = About
settings_feature_flags_github_cards = GitHub Cards
settings_feature_flags_title = Experimental Features
settings_feature_flags_user_picker = User Picker
settings_feature_flags_virtual_scroll = Virtual Scrolling
settings_interface_color_mode = Color Mode
settings_interface_dark_mode = Dark Mode
settings_interface_default = (default)
settings_interface_font_size = Font Size
settings_interface_label = Interface
settings_interface_light_mode = Light Mode
settings_language_display_language = Display Language
settings_language_label = Language
settings_notifications_label = Notifications
settings_notifications_notifications_label = Notifications settings
settings_notifications_push_notifications_alerts_favourite = Favorites
settings_notifications_push_notifications_alerts_follow = New followers
settings_notifications_push_notifications_alerts_mention = Mentions
settings_notifications_push_notifications_alerts_poll = Polls
settings_notifications_push_notifications_alerts_reblog = Reblog your post
settings_notifications_push_notifications_alerts_title = What notifications to receive?
settings_notifications_push_notifications_description = Receive notifications even when you are not using Elk.
settings_notifications_push_notifications_instructions = Don't forget to save your changes using @:settings.notifications.push_notifications.save_settings button!
settings_notifications_push_notifications_label = Push notifications settings
settings_notifications_push_notifications_policy_all = From anyone
settings_notifications_push_notifications_policy_followed = Of people I follow
settings_notifications_push_notifications_policy_follower = Of people who follow me
settings_notifications_push_notifications_policy_none = From no one
settings_notifications_push_notifications_policy_title = Who can I receive notifications from?
settings_notifications_push_notifications_save_settings = Save settings
settings_notifications_push_notifications_subscription_error_clear_error = Clear error
settings_notifications_push_notifications_subscription_error_permission_denied = Permission denied: enable notifications in your browser.
settings_notifications_push_notifications_subscription_error_request_error = An error occurred while requesting the subscription, try again and if the error persists, please report the issue to the Elk repository.
settings_notifications_push_notifications_subscription_error_title = Could not subscribe to push notifications
settings_notifications_push_notifications_undo_settings = Undo changes
settings_notifications_push_notifications_unsubscribe = Disable push notifications
settings_notifications_push_notifications_unsupported = Your browser does not support push notifications.
settings_notifications_push_notifications_warning_enable_close = Close
settings_notifications_push_notifications_warning_enable_description = To receive notifications when Elk is not open, enable push notifications. You can control precisely what types of interactions generate push notifications via the "@:settings.notifications.show_btn{'"'} button above once enabled.
settings_notifications_push_notifications_warning_enable_description_desktop = To receive notifications when Elk is not open, enable push notifications. You can control precisely what types of interactions generate push notifications in the navigation menu under "Settings > Notifications > Push notifications settings" once enabled.
settings_notifications_push_notifications_warning_enable_description_mobile = You can also access the settings using the navigation menu under "Settings > Notifications > Push notification settings".
settings_notifications_push_notifications_warning_enable_description_settings = To receive notifications when Elk is not open, enable push notifications. You will be able to control precisely what types of interactions generate push notifications on this same screen once you enable them.
settings_notifications_push_notifications_warning_enable_desktop = Enable push notifications
settings_notifications_push_notifications_warning_enable_title = Never miss anything
settings_notifications_push_notifications_warning_re_auth = It seems that your server does not support push notifications. Try sign out and sign in again, if this message still appears contact your server administrator.
settings_notifications_show_btn = Go to notifications settings
settings_notifications_settings = Notifications
settings_preferences_label = Preferences
settings_profile_appearance_bio = Bio
settings_profile_appearance_description = Edit avatar, username, profile, etc.
settings_profile_appearance_display_name = Display name
settings_profile_appearance_label = Appearance
settings_profile_appearance_title = Edit profile
settings_profile_featured_tags_description = People can browse your public posts under these hashtags.
settings_profile_featured_tags_label = Featured hashtags
settings_profile_label = Profile
settings_select_a_settings = Select a setting
settings_users_export = Export User Tokens
settings_users_import = Import User Tokens
settings_users_label = Logged in users
state_attachments_exceed_server_limit = The number of attachments exceeded the limit per post.
state_attachments_limit_error = Limit per post exceeded
state_edited = (Edited)
state_editing = Editing
state_loading = Loading...
state_upload_failed = Upload failed
state_uploading = Uploading...
status_edited = Edited {$date}
status_filter_hidden_phrase = Filtered by
status_filter_removed_phrase = Removed by filter
status_filter_show_anyway = Show anyway
status_img_alt_desc = Description
status_img_alt_dismiss = Dismiss
status_poll_count = {0} votes|{0} vote|{0} votes
status_poll_ends = ends {0}
status_poll_finished = finished {0}
status_reblogged = {0} reblogged
status_replying_to = Replying to {0}
status_someone = someone
status_spoiler_show_less = Show less
status_spoiler_show_more = Show more
status_try_original_site = Try original site
status_history_created = created {0}
status_history_edited = edited {$date}
tab_for_you = For you
tab_hashtags = Hashtags
tab_media = Media
tab_news = News
tab_notifications_all = All
tab_notifications_mention = Mention
tab_posts = Posts
tab_posts_with_replies = Posts & Replies
time_ago_options_day_future = in 0 days|tomorrow|in {n} days
time_ago_options_day_past = 0 days ago|yesterday|{n} days ago
time_ago_options_hour_future = in 0 hours|in 1 hour|in {n} hours
time_ago_options_hour_past = 0 hours ago|1 hour ago|{n} hours ago
time_ago_options_just_now = just now
time_ago_options_minute_future = in 0 minutes|in 1 minute|in {n} minutes
time_ago_options_minute_past = 0 minutes ago|1 minute ago|{n} minutes ago
time_ago_options_month_future = in 0 months|next month|in {n} months
time_ago_options_month_past = 0 months ago|last month|{n} months ago
time_ago_options_second_future = just now|in {n} second|in {n} seconds
time_ago_options_second_past = just now|{n} second ago|{n} seconds ago
time_ago_options_short_day_future = in {n}d
time_ago_options_short_day_past = {n}d
time_ago_options_short_hour_future = in {n}h
time_ago_options_short_hour_past = {$n}h
time_ago_options_short_minute_future = in {n}min
time_ago_options_short_minute_past = {$n}min
time_ago_options_short_month_future = in {n}mo
time_ago_options_short_month_past = {n}mo
time_ago_options_short_second_future = in {n}s
time_ago_options_short_second_past = {n}s
time_ago_options_short_week_future = in {n}w
time_ago_options_short_week_past = {n}w
time_ago_options_short_year_future = in {n}y
time_ago_options_short_year_past = {n}y
time_ago_options_week_future = in 0 weeks|next week|in {n} weeks
time_ago_options_week_past = 0 weeks ago|last week|{n} weeks ago
time_ago_options_year_future = in 0 years|next year|in {n} years
time_ago_options_year_past = 0 years ago|last year|{n} years ago
timeline_show_new_items = Show {v} new items|Show {v} new item|Show {v} new items
title_federated_timeline = Federated Timeline
title_local_timeline = Local Timeline
tooltip_add_content_warning = Add content warning
tooltip_add_media = Add images, a video or an audio file
tooltip_add_publishable_content = Add content to publish
tooltip_change_content_visibility = Change content visibility
tooltip_change_language = Change language
tooltip_emoji = Emoji
tooltip_explore_links_intro = These news stories are being talked about by people on this and other servers of the decentralized network right now.
tooltip_explore_posts_intro = These posts from this and other servers in the decentralized network are gaining traction on this server right now.
tooltip_explore_tags_intro = These hashtags are gaining traction among people on this and other servers of the decentralized network right now.
tooltip_toggle_code_block = Toggle code block
user_add_existing = Add an existing account
user_server_address_label = Mastodon Server Address
user_sign_in_desc = Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.
user_sign_in_notice_title = Viewing {0} public data
user_sign_out_account = Sign out {$username}
user_tip_no_account = If you don't have a Mastodon account yet, {0}.
user_tip_register_account = pick your server and register one
visibility_direct = Direct
visibility_direct_desc = Visible for mentioned users only
visibility_private = Followers only
visibility_private_desc = Visible for followers only
visibility_public = Public
visibility_public_desc = Visible for all
visibility_unlisted = Unlisted
visibility_unlisted_desc = Visible for all, but opted-out of discovery features

View file

@ -1,396 +0,0 @@
{
"a11y": {
"loading_page": "Loading page, please wait",
"loading_titled_page": "Loading {0} page, please wait",
"locale_changed": "Language changed to {0}",
"locale_changing": "Changing language, please wait",
"route_loaded": "Page {0} loaded"
},
"account": {
"avatar_description": "{0}'s avatar",
"blocked_by": "You're blocked by this user.",
"blocked_domains": "Blocked domains",
"blocked_users": "Blocked users",
"blocking": "Blocked",
"bot": "BOT",
"favourites": "Favourites",
"follow": "Follow",
"follow_back": "Follow back",
"follow_requested": "Requested",
"followers": "Followers",
"followers_count": "{0} Followers|{0} Follower|{0} Followers",
"following": "Following",
"following_count": "{0} Following",
"follows_you": "Follows you",
"go_to_profile": "Go to profile",
"joined": "Joined",
"moved_title": "has indicated that their new account is now:",
"muted_users": "Muted users",
"muting": "Muted",
"mutuals": "Mutuals",
"pinned": "Pinned",
"posts": "Posts",
"posts_count": "{0} Posts|{0} Post|{0} Posts",
"profile_description": "{0}'s profile header",
"profile_unavailable": "Profile unavailable",
"unblock": "Unblock",
"unfollow": "Unfollow",
"unmute": "Unmute"
},
"action": {
"apply": "Apply",
"bookmark": "Bookmark",
"bookmarked": "Bookmarked",
"boost": "Boost",
"boosted": "Boosted",
"clear_upload_failed": "Clear file upload errors",
"close": "Close",
"compose": "Compose",
"confirm": "Confirm",
"edit": "Edit",
"enter_app": "Enter App",
"favourite": "Favourite",
"favourited": "Favourited",
"more": "More",
"next": "Next",
"prev": "Prev",
"publish": "Publish",
"reply": "Reply",
"save": "Save",
"save_changes": "Save changes",
"sign_in": "Sign in",
"switch_account": "Switch account",
"vote": "Vote"
},
"app_desc_short": "A nimble Mastodon web client",
"app_logo": "Elk Logo",
"app_name": "Elk",
"attachment": {
"edit_title": "Description",
"remove_label": "Remove attachment"
},
"command": {
"activate": "Activate",
"complete": "Complete",
"compose_desc": "Write a new post",
"n-people-in-the-past-n-days": "{0} people in the past {1} days",
"select_lang": "Select language",
"sign_in_desc": "Add an existing account",
"switch_account": "Switch to {0}",
"switch_account_desc": "Switch to another account",
"toggle_dark_mode": "Toggle dark mode",
"toggle_zen_mode": "Toggle zen mode"
},
"common": {
"end_of_list": "End of the list",
"error": "ERROR",
"in": "in",
"not_found": "404 Not Found",
"offline_desc": "Seems like you are offline. Please check your network connection."
},
"compose": {
"draft_title": "Draft {0}",
"drafts": "Drafts ({v})"
},
"conversation": {
"with": "with"
},
"error": {
"account_not_found": "Account {0} not found",
"explore-list-empty": "Nothing is trending right now. Check back later!",
"file_size_cannot_exceed_n_mb": "File size cannot exceed {0}MB",
"sign_in_error": "Cannot connect to the server.",
"status_not_found": "Post not found",
"unsupported_file_format": "Unsupported file format"
},
"help": {
"desc_highlight": "Expect some bugs and missing features here and there.",
"desc_para1": "Thanks for your interest in trying out Elk, our work-in-progress generic Mastodon client!",
"desc_para2": "We are working hard on the development and improving it over time. We will open source the app once it is ready for public use.",
"desc_para3": "To help boosting out development, you can sponsor our team members with the links below. We hope you enjoy Elk!",
"desc_para4": "Before that, if you'd like to help with testing, giving feedback, or contributing,",
"desc_para5": "reach out to us on Mastodon",
"desc_para6": "and get involved.",
"title": "Elk is in Preview!"
},
"menu": {
"block_account": "Block {0}",
"block_domain": "Block domain {0}",
"copy_link_to_post": "Copy link to this post",
"delete": "Delete",
"delete_and_redraft": "Delete & re-draft",
"direct_message_account": "Direct message {0}",
"edit": "Edit",
"mention_account": "Mention {0}",
"mute_account": "Mute {0}",
"mute_conversation": "Mute this post",
"open_in_original_site": "Open in original site",
"pin_on_profile": "Pin on profile",
"share_post": "Share this post",
"show_untranslated": "Show untranslated",
"toggle_theme": {
"dark": "Toggle dark mode",
"light": "Toggle light mode"
},
"translate_post": "Translate post",
"unblock_account": "Unblock {0}",
"unblock_domain": "Unblock domain {0}",
"unmute_account": "Unmute {0}",
"unmute_conversation": "Unmute this post",
"unpin_on_profile": "Unpin on profile"
},
"nav": {
"bookmarks": "Bookmarks",
"built_at": "Built {0}",
"conversations": "Conversations",
"explore": "Explore",
"favourites": "Favourites",
"federated": "Federated",
"home": "Home",
"local": "Local",
"notifications": "Notifications",
"profile": "Profile",
"search": "Search",
"select_feature_flags": "Toggle 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 Mode"
},
"notification": {
"favourited_post": "favourited your post",
"followed_you": "followed you",
"followed_you_count": "{0} people followed you|{0} person followed you|{0} people followed you",
"missing_type": "MISSING notification.type:",
"reblogged_post": "reblogged your post",
"request_to_follow": "requested to follow you",
"signed_up": "signed up",
"update_status": "updated their post"
},
"placeholder": {
"content_warning": "Write your warning here",
"default_1": "What is on your mind?",
"reply_to_account": "Reply to {0}",
"replying": "Replying",
"the_thread": "the thread"
},
"pwa": {
"dismiss": "Dismiss",
"title": "New Elk update available!",
"update": "Update",
"update_available_short": "Update Elk"
},
"search": {
"search_desc": "Search for people & hashtags",
"search_empty": "Could not find anything for these search terms"
},
"settings": {
"about": {
"label": "About"
},
"feature_flags": {
"github_cards": "GitHub Cards",
"title": "Experimental Features",
"user_picker": "User Picker",
"virtual_scroll": "Virtual Scrolling"
},
"interface": {
"color_mode": "Color Mode",
"dark_mode": "Dark Mode",
"default": " (default)",
"font_size": "Font Size",
"label": "Interface",
"light_mode": "Light Mode"
},
"language": {
"display_language": "Display Language",
"label": "Language"
},
"notifications": {
"label": "Notifications",
"notifications": {
"label": "Notifications settings"
},
"push_notifications": {
"alerts": {
"favourite": "Favorites",
"follow": "New followers",
"mention": "Mentions",
"poll": "Polls",
"reblog": "Reblog your post",
"title": "What notifications to receive?"
},
"description": "Receive notifications even when you are not using Elk.",
"instructions": "Don't forget to save your changes using @:settings.notifications.push_notifications.save_settings button!",
"label": "Push notifications settings",
"policy": {
"all": "From anyone",
"followed": "Of people I follow",
"follower": "Of people who follow me",
"none": "From no one",
"title": "Who can I receive notifications from?"
},
"save_settings": "Save settings",
"subscription_error": {
"clear_error": "Clear error",
"permission_denied": "Permission denied: enable notifications in your browser.",
"request_error": "An error occurred while requesting the subscription, try again and if the error persists, please report the issue to the Elk repository.",
"title": "Could not subscribe to push notifications"
},
"undo_settings": "Undo changes",
"unsubscribe": "Disable push notifications",
"unsupported": "Your browser does not support push notifications.",
"warning": {
"enable_close": "Close",
"enable_description": "To receive notifications when Elk is not open, enable push notifications. You can control precisely what types of interactions generate push notifications via the \"@:settings.notifications.show_btn{'\"'} button above once enabled.",
"enable_description_desktop": "To receive notifications when Elk is not open, enable push notifications. You can control precisely what types of interactions generate push notifications in the navigation menu under \"Settings > Notifications > Push notifications settings\" once enabled.",
"enable_description_mobile": "You can also access the settings using the navigation menu under \"Settings > Notifications > Push notification settings\".",
"enable_description_settings": "To receive notifications when Elk is not open, enable push notifications. You will be able to control precisely what types of interactions generate push notifications on this same screen once you enable them.",
"enable_desktop": "Enable push notifications",
"enable_title": "Never miss anything",
"re_auth": "It seems that your server does not support push notifications. Try sign out and sign in again, if this message still appears contact your server administrator."
}
},
"show_btn": "Go to notifications settings"
},
"notifications_settings": "Notifications",
"preferences": {
"label": "Preferences"
},
"profile": {
"appearance": {
"bio": "Bio",
"description": "Edit avatar, username, profile, etc.",
"display_name": "Display name",
"label": "Appearance",
"title": "Edit profile"
},
"featured_tags": {
"description": "People can browse your public posts under these hashtags.",
"label": "Featured hashtags"
},
"label": "Profile"
},
"select_a_settings": "Select a setting",
"users": {
"export": "Export User Tokens",
"import": "Import User Tokens",
"label": "Logged in users"
}
},
"state": {
"attachments_exceed_server_limit": "The number of attachments exceeded the limit per post.",
"attachments_limit_error": "Limit per post exceeded",
"edited": "(Edited)",
"editing": "Editing",
"loading": "Loading...",
"upload_failed": "Upload failed",
"uploading": "Uploading..."
},
"status": {
"edited": "Edited {0}",
"filter_hidden_phrase": "Filtered by",
"filter_removed_phrase": "Removed by filter",
"filter_show_anyway": "Show anyway",
"img_alt": {
"desc": "Description",
"dismiss": "Dismiss"
},
"poll": {
"count": "{0} votes|{0} vote|{0} votes",
"ends": "ends {0}",
"finished": "finished {0}"
},
"reblogged": "{0} reblogged",
"replying_to": "Replying to {0}",
"someone": "someone",
"spoiler_show_less": "Show less",
"spoiler_show_more": "Show more",
"try_original_site": "Try original site"
},
"status_history": {
"created": "created {0}",
"edited": "edited {0}"
},
"tab": {
"for_you": "For you",
"hashtags": "Hashtags",
"media": "Media",
"news": "News",
"notifications_all": "All",
"notifications_mention": "Mention",
"posts": "Posts",
"posts_with_replies": "Posts & Replies"
},
"time_ago_options": {
"day_future": "in 0 days|tomorrow|in {n} days",
"day_past": "0 days ago|yesterday|{n} days ago",
"hour_future": "in 0 hours|in 1 hour|in {n} hours",
"hour_past": "0 hours ago|1 hour ago|{n} hours ago",
"just_now": "just now",
"minute_future": "in 0 minutes|in 1 minute|in {n} minutes",
"minute_past": "0 minutes ago|1 minute ago|{n} minutes ago",
"month_future": "in 0 months|next month|in {n} months",
"month_past": "0 months ago|last month|{n} months ago",
"second_future": "just now|in {n} second|in {n} seconds",
"second_past": "just now|{n} second ago|{n} seconds ago",
"short_day_future": "in {n}d",
"short_day_past": "{n}d",
"short_hour_future": "in {n}h",
"short_hour_past": "{n}h",
"short_minute_future": "in {n}min",
"short_minute_past": "{n}min",
"short_month_future": "in {n}mo",
"short_month_past": "{n}mo",
"short_second_future": "in {n}s",
"short_second_past": "{n}s",
"short_week_future": "in {n}w",
"short_week_past": "{n}w",
"short_year_future": "in {n}y",
"short_year_past": "{n}y",
"week_future": "in 0 weeks|next week|in {n} weeks",
"week_past": "0 weeks ago|last week|{n} weeks ago",
"year_future": "in 0 years|next year|in {n} years",
"year_past": "0 years ago|last year|{n} years ago"
},
"timeline": {
"show_new_items": "Show {v} new items|Show {v} new item|Show {v} new items"
},
"title": {
"federated_timeline": "Federated Timeline",
"local_timeline": "Local Timeline"
},
"tooltip": {
"add_content_warning": "Add content warning",
"add_media": "Add images, a video or an audio file",
"add_publishable_content": "Add content to publish",
"change_content_visibility": "Change content visibility",
"change_language": "Change language",
"emoji": "Emoji",
"explore_links_intro": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
"explore_posts_intro": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.",
"explore_tags_intro": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
"toggle_code_block": "Toggle code block"
},
"user": {
"add_existing": "Add an existing account",
"server_address_label": "Mastodon Server Address",
"sign_in_desc": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.",
"sign_in_notice_title": "Viewing {0} public data",
"sign_out_account": "Sign out {0}",
"tip_no_account": "If you don't have a Mastodon account yet, {0}.",
"tip_register_account": "pick your server and register one"
},
"visibility": {
"direct": "Direct",
"direct_desc": "Visible for mentioned users only",
"private": "Followers only",
"private_desc": "Visible for followers only",
"public": "Public",
"public_desc": "Visible for all",
"unlisted": "Unlisted",
"unlisted_desc": "Visible for all, but opted-out of discovery features"
}
}

373
locales/en-US.ftl Normal file
View file

@ -0,0 +1,373 @@
## A11y
a11y_loading_page = Loading page, please wait
# Not used
a11y_loading_titled_page = Loading {$title} page, please wait
a11y_locale_changed = Language changed to {$lang}
a11y_locale_changing = Changing language, please wait
a11y_route_loaded = Page {$title} loaded
## Account
account_avatar_description = {$username}'s avatar
account_blocked_by = You're blocked by this user.
account_blocked_domains = Blocked domains
account_blocked_users = Blocked users
account_blocking = Blocked
account_bot = BOT
account_favourites = Favorites
account_follow = Follow
account_follow_back = Follow back
account_follow_requested = Requested
account_followers = Followers
account_followers_count = { $count ->
[one] {$formattedCount} Follower
*[other] {$formattedCount} Followers
}
account_following = Following
account_following_count = {$formattedCount} Following
account_follows_you = Follows you
account_go_to_profile = Go to profile
account_joined = Joined
account_moved_title = has indicated that their new account is now:
account_muted_users = Muted users
account_muting = Muted
account_mutuals = Mutuals
account_pinned = Pinned
account_posts = Posts
account_posts_count = { $count ->
[one] {$formattedCount} Post
*[other] {$formattedCount} Posts
}
account_profile_description = {$username}'s profile header
account_profile_unavailable = Profile unavailable
account_unblock = Unblock
account_unfollow = Unfollow
account_unmute = Unmute
action_apply = Apply
action_bookmark = Bookmark
action_bookmarked = Bookmarked
action_boost = Boost
action_boost_count = {0}
action_boosted = Boosted
action_clear_upload_failed = Clear file upload errors
action_close = Close
action_compose = Compose
action_confirm = Confirm
action_edit = Edit
action_enter_app = Enter App
action_favourite = Favorite
action_favourite_count = {0}
action_favourited = Favorited
action_more = More
action_next = Next
action_prev = Prev
action_publish = Publish
action_reply = Reply
action_reply_count = {0}
action_reset = Reset
action_save = Save
action_save_changes = Save changes
action_sign_in = Sign in
action_switch_account = Switch account
action_vote = Vote
app_desc_short = A nimble Mastodon web client
app_logo = Elk Logo
app_name = Elk
attachment_edit_title = Description
attachment_remove_label = Remove attachment
command_activate = Activate
command_complete = Complete
command_compose_desc = Write a new post
command_n-people-in-the-past-n-days = {$count} people in the past {$days} days
command_select_lang = Select language
command_sign_in_desc = Add an existing account
command_switch_account = Switch to {$username}
command_switch_account_desc = Switch to another account
command_toggle_dark_mode = Toggle dark mode
command_toggle_zen_mode = Toggle zen mode
common_confirm_dialog_cancel = No
common_confirm_dialog_confirm = Yes
common_confirm_dialog_title = Are you sure?
common_end_of_list = End of the list
common_error = ERROR
common_in = in
common_not_found = 404 Not Found
common_offline_desc = Seems like you are offline. Please check your network connection.
compose_draft_title = Draft {0}
compose_drafts = Drafts ({$count})
conversation_with = with
error_account_not_found = Account {$username} not found
error_explore-list-empty = Nothing is trending right now. Check back later!
error_file_size_cannot_exceed_n_mb = File size cannot exceed {$size}MB
error_sign_in_error = Cannot connect to the server.
error_status_not_found = Post not found
error_unsupported_file_format = Unsupported file format
help_desc_highlight = Expect some bugs and missing features here and there.
help_desc_para1 = Thanks for your interest in trying out Elk, our work-in-progress generic Mastodon client!
help_desc_para2 = We are working hard on the development and improving it over time. We will open source the app once it is ready for public use.
help_desc_para3 = To help boosting out development, you can sponsor our team members with the links below. We hope you enjoy Elk!
help_desc_para4 = Before that, if you'd like to help with testing, giving feedback, or contributing,
help_desc_para5 = reach out to us on Mastodon
help_desc_para6 = and get involved.
help_title = Elk is in Preview!
language_none = None
language_search = Search
menu_block_account = Block {$username}
menu_block_domain = Block domain {$domain}
menu_copy_link_to_post = Copy link to this post
menu_delete = Delete
menu_delete_and_redraft = Delete & re-draft
menu_delete_confirm_cancel = Cancel
menu_delete_confirm_confirm = Delete
menu_delete_confirm_title = Are you sure you want to delete this post?
menu_direct_message_account = Direct message {$username}
menu_edit = Edit
menu_hide_reblogs = Hide boosts from {$username}
menu_mention_account = Mention {$username}
menu_mute_account = Mute {$username}
menu_mute_conversation = Mute this post
menu_open_in_original_site = Open in original site
menu_pin_on_profile = Pin on profile
menu_share_post = Share this post
menu_show_favourited_and_boosted_by = Show who favourited and boosted
menu_show_reblogs = Show boosts from {$username}
menu_show_untranslated = Show untranslated
menu_toggle_theme_dark = Toggle dark mode
menu_toggle_theme_light = Toggle light mode
menu_translate_post = Translate post
menu_unblock_account = Unblock {$username}
menu_unblock_domain = Unblock domain {$domain}
menu_unmute_account = Unmute {$username}
menu_unmute_conversation = Unmute this post
menu_unpin_on_profile = Unpin on profile
nav_back = Go back
nav_blocked_domains = Blocked domains
nav_blocked_users = Blocked users
nav_bookmarks = Bookmarks
nav_built_at = Built {0}
nav_conversations = Conversations
nav_explore = Explore
nav_favourites = Favorites
nav_federated = Federated
nav_home = Home
nav_local = Local
nav_muted_users = Muted users
nav_notifications = Notifications
nav_profile = Profile
nav_search = Search
nav_select_feature_flags = Toggle Feature Flags
nav_select_font_size = Font Size
nav_select_language = Display Language
nav_settings = Settings
nav_show_intro = Show intro
nav_toggle_theme = Toggle Theme
nav_zen_mode = Zen Mode
notification_favourited_post = favorited your post
notification_followed_you = followed you
notification_followed_you_count = {0} people followed you|{0} person followed you|{0} people followed you
notification_missing_type = MISSING notification.type:
notification_reblogged_post = reblogged your post
notification_request_to_follow = requested to follow you
notification_signed_up = signed up
notification_update_status = updated their post
placeholder_content_warning = Write your warning here
placeholder_default_1 = What is on your mind?
placeholder_reply_to_account = Reply to {0}
placeholder_replying = Replying
placeholder_the_thread = the thread
pwa_dismiss = Dismiss
pwa_title = New Elk update available!
pwa_update = Update
pwa_update_available_short = Update Elk
pwa_webmanifest_description = { $env ->
[canary] A nimble Mastodon web client (canary)
[dev] A nimble Mastodon web client (dev)
[preview] A nimble Mastodon web client (preview)
*[release] A nimble Mastodon web client
}
pwa_webmanifest_name = { $env ->
[canary] Elk (canary)
[dev] Elk (dev)
[preview] Elk (preview)
*[release] Elk
}
pwa_webmanifest_short_name = { $env ->
[canary] Elk (canary)
[dev] Elk (dev)
[preview] Elk (preview)
*[release] Elk
}
search_search_desc = Search for people & hashtags
search_search_empty = Could not find anything for these search terms
settings_about_label = About
settings_account_settings_description = Edit your account settings in Mastodon UI
settings_account_settings_label = Account settings
settings_feature_flags_github_cards = GitHub Cards
settings_feature_flags_title = Experimental Features
settings_feature_flags_user_picker = User Picker
settings_feature_flags_virtual_scroll = Virtual Scrolling
settings_interface_color_mode = Color Mode
settings_interface_dark_mode = Dark Mode
settings_interface_default = (default)
settings_interface_font_size = Font Size
settings_interface_label = Interface
settings_interface_light_mode = Light Mode
settings_interface_size_label_lg = Large
settings_interface_size_label_md = Medium
settings_interface_size_label_sm = Small
settings_interface_size_label_xl = Extra large
settings_interface_size_label_xs = Extra small
settings_language_display_language = Display Language
settings_language_label = Language
settings_notifications_label = Notifications
settings_notifications_notifications_label = Notifications settings
settings_notifications_push_notifications_alerts_favourite = Favorites
settings_notifications_push_notifications_alerts_follow = New followers
settings_notifications_push_notifications_alerts_mention = Mentions
settings_notifications_push_notifications_alerts_poll = Polls
settings_notifications_push_notifications_alerts_reblog = Reblog your post
settings_notifications_push_notifications_alerts_title = What notifications to receive?
settings_notifications_push_notifications_description = Receive notifications even when you are not using Elk.
settings_notifications_push_notifications_instructions = Don't forget to save your changes using @:settings.notifications.push_notifications.save_settings button!
settings_notifications_push_notifications_label = Push notifications settings
settings_notifications_push_notifications_policy_all = From anyone
settings_notifications_push_notifications_policy_followed = Of people I follow
settings_notifications_push_notifications_policy_follower = Of people who follow me
settings_notifications_push_notifications_policy_none = From no one
settings_notifications_push_notifications_policy_title = Who can I receive notifications from?
settings_notifications_push_notifications_save_settings = Save settings
settings_notifications_push_notifications_subscription_error_clear_error = Clear error
settings_notifications_push_notifications_subscription_error_permission_denied = Permission denied: enable notifications in your browser.
settings_notifications_push_notifications_subscription_error_request_error = An error occurred while requesting the subscription, try again and if the error persists, please report the issue to the Elk repository.
settings_notifications_push_notifications_subscription_error_title = Could not subscribe to push notifications
settings_notifications_push_notifications_title = Push notifications settings
settings_notifications_push_notifications_undo_settings = Undo changes
settings_notifications_push_notifications_unsubscribe = Disable push notifications
settings_notifications_push_notifications_unsupported = Your browser does not support push notifications.
settings_notifications_push_notifications_warning_enable_close = Close
settings_notifications_push_notifications_warning_enable_description = To receive notifications when Elk is not open, enable push notifications. You can control precisely what types of interactions generate push notifications via the "@:settings.notifications.show_btn{'"'} button above once enabled.
settings_notifications_push_notifications_warning_enable_description_desktop = To receive notifications when Elk is not open, enable push notifications. You can control precisely what types of interactions generate push notifications in "Settings > Notifications > Push notifications settings" once enabled.
settings_notifications_push_notifications_warning_enable_description_mobile = You can also access the settings using the navigation menu "Settings > Notifications > Push notification settings".
settings_notifications_push_notifications_warning_enable_description_settings = To receive notifications when Elk is not open, enable push notifications. You will be able to control precisely what types of interactions generate push notifications on this same screen once you enable them.
settings_notifications_push_notifications_warning_enable_desktop = Enable push notifications
settings_notifications_push_notifications_warning_enable_title = Never miss anything
settings_notifications_push_notifications_warning_re_auth = It seems that your server does not support push notifications. Try sign out and sign in again, if this message still appears contact your server administrator.
settings_notifications_show_btn = Go to notifications settings
settings_notifications_settings = Notifications
settings_preferences_label = Preferences
settings_profile_appearance_bio = Bio
settings_profile_appearance_description = Edit avatar, username, profile, etc.
settings_profile_appearance_display_name = Display name
settings_profile_appearance_label = Appearance
settings_profile_appearance_profile_metadata = Profile metadata
settings_profile_appearance_profile_metadata_desc = You can have up to 4 items displayed as a table on your profile
settings_profile_appearance_title = Edit profile
settings_profile_featured_tags_description = People can browse your public posts under these hashtags.
settings_profile_featured_tags_label = Featured hashtags
settings_profile_label = Profile
settings_select_a_settings = Select a setting
settings_users_export = Export User Tokens
settings_users_import = Import User Tokens
settings_users_label = Logged in users
state_attachments_exceed_server_limit = The number of attachments exceeded the limit per post.
state_attachments_limit_error = Limit per post exceeded
state_edited = (Edited)
state_editing = Editing
state_loading = Loading...
state_upload_failed = Upload failed
state_uploading = Uploading...
status_boosted_by = Boosted By
status_edited = Edited {$date}
status_favourited_by = Favorited By
status_filter_hidden_phrase = Filtered by
status_filter_removed_phrase = Removed by filter
status_filter_show_anyway = Show anyway
status_img_alt_desc = Description
status_img_alt_dismiss = Dismiss
status_poll_count = {0} votes|{0} vote|{0} votes
status_poll_ends = ends {0}
status_poll_finished = finished {0}
status_reblogged = {0} reblogged
status_replying_to = Replying to {0}
status_show_full_thread = Show Full thread
status_someone = someone
status_spoiler_show_less = Show less
status_spoiler_show_more = Show more
status_thread = Thread
status_try_original_site = Try original site
status_history_created = created {0}
status_history_edited = edited {$date}
tab_for_you = For you
tab_hashtags = Hashtags
tab_media = Media
tab_news = News
tab_notifications_all = All
tab_notifications_mention = Mention
tab_posts = Posts
tab_posts_with_replies = Posts & Replies
tag_follow = Follow
tag_follow_label = Follow {$tag} tag
tag_unfollow = Unfollow
tag_unfollow_label = Unfollow {$tag} tag
time_ago_options_day_future = in 0 days|tomorrow|in {n} days
time_ago_options_day_past = 0 days ago|yesterday|{n} days ago
time_ago_options_hour_future = in 0 hours|in 1 hour|in {n} hours
time_ago_options_hour_past = { $n ->
[one] {$n} hour ago
*[other] {$n} hours ago
}
time_ago_options_just_now = just now
time_ago_options_minute_future = in 0 minutes|in 1 minute|in {n} minutes
time_ago_options_minute_past = 0 minutes ago|1 minute ago|{n} minutes ago
time_ago_options_month_future = in 0 months|next month|in {n} months
time_ago_options_month_past = 0 months ago|last month|{n} months ago
time_ago_options_second_future = just now|in {n} second|in {n} seconds
time_ago_options_second_past = just now|{n} second ago|{n} seconds ago
time_ago_options_short_day_future = in {n}d
time_ago_options_short_day_past = {n}d
time_ago_options_short_hour_future = in {n}h
time_ago_options_short_hour_past = {$n}h
time_ago_options_short_minute_future = in {n}min
time_ago_options_short_minute_past = {$n}min
time_ago_options_short_month_future = in {n}mo
time_ago_options_short_month_past = {n}mo
time_ago_options_short_second_future = in {n}s
time_ago_options_short_second_past = {n}s
time_ago_options_short_week_future = in {n}w
time_ago_options_short_week_past = {n}w
time_ago_options_short_year_future = in {n}y
time_ago_options_short_year_past = {n}y
time_ago_options_week_future = in 0 weeks|next week|in {n} weeks
time_ago_options_week_past = 0 weeks ago|last week|{n} weeks ago
time_ago_options_year_future = in 0 years|next year|in {n} years
time_ago_options_year_past = 0 years ago|last year|{n} years ago
timeline_show_new_items = Show {v} new items|Show {v} new item|Show {v} new items
timeline_view_older_posts = Older posts from other instances may not be displayed.
title_federated_timeline = Federated Timeline
title_local_timeline = Local Timeline
tooltip_add_content_warning = Add content warning
tooltip_add_media = Add images, a video or an audio file
tooltip_add_publishable_content = Add content to publish
tooltip_change_content_visibility = Change content visibility
tooltip_change_language = Change language
tooltip_emoji = Emoji
tooltip_explore_links_intro = These news stories are being talked about by people on this and other servers of the decentralized network right now.
tooltip_explore_posts_intro = These posts from this and other servers in the decentralized network are gaining traction on this server right now.
tooltip_explore_tags_intro = These hashtags are gaining traction among people on this and other servers of the decentralized network right now.
tooltip_toggle_code_block = Toggle code block
user_add_existing = Add an existing account
user_server_address_label = Mastodon Server Address
user_sign_in_desc = Sign in to follow profiles or hashtags, favorite, share and reply to posts, or interact from your account on a different server.
user_sign_in_notice_title = Viewing {0} public data
user_sign_out_account = Sign out {$username}
user_tip_no_account = If you don't have a Mastodon account yet, {0}.
user_tip_register_account = pick your server and register one
visibility_direct = Direct
visibility_direct_desc = Visible for mentioned users only
visibility_private = Followers only
visibility_private_desc = Visible for followers only
visibility_public = Public
visibility_public_desc = Visible for all
visibility_unlisted = Unlisted
visibility_unlisted_desc = Visible for all, but opted-out of discovery features

View file

@ -1,468 +0,0 @@
{
"a11y": {
"loading_page": "Loading page, please wait",
"loading_titled_page": "Loading {0} page, please wait",
"locale_changed": "Language changed to {0}",
"locale_changing": "Changing language, please wait",
"route_loaded": "Page {0} loaded"
},
"account": {
"avatar_description": "{0}'s avatar",
"blocked_by": "You're blocked by this user.",
"blocked_domains": "Blocked domains",
"blocked_users": "Blocked users",
"blocking": "Blocked",
"bot": "BOT",
"favourites": "Favorites",
"follow": "Follow",
"follow_back": "Follow back",
"follow_requested": "Requested",
"followers": "Followers",
"followers_count": "{0} Followers|{0} Follower|{0} Followers",
"following": "Following",
"following_count": "{0} Following",
"follows_you": "Follows you",
"go_to_profile": "Go to profile",
"joined": "Joined",
"moved_title": "has indicated that their new account is now:",
"muted_users": "Muted users",
"muting": "Muted",
"mutuals": "Mutuals",
"pinned": "Pinned",
"posts": "Posts",
"posts_count": "{0} Posts|{0} Post|{0} Posts",
"profile_description": "{0}'s profile header",
"profile_unavailable": "Profile unavailable",
"unblock": "Unblock",
"unfollow": "Unfollow",
"unmute": "Unmute"
},
"action": {
"apply": "Apply",
"bookmark": "Bookmark",
"bookmarked": "Bookmarked",
"boost": "Boost",
"boost_count": "{0}",
"boosted": "Boosted",
"clear_upload_failed": "Clear file upload errors",
"close": "Close",
"compose": "Compose",
"confirm": "Confirm",
"edit": "Edit",
"enter_app": "Enter App",
"favourite": "Favorite",
"favourite_count": "{0}",
"favourited": "Favorited",
"more": "More",
"next": "Next",
"prev": "Prev",
"publish": "Publish",
"reply": "Reply",
"reply_count": "{0}",
"reset": "Reset",
"save": "Save",
"save_changes": "Save changes",
"sign_in": "Sign in",
"switch_account": "Switch account",
"vote": "Vote"
},
"app_desc_short": "A nimble Mastodon web client",
"app_logo": "Elk Logo",
"app_name": "Elk",
"attachment": {
"edit_title": "Description",
"remove_label": "Remove attachment"
},
"command": {
"activate": "Activate",
"complete": "Complete",
"compose_desc": "Write a new post",
"n-people-in-the-past-n-days": "{0} people in the past {1} days",
"select_lang": "Select language",
"sign_in_desc": "Add an existing account",
"switch_account": "Switch to {0}",
"switch_account_desc": "Switch to another account",
"toggle_dark_mode": "Toggle dark mode",
"toggle_zen_mode": "Toggle zen mode"
},
"common": {
"confirm_dialog": {
"cancel": "No",
"confirm": "Yes",
"title": "Are you sure?"
},
"end_of_list": "End of the list",
"error": "ERROR",
"in": "in",
"not_found": "404 Not Found",
"offline_desc": "Seems like you are offline. Please check your network connection."
},
"compose": {
"draft_title": "Draft {0}",
"drafts": "Drafts ({v})"
},
"conversation": {
"with": "with"
},
"error": {
"account_not_found": "Account {0} not found",
"explore-list-empty": "Nothing is trending right now. Check back later!",
"file_size_cannot_exceed_n_mb": "File size cannot exceed {0}MB",
"sign_in_error": "Cannot connect to the server.",
"status_not_found": "Post not found",
"unsupported_file_format": "Unsupported file format"
},
"help": {
"desc_highlight": "Expect some bugs and missing features here and there.",
"desc_para1": "Thanks for your interest in trying out Elk, our work-in-progress generic Mastodon client!",
"desc_para2": "We are working hard on the development and improving it over time. We will open source the app once it is ready for public use.",
"desc_para3": "To help boosting out development, you can sponsor our team members with the links below. We hope you enjoy Elk!",
"desc_para4": "Before that, if you'd like to help with testing, giving feedback, or contributing,",
"desc_para5": "reach out to us on Mastodon",
"desc_para6": "and get involved.",
"title": "Elk is in Preview!"
},
"language": {
"none": "None",
"search": "Search"
},
"menu": {
"block_account": "Block {0}",
"block_domain": "Block domain {0}",
"copy_link_to_post": "Copy link to this post",
"delete": "Delete",
"delete_and_redraft": "Delete & re-draft",
"delete_confirm": {
"cancel": "Cancel",
"confirm": "Delete",
"title": "Are you sure you want to delete this post?"
},
"direct_message_account": "Direct message {0}",
"edit": "Edit",
"hide_reblogs": "Hide boosts from {0}",
"mention_account": "Mention {0}",
"mute_account": "Mute {0}",
"mute_conversation": "Mute this post",
"open_in_original_site": "Open in original site",
"pin_on_profile": "Pin on profile",
"share_post": "Share this post",
"show_favourited_and_boosted_by": "Show who favourited and boosted",
"show_reblogs": "Show boosts from {0}",
"show_untranslated": "Show untranslated",
"toggle_theme": {
"dark": "Toggle dark mode",
"light": "Toggle light mode"
},
"translate_post": "Translate post",
"unblock_account": "Unblock {0}",
"unblock_domain": "Unblock domain {0}",
"unmute_account": "Unmute {0}",
"unmute_conversation": "Unmute this post",
"unpin_on_profile": "Unpin on profile"
},
"nav": {
"back": "Go back",
"blocked_domains": "Blocked domains",
"blocked_users": "Blocked users",
"bookmarks": "Bookmarks",
"built_at": "Built {0}",
"conversations": "Conversations",
"explore": "Explore",
"favourites": "Favorites",
"federated": "Federated",
"home": "Home",
"local": "Local",
"muted_users": "Muted users",
"notifications": "Notifications",
"profile": "Profile",
"search": "Search",
"select_feature_flags": "Toggle Feature Flags",
"select_font_size": "Font Size",
"select_language": "Display Language",
"settings": "Settings",
"show_intro": "Show intro",
"toggle_theme": "Toggle Theme",
"zen_mode": "Zen Mode"
},
"notification": {
"favourited_post": "favorited your post",
"followed_you": "followed you",
"followed_you_count": "{0} people followed you|{0} person followed you|{0} people followed you",
"missing_type": "MISSING notification.type:",
"reblogged_post": "reblogged your post",
"request_to_follow": "requested to follow you",
"signed_up": "signed up",
"update_status": "updated their post"
},
"placeholder": {
"content_warning": "Write your warning here",
"default_1": "What is on your mind?",
"reply_to_account": "Reply to {0}",
"replying": "Replying",
"the_thread": "the thread"
},
"pwa": {
"dismiss": "Dismiss",
"title": "New Elk update available!",
"update": "Update",
"update_available_short": "Update Elk",
"webmanifest": {
"canary": {
"description": "A nimble Mastodon web client (canary)",
"name": "Elk (canary)",
"short_name": "Elk (canary)"
},
"dev": {
"description": "A nimble Mastodon web client (dev)",
"name": "Elk (dev)",
"short_name": "Elk (dev)"
},
"preview": {
"description": "A nimble Mastodon web client (preview)",
"name": "Elk (preview)",
"short_name": "Elk (preview)"
},
"release": {
"description": "A nimble Mastodon web client",
"name": "Elk",
"short_name": "Elk"
}
}
},
"search": {
"search_desc": "Search for people & hashtags",
"search_empty": "Could not find anything for these search terms"
},
"settings": {
"about": {
"label": "About"
},
"account_settings": {
"description": "Edit your account settings in Mastodon UI",
"label": "Account settings"
},
"feature_flags": {
"github_cards": "GitHub Cards",
"title": "Experimental Features",
"user_picker": "User Picker",
"virtual_scroll": "Virtual Scrolling"
},
"interface": {
"color_mode": "Color Mode",
"dark_mode": "Dark Mode",
"default": " (default)",
"font_size": "Font Size",
"label": "Interface",
"light_mode": "Light Mode",
"size_label": {
"lg": "Large",
"md": "Medium",
"sm": "Small",
"xl": "Extra large",
"xs": "Extra small"
}
},
"language": {
"display_language": "Display Language",
"label": "Language"
},
"notifications": {
"label": "Notifications",
"notifications": {
"label": "Notifications settings"
},
"push_notifications": {
"alerts": {
"favourite": "Favorites",
"follow": "New followers",
"mention": "Mentions",
"poll": "Polls",
"reblog": "Reblog your post",
"title": "What notifications to receive?"
},
"description": "Receive notifications even when you are not using Elk.",
"instructions": "Don't forget to save your changes using @:settings.notifications.push_notifications.save_settings button!",
"label": "Push notifications settings",
"policy": {
"all": "From anyone",
"followed": "Of people I follow",
"follower": "Of people who follow me",
"none": "From no one",
"title": "Who can I receive notifications from?"
},
"save_settings": "Save settings",
"subscription_error": {
"clear_error": "Clear error",
"permission_denied": "Permission denied: enable notifications in your browser.",
"request_error": "An error occurred while requesting the subscription, try again and if the error persists, please report the issue to the Elk repository.",
"title": "Could not subscribe to push notifications"
},
"title": "Push notifications settings",
"undo_settings": "Undo changes",
"unsubscribe": "Disable push notifications",
"unsupported": "Your browser does not support push notifications.",
"warning": {
"enable_close": "Close",
"enable_description": "To receive notifications when Elk is not open, enable push notifications. You can control precisely what types of interactions generate push notifications via the \"@:settings.notifications.show_btn{'\"'} button above once enabled.",
"enable_description_desktop": "To receive notifications when Elk is not open, enable push notifications. You can control precisely what types of interactions generate push notifications in \"Settings > Notifications > Push notifications settings\" once enabled.",
"enable_description_mobile": "You can also access the settings using the navigation menu \"Settings > Notifications > Push notification settings\".",
"enable_description_settings": "To receive notifications when Elk is not open, enable push notifications. You will be able to control precisely what types of interactions generate push notifications on this same screen once you enable them.",
"enable_desktop": "Enable push notifications",
"enable_title": "Never miss anything",
"re_auth": "It seems that your server does not support push notifications. Try sign out and sign in again, if this message still appears contact your server administrator."
}
},
"show_btn": "Go to notifications settings"
},
"notifications_settings": "Notifications",
"preferences": {
"label": "Preferences"
},
"profile": {
"appearance": {
"bio": "Bio",
"description": "Edit avatar, username, profile, etc.",
"display_name": "Display name",
"label": "Appearance",
"profile_metadata": "Profile metadata",
"profile_metadata_desc": "You can have up to 4 items displayed as a table on your profile",
"title": "Edit profile"
},
"featured_tags": {
"description": "People can browse your public posts under these hashtags.",
"label": "Featured hashtags"
},
"label": "Profile"
},
"select_a_settings": "Select a setting",
"users": {
"export": "Export User Tokens",
"import": "Import User Tokens",
"label": "Logged in users"
}
},
"state": {
"attachments_exceed_server_limit": "The number of attachments exceeded the limit per post.",
"attachments_limit_error": "Limit per post exceeded",
"edited": "(Edited)",
"editing": "Editing",
"loading": "Loading...",
"upload_failed": "Upload failed",
"uploading": "Uploading..."
},
"status": {
"boosted_by": "Boosted By",
"edited": "Edited {0}",
"favourited_by": "Favorited By",
"filter_hidden_phrase": "Filtered by",
"filter_removed_phrase": "Removed by filter",
"filter_show_anyway": "Show anyway",
"img_alt": {
"desc": "Description",
"dismiss": "Dismiss"
},
"poll": {
"count": "{0} votes|{0} vote|{0} votes",
"ends": "ends {0}",
"finished": "finished {0}"
},
"reblogged": "{0} reblogged",
"replying_to": "Replying to {0}",
"show_full_thread": "Show Full thread",
"someone": "someone",
"spoiler_show_less": "Show less",
"spoiler_show_more": "Show more",
"thread": "Thread",
"try_original_site": "Try original site"
},
"status_history": {
"created": "created {0}",
"edited": "edited {0}"
},
"tab": {
"for_you": "For you",
"hashtags": "Hashtags",
"media": "Media",
"news": "News",
"notifications_all": "All",
"notifications_mention": "Mention",
"posts": "Posts",
"posts_with_replies": "Posts & Replies"
},
"tag": {
"follow": "Follow",
"follow_label": "Follow {0} tag",
"unfollow": "Unfollow",
"unfollow_label": "Unfollow {0} tag"
},
"time_ago_options": {
"day_future": "in 0 days|tomorrow|in {n} days",
"day_past": "0 days ago|yesterday|{n} days ago",
"hour_future": "in 0 hours|in 1 hour|in {n} hours",
"hour_past": "0 hours ago|1 hour ago|{n} hours ago",
"just_now": "just now",
"minute_future": "in 0 minutes|in 1 minute|in {n} minutes",
"minute_past": "0 minutes ago|1 minute ago|{n} minutes ago",
"month_future": "in 0 months|next month|in {n} months",
"month_past": "0 months ago|last month|{n} months ago",
"second_future": "just now|in {n} second|in {n} seconds",
"second_past": "just now|{n} second ago|{n} seconds ago",
"short_day_future": "in {n}d",
"short_day_past": "{n}d",
"short_hour_future": "in {n}h",
"short_hour_past": "{n}h",
"short_minute_future": "in {n}min",
"short_minute_past": "{n}min",
"short_month_future": "in {n}mo",
"short_month_past": "{n}mo",
"short_second_future": "in {n}s",
"short_second_past": "{n}s",
"short_week_future": "in {n}w",
"short_week_past": "{n}w",
"short_year_future": "in {n}y",
"short_year_past": "{n}y",
"week_future": "in 0 weeks|next week|in {n} weeks",
"week_past": "0 weeks ago|last week|{n} weeks ago",
"year_future": "in 0 years|next year|in {n} years",
"year_past": "0 years ago|last year|{n} years ago"
},
"timeline": {
"show_new_items": "Show {v} new items|Show {v} new item|Show {v} new items",
"view_older_posts": "Older posts from other instances may not be displayed."
},
"title": {
"federated_timeline": "Federated Timeline",
"local_timeline": "Local Timeline"
},
"tooltip": {
"add_content_warning": "Add content warning",
"add_media": "Add images, a video or an audio file",
"add_publishable_content": "Add content to publish",
"change_content_visibility": "Change content visibility",
"change_language": "Change language",
"emoji": "Emoji",
"explore_links_intro": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
"explore_posts_intro": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.",
"explore_tags_intro": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
"toggle_code_block": "Toggle code block"
},
"user": {
"add_existing": "Add an existing account",
"server_address_label": "Mastodon Server Address",
"sign_in_desc": "Sign in to follow profiles or hashtags, favorite, share and reply to posts, or interact from your account on a different server.",
"sign_in_notice_title": "Viewing {0} public data",
"sign_out_account": "Sign out {0}",
"tip_no_account": "If you don't have a Mastodon account yet, {0}.",
"tip_register_account": "pick your server and register one"
},
"visibility": {
"direct": "Direct",
"direct_desc": "Visible for mentioned users only",
"private": "Followers only",
"private_desc": "Visible for followers only",
"public": "Public",
"public_desc": "Visible for all",
"unlisted": "Unlisted",
"unlisted_desc": "Visible for all, but opted-out of discovery features"
}
}

359
locales/es-ES.ftl Normal file
View file

@ -0,0 +1,359 @@
a11y_loading_page = Cargando página, espere por favor
a11y_loading_titled_page = Cargando página {$title}, espere por favor
a11y_locale_changed = Idioma cambiado a {$lang}
a11y_locale_changing = Cambiando idioma, espere por favor
a11y_route_loaded = Página {$title} cargada
account_avatar_description = avatar de {$username}
account_blocked_by = Estás bloqueado por este usuario.
account_blocked_domains = Dominios bloqueados
account_blocked_users = Usuarios bloqueados
account_blocking = Bloqueado
account_bot = BOT
account_favourites = Favoritos
account_follow = Seguir
account_follow_back = Seguir de vuelta
account_follow_requested = Solicitado
account_followers = Seguidores
# Should there be [many] here? de seguidores?
account_followers_count = { $count ->
[one] {$formattedCount} Seguidor
*[other] {$formattedCount} Seguidores
}
account_following = Siguiendo
account_following_count = {$formattedCount} Siguiendo
account_follows_you = Te sigue
account_go_to_profile = Ir al perfil
account_joined = Se unió
account_moved_title = ha indicado que su nueva cuenta ahora es:
account_muted_users = Usuarios silenciados
account_muting = Silenciado
account_mutuals = Mutuo
account_pinned = Publicaciones fijadas
account_posts = Publicaciones
account_posts_count = { $count ->
[one] {$formattedCount} Publicación
*[other] {$formattedCount} Publicaciones
}
account_profile_description = Encabezado del perfil de {$username}
account_profile_unavailable = Perfil no disponible
account_unblock = Desbloquear
account_unfollow = Dejar de seguir
account_unmute = Dejar de silenciar
action_apply = Aplicar
action_bookmark = Añadir marcador
action_bookmarked = Guardado como marcador
action_boost = Retootear
action_boost_count = {0}
action_boosted = Retooteado
action_clear_upload_failed = Limpiar errores de subida de archivos
action_close = Cerrar
action_compose = Redactar
action_confirm = Confirmar
action_edit = Editar
action_enter_app = Entrar
action_favourite = Favorito
action_favourite_count = {0}
action_favourited = Marcado como favorito
action_more = Más
action_next = Siguiente
action_prev = Anterior
action_publish = Publicar
action_reply = Responder
action_reply_count = {0}
action_reset = Reiniciar
action_save = Guardar
action_save_changes = Guardar cambios
action_sign_in = Iniciar sesión
action_switch_account = Cambiar cuenta
action_vote = Votar
app_desc_short = Un cliente web ágil para Mastodon
app_logo = Logotipo de Elk
app_name = Elk
attachment_edit_title = Descripción
attachment_remove_label = Eliminar archivo adjunto
command_activate = Activar
command_complete = Completar
command_compose_desc = Escribir una nueva publicación
command_n-people-in-the-past-n-days = {$count} personas en los últimos {$days} días
command_select_lang = Seleccionar idioma
command_sign_in_desc = Agregar una cuenta existente
command_switch_account = Cambiar a {$username}
command_switch_account_desc = Cambiar a otra cuenta
command_toggle_dark_mode = Cambiar a modo oscuro
command_toggle_zen_mode = Cambiar a modo zen
common_confirm_dialog_cancel = No
common_confirm_dialog_confirm = Si
common_confirm_dialog_title = ¿Estás seguro?
common_end_of_list = Fin
common_error = ERROR
common_in = en
common_not_found = 404 No Encontrado
common_offline_desc = Al parecer estás fuera de línea. Por favor, comprueba tu conexión a la red.
compose_draft_title = Borrador {0}
compose_drafts = Borradores ({$count})
conversation_with = con
error_account_not_found = No se encontró la cuenta {$username}
error_explore-list-empty = No hay tendencias en este momento. ¡Vuelve más tarde!
error_file_size_cannot_exceed_n_mb = El tamaño del archivo no puede exceder los {$size}MB
error_sign_in_error = No se pudo conectar con el servidor.
error_status_not_found = Estado no encontrado
error_unsupported_file_format = Tipo de archivo no soportado
help_desc_highlight = Es normal encontrar algunos errores y características faltantes aquí y allá.
help_desc_para1 = ¡Gracias por el interés en probar Elk, nuestro cliente genérico en desarrollo para Mastodon!
help_desc_para2 = Estamos trabajando duro en el desarrollo y mejorándolo constantemente. ¡Y pronto te invitaremos a que te unas una vez que lo hagamos de código abierto!
help_desc_para3 = Para ayudar a impulsar el desarrollo, puedes patrocinar a los miembros de nuestro equipo con los enlaces a continuación.
help_desc_para4 = Antes de eso, si te gustaría ayudar probando, dando opinión o contribuyendo,
help_desc_para5 = ponte en contacto con nosotros a través de Mastodon
help_desc_para6 = para participar.
help_title = ¡Elk está en Vista Previa!
language_none = Ninguno
language_search = Buscar
menu_block_account = Bloquear a {$username}
menu_block_domain = Bloquear dominio {$domain}
menu_copy_link_to_post = Copiar enlace
menu_delete = Borrar
menu_delete_and_redraft = Borrar y volver a borrador
menu_delete_confirm_cancel = Cancelar
menu_delete_confirm_confirm = Borrar
menu_delete_confirm_title = ¿Estás seguro que deseas eliminar esta publicación?
menu_direct_message_account = Mensaje directo a {$username}
menu_edit = Editar
menu_hide_reblogs = Ocultar retoots de {$username}
menu_mention_account = Mencionar a {$username}
menu_mute_account = Silenciar a {$username}
menu_mute_conversation = Silenciar publicación
menu_open_in_original_site = Abrir página original
menu_pin_on_profile = Fijar en tu perfil
menu_share_post = Compartir esta publicación
menu_show_favourited_and_boosted_by = Mostrar quien marcó como favorito y quien retooteó
menu_show_reblogs = Mostrar retoots de {$username}
menu_show_untranslated = Mostrar original
menu_toggle_theme_dark = Cambiar a modo oscuro
menu_toggle_theme_light = Cambiar a modo claro
menu_translate_post = Traducir
menu_unblock_account = Desbloquear a {$username}
menu_unblock_domain = Desbloquear dominio {$domain}
menu_unmute_account = Dejar de silenciar a {$username}
menu_unmute_conversation = Dejar de silenciar la publicación
menu_unpin_on_profile = Desfijar del perfil
nav_back = Regresar
nav_blocked_domains = Dominios bloqueados
nav_blocked_users = Usuarios bloqueados
nav_bookmarks = Marcadores
nav_built_at = Compilado {0}
nav_conversations = Conversaciones
nav_explore = Explorar
nav_favourites = Favoritos
nav_federated = Federados
nav_home = Inicio
nav_local = Local
nav_muted_users = Usuarios silenciados
nav_notifications = Notificaciones
nav_profile = Perfil
nav_search = Buscar
nav_select_feature_flags = Cambiar marcadores de funcionalidades
nav_select_font_size = Cambiar tamaño de letra
nav_select_language = Cambiar idioma
nav_settings = Ajustes
nav_show_intro = Mostrar intro
nav_toggle_theme = Cambiar tema
nav_zen_mode = Modo Zen
notification_favourited_post = marcó tu publicación como favorito
notification_followed_you = te ha seguido
notification_followed_you_count = {0} personas te siguieron|{0} persona te siguió|{0} personas te siguieron
notification_missing_type = MISSING notification.type:
notification_reblogged_post = retooteó tu publicación
notification_request_to_follow = ha solicitado seguirte
notification_signed_up = registrado
notification_update_status = ha actualizado su estado
placeholder_content_warning = Escribe tu advertencia aquí
placeholder_default_1 = ¿En qué estás pensando?
placeholder_reply_to_account = Responder a {0}
placeholder_replying = Respondiendo
placeholder_the_thread = el hilo
pwa_dismiss = Descartar
pwa_title = Nueva versión de Elk disponible
pwa_update = Actualizar
pwa_update_available_short = Actualiza Elk
pwa_webmanifest_canary_description = Un cliente web ágil para Mastodon (canary)
pwa_webmanifest_canary_name = Elk (canary)
pwa_webmanifest_canary_short_name = Elk (canary)
pwa_webmanifest_dev_description = Un cliente web ágil para Mastodon (desarrollo)
pwa_webmanifest_dev_name = Elk (desarrollo)
pwa_webmanifest_dev_short_name = Elk (desarrollo)
pwa_webmanifest_preview_description = Un cliente web ágil para Mastodon (vista previa)
pwa_webmanifest_preview_name = Elk (vista previa)
pwa_webmanifest_preview_short_name = Elk (vista previa)
pwa_webmanifest_release_description = Un cliente web ágil para Mastodon
pwa_webmanifest_release_name = Elk
pwa_webmanifest_release_short_name = Elk
search_search_desc = Buscar personas y etiquetas
search_search_empty = No se pudo encontrar nada para estos términos de búsqueda
settings_about_label = Acerca de
settings_account_settings_description = Edita los ajustes de tu cuenta en la interfaz de Mastodon
settings_account_settings_label = Ajustes de cuenta
settings_feature_flags_github_cards = Tarjetas GitHub
settings_feature_flags_title = Funcionalidades experimentales
settings_feature_flags_user_picker = Selector de usuarios
settings_feature_flags_virtual_scroll = Desplazamiento virtual
settings_interface_color_mode = Modo Color
settings_interface_dark_mode = Modo Oscuro
settings_interface_default = (por defecto)
settings_interface_font_size = Tamaño de Letra
settings_interface_label = Interfaz
settings_interface_light_mode = Modo Claro
settings_interface_size_label_lg = Grande
settings_interface_size_label_md = Mediana
settings_interface_size_label_sm = Pequeña
settings_interface_size_label_xl = Extra grande
settings_interface_size_label_xs = Extra pequeña
settings_language_display_language = Idioma de pantalla
settings_language_label = Idioma
settings_notifications_label = Notificaciones
settings_notifications_notifications_label = Ajustes de notificaciones
settings_notifications_push_notifications_alerts_favourite = Favoritos
settings_notifications_push_notifications_alerts_follow = Nuevos seguidores
settings_notifications_push_notifications_alerts_mention = Menciones
settings_notifications_push_notifications_alerts_poll = Encuestas
settings_notifications_push_notifications_alerts_reblog = Retooteo de tus publicaciones
settings_notifications_push_notifications_alerts_title = ¿Qué notificaciones recibir?
settings_notifications_push_notifications_description = Reciba notificaciones incluso cuando no estés utilizando Elk.
settings_notifications_push_notifications_instructions = ¡No olvides guardar los cambios utilizando el botón @:settings.notifications.push_notifications.save_settings{'!'}
settings_notifications_push_notifications_label = Ajustes de notificaciones push
settings_notifications_push_notifications_policy_all = De cualquier persona
settings_notifications_push_notifications_policy_followed = De personas que sigo
settings_notifications_push_notifications_policy_follower = De personas que me siguen
settings_notifications_push_notifications_policy_none = De nadie
settings_notifications_push_notifications_policy_title = ¿De quién puedo recibir notificaciones?
settings_notifications_push_notifications_save_settings = Guardar cambios
settings_notifications_push_notifications_subscription_error_clear_error = Limpiar error
settings_notifications_push_notifications_subscription_error_permission_denied = Permiso denegado: habilita las notificaciones en tu navegador.
settings_notifications_push_notifications_subscription_error_request_error = Se produjo un error al solicitar la suscripción, inténtalo de nuevo y si el error persiste, notifica la incidencia en el repositorio de Elk.
settings_notifications_push_notifications_subscription_error_title = No se pudo suscribir a las notificaciones push
settings_notifications_push_notifications_title = Ajustes de notificaciones push
settings_notifications_push_notifications_undo_settings = Deshacer cambios
settings_notifications_push_notifications_unsubscribe = Cancelar notificaciones push
settings_notifications_push_notifications_unsupported = Tu navegador no soporta notificaciones push.
settings_notifications_push_notifications_warning_enable_close = Cerrar
settings_notifications_push_notifications_warning_enable_description = Para recibir notificaciones cuando Elk no esté abierto, habilita las notificaciones push. Puedes controlar con precisión qué tipos de interacciones generan notificaciones push a través del botón "@:settings.notifications.show_btn{'"'} de arriba una vez que estén habilitadas.
settings_notifications_push_notifications_warning_enable_description_desktop = Para recibir notificaciones cuando Elk no esté abierto, habilite las notificaciones push. Puedes controlar con precisión qué tipos de interacciones generan notificaciones push en el menú de navegación en "Ajustes > Notificaciones > Ajustes de notificaciones push" una vez que estén habilitadas.
settings_notifications_push_notifications_warning_enable_description_mobile = También podrá acceder a la configuración utilizando el menú de navegación en "Ajustes > Notificaciones > Ajutes de notificaciones push".
settings_notifications_push_notifications_warning_enable_description_settings = Para recibir notificaciones cuando Elk no esté abierto, habilita las notificaciones push. Podrás controlar con precisión qué tipos de interacciones generan notificaciones push en esta misma pantalla una vez las habilites.
settings_notifications_push_notifications_warning_enable_desktop = Habilitar notificaciones push
settings_notifications_push_notifications_warning_enable_title = Nunca te pierdas nada
settings_notifications_push_notifications_warning_re_auth = Parece que tu servidor no soporta notificaciones push. Prueba a cerrar la sesión y volver a iniciarla, si este mensaje sigue apareciendo contacta con el administrador de tu servidor.
settings_notifications_show_btn = Ir a ajustes de notificaciones
settings_notifications_settings = Notificaciones
settings_preferences_label = Preferencias
settings_profile_appearance_bio = Biografía
settings_profile_appearance_description = Editar avatar, nombre de usuario, perfil, etc.
settings_profile_appearance_display_name = Nombre a mostrar
settings_profile_appearance_label = Apariencia
settings_profile_appearance_profile_metadata = Metadatos de perfil
settings_profile_appearance_profile_metadata_desc = Puede mostrar hasta 4 elementos en forma de tabla en tu perfil
settings_profile_appearance_title = Editar perfil
settings_profile_featured_tags_description = Las personas pueden navegar por tus publicaciones públicas con estas hashtags.
settings_profile_featured_tags_label = Hashtags destacados
settings_profile_label = Perfil
settings_select_a_settings = Seleccionar una configuración
settings_users_export = Exportar tokens de usuario
settings_users_import = Importar tokens de usuario
settings_users_label = Usuarios conectados
state_attachments_exceed_server_limit = Número máximo de archivos adjuntos por publicación excedido.
state_attachments_limit_error = Límite por publicación excedido
state_edited = (Editado)
state_editing = Editando
state_loading = Cargando...
state_upload_failed = Subida fallida
state_uploading = Subiendo...
status_boosted_by = Retooteado por
status_edited = Editado {$date}
status_favourited_by = Marcado como favorito por
status_filter_hidden_phrase = Filtrado por
status_filter_removed_phrase = Eliminado por filtrado
status_filter_show_anyway = Mostrar de todas formas
status_img_alt_desc = Descripción
status_img_alt_dismiss = Descartar
status_poll_count = {0} votos|{0} voto|{0} votos
status_poll_ends = finaliza {0}
status_poll_finished = finalizada {0}
status_reblogged = {0} retooteó
status_replying_to = Respondiendo a {0}
status_show_full_thread = Mostrar hilo completo
status_someone = alguien
status_spoiler_show_less = Mostrar menos
status_spoiler_show_more = Mostrar más
status_thread = Hilo
status_try_original_site = Ver en la página original
status_history_created = creado el {0}
status_history_edited = editado el {$date}
tab_for_you = Para ti
tab_hashtags = Hashtags
tab_media = Multimedia
tab_news = Noticias
tab_notifications_all = Todas
tab_notifications_mention = Menciones
tab_posts = Publicaciones
tab_posts_with_replies = Publicaciones y respuestas
tag_follow = Seguir
tag_follow_label = Seguir etiqueta {$tag}
tag_unfollow = Dejar de seguir
tag_unfollow_label = Dejar de seguir etiqueta {$tag}
time_ago_options_day_future = dentro de 0 días|mañana|dentro de {n} días
time_ago_options_day_past = hace 0 días|ayer|hace {n} días
time_ago_options_hour_future = dentro de 0 horas|dentro de 1 hora|dentro de {n} horas
time_ago_options_hour_past = hace 0 horas|hace 1 hora|hace {n} horas
time_ago_options_just_now = ahora mismo
time_ago_options_minute_future = dentro de 0 minutos|dentro de 1 minuto|dentro de {n} minutos
time_ago_options_minute_past = hace 0 minutos|hace 1 minuto|hace {n} minutos
time_ago_options_month_future = dentro de 0 meses|el próximo mes|dentro de {n} meses
time_ago_options_month_past = hace 0 meses|el mes pasado|hace {n} meses
time_ago_options_second_future = dentro de 0 segundos|dentro de {n} segundo|dentro de {n} segundos
time_ago_options_second_past = hace 0 segundos|hace {n} segundo|hace {n} segundos
time_ago_options_short_day_future = en {n}d
time_ago_options_short_day_past = {n}d
time_ago_options_short_hour_future = en {n}h
time_ago_options_short_hour_past = {$n}h
time_ago_options_short_minute_future = en {n}min
time_ago_options_short_minute_past = {$n}min
time_ago_options_short_month_future = en 0 meses|en 1 mes|en {n} meses
time_ago_options_short_month_past = 0 meses|1 mes|{n} meses
time_ago_options_short_second_future = en {n} seg
time_ago_options_short_second_past = {n} seg
time_ago_options_short_week_future = en {n} sem
time_ago_options_short_week_past = {n} sem
time_ago_options_short_year_future = en 0 años|en 1 año|en {n} años
time_ago_options_short_year_past = 0 años|1 año|{n} años
time_ago_options_week_future = dentro de 0 semanas|la próxima semana|dentro de {n} semanas
time_ago_options_week_past = hace 0 semanas|la semana pasada|hace {n} semanas
time_ago_options_year_future = dentro de 0 años|el próximo año|dentro de {n} años
time_ago_options_year_past = hace 0 años|el año pasado|hace {n} años
timeline_show_new_items = Mostrar {v} nuevas publicaciones|Mostrar {v} nueva publicación|Mostrar {v} nuevas publicaciones
timeline_view_older_posts = Es posible que no se muestren las publicaciones antiguas de otras instancias.
title_federated_timeline = Línea de tiempo federada
title_local_timeline = Línea de tiempo local
tooltip_add_content_warning = Añadir advertencia de contenido
tooltip_add_media = Añadir imágenes, video o audio
tooltip_add_publishable_content = Agregar contenido a publicar
tooltip_change_content_visibility = Cambiar visibilidad de contenido
tooltip_change_language = Cambiar idioma
tooltip_emoji = Emoji
tooltip_explore_links_intro = Estas noticias están siendo comentadas por la gente en este y otros servidores de la red descentralizada en este momento.
tooltip_explore_posts_intro = Estos mensajes de este y otros servidores de la red descentralizada están ganando tracción en este servidor en este momento.
tooltip_explore_tags_intro = Estas etiquetas están ganando tracción entre la gente de este y otros servidores de la red descentralizada en este momento.
tooltip_toggle_code_block = Cambiar a bloque de código
user_add_existing = Agregar una cuenta existente
user_server_address_label = Dirección de Servidor de Mastodon
user_sign_in_desc = Inicia sesión para seguir perfiles o hashtags, marcar como favorito, compartir and responder a publicaciones, o interactuar desde tu usuario con un servidor diferente.
user_sign_in_notice_title = Viendo información pública de {0}
user_sign_out_account = Cerrar sesión {$username}
user_tip_no_account = Si aún no tienes una cuenta Mastodon, {0}.
user_tip_register_account = selecciona tu servidor y registrate
visibility_direct = Directo
visibility_direct_desc = Sólo las personas mencionadas
visibility_private = Sólo seguidores
visibility_private_desc = Sólo las personas que te siguen
visibility_public = Público
visibility_public_desc = Todos
visibility_unlisted = Sin listar
visibility_unlisted_desc = Todos, pero sin descubrir

View file

@ -1,468 +0,0 @@
{
"a11y": {
"loading_page": "Cargando página, espere por favor",
"loading_titled_page": "Cargando página {0}, espere por favor",
"locale_changed": "Idioma cambiado a {0}",
"locale_changing": "Cambiando idioma, espere por favor",
"route_loaded": "Página {0} cargada"
},
"account": {
"avatar_description": "avatar de {0}",
"blocked_by": "Estás bloqueado por este usuario.",
"blocked_domains": "Dominios bloqueados",
"blocked_users": "Usuarios bloqueados",
"blocking": "Bloqueado",
"bot": "BOT",
"favourites": "Favoritos",
"follow": "Seguir",
"follow_back": "Seguir de vuelta",
"follow_requested": "Solicitado",
"followers": "Seguidores",
"followers_count": "{0} Seguidores|{0} Seguidor|{0} Seguidores",
"following": "Siguiendo",
"following_count": "{0} Siguiendo",
"follows_you": "Te sigue",
"go_to_profile": "Ir al perfil",
"joined": "Se unió",
"moved_title": "ha indicado que su nueva cuenta ahora es:",
"muted_users": "Usuarios silenciados",
"muting": "Silenciado",
"mutuals": "Mutuo",
"pinned": "Publicaciones fijadas",
"posts": "Publicaciones",
"posts_count": "{0} Publicaciones|{0} Publicación|{0} Publicaciones",
"profile_description": "Encabezado del perfil de {0}",
"profile_unavailable": "Perfil no disponible",
"unblock": "Desbloquear",
"unfollow": "Dejar de seguir",
"unmute": "Dejar de silenciar"
},
"action": {
"apply": "Aplicar",
"bookmark": "Añadir marcador",
"bookmarked": "Guardado como marcador",
"boost": "Retootear",
"boost_count": "{0}",
"boosted": "Retooteado",
"clear_upload_failed": "Limpiar errores de subida de archivos",
"close": "Cerrar",
"compose": "Redactar",
"confirm": "Confirmar",
"edit": "Editar",
"enter_app": "Entrar",
"favourite": "Favorito",
"favourite_count": "{0}",
"favourited": "Marcado como favorito",
"more": "Más",
"next": "Siguiente",
"prev": "Anterior",
"publish": "Publicar",
"reply": "Responder",
"reply_count": "{0}",
"reset": "Reiniciar",
"save": "Guardar",
"save_changes": "Guardar cambios",
"sign_in": "Iniciar sesión",
"switch_account": "Cambiar cuenta",
"vote": "Votar"
},
"app_desc_short": "Un cliente web ágil para Mastodon",
"app_logo": "Logotipo de Elk",
"app_name": "Elk",
"attachment": {
"edit_title": "Descripción",
"remove_label": "Eliminar archivo adjunto"
},
"command": {
"activate": "Activar",
"complete": "Completar",
"compose_desc": "Escribir una nueva publicación",
"n-people-in-the-past-n-days": "{0} personas en los últimos {1} días",
"select_lang": "Seleccionar idioma",
"sign_in_desc": "Agregar una cuenta existente",
"switch_account": "Cambiar a {0}",
"switch_account_desc": "Cambiar a otra cuenta",
"toggle_dark_mode": "Cambiar a modo oscuro",
"toggle_zen_mode": "Cambiar a modo zen"
},
"common": {
"confirm_dialog": {
"cancel": "No",
"confirm": "Si",
"title": "¿Estás seguro?"
},
"end_of_list": "Fin",
"error": "ERROR",
"in": "en",
"not_found": "404 No Encontrado",
"offline_desc": "Al parecer estás fuera de línea. Por favor, comprueba tu conexión a la red."
},
"compose": {
"draft_title": "Borrador {0}",
"drafts": "Borradores ({v})"
},
"conversation": {
"with": "con"
},
"error": {
"account_not_found": "No se encontró la cuenta {0}",
"explore-list-empty": "No hay tendencias en este momento. ¡Vuelve más tarde!",
"file_size_cannot_exceed_n_mb": "El tamaño del archivo no puede exceder los {0}MB",
"sign_in_error": "No se pudo conectar con el servidor.",
"status_not_found": "Estado no encontrado",
"unsupported_file_format": "Tipo de archivo no soportado"
},
"help": {
"desc_highlight": "Es normal encontrar algunos errores y características faltantes aquí y allá.",
"desc_para1": "¡Gracias por el interés en probar Elk, nuestro cliente genérico en desarrollo para Mastodon!",
"desc_para2": "Estamos trabajando duro en el desarrollo y mejorándolo constantemente. ¡Y pronto te invitaremos a que te unas una vez que lo hagamos de código abierto!",
"desc_para3": "Para ayudar a impulsar el desarrollo, puedes patrocinar a los miembros de nuestro equipo con los enlaces a continuación.",
"desc_para4": "Antes de eso, si te gustaría ayudar probando, dando opinión o contribuyendo,",
"desc_para5": "ponte en contacto con nosotros a través de Mastodon",
"desc_para6": "para participar.",
"title": "¡Elk está en Vista Previa!"
},
"language": {
"none": "Ninguno",
"search": "Buscar"
},
"menu": {
"block_account": "Bloquear a {0}",
"block_domain": "Bloquear dominio {0}",
"copy_link_to_post": "Copiar enlace",
"delete": "Borrar",
"delete_and_redraft": "Borrar y volver a borrador",
"delete_confirm": {
"cancel": "Cancelar",
"confirm": "Borrar",
"title": "¿Estás seguro que deseas eliminar esta publicación?"
},
"direct_message_account": "Mensaje directo a {0}",
"edit": "Editar",
"hide_reblogs": "Ocultar retoots de {0}",
"mention_account": "Mencionar a {0}",
"mute_account": "Silenciar a {0}",
"mute_conversation": "Silenciar publicación",
"open_in_original_site": "Abrir página original",
"pin_on_profile": "Fijar en tu perfil",
"share_post": "Compartir esta publicación",
"show_favourited_and_boosted_by": "Mostrar quien marcó como favorito y quien retooteó",
"show_reblogs": "Mostrar retoots de {0}",
"show_untranslated": "Mostrar original",
"toggle_theme": {
"dark": "Cambiar a modo oscuro",
"light": "Cambiar a modo claro"
},
"translate_post": "Traducir",
"unblock_account": "Desbloquear a {0}",
"unblock_domain": "Desbloquear dominio {0}",
"unmute_account": "Dejar de silenciar a {0}",
"unmute_conversation": "Dejar de silenciar la publicación",
"unpin_on_profile": "Desfijar del perfil"
},
"nav": {
"back": "Regresar",
"blocked_domains": "Dominios bloqueados",
"blocked_users": "Usuarios bloqueados",
"bookmarks": "Marcadores",
"built_at": "Compilado {0}",
"conversations": "Conversaciones",
"explore": "Explorar",
"favourites": "Favoritos",
"federated": "Federados",
"home": "Inicio",
"local": "Local",
"muted_users": "Usuarios silenciados",
"notifications": "Notificaciones",
"profile": "Perfil",
"search": "Buscar",
"select_feature_flags": "Cambiar marcadores de funcionalidades",
"select_font_size": "Cambiar tamaño de letra",
"select_language": "Cambiar idioma",
"settings": "Ajustes",
"show_intro": "Mostrar intro",
"toggle_theme": "Cambiar tema",
"zen_mode": "Modo Zen"
},
"notification": {
"favourited_post": "marcó tu publicación como favorito",
"followed_you": "te ha seguido",
"followed_you_count": "{0} personas te siguieron|{0} persona te siguió|{0} personas te siguieron",
"missing_type": "MISSING notification.type:",
"reblogged_post": "retooteó tu publicación",
"request_to_follow": "ha solicitado seguirte",
"signed_up": "registrado",
"update_status": "ha actualizado su estado"
},
"placeholder": {
"content_warning": "Escribe tu advertencia aquí",
"default_1": "¿En qué estás pensando?",
"reply_to_account": "Responder a {0}",
"replying": "Respondiendo",
"the_thread": "el hilo"
},
"pwa": {
"dismiss": "Descartar",
"title": "Nueva versión de Elk disponible",
"update": "Actualizar",
"update_available_short": "Actualiza Elk",
"webmanifest": {
"canary": {
"description": "Un cliente web ágil para Mastodon (canary)",
"name": "Elk (canary)",
"short_name": "Elk (canary)"
},
"dev": {
"description": "Un cliente web ágil para Mastodon (desarrollo)",
"name": "Elk (desarrollo)",
"short_name": "Elk (desarrollo)"
},
"preview": {
"description": "Un cliente web ágil para Mastodon (vista previa)",
"name": "Elk (vista previa)",
"short_name": "Elk (vista previa)"
},
"release": {
"description": "Un cliente web ágil para Mastodon",
"name": "Elk",
"short_name": "Elk"
}
}
},
"search": {
"search_desc": "Buscar personas y etiquetas",
"search_empty": "No se pudo encontrar nada para estos términos de búsqueda"
},
"settings": {
"about": {
"label": "Acerca de"
},
"account_settings": {
"description": "Edita los ajustes de tu cuenta en la interfaz de Mastodon",
"label": "Ajustes de cuenta"
},
"feature_flags": {
"github_cards": "Tarjetas GitHub",
"title": "Funcionalidades experimentales",
"user_picker": "Selector de usuarios",
"virtual_scroll": "Desplazamiento virtual"
},
"interface": {
"color_mode": "Modo Color",
"dark_mode": "Modo Oscuro",
"default": " (por defecto)",
"font_size": "Tamaño de Letra",
"label": "Interfaz",
"light_mode": "Modo Claro",
"size_label": {
"lg": "Grande",
"md": "Mediana",
"sm": "Pequeña",
"xl": "Extra grande",
"xs": "Extra pequeña"
}
},
"language": {
"display_language": "Idioma de pantalla",
"label": "Idioma"
},
"notifications": {
"label": "Notificaciones",
"notifications": {
"label": "Ajustes de notificaciones"
},
"push_notifications": {
"alerts": {
"favourite": "Favoritos",
"follow": "Nuevos seguidores",
"mention": "Menciones",
"poll": "Encuestas",
"reblog": "Retooteo de tus publicaciones",
"title": "¿Qué notificaciones recibir?"
},
"description": "Reciba notificaciones incluso cuando no estés utilizando Elk.",
"instructions": "¡No olvides guardar los cambios utilizando el botón @:settings.notifications.push_notifications.save_settings{'!'}",
"label": "Ajustes de notificaciones push",
"policy": {
"all": "De cualquier persona",
"followed": "De personas que sigo",
"follower": "De personas que me siguen",
"none": "De nadie",
"title": "¿De quién puedo recibir notificaciones?"
},
"save_settings": "Guardar cambios",
"subscription_error": {
"clear_error": "Limpiar error",
"permission_denied": "Permiso denegado: habilita las notificaciones en tu navegador.",
"request_error": "Se produjo un error al solicitar la suscripción, inténtalo de nuevo y si el error persiste, notifica la incidencia en el repositorio de Elk.",
"title": "No se pudo suscribir a las notificaciones push"
},
"title": "Ajustes de notificaciones push",
"undo_settings": "Deshacer cambios",
"unsubscribe": "Cancelar notificaciones push",
"unsupported": "Tu navegador no soporta notificaciones push.",
"warning": {
"enable_close": "Cerrar",
"enable_description": "Para recibir notificaciones cuando Elk no esté abierto, habilita las notificaciones push. Puedes controlar con precisión qué tipos de interacciones generan notificaciones push a través del botón \"@:settings.notifications.show_btn{'\"'} de arriba una vez que estén habilitadas.",
"enable_description_desktop": "Para recibir notificaciones cuando Elk no esté abierto, habilite las notificaciones push. Puedes controlar con precisión qué tipos de interacciones generan notificaciones push en el menú de navegación en \"Ajustes > Notificaciones > Ajustes de notificaciones push\" una vez que estén habilitadas.",
"enable_description_mobile": "También podrá acceder a la configuración utilizando el menú de navegación en \"Ajustes > Notificaciones > Ajutes de notificaciones push\".",
"enable_description_settings": "Para recibir notificaciones cuando Elk no esté abierto, habilita las notificaciones push. Podrás controlar con precisión qué tipos de interacciones generan notificaciones push en esta misma pantalla una vez las habilites.",
"enable_desktop": "Habilitar notificaciones push",
"enable_title": "Nunca te pierdas nada",
"re_auth": "Parece que tu servidor no soporta notificaciones push. Prueba a cerrar la sesión y volver a iniciarla, si este mensaje sigue apareciendo contacta con el administrador de tu servidor."
}
},
"show_btn": "Ir a ajustes de notificaciones"
},
"notifications_settings": "Notificaciones",
"preferences": {
"label": "Preferencias"
},
"profile": {
"appearance": {
"bio": "Biografía",
"description": "Editar avatar, nombre de usuario, perfil, etc.",
"display_name": "Nombre a mostrar",
"label": "Apariencia",
"profile_metadata": "Metadatos de perfil",
"profile_metadata_desc": "Puede mostrar hasta 4 elementos en forma de tabla en tu perfil",
"title": "Editar perfil"
},
"featured_tags": {
"description": "Las personas pueden navegar por tus publicaciones públicas con estas hashtags.",
"label": "Hashtags destacados"
},
"label": "Perfil"
},
"select_a_settings": "Seleccionar una configuración",
"users": {
"export": "Exportar tokens de usuario",
"import": "Importar tokens de usuario",
"label": "Usuarios conectados"
}
},
"state": {
"attachments_exceed_server_limit": "Número máximo de archivos adjuntos por publicación excedido.",
"attachments_limit_error": "Límite por publicación excedido",
"edited": "(Editado)",
"editing": "Editando",
"loading": "Cargando...",
"upload_failed": "Subida fallida",
"uploading": "Subiendo..."
},
"status": {
"boosted_by": "Retooteado por",
"edited": "Editado {0}",
"favourited_by": "Marcado como favorito por",
"filter_hidden_phrase": "Filtrado por",
"filter_removed_phrase": "Eliminado por filtrado",
"filter_show_anyway": "Mostrar de todas formas",
"img_alt": {
"desc": "Descripción",
"dismiss": "Descartar"
},
"poll": {
"count": "{0} votos|{0} voto|{0} votos",
"ends": "finaliza {0}",
"finished": "finalizada {0}"
},
"reblogged": "{0} retooteó",
"replying_to": "Respondiendo a {0}",
"show_full_thread": "Mostrar hilo completo",
"someone": "alguien",
"spoiler_show_less": "Mostrar menos",
"spoiler_show_more": "Mostrar más",
"thread": "Hilo",
"try_original_site": "Ver en la página original"
},
"status_history": {
"created": "creado el {0}",
"edited": "editado el {0}"
},
"tab": {
"for_you": "Para ti",
"hashtags": "Hashtags",
"media": "Multimedia",
"news": "Noticias",
"notifications_all": "Todas",
"notifications_mention": "Menciones",
"posts": "Publicaciones",
"posts_with_replies": "Publicaciones y respuestas"
},
"tag": {
"follow": "Seguir",
"follow_label": "Seguir etiqueta {0}",
"unfollow": "Dejar de seguir",
"unfollow_label": "Dejar de seguir etiqueta {0}"
},
"time_ago_options": {
"day_future": "dentro de 0 días|mañana|dentro de {n} días",
"day_past": "hace 0 días|ayer|hace {n} días",
"hour_future": "dentro de 0 horas|dentro de 1 hora|dentro de {n} horas",
"hour_past": "hace 0 horas|hace 1 hora|hace {n} horas",
"just_now": "ahora mismo",
"minute_future": "dentro de 0 minutos|dentro de 1 minuto|dentro de {n} minutos",
"minute_past": "hace 0 minutos|hace 1 minuto|hace {n} minutos",
"month_future": "dentro de 0 meses|el próximo mes|dentro de {n} meses",
"month_past": "hace 0 meses|el mes pasado|hace {n} meses",
"second_future": "dentro de 0 segundos|dentro de {n} segundo|dentro de {n} segundos",
"second_past": "hace 0 segundos|hace {n} segundo|hace {n} segundos",
"short_day_future": "en {n}d",
"short_day_past": "{n}d",
"short_hour_future": "en {n}h",
"short_hour_past": "{n}h",
"short_minute_future": "en {n}min",
"short_minute_past": "{n}min",
"short_month_future": "en 0 meses|en 1 mes|en {n} meses",
"short_month_past": "0 meses|1 mes|{n} meses",
"short_second_future": "en {n} seg",
"short_second_past": "{n} seg",
"short_week_future": "en {n} sem",
"short_week_past": "{n} sem",
"short_year_future": "en 0 años|en 1 año|en {n} años",
"short_year_past": "0 años|1 año|{n} años",
"week_future": "dentro de 0 semanas|la próxima semana|dentro de {n} semanas",
"week_past": "hace 0 semanas|la semana pasada|hace {n} semanas",
"year_future": "dentro de 0 años|el próximo año|dentro de {n} años",
"year_past": "hace 0 años|el año pasado|hace {n} años"
},
"timeline": {
"show_new_items": "Mostrar {v} nuevas publicaciones|Mostrar {v} nueva publicación|Mostrar {v} nuevas publicaciones",
"view_older_posts": "Es posible que no se muestren las publicaciones antiguas de otras instancias."
},
"title": {
"federated_timeline": "Línea de tiempo federada",
"local_timeline": "Línea de tiempo local"
},
"tooltip": {
"add_content_warning": "Añadir advertencia de contenido",
"add_media": "Añadir imágenes, video o audio",
"add_publishable_content": "Agregar contenido a publicar",
"change_content_visibility": "Cambiar visibilidad de contenido",
"change_language": "Cambiar idioma",
"emoji": "Emoji",
"explore_links_intro": "Estas noticias están siendo comentadas por la gente en este y otros servidores de la red descentralizada en este momento.",
"explore_posts_intro": "Estos mensajes de este y otros servidores de la red descentralizada están ganando tracción en este servidor en este momento.",
"explore_tags_intro": "Estas etiquetas están ganando tracción entre la gente de este y otros servidores de la red descentralizada en este momento.",
"toggle_code_block": "Cambiar a bloque de código"
},
"user": {
"add_existing": "Agregar una cuenta existente",
"server_address_label": "Dirección de Servidor de Mastodon",
"sign_in_desc": "Inicia sesión para seguir perfiles o hashtags, marcar como favorito, compartir and responder a publicaciones, o interactuar desde tu usuario con un servidor diferente.",
"sign_in_notice_title": "Viendo información pública de {0}",
"sign_out_account": "Cerrar sesión {0}",
"tip_no_account": "Si aún no tienes una cuenta Mastodon, {0}.",
"tip_register_account": "selecciona tu servidor y registrate"
},
"visibility": {
"direct": "Directo",
"direct_desc": "Sólo las personas mencionadas",
"private": "Sólo seguidores",
"private_desc": "Sólo las personas que te siguen",
"public": "Público",
"public_desc": "Todos",
"unlisted": "Sin listar",
"unlisted_desc": "Todos, pero sin descubrir"
}
}

335
locales/fr-FR.ftl Normal file
View file

@ -0,0 +1,335 @@
a11y_loading_page = Chargement de la page, veuillez patienter
a11y_loading_titled_page = Chargement de la page {$title}, veuillez patienter
a11y_locale_changed = Langue changée à {$lang}
a11y_locale_changing = Changement de langue, veuillez patienter
a11y_route_loaded = Page {$title} chargée
account_avatar_description = Avatar de {$username}
account_blocked_by = Vous êtes bloqué·e par cet·te utilisateur·ice.
account_blocked_domains = Domaines bloqués
account_blocked_users = utilisateur·ice·s bloqué·e·s
account_blocking = Blocked
account_bot = Automatisé
account_favourites = Favoris
account_follow = Suivre
account_follow_back = Suivre en retour
account_follow_requested = Abonnement demandé
account_followers = Abonné·e·s
# Should there be [many] here? d'abonnés?
account_followers_count = { $count ->
[one] {$formattedCount} abonné·e
*[other] {$formattedCount} abonné·e·s
}
account_following = Suivi·e
account_following_count = {$formattedCount} abonnements
account_follows_you = Vous suit
account_go_to_profile = Aller à son profil
account_joined = a rejoint
account_moved_title = a indiqué que son nouveau compte est désormais :
account_muted_users = Utilisateur·ice·s masqué·e·s
account_muting = Masqué·e
account_mutuals = @:account.following
account_pinned = Épinglés
account_posts = Messages
account_posts_count = {$formattedCount} Messages
account_profile_description = En-tête du profil de {$username}
account_profile_unavailable = Profil non accessible
account_unblock = Unblock
account_unfollow = Ne plus suivre
account_unmute = Unmute
action_apply = Appliquer
action_bookmark = Ajouter aux marque-pages
action_bookmarked = Ajouté aux marque-pages
action_boost = Partager
action_boosted = Partagé
action_clear_upload_failed = Effacer les erreurs de téléversement de fichier
action_close = Fermer
action_compose = Composer
action_confirm = Confirmer
action_edit = Editer
action_enter_app = Entrer dans l'application
action_favourite = Ajouter aux favoris
action_favourited = Ajouté aux favoris
action_more = Plus
action_next = Suivant
action_prev = Précédent
action_publish = Publier
action_reply = Répondre
action_reset = Réinitialiser
action_save = Enregistrer
action_save_changes = Enregistrer les changements
action_sign_in = Se connecter
action_switch_account = Changer de compte
action_vote = Voter
app_desc_short = Un client Mastodon fait avec 🧡
app_logo = Logo Elk
app_name = Elk
attachment_edit_title = Description
attachment_remove_label = Retirer le fichier attaché
command_activate = Activer
command_complete = Compléter
command_compose_desc = Écrire un nouveau message
command_n-people-in-the-past-n-days = {$count} personnes dans les {$days} jours
command_select_lang = Sélectionner langue
command_sign_in_desc = Ajouter un compte existant
command_switch_account = Changer pour le compte {$username}
command_switch_account_desc = Changer vers un autre compte
command_toggle_dark_mode = Passer au thème foncé
command_toggle_zen_mode = Passer en mode zen
common_end_of_list = Fin de liste
common_error = ERREUR
common_in = sur
common_not_found = 404 Introuvable
common_offline_desc = Il semble que vous soyez hors-ligne. Vérifiez votre connexion internet.
conversation_with = avec
error_account_not_found = Compte {$username} non trouvé
error_explore-list-empty = Pas de tendence en ce moment. Revenez plus tard!
error_file_size_cannot_exceed_n_mb = La taille du fichier dépasse les {$size}MB
error_sign_in_error = Impossible de se connecter au serveur.
error_status_not_found = Message non trouvé
error_unsupported_file_format = Format de fichier non supporté
help_desc_highlight = Il est possible de rencontrer, par-ci par-là, quelques bugs et fonctionnalités manquantes.
help_desc_para1 = Merci de l'intérêt pour Elk, notre client Mastodon en cours de développement !
help_desc_para2 = Nous travaillons dur sur le développement et l'améliorons au fur et à mesure. Nous allons open-sourcer l'application une fois qu'elle sera prête pour un usage public.
help_desc_para3 = Pour supporter son développement, vous pouvez parrainer les membres de l'équipe avec les liens ci-dessous. Nous espérons que vous apprécierez Elk!
help_desc_para4 = Avant cela, si vous voulez aider à tester, donner des retours ou contribuer
help_desc_para5 = contactez nous sur Mastodon
help_desc_para6 = et rejoingez l'aventure.
help_title = Elk est mode Preview !
language_search = Recherche
menu_block_account = Bloquer {$username}
menu_block_domain = Bloquer le domaine {$domain}
menu_copy_link_to_post = Copier le lien du message
menu_delete = Supprimer
menu_delete_and_redraft = Supprimer et réécrire
menu_direct_message_account = Message direct à {$username}
menu_edit = Éditer
menu_mention_account = Mentionner {$username}
menu_mute_account = Mettre en sourdine {$username}
menu_mute_conversation = Message muet
menu_open_in_original_site = Ouvrir sur le site d'origine
menu_pin_on_profile = Épingler sur le profil
menu_share_post = Partager ce message
menu_show_untranslated = Montrer le message non-traduit
menu_toggle_theme_dark = Passer au thème foncé
menu_toggle_theme_light = Passer au thème clair
menu_translate_post = Traduire le message
menu_unblock_account = Débloquer {$username}
menu_unblock_domain = Débloquer le domaine {$domain}
menu_unmute_account = Enlever la sourdine à {$username}
menu_unmute_conversation = Réactiver le message
menu_unpin_on_profile = Désépingler du profil
nav_back = Retourner à la page précédente
nav_blocked_domains = Domaines bloqués
nav_blocked_users = Utilisateur·ice·s bloqué·e·s
nav_bookmarks = Marque-pages
nav_built_at = Dernier build {0}
nav_conversations = Conversations
nav_explore = Explorer
nav_favourites = Favoris
nav_federated = Fédérés
nav_home = Accueil
nav_local = Local
nav_muted_users = Utilisateur·ice·s masqué·e·s
nav_notifications = Notifications
nav_profile = Profil
nav_search = Rechercher
nav_select_feature_flags = Activer/Désactiver Feature Flags
nav_select_font_size = Taille de la police
nav_select_language = Selectionner langue
nav_settings = Paramètres
nav_show_intro = Ré-afficher l'introduction
nav_toggle_theme = Changer de thème
nav_zen_mode = Mode Zen
notification_favourited_post = aime votre message
notification_followed_you = vous suit
notification_followed_you_count = {0} personnes vous suivent|{0} personne vous suit|{0} personnes vous suivent
notification_missing_type = MISSING notification.type:
notification_reblogged_post = a relayé votre message
notification_request_to_follow = vous demande de le suivre
notification_signed_up = s'est inscrit·e
notification_update_status = a posté un nouveau message
placeholder_content_warning = Écrivez votre message d'avertissement ici
placeholder_default_1 = Quelque chose à partager ?
placeholder_reply_to_account = Répondre à {0}
placeholder_replying = Répondre
placeholder_the_thread = Le thread
pwa_dismiss = Fermer
pwa_title = Nouvelle mise à jour Elk disponible !
pwa_update = Mettre à jour
pwa_update_available_short = Mettre à jour Elk
pwa_webmanifest_canary_description = Un client Web Mastodon (canary)
pwa_webmanifest_canary_name = Elk (canary)
pwa_webmanifest_canary_short_name = Elk (canary)
pwa_webmanifest_dev_description = Un client Web Mastodon (dev)
pwa_webmanifest_dev_name = Elk (dev)
pwa_webmanifest_dev_short_name = Elk (dev)
pwa_webmanifest_preview_description = Un client Web Mastodon (aperçu)
pwa_webmanifest_preview_name = Elk (aperçu)
pwa_webmanifest_preview_short_name = Elk (aperçu)
pwa_webmanifest_release_description = Un client Web Mastodon
pwa_webmanifest_release_name = Elk
pwa_webmanifest_release_short_name = Elk
search_search_desc = Recherche de personnes & hashtags
search_search_empty = Aucun résultat avec ces mots-clefs
settings_about_label = À propos
settings_account_settings_description = Modifiez les paramètres de votre compte dans l'interface de Mastodon
settings_account_settings_label = Paramètres de compte
settings_feature_flags_github_cards = GitHub Cards
settings_feature_flags_title = Fonctionnalités expérimentales
settings_feature_flags_user_picker = User Picker
settings_feature_flags_virtual_scroll = Défilement virtuel
settings_interface_color_mode = Couleur de thème
settings_interface_dark_mode = Mode sombre
settings_interface_default = (par défaut)
settings_interface_font_size = Taille de police
settings_interface_label = Interface
settings_interface_light_mode = Mode lumineux
settings_interface_size_label_lg = Grande
settings_interface_size_label_md = Moyenne
settings_interface_size_label_sm = Petite
settings_interface_size_label_xl = Très grande
settings_interface_size_label_xs = Très petite
settings_language_display_language = Langue d'affichage
settings_language_label = Langue
settings_notifications_label = Notifications
settings_notifications_notifications_label = Notifications settings
settings_notifications_push_notifications_alerts_favourite = Favoris
settings_notifications_push_notifications_alerts_follow = Nouveaux abonné·e·s
settings_notifications_push_notifications_alerts_mention = Mentions
settings_notifications_push_notifications_alerts_poll = Sondages
settings_notifications_push_notifications_alerts_reblog = A republié votre message
settings_notifications_push_notifications_alerts_title = Quelles notifications recevoir ?
settings_notifications_push_notifications_description = Receive notifications even when you are not using Elk.
settings_notifications_push_notifications_instructions = Don't forget to save your changes using @:settings.notifications.push_notifications.save_settings button!
settings_notifications_push_notifications_label = Push notifications settings
settings_notifications_push_notifications_policy_all = De n'importe qui
settings_notifications_push_notifications_policy_followed = Des personnes que je suis
settings_notifications_push_notifications_policy_follower = Des personnes qui me suivent
settings_notifications_push_notifications_policy_none = De personne
settings_notifications_push_notifications_policy_title = De que je peux recevoir des notifications ?
settings_notifications_push_notifications_save_settings = Enregistrer les paramètres
settings_notifications_push_notifications_subscription_error_clear_error = Effacer l'erreur
settings_notifications_push_notifications_subscription_error_permission_denied = Autorisation refusée : activez les notifications dans votre navigateur.
settings_notifications_push_notifications_subscription_error_request_error = Une erreur s'est produite lors de la demande d'abonnement, réessayez et si l'erreur persiste, veuillez signaler le problème auprès du dépôt Elk.
settings_notifications_push_notifications_subscription_error_title = Impossible de s'abonner aux notifications push
settings_notifications_push_notifications_undo_settings = Annuler les changements de paramètres
settings_notifications_push_notifications_unsubscribe = Désactiver les notifications push
settings_notifications_push_notifications_unsupported = Votre navigateur ne prend pas en charge les notifications push.
settings_notifications_push_notifications_warning_enable_close = Fermer
settings_notifications_push_notifications_warning_enable_description = Pour recevoir des notifications lorsque Elk n'est pas ouvert, activez les notifications push.
Vous pouvez contrôler précisément quels types d'interactions génèrent des notifications push via le bouton "@:settings.notifications.show_btn{'"'} ci-dessus une fois activé.
settings_notifications_push_notifications_warning_enable_description_settings = To receive notifications when Elk is not open, enable push notifications. You will be able to control precisely what types of interactions generate push notifications on this same screen once you enable them.
settings_notifications_push_notifications_warning_enable_desktop = Activer les notifications push
settings_notifications_push_notifications_warning_enable_title = Ne manquez jamais rien
settings_notifications_push_notifications_warning_re_auth = Il semble que votre serveur ne supporte pas les notifications push.
Essayez de vous déconnecter et de vous reconnecter, si ce message persiste, contactez l'administrateur de votre serveur.
settings_notifications_show_btn = Go to notifications settings
settings_notifications_settings = Notifications settings
settings_preferences_label = Préférences
settings_profile_appearance_bio = Bio
settings_profile_appearance_description = Editer l'avatar, nom d'utilisateur·ice, profil, etc.
settings_profile_appearance_display_name = Nom d'affichage
settings_profile_appearance_label = Apparence
settings_profile_appearance_profile_metadata = Métadonnées de profil
settings_profile_appearance_profile_metadata_desc = Vous pouvez avoir jusqu'à 4 éléments affichés sous forme de tableau sur votre profil
settings_profile_appearance_title = Editer le profil
settings_profile_featured_tags_description = Les gens peuvent parcourir vos messages publics sous ces hashtags.
settings_profile_featured_tags_label = Hashtags en vedette
settings_profile_label = Profil
settings_select_a_settings = Sélectionner un paramètre
settings_users_export = Exporter les tokens d'utilisateur·ice
settings_users_import = Importer des tokens d'utilisateur·ice
settings_users_label = Utilisateur·ice·s connecté·e·s
state_attachments_exceed_server_limit = Le nombre de pièces jointes a dépassé la limite par message.
state_attachments_limit_error = Limite par publication dépassée
state_edited = (Édité)
state_editing = Édition
state_loading = Chargement...
state_upload_failed = Le téléversement a échoué
state_uploading = Téléversement en cours...
status_edited = Edité {$date}
status_filter_hidden_phrase = Filtré par
status_filter_removed_phrase = Caché par le filtre
status_filter_show_anyway = Montrer coûte que coûte
status_img_alt_desc = Description
status_img_alt_dismiss = Fermer
status_poll_count = {0} votes
status_poll_ends = se clôt {0}
status_poll_finished = clos {0}
status_reblogged = {0} relayé
status_replying_to = Répondre à {0}
status_someone = quelqu'un
status_spoiler_show_less = Voir moins
status_spoiler_show_more = Voir plus
status_try_original_site = Essayer le site d'origine
status_history_created = a écrit {0}
status_history_edited = a édité {$date}
tab_for_you = Pour vous
tab_hashtags = Hashtags
tab_media = Média
tab_news = Actualités
tab_notifications_all = Tout
tab_notifications_mention = Mentions
tab_posts = Messages
tab_posts_with_replies = Messages et réponses
tag_follow = Suivre
tag_follow_label = Suivre la balise {$tag}
tag_unfollow = Ne plus suivre
tag_unfollow_label = Ne plus suivre la balise {$tag}
time_ago_options_day_future = dans 0 jour|demain|dans {n} jours
time_ago_options_day_past = il y a 0 jour|hier|il y a {n} jours
time_ago_options_hour_future = dans 0 heure|dans 1 heure|dans {n} heures
time_ago_options_hour_past = il y a 0 heure|il y a 1 heure|il y a {n} heures
time_ago_options_just_now = juste maintenant
time_ago_options_minute_future = dans 0 minutes|dans 1 minute|dans {n} minutes
time_ago_options_minute_past = il y a 0 minute|il y a 1 minute|il y a {n} minutes
time_ago_options_month_future = dans 0 mois|le mois prochain|dans {n} mois
time_ago_options_month_past = il y a 0 mois|le dernier mois|il y a {n} mois
time_ago_options_second_future = maintenant|dans {n} secondes|dans {n} secondes
time_ago_options_second_past = maintenant|il y a {n} seconde|il y a {n} secondes
time_ago_options_short_day_future = dans {n}j
time_ago_options_short_day_past = {n}j
time_ago_options_short_hour_future = dans {n}h
time_ago_options_short_hour_past = {$n}h
time_ago_options_short_minute_future = dans {n}min
time_ago_options_short_minute_past = {$n}min
time_ago_options_short_month_future = dans {n}mo
time_ago_options_short_month_past = {n}mo
time_ago_options_short_second_future = dans {n}s
time_ago_options_short_second_past = {n}s
time_ago_options_short_week_future = dans {n}sm
time_ago_options_short_week_past = {n}sm
time_ago_options_short_year_future = dans {n}a
time_ago_options_short_year_past = {n}a
time_ago_options_week_future = dans 0 semaine|semaine prochaine|dans {n} semaines
time_ago_options_week_past = il y a 0 semaines|il y a 1 semaine|il y a {n} semaines
time_ago_options_year_future = dans 0 année|l'année prochaine|dans {n} années
time_ago_options_year_past = il y a 0 année|l'année dernière|il y a {n} années
timeline_show_new_items = Voir le nouveau message|Voir les {v} nouveaux messages
timeline_view_older_posts = Les messages plus anciens d'autres instances peuvent ne pas être affichés.
title_federated_timeline = Fil d'actualité fédéré
title_local_timeline = Fil d'actualité local
tooltip_add_content_warning = Ajouter un avertissement de contenu
tooltip_add_media = Ajouter des images, une vidéo ou un fichier audio
tooltip_change_content_visibility = Ajuster la confidentialité du message
tooltip_change_language = Changer la langue
tooltip_emoji = Emoji
tooltip_explore_links_intro = Ces actualités sont sujets à discussions sur ce serveur et sur d'autres serveurs du réseau décentralisé.
tooltip_explore_posts_intro = Ces publications de ce serveur et d'autres serveurs du réseau décentralisé gagnent du terrain sur ce serveur en ce moment.
tooltip_explore_tags_intro = Ces hashtags gagnent du terrain sur ce serveur et sur d'autres serveurs du réseau décentralisé.
tooltip_toggle_code_block = Ajouter un bloc de code
user_add_existing = Ajouter un compte existant
user_server_address_label = Adresse du serveur mastodon
user_sign_in_desc = Connectez-vous pour suivre des profils ou des hashtags, mettre en favoris, partager et répondre à des messages, ou interagir à partir de votre compte sur un autre serveur...
user_sign_in_notice_title = Affichage de {0} données publiques
user_sign_out_account = Se déconnecter de {$username}
user_tip_no_account = Si vous n'avez pas encore de compte Mastodon, {0}.
user_tip_register_account = choisissez votre serveur et enregistrez-en un
visibility_direct = Personnes mentionnées uniquement
visibility_direct_desc = Visibles uniquemnt par les comptes mentionnés
visibility_private = Abonnés uniquement
visibility_private_desc = Visible uniquement par vos abonnés
visibility_public = Public
visibility_public_desc = Visible par tout le monde
visibility_unlisted = Non listé
visibility_unlisted_desc = Visible pour tous, mais sans fonctionnalités de découverte

View file

@ -1,439 +0,0 @@
{
"a11y": {
"loading_page": "Chargement de la page, veuillez patienter",
"loading_titled_page": "Chargement de la page {0}, veuillez patienter",
"locale_changed": "Langue changée à {0}",
"locale_changing": "Changement de langue, veuillez patienter",
"route_loaded": "Page {0} chargée"
},
"account": {
"avatar_description": "Avatar de {0}",
"blocked_by": "Vous êtes bloqué·e par cet·te utilisateur·ice.",
"blocked_domains": "Domaines bloqués",
"blocked_users": "utilisateur·ice·s bloqué·e·s",
"blocking": "Blocked",
"bot": "Automatisé",
"favourites": "Favoris",
"follow": "Suivre",
"follow_back": "Suivre en retour",
"follow_requested": "Abonnement demandé",
"followers": "Abonné·e·s",
"followers_count": "{0} abonné·e|{0} abonné·e|{0} abonné·e·s",
"following": "Suivi·e",
"following_count": "{0} abonnements",
"follows_you": "Vous suit",
"go_to_profile": "Aller à son profil",
"joined": "a rejoint",
"moved_title": "a indiqué que son nouveau compte est désormais :",
"muted_users": "Utilisateur·ice·s masqué·e·s",
"muting": "Masqué·e",
"mutuals": "@:account.following",
"pinned": "Épinglés",
"posts": "Messages",
"posts_count": "{0} Messages",
"profile_description": "En-tête du profil de {0}",
"profile_unavailable": "Profil non accessible",
"unblock": "Unblock",
"unfollow": "Ne plus suivre",
"unmute": "Unmute"
},
"action": {
"apply": "Appliquer",
"bookmark": "Ajouter aux marque-pages",
"bookmarked": "Ajouté aux marque-pages",
"boost": "Partager",
"boosted": "Partagé",
"clear_upload_failed": "Effacer les erreurs de téléversement de fichier",
"close": "Fermer",
"compose": "Composer",
"confirm": "Confirmer",
"edit": "Editer",
"enter_app": "Entrer dans l'application",
"favourite": "Ajouter aux favoris",
"favourited": "Ajouté aux favoris",
"more": "Plus",
"next": "Suivant",
"prev": "Précédent",
"publish": "Publier",
"reply": "Répondre",
"reset": "Réinitialiser",
"save": "Enregistrer",
"save_changes": "Enregistrer les changements",
"sign_in": "Se connecter",
"switch_account": "Changer de compte",
"vote": "Voter"
},
"app_desc_short": "Un client Mastodon fait avec 🧡",
"app_logo": "Logo Elk",
"app_name": "Elk",
"attachment": {
"edit_title": "Description",
"remove_label": "Retirer le fichier attaché"
},
"command": {
"activate": "Activer",
"complete": "Compléter",
"compose_desc": "Écrire un nouveau message",
"n-people-in-the-past-n-days": "{0} personnes dans les {1} jours",
"select_lang": "Sélectionner langue",
"sign_in_desc": "Ajouter un compte existant",
"switch_account": "Changer pour le compte {0}",
"switch_account_desc": "Changer vers un autre compte",
"toggle_dark_mode": "Passer au thème foncé",
"toggle_zen_mode": "Passer en mode zen"
},
"common": {
"end_of_list": "Fin de liste",
"error": "ERREUR",
"in": "sur",
"not_found": "404 Introuvable",
"offline_desc": "Il semble que vous soyez hors-ligne. Vérifiez votre connexion internet."
},
"conversation": {
"with": "avec"
},
"error": {
"account_not_found": "Compte {0} non trouvé",
"explore-list-empty": "Pas de tendence en ce moment. Revenez plus tard!",
"file_size_cannot_exceed_n_mb": "La taille du fichier dépasse les {0}MB",
"sign_in_error": "Impossible de se connecter au serveur.",
"status_not_found": "Message non trouvé",
"unsupported_file_format": "Format de fichier non supporté"
},
"help": {
"desc_highlight": "Il est possible de rencontrer, par-ci par-là, quelques bugs et fonctionnalités manquantes.",
"desc_para1": "Merci de l'intérêt pour Elk, notre client Mastodon en cours de développement !",
"desc_para2": "Nous travaillons dur sur le développement et l'améliorons au fur et à mesure. Nous allons open-sourcer l'application une fois qu'elle sera prête pour un usage public.",
"desc_para3": "Pour supporter son développement, vous pouvez parrainer les membres de l'équipe avec les liens ci-dessous. Nous espérons que vous apprécierez Elk!",
"desc_para4": "Avant cela, si vous voulez aider à tester, donner des retours ou contribuer",
"desc_para5": "contactez nous sur Mastodon",
"desc_para6": "et rejoingez l'aventure.",
"title": "Elk est mode Preview !"
},
"language": {
"search": "Recherche"
},
"menu": {
"block_account": "Bloquer {0}",
"block_domain": "Bloquer le domaine {0}",
"copy_link_to_post": "Copier le lien du message",
"delete": "Supprimer",
"delete_and_redraft": "Supprimer et réécrire",
"direct_message_account": "Message direct à {0}",
"edit": "Éditer",
"mention_account": "Mentionner {0}",
"mute_account": "Mettre en sourdine {0}",
"mute_conversation": "Message muet",
"open_in_original_site": "Ouvrir sur le site d'origine",
"pin_on_profile": "Épingler sur le profil",
"share_post": "Partager ce message",
"show_untranslated": "Montrer le message non-traduit",
"toggle_theme": {
"dark": "Passer au thème foncé",
"light": "Passer au thème clair"
},
"translate_post": "Traduire le message",
"unblock_account": "Débloquer {0}",
"unblock_domain": "Débloquer le domaine {0}",
"unmute_account": "Enlever la sourdine à {0}",
"unmute_conversation": "Réactiver le message",
"unpin_on_profile": "Désépingler du profil"
},
"nav": {
"back": "Retourner à la page précédente",
"blocked_domains": "Domaines bloqués",
"blocked_users": "Utilisateur·ice·s bloqué·e·s",
"bookmarks": "Marque-pages",
"built_at": "Dernier build {0}",
"conversations": "Conversations",
"explore": "Explorer",
"favourites": "Favoris",
"federated": "Fédérés",
"home": "Accueil",
"local": "Local",
"muted_users": "Utilisateur·ice·s masqué·e·s",
"notifications": "Notifications",
"profile": "Profil",
"search": "Rechercher",
"select_feature_flags": "Activer/Désactiver Feature Flags",
"select_font_size": "Taille de la police",
"select_language": "Selectionner langue",
"settings": "Paramètres",
"show_intro": "Ré-afficher l'introduction",
"toggle_theme": "Changer de thème",
"zen_mode": "Mode Zen"
},
"notification": {
"favourited_post": "aime votre message",
"followed_you": "vous suit",
"followed_you_count": "{0} personnes vous suivent|{0} personne vous suit|{0} personnes vous suivent",
"missing_type": "MISSING notification.type:",
"reblogged_post": "a relayé votre message",
"request_to_follow": "vous demande de le suivre",
"signed_up": "s'est inscrit·e",
"update_status": "a posté un nouveau message"
},
"placeholder": {
"content_warning": "Écrivez votre message d'avertissement ici",
"default_1": "Quelque chose à partager ?",
"reply_to_account": "Répondre à {0}",
"replying": "Répondre",
"the_thread": "Le thread"
},
"pwa": {
"dismiss": "Fermer",
"title": "Nouvelle mise à jour Elk disponible !",
"update": "Mettre à jour",
"update_available_short": "Mettre à jour Elk",
"webmanifest": {
"canary": {
"description": "Un client Web Mastodon (canary)",
"name": "Elk (canary)",
"short_name": "Elk (canary)"
},
"dev": {
"description": "Un client Web Mastodon (dev)",
"name": "Elk (dev)",
"short_name": "Elk (dev)"
},
"preview": {
"description": "Un client Web Mastodon (aperçu)",
"name": "Elk (aperçu)",
"short_name": "Elk (aperçu)"
},
"release": {
"description": "Un client Web Mastodon",
"name": "Elk",
"short_name": "Elk"
}
}
},
"search": {
"search_desc": "Recherche de personnes & hashtags",
"search_empty": "Aucun résultat avec ces mots-clefs"
},
"settings": {
"about": {
"label": "À propos"
},
"account_settings": {
"description": "Modifiez les paramètres de votre compte dans l'interface de Mastodon",
"label": "Paramètres de compte"
},
"feature_flags": {
"github_cards": "GitHub Cards",
"title": "Fonctionnalités expérimentales",
"user_picker": "User Picker",
"virtual_scroll": "Défilement virtuel"
},
"interface": {
"color_mode": "Couleur de thème",
"dark_mode": "Mode sombre",
"default": " (par défaut)",
"font_size": "Taille de police",
"label": "Interface",
"light_mode": "Mode lumineux",
"size_label": {
"lg": "Grande",
"md": "Moyenne",
"sm": "Petite",
"xl": "Très grande",
"xs": "Très petite"
}
},
"language": {
"display_language": "Langue d'affichage",
"label": "Langue"
},
"notifications": {
"label": "Notifications",
"notifications": {
"label": "Notifications settings"
},
"push_notifications": {
"alerts": {
"favourite": "Favoris",
"follow": "Nouveaux abonné·e·s",
"mention": "Mentions",
"poll": "Sondages",
"reblog": "A republié votre message",
"title": "Quelles notifications recevoir ?"
},
"description": "Receive notifications even when you are not using Elk.",
"instructions": "Don't forget to save your changes using @:settings.notifications.push_notifications.save_settings button!",
"label": "Push notifications settings",
"policy": {
"all": "De n'importe qui",
"followed": "Des personnes que je suis",
"follower": "Des personnes qui me suivent",
"none": "De personne",
"title": "De que je peux recevoir des notifications ?"
},
"save_settings": "Enregistrer les paramètres",
"subscription_error": {
"clear_error": "Effacer l'erreur",
"permission_denied": "Autorisation refusée : activez les notifications dans votre navigateur.",
"request_error": "Une erreur s'est produite lors de la demande d'abonnement, réessayez et si l'erreur persiste, veuillez signaler le problème auprès du dépôt Elk.",
"title": "Impossible de s'abonner aux notifications push"
},
"undo_settings": "Annuler les changements de paramètres",
"unsubscribe": "Désactiver les notifications push",
"unsupported": "Votre navigateur ne prend pas en charge les notifications push.",
"warning": {
"enable_close": "Fermer",
"enable_description": "Pour recevoir des notifications lorsque Elk n'est pas ouvert, activez les notifications push. \nVous pouvez contrôler précisément quels types d'interactions génèrent des notifications push via le bouton \"@:settings.notifications.show_btn{'\"'} ci-dessus une fois activé.",
"enable_description_settings": "To receive notifications when Elk is not open, enable push notifications. You will be able to control precisely what types of interactions generate push notifications on this same screen once you enable them.",
"enable_desktop": "Activer les notifications push",
"enable_title": "Ne manquez jamais rien",
"re_auth": "Il semble que votre serveur ne supporte pas les notifications push. \nEssayez de vous déconnecter et de vous reconnecter, si ce message persiste, contactez l'administrateur de votre serveur."
}
},
"show_btn": "Go to notifications settings"
},
"notifications_settings": "Notifications settings",
"preferences": {
"label": "Préférences"
},
"profile": {
"appearance": {
"bio": "Bio",
"description": "Editer l'avatar, nom d'utilisateur·ice, profil, etc.",
"display_name": "Nom d'affichage",
"label": "Apparence",
"profile_metadata": "Métadonnées de profil",
"profile_metadata_desc": "Vous pouvez avoir jusqu'à 4 éléments affichés sous forme de tableau sur votre profil",
"title": "Editer le profil"
},
"featured_tags": {
"description": "Les gens peuvent parcourir vos messages publics sous ces hashtags.",
"label": "Hashtags en vedette"
},
"label": "Profil"
},
"select_a_settings": "Sélectionner un paramètre",
"users": {
"export": "Exporter les tokens d'utilisateur·ice",
"import": "Importer des tokens d'utilisateur·ice",
"label": "Utilisateur·ice·s connecté·e·s"
}
},
"state": {
"attachments_exceed_server_limit": "Le nombre de pièces jointes a dépassé la limite par message.",
"attachments_limit_error": "Limite par publication dépassée",
"edited": "(Édité)",
"editing": "Édition",
"loading": "Chargement...",
"upload_failed": "Le téléversement a échoué",
"uploading": "Téléversement en cours..."
},
"status": {
"edited": "Edité {0}",
"filter_hidden_phrase": "Filtré par",
"filter_removed_phrase": "Caché par le filtre",
"filter_show_anyway": "Montrer coûte que coûte",
"img_alt": {
"desc": "Description",
"dismiss": "Fermer"
},
"poll": {
"count": "{0} votes",
"ends": "se clôt {0}",
"finished": "clos {0}"
},
"reblogged": "{0} relayé",
"replying_to": "Répondre à {0}",
"someone": "quelqu'un",
"spoiler_show_less": "Voir moins",
"spoiler_show_more": "Voir plus",
"try_original_site": "Essayer le site d'origine"
},
"status_history": {
"created": "a écrit {0}",
"edited": "a édité {0}"
},
"tab": {
"for_you": "Pour vous",
"hashtags": "Hashtags",
"media": "Média",
"news": "Actualités",
"notifications_all": "Tout",
"notifications_mention": "Mentions",
"posts": "Messages",
"posts_with_replies": "Messages et réponses"
},
"tag": {
"follow": "Suivre",
"follow_label": "Suivre la balise {0}",
"unfollow": "Ne plus suivre",
"unfollow_label": "Ne plus suivre la balise {0}"
},
"time_ago_options": {
"day_future": "dans 0 jour|demain|dans {n} jours",
"day_past": "il y a 0 jour|hier|il y a {n} jours",
"hour_future": "dans 0 heure|dans 1 heure|dans {n} heures",
"hour_past": "il y a 0 heure|il y a 1 heure|il y a {n} heures",
"just_now": "juste maintenant",
"minute_future": "dans 0 minutes|dans 1 minute|dans {n} minutes",
"minute_past": "il y a 0 minute|il y a 1 minute|il y a {n} minutes",
"month_future": "dans 0 mois|le mois prochain|dans {n} mois",
"month_past": "il y a 0 mois|le dernier mois|il y a {n} mois",
"second_future": "maintenant|dans {n} secondes|dans {n} secondes",
"second_past": "maintenant|il y a {n} seconde|il y a {n} secondes",
"short_day_future": "dans {n}j",
"short_day_past": "{n}j",
"short_hour_future": "dans {n}h",
"short_hour_past": "{n}h",
"short_minute_future": "dans {n}min",
"short_minute_past": "{n}min",
"short_month_future": "dans {n}mo",
"short_month_past": "{n}mo",
"short_second_future": "dans {n}s",
"short_second_past": "{n}s",
"short_week_future": "dans {n}sm",
"short_week_past": "{n}sm",
"short_year_future": "dans {n}a",
"short_year_past": "{n}a",
"week_future": "dans 0 semaine|semaine prochaine|dans {n} semaines",
"week_past": "il y a 0 semaines|il y a 1 semaine|il y a {n} semaines",
"year_future": "dans 0 année|l'année prochaine|dans {n} années",
"year_past": "il y a 0 année|l'année dernière|il y a {n} années"
},
"timeline": {
"show_new_items": "Voir le nouveau message|Voir les {v} nouveaux messages",
"view_older_posts": "Les messages plus anciens d'autres instances peuvent ne pas être affichés."
},
"title": {
"federated_timeline": "Fil d'actualité fédéré",
"local_timeline": "Fil d'actualité local"
},
"tooltip": {
"add_content_warning": "Ajouter un avertissement de contenu",
"add_media": "Ajouter des images, une vidéo ou un fichier audio",
"change_content_visibility": "Ajuster la confidentialité du message",
"change_language": "Changer la langue",
"emoji": "Emoji",
"explore_links_intro": "Ces actualités sont sujets à discussions sur ce serveur et sur d'autres serveurs du réseau décentralisé.",
"explore_posts_intro": "Ces publications de ce serveur et d'autres serveurs du réseau décentralisé gagnent du terrain sur ce serveur en ce moment.",
"explore_tags_intro": "Ces hashtags gagnent du terrain sur ce serveur et sur d'autres serveurs du réseau décentralisé.",
"toggle_code_block": "Ajouter un bloc de code"
},
"user": {
"add_existing": "Ajouter un compte existant",
"server_address_label": "Adresse du serveur mastodon",
"sign_in_desc": "Connectez-vous pour suivre des profils ou des hashtags, mettre en favoris, partager et répondre à des messages, ou interagir à partir de votre compte sur un autre serveur...",
"sign_in_notice_title": "Affichage de {0} données publiques",
"sign_out_account": "Se déconnecter de {0}",
"tip_no_account": "Si vous n'avez pas encore de compte Mastodon, {0}.",
"tip_register_account": "choisissez votre serveur et enregistrez-en un"
},
"visibility": {
"direct": "Personnes mentionnées uniquement",
"direct_desc": "Visibles uniquemnt par les comptes mentionnés",
"private": "Abonnés uniquement",
"private_desc": "Visible uniquement par vos abonnés",
"public": "Public",
"public_desc": "Visible par tout le monde",
"unlisted": "Non listé",
"unlisted_desc": "Visible pour tous, mais sans fonctionnalités de découverte"
}
}

74
locales/ja-JP.ftl Normal file
View file

@ -0,0 +1,74 @@
account_blocked_domains = ブロックしたドメイン
account_blocked_users = ブロックしたユーザー
account_blocking = Blocked
account_favourites = お気に入り
account_follow = フォローする
account_follow_back = フォローバックする
account_follow_requested = リクエスト済み
account_followers_count = {$formattedCount} フォロワー
account_following_count = {$formattedCount} フォロー中
account_follows_you = フォローされています
account_muted_users = ミュート済み
account_muting = Muted
account_pinned = 固定された投稿
account_posts_count = {$formattedCount} 投稿
account_unblock = Unblock
account_unfollow = フォロー解除
account_unmute = Unmute
action_compose = 今なにしてる?
action_enter_app = 使い始める
action_publish = 投稿
action_save_changes = 変更を保存
action_sign_in = サインイン
action_vote = 投票
common_end_of_list = 他にはありません
common_error = ERROR
common_not_found = 404 Not Found
menu_block_account = {$username}さんをブロックする
menu_block_domain = {$domain}をドメインブロック
menu_direct_message_account = {$username}さんにダイレクトメッセージ
menu_mention_account = {$username}さんにメンション
menu_mute_account = {$username}さんをミュート
menu_mute_conversation = ミュートポスト
menu_open_in_original_site = 元のサイトで開く
menu_unblock_account = {$username}さんのブロックを解除
menu_unblock_domain = {$domain}のドメインブロックを解除
menu_unmute_account = {$username}さんのミュートを解除
menu_unmute_conversation = 投稿のミュートを解除
nav_bookmarks = ブックマーク
nav_conversations = 会話
nav_explore = 話題の投稿
nav_favourites = お気に入り
nav_federated = 連合
nav_home = ホーム
nav_local = ローカル
nav_notifications = 通知
nav_profile = プロフィール
nav_search = 検索
nav_select_feature_flags = 実験的機能を切り替え
nav_select_language = 言語を選択
nav_toggle_theme = テーマを切り替え
nav_zen_mode = 禅モード
notification_favourited_post = さんがあなたの投稿お気に入り登録しました
notification_followed_you = さんがあなたをフォローしました
notification_missing_type = MISSING notification.type:
notification_reblogged_post = さんがあなたの投稿をブーストしました
notification_request_to_follow = さんがあなたへフォローをリクエストしました
notification_update_status = さんが投稿を更新しました
settings_feature_flags_github_cards = GitHub Cards
settings_feature_flags_user_picker = User Picker
settings_feature_flags_virtual_scroll = 仮想スクロール
state_editing = 編集中
state_uploading = 更新中...
tab_hashtags = ハッシュタグ
tab_media = メディア
tab_posts = 投稿
tab_posts_with_replies = 投稿と返信
timeline_show_new_items = {v}件の新しい投稿
title_federated_timeline = 連合タイムライン
title_local_timeline = ローカルタイムライン
tooltip_add_content_warning = 警告を追加
tooltip_add_media = 画像、動画、音声ファイルを追加
tooltip_change_content_visibility = 公開範囲を変更
tooltip_toggle_code_block = コードブロックを切り替え
user_sign_in_desc = サインインすると、アカウントやハッシュタグをフォローしたり、お気に入りしたり、投稿を共有したり返信するほか、異なるサーバー上のあなたのアカウントから交流できます。

View file

@ -1,104 +0,0 @@
{
"account": {
"blocked_domains": "ブロックしたドメイン",
"blocked_users": "ブロックしたユーザー",
"blocking": "Blocked",
"favourites": "お気に入り",
"follow": "フォローする",
"follow_back": "フォローバックする",
"follow_requested": "リクエスト済み",
"followers_count": "{0} フォロワー",
"following_count": "{0} フォロー中",
"follows_you": "フォローされています",
"muted_users": "ミュート済み",
"muting": "Muted",
"pinned": "固定された投稿",
"posts_count": "{0} 投稿",
"unblock": "Unblock",
"unfollow": "フォロー解除",
"unmute": "Unmute"
},
"action": {
"compose": "今なにしてる?",
"enter_app": "使い始める",
"publish": "投稿",
"save_changes": "変更を保存",
"sign_in": "サインイン",
"vote": "投票"
},
"common": {
"end_of_list": "他にはありません",
"error": "ERROR",
"not_found": "404 Not Found"
},
"menu": {
"block_account": "{0}さんをブロックする",
"block_domain": "{0}をドメインブロック",
"direct_message_account": "{0}さんにダイレクトメッセージ",
"mention_account": "{0}さんにメンション",
"mute_account": "{0}さんをミュート",
"mute_conversation": "ミュートポスト",
"open_in_original_site": "元のサイトで開く",
"unblock_account": "{0}さんのブロックを解除",
"unblock_domain": "{0}のドメインブロックを解除",
"unmute_account": "{0}さんのミュートを解除",
"unmute_conversation": "投稿のミュートを解除"
},
"nav": {
"bookmarks": "ブックマーク",
"conversations": "会話",
"explore": "話題の投稿",
"favourites": "お気に入り",
"federated": "連合",
"home": "ホーム",
"local": "ローカル",
"notifications": "通知",
"profile": "プロフィール",
"search": "検索",
"select_feature_flags": "実験的機能を切り替え",
"select_language": "言語を選択",
"toggle_theme": "テーマを切り替え",
"zen_mode": "禅モード"
},
"notification": {
"favourited_post": "さんがあなたの投稿お気に入り登録しました",
"followed_you": "さんがあなたをフォローしました",
"missing_type": "MISSING notification.type:",
"reblogged_post": "さんがあなたの投稿をブーストしました",
"request_to_follow": "さんがあなたへフォローをリクエストしました",
"update_status": "さんが投稿を更新しました"
},
"settings": {
"feature_flags": {
"github_cards": "GitHub Cards",
"user_picker": "User Picker",
"virtual_scroll": "仮想スクロール"
}
},
"state": {
"editing": "編集中",
"uploading": "更新中..."
},
"tab": {
"hashtags": "ハッシュタグ",
"media": "メディア",
"posts": "投稿",
"posts_with_replies": "投稿と返信"
},
"timeline": {
"show_new_items": "{v}件の新しい投稿"
},
"title": {
"federated_timeline": "連合タイムライン",
"local_timeline": "ローカルタイムライン"
},
"tooltip": {
"add_content_warning": "警告を追加",
"add_media": "画像、動画、音声ファイルを追加",
"change_content_visibility": "公開範囲を変更",
"toggle_code_block": "コードブロックを切り替え"
},
"user": {
"sign_in_desc": "サインインすると、アカウントやハッシュタグをフォローしたり、お気に入りしたり、投稿を共有したり返信するほか、異なるサーバー上のあなたのアカウントから交流できます。"
}
}

314
locales/nl-NL.ftl Normal file
View file

@ -0,0 +1,314 @@
a11y_loading_page = Pagina laden, even wachten
a11y_loading_titled_page = Pagina {$title} laden, even wachten
a11y_locale_changed = Taal veranderd naar {$lang}
a11y_locale_changing = Taal veranderen, even wachten
a11y_route_loaded = Pagina {$title} geladen
account_avatar_description = {$username}'s avatar
account_blocked_by = Je bent geblokkeerd door deze gebruiker.
account_blocked_domains = Geblokkeerde domeinen
account_blocked_users = Geblokkeerde gebruikers
account_blocking = Geblokkeerd
account_bot = BOT
account_favourites = Favorieten
account_follow = Volg
account_follow_back = Volg terug
account_follow_requested = Aangevraagd
account_followers = Volgers
account_followers_count = { $count ->
[one] {$formattedCount} Follower
*[other] {$formattedCount} Followers
}
account_following = Volgend
account_following_count = {$formattedCount} Volgend
account_follows_you = Volgt jou
account_go_to_profile = Ga naar profiel
account_joined = Lid geworden
account_moved_title = heeft aangegeven hun nieuwe account is nu:
account_muted_users = Gedempte gebruikers
account_muting = Gedempt
account_mutuals = Gedeeld
account_pinned = Gepind
account_posts = Posts
account_posts_count = { $count ->
[one] {$formattedCount} Post
*[other] {$formattedCount} Posts
}
account_profile_description = {$username}'s profiel koptekst
account_profile_unavailable = Profiel niet beschikbaar
account_unblock = Deblokkeren
account_unfollow = Ontvolgen
account_unmute = Ontdempen
action_apply = Toepassen
action_bookmark = Bookmark
action_bookmarked = Gebookmarkt
action_boost = Boost
action_boost_count = {0}
action_boosted = Geboost
action_clear_upload_failed = Wis bestand upload fouten
action_close = Sluit
action_compose = Composeer
action_confirm = Confirmeer
action_edit = Aanpassen
action_enter_app = Ga naar App
action_favourite = Favoriet
action_favourite_count = {0}
action_favourited = Favoriet
action_more = Meer
action_next = Volgende
action_prev = Vorige
action_publish = Publiceer
action_reply = Beantwoord
action_reply_count = {0}
action_reset = Resetten
action_save = Opslaan
action_save_changes = Aanpassingen opslaan
action_sign_in = Sign in
action_switch_account = Wissel van account
action_vote = Stem
app_desc_short = Een vlotte Mastodon web client
app_logo = Elk Logo
app_name = Elk
attachment_edit_title = Descriptie
attachment_remove_label = Verwijder bijlage
command_activate = Activeren
command_complete = Compleet
command_compose_desc = Schrijf een nieuwe post
command_n-people-in-the-past-n-days = {$count} mensen in de laatste {$days} dagen
command_select_lang = Selecteer een taal
command_sign_in_desc = Add an existing account
command_switch_account = Wissel naar {$username}
command_switch_account_desc = Wissel naar ander account
command_toggle_dark_mode = Dark modus wisselen
command_toggle_zen_mode = Zen modus schakelen
common_end_of_list = Einde van de lijst
common_error = FOUT
common_in = in
common_not_found = 404 Niet Gevonden
common_offline_desc = Zo te zien ben je offline. Check je internet verbinding.
conversation_with = met
error_account_not_found = Account {$username} niet gevonden
error_explore-list-empty = Er is nu niets trending. Kom later terug!
error_file_size_cannot_exceed_n_mb = Bestand grote mag niet groter zijn dan {$size}MB
error_sign_in_error = Kan geen connectie maken met de server.
error_status_not_found = Post niet gevonden
error_unsupported_file_format = Bestandstype niet ondersteund
help_desc_highlight = Expect some bugs and missing features here and there.
help_desc_para1 = Thanks for your interest in trying out Elk, our work-in-progress generic Mastodon client!
help_desc_para2 = We are working hard on the development and improving it over time. We will open source the app once it is ready for public use.
help_desc_para3 = To help boosting out development, you can sponsor our team members with the links below. We hope you enjoy Elk!
help_desc_para4 = Before that, if you'd like to help with testing, giving feedback, or contributing,
help_desc_para5 = reach out to us on Mastodon
help_desc_para6 = and get involved.
help_title = Elk is in Preview!
language_none = Niets
language_search = Opzoeken
menu_block_account = Blokkeer {$username}
menu_block_domain = Blokkeer domein {$domain}
menu_copy_link_to_post = Kopieer link naar deze post
menu_delete = Verwijder
menu_delete_and_redraft = Verwijder & Opnieuw opstellen
menu_direct_message_account = Direct bericht naar {$username}
menu_edit = Aanpassen
menu_mention_account = Noem {$username}
menu_mute_account = Demp {$username}
menu_mute_conversation = Demp deze post
menu_open_in_original_site = Open in originele site
menu_pin_on_profile = Pin op profiel
menu_share_post = Deel deze post
menu_show_untranslated = Laat onvertaalde zien
menu_toggle_theme_dark = Dark modus wisselen
menu_toggle_theme_light = Light modus wisselen
menu_translate_post = Vertaal post
menu_unblock_account = Deblokkeer {$username}
menu_unblock_domain = Deblokkeer domein {$domain}
menu_unmute_account = Ontdemp {$username}
menu_unmute_conversation = Ontdemp deze post
menu_unpin_on_profile = Ontpin op profiel
nav_bookmarks = Bookmarks
nav_built_at = Gebouwd {0}
nav_conversations = Conversaties
nav_explore = Ontdekken
nav_favourites = Favorieten
nav_federated = Gefedereerd
nav_home = Home
nav_local = Lokaal
nav_notifications = Notificaties
nav_profile = Profiel
nav_search = Zoeken
nav_select_feature_flags = Schakel Feature Vlaggen
nav_select_font_size = Font Grootte
nav_select_language = Display Taal
nav_settings = Instellingen
nav_show_intro = Laat intro zien
nav_toggle_theme = Schakel Thema
nav_zen_mode = Zen Modus
notification_favourited_post = vindt jou post favoriet
notification_followed_you = volgt jou
notification_followed_you_count = {0} mensen hebben je gevolgd|{0} persoon heeft je gevold|{0} mensen hebben je gevolgd
notification_missing_type = MISSEND notificatie.type:
notification_reblogged_post = herblogd je post
notification_request_to_follow = vraagt om jou te volgen
notification_signed_up = signed up
notification_update_status = heeft hun post aangepast
placeholder_content_warning = Schrijf je warning hier
placeholder_default_1 = Waar denk je aan?
placeholder_reply_to_account = Reageer op {0}
placeholder_replying = Reageren
placeholder_the_thread = de thread
pwa_dismiss = Afwijzen
pwa_title = Er is een nieuwe Elk update!
pwa_update = Update
pwa_update_available_short = Update Elk
search_search_desc = Zoek naar mensen & hashtags
search_search_empty = Deze zoektermen leveren geen resultaat op
settings_about_label = Over
settings_feature_flags_github_cards = GitHub Cards
settings_feature_flags_title = Experimentelen Functies
settings_feature_flags_user_picker = Gebruiker Picker
settings_feature_flags_virtual_scroll = Virtueel Scrollen
settings_interface_color_mode = Kleur Modus
settings_interface_dark_mode = Dark Modus
settings_interface_default = (standaard)
settings_interface_font_size = Font Grootte
settings_interface_label = Interface
settings_interface_light_mode = Light Modus
settings_language_display_language = Display Taal
settings_language_label = Taal
settings_notifications_label = Notifications
settings_notifications_notifications_label = Notifications settings
settings_notifications_push_notifications_alerts_favourite = Favorieten
settings_notifications_push_notifications_alerts_follow = Nieuwe volgers
settings_notifications_push_notifications_alerts_mention = Vermeldingen
settings_notifications_push_notifications_alerts_poll = Peilingen
settings_notifications_push_notifications_alerts_reblog = Herblogd jou post
settings_notifications_push_notifications_alerts_title = Welke notificaties wil je krijgen?
settings_notifications_push_notifications_description = Receive notifications even when you are not using Elk.
settings_notifications_push_notifications_instructions = Don't forget to save your changes using @:settings.notifications.push_notifications.save_settings button!
settings_notifications_push_notifications_label = Push notifications settings
settings_notifications_push_notifications_policy_all = Van iedereen
settings_notifications_push_notifications_policy_followed = Van mensen die ik volg
settings_notifications_push_notifications_policy_follower = Van mensen die mij volgen
settings_notifications_push_notifications_policy_none = Van niemand
settings_notifications_push_notifications_policy_title = Van wie kan ik notificaties krijgen?
settings_notifications_push_notifications_save_settings = Instellingen aanpassingen opslaan
settings_notifications_push_notifications_subscription_error_clear_error = Wis error
settings_notifications_push_notifications_subscription_error_permission_denied = Geen toestemming: zet notificaties aan in je browser.
settings_notifications_push_notifications_subscription_error_request_error = Er is een error tijdens het ophalen van de subscriptie, probeer opnieuw en als de error blijft, raporteer het probleem naar de Elk repository.
settings_notifications_push_notifications_subscription_error_title = Kon niet subscriben aan push notificaties
settings_notifications_push_notifications_undo_settings = Undo veranderden instellingen
settings_notifications_push_notifications_unsubscribe = Zet push notificaties uit
settings_notifications_push_notifications_unsupported = Je browser ondersteunt geen push notificaties.
settings_notifications_push_notifications_warning_enable_close = Sluit
settings_notifications_push_notifications_warning_enable_description = Om notificaties te krijgen terwijl Elk niet open is, zet push notificaties aan. Je kan precies instellen wat voor typen interacties push notificaties genereren via de "@:notification.settings.show_btn{'"'} knop hierboven wanneer ze aan staan.
settings_notifications_push_notifications_warning_enable_description_settings = To receive notifications when Elk is not open, enable push notifications. You will be able to control precisely what types of interactions generate push notifications on this same screen once you enable them.
settings_notifications_push_notifications_warning_enable_desktop = Zet push notificaties aan
settings_notifications_push_notifications_warning_enable_title = Mis niets
settings_notifications_push_notifications_warning_re_auth = It seems that your server does not support push notifications. Try sign out and sign in again, if this message still appears contact your server administrator.
settings_notifications_show_btn = Go to notifications settings
settings_notifications_settings = Notifications
settings_preferences_label = Voorkeuren
settings_profile_appearance_bio = Bio
settings_profile_appearance_description = Aanpassen van avatar, username, profile, etc.
settings_profile_appearance_display_name = Zichtbare naam
settings_profile_appearance_label = Uiterlijk
settings_profile_appearance_profile_metadata = Profiel metadata
settings_profile_appearance_profile_metadata_desc = Je kan tot en met 4 elementen als table zetten op je profiel zetten
settings_profile_appearance_title = Aanpassen profiel
settings_profile_featured_tags_description = Mensen kunnen je publieke posts vinden onder deze hashtags.
settings_profile_featured_tags_label = Uitgelichte hashtags
settings_profile_label = Profiel
settings_select_a_settings = Selecteer een instelling
settings_users_export = Exporteer Gebruikers Tokens
settings_users_import = Importeer Gebruikers Tokens
settings_users_label = Ingelogde gebruikers
state_attachments_exceed_server_limit = De hoeveelheid bijlage is meer als het limiet per post.
state_attachments_limit_error = Limiet per post overschreden
state_edited = (Aangepast)
state_editing = Aanpassen
state_loading = Laden...
state_upload_failed = Upload gefaald
state_uploading = Uploading...
status_edited = Aangepast {$date}
status_filter_hidden_phrase = Gefilterd door
status_filter_removed_phrase = Verwijderd door filter
status_filter_show_anyway = Laat toch zien
status_img_alt_desc = Descriptie
status_img_alt_dismiss = Afwijzen
status_poll_count = {0} stemmen|{0} stem|{0} stemmen
status_poll_ends = eindigt {0}
status_poll_finished = geëindigd {0}
status_reblogged = {0} herblogd
status_someone = Iemand
status_spoiler_show_less = Minder zien
status_spoiler_show_more = Meer zien
status_try_original_site = Probeer originele site
status_history_created = gecreëerd {0}
status_history_edited = aangepast {$date}
tab_for_you = Voor jou
tab_hashtags = Hashtags
tab_media = Media
tab_news = Nieuws
tab_notifications_all = Alles
tab_notifications_mention = Vermelding
tab_posts = Posts
tab_posts_with_replies = Posts & Reacties
tag_follow = Volg
tag_follow_label = Volg {$tag} tag
tag_unfollow = Ontvolg
tag_unfollow_label = Ontvolg {$tag} tag
time_ago_options_day_future = in 0 dagen|morgen|in {n} dagen
time_ago_options_day_past = 0 dagen geleden|gisteren|{n} dagen geleden
time_ago_options_hour_future = in 0 uur|in 1 uur|in {n} uur
time_ago_options_hour_past = 0 uur geleden|1 uur geleden|{n} uur geleden
time_ago_options_just_now = nu net
time_ago_options_minute_future = in 0 minuten|in 1 minuut|in {n} minuten
time_ago_options_minute_past = 0 minuten geleden|1 minuut geleden|{n} minuten geleden
time_ago_options_month_future = in 0 maanden|volgende maand|in {n} maanden
time_ago_options_month_past = 0 maanden geleden|laatste maand|{n} maanden geleden
time_ago_options_second_future = nu net|in {n} seconden|in {n} seconden
time_ago_options_second_past = nu net|{n} seconden geleden|{n} seconden geleden
time_ago_options_short_day_future = in {n}d
time_ago_options_short_day_past = {n}d
time_ago_options_short_hour_future = in {n}u
time_ago_options_short_hour_past = {$n}u
time_ago_options_short_minute_future = in {n}min
time_ago_options_short_minute_past = {$n}min
time_ago_options_short_month_future = in {n}ma
time_ago_options_short_month_past = {n}ma
time_ago_options_short_second_future = in {n}s
time_ago_options_short_second_past = {n}s
time_ago_options_short_week_future = in {n}w
time_ago_options_short_week_past = {n}w
time_ago_options_short_year_future = in {n}j
time_ago_options_short_year_past = {n}j
time_ago_options_week_future = in 0 weken|volgende week|in {n} weken
time_ago_options_week_past = 0 weken geleden|vorige week|{n} weken geleden
time_ago_options_year_future = in 0 jaar|volgend jaar|in {n} jaar
time_ago_options_year_past = 0 jaar geleden|vorig jaar|{n} jaar geleden
timeline_show_new_items = Laat {v} nieuwe artikelen zien|Laat {v} nieuw artikel zien|Laat {v} nieuwe artikelen zien
title_federated_timeline = Gefedereerde Tijdlijn
title_local_timeline = Lokale Tijdlijn
tooltip_add_content_warning = Voeg inhoud waarschuwing toe
tooltip_add_media = Voeg fotos, een video of een audio bestand toe
tooltip_change_content_visibility = Verander inhoud zichtbaarheid
tooltip_change_language = Verander taal
tooltip_emoji = Emoji
tooltip_explore_links_intro = Deze nieuws artikelen worden veel over gepraat op deze en anderen servers op het decentralized network op dit moment.
tooltip_explore_posts_intro = Deze posts van deze en andere servers op het decentralized network krijgen veel aandacht op deze server op dit moment.
tooltip_explore_tags_intro = Deze hashtags krijgen veel aandacht op dit moment op deze en anderen servers op het decentralized network.
tooltip_toggle_code_block = Zet code blok aan/uit
user_add_existing = Voeg een bestaand account toe
user_server_address_label = Mastodon Server Address
user_sign_in_desc = Sign in om profielen te volgen of hashtags, markeer posts als favoriet, deel en reageer op posts, of interact vanaf je account op een anderen server.
user_sign_in_notice_title = Je bekijkt {0} publieke data
user_sign_out_account = Sign out {$username}
user_tip_no_account = Als je nog geen Mastodon account hebt, {0}.
user_tip_register_account = kies jou server en registreer een account
visibility_direct = Direct
visibility_direct_desc = Zichtbaar voor alleen vermelden gebruikers
visibility_private = Alleen volgers
visibility_private_desc = Alleen zichtbaar voor volgers
visibility_public = Publiek
visibility_public_desc = Zichtbaar voor iedereen
visibility_unlisted = Niet vermeld
visibility_unlisted_desc = Zichtbaar voor iedereen, maar kan niet gevonden worden via discovery functies

View file

@ -1,404 +0,0 @@
{
"a11y": {
"loading_page": "Pagina laden, even wachten",
"loading_titled_page": "Pagina {0} laden, even wachten",
"locale_changed": "Taal veranderd naar {0}",
"locale_changing": "Taal veranderen, even wachten",
"route_loaded": "Pagina {0} geladen"
},
"account": {
"avatar_description": "{0}'s avatar",
"blocked_by": "Je bent geblokkeerd door deze gebruiker.",
"blocked_domains": "Geblokkeerde domeinen",
"blocked_users": "Geblokkeerde gebruikers",
"blocking": "Geblokkeerd",
"bot": "BOT",
"favourites": "Favorieten",
"follow": "Volg",
"follow_back": "Volg terug",
"follow_requested": "Aangevraagd",
"followers": "Volgers",
"followers_count": "{0} Followers|{0} Follower|{0} Followers",
"following": "Volgend",
"following_count": "{0} Volgend",
"follows_you": "Volgt jou",
"go_to_profile": "Ga naar profiel",
"joined": "Lid geworden",
"moved_title": "heeft aangegeven hun nieuwe account is nu:",
"muted_users": "Gedempte gebruikers",
"muting": "Gedempt",
"mutuals": "Gedeeld",
"pinned": "Gepind",
"posts": "Posts",
"posts_count": "{0} Posts|{0} Post|{0} Posts",
"profile_description": "{0}'s profiel koptekst",
"profile_unavailable": "Profiel niet beschikbaar",
"unblock": " Deblokkeren",
"unfollow": "Ontvolgen",
"unmute": "Ontdempen"
},
"action": {
"apply": "Toepassen",
"bookmark": "Bookmark",
"bookmarked": "Gebookmarkt",
"boost": "Boost",
"boost_count": "{0}",
"boosted": "Geboost",
"clear_upload_failed": "Wis bestand upload fouten",
"close": "Sluit",
"compose": "Composeer",
"confirm": "Confirmeer",
"edit": "Aanpassen",
"enter_app": "Ga naar App",
"favourite": "Favoriet",
"favourite_count": "{0}",
"favourited": "Favoriet",
"more": "Meer",
"next": "Volgende",
"prev": "Vorige",
"publish": "Publiceer",
"reply": "Beantwoord",
"reply_count": "{0}",
"reset": "Resetten",
"save": "Opslaan",
"save_changes": "Aanpassingen opslaan",
"sign_in": "Sign in",
"switch_account": "Wissel van account",
"vote": "Stem"
},
"app_desc_short": "Een vlotte Mastodon web client",
"app_logo": "Elk Logo",
"app_name": "Elk",
"attachment": {
"edit_title": "Descriptie",
"remove_label": "Verwijder bijlage"
},
"command": {
"activate": "Activeren",
"complete": "Compleet",
"compose_desc": "Schrijf een nieuwe post",
"n-people-in-the-past-n-days": "{0} mensen in de laatste {1} dagen",
"select_lang": "Selecteer een taal",
"sign_in_desc": "Add an existing account",
"switch_account": "Wissel naar {0}",
"switch_account_desc": "Wissel naar ander account",
"toggle_dark_mode": "Dark modus wisselen",
"toggle_zen_mode": "Zen modus schakelen"
},
"common": {
"end_of_list": "Einde van de lijst",
"error": "FOUT",
"in": "in",
"not_found": "404 Niet Gevonden",
"offline_desc": "Zo te zien ben je offline. Check je internet verbinding."
},
"conversation": {
"with": "met"
},
"error": {
"account_not_found": "Account {0} niet gevonden",
"explore-list-empty": "Er is nu niets trending. Kom later terug!",
"file_size_cannot_exceed_n_mb": "Bestand grote mag niet groter zijn dan {0}MB",
"sign_in_error": "Kan geen connectie maken met de server.",
"status_not_found": "Post niet gevonden",
"unsupported_file_format": "Bestandstype niet ondersteund"
},
"help": {
"desc_highlight": "Expect some bugs and missing features here and there.",
"desc_para1": "Thanks for your interest in trying out Elk, our work-in-progress generic Mastodon client!",
"desc_para2": "We are working hard on the development and improving it over time. We will open source the app once it is ready for public use.",
"desc_para3": "To help boosting out development, you can sponsor our team members with the links below. We hope you enjoy Elk!",
"desc_para4": "Before that, if you'd like to help with testing, giving feedback, or contributing,",
"desc_para5": "reach out to us on Mastodon",
"desc_para6": "and get involved.",
"title": "Elk is in Preview!"
},
"language": {
"none": "Niets",
"search": "Opzoeken"
},
"menu": {
"block_account": "Blokkeer {0}",
"block_domain": "Blokkeer domein {0}",
"copy_link_to_post": "Kopieer link naar deze post",
"delete": "Verwijder",
"delete_and_redraft": "Verwijder & Opnieuw opstellen",
"direct_message_account": "Direct bericht naar {0}",
"edit": "Aanpassen",
"mention_account": "Noem {0}",
"mute_account": "Demp {0}",
"mute_conversation": "Demp deze post",
"open_in_original_site": "Open in originele site",
"pin_on_profile": "Pin op profiel",
"share_post": "Deel deze post",
"show_untranslated": "Laat onvertaalde zien",
"toggle_theme": {
"dark": "Dark modus wisselen",
"light": "Light modus wisselen"
},
"translate_post": "Vertaal post",
"unblock_account": "Deblokkeer {0}",
"unblock_domain": "Deblokkeer domein {0}",
"unmute_account": "Ontdemp {0}",
"unmute_conversation": "Ontdemp deze post",
"unpin_on_profile": "Ontpin op profiel"
},
"nav": {
"bookmarks": "Bookmarks",
"built_at": "Gebouwd {0}",
"conversations": "Conversaties",
"explore": "Ontdekken",
"favourites": "Favorieten",
"federated": "Gefedereerd",
"home": "Home",
"local": "Lokaal",
"notifications": "Notificaties",
"profile": "Profiel",
"search": "Zoeken",
"select_feature_flags": "Schakel Feature Vlaggen",
"select_font_size": "Font Grootte",
"select_language": "Display Taal",
"settings": "Instellingen",
"show_intro": "Laat intro zien",
"toggle_theme": "Schakel Thema",
"zen_mode": "Zen Modus"
},
"notification": {
"favourited_post": "vindt jou post favoriet",
"followed_you": "volgt jou",
"followed_you_count": "{0} mensen hebben je gevolgd|{0} persoon heeft je gevold|{0} mensen hebben je gevolgd",
"missing_type": "MISSEND notificatie.type:",
"reblogged_post": "herblogd je post",
"request_to_follow": "vraagt om jou te volgen",
"signed_up": "signed up",
"update_status": "heeft hun post aangepast"
},
"placeholder": {
"content_warning": "Schrijf je warning hier",
"default_1": "Waar denk je aan?",
"reply_to_account": "Reageer op {0}",
"replying": "Reageren",
"the_thread": "de thread"
},
"pwa": {
"dismiss": "Afwijzen",
"title": "Er is een nieuwe Elk update!",
"update": "Update",
"update_available_short": "Update Elk"
},
"search": {
"search_desc": "Zoek naar mensen & hashtags",
"search_empty": "Deze zoektermen leveren geen resultaat op"
},
"settings": {
"about": {
"label": "Over"
},
"feature_flags": {
"github_cards": "GitHub Cards",
"title": "Experimentelen Functies",
"user_picker": "Gebruiker Picker",
"virtual_scroll": "Virtueel Scrollen"
},
"interface": {
"color_mode": "Kleur Modus",
"dark_mode": "Dark Modus",
"default": " (standaard)",
"font_size": "Font Grootte",
"label": "Interface",
"light_mode": "Light Modus"
},
"language": {
"display_language": "Display Taal",
"label": "Taal"
},
"notifications": {
"label": "Notifications",
"notifications": {
"label": "Notifications settings"
},
"push_notifications": {
"alerts": {
"favourite": "Favorieten",
"follow": "Nieuwe volgers",
"mention": " Vermeldingen",
"poll": "Peilingen",
"reblog": "Herblogd jou post",
"title": "Welke notificaties wil je krijgen?"
},
"description": "Receive notifications even when you are not using Elk.",
"instructions": "Don't forget to save your changes using @:settings.notifications.push_notifications.save_settings button!",
"label": "Push notifications settings",
"policy": {
"all": "Van iedereen",
"followed": "Van mensen die ik volg",
"follower": "Van mensen die mij volgen",
"none": "Van niemand",
"title": "Van wie kan ik notificaties krijgen?"
},
"save_settings": "Instellingen aanpassingen opslaan",
"subscription_error": {
"clear_error": "Wis error",
"permission_denied": "Geen toestemming: zet notificaties aan in je browser.",
"request_error": "Er is een error tijdens het ophalen van de subscriptie, probeer opnieuw en als de error blijft, raporteer het probleem naar de Elk repository.",
"title": "Kon niet subscriben aan push notificaties"
},
"undo_settings": "Undo veranderden instellingen",
"unsubscribe": "Zet push notificaties uit",
"unsupported": "Je browser ondersteunt geen push notificaties.",
"warning": {
"enable_close": "Sluit",
"enable_description": "Om notificaties te krijgen terwijl Elk niet open is, zet push notificaties aan. Je kan precies instellen wat voor typen interacties push notificaties genereren via de \"@:notification.settings.show_btn{'\"'} knop hierboven wanneer ze aan staan.",
"enable_description_settings": "To receive notifications when Elk is not open, enable push notifications. You will be able to control precisely what types of interactions generate push notifications on this same screen once you enable them.",
"enable_desktop": "Zet push notificaties aan",
"enable_title": "Mis niets",
"re_auth": "It seems that your server does not support push notifications. Try sign out and sign in again, if this message still appears contact your server administrator."
}
},
"show_btn": "Go to notifications settings"
},
"notifications_settings": "Notifications",
"preferences": {
"label": "Voorkeuren"
},
"profile": {
"appearance": {
"bio": "Bio",
"description": "Aanpassen van avatar, username, profile, etc.",
"display_name": "Zichtbare naam",
"label": "Uiterlijk",
"profile_metadata": "Profiel metadata",
"profile_metadata_desc": "Je kan tot en met 4 elementen als table zetten op je profiel zetten",
"title": "Aanpassen profiel"
},
"featured_tags": {
"description": "Mensen kunnen je publieke posts vinden onder deze hashtags.",
"label": "Uitgelichte hashtags"
},
"label": "Profiel"
},
"select_a_settings": "Selecteer een instelling",
"users": {
"export": "Exporteer Gebruikers Tokens",
"import": "Importeer Gebruikers Tokens",
"label": "Ingelogde gebruikers"
}
},
"state": {
"attachments_exceed_server_limit": "De hoeveelheid bijlage is meer als het limiet per post.",
"attachments_limit_error": "Limiet per post overschreden",
"edited": "(Aangepast)",
"editing": "Aanpassen",
"loading": "Laden...",
"upload_failed": "Upload gefaald",
"uploading": "Uploading..."
},
"status": {
"edited": "Aangepast {0}",
"filter_hidden_phrase": "Gefilterd door",
"filter_removed_phrase": "Verwijderd door filter",
"filter_show_anyway": "Laat toch zien",
"img_alt": {
"desc": "Descriptie",
"dismiss": "Afwijzen"
},
"poll": {
"count": "{0} stemmen|{0} stem|{0} stemmen",
"ends": "eindigt {0}",
"finished": "geëindigd {0}"
},
"reblogged": "{0} herblogd",
"someone": "Iemand",
"spoiler_show_less": "Minder zien",
"spoiler_show_more": "Meer zien",
"try_original_site": "Probeer originele site"
},
"status_history": {
"created": "gecreëerd {0}",
"edited": "aangepast {0}"
},
"tab": {
"for_you": "Voor jou",
"hashtags": "Hashtags",
"media": "Media",
"news": "Nieuws",
"notifications_all": "Alles",
"notifications_mention": "Vermelding",
"posts": "Posts",
"posts_with_replies": "Posts & Reacties"
},
"tag": {
"follow": "Volg",
"follow_label": "Volg {0} tag",
"unfollow": "Ontvolg",
"unfollow_label": "Ontvolg {0} tag"
},
"time_ago_options": {
"day_future": "in 0 dagen|morgen|in {n} dagen",
"day_past": "0 dagen geleden|gisteren|{n} dagen geleden",
"hour_future": "in 0 uur|in 1 uur|in {n} uur",
"hour_past": "0 uur geleden|1 uur geleden|{n} uur geleden",
"just_now": "nu net",
"minute_future": "in 0 minuten|in 1 minuut|in {n} minuten",
"minute_past": "0 minuten geleden|1 minuut geleden|{n} minuten geleden",
"month_future": "in 0 maanden|volgende maand|in {n} maanden",
"month_past": "0 maanden geleden|laatste maand|{n} maanden geleden",
"second_future": "nu net|in {n} seconden|in {n} seconden",
"second_past": "nu net|{n} seconden geleden|{n} seconden geleden",
"short_day_future": "in {n}d",
"short_day_past": "{n}d",
"short_hour_future": "in {n}u",
"short_hour_past": "{n}u",
"short_minute_future": "in {n}min",
"short_minute_past": "{n}min",
"short_month_future": "in {n}ma",
"short_month_past": "{n}ma",
"short_second_future": "in {n}s",
"short_second_past": "{n}s",
"short_week_future": "in {n}w",
"short_week_past": "{n}w",
"short_year_future": "in {n}j",
"short_year_past": "{n}j",
"week_future": "in 0 weken|volgende week|in {n} weken",
"week_past": "0 weken geleden|vorige week|{n} weken geleden",
"year_future": "in 0 jaar|volgend jaar|in {n} jaar",
"year_past": "0 jaar geleden|vorig jaar|{n} jaar geleden"
},
"timeline": {
"show_new_items": "Laat {v} nieuwe artikelen zien|Laat {v} nieuw artikel zien|Laat {v} nieuwe artikelen zien"
},
"title": {
"federated_timeline": "Gefedereerde Tijdlijn",
"local_timeline": "Lokale Tijdlijn"
},
"tooltip": {
"add_content_warning": "Voeg inhoud waarschuwing toe",
"add_media": "Voeg fotos, een video of een audio bestand toe",
"change_content_visibility": "Verander inhoud zichtbaarheid",
"change_language": "Verander taal",
"emoji": "Emoji",
"explore_links_intro": "Deze nieuws artikelen worden veel over gepraat op deze en anderen servers op het decentralized network op dit moment.",
"explore_posts_intro": "Deze posts van deze en andere servers op het decentralized network krijgen veel aandacht op deze server op dit moment.",
"explore_tags_intro": "Deze hashtags krijgen veel aandacht op dit moment op deze en anderen servers op het decentralized network.",
"toggle_code_block": "Zet code blok aan/uit"
},
"user": {
"add_existing": "Voeg een bestaand account toe",
"server_address_label": "Mastodon Server Address",
"sign_in_desc": "Sign in om profielen te volgen of hashtags, markeer posts als favoriet, deel en reageer op posts, of interact vanaf je account op een anderen server.",
"sign_in_notice_title": "Je bekijkt {0} publieke data",
"sign_out_account": "Sign out {0}",
"tip_no_account": "Als je nog geen Mastodon account hebt, {0}.",
"tip_register_account": "kies jou server en registreer een account"
},
"visibility": {
"direct": "Direct",
"direct_desc": "Zichtbaar voor alleen vermelden gebruikers",
"private": "Alleen volgers",
"private_desc": "Alleen zichtbaar voor volgers",
"public": "Publiek",
"public_desc": "Zichtbaar voor iedereen",
"unlisted": "Niet vermeld",
"unlisted_desc": "Zichtbaar voor iedereen, maar kan niet gevonden worden via discovery functies"
}
}

339
locales/uk-UA.ftl Normal file
View file

@ -0,0 +1,339 @@
a11y_loading_page = Завантаження сторінки, будь ласка, зачекайте
a11y_loading_titled_page = Завантаження сторінки {$title}, будь ласка, зачекайте
a11y_locale_changed = Мову змінено на {$lang}
a11y_locale_changing = Зміна мови, будь ласка, зачекайте
a11y_route_loaded = Сторінка {$title} завантажена
account_avatar_description = Аватар {$username}
account_blocked_by = Ви заблоковані цим користувачем.
account_blocked_domains = Заблоковані домени
account_blocked_users = Заблоковані користувачі
account_blocking = Заблоковані
account_bot = БОТ
account_favourites = Улюблені
account_follow = Підписатися
account_follow_back = Підписатися
account_follow_requested = Запити
account_followers = Підписники
account_followers_count = { $count ->
[one] {$formattedCount} підписник
[few] {$formattedCount} підписника
*[many] {$formattedCount} підписників
}
account_following = Підписаний
account_following_count = { $count ->
[one] {$formattedCount} підписка
[few] {$formattedCount} підписки
*[many] {$formattedCount} підписок
}
account_follows_you = Підписаний на вас
account_go_to_profile = Перейти до профілю
account_joined = Зареєстровано
account_moved_title = вказав, що його новий обліковий запис тепер:
account_muted_users = Приховані користувачі
account_muting = Приховано
account_mutuals = Взаємно
account_pinned = Закріплені дописи
account_posts = Дописи
account_posts_count = { $count ->
[one] {$formattedCount} допис
[few] {$formattedCount} дописи
*[many] {$formattedCount} дописів
}
account_profile_description = Заголовок профілю {$username}
account_profile_unavailable = Профіль недоступний
account_unblock = Розблокувати
account_unfollow = Відписатися
account_unmute = Приховати
action_apply = Застосувати
action_bookmark = Додати в закладки
action_bookmarked = Додано з закладки
action_boost = Поширити
action_boost_count = {0}
action_boosted = Поширено
action_clear_upload_failed = Очистити помилки завантаження
action_close = Закрити
action_compose = Написати
action_confirm = Підтвердити
action_edit = Редагувати
action_enter_app = Перейти до додатку
action_favourite = Вподобати
action_favourite_count = {0}
action_favourited = Подобається
action_more = Більше
action_next = Наступний
action_prev = Попередній
action_publish = Опублікувати
action_reply = Відповісти
action_reply_count = {0}
action_reset = Скинути
action_save = Зберегти
action_save_changes = Зберегти зміни
action_sign_in = Увійти
action_switch_account = Змінити обліковий запис
action_vote = Голосувати
app_desc_short = Спритний веб-клієнт для Mastodon
app_logo = Elk лого
app_name = Elk
attachment_edit_title = Опис
attachment_remove_label = Видалити вкладення
command_activate = Активувати
command_complete = Вибрати
command_compose_desc = Написати новий допис
command_n-people-in-the-past-n-days = {$count} користувачів за останні {$days} днів
command_select_lang = Змінити мову
command_sign_in_desc = Додати існуючий обліковий запис
command_switch_account = Змінити обліковий запис на {$username}
command_switch_account_desc = Змінити активний обліковий запис
command_toggle_dark_mode = Перемкнути темний режим
command_toggle_zen_mode = Перемкнути режим Zen
common_confirm_dialog_cancel = Відмінити
common_confirm_dialog_confirm = Так
common_confirm_dialog_title = Ви впевнені?
common_end_of_list = Кінець списку
common_error = ПОМИЛКА
common_in = в
common_not_found = 404 Не знайдено
common_offline_desc = Схоже, ви відключені від мережі. Будь ласка, перевірте ваше підключення до мережі.
compose_draft_title = Чернетка {0}
compose_drafts = Чернетки ({$count})
conversation_with = з
error_account_not_found = Обліковий запис {$username} не знайдено
error_explore-list-empty = Зараз нічого не в тренді. Перевірте пізніше!
error_file_size_cannot_exceed_n_mb = Розмір файлу не може перевищувати {$size} Мб
error_sign_in_error = Не вдалося підключитися до сервера.
error_status_not_found = Допис не знайдено
error_unsupported_file_format = Непідтримуваний формат файлу
help_desc_highlight = Очікуйте деякі помилки та відсутні функції тут і там.
help_desc_para1 = Дякуємо за ваш інтерес до випробування Elk, нашого універсального клієнта Mastodon, який ще у розробці!
help_desc_para2 = Ми наполегливо працюємо над розробкою та вдосконалюємо його. Ми відкриємо вихідний код, коли він буде готовий для загального використання.
help_desc_para3 = Щоб допомогти прискорити розробку, ви можете спонсорувати членів нашої команди за посиланнями нижче. Сподіваємося, вам сподобається Elk!
help_desc_para4 = До цього, якщо ви хочете допомогти з тестуванням, надіслати відгук або зробити внесок,
help_desc_para5 = зв’яжіться з нами на Mastodon
help_desc_para6 = і долучіться.
help_title = Elk у попередньому перегляді!
language_none = Жодного
language_search = Пошук
menu_block_account = Заблокувати {$username}
menu_block_domain = Заблокувати домен {$domain}
menu_copy_link_to_post = Скопіювати посилання на цей допис
menu_delete = Видалити
menu_delete_and_redraft = Видалити і переписати
menu_delete_confirm_cancel = Скасувати
menu_delete_confirm_confirm = Видалити
menu_delete_confirm_title = Ви впевнені, що хочете видалити цей допис?
menu_direct_message_account = Пряме повідомлення {$username}
menu_edit = Редагувати
menu_mention_account = Згадати {$username}
menu_mute_account = Приховати {$username}
menu_mute_conversation = Ігнорувати цей допис
menu_open_in_original_site = Відкрити на оригінальному сайті
menu_pin_on_profile = Закріпити на профілі
menu_share_post = Поділіться цим дописом
menu_show_untranslated = Показати без перекладу
menu_toggle_theme_dark = Увімкнути темний режим
menu_toggle_theme_light = Увімкнути світлий режим
menu_translate_post = Перекласти допис
menu_unblock_account = Розблокувати {$username}
menu_unblock_domain = Розблокувати домен {$domain}
menu_unmute_account = Не приховувати {$username}
menu_unmute_conversation = Не ігнорувати цей допис
menu_unpin_on_profile = Відкріпити з профілю
nav_back = Назад
nav_blocked_domains = Заблоковані домени
nav_blocked_users = Заблоковані користувачі
nav_bookmarks = Закладки
nav_built_at = Оновлено {0}
nav_conversations = Прямі повідомлення
nav_explore = Огляд
nav_favourites = Вподобане
nav_federated = Глобальна
nav_home = Головна
nav_local = Локальна
nav_muted_users = Приховані користувачі
nav_notifications = Сповіщення
nav_profile = Профіль
nav_search = Пошук
nav_select_feature_flags = Налаштування функцій
nav_select_font_size = Вибрати розмір шрифту
nav_select_language = Вибрати мову
nav_settings = Налаштування
nav_show_intro = Показати інтро
nav_toggle_theme = Змінити тему
nav_zen_mode = Zen-режим
notification_favourited_post = додали ваший допис до вибраного
notification_followed_you = підписались на вас
notification_followed_you_count = {0} людей підписалися на вас|{0} людина підписалися на вас|{0} людини підписалися на вас|{0} людей підписалися на вас
notification_missing_type = ВІДСУТНІЙ notification.type:
notification_reblogged_post = поширили ваш допис
notification_request_to_follow = попросили підписатися на вас
notification_signed_up = зареєструвалися
notification_update_status = оновили свою публікацію
placeholder_content_warning = Напишіть ваше попередження тут
placeholder_default_1 = Що у вас на думці?
placeholder_reply_to_account = Відповісти {0}
placeholder_replying = Відповідь
placeholder_the_thread = нитка
pwa_dismiss = Закрити
pwa_title = Доступна нова версія Elk!
pwa_update = Оновити
pwa_update_available_short = Оновити Elk
search_search_desc = Пошук користувачів та хештеґів
search_search_empty = Не вдалося знайти нічого, що відповідає цим пошуковим термінам
settings_about_label = Про нас
settings_account_settings_description = Відредагуйте налаштування облікового запису використовуєчи інтерфейс Mastodon
settings_account_settings_label = Налаштування облікового запису
settings_feature_flags_github_cards = GitHub картки
settings_feature_flags_title = Експериментальні налаштування
settings_interface_color_mode = Кольорова тема
settings_interface_dark_mode = Темна
settings_interface_default = (за замовчуванням)
settings_interface_font_size = Розмір шрифта
settings_interface_label = Інтерфейс
settings_interface_light_mode = Світла
settings_interface_size_label_lg = Великий
settings_interface_size_label_md = Середній
settings_interface_size_label_sm = Малий
settings_interface_size_label_xl = Дуже великий
settings_interface_size_label_xs = Дуже малий
settings_language_display_language = Мова інтерфейсу
settings_language_label = Мова
settings_notifications_label = Сповіщення
settings_notifications_notifications_label = Налаштування сповіщень
settings_notifications_push_notifications_alerts_favourite = Вподобання
settings_notifications_push_notifications_alerts_follow = Нові підписники
settings_notifications_push_notifications_alerts_mention = Згадки
settings_notifications_push_notifications_alerts_poll = Опитування
settings_notifications_push_notifications_alerts_reblog = Поширення вашого допису
settings_notifications_push_notifications_alerts_title = Які сповіщення отримувати?
settings_notifications_push_notifications_description = Отримуйте сповіщення, навіть якщо ви не використовуєте Elk.
settings_notifications_push_notifications_instructions = Не забудьте зберегти зміни за допомогою кнопки "@:settings.notifications.push_notifications.save_settings{'"'}!
settings_notifications_push_notifications_label = Налаштування push-сповіщень
settings_notifications_push_notifications_policy_all = Від будь-кого
settings_notifications_push_notifications_policy_followed = Людей, за якими я стежу
settings_notifications_push_notifications_policy_follower = Людей, які слідкують за мною
settings_notifications_push_notifications_policy_none = Ні від кого
settings_notifications_push_notifications_policy_title = Від кого отримувати сповіщення?
settings_notifications_push_notifications_save_settings = Зберегти налаштування
settings_notifications_push_notifications_subscription_error_clear_error = Очистити помилку
settings_notifications_push_notifications_subscription_error_permission_denied = У дозволі відмовлено: увімкніть сповіщення у своєму браузері.
settings_notifications_push_notifications_subscription_error_request_error = Під час запиту на підписку сталася помилка. Повторіть спробу, а якщо помилка не зникне, повідомте про проблему в репозиторій Elk.
settings_notifications_push_notifications_subscription_error_title = Не вдалося підписатися на push-сповіщення
settings_notifications_push_notifications_undo_settings = Скасувати зміни
settings_notifications_push_notifications_unsubscribe = Вимкнути push-сповіщення
settings_notifications_push_notifications_unsupported = Ваш браузер не підтримує push-сповіщення.
settings_notifications_push_notifications_warning_enable_close = Закрити
settings_notifications_push_notifications_warning_enable_description = Щоб отримувати сповіщення, коли Elk не відкрито, увімкніть push-сповіщення. Ви можете контролювати, які саме типи сповіщень генерують push-повідомлення, за допомогою кнопки "@:settings.notifications.show_btn{'"'} після ввімкнення.
settings_notifications_push_notifications_warning_enable_desktop = Увімкнути push-повідомлення
settings_notifications_push_notifications_warning_enable_title = Ніколи нічого не пропускайте
settings_notifications_push_notifications_warning_re_auth = Здається, ваш сервер не підтримує push-повідомлення. Спробуйте вийти та увійти знову, якщо це повідомлення все одно з’являється, зверніться до адміністратора свого сервера.
settings_notifications_show_btn = Перейти до налаштувань сповіщень
settings_notifications_settings = Сповіщення
settings_preferences_label = Налаштування
settings_profile_appearance_bio = Про Вас
settings_profile_appearance_description = Редагувати аватар, ім'я, профіль, тощо.
settings_profile_appearance_display_name = Ім'я
settings_profile_appearance_label = Вигляд
settings_profile_appearance_profile_metadata = Метадані профілю
settings_profile_appearance_profile_metadata_desc = У вашому профілі можна відображати до 4 елементів у вигляді таблиці
settings_profile_appearance_title = Редагувати профіль
settings_profile_featured_tags_description = Користувачі можуть фільтрувати ваші загальнодоступні дописи за цими хештеґами.
settings_profile_featured_tags_label = Рекомендовані хештеґи
settings_profile_label = Профіль
settings_select_a_settings = Виберіть налаштування
settings_users_export = Експортувати токени користувачів
settings_users_import = Імпортувати токени користувачів
settings_users_label = Користувачі
state_attachments_exceed_server_limit = Кількість вкладених файлів перевищила ліміт на допис.
state_attachments_limit_error = Перевищено максимальну кількість вкладень
state_edited = (Відредаговано)
state_editing = Редагування
state_loading = Завантаження...
state_upload_failed = Помилка завантаження
state_uploading = Завантаження...
status_edited = Редаговано {$date}
status_filter_hidden_phrase = Відфільтровано
status_filter_removed_phrase = Видалено фільтром
status_filter_show_anyway = Показати все одно
status_img_alt_desc = Опис зображення
status_img_alt_dismiss = Закрити
status_poll_count = {0} голосів|{0} голос|{0} голоси|{0} голосів
status_poll_ends = завершується {0}
status_poll_finished = зевершилось {0}
status_reblogged = {0} поширив
status_replying_to = Відповідає {0}
status_show_full_thread = Показати потік дописів
status_someone = комусь
status_spoiler_show_less = Показувати менше
status_spoiler_show_more = Показати більше
status_try_original_site = Спробуйте оригінальний сайт
status_history_created = створено {0}
status_history_edited = редаговано {$date}
tab_for_you = Для вас
tab_hashtags = Хештеґи
tab_media = Медіа
tab_news = Новини
tab_notifications_all = Усі
tab_notifications_mention = Згадки
tab_posts = Дописи
tab_posts_with_replies = Дописи та відповіді
tag_follow = Стежити
tag_follow_label = Стежити за хештеґом {$tag}
tag_unfollow = Не стежити
tag_unfollow_label = Не стежити за хештеґом {$tag}
time_ago_options_day_future = через {n} днів|через {n} день|через {n} дні|через {n} днів
time_ago_options_day_past = {n} днів томо|{n} день тому|{n} дні тому|{n} днів тому
time_ago_options_hour_future = через {n} годин|через {n} годину|через {n} години|через {n} годин
time_ago_options_hour_past = {n} годин тому|{n} годину тому|{n} години тому|{n} годин тому
time_ago_options_just_now = тільки що
time_ago_options_minute_future = через {n} хвилин|через {n} хвилину|через {n} хвилини|через {n} хвилин
time_ago_options_minute_past = {n} хвилин тому|{n} хвилину тому|{n} хвилини тому|{n} хвилин тому
time_ago_options_month_future = через {n} місяців|через {n} місяць|через {n} місяці|через {n} місяців
time_ago_options_month_past = {n} місяців тому|{n} місяць тому|{n} місяці тому|{n} місяців тому
time_ago_options_second_future = тільки що|через {n} секунду|через {n} секунди|через {n} секунд
time_ago_options_second_past = тільки що|{n} секунду тому|{n} секунди тому|{n} секунд тому
time_ago_options_short_day_future = через {n}дн
time_ago_options_short_day_past = {n}дн
time_ago_options_short_hour_future = через {n}год
time_ago_options_short_hour_past = {$n}год
time_ago_options_short_minute_future = через {n}хв
time_ago_options_short_minute_past = {$n}хв
time_ago_options_short_month_future = через {n}міс
time_ago_options_short_month_past = {n}міс
time_ago_options_short_second_future = через {n}сек
time_ago_options_short_second_past = {n}сек
time_ago_options_short_week_future = через {n}тиж
time_ago_options_short_week_past = {n}тиж
time_ago_options_short_year_future = через {n}р
time_ago_options_short_year_past = {n}р
time_ago_options_week_future = через {n} тижнів|через {n} тиждень|через {n} тижні|через {n} тижнів
time_ago_options_week_past = {n} тижнів тому|{n} тиждень тому|{n} тижні тому|{n} тижнів тому
time_ago_options_year_future = через {n} років|через {n} рік|через {n} роки|через {n} років
time_ago_options_year_past = {n} років тому|{n} рік тому|{n} роки тому|{n} років тому
timeline_show_new_items = Показати {v} нових дописів|Показати {v} новий допис|Показати {v} нових дописи|Показати {v} нових дописів
timeline_view_older_posts = Старіші дописи з інших серверів можуть не відображатися.
title_federated_timeline = Глобальна стрічка
title_local_timeline = Локальна стрічка
tooltip_add_content_warning = Додати попередження про вміст
tooltip_add_media = Додати зображення, відео або аудіо
tooltip_change_content_visibility = Змінити видимість вмісту
tooltip_change_language = Змінити мову
tooltip_emoji = Емоджі
tooltip_explore_links_intro = Ці новини розповідають історії про людей на цих та інших серверах децентралізованої мережі прямо зараз.
tooltip_explore_posts_intro = Ці дописи з цього та інших серверів децентралізованої мережі зараз набирають популярності на цьому сервері.
tooltip_explore_tags_intro = Ці хештеґи зараз набирають популярності серед людей на цьому та інших серверах децентралізованої мережі.
tooltip_toggle_code_block = Блок коду
user_add_existing = Додати аккаунт
user_server_address_label = Адреса серверу Mastodon
user_sign_in_desc = Увійдіть, щоб слідкувати за профілями або хештеґами, додавати до обраного, розповсюджувати і відповідати на дописи, або взаємодіяти з вашого аккаунту на іншому сервері.
user_sign_in_notice_title = Перегляд публічних даних {0}
user_sign_out_account = Вийти з {$username}
user_tip_no_account = Якщо у вас ще немає аккаунту Mastodon, {0}.
user_tip_register_account = оберіть сервер і зареєструйтесь
visibility_direct = Лише згадані користувачі
visibility_direct_desc = Показати лише згаданим користувачам
visibility_private = Тільки для підписників
visibility_private_desc = Показати лише підписникам
visibility_public = Публічно
visibility_public_desc = Видимий для всіх
visibility_unlisted = Прихований
visibility_unlisted_desc = Видимий для всіх, але не через можливості виявлення

View file

@ -1,433 +0,0 @@
{
"a11y": {
"loading_page": "Завантаження сторінки, будь ласка, зачекайте",
"loading_titled_page": "Завантаження сторінки {0}, будь ласка, зачекайте",
"locale_changed": "Мову змінено на {0}",
"locale_changing": "Зміна мови, будь ласка, зачекайте",
"route_loaded": "Сторінка {0} завантажена"
},
"account": {
"avatar_description": "Аватар {0}",
"blocked_by": "Ви заблоковані цим користувачем.",
"blocked_domains": "Заблоковані домени",
"blocked_users": "Заблоковані користувачі",
"blocking": "Заблоковані",
"bot": "БОТ",
"favourites": "Улюблені",
"follow": "Підписатися",
"follow_back": "Підписатися",
"follow_requested": "Запити",
"followers": "Підписники",
"followers_count": "{0} підписників|{0} підписник|{0} підписники|{0} підписників",
"following": "Підписаний",
"following_count": "{0} підписок",
"follows_you": "Підписаний на вас",
"go_to_profile": "Перейти до профілю",
"joined": "Зареєстровано",
"moved_title": "вказав, що його новий обліковий запис тепер:",
"muted_users": "Приховані користувачі",
"muting": "Приховано",
"mutuals": "Взаємно",
"pinned": "Закріплені дописи",
"posts": "Дописи",
"posts_count": "{0} дописів|{0} допис|{0} дописи|{0} дописів",
"profile_description": "Заголовок профілю {0}",
"profile_unavailable": "Профіль недоступний",
"unblock": "Розблокувати",
"unfollow": "Відписатися",
"unmute": "Приховати"
},
"action": {
"apply": "Застосувати",
"bookmark": "Додати в закладки",
"bookmarked": "Додано з закладки",
"boost": "Поширити",
"boost_count": "{0}",
"boosted": "Поширено",
"clear_upload_failed": "Очистити помилки завантаження",
"close": "Закрити",
"compose": "Написати",
"confirm": "Підтвердити",
"edit": "Редагувати",
"enter_app": "Перейти до додатку",
"favourite": "Вподобати",
"favourite_count": "{0}",
"favourited": "Подобається",
"more": "Більше",
"next": "Наступний",
"prev": "Попередній",
"publish": "Опублікувати",
"reply": "Відповісти",
"reply_count": "{0}",
"reset": "Скинути",
"save": "Зберегти",
"save_changes": "Зберегти зміни",
"sign_in": "Увійти",
"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": {
"confirm_dialog": {
"cancel": "Відмінити",
"confirm": "Так",
"title": "Ви впевнені?"
},
"end_of_list": "Кінець списку",
"error": "ПОМИЛКА",
"in": "в",
"not_found": "404 Не знайдено",
"offline_desc": "Схоже, ви відключені від мережі. Будь ласка, перевірте ваше підключення до мережі."
},
"compose": {
"draft_title": "Чернетка {0}",
"drafts": "Чернетки ({v})"
},
"conversation": {
"with": "з"
},
"error": {
"account_not_found": "Обліковий запис {0} не знайдено",
"explore-list-empty": "Зараз нічого не в тренді. Перевірте пізніше!",
"file_size_cannot_exceed_n_mb": "Розмір файлу не може перевищувати {0} Мб",
"sign_in_error": "Не вдалося підключитися до сервера.",
"status_not_found": "Допис не знайдено",
"unsupported_file_format": "Непідтримуваний формат файлу"
},
"help": {
"desc_highlight": "Очікуйте деякі помилки та відсутні функції тут і там.",
"desc_para1": "Дякуємо за ваш інтерес до випробування Elk, нашого універсального клієнта Mastodon, який ще у розробці!",
"desc_para2": "Ми наполегливо працюємо над розробкою та вдосконалюємо його. Ми відкриємо вихідний код, коли він буде готовий для загального використання.",
"desc_para3": "Щоб допомогти прискорити розробку, ви можете спонсорувати членів нашої команди за посиланнями нижче. Сподіваємося, вам сподобається Elk!",
"desc_para4": "До цього, якщо ви хочете допомогти з тестуванням, надіслати відгук або зробити внесок,",
"desc_para5": "зв’яжіться з нами на Mastodon",
"desc_para6": "і долучіться.",
"title": "Elk у попередньому перегляді!"
},
"language": {
"none": "Жодного",
"search": "Пошук"
},
"menu": {
"block_account": "Заблокувати {0}",
"block_domain": "Заблокувати домен {0}",
"copy_link_to_post": "Скопіювати посилання на цей допис",
"delete": "Видалити",
"delete_and_redraft": "Видалити і переписати",
"delete_confirm": {
"cancel": "Скасувати",
"confirm": "Видалити",
"title": "Ви впевнені, що хочете видалити цей допис?"
},
"direct_message_account": "Пряме повідомлення {0}",
"edit": "Редагувати",
"mention_account": "Згадати {0}",
"mute_account": "Приховати {0}",
"mute_conversation": "Ігнорувати цей допис",
"open_in_original_site": "Відкрити на оригінальному сайті",
"pin_on_profile": "Закріпити на профілі",
"share_post": "Поділіться цим дописом",
"show_untranslated": "Показати без перекладу",
"toggle_theme": {
"dark": "Увімкнути темний режим",
"light": "Увімкнути світлий режим"
},
"translate_post": "Перекласти допис",
"unblock_account": "Розблокувати {0}",
"unblock_domain": "Розблокувати домен {0}",
"unmute_account": "Не приховувати {0}",
"unmute_conversation": "Не ігнорувати цей допис",
"unpin_on_profile": "Відкріпити з профілю"
},
"nav": {
"back": "Назад",
"blocked_domains": "Заблоковані домени",
"blocked_users": "Заблоковані користувачі",
"bookmarks": "Закладки",
"built_at": "Оновлено {0}",
"conversations": "Прямі повідомлення",
"explore": "Огляд",
"favourites": "Вподобане",
"federated": "Глобальна",
"home": "Головна",
"local": "Локальна",
"muted_users": "Приховані користувачі",
"notifications": "Сповіщення",
"profile": "Профіль",
"search": "Пошук",
"select_feature_flags": "Налаштування функцій",
"select_font_size": "Вибрати розмір шрифту",
"select_language": "Вибрати мову",
"settings": "Налаштування",
"show_intro": "Показати інтро",
"toggle_theme": "Змінити тему",
"zen_mode": "Zen-режим"
},
"notification": {
"favourited_post": "додали ваший допис до вибраного",
"followed_you": "підписались на вас",
"followed_you_count": "{0} людей підписалися на вас|{0} людина підписалися на вас|{0} людини підписалися на вас|{0} людей підписалися на вас",
"missing_type": "ВІДСУТНІЙ notification.type:",
"reblogged_post": "поширили ваш допис",
"request_to_follow": "попросили підписатися на вас",
"signed_up": "зареєструвалися",
"update_status": "оновили свою публікацію"
},
"placeholder": {
"content_warning": "Напишіть ваше попередження тут",
"default_1": "Що у вас на думці?",
"reply_to_account": "Відповісти {0}",
"replying": "Відповідь",
"the_thread": "нитка"
},
"pwa": {
"dismiss": "Закрити",
"title": "Доступна нова версія Elk!",
"update": "Оновити",
"update_available_short": "Оновити Elk"
},
"search": {
"search_desc": "Пошук користувачів та хештеґів",
"search_empty": "Не вдалося знайти нічого, що відповідає цим пошуковим термінам"
},
"settings": {
"about": {
"label": "Про нас"
},
"account_settings": {
"description": "Відредагуйте налаштування облікового запису використовуєчи інтерфейс Mastodon",
"label": "Налаштування облікового запису"
},
"feature_flags": {
"github_cards": "GitHub картки",
"title": "Експериментальні налаштування"
},
"interface": {
"color_mode": "Кольорова тема",
"dark_mode": "Темна",
"default": " (за замовчуванням)",
"font_size": "Розмір шрифта",
"label": "Інтерфейс",
"light_mode": "Світла",
"size_label": {
"lg": "Великий",
"md": "Середній",
"sm": "Малий",
"xl": "Дуже великий",
"xs": "Дуже малий"
}
},
"language": {
"display_language": "Мова інтерфейсу",
"label": "Мова"
},
"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": "Очистити помилку",
"permission_denied": "У дозволі відмовлено: увімкніть сповіщення у своєму браузері.",
"request_error": "Під час запиту на підписку сталася помилка. Повторіть спробу, а якщо помилка не зникне, повідомте про проблему в репозиторій Elk.",
"title": "Не вдалося підписатися на push-сповіщення"
},
"undo_settings": "Скасувати зміни",
"unsubscribe": "Вимкнути push-сповіщення",
"unsupported": "Ваш браузер не підтримує push-сповіщення.",
"warning": {
"enable_close": "Закрити",
"enable_description": "Щоб отримувати сповіщення, коли Elk не відкрито, увімкніть push-сповіщення. Ви можете контролювати, які саме типи сповіщень генерують push-повідомлення, за допомогою кнопки \"@:settings.notifications.show_btn{'\"'} після ввімкнення.",
"enable_desktop": "Увімкнути push-повідомлення",
"enable_title": "Ніколи нічого не пропускайте",
"re_auth": "Здається, ваш сервер не підтримує push-повідомлення. Спробуйте вийти та увійти знову, якщо це повідомлення все одно з’являється, зверніться до адміністратора свого сервера."
}
},
"show_btn": "Перейти до налаштувань сповіщень"
},
"notifications_settings": "Сповіщення",
"preferences": {
"label": "Налаштування"
},
"profile": {
"appearance": {
"bio": "Про Вас",
"description": "Редагувати аватар, ім'я, профіль, тощо.",
"display_name": "Ім'я",
"label": "Вигляд",
"profile_metadata": "Метадані профілю",
"profile_metadata_desc": "У вашому профілі можна відображати до 4 елементів у вигляді таблиці",
"title": "Редагувати профіль"
},
"featured_tags": {
"description": "Користувачі можуть фільтрувати ваші загальнодоступні дописи за цими хештеґами.",
"label": "Рекомендовані хештеґи"
},
"label": "Профіль"
},
"select_a_settings": "Виберіть налаштування",
"users": {
"export": "Експортувати токени користувачів",
"import": "Імпортувати токени користувачів",
"label": "Користувачі"
}
},
"state": {
"attachments_exceed_server_limit": "Кількість вкладених файлів перевищила ліміт на допис.",
"attachments_limit_error": "Перевищено максимальну кількість вкладень",
"edited": "(Відредаговано)",
"editing": "Редагування",
"loading": "Завантаження...",
"upload_failed": "Помилка завантаження",
"uploading": "Завантаження..."
},
"status": {
"edited": "Редаговано {0}",
"filter_hidden_phrase": "Відфільтровано",
"filter_removed_phrase": "Видалено фільтром",
"filter_show_anyway": "Показати все одно",
"img_alt": {
"desc": "Опис зображення",
"dismiss": "Закрити"
},
"poll": {
"count": "{0} голосів|{0} голос|{0} голоси|{0} голосів",
"ends": "завершується {0}",
"finished": "зевершилось {0}"
},
"reblogged": "{0} поширив",
"replying_to": "Відповідає {0}",
"show_full_thread": "Показати потік дописів",
"someone": "комусь",
"spoiler_show_less": "Показувати менше",
"spoiler_show_more": "Показати більше",
"try_original_site": "Спробуйте оригінальний сайт"
},
"status_history": {
"created": "створено {0}",
"edited": "редаговано {0}"
},
"tab": {
"for_you": "Для вас",
"hashtags": "Хештеґи",
"media": "Медіа",
"news": "Новини",
"notifications_all": "Усі",
"notifications_mention": "Згадки",
"posts": "Дописи",
"posts_with_replies": "Дописи та відповіді"
},
"tag": {
"follow": "Стежити",
"follow_label": "Стежити за хештеґом {0}",
"unfollow": "Не стежити",
"unfollow_label": "Не стежити за хештеґом {0}"
},
"time_ago_options": {
"day_future": "через {n} днів|через {n} день|через {n} дні|через {n} днів",
"day_past": "{n} днів томо|{n} день тому|{n} дні тому|{n} днів тому",
"hour_future": "через {n} годин|через {n} годину|через {n} години|через {n} годин",
"hour_past": "{n} годин тому|{n} годину тому|{n} години тому|{n} годин тому",
"just_now": "тільки що",
"minute_future": "через {n} хвилин|через {n} хвилину|через {n} хвилини|через {n} хвилин",
"minute_past": "{n} хвилин тому|{n} хвилину тому|{n} хвилини тому|{n} хвилин тому",
"month_future": "через {n} місяців|через {n} місяць|через {n} місяці|через {n} місяців",
"month_past": "{n} місяців тому|{n} місяць тому|{n} місяці тому|{n} місяців тому",
"second_future": "тільки що|через {n} секунду|через {n} секунди|через {n} секунд",
"second_past": "тільки що|{n} секунду тому|{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": "через {n} тижнів|через {n} тиждень|через {n} тижні|через {n} тижнів",
"week_past": "{n} тижнів тому|{n} тиждень тому|{n} тижні тому|{n} тижнів тому",
"year_future": "через {n} років|через {n} рік|через {n} роки|через {n} років",
"year_past": "{n} років тому|{n} рік тому|{n} роки тому|{n} років тому"
},
"timeline": {
"show_new_items": "Показати {v} нових дописів|Показати {v} новий допис|Показати {v} нових дописи|Показати {v} нових дописів",
"view_older_posts": "Старіші дописи з інших серверів можуть не відображатися."
},
"title": {
"federated_timeline": "Глобальна стрічка",
"local_timeline": "Локальна стрічка"
},
"tooltip": {
"add_content_warning": "Додати попередження про вміст",
"add_media": "Додати зображення, відео або аудіо",
"change_content_visibility": "Змінити видимість вмісту",
"change_language": "Змінити мову",
"emoji": "Емоджі",
"explore_links_intro": "Ці новини розповідають історії про людей на цих та інших серверах децентралізованої мережі прямо зараз.",
"explore_posts_intro": "Ці дописи з цього та інших серверів децентралізованої мережі зараз набирають популярності на цьому сервері.",
"explore_tags_intro": "Ці хештеґи зараз набирають популярності серед людей на цьому та інших серверах децентралізованої мережі.",
"toggle_code_block": "Блок коду"
},
"user": {
"add_existing": "Додати аккаунт",
"server_address_label": "Адреса серверу Mastodon",
"sign_in_desc": "Увійдіть, щоб слідкувати за профілями або хештеґами, додавати до обраного, розповсюджувати і відповідати на дописи, або взаємодіяти з вашого аккаунту на іншому сервері.",
"sign_in_notice_title": "Перегляд публічних даних {0}",
"sign_out_account": "Вийти з {0}",
"tip_no_account": "Якщо у вас ще немає аккаунту Mastodon, {0}.",
"tip_register_account": "оберіть сервер і зареєструйтесь"
},
"visibility": {
"direct": "Лише згадані користувачі",
"direct_desc": "Показати лише згаданим користувачам",
"private": "Тільки для підписників",
"private_desc": "Показати лише підписникам",
"public": "Публічно",
"public_desc": "Видимий для всіх",
"unlisted": "Прихований",
"unlisted_desc": "Видимий для всіх, але не через можливості виявлення"
}
}

315
locales/zh-CN.ftl Normal file
View file

@ -0,0 +1,315 @@
a11y_loading_page = 加载页面中,请稍后
a11y_loading_titled_page = 加载{$title}页面中,请稍后
a11y_locale_changed = 语言已更改为{$lang}
a11y_locale_changing = 更改语言中,请稍后
a11y_route_loaded = 页面{$title}已加载
account_avatar_description = {$username} 的头像
account_blocked_by = 您已被此用户拉黑
account_blocked_domains = 已拉黑的域名
account_blocked_users = 已拉黑的用户
account_blocking = 已拉黑
account_bot = 机器人
account_favourites = 喜欢的帖文
account_follow = 关注
account_follow_back = 回关
account_follow_requested = 已申请关注
account_followers = 关注者
account_followers_count = 被 {$formattedCount} 人关注
account_following = 正在关注
account_following_count = 正在关注 {$formattedCount} 人
account_follows_you = 已关注你
account_go_to_profile = 转到个人资料
account_joined = 已加入
account_moved_title = 的新账号是:
account_muted_users = 已屏蔽的用户
account_muting = 已屏蔽
account_mutuals = 互相关注
account_pinned = 置顶的帖文
account_posts = 帖文
account_posts_count = {$formattedCount} 条帖文
account_profile_description = {$username} 的个人资料头图
account_profile_unavailable = 个人资料不可见
account_unblock = 取消拉黑
account_unfollow = 取消关注
account_unmute = 取消屏蔽
action_apply = 应用
action_bookmark = 收藏
action_bookmarked = 已收藏
action_boost = 转发
action_boosted = 已转发
action_clear_upload_failed = 清除上传失败
action_close = 关闭
action_compose = 撰写
action_confirm = 确认
action_edit = 编辑
action_enter_app = 进入应用
action_favourite = 喜欢
action_favourited = 已喜欢
action_more = 更多
action_next = 下一个
action_prev = 上一个
action_publish = 发布
action_reply = 回复
action_save = 保存
action_save_changes = 保存更改
action_sign_in = 登鹿
action_switch_account = 切换帐号
action_vote = 投票
app_desc_short = 用 🧡 制作的 Mastodon 客户端
app_logo = 应用图标
app_name = 鹿鸣
attachment_edit_title = 描述
attachment_remove_label = 移除附件
command_activate = 执行
command_complete = 完成
command_compose_desc = 写一条新帖文
command_n-people-in-the-past-n-days = {$count} 人在过去 {$days} 天
command_select_lang = 选择语言
command_sign_in_desc = 添加现有帐户
command_switch_account = 切换到 {$username}
command_switch_account_desc = 切换到另一个帐户
command_toggle_dark_mode = 切换深色模式
command_toggle_zen_mode = 切换禅模式
common_end_of_list = 列表到底啦
common_error = 错误
common_in = 在
common_not_found = 无法找到相关内容
common_offline_desc = 您目前已离线,请检查网络连接。
conversation_with = 与
error_account_not_found = 未找到用户 {$username}
error_explore-list-empty = 目前没有热门话题,稍后再来看看吧!
error_file_size_cannot_exceed_n_mb = 文件大小不能超过 {$size}MB
error_sign_in_error = 无法连接服务器
error_status_not_found = 未找到帖文
error_unsupported_file_format = 不支持的文件格式
help_desc_highlight = 可能会在某些地方出现一些 bug 或缺失的功能。
help_desc_para1 = 感谢你有兴趣尝试鹿鸣,一个我们正在积极开发的通用 Mastodon 客户端。
help_desc_para2 = 我们正在努力开发中,并随着时间的推移不断完善。鹿鸣将很快开源,并邀请您参与进来!
help_desc_para3 = 为了帮助促进开发,你可以通过以下链接赞助我们的团队成员。希望你喜欢鹿鸣!
help_desc_para4 = 在此之前,如果你愿意帮助测试、提供反馈或作出贡献,
help_desc_para5 = 在 Mastodon 上联系我们
help_desc_para6 = 来参与其中。
help_title = 预览鹿鸣!
menu_block_account = 拉黑 {$username}
menu_block_domain = 拉黑域名 {$domain}
menu_copy_link_to_post = 复制这篇帖文的链接
menu_delete = 删除
menu_delete_and_redraft = 删除并重新编辑
menu_direct_message_account = 私信 {$username}
menu_edit = 编辑
menu_mention_account = 提及 {$username}
menu_mute_account = 屏蔽 {$username}
menu_mute_conversation = 静音帖子
menu_open_in_original_site = 从源站打开
menu_pin_on_profile = 置顶在个人资料上
menu_show_untranslated = 显示原文
menu_toggle_theme_dark = 切换深色模式
menu_toggle_theme_light = 切换亮色模式
menu_translate_post = 翻译帖文
menu_unblock_account = 解除拉黑 {$username}
menu_unblock_domain = 解除拉黑域名 {$domain}
menu_unmute_account = 解除屏蔽 {$username}
menu_unmute_conversation = 取消静音帖子
menu_unpin_on_profile = 取消置顶
nav_blocked_domains = 已拉黑的域名
nav_blocked_users = 已拉黑的用户
nav_bookmarks = 书签
nav_built_at = 于 {0}构建
nav_conversations = 私信
nav_explore = 探索
nav_favourites = 喜欢
nav_federated = 跨站
nav_home = 主页
nav_local = 本地
nav_muted_users = 已屏蔽的用户
nav_notifications = 通知
nav_profile = 个人资料
nav_search = 搜索
nav_select_feature_flags = 功能开关
nav_select_font_size = 字体大小
nav_select_language = 选择语言
nav_settings = 设置
nav_show_intro = 应用介绍
nav_toggle_theme = 切换主题
nav_zen_mode = 禅模式
notification_favourited_post = 点赞了你的帖文
notification_followed_you = 关注了你
notification_followed_you_count = {n} 人关注了你
notification_missing_type = 未知的通知类型:
notification_reblogged_post = 转发了你的帖文
notification_request_to_follow = 请求关注你
notification_signed_up = 注册了
notification_update_status = 更新了他们的状态
placeholder_content_warning = 写下你的警告
placeholder_default_1 = 在想些什么?
placeholder_reply_to_account = 回复 {0}
placeholder_replying = 回复
placeholder_the_thread = 这个帖文
pwa_dismiss = 忽略
pwa_title = 鹿鸣存在新的更新
pwa_update = 更新
pwa_update_available_short = 更新鹿鸣
pwa_webmanifest_canary_description = 用 🧡 制作的 Mastodon 客户端Canary
pwa_webmanifest_canary_name = 鹿鸣Canary
pwa_webmanifest_canary_short_name = 鹿鸣Canary
pwa_webmanifest_dev_description = 用 🧡 制作的 Mastodon 客户端(开发版)
pwa_webmanifest_dev_name = 鹿鸣 开发版
pwa_webmanifest_dev_short_name = 鹿鸣 开发版
pwa_webmanifest_preview_description = 用 🧡 制作的 Mastodon 客户端(预览版)
pwa_webmanifest_preview_name = 鹿鸣(预览版)
pwa_webmanifest_preview_short_name = 鹿鸣(预览版)
pwa_webmanifest_release_description = 用 🧡 制作的 Mastodon 客户端
pwa_webmanifest_release_name = 鹿鸣
pwa_webmanifest_release_short_name = 鹿鸣
search_search_desc = 搜索用户或话题标签
search_search_empty = 无法找到符合这些搜索词的任何内容
settings_about_label = 关于
settings_account_settings_label = 账号设置
settings_feature_flags_github_cards = GitHub 卡片
settings_feature_flags_title = 实验功能
settings_feature_flags_user_picker = 用户选择器
settings_feature_flags_virtual_scroll = 虚拟滚动
settings_interface_color_mode = 颜色
settings_interface_dark_mode = 暗色模式
settings_interface_default = (默认)
settings_interface_font_size = 字号
settings_interface_label = 外观
settings_interface_light_mode = 亮色模式
settings_interface_size_label_lg = 大
settings_interface_size_label_md = 中
settings_interface_size_label_sm = 小
settings_interface_size_label_xl = 特大
settings_interface_size_label_xs = 特小
settings_language_display_language = 首选语言
settings_language_label = 语言
settings_notification_settings = 通知设置
settings_notifications_label = 通知
settings_notifications_notifications_label = Notifications
settings_notifications_notifications_notifications_label = Notifications settings
settings_notifications_push_notifications_alerts_favourite = 喜欢的
settings_notifications_push_notifications_alerts_follow = 新的关注者
settings_notifications_push_notifications_alerts_mention = 提及
settings_notifications_push_notifications_alerts_poll = 投票
settings_notifications_push_notifications_alerts_reblog = 转发了你的帖文
settings_notifications_push_notifications_alerts_title = 接收了什么通知?
settings_notifications_push_notifications_description = Receive notifications even when you are not using Elk.
settings_notifications_push_notifications_instructions = Don't forget to save your changes using @:settings.notifications.push_notifications.save_settings button!
settings_notifications_push_notifications_label = Push notifications settings
settings_notifications_push_notifications_policy_all = 任何人
settings_notifications_push_notifications_policy_followed = 我关注的人
settings_notifications_push_notifications_policy_follower = 关注我的人
settings_notifications_push_notifications_policy_none = 无人
settings_notifications_push_notifications_policy_title = 我可以从谁那里接收通知?
settings_notifications_push_notifications_save_settings = 保存设置改动
settings_notifications_push_notifications_undo_settings = 撤销设置改动
settings_notifications_push_notifications_unsubscribe = 禁用桌面通知
settings_notifications_push_notifications_unsupported = 你的浏览器不支持桌面通知
settings_notifications_push_notifications_warning_enable_close = 关闭
settings_notifications_push_notifications_warning_enable_description = 若想在鹿鸣没有打开时接收通知,请启用桌面通知功能。一旦启动,你可以通过上面的“打开设置”按钮来 精确控制哪种类型的互动可以产生桌面通知。
settings_notifications_push_notifications_warning_enable_description_settings = To receive notifications when Elk is not open, enable push notifications. You will be able to control precisely what types of interactions generate push notifications on this same screen once you enable them.
settings_notifications_push_notifications_warning_enable_desktop = 启用桌面通知功能
settings_notifications_push_notifications_warning_enable_title = 不错过任何事
settings_notifications_push_notifications_warning_re_auth = 您的服务器似乎不支持推送通知。尝试退出用户并重新登录。如果此消息仍然出现,请联系您服务器的管理员。
settings_notifications_show_btn = Go to notifications settings
settings_preferences_label = 首选项
settings_profile_appearance_bio = 简介
settings_profile_appearance_description = 编辑个人资料,例如头像、用户名、个人简介等。
settings_profile_appearance_display_name = 昵称
settings_profile_appearance_label = 个人资料
settings_profile_appearance_title = 编辑个人资料
settings_profile_featured_tags_description = 人们可以在这些标签下浏览你的公共嘟文。
settings_profile_featured_tags_label = 精选话题标签
settings_profile_label = 个人资料
settings_select_a_settings = 在左侧选择一个设置
settings_users_export = 导出用户令牌
settings_users_import = 导入用户令牌
settings_users_label = 当前用户
state_edited = (已编辑)
state_editing = 编辑中
state_loading = 加载中...
state_upload_failed = 上传失败
state_uploading = 上传中...
status_edited = 在 {$date} 编辑了
status_filter_hidden_phrase = 筛选依据
status_filter_removed_phrase = 从筛选中移除
status_filter_show_anyway = 仍然展示
status_img_alt_desc = 描述
status_img_alt_dismiss = 关闭
status_poll_count = {0} 次投票
status_poll_ends = 将在 {0} 结束
status_poll_finished = 已在 {0} 结束
status_reblogged = {0} 转发了
status_replying_to = 回复{0}
status_show_full_thread = 显示完整贴文串
status_someone = 某人
status_spoiler_show_less = 隐藏
status_spoiler_show_more = 显示更多
status_thread = 帖文串
status_try_original_site = 尝试从源站打开
status_history_created = 在 {0} 发布了
status_history_edited = 在 {$date} 编辑了
tab_for_you = 推荐关注
tab_hashtags = 话题标签
tab_media = 媒体
tab_news = 最新消息
tab_notifications_all = 全部
tab_notifications_mention = 提及
tab_posts = 帖文
tab_posts_with_replies = 帖文与留言
time_ago_options_day_future = 现在|明天|{n} 天后
time_ago_options_day_past = 现在|昨天|{n} 天前
time_ago_options_hour_future = 现在|1 小时后|{n} 小时后
time_ago_options_hour_past = 现在|1 小时前|{n} 小时前
time_ago_options_just_now = 刚刚
time_ago_options_minute_future = 现在|1 分钟后|{n} 分钟后
time_ago_options_minute_past = 现在|1 分钟前|{n} 分钟前
time_ago_options_month_future = 现在|下个月|{n} 个月后
time_ago_options_month_past = 现在|上个月|{n} 个月前
time_ago_options_second_future = 刚刚|{n} 秒后|{n} 秒后
time_ago_options_second_past = 刚刚|{n} 秒前|{n} 秒前
time_ago_options_short_day_future = {n} 天
time_ago_options_short_day_past = {n} 天
time_ago_options_short_hour_future = {n} 小时
time_ago_options_short_hour_past = {$n} 小时
time_ago_options_short_minute_future = {n} 分
time_ago_options_short_minute_past = {$n} 分
time_ago_options_short_month_future = {n} 月
time_ago_options_short_month_past = {n} 月
time_ago_options_short_second_future = {n} 秒
time_ago_options_short_second_past = {n} 秒
time_ago_options_short_week_future = {n} 周
time_ago_options_short_week_past = {n} 周
time_ago_options_short_year_future = {n} 年
time_ago_options_short_year_past = {n} 年
time_ago_options_week_future = 现在|下周|{n} 周后
time_ago_options_week_past = 现在|上周|{n} 周前
time_ago_options_year_future = 现在|明年|{n} 年后
time_ago_options_year_past = 现在|去年|{n} 年前
timeline_show_new_items = 展示 {v} 条新帖文
timeline_view_older_posts = 其他站点上更老的帖文可能不会在这里显示。
title_federated_timeline = 跨站时间线
title_local_timeline = 本地时间线
tooltip_add_content_warning = 添加内容警告标识
tooltip_add_media = 添加图片、视频或者音频文件
tooltip_change_content_visibility = 修改内容是否可见
tooltip_change_language = 更改语言
tooltip_emoji = 表情符号
tooltip_explore_links_intro = 这些新闻故事正被本站和分布式网络上其他站点的用户谈论。
tooltip_explore_posts_intro = 来自本站和分布式网络上其他站点的这些嘟文正在本站引起关注。
tooltip_explore_tags_intro = 这些标签正在本站和分布式网络上其他站点的用户中引起关注。
tooltip_toggle_code_block = 切换代码块
user_add_existing = 添加现有帐户
user_server_address_label = Mastodon 服务器地址
user_sign_in_desc = 登录后可关注其他人或标签、点赞、分享和回复帖文,或与不同服务器上的账号交互。
user_sign_in_notice_title = 正在查看 {0} 的公共数据
user_sign_out_account = 登出 {$username}
user_tip_no_account = 如果您还没有 Mastodon 账户,{0}。
user_tip_register_account = 选择您的服务器并注册一个
visibility_direct = 私信
visibility_direct_desc = 仅对提及的用户可见
visibility_private = 仅限关注者
visibility_private_desc = 仅关注者可见
visibility_public = 公开
visibility_public_desc = 所有人可见
visibility_unlisted = 不列出
visibility_unlisted_desc = 对所有人可见,但不出现在公共时间线上

View file

@ -1,421 +0,0 @@
{
"a11y": {
"loading_page": "加载页面中,请稍后",
"loading_titled_page": "加载{0}页面中,请稍后",
"locale_changed": "语言已更改为{0}",
"locale_changing": "更改语言中,请稍后",
"route_loaded": "页面{0}已加载"
},
"account": {
"avatar_description": "{0} 的头像",
"blocked_by": "您已被此用户拉黑",
"blocked_domains": "已拉黑的域名",
"blocked_users": "已拉黑的用户",
"blocking": "已拉黑",
"bot": "机器人",
"favourites": "喜欢的帖文",
"follow": "关注",
"follow_back": "回关",
"follow_requested": "已申请关注",
"followers": "关注者",
"followers_count": "被 {0} 人关注",
"following": "正在关注",
"following_count": "正在关注 {0} 人",
"follows_you": "已关注你",
"go_to_profile": "转到个人资料",
"joined": "已加入",
"moved_title": "的新账号是:",
"muted_users": "已屏蔽的用户",
"muting": "已屏蔽",
"mutuals": "互相关注",
"pinned": "置顶的帖文",
"posts": "帖文",
"posts_count": "{0} 条帖文",
"profile_description": "{0} 的个人资料头图",
"profile_unavailable": "个人资料不可见",
"unblock": "取消拉黑",
"unfollow": "取消关注",
"unmute": "取消屏蔽"
},
"action": {
"apply": "应用",
"bookmark": "收藏",
"bookmarked": "已收藏",
"boost": "转发",
"boosted": "已转发",
"clear_upload_failed": "清除上传失败",
"close": "关闭",
"compose": "撰写",
"confirm": "确认",
"edit": "编辑",
"enter_app": "进入应用",
"favourite": "喜欢",
"favourited": "已喜欢",
"more": "更多",
"next": "下一个",
"prev": "上一个",
"publish": "发布",
"reply": "回复",
"save": "保存",
"save_changes": "保存更改",
"sign_in": "登鹿",
"switch_account": "切换帐号",
"vote": "投票"
},
"app_desc_short": "用 🧡 制作的 Mastodon 客户端",
"app_logo": "应用图标",
"app_name": "鹿鸣",
"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": "切换禅模式"
},
"common": {
"end_of_list": "列表到底啦",
"error": "错误",
"in": "在",
"not_found": "无法找到相关内容",
"offline_desc": "您目前已离线,请检查网络连接。"
},
"conversation": {
"with": "与"
},
"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": {
"desc_highlight": "可能会在某些地方出现一些 bug 或缺失的功能。",
"desc_para1": "感谢你有兴趣尝试鹿鸣,一个我们正在积极开发的通用 Mastodon 客户端。",
"desc_para2": "我们正在努力开发中,并随着时间的推移不断完善。鹿鸣将很快开源,并邀请您参与进来!",
"desc_para3": "为了帮助促进开发,你可以通过以下链接赞助我们的团队成员。希望你喜欢鹿鸣!",
"desc_para4": "在此之前,如果你愿意帮助测试、提供反馈或作出贡献,",
"desc_para5": "在 Mastodon 上联系我们",
"desc_para6": "来参与其中。",
"title": "预览鹿鸣!"
},
"menu": {
"block_account": "拉黑 {0}",
"block_domain": "拉黑域名 {0}",
"copy_link_to_post": "复制这篇帖文的链接",
"delete": "删除",
"delete_and_redraft": "删除并重新编辑",
"direct_message_account": "私信 {0}",
"edit": "编辑",
"mention_account": "提及 {0}",
"mute_account": "屏蔽 {0}",
"mute_conversation": "静音帖子",
"open_in_original_site": "从源站打开",
"pin_on_profile": "置顶在个人资料上",
"show_untranslated": "显示原文",
"toggle_theme": {
"dark": "切换深色模式",
"light": "切换亮色模式"
},
"translate_post": "翻译帖文",
"unblock_account": "解除拉黑 {0}",
"unblock_domain": "解除拉黑域名 {0}",
"unmute_account": "解除屏蔽 {0}",
"unmute_conversation": "取消静音帖子",
"unpin_on_profile": "取消置顶"
},
"nav": {
"blocked_domains": "已拉黑的域名",
"blocked_users": "已拉黑的用户",
"bookmarks": "书签",
"built_at": "于 {0}构建",
"conversations": "私信",
"explore": "探索",
"favourites": "喜欢",
"federated": "跨站",
"home": "主页",
"local": "本地",
"muted_users": "已屏蔽的用户",
"notifications": "通知",
"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": "{n} 人关注了你",
"missing_type": "未知的通知类型:",
"reblogged_post": "转发了你的帖文",
"request_to_follow": "请求关注你",
"signed_up": "注册了",
"update_status": "更新了他们的状态"
},
"placeholder": {
"content_warning": "写下你的警告",
"default_1": "在想些什么?",
"reply_to_account": "回复 {0}",
"replying": "回复",
"the_thread": "这个帖文"
},
"pwa": {
"dismiss": "忽略",
"title": "鹿鸣存在新的更新",
"update": "更新",
"update_available_short": "更新鹿鸣",
"webmanifest": {
"canary": {
"description": "用 🧡 制作的 Mastodon 客户端Canary",
"name": "鹿鸣Canary",
"short_name": "鹿鸣Canary"
},
"dev": {
"description": "用 🧡 制作的 Mastodon 客户端(开发版)",
"name": "鹿鸣 开发版",
"short_name": "鹿鸣 开发版"
},
"preview": {
"description": "用 🧡 制作的 Mastodon 客户端(预览版)",
"name": "鹿鸣(预览版)",
"short_name": "鹿鸣(预览版)"
},
"release": {
"description": "用 🧡 制作的 Mastodon 客户端",
"name": "鹿鸣",
"short_name": "鹿鸣"
}
}
},
"search": {
"search_desc": "搜索用户或话题标签",
"search_empty": "无法找到符合这些搜索词的任何内容"
},
"settings": {
"about": {
"label": "关于"
},
"account_settings": {
"label": "账号设置"
},
"feature_flags": {
"github_cards": "GitHub 卡片",
"title": "实验功能",
"user_picker": "用户选择器",
"virtual_scroll": "虚拟滚动"
},
"interface": {
"color_mode": "颜色",
"dark_mode": "暗色模式",
"default": "(默认)",
"font_size": "字号",
"label": "外观",
"light_mode": "亮色模式",
"size_label": {
"lg": "大",
"md": "中",
"sm": "小",
"xl": "特大",
"xs": "特小"
}
},
"language": {
"display_language": "首选语言",
"label": "语言"
},
"notification_settings": "通知设置",
"notifications": {
"label": "通知",
"notifications": {
"label": "Notifications",
"notifications": {
"label": "Notifications settings"
}
},
"push_notifications": {
"alerts": {
"favourite": "喜欢的",
"follow": "新的关注者",
"mention": "提及",
"poll": "投票",
"reblog": "转发了你的帖文",
"title": "接收了什么通知?"
},
"description": "Receive notifications even when you are not using Elk.",
"instructions": "Don't forget to save your changes using @:settings.notifications.push_notifications.save_settings button!",
"label": "Push notifications settings",
"policy": {
"all": "任何人",
"followed": "我关注的人",
"follower": "关注我的人",
"none": "无人",
"title": "我可以从谁那里接收通知?"
},
"save_settings": "保存设置改动",
"undo_settings": "撤销设置改动",
"unsubscribe": "禁用桌面通知",
"unsupported": "你的浏览器不支持桌面通知",
"warning": {
"enable_close": "关闭",
"enable_description": "若想在鹿鸣没有打开时接收通知,请启用桌面通知功能。一旦启动,你可以通过上面的“打开设置”按钮来 精确控制哪种类型的互动可以产生桌面通知。",
"enable_description_settings": "To receive notifications when Elk is not open, enable push notifications. You will be able to control precisely what types of interactions generate push notifications on this same screen once you enable them.",
"enable_desktop": "启用桌面通知功能",
"enable_title": "不错过任何事",
"re_auth": "您的服务器似乎不支持推送通知。尝试退出用户并重新登录。如果此消息仍然出现,请联系您服务器的管理员。"
}
},
"show_btn": "Go to notifications settings"
},
"preferences": {
"label": "首选项"
},
"profile": {
"appearance": {
"bio": "简介",
"description": "编辑个人资料,例如头像、用户名、个人简介等。",
"display_name": "昵称",
"label": "个人资料",
"title": "编辑个人资料"
},
"featured_tags": {
"description": "人们可以在这些标签下浏览你的公共嘟文。",
"label": "精选话题标签"
},
"label": "个人资料"
},
"select_a_settings": "在左侧选择一个设置",
"users": {
"export": "导出用户令牌",
"import": "导入用户令牌",
"label": "当前用户"
}
},
"state": {
"edited": "(已编辑)",
"editing": "编辑中",
"loading": "加载中...",
"upload_failed": "上传失败",
"uploading": "上传中..."
},
"status": {
"edited": "在 {0} 编辑了",
"filter_hidden_phrase": "筛选依据",
"filter_removed_phrase": "从筛选中移除",
"filter_show_anyway": "仍然展示",
"img_alt": {
"desc": "描述",
"dismiss": "关闭"
},
"poll": {
"count": "{0} 次投票",
"ends": "将在 {0} 结束",
"finished": "已在 {0} 结束"
},
"reblogged": "{0} 转发了",
"replying_to": "回复{0}",
"show_full_thread": "显示完整贴文串",
"someone": "某人",
"spoiler_show_less": "隐藏",
"spoiler_show_more": "显示更多",
"thread": "帖文串",
"try_original_site": "尝试从源站打开"
},
"status_history": {
"created": "在 {0} 发布了",
"edited": "在 {0} 编辑了"
},
"tab": {
"for_you": "推荐关注",
"hashtags": "话题标签",
"media": "媒体",
"news": "最新消息",
"notifications_all": "全部",
"notifications_mention": "提及",
"posts": "帖文",
"posts_with_replies": "帖文与留言"
},
"time_ago_options": {
"day_future": "现在|明天|{n} 天后",
"day_past": "现在|昨天|{n} 天前",
"hour_future": "现在|1 小时后|{n} 小时后",
"hour_past": "现在|1 小时前|{n} 小时前",
"just_now": "刚刚",
"minute_future": "现在|1 分钟后|{n} 分钟后",
"minute_past": "现在|1 分钟前|{n} 分钟前",
"month_future": "现在|下个月|{n} 个月后",
"month_past": "现在|上个月|{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": "现在|下周|{n} 周后",
"week_past": "现在|上周|{n} 周前",
"year_future": "现在|明年|{n} 年后",
"year_past": "现在|去年|{n} 年前"
},
"timeline": {
"show_new_items": "展示 {v} 条新帖文",
"view_older_posts": "其他站点上更老的帖文可能不会在这里显示。"
},
"title": {
"federated_timeline": "跨站时间线",
"local_timeline": "本地时间线"
},
"tooltip": {
"add_content_warning": "添加内容警告标识",
"add_media": "添加图片、视频或者音频文件",
"change_content_visibility": "修改内容是否可见",
"change_language": "更改语言",
"emoji": "表情符号",
"explore_links_intro": "这些新闻故事正被本站和分布式网络上其他站点的用户谈论。",
"explore_posts_intro": "来自本站和分布式网络上其他站点的这些嘟文正在本站引起关注。",
"explore_tags_intro": "这些标签正在本站和分布式网络上其他站点的用户中引起关注。",
"toggle_code_block": "切换代码块"
},
"user": {
"add_existing": "添加现有帐户",
"server_address_label": "Mastodon 服务器地址",
"sign_in_desc": "登录后可关注其他人或标签、点赞、分享和回复帖文,或与不同服务器上的账号交互。",
"sign_in_notice_title": "正在查看 {0} 的公共数据",
"sign_out_account": "登出 {0}",
"tip_no_account": "如果您还没有 Mastodon 账户,{0}。",
"tip_register_account": "选择您的服务器并注册一个"
},
"visibility": {
"direct": "私信",
"direct_desc": "仅对提及的用户可见",
"private": "仅限关注者",
"private_desc": "仅关注者可见",
"public": "公开",
"public_desc": "所有人可见",
"unlisted": "不列出",
"unlisted_desc": "对所有人可见,但不出现在公共时间线上"
}
}

290
locales/zh-TW.ftl Normal file
View file

@ -0,0 +1,290 @@
a11y_loading_page = 加載頁面中,請稍後
a11y_loading_titled_page = 加載{$title}頁面中,請稍後
a11y_locale_changed = 語言已更改為{$lang}
a11y_locale_changing = 更改語言中,請稍後
a11y_route_loaded = 頁面{$title}已加載
account_avatar_description = {$username} 的頭像
account_blocked_by = 您已被此用戶拉黑
account_blocked_domains = 已拉黑的域名
account_blocked_users = 已拉黑的用戶
account_blocking = 已拉黑
account_bot = 機器人
account_favourites = 喜歡的帖文
account_follow = 關注
account_follow_back = 回關
account_follow_requested = 已申請關注
account_followers = 關注者
account_followers_count = 被 {$formattedCount} 人關注
account_following = 正在關注
account_following_count = 正在關注 {$formattedCount} 人
account_follows_you = 已關注你
account_go_to_profile = 轉到個人資料
account_joined = 已加入
account_moved_title = 的新賬號是:
account_muted_users = 已屏蔽的用戶
account_muting = 已屏蔽
account_mutuals = 互相關注
account_pinned = 置頂的帖文
account_posts = 帖文
account_posts_count = {$formattedCount} 條帖文
account_profile_description = {$username} 的個人資料頭圖
account_profile_unavailable = 個人資料不可見
account_unblock = 取消拉黑
account_unfollow = 取消關注
account_unmute = 取消屏蔽
action_apply = 應用
action_bookmark = 收藏
action_bookmarked = 已收藏
action_boost = 轉發
action_boosted = 已轉發
action_clear_upload_failed = 清除上傳失敗
action_close = 關閉
action_compose = 撰寫
action_confirm = 確認
action_edit = 編輯
action_enter_app = 進入應用
action_favourite = 喜歡
action_favourited = 已喜歡
action_more = 更多
action_next = 下一個
action_prev = 上一個
action_publish = 發布
action_reply = 回复
action_save = 保存
action_save_changes = 保存更改
action_sign_in = 登鹿
action_switch_account = 切換帳號
action_vote = 投票
app_desc_short = 用 🧡 製作的 Mastodon 客戶端
app_logo = 應用圖標
app_name = 鹿鳴
attachment_edit_title = 描述
attachment_remove_label = 移除附件
command_activate = 執行
command_complete = 完成
command_compose_desc = 寫一條新帖文
command_n-people-in-the-past-n-days = {$count} 人在過去 {$days} 天
command_select_lang = 選擇語言
command_sign_in_desc = 添加現有帳戶
command_switch_account = 切換到 {$username}
command_switch_account_desc = 切換到另一個帳戶
command_toggle_dark_mode = 切換深色模式
command_toggle_zen_mode = 切換禪模式
common_end_of_list = 列表到底啦
common_error = 錯誤
common_in = 在
common_not_found = 無法找到相關內容
common_offline_desc = 您目前已離線,請檢查網絡連接。
conversation_with = 與
error_account_not_found = 未找到用戶 {$username}
error_explore-list-empty = 目前沒有熱門話題,稍後再來看看吧!
error_file_size_cannot_exceed_n_mb = 文件大小不能超過 {$size}MB
error_sign_in_error = 無法連接服務器
error_status_not_found = 未找到帖文
error_unsupported_file_format = 不支持的文件格式
help_desc_highlight = 可能會在某些地方出現一些 bug 或缺失的功能。
help_desc_para1 = 感謝你有興趣嘗試鹿鳴,一個我們正在積極開發的通用 Mastodon 客戶端。
help_desc_para2 = 我們正在努力開發中,並隨著時間的推移不斷完善。鹿鳴將很快開源,並邀請您參與進來!
help_desc_para3 = 為了幫助促進開發,你可以通過以下鏈接贊助我們的團隊成員。希望你喜歡 Elk
help_desc_para4 = 在此之前,如果你願意幫助測試、提供反饋或作出貢獻,
help_desc_para5 = 在 Mastodon 上聯繫我們
help_desc_para6 = 來參與其中。
help_title = 預覽鹿鳴!
menu_block_account = 拉黑 {$username}
menu_block_domain = 拉黑域名 {$domain}
menu_copy_link_to_post = 複製這篇帖文的鏈接
menu_delete = 刪除
menu_delete_and_redraft = 刪除並重新編輯
menu_direct_message_account = 私信 {$username}
menu_edit = 編輯
menu_mention_account = 提及 {$username}
menu_mute_account = 屏蔽 {$username}
menu_mute_conversation = 靜音帖子
menu_open_in_original_site = 從源站打開
menu_pin_on_profile = 置頂在個人資料上
menu_show_untranslated = 顯示原文
menu_toggle_theme_dark = 切換深色模式
menu_toggle_theme_light = 切換亮色模式
menu_translate_post = 翻譯帖文
menu_unblock_account = 解除拉黑 {$username}
menu_unblock_domain = 解除拉黑域名 {$domain}
menu_unmute_account = 解除屏蔽 {$username}
menu_unmute_conversation = 取消靜音帖子
menu_unpin_on_profile = 取消置頂
nav_bookmarks = 書籤
nav_built_at = 於 {0}構建
nav_conversations = 私信
nav_explore = 探索
nav_favourites = 喜歡
nav_federated = 跨站
nav_home = 主頁
nav_local = 本地
nav_notifications = 通知
nav_profile = 個人資料
nav_search = 搜索
nav_select_feature_flags = 功能開關
nav_select_font_size = 字體大小
nav_select_language = 選擇語言
nav_settings = 設置
nav_show_intro = 應用介紹
nav_toggle_theme = 切換主題
nav_zen_mode = 禪模式
notification_favourited_post = 點讚了你的帖文
notification_followed_you = 關注了你
notification_followed_you_count = {n} 人關注了你
notification_missing_type = 未知的通知類型:
notification_reblogged_post = 轉發了你的帖文
notification_request_to_follow = 請求關注你
notification_signed_up = 註冊了
notification_update_status = 更新了他們的狀態
placeholder_content_warning = 寫下你的警告
placeholder_default_1 = 在想些什麼?
placeholder_reply_to_account = 回复 {0}
placeholder_replying = 回复
placeholder_the_thread = 這個帖文
pwa_dismiss = 忽略
pwa_title = 鹿鳴存在新的更新
pwa_update = 更新
pwa_update_available_short = 更新鹿鳴
search_search_desc = 搜索用戶或話題標籤
search_search_empty = 無法找到符合搜尋條件之結果
settings_about_label = 關於
settings_feature_flags_github_cards = GitHub 卡片
settings_feature_flags_title = 實驗功能
settings_feature_flags_user_picker = 用戶選擇器
settings_feature_flags_virtual_scroll = 虛擬滾動
settings_interface_color_mode = 顏色
settings_interface_dark_mode = 暗色模式
settings_interface_default = (默認)
settings_interface_font_size = 字號
settings_interface_label = 外觀
settings_interface_light_mode = 亮色模式
settings_language_display_language = 首選語言
settings_language_label = 語言
settings_notifications_label = Notifications
settings_notifications_notifications_label = Notifications settings
settings_notifications_push_notifications_alerts_favourite = 喜歡的
settings_notifications_push_notifications_alerts_follow = 新的關注者
settings_notifications_push_notifications_alerts_mention = 提及
settings_notifications_push_notifications_alerts_poll = 投票
settings_notifications_push_notifications_alerts_reblog = 轉發了你的帖文
settings_notifications_push_notifications_alerts_title = 接收了什麼通知?
settings_notifications_push_notifications_description = Receive notifications even when you are not using Elk.
settings_notifications_push_notifications_instructions = Don't forget to save your changes using @:settings.notifications.push_notifications.save_settings button!
settings_notifications_push_notifications_label = Push notifications settings
settings_notifications_push_notifications_policy_all = 任何人
settings_notifications_push_notifications_policy_followed = 我關注的人
settings_notifications_push_notifications_policy_follower = 關注我的人
settings_notifications_push_notifications_policy_none = 無人
settings_notifications_push_notifications_policy_title = 我可以從誰那裡接收通知?
settings_notifications_push_notifications_save_settings = 保存設置改動
settings_notifications_push_notifications_undo_settings = 撤銷設置改動
settings_notifications_push_notifications_unsubscribe = 禁用桌面通知
settings_notifications_push_notifications_unsupported = 你的瀏覽器不支持桌面通知
settings_notifications_push_notifications_warning_enable_close = 關閉
settings_notifications_push_notifications_warning_enable_description = 若想在鹿鳴沒有打開時接收通知,請啟用桌面通知功能。一旦啟動,你可以通過上面的“打開設置”按鈕來 精確控制哪種類型的互動可以產生桌面通知。
settings_notifications_push_notifications_warning_enable_description_settings = To receive notifications when Elk is not open, enable push notifications. You will be able to control precisely what types of interactions generate push notifications on this same screen once you enable them.
settings_notifications_push_notifications_warning_enable_desktop = 啟用桌面通知功能
settings_notifications_push_notifications_warning_enable_title = 不錯過任何事
settings_notifications_push_notifications_warning_re_auth = 您的服務器似乎不支持推送通知。嘗試退出用戶並重新登錄。如果此消息仍然出現,請聯繫您服務器的管理員。
settings_notifications_show_btn = Go to notifications settings
settings_notifications_settings = Notifications
settings_preferences_label = 首選項
settings_profile_appearance_bio = 簡介
settings_profile_appearance_description = 編輯個人資料,例如頭像、用戶名、個人簡介等。
settings_profile_appearance_display_name = 暱稱
settings_profile_appearance_label = 個人資料
settings_profile_appearance_title = 編輯個人資料
settings_profile_featured_tags_description = 人們可以在這些標籤下瀏覽你的公共嘟文。
settings_profile_featured_tags_label = 精選的話題標籤
settings_profile_label = 個人資料
settings_select_a_settings = 在左側選擇一個設置
settings_users_export = 導出用戶令牌
settings_users_import = 導入用戶令牌
settings_users_label = 當前用戶
state_edited = (已編輯)
state_editing = 編輯中
state_loading = 加載中...
state_upload_failed = 上傳失敗
state_uploading = 上傳中...
status_edited = 在 {$date} 編輯了
status_filter_hidden_phrase = 篩選依據
status_filter_removed_phrase = 從篩選中移除
status_filter_show_anyway = 仍然展示
status_img_alt_desc = 描述
status_img_alt_dismiss = 關閉
status_poll_count = {0} 次投票
status_poll_ends = 將在 {0} 結束
status_poll_finished = 已在 {0} 結束
status_reblogged = {0} 轉發了
status_someone = 某人
status_spoiler_show_less = 隱藏
status_spoiler_show_more = 顯示更多
status_thread = 帖文串
status_try_original_site = 嘗試從源站打開
status_history_created = 在 {0} 發布了
status_history_edited = 在 {$date} 編輯了
tab_for_you = 推薦關注
tab_hashtags = 話題標籤
tab_media = 媒體
tab_news = 最新消息
tab_notifications_all = 全部
tab_notifications_mention = 提及
tab_posts = 帖文
tab_posts_with_replies = 帖文與留言
time_ago_options_day_future = 現在|明天|{n} 天后
time_ago_options_day_past = 現在|昨天|{n} 天前
time_ago_options_hour_future = 現在|1 小時後|{n} 小時後
time_ago_options_hour_past = 現在|1 小時前|{n} 小時前
time_ago_options_just_now = 剛剛
time_ago_options_minute_future = 現在|1 分鐘後|{n} 分鐘後
time_ago_options_minute_past = 現在|1 分鐘前|{n} 分鐘前
time_ago_options_month_future = 現在|下個月|{n} 個月後
time_ago_options_month_past = 現在|上個月|{n} 個月前
time_ago_options_second_future = 剛剛|{n} 秒後|{n} 秒後
time_ago_options_second_past = 剛剛|{n} 秒前|{n} 秒前
time_ago_options_short_day_future = {n} 天
time_ago_options_short_day_past = {n} 天
time_ago_options_short_hour_future = {n} 小時
time_ago_options_short_hour_past = {$n} 小時
time_ago_options_short_minute_future = {n} 分
time_ago_options_short_minute_past = {$n} 分
time_ago_options_short_month_future = {n} 月
time_ago_options_short_month_past = {n} 月
time_ago_options_short_second_future = {n} 秒
time_ago_options_short_second_past = {n} 秒
time_ago_options_short_week_future = {n} 週
time_ago_options_short_week_past = {n} 週
time_ago_options_short_year_future = {n} 年
time_ago_options_short_year_past = {n} 年
time_ago_options_week_future = 現在|下週|{n} 週後
time_ago_options_week_past = 現在|上週|{n} 週前
time_ago_options_year_future = 現在|明年|{n} 年後
time_ago_options_year_past = 現在|去年|{n} 年前
timeline_show_new_items = 展示 {v} 條新帖文
title_federated_timeline = 跨站時間線
title_local_timeline = 本地時間線
tooltip_add_content_warning = 添加內容警告標識
tooltip_add_media = 添加圖片、視頻或者音頻文件
tooltip_change_content_visibility = 修改內容是否可見
tooltip_change_language = 改變語言
tooltip_emoji = 表情符號
tooltip_explore_links_intro = 這些新聞故事正被本站和分佈式網絡上其他站點的用戶談論。
tooltip_explore_posts_intro = 來自本站和分佈式網絡上其他站點的這些嘟文正在本站引起關注。
tooltip_explore_tags_intro = 這些標籤正在本站和分佈式網絡上其他站點的用戶中引起關注。
tooltip_toggle_code_block = 切換代碼塊
user_add_existing = 添加現有帳戶
user_server_address_label = Mastodon 服務器地址
user_sign_in_desc = 登錄後可關注其他人或標籤、點贊、分享和回复帖文,或與不同服務器上的賬號交互。
user_sign_in_notice_title = 正在查看 {0} 的公共數據
user_sign_out_account = 登出 {$username}
user_tip_no_account = 如果您還沒有 Mastodon 賬戶,{0}。
user_tip_register_account = 選擇您的服務器並註冊一個
visibility_direct = 私信
visibility_direct_desc = 僅對提及的用戶可見
visibility_private = 僅限關注者
visibility_private_desc = 僅關注者可見
visibility_public = 公開
visibility_public_desc = 所有人可見
visibility_unlisted = 不列出
visibility_unlisted_desc = 對所有人可見,但不出現在公共時間線上

View file

@ -1,380 +0,0 @@
{
"a11y": {
"loading_page": "加載頁面中,請稍後",
"loading_titled_page": "加載{0}頁面中,請稍後",
"locale_changed": "語言已更改為{0}",
"locale_changing": "更改語言中,請稍後",
"route_loaded": "頁面{0}已加載"
},
"account": {
"avatar_description": "{0} 的頭像",
"blocked_by": "您已被此用戶拉黑",
"blocked_domains": "已拉黑的域名",
"blocked_users": "已拉黑的用戶",
"blocking": "已拉黑",
"bot": "機器人",
"favourites": "喜歡的帖文",
"follow": "關注",
"follow_back": "回關",
"follow_requested": "已申請關注",
"followers": "關注者",
"followers_count": "被 {0} 人關注",
"following": "正在關注",
"following_count": "正在關注 {0} 人",
"follows_you": "已關注你",
"go_to_profile": "轉到個人資料",
"joined": "已加入",
"moved_title": "的新賬號是:",
"muted_users": "已屏蔽的用戶",
"muting": "已屏蔽",
"mutuals": "互相關注",
"pinned": "置頂的帖文",
"posts": "帖文",
"posts_count": "{0} 條帖文",
"profile_description": "{0} 的個人資料頭圖",
"profile_unavailable": "個人資料不可見",
"unblock": "取消拉黑",
"unfollow": "取消關注",
"unmute": "取消屏蔽"
},
"action": {
"apply": "應用",
"bookmark": "收藏",
"bookmarked": "已收藏",
"boost": "轉發",
"boosted": "已轉發",
"clear_upload_failed": "清除上傳失敗",
"close": "關閉",
"compose": "撰寫",
"confirm": "確認",
"edit": "編輯",
"enter_app": "進入應用",
"favourite": "喜歡",
"favourited": "已喜歡",
"more": "更多",
"next": "下一個",
"prev": "上一個",
"publish": "發布",
"reply": "回复",
"save": "保存",
"save_changes": "保存更改",
"sign_in": "登鹿",
"switch_account": "切換帳號",
"vote": "投票"
},
"app_desc_short": "用 🧡 製作的 Mastodon 客戶端",
"app_logo": "應用圖標",
"app_name": "鹿鳴",
"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": "切換禪模式"
},
"common": {
"end_of_list": "列表到底啦",
"error": "錯誤",
"in": "在",
"not_found": "無法找到相關內容",
"offline_desc": "您目前已離線,請檢查網絡連接。"
},
"conversation": {
"with": "與"
},
"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": {
"desc_highlight": "可能會在某些地方出現一些 bug 或缺失的功能。",
"desc_para1": "感謝你有興趣嘗試鹿鳴,一個我們正在積極開發的通用 Mastodon 客戶端。",
"desc_para2": "我們正在努力開發中,並隨著時間的推移不斷完善。鹿鳴將很快開源,並邀請您參與進來!",
"desc_para3": "為了幫助促進開發,你可以通過以下鏈接贊助我們的團隊成員。希望你喜歡 Elk",
"desc_para4": "在此之前,如果你願意幫助測試、提供反饋或作出貢獻,",
"desc_para5": "在 Mastodon 上聯繫我們",
"desc_para6": "來參與其中。",
"title": "預覽鹿鳴!"
},
"menu": {
"block_account": "拉黑 {0}",
"block_domain": "拉黑域名 {0}",
"copy_link_to_post": "複製這篇帖文的鏈接",
"delete": "刪除",
"delete_and_redraft": "刪除並重新編輯",
"direct_message_account": "私信 {0}",
"edit": "編輯",
"mention_account": "提及 {0}",
"mute_account": "屏蔽 {0}",
"mute_conversation": "靜音帖子",
"open_in_original_site": "從源站打開",
"pin_on_profile": "置頂在個人資料上",
"show_untranslated": "顯示原文",
"toggle_theme": {
"dark": "切換深色模式",
"light": "切換亮色模式"
},
"translate_post": "翻譯帖文",
"unblock_account": "解除拉黑 {0}",
"unblock_domain": "解除拉黑域名 {0}",
"unmute_account": "解除屏蔽 {0}",
"unmute_conversation": "取消靜音帖子",
"unpin_on_profile": "取消置頂"
},
"nav": {
"bookmarks": "書籤",
"built_at": "於 {0}構建",
"conversations": "私信",
"explore": "探索",
"favourites": "喜歡",
"federated": "跨站",
"home": "主頁",
"local": "本地",
"notifications": "通知",
"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": "{n} 人關注了你",
"missing_type": "未知的通知類型:",
"reblogged_post": "轉發了你的帖文",
"request_to_follow": "請求關注你",
"signed_up": "註冊了",
"update_status": "更新了他們的狀態"
},
"placeholder": {
"content_warning": "寫下你的警告",
"default_1": "在想些什麼?",
"reply_to_account": "回复 {0}",
"replying": "回复",
"the_thread": "這個帖文"
},
"pwa": {
"dismiss": "忽略",
"title": "鹿鳴存在新的更新",
"update": "更新",
"update_available_short": "更新鹿鳴"
},
"search": {
"search_desc": "搜索用戶或話題標籤",
"search_empty": "無法找到符合搜尋條件之結果"
},
"settings": {
"about": {
"label": "關於"
},
"feature_flags": {
"github_cards": "GitHub 卡片",
"title": "實驗功能",
"user_picker": "用戶選擇器",
"virtual_scroll": "虛擬滾動"
},
"interface": {
"color_mode": "顏色",
"dark_mode": "暗色模式",
"default": "(默認)",
"font_size": "字號",
"label": "外觀",
"light_mode": "亮色模式"
},
"language": {
"display_language": "首選語言",
"label": "語言"
},
"notifications": {
"label": "Notifications",
"notifications": {
"label": "Notifications settings"
},
"push_notifications": {
"alerts": {
"favourite": "喜歡的",
"follow": "新的關注者",
"mention": "提及",
"poll": "投票",
"reblog": "轉發了你的帖文",
"title": "接收了什麼通知?"
},
"description": "Receive notifications even when you are not using Elk.",
"instructions": "Don't forget to save your changes using @:settings.notifications.push_notifications.save_settings button!",
"label": "Push notifications settings",
"policy": {
"all": "任何人",
"followed": "我關注的人",
"follower": "關注我的人",
"none": "無人",
"title": "我可以從誰那裡接收通知?"
},
"save_settings": "保存設置改動",
"undo_settings": "撤銷設置改動",
"unsubscribe": "禁用桌面通知",
"unsupported": "你的瀏覽器不支持桌面通知",
"warning": {
"enable_close": "關閉",
"enable_description": "若想在鹿鳴沒有打開時接收通知,請啟用桌面通知功能。一旦啟動,你可以通過上面的“打開設置”按鈕來 精確控制哪種類型的互動可以產生桌面通知。",
"enable_description_settings": "To receive notifications when Elk is not open, enable push notifications. You will be able to control precisely what types of interactions generate push notifications on this same screen once you enable them.",
"enable_desktop": "啟用桌面通知功能",
"enable_title": "不錯過任何事",
"re_auth": "您的服務器似乎不支持推送通知。嘗試退出用戶並重新登錄。如果此消息仍然出現,請聯繫您服務器的管理員。"
}
},
"show_btn": "Go to notifications settings"
},
"notifications_settings": "Notifications",
"preferences": {
"label": "首選項"
},
"profile": {
"appearance": {
"bio": "簡介",
"description": "編輯個人資料,例如頭像、用戶名、個人簡介等。",
"display_name": "暱稱",
"label": "個人資料",
"title": "編輯個人資料"
},
"featured_tags": {
"description": "人們可以在這些標籤下瀏覽你的公共嘟文。",
"label": "精選的話題標籤"
},
"label": "個人資料"
},
"select_a_settings": "在左側選擇一個設置",
"users": {
"export": "導出用戶令牌",
"import": "導入用戶令牌",
"label": "當前用戶"
}
},
"state": {
"edited": "(已編輯)",
"editing": "編輯中",
"loading": "加載中...",
"upload_failed": "上傳失敗",
"uploading": "上傳中..."
},
"status": {
"edited": "在 {0} 編輯了",
"filter_hidden_phrase": "篩選依據",
"filter_removed_phrase": "從篩選中移除",
"filter_show_anyway": "仍然展示",
"img_alt": {
"desc": "描述",
"dismiss": "關閉"
},
"poll": {
"count": "{0} 次投票",
"ends": "將在 {0} 結束",
"finished": "已在 {0} 結束"
},
"reblogged": "{0} 轉發了",
"someone": "某人",
"spoiler_show_less": "隱藏",
"spoiler_show_more": "顯示更多",
"thread": "帖文串",
"try_original_site": "嘗試從源站打開"
},
"status_history": {
"created": "在 {0} 發布了",
"edited": "在 {0} 編輯了"
},
"tab": {
"for_you": "推薦關注",
"hashtags": "話題標籤",
"media": "媒體",
"news": "最新消息",
"notifications_all": "全部",
"notifications_mention": "提及",
"posts": "帖文",
"posts_with_replies": "帖文與留言"
},
"time_ago_options": {
"day_future": "現在|明天|{n} 天后",
"day_past": "現在|昨天|{n} 天前",
"hour_future": "現在|1 小時後|{n} 小時後",
"hour_past": "現在|1 小時前|{n} 小時前",
"just_now": "剛剛",
"minute_future": "現在|1 分鐘後|{n} 分鐘後",
"minute_past": "現在|1 分鐘前|{n} 分鐘前",
"month_future": "現在|下個月|{n} 個月後",
"month_past": "現在|上個月|{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": "現在|下週|{n} 週後",
"week_past": "現在|上週|{n} 週前",
"year_future": "現在|明年|{n} 年後",
"year_past": "現在|去年|{n} 年前"
},
"timeline": {
"show_new_items": "展示 {v} 條新帖文"
},
"title": {
"federated_timeline": "跨站時間線",
"local_timeline": "本地時間線"
},
"tooltip": {
"add_content_warning": "添加內容警告標識",
"add_media": "添加圖片、視頻或者音頻文件",
"change_content_visibility": "修改內容是否可見",
"change_language": "改變語言",
"emoji": "表情符號",
"explore_links_intro": "這些新聞故事正被本站和分佈式網絡上其他站點的用戶談論。",
"explore_posts_intro": "來自本站和分佈式網絡上其他站點的這些嘟文正在本站引起關注。",
"explore_tags_intro": "這些標籤正在本站和分佈式網絡上其他站點的用戶中引起關注。",
"toggle_code_block": "切換代碼塊"
},
"user": {
"add_existing": "添加現有帳戶",
"server_address_label": "Mastodon 服務器地址",
"sign_in_desc": "登錄後可關注其他人或標籤、點贊、分享和回复帖文,或與不同服務器上的賬號交互。",
"sign_in_notice_title": "正在查看 {0} 的公共數據",
"sign_out_account": "登出 {0}",
"tip_no_account": "如果您還沒有 Mastodon 賬戶,{0}。",
"tip_register_account": "選擇您的服務器並註冊一個"
},
"visibility": {
"direct": "私信",
"direct_desc": "僅對提及的用戶可見",
"private": "僅限關注者",
"private_desc": "僅關注者可見",
"public": "公開",
"public_desc": "所有人可見",
"unlisted": "不列出",
"unlisted_desc": "對所有人可見,但不出現在公共時間線上"
}
}

View file

@ -1,31 +1,63 @@
import { FluentBundle, FluentResource } from '@fluent/bundle'
import type { FluentValue } from '@fluent/bundle'
import { readFile } from 'fs-extra' import { readFile } from 'fs-extra'
import { resolve } from 'pathe' import { resolve } from 'pathe'
import type { ManifestOptions } from 'vite-plugin-pwa' import type { ManifestOptions } from 'vite-plugin-pwa'
import { getEnv } from '../../config/env' import { getEnv } from '../../config/env'
import { i18n } from '../../config/i18n' import { defaultLocale, locales } from '../../config/i18n'
import type { LocaleObject } from '#i18n'
export type LocalizedWebManifest = Record<string, Partial<ManifestOptions>> export type LocalizedWebManifest = Record<string, Partial<ManifestOptions>>
export const pwaLocales = i18n.locales as LocaleObject[]
type WebManifestEntry = Pick<ManifestOptions, 'name' | 'short_name' | 'description'> type WebManifestEntry = Pick<ManifestOptions, 'name' | 'short_name' | 'description'>
type RequiredWebManifestEntry = Required<WebManifestEntry & Pick<ManifestOptions, 'dir' | 'lang'>> type RequiredWebManifestEntry = Required<WebManifestEntry & Pick<ManifestOptions, 'dir' | 'lang'>>
async function readBundle(locale: string): Promise<FluentBundle> {
const messages = Buffer.from(
await readFile(resolve(`./locales/${locale}.ftl`), 'utf-8'),
).toString()
const bundle = new FluentBundle(locale)
bundle.addResource(new FluentResource(messages))
return bundle
}
function format(bundle: FluentBundle, key: string, values: Record<string, FluentValue>): string | undefined {
const message = bundle.getMessage(key)
if (!message || !message.value)
return undefined
return bundle.formatPattern(message.value, values)
}
export const pwaLocales = locales
export const createI18n = async (): Promise<LocalizedWebManifest> => { export const createI18n = async (): Promise<LocalizedWebManifest> => {
const { env } = await getEnv() const { env } = await getEnv()
const envName = `${env === 'release' ? '' : `(${env})`}` const envName = `${env === 'release' ? '' : `(${env})`}`
const { pwa } = await readI18nFile('en-US.json') const defaultBundle = await readBundle(defaultLocale)
const defaultManifest: Required<WebManifestEntry> = pwa.webmanifest[env] const defaultManifest: Required<WebManifestEntry> = {
name: format(defaultBundle, 'pwa_webmanifest_name', { env: envName })!,
short_name: format(defaultBundle, 'pwa_webmanifest_short_name', { env: envName })!,
description: format(defaultBundle, 'pwa_webmanifest_name_description', { env: envName })!,
}
const locales: RequiredWebManifestEntry[] = await Promise.all( const locales: RequiredWebManifestEntry[] = await Promise.all(
pwaLocales pwaLocales
.filter(l => l.code !== 'en-US') .filter(l => l.code !== 'en-US')
.map(async ({ code, dir = 'ltr', file }) => { .map(async ({ code, dir = 'ltr' }) => {
// read locale file // read locale file
const { pwa, app_name, app_desc_short } = await readI18nFile(file!) const bundle = await readBundle(code)
const entry: WebManifestEntry = pwa?.webmanifest?.[env] ?? {}
const app_name = format(bundle, 'app_name', { env: envName })
const app_desc_short = format(bundle, 'app_desc_short', { env: envName })
const entry: Partial<WebManifestEntry> = {
name: format(bundle, 'pwa_webmanifest_name', { env: envName }),
short_name: format(bundle, 'pwa_webmanifest_short_name', { env: envName }),
description: format(bundle, 'pwa_webmanifest_name_description', { env: envName }),
}
if (!entry.name && app_name) if (!entry.name && app_name)
entry.name = dir === 'rtl' ? `${envName} ${app_name}` : `${app_name} ${envName}` entry.name = dir === 'rtl' ? `${envName} ${app_name}` : `${app_name} ${envName}`
@ -78,9 +110,3 @@ export const createI18n = async (): Promise<LocalizedWebManifest> => {
return acc return acc
}, {} as LocalizedWebManifest) }, {} as LocalizedWebManifest)
} }
async function readI18nFile(file: string) {
return JSON.parse(Buffer.from(
await readFile(resolve(`./locales/${file}`), 'utf-8'),
).toString())
}

View file

@ -1,7 +1,6 @@
import Inspect from 'vite-plugin-inspect' import Inspect from 'vite-plugin-inspect'
import { isCI, isDevelopment } from 'std-env' import { isCI, isDevelopment } from 'std-env'
import { isPreview } from './config/env' import { isPreview } from './config/env'
import { i18n } from './config/i18n'
import { pwa } from './config/pwa' import { pwa } from './config/pwa'
import type { BuildInfo } from './types' import type { BuildInfo } from './types'
@ -135,7 +134,6 @@ export default defineNuxtConfig({
}, },
}, },
colorMode: { classSuffix: '' }, colorMode: { classSuffix: '' },
i18n,
pwa, pwa,
}) })

View file

@ -6,8 +6,6 @@ definePageMeta({
const params = useRoute().params const params = useRoute().params
const accountName = $(computedEager(() => toShortHandle(params.account as string))) const accountName = $(computedEager(() => toShortHandle(params.account as string)))
const { t } = useI18n()
const { data: account, pending, refresh } = $(await useAsyncData(() => fetchAccountByHandle(accountName).catch(() => null), { watch: [isMastoInitialised], immediate: isMastoInitialised.value })) const { data: account, pending, refresh } = $(await useAsyncData(() => fetchAccountByHandle(accountName).catch(() => null), { watch: [isMastoInitialised], immediate: isMastoInitialised.value }))
const relationship = $computed(() => account ? useRelationship(account).value : undefined) const relationship = $computed(() => account ? useRelationship(account).value : undefined)
@ -21,7 +19,7 @@ onReactivated(() => {
<template> <template>
<MainContent back> <MainContent back>
<template #title> <template #title>
<ContentRich timeline-title-style :content="account ? getDisplayName(account) : t('nav.profile')" /> <ContentRich timeline-title-style :content="account ? getDisplayName(account) : $t('nav_profile')" />
</template> </template>
<template v-if="pending" /> <template v-if="pending" />
@ -31,17 +29,17 @@ onReactivated(() => {
<div v-if="relationship?.blockedBy" h-30 flex="~ col center gap-2"> <div v-if="relationship?.blockedBy" h-30 flex="~ col center gap-2">
<div text-secondary> <div text-secondary>
{{ $t('account.profile_unavailable') }} {{ $t('account_profile_unavailable') }}
</div> </div>
<div text-secondary-light text-sm> <div text-secondary-light text-sm>
{{ $t('account.blocked_by') }} {{ $t('account_blocked_by') }}
</div> </div>
</div> </div>
<NuxtPage v-else /> <NuxtPage v-else />
</template> </template>
<CommonNotFound v-else> <CommonNotFound v-else>
{{ $t('error.account_not_found', [`@${accountName}`]) }} {{ $t('error_account_not_found', { username: `@${accountName}` }) }}
</CommonNotFound> </CommonNotFound>
</MainContent> </MainContent>
</template> </template>

View file

@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
const { t } = useI18n() const { $t } = useFluent()
const params = useRoute().params const params = useRoute().params
const handle = $(computedEager(() => params.account as string)) const handle = $(computedEager(() => params.account as string))
@ -10,7 +10,7 @@ const paginator = account ? useMasto().v1.accounts.listFollowers(account.id, {})
if (account) { if (account) {
useHeadFixed({ useHeadFixed({
title: () => `${t('account.followers')} | ${getDisplayName(account)} (@${account})`, title: () => `${$t('account_followers')} | ${getDisplayName(account)} (@${account})`,
}) })
} }
</script> </script>

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