summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ansible/VERSION2
-rw-r--r--docker/prod/docker-compose.yml2
-rw-r--r--server/src/version.rs2
-rw-r--r--ui/src/components/comment-form.tsx4
-rw-r--r--ui/src/components/login.tsx49
-rw-r--r--ui/src/components/sponsors.tsx15
-rw-r--r--ui/src/version.ts2
-rw-r--r--ui/translations/en.json3
-rw-r--r--ui/translations/eo.json239
-rw-r--r--ui/translations/sq.json109
10 files changed, 335 insertions, 92 deletions
diff --git a/ansible/VERSION b/ansible/VERSION
index 378c127d..151a6866 100644
--- a/ansible/VERSION
+++ b/ansible/VERSION
@@ -1 +1 @@
-v0.7.6
+v0.7.8
diff --git a/docker/prod/docker-compose.yml b/docker/prod/docker-compose.yml
index cd364a3c..5ccb1ec5 100644
--- a/docker/prod/docker-compose.yml
+++ b/docker/prod/docker-compose.yml
@@ -12,7 +12,7 @@ services:
restart: always
lemmy:
- image: dessalines/lemmy:v0.7.6
+ image: dessalines/lemmy:v0.7.8
ports:
- "127.0.0.1:8536:8536"
restart: always
diff --git a/server/src/version.rs b/server/src/version.rs
index b72c8198..83d604cd 100644
--- a/server/src/version.rs
+++ b/server/src/version.rs
@@ -1 +1 @@
-pub const VERSION: &str = "v0.7.6";
+pub const VERSION: &str = "v0.7.8";
diff --git a/ui/src/components/comment-form.tsx b/ui/src/components/comment-form.tsx
index 72a604b9..61ee3d77 100644
--- a/ui/src/components/comment-form.tsx
+++ b/ui/src/components/comment-form.tsx
@@ -263,7 +263,9 @@ export class CommentForm extends Component<CommentFormProps, CommentFormState> {
// If its a comment edit, only check that its from your user, and that its a
// text edit only
- (op == UserOperation.EditComment && data.comment.content)
+ (data.comment.creator_id == UserService.Instance.user.id &&
+ op == UserOperation.EditComment &&
+ data.comment.content)
) {
this.state.previewMode = false;
this.state.loading = false;
diff --git a/ui/src/components/login.tsx b/ui/src/components/login.tsx
index ce04d0d4..97899345 100644
--- a/ui/src/components/login.tsx
+++ b/ui/src/components/login.tsx
@@ -20,6 +20,11 @@ interface State {
loginLoading: boolean;
registerLoading: boolean;
enable_nsfw: boolean;
+ mathQuestion: {
+ a: number;
+ b: number;
+ answer: number;
+ };
}
export class Login extends Component<any, State> {
@@ -40,6 +45,11 @@ export class Login extends Component<any, State> {
loginLoading: false,
registerLoading: false,
enable_nsfw: undefined,
+ mathQuestion: {
+ a: Math.floor(Math.random() * 10) + 1,
+ b: Math.floor(Math.random() * 10) + 1,
+ answer: undefined,
+ },
};
constructor(props: any, context: any) {
@@ -215,6 +225,23 @@ export class Login extends Component<any, State> {
/>
</div>
</div>
+ <div class="form-group row">
+ <label class="col-sm-10 col-form-label" htmlFor="register-math">
+ {i18n.t('what_is')}{' '}
+ {`${this.state.mathQuestion.a} + ${this.state.mathQuestion.b}?`}
+ </label>
+
+ <div class="col-sm-2">
+ <input
+ type="number"
+ id="register-math"
+ class="form-control"
+ value={this.state.mathQuestion.answer}
+ onInput={linkEvent(this, this.handleMathAnswerChange)}
+ required
+ />
+ </div>
+ </div>
{this.state.enable_nsfw && (
<div class="form-group row">
<div class="col-sm-10">
@@ -235,7 +262,11 @@ export class Login extends Component<any, State> {
)}
<div class="form-group row">
<div class="col-sm-10">
- <button type="submit" class="btn btn-secondary">
+ <button
+ type="submit"
+ class="btn btn-secondary"
+ disabled={this.mathCheck}
+ >
{this.state.registerLoading ? (
<svg class="icon icon-spinner spin">
<use xlinkHref="#icon-spinner"></use>
@@ -272,7 +303,9 @@ export class Login extends Component<any, State> {
i.state.registerLoading = true;
i.setState(i.state);
- WebSocketService.Instance.register(i.state.registerForm);
+ if (!i.mathCheck) {
+ WebSocketService.Instance.register(i.state.registerForm);
+ }
}
handleRegisterUsernameChange(i: Login, event: any) {
@@ -303,6 +336,11 @@ export class Login extends Component<any, State> {
i.setState(i.state);
}
+ handleMathAnswerChange(i: Login, event: any) {
+ i.state.mathQuestion.answer = event.target.value;
+ i.setState(i.state);
+ }
+
handlePasswordReset(i: Login) {
event.preventDefault();
let resetForm: PasswordResetForm = {
@@ -311,6 +349,13 @@ export class Login extends Component<any, State> {
WebSocketService.Instance.passwordReset(resetForm);
}
+ get mathCheck(): boolean {
+ return (
+ this.state.mathQuestion.answer !=
+ this.state.mathQuestion.a + this.state.mathQuestion.b
+ );
+ }
+
parseMessage(msg: WebSocketJsonResponse) {
let res = wsJsonToRes(msg);
if (msg.error) {
diff --git a/ui/src/components/sponsors.tsx b/ui/src/components/sponsors.tsx
index 06e13524..4561bc30 100644
--- a/ui/src/components/sponsors.tsx
+++ b/ui/src/components/sponsors.tsx
@@ -6,10 +6,11 @@ import { repoUrl } from '../utils';
interface SilverUser {
name: string;
- link: string;
+ link?: string;
}
let general = [
+ 'twilight loki',
'Andrew Plaza',
'Jonathan Cremin',
'Arthur Nieuwland',
@@ -19,7 +20,7 @@ let general = [
'Andre Vallestero',
'NotTooHighToHack',
];
-let highlighted = ['Oskenso Kashi', 'Alex Benishek'];
+let highlighted = ['DiscountFuneral', 'Oskenso Kashi', 'Alex Benishek'];
let silver: Array<SilverUser> = [
{
name: 'Redjoker',
@@ -89,9 +90,13 @@ export class Sponsors extends Component<any, any> {
{silver.map(s => (
<div class="card col-12 col-md-2">
<div>
- <a href={s.link} target="_blank" rel="noopener">
- 💎 {s.name}
- </a>
+ {s.link ? (
+ <a href={s.link} target="_blank" rel="noopener">
+ 💎 {s.name}
+ </a>
+ ) : (
+ <div>💎 {s.name}</div>
+ )}
</div>
</div>
))}
diff --git a/ui/src/version.ts b/ui/src/version.ts
index 8ad27e7c..709137ef 100644
--- a/ui/src/version.ts
+++ b/ui/src/version.ts
@@ -1 +1 @@
-export const version: string = 'v0.7.6';
+export const version: string = 'v0.7.8';
diff --git a/ui/translations/en.json b/ui/translations/en.json
index 6d2d1c5d..62b11ce4 100644
--- a/ui/translations/en.json
+++ b/ui/translations/en.json
@@ -264,5 +264,6 @@
"time": "Time",
"action": "Action",
"emoji_picker": "Emoji Picker",
- "block_leaving": "Are you sure you want to leave?"
+ "block_leaving": "Are you sure you want to leave?",
+ "what_is": "What is"
}
diff --git a/ui/translations/eo.json b/ui/translations/eo.json
index 5bde84f4..78821bf0 100644
--- a/ui/translations/eo.json
+++ b/ui/translations/eo.json
@@ -1,33 +1,34 @@
{
- "post": "Poŝti",
- "remove_post": "Fortiri Poŝton",
- "no_posts": "Ne Poŝtoj.",
- "create_a_post": "Verki Poŝton",
- "create_post": "Verki Poŝton",
- "number_of_posts": "{{count}} Poŝtoj",
- "posts": "Poŝtoj",
- "related_posts": "Tiuj poŝtoj eble rilatas",
- "cross_posts": "Tiuj ligilo ankaŭ estas poŝtinta al:",
- "cross_post": "laŭapoŝto",
+ "post": "Afiŝi",
+ "remove_post": "Forigi afiŝon",
+ "no_posts": "Neniuj afiŝoj.",
+ "create_a_post": "Verki afiŝon",
+ "create_post": "Verki afiŝon",
+ "number_of_posts": "{{count}} afiŝo",
+ "number_of_posts_plural": "{{count}} afiŝoj",
+ "posts": "Afiŝoj",
+ "related_posts": "Ĉi tiuj afiŝoj eble rilatas",
+ "cross_posts": "Tiu ligilo ankaŭ estas afiŝita al:",
+ "cross_post": "transafiŝo",
"comments": "Komentoj",
- "number_of_comments": "{{count}} Komento",
- "number_of_comments_plural": "{{count}} Komentoj",
- "remove_comment": "Fortiri Komentojn",
+ "number_of_comments": "{{count}} komento",
+ "number_of_comments_plural": "{{count}} komentoj",
+ "remove_comment": "Forigi komenton",
"communities": "Komunumoj",
"users": "Uzantoj",
"create_a_community": "Krei komunumon",
- "create_community": "Krei Komunumon",
- "remove_community": "Forigi Komunumon",
- "subscribed_to_communities": "Abonita al <1>komunumoj</1>",
- "trending_communities": "Furora <1>komunumoj</1>",
+ "create_community": "Krei komunumon",
+ "remove_community": "Forigi komunumon",
+ "subscribed_to_communities": "Abonanta <1>komunumojn</1>",
+ "trending_communities": "Furoraj <1>komunumoj</1>",
"list_of_communities": "Listo de komunumoj",
- "community_reqs": "minusklaj leteroj, substrekoj, kaj ne spacetoj.",
+ "community_reqs": "minusklaj literoj, substrekoj, kaj neniuj spacetoj.",
"edit": "redakti",
- "reply": "repliki",
- "cancel": "nuligi",
+ "reply": "respondi",
+ "cancel": "Nuligi",
"unlock": "malŝlosi",
"lock": "ŝlosi",
- "link": "ligi",
+ "link": "ligilo",
"mod": "moderanto",
"mods": "moderantoj",
"moderates": "Moderigas",
@@ -37,17 +38,17 @@
"modlog": "Moderlogo",
"admin": "administranto",
"admins": "administrantoj",
- "remove_as_admin": "forigi per administranto",
- "appoint_as_admin": "nomumi per administranto",
- "remove": "fortiri",
+ "remove_as_admin": "forigi kiel administranto",
+ "appoint_as_admin": "nomumi administranto",
+ "remove": "forigi",
"removed": "fortirita",
"locked": "ŝlosita",
"reason": "Kialo",
- "mark_as_read": "marki kiel legita",
- "mark_as_unread": "marki kiel nelegita",
+ "mark_as_read": "marki legita",
+ "mark_as_unread": "marki nelegita",
"delete": "forigi",
- "deleted": "forigita",
- "restore": "restaŭri",
+ "deleted": "forigita de la kreinto",
+ "restore": "revenigi",
"ban": "forbari",
"ban_from_site": "forbari de retejo",
"unban": "malforbari",
@@ -55,11 +56,14 @@
"save": "konservi",
"unsave": "malkonservi",
"create": "krei",
- "username": "Uzantnomo",
- "email_or_username": "Retadreso aŭ Uzantnomo",
- "number_of_users": "{{count}} Uzantoj",
- "number_of_subscribers": "{{count}} Abonantoj",
- "number_of_points": "{{count}} Voĉdonoj",
+ "username": "Uzantonomo",
+ "email_or_username": "Retpoŝtadreso aŭ uzantonomo",
+ "number_of_users": "{{count}} uzanto",
+ "number_of_users_plural": "{{count}} uzantoj",
+ "number_of_subscribers": "{{count}} abonanto",
+ "number_of_subscribers_plural": "{{count}} abonantoj",
+ "number_of_points": "{{count}} voĉdono",
+ "number_of_points_plural": "{{count}} voĉdonoj",
"name": "Nomo",
"title": "Titolo",
"category": "Kategorio",
@@ -69,10 +73,10 @@
"unsubscribe": "Malaboni",
"subscribe": "Aboni",
"subscribed": "Abonita",
- "prev": "Antaŭe",
- "next": "Poste",
- "sidebar": "Flankstango",
- "sort_type": "Klasi per kia",
+ "prev": "Malpluen",
+ "next": "Pluen",
+ "sidebar": "Flankobreto",
+ "sort_type": "Ordigilo",
"hot": "Varmaj",
"new": "Novaj",
"top_day": "Supraj tagaj",
@@ -84,46 +88,46 @@
"api": "API",
"inbox": "Ricevujo",
"inbox_for": "Ricevujo de <1>{{user}}</1>",
- "mark_all_as_read": "marki ĉiujn kiel legitaj",
+ "mark_all_as_read": "marki ĉiujn legitaj",
"type": "Tipo",
"unread": "Nelegitaj",
- "reply_sent": "Repliko sendis",
+ "reply_sent": "Respondo sendiĝis",
"search": "Serĉi",
"overview": "Resumo",
"view": "Rigardi",
- "logout": "Elsaluti",
- "login_sign_up": "Ensaluti / Registriĝi",
- "login": "Ensaluti",
+ "logout": "Adiaŭi",
+ "login_sign_up": "Saluti / Registriĝi",
+ "login": "Saluti",
"sign_up": "Registriĝi",
- "notifications_error": "Labortablaj avizoj estas nehavebla en via retumilo. Provu Firefox-on aŭ Chrome-on.",
- "unread_messages": "Nelegitaj Mesaĝoj",
+ "notifications_error": "Labortablaj avizoj estas nehaveblaj en via foliumilo. Provu foliumilojn Firefox aŭ Chrome.",
+ "unread_messages": "Nelegitaj mesaĝoj",
"password": "Pasvorto",
- "verify_password": "Konfirmu Vian Pasvorton",
- "email": "Retadreso",
- "optional": "Fakultativa",
+ "verify_password": "Konfirmu vian pasvorton",
+ "email": "Retpoŝtadreso",
+ "optional": "Malnepra",
"expires": "Finiĝos",
"url": "URL",
"body": "Ĉefparto",
- "copy_suggested_title": "kopii la sugestiitan titolon: {{title}}",
+ "copy_suggested_title": "kopii la proponitan titolon: {{title}}",
"community": "Komunumo",
- "expand_here": "Ekspansii ĉi tie",
+ "expand_here": "Etendi ĉi tie",
"subscribe_to_communities": "Aboni al iuj <1>komunumoj</1>.",
"chat": "Babilo",
- "recent_comments": "Freŝaj Komentoj",
- "no_results": "Ne rezultoj.",
+ "recent_comments": "Freŝaj komentoj",
+ "no_results": "Neniuj rezultoj.",
"setup": "Agordi",
- "lemmy_instance_setup": "Agordi Instancon de Lemmy",
- "setup_admin": "Agordi Retejan Administranton",
+ "lemmy_instance_setup": "Agordi nodon de Lemmy",
+ "setup_admin": "Agordi administranton de retejo",
"your_site": "via retejo",
"modified": "modifita",
- "nsfw": "NSFW",
- "show_nsfw": "Vidigi NSFW-an enhavon",
+ "nsfw": "Konsterna",
+ "show_nsfw": "Montri konsternan enhavon",
"sponsors": "Subtenantoj",
"sponsors_of_lemmy": "Subtenantoj de Lemmy",
- "sponsor_message": "Lemmy estas senpaga, <1>liberkoda</1> programaro. Tio signifas ne reklami, pagigi, aŭ riska kapitalo, ĉiam. Viaj donacoj rekte subtenas plentempan evoluon de la projekto. Dankon al tiuj homoj:",
+ "sponsor_message": "Lemmy estas senpaga, <1>liberkoda</1> programaro, sen reklamoj, pagigado, aŭ riska kapitalo, ĉiam ajn. Viaj donacoj rekte subtenas plentempan evoluigadon de la projekto. Dankon al tiuj homoj:",
"support_on_patreon": "Subteni per Patreon",
- "general_sponsors": "Ĝeneralaj Subtenantoj estas tiuj ke donacis inter $10 kaj $39 al Lemmy.",
- "crypto": "Crypto",
+ "general_sponsors": "Ĝeneralaj subtenantoj estas tiuj, kiuj donacis inter $10 kaj $39 al Lemmy.",
+ "crypto": "Ĉifroteĥnikaro",
"bitcoin": "Bitcoin",
"ethereum": "Ethereum",
"monero": "Monero",
@@ -133,45 +137,124 @@
"to": "al",
"transfer_community": "transdoni la komunumon",
"transfer_site": "transdoni la retejon",
- "powered_by": "Konstruis per",
- "landing_0": "Lemmy estas <1>ligila agregatilo</1> / Reddit anstataŭo ke intenciĝas funkci en la <2>federacio-universo</2>.<3></3>ĝi estas mem-gastigebla, havas nuna-ĝisdatigajn komentarojn, kaj estas malgrandega (<4>~80kB</4>). Federacio en la ActivityPub-an reton estas planizita. <5></5>Estas <6>fruega beta versio</6>, kaj multaj trajtoj estas nune difektaj aŭ mankaj. <7></7>Sugestias novajn trajtojn aŭ raportas cimojn <8>ĉi tie.</8><9></9>Faris per <10>Rust</10>, <11>Actix</11>, <12>Inferno</12>, <13>Typescript</13>.",
- "not_logged_in": "Ne estas ensalutinta.",
+ "powered_by": "Konstruita per",
+ "landing": "Lemmy estas <1>amasigilo de ligiloj</1> / alternativo de Reddit, intencita funkcii en la <2>federuniverso</2>.<3></3>ĝi estas mem-gastigebla, havas tuj-ĝisdatigojn de komentaroj, kaj estas malgrandega (<4>~80kB</4>). Federado en la reto de ActivityPub estas planita. <5></5>Ĉi tio estas <6>tre frua beta-versio</6>, kaj multaj funkcioj estas nune difektaj aŭ mankaj. <7></7>Proponu novajn funkciojn aŭ raportu erarojn <8>ĉi tie.</8><9></9>Konstruita per <10>Rust</10>, <11>Actix</11>, <12>Inferno</12>, <13>Typescript</13>.",
+ "not_logged_in": "Nesalutinta.",
"community_ban": "Vi estas forbarita de la komunumo.",
"site_ban": "Vi estas forbarita de la retejo",
"couldnt_create_comment": "Ne povis krei la komenton.",
"couldnt_like_comment": "Ne povis ŝati la komenton.",
- "couldnt_update_comment": "Ne povis ĝisdatigi komenton.",
- "couldnt_save_comment": "Ne povis konservi komenton.",
+ "couldnt_update_comment": "Ne povis ĝisdatigi la komenton.",
+ "couldnt_save_comment": "Ne povis konservi la komenton.",
"no_comment_edit_allowed": "Ne rajtas redakti la komenton.",
- "no_post_edit_allowed": "Ne rajtas redakti la poŝton.",
+ "no_post_edit_allowed": "Ne rajtas redakti la afiŝon.",
"no_community_edit_allowed": "Ne rajtas redakti la komunumon.",
"couldnt_find_community": "Ne povis trovi la komunumon.",
"couldnt_update_community": "Ne povis ĝisdatigi la komunumon.",
"community_already_exists": "Komunumo jam ekzistas.",
"community_moderator_already_exists": "Komunuma moderanto jam ekzistas.",
- "community_follower_already_exists": "Komunuma sekvanto.",
- "community_user_already_banned": "Komunuma uzanto jam estas forbarita.",
- "couldnt_create_post": "Ne povis krei la poŝton.",
- "couldnt_like_post": "Ne povis ŝati la poŝton.",
- "couldnt_find_post": "Ne povis trovi la poŝton.",
- "couldnt_get_posts": "Ne povis irpreni poŝtojn",
- "couldnt_update_post": "Ne povis ĝisdatigi la poŝton",
- "couldnt_save_post": "Ne povis konservi la poŝton.",
- "no_slurs": "Ne bigotaj vortoj.",
+ "community_follower_already_exists": "Abonanto de komunumo jam ekzistas.",
+ "community_user_already_banned": "Uzanto de komunumo jam estas forbarita.",
+ "couldnt_create_post": "Ne povis krei la afiŝon.",
+ "couldnt_like_post": "Ne povis ŝati la afiŝon.",
+ "couldnt_find_post": "Ne povis trovi la afiŝon.",
+ "couldnt_get_posts": "Ne povis akiri afiŝojn",
+ "couldnt_update_post": "Ne povis ĝisdatigi la afiŝon",
+ "couldnt_save_post": "Ne povis konservi la afiŝon.",
+ "no_slurs": "Neniuj fivortoj.",
"not_an_admin": "Ne estas administranto.",
"site_already_exists": "Retejo jam ekzistas.",
"couldnt_update_site": "Ne povis ĝisdatigi la retejon.",
- "couldnt_find_that_username_or_email": "Ne povis trovi tiun uzantnomon aŭ retadreson.",
+ "couldnt_find_that_username_or_email": "Ne povis trovi tiun uzantonomon aŭ retpoŝtadreson.",
"password_incorrect": "Pasvorto malĝustas.",
"passwords_dont_match": "Pasvortoj ne samas.",
"admin_already_created": "Pardonu, jam estas administranto.",
"user_already_exists": "Uzanto jam ekzistas.",
"couldnt_update_user": "Ne povis ĝisdatigi la uzanton.",
- "system_err_login": "Sistema eraro. Provu elsaluti kaj ensaluti.",
+ "system_err_login": "Sistema eraro. Provu adiaŭi kaj resaluti.",
"send_message": "Sendi mesaĝon",
"message": "Mesaĝo",
- "number_of_communities": "{{count}} Komunumo",
- "number_of_communities_plural": "{{count}} Komunumoj",
+ "number_of_communities": "{{count}} komunumo",
+ "number_of_communities_plural": "{{count}} komunumoj",
"more": "pli",
- "select_a_community": "Elekti komunumon"
+ "select_a_community": "Elekti komunumon",
+ "click_to_delete_picture": "Klaku por forigi bildon.",
+ "cross_posted_to": "transafiŝita al: ",
+ "invalid_community_name": "Nevalida nomo.",
+ "picture_deleted": "Bildo foriĝis.",
+ "create_private_message": "Krei privatan mesaĝon",
+ "send_secure_message": "Sendi sekuran mesaĝon",
+ "avatar": "Profilbildo",
+ "show_avatars": "Montri profilbildojn",
+ "formatting_help": "helpo pri formatado",
+ "sorting_help": "helpo pri ordigado",
+ "sticky": "pingli",
+ "unsticky": "malpingli",
+ "stickied": "pinglita",
+ "delete_account": "Forigi konton",
+ "delete_account_confirm": "Averto: ĉi tio por ĉiam forigos ĉiujn viajn datumojn. Enigu pasvorton por konfirmi.",
+ "preview": "Antaŭrigardo",
+ "upload_image": "alŝuti bildon",
+ "upload_avatar": "Alŝuti profilbildon",
+ "banned": "forbarita",
+ "creator": "kreinto",
+ "number_online": "{{count}} uzanto enreta",
+ "number_online_plural": "{{count}} uzantoj enretaj",
+ "old": "Malnovaj",
+ "docs": "Dokumentaĵo",
+ "view_source": "montri fonton",
+ "show_context": "Montri kuntekston",
+ "admin_settings": "Agordoj de agministranto",
+ "site_config": "Agordaro de retejo",
+ "banned_users": "Forbaritaj uzantoj",
+ "donate": "Donaci",
+ "archive_link": "arĥiva ligilo",
+ "replies": "Respondoj",
+ "mentions": "Mencioj",
+ "message_sent": "Mesaĝo sendiĝis",
+ "post_title_too_long": "Titolo de afiŝo estas tro longa.",
+ "messages": "Mesaĝoj",
+ "old_password": "Malnova pasvorto",
+ "forgot_password": "forgesita pasvorto",
+ "reset_password_mail_sent": "Retletero sendiĝis por restarigi vian pasvorton.",
+ "password_change": "Ŝanĝo de pasvorto",
+ "new_password": "Nova pasvorto",
+ "no_email_setup": "Ĉi tiu servilo ne agordis ĝuste retpoŝton.",
+ "matrix_user_id": "Uzanto de Matrix",
+ "private_message_disclaimer": "Averto: Privataj mesaĝoj en Lemmy ne estas sekuraj. Bonvolu krei konton je <1>Riot.im</1> por sekura mesaĝado.",
+ "send_notifications_to_email": "Sendi sciigojn al retpoŝtadreso",
+ "language": "Lingvo",
+ "browser_default": "Laŭ foliumilo",
+ "downvotes_disabled": "Kontraŭvoĉoj malŝaltiĝis",
+ "enable_downvotes": "Ŝalti kontraŭvoĉojn",
+ "open_registration": "Ebligi registradon",
+ "registration_closed": "Registrado malebliĝis",
+ "enable_nsfw": "Ŝalti konsternajn",
+ "support_on_open_collective": "Subteni per OpenCollective",
+ "theme": "Haŭto",
+ "support_on_liberapay": "Subteni per Liberapay",
+ "donate_to_lemmy": "Donaci al Lemmy",
+ "silver_sponsors": "Arĝentaj subtenantoj estas tiuj, kiuj donacis $40 al Lemmy.",
+ "are_you_sure": "ĉu vi certas?",
+ "yes": "jes",
+ "no": "ne",
+ "logged_in": "Salutinta.",
+ "site_saved": "Retejo konserviĝis.",
+ "couldnt_get_comments": "Ne povis akiri la komentojn.",
+ "email_already_exists": "Retpoŝtadreso jam ekzistas.",
+ "couldnt_create_private_message": "Ne povis krei privatan mesaĝon.",
+ "no_private_message_edit_allowed": "Ne rajtas redakti la privatan mesaĝon.",
+ "couldnt_update_private_message": "Ne povis ĝisdatigi la privatan mesaĝon.",
+ "time": "Tempo",
+ "action": "Ago",
+ "emoji_picker": "Elektilo de bildsignoj",
+ "block_leaving": "Ĉu vi certe volas foriri?",
+ "from": "de",
+ "invalid_username": "Nevalida uzantonomo.",
+ "upvote": "Porvoĉi",
+ "number_of_upvotes": "{{count}} porvoĉo",
+ "number_of_upvotes_plural": "{{count}} porvoĉoj",
+ "downvote": "Kontraŭvoĉi",
+ "number_of_downvotes": "{{count}} kontraŭvoĉo",
+ "number_of_downvotes_plural": "{{count}} kontraŭvoĉoj"
}
diff --git a/ui/translations/sq.json b/ui/translations/sq.json
index 0967ef42..0526fa26 100644
--- a/ui/translations/sq.json
+++ b/ui/translations/sq.json
@@ -1 +1,108 @@
-{}
+{
+ "remove_post": "Hiqe Postimin",
+ "no_posts": "Nuk ka Postime.",
+ "create_a_post": "Krijo një postim",
+ "create_post": "Krijo Postimin",
+ "posts": "Postime",
+ "related_posts": "Këto postime mund të jenë të lidhura",
+ "cross_posts": "Ky link është postuar edhe te:",
+ "cross_post": "shumë-postim",
+ "cross_posted_to": "shumë-postuar në: ",
+ "comments": "Komentet",
+ "remove_comment": "Fshije Komentin",
+ "communities": "Komunitetet",
+ "users": "Përdoruesit",
+ "create_a_community": "Krijo një komunitet",
+ "select_a_community": "Përzgjedh një komunitet",
+ "create_community": "Krijo komunitetin",
+ "remove_community": "Fshije Komunitetin",
+ "subscribed_to_communities": "I abonuar në",
+ "trending_communities": "Trendi",
+ "list_of_communities": "Lista e komuniteteve",
+ "community_reqs": "gërma të vogla, nënvizim, dhe pa hapësira.",
+ "invalid_community_name": "Emër invalid.",
+ "create_private_message": "Krijo Mesazh Privat",
+ "send_secure_message": "Dërgo Mesazh të Sigurtë",
+ "send_message": "Dërgo Mesazh",
+ "message": "Mesazh",
+ "edit": "redakto",
+ "reply": "përgjigju",
+ "more": "më shumë",
+ "cancel": "Anulo",
+ "preview": "Shiko paraprakisht",
+ "upload_image": "ngarko imazhin",
+ "upload_avatar": "Ngarko foton e profilit",
+ "show_avatars": "Shfaq fotot e profilit",
+ "show_context": "Shfaq kontekstin",
+ "formatting_help": "ndihmë me formatimin",
+ "sorting_help": "ndihmë me radhitjen",
+ "view_source": "shiko origjinën",
+ "unlock": "hape",
+ "lock": "mbyll",
+ "unsticky": "çngjit",
+ "link": "link",
+ "archive_link": "link i arkivuar",
+ "mod": "moderator",
+ "mods": "moderatorët",
+ "settings": "Konfigurimet",
+ "site_config": "Konfigurimet e faqes",
+ "remove_as_mod": "Largoje si moderator",
+ "appoint_as_mod": "emëro si moderator",
+ "modlog": "Ditari i moderimit",
+ "admin": "administrator",
+ "admins": "administratorët",
+ "appoint_as_admin": "emëro si administrator",
+ "remove": "fshije",
+ "removed": "është fshirë nga një moderator",
+ "locked": "mbyllur",
+ "stickied": "ngjitur",
+ "reason": "Arsye",
+ "mark_as_read": "shëno si të lexuar",
+ "mark_as_unread": "shëno si të palexuar",
+ "delete": "fshije",
+ "delete_account": "Fshije Account-in",
+ "click_to_delete_picture": "Shtyp për të fshirë imazhin.",
+ "picture_deleted": "Imazhi është fshirë.",
+ "restore": "rikthe",
+ "ban": "",
+ "ban_from_site": "",
+ "save": "ruaj",
+ "unsave": "anulo ruajtjen",
+ "create": "krijo",
+ "creator": "krijuesi",
+ "username": "Emri virtual",
+ "email_or_username": "Email-i ose Emri virtual",
+ "number_of_users": "{{count}} Përdorues",
+ "number_of_users_plural": "{{count}} Përdoruesa",
+ "number_of_subscribers": "{{count}} i abonuar",
+ "number_of_subscribers_plural": "{{count}} të abonuar",
+ "number_of_points": "{{count}} Pikë",
+ "number_of_points_plural": "{{count}} Pikë",
+ "number_online": "{{count}} Përdorues Online",
+ "number_online_plural": "{{count}} Përdoruesa Online",
+ "name": "Emri",
+ "title": "Titulli",
+ "category": "Kategoria",
+ "subscribers": "Të abonuarit",
+ "both": "Të dy",
+ "saved": "E ruajtur",
+ "subscribe": "Abonohu",
+ "subscribed": "Jeni abonuar",
+ "next": "Tjetra",
+ "post": "postim",
+ "number_of_posts": "{{count}} Postim",
+ "number_of_posts_plural": "{{count}} Postime",
+ "number_of_comments": "{{count}} Koment",
+ "number_of_comments_plural": "{{count}} Komente",
+ "number_of_communities": "{{count}} Komunitet",
+ "number_of_communities_plural": "{{count}} Komunitete",
+ "avatar": "Fotoja e profilit",
+ "sticky": "ngjite",
+ "moderates": "Moderon",
+ "admin_settings": "Konfigurimet administrative",
+ "remove_as_admin": "largoje si administrator",
+ "deleted": "është fshirë nga krijuesi",
+ "delete_account_confirm": "Paralajmërim: kjo do të fshij të gjitha të dhënat e juaja përgjithmonë. Shtyp fjalëkalimin tënd për ta konfirmuar.",
+ "unsubscribe": "Çabonohu",
+ "prev": "E mëparshme"
+}