diff --git a/.circleci/config.yml b/.circleci/config.yml index 2745a90d..19a04ce7 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -147,10 +147,10 @@ aliases: - *restore_cache_plume_dead_code - run: name: install server - command: cargo install --debug --no-default-features --features="${FEATURES}",test --path . || cargo install --debug --no-default-features --features="${FEATURES}",test --path . + command: cargo install --debug --no-default-features --features="${FEATURES}",test --path . -f || cargo install --debug --no-default-features --features="${FEATURES}",test --path . -f - run: name: install plm - command: cargo install --debug --no-default-features --features="${FEATURES}" --path plume-cli || cargo install --debug --no-default-features --features="${FEATURES}" --path plume-cli + command: cargo install --debug --no-default-features --features="${FEATURES}" --path plume-cli -f || cargo install --debug --no-default-features --features="${FEATURES}" --path plume-cli -f - run: name: run test command: ./script/run_browser_test.sh diff --git a/Cargo.lock b/Cargo.lock index 61bad0d2..a4126eb9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1807,6 +1807,7 @@ dependencies = [ "rpassword 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rsass 0.9.8 (registry+https://github.com/rust-lang/crates.io-index)", "ructe 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", + "runtime-fmt 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "scheduled-thread-pool 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2373,6 +2374,11 @@ dependencies = [ "nom 4.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "runtime-fmt" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "rust-stemmers" version = "1.1.0" @@ -3502,6 +3508,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum rpassword 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d37473170aedbe66ffa3ad3726939ba677d83c646ad4fd99e5b4bc38712f45ec" "checksum rsass 0.9.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4534cc03040beacd2668621815f26fe57e5b7cfe085790f98e5e87c1612316" "checksum ructe 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)" = "159f449df09bdd1c92080d0fc1d1c5e11abe81301496370dfee546d985a46dec" +"checksum runtime-fmt 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "647a821d66049faccc993fc3c379d1181b81a484097495cda79ffdb17b55b87f" "checksum rust-stemmers 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05928c187b85b38f6b98db43057a24f0245163635a5ce6325a4f77a833d646aa" "checksum rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "adacaae16d02b6ec37fdc7acfcddf365978de76d1983d3ee22afc260e1ca9619" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" diff --git a/Cargo.toml b/Cargo.toml index e81d5107..4ee92adf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,6 +23,7 @@ rocket = "0.4.0" rocket_contrib = { version = "0.4.0", features = ["json"] } rocket_i18n = "0.4.0" rpassword = "2.0" +runtime-fmt = "0.3.0" scheduled-thread-pool = "0.2.0" serde = "1.0" serde_json = "1.0" diff --git a/plume-models/src/users.rs b/plume-models/src/users.rs index 52150a9f..2d44dcc9 100644 --- a/plume-models/src/users.rs +++ b/plume-models/src/users.rs @@ -253,6 +253,15 @@ impl User { User::from_id(c, link.href.as_ref()?, None).map_err(|(_, e)| e) } + pub fn fetch_remote_interact_uri(acct: &str) -> Result { + resolve(acct.to_owned(), true)? + .links + .into_iter() + .find(|l| l.rel == "http://ostatus.org/schema/1.0/subscribe") + .and_then(|l| l.template) + .ok_or(Error::Webfinger) + } + fn fetch(url: &str) -> Result { let mut res = Client::new() .get(url) @@ -640,7 +649,7 @@ impl User { links: vec![ Link { rel: String::from("http://webfinger.net/rel/profile-page"), - mime_type: None, + mime_type: Some(String::from("text/html")), href: Some(self.ap_url.clone()), template: None, }, @@ -660,6 +669,15 @@ impl User { href: Some(self.ap_url.clone()), template: None, }, + Link { + rel: String::from("http://ostatus.org/schema/1.0/subscribe"), + mime_type: None, + href: None, + template: Some(format!( + "{}/remote_interact?{{uri}}", + self.get_instance(conn)?.public_domain + )), + }, ], }) } diff --git a/po/plume/ar.po b/po/plume/ar.po index c563d14c..a9711cc5 100644 --- a/po/plume/ar.po +++ b/po/plume/ar.po @@ -86,6 +86,12 @@ msgstr "منشور جديد" msgid "Edit {0}" msgstr "تعديل {0}" +# src/routes/user.rs:222 +msgid "" +"Couldn't obtain enough information about your account. Please make sure your " +"username is correct." +msgstr "" + # src/routes/reshares.rs:47 msgid "To reshare a post, you need to be logged in" msgstr "" @@ -254,6 +260,17 @@ msgstr "يديره" msgid "Runs Plume {0}" msgstr "مدعوم بـ Plume {0}" +#, fuzzy +msgid "Follow {}" +msgstr "اتبع" + +#, fuzzy +msgid "Login to follow" +msgstr "قم بتسجيل الدخول قصد مشاركته" + +msgid "Enter your full username to follow" +msgstr "" + msgid "Edit your account" msgstr "تعديل حسابك" @@ -565,6 +582,16 @@ msgstr "تسجيل الدخول" msgid "Username, or email" msgstr "اسم المستخدم أو عنوان البريد الالكتروني" +msgid "Interact with {}" +msgstr "" + +#, fuzzy +msgid "Log in to interact" +msgstr "قم بتسجيل الدخول قصد الإعجاب به" + +msgid "Enter your full username to interact" +msgstr "" + msgid "Publish" msgstr "انشر" @@ -663,7 +690,9 @@ msgid "Boost" msgstr "رقّي" #, fuzzy -msgid "Log in, or use your Fediverse account to interact with this article" +msgid "" +"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this " +"article" msgstr "" "قم بتسجيل الدخول أو استخدم حسابك على الفديفرس إن كنت ترغب في التفاعل مع هذا " "المقال" @@ -789,6 +818,21 @@ msgstr "المقالات الموسومة بـ \"{0}\"" msgid "There are currently no articles with such a tag" msgstr "حاليا لا يوجد هناك مقال يحتوي على هذا الوسم" +#, fuzzy +msgid "I'm from this instance" +msgstr "عن مثيل الخادوم هذا" + +msgid "I'm from another instance" +msgstr "" + +# src/template_utils.rs:225 +msgid "Example: user@plu.me" +msgstr "" + +#, fuzzy +msgid "Continue to your instance" +msgstr "إعداد مثيل الخادم" + msgid "Upload" msgstr "إرسال" @@ -904,15 +948,9 @@ msgstr "استخدمها كصورة رمزية" #~ msgid "Unfollow" #~ msgstr "الغاء المتابعة" -#~ msgid "Follow" -#~ msgstr "اتبع" - #~ msgid "Comment \"{0}\"" #~ msgstr "تعليق \"{0}\"" -#~ msgid "Configure your instance" -#~ msgstr "إعداد مثيل الخادم" - #~ msgid "Let's go!" #~ msgstr "هيا بنا!" @@ -981,9 +1019,3 @@ msgstr "استخدمها كصورة رمزية" #~ msgid "Next page" #~ msgstr "الصفحة التالية" - -#~ msgid "Login to like" -#~ msgstr "قم بتسجيل الدخول قصد الإعجاب به" - -#~ msgid "Login to boost" -#~ msgstr "قم بتسجيل الدخول قصد مشاركته" diff --git a/po/plume/de.po b/po/plume/de.po index ee533aab..8039d548 100644 --- a/po/plume/de.po +++ b/po/plume/de.po @@ -85,6 +85,12 @@ msgstr "Neuer Beitrag" msgid "Edit {0}" msgstr "Bearbeiten" +# src/routes/user.rs:222 +msgid "" +"Couldn't obtain enough information about your account. Please make sure your " +"username is correct." +msgstr "" + # src/routes/reshares.rs:47 msgid "To reshare a post, you need to be logged in" msgstr "" @@ -256,6 +262,17 @@ msgstr "Administriert von" msgid "Runs Plume {0}" msgstr "Verwendet Plume {0}" +#, fuzzy +msgid "Follow {}" +msgstr "Folgen" + +#, fuzzy +msgid "Login to follow" +msgstr "Um zu boosten, musst du eingeloggt sein" + +msgid "Enter your full username to follow" +msgstr "" + msgid "Edit your account" msgstr "Ändere deinen Account" @@ -568,6 +585,16 @@ msgstr "Einloggen" msgid "Username, or email" msgstr "Nutzername oder E-Mail" +msgid "Interact with {}" +msgstr "" + +#, fuzzy +msgid "Log in to interact" +msgstr "Um zu liken, musst du eingeloggt sein" + +msgid "Enter your full username to interact" +msgstr "" + msgid "Publish" msgstr "Veröffentlichen" @@ -664,7 +691,9 @@ msgid "Boost" msgstr "Boosten" #, fuzzy -msgid "Log in, or use your Fediverse account to interact with this article" +msgid "" +"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this " +"article" msgstr "" "Log dich ein oder nutze deinen Fediverse-Account um mit diesem Artikel zu " "interagieren" @@ -796,6 +825,21 @@ msgstr "Mit \"{0}\" markierte Artikel" msgid "There are currently no articles with such a tag" msgstr "" +#, fuzzy +msgid "I'm from this instance" +msgstr "Über diese Instanz" + +msgid "I'm from another instance" +msgstr "" + +# src/template_utils.rs:225 +msgid "Example: user@plu.me" +msgstr "" + +#, fuzzy +msgid "Continue to your instance" +msgstr "Konfiguriere deine Instanz" + msgid "Upload" msgstr "Hochladen" @@ -909,9 +953,6 @@ msgstr "Als Avatar verwenden" #~ msgid "Unfollow" #~ msgstr "Folgen" -#~ msgid "Follow" -#~ msgstr "Folgen" - #, fuzzy #~ msgid "No articles to see here yet." #~ msgstr "Bisher keine Artikel vorhanden." @@ -985,9 +1026,6 @@ msgstr "Als Avatar verwenden" #~ msgid "Comment \"{0}\"" #~ msgstr "Kommentar \"{0}\"" -#~ msgid "Configure your instance" -#~ msgstr "Konfiguriere deine Instanz" - #~ msgid "Let's go!" #~ msgstr "Los geht's!" @@ -1047,12 +1085,6 @@ msgstr "Als Avatar verwenden" #~ msgid "The password should be at least 8 characters long" #~ msgstr "Passwort sollte mindestens 8 Zeichen lang sein" -#~ msgid "Login to like" -#~ msgstr "Um zu liken, musst du eingeloggt sein" - -#~ msgid "Login to boost" -#~ msgstr "Um zu boosten, musst du eingeloggt sein" - #~ msgid "Create a post" #~ msgstr "Beitrag erstellen" diff --git a/po/plume/en.po b/po/plume/en.po index 8e3aec4d..cd0315b8 100644 --- a/po/plume/en.po +++ b/po/plume/en.po @@ -90,6 +90,12 @@ msgstr "" msgid "Edit {0}" msgstr "" +# src/routes/user.rs:222 +msgid "" +"Couldn't obtain enough information about your account. Please make sure your " +"username is correct." +msgstr "" + # src/routes/reshares.rs:47 msgid "To reshare a post, you need to be logged in" msgstr "" @@ -251,6 +257,15 @@ msgstr "" msgid "Runs Plume {0}" msgstr "" +msgid "Follow {}" +msgstr "" + +msgid "Login to follow" +msgstr "" + +msgid "Enter your full username to follow" +msgstr "" + msgid "Edit your account" msgstr "" @@ -540,6 +555,15 @@ msgstr "" msgid "Username, or email" msgstr "" +msgid "Interact with {}" +msgstr "" + +msgid "Log in to interact" +msgstr "" + +msgid "Enter your full username to interact" +msgstr "" + msgid "Publish" msgstr "" @@ -625,7 +649,9 @@ msgstr "" msgid "Boost" msgstr "" -msgid "Log in, or use your Fediverse account to interact with this article" +msgid "" +"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this " +"article" msgstr "" msgid "Comments" @@ -737,6 +763,19 @@ msgstr "" msgid "There are currently no articles with such a tag" msgstr "" +msgid "I'm from this instance" +msgstr "" + +msgid "I'm from another instance" +msgstr "" + +# src/template_utils.rs:225 +msgid "Example: user@plu.me" +msgstr "" + +msgid "Continue to your instance" +msgstr "" + msgid "Upload" msgstr "" diff --git a/po/plume/es.po b/po/plume/es.po index aab44b3b..782610b1 100644 --- a/po/plume/es.po +++ b/po/plume/es.po @@ -86,6 +86,12 @@ msgstr "Nueva publicación" msgid "Edit {0}" msgstr "" +# src/routes/user.rs:222 +msgid "" +"Couldn't obtain enough information about your account. Please make sure your " +"username is correct." +msgstr "" + # src/routes/reshares.rs:47 msgid "To reshare a post, you need to be logged in" msgstr "" @@ -246,6 +252,17 @@ msgstr "" msgid "Runs Plume {0}" msgstr "" +#, fuzzy +msgid "Follow {}" +msgstr "Seguir" + +#, fuzzy +msgid "Login to follow" +msgstr "Dejar de seguir" + +msgid "Enter your full username to follow" +msgstr "" + msgid "Edit your account" msgstr "Edita tu cuenta" @@ -537,6 +554,15 @@ msgstr "Iniciar Sesión" msgid "Username, or email" msgstr "Nombre de usuario o correo electrónico" +msgid "Interact with {}" +msgstr "" + +msgid "Log in to interact" +msgstr "" + +msgid "Enter your full username to interact" +msgstr "" + msgid "Publish" msgstr "Publicar" @@ -623,7 +649,9 @@ msgstr "Ya no me gusta" msgid "Boost" msgstr "" -msgid "Log in, or use your Fediverse account to interact with this article" +msgid "" +"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this " +"article" msgstr "" msgid "Comments" @@ -738,6 +766,20 @@ msgstr "" msgid "There are currently no articles with such a tag" msgstr "" +msgid "I'm from this instance" +msgstr "" + +msgid "I'm from another instance" +msgstr "" + +# src/template_utils.rs:225 +msgid "Example: user@plu.me" +msgstr "" + +#, fuzzy +msgid "Continue to your instance" +msgstr "Configure su instancia" + msgid "Upload" msgstr "" @@ -812,9 +854,6 @@ msgstr "" #~ msgid "Comment \"{0}\"" #~ msgstr "Comentario \"{0}\"" -#~ msgid "Configure your instance" -#~ msgstr "Configure su instancia" - #~ msgid "Let's go!" #~ msgstr "Vamos!" @@ -824,12 +863,6 @@ msgstr "" #~ msgid "Create a post" #~ msgstr "Crear una publicación" -#~ msgid "Follow" -#~ msgstr "Seguir" - -#~ msgid "Unfollow" -#~ msgstr "Dejar de seguir" - #~ msgid "One follower" #~ msgid_plural "{0} followers" #~ msgstr[0] "Un seguidor" diff --git a/po/plume/fr.po b/po/plume/fr.po index 059ad66e..7b097f45 100644 --- a/po/plume/fr.po +++ b/po/plume/fr.po @@ -88,6 +88,12 @@ msgstr "Nouvel article" msgid "Edit {0}" msgstr "Modifier {0}" +# src/routes/user.rs:222 +msgid "" +"Couldn't obtain enough information about your account. Please make sure your " +"username is correct." +msgstr "" + # src/routes/reshares.rs:47 msgid "To reshare a post, you need to be logged in" msgstr "" @@ -257,6 +263,17 @@ msgstr "Administré par" msgid "Runs Plume {0}" msgstr "Propulsé par Plume {0}" +#, fuzzy +msgid "Follow {}" +msgstr "S’abonner" + +#, fuzzy +msgid "Login to follow" +msgstr "Connectez-vous pour partager" + +msgid "Enter your full username to follow" +msgstr "" + msgid "Edit your account" msgstr "Modifier votre compte" @@ -565,6 +582,16 @@ msgstr "Se connecter" msgid "Username, or email" msgstr "Nom d’utilisateur ou adresse électronique" +msgid "Interact with {}" +msgstr "" + +#, fuzzy +msgid "Log in to interact" +msgstr "Connectez-vous pour aimer" + +msgid "Enter your full username to interact" +msgstr "" + msgid "Publish" msgstr "Publier" @@ -659,7 +686,9 @@ msgid "Boost" msgstr "Partager" #, fuzzy -msgid "Log in, or use your Fediverse account to interact with this article" +msgid "" +"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this " +"article" msgstr "" "Connectez-vous ou utilisez votre compte sur le Fediverse pour interagir avec " "cet article" @@ -793,6 +822,21 @@ msgstr "Articles taggués « {0} »" msgid "There are currently no articles with such a tag" msgstr "Il n'y a pas encore d'article avec ce tag" +#, fuzzy +msgid "I'm from this instance" +msgstr "À propos de cette instance" + +msgid "I'm from another instance" +msgstr "" + +# src/template_utils.rs:225 +msgid "Example: user@plu.me" +msgstr "" + +#, fuzzy +msgid "Continue to your instance" +msgstr "Configurer votre instance" + msgid "Upload" msgstr "Téléverser" @@ -907,9 +951,6 @@ msgstr "Utiliser comme avatar" #~ msgid "Unfollow" #~ msgstr "S’abonner" -#~ msgid "Follow" -#~ msgstr "S’abonner" - #, fuzzy #~ msgid "No articles to see here yet." #~ msgstr "Aucun article pour le moment." @@ -972,14 +1013,6 @@ msgstr "Utiliser comme avatar" #~ "Plume is a decentralized blogging engine and a member of the Fediverse." #~ msgstr "Plume est un moteur de blog décentralisé." -#, fuzzy -#~ msgid "Log In to like" -#~ msgstr "Connectez-vous pour aimer" - -#, fuzzy -#~ msgid "Log In to boost" -#~ msgstr "Connectez-vous pour partager" - #, fuzzy #~ msgid "Create a new post" #~ msgstr "Créer un article" @@ -987,9 +1020,6 @@ msgstr "Utiliser comme avatar" #~ msgid "Comment \"{0}\"" #~ msgstr "Commenter « {0} »" -#~ msgid "Configure your instance" -#~ msgstr "Configurer votre instance" - #~ msgid "Let's go!" #~ msgstr "C’est parti !" diff --git a/po/plume/gl.po b/po/plume/gl.po index 10984893..b2b7b117 100644 --- a/po/plume/gl.po +++ b/po/plume/gl.po @@ -84,6 +84,12 @@ msgstr "Nova entrada" msgid "Edit {0}" msgstr "Editar" +# src/routes/user.rs:222 +msgid "" +"Couldn't obtain enough information about your account. Please make sure your " +"username is correct." +msgstr "" + # src/routes/reshares.rs:47 msgid "To reshare a post, you need to be logged in" msgstr "" @@ -255,6 +261,17 @@ msgstr "Administrada por" msgid "Runs Plume {0}" msgstr "Versión Plume {0}" +#, fuzzy +msgid "Follow {}" +msgstr "Seguir" + +#, fuzzy +msgid "Login to follow" +msgstr "Conéctese para promover" + +msgid "Enter your full username to follow" +msgstr "" + msgid "Edit your account" msgstr "Edite a súa conta" @@ -564,6 +581,16 @@ msgstr "Conectar" msgid "Username, or email" msgstr "Usuaria ou correo-e" +msgid "Interact with {}" +msgstr "" + +#, fuzzy +msgid "Log in to interact" +msgstr "Conéctese para gostar" + +msgid "Enter your full username to interact" +msgstr "" + msgid "Publish" msgstr "Publicar" @@ -658,7 +685,9 @@ msgid "Boost" msgstr "Promover" #, fuzzy -msgid "Log in, or use your Fediverse account to interact with this article" +msgid "" +"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this " +"article" msgstr "" "Conéctese ou utilice a súa conta no fediverso para interactuar con este " "artigo" @@ -787,6 +816,21 @@ msgstr "Artigos etiquetados con {0}" msgid "There are currently no articles with such a tag" msgstr "" +#, fuzzy +msgid "I'm from this instance" +msgstr "Sobre esta instancia" + +msgid "I'm from another instance" +msgstr "" + +# src/template_utils.rs:225 +msgid "Example: user@plu.me" +msgstr "" + +#, fuzzy +msgid "Continue to your instance" +msgstr "Configure a súa instancia" + msgid "Upload" msgstr "Subir" @@ -901,9 +945,6 @@ msgstr "Utilizar como avatar" #~ msgid "Unfollow" #~ msgstr "Seguir" -#~ msgid "Follow" -#~ msgstr "Seguir" - #, fuzzy #~ msgid "No articles to see here yet." #~ msgstr "Aínda non hai entradas publicadas" @@ -985,9 +1026,6 @@ msgstr "Utilizar como avatar" #~ msgid "Comment \"{0}\"" #~ msgstr "Comentar \"{0}\"" -#~ msgid "Configure your instance" -#~ msgstr "Configure a súa instancia" - #~ msgid "Let's go!" #~ msgstr "Imos!" @@ -1038,12 +1076,6 @@ msgstr "Utilizar como avatar" #~ msgid "The password should be at least 8 characters long" #~ msgstr "O contrasinal debe ter ao menos 8 caracteres" -#~ msgid "Login to like" -#~ msgstr "Conéctese para gostar" - -#~ msgid "Login to boost" -#~ msgstr "Conéctese para promover" - #~ msgid "Create a post" #~ msgstr "Crear unha entrada" diff --git a/po/plume/it.po b/po/plume/it.po index aee462e0..63584392 100644 --- a/po/plume/it.po +++ b/po/plume/it.po @@ -84,6 +84,12 @@ msgstr "Nuovo post" msgid "Edit {0}" msgstr "Modifica" +# src/routes/user.rs:222 +msgid "" +"Couldn't obtain enough information about your account. Please make sure your " +"username is correct." +msgstr "" + # src/routes/reshares.rs:47 msgid "To reshare a post, you need to be logged in" msgstr "" @@ -255,6 +261,17 @@ msgstr "Amministrata da" msgid "Runs Plume {0}" msgstr "Utilizza Plume {0}" +#, fuzzy +msgid "Follow {}" +msgstr "Segui" + +#, fuzzy +msgid "Login to follow" +msgstr "Accedi per boostare" + +msgid "Enter your full username to follow" +msgstr "" + msgid "Edit your account" msgstr "Modifica il tuo account" @@ -567,6 +584,16 @@ msgstr "Accedi" msgid "Username, or email" msgstr "Nome utente o email" +msgid "Interact with {}" +msgstr "" + +#, fuzzy +msgid "Log in to interact" +msgstr "Accedi per mettere mi piace" + +msgid "Enter your full username to interact" +msgstr "" + msgid "Publish" msgstr "Pubblica" @@ -663,7 +690,9 @@ msgid "Boost" msgstr "Boost" #, fuzzy -msgid "Log in, or use your Fediverse account to interact with this article" +msgid "" +"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this " +"article" msgstr "" "Accedi o utilizza un tuo account del Fediverso per interagire con questo " "articolo" @@ -794,6 +823,21 @@ msgstr "Articoli etichettati \"{0}\"" msgid "There are currently no articles with such a tag" msgstr "Attualmente non è ancora presente nessun articolo con quell'etichetta" +#, fuzzy +msgid "I'm from this instance" +msgstr "A proposito di questa istanza" + +msgid "I'm from another instance" +msgstr "" + +# src/template_utils.rs:225 +msgid "Example: user@plu.me" +msgstr "" + +#, fuzzy +msgid "Continue to your instance" +msgstr "Configura la tua istanza" + msgid "Upload" msgstr "Carica" @@ -908,9 +952,6 @@ msgstr "Usa come avatar" #~ msgid "Unfollow" #~ msgstr "Segui" -#~ msgid "Follow" -#~ msgstr "Segui" - #, fuzzy #~ msgid "No articles to see here yet." #~ msgstr "Nessun post da mostrare qui." @@ -988,9 +1029,6 @@ msgstr "Usa come avatar" #~ msgid "Comment \"{0}\"" #~ msgstr "Commenta \"{0}\"" -#~ msgid "Configure your instance" -#~ msgstr "Configura la tua istanza" - #~ msgid "Let's go!" #~ msgstr "Andiamo!" @@ -1041,12 +1079,6 @@ msgstr "Usa come avatar" #~ msgid "The password should be at least 8 characters long" #~ msgstr "Le password devono essere lunghe almeno 8 caratteri" -#~ msgid "Login to like" -#~ msgstr "Accedi per mettere mi piace" - -#~ msgid "Login to boost" -#~ msgstr "Accedi per boostare" - #~ msgid "Create a post" #~ msgstr "Crea un post" diff --git a/po/plume/ja.po b/po/plume/ja.po index b917a391..fcc10b31 100644 --- a/po/plume/ja.po +++ b/po/plume/ja.po @@ -87,6 +87,12 @@ msgstr "新しい記事" msgid "Edit {0}" msgstr "編集" +# src/routes/user.rs:222 +msgid "" +"Couldn't obtain enough information about your account. Please make sure your " +"username is correct." +msgstr "" + # src/routes/reshares.rs:47 msgid "To reshare a post, you need to be logged in" msgstr "" @@ -256,6 +262,17 @@ msgstr "管理者" msgid "Runs Plume {0}" msgstr "Plume {{ version }} を実行中" +#, fuzzy +msgid "Follow {}" +msgstr "フォロー" + +#, fuzzy +msgid "Login to follow" +msgstr "ブーストするにはログインしてください" + +msgid "Enter your full username to follow" +msgstr "" + msgid "Edit your account" msgstr "自分のアカウントを編集" @@ -571,6 +588,16 @@ msgstr "ログイン" msgid "Username, or email" msgstr "ユーザー名またはメールアドレス" +msgid "Interact with {}" +msgstr "" + +#, fuzzy +msgid "Log in to interact" +msgstr "いいねするにはログインしてください" + +msgid "Enter your full username to interact" +msgstr "" + msgid "Publish" msgstr "公開" @@ -660,7 +687,9 @@ msgid "Boost" msgstr "ブースト" #, fuzzy -msgid "Log in, or use your Fediverse account to interact with this article" +msgid "" +"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this " +"article" msgstr "" "この記事と関わるにはログインするか Fediverse アカウントを使用してください" @@ -785,6 +814,22 @@ msgstr "\"{{ tag }}\" タグの記事" msgid "There are currently no articles with such a tag" msgstr "そのタグのある記事は現在ありません" +#, fuzzy +msgid "I'm from this instance" +msgstr "このインスタンスについて" + +#, fuzzy +msgid "I'm from another instance" +msgstr "件" + +# src/template_utils.rs:225 +msgid "Example: user@plu.me" +msgstr "" + +#, fuzzy +msgid "Continue to your instance" +msgstr "インスタンスを設定" + msgid "Upload" msgstr "アップロード" @@ -896,16 +941,10 @@ msgstr "アバターとして使う" #~ msgid "Unfollow" #~ msgstr "フォロー解除" -#~ msgid "Follow" -#~ msgstr "フォロー" - #, fuzzy #~ msgid "Comment \"{0}\"" #~ msgstr "\"{{ post }}\" にコメント" -#~ msgid "Configure your instance" -#~ msgstr "インスタンスを設定" - #~ msgid "Let's go!" #~ msgstr "開始しましょう!" @@ -974,12 +1013,6 @@ msgstr "アバターとして使う" #~ msgid "Next page" #~ msgstr "次のページ" -#~ msgid "Login to like" -#~ msgstr "いいねするにはログインしてください" - -#~ msgid "Login to boost" -#~ msgstr "ブーストするにはログインしてください" - #~ msgid "Welcome to {{ instance_name | escape }}" #~ msgstr "{{ instance_name | escape }} へようこそ" @@ -1031,9 +1064,6 @@ msgstr "アバターとして使う" #~ msgid "And connected to" #~ msgstr "他のインスタンスからの接続数" -#~ msgid "other instances" -#~ msgstr "件" - #~ msgid "Edit {{ post }}" #~ msgstr "{{ post }} を編集" diff --git a/po/plume/nb.po b/po/plume/nb.po index eb38088f..486f9354 100644 --- a/po/plume/nb.po +++ b/po/plume/nb.po @@ -89,6 +89,12 @@ msgstr "Nytt innlegg" msgid "Edit {0}" msgstr "Kommentér \"{0}\"" +# src/routes/user.rs:222 +msgid "" +"Couldn't obtain enough information about your account. Please make sure your " +"username is correct." +msgstr "" + # src/routes/reshares.rs:47 msgid "To reshare a post, you need to be logged in" msgstr "" @@ -263,6 +269,17 @@ msgstr "Administrasjon" msgid "Runs Plume {0}" msgstr "" +#, fuzzy +msgid "Follow {}" +msgstr "Følg" + +#, fuzzy +msgid "Login to follow" +msgstr "Logg inn" + +msgid "Enter your full username to follow" +msgstr "" + msgid "Edit your account" msgstr "Rediger kontoen din" @@ -592,6 +609,15 @@ msgstr "Logg inn" msgid "Username, or email" msgstr "Brukernavn eller epost" +msgid "Interact with {}" +msgstr "" + +msgid "Log in to interact" +msgstr "" + +msgid "Enter your full username to interact" +msgstr "" + msgid "Publish" msgstr "" @@ -686,7 +712,9 @@ msgid "Boost" msgstr "" #, fuzzy -msgid "Log in, or use your Fediverse account to interact with this article" +msgid "" +"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this " +"article" msgstr "" "Logg inn eller bruk din Fediverse-konto for å gjøre noe med denne artikkelen" @@ -811,6 +839,20 @@ msgstr "Om {0}" msgid "There are currently no articles with such a tag" msgstr "" +#, fuzzy +msgid "I'm from this instance" +msgstr "Om denne instansen" + +msgid "I'm from another instance" +msgstr "" + +# src/template_utils.rs:225 +msgid "Example: user@plu.me" +msgstr "" + +msgid "Continue to your instance" +msgstr "" + msgid "Upload" msgstr "" @@ -924,9 +966,6 @@ msgstr "" #~ msgid "Unfollow" #~ msgstr "Slutt å følge" -#~ msgid "Follow" -#~ msgstr "Følg" - #, fuzzy #~ msgid "No articles to see here yet." #~ msgstr "Ingen innlegg å vise enda." @@ -993,10 +1032,6 @@ msgstr "" #~ msgid "Invalid email" #~ msgstr "Ugyldig epost" -#, fuzzy -#~ msgid "Log In to like" -#~ msgstr "Logg inn" - #, fuzzy #~ msgid "Your drafts" #~ msgstr "Din oversikt" diff --git a/po/plume/pl.po b/po/plume/pl.po index c694d1a6..75d4b04a 100644 --- a/po/plume/pl.po +++ b/po/plume/pl.po @@ -81,6 +81,12 @@ msgstr "Nowy wpis" msgid "Edit {0}" msgstr "Edytuj {0}" +# src/routes/user.rs:222 +msgid "" +"Couldn't obtain enough information about your account. Please make sure your " +"username is correct." +msgstr "" + # src/routes/reshares.rs:47 msgid "To reshare a post, you need to be logged in" msgstr "" @@ -242,6 +248,17 @@ msgstr "Administrowany przez" msgid "Runs Plume {0}" msgstr "Działa na Plume {0}" +#, fuzzy +msgid "Follow {}" +msgstr "Obserwuj" + +#, fuzzy +msgid "Login to follow" +msgstr "Zaloguj się aby podbić" + +msgid "Enter your full username to follow" +msgstr "" + msgid "Edit your account" msgstr "Edytuj swoje konto" @@ -547,6 +564,16 @@ msgstr "Zaloguj się" msgid "Username, or email" msgstr "Nazwa użytkownika lub adres e-mail" +msgid "Interact with {}" +msgstr "" + +#, fuzzy +msgid "Log in to interact" +msgstr "Zaloguj się aby polubić" + +msgid "Enter your full username to interact" +msgstr "" + msgid "Publish" msgstr "Opublikuj" @@ -635,7 +662,9 @@ msgid "Boost" msgstr "Podbij" #, fuzzy -msgid "Log in, or use your Fediverse account to interact with this article" +msgid "" +"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this " +"article" msgstr "" "Zaloguj się lub użyj konta w Fediwersum, aby wejść w interakcje z tym " "artykułem" @@ -757,6 +786,22 @@ msgstr "Artykuły oznaczone „{0}”" msgid "There are currently no articles with such a tag" msgstr "Obecnie nie istnieją artykuły z tym tagiem" +#, fuzzy +msgid "I'm from this instance" +msgstr "O tej instancji" + +#, fuzzy +msgid "I'm from another instance" +msgstr "innych instancji" + +# src/template_utils.rs:225 +msgid "Example: user@plu.me" +msgstr "" + +#, fuzzy +msgid "Continue to your instance" +msgstr "Skonfiguruj swoją instancję" + msgid "Upload" msgstr "Wyślij" @@ -868,9 +913,6 @@ msgstr "Użyj jako awataru" #~ msgid "Unfollow" #~ msgstr "Przestań obserwować" -#~ msgid "Follow" -#~ msgstr "Obserwuj" - #, fuzzy #~ msgid "No articles to see here yet." #~ msgstr "Brak wpisów do wyświetlenia." @@ -947,9 +989,6 @@ msgstr "Użyj jako awataru" #~ msgid "Comment \"{0}\"" #~ msgstr "Komentarz „{0}”" -#~ msgid "Configure your instance" -#~ msgstr "Skonfiguruj swoją instancję" - #~ msgid "Let's go!" #~ msgstr "Przejdźmy dalej!" @@ -1020,12 +1059,6 @@ msgstr "Użyj jako awataru" #~ msgid "Instance settings" #~ msgstr "Ustawienia instancji" -#~ msgid "Login to like" -#~ msgstr "Zaloguj się aby polubić" - -#~ msgid "Login to boost" -#~ msgstr "Zaloguj się aby podbić" - #~ msgid "Create a post" #~ msgstr "Utwórz wpis" @@ -1049,6 +1082,3 @@ msgstr "Użyj jako awataru" #~ msgid "And connected to" #~ msgstr "Połączony z" - -#~ msgid "other instances" -#~ msgstr "innych instancji" diff --git a/po/plume/plume.pot b/po/plume/plume.pot index c5ac3e3d..c8af3110 100644 --- a/po/plume/plume.pot +++ b/po/plume/plume.pot @@ -88,6 +88,10 @@ msgstr "" msgid "Edit {0}" msgstr "" +# src/routes/posts.rs:630 +msgid "Couldn't obtain enough information about your account. Please make sure your username is correct." +msgstr "" + # src/routes/reshares.rs:51 msgid "To reshare a post, you need to be logged in" msgstr "" @@ -112,66 +116,54 @@ msgstr "" msgid "To access your dashboard, you need to be logged in" msgstr "" -# src/routes/user.rs:180 +# src/routes/user.rs:244 msgid "To subscribe to someone, you need to be logged in" msgstr "" -# src/routes/user.rs:280 +# src/routes/user.rs:344 msgid "To edit your profile, you need to be logged in" msgstr "" -msgid "Plume" +msgid "Reset your password" msgstr "" -msgid "Menu" +# src/template_utils.rs:217 +msgid "E-mail" msgstr "" -msgid "Search" +# src/template_utils.rs:220 +msgid "Optional" msgstr "" -msgid "Dashboard" +msgid "Send password reset link" msgstr "" -msgid "Notifications" +msgid "Check your inbox!" msgstr "" -msgid "Log Out" +msgid "We sent a mail to the address you gave us, with a link to reset your password." msgstr "" -msgid "My account" +msgid "Log in" msgstr "" -msgid "Log In" +# src/template_utils.rs:217 +msgid "Username, or email" msgstr "" -msgid "Register" +# src/template_utils.rs:217 +msgid "Password" msgstr "" -msgid "About this instance" +# src/template_utils.rs:217 +msgid "New password" msgstr "" -msgid "Source code" +# src/template_utils.rs:217 +msgid "Confirmation" msgstr "" -msgid "Matrix room" -msgstr "" - -msgid "Administration" -msgstr "" - -msgid "Welcome to {}" -msgstr "" - -msgid "Latest articles" -msgstr "" - -msgid "Your feed" -msgstr "" - -msgid "Federated feed" -msgstr "" - -msgid "Local feed" +msgid "Update password" msgstr "" msgid "Administration of {0}" @@ -192,24 +184,56 @@ msgstr "" msgid "Block" msgstr "" -msgid "Ban" +msgid "About {0}" +msgstr "" + +msgid "Home to {0} people" +msgstr "" + +msgid "Who wrote {0} articles" +msgstr "" + +msgid "And are connected to {0} other instances" +msgstr "" + +msgid "Administred by" +msgstr "" + +msgid "Runs Plume {0}" msgstr "" msgid "All the articles of the Fediverse" msgstr "" +msgid "Latest articles" +msgstr "" + +msgid "Your feed" +msgstr "" + +msgid "Federated feed" +msgstr "" + +msgid "Local feed" +msgstr "" + +msgid "Welcome to {}" +msgstr "" + msgid "Articles from {}" msgstr "" +msgid "Ban" +msgstr "" + msgid "Nothing to see here yet. Try subscribing to more people." msgstr "" -# src/template_utils.rs:217 -msgid "Name" +msgid "Administration" msgstr "" -# src/template_utils.rs:220 -msgid "Optional" +# src/template_utils.rs:217 +msgid "Name" msgstr "" msgid "Allow anyone to register here" @@ -231,180 +255,7 @@ msgstr "" msgid "Save these settings" msgstr "" -msgid "About {0}" -msgstr "" - -msgid "Home to {0} people" -msgstr "" - -msgid "Who wrote {0} articles" -msgstr "" - -msgid "And are connected to {0} other instances" -msgstr "" - -msgid "Administred by" -msgstr "" - -msgid "Runs Plume {0}" -msgstr "" - -msgid "Edit your account" -msgstr "" - -msgid "Your Profile" -msgstr "" - -msgid "To change your avatar, upload it to your gallery and then select from there." -msgstr "" - -msgid "Upload an avatar" -msgstr "" - -# src/template_utils.rs:217 -msgid "Display name" -msgstr "" - -# src/template_utils.rs:217 -msgid "Email" -msgstr "" - -msgid "Summary" -msgstr "" - -msgid "Update account" -msgstr "" - -msgid "Danger zone" -msgstr "" - -msgid "Be very careful, any action taken here can't be cancelled." -msgstr "" - -msgid "Delete your account" -msgstr "" - -msgid "Sorry, but as an admin, you can't leave your own instance." -msgstr "" - -msgid "Your Dashboard" -msgstr "" - -msgid "Your Blogs" -msgstr "" - -msgid "You don't have any blog yet. Create your own, or ask to join one." -msgstr "" - -msgid "Start a new blog" -msgstr "" - -msgid "Your Drafts" -msgstr "" - -msgid "Your media" -msgstr "" - -msgid "Go to your gallery" -msgstr "" - -msgid "Create your account" -msgstr "" - -msgid "Create an account" -msgstr "" - -# src/template_utils.rs:217 -msgid "Username" -msgstr "" - -# src/template_utils.rs:217 -msgid "Password" -msgstr "" - -# src/template_utils.rs:217 -msgid "Password confirmation" -msgstr "" - -msgid "Apologies, but registrations are closed on this particular instance. You can, however, find a different one." -msgstr "" - -msgid "Articles" -msgstr "" - -msgid "Subscribers" -msgstr "" - -msgid "Subscriptions" -msgstr "" - -msgid "Atom feed" -msgstr "" - -msgid "Recently boosted" -msgstr "" - -msgid "Admin" -msgstr "" - -msgid "It is you" -msgstr "" - -msgid "Edit your profile" -msgstr "" - -msgid "Open on {0}" -msgstr "" - -msgid "Unsubscribe" -msgstr "" - -msgid "Subscribe" -msgstr "" - -msgid "{0}'s subscriptions" -msgstr "" - -msgid "{0}'s subscribers" -msgstr "" - -msgid "Respond" -msgstr "" - -msgid "Are you sure?" -msgstr "" - -msgid "Delete this comment" -msgstr "" - -msgid "What is Plume?" -msgstr "" - -msgid "Plume is a decentralized blogging engine." -msgstr "" - -msgid "Authors can manage multiple blogs, each as its own website." -msgstr "" - -msgid "Articles are also visible on other Plume instances, and you can interact with them directly from other platforms like Mastodon." -msgstr "" - -msgid "Read the detailed rules" -msgstr "" - -msgid "None" -msgstr "" - -msgid "No description" -msgstr "" - -msgid "View all" -msgstr "" - -msgid "By {0}" -msgstr "" - -msgid "Draft" +msgid "Search" msgstr "" msgid "Your query" @@ -496,38 +347,137 @@ msgstr "" msgid "No more results for your query" msgstr "" -msgid "Reset your password" +msgid "Edit \"{}\"" +msgstr "" + +msgid "Description" +msgstr "" + +msgid "You can upload images to your gallery, to use them as blog icons, or banners." +msgstr "" + +msgid "Upload images" +msgstr "" + +msgid "Blog icon" +msgstr "" + +msgid "Blog banner" +msgstr "" + +msgid "Update blog" +msgstr "" + +msgid "Danger zone" +msgstr "" + +msgid "Be very careful, any action taken here can't be reversed." +msgstr "" + +msgid "Permanently delete this blog" +msgstr "" + +msgid "{}'s icon" +msgstr "" + +msgid "New article" +msgstr "" + +msgid "Edit" +msgstr "" + +msgid "There's one author on this blog: " +msgid_plural "There are {0} authors on this blog: " +msgstr[0] "" + +msgid "No posts to see here yet." +msgstr "" + +msgid "New Blog" +msgstr "" + +msgid "Create a blog" +msgstr "" + +msgid "Create blog" +msgstr "" + +msgid "Articles tagged \"{0}\"" +msgstr "" + +msgid "There are currently no articles with such a tag" +msgstr "" + +msgid "Written by {0}" +msgstr "" + +msgid "Are you sure?" +msgstr "" + +msgid "Delete this article" +msgstr "" + +msgid "Draft" +msgstr "" + +msgid "All rights reserved." +msgstr "" + +msgid "This article is under the {0} license." +msgstr "" + +msgid "Unsubscribe" +msgstr "" + +msgid "Subscribe" +msgstr "" + +msgid "One like" +msgid_plural "{0} likes" +msgstr[0] "" + +msgid "I don't like this anymore" +msgstr "" + +msgid "Add yours" +msgstr "" + +msgid "One boost" +msgid_plural "{0} boosts" +msgstr[0] "" + +msgid "I don't want to boost this anymore" +msgstr "" + +msgid "Boost" +msgstr "" + +msgid "{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this article" +msgstr "" + +msgid "Comments" msgstr "" # src/template_utils.rs:217 -msgid "New password" +msgid "Content warning" msgstr "" -# src/template_utils.rs:217 -msgid "Confirmation" +msgid "Your comment" msgstr "" -msgid "Update password" +msgid "Submit comment" msgstr "" -msgid "Check your inbox!" +msgid "No comments yet. Be the first to react!" msgstr "" -msgid "We sent a mail to the address you gave us, with a link to reset your password." +msgid "Interact with {}" msgstr "" -# src/template_utils.rs:217 -msgid "E-mail" +msgid "Log in to interact" msgstr "" -msgid "Send password reset link" -msgstr "" - -msgid "Log in" -msgstr "" - -# src/template_utils.rs:217 -msgid "Username, or email" +msgid "Enter your full username to interact" msgstr "" msgid "Publish" @@ -576,146 +526,93 @@ msgstr "" msgid "Publish your post" msgstr "" -msgid "Written by {0}" +msgid "I'm from this instance" msgstr "" -msgid "Edit" -msgstr "" - -msgid "Delete this article" -msgstr "" - -msgid "All rights reserved." -msgstr "" - -msgid "This article is under the {0} license." -msgstr "" - -msgid "One like" -msgid_plural "{0} likes" -msgstr[0] "" - -msgid "I don't like this anymore" -msgstr "" - -msgid "Add yours" -msgstr "" - -msgid "One boost" -msgid_plural "{0} boosts" -msgstr[0] "" - -msgid "I don't want to boost this anymore" -msgstr "" - -msgid "Boost" -msgstr "" - -msgid "Log in, or use your Fediverse account to interact with this article" -msgstr "" - -msgid "Comments" +msgid "I'm from another instance" msgstr "" # src/template_utils.rs:217 -msgid "Content warning" +msgid "Username" msgstr "" -msgid "Your comment" +# src/template_utils.rs:225 +msgid "Example: user@plu.me" msgstr "" -msgid "Submit comment" +msgid "Continue to your instance" msgstr "" -msgid "No comments yet. Be the first to react!" +msgid "View all" msgstr "" -msgid "Invalid CSRF token" +msgid "By {0}" msgstr "" -msgid "Something is wrong with your CSRF token. Make sure cookies are enabled in you browser, and try reloading this page. If you continue to see this error message, please report it." +msgid "What is Plume?" msgstr "" -msgid "Page not found" +msgid "Plume is a decentralized blogging engine." msgstr "" -msgid "We couldn't find this page." +msgid "Authors can manage multiple blogs, each as its own website." msgstr "" -msgid "The link that led you here may be broken." +msgid "Articles are also visible on other Plume instances, and you can interact with them directly from other platforms like Mastodon." msgstr "" -msgid "The content you sent can't be processed." +msgid "Create your account" msgstr "" -msgid "Maybe it was too long." +msgid "Read the detailed rules" msgstr "" -msgid "You are not authorized." +msgid "Respond" msgstr "" -msgid "Internal server error" +msgid "Delete this comment" msgstr "" -msgid "Something broke on our side." +msgid "None" msgstr "" -msgid "Sorry about that. If you think this is a bug, please report it." +msgid "No description" msgstr "" -msgid "Edit \"{}\"" +msgid "Notifications" msgstr "" -msgid "Description" +msgid "Plume" msgstr "" -msgid "You can upload images to your gallery, to use them as blog icons, or banners." +msgid "Menu" msgstr "" -msgid "Upload images" +msgid "Dashboard" msgstr "" -msgid "Blog icon" +msgid "Log Out" msgstr "" -msgid "Blog banner" +msgid "My account" msgstr "" -msgid "Update blog" +msgid "Log In" msgstr "" -msgid "Be very careful, any action taken here can't be reversed." +msgid "Register" msgstr "" -msgid "Permanently delete this blog" +msgid "About this instance" msgstr "" -msgid "New Blog" +msgid "Source code" msgstr "" -msgid "Create a blog" +msgid "Matrix room" msgstr "" -msgid "Create blog" -msgstr "" - -msgid "{}'s icon" -msgstr "" - -msgid "New article" -msgstr "" - -msgid "There's one author on this blog: " -msgid_plural "There are {0} authors on this blog: " -msgstr[0] "" - -msgid "No posts to see here yet." -msgstr "" - -msgid "Articles tagged \"{0}\"" -msgstr "" - -msgid "There are currently no articles with such a tag" +msgid "Your media" msgstr "" msgid "Upload" @@ -733,21 +630,6 @@ msgstr "" msgid "Details" msgstr "" -msgid "Media upload" -msgstr "" - -msgid "Useful for visually impaired people, as well as licensing information" -msgstr "" - -msgid "Leave it empty, if none is needed" -msgstr "" - -msgid "File" -msgstr "" - -msgid "Send" -msgstr "" - msgid "Media details" msgstr "" @@ -763,8 +645,155 @@ msgstr "" msgid "Use as an avatar" msgstr "" -msgid "Log in to boost" +msgid "Media upload" msgstr "" -msgid "Log in to like" +msgid "Useful for visually impaired people, as well as licensing information" +msgstr "" + +msgid "Leave it empty, if none is needed" +msgstr "" + +msgid "File" +msgstr "" + +msgid "Send" +msgstr "" + +msgid "{0}'s subscriptions" +msgstr "" + +msgid "Articles" +msgstr "" + +msgid "Subscribers" +msgstr "" + +msgid "Subscriptions" +msgstr "" + +msgid "Your Dashboard" +msgstr "" + +msgid "Your Blogs" +msgstr "" + +msgid "You don't have any blog yet. Create your own, or ask to join one." +msgstr "" + +msgid "Start a new blog" +msgstr "" + +msgid "Your Drafts" +msgstr "" + +msgid "Go to your gallery" +msgstr "" + +msgid "Admin" +msgstr "" + +msgid "It is you" +msgstr "" + +msgid "Edit your profile" +msgstr "" + +msgid "Open on {0}" +msgstr "" + +msgid "{0}'s subscribers" +msgstr "" + +msgid "Edit your account" +msgstr "" + +msgid "Your Profile" +msgstr "" + +msgid "To change your avatar, upload it to your gallery and then select from there." +msgstr "" + +msgid "Upload an avatar" +msgstr "" + +# src/template_utils.rs:217 +msgid "Display name" +msgstr "" + +# src/template_utils.rs:217 +msgid "Email" +msgstr "" + +msgid "Summary" +msgstr "" + +msgid "Update account" +msgstr "" + +msgid "Be very careful, any action taken here can't be cancelled." +msgstr "" + +msgid "Delete your account" +msgstr "" + +msgid "Sorry, but as an admin, you can't leave your own instance." +msgstr "" + +msgid "Atom feed" +msgstr "" + +msgid "Recently boosted" +msgstr "" + +msgid "Create an account" +msgstr "" + +# src/template_utils.rs:217 +msgid "Password confirmation" +msgstr "" + +msgid "Apologies, but registrations are closed on this particular instance. You can, however, find a different one." +msgstr "" + +msgid "Follow {}" +msgstr "" + +msgid "Login to follow" +msgstr "" + +msgid "Enter your full username to follow" +msgstr "" + +msgid "Internal server error" +msgstr "" + +msgid "Something broke on our side." +msgstr "" + +msgid "Sorry about that. If you think this is a bug, please report it." +msgstr "" + +msgid "Page not found" +msgstr "" + +msgid "We couldn't find this page." +msgstr "" + +msgid "The link that led you here may be broken." +msgstr "" + +msgid "Invalid CSRF token" +msgstr "" + +msgid "Something is wrong with your CSRF token. Make sure cookies are enabled in you browser, and try reloading this page. If you continue to see this error message, please report it." +msgstr "" + +msgid "You are not authorized." +msgstr "" + +msgid "The content you sent can't be processed." +msgstr "" + +msgid "Maybe it was too long." msgstr "" diff --git a/po/plume/pt.po b/po/plume/pt.po index 9f577996..191e783c 100644 --- a/po/plume/pt.po +++ b/po/plume/pt.po @@ -85,6 +85,12 @@ msgstr "Novo artigo" msgid "Edit {0}" msgstr "Mudar {0}" +# src/routes/user.rs:222 +msgid "" +"Couldn't obtain enough information about your account. Please make sure your " +"username is correct." +msgstr "" + # src/routes/reshares.rs:47 msgid "To reshare a post, you need to be logged in" msgstr "" @@ -253,6 +259,17 @@ msgstr "Administrado por" msgid "Runs Plume {0}" msgstr "" +#, fuzzy +msgid "Follow {}" +msgstr "Seguir" + +#, fuzzy +msgid "Login to follow" +msgstr "Entrar para gostar" + +msgid "Enter your full username to follow" +msgstr "" + msgid "Edit your account" msgstr "Editar sua conta" @@ -565,6 +582,15 @@ msgstr "Entrar" msgid "Username, or email" msgstr "Nome de usuário ou e-mail" +msgid "Interact with {}" +msgstr "" + +msgid "Log in to interact" +msgstr "" + +msgid "Enter your full username to interact" +msgstr "" + msgid "Publish" msgstr "Publicar" @@ -654,7 +680,9 @@ msgid "Boost" msgstr "" #, fuzzy -msgid "Log in, or use your Fediverse account to interact with this article" +msgid "" +"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this " +"article" msgstr "Faça login ou use sua conta Fediverse para interagir com este artigo" msgid "Comments" @@ -775,6 +803,21 @@ msgstr "Artigos marcados com \"{0}\"" msgid "There are currently no articles with such a tag" msgstr "Não há atualmente nenhum artigo com essa etiqueta" +#, fuzzy +msgid "I'm from this instance" +msgstr "Sobre esta instância" + +msgid "I'm from another instance" +msgstr "" + +# src/template_utils.rs:225 +msgid "Example: user@plu.me" +msgstr "" + +#, fuzzy +msgid "Continue to your instance" +msgstr "Configure sua instância" + msgid "Upload" msgstr "Carregar" @@ -885,15 +928,9 @@ msgstr "Utilizar como avatar" #~ msgid "Unfollow" #~ msgstr "Não Seguir" -#~ msgid "Follow" -#~ msgstr "Seguir" - #~ msgid "Comment \"{0}\"" #~ msgstr "Comentário \"{0}\"" -#~ msgid "Configure your instance" -#~ msgstr "Configure sua instância" - #~ msgid "Let's go!" #~ msgstr "Vamos lá!" @@ -956,6 +993,3 @@ msgstr "Utilizar como avatar" #~ msgid "Next page" #~ msgstr "Próxima página" - -#~ msgid "Login to like" -#~ msgstr "Entrar para gostar" diff --git a/po/plume/ru.po b/po/plume/ru.po index fbad79e6..af8037a5 100644 --- a/po/plume/ru.po +++ b/po/plume/ru.po @@ -86,6 +86,12 @@ msgstr "Новый пост" msgid "Edit {0}" msgstr "Редактировать" +# src/routes/user.rs:222 +msgid "" +"Couldn't obtain enough information about your account. Please make sure your " +"username is correct." +msgstr "" + # src/routes/reshares.rs:47 msgid "To reshare a post, you need to be logged in" msgstr "" @@ -260,6 +266,17 @@ msgstr "Администрируется" msgid "Runs Plume {0}" msgstr "Работает на Plume {0}" +#, fuzzy +msgid "Follow {}" +msgstr "Подписаться" + +#, fuzzy +msgid "Login to follow" +msgstr "Войдите, чтобы продвигать посты" + +msgid "Enter your full username to follow" +msgstr "" + msgid "Edit your account" msgstr "Редактировать ваш аккаунт" @@ -571,6 +588,16 @@ msgstr "Войти" msgid "Username, or email" msgstr "Имя пользователя или адрес электронной почты" +msgid "Interact with {}" +msgstr "" + +#, fuzzy +msgid "Log in to interact" +msgstr "Войдите, чтобы отмечать понравившиеся посты" + +msgid "Enter your full username to interact" +msgstr "" + msgid "Publish" msgstr "Опубликовать" @@ -665,7 +692,9 @@ msgid "Boost" msgstr "Продвинуть" #, fuzzy -msgid "Log in, or use your Fediverse account to interact with this article" +msgid "" +"{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this " +"article" msgstr "" "Войдите или используйте свой Fediverse-аккаунт, чтобы взаимодействовать с " "этой статьёй" @@ -800,6 +829,21 @@ msgstr "Статьи, отмеченные тегом «{0}»" msgid "There are currently no articles with such a tag" msgstr "Сейчас нет статей с таким тегом" +#, fuzzy +msgid "I'm from this instance" +msgstr "Об этом узле" + +msgid "I'm from another instance" +msgstr "" + +# src/template_utils.rs:225 +msgid "Example: user@plu.me" +msgstr "" + +#, fuzzy +msgid "Continue to your instance" +msgstr "Настроить ваш узел" + msgid "Upload" msgstr "Загрузить" @@ -914,9 +958,6 @@ msgstr "Использовать как аватар" #~ msgid "Unfollow" #~ msgstr "Подписаться" -#~ msgid "Follow" -#~ msgstr "Подписаться" - #, fuzzy #~ msgid "No articles to see here yet." #~ msgstr "Здесь пока нет постов." @@ -998,9 +1039,6 @@ msgstr "Использовать как аватар" #~ msgid "Comment \"{0}\"" #~ msgstr "Комментарий \"{0}\"" -#~ msgid "Configure your instance" -#~ msgstr "Настроить ваш узел" - #~ msgid "Let's go!" #~ msgstr "Поехали!" @@ -1059,14 +1097,6 @@ msgstr "Использовать как аватар" #~ msgid "Invalid email" #~ msgstr "Неправильный адрес электронной почты" -#, fuzzy -#~ msgid "Login to like" -#~ msgstr "Войдите, чтобы отмечать понравившиеся посты" - -#, fuzzy -#~ msgid "Login to boost" -#~ msgstr "Войдите, чтобы продвигать посты" - #, fuzzy #~ msgid "Personal feed" #~ msgstr "Локальная лента" diff --git a/src/main.rs b/src/main.rs index 43795896..227e805c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -27,6 +27,8 @@ extern crate rocket; extern crate rocket_contrib; extern crate rocket_csrf; extern crate rocket_i18n; +#[macro_use] +extern crate runtime_fmt; extern crate scheduled_thread_pool; extern crate serde; #[macro_use] @@ -162,6 +164,7 @@ Then try to restart Plume routes::instance::toggle_block, routes::instance::update_settings, routes::instance::shared_inbox, + routes::instance::interact, routes::instance::nodeinfo, routes::instance::about, routes::instance::web_manifest, @@ -183,6 +186,8 @@ Then try to restart Plume routes::posts::new_auth, routes::posts::create, routes::posts::delete, + routes::posts::remote_interact, + routes::posts::remote_interact_post, routes::reshares::create, routes::reshares::create_auth, routes::search::search, @@ -207,6 +212,7 @@ Then try to restart Plume routes::user::update, routes::user::delete, routes::user::follow, + routes::user::follow_not_connected, routes::user::follow_auth, routes::user::activity_details, routes::user::outbox, diff --git a/src/routes/instance.rs b/src/routes/instance.rs index e002fe38..2b8823fe 100644 --- a/src/routes/instance.rs +++ b/src/routes/instance.rs @@ -8,6 +8,7 @@ use serde_json; use validator::{Validate, ValidationErrors}; use inbox; +use plume_common::activity_pub::inbox::FromId; use plume_models::{ admin::Admin, comments::Comment, db_conn::DbConn, headers::Headers, instance::*, posts::Post, safe_string::SafeString, users::User, Error, PlumeRocket, CONFIG, @@ -217,6 +218,36 @@ pub fn shared_inbox( inbox::handle_incoming(rockets, data, headers) } +#[get("/remote_interact?")] +pub fn interact(rockets: PlumeRocket, user: Option, target: String) -> Option { + if User::find_by_fqn(&rockets, &target).is_ok() { + return Some(Redirect::to(uri!(super::user::details: name = target))); + } + + if let Ok(post) = Post::from_id(&rockets, &target, None) { + return Some(Redirect::to( + uri!(super::posts::details: blog = post.get_blog(&rockets.conn).expect("Can't retrieve blog").fqn, slug = &post.slug, responding_to = _), + )); + } + + if let Ok(comment) = Comment::from_id(&rockets, &target, None) { + if comment.can_see(&rockets.conn, user.as_ref()) { + let post = comment + .get_post(&rockets.conn) + .expect("Can't retrieve post"); + return Some(Redirect::to(uri!( + super::posts::details: blog = post + .get_blog(&rockets.conn) + .expect("Can't retrieve blog") + .fqn, + slug = &post.slug, + responding_to = comment.id + ))); + } + } + None +} + #[get("/nodeinfo/")] pub fn nodeinfo(conn: DbConn, version: String) -> Result, ErrorPage> { if version != "2.0" && version != "2.1" { diff --git a/src/routes/mod.rs b/src/routes/mod.rs index 36ab73cd..12e65044 100644 --- a/src/routes/mod.rs +++ b/src/routes/mod.rs @@ -71,6 +71,12 @@ impl Default for Page { } } +/// A form for remote interaction, used by multiple routes +#[derive(Clone, Default, FromForm)] +pub struct RemoteForm { + pub remote: String, +} + pub fn post_to_atom(post: Post, conn: &Connection) -> Entry { EntryBuilder::default() .title(format!("", post.title)) diff --git a/src/routes/posts.rs b/src/routes/posts.rs index 73097378..14ba694e 100644 --- a/src/routes/posts.rs +++ b/src/routes/posts.rs @@ -26,7 +26,7 @@ use plume_models::{ users::User, Error, PlumeRocket, }; -use routes::{comments::NewCommentForm, errors::ErrorPage, ContentLen}; +use routes::{comments::NewCommentForm, errors::ErrorPage, ContentLen, RemoteForm}; use template_utils::Ructe; #[get("/~//?", rank = 4)] @@ -588,3 +588,56 @@ pub fn delete( )) } } + +#[get("/~///remote_interact")] +pub fn remote_interact( + rockets: PlumeRocket, + blog_name: String, + slug: String, + i18n: I18n, +) -> Result { + let target = Blog::find_by_fqn(&rockets, &blog_name) + .and_then(|blog| Post::find_by_slug(&rockets.conn, &slug, blog.id))?; + Ok(render!(posts::remote_interact( + &(&rockets.conn, &i18n.catalog, None), + target, + super::session::LoginForm::default(), + ValidationErrors::default(), + RemoteForm::default(), + ValidationErrors::default() + ))) +} + +#[post("/~///remote_interact", data = "")] +pub fn remote_interact_post( + rockets: PlumeRocket, + blog_name: String, + slug: String, + remote: LenientForm, + i18n: I18n, +) -> Result, ErrorPage> { + let target = Blog::find_by_fqn(&rockets, &blog_name) + .and_then(|blog| Post::find_by_slug(&rockets.conn, &slug, blog.id))?; + if let Some(uri) = User::fetch_remote_interact_uri(&remote.remote) + .ok() + .and_then(|uri| rt_format!(uri, uri = target.ap_url).ok()) + { + Ok(Err(Redirect::to(uri))) + } else { + let mut errs = ValidationErrors::new(); + errs.add("remote", ValidationError { + code: Cow::from("invalid_remote"), + message: Some(Cow::from(i18n!(&i18n.catalog, "Couldn't obtain enough information about your account. Please make sure your username is correct."))), + params: HashMap::new(), + }); + //could not get your remote url? + Ok(Ok(render!(posts::remote_interact( + &(&rockets.conn, &i18n.catalog, None), + target, + super::session::LoginForm::default(), + ValidationErrors::default(), + remote.clone(), + errs + )))) + } +} diff --git a/src/routes/user.rs b/src/routes/user.rs index 4a884e87..dbc9534a 100644 --- a/src/routes/user.rs +++ b/src/routes/user.rs @@ -25,7 +25,7 @@ use plume_models::{ users::*, Error, PlumeRocket, }; -use routes::{errors::ErrorPage, Page}; +use routes::{errors::ErrorPage, Page, RemoteForm}; use template_utils::Ructe; #[get("/me")] @@ -173,7 +173,71 @@ pub fn follow(name: String, user: User, rockets: PlumeRocket) -> Result/follow", rank = 2)] +#[post("/@//follow", data = "", rank = 2)] +pub fn follow_not_connected( + rockets: PlumeRocket, + name: String, + remote_form: Option>, + i18n: I18n, +) -> Result, Redirect>, ErrorPage> { + let target = User::find_by_fqn(&rockets, &name)?; + if let Some(remote_form) = remote_form { + let remote = &remote_form.remote; + if let Some(uri) = User::fetch_remote_interact_uri(remote) + .ok() + .and_then(|uri| { + rt_format!( + uri, + uri = format!( + "{}@{}", + target.fqn, + target.get_instance(&rockets.conn).ok()?.public_domain + ) + ) + .ok() + }) + { + Ok(Err(Redirect::to(uri))) + } else { + let mut err = ValidationErrors::default(); + err.add("remote", + ValidationError { + code: Cow::from("invalid_remote"), + message: Some(Cow::from(i18n!(&i18n.catalog, "Couldn't obtain enough information about your account. Please make sure your username is correct."))), + params: HashMap::new(), + }, + ); + Ok(Ok(Flash::new( + render!(users::follow_remote( + &(&rockets.conn, &i18n.catalog, None), + target, + super::session::LoginForm::default(), + ValidationErrors::default(), + remote_form.clone(), + err + )), + "callback", + uri!(follow: name = name).to_string(), + ))) + } + } else { + Ok(Ok(Flash::new( + render!(users::follow_remote( + &(&rockets.conn, &i18n.catalog, None), + target, + super::session::LoginForm::default(), + ValidationErrors::default(), + #[allow(clippy::map_clone)] + remote_form.map(|x| x.clone()).unwrap_or_default(), + ValidationErrors::default() + )), + "callback", + uri!(follow: name = name).to_string(), + ))) + } +} + +#[get("/@//follow?local", rank = 2)] pub fn follow_auth(name: String, i18n: I18n) -> Flash { utils::requires_login( &i18n!( diff --git a/static/css/_forms.scss b/static/css/_forms.scss index 1ab4fc54..a87ccf08 100644 --- a/static/css/_forms.scss +++ b/static/css/_forms.scss @@ -132,4 +132,29 @@ form.new-post { .button + .button { margin-left: 1em; +} + +.split { + display: flex; + justify-content: space-between; + + & > * { + flex-grow: 1; + max-width: 40%; + } +} + +header.center { + display: flex; + flex-direction: column; + align-items: center; + background: transparent; + opacity: 1; + font-weight: normal; + text-align: left; + + > * { + margin-left: 0; + margin-right: 0; + } } \ No newline at end of file diff --git a/templates/posts/details.rs.html b/templates/posts/details.rs.html index daa2d27f..81536db5 100644 --- a/templates/posts/details.rs.html +++ b/templates/posts/details.rs.html @@ -110,20 +110,23 @@ } else { -

@i18n!(ctx.1, "Log in, or use your Fediverse account to interact with this article")

+

@Html(i18n!(ctx.1, "{0}Log in{1}, or {2}use your Fediverse account{3} to interact with this article"; + format!("", uri!(session::new: m = _)), "", + format!("", uri!(posts::remote_interact: blog_name = &blog.fqn, slug = &article.slug)), "" + ))

} diff --git a/templates/posts/remote_interact.rs.html b/templates/posts/remote_interact.rs.html new file mode 100644 index 00000000..f77ed99c --- /dev/null +++ b/templates/posts/remote_interact.rs.html @@ -0,0 +1,14 @@ +@use templates::remote_interact_base; +@use templates::partials::post_card; +@use plume_models::posts::Post; +@use routes::RemoteForm; +@use routes::session::LoginForm; +@use template_utils::*; +@use validator::ValidationErrors; + +@(ctx: BaseContext, post: Post, login_form: LoginForm, login_errs: ValidationErrors, remote_form: RemoteForm, remote_errs: ValidationErrors) + +@:remote_interact_base(ctx, i18n!(ctx.1, "Interact with {}"; post.title.clone()), i18n!(ctx.1, "Log in to interact"), i18n!(ctx.1, "Enter your full username to interact"), { +

@i18n!(ctx.1, "Interact with {}"; post.title.clone())

+ @:post_card(ctx, post) +}, login_form, login_errs, remote_form, remote_errs) diff --git a/templates/remote_interact_base.rs.html b/templates/remote_interact_base.rs.html new file mode 100644 index 00000000..ea7b2b50 --- /dev/null +++ b/templates/remote_interact_base.rs.html @@ -0,0 +1,32 @@ +@use templates::base; +@use routes::session::LoginForm; +@use routes::RemoteForm; +@use template_utils::*; +@use validator::ValidationErrors; + +@(ctx: BaseContext, title: String, login_msg: String, remote_msg: String, header: Content, login_form: LoginForm, login_errs: ValidationErrors, remote_form: RemoteForm, remote_errs: ValidationErrors) + +@:base(ctx, title, {}, {}, { +
+
+ @:header() +
+ +
+
+

@i18n!(ctx.1, "I'm from this instance")

+

@login_msg

+ @input!(ctx.1, email_or_name (text), "Username, or email", login_form, login_errs.clone(), "minlenght=\"1\"") + @input!(ctx.1, password (password), "Password", login_form, login_errs, "minlenght=\"1\"") + +
+ +
+

@i18n!(ctx.1, "I'm from another instance")

+

@remote_msg

+ @input!(ctx.1, remote (text), "Username", "Example: user@plu.me", remote_form, remote_errs.clone(), "minlenght=\"1\"") + +
+
+
+}) diff --git a/templates/users/follow_remote.rs.html b/templates/users/follow_remote.rs.html new file mode 100644 index 00000000..73b48926 --- /dev/null +++ b/templates/users/follow_remote.rs.html @@ -0,0 +1,14 @@ +@use templates::remote_interact_base; +@use plume_models::users::User; +@use routes::RemoteForm; +@use routes::session::LoginForm; +@use template_utils::*; +@use validator::ValidationErrors; + +@(ctx: BaseContext, user: User, login_form: LoginForm, login_errs: ValidationErrors, remote_form: RemoteForm, remote_errs: ValidationErrors) + +@:remote_interact_base(ctx, i18n!(ctx.1, "Follow {}"; user.name()), i18n!(ctx.1, "Login to follow"), i18n!(ctx.1, "Enter your full username to follow"), { +

@i18n!(ctx.1, "Follow {}"; user.name())

+ @avatar(ctx.0, &user, Size::Medium, false, ctx.1) + @@@user.fqn +}, login_form, login_errs, remote_form, remote_errs) diff --git a/templates/users/header.rs.html b/templates/users/header.rs.html index 4c066445..57231705 100644 --- a/templates/users/header.rs.html +++ b/templates/users/header.rs.html @@ -32,7 +32,7 @@ } - @if ctx.2.clone().map(|u| u.id != user.id).unwrap_or(false) { + @if ctx.2.clone().map(|u| u.id != user.id).unwrap_or(true) {
@if follows {