Merge pull request #226 from krawieck/lemmy-0.11.0

This commit is contained in:
Filip Krawczyk 2021-04-29 11:43:46 +02:00 committed by GitHub
commit 7e1cc387dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
44 changed files with 1210 additions and 496 deletions

View File

@ -2,18 +2,19 @@
### Added ### Added
- Editing posts
- Editing comments
- Show avatars setting toggle - Show avatars setting toggle
- Show scores setting toggle - Show scores setting toggle
- Default sort type setting - Default sort type setting
- Default listing type for the home tab setting - Default listing type setting
- Import Lemmy settings: long press an account in account settings then choose the import option - Import Lemmy settings: long press an account in account settings then choose the import option
- Editing posts - Support lemmy v0.11.0
- Editing comments
### Fixed ### Fixed
- Fixed bug where creating post would crash after uploading a picture
- Added deduplication in infinite scrolls - Added deduplication in infinite scrolls
- Fixed bug where creating post would crash after uploading a picture
## v0.4.2 - 2021-04-12 ## v0.4.2 - 2021-04-12

133
lib/l10n/intl_bg.arb Normal file
View File

@ -0,0 +1,133 @@
{
"@@locale": "bg",
"settings": "Настройки",
"password": "Парола",
"email_or_username": "Имейл или Потребителско име",
"posts": "Постове",
"comments": "Коментари",
"modlog": "Мод-журнал",
"community": "Общност",
"url": "URL",
"title": "Заглавие",
"body": "Съдържание",
"nsfw": "NSFW",
"post": "пост",
"save": "запази",
"subscribed": "Абониран",
"local": "Местни",
"all": "Всички",
"replies": "Отговори",
"mentions": "Споменавания",
"from": "от",
"to": "към",
"deleted_by_creator": "изтрито от създателя",
"more": "още",
"mark_as_read": "маркирай прочетено",
"mark_as_unread": "маркирай непрочетено",
"reply": "отговори",
"edit": "редактирай",
"delete": "изтрий",
"restore": "възстанови",
"yes": "да",
"no": "не",
"avatar": "Профилна Снимка",
"banner": "Тапет",
"display_name": "Заглавие",
"bio": "Био",
"email": "Имейл",
"matrix_user": "Matrix Потребител",
"sort_type": "Тип сортиране",
"type": "Тип",
"show_nsfw": "Покажи NSFW съдържание",
"send_notifications_to_email": "Нотификации чрез Имейл",
"delete_account": "Изтрий Профила",
"saved": "Запазено",
"communities": "Общности",
"users": "Потребители",
"theme": "Тема",
"language": "Език",
"hot": "Популярни",
"new_": "Нови",
"old": "Стари",
"top": "Топ",
"chat": "Чат",
"admin": "администратор",
"by": "от",
"not_a_mod_or_admin": "Не сте модератор или администратор.",
"not_an_admin": "Не сте администратор.",
"couldnt_find_post": "Постът не беше намерен.",
"not_logged_in": "Не сте влезли.",
"site_ban": "Блокирани сте от този сайт",
"community_ban": "Блокирани сте от тази общност.",
"downvotes_disabled": "Изключване на негативните гласове",
"invalid_url": "Навалиден URL.",
"locked": "заключено",
"couldnt_create_comment": "Коментарът не може да бъде създаден.",
"couldnt_like_comment": "Неуспешно одобрение на коментара.",
"couldnt_update_comment": "Неуспешна актуализация на коментара.",
"no_comment_edit_allowed": "Нямате право да редактирате този коментар.",
"couldnt_save_comment": "Неуспешно запазване на коментар.",
"couldnt_get_comments": "Неуспешна доставка на коментарите.",
"report_reason_required": "Причина за оплакването е задължителна.",
"report_too_long": "Оплакването е твърде дълго.",
"couldnt_create_report": "Оплакването не можа да бъде създадено.",
"couldnt_resolve_report": "Оплакването не можа да бъде уредено.",
"invalid_post_title": "Невалидно заглавие на пост",
"couldnt_create_post": "Постът не можа да бъде създаден.",
"couldnt_like_post": "Постът не можа да бъде харесан.",
"couldnt_find_community": "Не можахме да намерим тази общност.",
"couldnt_get_posts": "Неуспешна доставка на постовете",
"no_post_edit_allowed": "Нямате право да редактирате този пост.",
"couldnt_save_post": "Постът не можа да бъде запазен.",
"site_already_exists": "Сайтът вече съществува.",
"couldnt_update_site": "Сайтът не можа да бъде обновен.",
"invalid_community_name": "Невалидно име.",
"community_already_exists": "Общността вече съществува.",
"community_moderator_already_exists": "Модератор на общността вече съществува.",
"community_follower_already_exists": "Абонат на общността вече съществува.",
"not_a_moderator": "Не сте модератор.",
"couldnt_update_community": "Не можахме да обновим тази общност.",
"no_community_edit_allowed": "Нямате право да редактирате тази общност.",
"system_err_login": "Системна грешка. Опитайте се да се отпишете и впишете наново.",
"community_user_already_banned": "Потребителят вече е баннат.",
"couldnt_find_that_username_or_email": "Потребителското име или имейла не съществуват.",
"password_incorrect": "Грешна парола.",
"registration_closed": "Регистрация затворена",
"invalid_password": "Невалидна парола. Паролата не може да е по-дълга от 60 символа.",
"passwords_dont_match": "Паролите не съвпадат.",
"captcha_incorrect": "Грешна Captcha.",
"invalid_username": "Грешно потребителско име.",
"bio_length_overflow": "Потребителската Биография не може да надхвърля 300 символа.",
"couldnt_update_user": "Неуспешен ъпдейт на потребителя.",
"couldnt_update_private_message": "Неуспешен ъпдейт на лично съобщение.",
"couldnt_update_post": "Неуспешен ъпдейт на поста",
"couldnt_create_private_message": "Личното съобщение не можа да бъде създадено.",
"no_private_message_edit_allowed": "Нямате право да редактирате лично съобщение.",
"post_title_too_long": "Заглавието на поста е твърде дълго.",
"email_already_exists": "Имейлът вече съществува.",
"user_already_exists": "Потребителят вече съществува.",
"number_of_users_online": "{count,plural, =1{{count} потребител онлайн} other{{count} потребители онлайн}}",
"number_of_comments": "{count,plural, =1{{count} Коментар} other{{count} Коментари}}",
"number_of_posts": "{count,plural, =1{{count} Пост} other{{count} Постове}}",
"number_of_subscribers": "{count,plural, =1{{count} абонат} other{{count} абонати}}",
"number_of_users": "{count,plural, =1{{count} потребител} other{{count} потребители}}",
"unsubscribe": "Премахни абонамент",
"subscribe": "Абонирай",
"messages": "Съобщения",
"banned_users": "Блокирани Потребители",
"delete_account_confirm": "Внимание: това трайно ще изтрие всичките Ви данни. Въведете своята парола за потвърждение.",
"new_password": "Нова Парола",
"verify_password": "Потвърди парола",
"old_password": "Стара парола",
"show_avatars": "Покажи Профилни Снимки",
"search": "Търсене",
"send_message": "Изпрати Съобщение",
"top_day": "Топ Ден",
"top_week": "Топ Седмица",
"top_month": "Топ Месец",
"top_year": "Топ Година",
"top_all": "Топ на Всички Времена",
"most_comments": "Най-много Коментари",
"new_comments": "Нови Коментари",
"active": "Активни"
}

View File

@ -128,5 +128,6 @@
"top_all": "El millor de tots els temps", "top_all": "El millor de tots els temps",
"most_comments": "Més comentaris", "most_comments": "Més comentaris",
"new_comments": "Comentaris nous", "new_comments": "Comentaris nous",
"active": "Actiu" "active": "Actiu",
"not_a_mod_or_admin": "No ets un moderador ni un administrador."
} }

View File

@ -128,5 +128,6 @@
"top_all": "Κορυφαία από πάντα", "top_all": "Κορυφαία από πάντα",
"most_comments": "Περισσότερα σχόλια", "most_comments": "Περισσότερα σχόλια",
"new_comments": "Νέα σχόλια", "new_comments": "Νέα σχόλια",
"active": "Δραστηριότητα" "active": "Δραστηριότητα",
"not_a_mod_or_admin": "Δεν είστε συντονιστής ή διαχειριστής."
} }

View File

@ -285,5 +285,11 @@
"new_comments": "New Comments", "new_comments": "New Comments",
"@new_comments": {}, "@new_comments": {},
"active": "Active", "active": "Active",
"@active": {} "@active": {},
"bot_account": "Bot Account",
"@bot_account": {},
"show_bot_accounts": "Show Bot Accounts",
"@show_bot_accounts": {},
"show_read_posts": "Show Read Posts",
"@show_read_posts": {}
} }

View File

@ -128,5 +128,6 @@
"top_all": "Supraj ĉiamaj", "top_all": "Supraj ĉiamaj",
"most_comments": "Plej komentitaj", "most_comments": "Plej komentitaj",
"new_comments": "Nove komentitaj", "new_comments": "Nove komentitaj",
"active": "Aktiva" "active": "Aktiva",
"not_a_mod_or_admin": "Nek reguligisto nek administranto."
} }

View File

@ -2,7 +2,7 @@
"@@locale": "es", "@@locale": "es",
"settings": "Configuración", "settings": "Configuración",
"password": "Contraseña", "password": "Contraseña",
"email_or_username": "Correo o usuario", "email_or_username": "Correo o nombre de usuario",
"posts": "Publicaciones", "posts": "Publicaciones",
"comments": "Comentarios", "comments": "Comentarios",
"modlog": "Historial de moderación", "modlog": "Historial de moderación",
@ -126,7 +126,7 @@
"top_month": "Lo mejor del mes", "top_month": "Lo mejor del mes",
"top_year": "Lo mejor del año", "top_year": "Lo mejor del año",
"top_all": "Lo mejor de todos los tiempos", "top_all": "Lo mejor de todos los tiempos",
"most_comments": "La mayoría de los comentarios", "most_comments": "Más comentados",
"new_comments": "Nuevos Comentarios", "new_comments": "Nuevos Comentarios",
"active": "Activo", "active": "Activo",
"not_a_mod_or_admin": "No eres un moderador ni un administrador." "not_a_mod_or_admin": "No eres un moderador ni un administrador."

View File

@ -128,5 +128,6 @@
"top_all": "Onena", "top_all": "Onena",
"most_comments": "Iruzkin gehienak", "most_comments": "Iruzkin gehienak",
"new_comments": "Iruzkin berriak", "new_comments": "Iruzkin berriak",
"active": "Aktibo" "active": "Aktibo",
"not_a_mod_or_admin": "Ez zara moderatzaile bat, ezta administratzaile bat ere."
} }

View File

@ -106,5 +106,28 @@
"show_avatars": "Näytä avatarit", "show_avatars": "Näytä avatarit",
"search": "Etsi", "search": "Etsi",
"send_message": "Lähetä viesti", "send_message": "Lähetä viesti",
"top_day": "Päivän parhaimmat" "top_day": "Päivän parhaimmat",
"local": "Paikallinen",
"banner": "Banneri",
"display_name": "Näyttönimi",
"bio": "Kuvaus",
"not_a_mod_or_admin": "Et ole moderaattori tai ylläpitäjä.",
"invalid_url": "Viallinen URL.",
"report_reason_required": "Ilmiannolle tarvitaan selitys.",
"report_too_long": "Ilmianto on turhan pitkä.",
"couldnt_create_report": "Ilmiantoa ei pystytty luomaan.",
"couldnt_resolve_report": "Ilmiantoa ei pystytty selvittämään.",
"invalid_community_name": "Viallinen yhteisön nimi.",
"not_a_moderator": "Ei moderaattori.",
"invalid_password": "Virheellinen salasana. Salasanan on oltava <= 60 merkkiä.",
"captcha_incorrect": "Captcha on väärin.",
"invalid_username": "Viallinen käyttäjänimi.",
"bio_length_overflow": "Käyttäjän kuvaus ei voi olla pidempi kuin 300 merkkiä.",
"top_week": "Viikon parhaimmat",
"top_month": "Kuukauden parhaimmat",
"top_year": "Vuoden parhaimmat",
"top_all": "Kaikkien aikojen parhaimmat",
"most_comments": "Eniten kommentteja",
"new_comments": "Uudet kommentit",
"active": "Aktiivinen"
} }

View File

@ -128,5 +128,6 @@
"most_comments": "Plus commentés", "most_comments": "Plus commentés",
"new_comments": "Nouveaux commentaires", "new_comments": "Nouveaux commentaires",
"active": "Actif", "active": "Actif",
"report_too_long": "Rapport trop long." "report_too_long": "Rapport trop long.",
"not_a_mod_or_admin": "Pas un modérateur ou un administrateur."
} }

View File

@ -1,3 +1,136 @@
{ {
"@@locale": "gl" "@@locale": "gl",
"settings": "Axustes",
"password": "Contrasinal",
"email_or_username": "Email ou Nome de usuaria",
"posts": "Publicacións",
"comments": "Comentarios",
"modlog": "Rexistro da moderación",
"community": "Comunidade",
"url": "URL",
"title": "Título",
"body": "Body",
"nsfw": "NSFW",
"post": "publicar",
"save": "gardar",
"subscribed": "Subscrita",
"local": "Local",
"all": "Todo",
"replies": "Respostas",
"mentions": "Mencións",
"from": "desde",
"to": "a",
"deleted_by_creator": "eliminado pola creadora",
"more": "máis",
"mark_as_read": "marcar como lido",
"mark_as_unread": "marcar como non lido",
"reply": "reponder",
"edit": "editar",
"delete": "eliminar",
"restore": "restablecer",
"yes": "si",
"no": "non",
"avatar": "Avatar",
"banner": "Cabeceira",
"display_name": "Nome público",
"bio": "Bio",
"email": "Email",
"matrix_user": "Usuaria Matrix",
"sort_type": "Tipo de orde",
"type": "Tipo",
"show_nsfw": "Mostrar contido NSFW",
"send_notifications_to_email": "Enviar notificacións ao email",
"delete_account": "Eliminar Conta",
"saved": "Gardado",
"communities": "Comunidades",
"users": "Usuarias",
"theme": "Decorado",
"language": "Idioma",
"hot": "En voga",
"new_": "Novo",
"old": "Antigo",
"top": "Top",
"chat": "Chat",
"admin": "admin",
"by": "por",
"not_a_mod_or_admin": "Non é moderadora ou admin.",
"not_an_admin": "Non é admin.",
"couldnt_find_post": "Non se atopou a publicación.",
"not_logged_in": "Non conectada.",
"site_ban": "Retirouseche o veto nesta comunidade",
"community_ban": "Foches vetada nesta comunidade.",
"downvotes_disabled": "Votos negativos desactivados",
"invalid_url": "URL non válido.",
"locked": "bloqueado",
"couldnt_create_comment": "Non se creou o comentario.",
"couldnt_like_comment": "Non se puido gustar o comentario.",
"couldnt_update_comment": "Non se actualizou o comentario.",
"no_comment_edit_allowed": "Non está permitido editar o comentario.",
"couldnt_save_comment": "Non se gardou o comentario.",
"couldnt_get_comments": "Non se obtiveron comentarios.",
"report_reason_required": "Requírese unha razón para a denuncia.",
"report_too_long": "Denuncia demasiado longa.",
"couldnt_create_report": "Non se puido crear a denuncia.",
"couldnt_resolve_report": "Non se puido resolver a denuncia.",
"invalid_post_title": "Título da publicación non válido",
"couldnt_create_post": "Non se puido crear a publicación.",
"couldnt_like_post": "Non se puido gustar da publicación.",
"couldnt_find_community": "Non se atopou a comunidade.",
"couldnt_get_posts": "Non se obtiveron publicacións",
"no_post_edit_allowed": "Non está permitido editar a publicación.",
"couldnt_save_post": "Non se gardou a publicación.",
"site_already_exists": "Xa existe o sitio.",
"couldnt_update_site": "Non se actualizou o sitio.",
"invalid_community_name": "Nome non válido.",
"community_already_exists": "A comunidade xa existe.",
"community_moderator_already_exists": "Xa hai moderadora para a Comunidade.",
"community_follower_already_exists": "Xa existe a seguidora da comunidade.",
"not_a_moderator": "Non é moderadora.",
"couldnt_update_community": "Non se actualizou a Comunidade.",
"no_community_edit_allowed": "Non está permitido editar a comunidade.",
"system_err_login": "Erro no sistema. Intenta desconectar e conectar de volta.",
"community_user_already_banned": "A usuaria da comunidade xa foi vetada.",
"couldnt_find_that_username_or_email": "Non se atopa ese nome de usuaria ou email.",
"password_incorrect": "Contrasinal incorrecto.",
"registration_closed": "Rexistro pechado",
"invalid_password": "Contrasinal non válido. O contrasinal ten que ser inferior a 60 caracteres.",
"passwords_dont_match": "Os contrasinais non coinciden.",
"captcha_incorrect": "Captcha incorrecto.",
"invalid_username": "Nome de usuaria non válido.",
"bio_length_overflow": "A bio da usuaria non pode superar os 300 caracteres.",
"couldnt_update_user": "Non se actualizou a usuaria.",
"couldnt_update_private_message": "Non se actualizou a mensaxe privada.",
"couldnt_update_post": "Non se actualizou a publicación",
"couldnt_create_private_message": "Non se creou a mensaxe privada.",
"no_private_message_edit_allowed": "Non está permitido editar a mensaxe privada.",
"post_title_too_long": "O título é demasiado longo.",
"email_already_exists": "Xa existe o email.",
"user_already_exists": "Xa existe a usuaria.",
"number_of_users_online": "{count,plural, =1{{count} usuaria conectada} other{{count} usuarias conectadas}}",
"number_of_comments": "{count,plural, =1{{count} Comentario} other{{count} Comentarios}}",
"number_of_posts": "{count,plural, =1{{count} Publicación} other{{count} Publicacións}}",
"number_of_subscribers": "{count,plural, =1{{count} subscritora} other{{count} subscritoras}}",
"number_of_users": "{count,plural, =1{{count} usuaria} other{{count} usuarias}}",
"unsubscribe": "Dar de baixa",
"subscribe": "Subscribir",
"messages": "Mensaxes",
"banned_users": "Usuarias vetadas",
"delete_account_confirm": "Aviso: isto eliminará permanentemente tódolos teus datos. Escribe o contrasinal para confirmar.",
"new_password": "Novo contrasinal",
"verify_password": "Verifica o contrasinal",
"old_password": "Contrasinal anterior",
"show_avatars": "Mostrar avatares",
"search": "Buscar",
"send_message": "Enviar mensaxe",
"top_day": "Top hoxe",
"top_week": "Top semanal",
"top_month": "Top mensual",
"top_year": "Top anual",
"top_all": "Top de sempre",
"most_comments": "Máis comentado",
"new_comments": "Novos comentarios",
"active": "Activo",
"bot_account": "Conta Bot",
"show_bot_accounts": "Mostrar contas tipo bot",
"show_read_posts": "Mostrar publicacións lidas"
} }

View File

@ -128,5 +128,6 @@
"top_all": "Migliori di sempre", "top_all": "Migliori di sempre",
"most_comments": "Più commenti", "most_comments": "Più commenti",
"new_comments": "Nuovi Commenti", "new_comments": "Nuovi Commenti",
"active": "Attivi" "active": "Attivi",
"not_a_mod_or_admin": "Non moderatore o amministratore."
} }

View File

@ -109,5 +109,6 @@
"search": "検索", "search": "検索",
"send_message": "メッセージを送信", "send_message": "メッセージを送信",
"top_day": "日間トップ", "top_day": "日間トップ",
"active": "活発さ" "active": "活発さ",
"invalid_community_name": "無効な名前です。"
} }

View File

@ -10,7 +10,7 @@
"url": "URL", "url": "URL",
"title": "제목", "title": "제목",
"body": "내용", "body": "내용",
"nsfw": "민감한 콘텐츠(후방주의, 성인)", "nsfw": "18+ 콘텐츠",
"post": "등록", "post": "등록",
"save": "저장", "save": "저장",
"subscribed": "구독", "subscribed": "구독",
@ -28,7 +28,7 @@
"edit": "수정", "edit": "수정",
"delete": "삭제", "delete": "삭제",
"restore": "복원", "restore": "복원",
"yes": "", "yes": "",
"no": "아니오", "no": "아니오",
"avatar": "아바타", "avatar": "아바타",
"banner": "배너", "banner": "배너",
@ -38,7 +38,7 @@
"matrix_user": "메트릭스 사용자", "matrix_user": "메트릭스 사용자",
"sort_type": "정렬", "sort_type": "정렬",
"type": "유형", "type": "유형",
"show_nsfw": "민감한 콘텐츠 보기", "show_nsfw": "18+ 콘텐츠 보기",
"send_notifications_to_email": "이메일로 알림 보내기", "send_notifications_to_email": "이메일로 알림 보내기",
"delete_account": "계정 삭제", "delete_account": "계정 삭제",
"saved": "저장한글", "saved": "저장한글",
@ -107,14 +107,14 @@
"user_already_exists": "사용자가 이미 존재합니다.", "user_already_exists": "사용자가 이미 존재합니다.",
"number_of_users_online": "{count,plural, other{접속자수 {count}}}", "number_of_users_online": "{count,plural, other{접속자수 {count}}}",
"number_of_comments": "{count,plural, other{덧글수 {count}}}", "number_of_comments": "{count,plural, other{덧글수 {count}}}",
"number_of_posts": "{count,plural, other{게시물 수 {count}}}", "number_of_posts": "{count,plural, other{게시물수 {count}}}",
"number_of_subscribers": "{count,plural, other{구독자수{count}}}", "number_of_subscribers": "{count,plural, other{구독자수 {count}}}",
"number_of_users": "{count,plural, other{가입자수 {count}}}", "number_of_users": "{count,plural, other{가입자수 {count}}}",
"unsubscribe": "구독취소", "unsubscribe": "구독취소",
"subscribe": "구독", "subscribe": "구독",
"messages": "메세지", "messages": "메세지",
"banned_users": "금지 된 사용자", "banned_users": "금지 된 사용자",
"delete_account_confirm": "경고 : 모든 데이터가 영구적으로 삭제됩니다. 확인을 위해 비밀번호를 입력하십시오.", "delete_account_confirm": "경고: 모든 데이터가 영구적으로 삭제됩니다. 확인을 위해 비밀번호를 입력하십시오.",
"new_password": "새 비밀번호", "new_password": "새 비밀번호",
"verify_password": "비밀번호 재입력", "verify_password": "비밀번호 재입력",
"old_password": "기존 비밀번호", "old_password": "기존 비밀번호",
@ -126,7 +126,7 @@
"top_month": "월별", "top_month": "월별",
"top_year": "년간", "top_year": "년간",
"top_all": "전체", "top_all": "전체",
"most_comments": "최근 글", "most_comments": "최근 글",
"new_comments": "새 덧글", "new_comments": "새 덧글",
"active": "활발한", "active": "활발한",
"not_a_mod_or_admin": "중재자 또는 관리자가 아닙니다." "not_a_mod_or_admin": "중재자 또는 관리자가 아닙니다."

1
lib/l10n/intl_nb.arb Normal file
View File

@ -0,0 +1 @@
{}

16
lib/l10n/intl_nb_NO.arb Normal file
View File

@ -0,0 +1,16 @@
{
"@@locale": "nb_NO",
"comments": "Kommentarer",
"more": "mer",
"reply": "svare",
"edit": "Redigere",
"avatar": "Profilbilde",
"banner": "Banner",
"communities": "Nettsamfunn",
"users": "Brukere",
"number_of_comments": "{count,plural, =1{{count} Kommentar} other{{count} Kommentarer}}",
"show_avatars": "Vis profilbilder",
"send_message": "Sende melding",
"bot_account": "Bot Konto",
"show_bot_accounts": "Vis Bot Kontoer"
}

View File

@ -2,24 +2,24 @@
"@@locale": "nl", "@@locale": "nl",
"settings": "Instellingen", "settings": "Instellingen",
"password": "Wachtwoord", "password": "Wachtwoord",
"email_or_username": "E-mail of gebruikersnaam", "email_or_username": "E-mailadres of gebruikersnaam",
"posts": "Posts", "posts": "Berichten",
"comments": "Reacties", "comments": "Reacties",
"modlog": "Moderatorlog", "modlog": "Moderatorlogboek",
"community": "Community", "community": "Gemeenschap",
"url": "url", "url": "URL",
"title": "Titel", "title": "Titel",
"body": "Tekst", "body": "Hoofdtekst",
"nsfw": "NSFW", "nsfw": "18+",
"post": "post", "post": "bericht",
"save": "opslaan", "save": "opslaan",
"subscribed": "Geabonneerd", "subscribed": "Geabonneerd",
"all": "Alle", "all": "Alle",
"replies": "Reacties", "replies": "Antwoorden",
"mentions": "vermeldingen", "mentions": "Vermeldingen",
"from": "van", "from": "van",
"to": "aan", "to": "aan",
"deleted_by_creator": "verwijderd door maker", "deleted_by_creator": "verwijderd door de maker",
"more": "meer", "more": "meer",
"mark_as_read": "markeer als gelezen", "mark_as_read": "markeer als gelezen",
"mark_as_unread": "markeer als ongelezen", "mark_as_unread": "markeer als ongelezen",
@ -31,12 +31,12 @@
"no": "nee", "no": "nee",
"avatar": "Avatar", "avatar": "Avatar",
"email": "E-mail", "email": "E-mail",
"matrix_user": "Matrix gebruikers-id", "matrix_user": "Matrix-gebruiker",
"sort_type": "Sorteertype", "sort_type": "Sorteertype",
"type": "Type", "type": "Type",
"show_nsfw": "Laat NSFW-inhoud zien", "show_nsfw": "18+inhoud vertonen",
"send_notifications_to_email": "Stuur meldingen naar je email", "send_notifications_to_email": "Stuur meldingen naar uw e-mailadres",
"delete_account": "Verwijder account", "delete_account": "Account verwijderen",
"saved": "Opgeslagen", "saved": "Opgeslagen",
"communities": "Gemeenschappen", "communities": "Gemeenschappen",
"users": "Gebruikers", "users": "Gebruikers",
@ -46,66 +46,88 @@
"new_": "Nieuw", "new_": "Nieuw",
"old": "Oud", "old": "Oud",
"top": "Top", "top": "Top",
"chat": "Praat", "chat": "Babbel",
"admin": "beheerder", "admin": "beheerder",
"by": "door", "by": "door",
"not_an_admin": "Niet een beheerder.", "not_an_admin": "Niet een beheerder.",
"couldnt_find_post": "Kon post niet vinden.", "couldnt_find_post": "Het bericht kon niet gevonden worden.",
"not_logged_in": "Niet ingelogd.", "not_logged_in": "Niet aangemeld.",
"site_ban": "Je bent verbannen van deze site", "site_ban": "U werd verbannen van deze site",
"community_ban": "Je bent verbannen uit deze community.", "community_ban": "U werd verbannen uit deze gemeenschap.",
"downvotes_disabled": "Downvotes geblokkeerd", "downvotes_disabled": "Neerstemmen uitgeschakeld",
"locked": "gesloten", "locked": "vergrendeld",
"couldnt_create_comment": "Kon reactie niet maken.", "couldnt_create_comment": "Reactie kon niet aangemaakt worden.",
"couldnt_like_comment": "Kon reactie niet leuk vinden.", "couldnt_like_comment": "Reactie kon niet leuk gevonden worden.",
"couldnt_update_comment": "Kon reactie niet bijwerken.", "couldnt_update_comment": "Reactie kon niet bijgewerkt worden.",
"no_comment_edit_allowed": "Niet toegestaan om reactie te bewerken.", "no_comment_edit_allowed": "Reactie bewerken is niet toegestaan.",
"couldnt_save_comment": "Kon reactie niet opslaan.", "couldnt_save_comment": "Reactie kon niet opgeslagen worden.",
"couldnt_get_comments": "Kon reacties niet ophalen.", "couldnt_get_comments": "Reacties konden niet opgehaald worden.",
"couldnt_create_post": "Kon post niet maken.", "couldnt_create_post": "Bericht kon niet aangemaakt worden.",
"couldnt_like_post": "Kon post niet leuk vinden.", "couldnt_like_post": "Het bericht kon niet leuk gevonden worden.",
"couldnt_find_community": "Kon community niet vinden.", "couldnt_find_community": "De gemeenschap kon niet teruggevonden worden.",
"couldnt_get_posts": "Kon posts niet ophalen", "couldnt_get_posts": "De berichten konden niet opgehaald worden",
"no_post_edit_allowed": "Niet toegestaan om posts te bewerken.", "no_post_edit_allowed": "Bericht bewerken is niet toegestaan.",
"couldnt_save_post": "Kon post niet opslaan.", "couldnt_save_post": "De berichten konden niet opgeslagen worden.",
"site_already_exists": "Site bestaat al.", "site_already_exists": "Site bestaat reeds.",
"couldnt_update_site": "Kon site niet bijwerken.", "couldnt_update_site": "De site kon niet bijgewerkt worden.",
"invalid_community_name": "Ongeldige naam.", "invalid_community_name": "Ongeldige naam.",
"community_already_exists": "Community bestaat al.", "community_already_exists": "Deze gemeenschap bestaat reeds.",
"community_moderator_already_exists": "Community-moderator bestaat al.", "community_moderator_already_exists": "Deze gemeenschaps-moderator bestaat reeds.",
"community_follower_already_exists": "Community-volger bestaat al.", "community_follower_already_exists": "Deze gemeenschapsvolger bestaat reeds.",
"couldnt_update_community": "Kon community niet bijwerken.", "couldnt_update_community": "De gemeenschap kon niet bijgewerkt worden.",
"no_community_edit_allowed": "Niet toegestaan om community te bewerken.", "no_community_edit_allowed": "Gemeenschap bewerken is niet toegestaan.",
"system_err_login": "Systeemfout. Probeer uit te loggen en weer in te loggen.", "system_err_login": "Systeemfout. Probeer af te melden en vervolgens weer aan te melden.",
"community_user_already_banned": "Community-gebruiker reeds verbannen.", "community_user_already_banned": "Deze gemeenschapsgebruiker werd reeds verbannen.",
"couldnt_find_that_username_or_email": "Kon gebruikersnaam of e-mailadres niet vinden.", "couldnt_find_that_username_or_email": "De gebruikersnaam of het e-mailadres kon niet gevonden worden.",
"password_incorrect": "Wachtwoord incorrect.", "password_incorrect": "Wachtwoord incorrect.",
"registration_closed": "Registratie gesloten", "registration_closed": "Registratie gesloten",
"passwords_dont_match": "Wachtwoorden zijn niet gelijk.", "passwords_dont_match": "Wachtwoorden komen niet overeen.",
"invalid_username": "Ongeldige gebruikersnaam.", "invalid_username": "Ongeldige gebruikersnaam.",
"couldnt_update_user": "Kon gebruiker niet bijwerken.", "couldnt_update_user": "De gebruiker kon niet bijgewerkt worden.",
"couldnt_update_private_message": "Kan beveiligd bericht niet bijwerken.", "couldnt_update_private_message": "Het privé-bericht kon niet bijgewerkt worden.",
"couldnt_update_post": "Kon post niet bijwerken", "couldnt_update_post": "De berichten konden niet bijgewerkt worden",
"couldnt_create_private_message": "Kan beveiligd bericht niet maken.", "couldnt_create_private_message": "Het privébericht kon niet aangemaakt worden.",
"no_private_message_edit_allowed": "Niet toegestaan om privé berichten te wijzigen.", "no_private_message_edit_allowed": "Het is niet toegestaan om privé-berichten te wijzigen.",
"post_title_too_long": "Posttitel te lang.", "post_title_too_long": "De berichttitel is te lang.",
"email_already_exists": "Email bestaat al.", "email_already_exists": "E-mailadres bestaat reeds.",
"user_already_exists": "Gebruiker bestaat al.", "user_already_exists": "Gebruiker bestaat reeds.",
"number_of_users_online": "{count,plural, =1{{count} gebruiker online} other{{count} gebruikers online}}", "number_of_users_online": "{count,plural, =1{{count} gebruiker online} other{{count} gebruikers online}}",
"number_of_comments": "{count,plural, =1{{count} reactie} other{{count} reacties}}", "number_of_comments": "{count,plural, =1{{count} reactie} other{{count} reacties}}",
"number_of_posts": "{count,plural, =1{{count} post} other{{count} posts}}", "number_of_posts": "{count,plural, =1{{count} bericht} other{{count} berichten}}",
"number_of_subscribers": "{count,plural, =1{{count} abonnee} other{{count} abonnees}}", "number_of_subscribers": "{count,plural, =1{{count} abonnee} other{{count} abonnees}}",
"number_of_users": "{count,plural, =1{{count} gebruiker} other{{count} gebruikers}}", "number_of_users": "{count,plural, =1{{count} gebruiker} other{{count} gebruikers}}",
"unsubscribe": "Afmelden", "unsubscribe": "Afmelden",
"subscribe": "Abonneren", "subscribe": "Abonneren",
"messages": "Berichten", "messages": "Boodschappen",
"banned_users": "Verbannen gebruikers", "banned_users": "Verbannen gebruikers",
"delete_account_confirm": "Waarschuwing: dit zal al uw data voorgoed verwijderen, vul uw wachtwoord in om te bevestigen.", "delete_account_confirm": "Waarschuwing: dit zal al uw data voorgoed verwijderen. Vul uw wachtwoord in om te bevestigen.",
"new_password": "Nieuw wachtwoord", "new_password": "Nieuw wachtwoord",
"verify_password": "Herhaal wachtwoord", "verify_password": "Bevestig wachtwoord",
"old_password": "Oud wachtwoord", "old_password": "Oud wachtwoord",
"show_avatars": "Toon avatars", "show_avatars": "Avatars tonen",
"search": "Zoek", "search": "Zoeken",
"send_message": "Verstuur bericht", "send_message": "Boodschap versturen",
"top_day": "Dagelijkse top" "top_day": "Dagelijks hoogtepunt",
"local": "Lokaal",
"banner": "Banier",
"display_name": "Weergavenaam",
"bio": "Biografie",
"not_a_mod_or_admin": "Niet een moderator of beheerder.",
"invalid_url": "Ongeldige URL.",
"report_reason_required": "Een rapporteringsmotivering is vereist.",
"report_too_long": "Het rapport is te lang.",
"couldnt_create_report": "Het rapport kon niet aangemaakt worden.",
"couldnt_resolve_report": "Het rapport kon niet opgelost worden.",
"invalid_post_title": "Ongeldige berichttitel",
"not_a_moderator": "Niet een moderator.",
"invalid_password": "Ongeldig wachtwoord. Het wachtwoord moet kleiner dan of gelijk aan 60 tekens zijn.",
"captcha_incorrect": "Incorrecte Captcha.",
"bio_length_overflow": "De gebruikersbiografie mag niet 300 tekens overschrijden.",
"top_week": "Wekelijks hoogtepunt",
"top_month": "Maandelijks hoogtepunt",
"top_year": "Jaarlijks hoogtepunt",
"top_all": "Hoogtepunt aller tijden",
"most_comments": "Meeste reacties",
"new_comments": "Nieuwe reacties",
"active": "Actief"
} }

View File

@ -10,10 +10,10 @@
"url": "URL", "url": "URL",
"title": "Tytuł", "title": "Tytuł",
"body": "Treść", "body": "Treść",
"nsfw": "NSFW", "nsfw": "NSFW (18+)",
"post": "post", "post": "post",
"save": "zapisz", "save": "zapisz",
"subscribed": "Zasubskrybowane", "subscribed": "Subskrybowane",
"local": "Lokalne", "local": "Lokalne",
"all": "Wszystko", "all": "Wszystko",
"replies": "Odpowiedzi", "replies": "Odpowiedzi",
@ -38,12 +38,12 @@
"matrix_user": "Login na Matrixie", "matrix_user": "Login na Matrixie",
"sort_type": "Sortuj typ", "sort_type": "Sortuj typ",
"type": "Rodzaj", "type": "Rodzaj",
"show_nsfw": "Pokaż treści NSFW (+18)", "show_nsfw": "Pokaż treści NSFW (18+)",
"send_notifications_to_email": "Wysyłaj powiadomienia na Email", "send_notifications_to_email": "Wysyłaj powiadomienia na Email",
"delete_account": "Usuń Konto", "delete_account": "Usuń Konto",
"saved": "Zapisane", "saved": "Zapisane",
"communities": "Społeczności", "communities": "Społeczności",
"users": "osoby zalogowane", "users": "Osoby zalogowane",
"theme": "Motyw", "theme": "Motyw",
"language": "Język", "language": "Język",
"hot": "Popularne", "hot": "Popularne",
@ -51,7 +51,7 @@
"old": "Stare", "old": "Stare",
"top": "Najpopularniejsze", "top": "Najpopularniejsze",
"chat": "Dyskusja", "chat": "Dyskusja",
"admin": "administrator", "admin": "admin",
"by": "przez", "by": "przez",
"not_an_admin": "Nie jest administratorem.", "not_an_admin": "Nie jest administratorem.",
"couldnt_find_post": "Nie udało się znaleźć posta.", "couldnt_find_post": "Nie udało się znaleźć posta.",
@ -70,7 +70,7 @@
"report_reason_required": "Wymagane jest uzasadnienie zgłoszenia.", "report_reason_required": "Wymagane jest uzasadnienie zgłoszenia.",
"report_too_long": "Zgłoszenie jest zbyt długie.", "report_too_long": "Zgłoszenie jest zbyt długie.",
"couldnt_create_report": "Nie udało się stworzyć zgłoszenia.", "couldnt_create_report": "Nie udało się stworzyć zgłoszenia.",
"couldnt_resolve_report": "Nie udało się rozwiazać zgłoszenia.", "couldnt_resolve_report": "Nie udało się rozwiązać zgłoszenia.",
"invalid_post_title": "Nieprawidłowy tytuł posta", "invalid_post_title": "Nieprawidłowy tytuł posta",
"couldnt_create_post": "Nie udało się stworzyć posta.", "couldnt_create_post": "Nie udało się stworzyć posta.",
"couldnt_like_post": "Nie udało się polubić posta.", "couldnt_like_post": "Nie udało się polubić posta.",

View File

@ -80,7 +80,7 @@
"community_already_exists": "Esta comunidade já existe.", "community_already_exists": "Esta comunidade já existe.",
"community_moderator_already_exists": "Este moderador da comunidade já existe.", "community_moderator_already_exists": "Este moderador da comunidade já existe.",
"community_follower_already_exists": "Este seguidor da comunidade já existe.", "community_follower_already_exists": "Este seguidor da comunidade já existe.",
"not_a_moderator": "Não é da moderação.", "not_a_moderator": "Não é um(a) moderador(a).",
"couldnt_update_community": "Não foi possível atualizar a comunidade.", "couldnt_update_community": "Não foi possível atualizar a comunidade.",
"no_community_edit_allowed": "Sem permissão para editar comunidade.", "no_community_edit_allowed": "Sem permissão para editar comunidade.",
"system_err_login": "Erro no sistema. Tente sair e autenticar-se outra vez.", "system_err_login": "Erro no sistema. Tente sair e autenticar-se outra vez.",
@ -117,6 +117,12 @@
"show_avatars": "Mostrar Avatares", "show_avatars": "Mostrar Avatares",
"search": "Busca", "search": "Busca",
"send_message": "Enviar mensagem", "send_message": "Enviar mensagem",
"top_day": "Top do dia", "top_day": "Melhor do dia",
"active": "Ativo" "active": "Ativo",
"not_a_mod_or_admin": "Não é moderador ou administrador.",
"top_week": "Melhor da semana",
"top_month": "Melhor do mês",
"top_year": "Melhor do ano",
"most_comments": "Mais comentados",
"new_comments": "Novos comentários"
} }

View File

@ -2,20 +2,20 @@
"@@locale": "ru", "@@locale": "ru",
"settings": "Настройки", "settings": "Настройки",
"password": "Пароль", "password": "Пароль",
"email_or_username": "Электронная почта или имя пользователя", "email_or_username": "Электронная почта или Имя пользователя",
"posts": "Записи", "posts": "Посты",
"comments": "Комментарии", "comments": "Комментарии",
"modlog": "Модлог", "modlog": "Модерация",
"community": "Сообщество", "community": "Сообщество",
"url": "URL", "url": "URL",
"title": "Название", "title": "Название",
"body": "Тело", "body": "Тело",
"nsfw": "NSFW", "nsfw": "NSFW",
"post": "запись", "post": "запостить",
"save": "сохранить", "save": "сохранить",
"subscribed": "Подписаны", "subscribed": "Подписаны",
"local": "Местное", "local": "Локальные",
"all": "Всё", "all": "Все",
"replies": "Ответы", "replies": "Ответы",
"mentions": "Упоминания", "mentions": "Упоминания",
"from": "от", "from": "от",
@ -33,93 +33,96 @@
"avatar": "Аватар", "avatar": "Аватар",
"banner": "Баннер", "banner": "Баннер",
"display_name": "Отображаемое имя", "display_name": "Отображаемое имя",
"bio": "Описание пользователя", "bio": "БИО",
"email": "Электронная почта", "email": "Эл. почта",
"matrix_user": "Адрес в Matrix", "matrix_user": "Пользователь Matrix",
"sort_type": "Тип сортировки", "sort_type": "Тип сортировки",
"type": "Тип", "type": "Тип",
"show_nsfw": "Показывать NSFW-контент", "show_nsfw": "Показывать NSFW контент",
"send_notifications_to_email": "Посылать уведомления на e-mail адрес", "send_notifications_to_email": "Посылать уведомления на Эл. почту",
"delete_account": "Удалить аккаунт", "delete_account": "Удалить Аккаунт",
"saved": "Сохранено", "saved": "Сохранено",
"communities": "Сообщества", "communities": "Сообщества",
"users": "Пользователи", "users": "Пользователи",
"theme": "Визуальная тема", "theme": "Тема",
"language": "Язык", "language": "Язык",
"hot": "Популярно", "hot": "Популярные",
"new_": "Новое", "new_": "Новые",
"old": "Старое", "old": "Старые",
"top": "Лучшее", "top": "Лучшие",
"chat": "Чат", "chat": "Чат",
"admin": "администратор", "admin": "администратор",
"by": "от", "by": "от",
"not_an_admin": "Не администратор.", "not_an_admin": "Не администратор.",
"couldnt_find_post": "Не получилось найти запись.", "couldnt_find_post": "Не удалось найти пост.",
"not_logged_in": "Не авторизованы.", "not_logged_in": "Не авторизованы.",
"site_ban": "Вы были заблокированы на данном сайте", "site_ban": "Вы были заблокированы на данном сайте",
"community_ban": "Вы были заблокированы в данном сообществе.", "community_ban": "Вы были заблокированы в данном сообществе.",
"downvotes_disabled": "Отрицательное голосование отключено", "downvotes_disabled": "Голосование не понравилось отключено",
"invalid_url": "Недопустимый URL.", "invalid_url": "Недопустимый URL.",
"locked": "заблокировано", "locked": "заблокировано",
"couldnt_create_comment": "Не получилось создать комментарий.", "couldnt_create_comment": "Не удалось создать комментарий.",
"couldnt_like_comment": "Не получилось лайкнуть комментарий.", "couldnt_like_comment": "Не удалось лайкнуть комментарий.",
"couldnt_update_comment": "Не получилось обновить комментарий.", "couldnt_update_comment": "Не удалось обновить комментарий.",
"no_comment_edit_allowed": "Невозможно отредактировать комментарий.", "no_comment_edit_allowed": "Комментарий редактировать запрещено.",
"couldnt_save_comment": "Не получилось сохранить комментарий.", "couldnt_save_comment": "Не удалось сохранить комментарий.",
"couldnt_get_comments": "Не удалось получить комментарии.", "couldnt_get_comments": "Не удалось получить комментарии.",
"report_reason_required": "Укажите причину жалобы.", "report_reason_required": "Укажите причину жалобы.",
"report_too_long": "Жалоба слишком длинная.", "report_too_long": "Жалоба слишком длинная.",
"couldnt_create_report": "Невозможно создать жалобу.", "couldnt_create_report": "Невозможно создать жалобу.",
"couldnt_resolve_report": "Невозможно разрешить жалобу.", "couldnt_resolve_report": "Невозможно разрешить жалобу.",
"invalid_post_title": "Недопустимый заголовок записи", "invalid_post_title": "Недопустимый заголовок записи",
"couldnt_create_post": "Не получилось создать запись.", "couldnt_create_post": "Не удалось создать пост.",
"couldnt_like_post": "Не получилось лайкнуть запись.", "couldnt_like_post": "Не удалось лайкнуть пост.",
"couldnt_find_community": "Не получилось найти сообщество.", "couldnt_find_community": "Сообщество не найдено.",
"couldnt_get_posts": "Не получилось найти записи", "couldnt_get_posts": "Не удалось найти посты",
"no_post_edit_allowed": "Невозможно отредактировать запись.", "no_post_edit_allowed": "Запрещено комментировать пост.",
"couldnt_save_post": "Не получилось сохранить запись.", "couldnt_save_post": "Не удалось сохранить пост.",
"site_already_exists": "Сайт уже существует.", "site_already_exists": "Сайт уже существует.",
"couldnt_update_site": "Не получилось обновить сайт.", "couldnt_update_site": "Не удалось обновить сайт.",
"invalid_community_name": "Неверное имя пользователя.", "invalid_community_name": "Неверное имя.",
"community_already_exists": "Сообщество уже существует.", "community_already_exists": "Сообщество уже существует.",
"community_moderator_already_exists": "Модератор сообщества уже существует.", "community_moderator_already_exists": "Модератор сообщества уже существует.",
"community_follower_already_exists": "Подписчик сообщества уже существует.", "community_follower_already_exists": "Подписчик сообщества уже существует.",
"not_a_moderator": "Не модератор.", "not_a_moderator": "Не модератор.",
"couldnt_update_community": "Не получилось обновить сообщество.", "couldnt_update_community": "Не удалось обновить Сообщество.",
"no_community_edit_allowed": "Невозможно отредактировать сообщество.", "no_community_edit_allowed": "Редактирование сообщества запрещено.",
"system_err_login": "Системная ошибка. Попробуйте выйти из системы и вернуться обратно.", "system_err_login": "Системная ошибка. Попробуйте выйти из системы и вернуться обратно.",
"community_user_already_banned": "Пользователь сообщества уже заблокирован.", "community_user_already_banned": "Пользователь сообщества уже забанен.",
"couldnt_find_that_username_or_email": "Не получилось найти данное имя пользователя или электронную почту.", "couldnt_find_that_username_or_email": "Указанные имя пользователя или электронную почту найти не удалось.",
"password_incorrect": "Неверный пароль.", "password_incorrect": "Неверный пароль.",
"registration_closed": "Регистрация закрыта", "registration_closed": "Регистрация закрыта",
"invalid_password": "Некорректный пароль. Пароль должен быть не длиннее 60 символов.", "invalid_password": "Неверный пароль. Пароль должен быть не длиннее 60 символов.",
"passwords_dont_match": "Пароли не совпадают.", "passwords_dont_match": "Пароли не совпадают.",
"captcha_incorrect": "Некорректная капча.", "captcha_incorrect": "Некорректная капча.",
"invalid_username": "Неверное имя пользователя.", "invalid_username": "Неверное имя пользователя.",
"bio_length_overflow": "Описание пользователя не может быть длиннее 300 символов.", "bio_length_overflow": "БИО пользователя не может быть длиннее 300 символов.",
"couldnt_update_user": "Не получилось обновить пользователя.", "couldnt_update_user": "Не удалось обновить пользователя.",
"couldnt_update_private_message": "Не удалось обновить личное сообщение.", "couldnt_update_private_message": "Не удалось обновить личное сообщение.",
"couldnt_update_post": "Не получилось обновить запись", "couldnt_update_post": "Не удалось обновить посты",
"couldnt_create_private_message": "Не удалось создать личное сообщение.", "couldnt_create_private_message": "Не удалось создать личное сообщение.",
"no_private_message_edit_allowed": "Не разрешается редактировать личное сообщение.", "no_private_message_edit_allowed": "Не разрешено редактировать личное сообщение.",
"post_title_too_long": "Длина названия записи превышает допустимый лимит.", "post_title_too_long": "Название поста слишком длинное.",
"email_already_exists": "E-mail уже существует.", "email_already_exists": "Эл. почта уже существует.",
"user_already_exists": "Пользователь уже существует.", "user_already_exists": "Пользователь уже существует.",
"unsubscribe": "Отписаться", "unsubscribe": "Отписаться",
"subscribe": "Подписаться", "subscribe": "Подписаться",
"messages": "Сообщения", "messages": "Сообщения",
"banned_users": "Забаненные пользователи", "banned_users": "Забаненные Пользователи",
"delete_account_confirm": "Предупреждение: это действие полностью уничтожит все данные вашего аккаунта. Введите свой пароль для подтверждения.", "delete_account_confirm": "Предупреждение: это действие полностью уничтожит все данные вашего аккаунта. Введите свой пароль для подтверждения.",
"new_password": "Новый пароль", "new_password": "Новый Пароль",
"verify_password": "Повторите пароль", "verify_password": "Подтвердите Пароль",
"old_password": "Действующий пароль", "old_password": "Старый Пароль",
"show_avatars": "Показывать аватары", "show_avatars": "Показывать Аватары",
"search": "Поиск", "search": "Поиск",
"send_message": "Послать сообщение", "send_message": "Послать Сообщение",
"top_day": "Лучшее за день", "top_day": "Лучшие за День",
"top_week": "Лучшее за неделю", "top_week": "Лучшие за Неделю",
"top_month": "Лучшее за месяц", "top_month": "Лучшие за Месяц",
"top_year": "Лучшее за год", "top_year": "Лучшие за Год",
"top_all": "Лучшее за все время", "top_all": "Лучшие за Всё Время",
"active": "Активное" "active": "Активные",
"not_a_mod_or_admin": "Не модератор и не админинстратор.",
"most_comments": "Наиболее Комментируемые",
"new_comments": "Новые Комментарии"
} }

View File

@ -127,5 +127,7 @@
"top_year": "Årstoppen", "top_year": "Årstoppen",
"top_all": "Totaltoppen", "top_all": "Totaltoppen",
"most_comments": "Flest kommentarer", "most_comments": "Flest kommentarer",
"active": "Aktivt" "active": "Aktivt",
"not_a_mod_or_admin": "Inte en moderator eller administratör.",
"new_comments": "Nya kommentarer"
} }

View File

@ -1,3 +1,52 @@
{ {
"@@locale": "th" "@@locale": "th",
"settings": "การตั้งค่า",
"password": "รหัสผ่าน",
"email_or_username": "อีเมลหรือชื่อผู้ใช้",
"posts": "โพสต์",
"comments": "ความคิดเห็น",
"post": "โพสต์",
"save": "บันทึก",
"all": "ทั้งหมด",
"replies": "การตอบกลับ",
"mentions": "การกล่าวถึง",
"from": "จาก",
"to": "ไปยัง",
"more": "เพิ่มเติม",
"mark_as_read": "ทำเครื่องหมายว่าอ่านแล้ว",
"mark_as_unread": "ทำเครื่องหมายว่ายังไม่อ่าน",
"reply": "ตอบกลับ",
"edit": "แก้ไข",
"delete": "ลบ",
"yes": "ใช่",
"no": "ไม่",
"avatar": "รูปประจำตัว",
"email": "อีเมล",
"delete_account": "ลบบัญชี",
"saved": "บันทึกแล้ว",
"communities": "ชุมชน",
"users": "ผู้ใช้งาน",
"language": "ภาษา",
"new_": "ใหม่",
"old": "เก่า",
"chat": "แชท",
"by": "โดย",
"not_logged_in": "ไม่ได้เข้าสู่ระบบ",
"couldnt_save_post": "ไม่สามารถบันทึกโพสต์ได้",
"invalid_community_name": "ชื่อไม่ถูกต้อง",
"password_incorrect": "รหัสผ่านไม่ถูกต้อง",
"registration_closed": "การลงทะเบียนปิดอยู่",
"passwords_dont_match": "รหัสผ่านไม่ตรงกัน",
"email_already_exists": "อีเมลถูกใช้งานแล้ว",
"number_of_comments": "{count,plural, other{{count} ความคิดเห็น}}",
"number_of_posts": "{count,plural, other{{count} โพสต์}}",
"number_of_users": "{count,plural, other{ผู้ใช้ {count} คน}}",
"unsubscribe": "เลิกติดตาม",
"subscribe": "ติดตาม",
"messages": "ข้อความ",
"new_password": "รหัสผ่านใหม่",
"verify_password": "ยืนยันรหัสผ่าน",
"old_password": "รหัสผ่านเก่า",
"search": "ค้นหา",
"send_message": "ส่งข้อความ"
} }

20
lib/l10n/intl_zh_Hant.arb Normal file
View File

@ -0,0 +1,20 @@
{
"@@locale": "zh_Hant",
"posts": "貼文",
"comments": "評論",
"post": "回文",
"more": "更多",
"reply": "回覆",
"edit": "編輯",
"avatar": "虛擬化身",
"banner": "橫幅",
"communities": "社群",
"users": "使用者",
"invalid_community_name": "無效的名稱。",
"number_of_comments": "{count,plural, other{{count} 則評論}}",
"number_of_posts": "{count,plural, other{{count} 個貼文}}",
"show_avatars": "顯示頭像",
"send_message": "發送私人訊息",
"bot_account": "機器人帳號",
"show_bot_accounts": "顯示機器人帳號"
}

View File

@ -53,6 +53,11 @@ const _languageNames = {
'ru': 'Русский', 'ru': 'Русский',
'nl': 'Nederlands', 'nl': 'Nederlands',
'it': 'Italiano', 'it': 'Italiano',
'sr': 'Српски',
'zh_Hant': '繁體中文',
'nb': 'Norwegian',
'nb_NO': 'Norwegian Bokmål',
'bg': 'български',
}; };
extension LanguageName on Locale { extension LanguageName on Locale {

View File

@ -141,6 +141,9 @@ abstract class L10nStrings {
static const most_comments = 'most_comments'; static const most_comments = 'most_comments';
static const new_comments = 'new_comments'; static const new_comments = 'new_comments';
static const active = 'active'; static const active = 'active';
static const bot_account = 'bot_account';
static const show_bot_accounts = 'show_bot_accounts';
static const show_read_posts = 'show_read_posts';
} }
extension L10nFromString on String { extension L10nFromString on String {
@ -396,6 +399,12 @@ extension L10nFromString on String {
return L10n.of(context)!.new_comments; return L10n.of(context)!.new_comments;
case L10nStrings.active: case L10nStrings.active:
return L10n.of(context)!.active; return L10n.of(context)!.active;
case L10nStrings.bot_account:
return L10n.of(context)!.bot_account;
case L10nStrings.show_bot_accounts:
return L10n.of(context)!.show_bot_accounts;
case L10nStrings.show_read_posts:
return L10n.of(context)!.show_read_posts;
default: default:
return this; return this;

File diff suppressed because it is too large Load Diff

View File

@ -217,7 +217,7 @@ class CommunitiesTab extends HookWidget {
alwaysShow: true, alwaysShow: true,
), ),
const SizedBox(width: 10), const SizedBox(width: 10),
Text(comm.community.originDisplayName), Text(comm.community.originPreferredName),
], ],
), ),
trailing: _CommunitySubscribeToggle( trailing: _CommunitySubscribeToggle(

View File

@ -147,7 +147,7 @@ class CommunityPage extends HookWidget {
after: community.community.icon == null ? 110 : 190, after: community.community.icon == null ? 110 : 190,
fade: true, fade: true,
child: Text( child: Text(
community.community.displayName, community.community.preferredName,
overflow: TextOverflow.fade, overflow: TextOverflow.fade,
softWrap: false, softWrap: false,
), ),
@ -431,8 +431,7 @@ class _AboutTab extends StatelessWidget {
for (final mod in moderators!) for (final mod in moderators!)
// TODO: add user picture, maybe make it into reusable component // TODO: add user picture, maybe make it into reusable component
ListTile( ListTile(
title: Text( title: Text(mod.moderator.preferredName),
mod.moderator.preferredUsername ?? '@${mod.moderator.name}'),
onTap: () => goToUser.fromPersonSafe(context, mod.moderator), onTap: () => goToUser.fromPersonSafe(context, mod.moderator),
), ),
] ]

View File

@ -101,7 +101,7 @@ class FullPostPage extends HookWidget {
scrollController: scrollController, scrollController: scrollController,
after: 65, after: 65,
child: Text( child: Text(
post.community.originDisplayName, post.community.originPreferredName,
overflow: TextOverflow.fade, overflow: TextOverflow.fade,
), ),
), ),

View File

@ -312,7 +312,7 @@ class PrivateMessageTile extends HookWidget {
), ),
), ),
Text( Text(
otherSide.originDisplayName, otherSide.originPreferredName,
style: TextStyle(color: theme.accentColor), style: TextStyle(color: theme.accentColor),
), ),
], ],

View File

@ -343,7 +343,7 @@ class _AboutTab extends HookWidget {
), ),
for (final u in site.admins) for (final u in site.admins)
ListTile( ListTile(
title: Text(u.person.originDisplayName), title: Text(u.person.originPreferredName),
subtitle: u.person.bio != null subtitle: u.person.bio != null
? MarkdownText(u.person.bio!, instanceHost: instanceHost) ? MarkdownText(u.person.bio!, instanceHost: instanceHost)
: null, : null,

View File

@ -15,6 +15,7 @@ import '../util/more_icon.dart';
import '../util/pictrs.dart'; import '../util/pictrs.dart';
import '../widgets/bottom_modal.dart'; import '../widgets/bottom_modal.dart';
import '../widgets/bottom_safe.dart'; import '../widgets/bottom_safe.dart';
import '../widgets/editor.dart';
/// Page for managing things like username, email, avatar etc /// Page for managing things like username, email, avatar etc
/// This page will assume the manage account is logged in and /// This page will assume the manage account is logged in and
@ -100,7 +101,7 @@ class _ManageAccount extends HookWidget {
final deleteDelayedLoading = useDelayedLoading(); final deleteDelayedLoading = useDelayedLoading();
final displayNameController = final displayNameController =
useTextEditingController(text: user.person.preferredUsername); useTextEditingController(text: user.person.displayName);
final bioController = useTextEditingController(text: user.person.bio); final bioController = useTextEditingController(text: user.person.bio);
final emailController = final emailController =
useTextEditingController(text: user.localUser.email); useTextEditingController(text: user.localUser.email);
@ -109,11 +110,15 @@ class _ManageAccount extends HookWidget {
final avatar = useRef(user.person.avatar); final avatar = useRef(user.person.avatar);
final banner = useRef(user.person.banner); final banner = useRef(user.person.banner);
final showNsfw = useState(user.localUser.showNsfw); final showNsfw = useState(user.localUser.showNsfw);
final botAccount = useState(user.person.botAccount);
final showBotAccounts = useState(user.localUser.showBotAccounts);
final showReadPosts = useState(user.localUser.showReadPosts);
final sendNotificationsToEmail = final sendNotificationsToEmail =
useState(user.localUser.sendNotificationsToEmail); useState(user.localUser.sendNotificationsToEmail);
final newPasswordController = useTextEditingController(); // TODO: bring back changing password
final newPasswordVerifyController = useTextEditingController(); // final newPasswordController = useTextEditingController();
final oldPasswordController = useTextEditingController(); // final newPasswordVerifyController = useTextEditingController();
// final oldPasswordController = useTextEditingController();
final informAcceptedAvatarRef = useRef<VoidCallback?>(null); final informAcceptedAvatarRef = useRef<VoidCallback?>(null);
final informAcceptedBannerRef = useRef<VoidCallback?>(null); final informAcceptedBannerRef = useRef<VoidCallback?>(null);
@ -124,8 +129,8 @@ class _ManageAccount extends HookWidget {
final emailFocusNode = useFocusNode(); final emailFocusNode = useFocusNode();
final matrixUserFocusNode = useFocusNode(); final matrixUserFocusNode = useFocusNode();
final newPasswordFocusNode = useFocusNode(); final newPasswordFocusNode = useFocusNode();
final verifyPasswordFocusNode = useFocusNode(); // final verifyPasswordFocusNode = useFocusNode();
final oldPasswordFocusNode = useFocusNode(); // final oldPasswordFocusNode = useFocusNode();
final token = final token =
accountsStore.userDataFor(user.instanceHost, user.person.name)!.jwt; accountsStore.userDataFor(user.instanceHost, user.person.name)!.jwt;
@ -141,23 +146,17 @@ class _ManageAccount extends HookWidget {
defaultListingType: user.localUser.defaultListingType, defaultListingType: user.localUser.defaultListingType,
lang: user.localUser.lang, lang: user.localUser.lang,
showAvatars: user.localUser.showAvatars, showAvatars: user.localUser.showAvatars,
botAccount: botAccount.value,
showBotAccounts: showBotAccounts.value,
showReadPosts: showReadPosts.value,
sendNotificationsToEmail: sendNotificationsToEmail.value, sendNotificationsToEmail: sendNotificationsToEmail.value,
auth: token.raw, auth: token.raw,
avatar: avatar.current, avatar: avatar.current,
banner: banner.current, banner: banner.current,
newPassword: newPasswordController.text.isEmpty
? null
: newPasswordController.text,
newPasswordVerify: newPasswordVerifyController.text.isEmpty
? null
: newPasswordVerifyController.text,
oldPassword: oldPasswordController.text.isEmpty
? null
: oldPasswordController.text,
matrixUserId: matrixUserController.text.isEmpty matrixUserId: matrixUserController.text.isEmpty
? null ? null
: matrixUserController.text, : matrixUserController.text,
preferredUsername: displayNameController.text.isEmpty displayName: displayNameController.text.isEmpty
? null ? null
: displayNameController.text, : displayNameController.text,
bio: bioController.text.isEmpty ? null : bioController.text, bio: bioController.text.isEmpty ? null : bioController.text,
@ -264,12 +263,11 @@ class _ManageAccount extends HookWidget {
), ),
const SizedBox(height: 8), const SizedBox(height: 8),
Text(L10n.of(context)!.bio, style: theme.textTheme.headline6), Text(L10n.of(context)!.bio, style: theme.textTheme.headline6),
TextField( Editor(
controller: bioController, controller: bioController,
focusNode: bioFocusNode, focusNode: bioFocusNode,
textCapitalization: TextCapitalization.sentences,
onSubmitted: (_) => emailFocusNode.requestFocus(), onSubmitted: (_) => emailFocusNode.requestFocus(),
minLines: 4, instanceHost: user.instanceHost,
maxLines: 10, maxLines: 10,
), ),
const SizedBox(height: 8), const SizedBox(height: 8),
@ -289,36 +287,36 @@ class _ManageAccount extends HookWidget {
onSubmitted: (_) => newPasswordFocusNode.requestFocus(), onSubmitted: (_) => newPasswordFocusNode.requestFocus(),
), ),
const SizedBox(height: 8), const SizedBox(height: 8),
Text(L10n.of(context)!.new_password, style: theme.textTheme.headline6), // Text(L10n.of(context)!.new_password, style: theme.textTheme.headline6),
TextField( // TextField(
focusNode: newPasswordFocusNode, // focusNode: newPasswordFocusNode,
controller: newPasswordController, // controller: newPasswordController,
autofillHints: const [AutofillHints.newPassword], // autofillHints: const [AutofillHints.newPassword],
keyboardType: TextInputType.visiblePassword, // keyboardType: TextInputType.visiblePassword,
obscureText: true, // obscureText: true,
onSubmitted: (_) => verifyPasswordFocusNode.requestFocus(), // onSubmitted: (_) => verifyPasswordFocusNode.requestFocus(),
), // ),
const SizedBox(height: 8), // const SizedBox(height: 8),
Text(L10n.of(context)!.verify_password, // Text(L10n.of(context)!.verify_password,
style: theme.textTheme.headline6), // style: theme.textTheme.headline6),
TextField( // TextField(
focusNode: verifyPasswordFocusNode, // focusNode: verifyPasswordFocusNode,
controller: newPasswordVerifyController, // controller: newPasswordVerifyController,
autofillHints: const [AutofillHints.newPassword], // autofillHints: const [AutofillHints.newPassword],
keyboardType: TextInputType.visiblePassword, // keyboardType: TextInputType.visiblePassword,
obscureText: true, // obscureText: true,
onSubmitted: (_) => oldPasswordFocusNode.requestFocus(), // onSubmitted: (_) => oldPasswordFocusNode.requestFocus(),
), // ),
const SizedBox(height: 8), // const SizedBox(height: 8),
Text(L10n.of(context)!.old_password, style: theme.textTheme.headline6), // Text(L10n.of(context)!.old_password, style: theme.textTheme.headline6),
TextField( // TextField(
focusNode: oldPasswordFocusNode, // focusNode: oldPasswordFocusNode,
controller: oldPasswordController, // controller: oldPasswordController,
autofillHints: const [AutofillHints.password], // autofillHints: const [AutofillHints.password],
keyboardType: TextInputType.visiblePassword, // keyboardType: TextInputType.visiblePassword,
obscureText: true, // obscureText: true,
), // ),
const SizedBox(height: 8), // const SizedBox(height: 8),
SwitchListTile.adaptive( SwitchListTile.adaptive(
value: showNsfw.value, value: showNsfw.value,
onChanged: (checked) { onChanged: (checked) {
@ -328,6 +326,33 @@ class _ManageAccount extends HookWidget {
dense: true, dense: true,
), ),
const SizedBox(height: 8), const SizedBox(height: 8),
SwitchListTile.adaptive(
value: botAccount.value,
onChanged: (checked) {
botAccount.value = checked;
},
title: Text(L10n.of(context)!.bot_account),
dense: true,
),
const SizedBox(height: 8),
SwitchListTile.adaptive(
value: showBotAccounts.value,
onChanged: (checked) {
showBotAccounts.value = checked;
},
title: Text(L10n.of(context)!.show_bot_accounts),
dense: true,
),
const SizedBox(height: 8),
SwitchListTile.adaptive(
value: showReadPosts.value,
onChanged: (checked) {
showReadPosts.value = checked;
},
title: Text(L10n.of(context)!.show_read_posts),
dense: true,
),
const SizedBox(height: 8),
SwitchListTile.adaptive( SwitchListTile.adaptive(
value: sendNotificationsToEmail.value, value: sendNotificationsToEmail.value,
onChanged: (checked) { onChanged: (checked) {

View File

@ -132,7 +132,7 @@ class _ModlogTable extends StatelessWidget {
), ),
), ),
TextSpan( TextSpan(
text: ' ${user.displayName}', text: ' ${user.preferredName}',
style: TextStyle(color: theme.accentColor), style: TextStyle(color: theme.accentColor),
recognizer: TapGestureRecognizer() recognizer: TapGestureRecognizer()
..onTap = () => goToUser.byId( ..onTap = () => goToUser.byId(
@ -524,7 +524,7 @@ class _ModlogEntry {
radius: 10, radius: 10,
), ),
Text( Text(
' ${mod.displayName}', ' ${mod.preferredName}',
style: TextStyle(color: Theme.of(context).accentColor), style: TextStyle(color: Theme.of(context).accentColor),
), ),
], ],

View File

@ -39,7 +39,7 @@ class UsersListItem extends StatelessWidget {
@override @override
Widget build(BuildContext context) => ListTile( Widget build(BuildContext context) => ListTile(
title: Text(user.person.originDisplayName), title: Text(user.person.originPreferredName),
subtitle: user.person.bio != null subtitle: user.person.bio != null
? Opacity( ? Opacity(
opacity: 0.5, opacity: 0.5,

View File

@ -116,7 +116,7 @@ class WriteMessagePage extends HookWidget {
padding: const EdgeInsets.symmetric(horizontal: 16), padding: const EdgeInsets.symmetric(horizontal: 16),
child: Column( child: Column(
children: [ children: [
Text('to ${recipient.displayName}'), Text('to ${recipient.preferredName}'),
const SizedBox(height: 16), const SizedBox(height: 16),
body, body,
Align( Align(

View File

@ -107,8 +107,7 @@ class ConfigStore extends ChangeNotifier {
_locale = L10n.supportedLocales.contains(Locale(localUserSettings.lang)) _locale = L10n.supportedLocales.contains(Locale(localUserSettings.lang))
? Locale(localUserSettings.lang) ? Locale(localUserSettings.lang)
: _locale; : _locale;
// TODO: add when it is released _showScores = localUserSettings.showScores;
// _showScores = localUserSettings.showScores;
_defaultSortType = localUserSettings.defaultSortType; _defaultSortType = localUserSettings.defaultSortType;
_defaultListingType = localUserSettings.defaultListingType; _defaultListingType = localUserSettings.defaultListingType;

View File

@ -26,26 +26,26 @@ extension GetOriginInstanceCommentView on Comment {
String _extract(String url) => urlHost(url); String _extract(String url) => urlHost(url);
extension CommunityDisplayNames on CommunitySafe { extension CommunityPreferredNames on CommunitySafe {
String get displayName => '!$name'; String get preferredName => '!$name';
String get originDisplayName => String get originPreferredName =>
local ? displayName : '!$name@$originInstanceHost'; local ? preferredName : '!$name@$originInstanceHost';
} }
extension UserDisplayNames on PersonSafe { extension UserPreferredNames on PersonSafe {
String get displayName { String get preferredName {
final prefName = preferredUsername; final dispName = displayName;
if (prefName != null && prefName.isNotEmpty) { if (dispName != null && dispName.isNotEmpty) {
return prefName; return dispName;
} }
return '@$name'; return '@$name';
} }
String get originDisplayName { String get originPreferredName {
if (!local) return '$displayName@$originInstanceHost'; if (!local) return '$preferredName@$originInstanceHost';
return displayName; return preferredName;
} }
} }

View File

@ -385,7 +385,7 @@ class CommentWidget extends HookWidget {
InkWell( InkWell(
onTap: () => onTap: () =>
goToUser.fromPersonSafe(context, comment.creator), goToUser.fromPersonSafe(context, comment.creator),
child: Text(comment.creator.originDisplayName, child: Text(comment.creator.originPreferredName,
style: TextStyle( style: TextStyle(
color: theme.accentColor, color: theme.accentColor,
)), )),

View File

@ -9,6 +9,7 @@ class Editor extends HookWidget {
final FocusNode? focusNode; final FocusNode? focusNode;
final ValueChanged<String>? onSubmitted; final ValueChanged<String>? onSubmitted;
final int? minLines; final int? minLines;
final int? maxLines;
final String? labelText; final String? labelText;
final bool autofocus; final bool autofocus;
@ -22,6 +23,7 @@ class Editor extends HookWidget {
this.focusNode, this.focusNode,
this.onSubmitted, this.onSubmitted,
this.minLines = 5, this.minLines = 5,
this.maxLines,
this.labelText, this.labelText,
this.fancy = false, this.fancy = false,
required this.instanceHost, required this.instanceHost,
@ -50,7 +52,7 @@ class Editor extends HookWidget {
keyboardType: TextInputType.multiline, keyboardType: TextInputType.multiline,
textCapitalization: TextCapitalization.sentences, textCapitalization: TextCapitalization.sentences,
onSubmitted: onSubmitted, onSubmitted: onSubmitted,
maxLines: null, maxLines: maxLines,
minLines: minLines, minLines: minLines,
decoration: InputDecoration(labelText: labelText), decoration: InputDecoration(labelText: labelText),
); );

View File

@ -227,7 +227,7 @@ class PostWidget extends HookWidget {
fontWeight: FontWeight.w300), fontWeight: FontWeight.w300),
), ),
TextSpan( TextSpan(
text: ' ${post.creator.originDisplayName}', text: ' ${post.creator.originPreferredName}',
style: const TextStyle( style: const TextStyle(
fontWeight: FontWeight.w600), fontWeight: FontWeight.w600),
recognizer: TapGestureRecognizer() recognizer: TapGestureRecognizer()

View File

@ -218,7 +218,7 @@ class _UserOverview extends HookWidget {
else else
const SizedBox(height: 80), const SizedBox(height: 80),
Text( Text(
userView.person.displayName, userView.person.preferredName,
style: theme.textTheme.headline6, style: theme.textTheme.headline6,
), ),
const SizedBox(height: 4), const SizedBox(height: 4),

View File

@ -412,7 +412,7 @@ packages:
name: lemmy_api_client name: lemmy_api_client
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.14.0" version: "0.15.0"
logging: logging:
dependency: transitive dependency: transitive
description: description:

View File

@ -43,7 +43,7 @@ dependencies:
# utils # utils
timeago: ^3.0.2 timeago: ^3.0.2
fuzzy: ^0.4.0-nullsafety.0 fuzzy: ^0.4.0-nullsafety.0
lemmy_api_client: ^0.14.0 lemmy_api_client: ^0.15.0
intl: ^0.17.0 intl: ^0.17.0
matrix4_transform: ^2.0.0 matrix4_transform: ^2.0.0
json_annotation: ^4.0.1 json_annotation: ^4.0.1

View File

@ -174,6 +174,9 @@ const toMigrate = <_>[
_('most_comments'), _('most_comments'),
_('new_comments'), _('new_comments'),
_('active'), _('active'),
_('bot_account'),
_('show_bot_accounts'),
_('show_read_posts'),
]; ];
const repoName = 'lemmy-translations'; const repoName = 'lemmy-translations';