From b0b50098a4079daa0622a1ff9b4c52774d1d1d9f Mon Sep 17 00:00:00 2001
From: Dessalines
Date: Tue, 4 Feb 2020 11:19:05 -0500
Subject: [PATCH 1/7] Websocket reconnect reload page data. Fixes #504
---
.gitignore | 1 +
ui/src/components/community.tsx | 2 ++
ui/src/components/inbox.tsx | 2 ++
ui/src/components/main.tsx | 2 ++
ui/src/components/navbar.tsx | 2 ++
ui/src/components/post.tsx | 4 ++++
ui/src/components/user.tsx | 2 ++
ui/src/interfaces.ts | 1 +
ui/src/services/WebSocketService.ts | 17 +++++++++++------
9 files changed, 27 insertions(+), 6 deletions(-)
diff --git a/.gitignore b/.gitignore
index 7fac3d5fe1f..90972df6a64 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
ansible/inventory
+ansible/inventory_dev
ansible/passwords/
docker/lemmy_mine.hjson
docker/dev/env_deploy.sh
diff --git a/ui/src/components/community.tsx b/ui/src/components/community.tsx
index 7e3e2cd7c86..0fa8f7b5304 100644
--- a/ui/src/components/community.tsx
+++ b/ui/src/components/community.tsx
@@ -254,6 +254,8 @@ export class Community extends Component {
toast(i18n.t(msg.error), 'danger');
this.context.router.history.push('/');
return;
+ } else if (msg.reconnect) {
+ this.fetchPosts();
} else if (res.op == UserOperation.GetCommunity) {
let data = res.data as GetCommunityResponse;
this.state.community = data.community;
diff --git a/ui/src/components/inbox.tsx b/ui/src/components/inbox.tsx
index 6f4d2377c4f..6849b37d25e 100644
--- a/ui/src/components/inbox.tsx
+++ b/ui/src/components/inbox.tsx
@@ -313,6 +313,8 @@ export class Inbox extends Component {
if (msg.error) {
toast(i18n.t(msg.error), 'danger');
return;
+ } else if (msg.reconnect) {
+ this.refetch();
} else if (res.op == UserOperation.GetReplies) {
let data = res.data as GetRepliesResponse;
this.state.replies = data.replies;
diff --git a/ui/src/components/main.tsx b/ui/src/components/main.tsx
index 6d3e18157ae..0970381b5ab 100644
--- a/ui/src/components/main.tsx
+++ b/ui/src/components/main.tsx
@@ -537,6 +537,8 @@ export class Main extends Component {
if (msg.error) {
toast(i18n.t(msg.error), 'danger');
return;
+ } else if (msg.reconnect) {
+ this.fetchPosts();
} else if (res.op == UserOperation.GetFollowedCommunities) {
let data = res.data as GetFollowedCommunitiesResponse;
this.state.subscribedCommunities = data.communities;
diff --git a/ui/src/components/navbar.tsx b/ui/src/components/navbar.tsx
index a916f69fc5f..c675cfe7b57 100644
--- a/ui/src/components/navbar.tsx
+++ b/ui/src/components/navbar.tsx
@@ -208,6 +208,8 @@ export class Navbar extends Component {
location.reload();
}
return;
+ } else if (msg.reconnect) {
+ this.fetchUnreads();
} else if (res.op == UserOperation.GetReplies) {
let data = res.data as GetRepliesResponse;
let unreadReplies = data.replies.filter(r => !r.read);
diff --git a/ui/src/components/post.tsx b/ui/src/components/post.tsx
index b0faf8506e1..b399d3b28c3 100644
--- a/ui/src/components/post.tsx
+++ b/ui/src/components/post.tsx
@@ -370,6 +370,10 @@ export class Post extends Component {
if (msg.error) {
toast(i18n.t(msg.error), 'danger');
return;
+ } else if (msg.reconnect) {
+ WebSocketService.Instance.getPost({
+ id: Number(this.props.match.params.id),
+ });
} else if (res.op == UserOperation.GetPost) {
let data = res.data as GetPostResponse;
this.state.post = data.post;
diff --git a/ui/src/components/user.tsx b/ui/src/components/user.tsx
index ebdf6d5b001..1c3c51d9389 100644
--- a/ui/src/components/user.tsx
+++ b/ui/src/components/user.tsx
@@ -991,6 +991,8 @@ export class User extends Component {
}
this.setState(this.state);
return;
+ } else if (msg.reconnect) {
+ this.refetch();
} else if (res.op == UserOperation.GetUserDetails) {
let data = res.data as UserDetailsResponse;
this.state.user = data.user;
diff --git a/ui/src/interfaces.ts b/ui/src/interfaces.ts
index 6c87d3e931e..02c108aa59e 100644
--- a/ui/src/interfaces.ts
+++ b/ui/src/interfaces.ts
@@ -854,4 +854,5 @@ export interface WebSocketJsonResponse {
op?: string;
data?: ResponseType;
error?: string;
+ reconnect?: boolean;
}
diff --git a/ui/src/services/WebSocketService.ts b/ui/src/services/WebSocketService.ts
index c5e45e791ae..6d951618a8a 100644
--- a/ui/src/services/WebSocketService.ts
+++ b/ui/src/services/WebSocketService.ts
@@ -40,6 +40,7 @@ import {
GetPrivateMessagesForm,
UserJoinForm,
MessageType,
+ WebSocketJsonResponse,
} from '../interfaces';
import { UserService } from './';
import { i18n } from '../i18next';
@@ -59,17 +60,21 @@ export class WebSocketService {
private constructor() {
this.ws = new ReconnectingWebSocket(wsUri);
- this.ws.onopen = () => {
- console.log(`Connected to ${wsUri}`);
- if (UserService.Instance.user) {
- this.userJoin();
- }
- };
this.subject = Observable.create((obs: any) => {
this.ws.onmessage = e => {
obs.next(JSON.parse(e.data));
};
+ this.ws.onopen = () => {
+ console.log(`Connected to ${wsUri}`);
+ if (UserService.Instance.user) {
+ this.userJoin();
+ }
+ let res: WebSocketJsonResponse = {
+ reconnect: true,
+ };
+ obs.next(res);
+ };
}).pipe(share());
}
From 52f54b92d85d8ab4c319ba63af13198de9c4edc5 Mon Sep 17 00:00:00 2001
From: Dessalines
Date: Tue, 4 Feb 2020 16:37:52 -0500
Subject: [PATCH 2/7] Forgot to add cross-posted to, to i18n.
---
README.md | 24 ++++++++++++------------
ui/src/components/post-listing.tsx | 4 +++-
ui/src/translations/en.ts | 1 +
3 files changed, 16 insertions(+), 13 deletions(-)
diff --git a/README.md b/README.md
index 194a4378e49..226f3c9f1c1 100644
--- a/README.md
+++ b/README.md
@@ -167,18 +167,18 @@ If you'd like to add translations, take a look at the [English translation file]
lang | done | missing
---- | ---- | -------
-ca | 99% | old,time,action
-de | 87% | create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,old,docs,message_sent,messages,old_password,matrix_user_id,private_message_disclaimer,send_notifications_to_email,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
-fa | 72% | cross_post,subscribed_to_communities,trending_communities,create_private_message,send_secure_message,send_message,message,mod,mods,moderates,remove_as_mod,appoint_as_mod,modlog,stickied,ban,ban_from_site,unban,unban_from_site,banned,number_of_subscribers,subscribers,both,saved,unsubscribe,subscribe,subscribed,old,api,docs,inbox,inbox_for,message_sent,notifications_error,messages,no_email_setup,matrix_user_id,private_message_disclaimer,url,body,copy_suggested_title,community,expand_here,subscribe_to_communities,theme,sponsor_message,general_sponsors,joined,by,to,from,landing_0,logged_in,community_moderator_already_exists,community_follower_already_exists,community_user_already_banned,no_slurs,admin_already_created,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
-eo | 75% | number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,theme,donate_to_lemmy,donate,from,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
-es | 100% |
-fi | 99% | old,time,action
-fr | 82% | create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
-it | 83% | create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
-nl | 99% | time,action
-ru | 71% | cross_posts,cross_post,number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,recent_comments,theme,donate_to_lemmy,donate,monero,by,to,from,transfer_community,transfer_site,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
-sv | 82% | create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
-zh | 69% | cross_posts,cross_post,users,number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,settings,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,recent_comments,nsfw,show_nsfw,theme,donate_to_lemmy,donate,monero,by,to,from,transfer_community,transfer_site,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+ca | 98% | cross_posted_to,old,time,action
+de | 86% | cross_posted_to,create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,old,docs,message_sent,messages,old_password,matrix_user_id,private_message_disclaimer,send_notifications_to_email,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+fa | 72% | cross_post,cross_posted_to,subscribed_to_communities,trending_communities,create_private_message,send_secure_message,send_message,message,mod,mods,moderates,remove_as_mod,appoint_as_mod,modlog,stickied,ban,ban_from_site,unban,unban_from_site,banned,number_of_subscribers,subscribers,both,saved,unsubscribe,subscribe,subscribed,old,api,docs,inbox,inbox_for,message_sent,notifications_error,messages,no_email_setup,matrix_user_id,private_message_disclaimer,url,body,copy_suggested_title,community,expand_here,subscribe_to_communities,theme,sponsor_message,general_sponsors,joined,by,to,from,landing_0,logged_in,community_moderator_already_exists,community_follower_already_exists,community_user_already_banned,no_slurs,admin_already_created,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+eo | 74% | cross_posted_to,number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,theme,donate_to_lemmy,donate,from,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+es | 100% | cross_posted_to
+fi | 98% | cross_posted_to,old,time,action
+fr | 82% | cross_posted_to,create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+it | 83% | cross_posted_to,create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+nl | 99% | cross_posted_to,time,action
+ru | 71% | cross_posts,cross_post,cross_posted_to,number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,recent_comments,theme,donate_to_lemmy,donate,monero,by,to,from,transfer_community,transfer_site,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+sv | 82% | cross_posted_to,create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+zh | 69% | cross_posts,cross_post,cross_posted_to,users,number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,settings,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,recent_comments,nsfw,show_nsfw,theme,donate_to_lemmy,donate,monero,by,to,from,transfer_community,transfer_site,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
If you'd like to update this report, run:
diff --git a/ui/src/components/post-listing.tsx b/ui/src/components/post-listing.tsx
index f05adf3945e..9b3141c42b6 100644
--- a/ui/src/components/post-listing.tsx
+++ b/ui/src/components/post-listing.tsx
@@ -332,7 +332,9 @@ export class PostListing extends Component {
{this.props.post.duplicates && (
<>
-
cross-posted to:
+
+ {i18n.t('cross_posted_to')}
+
{this.props.post.duplicates.map(post => (
{post.community_name}
diff --git a/ui/src/translations/en.ts b/ui/src/translations/en.ts
index 7afb99ef564..e103df7ec03 100644
--- a/ui/src/translations/en.ts
+++ b/ui/src/translations/en.ts
@@ -10,6 +10,7 @@ export const en = {
related_posts: 'These posts might be related',
cross_posts: 'This link has also been posted to:',
cross_post: 'cross-post',
+ cross_posted_to: 'cross-posted to: ',
comments: 'Comments',
number_of_comments: '{{count}} Comments',
remove_comment: 'Remove Comment',
From 420fb5a847cc549a46596407c32c9ad8d581b321 Mon Sep 17 00:00:00 2001
From: Dessalines
Date: Tue, 4 Feb 2020 19:48:11 -0500
Subject: [PATCH 3/7] Version v0.6.11
---
ansible/VERSION | 2 +-
docker/prod/docker-compose.yml | 2 +-
server/src/version.rs | 2 +-
ui/src/version.ts | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/ansible/VERSION b/ansible/VERSION
index f50dea7987f..882307ccd49 100644
--- a/ansible/VERSION
+++ b/ansible/VERSION
@@ -1 +1 @@
-v0.6.10
+v0.6.11
diff --git a/docker/prod/docker-compose.yml b/docker/prod/docker-compose.yml
index 65ed9a7cdb3..da78126c37b 100644
--- a/docker/prod/docker-compose.yml
+++ b/docker/prod/docker-compose.yml
@@ -11,7 +11,7 @@ services:
- lemmy_db:/var/lib/postgresql/data
restart: always
lemmy:
- image: dessalines/lemmy:v0.6.10
+ image: dessalines/lemmy:v0.6.11
ports:
- "127.0.0.1:8536:8536"
restart: always
diff --git a/server/src/version.rs b/server/src/version.rs
index 63579a4817d..28373cf577d 100644
--- a/server/src/version.rs
+++ b/server/src/version.rs
@@ -1 +1 @@
-pub const VERSION: &str = "v0.6.10";
+pub const VERSION: &str = "v0.6.11";
diff --git a/ui/src/version.ts b/ui/src/version.ts
index 903ac77a76f..f851d718853 100644
--- a/ui/src/version.ts
+++ b/ui/src/version.ts
@@ -1 +1 @@
-export const version: string = 'v0.6.10';
+export const version: string = 'v0.6.11';
From 74e7870cde26a283bd6752ba7d9c9dc1f1622292 Mon Sep 17 00:00:00 2001
From: olivia maia
Date: Wed, 5 Feb 2020 14:16:01 -0300
Subject: [PATCH 4/7] added Portuguese translation
---
ui/src/translations/pt.ts | 237 ++++++++++++++++++++++++++++++++++++++
1 file changed, 237 insertions(+)
create mode 100644 ui/src/translations/pt.ts
diff --git a/ui/src/translations/pt.ts b/ui/src/translations/pt.ts
new file mode 100644
index 00000000000..a455d6c2193
--- /dev/null
+++ b/ui/src/translations/pt.ts
@@ -0,0 +1,237 @@
+export const pt = {
+ translation: {
+ post: 'publicação',
+ remove_post: 'Apagar publicação',
+ no_posts: 'Sem publicações.',
+ create_a_post: 'Criar uma publicação',
+ create_post: 'Criar publicação',
+ number_of_posts: '{{count}} publicações',
+ posts: 'Publicações',
+ related_posts: 'Essas publicações podem estar relacionadas',
+ cross_posts: 'Esse link também foi publicado em:',
+ cross_post: 're-publicar',
+ cross_posted_to: 'Publicado também em: ',
+ comments: 'Comentários',
+ number_of_comments: '{{count}} comentários',
+ remove_comment: 'Apagar comentário',
+ communities: 'Comunidades',
+ users: 'Usuários',
+ create_a_community: 'Criar uma comunidade',
+ create_community: 'Criar comunidade',
+ remove_community: 'Apagar comunidade',
+ subscribed_to_communities: 'Inscrito em <1>comunidades1>',
+ trending_communities: '<1>Comunidades1> em tendência',
+ list_of_communities: 'Lista de comunidades',
+ number_of_communities: '{{count}} comunidades',
+ community_reqs: 'minúsculas, sublinhados e sem espaços.',
+ create_private_message: 'Criar mensagem privada',
+ send_secure_message: 'Enviar mensagem segura',
+ send_message: 'Enviar mensagem',
+ message: 'Mensagem',
+ edit: 'editar',
+ reply: 'responder',
+ cancel: 'Cancelar',
+ preview: 'Pré-visualização',
+ upload_image: 'fazer upload de imagem',
+ avatar: 'Avatar',
+ upload_avatar: 'Fazer upload de avatar',
+ show_avatars: 'Mostrar Avatars',
+ formatting_help: 'ajuda de formatação',
+ view_source: 'ver fonte',
+ unlock: 'desbloquear',
+ lock: 'bloquear',
+ sticky: 'fixar',
+ unsticky: 'desafixar',
+ link: 'link',
+ archive_link: 'arquivar link',
+ mod: 'moderador',
+ mods: 'moderadores',
+ moderates: 'Modera',
+ settings: 'Configurações',
+ remove_as_mod: 'remover como moderador',
+ appoint_as_mod: 'designar como moderador',
+ modlog: 'Registro de moderação',
+ admin: 'administrador',
+ admins: 'administradores',
+ remove_as_admin: 'remover como administrador',
+ appoint_as_admin: 'designar como administrador',
+ remove: 'remover',
+ removed: 'removido',
+ locked: 'trancado',
+ stickied: 'fixado',
+ reason: 'Motivo',
+ mark_as_read: 'marcar como lido',
+ mark_as_unread: 'marcar como não lido',
+ delete: 'apagar',
+ deleted: 'apagado',
+ delete_account: 'Apagar conta',
+ delete_account_confirm:
+ 'Aviso: isso vai apagar seus dados de forma permanente. Escreva sua senha para confirmar.',
+ restore: 'restaurar',
+ ban: 'banir',
+ ban_from_site: 'banido do site',
+ unban: 'readmitido',
+ unban_from_site: 'readmitido ao site',
+ banned: 'banido',
+ save: 'guardar',
+ unsave: 'descartar',
+ create: 'criar',
+ creator: 'criador',
+ username: 'nome de usuário',
+ email_or_username: 'E-mail ou nome de usuário',
+ number_of_users: '{{count}} usuários',
+ number_of_subscribers: '{{count}} inscritos',
+ number_of_points: '{{count}} pontos',
+ number_online: '{{count}} usuários online',
+ name: 'Nome',
+ title: 'Título',
+ category: 'Categoria',
+ subscribers: 'Inscritos',
+ both: 'Ambos',
+ saved: 'Guardado',
+ unsubscribe: 'Cancelar inscrição',
+ subscribe: 'Inscrever-se',
+ subscribed: 'Inscrito',
+ prev: 'Anterior',
+ next: 'Próximo',
+ sidebar: 'Barra lateral',
+ sort_type: 'Ordenação',
+ hot: 'Popular',
+ new: 'Novo',
+ old: 'Velho',
+ top_day: 'Top do dia',
+ week: 'Semana',
+ month: 'Mês',
+ year: 'Ano',
+ all: 'Tudo',
+ top: 'Top',
+ api: 'API',
+ docs: 'Docs',
+ inbox: 'Caixa de entrada',
+ inbox_for: 'Caixa de entrada de <1>{{user}}1>',
+ mark_all_as_read: 'marcar tudo como lido',
+ type: 'Tipo',
+ unread: 'Não lido',
+ replies: 'Respostas',
+ mentions: 'Menções',
+ reply_sent: 'Resposta enviada',
+ message_sent: 'Mensagem enviada',
+ search: 'Busca',
+ overview: 'Visão geral',
+ view: 'Visualização',
+ logout: 'Sair',
+ login_sign_up: 'Entrar / Inscrever-se',
+ login: 'Entrar',
+ sign_up: 'Inscrever-se',
+ notifications_error:
+ 'Seu navegador não oferece notificações para a área de trabalho. Tente o Firefox ou o Chrome.',
+ unread_messages: 'Mensagens não lidas',
+ messages: 'Mensagens',
+ password: 'Senha',
+ verify_password: 'Verifique a senha',
+ old_password: 'Senha antiga',
+ forgot_password: 'esqueci a senha',
+ reset_password_mail_sent: 'Enviado um e-mail para a alteração da senha.',
+ password_change: 'Alteração de senha',
+ new_password: 'Nova senha',
+ no_email_setup: "Esse servidor não configurou corretamente o e-mail.",
+ email: 'E-mail',
+ matrix_user_id: 'Usuário Matrix',
+ private_message_disclaimer:
+ 'Aviso: mensagens privadas no Lemmy não são seguras. Crie uma conta em <1>Riot.im1> para troca segura de mensagens.',
+ send_notifications_to_email: 'Enviar notificações para o e-mail',
+ optional: 'Opcional',
+ expires: 'Expira',
+ language: 'Idioma',
+ browser_default: 'Padrão do navegador',
+ downvotes_disabled: 'Votos negativos desativados',
+ enable_downvotes: 'Permitir votos negativos',
+ open_registration: 'Permitir registro',
+ registration_closed: 'Registros desativados',
+ enable_nsfw: 'Permitir NSFW',
+ url: 'URL',
+ body: 'Conteúdo',
+ copy_suggested_title: 'copiar título sugerido: {{title}}',
+ community: 'Comunidade',
+ expand_here: 'Expandir aqui',
+ subscribe_to_communities: 'Inscreva-se em algumas <1>comunidades1>.',
+ chat: 'Chat',
+ recent_comments: 'Últimos comentários',
+ no_results: 'Nenhum resultado.',
+ setup: 'Instalação',
+ lemmy_instance_setup: 'Criação de instância Lemmy',
+ setup_admin: 'Configurar administrador do site',
+ your_site: 'seu site',
+ modified: 'modificado',
+ nsfw: 'NSFW',
+ show_nsfw: 'Mostrar conteúdo NSFW',
+ theme: 'Tema',
+ sponsors: 'Patrocinadores',
+ sponsors_of_lemmy: 'Patrocinadores do Lemmy',
+ sponsor_message:
+ 'Lemmy é um programa livre e de código aberto, o que significa que não haverá publicidade, monetização ou capital de risco, jamais. Suas doações apoiam de forma direta o desenvolvimento em tempo integral do projeto. Muitos agradecimentos às sequintes pessoas:',
+ support_on_patreon: 'Colabore no Patreon',
+ donate_to_lemmy: 'Faça uma doação ao Lemmy',
+ donate: 'Doar',
+ general_sponsors:
+ 'Patrocinadores são aqueles que doaram entre $10 e $39 ao Lemmy.',
+ crypto: 'Crypto',
+ bitcoin: 'Bitcoin',
+ ethereum: 'Ethereum',
+ monero: 'Monero',
+ code: 'Code',
+ joined: 'Entrou',
+ by: 'por',
+ to: 'para',
+ from: 'de',
+ transfer_community: 'transferir comunidade',
+ transfer_site: 'transferir site',
+ are_you_sure: 'tem certeza?',
+ yes: 'sim',
+ no: 'não',
+ powered_by: 'Powered by',
+ landing_0:
+ "Lemmy é um <1>agregador de links1> / alternativa ao reddit, com a intenção de funcionar junto ao <2>fediverso2>.<3>3>Pode ser hospedado em servidor próprio, tem atualização de comentários em tempo real e é minúsculo (<4>~80kB4>). A federação com a rede ActivityPub está no roteiro do projeto. <5>5>Esta é uma <6>versão beta bastante antecipada6>, e muitas funcionalidades ainda estão quebradas ou ausentes. <7>7>Sugira novas funcionalidades ou reporte erros <8>aqui.8><9>9>Feito com <10>Rust10>, <11>Actix11>, <12>Inferno12>, <13>Typescript13>.",
+ not_logged_in: 'Não autenticado.',
+ logged_in: 'Autenticado.',
+ community_ban: 'Você foi banido desta comunidade.',
+ site_ban: 'Você foi banido do site',
+ couldnt_create_comment: "Não foi possível criar o comentário.",
+ couldnt_like_comment: "Não foi possível curtir o comentário.",
+ couldnt_update_comment: "Não foi possível atualizar o comentário.",
+ couldnt_save_comment: "Não foi possível guardar o comentário.",
+ no_comment_edit_allowed: 'Sem permissão para editar de comentário.',
+ no_post_edit_allowed: 'Sem permissão para editar publicação.',
+ no_community_edit_allowed: 'Sem permissão para editar comunidade.',
+ couldnt_find_community: "Não foi possível encontrar a comunidade.",
+ couldnt_update_community: "Não foi possível atualizar a comunidade.",
+ community_already_exists: 'Esta comunidade já existe.',
+ community_moderator_already_exists: 'Este moderador da comunidade já existe.',
+ community_follower_already_exists: 'Este seguidor da comunidade já existe.',
+ community_user_already_banned: 'Este usuário da comunidade já foi banido.',
+ couldnt_create_post: "Não foi possível criar a publicação.",
+ couldnt_like_post: "Não foi possível curtir a publicação.",
+ couldnt_find_post: "Não foi possível encontrar a publicação.",
+ couldnt_get_posts: "Não foi possível obter as publicações",
+ couldnt_update_post: "Não foi possível atualizar a publicação",
+ couldnt_save_post: "Não foi possível guardar a publicação.",
+ no_slurs: 'Sem insultos.',
+ not_an_admin: 'Não é administrador.',
+ site_already_exists: 'O site já existe.',
+ couldnt_update_site: "Não foi possível atualizar o site.",
+ couldnt_find_that_username_or_email:
+ "Não foi possível encontrar esse usuário ou e-mail.",
+ password_incorrect: 'Senha incorreta.',
+ passwords_dont_match: 'As senhas não são iguais.',
+ admin_already_created: "Desculpe, já há um administrador.",
+ user_already_exists: 'Este usuário já existe.',
+ email_already_exists: 'Este e-mail já existe.',
+ couldnt_update_user: "Não foi possível atualizar o usuário.",
+ system_err_login: 'Erro no sistema. Tente sair e autenticar-se outra vez.',
+ couldnt_create_private_message: "Não foi possível criar mensagem privada.",
+ no_private_message_edit_allowed: 'Sem permissão para editar mensagem privada.',
+ couldnt_update_private_message: "Não foi possível atualizar a mensagem privada.",
+ time: 'Tempo',
+ action: 'Ação',
+ },
+};
\ No newline at end of file
From 02511eefb9cfb617926a95cc8901013bf2afcb71 Mon Sep 17 00:00:00 2001
From: Dessalines
Date: Wed, 5 Feb 2020 12:56:01 -0500
Subject: [PATCH 5/7] Fix i18n issue with no communities.
---
ui/src/components/post-listings.tsx | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/ui/src/components/post-listings.tsx b/ui/src/components/post-listings.tsx
index 65db3727cce..005c4fe03ce 100644
--- a/ui/src/components/post-listings.tsx
+++ b/ui/src/components/post-listings.tsx
@@ -3,6 +3,7 @@ import { Link } from 'inferno-router';
import { Post } from '../interfaces';
import { PostListing } from './post-listing';
import { i18n } from '../i18next';
+import { T } from 'inferno-i18next';
interface PostListingsProps {
posts: Array;
@@ -36,11 +37,9 @@ export class PostListings extends Component {
<>
{i18n.t('no_posts')}
{this.props.showCommunity !== undefined && (
-
-
- {i18n.t('subscribe_to_communities')}
-
-
+
+ ##
+
)}
>
)}
From 5f93598bf1a1edf0a25c61ef8e92ecfa79b377b8 Mon Sep 17 00:00:00 2001
From: Dessalines
Date: Wed, 5 Feb 2020 13:12:13 -0500
Subject: [PATCH 6/7] Adding language and etc for pt-br.
---
README.md | 3 +-
ui/src/i18next.ts | 2 +
ui/src/translations/pt.ts | 237 ----------------------------------
ui/src/translations/pt_br.ts | 240 +++++++++++++++++++++++++++++++++++
ui/src/utils.ts | 4 +
ui/translation_report.ts | 2 +
6 files changed, 250 insertions(+), 238 deletions(-)
delete mode 100644 ui/src/translations/pt.ts
create mode 100644 ui/src/translations/pt_br.ts
diff --git a/README.md b/README.md
index 226f3c9f1c1..cef3681d670 100644
--- a/README.md
+++ b/README.md
@@ -161,7 +161,7 @@ Lemmy is free, open-source software, meaning no advertising, monetizing, or vent
If you'd like to add translations, take a look at the [English translation file](ui/src/translations/en.ts).
-- Languages supported: Catalan, (`ca`), Farsi (`fa`), English (`en`), Chinese (`zh`), Dutch (`nl`), Esperanto (`eo`), Finnish (`fi`), French (`fr`), Spanish (`es`), Swedish (`sv`), German (`de`), Russian (`ru`), Italian (`it`).
+- Languages supported: Brazilian Portuguese (`pt-br`), Catalan, (`ca`), Farsi (`fa`), English (`en`), Chinese (`zh`), Dutch (`nl`), Esperanto (`eo`), Finnish (`fi`), French (`fr`), Spanish (`es`), Swedish (`sv`), German (`de`), Russian (`ru`), Italian (`it`).
@@ -176,6 +176,7 @@ fi | 98% | cross_posted_to,old,time,action
fr | 82% | cross_posted_to,create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
it | 83% | cross_posted_to,create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
nl | 99% | cross_posted_to,time,action
+pt-br | 100% |
ru | 71% | cross_posts,cross_post,cross_posted_to,number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,recent_comments,theme,donate_to_lemmy,donate,monero,by,to,from,transfer_community,transfer_site,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
sv | 82% | cross_posted_to,create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
zh | 69% | cross_posts,cross_post,cross_posted_to,users,number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,settings,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,recent_comments,nsfw,show_nsfw,theme,donate_to_lemmy,donate,monero,by,to,from,transfer_community,transfer_site,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
diff --git a/ui/src/i18next.ts b/ui/src/i18next.ts
index 0d3ab177a5b..4311b09f923 100644
--- a/ui/src/i18next.ts
+++ b/ui/src/i18next.ts
@@ -13,6 +13,7 @@ import { it } from './translations/it';
import { fi } from './translations/fi';
import { ca } from './translations/ca';
import { fa } from './translations/fa';
+import { pt_BR } from './translations/pt_br';
// https://github.com/nimbusec-oss/inferno-i18next/blob/master/tests/T.test.js#L66
const resources = {
@@ -29,6 +30,7 @@ const resources = {
fi,
ca,
fa,
+ pt_BR,
};
function format(value: any, format: any, lng: any): any {
diff --git a/ui/src/translations/pt.ts b/ui/src/translations/pt.ts
deleted file mode 100644
index a455d6c2193..00000000000
--- a/ui/src/translations/pt.ts
+++ /dev/null
@@ -1,237 +0,0 @@
-export const pt = {
- translation: {
- post: 'publicação',
- remove_post: 'Apagar publicação',
- no_posts: 'Sem publicações.',
- create_a_post: 'Criar uma publicação',
- create_post: 'Criar publicação',
- number_of_posts: '{{count}} publicações',
- posts: 'Publicações',
- related_posts: 'Essas publicações podem estar relacionadas',
- cross_posts: 'Esse link também foi publicado em:',
- cross_post: 're-publicar',
- cross_posted_to: 'Publicado também em: ',
- comments: 'Comentários',
- number_of_comments: '{{count}} comentários',
- remove_comment: 'Apagar comentário',
- communities: 'Comunidades',
- users: 'Usuários',
- create_a_community: 'Criar uma comunidade',
- create_community: 'Criar comunidade',
- remove_community: 'Apagar comunidade',
- subscribed_to_communities: 'Inscrito em <1>comunidades1>',
- trending_communities: '<1>Comunidades1> em tendência',
- list_of_communities: 'Lista de comunidades',
- number_of_communities: '{{count}} comunidades',
- community_reqs: 'minúsculas, sublinhados e sem espaços.',
- create_private_message: 'Criar mensagem privada',
- send_secure_message: 'Enviar mensagem segura',
- send_message: 'Enviar mensagem',
- message: 'Mensagem',
- edit: 'editar',
- reply: 'responder',
- cancel: 'Cancelar',
- preview: 'Pré-visualização',
- upload_image: 'fazer upload de imagem',
- avatar: 'Avatar',
- upload_avatar: 'Fazer upload de avatar',
- show_avatars: 'Mostrar Avatars',
- formatting_help: 'ajuda de formatação',
- view_source: 'ver fonte',
- unlock: 'desbloquear',
- lock: 'bloquear',
- sticky: 'fixar',
- unsticky: 'desafixar',
- link: 'link',
- archive_link: 'arquivar link',
- mod: 'moderador',
- mods: 'moderadores',
- moderates: 'Modera',
- settings: 'Configurações',
- remove_as_mod: 'remover como moderador',
- appoint_as_mod: 'designar como moderador',
- modlog: 'Registro de moderação',
- admin: 'administrador',
- admins: 'administradores',
- remove_as_admin: 'remover como administrador',
- appoint_as_admin: 'designar como administrador',
- remove: 'remover',
- removed: 'removido',
- locked: 'trancado',
- stickied: 'fixado',
- reason: 'Motivo',
- mark_as_read: 'marcar como lido',
- mark_as_unread: 'marcar como não lido',
- delete: 'apagar',
- deleted: 'apagado',
- delete_account: 'Apagar conta',
- delete_account_confirm:
- 'Aviso: isso vai apagar seus dados de forma permanente. Escreva sua senha para confirmar.',
- restore: 'restaurar',
- ban: 'banir',
- ban_from_site: 'banido do site',
- unban: 'readmitido',
- unban_from_site: 'readmitido ao site',
- banned: 'banido',
- save: 'guardar',
- unsave: 'descartar',
- create: 'criar',
- creator: 'criador',
- username: 'nome de usuário',
- email_or_username: 'E-mail ou nome de usuário',
- number_of_users: '{{count}} usuários',
- number_of_subscribers: '{{count}} inscritos',
- number_of_points: '{{count}} pontos',
- number_online: '{{count}} usuários online',
- name: 'Nome',
- title: 'Título',
- category: 'Categoria',
- subscribers: 'Inscritos',
- both: 'Ambos',
- saved: 'Guardado',
- unsubscribe: 'Cancelar inscrição',
- subscribe: 'Inscrever-se',
- subscribed: 'Inscrito',
- prev: 'Anterior',
- next: 'Próximo',
- sidebar: 'Barra lateral',
- sort_type: 'Ordenação',
- hot: 'Popular',
- new: 'Novo',
- old: 'Velho',
- top_day: 'Top do dia',
- week: 'Semana',
- month: 'Mês',
- year: 'Ano',
- all: 'Tudo',
- top: 'Top',
- api: 'API',
- docs: 'Docs',
- inbox: 'Caixa de entrada',
- inbox_for: 'Caixa de entrada de <1>{{user}}1>',
- mark_all_as_read: 'marcar tudo como lido',
- type: 'Tipo',
- unread: 'Não lido',
- replies: 'Respostas',
- mentions: 'Menções',
- reply_sent: 'Resposta enviada',
- message_sent: 'Mensagem enviada',
- search: 'Busca',
- overview: 'Visão geral',
- view: 'Visualização',
- logout: 'Sair',
- login_sign_up: 'Entrar / Inscrever-se',
- login: 'Entrar',
- sign_up: 'Inscrever-se',
- notifications_error:
- 'Seu navegador não oferece notificações para a área de trabalho. Tente o Firefox ou o Chrome.',
- unread_messages: 'Mensagens não lidas',
- messages: 'Mensagens',
- password: 'Senha',
- verify_password: 'Verifique a senha',
- old_password: 'Senha antiga',
- forgot_password: 'esqueci a senha',
- reset_password_mail_sent: 'Enviado um e-mail para a alteração da senha.',
- password_change: 'Alteração de senha',
- new_password: 'Nova senha',
- no_email_setup: "Esse servidor não configurou corretamente o e-mail.",
- email: 'E-mail',
- matrix_user_id: 'Usuário Matrix',
- private_message_disclaimer:
- 'Aviso: mensagens privadas no Lemmy não são seguras. Crie uma conta em <1>Riot.im1> para troca segura de mensagens.',
- send_notifications_to_email: 'Enviar notificações para o e-mail',
- optional: 'Opcional',
- expires: 'Expira',
- language: 'Idioma',
- browser_default: 'Padrão do navegador',
- downvotes_disabled: 'Votos negativos desativados',
- enable_downvotes: 'Permitir votos negativos',
- open_registration: 'Permitir registro',
- registration_closed: 'Registros desativados',
- enable_nsfw: 'Permitir NSFW',
- url: 'URL',
- body: 'Conteúdo',
- copy_suggested_title: 'copiar título sugerido: {{title}}',
- community: 'Comunidade',
- expand_here: 'Expandir aqui',
- subscribe_to_communities: 'Inscreva-se em algumas <1>comunidades1>.',
- chat: 'Chat',
- recent_comments: 'Últimos comentários',
- no_results: 'Nenhum resultado.',
- setup: 'Instalação',
- lemmy_instance_setup: 'Criação de instância Lemmy',
- setup_admin: 'Configurar administrador do site',
- your_site: 'seu site',
- modified: 'modificado',
- nsfw: 'NSFW',
- show_nsfw: 'Mostrar conteúdo NSFW',
- theme: 'Tema',
- sponsors: 'Patrocinadores',
- sponsors_of_lemmy: 'Patrocinadores do Lemmy',
- sponsor_message:
- 'Lemmy é um programa livre e de código aberto, o que significa que não haverá publicidade, monetização ou capital de risco, jamais. Suas doações apoiam de forma direta o desenvolvimento em tempo integral do projeto. Muitos agradecimentos às sequintes pessoas:',
- support_on_patreon: 'Colabore no Patreon',
- donate_to_lemmy: 'Faça uma doação ao Lemmy',
- donate: 'Doar',
- general_sponsors:
- 'Patrocinadores são aqueles que doaram entre $10 e $39 ao Lemmy.',
- crypto: 'Crypto',
- bitcoin: 'Bitcoin',
- ethereum: 'Ethereum',
- monero: 'Monero',
- code: 'Code',
- joined: 'Entrou',
- by: 'por',
- to: 'para',
- from: 'de',
- transfer_community: 'transferir comunidade',
- transfer_site: 'transferir site',
- are_you_sure: 'tem certeza?',
- yes: 'sim',
- no: 'não',
- powered_by: 'Powered by',
- landing_0:
- "Lemmy é um <1>agregador de links1> / alternativa ao reddit, com a intenção de funcionar junto ao <2>fediverso2>.<3>3>Pode ser hospedado em servidor próprio, tem atualização de comentários em tempo real e é minúsculo (<4>~80kB4>). A federação com a rede ActivityPub está no roteiro do projeto. <5>5>Esta é uma <6>versão beta bastante antecipada6>, e muitas funcionalidades ainda estão quebradas ou ausentes. <7>7>Sugira novas funcionalidades ou reporte erros <8>aqui.8><9>9>Feito com <10>Rust10>, <11>Actix11>, <12>Inferno12>, <13>Typescript13>.",
- not_logged_in: 'Não autenticado.',
- logged_in: 'Autenticado.',
- community_ban: 'Você foi banido desta comunidade.',
- site_ban: 'Você foi banido do site',
- couldnt_create_comment: "Não foi possível criar o comentário.",
- couldnt_like_comment: "Não foi possível curtir o comentário.",
- couldnt_update_comment: "Não foi possível atualizar o comentário.",
- couldnt_save_comment: "Não foi possível guardar o comentário.",
- no_comment_edit_allowed: 'Sem permissão para editar de comentário.',
- no_post_edit_allowed: 'Sem permissão para editar publicação.',
- no_community_edit_allowed: 'Sem permissão para editar comunidade.',
- couldnt_find_community: "Não foi possível encontrar a comunidade.",
- couldnt_update_community: "Não foi possível atualizar a comunidade.",
- community_already_exists: 'Esta comunidade já existe.',
- community_moderator_already_exists: 'Este moderador da comunidade já existe.',
- community_follower_already_exists: 'Este seguidor da comunidade já existe.',
- community_user_already_banned: 'Este usuário da comunidade já foi banido.',
- couldnt_create_post: "Não foi possível criar a publicação.",
- couldnt_like_post: "Não foi possível curtir a publicação.",
- couldnt_find_post: "Não foi possível encontrar a publicação.",
- couldnt_get_posts: "Não foi possível obter as publicações",
- couldnt_update_post: "Não foi possível atualizar a publicação",
- couldnt_save_post: "Não foi possível guardar a publicação.",
- no_slurs: 'Sem insultos.',
- not_an_admin: 'Não é administrador.',
- site_already_exists: 'O site já existe.',
- couldnt_update_site: "Não foi possível atualizar o site.",
- couldnt_find_that_username_or_email:
- "Não foi possível encontrar esse usuário ou e-mail.",
- password_incorrect: 'Senha incorreta.',
- passwords_dont_match: 'As senhas não são iguais.',
- admin_already_created: "Desculpe, já há um administrador.",
- user_already_exists: 'Este usuário já existe.',
- email_already_exists: 'Este e-mail já existe.',
- couldnt_update_user: "Não foi possível atualizar o usuário.",
- system_err_login: 'Erro no sistema. Tente sair e autenticar-se outra vez.',
- couldnt_create_private_message: "Não foi possível criar mensagem privada.",
- no_private_message_edit_allowed: 'Sem permissão para editar mensagem privada.',
- couldnt_update_private_message: "Não foi possível atualizar a mensagem privada.",
- time: 'Tempo',
- action: 'Ação',
- },
-};
\ No newline at end of file
diff --git a/ui/src/translations/pt_br.ts b/ui/src/translations/pt_br.ts
new file mode 100644
index 00000000000..3f1c21fdd0c
--- /dev/null
+++ b/ui/src/translations/pt_br.ts
@@ -0,0 +1,240 @@
+export const pt_BR = {
+ translation: {
+ post: 'publicação',
+ remove_post: 'Apagar publicação',
+ no_posts: 'Sem publicações.',
+ create_a_post: 'Criar uma publicação',
+ create_post: 'Criar publicação',
+ number_of_posts: '{{count}} publicações',
+ posts: 'Publicações',
+ related_posts: 'Essas publicações podem estar relacionadas',
+ cross_posts: 'Esse link também foi publicado em:',
+ cross_post: 're-publicar',
+ cross_posted_to: 'Publicado também em: ',
+ comments: 'Comentários',
+ number_of_comments: '{{count}} comentários',
+ remove_comment: 'Apagar comentário',
+ communities: 'Comunidades',
+ users: 'Usuários',
+ create_a_community: 'Criar uma comunidade',
+ create_community: 'Criar comunidade',
+ remove_community: 'Apagar comunidade',
+ subscribed_to_communities: 'Inscrito em <1>comunidades1>',
+ trending_communities: '<1>Comunidades1> em tendência',
+ list_of_communities: 'Lista de comunidades',
+ number_of_communities: '{{count}} comunidades',
+ community_reqs: 'minúsculas, sublinhados e sem espaços.',
+ create_private_message: 'Criar mensagem privada',
+ send_secure_message: 'Enviar mensagem segura',
+ send_message: 'Enviar mensagem',
+ message: 'Mensagem',
+ edit: 'editar',
+ reply: 'responder',
+ cancel: 'Cancelar',
+ preview: 'Pré-visualização',
+ upload_image: 'fazer upload de imagem',
+ avatar: 'Avatar',
+ upload_avatar: 'Fazer upload de avatar',
+ show_avatars: 'Mostrar Avatars',
+ formatting_help: 'ajuda de formatação',
+ view_source: 'ver fonte',
+ unlock: 'desbloquear',
+ lock: 'bloquear',
+ sticky: 'fixar',
+ unsticky: 'desafixar',
+ link: 'link',
+ archive_link: 'arquivar link',
+ mod: 'moderador',
+ mods: 'moderadores',
+ moderates: 'Modera',
+ settings: 'Configurações',
+ remove_as_mod: 'remover como moderador',
+ appoint_as_mod: 'designar como moderador',
+ modlog: 'Registro de moderação',
+ admin: 'administrador',
+ admins: 'administradores',
+ remove_as_admin: 'remover como administrador',
+ appoint_as_admin: 'designar como administrador',
+ remove: 'remover',
+ removed: 'removido',
+ locked: 'trancado',
+ stickied: 'fixado',
+ reason: 'Motivo',
+ mark_as_read: 'marcar como lido',
+ mark_as_unread: 'marcar como não lido',
+ delete: 'apagar',
+ deleted: 'apagado',
+ delete_account: 'Apagar conta',
+ delete_account_confirm:
+ 'Aviso: isso vai apagar seus dados de forma permanente. Escreva sua senha para confirmar.',
+ restore: 'restaurar',
+ ban: 'banir',
+ ban_from_site: 'banido do site',
+ unban: 'readmitido',
+ unban_from_site: 'readmitido ao site',
+ banned: 'banido',
+ save: 'guardar',
+ unsave: 'descartar',
+ create: 'criar',
+ creator: 'criador',
+ username: 'nome de usuário',
+ email_or_username: 'E-mail ou nome de usuário',
+ number_of_users: '{{count}} usuários',
+ number_of_subscribers: '{{count}} inscritos',
+ number_of_points: '{{count}} pontos',
+ number_online: '{{count}} usuários online',
+ name: 'Nome',
+ title: 'Título',
+ category: 'Categoria',
+ subscribers: 'Inscritos',
+ both: 'Ambos',
+ saved: 'Guardado',
+ unsubscribe: 'Cancelar inscrição',
+ subscribe: 'Inscrever-se',
+ subscribed: 'Inscrito',
+ prev: 'Anterior',
+ next: 'Próximo',
+ sidebar: 'Barra lateral',
+ sort_type: 'Ordenação',
+ hot: 'Popular',
+ new: 'Novo',
+ old: 'Velho',
+ top_day: 'Top do dia',
+ week: 'Semana',
+ month: 'Mês',
+ year: 'Ano',
+ all: 'Tudo',
+ top: 'Top',
+ api: 'API',
+ docs: 'Docs',
+ inbox: 'Caixa de entrada',
+ inbox_for: 'Caixa de entrada de <1>{{user}}1>',
+ mark_all_as_read: 'marcar tudo como lido',
+ type: 'Tipo',
+ unread: 'Não lido',
+ replies: 'Respostas',
+ mentions: 'Menções',
+ reply_sent: 'Resposta enviada',
+ message_sent: 'Mensagem enviada',
+ search: 'Busca',
+ overview: 'Visão geral',
+ view: 'Visualização',
+ logout: 'Sair',
+ login_sign_up: 'Entrar / Inscrever-se',
+ login: 'Entrar',
+ sign_up: 'Inscrever-se',
+ notifications_error:
+ 'Seu navegador não oferece notificações para a área de trabalho. Tente o Firefox ou o Chrome.',
+ unread_messages: 'Mensagens não lidas',
+ messages: 'Mensagens',
+ password: 'Senha',
+ verify_password: 'Verifique a senha',
+ old_password: 'Senha antiga',
+ forgot_password: 'esqueci a senha',
+ reset_password_mail_sent: 'Enviado um e-mail para a alteração da senha.',
+ password_change: 'Alteração de senha',
+ new_password: 'Nova senha',
+ no_email_setup: 'Esse servidor não configurou corretamente o e-mail.',
+ email: 'E-mail',
+ matrix_user_id: 'Usuário Matrix',
+ private_message_disclaimer:
+ 'Aviso: mensagens privadas no Lemmy não são seguras. Crie uma conta em <1>Riot.im1> para troca segura de mensagens.',
+ send_notifications_to_email: 'Enviar notificações para o e-mail',
+ optional: 'Opcional',
+ expires: 'Expira',
+ language: 'Idioma',
+ browser_default: 'Padrão do navegador',
+ downvotes_disabled: 'Votos negativos desativados',
+ enable_downvotes: 'Permitir votos negativos',
+ open_registration: 'Permitir registro',
+ registration_closed: 'Registros desativados',
+ enable_nsfw: 'Permitir NSFW',
+ url: 'URL',
+ body: 'Conteúdo',
+ copy_suggested_title: 'copiar título sugerido: {{title}}',
+ community: 'Comunidade',
+ expand_here: 'Expandir aqui',
+ subscribe_to_communities: 'Inscreva-se em algumas <1>comunidades1>.',
+ chat: 'Chat',
+ recent_comments: 'Últimos comentários',
+ no_results: 'Nenhum resultado.',
+ setup: 'Instalação',
+ lemmy_instance_setup: 'Criação de instância Lemmy',
+ setup_admin: 'Configurar administrador do site',
+ your_site: 'seu site',
+ modified: 'modificado',
+ nsfw: 'NSFW',
+ show_nsfw: 'Mostrar conteúdo NSFW',
+ theme: 'Tema',
+ sponsors: 'Patrocinadores',
+ sponsors_of_lemmy: 'Patrocinadores do Lemmy',
+ sponsor_message:
+ 'Lemmy é um programa livre e de código aberto, o que significa que não haverá publicidade, monetização ou capital de risco, jamais. Suas doações apoiam de forma direta o desenvolvimento em tempo integral do projeto. Muitos agradecimentos às sequintes pessoas:',
+ support_on_patreon: 'Colabore no Patreon',
+ donate_to_lemmy: 'Faça uma doação ao Lemmy',
+ donate: 'Doar',
+ general_sponsors:
+ 'Patrocinadores são aqueles que doaram entre $10 e $39 ao Lemmy.',
+ crypto: 'Crypto',
+ bitcoin: 'Bitcoin',
+ ethereum: 'Ethereum',
+ monero: 'Monero',
+ code: 'Code',
+ joined: 'Entrou',
+ by: 'por',
+ to: 'para',
+ from: 'de',
+ transfer_community: 'transferir comunidade',
+ transfer_site: 'transferir site',
+ are_you_sure: 'tem certeza?',
+ yes: 'sim',
+ no: 'não',
+ powered_by: 'Powered by',
+ landing_0:
+ 'Lemmy é um <1>agregador de links1> / alternativa ao reddit, com a intenção de funcionar junto ao <2>fediverso2>.<3>3>Pode ser hospedado em servidor próprio, tem atualização de comentários em tempo real e é minúsculo (<4>~80kB4>). A federação com a rede ActivityPub está no roteiro do projeto. <5>5>Esta é uma <6>versão beta bastante antecipada6>, e muitas funcionalidades ainda estão quebradas ou ausentes. <7>7>Sugira novas funcionalidades ou reporte erros <8>aqui.8><9>9>Feito com <10>Rust10>, <11>Actix11>, <12>Inferno12>, <13>Typescript13>.',
+ not_logged_in: 'Não autenticado.',
+ logged_in: 'Autenticado.',
+ community_ban: 'Você foi banido desta comunidade.',
+ site_ban: 'Você foi banido do site',
+ couldnt_create_comment: 'Não foi possível criar o comentário.',
+ couldnt_like_comment: 'Não foi possível curtir o comentário.',
+ couldnt_update_comment: 'Não foi possível atualizar o comentário.',
+ couldnt_save_comment: 'Não foi possível guardar o comentário.',
+ no_comment_edit_allowed: 'Sem permissão para editar de comentário.',
+ no_post_edit_allowed: 'Sem permissão para editar publicação.',
+ no_community_edit_allowed: 'Sem permissão para editar comunidade.',
+ couldnt_find_community: 'Não foi possível encontrar a comunidade.',
+ couldnt_update_community: 'Não foi possível atualizar a comunidade.',
+ community_already_exists: 'Esta comunidade já existe.',
+ community_moderator_already_exists:
+ 'Este moderador da comunidade já existe.',
+ community_follower_already_exists: 'Este seguidor da comunidade já existe.',
+ community_user_already_banned: 'Este usuário da comunidade já foi banido.',
+ couldnt_create_post: 'Não foi possível criar a publicação.',
+ couldnt_like_post: 'Não foi possível curtir a publicação.',
+ couldnt_find_post: 'Não foi possível encontrar a publicação.',
+ couldnt_get_posts: 'Não foi possível obter as publicações',
+ couldnt_update_post: 'Não foi possível atualizar a publicação',
+ couldnt_save_post: 'Não foi possível guardar a publicação.',
+ no_slurs: 'Sem insultos.',
+ not_an_admin: 'Não é administrador.',
+ site_already_exists: 'O site já existe.',
+ couldnt_update_site: 'Não foi possível atualizar o site.',
+ couldnt_find_that_username_or_email:
+ 'Não foi possível encontrar esse usuário ou e-mail.',
+ password_incorrect: 'Senha incorreta.',
+ passwords_dont_match: 'As senhas não são iguais.',
+ admin_already_created: 'Desculpe, já há um administrador.',
+ user_already_exists: 'Este usuário já existe.',
+ email_already_exists: 'Este e-mail já existe.',
+ couldnt_update_user: 'Não foi possível atualizar o usuário.',
+ system_err_login: 'Erro no sistema. Tente sair e autenticar-se outra vez.',
+ couldnt_create_private_message: 'Não foi possível criar mensagem privada.',
+ no_private_message_edit_allowed:
+ 'Sem permissão para editar mensagem privada.',
+ couldnt_update_private_message:
+ 'Não foi possível atualizar a mensagem privada.',
+ time: 'Tempo',
+ action: 'Ação',
+ },
+};
diff --git a/ui/src/utils.ts b/ui/src/utils.ts
index 19cb28a2091..c53ee76a1a5 100644
--- a/ui/src/utils.ts
+++ b/ui/src/utils.ts
@@ -10,6 +10,7 @@ import 'moment/locale/it';
import 'moment/locale/fi';
import 'moment/locale/ca';
import 'moment/locale/fa';
+import 'moment/locale/pt-br';
import {
UserOperation,
@@ -260,6 +261,7 @@ export const languages = [
{ code: 'es', name: 'Español' },
{ code: 'de', name: 'Deutsch' },
{ code: 'fa', name: 'فارسی' },
+ { code: 'pt_BR', name: 'Português Brasileiro' },
{ code: 'zh', name: '中文' },
{ code: 'fi', name: 'Suomi' },
{ code: 'fr', name: 'Français' },
@@ -310,6 +312,8 @@ export function getMomentLanguage(): string {
lang = 'ca';
} else if (lang.startsWith('fa')) {
lang = 'fa';
+ } else if (lang.startsWith('pt')) {
+ lang = 'pt-br';
} else {
lang = 'en';
}
diff --git a/ui/translation_report.ts b/ui/translation_report.ts
index 1956b79218d..c010aee0e1d 100644
--- a/ui/translation_report.ts
+++ b/ui/translation_report.ts
@@ -11,6 +11,7 @@ import { nl } from './src/translations/nl';
import { it } from './src/translations/it';
import { fi } from './src/translations/fi';
import { ca } from './src/translations/ca';
+import { pt_BR } from './src/translations/pt_br';
import fs from 'fs';
const files = [
@@ -23,6 +24,7 @@ const files = [
{ t: fr, n: 'fr' },
{ t: it, n: 'it' },
{ t: nl, n: 'nl' },
+ { t: pt_BR, n: 'pt-br' },
{ t: ru, n: 'ru' },
{ t: sv, n: 'sv' },
{ t: zh, n: 'zh' },
From 8405f0ee5366ff2b1b80e5387169f59d3adbde26 Mon Sep 17 00:00:00 2001
From: Dessalines
Date: Wed, 5 Feb 2020 14:14:05 -0500
Subject: [PATCH 7/7] Adding Liberapay.
---
README.md | 28 ++++++++++++++--------------
ui/src/components/sponsors.tsx | 8 +++++++-
ui/src/translations/en.ts | 1 +
3 files changed, 22 insertions(+), 15 deletions(-)
diff --git a/README.md b/README.md
index cef3681d670..84b3dba982a 100644
--- a/README.md
+++ b/README.md
@@ -147,9 +147,9 @@ ansible-playbook lemmy.yml --become
Lemmy is free, open-source software, meaning no advertising, monetizing, or venture capital, ever. Your donations directly support full-time development of the project.
+- [Support on Liberapay.](https://liberapay.com/Lemmy)
- [Support on Patreon](https://www.patreon.com/dessalines).
- [List of Sponsors](https://dev.lemmy.ml/sponsors).
-- Soon to add either liberapay or opencollective.
### Crypto
@@ -167,19 +167,19 @@ If you'd like to add translations, take a look at the [English translation file]
lang | done | missing
---- | ---- | -------
-ca | 98% | cross_posted_to,old,time,action
-de | 86% | cross_posted_to,create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,old,docs,message_sent,messages,old_password,matrix_user_id,private_message_disclaimer,send_notifications_to_email,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
-fa | 72% | cross_post,cross_posted_to,subscribed_to_communities,trending_communities,create_private_message,send_secure_message,send_message,message,mod,mods,moderates,remove_as_mod,appoint_as_mod,modlog,stickied,ban,ban_from_site,unban,unban_from_site,banned,number_of_subscribers,subscribers,both,saved,unsubscribe,subscribe,subscribed,old,api,docs,inbox,inbox_for,message_sent,notifications_error,messages,no_email_setup,matrix_user_id,private_message_disclaimer,url,body,copy_suggested_title,community,expand_here,subscribe_to_communities,theme,sponsor_message,general_sponsors,joined,by,to,from,landing_0,logged_in,community_moderator_already_exists,community_follower_already_exists,community_user_already_banned,no_slurs,admin_already_created,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
-eo | 74% | cross_posted_to,number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,theme,donate_to_lemmy,donate,from,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
-es | 100% | cross_posted_to
-fi | 98% | cross_posted_to,old,time,action
-fr | 82% | cross_posted_to,create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
-it | 83% | cross_posted_to,create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
-nl | 99% | cross_posted_to,time,action
-pt-br | 100% |
-ru | 71% | cross_posts,cross_post,cross_posted_to,number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,recent_comments,theme,donate_to_lemmy,donate,monero,by,to,from,transfer_community,transfer_site,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
-sv | 82% | cross_posted_to,create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
-zh | 69% | cross_posts,cross_post,cross_posted_to,users,number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,settings,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,recent_comments,nsfw,show_nsfw,theme,donate_to_lemmy,donate,monero,by,to,from,transfer_community,transfer_site,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+ca | 98% | cross_posted_to,old,support_on_liberapay,time,action
+de | 86% | cross_posted_to,create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,old,docs,message_sent,messages,old_password,matrix_user_id,private_message_disclaimer,send_notifications_to_email,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,support_on_liberapay,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+fa | 72% | cross_post,cross_posted_to,subscribed_to_communities,trending_communities,create_private_message,send_secure_message,send_message,message,mod,mods,moderates,remove_as_mod,appoint_as_mod,modlog,stickied,ban,ban_from_site,unban,unban_from_site,banned,number_of_subscribers,subscribers,both,saved,unsubscribe,subscribe,subscribed,old,api,docs,inbox,inbox_for,message_sent,notifications_error,messages,no_email_setup,matrix_user_id,private_message_disclaimer,url,body,copy_suggested_title,community,expand_here,subscribe_to_communities,theme,sponsor_message,support_on_liberapay,general_sponsors,joined,by,to,from,landing_0,logged_in,community_moderator_already_exists,community_follower_already_exists,community_user_already_banned,no_slurs,admin_already_created,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+eo | 74% | cross_posted_to,number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,theme,support_on_liberapay,donate_to_lemmy,donate,from,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+es | 99% | cross_posted_to,support_on_liberapay
+fi | 98% | cross_posted_to,old,support_on_liberapay,time,action
+fr | 81% | cross_posted_to,create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,support_on_liberapay,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+it | 82% | cross_posted_to,create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,support_on_liberapay,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+nl | 98% | cross_posted_to,support_on_liberapay,time,action
+pt-br | 100% | support_on_liberapay
+ru | 70% | cross_posts,cross_post,cross_posted_to,number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,recent_comments,theme,support_on_liberapay,donate_to_lemmy,donate,monero,by,to,from,transfer_community,transfer_site,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+sv | 81% | cross_posted_to,create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,archive_link,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,support_on_liberapay,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
+zh | 69% | cross_posts,cross_post,cross_posted_to,users,number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,settings,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,recent_comments,nsfw,show_nsfw,theme,support_on_liberapay,donate_to_lemmy,donate,monero,by,to,from,transfer_community,transfer_site,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message,time,action
If you'd like to update this report, run:
diff --git a/ui/src/components/sponsors.tsx b/ui/src/components/sponsors.tsx
index 988ad4e0658..347cb718cd3 100644
--- a/ui/src/components/sponsors.tsx
+++ b/ui/src/components/sponsors.tsx
@@ -47,7 +47,13 @@ export class Sponsors extends Component {
##
-
+
+ {i18n.t('support_on_liberapay')}
+
+
{i18n.t('support_on_patreon')}
diff --git a/ui/src/translations/en.ts b/ui/src/translations/en.ts
index e103df7ec03..e58e94e5041 100644
--- a/ui/src/translations/en.ts
+++ b/ui/src/translations/en.ts
@@ -171,6 +171,7 @@ export const en = {
sponsor_message:
'Lemmy is free, <1>open-source1> software, meaning no advertising, monetizing, or venture capital, ever. Your donations directly support full-time development of the project. Thank you to the following people:',
support_on_patreon: 'Support on Patreon',
+ support_on_liberapay: 'Support on Liberapay',
donate_to_lemmy: 'Donate to Lemmy',
donate: 'Donate',
general_sponsors: