Compare commits

..

33 commits

Author SHA1 Message Date
30e91de97f Merge branch 'develop' into fedi-absturztau-be 2023-04-22 07:55:09 +02:00
Weblate
1f943ce8a5 Merge branch 'origin/develop' into Weblate. 2023-04-14 16:43:42 +00:00
c540764408 ensure we only fetch reports when we're an admin
Ref #288
2023-04-14 17:43:05 +01:00
Weblate
a4dfdc0853 Merge branch 'origin/develop' into Weblate. 2023-04-14 16:30:56 +00:00
ddea499a36 Merge pull request 'Fix edits and redrafts being erased by drafts' (#297) from solidsanek/pleroma-fe:drafts-edit-redraft-fix into develop
Reviewed-on: AkkomaGang/akkoma-fe#297
2023-04-14 16:30:55 +00:00
solidsanek
db33fe8ee2 Drafts: Fix drafts erasing edits and redrafts 2023-04-09 11:02:13 +02:00
Weblate
f1bf22436d Translated using Weblate (Portuguese)
Currently translated at 62.8% (655 of 1042 strings)

Co-authored-by: cel <8cbv6di5@duck.com>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/pt/
Translation: Pleroma fe/pleroma-fe
2023-04-05 18:57:45 +00:00
Weblate
459c73ec02 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (1041 of 1041 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.9% (1040 of 1041 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.9% (1040 of 1041 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.9% (1039 of 1040 strings)

Co-authored-by: Poesty Li <poesty7450@gmail.com>
Co-authored-by: SevicheCC <sevicheee@outlook.com>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/zh_Hans/
Translation: Pleroma fe/pleroma-fe
2023-04-05 18:57:45 +00:00
Weblate
2acf1e5c59 Translated using Weblate (Ukrainian)
Currently translated at 87.2% (908 of 1041 strings)

Co-authored-by: Denys Nykula <vegan@libre.net.ua>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/uk/
Translation: Pleroma fe/pleroma-fe
2023-04-05 18:57:45 +00:00
Weblate
33c4459744 Translated using Weblate (French)
Currently translated at 98.5% (1027 of 1042 strings)

Translated using Weblate (French)

Currently translated at 98.3% (1024 of 1041 strings)

Translated using Weblate (French)

Currently translated at 96.9% (1002 of 1033 strings)

Co-authored-by: Thomate <thomas@burdick.fr>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/fr/
Translation: Pleroma fe/pleroma-fe
2023-04-05 18:57:45 +00:00
Weblate
b00487e51f Translated using Weblate (Japanese (ja_EASY))
Currently translated at 71.6% (747 of 1042 strings)

Translated using Weblate (Japanese (ja_EASY))

Currently translated at 71.6% (747 of 1042 strings)

Translated using Weblate (Japanese (ja_EASY))

Currently translated at 54.1% (564 of 1042 strings)

Co-authored-by: Hikaru Shinagawa <hikali.47041@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: kazari <6c577a54-aac9-482a-955e-745c858445e3@simplelogin.com>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/ja_EASY/
Translation: Pleroma fe/pleroma-fe
2023-04-05 18:57:45 +00:00
Weblate
1e1cab643c Translated using Weblate (Dutch)
Currently translated at 99.7% (1038 of 1041 strings)

Co-authored-by: Fristi <fristi@subcon.town>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/nl/
Translation: Pleroma fe/pleroma-fe
2023-04-05 18:57:45 +00:00
Weblate
8d3219a6d2 Translated using Weblate (Indonesian)
Currently translated at 65.4% (676 of 1033 strings)

Translated using Weblate (Indonesian)

Currently translated at 65.4% (676 of 1033 strings)

Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: t1 <taaa@fedora.email>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/id/
Translation: Pleroma fe/pleroma-fe
2023-04-05 18:57:45 +00:00
Weblate
ec9753758f Translated using Weblate (Spanish)
Currently translated at 90.8% (938 of 1033 strings)

Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: taretka <info@tarteka.net>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/es/
Translation: Pleroma fe/pleroma-fe
2023-04-05 18:57:45 +00:00
Weblate
97ff4a7241 Translated using Weblate (German)
Currently translated at 99.5% (1036 of 1041 strings)

Co-authored-by: Johann <johann@qwertqwefsday.eu>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: http://translate.akkoma.dev/projects/akkoma/pleroma-fe/de/
Translation: Pleroma fe/pleroma-fe
2023-04-05 18:57:45 +00:00
14cedc5ed1 don't crash if class isn't a list 2023-04-01 07:55:47 +01:00
5911777aa2 Merge pull request 'Fix floating point error for poll expiry' (#294) from xarvos/pleroma-fe:fix-poll-expire into develop
Reviewed-on: AkkomaGang/akkoma-fe#294
2023-03-30 09:49:38 +00:00
47fc082fb9
Fix floating point error for poll expiry
Previous code multiply with 0.001 before multiplication which leads to a
floating point error.  By changing it to division by 1000 after
multiplication this is avoided.
2023-03-24 20:48:02 +07:00
7e1b1e79f4 simplify timeline vibility checks 2023-03-18 20:22:47 +00:00
b92b2f74a4 add timeline visibility setting parsing 2023-03-18 20:01:05 +00:00
7361f4e77e Add checks for currentUser on sidebar 2023-03-16 16:41:37 +00:00
9f7f9e2798 Remove unused bits and bobs 2023-03-15 23:00:31 +00:00
42ab3eada4 Remove links from navs if we can't see the timeline 2023-03-15 22:20:54 +00:00
6fdef479d0 add recently used emojis panel to emoji picker (#283)
~~(not intended for merging yet, just submitting this for preliminary review and discussion)~~

this patch adds a tab with recently used emojis to the emoji picker: https://akko.lain.gay/notice/ASoGCtyoiXbYPJjqpk

there's a couple of things i'm ~~still trying to work out~~ not totally happy with and i'd appreciate any feedback on them:

* the recentEmojis getter is called very frequently and has to do a possibly somewhat expensive lookup of emoji objects by their `displayName` each time, which i'm not sure is ideal
* ~~emoji reactions on posts added through the picker are picked up by the recentEmojis module, but clicks on existing emoji reactions are not, because `addReaction` in `react_button.js` only currently receives the replacement and not the full emoji object (if there even is one wherever that method is called from)~~ this works now and does the same stupid full search of all emojis by their name which i guess is less bad because this only happens when you hit a reaction emoji button that already existed

Reviewed-on: AkkomaGang/akkoma-fe#283
Co-authored-by: flisk <akkomadev.mvch71fq@flisk.xyz>
Co-committed-by: flisk <akkomadev.mvch71fq@flisk.xyz>
2023-03-10 19:10:42 +00:00
fe08691f05 Merge pull request 'support Misskey's oblong reactions' (#284) from yheuhtozr/pleroma-fe:oblong-reactions into develop
Reviewed-on: AkkomaGang/akkoma-fe#284
2023-03-10 18:57:38 +00:00
6a9764951f Merge pull request 'fix realtime updates in 'following' replies filter' (#285) from flisk/akkoma-fe:fix-realtime-reply-filter into develop
Reviewed-on: AkkomaGang/akkoma-fe#285
2023-03-10 18:56:31 +00:00
0f33b1cd79 Merge pull request 'Post drafting' (#282) from solidsanek/pleroma-fe:drafts into develop
Reviewed-on: AkkomaGang/akkoma-fe#282
2023-03-10 18:55:03 +00:00
999c38594e fix realtime updates in 'following' replies filter
i'm not sure how this code was supposed to work, but the way it was
written would only add statuses to the timeline if they were in reply to
someone the user is following and erroneously filter out posts that
aren't replies.
2023-02-24 00:23:53 +01:00
626c880038 oblong emoji in status 2023-02-22 10:20:25 +09:00
6d7761c7e5 perhaps more graceful cqw 2023-02-20 23:27:41 +09:00
996ce3dde3 support oblong reactions 2023-02-20 23:18:04 +09:00
solidsanek
2c007f06e3 Post: remove debug logs 2023-02-19 18:58:53 +01:00
solidsanek
00704bd88c Post: Add drafting feature 2023-02-17 13:56:01 +01:00
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": "ブロックをとりけしています…",
@ -643,4 +918,4 @@
"more": "くわしく", "more": "くわしく",
"who_to_follow": "おすすめユーザー" "who_to_follow": "おすすめユーザー"
} }
} }

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"
@ -801,4 +825,4 @@
"more": "Mais", "more": "Mais",
"who_to_follow": "Quem seguir" "who_to_follow": "Quem seguir"
} }
} }

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 })