kopia lustrzana https://github.com/pixelfed/pixelfed
Merge pull request #5855 from eufelipemateus/translate-notifications
[Translation] transalte notificationspull/5914/head
commit
7c51c57a73
|
|
@ -9,7 +9,7 @@
|
|||
<div class="col-md-9 col-lg-9 col-xl-5 offset-xl-1">
|
||||
<template v-if="tabIndex === 0">
|
||||
<h1 class="font-weight-bold">
|
||||
Notifications
|
||||
{{ $t("notifications.title")}}
|
||||
</h1>
|
||||
<p class="small mt-n2"> </p>
|
||||
</template>
|
||||
|
|
@ -19,7 +19,7 @@
|
|||
<i class="far fa-chevron-circle-left fa-2x mr-3" title="Go back to notifications"></i>
|
||||
</a>
|
||||
<h1 class="font-weight-bold">
|
||||
Follow Requests
|
||||
{{ $t("notifications.followRequest") }}
|
||||
</h1>
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -141,13 +141,13 @@
|
|||
class="btn btn-outline-success py-1 btn-sm font-weight-bold rounded-pill mr-2 mb-1"
|
||||
@click.prevent="handleFollowRequest('accept', index)"
|
||||
>
|
||||
Accept
|
||||
{{ $t('notifications.accept') }}
|
||||
</button>
|
||||
|
||||
<button class="btn btn-outline-lighter py-1 btn-sm font-weight-bold rounded-pill mb-1"
|
||||
@click.prevent="handleFollowRequest('reject', index)"
|
||||
>
|
||||
Reject
|
||||
{{ $t("notifications.reject") }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -161,7 +161,7 @@
|
|||
<div class="media align-items-center small">
|
||||
<i class="far fa-exclamation-triangle mx-2"></i>
|
||||
<div class="media-body">
|
||||
<p class="mb-0 font-weight-bold">Filtering results may not include older notifications</p>
|
||||
<p class="mb-0 font-weight-bold">{{ $t("notifications.filteringResults") }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -244,40 +244,40 @@
|
|||
|
||||
{
|
||||
id: 'mentions',
|
||||
name: 'Mentions',
|
||||
description: 'Replies to your posts and posts you were mentioned in',
|
||||
name: this.$t("notifications.mentions"),
|
||||
description: this.$t("notifications.mentionsDescription"),
|
||||
icon: 'far fa-at',
|
||||
types: ['comment', 'mention']
|
||||
},
|
||||
|
||||
{
|
||||
id: 'likes',
|
||||
name: 'Likes',
|
||||
description: 'Accounts that liked your posts',
|
||||
name: this.$t("notifications.likes"),
|
||||
description: this.$t("notifications.likesDescription"),
|
||||
icon: 'far fa-heart',
|
||||
types: ['favourite']
|
||||
},
|
||||
|
||||
{
|
||||
id: 'followers',
|
||||
name: 'Followers',
|
||||
description: 'Accounts that followed you',
|
||||
name: this.$t("notifications.followers"),
|
||||
description: this.$t("notifications.followersDescription"),
|
||||
icon: 'far fa-user-plus',
|
||||
types: ['follow']
|
||||
},
|
||||
|
||||
{
|
||||
id: 'reblogs',
|
||||
name: 'Reblogs',
|
||||
description: 'Accounts that shared or reblogged your posts',
|
||||
name: this.$t("notifications.reblogs"),
|
||||
description:this.$t("notifications.reblogsDescription"),
|
||||
icon: 'far fa-retweet',
|
||||
types: ['share']
|
||||
},
|
||||
|
||||
{
|
||||
id: 'direct',
|
||||
name: 'DMs',
|
||||
description: 'Direct messages you have with other accounts',
|
||||
name: this.$t("notifications.dms"),
|
||||
description: this.$t("notifications.dmsDescription"),
|
||||
icon: 'far fa-envelope',
|
||||
types: ['direct']
|
||||
},
|
||||
|
|
|
|||
|
|
@ -7,13 +7,13 @@
|
|||
<div class="media-body font-weight-light">
|
||||
<div v-if="n.type == 'favourite'">
|
||||
<p class="my-0">
|
||||
<a :href="displayProfileUrl(n.account)" @click.prevent="getProfileUrl(n.account)" class="font-weight-bold text-dark text-break" :title="n.account.acct">@{{n.account.acct}}</a> {{ $t('notifications.liked') }} <a class="font-weight-bold" :href="displayPostUrl(n.status)" @click.prevent="getPostUrl(n.status)">post</a>.
|
||||
<a :href="displayProfileUrl(n.account)" @click.prevent="getProfileUrl(n.account)" class="font-weight-bold text-dark text-break" :title="n.account.acct">@{{n.account.acct}}</a> {{ $t('notifications.liked') }} <a class="font-weight-bold" :href="displayPostUrl(n.status)" @click.prevent="getPostUrl(n.status)">{{ $t("notifications.post")}}</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div v-else-if="n.type == 'comment'">
|
||||
<p class="my-0">
|
||||
<a :href="displayProfileUrl(n.account)" @click.prevent="getProfileUrl(n.account)" class="font-weight-bold text-dark text-break" :title="n.account.acct">@{{n.account.acct}}</a> {{ $t('notifications.commented') }} <a class="font-weight-bold" :href="displayPostUrl(n.status)" @click.prevent="getPostUrl(n.status)">post</a>.
|
||||
<a :href="displayProfileUrl(n.account)" @click.prevent="getProfileUrl(n.account)" class="font-weight-bold text-dark text-break" :title="n.account.acct">@{{n.account.acct}}</a> {{ $t('notifications.commented') }} <a class="font-weight-bold" :href="displayPostUrl(n.status)" @click.prevent="getPostUrl(n.status)">{{ $t("notifications.post")}}</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
|
||||
<div v-else-if="n.type == 'story:react'">
|
||||
<p class="my-0">
|
||||
<a :href="displayProfileUrl(n.account)" @click.prevent="getProfileUrl(n.account)" class="font-weight-bold text-dark text-break" :title="n.account.acct">@{{n.account.acct}}</a> {{ $t('notifications.reacted') }} <a class="font-weight-bold" v-bind:href="'/account/direct/t/'+n.account.id">story</a>.
|
||||
<a :href="displayProfileUrl(n.account)" @click.prevent="getProfileUrl(n.account)" class="font-weight-bold text-dark text-break" :title="n.account.acct">@{{n.account.acct}}</a> {{ $t('notifications.reacted') }} <a class="font-weight-bold" v-bind:href="'/account/direct/t/'+n.account.id">{{ $t('notifications.story') }}</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
|
@ -141,30 +141,36 @@
|
|||
return text.slice(0, limit) + '...'
|
||||
},
|
||||
|
||||
timeAgo(ts) {
|
||||
let date = Date.parse(ts);
|
||||
let seconds = Math.floor((new Date() - date) / 1000);
|
||||
let interval = Math.floor(seconds / 31536000);
|
||||
if (interval >= 1) {
|
||||
return interval + "y";
|
||||
}
|
||||
interval = Math.floor(seconds / 604800);
|
||||
if (interval >= 1) {
|
||||
return interval + "w";
|
||||
}
|
||||
interval = Math.floor(seconds / 86400);
|
||||
if (interval >= 1) {
|
||||
return interval + "d";
|
||||
}
|
||||
interval = Math.floor(seconds / 3600);
|
||||
if (interval >= 1) {
|
||||
return interval + "h";
|
||||
}
|
||||
interval = Math.floor(seconds / 60);
|
||||
if (interval >= 1) {
|
||||
return interval + "m";
|
||||
}
|
||||
return Math.floor(seconds) + "s";
|
||||
timeAgo(ts) {
|
||||
let date = new Date(ts);
|
||||
let now = new Date();
|
||||
let seconds = Math.floor((now - date) / 1000);
|
||||
let interval = Math.floor(seconds / 31536000);
|
||||
if (interval >= 1) {
|
||||
return new Intl.RelativeTimeFormat(this.$i18n.locale, { numeric: 'auto' }).format(-interval, 'year');
|
||||
}
|
||||
interval = Math.floor(seconds / 2592000);
|
||||
if (interval >= 1) {
|
||||
return new Intl.RelativeTimeFormat(this.$i18n.locale, { numeric: 'auto' }).format(-interval, 'month');
|
||||
}
|
||||
interval = Math.floor(seconds / 604800);
|
||||
if (interval >= 1) {
|
||||
return new Intl.RelativeTimeFormat(this.$i18n.locale, { numeric: 'auto' }).format(-interval, 'week');
|
||||
}
|
||||
interval = Math.floor(seconds / 86400);
|
||||
if (interval >= 1) {
|
||||
return new Intl.RelativeTimeFormat(this.$i18n.locale, { numeric: 'auto' }).format(-interval, 'day');
|
||||
}
|
||||
interval = Math.floor(seconds / 3600);
|
||||
if (interval >= 1) {
|
||||
return new Intl.RelativeTimeFormat(this.$i18n.locale, { numeric: 'auto' }).format(-interval, 'hour');
|
||||
}
|
||||
interval = Math.floor(seconds / 60);
|
||||
if (interval >= 1) {
|
||||
return new Intl.RelativeTimeFormat(this.$i18n.locale, { numeric: 'auto' }).format(-interval, 'minute');
|
||||
}
|
||||
return new Intl.RelativeTimeFormat(this.$i18n.locale, { numeric: 'auto' }).format(-seconds, 'second');
|
||||
|
||||
},
|
||||
|
||||
mentionUrl(status) {
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<div class="card shadow-sm mb-3" style="overflow: hidden;border-radius: 15px !important;">
|
||||
<div class="card-body pb-0">
|
||||
<div class="d-flex justify-content-between align-items-center mb-3">
|
||||
<span class="text-muted font-weight-bold">Notifications</span>
|
||||
<span class="text-muted font-weight-bold">{{ $t("notifications.title")}}</span>
|
||||
<div v-if="feed && feed.length">
|
||||
<router-link to="/i/web/notifications" class="btn btn-outline-light btn-sm mr-2" style="color: #B8C2CC !important">
|
||||
<i class="far fa-filter"></i>
|
||||
|
|
@ -49,27 +49,28 @@
|
|||
class="mr-2 rounded-circle shadow-sm"
|
||||
:src="n.account.avatar"
|
||||
width="32"
|
||||
|
||||
height="32"
|
||||
onerror="this.onerror=null;this.src='/storage/avatars/default.png';">
|
||||
|
||||
<div class="media-body font-weight-light small">
|
||||
<div v-if="n.type == 'favourite'">
|
||||
<p class="my-0">
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> liked your
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> {{ $t("notifications.liked")}}
|
||||
<span v-if="n.status && n.status.hasOwnProperty('media_attachments')">
|
||||
<a class="font-weight-bold" v-bind:href="getPostUrl(n.status)" :id="'fvn-' + n.id" @click.prevent="goToPost(n.status)">post</a>.
|
||||
<a class="font-weight-bold" v-bind:href="getPostUrl(n.status)" :id="'fvn-' + n.id" @click.prevent="goToPost(n.status)">{{ $t("notifications.post")}}</a>.
|
||||
<b-popover :target="'fvn-' + n.id" title="" triggers="hover" placement="top" boundary="window">
|
||||
<img :src="notificationPreview(n)" width="100px" height="100px" style="object-fit: cover;">
|
||||
</b-popover>
|
||||
</span>
|
||||
<span v-else>
|
||||
<a class="font-weight-bold" :href="getPostUrl(n.status)" @click.prevent="goToPost(n.status)">post</a>.
|
||||
<a class="font-weight-bold" :href="getPostUrl(n.status)" @click.prevent="goToPost(n.status)">{{ $t("notifications.post")}}</a>.
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div v-else-if="n.type == 'autospam.warning'">
|
||||
<p class="my-0">
|
||||
Your recent <a :href="getPostUrl(n.status)" @click.prevent="goToPost(n.status)" class="font-weight-bold">post</a> has been unlisted.
|
||||
{{ $t("notifications.youRecent")}} <a :href="getPostUrl(n.status)" @click.prevent="goToPost(n.status)" class="font-weight-bold">{{ $t("notifications.post")}}</a> {{ $t("notifications.hasUnlisted")}}.
|
||||
</p>
|
||||
<p class="mt-n1 mb-0">
|
||||
<span class="small text-muted"><a href="#" class="font-weight-bold" @click.prevent="showAutospamInfo(n.status)">Click here</a> for more info.</span>
|
||||
|
|
@ -77,64 +78,64 @@
|
|||
</div>
|
||||
<div v-else-if="n.type == 'comment'">
|
||||
<p class="my-0">
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> commented on your <a class="font-weight-bold" :href="getPostUrl(n.status)" @click.prevent="goToPost(n.status)">post</a>.
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> {{ $t("notifications.commented")}} <a class="font-weight-bold" :href="getPostUrl(n.status)" @click.prevent="goToPost(n.status)">{{ $t("notifications.post")}}</a>.
|
||||
</p>
|
||||
</div>
|
||||
<div v-else-if="n.type == 'group:comment'">
|
||||
<p class="my-0">
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> commented on your <a class="font-weight-bold" :href="n.group_post_url">group post</a>.
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> {{ $t("notifications.commented")}} <a class="font-weight-bold" :href="n.group_post_url">{{ $t("notifications.groupPost") }}</a>.
|
||||
</p>
|
||||
</div>
|
||||
<div v-else-if="n.type == 'story:react'">
|
||||
<p class="my-0">
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> reacted to your <a class="font-weight-bold" v-bind:href="'/i/web/direct/thread/'+n.account.id">story</a>.
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> {{ $t("notifications.reacted")}} <a class="font-weight-bold" v-bind:href="'/i/web/direct/thread/'+n.account.id">{{ $t("notifications.story")}}</a>.
|
||||
</p>
|
||||
</div>
|
||||
<div v-else-if="n.type == 'story:comment'">
|
||||
<p class="my-0">
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> commented on your <a class="font-weight-bold" v-bind:href="'/i/web/direct/thread/'+n.account.id">story</a>.
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> {{ $t("notifications.commented")}} <a class="font-weight-bold" v-bind:href="'/i/web/direct/thread/'+n.account.id">{{ $t("notifications.story")}}</a>.
|
||||
</p>
|
||||
</div>
|
||||
<div v-else-if="n.type == 'mention'">
|
||||
<p class="my-0">
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> <a class="font-weight-bold" v-bind:href="mentionUrl(n.status)" @click.prevent="goToPost(n.status)">mentioned</a> you.
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> <a class="font-weight-bold" v-bind:href="mentionUrl(n.status)" @click.prevent="goToPost(n.status)">{{ $t("notifications.mentioned")}}</a> {{ $t("notifications.you")}}.
|
||||
</p>
|
||||
</div>
|
||||
<div v-else-if="n.type == 'follow'">
|
||||
<p class="my-0">
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> followed you.
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> {{ $t("notifications.followed")}} {{ $t("notifications.you")}}.
|
||||
</p>
|
||||
</div>
|
||||
<div v-else-if="n.type == 'share'">
|
||||
<p class="my-0">
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> shared your <a class="font-weight-bold" :href="getPostUrl(n.status)" @click.prevent="goToPost(n.status)">post</a>.
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> {{ $t("notifications.shared")}} <a class="font-weight-bold" :href="getPostUrl(n.status)" @click.prevent="goToPost(n.status)">{{ $t("notifications.post")}}</a>.
|
||||
</p>
|
||||
</div>
|
||||
<div v-else-if="n.type == 'modlog'">
|
||||
<p class="my-0">
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{truncate(n.account.username)}}</a> updated a <a class="font-weight-bold" v-bind:href="n.modlog.url">modlog</a>.
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{truncate(n.account.username)}}</a> {{ $t("notifications.updatedA")}} <a class="font-weight-bold" v-bind:href="n.modlog.url">modlog</a>.
|
||||
</p>
|
||||
</div>
|
||||
<div v-else-if="n.type == 'tagged'">
|
||||
<p class="my-0">
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> tagged you in a <a class="font-weight-bold" v-bind:href="n.tagged.post_url">post</a>.
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> {{ $t("notifications.tagged")}} <a class="font-weight-bold" v-bind:href="n.tagged.post_url">{{ $t("notifications.post")}}</a>.
|
||||
</p>
|
||||
</div>
|
||||
<div v-else-if="n.type == 'direct'">
|
||||
<p class="my-0">
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> sent a <router-link class="font-weight-bold" :to="'/i/web/direct/thread/'+n.account.id">dm</router-link>.
|
||||
<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.acct">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> {{ $t("notifications.sentA")}} <router-link class="font-weight-bold" :to="'/i/web/direct/thread/'+n.account.id">dm</router-link>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div v-else-if="n.type == 'group.join.approved'">
|
||||
<p class="my-0">
|
||||
Your application to join the <a :href="n.group.url" class="font-weight-bold text-dark word-break" :title="n.group.name">{{truncate(n.group.name)}}</a> group was approved!
|
||||
{{ $t("notifications.yourApplication")}} <a :href="n.group.url" class="font-weight-bold text-dark word-break" :title="n.group.name">{{truncate(n.group.name)}}</a> {{ $t("notifications.wasApproved")}}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div v-else-if="n.type == 'group.join.rejected'">
|
||||
<p class="my-0">
|
||||
Your application to join <a :href="n.group.url" class="font-weight-bold text-dark word-break" :title="n.group.name">{{truncate(n.group.name)}}</a> was rejected.
|
||||
{{ $t("notifications.yourApplication")}} <a :href="n.group.url" class="font-weight-bold text-dark word-break" :title="n.group.name">{{truncate(n.group.name)}}</a> {{ $t("notifications.wasRejected")}}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
|
@ -146,11 +147,11 @@
|
|||
|
||||
<div v-else>
|
||||
<p class="my-0">
|
||||
We cannot display this notification at this time.
|
||||
{{ $t("notifications.cannotDisplay")}}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="small text-muted font-weight-bold" :title="n.created_at">{{timeAgo(n.created_at)}}</div>
|
||||
<div class="small text-muted font-weight-bold" style="font-size: 0.575em;" st :title="n.created_at">{{timeAgo(n.created_at)}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -697,40 +697,36 @@ window.App.util = {
|
|||
}
|
||||
return new Intl.NumberFormat(locale, { notation: notation , compactDisplay: "short" }).format(count);
|
||||
}),
|
||||
timeAgo: function(ts) {
|
||||
const date = new Date(ts);
|
||||
const now = new Date();
|
||||
|
||||
const seconds = Math.floor((now - date) / 1000);
|
||||
|
||||
const secondsInYear = 60 * 60 * 24 * 365.25;
|
||||
let interval = Math.floor(seconds / secondsInYear);
|
||||
if (interval >= 1) {
|
||||
return interval + "y";
|
||||
}
|
||||
|
||||
interval = Math.floor(seconds / (60 * 60 * 24 * 7));
|
||||
if (interval >= 1) {
|
||||
return interval + "w";
|
||||
}
|
||||
|
||||
interval = Math.floor(seconds / (60 * 60 * 24));
|
||||
if (interval >= 1) {
|
||||
return interval + "d";
|
||||
}
|
||||
|
||||
interval = Math.floor(seconds / (60 * 60));
|
||||
if (interval >= 1) {
|
||||
return interval + "h";
|
||||
}
|
||||
|
||||
interval = Math.floor(seconds / 60);
|
||||
if (interval >= 1) {
|
||||
return interval + "m";
|
||||
}
|
||||
|
||||
return Math.floor(seconds) + "s";
|
||||
},
|
||||
timeAgo: (function(ts) {
|
||||
let date = new Date(ts);
|
||||
let now = new Date();
|
||||
let seconds = Math.floor((now - date) / 1000);
|
||||
let interval = Math.floor(seconds / 31536000);
|
||||
if (interval >= 1) {
|
||||
return new Intl.RelativeTimeFormat(i18n.locale, { numeric: 'auto', style: 'short' }).format(-interval, 'year');
|
||||
}
|
||||
interval = Math.floor(seconds / 2592000);
|
||||
if (interval >= 1) {
|
||||
return new Intl.RelativeTimeFormat(i18n.locale, { numeric: 'auto', style: 'short' }).format(-interval, 'month');
|
||||
}
|
||||
interval = Math.floor(seconds / 604800);
|
||||
if (interval >= 1) {
|
||||
return new Intl.RelativeTimeFormat(i18n.locale, { numeric: 'auto', style: 'short' }).format(-interval, 'week');
|
||||
}
|
||||
interval = Math.floor(seconds / 86400);
|
||||
if (interval >= 1) {
|
||||
return new Intl.RelativeTimeFormat(i18n.locale, { numeric: 'auto', style: 'short' }).format(-interval, 'day');
|
||||
}
|
||||
interval = Math.floor(seconds / 3600);
|
||||
if (interval >= 1) {
|
||||
return new Intl.RelativeTimeFormat(i18n.locale, { numeric: 'auto', style: 'short' }).format(-interval, 'hour');
|
||||
}
|
||||
interval = Math.floor(seconds / 60);
|
||||
if (interval >= 1) {
|
||||
return new Intl.RelativeTimeFormat(i18n.locale, { numeric: 'auto', style: 'short' }).format(-interval, 'minute');
|
||||
}
|
||||
return new Intl.RelativeTimeFormat(i18n.locale, { numeric: 'auto', style: 'short' }).format(-seconds, 'second');
|
||||
}),
|
||||
timeAhead: (function(ts, short = true) {
|
||||
let date = Date.parse(ts);
|
||||
let diff = date - Date.parse(new Date());
|
||||
|
|
|
|||
|
|
@ -81,6 +81,7 @@ return [
|
|||
],
|
||||
|
||||
'notifications' => [
|
||||
'title' => 'Notifications',
|
||||
'liked' => 'liked your',
|
||||
'commented' => 'commented on your',
|
||||
'reacted' => 'reacted to your',
|
||||
|
|
@ -104,6 +105,23 @@ return [
|
|||
'post' => 'post',
|
||||
'story' => 'story',
|
||||
'noneFound' => 'No notifications found',
|
||||
'youRecent' => 'You recent',
|
||||
'hasUnlisted' => 'has been unlisted',
|
||||
'cannotDisplay' => 'We cannot display this notification at this time.',
|
||||
'followRequest' => 'Follow Requests',
|
||||
'filteringResults' => 'Filtering results may not include older notifications',
|
||||
'mentions' => 'Mentions',
|
||||
'mentionsDescription' => 'Replies to your posts and posts you were mentioned in',
|
||||
'likes' => 'Likes',
|
||||
'likesDescription' => 'Accounts that liked your posts',
|
||||
'followers' => 'Followers',
|
||||
'followersDescription' => 'Accounts that followed you',
|
||||
'reblogs' => 'Reblogs',
|
||||
'reblogsDescription' => 'Accounts that shared or reblogged your posts',
|
||||
'dms' => 'DMs',
|
||||
'dmsDescription' => 'Direct messages you have with other accounts',
|
||||
'accept' => 'Accept',
|
||||
'reject' => 'Reject'
|
||||
],
|
||||
|
||||
'post' => [
|
||||
|
|
|
|||
|
|
@ -80,30 +80,44 @@ return [
|
|||
'requests' => 'Pedidos'
|
||||
],
|
||||
|
||||
'notifications' => [
|
||||
'liked' => 'curtiu seu',
|
||||
'commented' => 'comentou em seu',
|
||||
'reacted' => 'reagiu ao seu',
|
||||
'shared' => 'compartilhou seu',
|
||||
'tagged' => 'marcou você em um',
|
||||
|
||||
'updatedA' => 'atualizou um(a)',
|
||||
'sentA' => 'enviou um',
|
||||
|
||||
'followed' => 'seguiu',
|
||||
'mentioned' => 'mencionou',
|
||||
'you' => 'você',
|
||||
|
||||
'yourApplication' => 'A sua candidatura para se juntar',
|
||||
'applicationApproved' => 'foi aprovado!',
|
||||
'applicationRejected' => 'foi rejeitado. Você pode se inscrever novamente para participar em 6 meses.',
|
||||
|
||||
'dm' => 'mensagem direta',
|
||||
'groupPost' => 'postagem do grupo',
|
||||
'modlog' => 'histórico de moderação',
|
||||
'post' => 'publicação',
|
||||
'story' => 'história',
|
||||
'noneFound' => 'Nenhuma notificação encontrada',
|
||||
'notifications' => [
|
||||
'title' => 'Notificações',
|
||||
'liked' => 'curtiu sua',
|
||||
'commented' => 'comentou na sua',
|
||||
'reacted' => 'reagiu à sua',
|
||||
'shared' => 'compartilhou a sua',
|
||||
'tagged' => 'marcou você numa publicação',
|
||||
'updatedA' => 'atualizou',
|
||||
'sentA' => 'enviou um',
|
||||
'followed' => 'seguiu',
|
||||
'mentioned' => 'mencionou',
|
||||
'you' => 'você',
|
||||
'yourApplication' => 'A sua candidatura para se juntar',
|
||||
'applicationApproved' => 'foi aprovada!',
|
||||
'applicationRejected' => 'foi rejeitada. Você pode inscrever-se novamente em 6 meses.',
|
||||
'dm' => 'mensagem direta',
|
||||
'groupPost' => 'publicação de grupo',
|
||||
'modlog' => 'histórico de moderação',
|
||||
'post' => 'publicação',
|
||||
'story' => 'estória',
|
||||
'noneFound' => 'Nenhuma notificação encontrada',
|
||||
'youRecent' => 'Você recente',
|
||||
'hasUnlisted' => 'foi removida da lista',
|
||||
'cannotDisplay' => 'Não podemos exibir esta notificação no momento.',
|
||||
'followRequest' => 'Pedidos de Seguimento',
|
||||
'filteringResults' => 'Os resultados do filtro podem não incluir notificações mais antigas',
|
||||
'mentions' => 'Menções',
|
||||
'mentionsDescription' => 'Respostas às suas publicações e publicações em que você foi mencionado',
|
||||
'likes' => 'Curtidas',
|
||||
'likesDescription' => 'Contas que curtiram das suas publicações',
|
||||
'followers' => 'Seguidores',
|
||||
'followersDescription' => 'Contas que seguiram você',
|
||||
'reblogs' => 'Reblogs',
|
||||
'reblogsDescription' => 'Contas que compartilharam ou reblogaram suas publicações',
|
||||
'dms' => 'DMs',
|
||||
'dmsDescription' => 'Mensagens diretas que você tem com outras contas',
|
||||
'accept' => 'Aceitar',
|
||||
'reject' => 'Rejeitar'
|
||||
],
|
||||
|
||||
'post' => [
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue