Merge branch 'develop' into fedi-absturztau-be

This commit is contained in:
Puniko 2023-04-22 07:55:09 +02:00
commit 30e91de97f
37 changed files with 1848 additions and 494 deletions

View file

@ -4,8 +4,6 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=no"> <meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=no">
<title>Akkoma</title> <title>Akkoma</title>
<link rel="stylesheet" href="/static/font/css/fontello.css">
<link rel="stylesheet" href="/static/font/css/animation.css">
<link rel="stylesheet" href="/static/font/tiresias.css"> <link rel="stylesheet" href="/static/font/tiresias.css">
<link rel="stylesheet" href="/static/font/css/lato.css"> <link rel="stylesheet" href="/static/font/css/lato.css">
<link rel="stylesheet" href="/static/mfm.css"> <link rel="stylesheet" href="/static/mfm.css">

View file

@ -324,6 +324,9 @@ const getNodeInfo = async ({ store }) => {
: federation.enabled : federation.enabled
}) })
store.dispatch('setInstanceOption', { name: 'publicTimelineVisibility', value: metadata.publicTimelineVisibility })
store.dispatch('setInstanceOption', { name: 'federatedTimelineAvailable', value: metadata.federatedTimelineAvailable })
const accountActivationRequired = metadata.accountActivationRequired const accountActivationRequired = metadata.accountActivationRequired
store.dispatch('setInstanceOption', { name: 'accountActivationRequired', value: accountActivationRequired }) store.dispatch('setInstanceOption', { name: 'accountActivationRequired', value: accountActivationRequired })
@ -398,9 +401,6 @@ const afterStoreSetup = async ({ store, i18n }) => {
]) ])
// Start fetching things that don't need to block the UI // Start fetching things that don't need to block the UI
store.dispatch('fetchMutes')
store.dispatch('startFetchingAnnouncements')
store.dispatch('startFetchingReports')
getTOS({ store }) getTOS({ store })
getStickers({ store }) getStickers({ store })

View file

@ -1,6 +1,11 @@
import SearchBar from 'components/search_bar/search_bar.vue' import SearchBar from 'components/search_bar/search_bar.vue'
import ConfirmModal from '../confirm_modal/confirm_modal.vue' import ConfirmModal from '../confirm_modal/confirm_modal.vue'
import { library } from '@fortawesome/fontawesome-svg-core' import { library } from '@fortawesome/fontawesome-svg-core'
import {
publicTimelineVisible,
federatedTimelineVisible,
bubbleTimelineVisible,
} from '../../lib/timeline_visibility'
import { import {
faSignInAlt, faSignInAlt,
faSignOutAlt, faSignOutAlt,
@ -19,6 +24,7 @@ import {
faInfoCircle, faInfoCircle,
faUserTie faUserTie
} from '@fortawesome/free-solid-svg-icons' } from '@fortawesome/free-solid-svg-icons'
import { mapState } from 'vuex'
library.add( library.add(
faSignInAlt, faSignInAlt,
@ -103,7 +109,12 @@ export default {
}, },
showBubbleTimeline () { showBubbleTimeline () {
return this.$store.state.instance.localBubbleInstances.length > 0 return this.$store.state.instance.localBubbleInstances.length > 0
} },
...mapState({
publicTimelineVisible,
federatedTimelineVisible,
bubbleTimelineVisible,
})
}, },
methods: { methods: {
scrollToTop () { scrollToTop () {

View file

@ -46,6 +46,7 @@
<router-link <router-link
:to="{ name: 'public-timeline' }" :to="{ name: 'public-timeline' }"
class="nav-icon" class="nav-icon"
v-if="publicTimelineVisible"
> >
<FAIcon <FAIcon
fixed-width fixed-width
@ -55,7 +56,7 @@
/> />
</router-link> </router-link>
<router-link <router-link
v-if="currentUser && showBubbleTimeline" v-if="bubbleTimelineVisible"
:to="{ name: 'bubble-timeline' }" :to="{ name: 'bubble-timeline' }"
class="nav-icon" class="nav-icon"
> >
@ -69,6 +70,7 @@
<router-link <router-link
:to="{ name: 'public-external-timeline' }" :to="{ name: 'public-external-timeline' }"
class="nav-icon" class="nav-icon"
v-if="federatedTimelineVisible"
> >
<FAIcon <FAIcon
fixed-width fixed-width

View file

@ -51,6 +51,7 @@ const EmojiPicker = {
onEmoji (emoji) { onEmoji (emoji) {
const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement
this.$emit('emoji', { insertion: value, keepOpen: this.keepOpen }) this.$emit('emoji', { insertion: value, keepOpen: this.keepOpen })
this.$store.commit('emojiUsed', emoji)
}, },
onWheel (e) { onWheel (e) {
e.preventDefault() e.preventDefault()
@ -96,6 +97,7 @@ const EmojiPicker = {
) )
}, },
emojis () { emojis () {
const recentEmojis = this.$store.getters.recentEmojis
const standardEmojis = this.$store.state.instance.emoji || [] const standardEmojis = this.$store.state.instance.emoji || []
const customEmojis = this.sortedEmoji const customEmojis = this.sortedEmoji
const emojiPacks = [] const emojiPacks = []
@ -108,6 +110,15 @@ const EmojiPicker = {
}) })
}) })
return [ return [
{
id: 'recent',
text: this.$t('emoji.recent'),
first: {
imageUrl: '',
replacement: '🕒',
},
emojis: this.filterByKeyword(recentEmojis)
},
{ {
id: 'standard', id: 'standard',
text: this.$t('emoji.unicode'), text: this.$t('emoji.unicode'),

View file

@ -3,6 +3,11 @@ import UserListPopover from '../user_list_popover/user_list_popover.vue'
const EMOJI_REACTION_COUNT_CUTOFF = 12 const EMOJI_REACTION_COUNT_CUTOFF = 12
const findEmojiByReplacement = (state, replacement) => {
const allEmojis = state.instance.emoji.concat(state.instance.customEmoji)
return allEmojis.find(emoji => emoji.replacement === replacement)
}
const EmojiReactions = { const EmojiReactions = {
name: 'EmojiReactions', name: 'EmojiReactions',
components: { components: {
@ -54,6 +59,8 @@ const EmojiReactions = {
}, },
reactWith (emoji) { reactWith (emoji) {
this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji }) this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })
const emojiObject = findEmojiByReplacement(this.$store.state, emoji)
this.$store.commit('emojiUsed', emojiObject)
}, },
unreact (emoji) { unreact (emoji) {
this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji }) this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })

View file

@ -18,7 +18,6 @@
:src="reaction.url" :src="reaction.url"
:title="reaction.name" :title="reaction.name"
class="reaction-emoji" class="reaction-emoji"
width="2.55em"
height="2.55em" height="2.55em"
> >
{{ reaction.count }} {{ reaction.count }}
@ -50,6 +49,7 @@
display: flex; display: flex;
margin-top: 0.25em; margin-top: 0.25em;
flex-wrap: wrap; flex-wrap: wrap;
container-type: inline-size;
} }
.unicode-emoji { .unicode-emoji {
@ -65,7 +65,8 @@
justify-content: center; justify-content: center;
box-sizing: border-box; box-sizing: border-box;
.reaction-emoji { .reaction-emoji {
width: 2.55em !important; width: auto;
max-width: 96cqw;
height: 2.55em !important; height: 2.55em !important;
margin-right: 0.25em; margin-right: 0.25em;
} }

View file

@ -15,6 +15,7 @@ import {
faBookmark as faBookmarkReg, faBookmark as faBookmarkReg,
faFlag faFlag
} from '@fortawesome/free-regular-svg-icons' } from '@fortawesome/free-regular-svg-icons'
import { mapState } from 'vuex'
library.add( library.add(
faEllipsisH, faEllipsisH,
@ -191,7 +192,7 @@ const ExtraButtons = {
isEdited () { isEdited () {
return this.status.edited_at !== null return this.status.edited_at !== null
}, },
editingAvailable () { return this.$store.state.instance.editingAvailable } editingAvailable () { return this.$store.state.instance.editingAvailable },
} }
} }

View file

@ -53,7 +53,7 @@ const NavPanel = {
...mapState({ ...mapState({
currentUser: state => state.users.currentUser, currentUser: state => state.users.currentUser,
privateMode: state => state.instance.private, privateMode: state => state.instance.private,
federating: state => state.instance.federating federating: state => state.instance.federating,
}), }),
...mapGetters(['unreadAnnouncementCount']), ...mapGetters(['unreadAnnouncementCount']),
followRequestCount () { followRequestCount () {

View file

@ -103,9 +103,9 @@ export default {
convertExpiryFromUnit (unit, amount) { convertExpiryFromUnit (unit, amount) {
// Note: we want seconds and not milliseconds // Note: we want seconds and not milliseconds
switch (unit) { switch (unit) {
case 'minutes': return 0.001 * amount * DateUtils.MINUTE case 'minutes': return amount * DateUtils.MINUTE / 1000
case 'hours': return 0.001 * amount * DateUtils.HOUR case 'hours': return amount * DateUtils.HOUR / 1000
case 'days': return 0.001 * amount * DateUtils.DAY case 'days': return amount * DateUtils.DAY / 1000
} }
}, },
expiryAmountChange () { expiryAmountChange () {

View file

@ -54,6 +54,14 @@ const pxStringToNumber = (str) => {
return Number(str.substring(0, str.length - 2)) return Number(str.substring(0, str.length - 2))
} }
const deleteDraft = (draftKey) => {
const draftData = JSON.parse(localStorage.getItem('drafts') || '{}');
delete draftData[draftKey];
localStorage.setItem('drafts', JSON.stringify(draftData));
}
const PostStatusForm = { const PostStatusForm = {
props: [ props: [
'statusId', 'statusId',
@ -161,6 +169,36 @@ const PostStatusForm = {
} }
} }
if (!this.statusId) {
let draftKey = 'status';
if (this.replyTo) {
draftKey = 'reply:' + this.replyTo;
} else if (this.quoteId) {
draftKey = 'quote:' + this.quoteId;
}
const draft = JSON.parse(localStorage.getItem('drafts') || '{}')[draftKey];
if (draft) {
statusParams = {
spoilerText: draft.data.spoilerText,
status: draft.data.status,
sensitiveIfSubject,
nsfw: draft.data.nsfw,
files: draft.data.files,
poll: draft.data.poll,
mediaDescriptions: draft.data.mediaDescriptions,
visibility: draft.data.visibility,
language: draft.data.language,
contentType: draft.data.contentType
}
if (draft.data.poll) {
this.togglePollForm();
}
}
}
return { return {
dropFiles: [], dropFiles: [],
uploadingFiles: false, uploadingFiles: false,
@ -280,6 +318,7 @@ const PostStatusForm = {
statusChanged () { statusChanged () {
this.autoPreview() this.autoPreview()
this.updateIdempotencyKey() this.updateIdempotencyKey()
this.saveDraft()
}, },
clearStatus () { clearStatus () {
const newStatus = this.newStatus const newStatus = this.newStatus
@ -401,8 +440,38 @@ const PostStatusForm = {
}).finally(() => { }).finally(() => {
this.previewLoading = false this.previewLoading = false
}) })
let draftKey = 'status';
if (this.replyTo) {
draftKey = 'reply:' + this.replyTo;
} else if (this.quoteId) {
draftKey = 'quote:' + this.quoteId;
}
deleteDraft(draftKey)
}, },
debouncePreviewStatus: debounce(function () { this.previewStatus() }, 500), debouncePreviewStatus: debounce(function () { this.previewStatus() }, 500),
saveDraft() {
const draftData = JSON.parse(localStorage.getItem('drafts') || '{}');
let draftKey = 'status';
if (this.replyTo) {
draftKey = 'reply:' + this.replyTo;
} else if (this.quoteId) {
draftKey = 'quote:' + this.quoteId;
}
if (this.newStatus.status || this.newStatus.spoilerText || this.newStatus.files.length > 0 || this.newStatus.poll.length > 0) {
draftData[draftKey] = {
updatedAt: new Date(),
data: this.newStatus,
};
localStorage.setItem('drafts', JSON.stringify(draftData));
} else {
deleteDraft(draftKey);
}
},
autoPreview () { autoPreview () {
if (!this.preview) return if (!this.preview) return
this.previewLoading = true this.previewLoading = true

View file

@ -188,7 +188,7 @@ export default {
break break
} }
case 'span': case 'span':
if (this.handleLinks && attrs['class'] && attrs['class'].includes('h-card')) { if (this.handleLinks && attrs?.['class']?.includes?.('h-card')) {
return ['', children.map(processItem), ''] return ['', children.map(processItem), '']
} }
} }

View file

@ -50,7 +50,6 @@
.emoji { .emoji {
display: inline-block; display: inline-block;
width: var(--emoji-size, 32px);
height: var(--emoji-size, 32px); height: var(--emoji-size, 32px);
} }

View file

@ -22,21 +22,18 @@
._mfm_x2_ { ._mfm_x2_ {
.emoji { .emoji {
width: 100px;
height: 100px; height: 100px;
} }
} }
._mfm_x3_ { ._mfm_x3_ {
.emoji { .emoji {
width: 150px;
height: 150px; height: 150px;
} }
} }
._mfm_x4_ { ._mfm_x4_ {
.emoji { .emoji {
width: 200px;
height: 200px; height: 200px;
} }
} }

View file

@ -71,7 +71,7 @@
img, video { img, video {
&.emoji { &.emoji {
width: 50px; max-width: 100%;
height: 50px; height: 50px;
} }
} }
@ -89,7 +89,6 @@
animation: none !important; animation: none !important;
} }
.emoji { .emoji {
width: 32px !important;
height: 32px !important; height: 32px !important;
} }
} }

View file

@ -8,6 +8,7 @@ import {
faHome, faHome,
faCircle faCircle
} from '@fortawesome/free-solid-svg-icons' } from '@fortawesome/free-solid-svg-icons'
import { federatedTimelineVisible, publicTimelineVisible, bubbleTimelineVisible } from '../../lib/timeline_visibility'
library.add( library.add(
faUsers, faUsers,
@ -24,7 +25,9 @@ const TimelineMenuContent = {
currentUser: state => state.users.currentUser, currentUser: state => state.users.currentUser,
privateMode: state => state.instance.private, privateMode: state => state.instance.private,
federating: state => state.instance.federating, federating: state => state.instance.federating,
showBubbleTimeline: state => (state.instance.localBubbleInstances.length > 0) publicTimelineVisible,
federatedTimelineVisible,
bubbleTimelineVisible,
}) })
} }
} }

View file

@ -16,7 +16,7 @@
>{{ $t("nav.home_timeline") }}</span> >{{ $t("nav.home_timeline") }}</span>
</router-link> </router-link>
</li> </li>
<li v-if="currentUser && showBubbleTimeline"> <li v-if="bubbleTimelineVisible">
<router-link <router-link
class="menu-item" class="menu-item"
:to="{ name: 'bubble-timeline' }" :to="{ name: 'bubble-timeline' }"
@ -32,7 +32,7 @@
>{{ $t("nav.bubble_timeline") }}</span> >{{ $t("nav.bubble_timeline") }}</span>
</router-link> </router-link>
</li> </li>
<li v-if="currentUser || !privateMode"> <li v-if="publicTimelineVisible">
<router-link <router-link
class="menu-item" class="menu-item"
:to="{ name: 'public-timeline' }" :to="{ name: 'public-timeline' }"
@ -48,7 +48,7 @@
>{{ $t("nav.public_tl") }}</span> >{{ $t("nav.public_tl") }}</span>
</router-link> </router-link>
</li> </li>
<li v-if="federating && (currentUser || !privateMode)"> <li v-if="federatedTimelineVisible">
<router-link <router-link
class="menu-item" class="menu-item"
:to="{ name: 'public-external-timeline' }" :to="{ name: 'public-external-timeline' }"
@ -62,6 +62,7 @@
:title="$t('nav.twkn_timeline_description')" :title="$t('nav.twkn_timeline_description')"
:aria-label="$t('nav.twkn_timeline_description')" :aria-label="$t('nav.twkn_timeline_description')"
>{{ $t("nav.twkn") }}</span> >{{ $t("nav.twkn") }}</span>
</router-link> </router-link>
</li> </li>
<li v-if="currentUser"> <li v-if="currentUser">

View file

@ -8,6 +8,7 @@ import {
faHome faHome
} from '@fortawesome/free-solid-svg-icons' } from '@fortawesome/free-solid-svg-icons'
import { faCircle } from '@fortawesome/free-regular-svg-icons' import { faCircle } from '@fortawesome/free-regular-svg-icons'
import { federatedTimelineVisible, publicTimelineVisible, bubbleTimelineVisible } from '../../lib/timeline_visibility'
library.add( library.add(
faUsers, faUsers,
faGlobe, faGlobe,
@ -22,7 +23,10 @@ const TimelineMenuContent = {
...mapState({ ...mapState({
currentUser: state => state.users.currentUser, currentUser: state => state.users.currentUser,
privateMode: state => state.instance.private, privateMode: state => state.instance.private,
federating: state => state.instance.federating federating: state => state.instance.federating,
publicTimelineVisible,
federatedTimelineVisible,
bubbleTimelineVisible,
}) })
} }
} }

View file

@ -16,7 +16,7 @@
>{{ $t("nav.home_timeline") }}</span> >{{ $t("nav.home_timeline") }}</span>
</router-link> </router-link>
</li> </li>
<li v-if="currentUser"> <li v-if="bubbleTimelineVisible">
<router-link <router-link
class="menu-item" class="menu-item"
:to="{ name: 'bubble-timeline' }" :to="{ name: 'bubble-timeline' }"
@ -32,7 +32,7 @@
>{{ $t("nav.bubble_timeline") }}</span> >{{ $t("nav.bubble_timeline") }}</span>
</router-link> </router-link>
</li> </li>
<li v-if="currentUser || !privateMode"> <li v-if="publicTimelineVisible">
<router-link <router-link
class="menu-item" class="menu-item"
:to="{ name: 'public-timeline' }" :to="{ name: 'public-timeline' }"
@ -48,7 +48,7 @@
>{{ $t("nav.public_tl") }}</span> >{{ $t("nav.public_tl") }}</span>
</router-link> </router-link>
</li> </li>
<li v-if="federating && (currentUser || !privateMode)"> <li v-if="federatedTimelineVisible">
<router-link <router-link
class="menu-item" class="menu-item"
:to="{ name: 'public-external-timeline' }" :to="{ name: 'public-external-timeline' }"

View file

@ -4,6 +4,12 @@ import { library } from '@fortawesome/fontawesome-svg-core'
import { import {
faChevronDown faChevronDown
} from '@fortawesome/free-solid-svg-icons' } from '@fortawesome/free-solid-svg-icons'
import { mapState } from 'vuex'
import {
publicTimelineVisible,
federatedTimelineVisible,
bubbleTimelineVisible,
} from '../../lib/timeline_visibility'
library.add(faChevronDown) library.add(faChevronDown)
@ -36,12 +42,15 @@ const TimelineMenuTabs = {
} }
}, },
computed: { computed: {
currentUser () {
return this.$store.state.users.currentUser
},
privateMode () { privateMode () {
return this.$store.state.instance.private return this.$store.state.instance.private
} },
...mapState({
currentUser: state => state.users.currentUser,
publicTimelineVisible,
federatedTimelineVisible,
bubbleTimelineVisible,
})
}, },
methods: { methods: {
timelineName () { timelineName () {

View file

@ -18,6 +18,7 @@
<router-link <router-link
:to="{ name: 'public-timeline' }" :to="{ name: 'public-timeline' }"
class="nav-icon" class="nav-icon"
v-if="publicTimelineVisible"
> >
<FAIcon <FAIcon
fixed-width fixed-width
@ -27,7 +28,7 @@
/> />
</router-link> </router-link>
<router-link <router-link
v-if="currentUser" v-if="bubbleTimelineVisible"
:to="{ name: 'bubble-timeline' }" :to="{ name: 'bubble-timeline' }"
class="nav-icon" class="nav-icon"
> >
@ -41,6 +42,7 @@
<router-link <router-link
:to="{ name: 'public-external-timeline' }" :to="{ name: 'public-external-timeline' }"
class="nav-icon" class="nav-icon"
v-if="federatedTimelineVisible"
> >
<FAIcon <FAIcon
fixed-width fixed-width

View file

@ -252,6 +252,10 @@
"hint": "Anmelden um an der Diskussion teilzunehmen", "hint": "Anmelden um an der Diskussion teilzunehmen",
"login": "Anmelden", "login": "Anmelden",
"logout": "Abmelden", "logout": "Abmelden",
"logout_confirm": "Willst du dich wirklich abmelden?",
"logout_confirm_accept_button": "Abmelden",
"logout_confirm_cancel_button": "Abbrechen",
"logout_confirm_title": "Abmelden",
"password": "Passwort", "password": "Passwort",
"placeholder": "meinbenutzername", "placeholder": "meinbenutzername",
"recovery_code": "Wiederherstellungscode", "recovery_code": "Wiederherstellungscode",
@ -264,6 +268,32 @@
"next": "Weiter", "next": "Weiter",
"previous": "Zurück" "previous": "Zurück"
}, },
"moderation": {
"moderation": "Moderation",
"reports": {
"add_note": "Notiz hinzufügen",
"close": "Schließen",
"delete_note": "Löschen",
"delete_note_accept": "Ja, löschen",
"delete_note_cancel": "Nein, behalten",
"delete_note_confirm": "Soll diese Notiz wirklich gelöscht werden?",
"delete_note_title": "Löschen bestätigen",
"no_content": "Keine Beschreibung angegeben",
"no_reports": "Keine Meldungen verfügbar",
"note_placeholder": "Hinterlasse eine Notiz",
"notes": "{ count } Notiz | { count } Notizen",
"reopen": "Wieder öffnen",
"report": "Meldung über",
"reports": "Meldungen",
"resolve": "Lösen",
"show_closed": "Geschlossene anzeigen",
"statuses": "{ count } Post| { count } Posts",
"tag_policy_notice": "Schalte die TagPolicy-MRF ein, um Post-Beschränkungen einzustellen",
"tags": "Post-Einschränkungen einstellen"
},
"statuses": "Posts",
"users": "Benutzer"
},
"nav": { "nav": {
"about": "Über", "about": "Über",
"administration": "Administration", "administration": "Administration",
@ -278,6 +308,7 @@
"interactions": "Interaktionen", "interactions": "Interaktionen",
"lists": "Listen", "lists": "Listen",
"mentions": "Erwähnungen", "mentions": "Erwähnungen",
"moderation": "Moderation",
"preferences": "Voreinstellungen", "preferences": "Voreinstellungen",
"public_timeline_description": "Öffentliche Beiträge von dieser Instanz", "public_timeline_description": "Öffentliche Beiträge von dieser Instanz",
"public_tl": "Öffentliche Zeitleiste", "public_tl": "Öffentliche Zeitleiste",
@ -374,6 +405,8 @@
} }
}, },
"registration": { "registration": {
"awaiting_email_confirmation": "Dein Account wurde registriert und eine E-Mail wurde an deine Adresse gesendet. Bitte lies die E-Mail, um die Registrierung abzuschließen.",
"awaiting_email_confirmation_title": "Warte auf E-Mail-Bestätigung",
"bio": "Bio", "bio": "Bio",
"bio_placeholder": "z. B.\nHallo! Willkommen auf meinem Profil.\nIch mag Anime und Spiele. Hoffentlich können wir Freunde sein!", "bio_placeholder": "z. B.\nHallo! Willkommen auf meinem Profil.\nIch mag Anime und Spiele. Hoffentlich können wir Freunde sein!",
"captcha": "CAPTCHA", "captcha": "CAPTCHA",
@ -387,6 +420,8 @@
"reason_placeholder": "Diese Instanz bestätigt Registrierungen manuell. \nLass die Admins wissen warum du dich registrieren willst.", "reason_placeholder": "Diese Instanz bestätigt Registrierungen manuell. \nLass die Admins wissen warum du dich registrieren willst.",
"register": "Registrierung", "register": "Registrierung",
"registration": "Registrierung", "registration": "Registrierung",
"request_sent": "Deine Bitte zur Registrierung wurde weitergeleitet. Du erhälst eine E-Mail, wenn deiner Registrierung zugestimmt wurde.",
"request_sent_title": "Bitte zur Registrierung gesendet",
"token": "Einladungsschlüssel", "token": "Einladungsschlüssel",
"username_placeholder": "z. B. akko", "username_placeholder": "z. B. akko",
"validations": { "validations": {
@ -496,6 +531,8 @@
"enable_web_push_notifications": "Web-Pushbenachrichtigungen aktivieren", "enable_web_push_notifications": "Web-Pushbenachrichtigungen aktivieren",
"enter_current_password_to_confirm": "Gib dein aktuelles Passwort ein, um deine Identität zu bestätigen", "enter_current_password_to_confirm": "Gib dein aktuelles Passwort ein, um deine Identität zu bestätigen",
"expert_mode": "Erweiterte Einstellungen anzeigen", "expert_mode": "Erweiterte Einstellungen anzeigen",
"expire_posts_enabled": "Posts löschen, die älter als eine Anzahl an Tagen sind",
"expire_posts_input_placeholder": "Anzahl an Tagen",
"export_theme": "Farbschema speichern", "export_theme": "Farbschema speichern",
"file_export_import": { "file_export_import": {
"backup_restore": "Einstellungen backuppen", "backup_restore": "Einstellungen backuppen",
@ -688,6 +725,19 @@
"setting_changed": "Einstellungen weichen von den Standardeinstellungen ab", "setting_changed": "Einstellungen weichen von den Standardeinstellungen ab",
"setting_server_side": "Diese Einstellung hängt an deinem Profil und gilt für alle Sitzungen und Clients", "setting_server_side": "Diese Einstellung hängt an deinem Profil und gilt für alle Sitzungen und Clients",
"settings": "Einstellungen", "settings": "Einstellungen",
"settings_profile": "Einstellungs-Profile",
"settings_profile_creation": "Neues Profil erstellen",
"settings_profile_creation_new_name_label": "Name",
"settings_profile_creation_submit": "Erstellen",
"settings_profile_currently": "Benutze Profil {name} (version: {version})",
"settings_profile_delete": "Löschen",
"settings_profile_delete_confirm": "Dieses Profil wirklich löschen?",
"settings_profile_force_sync": "Synchronisieren",
"settings_profile_in_use": "In Benutzung",
"settings_profile_use": "Verwenden",
"settings_profiles_refresh": "Einstellungs-Profile neu laden",
"settings_profiles_show": "Alle Einstellungs-Profile anzeigen",
"settings_profiles_unshow": "Alle Einstellungs-Profile verbergen",
"show_admin_badge": "Zeige Admin-Abzeichen auf meinem Profil", "show_admin_badge": "Zeige Admin-Abzeichen auf meinem Profil",
"show_moderator_badge": "Zeige Moderator-Abzeichen auf meinem Profil", "show_moderator_badge": "Zeige Moderator-Abzeichen auf meinem Profil",
"show_nav_shortcuts": "Zusätzliche Schnellnavigation im Top-Panel anzeigen", "show_nav_shortcuts": "Zusätzliche Schnellnavigation im Top-Panel anzeigen",
@ -867,6 +917,7 @@
"useStreamingApi": "Empfange Posts und Benachrichtigungen in Echtzeit", "useStreamingApi": "Empfange Posts und Benachrichtigungen in Echtzeit",
"useStreamingApiWarning": "(Nicht empfohlen, experimentell, bekannt dafür, Posts zu überspringen)", "useStreamingApiWarning": "(Nicht empfohlen, experimentell, bekannt dafür, Posts zu überspringen)",
"use_at_icon": "{'@'}-Symbol als Icon und nicht als Text anzeigen", "use_at_icon": "{'@'}-Symbol als Icon und nicht als Text anzeigen",
"use_blurhash": "Blurhash für NSFW-Vorschauen verwenden",
"use_contain_fit": "Vorschaubilder nicht zuschneiden", "use_contain_fit": "Vorschaubilder nicht zuschneiden",
"use_one_click_nsfw": "Heikle Anhänge mit nur einem Klick öffnen", "use_one_click_nsfw": "Heikle Anhänge mit nur einem Klick öffnen",
"user_mutes": "User", "user_mutes": "User",
@ -887,6 +938,12 @@
"word_filter": "Wortfilter", "word_filter": "Wortfilter",
"wordfilter": "Wortfilter" "wordfilter": "Wortfilter"
}, },
"settings_profile": {
"creating": "Erstelle ein neues Einstellungs-Profil \"{profile}\"...",
"synchronization_error": "Konnte Einstellungen nicht synchronisieren: {err}",
"synchronized": "Einstellungen synchronisiert!",
"synchronizing": "Synchronisiere Einstellungs-Profil \"{profile}\"..."
},
"status": { "status": {
"ancestor_follow": "Zeige {numReplies} andere Antwort unter dieser Nachricht | Zeige {numReplies} andere Antworten unter dieser Nachricht", "ancestor_follow": "Zeige {numReplies} andere Antwort unter dieser Nachricht | Zeige {numReplies} andere Antworten unter dieser Nachricht",
"ancestor_follow_with_icon": "{icon} {text}", "ancestor_follow_with_icon": "{icon} {text}",
@ -920,6 +977,11 @@
"pin": "An Profil anheften", "pin": "An Profil anheften",
"pinned": "Angeheftet", "pinned": "Angeheftet",
"plus_more": "+{number} mehr", "plus_more": "+{number} mehr",
"redraft": "Löschen & neu erstellen",
"redraft_confirm": "Diesen Post wirklich löschen und neu erstellen? Interaktionen des ursprünglichen Posts werden nicht erhalten.",
"redraft_confirm_accept_button": "Ja, löschen und neu erstellen",
"redraft_confirm_cancel_button": "Nein, das Original behalten",
"redraft_confirm_title": "Löschen und neu erstellen bestätigen",
"remove_attachment": "Anhang entfernen", "remove_attachment": "Anhang entfernen",
"repeat_confirm": "Nachricht wirklich wiederholen?", "repeat_confirm": "Nachricht wirklich wiederholen?",
"repeat_confirm_accept_button": "Ja, wiederholen", "repeat_confirm_accept_button": "Ja, wiederholen",
@ -948,6 +1010,7 @@
"thread_show_full": "Zeige {numStatus} Antwort | Zeige {numStatus} Antworten", "thread_show_full": "Zeige {numStatus} Antwort | Zeige {numStatus} Antworten",
"thread_show_full_with_icon": "{icon} {text}", "thread_show_full_with_icon": "{icon} {text}",
"translate": "Übersetzen", "translate": "Übersetzen",
"translated_from": "Übersetzt von {language}",
"unbookmark": "Lesezeichen entfernen", "unbookmark": "Lesezeichen entfernen",
"unmute_conversation": "Konversation nicht mehr stummstellen", "unmute_conversation": "Konversation nicht mehr stummstellen",
"unpin": "Nicht mehr an Profil anheften", "unpin": "Nicht mehr an Profil anheften",
@ -979,6 +1042,7 @@
"collapse": "Einklappen", "collapse": "Einklappen",
"conversation": "Unterhaltung", "conversation": "Unterhaltung",
"error": "Fehler beim Lesen der Timeline: {0}", "error": "Fehler beim Lesen der Timeline: {0}",
"follow_tag": "Hashtag folgen",
"load_older": "Lade ältere Nachrichten", "load_older": "Lade ältere Nachrichten",
"no_more_statuses": "Keine weiteren Nachrichten", "no_more_statuses": "Keine weiteren Nachrichten",
"no_retweet_hint": "Die Nachricht ist als nur-für-Follower oder Direktnachricht markiert und kann nicht wiederholt oder zitiert werden", "no_retweet_hint": "Die Nachricht ist als nur-für-Follower oder Direktnachricht markiert und kann nicht wiederholt oder zitiert werden",
@ -988,8 +1052,12 @@
"show_new": "Zeige Neuere", "show_new": "Zeige Neuere",
"socket_broke": "Netzverbindung verloren: CloseEvent code {0}", "socket_broke": "Netzverbindung verloren: CloseEvent code {0}",
"socket_reconnected": "Netzverbindung hergestellt", "socket_reconnected": "Netzverbindung hergestellt",
"unfollow_tag": "Hashtag entfolgen",
"up_to_date": "Aktuell" "up_to_date": "Aktuell"
}, },
"toast": {
"no_translation_target_set": "Keine Zielsprache für Übersetzungen eingestellt - das könnte schiefgehen. Bitte stell eine Zielsprache in deinen Einstellungen ein."
},
"tool_tip": { "tool_tip": {
"accept_follow_request": "Folgeanfrage annehmen", "accept_follow_request": "Folgeanfrage annehmen",
"add_reaction": "Emoji-Reaktion hinzufügen", "add_reaction": "Emoji-Reaktion hinzufügen",
@ -1049,6 +1117,7 @@
"block_confirm_title": "Benutzer blockieren", "block_confirm_title": "Benutzer blockieren",
"block_progress": "Blocken…", "block_progress": "Blocken…",
"blocked": "Blockiert!", "blocked": "Blockiert!",
"blocks_you": "Blockt dich!",
"bot": "Bot", "bot": "Bot",
"deactivated": "Deaktiviert", "deactivated": "Deaktiviert",
"deny": "Ablehnen", "deny": "Ablehnen",
@ -1063,7 +1132,10 @@
"follow_cancel": "Anfrage ablehnen", "follow_cancel": "Anfrage ablehnen",
"follow_progress": "Anfragen…", "follow_progress": "Anfragen…",
"follow_sent": "Anfrage gesendet!", "follow_sent": "Anfrage gesendet!",
"follow_tag": "Hashtag folgen",
"follow_unfollow": "Folgen beenden", "follow_unfollow": "Folgen beenden",
"followed_tags": "Gefolgte Hashtags",
"followed_users": "Gefolgte Benutzer",
"followees": "Folgt", "followees": "Folgt",
"followers": "Folgende", "followers": "Folgende",
"following": "Folgst du!", "following": "Folgst du!",
@ -1088,11 +1160,14 @@
"mute_domain": "Domain blockieren", "mute_domain": "Domain blockieren",
"mute_progress": "Stummschalten erfolgt…", "mute_progress": "Stummschalten erfolgt…",
"muted": "Stummgeschaltet", "muted": "Stummgeschaltet",
"not_following_any_hashtags": "Du folgst keinen Hashtags",
"note": "Private Notiz", "note": "Private Notiz",
"per_day": "pro Tag", "per_day": "pro Tag",
"remote_follow": "Folgen", "remote_follow": "Folgen",
"remove_follower": "Nicht mehr folgen",
"replies": "Mit Antworten", "replies": "Mit Antworten",
"report": "Melden", "report": "Melden",
"requested_by": "Möchte dir gern folgen",
"show_repeats": "Geteilte Beiträge anzeigen", "show_repeats": "Geteilte Beiträge anzeigen",
"statuses": "Nachrichten", "statuses": "Nachrichten",
"subscribe": "Folgen", "subscribe": "Folgen",
@ -1102,11 +1177,13 @@
"unfollow_confirm_accept_button": "Ja, nicht mehr folgen", "unfollow_confirm_accept_button": "Ja, nicht mehr folgen",
"unfollow_confirm_cancel_button": "Nein, weiter folgen", "unfollow_confirm_cancel_button": "Nein, weiter folgen",
"unfollow_confirm_title": "Benutzer nicht mehr folgen", "unfollow_confirm_title": "Benutzer nicht mehr folgen",
"unfollow_tag": "Hashtag nicht mehr folgen",
"unmute": "Stummschalten aufheben", "unmute": "Stummschalten aufheben",
"unmute_progress": "Aufhebung erfolgt…", "unmute_progress": "Aufhebung erfolgt…",
"unsubscribe": "Entfolgen" "unsubscribe": "Entfolgen"
}, },
"user_profile": { "user_profile": {
"field_validated": "Link verifiziert",
"profile_does_not_exist": "Profil nicht vorhanden.", "profile_does_not_exist": "Profil nicht vorhanden.",
"profile_loading_error": "Beim Laden dieses Profils ist ein Fehler aufgetreten.", "profile_loading_error": "Beim Laden dieses Profils ist ein Fehler aufgetreten.",
"timeline_title": "Beiträge" "timeline_title": "Beiträge"

View file

@ -86,7 +86,8 @@
"load_all_hint": "Loaded first {saneAmount} emoji, loading all emoji may cause performance issues.", "load_all_hint": "Loaded first {saneAmount} emoji, loading all emoji may cause performance issues.",
"search_emoji": "Search for an emoji", "search_emoji": "Search for an emoji",
"stickers": "Stickers", "stickers": "Stickers",
"unicode": "Unicode emoji" "unicode": "Unicode emoji",
"recent": "Recently used"
}, },
"errors": { "errors": {
"storage_unavailable": "Pleroma could not access browser storage. Your login or your local settings won't be saved and you might encounter unexpected issues. Try enabling cookies." "storage_unavailable": "Pleroma could not access browser storage. Your login or your local settings won't be saved and you might encounter unexpected issues. Try enabling cookies."

View file

@ -282,18 +282,18 @@
"delete_note_title": "Confirma la eliminación", "delete_note_title": "Confirma la eliminación",
"no_content": "Sin descripción dada", "no_content": "Sin descripción dada",
"no_reports": "No hay informes que mostrar", "no_reports": "No hay informes que mostrar",
"note_placeholder": "Dejar una nota...", "note_placeholder": "Dejar una nota",
"notes": "{ count } nota | { count } notas", "notes": "{ count } nota | { count } notas",
"reopen": "Reabrir", "reopen": "Reabrir",
"report": "Reportar", "report": "Reportar",
"reports": "Reportes", "reports": "Reportes",
"resolve": "Resolver", "resolve": "Resolver",
"show_closed": "Mostrar cerrados", "show_closed": "Mostrar cerrados",
"statuses": "{ count } estado | { count } estados", "statuses": "{ count } publicación | { count } publicaciones",
"tag_policy_notice": "Habilitar TagPolicy MRF para establecer restricciones de publicación", "tag_policy_notice": "Habilitar TagPolicy MRF para establecer restricciones de publicación",
"tags": "Establecer restricciones de publicación" "tags": "Establecer restricciones de publicación"
}, },
"statuses": "Estados", "statuses": "Publicaciones",
"users": "Usuarios" "users": "Usuarios"
}, },
"nav": { "nav": {
@ -535,6 +535,8 @@
"enable_web_push_notifications": "Habilitar las notificiaciones en el navegador", "enable_web_push_notifications": "Habilitar las notificiaciones en el navegador",
"enter_current_password_to_confirm": "Introduce la contraseña actual para confirmar tu identidad", "enter_current_password_to_confirm": "Introduce la contraseña actual para confirmar tu identidad",
"expert_mode": "Mostrar avanzados", "expert_mode": "Mostrar avanzados",
"expire_posts_enabled": "Eliminar publicaciones después de una cantidad determinada de días",
"expire_posts_input_placeholder": "Número de días",
"export_theme": "Exportar tema", "export_theme": "Exportar tema",
"file_export_import": { "file_export_import": {
"backup_restore": "Copia de seguridad de la configuración", "backup_restore": "Copia de seguridad de la configuración",
@ -696,6 +698,7 @@
"remove_alias": "Eliminar este alias", "remove_alias": "Eliminar este alias",
"remove_backup": "Eliminar", "remove_backup": "Eliminar",
"render_mfm": "Renderizar Markdown de Misskey", "render_mfm": "Renderizar Markdown de Misskey",
"render_mfm_on_hover": "Pausa las animaciones MFM hasta que se desplace el mensaje",
"replies_in_timeline": "Réplicas en la línea temporal", "replies_in_timeline": "Réplicas en la línea temporal",
"reply_visibility_all": "Mostrar todas las réplicas", "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_following": "Solo mostrar réplicas para mí o usuarios a los que sigo",
@ -719,6 +722,7 @@
"security": "Seguridad", "security": "Seguridad",
"security_tab": "Seguridad", "security_tab": "Seguridad",
"sensitive_by_default": "Identificar las publicaciones como sensibles de forma predeterminada", "sensitive_by_default": "Identificar las publicaciones como sensibles de forma predeterminada",
"sensitive_if_subject": "Marcar automáticamente las imágenes como confidenciales si se especifica una advertencia de contenido",
"set_new_avatar": "Cambiar avatar", "set_new_avatar": "Cambiar avatar",
"set_new_mascot": "Fijar nueva mascota", "set_new_mascot": "Fijar nueva mascota",
"set_new_profile_background": "Cambiar el fondo del perfil", "set_new_profile_background": "Cambiar el fondo del perfil",
@ -736,10 +740,16 @@
"settings_profile_force_sync": "Sincronizar", "settings_profile_force_sync": "Sincronizar",
"settings_profile_in_use": "En uso", "settings_profile_in_use": "En uso",
"settings_profile_use": "Usar", "settings_profile_use": "Usar",
"settings_profiles_refresh": "Recargar perfiles de configuración",
"settings_profiles_show": "Mostrar todos los perfiles de configuración", "settings_profiles_show": "Mostrar todos los perfiles de configuración",
"settings_profiles_unshow": "Ocultar todos los perfiles de configuración", "settings_profiles_unshow": "Ocultar todos los perfiles de configuración",
"show_admin_badge": "Mostrar la insignia de \"Administrador/a\" en mi perfil", "show_admin_badge": "Mostrar la insignia de \"Administrador/a\" en mi perfil",
"show_moderator_badge": "Mostrar la insignia de \"Moderador/a\" en mi perfil", "show_moderator_badge": "Mostrar la insignia de \"Moderador/a\" en mi perfil",
"show_nav_shortcuts": "Mostrar accesos directos de navegación adicionales en el panel superior",
"show_panel_nav_shortcuts": "Mostrar accesos directos de navegación de la línea de tiempo en la parte superior del panel",
"show_scrollbars": "Mostrar las barras de desplazamiento de la columna lateral",
"show_wider_shortcuts": "Mostrar una brecha más amplia entre los accesos directos del panel superior",
"show_yous": "Mostrar (Tú)s",
"stop_gifs": "Iniciar GIFs al pasar el ratón", "stop_gifs": "Iniciar GIFs al pasar el ratón",
"streaming": "Habilitar la transmisión automática de nuevas publicaciones cuando se desplaza hacia la parte superior", "streaming": "Habilitar la transmisión automática de nuevas publicaciones cuando se desplaza hacia la parte superior",
"style": { "style": {
@ -888,9 +898,9 @@
"use_source": "Nueva versión" "use_source": "Nueva versión"
} }
}, },
"subject_input_always_show": "Mostrar siempre el campo del tema", "subject_input_always_show": "Mostrar siempre el campo de advertencia de contenido",
"subject_line_behavior": "Copiar el tema en las respuestas", "subject_line_behavior": "Copiar el campo de advertencia en las respuestas",
"subject_line_email": "Como email: \"re: tema\"", "subject_line_email": "Como email: \"re: advertencia\"",
"subject_line_mastodon": "Como mastodon: copiar como es", "subject_line_mastodon": "Como mastodon: copiar como es",
"subject_line_noop": "No copiar", "subject_line_noop": "No copiar",
"text": "Texto", "text": "Texto",
@ -898,8 +908,13 @@
"theme_help": "Use códigos de color hexadecimales (#rrggbb) para personalizar su tema de colores.", "theme_help": "Use códigos de color hexadecimales (#rrggbb) para personalizar su tema de colores.",
"theme_help_v2_1": "También puede invalidar los colores y la opacidad de ciertos componentes si activa la casilla de verificación. Use el botón \"Borrar todo\" para deshacer los cambios.", "theme_help_v2_1": "También puede invalidar los colores y la opacidad de ciertos componentes si activa la casilla de verificación. Use el botón \"Borrar todo\" para deshacer los cambios.",
"theme_help_v2_2": "Los iconos debajo de algunas publicaciones son indicadores de contraste de fondo/texto, desplace el ratón por encima para obtener información más detallada. Tenga en cuenta que cuando se utilizan indicadores de contraste de transparencia se muestra el peor caso posible.", "theme_help_v2_2": "Los iconos debajo de algunas publicaciones son indicadores de contraste de fondo/texto, desplace el ratón por encima para obtener información más detallada. Tenga en cuenta que cuando se utilizan indicadores de contraste de transparencia se muestra el peor caso posible.",
"third_column_mode": "Cuando haya suficiente espacio, muestre la tercera columna",
"third_column_mode_none": "No mostrar la tercera columna en absoluto",
"third_column_mode_notifications": "Columna de notificaciones",
"third_column_mode_postform": "Formulario principal de publicación y navegación",
"token": "Token", "token": "Token",
"tooltipRadius": "Información/alertas", "tooltipRadius": "Información/alertas",
"translation_language": "Idioma de traducción automática",
"type_domains_to_mute": "Buscar dominios para silenciar", "type_domains_to_mute": "Buscar dominios para silenciar",
"upload_a_photo": "Subir una foto", "upload_a_photo": "Subir una foto",
"useStreamingApi": "Recibir publicaciones y notificaciones en tiempo real", "useStreamingApi": "Recibir publicaciones y notificaciones en tiempo real",

View file

@ -84,6 +84,7 @@
"keep_open": "Garder ouvert", "keep_open": "Garder ouvert",
"load_all": "Charger tout les {emojiAmount} émojis", "load_all": "Charger tout les {emojiAmount} émojis",
"load_all_hint": "{saneAmount} émojis chargé, charger tout les émojis peuvent causer des problèmes de performances.", "load_all_hint": "{saneAmount} émojis chargé, charger tout les émojis peuvent causer des problèmes de performances.",
"recent": "Utilisé récemment",
"search_emoji": "Rechercher un émoji", "search_emoji": "Rechercher un émoji",
"stickers": "Stickers", "stickers": "Stickers",
"unicode": "émoji unicode" "unicode": "émoji unicode"
@ -254,6 +255,10 @@
"hint": "Connectez-vous pour rejoindre la discussion", "hint": "Connectez-vous pour rejoindre la discussion",
"login": "Connexion", "login": "Connexion",
"logout": "Déconnexion", "logout": "Déconnexion",
"logout_confirm": "Voulez-vous vraiment vous déconnecter ?",
"logout_confirm_accept_button": "Déconnexion",
"logout_confirm_cancel_button": "Annuler",
"logout_confirm_title": "Déconnexion",
"password": "Mot de passe", "password": "Mot de passe",
"placeholder": "mon nom d'utilisateur", "placeholder": "mon nom d'utilisateur",
"recovery_code": "Code de récupération", "recovery_code": "Code de récupération",
@ -266,6 +271,32 @@
"next": "Suivant", "next": "Suivant",
"previous": "Précédent" "previous": "Précédent"
}, },
"moderation": {
"moderation": "Modération",
"reports": {
"add_note": "Ajouter une note",
"close": "Fermer",
"delete_note": "Supprimer",
"delete_note_accept": "Oui, supprimer",
"delete_note_cancel": "Non, abandonner",
"delete_note_confirm": "Voulez-vous vraiment supprimer cette note ?",
"delete_note_title": "Confirmer la suppression",
"no_content": "Description vide",
"no_reports": "Aucun rapport",
"note_placeholder": "Laisser une note",
"notes": "{ count } note | { count } notes",
"reopen": "Rouvrir",
"report": "Signaler",
"reports": "Rapports",
"resolve": "Résoudre",
"show_closed": "Afficher les rapports classés",
"statuses": "{ count } statut| { count } statuts",
"tag_policy_notice": "Activer la politique MRF pour établir les restrictions de publication",
"tags": "Établir les restrictions de publication"
},
"statuses": "Statuts",
"users": "Utilisateurs"
},
"nav": { "nav": {
"about": "À propos", "about": "À propos",
"administration": "Administration", "administration": "Administration",
@ -282,6 +313,7 @@
"interactions": "Interactions", "interactions": "Interactions",
"lists": "Listes", "lists": "Listes",
"mentions": "Mentions", "mentions": "Mentions",
"moderation": "Moderation",
"preferences": "Préférences", "preferences": "Préférences",
"public_timeline_description": "Tous les statuts publics de cette instance", "public_timeline_description": "Tous les statuts publics de cette instance",
"public_tl": "Flux publique", "public_tl": "Flux publique",
@ -378,6 +410,8 @@
} }
}, },
"registration": { "registration": {
"awaiting_email_confirmation": "Votre compte a été enregistré et un courriel envoyé à votre adresse. Veuillez consulter votre boîte mail pour terminer la registration.",
"awaiting_email_confirmation_title": "En attente de confirmation par courriel",
"bio": "Biographie", "bio": "Biographie",
"bio_placeholder": "ex :\nSalut, je me présente ici !\nJadore les animés et les jeux vidéos. Jespère qu'on peut être amis⋅ies !", "bio_placeholder": "ex :\nSalut, je me présente ici !\nJadore les animés et les jeux vidéos. Jespère qu'on peut être amis⋅ies !",
"captcha": "CAPTCHA", "captcha": "CAPTCHA",

View file

@ -8,6 +8,7 @@
"reject": "Tolak" "reject": "Tolak"
}, },
"mrf_policies": "Kebijakan MRF yang diaktifkan", "mrf_policies": "Kebijakan MRF yang diaktifkan",
"mrf_policies_desc": "Kebijakan MRF memanipulasi federasi yang terjadi pada instansi ini. Kebijakan berikut adalah yang aktif:",
"simple": { "simple": {
"accept": "Terima", "accept": "Terima",
"accept_desc": "Instansi ini hanya menerima pesan dari instansi-instansi berikut:", "accept_desc": "Instansi ini hanya menerima pesan dari instansi-instansi berikut:",
@ -181,15 +182,44 @@
"lv": "Latvia", "lv": "Latvia",
"nl": "Belanda", "nl": "Belanda",
"pl": "Polandia", "pl": "Polandia",
"pt": "Portugal", "pt": "Portugis",
"ru": "Rusia", "ru": "Rusia",
"sk": "Slovakia", "sk": "Slovakia",
"sv": "Swedia", "sv": "Swedia",
"tr": "Turki", "tr": "Turki",
"translated_from": { "translated_from": {
"ar": "Diterjemahkan dari @:languages.ar", "ar": "Diterjemahkan dari bahasa @:languages.ar",
"bg": "Diterjemahkan dari @:languages.bg", "az": "Diterjemahkan dari bahasa @:languages.az",
"en": "Diterjemahkan dari @:languages.en" "bg": "Diterjemahkan dari bahasa @:languages.bg",
"cs": "Diterjemahkan dari bahasa @:languages.cs",
"da": "Diterjemahkan dari bahasa @:languages.da",
"de": "Diterjemahkan dari bahasa @:languages.de",
"el": "Diterjemahkan dari bahasa @:languages.el",
"en": "Diterjemahkan dari bahasa @:languages.en",
"eo": "Diterjemahkan dari bahasa @:languages.eo",
"es": "Diterjemahkan dari bahasa @:languages.es",
"fa": "Diterjemahkan dari bahasa @:languages.fa",
"fi": "Diterjemahkan dari bahasa @:languages.fi",
"fr": "Diterjemahkan dari bahasa @:languages.fr",
"ga": "Diterjemahkan dari bahasa @:languages.ga",
"he": "Diterjemahkan dari bahasa @:languages.he",
"hi": "Diterjemahkan dari bahasa @:languages.hi",
"hu": "Diterjemahkan dari bahasa @:languages.hu",
"id": "Diterjemahkan dari bahasa @:languages.id",
"it": "Diterjemahkan dari bahasa @:languages.it",
"ja": "Diterjemahkan dari bahasa @:languages.ja",
"ko": "Diterjemahkan dari bahasa @:languages.ko",
"lt": "Diterjemahkan dari bahasa @:languages.lt",
"lv": "Diterjemahkan dari bahasa @:languages.lv",
"nl": "Diterjemahkan dari bahasa @:languages.nl",
"pl": "Diterjemahkan dari bahasa @:languages.pl",
"pt": "Diterjemahkan dari bahasa @:languages.pt",
"ru": "Diterjemahkan dari bahasa @:languages.ru",
"sk": "Diterjemahkan dari bahasa @:languages.sk",
"sv": "Diterjemahkan dari bahasa @:languages.sv",
"tr": "Diterjemahkan dari bahasa @:languages.tr",
"uk": "Diterjemahkan dari bahasa @:languages.uk",
"zh": "Diterjemahkan dari bahasa @:languages.zh"
}, },
"uk": "Ukraina", "uk": "Ukraina",
"zh": "Tionghoa" "zh": "Tionghoa"
@ -243,13 +273,17 @@
"delete_note_title": "Konfirmasi penghapusan", "delete_note_title": "Konfirmasi penghapusan",
"no_content": "Tak diberikan keterangan", "no_content": "Tak diberikan keterangan",
"no_reports": "Tak ada laporan", "no_reports": "Tak ada laporan",
"note_placeholder": "Tinggalkan catatan...", "note_placeholder": "Tinggalkan catatan",
"notes": "{ count } catatan",
"reopen": "Buka kembali", "reopen": "Buka kembali",
"reports": "Laporan", "reports": "Laporan",
"resolve": "Selesaikan", "resolve": "Selesaikan",
"show_closed": "Tampilkan yang telah ditutup" "show_closed": "Tampilkan yang telah ditutup",
"statuses": "{ count } postingan",
"tag_policy_notice": "Aktifkan MRF TagPolicy untuk mengatur pembatasan postingan",
"tags": "Atur pembatasan postingan"
}, },
"statuses": "Status", "statuses": "Postingan",
"users": "Pengguna" "users": "Pengguna"
}, },
"nav": { "nav": {
@ -310,10 +344,11 @@
"expired": "Japat berakhir {0} yang lalu", "expired": "Japat berakhir {0} yang lalu",
"expires_in": "Japat berakhir dalam {0}", "expires_in": "Japat berakhir dalam {0}",
"expiry": "Usia japat", "expiry": "Usia japat",
"multiple_choices": "Lebih dari satu opsi dapat dipilih",
"not_enough_options": "Terlalu sedikit opsi yang unik pada japat", "not_enough_options": "Terlalu sedikit opsi yang unik pada japat",
"option": "Opsi", "option": "Opsi",
"people_voted_count": "{count} orang memilih | {count} orang memilih", "people_voted_count": "{count} orang memilih | {count} orang memilih",
"single_choice": "", "single_choice": "Hanya satu opsi dapat dipilih",
"type": "Jenis japat", "type": "Jenis japat",
"vote": "Pilih", "vote": "Pilih",
"votes": "suara", "votes": "suara",
@ -406,6 +441,7 @@
"account_backup_description": "Ini memungkinkan kamu untuk mengunduh arsip yang berisi informasi tentang akun dan postingan kamu, namun belum bisa diimpor ke akun Pleroma.", "account_backup_description": "Ini memungkinkan kamu untuk mengunduh arsip yang berisi informasi tentang akun dan postingan kamu, namun belum bisa diimpor ke akun Pleroma.",
"account_privacy": "Privasi", "account_privacy": "Privasi",
"add_backup": "Buat cadangan baru", "add_backup": "Buat cadangan baru",
"add_backup_error": "Gagal menambahkan cadangan baru: {error}",
"added_backup": "Cadangan baru ditambahkan.", "added_backup": "Cadangan baru ditambahkan.",
"allow_following_move": "Ikuti otomatis apabila akun yang diikuti pindah", "allow_following_move": "Ikuti otomatis apabila akun yang diikuti pindah",
"app_name": "Nama aplikasi", "app_name": "Nama aplikasi",
@ -448,7 +484,11 @@
"confirm_dialogs_repeat": "Mengulangi postingan", "confirm_dialogs_repeat": "Mengulangi postingan",
"confirm_dialogs_unfollow": "Berhenti mengikuti seseorang", "confirm_dialogs_unfollow": "Berhenti mengikuti seseorang",
"confirm_new_password": "Konfirmasi kata sandi baru", "confirm_new_password": "Konfirmasi kata sandi baru",
"conversation_display": "Gaya tampilan obrolan", "conversation_display": "Gaya tampilan percakapan",
"conversation_display_tree": "Bercabang",
"conversation_other_replies_button_below": "Di bawah postingan",
"conversation_other_replies_button_inside": "Di postingan",
"current_avatar": "Avatarmu saat ini",
"current_password": "Kata sandi saat ini", "current_password": "Kata sandi saat ini",
"data_import_export_tab": "Impor / ekspor data", "data_import_export_tab": "Impor / ekspor data",
"delete_account": "Hapus akun", "delete_account": "Hapus akun",
@ -462,6 +502,7 @@
"emoji_reactions_on_timeline": "Tampilkan reaksi emoji pada linimasa", "emoji_reactions_on_timeline": "Tampilkan reaksi emoji pada linimasa",
"enable_web_push_notifications": "Aktifkan notifikasi push web", "enable_web_push_notifications": "Aktifkan notifikasi push web",
"enter_current_password_to_confirm": "Masukkan kata sandi kamu saat ini untuk mengonfirmasi identitas kamu", "enter_current_password_to_confirm": "Masukkan kata sandi kamu saat ini untuk mengonfirmasi identitas kamu",
"expert_mode": "Tampilkan pengaturan lanjutan",
"expire_posts_enabled": "Hapus postingan setelah jumlah hari yang ditentukan", "expire_posts_enabled": "Hapus postingan setelah jumlah hari yang ditentukan",
"expire_posts_input_placeholder": "Jumlah hari", "expire_posts_input_placeholder": "Jumlah hari",
"file_export_import": { "file_export_import": {
@ -469,17 +510,28 @@
"backup_settings": "Cadangkan pengaturan ke berkas", "backup_settings": "Cadangkan pengaturan ke berkas",
"backup_settings_theme": "Cadangkan pengaturan dan tema ke berkas", "backup_settings_theme": "Cadangkan pengaturan dan tema ke berkas",
"errors": { "errors": {
"file_slightly_new": "Versi minor berkas berbeda, beberapa pengaturan mungkin tidak termuat" "file_slightly_new": "Versi minor berkas berbeda, beberapa pengaturan mungkin tidak termuat",
} "file_too_new": "Versi major tidak kompatibel: {fileMajor}, PleromaFE ini (versi {feMajor}) terlalu lama untuk menanganinya",
"file_too_old": "Versi major tidak kompatibel: {fileMajor}, versi berkas terlalu lama dan tidak lagi didukung (min. versi {feMajor})",
"invalid_file": "Berkas yang dipilih bukan cadangan pengaturan Pleroma yang didukung. Tidak dibuat perubahan."
},
"restore_settings": "Pulihkan pengaturan dari berkas"
}, },
"filtering": "Penyaringan", "filtering": "Penyaringan",
"filtering_explanation": "Semua postingan yang mengandung kata-kata ini akan dibisukan, satu kata per baris",
"follow_import_error": "Terjadi kesalahan ketika mengimpor pengikut", "follow_import_error": "Terjadi kesalahan ketika mengimpor pengikut",
"fun": "Seru", "fun": "Seru",
"general": "Umum", "general": "Umum",
"greentext": "Panah meme",
"hide_all_muted_posts": "Sembunyikan postingan yang dibisukan",
"hide_attachments_in_convo": "Sembunyikan lampiran pada percakapan",
"hide_attachments_in_tl": "Sembunyikan lampiran di linimasa",
"hide_bot_indication": "Sembunyikan tanda bot pada postingan",
"hide_filtered_statuses": "Sembunyikan semua postingan yang tersaring",
"hide_followers_count_description": "Jangan tampilkan jumlah pengikut", "hide_followers_count_description": "Jangan tampilkan jumlah pengikut",
"hide_followers_description": "Jangan tampilkan siapa yang mengikuti saya", "hide_followers_description": "Jangan tampilkan siapa yang mengikutiku",
"hide_follows_count_description": "Jangan tampilkan jumlah mengikuti", "hide_follows_count_description": "Jangan tampilkan jumlah mengikuti",
"hide_follows_description": "Jangan tampilkan siapa yang saya ikuti", "hide_follows_description": "Jangan tampilkan siapa yang aku ikuti",
"hide_muted_posts": "Sembunyikan postingan-postingan dari pengguna yang dibisukan", "hide_muted_posts": "Sembunyikan postingan-postingan dari pengguna yang dibisukan",
"hide_post_stats": "Sembunyikan statistik postingan (seperti jumlah favorit)", "hide_post_stats": "Sembunyikan statistik postingan (seperti jumlah favorit)",
"hide_shoutbox": "Sembunyikan kotak suara instansi", "hide_shoutbox": "Sembunyikan kotak suara instansi",
@ -493,9 +545,16 @@
"invalid_theme_imported": "Berkas yang dipilih bukan sebuah tema yang didukung Pleroma. Tidak ada perubahan yang dibuat pada tema kamu.", "invalid_theme_imported": "Berkas yang dipilih bukan sebuah tema yang didukung Pleroma. Tidak ada perubahan yang dibuat pada tema kamu.",
"limited_availability": "Tidak tersedia di browser kamu", "limited_availability": "Tidak tersedia di browser kamu",
"links": "Tautan", "links": "Tautan",
"lock_account_description": "Batasi akunmu kepada pengikut yang sudah disetujui saja",
"loop_video": "Ulang-ulang video", "loop_video": "Ulang-ulang video",
"loop_video_silent_only": "Ulang-ulang video tanpa suara (seperti \"gif\" Mastodon)", "loop_video_silent_only": "Ulang-ulang video tanpa suara (seperti \"gif\" Mastodon)",
"max_thumbnails": "Jumlah thumbnail maksimum per postingan", "max_thumbnails": "Jumlah thumbnail maksimum per postingan (kosong = tidak terbatas)",
"mention_link_bolden_you": "Sorot sebutan kamu apabila kamu disebut",
"mention_link_display": "Tampilkan tautan sebutan",
"mention_link_display_full": "selalu sebagai nama lengkap (cth. {'@'}foo{'@'}example.org)",
"mention_link_display_full_for_remote": "sebagai nama lengkap hanya untuk pengguna di instansi lain (cth. {'@'}foo{'@'}example.org)",
"mention_link_display_short": "selalu sebagai nama pendek (cth. {'@'}foo)",
"mention_link_show_avatar": "Tampilkan avatar pengguna di samping tautan",
"mfa": { "mfa": {
"authentication_methods": "Metode otentikasi", "authentication_methods": "Metode otentikasi",
"confirm_and_enable": "Konfirmasi & aktifkan OTP", "confirm_and_enable": "Konfirmasi & aktifkan OTP",
@ -541,9 +600,9 @@
}, },
"profile_tab": "Profil", "profile_tab": "Profil",
"reply_visibility_all": "Tampilkan semua balasan", "reply_visibility_all": "Tampilkan semua balasan",
"reply_visibility_following": "Hanya tampilkan balasan yang ditujukan kepada saya atau orang yang saya ikuti", "reply_visibility_following": "Hanya tampilkan balasan yang ditujukan kepadaku atau orang yang aku ikuti",
"reply_visibility_following_short": "Tampilkan balasan ke orang yang saya ikuti", "reply_visibility_following_short": "Tampilkan balasan ke orang yang aku ikuti",
"reply_visibility_self": "Hanya tampilkan balasan yang ditujukan kepada saya", "reply_visibility_self": "Hanya tampilkan balasan yang ditujukan kepadaku",
"save": "Simpan perubahan", "save": "Simpan perubahan",
"saving_err": "Terjadi kesalahan ketika menyimpan pengaturan", "saving_err": "Terjadi kesalahan ketika menyimpan pengaturan",
"saving_ok": "Pengaturan disimpan", "saving_ok": "Pengaturan disimpan",
@ -554,8 +613,8 @@
"set_new_avatar": "Tetapkan avatar baru", "set_new_avatar": "Tetapkan avatar baru",
"set_new_profile_background": "Tetapkan latar belakang profil baru", "set_new_profile_background": "Tetapkan latar belakang profil baru",
"settings": "Pengaturan", "settings": "Pengaturan",
"show_admin_badge": "Tampilkan lencana \"Admin\" di profil saya", "show_admin_badge": "Tampilkan lencana \"Admin\" di profilku",
"show_moderator_badge": "Tampilkan lencana \"Moderator\" di profil saya", "show_moderator_badge": "Tampilkan lencana \"Moderator\" di profilku",
"style": { "style": {
"advanced_colors": { "advanced_colors": {
"_tab_label": "Lanjutan", "_tab_label": "Lanjutan",
@ -598,7 +657,7 @@
}, },
"preview": { "preview": {
"button": "Tombol", "button": "Tombol",
"checkbox": "Saya telah membaca sekilas syarat dan ketentuan", "checkbox": "Aku telah membaca sekilas syarat dan ketentuan",
"error": "Contoh kesalahan", "error": "Contoh kesalahan",
"faint_link": "manual berguna", "faint_link": "manual berguna",
"fine_print": "Baca {0} kami untuk belajar sesuatu yang tak ada gunanya!", "fine_print": "Baca {0} kami untuk belajar sesuatu yang tak ada gunanya!",

View file

@ -1,20 +1,29 @@
{ {
"about": { "about": {
"bubble_instances": "ローカルバブルインスタンス",
"mrf": { "mrf": {
"federation": "フェデレーション", "federation": "フェデレーション",
"keyword": {
"keyword_policies": "キーワードポリシー",
"reject": "おことわり",
"replace": "おきかえ"
},
"mrf_policies": "ゆうこうなMRFポリシー", "mrf_policies": "ゆうこうなMRFポリシー",
"mrf_policies_desc": "MRFポリシーは、このインスタンスのフェデレーションのふるまいを、いじります。これらのMRFポリシーがゆうこうになっています:", "mrf_policies_desc": "MRFポリシーは、このインスタンスのフェデレーションのふるまいを、いじります。これらのMRFポリシーがゆうこうになっています:",
"simple": { "simple": {
"accept": "うけいれ", "accept": "うけいれ",
"accept_desc": "このインスンスは、これらのインスタンスからのメッセージのみをうけいれます:", "accept_desc": "このインスンスは、これらのインスタンスからのメッセージのみをうけいれます:",
"ftl_removal": "「つながっているすべてのネットワーク」タイムラインからのぞく", "ftl_removal": "「つながっているすべてのネットワーク」タイムラインからのぞく",
"ftl_removal_desc": "このインスタンスは、つながっているすべてのネットワーク」タイムラインから、これらのインスタンスを、とりのぞきます:", "ftl_removal_desc": "このインスタンスは、「つながっているすべてのネットワーク」タイムラインから、これらのインスタンスを、とりのぞきます:",
"instance": "インスタンス",
"media_nsfw": "メディアをすべてセンシティブにする", "media_nsfw": "メディアをすべてセンシティブにする",
"media_nsfw_desc": "このインスタンスは、これらのインスタンスからおくられてきたメディアを、すべて、センシティブにマークします:", "media_nsfw_desc": "このインスタンスは、これらのインスタンスからおくられてきたメディアを、すべて、センシティブにマークします:",
"media_removal": "メディアをのぞく", "media_removal": "メディアをのぞく",
"media_removal_desc": "このインスタンスは、これらのインスタンスからおくられてきたメディアを、とりのぞきます:", "media_removal_desc": "このインスタンスは、これらのインスタンスからおくられてきたメディアを、とりのぞきます:",
"not_applicable": "なし",
"quarantine": "けんえき", "quarantine": "けんえき",
"quarantine_desc": "このインスタンスは、これらのインスタンスに、パブリックなとうこうのみを、おくります:", "quarantine_desc": "このインスタンスは、これらのインスタンスに、とうこうをおくりません:",
"reason": "りゆう",
"reject": "おことわり", "reject": "おことわり",
"reject_desc": "このインスタンスは、これらのインスタンスからのメッセージをうけいれません:", "reject_desc": "このインスタンスは、これらのインスタンスからのメッセージをうけいれません:",
"simple_policies": "インスタンスのポリシー" "simple_policies": "インスタンスのポリシー"
@ -22,6 +31,49 @@
}, },
"staff": "スタッフ" "staff": "スタッフ"
}, },
"announcements": {
"all_day_prompt": "いちにちじゅう",
"cancel_edit_action": "キャンセル",
"close_error": "とじる",
"delete_action": "けす",
"edit_action": "へんしゅう",
"end_time_display": "{time} におわります",
"end_time_prompt": "おわるじかん: ",
"inactive_message": "このおしらせは、アクティブではありません",
"mark_as_read_action": "よんだ!",
"page_header": "おしらせ",
"post_action": "とうこう",
"post_error": "エラーになりました: {error}",
"post_form_header": "おしらせする",
"post_placeholder": "おしらせのほんぶん",
"published_time_display": "{time} に、おしらせされました",
"start_time_display": "{time} から、はじまります",
"start_time_prompt": "はじまるじかん: ",
"submit_edit_action": "そうしん",
"title": "おしらせ"
},
"chats": {
"chats": "チャット",
"delete": "けす",
"delete_confirm": "ほんとうに、このメッセージを、けしてもいいですか?",
"empty_chat_list_placeholder": "チャットはありません。あたらしく、チャットをはじみてみましょう!",
"empty_message_error": "からっぽのメッセージは、おくれません",
"error_loading_chat": "チャットをよみこむことが、できなかったかもしれません。",
"error_sending_message": "メッセージをおくることが、できなかったかもしれません。",
"message_user": "{nickname} にメッセージ",
"more": "つづき",
"new": "あたらしいチャット",
"you": "あなた:"
},
"display_date": {
"today": "きょう"
},
"domain_mute_card": {
"mute": "ミュート",
"mute_progress": "ミュートしています…",
"unmute": "ミュートをやめる",
"unmute_progress": "ミュートをとりけしています…"
},
"emoji": { "emoji": {
"add_emoji": "えもじをうちこむ", "add_emoji": "えもじをうちこむ",
"custom": "カスタムえもじ", "custom": "カスタムえもじ",
@ -29,6 +81,7 @@
"keep_open": "ピッカーをあけたままにする", "keep_open": "ピッカーをあけたままにする",
"load_all": "すべてのえもじをロード ({emojiAmount} こあります)", "load_all": "すべてのえもじをロード ({emojiAmount} こあります)",
"load_all_hint": "はじめの {saneAmount} このえもじだけがロードされています。すべてのえもじをロードすると、パフォーマンスがわるくなるかもしれません。", "load_all_hint": "はじめの {saneAmount} このえもじだけがロードされています。すべてのえもじをロードすると、パフォーマンスがわるくなるかもしれません。",
"recent": "さいきんつかった",
"search_emoji": "えもじをさがす", "search_emoji": "えもじをさがす",
"stickers": "ステッカー", "stickers": "ステッカー",
"unicode": "ユニコードえもじ" "unicode": "ユニコードえもじ"
@ -42,8 +95,15 @@
"scope_options": "こうかいはんいせんたく", "scope_options": "こうかいはんいせんたく",
"text_limit": "もじのかず", "text_limit": "もじのかず",
"title": "ゆうこうなきのう", "title": "ゆうこうなきのう",
"upload_limit": "ファイルのおおきさのじょうげん",
"who_to_follow": "おすすめユーザー" "who_to_follow": "おすすめユーザー"
}, },
"file_type": {
"audio": "おんせい",
"file": "ファイル",
"image": "がぞう",
"video": "ビデオ"
},
"finder": { "finder": {
"error_fetching_user": "ユーザーけんさくがエラーになりました", "error_fetching_user": "ユーザーけんさくがエラーになりました",
"find_user": "ユーザーをさがす" "find_user": "ユーザーをさがす"
@ -51,12 +111,32 @@
"general": { "general": {
"apply": "てきよう", "apply": "てきよう",
"cancel": "キャンセル", "cancel": "キャンセル",
"close": "とじる",
"confirm": "たしかめる", "confirm": "たしかめる",
"disable": "なし", "disable": "なし",
"dismiss": "わすれる",
"enable": "あり", "enable": "あり",
"error_retry": "もういちど、ためしてください",
"flash_content": "クリックすると、Ruffle をつかって、フラッシュさくひんをひょうじします。(うまくうごかないかもしれません)",
"flash_fail": "フラッシュさくひんのロードに、しっぱいしました。コンソールに、くわしいことがかかれています。",
"flash_security": "フラッシュさくひんは、あぶないことをしてくるかもしれないので、ちゅういしてください。",
"generic_error": "エラーになりました", "generic_error": "エラーになりました",
"loading": "ロードしています…",
"more": "つづき", "more": "つづき",
"optional": "かかなくてもよい", "optional": "かかなくてもよい",
"peek": "かくす",
"retry": "もういちど、ためしてください",
"role": {
"admin": "アドミン",
"moderator": "モデレーター"
},
"scope_in_timeline": {
"direct": "ダイレクト",
"local": "ローカル: このとうこうは、このインスタンスのユーザーだけが、みることができます",
"private": "フォロワーげんてい",
"public": "パブリック",
"unlisted": "アンリステッド"
},
"show_less": "たたむ", "show_less": "たたむ",
"show_more": "つづきをみる", "show_more": "つづきをみる",
"submit": "そうしん", "submit": "そうしん",
@ -76,7 +156,86 @@
"interactions": { "interactions": {
"favs_repeats": "リピートとおきにいり", "favs_repeats": "リピートとおきにいり",
"follows": "あたらしいフォロー", "follows": "あたらしいフォロー",
"load_older": "ふるいやりとりをみる" "load_older": "ふるいやりとりをみる",
"moves": "ユーザーをひっこしする"
},
"languages": {
"ar": "アラビアご",
"az": "アゼルバイジャンご",
"bg": "ブルガリアご",
"cs": "チェコご",
"da": "デンマークご",
"de": "ドイツご",
"el": "ギリシャご",
"en": "えいご",
"eo": "エスご",
"es": "スペインご",
"fa": "ペルシャご",
"fi": "フィンランドご",
"fr": "フランスご",
"ga": "アイルランドご",
"he": "ヘブライご",
"hi": "ヒンディーご",
"hu": "ハンガリーご",
"id": "インドネシアご",
"it": "イタリアご",
"ja": "にほんご",
"ko": "かんこくご",
"lt": "リトアニアご",
"lv": "ラトビアご",
"nl": "オランダご",
"pl": "ポーランドご",
"pt": "ポルトガルご",
"ru": "ロシアご",
"sk": "スロバキアご",
"sv": "スウェーデンご",
"tr": "トルコご",
"translated_from": {
"ar": "@:languages.ar から、ほんやくされました",
"az": "@:languages.az から、ほんやくされました",
"bg": "@:languages.bg から、ほんやくされました",
"cs": "@:languages.cs から、ほんやくされました",
"da": "@:languages.da から、ほんやくされました",
"de": "@:languages.de から、ほんやくされました",
"el": "@:languages.el から、ほんやくされました",
"en": "@:languages.en から、ほんやくされました",
"eo": "@:languages.eo から、ほんやくされました",
"es": "@:languages.es から、ほんやくされました",
"fa": "@:languages.fa から、ほんやくされました",
"fi": "@:languages.fi から、ほんやくされました",
"fr": "@:languages.fr から、ほんやくされました",
"ga": "@:languages.ga から、ほんやくされました",
"he": "@:languages.he から、ほんやくされました",
"hi": "@:languages.hi から、ほんやくされました",
"hu": "@:languages.hu から、ほんやくされました",
"id": "@:languages.id から、ほんやくされました",
"it": "@:languages.it から、ほんやくされました",
"ja": "@:languages.ja から、ほんやくされました",
"ko": "@:languages.ko から、ほんやくされました",
"lt": "@:languages.lt から、ほんやくされました",
"lv": "@:languages.lv から、ほんやくされました",
"nl": "@:languages.nl から、ほんやくされました",
"pl": "@:languages.pl から、ほんやくされました",
"pt": "@:languages.pt から、ほんやくされました",
"ru": "@:languages.ru から、ほんやくされました",
"sk": "@:languages.sk から、ほんやくされました",
"sv": "@:languages.sv から、ほんやくされました",
"tr": "@:languages.tr から、ほんやくされました",
"uk": "@:languages.uk から、ほんやくされました",
"zh": "@:languages.zh から、ほんやくされました"
},
"uk": "ウクライナご",
"zh": "ちゅうごくご"
},
"lists": {
"create": "つくる",
"delete": "けす",
"following_only": "フォローしているユーザーのみ",
"lists": "リスト",
"new": "リストをつくる",
"save": "セーブ",
"search": "ユーザーをさがす",
"title": "リストのなまえ"
}, },
"login": { "login": {
"authentication_code": "にんしょうコード", "authentication_code": "にんしょうコード",
@ -90,41 +249,90 @@
"hint": "はなしあいにくわわるには、ログインしてください", "hint": "はなしあいにくわわるには、ログインしてください",
"login": "ログイン", "login": "ログイン",
"logout": "ログアウト", "logout": "ログアウト",
"logout_confirm": "ほんとうに、ログアウトしてもいいですか?",
"logout_confirm_accept_button": "ログアウト",
"logout_confirm_cancel_button": "キャンセル",
"logout_confirm_title": "ログアウト",
"password": "パスワード", "password": "パスワード",
"placeholder": "れい: lain", "placeholder": "ユーザーめい",
"recovery_code": "リカバリーコード", "recovery_code": "リカバリーコード",
"register": "はじめる", "register": "はじめる",
"username": "ユーザーめい" "username": "ユーザーめい"
}, },
"media_modal": { "media_modal": {
"counter": "{current} / {total}",
"hide": "とじる",
"next": "つぎ", "next": "つぎ",
"previous": "まえ" "previous": "まえ"
}, },
"moderation": {
"moderation": "モデレーション",
"reports": {
"add_note": "メモする",
"close": "とじる",
"delete_note": "けす",
"delete_note_accept": "けす",
"delete_note_cancel": "キャンセル",
"delete_note_confirm": "ほんとうに、このメモをけしてもいいですか?",
"delete_note_title": "かくにんしてください",
"no_content": "せつめいはありません",
"no_reports": "つうほうはありません",
"note_placeholder": "メモする",
"notes": "{ count }こ",
"reopen": "ひらきなおす",
"report": "つうほう:",
"reports": "つうほう",
"resolve": "かいけつ",
"show_closed": "かいけつしたつうほうをみる",
"statuses": "{ count } こ",
"tag_policy_notice": "とうこうをせいげんするには、TagPolicy MRF をゆうこうにしてください",
"tags": "とうこうをせいげんする"
},
"statuses": "とうこう",
"users": "ユーザー"
},
"nav": { "nav": {
"about": "これはなに?", "about": "これはなに?",
"administration": "アドミニストレーション", "administration": "アドミニストレーション",
"announcements": "おしらせ",
"back": "もどる", "back": "もどる",
"bookmarks": "ブックマーク",
"bubble_timeline": "バブルタイムライン",
"bubble_timeline_description": "アドミンがおすすめするインスタンスからのとうこう",
"chats": "チャット",
"dms": "ダイレクトメッセージ", "dms": "ダイレクトメッセージ",
"friend_requests": "フォローリクエスト", "friend_requests": "フォローリクエスト",
"home_timeline": "ホームタイムライン",
"home_timeline_description": "フォローしているユーザーのとうこう",
"interactions": "やりとり", "interactions": "やりとり",
"lists": "リスト",
"mentions": "メンション", "mentions": "メンション",
"moderation": "モデレーション",
"preferences": "せってい", "preferences": "せってい",
"public_timeline_description": "このインスタンスからの、パブリックなとうこう",
"public_tl": "パブリックタイムライン", "public_tl": "パブリックタイムライン",
"search": "さがす", "search": "さがす",
"timeline": "タイムライン", "timeline": "タイムライン",
"timelines": "タイムライン",
"twkn": "つながっているすべてのネットワーク", "twkn": "つながっているすべてのネットワーク",
"twkn_timeline_description": "つながっているすべてのネットワークからのとうこう",
"user_search": "ユーザーをさがす", "user_search": "ユーザーをさがす",
"who_to_follow": "おすすめユーザー" "who_to_follow": "おすすめユーザー"
}, },
"notifications": { "notifications": {
"broken_favorite": "ステータスがみつかりません。さがしています…", "broken_favorite": "とうこうがみつかりません。さがしています…",
"favorited_you": "あなたのステータスがおきにいりされました", "error": "つうちのしゅとくがエラーになりました: {0}",
"favorited_you": "あなたのとうこうが、おきにいりされました",
"follow_request": "フォローリクエストされました",
"followed_you": "フォローされました", "followed_you": "フォローされました",
"load_older": "ふるいつうちをみる", "load_older": "ふるいつうちをみる",
"migrated_to": "インスタンスをひっこしました",
"no_more_notifications": "つうちはありません", "no_more_notifications": "つうちはありません",
"notifications": "つうち", "notifications": "つうち",
"poll_ended": "いれふだがおわりました",
"reacted_with": "{0} でリアクションされました",
"read": "よんだ!", "read": "よんだ!",
"repeated_you": "あなたのステータスがリピートされました" "repeated_you": "あなたのとうこうが、リピートされました"
}, },
"password_reset": { "password_reset": {
"check_email": "パスワードをリセットするためのリンクがかかれたメールが、とどいているかどうか、みてください。", "check_email": "パスワードをリセットするためのリンクがかかれたメールが、とどいているかどうか、みてください。",
@ -147,49 +355,72 @@
"multiple_choices": "いくつでもえらべる", "multiple_choices": "いくつでもえらべる",
"not_enough_options": "ユニークなオプションが、たりません", "not_enough_options": "ユニークなオプションが、たりません",
"option": "オプション", "option": "オプション",
"people_voted_count": "{count} にんが、ふだをいれています",
"single_choice": "ひとつえらぶ", "single_choice": "ひとつえらぶ",
"type": "いれふだのかた", "type": "いれふだのかた",
"vote": "ふだをいれる", "vote": "ふだをいれる",
"votes": "いれふだ" "votes": "いれふだ",
"votes_count": "{count} ふだ"
}, },
"post_status": { "post_status": {
"account_not_locked_warning": "あなたのアカウントは {0} ではありません。あなたをフォローすれば、だれでも、フォロワーげんていのステータスをよむことができます。", "account_not_locked_warning": "あなたのアカウントは {0} ではありません。あなたをフォローすれば、だれでも、フォロワーげんていのとうこうをよむことができます。",
"account_not_locked_warning_link": "ロックされたアカウント", "account_not_locked_warning_link": "ロックされたアカウント",
"attachments_sensitive": "ファイルをNSFWにする", "attachments_sensitive": "ファイルをNSFWにする",
"content_type": { "content_type": {
"text/bbcode": "BBCode", "text/bbcode": "BBCode",
"text/html": "HTML", "text/html": "HTML",
"text/markdown": "Markdown", "text/markdown": "Markdown",
"text/plain": "プレーンテキスト" "text/plain": "プレーンテキスト",
"text/x.misskeymarkdown": "MFM"
}, },
"content_warning": "せつめい (かかなくてもよい)", "content_warning": "ちゅういがき (かかなくてもよい)",
"default": "はねだくうこうに、つきました。", "default": "はねだくうこうに、つきました。",
"direct_warning_to_all": "このとうこうは、メンションされたすべてのユーザーが、みることができます。", "direct_warning_to_all": "このとうこうは、メンションされたすべてのユーザーが、みることができます。",
"direct_warning_to_first_only": "このとうこうは、メッセージのはじめでメンションされたユーザーだけが、みることができます。", "direct_warning_to_first_only": "このとうこうは、メッセージのはじめでメンションされたユーザーだけが、みることができます。",
"edit_remote_warning": "へんしゅうしたとうこうは、ほかのインスタンスに、はんえいされないことがあります!",
"edit_status": "へんしゅう",
"edit_unsupported_warning": "いれふだとメンションは、へんしゅうでかえることができません。",
"empty_status_error": "からっぽのとうこうは、おくることができません",
"media_description": "メディアのせつめい",
"media_description_error": "メディアのアップデートにしっぱいしました。もういちど、ためしてください",
"media_not_sensitive_warning": "ちゅういがきがついていますが、NSFWはついていません",
"new_status": "とうこうする", "new_status": "とうこうする",
"post": "とうこう",
"posting": "とうこう", "posting": "とうこう",
"preview": "プレビュー",
"preview_empty": "からっぽです",
"scope": { "scope": {
"direct": "ダイレクト: メンションされたユーザーのみにとどきます", "direct": "ダイレクト: メンションされたユーザーのみにとどきます",
"local": "ローカル: パブリックタイムラインにとどきますが、ほかのインスタンスにはとどきません",
"private": "フォロワーげんてい: フォロワーのみにとどきます", "private": "フォロワーげんてい: フォロワーのみにとどきます",
"public": "パブリック: パブリックタイムラインにとどきます", "public": "パブリック: パブリックタイムラインにとどきます",
"unlisted": "アンリステッド: パブリックタイムラインにとどきません" "unlisted": "アンリステッド: パブリックタイムラインにとどきません"
}, },
"scope_notice": { "scope_notice": {
"local": "このとうこうは、このインスタンスのユーザーだけが、みることができます",
"private": "このとうこうは、あなたのフォロワーだけが、みることができます", "private": "このとうこうは、あなたのフォロワーだけが、みることができます",
"public": "このとうこうは、だれでもみることができます", "public": "このとうこうは、だれでもみることができます",
"unlisted": "このとうこうは、パブリックタイムラインと、つながっているすべてのネットワークでは、みることができません" "unlisted": "このとうこうは、パブリックタイムラインと、つながっているすべてのネットワークでは、みることができません"
} }
}, },
"registration": { "registration": {
"awaiting_email_confirmation": "あなたのメールアドレスに、メールをおくりました。メールをかくにんして、とうろくをかんりょうさせてください。",
"awaiting_email_confirmation_title": "メールをかくにんするのをまっています",
"bio": "プロフィール", "bio": "プロフィール",
"bio_placeholder": "れい:\nごきげんよう。わたしはれいん。\nわたしはアニメのおんなのこで、にほんのベッドタウンにすんでいます。ワイヤードで、わたしにあったことが、あるかもしれませんね。", "bio_placeholder": "れい:\nごきげんよう。わたしはれいん。\nわたしはアニメのおんなのこで、にほんのベッドタウンにすんでいます。ワイヤードで、わたしにあったことが、あるかもしれませんね。",
"captcha": "CAPTCHA", "captcha": "CAPTCHA",
"email": "Eメール", "email": "Eメール",
"email_language": "サーバーからのメールは、どのことばで、かいてほしいですか?",
"fullname": "スクリーンネーム", "fullname": "スクリーンネーム",
"fullname_placeholder": "れい: いわくら れいん", "fullname_placeholder": "れい: いわくら れいん",
"new_captcha": "もじがよめないときは、がぞうをクリックすると、あたらしいがぞうになります", "new_captcha": "もじがよめないときは、がぞうをクリックすると、あたらしいがぞうになります",
"password_confirm": "パスワードのかくにん", "password_confirm": "パスワードのかくにん",
"reason": "とうろくしたいりゆう",
"reason_placeholder": "このインスタンスは、しゅどうで、とうろくをうけつけています。\nとうろくしたいりゆうを、アドミニストレーターにおしえてください。",
"register": "はじめる",
"registration": "はじめる", "registration": "はじめる",
"request_sent": "とうろくリクエストをおくりました。とうろくがうけいれられると、メールがとどきます。",
"request_sent_title": "とうろくリクエストをおくりました",
"token": "しょうたいトークン", "token": "しょうたいトークン",
"username_placeholder": "れい: lain", "username_placeholder": "れい: lain",
"validations": { "validations": {
@ -217,6 +448,20 @@
"select_all": "すべてえらぶ" "select_all": "すべてえらぶ"
}, },
"settings": { "settings": {
"accent": "アクセント",
"account_alias": "アカウントのエイリアス",
"account_alias_table_head": "エイリアス",
"account_backup": "アカウントのバックアップ",
"account_backup_description": "あなたのアカウントのじょうほうと、とうこうの、アーカイブをダウンロードできます。しかし、いまのところは、バックアップを Pleromaのアカウントにインポートすることはできません。",
"account_backup_table_head": "バックアップ",
"account_privacy": "プライバシー",
"add_alias_error": "エイリアスのついかがエラーになりました: {error}",
"add_backup": "あたらしいバックアップをつくる",
"add_backup_error": "バックアップのついかがエラーになりました: {error}",
"added_alias": "エイリアスをついかしました。",
"added_backup": "バックアップをつくりました。",
"allow_following_move": "フォローしているアカウントがひっこしたときに、じどうでフォローしてもよい",
"always_show_post_button": "みぎしたのとうこうボタンをいつでもひょうじする",
"app_name": "アプリのなまえ", "app_name": "アプリのなまえ",
"attachmentRadius": "ファイル", "attachmentRadius": "ファイル",
"attachments": "ファイル", "attachments": "ファイル",
@ -226,6 +471,7 @@
"avatarRadius": "アバター", "avatarRadius": "アバター",
"avatar_size_instruction": "アバターのおおきさは、150×150ピクセルか、それよりもおおきくするといいです。", "avatar_size_instruction": "アバターのおおきさは、150×150ピクセルか、それよりもおおきくするといいです。",
"background": "バックグラウンド", "background": "バックグラウンド",
"backup_not_ready": "このバックアップは、まだ、かんせいしていません。",
"bio": "プロフィール", "bio": "プロフィール",
"block_export": "ブロックのエクスポート", "block_export": "ブロックのエクスポート",
"block_export_button": "ブロックをCSVファイルにエクスポート", "block_export_button": "ブロックをCSVファイルにエクスポート",
@ -233,6 +479,7 @@
"block_import_error": "ブロックのインポートがエラーになりました", "block_import_error": "ブロックのインポートがエラーになりました",
"blocks_imported": "ブロックをインポートしました! じっさいにブロックするまでには、もうしばらくかかります。", "blocks_imported": "ブロックをインポートしました! じっさいにブロックするまでには、もうしばらくかかります。",
"blocks_tab": "ブロック", "blocks_tab": "ブロック",
"bot": "これは bot アカウントです",
"btnRadius": "ボタン", "btnRadius": "ボタン",
"cBlue": "リプライとフォロー", "cBlue": "リプライとフォロー",
"cGreen": "リピート", "cGreen": "リピート",
@ -244,11 +491,29 @@
"change_password_error": "パスワードをかえることが、できなかったかもしれません。", "change_password_error": "パスワードをかえることが、できなかったかもしれません。",
"changed_email": "メールアドレスをかえることができました!", "changed_email": "メールアドレスをかえることができました!",
"changed_password": "パスワードが、かわりました!", "changed_password": "パスワードが、かわりました!",
"chatMessageRadius": "チャットメッセージ",
"checkboxRadius": "チェックボックス", "checkboxRadius": "チェックボックス",
"collapse_subject": "せつめいのあるとうこうをたたむ", "collapse_subject": "ちゅういがきのあるとうこうをたたむ",
"columns": "カラム",
"composing": "とうこう", "composing": "とうこう",
"confirm_dialogs": "いつ、かくにんがめんをひょうじしますか:",
"confirm_dialogs_approve_follow": "フォローリクエストをうけいれるとき",
"confirm_dialogs_block": "だれかをブロックするとき",
"confirm_dialogs_delete": "とうこうをけすとき",
"confirm_dialogs_deny_follow": "フォローリクエストをおことわりするとき",
"confirm_dialogs_mute": "だれかをミュートするとき",
"confirm_dialogs_repeat": "とうこうをリピートするとき",
"confirm_dialogs_unfollow": "だれかのフォローをやめるとき",
"confirm_new_password": "あたらしいパスワードのかくにん", "confirm_new_password": "あたらしいパスワードのかくにん",
"confirmation_dialogs": "かくにんがめんのせってい",
"conversation_display": "スレッドのみため",
"conversation_display_linear": "リニア",
"conversation_display_tree": "ツリー",
"conversation_other_replies_button": "「ほかのへんしん」ボタンをひょうじするばしょ",
"conversation_other_replies_button_below": "とうこうのした",
"conversation_other_replies_button_inside": "とうこうのうちがわ",
"current_avatar": "いまのアバター", "current_avatar": "いまのアバター",
"current_mascot": "いまのマスコット",
"current_password": "いまのパスワード", "current_password": "いまのパスワード",
"data_import_export_tab": "インポートとエクスポート", "data_import_export_tab": "インポートとエクスポート",
"default_vis": "デフォルトのこうかいはんい", "default_vis": "デフォルトのこうかいはんい",
@ -256,9 +521,15 @@
"delete_account_description": "あなたのアカウントとメッセージが、きえます。", "delete_account_description": "あなたのアカウントとメッセージが、きえます。",
"delete_account_error": "アカウントをけすことが、できなかったかもしれません。インスタンスのアドミニストレーターに、おといあわせください。", "delete_account_error": "アカウントをけすことが、できなかったかもしれません。インスタンスのアドミニストレーターに、おといあわせください。",
"delete_account_instructions": "ほんとうにアカウントをけしてもいいなら、パスワードをかいてください。", "delete_account_instructions": "ほんとうにアカウントをけしてもいいなら、パスワードをかいてください。",
"disable_sticky_headers": "カラムヘッダーを、がめんのいちばんうえにくっつけない",
"discoverable": "けんさくなどのサービスで、このアカウントをみつけてもよい", "discoverable": "けんさくなどのサービスで、このアカウントをみつけてもよい",
"domain_mutes": "ドメイン",
"download_backup": "ダウンロード",
"email_language": "メールのことば",
"emoji_reactions_on_timeline": "えもじのリアクションをタイムラインにひょうじする",
"enable_web_push_notifications": "ウェブプッシュつうちをゆるす", "enable_web_push_notifications": "ウェブプッシュつうちをゆるす",
"enter_current_password_to_confirm": "あなたのアイデンティティをたしかめるため、あなたのいまのパスワードをかいてください", "enter_current_password_to_confirm": "あなたのアイデンティティをたしかめるため、あなたのいまのパスワードをかいてください",
"expert_mode": "こまかいせっていをひょうじ",
"export_theme": "セーブ", "export_theme": "セーブ",
"filtering": "フィルタリング", "filtering": "フィルタリング",
"filtering_explanation": "これらのことばをふくむすべてのものがミュートされます。1ぎょうに1つのことばをかいてください", "filtering_explanation": "これらのことばをふくむすべてのものがミュートされます。1ぎょうに1つのことばをかいてください",
@ -329,6 +600,7 @@
"no_rich_text_description": "リッチテキストをつかわない", "no_rich_text_description": "リッチテキストをつかわない",
"notification_blocks": "ブロックしているユーザーからのつうちは、すべてとまります。", "notification_blocks": "ブロックしているユーザーからのつうちは、すべてとまります。",
"notification_mutes": "あるユーザーからのつうちをとめるには、ミュートしてください。", "notification_mutes": "あるユーザーからのつうちをとめるには、ミュートしてください。",
"notification_setting_hide_if_cw": "ちゅういがきがあるとうこうのないようを、つうちからみえないようにする",
"notification_visibility": "ひょうじするつうち", "notification_visibility": "ひょうじするつうち",
"notification_visibility_follows": "フォロー", "notification_visibility_follows": "フォロー",
"notification_visibility_likes": "おきにいり", "notification_visibility_likes": "おきにいり",
@ -361,6 +633,7 @@
"search_user_to_mute": "ミュートしたいひとを、ここでけんさくできます", "search_user_to_mute": "ミュートしたいひとを、ここでけんさくできます",
"security": "セキュリティ", "security": "セキュリティ",
"security_tab": "セキュリティ", "security_tab": "セキュリティ",
"sensitive_if_subject": "ちゅういがきを、つけたときに、がぞうをじどうてきにNSFWにする",
"set_new_avatar": "あたらしいアバターをせっていする", "set_new_avatar": "あたらしいアバターをせっていする",
"set_new_profile_background": "あたらしいプロフィールのバックグラウンドをせっていする", "set_new_profile_background": "あたらしいプロフィールのバックグラウンドをせっていする",
"set_new_profile_banner": "あたらしいプロフィールバナーを設定する", "set_new_profile_banner": "あたらしいプロフィールバナーを設定する",
@ -478,8 +751,8 @@
"save_load_hint": "「のこす」オプションをONにすると、テーマをえらんだときとロードしたとき、いまのせっていをのこします。また、テーマをエクスポートするとき、これらのオプションをストアします。すべてのチェックボックスをOFFにすると、テーマをエクスポートしたとき、すべてのせっていをセーブします。" "save_load_hint": "「のこす」オプションをONにすると、テーマをえらんだときとロードしたとき、いまのせっていをのこします。また、テーマをエクスポートするとき、これらのオプションをストアします。すべてのチェックボックスをOFFにすると、テーマをエクスポートしたとき、すべてのせっていをセーブします。"
} }
}, },
"subject_input_always_show": "サブジェクトフィールドをいつでもひょうじする", "subject_input_always_show": "ちゅういがきフィールドをいつでもひょうじする",
"subject_line_behavior": "リプライするときサブジェクトをコピーする", "subject_line_behavior": "リプライするとき、ちゅういがきをコピーする",
"subject_line_email": "メールふう: \"re: サブジェクト\"", "subject_line_email": "メールふう: \"re: サブジェクト\"",
"subject_line_mastodon": "マストドンふう: そのままコピー", "subject_line_mastodon": "マストドンふう: そのままコピー",
"subject_line_noop": "コピーしない", "subject_line_noop": "コピーしない",
@ -506,8 +779,8 @@
} }
}, },
"status": { "status": {
"delete": "ステータスをけす", "delete": "とうこうをけす",
"delete_confirm": "ほんとうに、このステータスを、けしてもいいですか?", "delete_confirm": "ほんとうに、このとうこうを、けしてもいいですか?",
"favorites": "おきにいり", "favorites": "おきにいり",
"mute_conversation": "スレッドをミュートする", "mute_conversation": "スレッドをミュートする",
"pin": "プロフィールにピンどめする", "pin": "プロフィールにピンどめする",
@ -515,6 +788,8 @@
"repeats": "リピート", "repeats": "リピート",
"replies_list": "へんしん:", "replies_list": "へんしん:",
"reply_to": "へんしん:", "reply_to": "へんしん:",
"translate": "ほんやく",
"translated_from": "{language} から、ほんやくされました",
"unmute_conversation": "スレッドをミュートするのをやめる", "unmute_conversation": "スレッドをミュートするのをやめる",
"unpin": "プロフィールにピンどめするのをやめる" "unpin": "プロフィールにピンどめするのをやめる"
}, },
@ -543,7 +818,7 @@
"timeline": { "timeline": {
"collapse": "たたむ", "collapse": "たたむ",
"conversation": "スレッド", "conversation": "スレッド",
"load_older": "ふるいステータス", "load_older": "ふるいとうこう",
"no_more_statuses": "これでおわりです", "no_more_statuses": "これでおわりです",
"no_retweet_hint": "とうこうを「フォロワーのみ」または「ダイレクト」にすると、リピートできなくなります", "no_retweet_hint": "とうこうを「フォロワーのみ」または「ダイレクト」にすると、リピートできなくなります",
"no_statuses": "ありません", "no_statuses": "ありません",
@ -617,7 +892,7 @@
"remote_follow": "リモートフォロー", "remote_follow": "リモートフォロー",
"report": "つうほう", "report": "つうほう",
"show_repeats": "リピートをみる", "show_repeats": "リピートをみる",
"statuses": "ステータス", "statuses": "とうこう",
"subscribe": "サブスクライブ", "subscribe": "サブスクライブ",
"unblock": "ブロックをやめる", "unblock": "ブロックをやめる",
"unblock_progress": "ブロックをとりけしています…", "unblock_progress": "ブロックをとりけしています…",

View file

@ -254,6 +254,10 @@
"hint": "Log in om deel te nemen aan de discussie", "hint": "Log in om deel te nemen aan de discussie",
"login": "Inloggen", "login": "Inloggen",
"logout": "Uitloggen", "logout": "Uitloggen",
"logout_confirm": "Weet je zeker dat je wilt uitloggen?",
"logout_confirm_accept_button": "Uitloggen",
"logout_confirm_cancel_button": "Annuleren",
"logout_confirm_title": "Uitloggen",
"password": "Wachtwoord", "password": "Wachtwoord",
"placeholder": "mijngebruikersnaam", "placeholder": "mijngebruikersnaam",
"recovery_code": "Herstelcode", "recovery_code": "Herstelcode",
@ -266,6 +270,30 @@
"next": "Volgende", "next": "Volgende",
"previous": "Vorige" "previous": "Vorige"
}, },
"moderation": {
"moderation": "Moderatie",
"reports": {
"add_note": "Notitie toevoegen",
"close": "Sluiten",
"delete_note": "Verwijderen",
"delete_note_accept": "Ja, verwijderen",
"delete_note_cancel": "Nee, behouden",
"delete_note_confirm": "Weet je zeker dat je deze notitie wilt verwijderen?",
"delete_note_title": "Verwijderen bevestigen",
"no_content": "Geen omschrijving beschikbaar",
"no_reports": "Geen rapporten beschikbaar",
"notes": "{ count } notitie | { count } notities",
"reopen": "Heropenen",
"reports": "Rapporten",
"resolve": "Oplossen",
"show_closed": "Afgesloten tonen",
"statuses": "{ count } bericht| { count } berichten",
"tag_policy_notice": "Activeer de TagPolicy MRF om bericht-beperkingen in te stellen",
"tags": "Bericht-beperkingen instellen"
},
"statuses": "Berichten",
"users": "Gebruikers"
},
"nav": { "nav": {
"about": "Over ons", "about": "Over ons",
"administration": "Beheer", "administration": "Beheer",
@ -282,6 +310,7 @@
"interactions": "Interacties", "interactions": "Interacties",
"lists": "Lijsten", "lists": "Lijsten",
"mentions": "Vermeldingen", "mentions": "Vermeldingen",
"moderation": "Moderatie",
"preferences": "Voorkeuren", "preferences": "Voorkeuren",
"public_timeline_description": "Openbare berichten van deze instantie", "public_timeline_description": "Openbare berichten van deze instantie",
"public_tl": "Openbare tijdlijn", "public_tl": "Openbare tijdlijn",
@ -378,6 +407,8 @@
} }
}, },
"registration": { "registration": {
"awaiting_email_confirmation": "Je account is geregistreerd en een e-mail verzonden naar je e-mailadres ter bevestiging. Controleer je e-mail inbox om de registratie af te ronden.",
"awaiting_email_confirmation_title": "In afwachting van e-mail bevestiging",
"bio": "Bio", "bio": "Bio",
"bio_placeholder": "Bijv.\nHallo! Welkom op mijn bio.\nIk vind anime en games leuk. Hopelijk kunnen we vrienden zijn!", "bio_placeholder": "Bijv.\nHallo! Welkom op mijn bio.\nIk vind anime en games leuk. Hopelijk kunnen we vrienden zijn!",
"captcha": "CAPTCHA", "captcha": "CAPTCHA",
@ -391,6 +422,8 @@
"reason_placeholder": "Deze instantie keurt registraties handmatig goed.\nLaat de beheerder weten waarom je je wilt registreren.", "reason_placeholder": "Deze instantie keurt registraties handmatig goed.\nLaat de beheerder weten waarom je je wilt registreren.",
"register": "Registreren", "register": "Registreren",
"registration": "Registratie", "registration": "Registratie",
"request_sent": "Je registratieverzoek zal worden beoordeeld. Indien je account wordt goed gekeurd, zul je een e-mail ontvangen.",
"request_sent_title": "Registratieverzoek verzonden",
"token": "Uitnodigingstoken", "token": "Uitnodigingstoken",
"username_placeholder": "bijv. akko", "username_placeholder": "bijv. akko",
"validations": { "validations": {
@ -500,6 +533,8 @@
"enable_web_push_notifications": "Web push meldingen inschakelen", "enable_web_push_notifications": "Web push meldingen inschakelen",
"enter_current_password_to_confirm": "Voer je huidige wachtwoord in om je identiteit te bevestigen", "enter_current_password_to_confirm": "Voer je huidige wachtwoord in om je identiteit te bevestigen",
"expert_mode": "Geavanceerde opties tonen", "expert_mode": "Geavanceerde opties tonen",
"expire_posts_enabled": "Berichten ouder dan een ingesteld aantal dagen verwijderen",
"expire_posts_input_placeholder": "Aantal dagen",
"export_theme": "Preset opslaan", "export_theme": "Preset opslaan",
"file_export_import": { "file_export_import": {
"backup_restore": "Instellingen back-up", "backup_restore": "Instellingen back-up",
@ -693,6 +728,18 @@
"setting_changed": "Instelling verschilt van standaard waarde", "setting_changed": "Instelling verschilt van standaard waarde",
"setting_server_side": "Deze instelling is gebonden aan je profiel en beïnvloed alle sessies en clients", "setting_server_side": "Deze instelling is gebonden aan je profiel en beïnvloed alle sessies en clients",
"settings": "Instellingen", "settings": "Instellingen",
"settings_profile": "Instellingsprofielen",
"settings_profile_creation": "Nieuw profiel aanmaken",
"settings_profile_creation_new_name_label": "Naam",
"settings_profile_creation_submit": "Aanmaken",
"settings_profile_delete": "Verwijderen",
"settings_profile_delete_confirm": "Weet je zeker dat je dit profiel wilt verwijderen?",
"settings_profile_force_sync": "Synchroniseren",
"settings_profile_in_use": "In gebruik",
"settings_profile_use": "Gebruiken",
"settings_profiles_refresh": "Instellingsprofielen verversen",
"settings_profiles_show": "Alle instellingsprofielen tonen",
"settings_profiles_unshow": "Alle instellingsprofielen verbergen",
"show_admin_badge": "\"Beheerder\" badge in mijn profiel tonen", "show_admin_badge": "\"Beheerder\" badge in mijn profiel tonen",
"show_moderator_badge": "\"Moderator\" badge in mijn profiel tonen", "show_moderator_badge": "\"Moderator\" badge in mijn profiel tonen",
"show_nav_shortcuts": "Extra navigatie snelkoppelingen tonen in top paneel", "show_nav_shortcuts": "Extra navigatie snelkoppelingen tonen in top paneel",
@ -872,6 +919,7 @@
"useStreamingApi": "Berichten en meldingen in real-time ontvangen", "useStreamingApi": "Berichten en meldingen in real-time ontvangen",
"useStreamingApiWarning": "Iets experimenteels met berichten streamen uwu miss kun je beter uit laten ofzo?", "useStreamingApiWarning": "Iets experimenteels met berichten streamen uwu miss kun je beter uit laten ofzo?",
"use_at_icon": "{'@'} symbool als icoon tonen in plaats van tekst", "use_at_icon": "{'@'} symbool als icoon tonen in plaats van tekst",
"use_blurhash": "Waas tonen over NSFW-miniaturen",
"use_contain_fit": "Bijlage in miniaturen niet bijsnijden", "use_contain_fit": "Bijlage in miniaturen niet bijsnijden",
"use_one_click_nsfw": "Gevoelige bijlagen met slechts één klik openen", "use_one_click_nsfw": "Gevoelige bijlagen met slechts één klik openen",
"user_mutes": "Gebruikers", "user_mutes": "Gebruikers",
@ -892,6 +940,12 @@
"word_filter": "Woord filter", "word_filter": "Woord filter",
"wordfilter": "Woordfilter" "wordfilter": "Woordfilter"
}, },
"settings_profile": {
"creating": "Bezig met nieuw profiel \"{profile}\" aan te maken...",
"synchronization_error": "Instellingen konden niet gesynchroniseerd worden: {err}",
"synchronized": "Instellingen gesynchroniseerd!",
"synchronizing": "Bezig met profiel \"{profile}\" te synchroniseren..."
},
"status": { "status": {
"ancestor_follow": "{numReplies} ander antwoord onder dit bericht tonen | {numReplies} andere antwoorden onder dit bericht tonen", "ancestor_follow": "{numReplies} ander antwoord onder dit bericht tonen | {numReplies} andere antwoorden onder dit bericht tonen",
"ancestor_follow_with_icon": "{icon} {text}", "ancestor_follow_with_icon": "{icon} {text}",
@ -925,6 +979,11 @@
"pin": "Aan profiel vastmaken", "pin": "Aan profiel vastmaken",
"pinned": "Vastgezet", "pinned": "Vastgezet",
"plus_more": "+{number} meer", "plus_more": "+{number} meer",
"redraft": "Verwijderen & opnieuw opstellen",
"redraft_confirm": "Weet je zeker at je dit bericht wilt verwijderen en opnieuw opstellen? Interacties met het originele bericht zullen vervallen.",
"redraft_confirm_accept_button": "Ja, verwijderen en opnieuw opstellen",
"redraft_confirm_cancel_button": "Nee, origineel bericht behouden",
"redraft_confirm_title": "Verwijderen & opnieuw opstellen bevestigen",
"remove_attachment": "Bijlage verwijderen", "remove_attachment": "Bijlage verwijderen",
"repeat_confirm": "Weet je zeker dat je dit bericht wilt herhalen?", "repeat_confirm": "Weet je zeker dat je dit bericht wilt herhalen?",
"repeat_confirm_accept_button": "Ja, herhalen", "repeat_confirm_accept_button": "Ja, herhalen",
@ -985,6 +1044,7 @@
"collapse": "Invouwen", "collapse": "Invouwen",
"conversation": "Gesprek", "conversation": "Gesprek",
"error": "Fout bij het ophalen van tijdlijn: {0}", "error": "Fout bij het ophalen van tijdlijn: {0}",
"follow_tag": "Hashtag volgen",
"load_older": "Oudere berichten laden", "load_older": "Oudere berichten laden",
"no_more_statuses": "Geen verdere berichten", "no_more_statuses": "Geen verdere berichten",
"no_retweet_hint": "Bericht is gemarkeerd als enkel-volgers of privé en kan niet worden herhaald of geciteerd", "no_retweet_hint": "Bericht is gemarkeerd als enkel-volgers of privé en kan niet worden herhaald of geciteerd",
@ -994,6 +1054,7 @@
"show_new": "Nieuwe tonen", "show_new": "Nieuwe tonen",
"socket_broke": "Realtime verbinding verloren: CloseEvent code {0}", "socket_broke": "Realtime verbinding verloren: CloseEvent code {0}",
"socket_reconnected": "Realtime verbinding opgezet", "socket_reconnected": "Realtime verbinding opgezet",
"unfollow_tag": "Hashtag ontvolgen",
"up_to_date": "Up-to-date" "up_to_date": "Up-to-date"
}, },
"toast": { "toast": {
@ -1058,6 +1119,7 @@
"block_confirm_title": "Gebruiker blokkeren", "block_confirm_title": "Gebruiker blokkeren",
"block_progress": "Blokkeren…", "block_progress": "Blokkeren…",
"blocked": "Geblokkeerd!", "blocked": "Geblokkeerd!",
"blocks_you": "Blokkeert jou!",
"bot": "Bot", "bot": "Bot",
"deactivated": "Gedeactiveerd", "deactivated": "Gedeactiveerd",
"deny": "Weigeren", "deny": "Weigeren",
@ -1072,7 +1134,10 @@
"follow_cancel": "Verzoek annuleren", "follow_cancel": "Verzoek annuleren",
"follow_progress": "Aanvragen…", "follow_progress": "Aanvragen…",
"follow_sent": "Verzoek verzonden!", "follow_sent": "Verzoek verzonden!",
"follow_tag": "Hashtag volgen",
"follow_unfollow": "Ontvolgen", "follow_unfollow": "Ontvolgen",
"followed_tags": "Gevolgde hashtags",
"followed_users": "Gevolgde gebruikers",
"followees": "Volgen", "followees": "Volgen",
"followers": "Volgers", "followers": "Volgers",
"following": "Gevolgd!", "following": "Gevolgd!",
@ -1097,11 +1162,14 @@
"mute_domain": "Domein blokkeren", "mute_domain": "Domein blokkeren",
"mute_progress": "Negeren…", "mute_progress": "Negeren…",
"muted": "Genegeerd", "muted": "Genegeerd",
"not_following_any_hashtags": "Je volgt momenteel geen hashtags",
"note": "Privé notitie", "note": "Privé notitie",
"per_day": "per dag", "per_day": "per dag",
"remote_follow": "Van afstand volgen", "remote_follow": "Van afstand volgen",
"remove_follower": "Volger verwijderen",
"replies": "Met Antwoorden", "replies": "Met Antwoorden",
"report": "Rapporteren", "report": "Rapporteren",
"requested_by": "Heeft verzocht je te volgen",
"show_repeats": "Herhalingen tonen", "show_repeats": "Herhalingen tonen",
"statuses": "Berichten", "statuses": "Berichten",
"subscribe": "Abonneren", "subscribe": "Abonneren",
@ -1111,11 +1179,13 @@
"unfollow_confirm_accept_button": "Ja, ontvolgen", "unfollow_confirm_accept_button": "Ja, ontvolgen",
"unfollow_confirm_cancel_button": "Nee, niet ontvolgen", "unfollow_confirm_cancel_button": "Nee, niet ontvolgen",
"unfollow_confirm_title": "Gebruiker ontvolgen", "unfollow_confirm_title": "Gebruiker ontvolgen",
"unfollow_tag": "Hashtag ontvolgen",
"unmute": "Negeren opheffen", "unmute": "Negeren opheffen",
"unmute_progress": "Negeren opheffen…", "unmute_progress": "Negeren opheffen…",
"unsubscribe": "Abonnement opzeggen" "unsubscribe": "Abonnement opzeggen"
}, },
"user_profile": { "user_profile": {
"field_validated": "Link geverifieerd",
"profile_does_not_exist": "Sorry, dit profiel bestaat niet.", "profile_does_not_exist": "Sorry, dit profiel bestaat niet.",
"profile_loading_error": "Sorry, er is een fout opgetreden bij het laden van dit profiel.", "profile_loading_error": "Sorry, er is een fout opgetreden bij het laden van dit profiel.",
"timeline_title": "Gebruikerstijdlijn" "timeline_title": "Gebruikerstijdlijn"

View file

@ -16,12 +16,15 @@
"accept_desc": "Este domínio aceita apenas mensagens dos seguintes domínios:", "accept_desc": "Este domínio aceita apenas mensagens dos seguintes domínios:",
"ftl_removal": "Remoção da cronologia da \"Rede conhecida por todos\"", "ftl_removal": "Remoção da cronologia da \"Rede conhecida por todos\"",
"ftl_removal_desc": "Este domínio remove os seguintes domínios da cronologia \"Rede conhecida por todos\":", "ftl_removal_desc": "Este domínio remove os seguintes domínios da cronologia \"Rede conhecida por todos\":",
"instance": "Domínio",
"media_nsfw": "Forçar definição de multimédia como Sensível", "media_nsfw": "Forçar definição de multimédia como Sensível",
"media_nsfw_desc": "Este domínio força a multimédia a ser marcada como sensível nos seguintes domínios:", "media_nsfw_desc": "Este domínio força a multimédia a ser marcada como sensível nos seguintes domínios:",
"media_removal": "Remoção de multimédia", "media_removal": "Remoção de multimédia",
"media_removal_desc": "Este domínio remove multimédia das publicações dos seguintes domínios:", "media_removal_desc": "Este domínio remove multimédia das publicações dos seguintes domínios:",
"not_applicable": "N/A",
"quarantine": "Quarentena", "quarantine": "Quarentena",
"quarantine_desc": "Este domínio apenas irá publicar nos seguintes domínios:", "quarantine_desc": "Este domínio apenas irá publicar nos seguintes domínios:",
"reason": "Razão",
"reject": "Rejeitar", "reject": "Rejeitar",
"reject_desc": "Este domínio não aceitará mensagens dos seguintes domínios:", "reject_desc": "Este domínio não aceitará mensagens dos seguintes domínios:",
"simple_policies": "Políticas especificas do domínio" "simple_policies": "Políticas especificas do domínio"
@ -29,6 +32,26 @@
}, },
"staff": "Staff" "staff": "Staff"
}, },
"announcements": {
"all_day_prompt": "Este evento dura o dia inteiro",
"cancel_edit_action": "Cancelar",
"close_error": "Fechar",
"delete_action": "Apagar",
"edit_action": "Editar",
"end_time_display": "Termina às {time}",
"inactive_message": "Este anúncio está inativo",
"mark_as_read_action": "Marcar como lido",
"page_header": "Anúncios",
"post_action": "Publicar",
"post_error": "Erro: {error}",
"post_form_header": "Publicar anúncio",
"post_placeholder": "Conteúdo do anúncio",
"published_time_display": "Publicado às {time}",
"start_time_display": "Começa às {time}",
"start_time_prompt": "Hora de início: ",
"submit_edit_action": "Enviar",
"title": "Anúncio"
},
"chats": { "chats": {
"chats": "Chats", "chats": "Chats",
"delete": "Apagar", "delete": "Apagar",
@ -58,6 +81,7 @@
"keep_open": "Manter o seletor aberto", "keep_open": "Manter o seletor aberto",
"load_all": "A carregar todos os {emojiAmount} emojis", "load_all": "A carregar todos os {emojiAmount} emojis",
"load_all_hint": "Carregado o primeiro emoji {saneAmount}, carregar todos os emojis pode causar problemas de desempenho.", "load_all_hint": "Carregado o primeiro emoji {saneAmount}, carregar todos os emojis pode causar problemas de desempenho.",
"recent": "Usado recentemente",
"search_emoji": "Pesquisar por um emoji", "search_emoji": "Pesquisar por um emoji",
"stickers": "Autocolantes", "stickers": "Autocolantes",
"unicode": "Emoji Unicode" "unicode": "Emoji Unicode"

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -19,7 +19,8 @@ const saveImmedeatelyActions = [
'setOption', 'setOption',
'setClientData', 'setClientData',
'setToken', 'setToken',
'clearToken' 'clearToken',
'emojiUsed',
] ]
const defaultStorage = (() => { const defaultStorage = (() => {

View file

@ -0,0 +1,23 @@
const timelineVisibleUnauthenticated = (state, timeline) => (
state.instance.publicTimelineVisibility[timeline] ?? false
);
const currentUser = (state) => state.users.currentUser;
const currentUserOrTimelineVisibleUnauthenticated = (state, timeline) => (
currentUser(state) || timelineVisibleUnauthenticated(state, timeline)
);
const federatedTimelineAvailable = (state) => state.instance.federatedTimelineAvailable;
export const federatedTimelineVisible = (state) => (
federatedTimelineAvailable(state) && currentUserOrTimelineVisibleUnauthenticated(state, 'federated')
);
export const publicTimelineVisible = (state) => (
currentUserOrTimelineVisibleUnauthenticated(state, 'local')
);
export const bubbleTimelineVisible = (state) => (
state.instance.localBubbleInstances.length > 0 && currentUserOrTimelineVisibleUnauthenticated(state, 'bubble')
);

View file

@ -22,6 +22,7 @@ import announcementsModule from './modules/announcements.js'
import editStatusModule from './modules/editStatus.js' import editStatusModule from './modules/editStatus.js'
import statusHistoryModule from './modules/statusHistory.js' import statusHistoryModule from './modules/statusHistory.js'
import tagModule from './modules/tags.js' import tagModule from './modules/tags.js'
import recentEmojisModule from './modules/recentEmojis.js'
import { createI18n } from 'vue-i18n' import { createI18n } from 'vue-i18n'
@ -47,7 +48,8 @@ const persistedStateOptions = {
paths: [ paths: [
'config', 'config',
'users.lastLoginName', 'users.lastLoginName',
'oauth' 'oauth',
'recentEmojis.emojis',
] ]
}; };
@ -98,7 +100,8 @@ const persistedStateOptions = {
announcements: announcementsModule, announcements: announcementsModule,
editStatus: editStatusModule, editStatus: editStatusModule,
statusHistory: statusHistoryModule, statusHistory: statusHistoryModule,
tags: tagModule tags: tagModule,
recentEmojis: recentEmojisModule,
}, },
plugins, plugins,
strict: false // Socket modifies itself, let's ignore this for now. strict: false // Socket modifies itself, let's ignore this for now.

View file

@ -5,15 +5,25 @@ import { map } from 'lodash'
const retryTimeout = (multiplier) => 1000 * multiplier const retryTimeout = (multiplier) => 1000 * multiplier
const isVisible = (store, message, visibility) => { const isVisible = (store, message, visibility) => {
if (visibility === 'all') { if (visibility == 'all') {
return true return true
} else if (visibility === 'following') { }
return store.getters.relationship(message.in_reply_to_user_id).following
} else if (visibility === 'self') { if (visibility == 'following') {
if (message.in_reply_to_user_id === null) {
return true
} else {
return store.getters.relationship(message.in_reply_to_user_id).following
}
}
if (visibility == 'self') {
return message.in_reply_to_user_id === store.rootState.users.currentUser.id return message.in_reply_to_user_id === store.rootState.users.currentUser.id
} }
return false return false
} }
const api = { const api = {
state: { state: {
retryMultiplier: 1, retryMultiplier: 1,

View file

@ -0,0 +1,50 @@
// each row is 7 emojis, 6 rows chosen arbitrarily. i don't think more than
// that are going to be useful.
const RECENT_MAX = 7 * 6
const defaultState = {
emojis: [],
}
const recentEmojis = {
state: defaultState,
mutations: {
emojiUsed ({ emojis }, emoji) {
if (emoji.displayText === undefined || emoji.displayText === null) {
console.error('emojiUsed was called with a bad emoji object: ', emoji)
return
} else if (emoji.displayText.includes('@')) {
console.error('emojiUsed was called with a remote emoji: ', emoji)
return
}
const i = emojis.indexOf(emoji.displayText)
if (i === -1) {
// not in `emojis` yet, insert and truncate if necessary
const newLength = emojis.unshift(emoji.displayText)
if (newLength > RECENT_MAX) {
emojis.pop()
}
} else if (i !== 0) {
// emoji is already in `emojis` but needs to be bumped to the top
emojis.splice(i, 1)
emojis.unshift(emoji.displayText)
}
},
},
getters: {
recentEmojis: (state, getters, rootState) => state.emojis.reduce((objects, displayText) => {
const allEmojis = rootState.instance.emoji.concat(rootState.instance.customEmoji)
let emojiObject = allEmojis.find(emoji => emoji.displayText === displayText)
if (emojiObject !== undefined) {
objects.push(emojiObject)
}
return objects
}, []),
},
}
export default recentEmojis

View file

@ -637,13 +637,16 @@ const users = {
// Get user mutes // Get user mutes
store.dispatch('fetchMutes') store.dispatch('fetchMutes')
store.dispatch('setLayoutWidth', windowWidth()) store.dispatch('setLayoutWidth', windowWidth())
store.dispatch('setLayoutHeight', windowHeight()) store.dispatch('setLayoutHeight', windowHeight())
store.dispatch('getSupportedTranslationlanguages') store.dispatch('getSupportedTranslationlanguages')
store.dispatch('getSettingsProfile') store.dispatch('getSettingsProfile')
store.dispatch('listSettingsProfiles') store.dispatch('listSettingsProfiles')
store.dispatch('startFetchingConfig') store.dispatch('startFetchingConfig')
store.dispatch('startFetchingAnnouncements')
if (user.role === 'admin' || user.role === 'moderator') {
store.dispatch('startFetchingReports')
}
// Fetch our friends // Fetch our friends
store.rootState.api.backendInteractor.fetchFriends({ id: user.id }) store.rootState.api.backendInteractor.fetchFriends({ id: user.id })