Language switcher, pwa icons
|
@ -131,4 +131,8 @@ export default class extends ApplicationController {
|
|||
closeNav(e) {
|
||||
document.getElementById('sidebar').classList.remove('open');
|
||||
}
|
||||
|
||||
changeLang(event) {
|
||||
window.location.href = '/settings/theme/kbin_lang/' + event.target.value;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,12 @@
|
|||
import {Controller} from '@hotwired/stimulus';
|
||||
import * as timeago from 'timeago.js';
|
||||
import pl from 'timeago.js/lib/lang/pl';
|
||||
import es from 'timeago.js/lib/lang/es';
|
||||
import fr from 'timeago.js/lib/lang/fr';
|
||||
import it from 'timeago.js/lib/lang/it';
|
||||
import ja from 'timeago.js/lib/lang/ja';
|
||||
import nl from 'timeago.js/lib/lang/nl';
|
||||
import pl from 'timeago.js/lib/lang/pl';
|
||||
import pt from 'timeago.js/lib/lang/pt_br';
|
||||
|
||||
/* stimulusFetch: 'lazy' */
|
||||
export default class extends Controller {
|
||||
|
@ -9,12 +14,27 @@ export default class extends Controller {
|
|||
const elems = document.querySelectorAll('.timeago');
|
||||
|
||||
if (elems.length) {
|
||||
if (document.documentElement.lang === 'pl') { // @todo
|
||||
timeago.register('pl', pl);
|
||||
timeago.render(document.querySelectorAll('.timeago'), 'pl');
|
||||
if (document.documentElement.lang === 'es') { // @todo
|
||||
timeago.register('es', es);
|
||||
timeago.render(document.querySelectorAll('.timeago'), 'es');
|
||||
} else if (document.documentElement.lang === 'fr') {
|
||||
timeago.register('fr', fr);
|
||||
timeago.render(document.querySelectorAll('.timeago'), 'fr');
|
||||
} else if (document.documentElement.lang === 'it') {
|
||||
timeago.register('it', it);
|
||||
timeago.render(document.querySelectorAll('.timeago'), 'it');
|
||||
} else if (document.documentElement.lang === 'ja') {
|
||||
timeago.register('ja', ja);
|
||||
timeago.render(document.querySelectorAll('.timeago'), 'ja');
|
||||
} else if (document.documentElement.lang === 'nl') {
|
||||
timeago.register('nl', nl);
|
||||
timeago.render(document.querySelectorAll('.timeago'), 'nl');
|
||||
} else if (document.documentElement.lang === 'pl') {
|
||||
timeago.register('pl', pl);
|
||||
timeago.render(document.querySelectorAll('.timeago'), 'pl');
|
||||
} else if (document.documentElement.lang === 'pt') {
|
||||
timeago.register('pt', pt);
|
||||
timeago.render(document.querySelectorAll('.timeago'), 'pt');
|
||||
} else {
|
||||
timeago.render(document.querySelectorAll('.timeago'));
|
||||
}
|
||||
|
|
|
@ -55,6 +55,17 @@
|
|||
|
||||
h5 {
|
||||
font-size: 1rem;
|
||||
margin-top: 4rem;
|
||||
}
|
||||
}
|
||||
|
||||
.lang-switch {
|
||||
margin-top: 1rem;
|
||||
|
||||
select {
|
||||
background: var(--kbin-footer-bg);
|
||||
color: var(--kbin-footer-text-color) !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 562 B |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 1,007 B |
Before Width: | Height: | Size: 1.5 KiB |
BIN
public/assets/icons/icon-1024x1024.png
Normal file
After Width: | Height: | Size: 152 KiB |
146
public/assets/icons/icon-1024x1024.svg
Normal file
|
@ -0,0 +1,146 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
viewBox="0 0 1024 1024"
|
||||
version="1.1"
|
||||
id="svg13249"
|
||||
sodipodi:docname="icon-1024x1024xxxx.svg"
|
||||
xml:space="preserve"
|
||||
inkscape:version="1.2 (dc2aedaf03, 2022-05-15)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"><defs
|
||||
id="defs13253"><linearGradient
|
||||
id="a"><stop
|
||||
offset="0"
|
||||
style="stop-color:#c358f8;stop-opacity:1"
|
||||
id="stop13372" /><stop
|
||||
offset="1"
|
||||
style="stop-color:#7835ff;stop-opacity:1"
|
||||
id="stop13374" /></linearGradient><linearGradient
|
||||
id="b"><stop
|
||||
offset="0"
|
||||
style="stop-color:#b550fa;stop-opacity:1"
|
||||
id="stop13377" /><stop
|
||||
offset="1"
|
||||
style="stop-color:#f2a0af;stop-opacity:1"
|
||||
id="stop13379" /></linearGradient><linearGradient
|
||||
xlink:href="#a"
|
||||
id="c"
|
||||
x1="233.208"
|
||||
x2="235.371"
|
||||
y1="155.572"
|
||||
y2="159.662"
|
||||
gradientTransform="translate(-19.216,42.773)"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
xlink:href="#b"
|
||||
id="d"
|
||||
x1="238.321"
|
||||
x2="236.355"
|
||||
y1="154.077"
|
||||
y2="159.465"
|
||||
gradientTransform="translate(-20.99,42.773)"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
xlink:href="#a"
|
||||
id="c-0"
|
||||
x1="233.20799"
|
||||
x2="235.371"
|
||||
y1="155.57201"
|
||||
y2="159.662"
|
||||
gradientTransform="translate(-19.216,42.773)"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
xlink:href="#b"
|
||||
id="d-6"
|
||||
x1="238.321"
|
||||
x2="236.355"
|
||||
y1="154.077"
|
||||
y2="159.465"
|
||||
gradientTransform="translate(-20.99,42.773)"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
xlink:href="#a"
|
||||
id="c-2"
|
||||
x1="233.20799"
|
||||
x2="235.371"
|
||||
y1="155.57201"
|
||||
y2="159.662"
|
||||
gradientTransform="translate(-19.216,42.773)"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
xlink:href="#b"
|
||||
id="d-7"
|
||||
x1="238.321"
|
||||
x2="236.355"
|
||||
y1="154.077"
|
||||
y2="159.465"
|
||||
gradientTransform="translate(-20.99,42.773)"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
xlink:href="#a"
|
||||
id="c-2-0"
|
||||
x1="233.20799"
|
||||
x2="235.371"
|
||||
y1="155.57201"
|
||||
y2="159.662"
|
||||
gradientTransform="translate(-19.216,42.773)"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
xlink:href="#b"
|
||||
id="d-7-4"
|
||||
x1="238.321"
|
||||
x2="236.355"
|
||||
y1="154.077"
|
||||
y2="159.465"
|
||||
gradientTransform="translate(-20.99,42.773)"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
xlink:href="#a"
|
||||
id="c-2-0-9"
|
||||
x1="233.20799"
|
||||
x2="235.371"
|
||||
y1="155.57201"
|
||||
y2="159.662"
|
||||
gradientTransform="translate(-19.216,42.773)"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
xlink:href="#b"
|
||||
id="d-7-4-9"
|
||||
x1="238.321"
|
||||
x2="236.355"
|
||||
y1="154.077"
|
||||
y2="159.465"
|
||||
gradientTransform="translate(-20.99,42.773)"
|
||||
gradientUnits="userSpaceOnUse" /></defs><sodipodi:namedview
|
||||
id="namedview13251"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.32593203"
|
||||
inkscape:cx="869.81325"
|
||||
inkscape:cy="-85.907482"
|
||||
inkscape:window-width="4608"
|
||||
inkscape:window-height="2486"
|
||||
inkscape:window-x="4597"
|
||||
inkscape:window-y="-11"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg13249" /><rect
|
||||
width="1024"
|
||||
height="1024"
|
||||
fill="#fff"
|
||||
rx="128"
|
||||
ry="128"
|
||||
id="rect13245"
|
||||
style="fill:#100045;fill-opacity:1"
|
||||
inkscape:export-filename="rect13245.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96" /><g
|
||||
id="g13404"
|
||||
transform="matrix(60.470246,0,0,60.470094,256.0927,256.05818)"><path
|
||||
d="m 214.848,198.342 -0.695,0.006 c -0.293,0 -0.39,0.184 -0.319,0.449 l 0.64,2.845 c 0.142,0.526 0.236,0.62 0.332,0.62 h 0.186 c 0.366,0 0.496,-0.22 0.639,-0.62 l 1.012,-2.845 h -1.333 c -0.095,-0.213 -0.128,-0.454 -0.462,-0.454 z"
|
||||
style="fill:url(#c);fill-opacity:1;stroke:none;stroke-width:0.0964889"
|
||||
transform="matrix(1.62214,0,0,1.56333,-346.83413,-307.73623)"
|
||||
id="path13386" /><path
|
||||
d="m 217.08,196.846 h 1.631 c 0.131,0 0.403,0.074 0.296,0.387 l -1.356,4.547 c -0.14,0.393 -0.268,0.482 -0.68,0.482 h -2.165 c 0.113,0 0.232,-0.22 0.375,-0.62 l 1.289,-4.36 c 0.094,-0.25 0.22,-0.436 0.61,-0.436 z"
|
||||
style="fill:url(#d);fill-opacity:1;stroke:none;stroke-width:0.0964889"
|
||||
transform="matrix(1.62214,0,0,1.56333,-346.83413,-307.73623)"
|
||||
id="path13388" /></g></svg>
|
After Width: | Height: | Size: 5 KiB |
BIN
public/assets/icons/icon-144x144.png
Normal file
After Width: | Height: | Size: 6 KiB |
BIN
public/assets/icons/icon-192x192.png
Normal file
After Width: | Height: | Size: 9.1 KiB |
BIN
public/assets/icons/icon-256x256.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
public/assets/icons/icon-48x48.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
public/assets/icons/icon-512x512.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
public/assets/icons/icon-72x72.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
public/assets/icons/icon-96x96.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
public/assets/icons/kbin-shortcut-magazines.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
public/assets/icons/kbin-shortcut-microblog.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
public/assets/icons/kbin-shortcut-people.png
Normal file
After Width: | Height: | Size: 4.7 KiB |
|
@ -1 +1,154 @@
|
|||
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
|
||||
{
|
||||
"id": "/",
|
||||
"scope": "/",
|
||||
"start_url": "/",
|
||||
"name": "/kbin",
|
||||
"short_name": "/kbin",
|
||||
"description": "/kbin Progressive Web App",
|
||||
"display": "standalone",
|
||||
"orientation": "portrait",
|
||||
"background_color":"#1E1F22",
|
||||
"theme_color":"#1E1F22",
|
||||
"related_applications": [],
|
||||
"prefer_related_applications": false,
|
||||
"display_override": [
|
||||
"window-controls-overlay"
|
||||
],
|
||||
"icons":[
|
||||
{
|
||||
"purpose":"any",
|
||||
"src":"assets/icons/icon-48x48.png?v=a1b1aa69784e84b93da65e9757bc4658",
|
||||
"sizes":"48x48",
|
||||
"type":"image/png"},
|
||||
{
|
||||
"purpose":"maskable",
|
||||
"src":"assets/icons/icon-48x48.png?v=a1b1aa69784e84b93da65e9757bc4658",
|
||||
"sizes":"48x48",
|
||||
"type":"image/png"},
|
||||
{
|
||||
"purpose":"any",
|
||||
"src":"assets/icons/icon-72x72.png?v=a1b1aa69784e84b93da65e9757bc4658",
|
||||
"sizes":"72x72",
|
||||
"type":"image/png"},
|
||||
{
|
||||
"purpose":"maskable",
|
||||
"src":"assets/icons/icon-72x72.png?v=a1b1aa69784e84b93da65e9757bc4658",
|
||||
"sizes":"72x72",
|
||||
"type":"image/png"},
|
||||
{
|
||||
"purpose":"any",
|
||||
"src":"assets/icons/icon-96x96.png?v=a1b1aa69784e84b93da65e9757bc4658",
|
||||
"sizes":"96x96",
|
||||
"type":"image/png"},
|
||||
{
|
||||
"purpose":"maskable",
|
||||
"src":"assets/icons/icon-96x96.png?v=a1b1aa69784e84b93da65e9757bc4658",
|
||||
"sizes":"96x96",
|
||||
"type":"image/png"},
|
||||
{
|
||||
"purpose":"any",
|
||||
"src":"assets/icons/icon-144x144.png?v=a1b1aa69784e84b93da65e9757bc4658",
|
||||
"sizes":"144x144",
|
||||
"type":"image/png"},
|
||||
{
|
||||
"purpose":"maskable",
|
||||
"src":"assets/icons/icon-144x144.png?v=a1b1aa69784e84b93da65e9757bc4658",
|
||||
"sizes":"144x144",
|
||||
"type":"image/png"},
|
||||
{
|
||||
"purpose":"any",
|
||||
"src":"assets/icons/icon-192x192.png?v=a1b1aa69784e84b93da65e9757bc4658",
|
||||
"sizes":"192x192",
|
||||
"type":"image/png"},
|
||||
{
|
||||
"purpose":"maskable",
|
||||
"src":"assets/icons/icon-192x192.png?v=a1b1aa69784e84b93da65e9757bc4658",
|
||||
"sizes":"192x192",
|
||||
"type":"image/png"},
|
||||
{
|
||||
"purpose":"any",
|
||||
"src":"assets/icons/icon-256x256.png?v=a1b1aa69784e84b93da65e9757bc4658",
|
||||
"sizes":"256x256",
|
||||
"type":"image/png"},
|
||||
{
|
||||
"purpose":"maskable",
|
||||
"src":"assets/icons/icon-256x256.png?v=a1b1aa69784e84b93da65e9757bc4658",
|
||||
"sizes":"256x256",
|
||||
"type":"image/png"},
|
||||
{
|
||||
"purpose":"any",
|
||||
"src":"assets/icons/icon-384x384.png?v=a1b1aa69784e84b93da65e9757bc4658",
|
||||
"sizes":"384x384",
|
||||
"type":"image/png"},
|
||||
{
|
||||
"purpose":"maskable",
|
||||
"src":"assets/icons/icon-384x384.png?v=a1b1aa69784e84b93da65e9757bc4658",
|
||||
"sizes":"384x384",
|
||||
"type":"image/png"},
|
||||
{
|
||||
"purpose":"any",
|
||||
"src":"assets/icons/icon-512x512.png?v=a1b1aa69784e84b93da65e9757bc4658",
|
||||
"sizes":"512x512",
|
||||
"type":"image/png"},
|
||||
{
|
||||
"purpose":"maskable",
|
||||
"src":"assets/icons/icon-512x512.png?v=a1b1aa69784e84b93da65e9757bc4658",
|
||||
"sizes":"512x512",
|
||||
"type":"image/png"
|
||||
}
|
||||
],
|
||||
"screenshots": [
|
||||
{
|
||||
"src": "assets/screenshots/screen.png",
|
||||
"sizes": "1600x869",
|
||||
"type": "image/png"
|
||||
}
|
||||
],
|
||||
"features": [
|
||||
"fediverse",
|
||||
"ActivityPub",
|
||||
"simple"
|
||||
],
|
||||
"categories": [
|
||||
"social",
|
||||
"microblogging"
|
||||
],
|
||||
"shortcuts":[
|
||||
{
|
||||
"name":"Open Microblog",
|
||||
"short_name":"Microblog",
|
||||
"description":"Open the Microblog section",
|
||||
"url":"/microblog",
|
||||
"icons":[
|
||||
{
|
||||
"src":"assets/icons/kbin-shortcut-microblog.png",
|
||||
"sizes":"96x96"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name":"Open Magazines",
|
||||
"short_name":"Magazines",
|
||||
"description":"Open the Magazines list",
|
||||
"url":"/magazines",
|
||||
"icons":[
|
||||
{
|
||||
"src":"assets/icons/kbin-shortcut-magazines.png",
|
||||
"sizes":"96x96"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name":"Open People",
|
||||
"short_name":"People",
|
||||
"description":"Open the People list",
|
||||
"url":"/people",
|
||||
"icons":[
|
||||
{
|
||||
"src":"assets/icons/kbin-shortcut-people.png",
|
||||
"sizes":"96x96"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -11,6 +11,7 @@ use Symfony\Component\HttpFoundation\Response;
|
|||
|
||||
class ThemeSettingsController extends AbstractController
|
||||
{
|
||||
public const KBIN_LANG = 'kbin_lang';
|
||||
public const ENTRIES_VIEW = 'entries_view';
|
||||
public const ENTRY_COMMENTS_VIEW = 'entry_comments_view';
|
||||
public const POST_COMMENTS_VIEW = 'post_comments_view';
|
||||
|
@ -63,6 +64,7 @@ class ThemeSettingsController extends AbstractController
|
|||
self::KBIN_POSTS_SHOW_PREVIEW,
|
||||
self::KBIN_GENERAL_DYNAMIC_LISTS,
|
||||
self::KBIN_FEDERATION_ENABLED,
|
||||
self::KBIN_LANG,
|
||||
];
|
||||
|
||||
public const VALUES = [
|
||||
|
@ -96,6 +98,10 @@ class ThemeSettingsController extends AbstractController
|
|||
// $response->headers->setCookie(new Cookie(self::KBIN_GENERAL_ROUNDED_EDGES, 'true', strtotime('+1 year')));
|
||||
// }
|
||||
|
||||
if (self::KBIN_LANG === $key) {
|
||||
$response->headers->setCookie(new Cookie(self::KBIN_LANG, $value, strtotime('+1 year')));
|
||||
}
|
||||
|
||||
return new \Symfony\Component\HttpFoundation\RedirectResponse(
|
||||
($request->headers->get('referer') ?? '/').'#settings',
|
||||
302,
|
||||
|
|
|
@ -16,6 +16,12 @@ class LanguageListener
|
|||
{
|
||||
$request = $event->getRequest();
|
||||
|
||||
if ($request->cookies->has('kbin_lang')) {
|
||||
$request->setLocale($request->cookies->get('kbin_lang'));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
|
||||
$request->setLocale($this->lang);
|
||||
|
||||
|
|
|
@ -77,9 +77,9 @@ class EntryCommentVoter extends Voter
|
|||
|
||||
private function canVote(EntryComment $comment, User $user): bool
|
||||
{
|
||||
if ($comment->user === $user) {
|
||||
return false;
|
||||
}
|
||||
// if ($comment->user === $user) {
|
||||
// return false;
|
||||
// }
|
||||
|
||||
if ($comment->entry->magazine->isBanned($user)) {
|
||||
return false;
|
||||
|
|
|
@ -82,9 +82,9 @@ class EntryVoter extends Voter
|
|||
|
||||
private function canVote(Entry $entry, User $user): bool
|
||||
{
|
||||
if ($entry->user === $user) {
|
||||
return false;
|
||||
}
|
||||
// if ($entry->user === $user) {
|
||||
// return false;
|
||||
// }
|
||||
|
||||
if ($entry->magazine->isBanned($user)) {
|
||||
return false;
|
||||
|
|
|
@ -73,9 +73,9 @@ class PostCommentVoter extends Voter
|
|||
|
||||
private function canVote(PostComment $comment, User $user): bool
|
||||
{
|
||||
if ($comment->user === $user) {
|
||||
return false;
|
||||
}
|
||||
// if ($comment->user === $user) {
|
||||
// return false;
|
||||
// }
|
||||
|
||||
if ($comment->post->magazine->isBanned($user)) {
|
||||
return false;
|
||||
|
|
|
@ -82,9 +82,9 @@ class PostVoter extends Voter
|
|||
|
||||
private function canVote(Post $post, User $user): bool
|
||||
{
|
||||
if ($post->user === $user) {
|
||||
return false;
|
||||
}
|
||||
// if ($post->user === $user) {
|
||||
// return false;
|
||||
// }
|
||||
|
||||
if ($post->magazine->isBanned($user)) {
|
||||
return false;
|
||||
|
|
|
@ -28,8 +28,7 @@
|
|||
<button type="submit"
|
||||
title="{{ 'favourite'|trans }}"
|
||||
aria-label="{{ 'favourite'|trans }}"
|
||||
data-action="subject#vote"
|
||||
{{ html_classes({'disabled': app.user and subject.isAuthor(app.user)}) }}>
|
||||
data-action="subject#vote">
|
||||
<span data-subject-target="favCounter">{{ subject.favouriteCount }}</span> <span><i class="fa-solid fa-arrow-up"></i></span>
|
||||
</button>
|
||||
<input type="hidden" name="token" value="{{ csrf_token('favourite') }}">
|
||||
|
@ -44,7 +43,7 @@
|
|||
title="{{ 'down_vote'|trans }}"
|
||||
aria-label="{{ 'down_vote'|trans }}"
|
||||
data-action="subject#vote"
|
||||
{{ html_classes('vote__up', {'disabled': app.user and subject.isAuthor(app.user)}) }}>
|
||||
class="vote__up">
|
||||
<span data-subject-target="downvoteCounter">{{ subject.countDownvotes }}</span> <span><i class="fa-solid fa-arrow-down"></i></span>
|
||||
</button>
|
||||
<input type="hidden" name="token" value="{{ csrf_token('vote') }}">
|
||||
|
|
|
@ -16,12 +16,12 @@
|
|||
<menu>
|
||||
<li><a href="{{ path('magazine_create') }}">{{ 'create_new_magazine'|trans }}</a></li>
|
||||
<li>
|
||||
<a href="{{ path('entry_create', {type: 'type.article'|trans|lower}) }}">{{ 'add_new_article'|trans }}</a>
|
||||
<a href="{{ path('entry_create', {type: 'article'}) }}">{{ 'add_new_article'|trans }}</a>
|
||||
</li>
|
||||
<li><a href="{{ path('entry_create', {type: 'type.link'|trans|lower}) }}">{{ 'add_new_link'|trans }}</a>
|
||||
<li><a href="{{ path('entry_create', {type: 'link'}) }}">{{ 'add_new_link'|trans }}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ path('entry_create', {type: 'type.photo'|trans|lower}) }}">{{ 'add_new_photo'|trans }}</a>
|
||||
<a href="{{ path('entry_create', {type: 'photo'}) }}">{{ 'add_new_photo'|trans }}</a>
|
||||
</li>
|
||||
<li><a href="{{ path('posts_front') }}">{{ 'add_new_post'|trans }}</a></li>
|
||||
<li><a href="#">{{ 'add_new_video'|trans }}</a></li>
|
||||
|
@ -62,6 +62,18 @@
|
|||
aria-label="{{ 'rss'|trans }}"><i class="fa-solid fa-rss"></i></a>
|
||||
</li>
|
||||
</menu>
|
||||
<div class="lang-switch">
|
||||
<select data-action="kbin#changeLang">
|
||||
<option value="en" {{ app.request.cookies.get('kbin_lang') is same as 'en' ? 'selected' : '' }}>English</option>
|
||||
<option value="es" {{ app.request.cookies.get('kbin_lang') is same as 'es' ? 'selected' : '' }}>Español</option>
|
||||
<option value="fr" {{ app.request.cookies.get('kbin_lang') is same as 'fr' ? 'selected' : '' }}>Français</option>
|
||||
<option value="it" {{ app.request.cookies.get('kbin_lang') is same as 'it' ? 'selected' : '' }}>Italiano</option>
|
||||
<option value="ja" {{ app.request.cookies.get('kbin_lang') is same as 'ja' ? 'selected' : '' }}>日本語</option>
|
||||
<option value="nl" {{ app.request.cookies.get('kbin_lang') is same as 'nl' ? 'selected' : '' }}>Dutch</option>
|
||||
<option value="pl" {{ app.request.cookies.get('kbin_lang') is same as 'pl' ? 'selected' : '' }}>Polski</option>
|
||||
<option value="pt" {{ app.request.cookies.get('kbin_lang') is same as 'pt' ? 'selected' : '' }}>Português</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
|
|
@ -35,3 +35,83 @@ views: Visualizaciones
|
|||
created_at: Creado
|
||||
owner: Propietaria/o
|
||||
subscribers: Suscriptores/as
|
||||
down_votes: Voto negativo
|
||||
no_comments: Sin comentarios
|
||||
online: Online
|
||||
comments: Comentarios
|
||||
posts: Publicaciones
|
||||
replies: Respuestas
|
||||
moderators: Moderadores/as
|
||||
mod_log: Registro de moderación
|
||||
add_comment: Insertar un comentario
|
||||
add_post: Añadir una publicación
|
||||
add_media: Agregar contenido multimedia
|
||||
markdown_howto: Cómo se utiliza el editor?
|
||||
enter_your_comment: Introduce tu comentario
|
||||
enter_your_post: Intruduce tu publicación
|
||||
activity: Actividad
|
||||
cover: Portada
|
||||
related_posts: Entradas relacionadas
|
||||
random_posts: Publicaciones al azar
|
||||
federated_magazine_info: El magazin del servidor federado puede estar incompleto.
|
||||
federated_user_info: El perfil en el servidor federado puede estar incompleto.
|
||||
go_to_original_instance: Explorar más contenido en la instancia original.
|
||||
empty: Vacío
|
||||
subscribe: Subscribirse
|
||||
unsubscribe: Cancelar subscripción
|
||||
follow: Seguir
|
||||
unfollow: Dejar de seguir
|
||||
reply: Responder
|
||||
login_or_email: Login o correo electrónico
|
||||
password: Contraseña
|
||||
remember_me: Recordar mi sesión
|
||||
dont_have_account: No tienes una cuenta?
|
||||
you_cant_login: No puedes acceder?
|
||||
register: Registrarse
|
||||
reset_password: Reinicializar la contraseña
|
||||
show_more: Mostrar más
|
||||
to: a
|
||||
in: en
|
||||
username: Nombre del usuario
|
||||
email: Email
|
||||
repeat_password: Repetir la contraseña
|
||||
terms: Condiciones de uso
|
||||
privacy_policy: Política de privacidad
|
||||
about_instance: A propósito
|
||||
all_magazines: Todos los magazines
|
||||
stats: Estadísticas
|
||||
fediverse: Fediverso
|
||||
awards: Premios
|
||||
ranking: Ránking
|
||||
create_new_magazine: Crear un nuevo magazin
|
||||
add_new_article: Agregar un nuevo artículo
|
||||
add_new_link: Añadir un nuevo enlace
|
||||
add_new_photo: Añadir una nueva fotografía
|
||||
add_new_post: Añadir nueva publicación
|
||||
add_new_video: Añadir nuevo vídeo
|
||||
contact: Contacto
|
||||
faq: Preguntas frecuentes
|
||||
rss: RSS
|
||||
change_theme: Cambiar tema
|
||||
useful: Util
|
||||
help: Ayuda
|
||||
check_email: Verifica tu e-mail
|
||||
reset_check_email_desc: Si existe una cuenta que coincida con su correo electrónico,
|
||||
se acaba de enviar un correo electrónico que contiene un enlace que puede usar para
|
||||
restablecer su contraseña. Este enlace expirará en %expire%.
|
||||
reset_check_email_desc2: Si no has recibido un e-mail, por favor verifica tu carpeta
|
||||
de spam.
|
||||
try_again: Intenta de nuevo
|
||||
email_confirm_header: Hola! Confirma du dirección e-mail.
|
||||
email_confirm_content: 'Si deseas activar tu cuenta, haz clic en el enlace que se
|
||||
encuentra a continuación:'
|
||||
email_verify: Confirma la dirección e-mail
|
||||
email_confirm_expire: El enlace expira en una hora.
|
||||
select_magazine: Selecciona un magazin
|
||||
add_new: Agrega nuevo
|
||||
url: URL
|
||||
title: Título
|
||||
already_have_account: Tienes una cuenta?
|
||||
agree_terms: Consentimiento para %terms_link_start%Terms and Conditions%terms_link_end%
|
||||
and %policy_link_start%Privacy Policy%policy_link_end%
|
||||
email_confirm_title: Confirma tu dirección e-mail.
|
||||
|
|
|
@ -434,3 +434,34 @@ gold_post_desc: Le message a été partagé 15 fois
|
|||
sidebar_position: Position de la barre latérale
|
||||
mod_log_alert: Dans le journal de modération vous pourriez trouver du contenu choquant
|
||||
enlevé par les modérateurs. Assurez-vous de savoir ce que vous faites.
|
||||
unpin: Détacher
|
||||
change_magazine: Changer de magazine
|
||||
change_language: Changer de langue
|
||||
change: Changer
|
||||
pinned: Épinglé
|
||||
preview: Aperçu
|
||||
article: Article
|
||||
reputation: Réputation
|
||||
note: Note
|
||||
writing: Écriture
|
||||
users: Utilisateurs/trices
|
||||
content: Contenu
|
||||
week: Semaine
|
||||
weeks: Semaines
|
||||
month: Mois
|
||||
months: Mois
|
||||
year: Année
|
||||
federated: Fédéré
|
||||
local: Local
|
||||
admin_panel: Panneau admin
|
||||
dashboard: À la une
|
||||
contact_email: Email de contact
|
||||
meta: Méta
|
||||
instance: Instance
|
||||
pages: Pages
|
||||
FAQ: FAQ
|
||||
type_search_term: Tapez le terme de recherche
|
||||
federation_enabled: Fédération active
|
||||
registrations_enabled: Enregistrements ouverts
|
||||
registration_disabled: Enregistrements fermés
|
||||
restore: Restaurer
|
||||
|
|
|
@ -473,3 +473,4 @@ header_logo: Koplogo
|
|||
browsing_one_thread: Je bekijkt slechts één gesprek binnen deze discussie. Je kunt
|
||||
alle reacties lezen op de berichtpagina.
|
||||
return: Terug
|
||||
boost: Omhoogstemmen
|
||||
|
|
|
@ -309,3 +309,34 @@ theme: Tema
|
|||
show_users_avatars: Mostrar os avatars dos utilizadores
|
||||
restored_thread_by: restaurou tópico por
|
||||
ranking_disabled: Ranking está desativado
|
||||
add_new: Adicionar novo
|
||||
url: URL
|
||||
title: Título
|
||||
body: Corpo
|
||||
tags: Etiquetas
|
||||
badges: Distintivos
|
||||
is_adult: +18 / NSFW
|
||||
eng: ENG
|
||||
oc: OC
|
||||
image: Imagem
|
||||
image_alt: Texto alternativo da imagem
|
||||
name: Nome
|
||||
description: Descrição
|
||||
rules: Regras
|
||||
domain: Domínio
|
||||
followers: Seguidores
|
||||
following: A seguir
|
||||
subscriptions: Subscrições
|
||||
overview: Visão geral
|
||||
cards: Cartões
|
||||
columns: Colunas
|
||||
user: Utilizador
|
||||
joined: Aderiu
|
||||
moderated: Moderado
|
||||
ratio: Rácio
|
||||
people_local: Local
|
||||
people_federated: Federado
|
||||
reputation_points: Pontos de reputação
|
||||
related_tags: Etiquetas relacionadas
|
||||
go_to_content: Ir para o conteúdo
|
||||
go_to_filters: Ir para os filtros
|
||||
|
|