Merge branch 'master' into federation

This commit is contained in:
Dessalines 2020-06-27 10:54:08 -04:00
commit e517de5480
22 changed files with 336 additions and 130 deletions

2
ansible/VERSION vendored
View file

@ -1 +1 @@
v0.7.0 v0.7.2

View file

@ -1,13 +1,25 @@
{ {
# for more info about the config, check out the documentation
# https://dev.lemmy.ml/docs/administration_configuration.html
# settings related to the postgresql database
database: { database: {
# password to connect to postgres
password: "{{ postgres_password }}" password: "{{ postgres_password }}"
# host where postgres is running
host: "postgres" host: "postgres"
} }
# the domain name of your instance (eg "dev.lemmy.ml")
hostname: "{{ domain }}" hostname: "{{ domain }}"
# json web token for authorization between server and client
jwt_secret: "{{ jwt_password }}" jwt_secret: "{{ jwt_password }}"
# The location of the frontend
front_end_dir: "/app/dist" front_end_dir: "/app/dist"
# email sending configuration
email: { email: {
# hostname of the smtp server
smtp_server: "postfix:25" smtp_server: "postfix:25"
# address to send emails from, eg "noreply@your-instance.com"
smtp_from_address: "noreply@{{ domain }}" smtp_from_address: "noreply@{{ domain }}"
use_tls: false use_tls: false
} }

57
docker/lemmy.hjson vendored
View file

@ -1,18 +1,7 @@
{ {
database: { # for more info about the config, check out the documentation
# username to connect to postgres # https://dev.lemmy.ml/docs/administration_configuration.html
user: "lemmy"
# password to connect to postgres
password: "password"
# host where postgres is running
host: "postgres"
# port where postgres can be accessed
port: 5432
# name of the postgres database for lemmy
database: "lemmy"
# maximum number of active sql connections
pool_size: 5
}
# the domain name of your instance (eg "dev.lemmy.ml") # the domain name of your instance (eg "dev.lemmy.ml")
hostname: "my_domain" hostname: "my_domain"
# address where lemmy should listen for incoming requests # address where lemmy should listen for incoming requests
@ -21,32 +10,19 @@
port: 8536 port: 8536
# json web token for authorization between server and client # json web token for authorization between server and client
jwt_secret: "changeme" jwt_secret: "changeme"
# The dir for the front end # settings related to the postgresql database
front_end_dir: "/app/dist" database: {
# rate limits for various user actions, by user ip # name of the postgres database for lemmy
rate_limit: { database: "lemmy"
# maximum number of messages created in interval # username to connect to postgres
message: 180 user: "lemmy"
# interval length for message limit # password to connect to postgres
message_per_second: 60 password: "password"
# maximum number of posts created in interval # host where postgres is running
post: 6 host: "postgres"
# interval length for post limit
post_per_second: 600
# maximum number of registrations in interval
register: 3
# interval length for registration limit
register_per_second: 3600
} }
# # optional: parameters for automatic configuration of new instance (only used at first start) # The location of the frontend
# setup: { front_end_dir: "/app/dist"
# # username for the admin user
# admin_username: "lemmy"
# # password for the admin user
# admin_password: "lemmy"
# # name of the site (can be changed later)
# site_name: "Lemmy Test"
# }
# # optional: email sending configuration # # optional: email sending configuration
# email: { # email: {
# # hostname of the smtp server # # hostname of the smtp server
@ -55,9 +31,8 @@
# smtp_login: "" # smtp_login: ""
# # password to login to the smtp server # # password to login to the smtp server
# smtp_password: "" # smtp_password: ""
# # address to send emails from, eg "info@your-instance.com" # # address to send emails from, eg "noreply@your-instance.com"
# smtp_from_address: "" # smtp_from_address: ""
# use_tls: true
# } # }
} }

View file

@ -12,7 +12,7 @@ services:
restart: always restart: always
lemmy: lemmy:
image: dessalines/lemmy:v0.7.0 image: dessalines/lemmy:v0.7.2
ports: ports:
- "127.0.0.1:8536:8536" - "127.0.0.1:8536:8536"
restart: always restart: always

1
docs/src/SUMMARY.md vendored
View file

@ -14,6 +14,7 @@
- [Contributing](contributing.md) - [Contributing](contributing.md)
- [Docker Development](contributing_docker_development.md) - [Docker Development](contributing_docker_development.md)
- [Local Development](contributing_local_development.md) - [Local Development](contributing_local_development.md)
- [Tests](contributing_tests.md)
- [Federation Development](contributing_federation_development.md) - [Federation Development](contributing_federation_development.md)
- [Websocket/HTTP API](contributing_websocket_http_api.md) - [Websocket/HTTP API](contributing_websocket_http_api.md)
- [ActivityPub API Outline](contributing_apub_api_outline.md) - [ActivityPub API Outline](contributing_apub_api_outline.md)

View file

@ -1,13 +1,20 @@
# Configuration # Configuration
The configuration is based on the file [defaults.hjson](server/config/defaults.hjson). This file also contains documentation for all the available options. To override the defaults, you can copy the options you want to change into your local `config.hjson` file. The configuration is based on the file
[defaults.hjson](https://yerbamate.dev/LemmyNet/lemmy/src/branch/master/server/config/defaults.hjson).
This file also contains documentation for all the available options. To override the defaults, you
can copy the options you want to change into your local `config.hjson` file.
Additionally, you can override any config files with environment variables. These have the same name as the config options, and are prefixed with `LEMMY_`. For example, you can override the `database.password` with Additionally, you can override any config files with environment variables. These have the same
`LEMMY__DATABASE__POOL_SIZE=10`. name as the config options, and are prefixed with `LEMMY_`. For example, you can override the
`database.password` with `LEMMY__DATABASE__POOL_SIZE=10`.
An additional option `LEMMY_DATABASE_URL` is available, which can be used with a PostgreSQL connection string like `postgres://lemmy:password@lemmy_db:5432/lemmy`, passing all connection details at once. An additional option `LEMMY_DATABASE_URL` is available, which can be used with a PostgreSQL
connection string like `postgres://lemmy:password@lemmy_db:5432/lemmy`, passing all connection
details at once.
If the Docker container is not used, manually create the database specified above by running the following commands: If the Docker container is not used, manually create the database specified above by running the
following commands:
```bash ```bash
cd server cd server

View file

@ -4,9 +4,9 @@ Information about contributing to Lemmy, whether it is translating, testing, des
## Issue tracking / Repositories ## Issue tracking / Repositories
- [GitHub (for issues)](https://github.com/LemmyNet/lemmy) - [GitHub (for issues and pull requests)](https://github.com/LemmyNet/lemmy)
- [Gitea](https://yerbamate.dev/LemmyNet/lemmy) - [Gitea (only for pull requests)](https://yerbamate.dev/LemmyNet/lemmy)
- [GitLab](https://gitlab.com/dessalines/lemmy) - [GitLab (only code-mirror)](https://gitlab.com/dessalines/lemmy)
## Translating ## Translating

18
docs/src/contributing_tests.md vendored Normal file
View file

@ -0,0 +1,18 @@
### Tests
#### Rust
After installing [local development dependencies](contributing_local_development.md), run the
following commands in the `server` subfolder:
```bash
psql -U lemmy -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
export DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy
diesel migration run
RUST_TEST_THREADS=1 cargo test
```
### Federation
Install the [Docker development dependencies](contributing_docker_development.md), and execute
`docker/federation-test/run-tests.sh`

View file

@ -49,5 +49,7 @@
## Member List / Contact Info ## Member List / Contact Info
General Contact [@LemmyDev Mastodon](https://mastodon.social/@LemmyDev) General Contact [@LemmyDev Mastodon](https://mastodon.social/@LemmyDev)
- Dessalines [Matrix](https://matrix.to/#/@happydooby:matrix.org) - [Dessalines](https://dev.lemmy.ml/u/dessalines)
- Nutomic [Matrix](https://matrix.to/#/@nutomic:matrix.org), [Mastodon](https://radical.town/@felix) - [Nutomic](https://dev.lemmy.ml/u/nutomic)
- [AgreeableLandscape](https://dev.lemmy.ml/u/AgreeableLandscape)
- [fruechtchen](https://dev.lemmy.ml/u/fruechtchen)

View file

@ -33,7 +33,7 @@
port: 8536 port: 8536
# json web token for authorization between server and client # json web token for authorization between server and client
jwt_secret: "changeme" jwt_secret: "changeme"
# The dir for the front end # The location of the frontend
front_end_dir: "../ui/dist" front_end_dir: "../ui/dist"
# rate limits for various user actions, by user ip # rate limits for various user actions, by user ip
rate_limit: { rate_limit: {
@ -61,13 +61,15 @@
} }
# # email sending configuration # # email sending configuration
# email: { # email: {
# # hostname of the smtp server # # hostname and port of the smtp server
# smtp_server: "" # smtp_server: ""
# # login name for smtp server # # login name for smtp server
# smtp_login: "" # smtp_login: ""
# # password to login to the smtp server # # password to login to the smtp server
# smtp_password: "" # smtp_password: ""
# # address to send emails from, eg "info@your-instance.com" # # address to send emails from, eg "noreply@your-instance.com"
# smtp_from_address: "" # smtp_from_address: ""
# # whether or not smtp connections should use tls
# use_tls: true
# } # }
} }

View file

@ -1 +1 @@
pub const VERSION: &str = "v0.7.0"; pub const VERSION: &str = "v0.7.2";

View file

@ -37,7 +37,7 @@
} }
.md-div img { .md-div img {
max-height: 90vh; max-height: 40vh;
max-width: 100%; max-width: 100%;
height: auto; height: auto;
} }

File diff suppressed because one or more lines are too long

View file

@ -245,7 +245,7 @@ export class CommentForm extends Component<CommentFormProps, CommentFormState> {
}); });
} }
handleFinished(data: CommentResponse) { handleFinished(op: UserOperation, data: CommentResponse) {
let isReply = let isReply =
this.props.node !== undefined && data.comment.parent_id !== null; this.props.node !== undefined && data.comment.parent_id !== null;
let xor = let xor =
@ -253,11 +253,16 @@ export class CommentForm extends Component<CommentFormProps, CommentFormState> {
if ( if (
(data.comment.creator_id == UserService.Instance.user.id && (data.comment.creator_id == UserService.Instance.user.id &&
((op == UserOperation.CreateComment &&
// If its a reply, make sure parent child match // If its a reply, make sure parent child match
isReply && isReply &&
data.comment.parent_id == this.props.node.comment.id) || data.comment.parent_id == this.props.node.comment.id) ||
// Otherwise, check the XOR of the two // Otherwise, check the XOR of the two
(!isReply && xor) (!isReply && xor))) ||
// If its a comment edit, only check that its from your user, and that its a
// text edit only
(op == UserOperation.EditComment && data.comment.content)
) { ) {
this.state.previewMode = false; this.state.previewMode = false;
this.state.loading = false; this.state.loading = false;
@ -373,10 +378,10 @@ export class CommentForm extends Component<CommentFormProps, CommentFormState> {
if (UserService.Instance.user) { if (UserService.Instance.user) {
if (res.op == UserOperation.CreateComment) { if (res.op == UserOperation.CreateComment) {
let data = res.data as CommentResponse; let data = res.data as CommentResponse;
this.handleFinished(data); this.handleFinished(res.op, data);
} else if (res.op == UserOperation.EditComment) { } else if (res.op == UserOperation.EditComment) {
let data = res.data as CommentResponse; let data = res.data as CommentResponse;
this.handleFinished(data); this.handleFinished(res.op, data);
} }
} }
} }

4
ui/src/utils.ts vendored
View file

@ -527,7 +527,7 @@ export function pictrsDeleteToast(
backgroundColor: backgroundColor, backgroundColor: backgroundColor,
gravity: 'top', gravity: 'top',
position: 'right', position: 'right',
duration: 0, duration: 10000,
onClick: () => { onClick: () => {
if (toast) { if (toast) {
window.location.replace(deleteUrl); window.location.replace(deleteUrl);
@ -556,7 +556,7 @@ export function messageToastify(
close: true, close: true,
gravity: 'top', gravity: 'top',
position: 'right', position: 'right',
duration: 0, duration: 5000,
onClick: () => { onClick: () => {
if (toast) { if (toast) {
toast.hideToast(); toast.hideToast();

2
ui/src/version.ts vendored
View file

@ -1 +1 @@
export const version: string = 'v0.7.0'; export const version: string = 'v0.7.2';

View file

@ -10,7 +10,8 @@
"cross_posts": "Tiuj ligilo ankaŭ estas poŝtinta al:", "cross_posts": "Tiuj ligilo ankaŭ estas poŝtinta al:",
"cross_post": "laŭapoŝto", "cross_post": "laŭapoŝto",
"comments": "Komentoj", "comments": "Komentoj",
"number_of_comments": "{{count}} Komentoj", "number_of_comments": "{{count}} Komento",
"number_of_comments_plural": "{{count}} Komentoj",
"remove_comment": "Fortiri Komentojn", "remove_comment": "Fortiri Komentojn",
"communities": "Komunumoj", "communities": "Komunumoj",
"users": "Uzantoj", "users": "Uzantoj",
@ -94,8 +95,7 @@
"login_sign_up": "Ensaluti / Registriĝi", "login_sign_up": "Ensaluti / Registriĝi",
"login": "Ensaluti", "login": "Ensaluti",
"sign_up": "Registriĝi", "sign_up": "Registriĝi",
"notifications_error": "notifications_error": "Labortablaj avizoj estas nehavebla en via retumilo. Provu Firefox-on aŭ Chrome-on.",
"Labortablaj avizoj estas nehavebla en via retumilo. Provu Firefox-on aŭ Chrome-on.",
"unread_messages": "Nelegitaj Mesaĝoj", "unread_messages": "Nelegitaj Mesaĝoj",
"password": "Pasvorto", "password": "Pasvorto",
"verify_password": "Konfirmu Vian Pasvorton", "verify_password": "Konfirmu Vian Pasvorton",
@ -120,11 +120,9 @@
"show_nsfw": "Vidigi NSFW-an enhavon", "show_nsfw": "Vidigi NSFW-an enhavon",
"sponsors": "Subtenantoj", "sponsors": "Subtenantoj",
"sponsors_of_lemmy": "Subtenantoj de Lemmy", "sponsors_of_lemmy": "Subtenantoj de Lemmy",
"sponsor_message": "sponsor_message": "Lemmy estas senpaga, <1>liberkoda</1> programaro. Tio signifas ne reklami, pagigi, aŭ riska kapitalo, ĉiam. Viaj donacoj rekte subtenas plentempan evoluon de la projekto. Dankon al tiuj homoj:",
"Lemmy estas senpaga, <1>liberkoda</1> programaro. Tio signifas ne reklami, pagigi, aŭ riska kapitalo, ĉiam. Viaj donacoj rekte subtenas plentempan evoluon de la projekto. Dankon al tiuj homoj:",
"support_on_patreon": "Subteni per Patreon", "support_on_patreon": "Subteni per Patreon",
"general_sponsors": "general_sponsors": "Ĝeneralaj Subtenantoj estas tiuj ke donacis inter $10 kaj $39 al Lemmy.",
"Ĝeneralaj Subtenantoj estas tiuj ke donacis inter $10 kaj $39 al Lemmy.",
"crypto": "Crypto", "crypto": "Crypto",
"bitcoin": "Bitcoin", "bitcoin": "Bitcoin",
"ethereum": "Ethereum", "ethereum": "Ethereum",
@ -136,8 +134,7 @@
"transfer_community": "transdoni la komunumon", "transfer_community": "transdoni la komunumon",
"transfer_site": "transdoni la retejon", "transfer_site": "transdoni la retejon",
"powered_by": "Konstruis per", "powered_by": "Konstruis per",
"landing_0": "landing_0": "Lemmy estas <1>ligila agregatilo</1> / Reddit anstataŭo ke intenciĝas funkci en la <2>federacio-universo</2>.<3></3>ĝi estas mem-gastigebla, havas nuna-ĝisdatigajn komentarojn, kaj estas malgrandega (<4>~80kB</4>). Federacio en la ActivityPub-an reton estas planizita. <5></5>Estas <6>fruega beta versio</6>, kaj multaj trajtoj estas nune difektaj aŭ mankaj. <7></7>Sugestias novajn trajtojn aŭ raportas cimojn <8>ĉi tie.</8><9></9>Faris per <10>Rust</10>, <11>Actix</11>, <12>Inferno</12>, <13>Typescript</13>.",
"Lemmy estas <1>ligila agregatilo</1> / Reddit anstataŭo ke intenciĝas funkci en la <2>federacio-universo</2>.<3></3>ĝi estas mem-gastigebla, havas nuna-ĝisdatigajn komentarojn, kaj estas malgrandega (<4>~80kB</4>). Federacio en la ActivityPub-an reton estas planizita. <5></5>Estas <6>fruega beta versio</6>, kaj multaj trajtoj estas nune difektaj aŭ mankaj. <7></7>Sugestias novajn trajtojn aŭ raportas cimojn <8>ĉi tie.</8><9></9>Faris per <10>Rust</10>, <11>Actix</11>, <12>Inferno</12>, <13>Typescript</13>.",
"not_logged_in": "Ne estas ensalutinta.", "not_logged_in": "Ne estas ensalutinta.",
"community_ban": "Vi estas forbarita de la komunumo.", "community_ban": "Vi estas forbarita de la komunumo.",
"site_ban": "Vi estas forbarita de la retejo", "site_ban": "Vi estas forbarita de la retejo",
@ -164,12 +161,17 @@
"not_an_admin": "Ne estas administranto.", "not_an_admin": "Ne estas administranto.",
"site_already_exists": "Retejo jam ekzistas.", "site_already_exists": "Retejo jam ekzistas.",
"couldnt_update_site": "Ne povis ĝisdatigi la retejon.", "couldnt_update_site": "Ne povis ĝisdatigi la retejon.",
"couldnt_find_that_username_or_email": "couldnt_find_that_username_or_email": "Ne povis trovi tiun uzantnomon aŭ retadreson.",
"Ne povis trovi tiun uzantnomon aŭ retadreson.",
"password_incorrect": "Pasvorto malĝustas.", "password_incorrect": "Pasvorto malĝustas.",
"passwords_dont_match": "Pasvortoj ne samas.", "passwords_dont_match": "Pasvortoj ne samas.",
"admin_already_created": "Pardonu, jam estas administranto.", "admin_already_created": "Pardonu, jam estas administranto.",
"user_already_exists": "Uzanto jam ekzistas.", "user_already_exists": "Uzanto jam ekzistas.",
"couldnt_update_user": "Ne povis ĝisdatigi la uzanton.", "couldnt_update_user": "Ne povis ĝisdatigi la uzanton.",
"system_err_login": "Sistema eraro. Provu elsaluti kaj ensaluti." "system_err_login": "Sistema eraro. Provu elsaluti kaj ensaluti.",
"send_message": "Sendi mesaĝon",
"message": "Mesaĝo",
"number_of_communities": "{{count}} Komunumo",
"number_of_communities_plural": "{{count}} Komunumoj",
"more": "pli",
"select_a_community": "Elekti komunumon"
} }

View file

@ -253,5 +253,8 @@
"emoji_picker": "Lista de emojis", "emoji_picker": "Lista de emojis",
"admin_settings": "Panel de Administración", "admin_settings": "Panel de Administración",
"select_a_community": "Selecciona una comunidad", "select_a_community": "Selecciona una comunidad",
"invalid_username": "Nombre de usuario inválido." "invalid_username": "Nombre de usuario inválido.",
"invalid_community_name": "Nombre inválido.",
"click_to_delete_picture": "Haz click para eliminar la imagen.",
"picture_deleted": "Imagen borrada."
} }

View file

@ -10,7 +10,7 @@
"related_posts": "Publications similaires", "related_posts": "Publications similaires",
"cross_posts": "Ce lien a également été publié sur :", "cross_posts": "Ce lien a également été publié sur :",
"cross_post": "publication croisée", "cross_post": "publication croisée",
"cross_posted_to": "publication croisée à : ", "cross_posted_to": "publication croisée sur : ",
"comments": "Commentaires", "comments": "Commentaires",
"number_of_comments": "{{count}} Commentaire", "number_of_comments": "{{count}} Commentaire",
"number_of_comments_plural": "{{count}} Commentaires", "number_of_comments_plural": "{{count}} Commentaires",
@ -25,41 +25,41 @@
"list_of_communities": "Liste des communautés", "list_of_communities": "Liste des communautés",
"number_of_communities": "{{count}} Communauté", "number_of_communities": "{{count}} Communauté",
"number_of_communities_plural": "{{count}} Communautés", "number_of_communities_plural": "{{count}} Communautés",
"community_reqs": "en minuscule, sans espace et avec tiret du bas.", "community_reqs": "en minuscule, tirets du bas et sans espace.",
"create_private_message": "Créer un message privé", "create_private_message": "Créer un message privé",
"send_secure_message": "Envoyer le message sécurisé", "send_secure_message": "Envoyer un message sécurisé",
"send_message": "Envoyer le message", "send_message": "Envoyer le message",
"message": "Message", "message": "Message",
"edit": "éditer", "edit": "éditer",
"reply": "répondre", "reply": "répondre",
"cancel": "Annuler", "cancel": "Annuler",
"preview": "prévisualiser", "preview": "Prévisualiser",
"upload_image": "envoyer une image", "upload_image": "envoyer une image",
"avatar": "Avatar", "avatar": "Avatar",
"upload_avatar": "Télécharger un avatar", "upload_avatar": "Télécharger un avatar",
"show_avatars": "Afficher les avatars", "show_avatars": "Afficher les avatars",
"formatting_help": "aide au formattage", "formatting_help": "aide au formatage",
"view_source": "voir la source", "view_source": "voir la source",
"unlock": "débloquer", "unlock": "déverrouiller",
"lock": "bloquer", "lock": "verrouiller",
"sticky": "épingler", "sticky": "épingler",
"unsticky": "décrocher", "unsticky": "désépingler",
"link": "lien", "link": "lien",
"archive_link": "archiver le lien", "archive_link": "archiver le lien",
"mod": "modérateur", "mod": "modérateur",
"mods": "modérateurs", "mods": "modérateurs",
"moderates": "Modérer", "moderates": "Modérer",
"settings": "Paramètres", "settings": "Paramètres",
"remove_as_mod": "Supprimer comme modérateur", "remove_as_mod": "supprimer comme modérateur",
"appoint_as_mod": "Nommer comme modérateur", "appoint_as_mod": "nommer comme modérateur",
"modlog": "Historique de modération", "modlog": "Historique de modération",
"admin": "admin", "admin": "admin",
"admins": "admins", "admins": "admins",
"remove_as_admin": "Supprimer comme admin", "remove_as_admin": "supprimer comme admin",
"appoint_as_admin": "Nommer comme admin", "appoint_as_admin": "nommer comme admin",
"remove": "retirer", "remove": "retirer",
"removed": "retiré par le modérateur", "removed": "supprimé par le modérateur",
"locked": "bloqué", "locked": "verrouillé",
"stickied": "épinglé", "stickied": "épinglé",
"reason": "Raison", "reason": "Raison",
"mark_as_read": "marquer comme lu", "mark_as_read": "marquer comme lu",
@ -71,13 +71,13 @@
"restore": "restaurer", "restore": "restaurer",
"ban": "bannir", "ban": "bannir",
"ban_from_site": "bannir du site", "ban_from_site": "bannir du site",
"unban": "pardon", "unban": "débannir",
"unban_from_site": "faire revenir sur le site", "unban_from_site": "débannir du site",
"banned": "banni", "banned": "banni",
"save": "sauvegarder", "save": "sauvegarder",
"unsave": "retirer", "unsave": "retirer",
"create": "créer", "create": "créer",
"creator": "createur", "creator": "créateur",
"username": "Nom dutilisateur·rice", "username": "Nom dutilisateur·rice",
"email_or_username": "Email ou nom dutilisateur·rice", "email_or_username": "Email ou nom dutilisateur·rice",
"number_of_users": "{{count}} Utilisateur", "number_of_users": "{{count}} Utilisateur",
@ -128,7 +128,7 @@
"login_sign_up": "Se connecter / Sinscrire", "login_sign_up": "Se connecter / Sinscrire",
"login": "Se connecter", "login": "Se connecter",
"sign_up": "Sinscrire", "sign_up": "Sinscrire",
"notifications_error": "Les notifications de bureau ne sont pas discponibles sur votre navigateur. Essayez Firefox ou Chrome.", "notifications_error": "Les notifications de bureau ne sont pas disponibles sur votre navigateur. Essayez Firefox ou Chrome.",
"unread_messages": "Messages non-lu", "unread_messages": "Messages non-lu",
"messages": "Messages", "messages": "Messages",
"password": "Mot de passe", "password": "Mot de passe",
@ -143,7 +143,7 @@
"matrix_user_id": "Utilisateur Matrix", "matrix_user_id": "Utilisateur Matrix",
"private_message_disclaimer": "Attention : les messages privés dans Lemmy ne sont pas sécurisés. Veuillez créer un compte sur <1>Riot.im</1> pour pouvoir envoyer des messages sécurisés.", "private_message_disclaimer": "Attention : les messages privés dans Lemmy ne sont pas sécurisés. Veuillez créer un compte sur <1>Riot.im</1> pour pouvoir envoyer des messages sécurisés.",
"send_notifications_to_email": "Envoyer des notifications par email", "send_notifications_to_email": "Envoyer des notifications par email",
"optional": "Optionnel", "optional": "Facultatif",
"expires": "Expire", "expires": "Expire",
"language": "Langue", "language": "Langue",
"browser_default": "Défaut pour le navigateur", "browser_default": "Défaut pour le navigateur",
@ -176,7 +176,7 @@
"support_on_liberapay": "Soutenir sur Liberapay", "support_on_liberapay": "Soutenir sur Liberapay",
"donate_to_lemmy": "Faire un don à Lemmy", "donate_to_lemmy": "Faire un don à Lemmy",
"donate": "Faire un don", "donate": "Faire un don",
"general_sponsors": "Les sponsors généraux sont ceux garantissant de 10 à 39$.", "general_sponsors": "Les Sponsors Généraux sont celles et ceux qui ont fait une donation entre 10 et 39$.",
"crypto": "Cryptomonnaies", "crypto": "Cryptomonnaies",
"bitcoin": "Bitcoin", "bitcoin": "Bitcoin",
"ethereum": "Ethereum", "ethereum": "Ethereum",
@ -192,7 +192,7 @@
"yes": "oui", "yes": "oui",
"no": "non", "no": "non",
"powered_by": "Propulsé par", "powered_by": "Propulsé par",
"landing": "Lemmy est un <1>aggrégateur de liens</1>, similaire à reddit et conçu pour fonctionner sur le <2>fédiverse</2>.<3></3>Il est auto-hébergeable, se met à jour en direct et est léger (<4>~80kB</4>). La fédération via ActivityPub est prévue dans sa feuille de route. <5></5>Lemmy est une <6>version beta très précoce</6> et de nombreuses fonctionnalités sont manquantes ou non fonctionnelles. <7></7>Vous pouvez rapporter des bugs et suggérer de nouvelles fonctionnalités <8>ici.</8><9></9>Crée avec <10>Rust</10>, <11>Actix</11>, <12>Inferno</12>, <13>Typescript</13>.", "landing": "Lemmy est un <1>aggrégateur de liens</1>, similaire à Reddit et conçu pour fonctionner sur le <2>Fédivers</2>.<3></3>Il est auto-hébergeable, se met à jour en direct et est léger (<4>~80kB</4>). La fédération via ActivityPub est prévue dans sa feuille de route. <5></5>Lemmy est une <6>version beta très précoce</6> et de nombreuses fonctionnalités sont manquantes ou non fonctionnelles. <7></7>Vous pouvez signaler des bugs et suggérer de nouvelles fonctionnalités <8>ici.</8><9></9>Créé avec <10>Rust</10>, <11>Actix</11>, <12>Inferno</12>, <13>Typescript</13>.",
"not_logged_in": "Vous nêtes pas connecté.", "not_logged_in": "Vous nêtes pas connecté.",
"logged_in": "Vous êtes connecté.", "logged_in": "Vous êtes connecté.",
"community_ban": "Vous avez été banni de cette communauté.", "community_ban": "Vous avez été banni de cette communauté.",
@ -201,12 +201,12 @@
"couldnt_like_comment": "Impossible daimer le commentaire.", "couldnt_like_comment": "Impossible daimer le commentaire.",
"couldnt_update_comment": "Impossible de mettre à jour le commentaire.", "couldnt_update_comment": "Impossible de mettre à jour le commentaire.",
"couldnt_save_comment": "Impossible de sauvegarder le commentaire.", "couldnt_save_comment": "Impossible de sauvegarder le commentaire.",
"couldnt_get_comments": "Impossible de obtenir les commentaires.", "couldnt_get_comments": "Impossible d'obtenir les commentaires.",
"no_comment_edit_allowed": "Vous nêtes pas autorisé à éditer ce commentaire.", "no_comment_edit_allowed": "Vous nêtes pas autorisé à éditer ce commentaire.",
"no_post_edit_allowed": "Vous nêtes pas autorisé à éditer la publication.", "no_post_edit_allowed": "Vous nêtes pas autorisé à éditer cette publication.",
"no_community_edit_allowed": "Vous nêtes pas autorisé à éditer cette communauté.", "no_community_edit_allowed": "Vous nêtes pas autorisé à éditer cette communauté.",
"couldnt_find_community": "Impossible de trouver cette communauté.", "couldnt_find_community": "Impossible de trouver cette communauté.",
"couldnt_update_community": "Impossible déditer cette communauté.", "couldnt_update_community": "Impossible de mettre à jour cette communauté.",
"community_already_exists": "Cette communauté existe déjà.", "community_already_exists": "Cette communauté existe déjà.",
"community_moderator_already_exists": "Ce membre est déjà modérateur.", "community_moderator_already_exists": "Ce membre est déjà modérateur.",
"community_follower_already_exists": "Ce membre est déjà abonné.", "community_follower_already_exists": "Ce membre est déjà abonné.",
@ -224,34 +224,37 @@
"couldnt_update_site": "Impossible de mettre à jour le site.", "couldnt_update_site": "Impossible de mettre à jour le site.",
"couldnt_find_that_username_or_email": "Impossible de trouver cet·te utilisateur·rice ou cet email.", "couldnt_find_that_username_or_email": "Impossible de trouver cet·te utilisateur·rice ou cet email.",
"password_incorrect": "Mot de passe incorrect.", "password_incorrect": "Mot de passe incorrect.",
"passwords_dont_match": "Les mots de passes ne correspondent pas..", "passwords_dont_match": "Les mots de passes ne correspondent pas.",
"admin_already_created": "Désolé, il y a déjà un admin.", "admin_already_created": "Désolé, il y a déjà un admin.",
"user_already_exists": "Lutilisateur·rice existe déjà.", "user_already_exists": "Lutilisateur·rice existe déjà.",
"email_already_exists": "Lemail existe déjà.", "email_already_exists": "Lemail existe déjà.",
"couldnt_update_user": "Impossible de mettre à jour lutilisateur·rice.", "couldnt_update_user": "Impossible de mettre à jour lutilisateur·rice.",
"system_err_login": "Erreur système. Essayez de vous déconneter puis de vous reconnecter.", "system_err_login": "Erreur système. Essayez de vous déconnecter puis de vous reconnecter.",
"couldnt_create_private_message": "Impossible de créer un message privé.", "couldnt_create_private_message": "Impossible de créer un message privé.",
"no_private_message_edit_allowed": "Pas autorisé à modifier un message privé.", "no_private_message_edit_allowed": "Pas autorisé à modifier un message privé.",
"couldnt_update_private_message": "Impossible de modifier un message privé.", "couldnt_update_private_message": "Impossible de modifier le message privé.",
"time": "Temps", "time": "Temps",
"action": "Action", "action": "Action",
"more": "plus", "more": "plus",
"admin_settings": "Paramètres administratifs", "admin_settings": "Paramètres Administrateur",
"site_config": "Configuration du site", "site_config": "Configuration du site",
"banned_users": "Utilisateurs interdits", "banned_users": "Utilisateurs interdits",
"site_saved": "Site sauvegardé.", "site_saved": "Site sauvegardé.",
"support_on_open_collective": "Soutien à OpenCollective", "support_on_open_collective": "Soutien sur OpenCollective",
"sorting_help": "aide au tri", "sorting_help": "aide au tri",
"upvote": "Aime", "upvote": "Voter pour",
"show_context": "Afficher le contexte", "show_context": "Afficher le contexte",
"block_leaving": "Vous êtes sûr de vouloir partir ?", "block_leaving": "Etes-vous sûr de vouloir partir ?",
"number_of_upvotes": "{{count}} votes pour", "number_of_upvotes": "{{count}} Votes pour",
"number_of_upvotes_plural": "{{count}} votes contre", "number_of_upvotes_plural": "{{count}} Votes contre",
"number_of_downvotes": "{{count}} vote contre", "number_of_downvotes": "{{count}} Vote contre",
"number_of_downvotes_plural": "{{count}} votes contre", "number_of_downvotes_plural": "{{count}} Votes contre",
"downvote": "Voter contre", "downvote": "Voter contre",
"emoji_picker": "Sélecteur démojis", "emoji_picker": "Sélecteur dÉmojis",
"silver_sponsors": "Les sponsors argent sont ceux et celles qui ont fait une donation de 40$ à Lemmy.", "silver_sponsors": "Les Sponsors Argent sont celles et ceux qui ont fait une donation de 40$ à Lemmy.",
"select_a_community": "Sélectionner une communauté", "select_a_community": "Sélectionner une communauté",
"invalid_username": "Nom d'utilisateur invalide." "invalid_username": "Nom d'utilisateur invalide.",
"invalid_community_name": "Nom invalide.",
"click_to_delete_picture": "Cliquer pour supprimer l'image.",
"picture_deleted": "Image supprimée."
} }

View file

@ -103,5 +103,158 @@
"number_of_users_plural": "{{count}} felhasználó", "number_of_users_plural": "{{count}} felhasználó",
"number_online": "{{count}} online felhasználó", "number_online": "{{count}} online felhasználó",
"number_online_plural": "{{count}} online felhasználó", "number_online_plural": "{{count}} online felhasználó",
"subscribers": "Feliratkozók" "subscribers": "Feliratkozók",
"prev": "Előző",
"next": "Következő",
"sidebar": "Oldalsáv",
"sort_type": "Rendezési mód",
"hot": "Népszerű",
"new": "Új",
"old": "Régi",
"invalid_community_name": "Érvénytelen név.",
"inbox_for": "Bejövő üzenetek <1>{{user}}</1> részére",
"overview": "Áttekintés",
"notifications_error": "Az asztali értesítések nem érhetőek el a böngésződben. Próbáld meg Firefoxszal vagy Chrome-mal!",
"no_email_setup": "Az email nincs megfelelően beállítva ezen a szerveren.",
"click_to_delete_picture": "Kattints a kép törléséhez!",
"picture_deleted": "Kép törölve.",
"top_day": "A nap bejegyzése",
"week": "Hét",
"month": "Hónap",
"year": "Év",
"all": "Mind",
"top": "Legjobb",
"api": "API",
"docs": "Dokumentáció",
"inbox": "Bejövő üzenetek",
"mark_all_as_read": "az összes megjelölése olvasottként",
"type": "Típus",
"unread": "Olvastalan",
"replies": "Válaszok",
"mentions": "Említések",
"reply_sent": "Válasz elküldve",
"message_sent": "Üzenet elküldve",
"search": "Keresés",
"view": "Nézet",
"logout": "Kijelentkezés",
"login_sign_up": "Bejelentkezés / Regisztráció",
"login": "Bejelentkezés",
"sign_up": "Regisztráció",
"unread_messages": "Olvastalan üzenetek",
"messages": "Üzenetek",
"password": "Jelszó",
"verify_password": "Jelszó megerősítése",
"old_password": "Régi jelszó",
"forgot_password": "elfelejtettem a jelszavamat",
"reset_password_mail_sent": "Egy email el lett küldve a jelszó visszaállításához.",
"password_change": "Jelszó megváltoztatása",
"new_password": "Új jelszó",
"email": "Email",
"matrix_user_id": "Matrix felhasználó",
"upvote": "Pozitív szavazat",
"private_message_disclaimer": "Figyelmeztetés: A privát üzenetek a Lemmyben nem biztonságosak. Kérlek, hozz létre egy fiókot a <1>Riot.im</1>-en a biztonságos üzenetváltásért!",
"send_notifications_to_email": "Értesítések küldése emailen keresztül",
"optional": "Opcionális",
"expires": "Lejár",
"language": "Nyelv",
"browser_default": "Böngészőben alapértelmezett",
"downvotes_disabled": "Negatív szavazatok letiltva",
"enable_downvotes": "Negatív szavazatok engedélyezése",
"number_of_upvotes": "{{count}} pozitív szavazat",
"number_of_upvotes_plural": "{{count}} pozitív szavazat",
"downvote": "Negatív szavazat",
"number_of_downvotes": "{{count}} negatív szavazat",
"number_of_downvotes_plural": "{{count}} negatív szavazat",
"sponsor_message": "A Lemmy egy ingyenes, <1>nyílt forrású</1> szoftver, amely sohasem fog tartalmazni hirdetéseket, monetizálást vagy kockázati tőkét. Az adományaiddal közvetlenül támogatod a projekt teljes munkaidős feljesztését. Köszönet az alábbi személyeknek:",
"general_sponsors": "Általános támogatók, akik 10-39 dollárral járultak hozzá a Lemmyhez.",
"open_registration": "Nyílt regisztráció",
"registration_closed": "Regisztráció lezárva",
"enable_nsfw": "Korhatáros tartalom engedélyezése",
"url": "URL",
"body": "Törzs",
"copy_suggested_title": "javasolt cím másolása: {{title}}",
"community": "Közösség",
"expand_here": "Szétnyitás itt",
"subscribe_to_communities": "Feliratkozás valamennyi <1>közösségre</1>.",
"chat": "Csevegés",
"recent_comments": "Friss hozzászólások",
"no_results": "Nincs találat.",
"setup": "Beállítás",
"lemmy_instance_setup": "Lemmy instancia beállítása",
"setup_admin": "Oldaladminisztrátor beállítása",
"your_site": "az oldalad",
"modified": "módosítva",
"nsfw": "Korhatáros tartalom",
"show_nsfw": "Korhatáros tartalom megjelenítése",
"theme": "Téma",
"sponsors": "Támogatók",
"sponsors_of_lemmy": "A Lemmy támogatói",
"support_on_patreon": "Támogatás a Patreonon",
"support_on_liberapay": "Támogatás a Patreonon",
"support_on_open_collective": "Támogatás az OpenCollective-en",
"donate_to_lemmy": "Adomány a Lemmynek",
"donate": "Adomány",
"silver_sponsors": "Az ezüst támogatók azok, akik 40 dollárral járultak hozzá a Lemmyhez.",
"code": "Kód",
"crypto": "Kripto",
"bitcoin": "Bitcoin",
"ethereum": "Ethereum",
"monero": "Monero",
"joined": "Csatlakozott",
"transfer_community": "közösség átvitele",
"no": "nem",
"community_ban": "Ki lettél tiltva ebből a közösségből.",
"transfer_site": "oldal átvitele",
"are_you_sure": "Biztos vagy benne?",
"yes": "igen",
"powered_by": "A motorháztető alatt",
"not_logged_in": "Nem vagy bejelentkezve.",
"logged_in": "Bejelentkeztél.",
"site_saved": "Oldal mentve.",
"site_ban": "Ki lettél tiltva az oldalról",
"couldnt_update_user": "Nem lehetett frissíteni a felhasználót.",
"couldnt_create_private_message": "Nem lehetett létrehozni a privát üzenetet.",
"no_private_message_edit_allowed": "A privát üzenet szerkesztése nem engedélyezett.",
"couldnt_update_private_message": "Nem lehetett frissíteni a privát üzenetet.",
"time": "Idő",
"action": "Művelet",
"emoji_picker": "Emojiválasztó",
"admin_already_created": "Elnézést, már létezik egy admin.",
"email_already_exists": "Az email már létezik.",
"system_err_login": "Rendszerhiba. Próbálj meg ki- és bejelentkezni!",
"block_leaving": "Biztos vagy abban, hogy távozni akarsz?",
"landing": "A Lemmy egy <1>linkaggregátor</1> / reddit alternatíva, melynek célja együttműködni a <2>fediverzummal</2>.<3></3>Bárki működtetheti saját szerverként, támogatja a valós időben frissülő hozzászólási szálakat, és pici (<4>~80kB</4>). Az ActivityPub hálózattal történő föderáció tervben van. <5></5>Ez egy <6>nagyon korai béta verzió</6> sok funkció jelenleg nem működik vagy hiányzik. <7></7>Javasolj új funkciókat vagy jelents hibákat <8>itt!</8><9></9><10>Rust</10>, <11>Actix</11>, <12>Inferno</12> és <13>Typescript</13> felhasználásával készült.",
"couldnt_create_comment": "Nem lehetett létrehozni a hozzászólást.",
"couldnt_like_comment": "Nem lehetett kedvelni a hozzászólást.",
"couldnt_update_comment": "Nem lehetett frissíteni a hozzászólást.",
"couldnt_save_comment": "Nem lehetett menteni a hozzászólást.",
"couldnt_get_comments": "Nem lehetett lekérdezni a hozzászólást.",
"no_comment_edit_allowed": "A hozzászólás szerkesztése nem engedélyezett.",
"no_post_edit_allowed": "A bejegyzés szerkesztése nem engedélyezett.",
"no_community_edit_allowed": "A közösség szerkesztése nem engedélyezett.",
"couldnt_find_community": "A közösség nem található.",
"couldnt_update_community": "Nem lehetett frissíteni a közösséget.",
"community_already_exists": "A közösség már létezik.",
"community_moderator_already_exists": "Már létezik a közösségi moderátor.",
"community_follower_already_exists": "Már létezik a közösségi követő.",
"community_user_already_banned": "A közösségi felhasználó már ki lett tiltva.",
"couldnt_create_post": "Nem lehetett létrehozni a bejegyzést.",
"post_title_too_long": "A bejegyzés címe túl hosszú.",
"by": "szerző",
"to": "címzett",
"from": "küldő",
"couldnt_like_post": "Nem lehetett kedvelni a bejegyzést.",
"couldnt_find_post": "A bejegyzés nem található.",
"couldnt_get_posts": "Nem lehetett lekérdezni a bejegyzéseket",
"couldnt_update_post": "Nem lehetett frissíteni a bejegyzést",
"couldnt_save_post": "Nem lehetett menteni a bejegyzést.",
"no_slurs": "A sértegetés nem megengedett.",
"not_an_admin": "Nem egy admin.",
"site_already_exists": "Az oldal már létezik.",
"couldnt_update_site": "Nem lehetett frissíteni az oldalt.",
"couldnt_find_that_username_or_email": "Az a felhasználónév vagy email nem található.",
"password_incorrect": "Rossz jelszó.",
"passwords_dont_match": "A jelszavak nem egyeznek.",
"invalid_username": "Érvénytelen felhasználónév.",
"user_already_exists": "A felhasználó már létezik."
} }

View file

@ -49,14 +49,14 @@
"remove_as_admin": "rimuovi come amministratore", "remove_as_admin": "rimuovi come amministratore",
"appoint_as_admin": "nomina come amministratore", "appoint_as_admin": "nomina come amministratore",
"remove": "rimuovi", "remove": "rimuovi",
"removed": "rimosso", "removed": "rimosso da un moderatore",
"locked": "bloccato", "locked": "bloccato",
"stickied": "evidenziato", "stickied": "evidenziato",
"reason": "Motivo", "reason": "Motivo",
"mark_as_read": "segna come letto", "mark_as_read": "segna come letto",
"mark_as_unread": "segna come non letto", "mark_as_unread": "segna come non letto",
"delete": "cancella", "delete": "cancella",
"deleted": "cancellato", "deleted": "eliminato dall'autore del commento",
"delete_account": "Cancella Account", "delete_account": "Cancella Account",
"delete_account_confirm": "Attenzione: stai per cancellare permanentemente tutti i tuoi dati. Inserisci la tua password per confermare questa azione.", "delete_account_confirm": "Attenzione: stai per cancellare permanentemente tutti i tuoi dati. Inserisci la tua password per confermare questa azione.",
"restore": "ripristina", "restore": "ripristina",
@ -142,7 +142,7 @@
"theme": "Tema", "theme": "Tema",
"sponsors": "Sponsor", "sponsors": "Sponsor",
"sponsors_of_lemmy": "Sponsor di Lemmy", "sponsors_of_lemmy": "Sponsor di Lemmy",
"sponsor_message": "Lemmy è software libero e <1>open-source</1>, il che significa nessuna pubblicità, monetizzazione o investitori esterni, per sempre. Le tue donazioni sostengono direttamente lo sviluppo full-time del progetto. Si ringraziano le seguenti persone:", "sponsor_message": "Lemmy è software libero e <1>open-source</1>, senza nessuna pubblicità, monetizzazione o investitori esterni, per sempre. Le tue donazioni sostengono direttamente lo sviluppo a tempo pieno del progetto. Si ringraziano le seguenti persone:",
"support_on_patreon": "Sostieni su Patreon", "support_on_patreon": "Sostieni su Patreon",
"support_on_liberapay": "Sostieni su Liberapay", "support_on_liberapay": "Sostieni su Liberapay",
"general_sponsors": "Gli sponsor generali sono quelli che hanno investito dai 10$ ai 39$ su Lemmy.", "general_sponsors": "Gli sponsor generali sono quelli che hanno investito dai 10$ ai 39$ su Lemmy.",
@ -251,5 +251,10 @@
"no_private_message_edit_allowed": "Non hai i permessi per modificare un messaggio privato.", "no_private_message_edit_allowed": "Non hai i permessi per modificare un messaggio privato.",
"time": "Tempo", "time": "Tempo",
"action": "Azione", "action": "Azione",
"silver_sponsors": "Gli sponsor generali sono quelli che hanno investito 40$ su Lemmy." "silver_sponsors": "Gli sponsor generali sono quelli che hanno investito 40$ su Lemmy.",
"invalid_community_name": "Nome non valido.",
"click_to_delete_picture": "Clicca per eliminare la foto.",
"picture_deleted": "Foto eliminata.",
"select_a_community": "Seleziona una comunità",
"invalid_username": "Nome utente non valido."
} }

View file

@ -41,13 +41,13 @@
"remove_as_admin": "снять из администраторов", "remove_as_admin": "снять из администраторов",
"appoint_as_admin": "назначить администратором", "appoint_as_admin": "назначить администратором",
"remove": "убрать", "remove": "убрать",
"removed": "убрано", "removed": "убрано модератором",
"locked": "заблокировано", "locked": "заблокировано",
"reason": "Причина", "reason": "Причина",
"mark_as_read": "пометить как прочитанное", "mark_as_read": "пометить как прочитанное",
"mark_as_unread": "пометить как непрочитанное", "mark_as_unread": "пометить как непрочитанное",
"delete": "удалить", "delete": "удалить",
"deleted": "удалено", "deleted": "удалено автором",
"restore": "восстановить", "restore": "восстановить",
"ban": "заблокировать", "ban": "заблокировать",
"ban_from_site": "заблокировать на сайте", "ban_from_site": "заблокировать на сайте",
@ -126,7 +126,7 @@
"show_nsfw": "Показывать NSFW-контент", "show_nsfw": "Показывать NSFW-контент",
"sponsors": "Спонсоры", "sponsors": "Спонсоры",
"sponsors_of_lemmy": "Спонсоры Lemmy", "sponsors_of_lemmy": "Спонсоры Lemmy",
"sponsor_message": "Lemmy это бесплатное, <1>открытое</1> программное обеспечение, что означает отсутствие рекламы, монетизации или венчурного капитала, никогда. Ваши пожертвования напрямую поддерживают развитие проекта. Спасибо нижеуказанным людям:", "sponsor_message": "Lemmy это бесплатное, <1>открытое</1> программное обеспечение, без рекламы, монетизации или венчурного капитала, никогда. Ваши пожертвования напрямую поддерживают развитие проекта. Спасибо нижеуказанным людям:",
"support_on_patreon": "Поддержать на Patreon", "support_on_patreon": "Поддержать на Patreon",
"general_sponsors": "Генеральные спонсоры - это те, кто пообещал Lemmy от $10 до $39.", "general_sponsors": "Генеральные спонсоры - это те, кто пообещал Lemmy от $10 до $39.",
"crypto": "Крипто", "crypto": "Крипто",
@ -247,5 +247,23 @@
"block_leaving": "Вы уверены, что хотите покинуть?", "block_leaving": "Вы уверены, что хотите покинуть?",
"number_online_0": "{{count}} Пользователь онлайн", "number_online_0": "{{count}} Пользователь онлайн",
"number_online_1": "{{count}} Пользователя онлайн", "number_online_1": "{{count}} Пользователя онлайн",
"number_online_2": "{{count}} Пользователей онлайн" "number_online_2": "{{count}} Пользователей онлайн",
"invalid_community_name": "Неверное имя пользователя.",
"picture_deleted": "Картинка удалена.",
"click_to_delete_picture": "Нажмите, чтобы удалить изображение.",
"downvotes_disabled": "Отрицательное голосование отключено",
"upvote": "Голосовать за",
"enable_downvotes": "Включить отрицательное голосование",
"downvote": "Голосовать против",
"number_of_upvotes_0": "{{count}} голос за",
"number_of_upvotes_1": "{{count}} голоса за",
"number_of_upvotes_2": "{{count}} голосов за",
"number_of_downvotes_0": "{{count}} голос против",
"number_of_downvotes_1": "{{count}} голоса против",
"number_of_downvotes_2": "{{count}} голосов против",
"silver_sponsors": "Серебряные спонсоры - это те, кто пожертвовал $40 для Lemmy.",
"monero": "Monero",
"emoji_picker": "Сборщик эмодзи",
"select_a_community": "Выбрать сообщество",
"invalid_username": "Неверное имя пользователя."
} }