resolve merge conflicts

This commit is contained in:
Absturztaube 2020-07-26 11:17:14 +02:00
commit 6a77b27a42
60 changed files with 961 additions and 554 deletions

View file

@ -7,6 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Greentext now has separate color slot for it
- Removed the use of with_move parameters when fetching notifications
- Push notifications now are the same as normal notfication, and are localized.
- Updated Notification Settings to match new BE API
### Fixed
- Weird bug related to post being sent seemingly after pasting with keyboard (hopefully)
@ -23,6 +24,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Descriptions can be set on uploaded files before posting
- Added status preview option to preview your statuses before posting
- When a post is a reply to an unavailable post, the 'Reply to'-text has a strike-through style
- Added ability to see all favoriting or repeating users when hovering the number on highlighted statuses
### Changed
- Registration page no longer requires email if the server is configured not to require it
@ -31,6 +33,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Add colons to the emoji alt text, to make them copyable
- Add better visual indication for drag-and-drop for files
- When disabling attachments, the placeholder links now show an icon and the description instead of just IMAGE or VIDEO etc
- Remove unnecessary options for 'automatic loading when loading older' and 'reply previews'
### Fixed
- Custom Emoji will display in poll options now.
@ -48,6 +51,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Videos are not cropped awkwardly in the uploads section anymore
- Reply filtering options in Settings -> Filtering now work again using filtering on server
- Don't show just blank-screen when cookies are disabled
- Add status idempotency to prevent accidental double posting when posting returns an error
## [2.0.3] - 2020-05-02
### Fixed

View file

@ -20,12 +20,20 @@ const parsedInitialResults = () => {
return staticInitialResults
}
const decodeUTF8Base64 = (data) => {
const rawData = atob(data)
const array = Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))
const text = new TextDecoder().decode(array)
return text
}
const preloadFetch = async (request) => {
const data = parsedInitialResults()
if (!data || !data[request]) {
return window.fetch(request)
}
const requestData = JSON.parse(atob(data[request]))
const decoded = decodeUTF8Base64(data[request])
const requestData = JSON.parse(decoded)
return {
ok: true,
json: () => requestData,

View file

@ -37,12 +37,14 @@ const ChatListItem = {
}
},
messageForStatusContent () {
const content = this.chat.lastMessage ? (this.attachmentInfo || this.chat.lastMessage.content) : ''
const message = this.chat.lastMessage
const isYou = message && message.account_id === this.currentUser.id
const content = message ? (this.attachmentInfo || message.content) : ''
const messagePreview = isYou ? `<i>${this.$t('chats.you')}</i> ${content}` : content
return {
summary: '',
statusnet_html: content,
text: content,
statusnet_html: messagePreview,
text: messagePreview,
attachments: []
}
}

View file

@ -10,7 +10,7 @@
@click.stop.prevent="togglePanel"
>
<div class="title">
<span>{{ $t('chat.title') }}</span>
<span>{{ $t('shoutbox.title') }}</span>
<i
v-if="floating"
class="icon-cancel"
@ -64,7 +64,7 @@
>
<div class="title">
<i class="icon-comment-empty" />
{{ $t('chat.title') }}
{{ $t('shoutbox.title') }}
</div>
</div>
</div>

View file

@ -52,7 +52,7 @@ export default {
right: 0;
top: 0;
display: block;
content: '';
content: '';
transition: color 200ms;
width: 1.1em;
height: 1.1em;

View file

@ -1,5 +1,5 @@
import UserAvatar from '../user_avatar/user_avatar.vue'
import Popover from '../popover/popover.vue'
import UserListPopover from '../user_list_popover/user_list_popover.vue'
const EMOJI_REACTION_COUNT_CUTOFF = 12
@ -7,7 +7,7 @@ const EmojiReactions = {
name: 'EmojiReactions',
components: {
UserAvatar,
Popover
UserListPopover
},
props: ['status'],
data: () => ({

View file

@ -1,44 +1,11 @@
<template>
<div class="emoji-reactions">
<Popover
<UserListPopover
v-for="(reaction) in emojiReactions"
:key="reaction.name"
trigger="hover"
placement="top"
:offset="{ y: 5 }"
:users="accountsForEmoji[reaction.name]"
>
<div
slot="content"
class="reacted-users"
>
<div v-if="accountsForEmoji[reaction.name].length">
<div
v-for="(account) in accountsForEmoji[reaction.name]"
:key="account.id"
class="reacted-user"
>
<UserAvatar
:user="account"
class="avatar-small"
:compact="true"
/>
<div class="reacted-user-names">
<!-- eslint-disable vue/no-v-html -->
<span
class="reacted-user-name"
v-html="account.name_html"
/>
<!-- eslint-enable vue/no-v-html -->
<span class="reacted-user-screen-name">{{ account.screen_name }}</span>
</div>
</div>
</div>
<div v-else>
<i class="icon-spin4 animate-spin" />
</div>
</div>
<button
slot="trigger"
class="emoji-reaction btn btn-default"
:class="{ 'picked-reaction': reactedWith(reaction.name), 'not-clickable': !loggedIn }"
@click="emojiOnClick(reaction.name, $event)"
@ -47,7 +14,7 @@
<span class="reaction-emoji">{{ reaction.name }}</span>
<span>{{ reaction.count }}</span>
</button>
</Popover>
</UserListPopover>
<a
v-if="tooManyReactions"
class="emoji-reaction-expand faint"
@ -69,32 +36,6 @@
flex-wrap: wrap;
}
.reacted-users {
padding: 0.5em;
}
.reacted-user {
padding: 0.25em;
display: flex;
flex-direction: row;
.reacted-user-names {
display: flex;
flex-direction: column;
margin-left: 0.5em;
min-width: 5em;
img {
width: 1em;
height: 1em;
}
}
.reacted-user-screen-name {
font-size: 9px;
}
}
.emoji-reaction {
padding: 0 0.5em;
margin-right: 0.5em;

View file

@ -2,6 +2,7 @@ import SideDrawer from '../side_drawer/side_drawer.vue'
import Notifications from '../notifications/notifications.vue'
import { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'
import GestureService from '../../services/gesture_service/gesture_service'
import { mapGetters } from 'vuex'
const MobileNav = {
components: {
@ -33,7 +34,8 @@ const MobileNav = {
sitename () { return this.$store.state.instance.name },
isChat () {
return this.$route.name === 'chat'
}
},
...mapGetters(['unreadChatCount'])
},
methods: {
toggleMobileSidebar () {
@ -67,7 +69,7 @@ const MobileNav = {
this.$refs.notifications.markAsSeen()
},
onScroll ({ target: { scrollTop, clientHeight, scrollHeight } }) {
if (this.$store.getters.mergedConfig.autoLoad && scrollTop + clientHeight >= scrollHeight) {
if (scrollTop + clientHeight >= scrollHeight) {
this.$refs.notifications.fetchOlderNotifications()
}
}

View file

@ -16,6 +16,10 @@
@click.stop.prevent="toggleMobileSidebar()"
>
<i class="button-icon icon-menu" />
<div
v-if="unreadChatCount"
class="alert-dot"
/>
</a>
<router-link
v-if="!hideSitename"

View file

@ -27,6 +27,11 @@ const buildMentionsString = ({ user, attentions = [] }, currentUser) => {
return mentions.length > 0 ? mentions.join(' ') + ' ' : ''
}
// Converts a string with px to a number like '2px' -> 2
const pxStringToNumber = (str) => {
return Number(str.substring(0, str.length - 2))
}
const PostStatusForm = {
props: [
'replyTo',
@ -61,6 +66,7 @@ const PostStatusForm = {
StatusContent
},
mounted () {
this.updateIdempotencyKey()
this.resize(this.$refs.textarea)
if (this.replyTo) {
@ -111,7 +117,8 @@ const PostStatusForm = {
dropStopTimeout: null,
preview: null,
previewLoading: false,
emojiInputShown: false
emojiInputShown: false,
idempotencyKey: ''
}
},
computed: {
@ -206,17 +213,46 @@ const PostStatusForm = {
})
},
watch: {
'newStatus.contentType': function () {
this.autoPreview()
},
'newStatus.spoilerText': function () {
this.autoPreview()
'newStatus': {
deep: true,
handler () {
this.statusChanged()
}
}
},
methods: {
statusChanged () {
this.autoPreview()
this.updateIdempotencyKey()
},
clearStatus () {
const newStatus = this.newStatus
this.newStatus = {
status: '',
spoilerText: '',
files: [],
visibility: newStatus.visibility,
contentType: newStatus.contentType,
poll: {},
mediaDescriptions: {}
}
this.pollFormVisible = false
this.$refs.mediaUpload && this.$refs.mediaUpload.clearFile()
this.clearPollForm()
if (this.preserveFocus) {
this.$nextTick(() => {
this.$refs.textarea.focus()
})
}
let el = this.$el.querySelector('textarea')
el.style.height = 'auto'
el.style.height = undefined
this.error = null
if (this.preview) this.previewStatus()
},
async postStatus (event, newStatus, opts = {}) {
if (this.posting) { return }
if (this.submitDisabled) { return }
if (this.disableSubmit) { return }
if (this.emojiInputShown) { return }
if (this.submitOnEnter) {
event.stopPropagation()
@ -253,36 +289,16 @@ const PostStatusForm = {
store: this.$store,
inReplyToStatusId: this.replyTo,
contentType: newStatus.contentType,
poll
poll,
idempotencyKey: this.idempotencyKey
}
const postHandler = this.postHandler ? this.postHandler : statusPoster.postStatus
postHandler(postingOptions).then((data) => {
if (!data.error) {
this.newStatus = {
status: '',
spoilerText: '',
files: [],
visibility: newStatus.visibility,
contentType: newStatus.contentType,
poll: {},
mediaDescriptions: {}
}
this.pollFormVisible = false
this.$refs.mediaUpload && this.$refs.mediaUpload.clearFile()
this.clearPollForm()
this.clearStatus()
this.$emit('posted', data)
if (this.preserveFocus) {
this.$nextTick(() => {
this.$refs.textarea.focus()
})
}
let el = this.$el.querySelector('textarea')
el.style.height = 'auto'
el.style.height = undefined
this.error = null
if (this.preview) this.previewStatus()
} else {
this.error = data.error
}
@ -401,7 +417,6 @@ const PostStatusForm = {
}
},
onEmojiInputInput (e) {
this.autoPreview()
this.$nextTick(() => {
this.resize(this.$refs['textarea'])
})
@ -425,7 +440,7 @@ const PostStatusForm = {
* scroll is different for `Window` and `Element`s
*/
const bottomBottomPaddingStr = window.getComputedStyle(bottomRef)['padding-bottom']
const bottomBottomPadding = Number(bottomBottomPaddingStr.substring(0, bottomBottomPaddingStr.length - 2))
const bottomBottomPadding = pxStringToNumber(bottomBottomPaddingStr)
const scrollerRef = this.$el.closest('.sidebar-scroller') ||
this.$el.closest('.post-form-modal-view') ||
@ -434,10 +449,12 @@ const PostStatusForm = {
// Getting info about padding we have to account for, removing 'px' part
const topPaddingStr = window.getComputedStyle(target)['padding-top']
const bottomPaddingStr = window.getComputedStyle(target)['padding-bottom']
const topPadding = Number(topPaddingStr.substring(0, topPaddingStr.length - 2))
const bottomPadding = Number(bottomPaddingStr.substring(0, bottomPaddingStr.length - 2))
const topPadding = pxStringToNumber(topPaddingStr)
const bottomPadding = pxStringToNumber(bottomPaddingStr)
const vertPadding = topPadding + bottomPadding
const oldHeight = pxStringToNumber(target.style.height)
/* Explanation:
*
* https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight
@ -466,8 +483,13 @@ const PostStatusForm = {
// BEGIN content size update
target.style.height = 'auto'
const heightWithoutPadding = target.scrollHeight - vertPadding
const newHeight = this.maxHeight ? Math.min(heightWithoutPadding, this.maxHeight) : heightWithoutPadding
const heightWithoutPadding = Math.floor(target.scrollHeight - vertPadding)
let newHeight = this.maxHeight ? Math.min(heightWithoutPadding, this.maxHeight) : heightWithoutPadding
// This is a bit of a hack to combat target.scrollHeight being different on every other input
// on some browsers for whatever reason. Don't change the height if difference is 1px or less.
if (Math.abs(newHeight - oldHeight) <= 1) {
newHeight = oldHeight
}
target.style.height = `${newHeight}px`
this.$emit('resize', newHeight)
// END content size update
@ -532,6 +554,9 @@ const PostStatusForm = {
},
handleEmojiInputShow (value) {
this.emojiInputShown = value
},
updateIdempotencyKey () {
this.idempotencyKey = Date.now().toString()
}
}
}

View file

@ -28,7 +28,10 @@ const ReactButton = {
},
emojis () {
if (this.filterWord !== '') {
return this.$store.state.instance.emoji.filter(emoji => emoji.displayText.includes(this.filterWord))
const filterWordLowercase = this.filterWord.toLowerCase()
return this.$store.state.instance.emoji.filter(emoji =>
emoji.displayText.toLowerCase().includes(filterWordLowercase)
)
}
return this.$store.state.instance.emoji || []
},

View file

@ -53,16 +53,6 @@
</small>
</Checkbox>
</li>
<li>
<Checkbox v-model="autoLoad">
{{ $t('settings.autoload') }}
</Checkbox>
</li>
<li>
<Checkbox v-model="hoverPreview">
{{ $t('settings.reply_link_preview') }}
</Checkbox>
</li>
<li>
<Checkbox v-model="emojiReactionsOnTimeline">
{{ $t('settings.emoji_reactions_on_timeline') }}

View file

@ -2,38 +2,18 @@
<div :label="$t('settings.notifications')">
<div class="setting-item">
<h2>{{ $t('settings.notification_setting_filters') }}</h2>
<div class="select-multiple">
<span class="label">{{ $t('settings.notification_setting') }}</span>
<ul class="option-list">
<li>
<Checkbox v-model="notificationSettings.follows">
{{ $t('settings.notification_setting_follows') }}
</Checkbox>
</li>
<li>
<Checkbox v-model="notificationSettings.followers">
{{ $t('settings.notification_setting_followers') }}
</Checkbox>
</li>
<li>
<Checkbox v-model="notificationSettings.non_follows">
{{ $t('settings.notification_setting_non_follows') }}
</Checkbox>
</li>
<li>
<Checkbox v-model="notificationSettings.non_followers">
{{ $t('settings.notification_setting_non_followers') }}
</Checkbox>
</li>
</ul>
</div>
<p>
<Checkbox v-model="notificationSettings.block_from_strangers">
{{ $t('settings.notification_setting_block_from_strangers') }}
</Checkbox>
</p>
</div>
<div class="setting-item">
<h2>{{ $t('settings.notification_setting_privacy') }}</h2>
<p>
<Checkbox v-model="notificationSettings.privacy_option">
{{ $t('settings.notification_setting_privacy_option') }}
<Checkbox v-model="notificationSettings.hide_notification_contents">
{{ $t('settings.notification_setting_hide_notification_contents') }}
</Checkbox>
</p>
</div>

View file

@ -9,6 +9,7 @@ import AvatarList from '../avatar_list/avatar_list.vue'
import Timeago from '../timeago/timeago.vue'
import StatusContent from '../status_content/status_content.vue'
import StatusPopover from '../status_popover/status_popover.vue'
import UserListPopover from '../user_list_popover/user_list_popover.vue'
import EmojiReactions from '../emoji_reactions/emoji_reactions.vue'
import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'
import { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'
@ -18,6 +19,21 @@ import { mapGetters, mapState } from 'vuex'
const Status = {
name: 'Status',
components: {
FavoriteButton,
ReactButton,
RetweetButton,
ExtraButtons,
PostStatusForm,
UserCard,
UserAvatar,
AvatarList,
Timeago,
StatusPopover,
UserListPopover,
EmojiReactions,
StatusContent
},
props: [
'statusoid',
'expandable',
@ -197,20 +213,6 @@ const Status = {
currentUser: state => state.users.currentUser
})
},
components: {
FavoriteButton,
ReactButton,
RetweetButton,
ExtraButtons,
PostStatusForm,
UserCard,
UserAvatar,
AvatarList,
Timeago,
StatusPopover,
EmojiReactions,
StatusContent
},
methods: {
visibilityIcon (visibility) {
switch (visibility) {

View file

@ -72,7 +72,10 @@
:user="statusoid.user"
/>
<div class="media-body faint">
<span class="user-name">
<span
class="user-name"
:title="retweeter"
>
<router-link
v-if="retweeterHtml"
:to="retweeterProfileLink"
@ -129,20 +132,28 @@
<h4
v-if="status.user.name_html"
class="user-name"
:title="status.user.name"
v-html="status.user.name_html"
/>
<h4
v-else
class="user-name"
:title="status.user.name"
>
{{ status.user.name }}
</h4>
<router-link
class="account-name"
:title="status.user.screen_name"
:to="userProfileLink"
>
{{ status.user.screen_name }}
</router-link>
<img
class="status-favicon"
v-if="!!(status.user && status.user.favicon)"
:src="status.user.favicon"
>
</div>
<span class="heading-right">
@ -222,7 +233,10 @@
>
<span class="reply-to-text">{{ $t('status.reply_to') }}</span>
</span>
<router-link :to="replyProfileLink">
<router-link
:title="replyToName"
:to="replyProfileLink"
>
{{ replyToName }}
</router-link>
<span
@ -265,24 +279,30 @@
class="favs-repeated-users"
>
<div class="stats">
<div
<UserListPopover
v-if="statusFromGlobalRepository.rebloggedBy && statusFromGlobalRepository.rebloggedBy.length > 0"
class="stat-count"
:users="statusFromGlobalRepository.rebloggedBy"
>
<a class="stat-title">{{ $t('status.repeats') }}</a>
<div class="stat-number">
{{ statusFromGlobalRepository.rebloggedBy.length }}
<div class="stat-count">
<a class="stat-title">{{ $t('status.repeats') }}</a>
<div class="stat-number">
{{ statusFromGlobalRepository.rebloggedBy.length }}
</div>
</div>
</div>
<div
</UserListPopover>
<UserListPopover
v-if="statusFromGlobalRepository.favoritedBy && statusFromGlobalRepository.favoritedBy.length > 0"
class="stat-count"
:users="statusFromGlobalRepository.favoritedBy"
>
<a class="stat-title">{{ $t('status.favorites') }}</a>
<div class="stat-number">
{{ statusFromGlobalRepository.favoritedBy.length }}
<div
class="stat-count"
>
<a class="stat-title">{{ $t('status.favorites') }}</a>
<div class="stat-number">
{{ statusFromGlobalRepository.favoritedBy.length }}
</div>
</div>
</div>
</UserListPopover>
<div class="avatar-row">
<AvatarList :users="combinedFavsAndRepeatsUsers" />
</div>
@ -428,6 +448,12 @@ $status-margin: 0.75em;
}
}
.status-favicon {
height: 18px;
width: 18px;
margin-right: 0.4em;
}
.media-heading {
padding: 0;
vertical-align: bottom;
@ -722,6 +748,11 @@ $status-margin: 0.75em;
.stat-count {
margin-right: $status-margin;
user-select: none;
&:hover .stat-title {
text-decoration: underline;
}
.stat-title {
color: var(--faint, $fallback--faint);

View file

@ -148,7 +148,6 @@ const Timeline = {
const bodyBRect = document.body.getBoundingClientRect()
const height = Math.max(bodyBRect.height, -(bodyBRect.y))
if (this.timeline.loading === false &&
this.$store.getters.mergedConfig.autoLoad &&
this.$el.offsetHeight > 0 &&
(window.innerHeight + window.pageYOffset) >= (height - 750)) {
this.fetchOlderStatuses()

View file

@ -66,6 +66,7 @@
<div class="bottom-line">
<router-link
class="user-screen-name"
:title="user.screen_name"
:to="userProfileLink(user)"
>
@{{ user.screen_name }}

View file

@ -0,0 +1,18 @@
const UserListPopover = {
name: 'UserListPopover',
props: [
'users'
],
components: {
Popover: () => import('../popover/popover.vue'),
UserAvatar: () => import('../user_avatar/user_avatar.vue')
},
computed: {
usersCapped () {
return this.users.slice(0, 16)
}
}
}
export default UserListPopover

View file

@ -0,0 +1,71 @@
<template>
<Popover
trigger="hover"
placement="top"
:offset="{ y: 5 }"
>
<template slot="trigger">
<slot />
</template>
<div
slot="content"
class="user-list-popover"
>
<div v-if="users.length">
<div
v-for="(user) in usersCapped"
:key="user.id"
class="user-list-row"
>
<UserAvatar
:user="user"
class="avatar-small"
:compact="true"
/>
<div class="user-list-names">
<!-- eslint-disable vue/no-v-html -->
<span v-html="user.name_html" />
<!-- eslint-enable vue/no-v-html -->
<span class="user-list-screen-name">{{ user.screen_name }}</span>
</div>
</div>
</div>
<div v-else>
<i class="icon-spin4 animate-spin" />
</div>
</div>
</Popover>
</template>
<script src="./user_list_popover.js" ></script>
<style lang="scss">
@import '../../_variables.scss';
.user-list-popover {
padding: 0.5em;
.user-list-row {
padding: 0.25em;
display: flex;
flex-direction: row;
.user-list-names {
display: flex;
flex-direction: column;
margin-left: 0.5em;
min-width: 5em;
img {
width: 1em;
height: 1em;
}
}
.user-list-screen-name {
font-size: 9px;
}
}
}
</style>

View file

@ -73,7 +73,6 @@
"settings": {
"attachmentRadius": "المُرفَقات",
"attachments": "المُرفَقات",
"autoload": "",
"avatar": "الصورة الرمزية",
"avatarAltRadius": "الصور الرمزية (الإشعارات)",
"avatarRadius": "الصور الرمزية",
@ -147,7 +146,6 @@
"profile_tab": "الملف الشخصي",
"radii_help": "",
"replies_in_timeline": "الردود على الخيط الزمني",
"reply_link_preview": "",
"reply_visibility_all": "عرض كافة الردود",
"reply_visibility_following": "",
"reply_visibility_self": "",

View file

@ -73,7 +73,6 @@
"settings": {
"attachmentRadius": "Adjunts",
"attachments": "Adjunts",
"autoload": "Recarrega automàticament en arribar a sota de tot.",
"avatar": "Avatar",
"avatarAltRadius": "Avatars en les notificacions",
"avatarRadius": "Avatars",
@ -96,8 +95,8 @@
"default_vis": "Abast per defecte de les entrades",
"delete_account": "Esborra el compte",
"delete_account_description": "Esborra permanentment el teu compte i tots els missatges",
"delete_account_error": "No s'ha pogut esborrar el compte. Si continua el problema, contacta amb l'administració del node",
"delete_account_instructions": "Confirma que vols esborrar el compte escrivint la teva contrasenya aquí sota",
"delete_account_error": "No s'ha pogut esborrar el compte. Si continua el problema, contacta amb l'administració del node.",
"delete_account_instructions": "Confirma que vols esborrar el compte escrivint la teva contrasenya aquí sota.",
"export_theme": "Desa el tema",
"filtering": "Filtres",
"filtering_explanation": "Es silenciaran totes les entrades que continguin aquestes paraules. Separa-les per línies",
@ -119,7 +118,7 @@
"invalid_theme_imported": "No s'ha entès l'arxiu carregat perquè no és un tema vàlid de Pleroma. No s'ha fet cap canvi als temes actuals.",
"limited_availability": "No està disponible en aquest navegador",
"links": "Enllaços",
"lock_account_description": "Restringeix el teu compte només a seguidores aprovades.",
"lock_account_description": "Restringeix el teu compte només a seguidores aprovades",
"loop_video": "Reprodueix els vídeos en bucle",
"loop_video_silent_only": "Reprodueix en bucles només els vídeos sense so (com els \"GIF\" de Mastodon)",
"name": "Nom",
@ -145,7 +144,6 @@
"profile_tab": "Perfil",
"radii_help": "Configura l'arrodoniment de les vores (en píxels)",
"replies_in_timeline": "Replies in timeline",
"reply_link_preview": "Mostra el missatge citat en passar el ratolí per sobre de l'enllaç de resposta",
"reply_visibility_all": "Mostra totes les respostes",
"reply_visibility_following": "Mostra només les respostes a entrades meves o d'usuàries que jo segueixo",
"reply_visibility_self": "Mostra només les respostes a entrades meves",
@ -160,7 +158,7 @@
"streaming": "Carrega automàticament entrades noves quan estigui a dalt de tot",
"text": "Text",
"theme": "Tema",
"theme_help": "Personalitza els colors del tema. Escriu-los en format RGB hexadecimal (#rrggbb)",
"theme_help": "Personalitza els colors del tema. Escriu-los en format RGB hexadecimal (#rrggbb).",
"tooltipRadius": "Missatges sobreposats",
"user_settings": "Configuració personal",
"values": {

View file

@ -112,7 +112,6 @@
"app_name": "Název aplikace",
"attachmentRadius": "Přílohy",
"attachments": "Přílohy",
"autoload": "Povolit automatické načítání při rolování dolů",
"avatar": "Avatar",
"avatarAltRadius": "Avatary (oznámení)",
"avatarRadius": "Avatary",
@ -206,7 +205,6 @@
"profile_tab": "Profil",
"radii_help": "Nastavit zakulacení rohů rozhraní (v pixelech)",
"replies_in_timeline": "Odpovědi v časové ose",
"reply_link_preview": "Povolit náhledy odkazu pro odpověď při přejetí myši",
"reply_visibility_all": "Zobrazit všechny odpovědi",
"reply_visibility_following": "Zobrazit pouze odpovědi směřované na mě nebo uživatele, které sleduji",
"reply_visibility_self": "Zobrazit pouze odpovědi směřované na mě",
@ -258,7 +256,7 @@
"contrast": {
"hint": "Poměr kontrastu je {ratio}, {level} {context}",
"level": {
"aa": "splňuje směrnici úrovně AA (minimální)",
"aa": "splňuje směrnici úrovně AA (minimální)",
"aaa": "splňuje směrnici úrovně AAA (doporučováno)",
"bad": "nesplňuje žádné směrnice přístupnosti"
},
@ -400,7 +398,6 @@
"reply_to": "Odpověď uživateli",
"replies_list": "Odpovědi:"
},
"user_card": {
"approve": "Schválit",
"block": "Blokovat",
@ -446,7 +443,7 @@
"favorite": "Oblíbit",
"user_settings": "Uživatelské nastavení"
},
"upload":{
"upload": {
"error": {
"base": "Nahrávání selhalo.",
"file_too_big": "Soubor je příliš velký [{filesize}{filesizeunit} / {allowedsize}{allowedsizeunit}]",

View file

@ -66,7 +66,7 @@
"who_to_follow": "Wem folgen"
},
"notifications": {
"broken_favorite": "Unbekannte Nachricht, suche danach...",
"broken_favorite": "Unbekannte Nachricht, suche danach",
"favorited_you": "favorisierte deine Nachricht",
"followed_you": "folgt dir",
"load_older": "Ältere Benachrichtigungen laden",
@ -115,7 +115,7 @@
"registration": "Registrierung",
"token": "Einladungsschlüssel",
"captcha": "CAPTCHA",
"new_captcha": "Zum Erstellen eines neuen Captcha auf das Bild klicken.",
"new_captcha": "Zum Erstellen eines neuen Captcha auf das Bild klicken",
"validations": {
"username_required": "darf nicht leer sein",
"fullname_required": "darf nicht leer sein",
@ -131,7 +131,6 @@
"settings": {
"attachmentRadius": "Anhänge",
"attachments": "Anhänge",
"autoload": "Aktiviere automatisches Laden von älteren Beiträgen beim scrollen",
"avatar": "Avatar",
"avatarAltRadius": "Avatare (Benachrichtigungen)",
"avatarRadius": "Avatare",
@ -162,7 +161,7 @@
"pad_emoji": "Emojis mit Leerzeichen umrahmen",
"export_theme": "Farbschema speichern",
"filtering": "Filtern",
"filtering_explanation": "Alle Beiträge, welche diese Wörter enthalten, werden ausgeblendet. Ein Wort pro Zeile.",
"filtering_explanation": "Alle Beiträge, welche diese Wörter enthalten, werden ausgeblendet. Ein Wort pro Zeile",
"follow_export": "Follower exportieren",
"follow_export_button": "Exportiere deine Follows in eine csv-Datei",
"follow_export_processing": "In Bearbeitung. Die Liste steht gleich zum herunterladen bereit.",
@ -225,7 +224,6 @@
"profile_tab": "Profil",
"radii_help": "Kantenrundung (in Pixel) der Oberfläche anpassen",
"replies_in_timeline": "Antworten in der Zeitleiste",
"reply_link_preview": "Antwortlink-Vorschau beim Überfahren mit der Maus aktivieren",
"reply_visibility_all": "Alle Antworten zeigen",
"reply_visibility_following": "Zeige nur Antworten an mich oder an Benutzer, denen ich folge",
"reply_visibility_self": "Nur Antworten an mich anzeigen",
@ -249,7 +247,7 @@
"streaming": "Aktiviere automatisches Laden (Streaming) von neuen Beiträgen",
"text": "Text",
"theme": "Farbschema",
"theme_help": "Benutze HTML-Farbcodes (#rrggbb) um dein Farbschema anzupassen",
"theme_help": "Benutze HTML-Farbcodes (#rrggbb) um dein Farbschema anzupassen.",
"theme_help_v2_1": "Du kannst auch die Farben und die Deckkraft bestimmter Komponenten überschreiben, indem du das Kontrollkästchen umschaltest. Verwende die Schaltfläche \"Alle löschen\", um alle Überschreibungen zurückzusetzen.",
"theme_help_v2_2": "Unter einigen Einträgen befinden sich Symbole für Hintergrund-/Textkontrastindikatoren, für detaillierte Informationen fahre mit der Maus darüber. Bitte beachte, dass bei der Verwendung von Transparenz Kontrastindikatoren den schlechtest möglichen Fall darstellen.",
"tooltipRadius": "Tooltips/Warnungen",
@ -323,7 +321,7 @@
"always_drop_shadow": "Achtung, dieser Schatten verwendet immer {0}, wenn der Browser dies unterstützt.",
"drop_shadow_syntax": "{0} unterstützt Parameter {1} und Schlüsselwort {2} nicht.",
"avatar_inset": "Bitte beachte, dass die Kombination von eingesetzten und nicht eingesetzten Schatten auf Avataren zu unerwarteten Ergebnissen bei transparenten Avataren führen kann.",
"spread_zero": "Schatten mit einer Streuung > 0 erscheinen so, als ob sie auf Null gesetzt wären.",
"spread_zero": "Schatten mit einer Streuung > 0 erscheinen so, als ob sie auf Null gesetzt wären",
"inset_classic": "Eingesetzte Schatten werden mit {0} verwendet"
},
"components": {
@ -377,7 +375,7 @@
"warning_of_generate_new_codes": "Wenn du neue Wiederherstellungs-Codes generierst, werden die alten Codes nicht mehr funktionieren.",
"generate_new_recovery_codes": "Generiere neue Wiederherstellungs-Codes",
"title": "Zwei-Faktor Authentifizierung",
"waiting_a_recovery_codes": "Erhalte Wiederherstellungscodes...",
"waiting_a_recovery_codes": "Erhalte Wiederherstellungscodes",
"authentication_methods": "Authentifizierungsmethoden",
"scan": {
"title": "Scan",
@ -401,8 +399,6 @@
"changed_email": "Email Adresse erfolgreich geändert!",
"change_email_error": "Es trat ein Problem auf beim Versuch, deine Email Adresse zu ändern.",
"change_email": "Ändere Email",
"notification_setting_non_followers": "Nutzer, die dir nicht folgen",
"notification_setting_followers": "Nutzer, die dir folgen",
"import_blocks_from_a_csv_file": "Importiere Blocks von einer CSV Datei",
"accent": "Akzent"
},
@ -411,7 +407,7 @@
"conversation": "Unterhaltung",
"error_fetching": "Fehler beim Laden",
"load_older": "Lade ältere Beiträge",
"no_retweet_hint": "Der Beitrag ist als nur-für-Follower oder als Direktnachricht markiert und kann nicht wiederholt werden.",
"no_retweet_hint": "Der Beitrag ist als nur-für-Follower oder als Direktnachricht markiert und kann nicht wiederholt werden",
"repeated": "wiederholte",
"show_new": "Zeige Neuere",
"up_to_date": "Aktuell"
@ -485,7 +481,7 @@
"not_found": "Benutzername/E-Mail-Adresse nicht gefunden. Vertippt?",
"too_many_requests": "Kurze Pause. Zu viele Versuche. Bitte, später nochmal probieren.",
"password_reset_disabled": "Passwortzurücksetzen deaktiviert. Bitte Administrator kontaktieren.",
"password_reset_required": "Passwortzurücksetzen erforderlich",
"password_reset_required": "Passwortzurücksetzen erforderlich.",
"password_reset_required_but_mailer_is_disabled": "Passwortzurücksetzen wäre erforderlich, ist aber deaktiviert. Bitte Administrator kontaktieren."
},
"about": {
@ -520,9 +516,9 @@
},
"domain_mute_card": {
"mute": "Stummschalten",
"mute_progress": "Wird stummgeschaltet..",
"mute_progress": "Wird stummgeschaltet",
"unmute": "Stummschaltung aufheben",
"unmute_progress": "Stummschaltung wird aufgehoben.."
"unmute_progress": "Stummschaltung wird aufgehoben"
},
"exporter": {
"export": "Exportieren",

View file

@ -29,8 +29,8 @@
},
"staff": "Staff"
},
"chat": {
"title": "Chat"
"shoutbox": {
"title": "Shoutbox"
},
"domain_mute_card": {
"mute": "Mute",
@ -265,7 +265,6 @@
"allow_following_move": "Allow auto-follow when following account moves",
"attachmentRadius": "Attachments",
"attachments": "Attachments",
"autoload": "Enable automatic loading when scrolled to the bottom",
"avatar": "Avatar",
"avatarAltRadius": "Avatars (Notifications)",
"avatarRadius": "Avatars",
@ -385,7 +384,6 @@
"profile_tab": "Profile",
"radii_help": "Set up interface edge rounding (in pixels)",
"replies_in_timeline": "Replies in timeline",
"reply_link_preview": "Enable reply-link preview on mouse hover",
"reply_visibility_all": "Show all replies",
"reply_visibility_following": "Only show replies directed at me or users I'm following",
"reply_visibility_self": "Only show replies directed at me",
@ -435,13 +433,9 @@
"greentext": "Meme arrows",
"notifications": "Notifications",
"notification_setting_filters": "Filters",
"notification_setting": "Receive notifications from:",
"notification_setting_follows": "Users you follow",
"notification_setting_non_follows": "Users you do not follow",
"notification_setting_followers": "Users who follow you",
"notification_setting_non_followers": "Users who do not follow you",
"notification_setting_block_from_strangers": "Block notifications from users who you do not follow",
"notification_setting_privacy": "Privacy",
"notification_setting_privacy_option": "Hide the sender and contents of push notifications",
"notification_setting_hide_notification_contents": "Hide the sender and contents of push notifications",
"notification_mutes": "To stop receiving notifications from a specific user, use a mute.",
"notification_blocks": "Blocking a user stops all notifications as well as unsubscribes them.",
"enable_web_push_notifications": "Enable web push notifications",
@ -786,6 +780,7 @@
"password_reset_required_but_mailer_is_disabled": "You must reset your password, but password reset is disabled. Please contact your instance administrator."
},
"chats": {
"you": "You:",
"message_user": "Message {nickname}",
"delete": "Delete",
"chats": "Chats",

View file

@ -7,12 +7,13 @@
"gopher": "Gopher",
"media_proxy": "Aŭdvidaĵa prokurilo",
"scope_options": "Agordoj de amplekso",
"text_limit": "Teksta limo",
"text_limit": "Limo de teksto",
"title": "Funkcioj",
"who_to_follow": "Kiun aboni"
"who_to_follow": "Kiun aboni",
"pleroma_chat_messages": "Babilejo de Pleroma"
},
"finder": {
"error_fetching_user": "Eraro alportante uzanton",
"error_fetching_user": "Eraris alporto de uzanto",
"find_user": "Trovi uzanton"
},
"general": {
@ -20,12 +21,25 @@
"submit": "Sendi",
"more": "Pli",
"generic_error": "Eraro okazis",
"optional": "Malnepra"
"optional": "malnepra",
"close": "Fermi",
"verify": "Kontroli",
"confirm": "Konfirmi",
"enable": "Ŝalti",
"disable": "Malŝalti",
"cancel": "Nuligi",
"dismiss": "Forlasi",
"show_less": "Montri malplion",
"show_more": "Montri plion",
"retry": "Reprovi",
"error_retry": "Bonvolu reprovi",
"loading": "Enlegante…"
},
"image_cropper": {
"crop_picture": "Tondi bildon",
"save": "Konservi",
"cancel": "Nuligi"
"cancel": "Nuligi",
"save_without_cropping": "Konservi sen tondado"
},
"login": {
"login": "Saluti",
@ -34,8 +48,16 @@
"password": "Pasvorto",
"placeholder": "ekz. lain",
"register": "Registriĝi",
"username": "Salutnomo",
"hint": "Salutu por partopreni la diskutadon"
"username": "Uzantonomo",
"hint": "Salutu por partopreni la diskutadon",
"heading": {
"recovery": "Rehavo de duobla aŭtentikigo",
"totp": "Duobla aŭtentikigo"
},
"recovery_code": "Rehava kodo",
"enter_two_factor_code": "Enigu kodon de duobla aŭtentikigo",
"enter_recovery_code": "Enigu rehavan kodon",
"authentication_code": "Aŭtentikiga kodo"
},
"media_modal": {
"previous": "Antaŭa",
@ -45,7 +67,7 @@
"about": "Pri",
"back": "Reen",
"chat": "Loka babilejo",
"friend_requests": "Abonaj petoj",
"friend_requests": "Petoj pri abono",
"mentions": "Mencioj",
"dms": "Rektaj mesaĝoj",
"public_tl": "Publika tempolinio",
@ -53,7 +75,11 @@
"twkn": "La tuta konata reto",
"user_search": "Serĉi uzantojn",
"who_to_follow": "Kiun aboni",
"preferences": "Agordoj"
"preferences": "Agordoj",
"chats": "Babiloj",
"search": "Serĉi",
"interactions": "Interagoj",
"administration": "Administrado"
},
"notifications": {
"broken_favorite": "Nekonata stato, serĉante ĝin…",
@ -63,15 +89,21 @@
"notifications": "Sciigoj",
"read": "Legite!",
"repeated_you": "ripetis vian staton",
"no_more_notifications": "Neniuj pliaj sciigoj"
"no_more_notifications": "Neniuj pliaj sciigoj",
"reacted_with": "reagis per {0}",
"migrated_to": "migris al",
"follow_request": "volas vin aboni"
},
"post_status": {
"new_status": "Afiŝi novan staton",
"account_not_locked_warning": "Via konto ne estas {0}. Iu ajn povas vin aboni por vidi viajn afiŝoj nur por abonantoj.",
"account_not_locked_warning": "Via konto ne estas {0}. Iu ajn povas vin aboni por vidi viajn afiŝoj nur por abonantoj.",
"account_not_locked_warning_link": "ŝlosita",
"attachments_sensitive": "Marki kunsendaĵojn kiel konsternajn",
"attachments_sensitive": "Marki kunsendaĵojn konsternaj",
"content_type": {
"text/plain": "Plata teksto"
"text/plain": "Plata teksto",
"text/bbcode": "BBCode",
"text/markdown": "Markdown",
"text/html": "HTML"
},
"content_warning": "Temo (malnepra)",
"default": "Ĵus alvenis al la Universala Kongreso!",
@ -82,7 +114,19 @@
"private": "Nur abonantoj Afiŝi nur al abonantoj",
"public": "Publika Afiŝi al publikaj tempolinioj",
"unlisted": "Nelistigita Ne afiŝi al publikaj tempolinioj"
}
},
"scope_notice": {
"unlisted": "Ĉi tiu afiŝo ne estos videbla en la Publika historio kaj La tuta konata reto",
"private": "Ĉi tiu afiŝo estos videbla nur al viaj abonantoj",
"public": "Ĉi tiu afiŝo estos videbla al ĉiuj"
},
"media_description_error": "Malsukcesis afiŝo de vidaŭdaĵoj; reprovu",
"empty_status_error": "Ne povas afiŝi malplenan staton sen dosieroj",
"preview_empty": "Malplena",
"preview": "Antaŭrigardo",
"direct_warning_to_first_only": "Ĉi tiu afiŝo estas nur videbla al uzantoj menciitaj je la komenco de la mesaĝo.",
"direct_warning_to_all": "Ĉi tiu afiŝo estos videbla al ĉiuj menciitaj uzantoj.",
"media_description": "Priskribo de vidaŭdaĵo"
},
"registration": {
"bio": "Priskribo",
@ -92,10 +136,10 @@
"registration": "Registriĝo",
"token": "Invita ĵetono",
"captcha": "TESTO DE HOMECO",
"new_captcha": "Alklaku la bildon por akiri novan teston",
"new_captcha": "Klaku la bildon por akiri novan teston",
"username_placeholder": "ekz. lain",
"fullname_placeholder": "ekz. Lain Iwakura",
"bio_placeholder": "ekz.\nSaluton, mi estas Lain\nMi estas animea knabino vivante en Japanujo. Eble vi konas min de la retejo «Wired».",
"bio_placeholder": "ekz.\nSaluton, mi estas Lain.\nMi estas animea knabino vivanta en Japanujo. Eble vi konas min pro la retejo «Wired».",
"validations": {
"username_required": "ne povas resti malplena",
"fullname_required": "ne povas resti malplena",
@ -109,53 +153,52 @@
"app_name": "Nomo de aplikaĵo",
"attachmentRadius": "Kunsendaĵoj",
"attachments": "Kunsendaĵoj",
"autoload": "Ŝalti memfaran enlegadon ĉe subo de paĝo",
"avatar": "Profilbildo",
"avatarAltRadius": "Profilbildoj (sciigoj)",
"avatarRadius": "Profilbildoj",
"background": "Fono",
"bio": "Priskribo",
"blocks_tab": "Baroj",
"blocks_tab": "Blokitoj",
"btnRadius": "Butonoj",
"cBlue": "Blua (Respondo, abono)",
"cGreen": "Verda (Kunhavigo)",
"cOrange": "Oranĝa (Ŝato)",
"cRed": "Ruĝa (Nuligo)",
"cBlue": "Blua (respondi, aboni)",
"cGreen": "Verda (kunhavigi)",
"cOrange": "Oranĝa (ŝati)",
"cRed": "Ruĝa (nuligi)",
"change_password": "Ŝanĝi pasvorton",
"change_password_error": "Okazis eraro dum ŝanĝo de via pasvorto.",
"change_password_error": "Eraris ŝanĝo de via pasvorto.",
"changed_password": "Pasvorto sukcese ŝanĝiĝis!",
"collapse_subject": "Maletendi afiŝojn kun temoj",
"composing": "Verkante",
"composing": "Verkado",
"confirm_new_password": "Konfirmu novan pasvorton",
"current_avatar": "Via nuna profilbildo",
"current_password": "Nuna pasvorto",
"current_profile_banner": "Via nuna profila rubando",
"data_import_export_tab": "Enporto / Elporto de datenoj",
"default_vis": "Implicita videbleca amplekso",
"data_import_export_tab": "Enporto / Elporto de datumoj",
"default_vis": "Implicita amplekso de vidibleco",
"delete_account": "Forigi konton",
"delete_account_description": "Por ĉiam forigi vian konton kaj ĉiujn viajn mesaĝojn",
"delete_account_error": "Okazis eraro dum forigo de via kanto. Se tio daŭre okazados, bonvolu kontakti la administranton de via nodo.",
"delete_account_description": "Por ĉiam forigi viajn datumojn kaj malaktivigi vian konton.",
"delete_account_error": "Eraris forigo de via kanto. Se tio daŭre ripetiĝos, bonvolu kontakti la administranton de via nodo.",
"delete_account_instructions": "Entajpu sube vian pasvorton por konfirmi forigon de konto.",
"avatar_size_instruction": "La rekomendata malpleja grando de profilbildoj estas 150×150 bilderoj.",
"avatar_size_instruction": "La rekomendata minimuma grando de profilbildoj estas 150×150 bilderoj.",
"export_theme": "Konservi antaŭagordon",
"filtering": "Filtrado",
"filtering_explanation": "Ĉiuj statoj kun tiuj ĉi vortoj silentiĝos, po unu linio",
"follow_export": "Abona elporto",
"filtering_explanation": "Ĉiuj statoj kun tiuj ĉi vortoj silentiĝos; skribu po unu linie",
"follow_export": "Elporto de abonoj",
"follow_export_button": "Elporti viajn abonojn al CSV-dosiero",
"follow_export_processing": "Traktante; baldaŭ vi ricevos peton elŝuti la dosieron",
"follow_import": "Abona enporto",
"follow_import": "Enporto de abonoj",
"follow_import_error": "Eraro enportante abonojn",
"follows_imported": "Abonoj enportiĝis! Traktado daŭros iom.",
"follows_imported": "Abonoj enportiĝis! Traktado daŭros iom da tempo.",
"foreground": "Malfono",
"general": "Ĝenerala",
"hide_attachments_in_convo": "Kaŝi kunsendaĵojn en interparoloj",
"hide_attachments_in_tl": "Kaŝi kunsendaĵojn en tempolinio",
"max_thumbnails": "Plej multa nombro da bildetoj po afiŝo",
"hide_isp": "Kaŝi nodo-propran breton",
"max_thumbnails": "Maksimuma nombro da bildetoj en afiŝo",
"hide_isp": "Kaŝi breton propran al nodo",
"preload_images": "Antaŭ-enlegi bildojn",
"use_one_click_nsfw": "Malfermi konsternajn kunsendaĵojn per nur unu klako",
"hide_post_stats": "Kaŝi statistikon de afiŝoj (ekz. nombron da ŝatoj)",
"hide_user_stats": "Kaŝi statistikon de uzantoj (ekz. nombron da abonantoj)",
"hide_post_stats": "Kaŝi statistikon de afiŝoj (ekz. nombron de ŝatoj)",
"hide_user_stats": "Kaŝi statistikon de uzantoj (ekz. nombron de abonantoj)",
"hide_filtered_statuses": "Kaŝi filtritajn statojn",
"import_followers_from_a_csv_file": "Enporti abonojn el CSV-dosiero",
"import_theme": "Enlegi antaŭagordojn",
@ -170,9 +213,9 @@
"links": "Ligiloj",
"lock_account_description": "Limigi vian konton al nur abonantoj aprobitaj",
"loop_video": "Ripetadi filmojn",
"loop_video_silent_only": "Ripetadi nur filmojn sen sono (ekz. la \"GIF-ojn\" de Mastodon)",
"loop_video_silent_only": "Ripetadi nur filmojn sen sono (ekz. la «GIF-ojn» de Mastodon)",
"mutes_tab": "Silentigoj",
"play_videos_in_modal": "Ludi filmojn rekte en la aŭdvidaĵa spektilo",
"play_videos_in_modal": "Ludi filmojn en ŝpruca kadro",
"use_contain_fit": "Ne tondi la kunsendaĵon en bildetoj",
"name": "Nomo",
"name_bio": "Nomo kaj priskribo",
@ -183,51 +226,50 @@
"notification_visibility_mentions": "Mencioj",
"notification_visibility_repeats": "Ripetoj",
"no_rich_text_description": "Forigi riĉtekstajn formojn de ĉiuj afiŝoj",
"no_blocks": "Neniuj baroj",
"no_blocks": "Neniuj blokitoj",
"no_mutes": "Neniuj silentigoj",
"hide_follows_description": "Ne montri kiun mi sekvas",
"hide_followers_description": "Ne montri kiu min sekvas",
"show_admin_badge": "Montri la insignon de administranto en mia profilo",
"show_moderator_badge": "Montri la insignon de kontrolanto en mia profilo",
"nsfw_clickthrough": "Ŝalti traklakan kaŝon de konsternaj kunsendaĵoj",
"show_moderator_badge": "Montri la insignon de reguligisto en mia profilo",
"nsfw_clickthrough": "Ŝalti traklakan kaŝadon de konsternaj kunsendaĵoj",
"oauth_tokens": "Ĵetonoj de OAuth",
"token": "Ĵetono",
"refresh_token": "Ĵetono de novigo",
"refresh_token": "Ĵetono de aktualigo",
"valid_until": "Valida ĝis",
"revoke_token": "Senvalidigi",
"panelRadius": "Bretoj",
"pause_on_unfocused": "Paŭzigi elsendfluon kiam langeto ne estas fokusata",
"presets": "Antaŭagordoj",
"profile_background": "Profila fono",
"profile_banner": "Profila rubando",
"profile_background": "Fono de profilo",
"profile_banner": "Rubando de profilo",
"profile_tab": "Profilo",
"radii_help": "Agordi fasadan rondigon de randoj (bildere)",
"replies_in_timeline": "Respondoj en tempolinio",
"reply_link_preview": "Ŝalti respond-ligilan antaŭvidon dum musa ŝvebo",
"reply_visibility_all": "Montri ĉiujn respondojn",
"reply_visibility_following": "Montri nur respondojn por mi aŭ miaj abonatoj",
"reply_visibility_self": "Montri nur respondojn por mi",
"saving_err": "Eraro dum konservo de agordoj",
"saving_err": "Eraris konservado de agordoj",
"saving_ok": "Agordoj konserviĝis",
"security_tab": "Sekureco",
"scope_copy": "Kopii amplekson por respondo (rektaj mesaĝoj ĉiam kopiiĝas)",
"set_new_avatar": "Agordi novan profilbildon",
"set_new_profile_background": "Agordi novan profilan fonon",
"set_new_profile_banner": "Agordi novan profilan rubandon",
"set_new_profile_background": "Agordi novan fonon de profilo",
"set_new_profile_banner": "Agordi novan rubandon de profilo",
"settings": "Agordoj",
"subject_input_always_show": "Ĉiam montri teman kampon",
"subject_line_behavior": "Kopii temon por respondo",
"subject_line_email": "Kiel retpoŝto: \"re: temo\"",
"subject_input_always_show": "Ĉiam montri kampon de temo",
"subject_line_behavior": "Kopii temon dum respondado",
"subject_line_email": "Kiel retpoŝto: «re: temo»",
"subject_line_mastodon": "Kiel Mastodon: kopii senŝanĝe",
"subject_line_noop": "Ne kopii",
"post_status_content_type": "Afiŝi specon de la enhavo de la stato",
"stop_gifs": "Movi GIF-bildojn dum musa ŝvebo",
"streaming": "Ŝalti memfaran fluigon de novaj afiŝoj ĉe la supro de la paĝo",
"stop_gifs": "Movi GIF-bildojn dum ŝvebo de muso",
"streaming": "Ŝalti memagan fluigon de novaj afiŝoj kiam vi vidas la supron de la paĝo",
"text": "Teksto",
"theme": "Haŭto",
"theme_help": "Uzu deksesumajn kolorkodojn (#rrvvbb) por adapti vian koloran haŭton.",
"theme_help_v2_1": "Vi ankaŭ povas superagordi la kolorojn kaj travideblecon de kelkaj eroj per marko de la markbutono; uzu la butonon \"Vakigi ĉion\" por forigi ĉîujn superagordojn.",
"theme_help_v2_2": "Bildsimboloj sub kelkaj eroj estas indikiloj de kontrasto inter fono kaj teksto; muse ŝvebu por detalaj informoj. Bonvolu memori, ke la indikilo montras la plej malbonan okazeblon dum sia uzo.",
"theme_help_v2_1": "Vi ankaŭ povas superagordi la kolorojn kaj travideblecon de kelkaj eroj per marko de la markbutono; uzu la butonon «Vakigi ĉion» por forigi ĉîujn superagordojn.",
"theme_help_v2_2": "Bildsimboloj sub kelkaj eroj estas indikiloj de kontrasto inter fono kaj teksto; ŝvebigu muson por detalaj informoj. Bonvolu memori, ke la indikilo montras la plej malbonan okazeblon dum sia uzo.",
"tooltipRadius": "Ŝpruchelpiloj/avertoj",
"upload_a_photo": "Alŝuti foton",
"user_settings": "Agordoj de uzanto",
@ -319,7 +361,7 @@
},
"fonts": {
"_tab_label": "Tiparoj",
"help": "Elektu tiparon uzotan por eroj de la fasado. Por \"propra\" vi devas enigi la precizan nomon de tiparo tiel, kiel ĝi aperas en la sistemo",
"help": "Elektu tiparon uzotan por eroj de la fasado. Por \"propra\" vi devas enigi la precizan nomon de tiparo tiel, kiel ĝi aperas en la sistemo.",
"components": {
"interface": "Fasado",
"input": "Enigaj kampoj",
@ -345,7 +387,70 @@
"checkbox": "Mi legetis la kondiĉojn de uzado",
"link": "bela eta ligil"
}
}
},
"discoverable": "Permesi trovon de ĉi tiu konto en serĉrezultoj kaj aliaj servoj",
"mutes_and_blocks": "Silentigitoj kaj blokitoj",
"chatMessageRadius": "Babileja mesaĝo",
"changed_email": "Retpoŝtadreso sukcese ŝanĝiĝis!",
"change_email_error": "Eraris ŝanĝo de via retpoŝtadreso.",
"change_email": "Ŝanĝi retpoŝtadreson",
"bot": "Ĉi tio estas robota konto",
"blocks_imported": "Blokitoj enportiĝis! Traktado daŭros iom da tempo.",
"block_import_error": "Eraris enporto de blokitoj",
"block_export": "Elporto de blokitoj",
"block_import": "Enporto de blokitoj",
"block_export_button": "Elporti viajn blokitojn al CSV-dosiero",
"allow_following_move": "Permesi memagan abonadon kiam abonata konto migras",
"mfa": {
"verify": {
"desc": "Por ŝalti duoblan aŭtentikigon, enigu la kodon el via aplikaĵo por duobla aŭtentikigo:"
},
"scan": {
"secret_code": "Ŝlosilo",
"desc": "Uzante vian aplikaĵon por duobla aŭtentikigo, skanu ĉi tiun rapidrespondan kodon aŭ enigu tekstan ŝlosilon:",
"title": "Skani"
},
"authentication_methods": "Metodoj de aŭtentikigo",
"recovery_codes_warning": "Notu la kodojn aŭ konservu ilin en sekura loko alie vi ne revidos ilin. Se vi perdos aliron al via aplikaĵo por duobla aŭtentikigo kaj al la rehavaj kodoj, vi ne povos aliri vian konton.",
"waiting_a_recovery_codes": "Ricevante savkopiajn kodojn…",
"recovery_codes": "Rehavaj kodoj.",
"warning_of_generate_new_codes": "Kiam vi estigos novajn rehavajn kodojn, viaj malnovaj ne plu funkcios.",
"generate_new_recovery_codes": "Estigi novajn rehavajn kodojn",
"title": "Duobla aŭtentikigo"
},
"enter_current_password_to_confirm": "Enigu vian pasvorton por konfirmi vian identecon",
"security": "Sekureco",
"fun": "Amuzo",
"type_domains_to_mute": "Serĉu silentigotajn retnomojn",
"useStreamingApiWarning": "(Nerekomendate, eksperimente, povas preterpasi afiŝojn)",
"useStreamingApi": "Ricevi afiŝojn kaj sciigojn realtempe",
"user_mutes": "Uzantoj",
"reset_background_confirm": "Ĉu vi certe volas restarigi la fonon?",
"reset_banner_confirm": "Ĉu vi certe volas restarigi la rubandon?",
"reset_avatar_confirm": "Ĉu vi certe volas restarigi la profilbildon?",
"reset_profile_banner": "Restarigi rubandon de profilo",
"reset_profile_background": "Restarigi fonon de profilo",
"reset_avatar": "Restarigi profilbildon",
"minimal_scopes_mode": "Minimumigi elekteblojn pri amplekso de afiŝoj",
"search_user_to_block": "Serĉu, kiun vi volas bloki",
"search_user_to_mute": "Serĉu, kiun vi volas silentigi",
"autohide_floating_post_button": "Memage kaŝi la butonon por Nova afiŝo (poŝtelefone)",
"hide_followers_count_description": "Ne montri nombron de abonantoj",
"hide_follows_count_description": "Ne montri nombron de abonoj",
"notification_visibility_emoji_reactions": "Reagoj",
"notification_visibility_moves": "Migroj",
"new_email": "Nova retpoŝtadreso",
"profile_fields": {
"value": "Enhavo",
"name": "Etikedo",
"add_field": "Aldoni kampon",
"label": "Pridatumoj de profilo"
},
"import_blocks_from_a_csv_file": "Enporti blokitojn el CSV-dosiero",
"hide_muted_posts": "Kaŝi afiŝojn de silentigitaj uzantoj",
"emoji_reactions_on_timeline": "Montri bildosignajn reagojn en la tempolinio",
"pad_emoji": "Meti spacetojn ĉirkaŭ bildosigno post ties elekto",
"domain_mutes": "Retnomoj"
},
"timeline": {
"collapse": "Maletendi",
@ -404,7 +509,7 @@
"favorite": "Ŝati",
"user_settings": "Agordoj de uzanto"
},
"upload":{
"upload": {
"error": {
"base": "Alŝuto malsukcesis.",
"file_too_big": "Dosiero estas tro granda [{filesize}{filesizeunit} / {allowedsize}{allowedsizeunit}]",
@ -417,5 +522,90 @@
"GiB": "GiB",
"TiB": "TiB"
}
},
"emoji": {
"search_emoji": "Serĉi bildosignon",
"keep_open": "Teni elektilon malfermita",
"emoji": "Bildsignoj",
"stickers": "Glumarkoj",
"add_emoji": "Enigi bildosignon",
"load_all": "Enlegante ĉiujn {emojiAmount} bildosignojn",
"load_all_hint": "Enlegis la {saneAmount} unuajn bildosignojn; enlego de ĉiuj povus kaŭzi problemojn pri efikeco.",
"unicode": "Unikoda bildosigno",
"custom": "Propra bildosigno"
},
"polls": {
"not_enough_options": "Tro malmultaj unikaj elektebloj en la enketo",
"expired": "Enketo finiĝis antaŭ {0}",
"expires_in": "Enketo finiĝas je {0}",
"expiry": "Aĝo de enketo",
"multiple_choices": "Pluraj elektoj",
"single_choice": "Unu elekto",
"type": "Speco de enketo",
"vote": "Voĉi",
"votes": "voĉoj",
"option": "Elekteblo",
"add_option": "Aldoni elekteblon",
"add_poll": "Aldoni enketon"
},
"importer": {
"error": "Eraris enporto de ĉi tiu dosiero.",
"success": "Enportita sukcese.",
"submit": "Sendi"
},
"exporter": {
"processing": "Traktante; baldaŭ vi ricevos peton elŝuti vian dosieron",
"export": "Elporti"
},
"domain_mute_card": {
"unmute_progress": "Malsilentigante…",
"unmute": "Malsilentigi",
"mute_progress": "Silentigante…",
"mute": "Silentigi"
},
"about": {
"staff": "Skipo",
"mrf": {
"simple": {
"media_nsfw_desc": "Ĉi tiu nodo devigas vidaŭdaĵojn esti markitaj kiel konsternaj en afiŝoj el la jenaj nodoj:",
"media_nsfw": "Devige marki vidaŭdaĵojn konsternaj",
"media_removal_desc": "Ĉi tiu nodo forigas vidaŭdaĵojn de afiŝoj el la jenaj nodoj:",
"media_removal": "Forigo de vidaŭdaĵoj",
"ftl_removal": "Forigo de la historio de «La tuta konata reto»",
"quarantine_desc": "Ĉi tiu nodo sendos nur publikajn afiŝojn al la jenaj nodoj:",
"quarantine": "Kvaranteno",
"reject_desc": "Ĉi tiu nodo ne akceptos mesaĝojn de la jenaj nodoj:",
"reject": "Rifuzi",
"accept_desc": "Ĉi tiu nodo nur akceptas mesaĝojn de la jenaj nodoj:",
"accept": "Akcepti",
"simple_policies": "Specialaj politikoj de la nodo"
},
"mrf_policies": "Ŝaltis politikon de MRF",
"keyword": {
"is_replaced_by": "→",
"replace": "Anstataŭigi",
"reject": "Rifuzi",
"ftl_removal": "Forigo de la historio de «La tuta konata reto»",
"keyword_policies": "Politiko pri ŝlosilvortoj"
},
"federation": "Federado"
}
},
"selectable_list": {
"select_all": "Elekti ĉion"
},
"remote_user_resolver": {
"error": "Netrovinte.",
"searching_for": "Serĉante",
"remote_user_resolver": "Trovilo de foraj uzantoj"
},
"interactions": {
"load_older": "Enlegi pli malnovajn interagojn",
"moves": "Migrado de uzantoj",
"follows": "Novaj abonoj",
"favs_repeats": "Ripetoj kaj ŝatoj"
},
"errors": {
"storage_unavailable": "Pleroma ne povis aliri deponejon de la foliumilo. Via saluto kaj viaj lokaj agordoj ne estos konservitaj, kaj vi eble renkontos neatenditajn problemojn. Provu permesi kuketojn."
}
}

View file

@ -203,7 +203,6 @@
},
"attachmentRadius": "Adjuntos",
"attachments": "Adjuntos",
"autoload": "Habilitar carga automática al llegar al final de la página",
"avatar": "Avatar",
"avatarAltRadius": "Avatares (Notificaciones)",
"avatarRadius": "Avatares",
@ -307,7 +306,6 @@
"profile_tab": "Perfil",
"radii_help": "Establezca el redondeo de las esquinas de la interfaz (en píxeles)",
"replies_in_timeline": "Réplicas en la línea temporal",
"reply_link_preview": "Activar la previsualización del enlace de responder al pasar el ratón por encima",
"reply_visibility_all": "Mostrar todas las réplicas",
"reply_visibility_following": "Solo mostrar réplicas para mí o usuarios a los que sigo",
"reply_visibility_self": "Solo mostrar réplicas para mí",
@ -344,11 +342,6 @@
"true": "sí"
},
"notifications": "Notificaciones",
"notification_setting": "Recibir notificaciones de:",
"notification_setting_follows": "Usuarios que sigues",
"notification_setting_non_follows": "Usuarios que no sigues",
"notification_setting_followers": "Usuarios que te siguen",
"notification_setting_non_followers": "Usuarios que no te siguen",
"notification_mutes": "Para dejar de recibir notificaciones de un usuario específico, siléncialo.",
"notification_blocks": "El bloqueo de un usuario detiene todas las notificaciones y también las cancela.",
"enable_web_push_notifications": "Habilitar las notificiaciones en el navegador",

View file

@ -116,7 +116,6 @@
},
"settings": {
"attachments": "Manused",
"autoload": "Luba ajajoone automaatne uuendamine kui ajajoon on põhja keritud",
"avatar": "Profiilipilt",
"bio": "Bio",
"current_avatar": "Sinu praegune profiilipilt",
@ -130,7 +129,6 @@
"nsfw_clickthrough": "Peida tööks-mittesobivad(NSFW) manuste hiireklõpsu taha",
"profile_background": "Profiilitaust",
"profile_banner": "Profiilibänner",
"reply_link_preview": "Luba algpostituse kuvamine vastustes",
"set_new_avatar": "Vali uus profiilipilt",
"set_new_profile_background": "Vali uus profiilitaust",
"set_new_profile_banner": "Vali uus profiilibänner",
@ -304,14 +302,9 @@
"enable_web_push_notifications": "Luba veebipõhised push-teated",
"notification_blocks": "Kasutaja blokeerimisel ei tule neilt enam teateid ning nendele teilt ka mitte.",
"notification_setting_privacy_option": "Peida saatja ning sisu push-teadetelt",
"notification_setting": "Saa teateid nendelt:",
"notifications": "Teated",
"notification_mutes": "Kui soovid mõnelt kasutajalt mitte teateid saada, kasuta vaigistust.",
"notification_setting_privacy": "Privaatsus",
"notification_setting_non_followers": "Kasutajatelt, kes sind ei jälgi",
"notification_setting_followers": "Kasutajatelt, kes jälgivad sind",
"notification_setting_non_follows": "Kasutajatelt, keda sa ei jälgi",
"notification_setting_follows": "Kasutajatelt, keda jälgid",
"notification_setting_filters": "Filtrid",
"greentext": "Meemi nooled",
"fun": "Naljad",

View file

@ -84,7 +84,7 @@
"preferences": "Hobespenak"
},
"notifications": {
"broken_favorite": "Egoera ezezaguna, bilatzen...",
"broken_favorite": "Egoera ezezaguna, bilatzen",
"favorited_you": "zure mezua gogoko du",
"followed_you": "Zu jarraitzen zaitu",
"load_older": "Kargatu jakinarazpen zaharragoak",
@ -128,7 +128,7 @@
"new_status": "Mezu berri bat idatzi",
"account_not_locked_warning": "Zure kontua ez dago {0}. Edozeinek jarraitzen hastearekin, zure mezuak irakur ditzake.",
"account_not_locked_warning_link": "Blokeatuta",
"attachments_sensitive": "Nabarmendu eranskinak hunkigarri gisa ",
"attachments_sensitive": "Nabarmendu eranskinak hunkigarri gisa",
"content_type": {
"text/plain": "Testu arrunta",
"text/html": "HTML",
@ -187,9 +187,9 @@
"confirm_and_enable": "Baieztatu eta gaitu OTP",
"title": "Bi-faktore autentifikazioa",
"generate_new_recovery_codes": "Sortu berreskuratze kode berriak",
"warning_of_generate_new_codes": "Berreskuratze kode berriak sortzean, zure berreskuratze kode zaharrak ez dute balioko",
"warning_of_generate_new_codes": "Berreskuratze kode berriak sortzean, zure berreskuratze kode zaharrak ez dute balioko.",
"recovery_codes": "Berreskuratze kodea",
"waiting_a_recovery_codes": "Babes-kopia kodeak jasotzen...",
"waiting_a_recovery_codes": "Babes-kopia kodeak jasotzen",
"recovery_codes_warning": "Idatzi edo gorde kodeak leku seguruan - bestela ez dituzu berriro ikusiko. Zure 2FA aplikaziorako sarbidea eta berreskuratze kodeak galduz gero, zure kontutik blokeatuta egongo zara.",
"authentication_methods": "Autentifikazio metodoa",
"scan": {
@ -198,12 +198,11 @@
"secret_code": "Giltza"
},
"verify": {
"desc": "Bi-faktore autentifikazioa gaitzeko, sar ezazu bi-faktore kodea zure app-tik"
"desc": "Bi-faktore autentifikazioa gaitzeko, sar ezazu bi-faktore kodea zure app-tik:"
}
},
"attachmentRadius": "Eranskinak",
"attachments": "Eranskinak",
"autoload": "Gaitu karga automatikoa beheraino mugitzean",
"avatar": "Avatarra",
"avatarAltRadius": "Avatarra (Aipamenak)",
"avatarRadius": "Avatarrak",
@ -221,7 +220,7 @@
"cOrange": "Laranja (Gogokoa)",
"cRed": "Gorria (ezeztatu)",
"change_password": "Pasahitza aldatu",
"change_password_error": "Arazao bat egon da zure pasahitza aldatzean",
"change_password_error": "Arazao bat egon da zure pasahitza aldatzean.",
"changed_password": "Pasahitza ondo aldatu da!",
"collapse_subject": "Bildu gaia daukaten mezuak",
"composing": "Idazten",
@ -248,7 +247,7 @@
"follows_imported": "Jarraitzaileak inportatuta! Prozesatzeak denbora pixka bat iraungo du.",
"foreground": "Aurreko planoa",
"general": "Orokorra",
"hide_attachments_in_convo": "Ezkutatu eranskinak elkarrizketatan ",
"hide_attachments_in_convo": "Ezkutatu eranskinak elkarrizketatan",
"hide_attachments_in_tl": "Ezkutatu eranskinak donbora-lerroan",
"hide_muted_posts": "Ezkutatu mutututako erabiltzaileen mezuak",
"max_thumbnails": "Mezu bakoitzeko argazki-miniatura kopuru maximoa",
@ -307,7 +306,6 @@
"profile_tab": "Profila",
"radii_help": "Konfiguratu interfazearen ertzen biribiltzea (pixeletan)",
"replies_in_timeline": "Denbora-lerroko erantzunak",
"reply_link_preview": "Gaitu erantzun-estekaren aurrebista arratoiarekin",
"reply_visibility_all": "Erakutsi erantzun guztiak",
"reply_visibility_following": "Erakutsi bakarrik niri zuzendutako edo nik jarraitutako erabiltzaileen erantzunak",
"reply_visibility_self": "Erakutsi bakarrik niri zuzendutako erantzunak",
@ -344,11 +342,6 @@
"true": "bai"
},
"notifications": "Jakinarazpenak",
"notification_setting": "Jaso pertsona honen jakinarazpenak:",
"notification_setting_follows": "Jarraitutako erabiltzaileak",
"notification_setting_non_follows": "Jarraitzen ez dituzun erabiltzaileak",
"notification_setting_followers": "Zu jarraitzen zaituzten erabiltzaileak",
"notification_setting_non_followers": "Zu jarraitzen ez zaituzten erabiltzaileak",
"notification_mutes": "Erabiltzaile jakin baten jakinarazpenak jasotzeari uzteko, isilarazi ezazu.",
"notification_blocks": "Erabiltzaile bat blokeatzeak jakinarazpen guztiak gelditzen ditu eta harpidetza ezeztatu.",
"enable_web_push_notifications": "Gaitu web jakinarazpenak",
@ -434,7 +427,7 @@
},
"fonts": {
"_tab_label": "Letra-tipoak",
"help": "Aukeratu letra-tipoak erabiltzailearen interfazean erabiltzeko. \"Pertsonalizatua\" letra-tipoan, sisteman agertzen den izen berdinarekin idatzi behar duzu.",
"help": "Aukeratu letra-tipoak erabiltzailearen interfazean erabiltzeko. \"Pertsonalizatua\" letra-tipoan, sisteman agertzen den izen berdinarekin idatzi behar duzu.",
"components": {
"interface": "Interfazea",
"input": "Sarrera eremuak",
@ -534,7 +527,7 @@
"favorites": "Gogokoak",
"follow": "Jarraitu",
"follow_sent": "Eskaera bidalita!",
"follow_progress": "Eskatzen...",
"follow_progress": "Eskatzen",
"follow_again": "Eskaera berriro bidali?",
"follow_unfollow": "Jarraitzeari utzi",
"followees": "Jarraitzen",
@ -553,11 +546,11 @@
"subscribe": "Harpidetu",
"unsubscribe": "Harpidetza ezeztatu",
"unblock": "Blokeoa kendu",
"unblock_progress": "Blokeoa ezeztatzen...",
"block_progress": "Blokeatzen...",
"unblock_progress": "Blokeoa ezeztatzen",
"block_progress": "Blokeatzen",
"unmute": "Isiltasuna kendu",
"unmute_progress": "Isiltasuna kentzen...",
"mute_progress": "Isiltzen...",
"unmute_progress": "Isiltasuna kentzen",
"mute_progress": "Isiltzen",
"hide_repeats": "Ezkutatu errepikapenak",
"show_repeats": "Erakutsi errpekiapenak",
"admin_menu": {
@ -639,4 +632,4 @@
"password_reset_required": "Pasahitza berrezarri behar duzu saioa hasteko.",
"password_reset_required_but_mailer_is_disabled": "Pasahitza berrezarri behar duzu, baina pasahitza berrezartzeko aukera desgaituta dago. Mesedez, jarri harremanetan instantziaren administratzailearekin."
}
}
}

View file

@ -28,7 +28,12 @@
"disable": "Poista käytöstä",
"confirm": "Hyväksy",
"verify": "Varmenna",
"enable": "Ota käyttöön"
"enable": "Ota käyttöön",
"loading": "Ladataan…",
"error_retry": "Yritä uudelleen",
"retry": "Yritä uudelleen",
"close": "Sulje",
"peek": "Kurkkaa"
},
"login": {
"login": "Kirjaudu sisään",
@ -63,7 +68,8 @@
"who_to_follow": "Seurausehdotukset",
"preferences": "Asetukset",
"administration": "Ylläpito",
"search": "Haku"
"search": "Haku",
"bookmarks": "Kirjanmerkit"
},
"notifications": {
"broken_favorite": "Viestiä ei löydetty…",
@ -126,7 +132,12 @@
"public": "Tämä viesti näkyy kaikille",
"private": "Tämä viesti näkyy vain sinun seuraajillesi",
"unlisted": "Tämä viesti ei näy Julkisella Aikajanalla tai Koko Tunnettu Verkosto -aikajanalla"
}
},
"preview": "Esikatselu",
"preview_empty": "Tyhjä",
"empty_status_error": "Tyhjää viestiä ilman tiedostoja ei voi lähettää",
"media_description": "Tiedoston kuvaus",
"media_description_error": "Tiedostojen päivitys epäonnistui, yritä uudelleen"
},
"registration": {
"bio": "Kuvaus",
@ -152,7 +163,6 @@
"settings": {
"attachmentRadius": "Liitteet",
"attachments": "Liitteet",
"autoload": "Lataa vanhempia viestejä automaattisesti ruudun pohjalla",
"avatar": "Profiilikuva",
"avatarAltRadius": "Profiilikuvat (ilmoitukset)",
"avatarRadius": "Profiilikuvat",
@ -175,7 +185,7 @@
"data_import_export_tab": "Tietojen tuonti / vienti",
"default_vis": "Oletusnäkyvyysrajaus",
"delete_account": "Poista tili",
"delete_account_description": "Poista tilisi ja viestisi pysyvästi.",
"delete_account_description": "Poista tietosi ja lukitse tili pysyvästi.",
"delete_account_error": "Virhe poistaessa tiliäsi. Jos virhe jatkuu, ota yhteyttä palvelimesi ylläpitoon.",
"delete_account_instructions": "Syötä salasanasi vahvistaaksesi tilin poiston.",
"emoji_reactions_on_timeline": "Näytä emojireaktiot aikajanalla",
@ -239,7 +249,6 @@
"profile_tab": "Profiili",
"radii_help": "Aseta reunojen pyöristys (pikseleinä)",
"replies_in_timeline": "Keskustelut aikajanalla",
"reply_link_preview": "Keskusteluiden vastauslinkkien esikatselu",
"reply_visibility_all": "Näytä kaikki vastaukset",
"reply_visibility_following": "Näytä vain vastaukset minulle tai seuraamilleni käyttäjille",
"reply_visibility_self": "Näytä vain vastaukset minulle",
@ -273,7 +282,6 @@
"show_moderator_badge": "Näytä Moderaattori-merkki profiilissani",
"useStreamingApi": "Vastaanota viestiejä ja ilmoituksia reaaliajassa",
"notification_setting_filters": "Suodattimet",
"notification_setting": "Vastaanota ilmoituksia seuraavista:",
"notification_setting_privacy_option": "Piilota lähettäjä ja sisältö sovelluksen ulkopuolisista ilmoituksista",
"enable_web_push_notifications": "Ota käyttöön sovelluksen ulkopuoliset ilmoitukset",
"app_name": "Sovelluksen nimi",
@ -329,7 +337,7 @@
"post_status_content_type": "Uuden viestin sisällön muoto",
"user_mutes": "Käyttäjät",
"useStreamingApiWarning": "(Kokeellinen)",
"type_domains_to_mute": "Syötä mykistettäviä sivustoja",
"type_domains_to_mute": "Etsi mykistettäviä sivustoja",
"upload_a_photo": "Lataa kuva",
"fun": "Hupi",
"greentext": "Meeminuolet",
@ -479,10 +487,6 @@
"pad_emoji": "Välistä emojit välilyönneillä lisätessäsi niitä valitsimesta",
"mutes_tab": "Mykistykset",
"new_email": "Uusi sähköpostiosoite",
"notification_setting_follows": "Käyttäjät joita seuraat",
"notification_setting_non_follows": "Käyttäjät joita et seuraa",
"notification_setting_followers": "Käyttäjät jotka seuraavat sinua",
"notification_setting_non_followers": "Käyttäjät jotka eivät seuraa sinua",
"notification_setting_privacy": "Yksityisyys",
"notification_mutes": "Jos et halua ilmoituksia joltain käyttäjältä, käytä mykistystä.",
"notification_blocks": "Estäminen pysäyttää kaikki ilmoitukset käyttäjältä ja poistaa seurauksen.",
@ -490,7 +494,21 @@
"title": "Versio",
"backend_version": "Palvelimen versio",
"frontend_version": "Käyttöliittymän versio"
}
},
"reset_profile_background": "Nollaa taustakuva",
"reset_background_confirm": "Haluatko todella nollata taustakuvan?",
"mutes_and_blocks": "Mykistykset ja Estot",
"bot": "Tämä on bottitili",
"profile_fields": {
"label": "Profiilin metatiedot",
"add_field": "Lisää kenttä",
"name": "Nimi",
"value": "Sisältö"
},
"reset_avatar": "Nollaa profiilikuva",
"reset_profile_banner": "Nollaa profiilin tausta",
"reset_avatar_confirm": "Haluatko todella nollata profiilikuvan?",
"reset_banner_confirm": "Haluatko todella nollata profiilin taustan?"
},
"time": {
"day": "{0} päivä",
@ -536,7 +554,8 @@
"show_new": "Näytä uudet",
"up_to_date": "Ajantasalla",
"no_more_statuses": "Ei enempää viestejä",
"no_statuses": "Ei viestejä"
"no_statuses": "Ei viestejä",
"reload": "Päivitä"
},
"status": {
"favorites": "Tykkäykset",
@ -551,7 +570,15 @@
"mute_conversation": "Mykistä keskustelu",
"unmute_conversation": "Poista mykistys",
"status_unavailable": "Viesti ei saatavissa",
"copy_link": "Kopioi linkki"
"copy_link": "Kopioi linkki",
"bookmark": "Lisää kirjanmerkkeihin",
"unbookmark": "Poista kirjanmerkeistä",
"thread_muted": "Keskustelu mykistetty",
"thread_muted_and_words": ", sisältää sanat:",
"show_full_subject": "Näytä koko otsikko",
"hide_full_subject": "Piilota koko otsikko",
"show_content": "Näytä sisältö",
"hide_content": "Piilota sisältö"
},
"user_card": {
"approve": "Hyväksy",
@ -561,7 +588,7 @@
"follow": "Seuraa",
"follow_sent": "Pyyntö lähetetty!",
"follow_progress": "Pyydetään…",
"follow_again": "Lähetä pyyntö uudestaan",
"follow_again": "Lähetä pyyntö uudestaan?",
"follow_unfollow": "Älä seuraa",
"followees": "Seuraa",
"followers": "Seuraajat",
@ -601,7 +628,7 @@
"subscribe": "Tilaa",
"unsubscribe": "Poista tilaus",
"unblock": "Poista esto",
"unblock_progress": "Postetaan estoa…",
"unblock_progress": "Poistetaan estoa…",
"unmute": "Poista mykistys",
"unmute_progress": "Poistetaan mykistystä…",
"mute_progress": "Mykistetään…",
@ -625,7 +652,8 @@
"user_settings": "Käyttäjäasetukset",
"add_reaction": "Lisää Reaktio",
"accept_follow_request": "Hyväksy seurauspyyntö",
"reject_follow_request": "Hylkää seurauspyyntö"
"reject_follow_request": "Hylkää seurauspyyntö",
"bookmark": "Kirjanmerkki"
},
"upload": {
"error": {
@ -675,7 +703,7 @@
"mute": "Mykistä",
"unmute": "Poista mykistys",
"mute_progress": "Mykistetään…",
"unmute_progress": "Poistetaan mykistyst…"
"unmute_progress": "Poistetaan mykistystä…"
},
"exporter": {
"export": "Vie",
@ -743,5 +771,8 @@
"people_talking": "{0} käyttäjää puhuvat",
"person_talking": "{0} käyttäjä puhuu",
"no_results": "Ei tuloksia"
},
"errors": {
"storage_unavailable": "Pleroma ei voinut käyttää selaimen muistia. Kirjautumisesi ja paikalliset asetukset eivät tallennu ja saatat kohdata odottamattomia ongelmia. Yritä sallia evästeet."
}
}

View file

@ -182,7 +182,6 @@
},
"attachmentRadius": "Pièces jointes",
"attachments": "Pièces jointes",
"autoload": "Charger la suite automatiquement une fois le bas de la page atteint",
"avatar": "Avatar",
"avatarAltRadius": "Avatars (Notifications)",
"avatarRadius": "Avatars",
@ -282,7 +281,6 @@
"profile_tab": "Profil",
"radii_help": "Vous pouvez ici choisir le niveau d'arrondi des angles de l'interface (en pixels)",
"replies_in_timeline": "Réponses au journal",
"reply_link_preview": "Afficher un aperçu lors du survol de liens vers une réponse",
"reply_visibility_all": "Montrer toutes les réponses",
"reply_visibility_following": "Afficher uniquement les réponses adressées à moi ou aux personnes que je suis",
"reply_visibility_self": "Afficher uniquement les réponses adressées à moi",
@ -319,11 +317,6 @@
"true": "oui"
},
"notifications": "Notifications",
"notification_setting": "Reçevoir les notifications de:",
"notification_setting_follows": "Utilisateurs que vous suivez",
"notification_setting_non_follows": "Utilisateurs que vous ne suivez pas",
"notification_setting_followers": "Utilisateurs qui vous suivent",
"notification_setting_non_followers": "Utilisateurs qui ne vous suivent pas",
"notification_mutes": "Pour stopper la récéption de notifications d'un utilisateur particulier, utilisez un masquage.",
"notification_blocks": "Bloquer un utilisateur stoppe toute notification et se désabonne de lui.",
"enable_web_push_notifications": "Activer les notifications de push web",
@ -350,7 +343,8 @@
"migration_snapshot_ok": "Pour être sûr un instantanée du thème à été chargé. Vos pouvez essayer de charger ses données.",
"fe_downgraded": "Retour en arrière de la version de PleromaFE.",
"fe_upgraded": "Le moteur de thème PleromaFE à été mis à jour après un changement de version.",
"snapshot_missing": "Aucun instantané du thème à été trouvé dans le fichier, il peut y avoir un rendu différent à la vision originelle."
"snapshot_missing": "Aucun instantané du thème à été trouvé dans le fichier, il peut y avoir un rendu différent à la vision originelle.",
"snapshot_present": "Un instantané du thème à été chargé, toutes les valeurs sont dont écrasées. Vous pouvez autrement charger le thème complètement."
},
"keep_as_is": "Garder tel-quel",
"use_source": "Nouvelle version"
@ -626,7 +620,7 @@
"reject": "Rejeté",
"replace": "Remplacer",
"keyword_policies": "Politiques par mot-clés",
"ftl_removal": "Suppression du flux \"Ensemble du réseau connu\"",
"ftl_removal": "Suppression du flux fédéré",
"is_replaced_by": "→"
},
"simple": {

View file

@ -36,7 +36,7 @@
"twkn": "An Líonra Iomlán"
},
"notifications": {
"broken_favorite": "Post anaithnid. Cuardach dó...",
"broken_favorite": "Post anaithnid. Cuardach dó",
"favorited_you": "toghadh le do phost",
"followed_you": "lean tú",
"load_older": "Luchtaigh fógraí aosta",
@ -73,7 +73,6 @@
"settings": {
"attachmentRadius": "Ceangaltáin",
"attachments": "Ceangaltáin",
"autoload": "Cumasaigh luchtú uathoibríoch nuair a scrollaítear go bun",
"avatar": "Phictúir phrófíle",
"avatarAltRadius": "Phictúirí phrófíle (Fograí)",
"avatarRadius": "Phictúirí phrófíle",
@ -85,7 +84,7 @@
"cOrange": "Oráiste (Cosúil)",
"cRed": "Dearg (Cealaigh)",
"change_password": "Athraigh do pasfhocal",
"change_password_error": "Bhí fadhb ann ag athrú do pasfhocail",
"change_password_error": "Bhí fadhb ann ag athrú do pasfhocail.",
"changed_password": "Athraigh an pasfhocal go rathúil!",
"collapse_subject": "Poist a chosc le teidil",
"confirm_new_password": "Deimhnigh do pasfhocal nua",
@ -147,7 +146,6 @@
"profile_tab": "Próifíl",
"radii_help": "Cruinniú imeall comhéadan a chumrú (i bpicteilíní)",
"replies_in_timeline": "Freagraí sa amlíne",
"reply_link_preview": "Cumasaigh réamhamharc nasc freagartha ar chlár na luiche",
"reply_visibility_all": "Taispeáin gach freagra",
"reply_visibility_following": "Taispeáin freagraí amháin atá dírithe ar mise nó ar úsáideoirí atá mé ag leanúint",
"reply_visibility_self": "Taispeáin freagraí amháin atá dírithe ar mise",
@ -162,7 +160,7 @@
"streaming": "Cumasaigh post nua a shruthú uathoibríoch nuair a scrollaítear go barr an leathanaigh",
"text": "Téacs",
"theme": "Téama",
"theme_help": "Úsáid cód daith hex (#rrggbb) chun do schéim a saincheapadh",
"theme_help": "Úsáid cód daith hex (#rrggbb) chun do schéim a saincheapadh.",
"tooltipRadius": "Bileoga eolais",
"user_settings": "Socruithe úsáideora",
"values": {

View file

@ -70,9 +70,9 @@
"preferences": "העדפות"
},
"notifications": {
"broken_favorite": "סטאטוס לא ידוע, מחפש...",
"broken_favorite": "סטאטוס לא ידוע, מחפש",
"favorited_you": "אהב את הסטטוס שלך",
"followed_you": "עקב אחריך!",
"followed_you": "עקב אחריך",
"load_older": "טען התראות ישנות",
"notifications": "התראות",
"read": "קרא!",
@ -140,7 +140,6 @@
"app_name": "שם האפליקציה",
"attachmentRadius": "צירופים",
"attachments": "צירופים",
"autoload": "החל טעינה אוטומטית בגלילה לתחתית הדף",
"avatar": "תמונת פרופיל",
"avatarAltRadius": "תמונות פרופיל (התראות)",
"avatarRadius": "תמונות פרופיל",
@ -179,7 +178,7 @@
"follow_export": "יצוא עקיבות",
"follow_export_button": "ייצא את הנעקבים שלך לקובץ csv",
"follow_import": "יבוא עקיבות",
"follow_import_error": "שגיאה בייבוא נעקבים.",
"follow_import_error": "שגיאה בייבוא נעקבים",
"follows_imported": "נעקבים יובאו! ייקח זמן מה לעבד אותם.",
"foreground": "חזית",
"general": "כללי",
@ -240,7 +239,6 @@
"profile_tab": "פרופיל",
"radii_help": "קבע מראש עיגול פינות לממשק (בפיקסלים)",
"replies_in_timeline": "תגובות בציר הזמן",
"reply_link_preview": "החל תצוגה מקדימה של לינק-תגובה בעת ריחוף עם העכבר",
"reply_visibility_all": "הראה את כל התגובות",
"reply_visibility_following": "הראה תגובות שמופנות אליי או לעקובים שלי בלבד",
"reply_visibility_self": "הראה תגובות שמופנות אליי בלבד",
@ -313,7 +311,7 @@
"favorites": "מועדפים",
"follow": "עקוב",
"follow_sent": "בקשה נשלחה!",
"follow_progress": "מבקש...",
"follow_progress": "מבקש",
"follow_again": "שלח בקשה שוב?",
"follow_unfollow": "בטל עקיבה",
"followees": "נעקבים",
@ -329,11 +327,11 @@
"report": "דווח",
"statuses": "סטטוסים",
"unblock": "הסר חסימה",
"unblock_progress": "מסיר חסימה...",
"block_progress": "חוסם...",
"unblock_progress": "מסיר חסימה",
"block_progress": "חוסם",
"unmute": "הסר השתקה",
"unmute_progress": "מסיר השתקה...",
"mute_progress": "משתיק...",
"unmute_progress": "מסיר השתקה",
"mute_progress": "משתיק",
"admin_menu": {
"moderation": "ניהול (צוות)",
"grant_admin": "הפוך למנהל",
@ -379,7 +377,7 @@
"favorite": "מועדף",
"user_settings": "הגדרות משתמש"
},
"upload":{
"upload": {
"error": {
"base": "העלאה נכשלה.",
"file_too_big": "קובץ גדול מדי [{filesize}{filesizeunit} / {allowedsize}{allowedsizeunit}]",

View file

@ -38,7 +38,6 @@
},
"settings": {
"attachments": "Csatolmányok",
"autoload": "Autoatikus betöltés engedélyezése lap aljára görgetéskor",
"avatar": "Avatár",
"bio": "Bio",
"current_avatar": "Jelenlegi avatár",
@ -52,7 +51,6 @@
"nsfw_clickthrough": "NSFW átkattintási tartalom elrejtésének engedélyezése",
"profile_background": "Profil háttérkép",
"profile_banner": "Profil Banner",
"reply_link_preview": "Válasz-link előzetes mutatása egér rátételkor",
"set_new_avatar": "Új avatár",
"set_new_profile_background": "Új profil háttér beállítása",
"set_new_profile_banner": "Új profil banner",

View file

@ -35,7 +35,8 @@
"search": "Ricerca",
"who_to_follow": "Chi seguire",
"preferences": "Preferenze",
"bookmarks": "Segnalibri"
"bookmarks": "Segnalibri",
"chats": "Conversazioni"
},
"notifications": {
"followed_you": "ti segue",
@ -52,7 +53,6 @@
},
"settings": {
"attachments": "Allegati",
"autoload": "Abilita caricamento automatico quando raggiungi il fondo pagina",
"avatar": "Icona utente",
"bio": "Introduzione",
"current_avatar": "La tua icona attuale",
@ -66,7 +66,6 @@
"nsfw_clickthrough": "Fai click per visualizzare gli allegati offuscati",
"profile_background": "Sfondo della tua pagina",
"profile_banner": "Stendardo del tuo profilo",
"reply_link_preview": "Visualizza le risposte al passaggio del cursore",
"set_new_avatar": "Scegli una nuova icona",
"set_new_profile_background": "Scegli un nuovo sfondo per la tua pagina",
"set_new_profile_banner": "Scegli un nuovo stendardo per il tuo profilo",
@ -85,7 +84,7 @@
"change_password": "Cambia password",
"change_password_error": "C'è stato un problema durante il cambiamento della password.",
"changed_password": "Password cambiata correttamente!",
"collapse_subject": "Ripiega messaggi con Oggetto",
"collapse_subject": "Ripiega messaggi con oggetto",
"confirm_new_password": "Conferma la nuova password",
"current_password": "La tua password attuale",
"data_import_export_tab": "Importa o esporta dati",
@ -257,7 +256,12 @@
"panel_header": "Titolo pannello",
"badge_notification": "Notifica",
"popover": "Suggerimenti, menù, sbalzi",
"toggled": "Scambiato"
"toggled": "Scambiato",
"chat": {
"border": "Bordo",
"outgoing": "Inviati",
"incoming": "Ricevuti"
}
},
"common_colors": {
"rgbo": "Icone, accenti, medaglie",
@ -332,11 +336,6 @@
"notification_mutes": "Per non ricevere notifiche da uno specifico utente, zittiscilo.",
"notification_setting_privacy_option": "Nascondi mittente e contenuti delle notifiche push",
"notification_setting_privacy": "Privacy",
"notification_setting_followers": "Utenti che ti seguono",
"notification_setting_non_followers": "Utenti che non ti seguono",
"notification_setting_non_follows": "Utenti che non segui",
"notification_setting_follows": "Utenti che segui",
"notification_setting": "Ricevi notifiche da:",
"notification_setting_filters": "Filtri",
"notifications": "Notifiche",
"greentext": "Frecce da meme",
@ -398,7 +397,16 @@
"frontend_version": "Versione interfaccia",
"backend_version": "Versione backend",
"title": "Versione"
}
},
"reset_avatar": "Azzera icona",
"reset_profile_background": "Azzera sfondo profilo",
"reset_profile_banner": "Azzera stendardo profilo",
"reset_avatar_confirm": "Vuoi veramente azzerare l'icona?",
"reset_banner_confirm": "Vuoi veramente azzerare lo stendardo?",
"reset_background_confirm": "Vuoi veramente azzerare lo sfondo?",
"chatMessageRadius": "Messaggi istantanei",
"notification_setting_hide_notification_contents": "Nascondi mittente e contenuti delle notifiche push",
"notification_setting_block_from_strangers": "Blocca notifiche da utenti che non segui"
},
"timeline": {
"error_fetching": "Errore nell'aggiornamento",
@ -427,7 +435,47 @@
"block": "Blocca",
"blocked": "Bloccato!",
"deny": "Nega",
"remote_follow": "Segui da remoto"
"remote_follow": "Segui da remoto",
"admin_menu": {
"delete_user_confirmation": "Ne sei completamente sicuro? Quest'azione non può essere annullata.",
"delete_user": "Elimina utente",
"quarantine": "I messaggi non arriveranno alle altre stanze",
"disable_any_subscription": "Rendi utente non seguibile",
"disable_remote_subscription": "Blocca i tentativi di seguirlo da altre stanze",
"sandbox": "Rendi tutti i messaggi solo per seguaci",
"force_unlisted": "Rendi tutti i messaggi invisibili",
"strip_media": "Rimuovi ogni allegato ai messaggi",
"force_nsfw": "Oscura tutti i messaggi",
"delete_account": "Elimina profilo",
"deactivate_account": "Disattiva profilo",
"activate_account": "Attiva profilo",
"revoke_moderator": "Divesti Moderatore",
"grant_moderator": "Crea Moderatore",
"revoke_admin": "Divesti Amministratore",
"grant_admin": "Crea Amministratore",
"moderation": "Moderazione"
},
"show_repeats": "Mostra condivisioni",
"hide_repeats": "Nascondi condivisioni",
"mute_progress": "Zittisco…",
"unmute_progress": "Riabilito…",
"unmute": "Riabilita",
"block_progress": "Blocco…",
"unblock_progress": "Sblocco…",
"unblock": "Sblocca",
"unsubscribe": "Disdici",
"subscribe": "Abbònati",
"report": "Segnala",
"mention": "Menzioni",
"media": "Media",
"its_you": "Sei tu!",
"hidden": "Nascosto",
"follow_unfollow": "Disconosci",
"follow_again": "Reinvio richiesta?",
"follow_progress": "Richiedo…",
"follow_sent": "Richiesta inviata!",
"favorites": "Preferiti",
"message": "Contatta"
},
"chat": {
"title": "Chat"
@ -439,7 +487,8 @@
"scope_options": "Opzioni visibilità",
"text_limit": "Lunghezza massima",
"title": "Caratteristiche",
"who_to_follow": "Chi seguire"
"who_to_follow": "Chi seguire",
"pleroma_chat_messages": "Chiacchiere"
},
"finder": {
"error_fetching_user": "Errore nel recupero dell'utente",
@ -493,7 +542,9 @@
"new_status": "Nuovo messaggio",
"empty_status_error": "Non puoi pubblicare messaggi vuoti senza allegati",
"preview_empty": "Vuoto",
"preview": "Anteprima"
"preview": "Anteprima",
"media_description_error": "Allegati non caricati, riprova",
"media_description": "Descrizione allegati"
},
"registration": {
"bio": "Introduzione",
@ -517,7 +568,9 @@
"captcha": "CAPTCHA"
},
"user_profile": {
"timeline_title": "Sequenza dell'Utente"
"timeline_title": "Sequenza dell'Utente",
"profile_loading_error": "Spiacente, c'è stato un errore nel caricamento del profilo.",
"profile_does_not_exist": "Spiacente, questo profilo non esiste."
},
"who_to_follow": {
"more": "Altro",
@ -626,7 +679,22 @@
"pin": "Intesta al profilo",
"delete": "Elimina messaggio",
"repeats": "Condivisi",
"favorites": "Preferiti"
"favorites": "Preferiti",
"hide_content": "Nascondi contenuti",
"show_content": "Mostra contenuti",
"hide_full_subject": "Nascondi intero oggetto",
"show_full_subject": "Mostra intero oggetto",
"thread_muted_and_words": ", contiene:",
"thread_muted": "Discussione zittita",
"copy_link": "Copia collegamento",
"status_unavailable": "Messaggio non disponibile",
"unmute_conversation": "Riabilita conversazione",
"mute_conversation": "Zittisci conversazione",
"replies_list": "Risposte:",
"reply_to": "Rispondi a",
"delete_confirm": "Vuoi veramente eliminare questo messaggio?",
"unbookmark": "Rimuovi segnalibro",
"bookmark": "Aggiungi segnalibro"
},
"time": {
"years_short": "{0}a",
@ -661,5 +729,81 @@
"day_short": "{0}g",
"days": "{0} giorni",
"day": "{0} giorno"
},
"user_reporting": {
"title": "Segnalo {0}",
"additional_comments": "Osservazioni accessorie",
"generic_error": "C'è stato un errore nell'elaborazione della tua richiesta.",
"submit": "Invia",
"forward_to": "Inoltra a {0}",
"forward_description": "Il profilo appartiene ad un'altra stanza. Inviare la segnalazione anche a quella?",
"add_comment_description": "La segnalazione sarà inviata ai moderatori della tua stanza. Puoi motivarla qui sotto:"
},
"password_reset": {
"password_reset_required_but_mailer_is_disabled": "Devi reimpostare la tua password, ma non puoi farlo. Contatta il tuo amministratore.",
"password_reset_required": "Devi reimpostare la tua password per poter continuare.",
"password_reset_disabled": "Non puoi azzerare la tua password. Contatta il tuo amministratore.",
"too_many_requests": "Hai raggiunto il numero massimo di tentativi, riprova più tardi.",
"not_found": "Non ho trovato questa email o nome utente.",
"return_home": "Torna alla pagina principale",
"check_email": "Controlla la tua posta elettronica.",
"placeholder": "La tua email o nome utente",
"instruction": "Inserisci il tuo indirizzo email o il tuo nome utente. Ti invieremo un collegamento per reimpostare la tua password.",
"password_reset": "Azzera password",
"forgot_password": "Password dimenticata?"
},
"search": {
"no_results": "Nessun risultato",
"people_talking": "{count} partecipanti",
"person_talking": "{count} partecipante",
"hashtags": "Etichette",
"people": "Utenti"
},
"upload": {
"file_size_units": {
"TiB": "TiB",
"GiB": "GiB",
"MiB": "MiB",
"KiB": "KiB",
"B": "B"
},
"error": {
"default": "Riprova in seguito",
"file_too_big": "File troppo pesante [{filesize}{filesizeunit} / {allowedsize}{allowedsizeunit}]",
"base": "Caricamento fallito."
}
},
"tool_tip": {
"bookmark": "Aggiungi segnalibro",
"reject_follow_request": "Rifiuta seguace",
"accept_follow_request": "Accetta seguace",
"user_settings": "Impostazioni utente",
"add_reaction": "Reagisci",
"favorite": "Gradisci",
"reply": "Rispondi",
"repeat": "Ripeti",
"media_upload": "Carica allegati"
},
"display_date": {
"today": "Oggi"
},
"file_type": {
"file": "File",
"image": "Immagine",
"video": "Video",
"audio": "Audio"
},
"chats": {
"empty_chat_list_placeholder": "Non hai conversazioni. Contatta qualcuno!",
"error_sending_message": "Errore. Il messaggio non è stato inviato.",
"error_loading_chat": "Errore. La conversazione non è stata caricata.",
"delete_confirm": "Vuoi veramente eliminare questo messaggio?",
"more": "Altro",
"empty_message_error": "Non puoi inviare messaggi vuoti",
"new": "Nuova conversazione",
"chats": "Conversazioni",
"delete": "Elimina",
"message_user": "Contatta {nickname}",
"you": "Tu:"
}
}

View file

@ -27,7 +27,7 @@
},
"exporter": {
"export": "エクスポート",
"processing": "おまちください。しばらくすると、あなたのファイルをダウンロードするように、メッセージがでます"
"processing": "おまちください。しばらくすると、あなたのファイルをダウンロードするように、メッセージがでます"
},
"features_panel": {
"chat": "チャット",
@ -39,7 +39,7 @@
"who_to_follow": "おすすめユーザー"
},
"finder": {
"error_fetching_user": "ユーザーけんさくがエラーになりました",
"error_fetching_user": "ユーザーけんさくがエラーになりました",
"find_user": "ユーザーをさがす"
},
"general": {
@ -80,9 +80,9 @@
"enter_recovery_code": "リカバリーコードをいれてください",
"enter_two_factor_code": "2-ファクターコードをいれてください",
"recovery_code": "リカバリーコード",
"heading" : {
"totp" : "2-ファクターにんしょう",
"recovery" : "2-ファクターリカバリー"
"heading": {
"totp": "2-ファクターにんしょう",
"recovery": "2-ファクターリカバリー"
}
},
"media_modal": {
@ -107,7 +107,7 @@
"preferences": "せってい"
},
"notifications": {
"broken_favorite": "ステータスがみつかりません。さがしています...",
"broken_favorite": "ステータスがみつかりません。さがしています",
"favorited_you": "あなたのステータスがおきにいりされました",
"followed_you": "フォローされました",
"load_older": "ふるいつうちをみる",
@ -172,10 +172,10 @@
"unlisted": "このとうこうは、パブリックタイムラインと、つながっているすべてのネットワークでは、みることができません"
},
"scope": {
"direct": "ダイレクト: メンションされたユーザーのみにとどきます",
"private": "フォロワーげんてい: フォロワーのみにとどきます",
"public": "パブリック: パブリックタイムラインにとどきます",
"unlisted": "アンリステッド: パブリックタイムラインにとどきません"
"direct": "ダイレクト: メンションされたユーザーのみにとどきます",
"private": "フォロワーげんてい: フォロワーのみにとどきます",
"public": "パブリック: パブリックタイムラインにとどきます",
"unlisted": "アンリステッド: パブリックタイムラインにとどきません"
}
},
"registration": {
@ -212,17 +212,17 @@
"security": "セキュリティ",
"enter_current_password_to_confirm": "あなたのアイデンティティをたしかめるため、あなたのいまのパスワードをかいてください",
"mfa": {
"otp" : "OTP",
"setup_otp" : "OTPをつくる",
"wait_pre_setup_otp" : "OTPをよういしています",
"confirm_and_enable" : "OTPをたしかめて、ゆうこうにする",
"otp": "OTP",
"setup_otp": "OTPをつくる",
"wait_pre_setup_otp": "OTPをよういしています",
"confirm_and_enable": "OTPをたしかめて、ゆうこうにする",
"title": "2-ファクターにんしょう",
"generate_new_recovery_codes" : "あたらしいリカバリーコードをつくる",
"warning_of_generate_new_codes" : "あたらしいリカバリーコードをつくったら、ふるいコードはつかえなくなります。",
"recovery_codes" : "リカバリーコード。",
"waiting_a_recovery_codes": "バックアップコードをうけとっています...",
"recovery_codes_warning" : "コードをかきうつすか、ひとにみられないところにセーブしてください。そうでなければ、あなたはこのコードをふたたびみることはできません。もしあなたが、2FAアプリのアクセスをうしなって、なおかつ、リカバリーコードもおもいだせないならば、あなたはあなたのアカウントから、しめだされます。",
"authentication_methods" : "にんしょうメソッド",
"generate_new_recovery_codes": "あたらしいリカバリーコードをつくる",
"warning_of_generate_new_codes": "あたらしいリカバリーコードをつくったら、ふるいコードはつかえなくなります。",
"recovery_codes": "リカバリーコード。",
"waiting_a_recovery_codes": "バックアップコードをうけとっています",
"recovery_codes_warning": "コードをかきうつすか、ひとにみられないところにセーブしてください。そうでなければ、あなたはこのコードをふたたびみることはできません。もしあなたが、2FAアプリのアクセスをうしなって、なおかつ、リカバリーコードもおもいだせないならば、あなたはあなたのアカウントから、しめだされます。",
"authentication_methods": "にんしょうメソッド",
"scan": {
"title": "スキャン",
"desc": "あなたの2-ファクターアプリをつかって、このQRコードをスキャンするか、テキストキーをうちこんでください:",
@ -234,7 +234,6 @@
},
"attachmentRadius": "ファイル",
"attachments": "ファイル",
"autoload": "したにスクロールしたとき、じどうてきによみこむ。",
"avatar": "アバター",
"avatarAltRadius": "つうちのアバター",
"avatarRadius": "アバター",
@ -274,12 +273,12 @@
"pad_emoji": "えもじをピッカーでえらんだとき、えもじのまわりにスペースをいれる",
"export_theme": "セーブ",
"filtering": "フィルタリング",
"filtering_explanation": "これらのことばをふくむすべてのものがミュートされます。1ぎょうに1つのことばをかいてください",
"filtering_explanation": "これらのことばをふくむすべてのものがミュートされます。1ぎょうに1つのことばをかいてください",
"follow_export": "フォローのエクスポート",
"follow_export_button": "エクスポート",
"follow_export_processing": "おまちください。まもなくファイルをダウンロードできます。",
"follow_import": "フォローインポート",
"follow_import_error": "フォローのインポートがエラーになりました",
"follow_import_error": "フォローのインポートがエラーになりました",
"follows_imported": "フォローがインポートされました! すこしじかんがかかるかもしれません。",
"foreground": "フォアグラウンド",
"general": "ぜんぱん",
@ -341,9 +340,8 @@
"profile_background": "プロフィールのバックグラウンド",
"profile_banner": "プロフィールバナー",
"profile_tab": "プロフィール",
"radii_help": "インターフェースのまるさをせっていする",
"radii_help": "インターフェースのまるさをせっていする",
"replies_in_timeline": "タイムラインのリプライ",
"reply_link_preview": "カーソルをかさねたとき、リプライのプレビューをみる",
"reply_visibility_all": "すべてのリプライをみる",
"reply_visibility_following": "わたしにあてられたリプライと、フォローしているひとからのリプライをみる",
"reply_visibility_self": "わたしにあてられたリプライをみる",
@ -369,7 +367,7 @@
"streaming": "うえまでスクロールしたとき、じどうてきにストリーミングする",
"text": "もじ",
"theme": "テーマ",
"theme_help": "カラーテーマをカスタマイズできます",
"theme_help": "カラーテーマをカスタマイズできます",
"theme_help_v2_1": "チェックボックスをONにすると、コンポーネントごとに、いろと、とうめいどを、オーバーライドできます。「すべてクリア」ボタンをおすと、すべてのオーバーライドを、やめます。",
"theme_help_v2_2": "バックグラウンドとテキストのコントラストをあらわすアイコンがあります。マウスをホバーすると、くわしいせつめいがでます。とうめいないろをつかっているときは、もっともわるいばあいのコントラストがしめされます。",
"upload_a_photo": "がぞうをアップロード",
@ -382,11 +380,6 @@
"fun": "おたのしみ",
"greentext": "ミームやじるし",
"notifications": "つうち",
"notification_setting": "つうちをうけとる:",
"notification_setting_follows": "あなたがフォローしているひとから",
"notification_setting_non_follows": "あなたがフォローしていないひとから",
"notification_setting_followers": "あなたをフォローしているひとから",
"notification_setting_non_followers": "あなたをフォローしていないひとから",
"notification_mutes": "あるユーザーからのつうちをとめるには、ミュートしてください。",
"notification_blocks": "ブロックしているユーザーからのつうちは、すべてとまります。",
"enable_web_push_notifications": "ウェブプッシュつうちをゆるす",
@ -409,8 +402,8 @@
"hint": "コントラストは {ratio} です。{level}。({context})",
"level": {
"aa": "AAレベルガイドライン (ミニマル) をみたします",
"aaa": "AAAレベルガイドライン (レコメンデッド) をみたします",
"bad": "ガイドラインをみたしません"
"aaa": "AAAレベルガイドライン (レコメンデッド) をみたします",
"bad": "ガイドラインをみたしません"
},
"context": {
"18pt": "おおきい (18ポイントいじょう) テキスト",
@ -454,8 +447,8 @@
"always_drop_shadow": "ブラウザーがサポートしていれば、つねに {0} がつかわれます。",
"drop_shadow_syntax": "{0} は、{1} パラメーターと {2} キーワードをサポートしていません。",
"avatar_inset": "うちがわのかげと、そとがわのかげを、いっしょにつかうと、とうめいなアバターが、へんなみためになります。",
"spread_zero": "ひろがりが 0 よりもおおきなかげは、0 とおなじです",
"inset_classic": "うちがわのかげは {0} をつかいます"
"spread_zero": "ひろがりが 0 よりもおおきなかげは、0 とおなじです",
"inset_classic": "うちがわのかげは {0} をつかいます"
},
"components": {
"panel": "パネル",
@ -490,7 +483,7 @@
"content": "ほんぶん",
"error": "エラーのれい",
"button": "ボタン",
"text": "これは{0}と{1}のれいです",
"text": "これは{0}と{1}のれいです",
"mono": "monospace",
"input": "はねだくうこうに、つきました。",
"faint_link": "とてもたすけになるマニュアル",
@ -593,11 +586,11 @@
"subscribe": "サブスクライブ",
"unsubscribe": "サブスクライブをやめる",
"unblock": "ブロックをやめる",
"unblock_progress": "ブロックをとりけしています...",
"block_progress": "ブロックしています...",
"unblock_progress": "ブロックをとりけしています",
"block_progress": "ブロックしています",
"unmute": "ミュートをやめる",
"unmute_progress": "ミュートをとりけしています...",
"mute_progress": "ミュートしています...",
"unmute_progress": "ミュートをとりけしています",
"mute_progress": "ミュートしています",
"hide_repeats": "リピートをかくす",
"show_repeats": "リピートをみる",
"admin_menu": {
@ -645,11 +638,11 @@
"favorite": "おきにいり",
"user_settings": "ユーザーせってい"
},
"upload":{
"upload": {
"error": {
"base": "アップロードにしっぱいしました。",
"file_too_big": "ファイルがおおきすぎます [{filesize} {filesizeunit} / {allowedsize} {allowedsizeunit}]",
"default": "しばらくしてから、ためしてください"
"base": "アップロードにしっぱいしました。",
"file_too_big": "ファイルがおおきすぎます [{filesize} {filesizeunit} / {allowedsize} {allowedsizeunit}]",
"default": "しばらくしてから、ためしてください"
},
"file_size_units": {
"B": "B",

View file

@ -203,7 +203,6 @@
},
"attachmentRadius": "ファイル",
"attachments": "ファイル",
"autoload": "下にスクロールしたとき、自動的に読み込む。",
"avatar": "アバター",
"avatarAltRadius": "通知のアバター",
"avatarRadius": "アバター",
@ -308,7 +307,6 @@
"profile_tab": "プロフィール",
"radii_help": "インターフェースの丸さを設定する。",
"replies_in_timeline": "タイムラインのリプライ",
"reply_link_preview": "カーソルを重ねたとき、リプライのプレビューを見る",
"reply_visibility_all": "すべてのリプライを見る",
"reply_visibility_following": "私に宛てられたリプライと、フォローしている人からのリプライを見る",
"reply_visibility_self": "私に宛てられたリプライを見る",
@ -345,11 +343,6 @@
"true": "はい"
},
"notifications": "通知",
"notification_setting": "通知を受け取る:",
"notification_setting_follows": "あなたがフォローしているユーザーから",
"notification_setting_non_follows": "あなたがフォローしていないユーザーから",
"notification_setting_followers": "あなたをフォローしているユーザーから",
"notification_setting_non_followers": "あなたをフォローしていないユーザーから",
"notification_mutes": "特定のユーザーからの通知を止めるには、ミュートしてください。",
"notification_blocks": "ブロックしているユーザーからの通知は、すべて止まります。",
"enable_web_push_notifications": "ウェブプッシュ通知を許可する",

View file

@ -90,7 +90,6 @@
"settings": {
"attachmentRadius": "첨부물",
"attachments": "첨부물",
"autoload": "최하단에 도착하면 자동으로 로드 활성화",
"avatar": "아바타",
"avatarAltRadius": "아바타 (알림)",
"avatarRadius": "아바타",
@ -172,7 +171,6 @@
"profile_tab": "프로필",
"radii_help": "인터페이스 모서리 둥글기 (픽셀 단위)",
"replies_in_timeline": "답글을 타임라인에",
"reply_link_preview": "마우스를 올려서 답글 링크 미리보기 활성화",
"reply_visibility_all": "모든 답글 보기",
"reply_visibility_following": "나에게 직접 오는 답글이나 내가 팔로우 중인 사람에게서 오는 답글만 표시",
"reply_visibility_self": "나에게 직접 전송 된 답글만 보이기",

View file

@ -193,7 +193,6 @@
},
"attachmentRadius": "Vedlegg",
"attachments": "Vedlegg",
"autoload": "Automatisk lasting når du blar ned til bunnen",
"avatar": "Profilbilde",
"avatarAltRadius": "Profilbilde (Varslinger)",
"avatarRadius": "Profilbilde",
@ -293,7 +292,6 @@
"profile_tab": "Profil",
"radii_help": "Bestem hvor runde hjørnene i brukergrensesnittet skal være (i piksler)",
"replies_in_timeline": "Svar på tidslinje",
"reply_link_preview": "Vis en forhåndsvisning når du holder musen over svar til en status",
"reply_visibility_all": "Vis alle svar",
"reply_visibility_following": "Vis bare svar som er til meg eller folk jeg følger",
"reply_visibility_self": "Vis bare svar som er til meg",
@ -330,11 +328,6 @@
"true": "ja"
},
"notifications": "Varsler",
"notification_setting": "Motta varsler i fra:",
"notification_setting_follows": "Brukere du følger",
"notification_setting_non_follows": "Brukere du ikke følger",
"notification_setting_followers": "Brukere som følger deg",
"notification_setting_non_followers": "Brukere som ikke følger deg",
"notification_mutes": "For å stoppe å motta varsler i fra en spesifikk bruker, kan du dempe dem.",
"notification_blocks": "Hvis du blokkerer en bruker vil det stoppe alle varsler og i tilleg få dem til å slutte å følge deg",
"enable_web_push_notifications": "Skru på pushnotifikasjoner i nettlesere",

View file

@ -136,7 +136,6 @@
"settings": {
"attachmentRadius": "Bijlages",
"attachments": "Bijlages",
"autoload": "Automatisch laden inschakelen wanneer tot de bodem gescrold wordt",
"avatar": "Avatar",
"avatarAltRadius": "Avatars (Meldingen)",
"avatarRadius": "Avatars",
@ -217,7 +216,6 @@
"profile_tab": "Profiel",
"radii_help": "Stel afronding van hoeken in de interface in (in pixels)",
"replies_in_timeline": "Antwoorden in tijdlijn",
"reply_link_preview": "Antwoord-link weergave inschakelen bij aanwijzen met muisaanwijzer",
"reply_visibility_all": "Alle antwoorden tonen",
"reply_visibility_following": "Enkel antwoorden tonen die aan mij of gevolgde gebruikers gericht zijn",
"reply_visibility_self": "Enkel antwoorden tonen die aan mij gericht zijn",
@ -390,9 +388,6 @@
"link": "een leuke kleine link"
}
},
"notification_setting_follows": "Gebruikers die je volgt",
"notification_setting_non_follows": "Gebruikers die je niet volgt",
"notification_setting_followers": "Gebruikers die je volgen",
"notification_setting_privacy": "Privacy",
"notification_setting_privacy_option": "Verberg de afzender en inhoud van push meldingen",
"notification_mutes": "Om niet langer meldingen te ontvangen van een specifieke gebruiker, kun je deze negeren.",
@ -460,7 +455,6 @@
"upload_a_photo": "Upload een foto",
"fun": "Plezier",
"greentext": "Meme pijlen",
"notification_setting": "Ontvang meldingen van:",
"block_export_button": "Exporteer je geblokkeerde gebruikers naar een csv bestand",
"block_import_error": "Fout bij importeren blokkades",
"discoverable": "Sta toe dat dit account ontdekt kan worden in zoekresultaten en andere diensten",
@ -469,7 +463,6 @@
"hide_follows_description": "Niet tonen wie ik volg",
"show_moderator_badge": "Moderators badge tonen in mijn profiel",
"notification_setting_filters": "Filters",
"notification_setting_non_followers": "Gebruikers die je niet volgen",
"notification_blocks": "Door een gebruiker te blokkeren, ontvang je geen meldingen meer van de gebruiker en wordt je abonnement op de gebruiker opgeheven.",
"version": {
"frontend_version": "Frontend Versie",

View file

@ -152,7 +152,6 @@
"app_name": "Nom de laplicacion",
"attachmentRadius": "Pèças juntas",
"attachments": "Pèças juntas",
"autoload": "Activar lo cargament automatic un còp arribat al cap de la pagina",
"avatar": "Avatar",
"avatarAltRadius": "Avatars (Notificacions)",
"avatarRadius": "Avatars",
@ -252,7 +251,6 @@
"profile_tab": "Perfil",
"radii_help": "Configurar los caires arredondits de linterfàcia (en pixèls)",
"replies_in_timeline": "Responsas del flux",
"reply_link_preview": "Activar lapercebut en passar la mirga",
"reply_visibility_all": "Mostrar totas las responsas",
"reply_visibility_following": "Mostrar pas que las responsas que me son destinada a ieu o un utilizaire que seguissi",
"reply_visibility_self": "Mostrar pas que las responsas que me son destinadas",
@ -288,11 +286,6 @@
"true": "òc"
},
"notifications": "Notificacions",
"notification_setting": "Recebre las notificacions de:",
"notification_setting_follows": "Utilizaires que seguissètz",
"notification_setting_non_follows": "Utilizaires que seguissètz pas",
"notification_setting_followers": "Utilizaires que vos seguisson",
"notification_setting_non_followers": "Utilizaires que vos seguisson pas",
"notification_mutes": "Per recebre pas mai dun utilizaire en particular, botatz-lo en silenci.",
"notification_blocks": "Blocar un utilizaire arrèsta totas las notificacions tan coma quitar de los seguir.",
"enable_web_push_notifications": "Activar las notificacions web push",
@ -550,4 +543,4 @@
"people_talking": "{count} personas ne parlan",
"no_results": "Cap de resultats"
}
}
}

View file

@ -34,9 +34,9 @@
},
"domain_mute_card": {
"mute": "Wycisz",
"mute_progress": "Wyciszam...",
"mute_progress": "Wyciszam",
"unmute": "Odcisz",
"unmute_progress": "Odciszam..."
"unmute_progress": "Odciszam"
},
"exporter": {
"export": "Eksportuj",
@ -68,7 +68,10 @@
"disable": "Wyłącz",
"enable": "Włącz",
"confirm": "Potwierdź",
"verify": "Zweryfikuj"
"verify": "Zweryfikuj",
"close": "Zamknij",
"loading": "Ładowanie…",
"retry": "Spróbuj ponownie"
},
"image_cropper": {
"crop_picture": "Przytnij obrazek",
@ -118,7 +121,8 @@
"user_search": "Wyszukiwanie użytkowników",
"search": "Wyszukiwanie",
"who_to_follow": "Sugestie obserwacji",
"preferences": "Preferencje"
"preferences": "Preferencje",
"bookmarks": "Zakładki"
},
"notifications": {
"broken_favorite": "Nieznany status, szukam go…",
@ -190,7 +194,9 @@
"private": "Tylko dla obserwujących Umieść dla osób, które cię obserwują",
"public": "Publiczny Umieść na publicznych osiach czasu",
"unlisted": "Niewidoczny Nie umieszczaj na publicznych osiach czasu"
}
},
"preview_empty": "Pusty",
"preview": "Podgląd"
},
"registration": {
"bio": "Bio",
@ -234,7 +240,7 @@
"generate_new_recovery_codes": "Wygeneruj nowe kody zapasowe",
"warning_of_generate_new_codes": "Po tym gdy wygenerujesz nowe kody zapasowe, stare przestaną działać.",
"recovery_codes": "Kody zapasowe.",
"waiting_a_recovery_codes": "Otrzymuję kody zapasowe...",
"waiting_a_recovery_codes": "Otrzymuję kody zapasowe",
"recovery_codes_warning": "Spisz kody na kartce papieru, albo zapisz je w bezpiecznym miejscu - inaczej nie zobaczysz ich już nigdy. Jeśli stracisz dostęp do twojej aplikacji 2FA i kodów zapasowych, nie będziesz miał(-a) dostępu do swojego konta.",
"authentication_methods": "Metody weryfikacji",
"scan": {
@ -249,7 +255,6 @@
"allow_following_move": "Zezwalaj na automatyczną obserwację gdy obserwowane konto migruje",
"attachmentRadius": "Załączniki",
"attachments": "Załączniki",
"autoload": "Włącz automatyczne ładowanie po przewinięciu do końca strony",
"avatar": "Awatar",
"avatarAltRadius": "Awatary (powiadomienia)",
"avatarRadius": "Awatary",
@ -362,7 +367,6 @@
"profile_tab": "Profil",
"radii_help": "Ustaw zaokrąglenie krawędzi interfejsu (w pikselach)",
"replies_in_timeline": "Odpowiedzi na osi czasu",
"reply_link_preview": "Włącz dymek z podglądem postu po najechaniu na znak odpowiedzi",
"reply_visibility_all": "Pokazuj wszystkie odpowiedzi",
"reply_visibility_following": "Pokazuj tylko odpowiedzi skierowane do mnie i osób które obserwuję",
"reply_visibility_self": "Pokazuj tylko odpowiedzi skierowane do mnie",
@ -405,11 +409,6 @@
"fun": "Zabawa",
"greentext": "Memiczne strzałki",
"notifications": "Powiadomienia",
"notification_setting": "Otrzymuj powiadomienia od:",
"notification_setting_follows": "Ludzi których obserwujesz",
"notification_setting_non_follows": "Ludzi których nie obserwujesz",
"notification_setting_followers": "Ludzi którzy obserwują ciebie",
"notification_setting_non_followers": "Ludzi którzy nie obserwują ciebie",
"notification_mutes": "By przestać otrzymywać powiadomienia od jednego użytkownika, wycisz go.",
"notification_blocks": "Blokowanie uzytkownika zatrzymuje wszystkie powiadomienia i odsubskrybowuje go.",
"enable_web_push_notifications": "Włącz powiadomienia push",
@ -560,7 +559,13 @@
},
"notification_setting_privacy": "Prywatność",
"notification_setting_filters": "Filtry",
"notification_setting_privacy_option": "Ukryj nadawcę i zawartość powiadomień push"
"notification_setting_privacy_option": "Ukryj nadawcę i zawartość powiadomień push",
"reset_avatar": "Zresetuj awatar",
"profile_fields": {
"value": "Zawartość",
"label": "Metadane profilu"
},
"bot": "To konto jest prowadzone przez bota"
},
"time": {
"day": "{0} dzień",
@ -606,7 +611,8 @@
"show_new": "Pokaż nowe",
"up_to_date": "Na bieżąco",
"no_more_statuses": "Brak kolejnych statusów",
"no_statuses": "Brak statusów"
"no_statuses": "Brak statusów",
"reload": "Odśwież"
},
"status": {
"favorites": "Ulubione",
@ -739,5 +745,16 @@
"password_reset_disabled": "Resetowanie hasła jest wyłączone. Proszę skontaktuj się z administratorem tej instancji.",
"password_reset_required": "Musisz zresetować hasło, by się zalogować.",
"password_reset_required_but_mailer_is_disabled": "Musisz zresetować hasło, ale resetowanie hasła jest wyłączone. Proszę skontaktuj się z administratorem tej instancji."
},
"file_type": {
"file": "Plik"
},
"chats": {
"more": "Więcej",
"delete": "Usuń",
"you": "Ty:"
},
"display_date": {
"today": "Dzisiaj"
}
}

View file

@ -109,7 +109,6 @@
"app_name": "Nome do aplicativo",
"attachmentRadius": "Anexos",
"attachments": "Anexos",
"autoload": "Habilitar carregamento automático quando a rolagem chegar ao fim.",
"avatar": "Avatar",
"avatarAltRadius": "Avatares (Notificações)",
"avatarRadius": "Avatares",
@ -203,7 +202,6 @@
"profile_tab": "Perfil",
"radii_help": "Arredondar arestas da interface (em pixel)",
"replies_in_timeline": "Respostas na linha do tempo",
"reply_link_preview": "Habilitar a pré-visualização de de respostas ao passar o mouse.",
"reply_visibility_all": "Mostrar todas as respostas",
"reply_visibility_following": "Só mostrar respostas direcionadas a mim ou a usuários que sigo",
"reply_visibility_self": "Só mostrar respostas direcionadas a mim",

View file

@ -38,7 +38,6 @@
},
"settings": {
"attachments": "Atașamente",
"autoload": "Permite încărcarea automată când scrolat la capăt",
"avatar": "Avatar",
"bio": "Bio",
"current_avatar": "Avatarul curent",
@ -52,7 +51,6 @@
"nsfw_clickthrough": "Permite ascunderea al atașamentelor NSFW",
"profile_background": "Fundalul de profil",
"profile_banner": "Banner de profil",
"reply_link_preview": "Permite previzualizarea linkului de răspuns la planarea de mouse",
"set_new_avatar": "Setează avatar nou",
"set_new_profile_background": "Setează fundal nou",
"set_new_profile_banner": "Setează banner nou la profil",

View file

@ -124,7 +124,6 @@
},
"attachmentRadius": "Прикреплённые файлы",
"attachments": "Вложения",
"autoload": "Включить автоматическую загрузку при прокрутке вниз",
"avatar": "Аватар",
"avatarAltRadius": "Аватары в уведомлениях",
"avatarRadius": "Аватары",
@ -211,7 +210,6 @@
"profile_tab": "Профиль",
"radii_help": "Скругление углов элементов интерфейса (в пикселях)",
"replies_in_timeline": "Ответы в ленте",
"reply_link_preview": "Включить предварительный просмотр ответа при наведении мыши",
"reply_visibility_all": "Показывать все ответы",
"reply_visibility_following": "Показывать только ответы мне или тех на кого я подписан",
"reply_visibility_self": "Показывать только ответы мне",
@ -350,12 +348,8 @@
"link": "ссылка"
}
},
"notification_setting_non_followers": "Не читающие вас",
"allow_following_move": "Разрешить автоматически читать новый аккаунт при перемещении на другой сервер",
"hide_user_stats": "Не показывать статистику пользователей (например количество читателей)",
"notification_setting_followers": "Читающие вас",
"notification_setting_follows": "Читаемые вами",
"notification_setting_non_follows": "Не читаемые вами"
"hide_user_stats": "Не показывать статистику пользователей (например количество читателей)"
},
"timeline": {
"collapse": "Свернуть",

View file

@ -83,7 +83,6 @@
"settings.app_name": "అనువర్తన పేరు",
"settings.attachmentRadius": "జోడింపులు",
"settings.attachments": "జోడింపులు",
"settings.autoload": "క్రిందికి స్క్రోల్ చేయబడినప్పుడు స్వయంచాలక లోడింగ్ని ప్రారంభించు",
"settings.avatar": "అవతారం",
"settings.avatarAltRadius": "అవతారాలు (ప్రకటనలు)",
"settings.avatarRadius": "అవతారాలు",
@ -178,7 +177,6 @@
"settings.profile_tab": "Profile",
"settings.radii_help": "Set up interface edge rounding (in pixels)",
"settings.replies_in_timeline": "Replies in timeline",
"settings.reply_link_preview": "Enable reply-link preview on mouse hover",
"settings.reply_visibility_all": "Show all replies",
"settings.reply_visibility_following": "Only show replies directed at me or users I'm following",
"settings.reply_visibility_self": "Only show replies directed at me",

View file

@ -199,7 +199,6 @@
},
"attachmentRadius": "附件",
"attachments": "附件",
"autoload": "启用滚动到底部时的自动加载",
"avatar": "头像",
"avatarAltRadius": "头像(通知)",
"avatarRadius": "头像",
@ -299,7 +298,6 @@
"profile_tab": "个人资料",
"radii_help": "设置界面边缘的圆角 (单位:像素)",
"replies_in_timeline": "时间线中的回复",
"reply_link_preview": "启用鼠标悬停时预览回复链接",
"reply_visibility_all": "显示所有回复",
"reply_visibility_following": "只显示发送给我的回复/发送给我关注的用户的回复",
"reply_visibility_self": "只显示发送给我的回复",
@ -336,11 +334,6 @@
"true": "是"
},
"notifications": "通知",
"notification_setting": "通知来源:",
"notification_setting_follows": "你所关注的用户",
"notification_setting_non_follows": "你没有关注的用户",
"notification_setting_followers": "关注你的用户",
"notification_setting_non_followers": "没有关注你的用户",
"notification_mutes": "要停止收到某个指定的用户的通知,请使用隐藏功能。",
"notification_blocks": "拉黑一个用户会停掉所有他的通知,等同于取消关注。",
"enable_web_push_notifications": "启用 web 推送通知",

View file

@ -1,5 +1,6 @@
import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'
import { WSConnectionStatus } from '../services/api/api.service.js'
import { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'
import { Socket } from 'phoenix'
const api = {
@ -77,6 +78,7 @@ const api = {
messages: [message.chatUpdate.lastMessage]
})
dispatch('updateChat', { chat: message.chatUpdate })
maybeShowChatNotification(store, message.chatUpdate)
}
}
)

View file

@ -2,6 +2,7 @@ import Vue from 'vue'
import { find, omitBy, orderBy, sumBy } from 'lodash'
import chatService from '../services/chat_service/chat_service.js'
import { parseChat, parseChatMessage } from '../services/entity_normalizer/entity_normalizer.service.js'
import { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'
const emptyChatList = () => ({
data: [],
@ -59,8 +60,12 @@ const chats = {
return chats
})
},
addNewChats ({ rootState, commit, dispatch, rootGetters }, { chats }) {
commit('addNewChats', { dispatch, chats, rootGetters })
addNewChats (store, { chats }) {
const { commit, dispatch, rootGetters } = store
const newChatMessageSideEffects = (chat) => {
maybeShowChatNotification(store, chat)
}
commit('addNewChats', { dispatch, chats, rootGetters, newChatMessageSideEffects })
},
updateChat ({ commit }, { chat }) {
commit('updateChat', { chat })
@ -130,13 +135,17 @@ const chats = {
setCurrentChatId (state, { chatId }) {
state.currentChatId = chatId
},
addNewChats (state, { _dispatch, chats, _rootGetters }) {
addNewChats (state, { chats, newChatMessageSideEffects }) {
chats.forEach((updatedChat) => {
const chat = getChatById(state, updatedChat.id)
if (chat) {
const isNewMessage = (chat.lastMessage && chat.lastMessage.id) !== (updatedChat.lastMessage && updatedChat.lastMessage.id)
chat.lastMessage = updatedChat.lastMessage
chat.unread = updatedChat.unread
if (isNewMessage && chat.unread) {
newChatMessageSideEffects(updatedChat)
}
} else {
state.chatList.data.push(updatedChat)
Vue.set(state.chatList.idStore, updatedChat.id, updatedChat)

View file

@ -31,9 +31,7 @@ export const defaultState = {
preloadImage: true,
loopVideo: true,
loopVideoSilentOnly: true,
autoLoad: true,
streaming: false,
hoverPreview: true,
emojiReactionsOnTimeline: true,
autohideFloatingPostButton: false,
pauseOnUnfocused: true,

View file

@ -13,9 +13,8 @@ import {
omitBy
} from 'lodash'
import { set } from 'vue'
import { isStatusNotification, prepareNotificationObject } from '../services/notification_utils/notification_utils.js'
import { isStatusNotification, maybeShowNotification } from '../services/notification_utils/notification_utils.js'
import apiService from '../services/api/api.service.js'
import { muteWordHits } from '../services/status_parser/status_parser.js'
const emptyTl = (userId = 0) => ({
statuses: [],
@ -77,18 +76,6 @@ export const prepareStatus = (status) => {
return status
}
const visibleNotificationTypes = (rootState) => {
return [
rootState.config.notificationVisibility.likes && 'like',
rootState.config.notificationVisibility.mentions && 'mention',
rootState.config.notificationVisibility.repeats && 'repeat',
rootState.config.notificationVisibility.follows && 'follow',
rootState.config.notificationVisibility.moves && 'move',
rootState.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reactions',
rootState.config.notificationVisibility.chatMention && 'pleroma:chat_mention'
].filter(_ => _)
}
const mergeOrAdd = (arr, obj, item) => {
const oldItem = obj[item.id]
@ -326,7 +313,7 @@ const addNewStatuses = (state, { statuses, showImmediately = false, timeline, us
}
}
const addNewNotifications = (state, { dispatch, notifications, older, visibleNotificationTypes, rootGetters }) => {
const addNewNotifications = (state, { dispatch, notifications, older, visibleNotificationTypes, rootGetters, newNotificationSideEffects }) => {
each(notifications, (notification) => {
if (isStatusNotification(notification.type)) {
notification.action = addStatusToGlobalStorage(state, notification.action).item
@ -349,27 +336,7 @@ const addNewNotifications = (state, { dispatch, notifications, older, visibleNot
state.notifications.data.push(notification)
state.notifications.idStore[notification.id] = notification
if ('Notification' in window && window.Notification.permission === 'granted') {
const notifObj = prepareNotificationObject(notification, rootGetters.i18n)
const reasonsToMuteNotif = (
notification.seen ||
state.notifications.desktopNotificationSilence ||
!visibleNotificationTypes.includes(notification.type) ||
(
notification.type === 'mention' && status && (
status.muted ||
muteWordHits(status, rootGetters.mergedConfig.muteWords).length === 0
)
)
)
if (!reasonsToMuteNotif) {
let desktopNotification = new window.Notification(notifObj.title, notifObj)
// Chrome is known for not closing notifications automatically
// according to MDN, anyway.
setTimeout(desktopNotification.close.bind(desktopNotification), 5000)
}
}
newNotificationSideEffects(notification)
} else if (notification.seen) {
state.notifications.idStore[notification.id].seen = true
}
@ -610,8 +577,13 @@ const statuses = {
addNewStatuses ({ rootState, commit }, { statuses, showImmediately = false, timeline = false, noIdUpdate = false, userId, pagination }) {
commit('addNewStatuses', { statuses, showImmediately, timeline, noIdUpdate, user: rootState.users.currentUser, userId, pagination })
},
addNewNotifications ({ rootState, commit, dispatch, rootGetters }, { notifications, older }) {
commit('addNewNotifications', { visibleNotificationTypes: visibleNotificationTypes(rootState), dispatch, notifications, older, rootGetters })
addNewNotifications (store, { notifications, older }) {
const { commit, dispatch, rootGetters } = store
const newNotificationSideEffects = (notification) => {
maybeShowNotification(store, notification)
}
commit('addNewNotifications', { dispatch, notifications, older, rootGetters, newNotificationSideEffects })
},
setError ({ rootState, commit }, { value }) {
commit('setError', { value })

View file

@ -631,7 +631,8 @@ const postStatus = ({
mediaIds = [],
inReplyToStatusId,
contentType,
preview
preview,
idempotencyKey
}) => {
const form = new FormData()
const pollOptions = poll.options || []
@ -665,10 +666,15 @@ const postStatus = ({
form.append('preview', 'true')
}
let postHeaders = authHeaders(credentials)
if (idempotencyKey) {
postHeaders['idempotency-key'] = idempotencyKey
}
return fetch(MASTODON_POST_STATUS_URL, {
body: form,
method: 'POST',
headers: authHeaders(credentials)
headers: postHeaders
})
.then((response) => {
return response.json()

View file

@ -0,0 +1,19 @@
import { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'
export const maybeShowChatNotification = (store, chat) => {
if (!chat.lastMessage) return
if (store.rootState.chats.currentChatId === chat.id && !document.hidden) return
const opts = {
tag: chat.lastMessage.id,
title: chat.account.name,
icon: chat.account.profile_image_url,
body: chat.lastMessage.content
}
if (chat.lastMessage.attachment && chat.lastMessage.attachment.type === 'image') {
opts.image = chat.lastMessage.attachment.preview_url
}
showDesktopNotification(store.rootState, opts)
}

View file

@ -0,0 +1,9 @@
export const showDesktopNotification = (rootState, desktopNotificationOpts) => {
if (!('Notification' in window && window.Notification.permission === 'granted')) return
if (rootState.statuses.notifications.desktopNotificationSilence) { return }
const desktopNotification = new window.Notification(desktopNotificationOpts.title, desktopNotificationOpts)
// Chrome is known for not closing notifications automatically
// according to MDN, anyway.
setTimeout(desktopNotification.close.bind(desktopNotification), 5000)
}

View file

@ -79,6 +79,7 @@ export const parseUser = (data) => {
const relationship = data.pleroma.relationship
output.background_image = data.pleroma.background_image
output.favicon = data.pleroma.favicon
output.token = data.pleroma.chat_token
if (relationship) {

View file

@ -1,16 +1,22 @@
import { filter, sortBy, includes } from 'lodash'
import { muteWordHits } from '../status_parser/status_parser.js'
import { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'
export const notificationsFromStore = store => store.state.statuses.notifications.data
export const visibleTypes = store => ([
store.state.config.notificationVisibility.likes && 'like',
store.state.config.notificationVisibility.mentions && 'mention',
store.state.config.notificationVisibility.repeats && 'repeat',
store.state.config.notificationVisibility.follows && 'follow',
store.state.config.notificationVisibility.followRequest && 'follow_request',
store.state.config.notificationVisibility.moves && 'move',
store.state.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reaction'
].filter(_ => _))
export const visibleTypes = store => {
const rootState = store.rootState || store.state
return ([
rootState.config.notificationVisibility.likes && 'like',
rootState.config.notificationVisibility.mentions && 'mention',
rootState.config.notificationVisibility.repeats && 'repeat',
rootState.config.notificationVisibility.follows && 'follow',
rootState.config.notificationVisibility.followRequest && 'follow_request',
rootState.config.notificationVisibility.moves && 'move',
rootState.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reaction'
].filter(_ => _))
}
const statusNotifications = ['like', 'mention', 'repeat', 'pleroma:emoji_reaction']
@ -32,6 +38,22 @@ const sortById = (a, b) => {
}
}
const isMutedNotification = (store, notification) => {
if (!notification.status) return
return notification.status.muted || muteWordHits(notification.status, store.rootGetters.mergedConfig.muteWords).length > 0
}
export const maybeShowNotification = (store, notification) => {
const rootState = store.rootState || store.state
if (notification.seen) return
if (!visibleTypes(store).includes(notification.type)) return
if (notification.type === 'mention' && isMutedNotification(store, notification)) return
const notificationObject = prepareNotificationObject(notification, store.rootGetters.i18n)
showDesktopNotification(rootState, notificationObject)
}
export const filteredNotificationsFromStore = (store, types) => {
// map is just to clone the array since sort mutates it and it causes some issues
let sortedNotifications = notificationsFromStore(store).map(_ => _).sort(sortById)

View file

@ -35,7 +35,7 @@ const fetchAndUpdate = ({ store, credentials, older = false }) => {
const notifications = timelineData.data
const readNotifsIds = notifications.filter(n => n.seen).map(n => n.id)
const numUnseenNotifs = notifications.length - readNotifsIds.length
if (numUnseenNotifs > 0) {
if (numUnseenNotifs > 0 && readNotifsIds.length > 0) {
args['since'] = Math.max(...readNotifsIds)
fetchNotifications({ store, args, older })
}

View file

@ -11,7 +11,8 @@ const postStatus = ({
media = [],
inReplyToStatusId = undefined,
contentType = 'text/plain',
preview = false
preview = false,
idempotencyKey = ''
}) => {
const mediaIds = map(media, 'id')
@ -25,7 +26,8 @@ const postStatus = ({
inReplyToStatusId,
contentType,
poll,
preview
preview,
idempotencyKey
})
.then((data) => {
if (!data.error && !preview) {

View file

@ -675,23 +675,22 @@ export const SLOT_INHERITANCE = {
depends: ['bg']
},
chatMessage: {
depends: ['chatBg']
},
chatMessageIncomingBg: {
depends: ['chatMessage'],
layer: 'chatMessage'
depends: ['chatBg']
},
chatMessageIncomingText: {
depends: ['text'],
layer: 'text'
layer: 'chatMessage',
variant: 'chatMessageIncomingBg',
textColor: true
},
chatMessageIncomingLink: {
depends: ['link'],
layer: 'link'
layer: 'chatMessage',
variant: 'chatMessageIncomingBg',
textColor: 'preserve'
},
chatMessageIncomingBorder: {
@ -701,22 +700,27 @@ export const SLOT_INHERITANCE = {
},
chatMessageOutgoingBg: {
depends: ['chatMessage'],
depends: ['chatMessageIncomingBg'],
color: (mod, chatMessage) => brightness(5 * mod, chatMessage).rgb
},
chatMessageOutgoingText: {
depends: ['text'],
layer: 'text'
layer: 'chatMessage',
variant: 'chatMessageOutgoingBg',
textColor: true
},
chatMessageOutgoingLink: {
depends: ['link'],
layer: 'link'
layer: 'chatMessage',
variant: 'chatMessageOutgoingBg',
textColor: 'preserve'
},
chatMessageOutgoingBorder: {
depends: ['chatMessage'],
opacity: 'chatMessage'
depends: ['chatMessageOutgoingBg'],
opacity: 'border',
color: (mod, border) => brightness(2 * mod, border).rgb
}
}

View file

@ -128,14 +128,17 @@ export const topoSort = (
while (unprocessed.length > 0) {
step(unprocessed.pop())
}
return output.sort((a, b) => {
// The index thing is to make sorting stable on browsers
// where Array.sort() isn't stable
return output.map((data, index) => ({ data, index })).sort(({ data: a, index: ai }, { data: b, index: bi }) => {
const depsA = getDeps(a, inheritance).length
const depsB = getDeps(b, inheritance).length
if (depsA === depsB || (depsB !== 0 && depsA !== 0)) return 0
if (depsA === depsB || (depsB !== 0 && depsA !== 0)) return ai - bi
if (depsA === 0 && depsB !== 0) return -1
if (depsB === 0 && depsA !== 0) return 1
})
}).map(({ data }) => data)
}
const expandSlotValue = (value) => {

View file

@ -43,7 +43,9 @@ const fetchAndUpdate = ({
args['userId'] = userId
args['tag'] = tag
args['withMuted'] = !hideMutedPosts
if (loggedIn) args['replyVisibility'] = replyVisibility
if (loggedIn && ['friends', 'public', 'publicAndExternal'].includes(timeline)) {
args['replyVisibility'] = replyVisibility
}
const numStatusesBeforeFetch = timelineData.statuses.length