diff options
212 files changed, 2701 insertions, 1534 deletions
diff --git a/AUTHORS.md b/AUTHORS.md index 8d3aaf480..5f5985fba 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -5,89 +5,100 @@ Mastodon is available on [GitHub](https://github.com/tootsuite/mastodon) and provided thanks to the work of the following contributors: * [Gargron](https://github.com/Gargron) -* [ykzts](https://github.com/ykzts) * [ThibG](https://github.com/ThibG) +* [ykzts](https://github.com/ykzts) +* [dependabot[bot]](https://github.com/apps/dependabot) * [akihikodaki](https://github.com/akihikodaki) +* [dependabot-preview[bot]](https://github.com/apps/dependabot-preview) * [mjankowski](https://github.com/mjankowski) -* [dependabot[bot]](https://github.com/apps/dependabot) * [unarist](https://github.com/unarist) -* [m4sk1n](https://github.com/m4sk1n) * [yiskah](https://github.com/yiskah) * [nolanlawson](https://github.com/nolanlawson) * [ysksn](https://github.com/ysksn) -* [sorin-davidoi](https://github.com/sorin-davidoi) * [abcang](https://github.com/abcang) +* [sorin-davidoi](https://github.com/sorin-davidoi) * [lynlynlynx](https://github.com/lynlynlynx) * [mayaeh](https://github.com/mayaeh) +* [m4sk1n](mailto:me@m4sk.in) +* [Marcin Mikołajczak](mailto:me@m4sk.in) +* [Kjwon15](https://github.com/Kjwon15) * [renatolond](https://github.com/renatolond) * [alpaca-tc](https://github.com/alpaca-tc) +* [jeroenpraat](https://github.com/jeroenpraat) * [nclm](https://github.com/nclm) * [ineffyble](https://github.com/ineffyble) -* [jeroenpraat](https://github.com/jeroenpraat) +* [mabkenar](https://github.com/mabkenar) * [blackle](https://github.com/blackle) * [Quent-in](https://github.com/Quent-in) * [JantsoP](https://github.com/JantsoP) -* [Kjwon15](https://github.com/Kjwon15) -* [mabkenar](https://github.com/mabkenar) +* [zunda](https://github.com/zunda) * [nullkal](https://github.com/nullkal) * [yookoala](https://github.com/yookoala) +* [Aditoo17](https://github.com/Aditoo17) +* [Quenty31](https://github.com/Quenty31) +* [marek-lach](https://github.com/marek-lach) * [shuheiktgw](https://github.com/shuheiktgw) * [ashfurrow](https://github.com/ashfurrow) -* [zunda](https://github.com/zunda) -* [Quenty31](https://github.com/Quenty31) * [eramdam](https://github.com/eramdam) +* [noellabo](https://github.com/noellabo) * [takayamaki](https://github.com/takayamaki) +* [danhunsaker](https://github.com/danhunsaker) * [masarakki](https://github.com/masarakki) * [ticky](https://github.com/ticky) -* [danhunsaker](https://github.com/danhunsaker) * [ThisIsMissEm](https://github.com/ThisIsMissEm) * [hcmiya](https://github.com/hcmiya) * [stephenburgess8](https://github.com/stephenburgess8) * [Wonderfall](https://github.com/Wonderfall) * [matteoaquila](https://github.com/matteoaquila) * [yukimochi](https://github.com/yukimochi) +* [palindromordnilap](https://github.com/palindromordnilap) * [rkarabut](https://github.com/rkarabut) * [Artoria2e5](https://github.com/Artoria2e5) * [nightpool](https://github.com/nightpool) * [marrus-sh](https://github.com/marrus-sh) +* [hinaloe](https://github.com/hinaloe) * [krainboltgreene](https://github.com/krainboltgreene) * [pfigel](https://github.com/pfigel) * [Aldarone](https://github.com/Aldarone) * [BoFFire](https://github.com/BoFFire) * [clworld](https://github.com/clworld) +* [MasterGroosha](https://github.com/MasterGroosha) * [dracos](https://github.com/dracos) +* [MaciekBaron](https://github.com/MaciekBaron) * [SerCom_KC](mailto:sercom-kc@users.noreply.github.com) * [Sylvhem](https://github.com/Sylvhem) -* [MasterGroosha](https://github.com/MasterGroosha) +* [MitarashiDango](https://github.com/MitarashiDango) * [JeanGauthier](https://github.com/JeanGauthier) * [kschaper](https://github.com/kschaper) -* [MaciekBaron](https://github.com/MaciekBaron) -* [MitarashiDango](mailto:mitarashidango@users.noreply.github.com) * [beatrix-bitrot](https://github.com/beatrix-bitrot) -* [Aditoo17](https://github.com/Aditoo17) +* [angristan](https://github.com/angristan) * [adbelle](https://github.com/adbelle) * [evanminto](https://github.com/evanminto) * [MightyPork](https://github.com/MightyPork) +* [ashleyhull-versent](mailto:ashley.hull@versent.com.au) * [yhirano55](https://github.com/yhirano55) * [rinsuki](https://github.com/rinsuki) * [camponez](https://github.com/camponez) -* [hinaloe](https://github.com/hinaloe) -* [SerCom-KC](https://github.com/SerCom-KC) +* [SerCom_KC](mailto:szescxz@gmail.com) * [aschmitz](https://github.com/aschmitz) +* [trwnh](https://github.com/trwnh) * [devkral](https://github.com/devkral) * [fpiesche](https://github.com/fpiesche) +* [hugogameiro](https://github.com/hugogameiro) * [gandaro](https://github.com/gandaro) * [johnsudaar](https://github.com/johnsudaar) +* [ariasuni](https://github.com/ariasuni) * [trebmuh](https://github.com/trebmuh) -* [Rakib Hasan](mailto:rmhasan@gmail.com) -* [ashleyhull-versent](https://github.com/ashleyhull-versent) +* [rmhasan](https://github.com/rmhasan) +* [kedamaDQ](https://github.com/kedamaDQ) * [lindwurm](https://github.com/lindwurm) * [victorhck](mailto:victorhck@geeko.site) * [voidsatisfaction](https://github.com/voidsatisfaction) +* [BenLubar](https://github.com/BenLubar) * [hikari-no-yume](https://github.com/hikari-no-yume) -* [angristan](https://github.com/angristan) * [seefood](https://github.com/seefood) * [jackjennings](https://github.com/jackjennings) +* [koyuawsmbrtn](https://github.com/koyuawsmbrtn) * [spla](mailto:spla@mastodont.cat) * [expenses](https://github.com/expenses) * [walf443](https://github.com/walf443) @@ -95,18 +106,17 @@ and provided thanks to the work of the following contributors: * [mistydemeo](https://github.com/mistydemeo) * [dunn](https://github.com/dunn) * [xqus](https://github.com/xqus) -* [hugogameiro](https://github.com/hugogameiro) -* [ariasuni](https://github.com/ariasuni) * [pfm-eyesightjp](https://github.com/pfm-eyesightjp) * [fakenine](https://github.com/fakenine) +* [Shleeble](https://github.com/Shleeble) * [tsuwatch](https://github.com/tsuwatch) * [victorhck](https://github.com/victorhck) -* [kedamaDQ](https://github.com/kedamaDQ) +* [mkljczk](https://github.com/mkljczk) +* [manuelviens](https://github.com/manuelviens) * [puckipedia](https://github.com/puckipedia) -* [trwnh](https://github.com/trwnh) * [fvh-P](https://github.com/fvh-P) +* [rtucker](https://github.com/rtucker) * [Anna e só](mailto:contraexemplos@gmail.com) -* [BenLubar](https://github.com/BenLubar) * [kazu9su](https://github.com/kazu9su) * [Komic](https://github.com/Komic) * [lmorchard](https://github.com/lmorchard) @@ -119,6 +129,7 @@ and provided thanks to the work of the following contributors: * [goofy-bz](mailto:goofy@babelzilla.org) * [kadiix](https://github.com/kadiix) * [kodacs](https://github.com/kodacs) +* [marcin mikołajczak](mailto:me@m4sk.in) * [JMendyk](https://github.com/JMendyk) * [KScl](https://github.com/KScl) * [sterdev](https://github.com/sterdev) @@ -129,30 +140,31 @@ and provided thanks to the work of the following contributors: * [northerner](https://github.com/northerner) * [fhemberger](https://github.com/fhemberger) * [greysteil](https://github.com/greysteil) -* [hensmith](https://github.com/hensmith) +* [hencatsmith](https://github.com/hencatsmith) * [d6rkaiz](https://github.com/d6rkaiz) * [Reverite](https://github.com/Reverite) * [JohnD28](https://github.com/JohnD28) * [znz](https://github.com/znz) -* [marek-lach](https://github.com/marek-lach) * [Naouak](https://github.com/Naouak) * [pawelngei](https://github.com/pawelngei) -* [rtucker](https://github.com/rtucker) * [reneklacan](https://github.com/reneklacan) * [ekiru](https://github.com/ekiru) -* [noellabo](https://github.com/noellabo) * [tcitworld](https://github.com/tcitworld) * [geta6](https://github.com/geta6) * [happycoloredbanana](https://github.com/happycoloredbanana) * [leopku](https://github.com/leopku) * [SansPseudoFix](https://github.com/SansPseudoFix) +* [salvadorpla](https://github.com/salvadorpla) * [tomfhowe](https://github.com/tomfhowe) * [noraworld](https://github.com/noraworld) * [theboss](https://github.com/theboss) +* [nzws](https://github.com/nzws) * [178inaba](https://github.com/178inaba) +* [xgess](https://github.com/xgess) * [alyssais](https://github.com/alyssais) -* [hiphref](https://github.com/hiphref) +* [aablinov](https://github.com/aablinov) * [stalker314314](https://github.com/stalker314314) +* [cutls](https://github.com/cutls) * [huertanix](https://github.com/huertanix) * [genesixx](https://github.com/genesixx) * [halkeye](https://github.com/halkeye) @@ -162,21 +174,24 @@ and provided thanks to the work of the following contributors: * [kmichl](https://github.com/kmichl) * [Kurtis Rainbolt-Greene](mailto:me@kurtisrainboltgreene.name) * [saper](https://github.com/saper) +* [Dar13](https://github.com/Dar13) * [nevillepark](https://github.com/nevillepark) * [ornithocoder](https://github.com/ornithocoder) +* [pwoolcoc](https://github.com/pwoolcoc) * [pierreozoux](https://github.com/pierreozoux) * [qguv](https://github.com/qguv) * [Ram Lmn](mailto:ramlmn@users.noreply.github.com) -* [sascha-sl](https://github.com/sascha-sl) +* [aurelia-sl](https://github.com/aurelia-sl) * [harukasan](https://github.com/harukasan) * [stamak](https://github.com/stamak) -* [Technowix](mailto:technowix@users.noreply.github.com) +* [Technowix](https://github.com/Technowix) * [Zoeille](https://github.com/Zoeille) * [Thor Harald Johansen](mailto:thj@thj.no) * [0x70b1a5](https://github.com/0x70b1a5) * [gled-rs](https://github.com/gled-rs) * [Valentin_NC](mailto:valentin.ouvrard@nautile.sarl) * [R0ckweb](https://github.com/R0ckweb) +* [unasuke](https://github.com/unasuke) * [caasi](https://github.com/caasi) * [chr-1x](https://github.com/chr-1x) * [esetomo](https://github.com/esetomo) @@ -184,8 +199,9 @@ and provided thanks to the work of the following contributors: * [hoodie](mailto:hoodiekitten@outlook.com) * [luzi82](https://github.com/luzi82) * [duxovni](https://github.com/duxovni) +* [slice](https://github.com/slice) * [tmm576](https://github.com/tmm576) -* [unsmell](https://github.com/unsmell) +* [unsmell](mailto:unsmell@users.noreply.github.com) * [valerauko](https://github.com/valerauko) * [chriswmartin](https://github.com/chriswmartin) * [vahnj](https://github.com/vahnj) @@ -193,21 +209,25 @@ and provided thanks to the work of the following contributors: * [AndreLewin](https://github.com/AndreLewin) * [0xflotus](https://github.com/0xflotus) * [redtachyons](https://github.com/redtachyons) +* [acid-chicken](https://github.com/acid-chicken) * [thurloat](https://github.com/thurloat) * [aaribaud](https://github.com/aaribaud) * [pointlessone](https://github.com/pointlessone) * [Andrew](mailto:andrewlchronister@gmail.com) +* [aurelien-reeves](https://github.com/aurelien-reeves) +* [AnaGelez](https://github.com/AnaGelez) * [estuans](https://github.com/estuans) * [dissolve](https://github.com/dissolve) * [PurpleBooth](https://github.com/PurpleBooth) * [bradurani](https://github.com/bradurani) * [wavebeem](https://github.com/wavebeem) * [bruwalfas](https://github.com/bruwalfas) -* [foxsan48](https://github.com/foxsan48) +* [LottieVixen](https://github.com/LottieVixen) * [wchristian](https://github.com/wchristian) * [muffinista](https://github.com/muffinista) * [cdutson](https://github.com/cdutson) * [farlistener](https://github.com/farlistener) +* [dariusk](https://github.com/dariusk) * [DavidLibeau](https://github.com/DavidLibeau) * [ddevault](https://github.com/ddevault) * [Fjoerfoks](https://github.com/Fjoerfoks) @@ -216,6 +236,7 @@ and provided thanks to the work of the following contributors: * [Gomasy](https://github.com/Gomasy) * [unstabler](https://github.com/unstabler) * [potato4d](https://github.com/potato4d) +* [Hanage999](https://github.com/Hanage999) * [h-izumi](https://github.com/h-izumi) * [ErikXXon](https://github.com/ErikXXon) * [ian-kelling](https://github.com/ian-kelling) @@ -231,21 +252,23 @@ and provided thanks to the work of the following contributors: * [Kaylee](mailto:kaylee@codethat.sucks) * [Kazhnuz](https://github.com/Kazhnuz) * [connyduck](https://github.com/connyduck) -* [Lindsey Bieda](mailto:lindseyb@users.noreply.github.com) +* [LindseyB](https://github.com/LindseyB) * [Lorenz Diener](mailto:halcyon@icosahedron.website) * [alimony](https://github.com/alimony) * [mig5](https://github.com/mig5) * [moritzheiber](https://github.com/moritzheiber) * [ndarville](https://github.com/ndarville) * [Abzol](https://github.com/Abzol) -* [pwoolcoc](https://github.com/pwoolcoc) +* [PatOnTheBack](https://github.com/PatOnTheBack) * [xPaw](https://github.com/xPaw) * [petzah](https://github.com/petzah) * [ignisf](https://github.com/ignisf) * [raymestalez](https://github.com/raymestalez) * [remram44](https://github.com/remram44) * [sts10](https://github.com/sts10) +* [SuperSandro2000](https://github.com/SuperSandro2000) * [u1-liquid](https://github.com/u1-liquid) +* [rosylilly](https://github.com/rosylilly) * [sim6](https://github.com/sim6) * [Sir-Boops](https://github.com/Sir-Boops) * [stemid](https://github.com/stemid) @@ -270,6 +293,7 @@ and provided thanks to the work of the following contributors: * [cpsdqs](https://github.com/cpsdqs) * [barzamin](https://github.com/barzamin) * [fhalna](https://github.com/fhalna) +* [highemerly](https://github.com/highemerly) * [haoyayoi](https://github.com/haoyayoi) * [ik11235](https://github.com/ik11235) * [kawax](https://github.com/kawax) @@ -279,6 +303,7 @@ and provided thanks to the work of the following contributors: * [mecab](https://github.com/mecab) * [nicobz25](https://github.com/nicobz25) * [oliverkeeble](https://github.com/oliverkeeble) +* [partev](https://github.com/partev) * [pinfort](https://github.com/pinfort) * [rbaumert](https://github.com/rbaumert) * [rhoio](https://github.com/rhoio) @@ -287,19 +312,17 @@ and provided thanks to the work of the following contributors: * [vjackson725](https://github.com/vjackson725) * [wxcafe](https://github.com/wxcafe) * [新都心(Neet Shin)](mailto:nucx@dio-vox.com) +* [clarfon](https://github.com/clarfon) * [cygnan](https://github.com/cygnan) * [Awea](https://github.com/Awea) * [halcy](https://github.com/halcy) -* [naaaaaaaaaaaf](https://github.com/naaaaaaaaaaaf) * [8398a7](https://github.com/8398a7) * [857b](https://github.com/857b) * [insom](https://github.com/insom) * [tachyons](https://github.com/tachyons) -* [acid-chicken](https://github.com/acid-chicken) * [Esteth](https://github.com/Esteth) * [unascribed](https://github.com/unascribed) * [Aguay-val](https://github.com/Aguay-val) -* [Akihiko Odaki](mailto:nekomanma@pixiv.co.jp) * [knu](https://github.com/knu) * [h3poteto](https://github.com/h3poteto) * [unleashed](https://github.com/unleashed) @@ -307,8 +330,8 @@ and provided thanks to the work of the following contributors: * [console-cowboy](https://github.com/console-cowboy) * [Alkarex](https://github.com/Alkarex) * [a2](https://github.com/a2) +* [alfiedotwtf](https://github.com/alfiedotwtf) * [0xa](https://github.com/0xa) -* [palindromordnilap](https://github.com/palindromordnilap) * [virtualpain](https://github.com/virtualpain) * [sapphirus](https://github.com/sapphirus) * [amandavisconti](https://github.com/amandavisconti) @@ -320,10 +343,9 @@ and provided thanks to the work of the following contributors: * [contraexemplo](https://github.com/contraexemplo) * [abackstrom](https://github.com/abackstrom) * [armandfardeau](https://github.com/armandfardeau) +* [raboof](https://github.com/raboof) * [jumbosushi](https://github.com/jumbosushi) -* [aurelien-reeves](https://github.com/aurelien-reeves) * [ayumin](https://github.com/ayumin) -* [BaptisteGelez](https://github.com/BaptisteGelez) * [bzg](https://github.com/bzg) * [benediktg](https://github.com/benediktg) * [blakebarnett](https://github.com/blakebarnett) @@ -337,15 +359,15 @@ and provided thanks to the work of the following contributors: * [DoubleMalt](https://github.com/DoubleMalt) * [Moosh-be](https://github.com/Moosh-be) * [Motoma](https://github.com/Motoma) -* [chriswk](https://github.com/chriswk) +* [Christopher Kolstad](mailto:christopher.kolstad@finn.no) * [csu](https://github.com/csu) -* [clarfon](https://github.com/clarfon) * [kklleemm](https://github.com/kklleemm) * [colindean](https://github.com/colindean) * [dachinat](https://github.com/dachinat) * [multiple-creatures](https://github.com/multiple-creatures) * [watilde](https://github.com/watilde) * [daprice](https://github.com/daprice) +* [da2x](https://github.com/da2x) * [dar5hak](https://github.com/dar5hak) * [kant](https://github.com/kant) * [maxolasersquad](https://github.com/maxolasersquad) @@ -354,7 +376,7 @@ and provided thanks to the work of the following contributors: * [davefp](https://github.com/davefp) * [yipdw](https://github.com/yipdw) * [debanshuk](https://github.com/debanshuk) -* [Derek Lewis](mailto:derekcecillewis@gmail.com) +* [DerekNonGeneric](https://github.com/DerekNonGeneric) * [dblandin](https://github.com/dblandin) * [Drew Gates](mailto:aranaur@users.noreply.github.com) * [dtschust](https://github.com/dtschust) @@ -366,11 +388,13 @@ and provided thanks to the work of the following contributors: * [ericblade](https://github.com/ericblade) * [mikoim](https://github.com/mikoim) * [espenronnevik](https://github.com/espenronnevik) +* [fabianonline](https://github.com/fabianonline) * [Finariel](https://github.com/Finariel) * [siuying](https://github.com/siuying) * [zoc](https://github.com/zoc) * [fwenzel](https://github.com/fwenzel) * [GenbuHase](https://github.com/GenbuHase) +* [nilsding](https://github.com/nilsding) * [hattori6789](https://github.com/hattori6789) * [algernon](https://github.com/algernon) * [Fastbyte01](https://github.com/Fastbyte01) @@ -386,17 +410,19 @@ and provided thanks to the work of the following contributors: * [suzukaze](https://github.com/suzukaze) * [Hiromi-Kai](https://github.com/Hiromi-Kai) * [hishamhm](https://github.com/hishamhm) +* [Slaynash](https://github.com/Slaynash) * [musashino205](https://github.com/musashino205) * [iwaim](https://github.com/iwaim) * [valrus](https://github.com/valrus) * [IMcD23](https://github.com/IMcD23) * [yi0713](https://github.com/yi0713) * [iblech](https://github.com/iblech) -* [usbsnowcrash](https://github.com/usbsnowcrash) +* [J Yeary](mailto:usbsnowcrash@users.noreply.github.com) * [jack-michaud](https://github.com/jack-michaud) * [Floppy](https://github.com/Floppy) * [loomchild](https://github.com/loomchild) * [jenkr55](https://github.com/jenkr55) +* [hyenagirl64](https://github.com/hyenagirl64) * [press5](https://github.com/press5) * [TrollDecker](https://github.com/TrollDecker) * [jmontane](https://github.com/jmontane) @@ -406,17 +432,17 @@ and provided thanks to the work of the following contributors: * [joshuap](https://github.com/joshuap) * [Tiwy57](https://github.com/Tiwy57) * [xuv](https://github.com/xuv) -* [June Sallou](mailto:jnsll@users.noreply.github.com) +* [Jnsll](https://github.com/Jnsll) * [j0k3r](https://github.com/j0k3r) * [KEINOS](https://github.com/KEINOS) * [futoase](https://github.com/futoase) -* [Pneumaticat](https://github.com/Pneumaticat) +* [pot8to](https://github.com/pot8to) * [Kit Redgrave](mailto:qwertyitis@gmail.com) * [Knut Erik](mailto:abjectio@users.noreply.github.com) * [mkody](https://github.com/mkody) * [k0ta0uchi](https://github.com/k0ta0uchi) * [KrzysiekJ](https://github.com/KrzysiekJ) -* [leowzukw](https://github.com/leowzukw) +* [Leo Wzukw](mailto:leowzukw@users.noreply.github.com) * [Tak](https://github.com/Tak) * [cacheflow](https://github.com/cacheflow) * [ldidry](https://github.com/ldidry) @@ -424,6 +450,7 @@ and provided thanks to the work of the following contributors: * [lfuelling](https://github.com/lfuelling) * [Grabacr07](https://github.com/Grabacr07) * [mistermantas](https://github.com/mistermantas) +* [MareenaKunjachan](https://github.com/MareenaKunjachan) * [mareklach](https://github.com/mareklach) * [wirehack7](https://github.com/wirehack7) * [martymcguire](https://github.com/martymcguire) @@ -431,50 +458,53 @@ and provided thanks to the work of the following contributors: * [otsune](https://github.com/otsune) * [mbugowski](https://github.com/mbugowski) * [Mathias B](mailto:10813340+mathias-b@users.noreply.github.com) +* [madmath03](https://github.com/madmath03) * [matt-auckland](https://github.com/matt-auckland) * [webroo](https://github.com/webroo) -* [matthiasbeyer](https://github.com/matthiasbeyer) -* [mattjmattj](https://github.com/mattjmattj) -* [mtparet](https://github.com/mtparet) -* [maximeborges](https://github.com/maximeborges) -* [minacle](https://github.com/minacle) -* [michaeljdeeb](https://github.com/michaeljdeeb) -* [Themimitoof](https://github.com/Themimitoof) -* [cyweo](https://github.com/cyweo) +* [Matthias Beyer](mailto:mail@beyermatthias.de) +* [Matthias Jouan](mailto:matthias.jouan@gmail.com) +* [Matthieu Paret](mailto:matthieuparet69@gmail.com) +* [Maxime BORGES](mailto:maxime.borges@gmail.com) +* [Mayu Laierlence](mailto:minacle@live.com) +* [Michael Deeb](mailto:michaeldeeb@me.com) +* [Michael Vieira](mailto:dtox94@gmail.com) +* [Michel](mailto:michel@cyweo.com) * [Midgard](mailto:m1dgard@users.noreply.github.com) -* [mike-burns](https://github.com/mike-burns) -* [verymilan](https://github.com/verymilan) -* [milmazz](https://github.com/milmazz) -* [premist](https://github.com/premist) -* [Mnkai](https://github.com/Mnkai) -* [mitchhentges](https://github.com/mitchhentges) -* [mouse-reeve](https://github.com/mouse-reeve) -* [Mozinet-fr](https://github.com/Mozinet-fr) -* [lae](https://github.com/lae) -* [nosada](https://github.com/nosada) -* [Nanamachi](https://github.com/Nanamachi) -* [orinthe](https://github.com/orinthe) -* [NecroTechno](https://github.com/NecroTechno) -* [Dar13](https://github.com/Dar13) -* [ngerakines](https://github.com/ngerakines) -* [vonneudeck](https://github.com/vonneudeck) -* [Ninetailed](https://github.com/Ninetailed) -* [k24](https://github.com/k24) -* [noiob](https://github.com/noiob) -* [kwaio](https://github.com/kwaio) -* [norayr](https://github.com/norayr) -* [joyeusenoelle](https://github.com/joyeusenoelle) -* [OlivierNicole](https://github.com/OlivierNicole) -* [noppa](https://github.com/noppa) -* [Otakan951](https://github.com/Otakan951) -* [fahy](https://github.com/fahy) +* [Mike Burns](mailto:mburns@thoughtbot.com) +* [Milan](mailto:me@petabyteboy.de) +* [Milan*](mailto:tchncs@vivaldi.net) +* [Milton Mazzarri](mailto:milmazz@gmail.com) +* [Minku Lee](mailto:premist@me.com) +* [Minori Hiraoka](mailto:mnkai@users.noreply.github.com) +* [Mitchell Hentges](mailto:mitch9654@gmail.com) +* [Mostafa Ahangarha](mailto:ahangarha@users.noreply.github.com) +* [Mouse Reeve](mailto:mousereeve@riseup.net) +* [Mozinet](mailto:mozinet-fr@users.noreply.github.com) +* [Musee U](mailto:lae@users.noreply.github.com) +* [NOGISAKA Sadata](mailto:ngsksdt@gmail.com) +* [Naf](mailto:uenok.htc@gmail.com) +* [Nanamachi](mailto:town7.haruki@gmail.com) +* [Nathaniel Ekoniak](mailto:nekoniak@ennate.tech) +* [NecroTechno](mailto:necrotechno@riseup.net) +* [Nick Gerakines](mailto:nick@gerakines.net) +* [Nicolai von Neudeck](mailto:nicolai@vonneudeck.com) +* [Ninetailed](mailto:ninetailed@gmail.com) +* [Nishi, Keisuke](mailto:k24@users.noreply.github.com) +* [Noiob](mailto:noiob@users.noreply.github.com) +* [Nope Nope](mailto:hireme@kwaio.ninja) +* [Norayr Chilingarian](mailto:norayr@arnet.am) +* [Noëlle Anthony](mailto:noelle.d.anthony@gmail.com) +* [N氏](mailto:uenok.htc@gmail.com) +* [Olivier Nicole](mailto:olivierthnicole@gmail.com) +* [Oskari Noppa](mailto:noppa@users.noreply.github.com) +* [Otakan](mailto:otakan951@gmail.com) +* [Padraig Fahy](mailto:tech@padraigfahy.com) * [PatrickRWells](mailto:32802366+patrickrwells@users.noreply.github.com) * [Paul](mailto:naydex.mc+github@gmail.com) * [Pete Keen](mailto:pete@petekeen.net) * [Pierre-Morgan Gate](mailto:pgate@users.noreply.github.com) * [Ratmir Karabut](mailto:rkarabut@sfmodern.ru) * [Reto Kromer](mailto:retokromer@users.noreply.github.com) -* [Rey Tucker](mailto:git@reytucker.us) * [Rob Watson](mailto:rfwatson@users.noreply.github.com) * [Ryan Freebern](mailto:ryan@freebern.org) * [Ryan Wade](mailto:ryan.wade@protonmail.com) @@ -482,6 +512,7 @@ and provided thanks to the work of the following contributors: * [S.H](mailto:gamelinks007@gmail.com) * [Sadiq Saif](mailto:staticsafe@users.noreply.github.com) * [Sam Hewitt](mailto:hewittsamuel@gmail.com) +* [Sasha Sorokin](mailto:dafri.nochiterov8@gmail.com) * [Satoshi KOJIMA](mailto:skoji@mac.com) * [ScienJus](mailto:i@scienjus.com) * [Scott Larkin](mailto:scott@codeclimate.com) @@ -492,12 +523,10 @@ and provided thanks to the work of the following contributors: * [Shaun Gillies](mailto:me@shaungillies.net) * [Shin Adachi](mailto:shn@glucose.jp) * [Shin Kojima](mailto:shin@kojima.org) -* [Sho Kusano](mailto:rosylilly@aduca.org) * [Shouko Yu](mailto:imshouko@gmail.com) * [Sina Mashek](mailto:sina@mashek.xyz) * [Soshi Kato](mailto:mail@sossii.com) * [Spanky](mailto:2788886+spankyworks@users.noreply.github.com) -* [Stanislas](mailto:angristan@pm.me) * [StefOfficiel](mailto:pichard.stephane@free.fr) * [Steven Tappert](mailto:admin@dark-it.net) * [Svetlozar Todorov](mailto:svetlik@users.noreply.github.com) @@ -506,6 +535,7 @@ and provided thanks to the work of the following contributors: * [Takayoshi Nishida](mailto:takayoshi.nishida@gmail.com) * [Takayuki KUSANO](mailto:github@tkusano.jp) * [TakesxiSximada](mailto:takesxi.sximada@gmail.com) +* [Tao Bror Bojlén](mailto:brortao@users.noreply.github.com) * [TheInventrix](mailto:theinventrix@users.noreply.github.com) * [Thomas Alberola](mailto:thomas@needacoffee.fr) * [Toby Deshane](mailto:fortyseven@users.noreply.github.com) @@ -515,10 +545,12 @@ and provided thanks to the work of the following contributors: * [Treyssat-Vincent Nino](mailto:treyssatvincent@users.noreply.github.com) * [Udo Kramer](mailto:optik@fluffel.io) * [Una](mailto:una@unascribed.com) +* [Ushitora Anqou](mailto:ushitora@anqou.net) * [Ushitora Anqou](mailto:ushitora_anqou@yahoo.co.jp) * [Valentin Lorentz](mailto:progval+git@progval.net) * [Vladimir Mincev](mailto:vladimir@canicinteractive.com) * [Waldir Pimenta](mailto:waldyrious@gmail.com) +* [Wenceslao Páez Chávez](mailto:wcpaez@gmail.com) * [Wesley Ellis](mailto:tahnok@gmail.com) * [Wiktor](mailto:wiktor@metacode.biz) * [Wonderfall](mailto:wonderfall@schrodinger.io) @@ -529,6 +561,7 @@ and provided thanks to the work of the following contributors: * [YaQ](mailto:i_k_o_m_a_7@yahoo.co.jp) * [Yanaken](mailto:yanakend@gmail.com) * [Yann Klis](mailto:yann.klis@gmail.com) +* [Yağızhan](mailto:35808275+yagizhan49@users.noreply.github.com) * [Yeechan Lu](mailto:wz.bluesnow@gmail.com) * [Yusuke Abe](mailto:moonset20@gmail.com) * [Zachary Spector](mailto:logicaldash@gmail.com) @@ -542,6 +575,7 @@ and provided thanks to the work of the following contributors: * [chrolis](mailto:chrolis@users.noreply.github.com) * [cormo](mailto:cormorant2+github@gmail.com) * [d0p1](mailto:dopi-sama@hush.com) +* [dxwc](mailto:dxwc@users.noreply.github.com) * [evilny0](mailto:evilny0@moomoocamp.net) * [febrezo](mailto:felixbrezo@gmail.com) * [fsubal](mailto:fsubal@users.noreply.github.com) @@ -550,6 +584,7 @@ and provided thanks to the work of the following contributors: * [gol-cha](mailto:info@mevo.xyz) * [hakoai](mailto:hk--76@qa2.so-net.ne.jp) * [haosbvnker](mailto:github@chaosbunker.com) +* [ichi_i](mailto:51489410+ichi-i@users.noreply.github.com) * [isati](mailto:phil@juchnowi.cz) * [jacob](mailto:jacobherringtondeveloper@gmail.com) * [jenn kaplan](mailto:me@jkap.io) @@ -561,7 +596,6 @@ and provided thanks to the work of the following contributors: * [karlyeurl](mailto:karl.yeurl@gmail.com) * [kedama](mailto:32974885+kedamadq@users.noreply.github.com) * [kodai](mailto:shirafuta.kodai@gmail.com) -* [koyu](mailto:me@koyu.space) * [kuro5hin](mailto:rusty@kuro5hin.org) * [luzpaz](mailto:luzpaz@users.noreply.github.com) * [maxypy](mailto:maxime@mpigou.fr) @@ -573,6 +607,7 @@ and provided thanks to the work of the following contributors: * [muan](mailto:muan@github.com) * [namelessGonbai](mailto:43787036+namelessgonbai@users.noreply.github.com) * [neetshin](mailto:neetshin@neetsh.in) +* [nzws](mailto:git-yuzu@svk.jp) * [rch850](mailto:rich850@gmail.com) * [roikale](mailto:roikale@users.noreply.github.com) * [rysiekpl](mailto:rysiek@hackerspace.pl) @@ -585,6 +620,8 @@ and provided thanks to the work of the following contributors: * [tateisu](mailto:tateisu@gmail.com) * [tmyt](mailto:shigure@refy.net) * [trevDev()](mailto:trev@trevdev.ca) +* [tsia](mailto:github@tsia.de) +* [umonaca](mailto:53662960+umonaca@users.noreply.github.com) * [utam0k](mailto:k0ma@utam0k.jp) * [vpzomtrrfrt](mailto:vpzomtrrfrt@gmail.com) * [walfie](mailto:walfington@gmail.com) @@ -593,9 +630,10 @@ and provided thanks to the work of the following contributors: * [yoshipc](mailto:yoooo@yoshipc.net) * [Özcan Zafer AYAN](mailto:ozcanzaferayan@gmail.com) * [ばん](mailto:detteiu0321@gmail.com) -* [みたらしだんご](mailto:mitarashidango@users.noreply.github.com) +* [ふるふる](mailto:frfs@users.noreply.github.com) * [りんすき](mailto:6533808+rinsuki@users.noreply.github.com) * [ヨイツの賢狼ホロ | 3rd style](mailto:horo@yoitsu.moe) +* [唐宗勛](mailto:tangzongxun@hotmail.com) * [猫吸血鬼ディフリス / 猫ロキP](mailto:deflis@gmail.com) * [艮 鮟鱇](mailto:ushitora_anqou@yahoo.co.jp) * [西小倉宏信](mailto:nishiko@mindia.jp) @@ -607,338 +645,122 @@ This document is provided for informational purposes only. Since it is only upda Following people have contributed to translation of Mastodon: -- **Albanian** - - Besnik Bleta - - Aditoo -- **Arabic** - - ButterflyOfFire - - Aditoo - - Amrz0 -- **Asturian** - - ButterflyOfFire - - Enol P. - - Aditoo -- **Basque** - - Osoitz - - Aditoo - - Aitzol - - ButterflyOfFire - - Peru Iparragirre - - Gorka Azkarate -- **Bengali** - - dxwc -- **Bulgarian** - - ButterflyOfFire - - Aditoo -- **Catalan** - - spla - - Aditoo - - ButterflyOfFire - - Joan Montané - - Jose Luis -- **Chinese (Hong Kong)** - - ButterflyOfFire - - Luzi Leung - - Aditoo -- **Chinese (Simplified)** - - Allen Zhong - - ButterflyOfFire - - SerCom_KC - - martialarts - - Kaitian Xie - - Aditoo - - pan93412 -- **Chinese (Traditional)** - - Aditoo - - ButterflyOfFire - - James58899 - - pan93412 - - S1ttidoe477 - - SHA265 - - Jeff Huang -- **Corsican** - - Alix D. R. - - Aditoo - - ButterflyOfFire -- **Croatian** - - ButterflyOfFire - - Aditoo -- **Czech** - - Aditoo - - Marek Ľach - - ButterflyOfFire -- **Danish** - - Einhjeriar - - Rasmus Sæderup - - Aditoo - - ButterflyOfFire -- **Dutch** - - Albakham - - ButterflyOfFire - - jeroenpraat - - rscmbbng - - Aditoo - - Jelv -- **English** - - ButterflyOfFire - - Renato "Lond" Cerqueira -- **English (United Kingdom)** - - Albakham -- **Esperanto** - - Aditoo - - ButterflyOfFire - - Becci Cat - - Jeong Arm - - Mélanie Chauvel - - Vanege - - Martin Bodin - - tuxayo/Victor Grousset -- **Finnish** - - ButterflyOfFire - - Mikko Poussu - - Taru Luojola - - S Heija - - Aditoo - - Jonne Arjoranta -- **French** - - Albakham - - Alix D. R. - - ButterflyOfFire - - codl - - Leia - - Alda Marteau-Hardi - - Mélanie Chauvel - - Paul Marques Mota - - azenet - - Olivier Humbert - - Aditoo - - Jonathan Chan - - Letiteuf55 - - Baptiste Jonglez - - goofy-mdn - - Jean-Baptiste Holcroft - - Technowix - - Martin Bodin - - Théodore - - Thibaut Girka - - Franck Paul - - Sylvhem -- **Galician** - - ButterflyOfFire - - Xose M. - - Aditoo - - manequim -- **Georgian** - - ButterflyOfFire - - Aditoo -- **German** - - Aditoo - - ButterflyOfFire - - Daniel - - averageunicorn - - Koyu Berteon - - larsreineke - - koyu - - Austin Jones - - lilo - - Benedikt Geißler - - ePirat - - Eugen Rochko - - Weblate Admin - - Patrick Figel -- **Greek** - - Dimitris Maroulidis - - Antonis - - Aditoo - - ButterflyOfFire - - Konstantinos Grevenitis -- **Hebrew** - - ButterflyOfFire - - Aditoo - - Ira - - Yaron Shahrabani -- **Hungarian** - - ButterflyOfFire - - Adam Paszternak - - Aditoo - - Tibike Miklós -- **Ido** - - ButterflyOfFire - - Aditoo -- **Indonesian** - - afachri - - ButterflyOfFire - - Dito Kurnia Pratama - - Eirworks - - Aditoo - - Alfiana Sibuea - - se7entime -- **Irish** - - Albakham - - Kevin Houlihan -- **Italian** - - Alessandro Levati - - Albakham - - ButterflyOfFire - - Marcin Mikołajczak - - Aditoo - - Giuseppe Pignataro - - Stefano -- **Japanese** - - Hinaloe - - 小鳥遊まりあ - - mayaeh - - osapon - - 森の子リスのミーコの大冒険 - - Kumasun Morino - - Yamagishi Kazutoshi - - Aditoo - - ButterflyOfFire - - Jeong Arm - - unarist -- **Kazakh** - - arshat - - Aditoo -- **Korean** - - Aditoo - - Jeong Arm - - ButterflyOfFire - - Minori Hiraoka - - Yamagishi Kazutoshi -- **Lithuanian** - - Sarunas Medeikis -- **Malay** - - Muhammad Nur Hidayat (MNH48) - - Aditoo - - ButterflyOfFire -- **Norwegian (old code)** - - ButterflyOfFire - - Espen Rønnevik - - Aditoo - - Tale -- **Occitan** - - Aditoo - - ButterflyOfFire - - Quenti2 - - Quentí - - Maxenç -- **Persian** - - Masoud Abkenar - - Aditoo - - ButterflyOfFire -- **Polish** - - Aditoo - - Albakham - - ButterflyOfFire - - Stasiek Michalski - - Marcin Mikołajczak - - Jakub Mendyk - - Marek Ľach - - krkk -- **Portuguese** - - Albakham - - João Pinheiro - - manequim - - Aditoo - - ButterflyOfFire - - Hugo Gameiro -- **Portuguese (Brazil)** - - Aditoo - - Albakham - - Anna e só - - Renato "Lond" Cerqueira - - André Andrade - - ButterflyOfFire -- **Romanian** - - adrianbblk - - ButterflyOfFire - - Aditoo -- **Russian** - - Albakham - - ButterflyOfFire - - Evgeny Petrov - - Aditoo - - Павел Гастелло - - Andrew Zyabin - - Yaron Shahrabani -- **Serbian** - - Branko Kokanovic - - Burekz Finezt - - Aditoo - - ButterflyOfFire -- **Serbian (latin)** - - ButterflyOfFire - - Aditoo -- **Slovak** - - Aditoo - - ButterflyOfFire - - Ivan Pleva - - Marek Ľach - - Peter -- **Slovenian** - - Kristijan Tkalec - - Aditoo - - ButterflyOfFire -- **Spanish** - - Albakham - - ButterflyOfFire - - Carlos Mondragon - - Antón López - - Max Winkler - - Pablo de la Concepción Sanz - - Sergio Soriano - - Angeles Broullón - - Lothar Wolf - - Aditoo - - David Charte - - Emmanuel -- **Swedish** - - ButterflyOfFire - - Isak Holmström - - Shellkr - - Aditoo - - Elias Mårtenson - - Stefan Midjich - - Tim Stahel - - Jonas Hultén -- **Telugu** - - avndp - - Ranjith Tellakula - - Aditoo - - ButterflyOfFire - - Joseph Nuthalapati -- **Thai** - - ButterflyOfFire - - parnikkapore - - Thai Localization - - Aditoo -- **Turkish** - - Ali Demirtas - - ButterflyOfFire - - Aditoo -- **Ukrainian** - - alexcleac - - ButterflyOfFire - - Aditoo - - Ivan Verchenko -- **Welsh** - - carl morris - - Jaz-Michael King - - Owain Rhys Lewis - - Rhoslyn Prys - - Aditoo - - ButterflyOfFire - - Renato "Lond" Cerqueira - - Albakham - - Kevin Beynon -- **Armenian** - - Aditoo - - ButterflyOfFire -- **Latvian** - - Aditoo - - ButterflyOfFire - - Maigonis -- **Tamil** - - Aditoo - - ButterflyOfFire - - Prasanna Venkadesh +- Zoltán Gera (*Hungarian*) +- Kristijan Tkalec (*Slovenian*) +- Evert Prants (*Estonian*) +- borys_sh (*Ukrainian*) +- ButterflyOfFire (*Arabic; French*) +- Osoitz (*Basque*) +- oɹʇuʞ (*Spanish, Argentina*) +- koyu (*German*) +- Jeroen (*Dutch*) +- Muha Aliss (*Turkish*) +- 唐宗勛 (*Chinese Simplified*) +- Jeong Arm (*Korean; Esperanto; Japanese*) +- Oguz Ersen (*Turkish*) +- spla (*Catalan*) +- Ramdziana F Y (*Indonesian*) +- Aditoo17 (*Czech*) +- Xosé M. (*Galician*) +- Roboron (*Spanish*) +- Alix Rossi (*Corsican; French*) +- Maya Minatsuki (*Japanese*) +- Masoud Abkenar (*Persian*) +- Thai Localization (*Thai*) +- Marek Ľach (*Slovak; Polish*) +- d5Ziif3K (*Ukrainian*) +- lamnatos (*Greek*) +- Emyn Nant Nefydd (*Welsh*) +- Diluns (*Occitan*) +- atarashiako (*Chinese Simplified*) +- 101010 (*Polish*) +- Yi-Jyun Pan (*Chinese Traditional*) +- silkevicious (*Italian*) +- FédiQuébec (*French*) +- Jaz-Michael King (*Welsh*) +- christalleras (*Norwegian Nynorsk*) +- tykayn (*French*) +- Alessandro Levati (*Italian*) +- carolinagiorno (*Portuguese, Brazilian*) +- taoxvx (*Danish*) +- sabri (*Spanish*) +- Sasha Sorokin (*Russian*) +- shioko (*Chinese Simplified*) +- Evgeny Petrov (*Russian*) +- ariasuni (*French; Esperanto*) +- Tiago Epifânio (*Portuguese*) +- dxwc (*Bengali*) +- liffon (*Swedish*) +- Vanege (*Esperanto*) +- Johan Schiff (*Swedish*) +- kat (*Ukrainian; Russian*) +- oti4500 (*Hungarian; Ukrainian*) +- Juan José Salvador Piedra (*Spanish*) +- diazepan (*Spanish*) +- SHeija (*Finnish*) +- Jack R (*Spanish*) +- Saederup92 (*Danish*) +- Stasiek Michalski (*Polish*) +- Dewi (*Breton; French*) +- cybergene (*Japanese*) +- AW Unad (*Indonesian*) +- Andrea Lo Iacono (*Italian*) +- Ray (*Spanish*) +- Unmual (*Spanish*) +- Ryo (*Korean*) +- juanda097 (*Spanish*) +- Anunnakey (*Macedonian*) +- Cutls (*Japanese*) +- erikstl (*Esperanto*) +- ruine (*Japanese*) +- MadeInSteak (*Finnish*) +- Sokratis Alichanidis (*Greek*) +- dragnucs2 (*Arabic*) +- frumble (*German*) +- Rikard Linde (*Swedish*) +- PPNplus (*Thai*) +- arethsu (*Swedish*) +- EPEMA YT (*German*) +- Rhys Harrison (*Esperanto*) +- KEINOS (*Japanese*) +- filippodb (*Italian*) +- JzshAC (*Chinese Simplified*) +- Rintan1 (*Japanese*) +- Antillion (*Spanish*) +- hiphipvargas (*Portuguese*) +- Ch. (*Korean*) +- tctovsli (*Norwegian Nynorsk*) +- vjasiegd (*Polish*) +- SamitiMed (*Thai*) +- umelard (*Hebrew*) +- 硫酸鶏 (*Japanese*) +- Adrián Lattes (*Spanish*) +- Hinaloe (*Japanese*) +- Renato "Lond" Cerqueira (*Portuguese, Brazilian*) +- parnikkapore (*Thai*) +- Marcin Mikołajczak (*Polish*) +- 森の子リスのミーコの大冒険 (*Japanese*) +- Marcepanek_ (*Polish*) +- Sahak Petrosyan (*Armenian*) +- Daniel Dimitrov (*Bulgarian*) +- Hugh Liu (*Chinese Simplified*) +- Rakino (*Chinese Simplified*) +- hussama (*Portuguese, Brazilian*) +- ThibG (*French*) +- SnDer (*Dutch*) +- PifyZ (*French*) +- eichkat3r (*German*) +- Karol Kosek (*Polish*) +- Akarshan Biswas (*Bengali*) +- Tradjincal (*French*) +- Steven Tappert (*German*) +- sergioaraujo1 (*Portuguese, Brazilian*) +- mmokhi (*Persian*) +- fedot (*Russian*) +- skaaarrr (*German*) +- JackXu (*Chinese Simplified*) +- Lukas Fülling (*German*) +- Zoé Bőle (*German*) +- Dremski (*Bulgarian*) +- tamaina (*Japanese*) +- OpenAlgeria (*Arabic*) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b0d23a22..b200747b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,39 @@ Changelog All notable changes to this project will be documented in this file. +## [3.0.1] - 2019-10-10 +### Added + +- Add `tootctl media usage` command ([Gargron](https://github.com/tootsuite/mastodon/pull/12115)) +- Add admin setting to auto-approve trending hashtags ([Gargron](https://github.com/tootsuite/mastodon/pull/12122), [Gargron](https://github.com/tootsuite/mastodon/pull/12130)) + +### Changed + +- Change `tootctl media refresh` to skip already downloaded attachments ([Gargron](https://github.com/tootsuite/mastodon/pull/12118)) + +### Removed + +- Remove auto-silence behaviour from spam check ([Gargron](https://github.com/tootsuite/mastodon/pull/12117)) +- Remove HTML `lang` attribute from individual statuses in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/12124)) +- Remove fallback to long description on sidebar and meta description ([Gargron](https://github.com/tootsuite/mastodon/pull/12119)) + +### Fixed + +- Fix preloaded JSON-LD context for identity not being used ([Gargron](https://github.com/tootsuite/mastodon/pull/12138)) +- Fix media editing modal changing dimensions once the image loads ([Gargron](https://github.com/tootsuite/mastodon/pull/12131)) +- Fix not showing whether a custom emoji has a local counterpart in admin UI ([Gargron](https://github.com/tootsuite/mastodon/pull/12135)) +- Fix attachment not being re-downloaded even if file is not stored ([Gargron](https://github.com/tootsuite/mastodon/pull/12125)) +- Fix old migration trying to use new column due to default status scope ([Gargron](https://github.com/tootsuite/mastodon/pull/12095)) +- Fix column back button missing for not found accounts ([trwnh](https://github.com/tootsuite/mastodon/pull/12094)) +- Fix issues with tootctl's parallelization and progress reporting ([Gargron](https://github.com/tootsuite/mastodon/pull/12093), [Gargron](https://github.com/tootsuite/mastodon/pull/12097)) +- Fix existing user records with now-renamed `pt` locale ([Gargron](https://github.com/tootsuite/mastodon/pull/12092)) +- Fix hashtag timeline REST API accepting too many hashtags ([Gargron](https://github.com/tootsuite/mastodon/pull/12091)) +- Fix `GET /api/v1/instance` REST APIs being unavailable in secure mode ([Gargron](https://github.com/tootsuite/mastodon/pull/12089)) +- Fix performance of home feed regeneration and merging ([Gargron](https://github.com/tootsuite/mastodon/pull/12084)) +- Fix ffmpeg performance issues due to stdout buffer overflow ([hugogameiro](https://github.com/tootsuite/mastodon/pull/12088)) +- Fix S3 adapter retrying failing uploads with exponential backoff ([Gargron](https://github.com/tootsuite/mastodon/pull/12085)) +- Fix `tootctl accounts cull` advertising unused option flag ([Kjwon15](https://github.com/tootsuite/mastodon/pull/12074)) + ## [3.0.0] - 2019-10-03 ### Added diff --git a/Gemfile b/Gemfile index ccac9adc9..7dd33f312 100644 --- a/Gemfile +++ b/Gemfile @@ -90,7 +90,7 @@ gem 'simple_form', '~> 4.1' gem 'sprockets-rails', '~> 3.2', require: 'sprockets/railtie' gem 'stoplight', '~> 2.1.3' gem 'strong_migrations', '~> 0.4' -gem 'tty-command', '~> 0.8', require: false +gem 'tty-command', '~> 0.9', require: false gem 'tty-prompt', '~> 0.19', require: false gem 'twitter-text', '~> 1.14' gem 'tzinfo-data', '~> 1.2019' @@ -119,7 +119,7 @@ end group :test do gem 'capybara', '~> 3.29' gem 'climate_control', '~> 0.2' - gem 'faker', '~> 2.4' + gem 'faker', '~> 2.5' gem 'microformats', '~> 4.1' gem 'rails-controller-testing', '~> 1.0' gem 'rspec-sidekiq', '~> 3.0' diff --git a/Gemfile.lock b/Gemfile.lock index 9d506d106..8678cfa3a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -93,7 +93,7 @@ GEM tzinfo (~> 1.1) addressable (2.7.0) public_suffix (>= 2.0.2, < 5.0) - airbrussh (1.3.3) + airbrussh (1.3.4) sshkit (>= 1.6.1, != 1.7.0) annotate (2.7.5) activerecord (>= 3.2, < 7.0) @@ -142,7 +142,7 @@ GEM bundler (>= 1.2.0, < 3) thor (~> 0.18) byebug (11.0.0) - capistrano (3.11.1) + capistrano (3.11.2) airbrussh (>= 1.0.0) i18n rake (>= 10.0.0) @@ -188,13 +188,14 @@ GEM css_parser (1.7.0) addressable debug_inspector (0.0.3) - derailed_benchmarks (1.3.6) + derailed_benchmarks (1.4.0) benchmark-ips (~> 2) get_process_mem (~> 0) heapy (~> 0) memory_profiler (~> 0) rack (>= 1) rake (> 10, < 13) + ruby-statistics (>= 2.1) thor (~> 0.19) devise (4.7.1) bcrypt (~> 3.0) @@ -233,13 +234,13 @@ GEM faraday multi_json encryptor (3.0.0) - equatable (0.5.0) + equatable (0.6.1) erubi (1.8.0) et-orbi (1.1.6) tzinfo excon (0.62.0) fabrication (2.20.2) - faker (2.4.0) + faker (2.5.0) i18n (~> 1.6.0) faraday (0.15.4) multipart-post (>= 1.2, < 3) @@ -265,7 +266,8 @@ GEM fuubar (2.4.1) rspec-core (~> 3.0) ruby-progressbar (~> 1.4) - get_process_mem (0.2.3) + get_process_mem (0.2.4) + ffi (~> 1.0) globalid (0.4.2) activesupport (>= 4.2.0) goldfinger (2.1.0) @@ -429,13 +431,13 @@ GEM parser (2.6.4.0) ast (~> 2.4.0) parslet (1.8.2) - pastel (0.7.2) - equatable (~> 0.5.0) - tty-color (~> 0.4.0) + pastel (0.7.3) + equatable (~> 0.6) + tty-color (~> 0.5) pg (1.1.4) pghero (2.3.0) activerecord (>= 5) - pkg-config (1.3.8) + pkg-config (1.3.9) premailer (1.11.1) addressable css_parser (>= 1.6.0) @@ -571,6 +573,7 @@ GEM ruby-progressbar (1.10.1) ruby-saml (1.9.0) nokogiri (>= 1.5.10) + ruby-statistics (2.1.1) rufus-scheduler (3.5.2) fugit (~> 1.1, >= 1.1.5) safe_yaml (1.0.5) @@ -629,8 +632,8 @@ GEM thor (0.20.3) thread_safe (0.3.6) tilt (2.0.9) - tty-color (0.4.3) - tty-command (0.8.2) + tty-color (0.5.0) + tty-command (0.9.0) pastel (~> 0.7.0) tty-cursor (0.7.0) tty-prompt (0.19.0) @@ -655,7 +658,7 @@ GEM uniform_notifier (1.12.1) warden (1.2.8) rack (>= 2.0.6) - webmock (3.7.5) + webmock (3.7.6) addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) @@ -709,7 +712,7 @@ DEPENDENCIES doorkeeper (~> 5.2) dotenv-rails (~> 2.7) fabrication (~> 2.20) - faker (~> 2.4) + faker (~> 2.5) fast_blank (~> 1.0) fastimage fog-core (<= 2.1.0) @@ -796,7 +799,7 @@ DEPENDENCIES streamio-ffmpeg (~> 3.0) strong_migrations (~> 0.4) thor (~> 0.20) - tty-command (~> 0.8) + tty-command (~> 0.9) tty-prompt (~> 0.19) twitter-text (~> 1.14) tzinfo-data (~> 1.2019) diff --git a/app/controllers/api/v1/instances/activity_controller.rb b/app/controllers/api/v1/instances/activity_controller.rb index 4fb5a69d8..b30e8464c 100644 --- a/app/controllers/api/v1/instances/activity_controller.rb +++ b/app/controllers/api/v1/instances/activity_controller.rb @@ -4,6 +4,7 @@ class Api::V1::Instances::ActivityController < Api::BaseController before_action :require_enabled_api! skip_before_action :set_cache_headers + skip_before_action :require_authenticated_user!, unless: :whitelist_mode? respond_to :json diff --git a/app/controllers/api/v1/instances/peers_controller.rb b/app/controllers/api/v1/instances/peers_controller.rb index 75c3cb4ba..cc00d8a6b 100644 --- a/app/controllers/api/v1/instances/peers_controller.rb +++ b/app/controllers/api/v1/instances/peers_controller.rb @@ -4,6 +4,7 @@ class Api::V1::Instances::PeersController < Api::BaseController before_action :require_enabled_api! skip_before_action :set_cache_headers + skip_before_action :require_authenticated_user!, unless: :whitelist_mode? respond_to :json diff --git a/app/controllers/api/v1/instances_controller.rb b/app/controllers/api/v1/instances_controller.rb index 8d8231423..c323b60b4 100644 --- a/app/controllers/api/v1/instances_controller.rb +++ b/app/controllers/api/v1/instances_controller.rb @@ -4,6 +4,7 @@ class Api::V1::InstancesController < Api::BaseController respond_to :json skip_before_action :set_cache_headers + skip_before_action :require_authenticated_user!, unless: :whitelist_mode? def show expires_in 3.minutes, public: true diff --git a/app/controllers/api/v1/streaming_controller.rb b/app/controllers/api/v1/streaming_controller.rb index 66b812e76..ebb17608c 100644 --- a/app/controllers/api/v1/streaming_controller.rb +++ b/app/controllers/api/v1/streaming_controller.rb @@ -5,11 +5,17 @@ class Api::V1::StreamingController < Api::BaseController def index if Rails.configuration.x.streaming_api_base_url != request.host - uri = URI.parse(request.url) - uri.host = URI.parse(Rails.configuration.x.streaming_api_base_url).host - redirect_to uri.to_s, status: 301 + redirect_to streaming_api_url, status: 301 else - raise ActiveRecord::RecordNotFound + not_found end end + + private + + def streaming_api_url + Addressable::URI.parse(request.url).tap do |uri| + uri.host = Addressable::URI.parse(Rails.configuration.x.streaming_api_base_url).host + end.to_s + end end diff --git a/app/controllers/api/v1/timelines/home_controller.rb b/app/controllers/api/v1/timelines/home_controller.rb index fcd0757f1..ff5ede138 100644 --- a/app/controllers/api/v1/timelines/home_controller.rb +++ b/app/controllers/api/v1/timelines/home_controller.rb @@ -13,7 +13,7 @@ class Api::V1::Timelines::HomeController < Api::BaseController render json: @statuses, each_serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id), - status: regeneration_in_progress? ? 206 : 200 + status: account_home_feed.regenerating? ? 206 : 200 end private @@ -62,8 +62,4 @@ class Api::V1::Timelines::HomeController < Api::BaseController def pagination_since_id @statuses.first.id end - - def regeneration_in_progress? - Redis.current.exists("account:#{current_account.id}:regeneration") - end end diff --git a/app/controllers/auth/sessions_controller.rb b/app/controllers/auth/sessions_controller.rb index efde02ac2..eac9dde6f 100644 --- a/app/controllers/auth/sessions_controller.rb +++ b/app/controllers/auth/sessions_controller.rb @@ -108,6 +108,7 @@ class Auth::SessionsController < Devise::SessionsController def prompt_for_two_factor(user) session[:otp_user_id] = user.id + use_pack 'auth' @body_classes = 'lighter' render :two_factor end diff --git a/app/javascript/flavours/glitch/actions/timelines.js b/app/javascript/flavours/glitch/actions/timelines.js index f5bc0fd23..16ff4703e 100644 --- a/app/javascript/flavours/glitch/actions/timelines.js +++ b/app/javascript/flavours/glitch/actions/timelines.js @@ -97,7 +97,7 @@ export function expandTimeline(timelineId, path, params = {}, done = noOp) { api(getState).get(path, { params }).then(response => { const next = getLinks(response).refs.find(link => link.rel === 'next'); dispatch(importFetchedStatuses(response.data)); - dispatch(expandTimelineSuccess(timelineId, response.data, next ? next.uri : null, response.code === 206, isLoadingRecent, isLoadingMore, isLoadingRecent && preferPendingItems)); + dispatch(expandTimelineSuccess(timelineId, response.data, next ? next.uri : null, response.status === 206, isLoadingRecent, isLoadingMore, isLoadingRecent && preferPendingItems)); done(); }).catch(error => { dispatch(expandTimelineFail(timelineId, error, isLoadingMore)); diff --git a/app/javascript/flavours/glitch/components/column_back_button.js b/app/javascript/flavours/glitch/components/column_back_button.js index 8326cbb79..05688f867 100644 --- a/app/javascript/flavours/glitch/components/column_back_button.js +++ b/app/javascript/flavours/glitch/components/column_back_button.js @@ -41,7 +41,19 @@ export default class ColumnBackButton extends React.PureComponent { if (multiColumn) { return component; } else { - return createPortal(component, document.getElementById('tabs-bar__portal')); + // The portal container and the component may be rendered to the DOM in + // the same React render pass, so the container might not be available at + // the time `render()` is called. + const container = document.getElementById('tabs-bar__portal'); + if (container === null) { + // The container wasn't available, force a re-render so that the + // component can eventually be inserted in the container and not scroll + // with the rest of the area. + this.forceUpdate(); + return component; + } else { + return createPortal(component, container); + } } } diff --git a/app/javascript/flavours/glitch/components/column_header.js b/app/javascript/flavours/glitch/components/column_header.js index 43c9f1144..dd1162429 100644 --- a/app/javascript/flavours/glitch/components/column_header.js +++ b/app/javascript/flavours/glitch/components/column_header.js @@ -235,7 +235,19 @@ class ColumnHeader extends React.PureComponent { if (multiColumn || placeholder) { return component; } else { - return createPortal(component, document.getElementById('tabs-bar__portal')); + // The portal container and the component may be rendered to the DOM in + // the same React render pass, so the container might not be available at + // the time `render()` is called. + const container = document.getElementById('tabs-bar__portal'); + if (container === null) { + // The container wasn't available, force a re-render so that the + // component can eventually be inserted in the container and not scroll + // with the rest of the area. + this.forceUpdate(); + return component; + } else { + return createPortal(component, container); + } } } diff --git a/app/javascript/flavours/glitch/components/extended_video_player.js b/app/javascript/flavours/glitch/components/extended_video_player.js deleted file mode 100644 index 009c0d559..000000000 --- a/app/javascript/flavours/glitch/components/extended_video_player.js +++ /dev/null @@ -1,63 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; - -export default class ExtendedVideoPlayer extends React.PureComponent { - - static propTypes = { - src: PropTypes.string.isRequired, - alt: PropTypes.string, - width: PropTypes.number, - height: PropTypes.number, - time: PropTypes.number, - controls: PropTypes.bool.isRequired, - muted: PropTypes.bool.isRequired, - onClick: PropTypes.func, - }; - - handleLoadedData = () => { - if (this.props.time) { - this.video.currentTime = this.props.time; - } - } - - componentDidMount () { - this.video.addEventListener('loadeddata', this.handleLoadedData); - } - - componentWillUnmount () { - this.video.removeEventListener('loadeddata', this.handleLoadedData); - } - - setRef = (c) => { - this.video = c; - } - - handleClick = e => { - e.stopPropagation(); - const handler = this.props.onClick; - if (handler) handler(); - } - - render () { - const { src, muted, controls, alt } = this.props; - - return ( - <div className='extended-video-player'> - <video - ref={this.setRef} - src={src} - autoPlay - role='button' - tabIndex='0' - aria-label={alt} - title={alt} - muted={muted} - controls={controls} - loop={!controls} - onClick={this.handleClick} - /> - </div> - ); - } - -} diff --git a/app/javascript/flavours/glitch/components/gifv.js b/app/javascript/flavours/glitch/components/gifv.js new file mode 100644 index 000000000..83cfae49c --- /dev/null +++ b/app/javascript/flavours/glitch/components/gifv.js @@ -0,0 +1,75 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +export default class GIFV extends React.PureComponent { + + static propTypes = { + src: PropTypes.string.isRequired, + alt: PropTypes.string, + width: PropTypes.number, + height: PropTypes.number, + onClick: PropTypes.func, + }; + + state = { + loading: true, + }; + + handleLoadedData = () => { + this.setState({ loading: false }); + } + + componentWillReceiveProps (nextProps) { + if (nextProps.src !== this.props.src) { + this.setState({ loading: true }); + } + } + + handleClick = e => { + const { onClick } = this.props; + + if (onClick) { + e.stopPropagation(); + onClick(); + } + } + + render () { + const { src, width, height, alt } = this.props; + const { loading } = this.state; + + return ( + <div className='gifv' style={{ position: 'relative' }}> + {loading && ( + <canvas + width={width} + height={height} + role='button' + tabIndex='0' + aria-label={alt} + title={alt} + onClick={this.handleClick} + /> + )} + + <video + src={src} + width={width} + height={height} + role='button' + tabIndex='0' + aria-label={alt} + title={alt} + muted + loop + autoPlay + playsInline + onClick={this.handleClick} + onLoadedData={this.handleLoadedData} + style={{ position: loading ? 'absolute' : 'static', top: 0, left: 0 }} + /> + </div> + ); + } + +} diff --git a/app/javascript/flavours/glitch/components/missing_indicator.js b/app/javascript/flavours/glitch/components/missing_indicator.js index 70d8c3b98..ee5bf7c1e 100644 --- a/app/javascript/flavours/glitch/components/missing_indicator.js +++ b/app/javascript/flavours/glitch/components/missing_indicator.js @@ -1,17 +1,24 @@ import React from 'react'; +import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; +import illustration from 'flavours/glitch/images/elephant_ui_disappointed.svg'; +import classNames from 'classnames'; -const MissingIndicator = () => ( - <div className='regeneration-indicator missing-indicator'> - <div> - <div className='regeneration-indicator__figure' /> +const MissingIndicator = ({ fullPage }) => ( + <div className={classNames('regeneration-indicator', { 'regeneration-indicator--without-header': fullPage })}> + <div className='regeneration-indicator__figure'> + <img src={illustration} alt='' /> + </div> - <div className='regeneration-indicator__label'> - <FormattedMessage id='missing_indicator.label' tagName='strong' defaultMessage='Not found' /> - <FormattedMessage id='missing_indicator.sublabel' defaultMessage='This resource could not be found' /> - </div> + <div className='regeneration-indicator__label'> + <FormattedMessage id='missing_indicator.label' tagName='strong' defaultMessage='Not found' /> + <FormattedMessage id='missing_indicator.sublabel' defaultMessage='This resource could not be found' /> </div> </div> ); +MissingIndicator.propTypes = { + fullPage: PropTypes.bool, +}; + export default MissingIndicator; diff --git a/app/javascript/flavours/glitch/components/regeneration_indicator.js b/app/javascript/flavours/glitch/components/regeneration_indicator.js new file mode 100644 index 000000000..f4e0a79ef --- /dev/null +++ b/app/javascript/flavours/glitch/components/regeneration_indicator.js @@ -0,0 +1,18 @@ +import React from 'react'; +import { FormattedMessage } from 'react-intl'; +import illustration from 'flavours/glitch/images/elephant_ui_working.svg'; + +const MissingIndicator = () => ( + <div className='regeneration-indicator'> + <div className='regeneration-indicator__figure'> + <img src={illustration} alt='' /> + </div> + + <div className='regeneration-indicator__label'> + <FormattedMessage id='regeneration_indicator.label' tagName='strong' defaultMessage='Loading…' /> + <FormattedMessage id='regeneration_indicator.sublabel' defaultMessage='Your home feed is being prepared!' /> + </div> + </div> +); + +export default MissingIndicator; diff --git a/app/javascript/flavours/glitch/components/status_content.js b/app/javascript/flavours/glitch/components/status_content.js index 209350440..da8b787ba 100644 --- a/app/javascript/flavours/glitch/components/status_content.js +++ b/app/javascript/flavours/glitch/components/status_content.js @@ -315,7 +315,7 @@ export default class StatusContent extends React.PureComponent { <p style={{ marginBottom: hidden && status.get('mentions').isEmpty() ? '0px' : null }} > - <span dangerouslySetInnerHTML={spoilerContent} lang={status.get('language')} /> + <span dangerouslySetInnerHTML={spoilerContent} /> {' '} <button tabIndex='0' className='status__content__spoiler-link' onClick={this.handleSpoilerClick}> {toggleText} @@ -332,7 +332,6 @@ export default class StatusContent extends React.PureComponent { tabIndex={!hidden ? 0 : null} dangerouslySetInnerHTML={content} className='status__content__text' - lang={status.get('language')} /> {media} </div> @@ -353,7 +352,6 @@ export default class StatusContent extends React.PureComponent { ref={this.setContentsRef} key={`contents-${tagLinks}-${rewriteMentions}`} dangerouslySetInnerHTML={content} - lang={status.get('language')} className='status__content__text' tabIndex='0' /> @@ -368,7 +366,7 @@ export default class StatusContent extends React.PureComponent { tabIndex='0' ref={this.setRef} > - <div ref={this.setContentsRef} key={`contents-${tagLinks}`} className='status__content__text' dangerouslySetInnerHTML={content} lang={status.get('language')} tabIndex='0' /> + <div ref={this.setContentsRef} key={`contents-${tagLinks}`} className='status__content__text' dangerouslySetInnerHTML={content} tabIndex='0' /> {media} </div> ); diff --git a/app/javascript/flavours/glitch/components/status_list.js b/app/javascript/flavours/glitch/components/status_list.js index c1f51b307..a399ff567 100644 --- a/app/javascript/flavours/glitch/components/status_list.js +++ b/app/javascript/flavours/glitch/components/status_list.js @@ -6,7 +6,7 @@ import StatusContainer from 'flavours/glitch/containers/status_container'; import ImmutablePureComponent from 'react-immutable-pure-component'; import LoadGap from './load_gap'; import ScrollableList from './scrollable_list'; -import { FormattedMessage } from 'react-intl'; +import RegenerationIndicator from 'flavours/glitch/components/regeneration_indicator'; export default class StatusList extends ImmutablePureComponent { @@ -81,18 +81,7 @@ export default class StatusList extends ImmutablePureComponent { const { isLoading, isPartial } = other; if (isPartial) { - return ( - <div className='regeneration-indicator'> - <div> - <div className='regeneration-indicator__figure' /> - - <div className='regeneration-indicator__label'> - <FormattedMessage id='regeneration_indicator.label' tagName='strong' defaultMessage='Loading…' /> - <FormattedMessage id='regeneration_indicator.sublabel' defaultMessage='Your home feed is being prepared!' /> - </div> - </div> - </div> - ); + return <RegenerationIndicator />; } let scrollableContent = (isLoading || statusIds.size > 0) ? ( diff --git a/app/javascript/flavours/glitch/features/account_timeline/index.js b/app/javascript/flavours/glitch/features/account_timeline/index.js index 1f02c1be5..2ef4ff602 100644 --- a/app/javascript/flavours/glitch/features/account_timeline/index.js +++ b/app/javascript/flavours/glitch/features/account_timeline/index.js @@ -9,6 +9,7 @@ import LoadingIndicator from '../../components/loading_indicator'; import Column from '../ui/components/column'; import ProfileColumnHeader from 'flavours/glitch/features/account/components/profile_column_header'; import HeaderContainer from './containers/header_container'; +import ColumnBackButton from 'flavours/glitch/components/column_back_button'; import { List as ImmutableList } from 'immutable'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { FormattedMessage } from 'react-intl'; @@ -82,6 +83,7 @@ class AccountTimeline extends ImmutablePureComponent { if (!isAccount) { return ( <Column> + <ColumnBackButton multiColumn={multiColumn} /> <MissingIndicator /> </Column> ); diff --git a/app/javascript/flavours/glitch/features/generic_not_found/index.js b/app/javascript/flavours/glitch/features/generic_not_found/index.js index d01a1ba47..4412adaed 100644 --- a/app/javascript/flavours/glitch/features/generic_not_found/index.js +++ b/app/javascript/flavours/glitch/features/generic_not_found/index.js @@ -4,7 +4,7 @@ import MissingIndicator from 'flavours/glitch/components/missing_indicator'; const GenericNotFound = () => ( <Column> - <MissingIndicator /> + <MissingIndicator fullPage /> </Column> ); diff --git a/app/javascript/flavours/glitch/features/ui/components/focal_point_modal.js b/app/javascript/flavours/glitch/features/ui/components/focal_point_modal.js index d5c9e66ae..f5ecf77b9 100644 --- a/app/javascript/flavours/glitch/features/ui/components/focal_point_modal.js +++ b/app/javascript/flavours/glitch/features/ui/components/focal_point_modal.js @@ -16,6 +16,7 @@ import UploadProgress from 'flavours/glitch/features/compose/components/upload_p import CharacterCounter from 'flavours/glitch/features/compose/components/character_counter'; import { length } from 'stringz'; import { Tesseract as fetchTesseract } from 'flavours/glitch/util/async-components'; +import GIFV from 'flavours/glitch/components/gifv'; const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, @@ -41,6 +42,36 @@ const removeExtraLineBreaks = str => str.replace(/\n\n/g, '******') const assetHost = process.env.CDN_HOST || ''; +class ImageLoader extends React.PureComponent { + + static propTypes = { + src: PropTypes.string.isRequired, + width: PropTypes.number, + height: PropTypes.number, + }; + + state = { + loading: true, + }; + + componentDidMount() { + const image = new Image(); + image.addEventListener('load', () => this.setState({ loading: false })); + image.src = this.props.src; + } + + render () { + const { loading } = this.state; + + if (loading) { + return <canvas width={this.props.width} height={this.props.height} />; + } else { + return <img {...this.props} alt='' />; + } + } + +} + export default @connect(mapStateToProps, mapDispatchToProps) @injectIntl class FocalPointModal extends ImmutablePureComponent { @@ -60,6 +91,7 @@ class FocalPointModal extends ImmutablePureComponent { description: '', dirty: false, progress: 0, + loading: true, }; componentWillMount () { @@ -242,8 +274,8 @@ class FocalPointModal extends ImmutablePureComponent { <div className='focal-point-modal__content'> {focals && ( <div className={classNames('focal-point', { dragging })} ref={this.setRef} onMouseDown={this.handleMouseDown} onTouchStart={this.handleTouchStart}> - {media.get('type') === 'image' && <img src={media.get('url')} width={width} height={height} alt='' />} - {media.get('type') === 'gifv' && <video src={media.get('url')} width={width} height={height} loop muted autoPlay />} + {media.get('type') === 'image' && <ImageLoader src={media.get('url')} width={width} height={height} alt='' />} + {media.get('type') === 'gifv' && <GIFV src={media.get('url')} width={width} height={height} />} <div className='focal-point__preview'> <strong><FormattedMessage id='upload_modal.preview_label' defaultMessage='Preview ({ratio})' values={{ ratio: '16:9' }} /></strong> diff --git a/app/javascript/flavours/glitch/features/ui/components/media_modal.js b/app/javascript/flavours/glitch/features/ui/components/media_modal.js index d61c69f69..c7d6c374c 100644 --- a/app/javascript/flavours/glitch/features/ui/components/media_modal.js +++ b/app/javascript/flavours/glitch/features/ui/components/media_modal.js @@ -3,13 +3,13 @@ import ReactSwipeableViews from 'react-swipeable-views'; import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; import Video from 'flavours/glitch/features/video'; -import ExtendedVideoPlayer from 'flavours/glitch/components/extended_video_player'; import classNames from 'classnames'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import IconButton from 'flavours/glitch/components/icon_button'; import ImmutablePureComponent from 'react-immutable-pure-component'; import ImageLoader from './image_loader'; import Icon from 'flavours/glitch/components/icon'; +import GIFV from 'flavours/glitch/components/gifv'; const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, @@ -149,10 +149,8 @@ class MediaModal extends ImmutablePureComponent { ); } else if (image.get('type') === 'gifv') { return ( - <ExtendedVideoPlayer + <GIFV src={image.get('url')} - muted - controls={false} width={width} height={height} key={image.get('preview_url')} diff --git a/app/javascript/flavours/glitch/styles/components/modal.scss b/app/javascript/flavours/glitch/styles/components/modal.scss index 716796af9..75bddeefc 100644 --- a/app/javascript/flavours/glitch/styles/components/modal.scss +++ b/app/javascript/flavours/glitch/styles/components/modal.scss @@ -878,7 +878,8 @@ background: $base-shadow-color; img, - video { + video, + canvas { display: block; max-height: 80vh; width: 100%; diff --git a/app/javascript/flavours/glitch/styles/components/regeneration_indicator.scss b/app/javascript/flavours/glitch/styles/components/regeneration_indicator.scss index 178df6652..c65e6a9af 100644 --- a/app/javascript/flavours/glitch/styles/components/regeneration_indicator.scss +++ b/app/javascript/flavours/glitch/styles/components/regeneration_indicator.scss @@ -7,37 +7,27 @@ cursor: default; display: flex; flex: 1 1 auto; + flex-direction: column; align-items: center; justify-content: center; padding: 20px; - & > div { - width: 100%; - background: transparent; - padding-top: 0; - } - &__figure { - background: url('~flavours/glitch/images/elephant_ui_working.svg') no-repeat center 0; - width: 100%; - height: 160px; - background-size: contain; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); + &, + img { + display: block; + width: auto; + height: 160px; + margin: 0; + } } - &.missing-indicator { + &--without-header { padding-top: 20px + 48px; - - .regeneration-indicator__figure { - background-image: url('~flavours/glitch/images/elephant_ui_disappointed.svg'); - } } &__label { - margin-top: 200px; + margin-top: 30px; strong { display: block; diff --git a/app/javascript/mastodon/actions/timelines.js b/app/javascript/mastodon/actions/timelines.js index 7eeba2aa7..bc2ac5e82 100644 --- a/app/javascript/mastodon/actions/timelines.js +++ b/app/javascript/mastodon/actions/timelines.js @@ -97,7 +97,7 @@ export function expandTimeline(timelineId, path, params = {}, done = noOp) { api(getState).get(path, { params }).then(response => { const next = getLinks(response).refs.find(link => link.rel === 'next'); dispatch(importFetchedStatuses(response.data)); - dispatch(expandTimelineSuccess(timelineId, response.data, next ? next.uri : null, response.code === 206, isLoadingRecent, isLoadingMore, isLoadingRecent && preferPendingItems)); + dispatch(expandTimelineSuccess(timelineId, response.data, next ? next.uri : null, response.status === 206, isLoadingRecent, isLoadingMore, isLoadingRecent && preferPendingItems)); done(); }).catch(error => { dispatch(expandTimelineFail(timelineId, error, isLoadingMore)); diff --git a/app/javascript/mastodon/components/extended_video_player.js b/app/javascript/mastodon/components/extended_video_player.js deleted file mode 100644 index 009c0d559..000000000 --- a/app/javascript/mastodon/components/extended_video_player.js +++ /dev/null @@ -1,63 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; - -export default class ExtendedVideoPlayer extends React.PureComponent { - - static propTypes = { - src: PropTypes.string.isRequired, - alt: PropTypes.string, - width: PropTypes.number, - height: PropTypes.number, - time: PropTypes.number, - controls: PropTypes.bool.isRequired, - muted: PropTypes.bool.isRequired, - onClick: PropTypes.func, - }; - - handleLoadedData = () => { - if (this.props.time) { - this.video.currentTime = this.props.time; - } - } - - componentDidMount () { - this.video.addEventListener('loadeddata', this.handleLoadedData); - } - - componentWillUnmount () { - this.video.removeEventListener('loadeddata', this.handleLoadedData); - } - - setRef = (c) => { - this.video = c; - } - - handleClick = e => { - e.stopPropagation(); - const handler = this.props.onClick; - if (handler) handler(); - } - - render () { - const { src, muted, controls, alt } = this.props; - - return ( - <div className='extended-video-player'> - <video - ref={this.setRef} - src={src} - autoPlay - role='button' - tabIndex='0' - aria-label={alt} - title={alt} - muted={muted} - controls={controls} - loop={!controls} - onClick={this.handleClick} - /> - </div> - ); - } - -} diff --git a/app/javascript/mastodon/components/gifv.js b/app/javascript/mastodon/components/gifv.js new file mode 100644 index 000000000..83cfae49c --- /dev/null +++ b/app/javascript/mastodon/components/gifv.js @@ -0,0 +1,75 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +export default class GIFV extends React.PureComponent { + + static propTypes = { + src: PropTypes.string.isRequired, + alt: PropTypes.string, + width: PropTypes.number, + height: PropTypes.number, + onClick: PropTypes.func, + }; + + state = { + loading: true, + }; + + handleLoadedData = () => { + this.setState({ loading: false }); + } + + componentWillReceiveProps (nextProps) { + if (nextProps.src !== this.props.src) { + this.setState({ loading: true }); + } + } + + handleClick = e => { + const { onClick } = this.props; + + if (onClick) { + e.stopPropagation(); + onClick(); + } + } + + render () { + const { src, width, height, alt } = this.props; + const { loading } = this.state; + + return ( + <div className='gifv' style={{ position: 'relative' }}> + {loading && ( + <canvas + width={width} + height={height} + role='button' + tabIndex='0' + aria-label={alt} + title={alt} + onClick={this.handleClick} + /> + )} + + <video + src={src} + width={width} + height={height} + role='button' + tabIndex='0' + aria-label={alt} + title={alt} + muted + loop + autoPlay + playsInline + onClick={this.handleClick} + onLoadedData={this.handleLoadedData} + style={{ position: loading ? 'absolute' : 'static', top: 0, left: 0 }} + /> + </div> + ); + } + +} diff --git a/app/javascript/mastodon/components/missing_indicator.js b/app/javascript/mastodon/components/missing_indicator.js index 70d8c3b98..7b0101bab 100644 --- a/app/javascript/mastodon/components/missing_indicator.js +++ b/app/javascript/mastodon/components/missing_indicator.js @@ -1,17 +1,24 @@ import React from 'react'; +import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; +import illustration from 'mastodon/../images/elephant_ui_disappointed.svg'; +import classNames from 'classnames'; -const MissingIndicator = () => ( - <div className='regeneration-indicator missing-indicator'> - <div> - <div className='regeneration-indicator__figure' /> +const MissingIndicator = ({ fullPage }) => ( + <div className={classNames('regeneration-indicator', { 'regeneration-indicator--without-header': fullPage })}> + <div className='regeneration-indicator__figure'> + <img src={illustration} alt='' /> + </div> - <div className='regeneration-indicator__label'> - <FormattedMessage id='missing_indicator.label' tagName='strong' defaultMessage='Not found' /> - <FormattedMessage id='missing_indicator.sublabel' defaultMessage='This resource could not be found' /> - </div> + <div className='regeneration-indicator__label'> + <FormattedMessage id='missing_indicator.label' tagName='strong' defaultMessage='Not found' /> + <FormattedMessage id='missing_indicator.sublabel' defaultMessage='This resource could not be found' /> </div> </div> ); +MissingIndicator.propTypes = { + fullPage: PropTypes.bool, +}; + export default MissingIndicator; diff --git a/app/javascript/mastodon/components/regeneration_indicator.js b/app/javascript/mastodon/components/regeneration_indicator.js new file mode 100644 index 000000000..faf88c6b5 --- /dev/null +++ b/app/javascript/mastodon/components/regeneration_indicator.js @@ -0,0 +1,18 @@ +import React from 'react'; +import { FormattedMessage } from 'react-intl'; +import illustration from 'mastodon/../images/elephant_ui_working.svg'; + +const MissingIndicator = () => ( + <div className='regeneration-indicator'> + <div className='regeneration-indicator__figure'> + <img src={illustration} alt='' /> + </div> + + <div className='regeneration-indicator__label'> + <FormattedMessage id='regeneration_indicator.label' tagName='strong' defaultMessage='Loading…' /> + <FormattedMessage id='regeneration_indicator.sublabel' defaultMessage='Your home feed is being prepared!' /> + </div> + </div> +); + +export default MissingIndicator; diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js index c171e7a66..4ce9ec49f 100644 --- a/app/javascript/mastodon/components/status_content.js +++ b/app/javascript/mastodon/components/status_content.js @@ -216,14 +216,14 @@ export default class StatusContent extends React.PureComponent { return ( <div className={classNames} ref={this.setRef} tabIndex='0' style={directionStyle} onMouseDown={this.handleMouseDown} onMouseUp={this.handleMouseUp}> <p style={{ marginBottom: hidden && status.get('mentions').isEmpty() ? '0px' : null }}> - <span dangerouslySetInnerHTML={spoilerContent} lang={status.get('language')} /> + <span dangerouslySetInnerHTML={spoilerContent} /> {' '} <button tabIndex='0' className={`status__content__spoiler-link ${hidden ? 'status__content__spoiler-link--show-more' : 'status__content__spoiler-link--show-less'}`} onClick={this.handleSpoilerClick}>{toggleText}</button> </p> {mentionsPlaceholder} - <div tabIndex={!hidden ? 0 : null} className={`status__content__text ${!hidden ? 'status__content__text--visible' : ''}`} style={directionStyle} dangerouslySetInnerHTML={content} lang={status.get('language')} /> + <div tabIndex={!hidden ? 0 : null} className={`status__content__text ${!hidden ? 'status__content__text--visible' : ''}`} style={directionStyle} dangerouslySetInnerHTML={content} /> {!hidden && !!status.get('poll') && <PollContainer pollId={status.get('poll')} />} </div> @@ -231,7 +231,7 @@ export default class StatusContent extends React.PureComponent { } else if (this.props.onClick) { const output = [ <div className={classNames} ref={this.setRef} tabIndex='0' style={directionStyle} onMouseDown={this.handleMouseDown} onMouseUp={this.handleMouseUp} key='status-content'> - <div className='status__content__text status__content__text--visible' style={directionStyle} dangerouslySetInnerHTML={content} lang={status.get('language')} /> + <div className='status__content__text status__content__text--visible' style={directionStyle} dangerouslySetInnerHTML={content} /> {!!status.get('poll') && <PollContainer pollId={status.get('poll')} />} </div>, @@ -245,7 +245,7 @@ export default class StatusContent extends React.PureComponent { } else { return ( <div className={classNames} ref={this.setRef} tabIndex='0' style={directionStyle}> - <div className='status__content__text status__content__text--visible' style={directionStyle} dangerouslySetInnerHTML={content} lang={status.get('language')} /> + <div className='status__content__text status__content__text--visible' style={directionStyle} dangerouslySetInnerHTML={content} /> {!!status.get('poll') && <PollContainer pollId={status.get('poll')} />} </div> diff --git a/app/javascript/mastodon/components/status_list.js b/app/javascript/mastodon/components/status_list.js index 745e6422d..e1b370c91 100644 --- a/app/javascript/mastodon/components/status_list.js +++ b/app/javascript/mastodon/components/status_list.js @@ -1,12 +1,12 @@ import { debounce } from 'lodash'; import React from 'react'; -import { FormattedMessage } from 'react-intl'; import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; import StatusContainer from '../containers/status_container'; import ImmutablePureComponent from 'react-immutable-pure-component'; import LoadGap from './load_gap'; import ScrollableList from './scrollable_list'; +import RegenerationIndicator from 'mastodon/components/regeneration_indicator'; export default class StatusList extends ImmutablePureComponent { @@ -81,18 +81,7 @@ export default class StatusList extends ImmutablePureComponent { const { isLoading, isPartial } = other; if (isPartial) { - return ( - <div className='regeneration-indicator'> - <div> - <div className='regeneration-indicator__figure' /> - - <div className='regeneration-indicator__label'> - <FormattedMessage id='regeneration_indicator.label' tagName='strong' defaultMessage='Loading…' /> - <FormattedMessage id='regeneration_indicator.sublabel' defaultMessage='Your home feed is being prepared!' /> - </div> - </div> - </div> - ); + return <RegenerationIndicator />; } let scrollableContent = (isLoading || statusIds.size > 0) ? ( diff --git a/app/javascript/mastodon/features/account_timeline/index.js b/app/javascript/mastodon/features/account_timeline/index.js index 69bab1e86..8d0cbe5a1 100644 --- a/app/javascript/mastodon/features/account_timeline/index.js +++ b/app/javascript/mastodon/features/account_timeline/index.js @@ -83,6 +83,7 @@ class AccountTimeline extends ImmutablePureComponent { if (!isAccount) { return ( <Column> + <ColumnBackButton multiColumn={multiColumn} /> <MissingIndicator /> </Column> ); diff --git a/app/javascript/mastodon/features/compose/components/poll_form.js b/app/javascript/mastodon/features/compose/components/poll_form.js index 211601d52..bdccf9ce7 100644 --- a/app/javascript/mastodon/features/compose/components/poll_form.js +++ b/app/javascript/mastodon/features/compose/components/poll_form.js @@ -77,7 +77,7 @@ class Option extends React.PureComponent { <AutosuggestInput placeholder={intl.formatMessage(messages.option_placeholder, { number: index + 1 })} - maxLength={25} + maxLength={100} value={title} onChange={this.handleOptionTitleChange} suggestions={this.props.suggestions} @@ -142,7 +142,7 @@ class PollForm extends ImmutablePureComponent { </ul> <div className='poll__footer'> - {options.size < 4 && ( + {options.size < 5 && ( <button className='button button-secondary' onClick={this.handleAddOption}><Icon id='plus' /> <FormattedMessage {...messages.add_option} /></button> )} diff --git a/app/javascript/mastodon/features/generic_not_found/index.js b/app/javascript/mastodon/features/generic_not_found/index.js index 0290be47f..41cd61a5f 100644 --- a/app/javascript/mastodon/features/generic_not_found/index.js +++ b/app/javascript/mastodon/features/generic_not_found/index.js @@ -4,7 +4,7 @@ import MissingIndicator from '../../components/missing_indicator'; const GenericNotFound = () => ( <Column> - <MissingIndicator /> + <MissingIndicator fullPage /> </Column> ); diff --git a/app/javascript/mastodon/features/ui/components/focal_point_modal.js b/app/javascript/mastodon/features/ui/components/focal_point_modal.js index 1ab79a21d..3694ab904 100644 --- a/app/javascript/mastodon/features/ui/components/focal_point_modal.js +++ b/app/javascript/mastodon/features/ui/components/focal_point_modal.js @@ -16,6 +16,7 @@ import UploadProgress from 'mastodon/features/compose/components/upload_progress import CharacterCounter from 'mastodon/features/compose/components/character_counter'; import { length } from 'stringz'; import { Tesseract as fetchTesseract } from 'mastodon/features/ui/util/async-components'; +import GIFV from 'mastodon/components/gifv'; const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, @@ -41,6 +42,36 @@ const removeExtraLineBreaks = str => str.replace(/\n\n/g, '******') const assetHost = process.env.CDN_HOST || ''; +class ImageLoader extends React.PureComponent { + + static propTypes = { + src: PropTypes.string.isRequired, + width: PropTypes.number, + height: PropTypes.number, + }; + + state = { + loading: true, + }; + + componentDidMount() { + const image = new Image(); + image.addEventListener('load', () => this.setState({ loading: false })); + image.src = this.props.src; + } + + render () { + const { loading } = this.state; + + if (loading) { + return <canvas width={this.props.width} height={this.props.height} />; + } else { + return <img {...this.props} alt='' />; + } + } + +} + export default @connect(mapStateToProps, mapDispatchToProps) @injectIntl class FocalPointModal extends ImmutablePureComponent { @@ -60,6 +91,7 @@ class FocalPointModal extends ImmutablePureComponent { description: '', dirty: false, progress: 0, + loading: true, }; componentWillMount () { @@ -242,8 +274,8 @@ class FocalPointModal extends ImmutablePureComponent { <div className='focal-point-modal__content'> {focals && ( <div className={classNames('focal-point', { dragging })} ref={this.setRef} onMouseDown={this.handleMouseDown} onTouchStart={this.handleTouchStart}> - {media.get('type') === 'image' && <img src={media.get('url')} width={width} height={height} alt='' />} - {media.get('type') === 'gifv' && <video src={media.get('url')} width={width} height={height} loop muted autoPlay />} + {media.get('type') === 'image' && <ImageLoader src={media.get('url')} width={width} height={height} alt='' />} + {media.get('type') === 'gifv' && <GIFV src={media.get('url')} width={width} height={height} />} <div className='focal-point__preview'> <strong><FormattedMessage id='upload_modal.preview_label' defaultMessage='Preview ({ratio})' values={{ ratio: '16:9' }} /></strong> diff --git a/app/javascript/mastodon/features/ui/components/media_modal.js b/app/javascript/mastodon/features/ui/components/media_modal.js index 98ebd4b41..a785551c0 100644 --- a/app/javascript/mastodon/features/ui/components/media_modal.js +++ b/app/javascript/mastodon/features/ui/components/media_modal.js @@ -3,13 +3,13 @@ import ReactSwipeableViews from 'react-swipeable-views'; import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; import Video from 'mastodon/features/video'; -import ExtendedVideoPlayer from 'mastodon/components/extended_video_player'; import classNames from 'classnames'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import IconButton from 'mastodon/components/icon_button'; import ImmutablePureComponent from 'react-immutable-pure-component'; import ImageLoader from './image_loader'; import Icon from 'mastodon/components/icon'; +import GIFV from 'mastodon/components/gifv'; const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, @@ -169,10 +169,8 @@ class MediaModal extends ImmutablePureComponent { ); } else if (image.get('type') === 'gifv') { return ( - <ExtendedVideoPlayer + <GIFV src={image.get('url')} - muted - controls={false} width={width} height={height} key={image.get('preview_url')} diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 1a558e3b8..1b560b964 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -115,7 +115,7 @@ "conversation.mark_as_read": "اعتبرها كمقروءة", "conversation.open": "اعرض المحادثة", "conversation.with": "بـ {names}", - "directory.federated": "From known fediverse", + "directory.federated": "مِن الفديفرس المعروف", "directory.local": "مِن {domain} فقط", "directory.new_arrivals": "الوافدون الجُدد", "directory.recently_active": "نشط مؤخرا", @@ -155,7 +155,7 @@ "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", - "errors.unexpected_crash.report_issue": "Report issue", + "errors.unexpected_crash.report_issue": "الإبلاغ عن خلل", "follow_request.authorize": "ترخيص", "follow_request.reject": "رفض", "getting_started.developers": "المُطوِّرون", @@ -178,7 +178,6 @@ "home.column_settings.basic": "الأساسية", "home.column_settings.show_reblogs": "عرض الترقيات", "home.column_settings.show_replies": "اعرض الردود", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# يوم} other {# أيام}}", "intervals.full.hours": "{number, plural, one {# ساعة} other {# ساعات}}", "intervals.full.minutes": "{number, plural, one {# دقيقة} other {# دقائق}}", @@ -244,7 +243,7 @@ "lists.new.title_placeholder": "عنوان القائمة الجديدة", "lists.search": "إبحث في قائمة الحسابات التي تُتابِعها", "lists.subheading": "قوائمك", - "load_pending": "{count, plural, one {# new item} other {# new items}}", + "load_pending": "{count, plural, one {# عنصر جديد} other {# عناصر جديدة}}", "loading_indicator.label": "تحميل...", "media_gallery.toggle_visible": "عرض / إخفاء", "missing_indicator.label": "غير موجود", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "التفضيلات", "navigation_bar.public_timeline": "الخيط العام الموحد", "navigation_bar.security": "الأمان", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "أُعجِب {name} بمنشورك", "notification.follow": "{name} يتابعك", "notification.mention": "{name} ذكرك", @@ -301,10 +299,10 @@ "notifications.group": "{count} إشعارات", "poll.closed": "انتهى", "poll.refresh": "تحديث", - "poll.total_people": "{count, plural, one {# person} other {# people}}", + "poll.total_people": "{count, plural, one {# شخص} other {# أشخاص}}", "poll.total_votes": "{count, plural, one {# صوت} other {# أصوات}}", "poll.vote": "صَوّت", - "poll.voted": "You voted for this answer", + "poll.voted": "لقد صوّتت على هذه الإجابة", "poll_button.add_poll": "إضافة استطلاع للرأي", "poll_button.remove_poll": "إزالة استطلاع الرأي", "privacy.change": "اضبط خصوصية المنشور", @@ -391,10 +389,10 @@ "tabs_bar.notifications": "الإخطارات", "tabs_bar.search": "البحث", "time_remaining.days": "{number, plural, one {# يوم} other {# أيام}} متبقية", - "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", - "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", + "time_remaining.hours": "{number, plural, one {# ساعة} other {# ساعات}} متبقية", + "time_remaining.minutes": "{number, plural, one {# دقيقة} other {# دقائق}} متبقية", "time_remaining.moments": "لحظات متبقية", - "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left", + "time_remaining.seconds": "{number, plural, one {# ثانية} other {# ثوانٍ}} متبقية", "trends.count_by_accounts": "{count} {rawCount, plural, one {person} آخرون {people}} يتحدثون", "trends.trending_now": "المتداولة الآن", "ui.beforeunload": "سوف تفقد مسودتك إن تركت ماستدون.", @@ -408,7 +406,7 @@ "upload_modal.analyzing_picture": "جارٍ فحص الصورة…", "upload_modal.apply": "طبّق", "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", - "upload_modal.detect_text": "Detect text from picture", + "upload_modal.detect_text": "اكتشف النص مِن الصورة", "upload_modal.edit_media": "تعديل الوسائط", "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", "upload_modal.preview_label": "معاينة ({ratio})", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 64c12db42..5145a6579 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Amosar toots compartíos", "home.column_settings.show_replies": "Amosar rempuestes", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Preferencies", "navigation_bar.public_timeline": "Llinia temporal federada", "navigation_bar.security": "Seguranza", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} siguióte", "notification.mention": "{name} mentóte", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 207d0cfc3..a4afe2adb 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Предпочитания", "navigation_bar.public_timeline": "Публичен канал", "navigation_bar.security": "Security", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} хареса твоята публикация", "notification.follow": "{name} те последва", "notification.mention": "{name} те спомена", @@ -412,7 +410,7 @@ "upload_modal.edit_media": "Edit media", "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", "upload_modal.preview_label": "Preview ({ratio})", - "upload_progress.label": "Uploading...", + "upload_progress.label": "Uploading…", "video.close": "Close video", "video.exit_fullscreen": "Exit full screen", "video.expand": "Expand video", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index 240ff17e8..6c4f0def6 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "সাধারণ", "home.column_settings.show_reblogs": "সমর্থনগুলো দেখান", "home.column_settings.show_replies": "মতামত দেখান", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# ঘটা} other {# ঘটা}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "পছন্দসমূহ", "navigation_bar.public_timeline": "যুক্তবিশ্বের সময়রেখা", "navigation_bar.security": "নিরাপত্তা", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} আপনার কার্যক্রম পছন্দ করেছেন", "notification.follow": "{name} আপনাকে অনুসরণ করেছেন", "notification.mention": "{name} আপনাকে উল্লেখ করেছেন", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index b8cd5e479..db07f1aba 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.mention": "{name} mentioned you", @@ -412,7 +410,7 @@ "upload_modal.edit_media": "Edit media", "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", "upload_modal.preview_label": "Preview ({ratio})", - "upload_progress.label": "Uploading...", + "upload_progress.label": "Uploading…", "video.close": "Close video", "video.exit_fullscreen": "Exit full screen", "video.expand": "Expand video", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 8e647691b..396e4a325 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Bàsic", "home.column_settings.show_reblogs": "Mostrar impulsos", "home.column_settings.show_replies": "Mostrar respostes", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# dia} other {# dies}}", "intervals.full.hours": "{number, plural, one {# hora} other {# hores}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minuts}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Preferències", "navigation_bar.public_timeline": "Línia de temps federada", "navigation_bar.security": "Seguretat", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} ha afavorit el teu estat", "notification.follow": "{name} et segueix", "notification.mention": "{name} t'ha esmentat", @@ -395,7 +393,7 @@ "time_remaining.minutes": "{number, plural, one {# minut} other {# minuts}} restants", "time_remaining.moments": "Moments restants", "time_remaining.seconds": "{number, plural, one {# segon} other {# segons}} restants", - "trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {gent}} talking", + "trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {persones}} parlant-hi", "trends.trending_now": "Ara en tendència", "ui.beforeunload": "El teu esborrany es perdrà si surts de Mastodon.", "upload_area.title": "Arrossega i deixa anar per a carregar", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 3b059459c..6c680f13f 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Bàsichi", "home.column_settings.show_reblogs": "Vede e spartere", "home.column_settings.show_replies": "Vede e risposte", - "home.column_settings.update_live": "Attualizà in tempu reale", "intervals.full.days": "{number, plural, one {# ghjornu} other {# ghjorni}}", "intervals.full.hours": "{number, plural, one {# ora} other {# ore}}", "intervals.full.minutes": "{number, plural, one {# minuta} other {# minute}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Preferenze", "navigation_bar.public_timeline": "Linea pubblica glubale", "navigation_bar.security": "Sicurità", - "notification.and_n_others": "è {count, plural, one {# altru} other {# altri}}", "notification.favourite": "{name} hà aghjuntu u vostru statutu à i so favuriti", "notification.follow": "{name} v'hà seguitatu", "notification.mention": "{name} v'hà mintuvatu", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index c783fbe77..fc807d45e 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -43,7 +43,7 @@ "alert.unexpected.message": "Objevila se neočekávaná chyba.", "alert.unexpected.title": "Jejda!", "autosuggest_hashtag.per_week": "{count} za týden", - "boost_modal.combo": "Příště můžete pro přeskočení kliknout na {combo}", + "boost_modal.combo": "Příště můžete pro přeskočení stisknout {combo}", "bundle_column_error.body": "Při načítání tohoto komponentu se něco pokazilo.", "bundle_column_error.retry": "Zkuste to znovu", "bundle_column_error.title": "Chyba sítě", @@ -164,7 +164,7 @@ "getting_started.heading": "Začínáme", "getting_started.invite": "Pozvat lidi", "getting_started.open_source_notice": "Mastodon je otevřený software. Na GitHubu k němu můžete přispět nebo nahlásit chyby: {github}.", - "getting_started.security": "Zabezpečení", + "getting_started.security": "Nastavení účtu", "getting_started.terms": "Podmínky používání", "hashtag.column_header.tag_mode.all": "a {additional}", "hashtag.column_header.tag_mode.any": "nebo {additional}", @@ -178,7 +178,6 @@ "home.column_settings.basic": "Základní", "home.column_settings.show_reblogs": "Zobrazit boosty", "home.column_settings.show_replies": "Zobrazit odpovědi", - "home.column_settings.update_live": "Aktualizovat v reálném čase", "intervals.full.days": "{number, plural, one {# den} few {# dny} many {# dne} other {# dní}}", "intervals.full.hours": "{number, plural, one {# hodina} few {# hodiny} many {# hodiny} other {# hodin}}", "intervals.full.minutes": "{number, plural, one {# minuta} few {# minuty} many {# minuty} other {# minut}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Předvolby", "navigation_bar.public_timeline": "Federovaná časová osa", "navigation_bar.security": "Zabezpečení", - "notification.and_n_others": "a {count, plural, one {# další} few {# další} many {# dalších} other {# dalších}}", "notification.favourite": "{name} si oblíbil/a váš toot", "notification.follow": "{name} vás začal/a sledovat", "notification.mention": "{name} vás zmínil/a", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index b9dad4062..8c2e08bb3 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Syml", "home.column_settings.show_reblogs": "Dangos bŵstiau", "home.column_settings.show_replies": "Dangos ymatebion", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# ddydd} other {# o ddyddiau}}", "intervals.full.hours": "{number, plural, one {# awr} other {# o oriau}}", "intervals.full.minutes": "{number, plural, one {# funud} other {# o funudau}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Dewisiadau", "navigation_bar.public_timeline": "Ffrwd y ffederasiwn", "navigation_bar.security": "Diogelwch", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "hoffodd {name} eich tŵt", "notification.follow": "dilynodd {name} chi", "notification.mention": "Soniodd {name} amdanoch chi", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 2362db471..95e4fe503 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -111,10 +111,10 @@ "confirmations.reply.message": "Hvis du svarer nu vil du overskrive den besked du er ved at skrive. Er du sikker på, du vil fortsætte?", "confirmations.unfollow.confirm": "Følg ikke længere", "confirmations.unfollow.message": "Er du sikker på, du ikke længere vil følge {name}?", - "conversation.delete": "Delete conversation", - "conversation.mark_as_read": "Mark as read", - "conversation.open": "View conversation", - "conversation.with": "With {names}", + "conversation.delete": "Slet samtale", + "conversation.mark_as_read": "Marker som læst", + "conversation.open": "Vis samtale", + "conversation.with": "Med {names}", "directory.federated": "Fra kendt fedivers", "directory.local": "Kun fra {domain}", "directory.new_arrivals": "Nye ankomster", @@ -178,7 +178,6 @@ "home.column_settings.basic": "Grundlæggende", "home.column_settings.show_reblogs": "Vis fremhævelser", "home.column_settings.show_replies": "Vis svar", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# dag} other {# dage}}", "intervals.full.hours": "{number, plural, one {# time} other {# timer}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minutter}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Præferencer", "navigation_bar.public_timeline": "Fælles tidslinje", "navigation_bar.security": "Sikkerhed", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} favoriserede din status", "notification.follow": "{name} fulgte dig", "notification.mention": "{name} nævnte dig", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 193fcebd4..401e3fc15 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -10,7 +10,7 @@ "account.edit_profile": "Profil bearbeiten", "account.endorse": "Auf Profil hervorheben", "account.follow": "Folgen", - "account.followers": "Folger_innen", + "account.followers": "Folgende", "account.followers.empty": "Diesem Profil folgt noch niemand.", "account.follows": "Folgt", "account.follows.empty": "Dieses Profil folgt noch niemandem.", @@ -99,7 +99,7 @@ "confirmations.delete_list.confirm": "Löschen", "confirmations.delete_list.message": "Bist du dir sicher, dass du diese Liste permanent löschen möchtest?", "confirmations.domain_block.confirm": "Die ganze Domain verbergen", - "confirmations.domain_block.message": "Bist du dir wirklich sicher, dass du die ganze Domain {domain} blockieren willst? In den meisten Fällen reichen ein paar gezielte Blockierungen oder Stummschaltungen aus. Nach der Blockierung wirst du nichts mehr von dieser Domain in öffentlichen Zeitleisten oder Benachrichtigungen sehen. Deine Folger_innen von dieser Domain werden auch entfernt.", + "confirmations.domain_block.message": "Bist du dir wirklich sicher, dass du die ganze Domain {domain} blockieren willst? In den meisten Fällen reichen ein paar gezielte Blockierungen oder Stummschaltungen aus. Du wirst den Inhalt von dieser Domain nicht in irgendwelchen öffentlichen Timelines oder den Benachrichtigungen finden. Deine Folgenden von dieser Domain werden entfernt.", "confirmations.logout.confirm": "Abmelden", "confirmations.logout.message": "Bist du sicher, dass du dich abmelden möchtest?", "confirmations.mute.confirm": "Stummschalten", @@ -178,7 +178,6 @@ "home.column_settings.basic": "Einfach", "home.column_settings.show_reblogs": "Geteilte Beiträge anzeigen", "home.column_settings.show_replies": "Antworten anzeigen", - "home.column_settings.update_live": "In Echtzeit aktualisieren", "intervals.full.days": "{number, plural, one {# Tag} other {# Tage}}", "intervals.full.hours": "{number, plural, one {# Stunde} other {# Stunden}}", "intervals.full.minutes": "{number, plural, one {# Minute} other {# Minuten}}", @@ -191,7 +190,7 @@ "introduction.federation.local.text": "Öffentliche Beiträge von Leuten auf demselben Server wie du erscheinen in der lokalen Zeitleiste.", "introduction.interactions.action": "Tutorial beenden!", "introduction.interactions.favourite.headline": "Favorisieren", - "introduction.interactions.favourite.text": "Du kannst Beitrage für später speichern und ihre Autor_innen wissen lassen, dass sie dir gefallen haben, indem du sie favorisierst.", + "introduction.interactions.favourite.text": "Du kannst Beitrage für später speichern und ihre Autoren wissen lassen, dass sie dir gefallen haben, indem du sie favorisierst.", "introduction.interactions.reblog.headline": "Teilen", "introduction.interactions.reblog.text": "Du kannst Beiträge anderer mit deinen Followern teilen, indem du sie teilst.", "introduction.interactions.reply.headline": "Antworten", @@ -261,7 +260,7 @@ "navigation_bar.favourites": "Favoriten", "navigation_bar.filters": "Stummgeschaltene Wörter", "navigation_bar.follow_requests": "Folgeanfragen", - "navigation_bar.follows_and_followers": "Folger_innen und Gefolgte", + "navigation_bar.follows_and_followers": "Folgende und Gefolgte", "navigation_bar.info": "Über diesen Server", "navigation_bar.keyboard_shortcuts": "Tastenkombinationen", "navigation_bar.lists": "Listen", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Einstellungen", "navigation_bar.public_timeline": "Föderierte Zeitleiste", "navigation_bar.security": "Sicherheit", - "notification.and_n_others": "und {count, plural, one {# andere Person} other {# andere Personen}}", "notification.favourite": "{name} hat deinen Beitrag favorisiert", "notification.follow": "{name} folgt dir", "notification.mention": "{name} hat dich erwähnt", @@ -285,7 +283,7 @@ "notifications.column_settings.filter_bar.advanced": "Zeige alle Kategorien an", "notifications.column_settings.filter_bar.category": "Schnellfilterleiste", "notifications.column_settings.filter_bar.show": "Anzeigen", - "notifications.column_settings.follow": "Neue Folger_innen:", + "notifications.column_settings.follow": "Neue Folgende:", "notifications.column_settings.mention": "Erwähnungen:", "notifications.column_settings.poll": "Ergebnisse von Umfragen:", "notifications.column_settings.push": "Push-Benachrichtigungen", @@ -295,7 +293,7 @@ "notifications.filter.all": "Alle", "notifications.filter.boosts": "Geteilte Beiträge", "notifications.filter.favourites": "Favorisierungen", - "notifications.filter.follows": "Folger_innen", + "notifications.filter.follows": "Folgt", "notifications.filter.mentions": "Erwähnungen", "notifications.filter.polls": "Ergebnisse der Umfrage", "notifications.group": "{count} Benachrichtigungen", @@ -310,8 +308,8 @@ "privacy.change": "Sichtbarkeit des Beitrags anpassen", "privacy.direct.long": "Wird an erwähnte Profile gesendet", "privacy.direct.short": "Direktnachricht", - "privacy.private.long": "Wird nur für deine Folger_innen sichtbar sein", - "privacy.private.short": "Nur für Folger_innen", + "privacy.private.long": "Wird nur für deine Folgende sichtbar sein", + "privacy.private.short": "Nur für Folgende", "privacy.public.long": "Wird in öffentlichen Zeitleisten erscheinen", "privacy.public.short": "Öffentlich", "privacy.unlisted.long": "Wird in öffentlichen Zeitleisten nicht gezeigt", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index fb58e43b5..0113c2776 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -281,6 +281,19 @@ { "descriptors": [ { + "defaultMessage": "Loading…", + "id": "regeneration_indicator.label" + }, + { + "defaultMessage": "Your home feed is being prepared!", + "id": "regeneration_indicator.sublabel" + } + ], + "path": "app/javascript/mastodon/components/regeneration_indicator.json" + }, + { + "descriptors": [ + { "defaultMessage": "now", "id": "relative_time.just_now" }, @@ -448,19 +461,6 @@ { "descriptors": [ { - "defaultMessage": "Loading…", - "id": "regeneration_indicator.label" - }, - { - "defaultMessage": "Your home feed is being prepared!", - "id": "regeneration_indicator.sublabel" - } - ], - "path": "app/javascript/mastodon/components/status_list.json" - }, - { - "descriptors": [ - { "defaultMessage": "Filtered", "id": "status.filtered" }, @@ -1138,15 +1138,6 @@ { "descriptors": [ { - "defaultMessage": "Uploading...", - "id": "upload_progress.label" - } - ], - "path": "app/javascript/mastodon/features/compose/components/upload_progress.json" - }, - { - "descriptors": [ - { "defaultMessage": "Delete", "id": "upload_form.undo" }, @@ -1436,6 +1427,10 @@ { "descriptors": [ { + "defaultMessage": "Refresh", + "id": "refresh" + }, + { "defaultMessage": "No one has favourited this toot yet. When someone does, they will show up here.", "id": "empty_column.favourites" } @@ -1484,10 +1479,6 @@ { "descriptors": [ { - "defaultMessage": "Refresh", - "id": "refresh" - }, - { "defaultMessage": "Profile unavailable", "id": "empty_column.account_unavailable" }, @@ -1641,6 +1632,10 @@ { "descriptors": [ { + "defaultMessage": "Basic", + "id": "home.column_settings.basic" + }, + { "defaultMessage": "Show boosts", "id": "home.column_settings.show_reblogs" }, @@ -2022,14 +2017,6 @@ "id": "notifications.column_settings.push" }, { - "defaultMessage": "Basic", - "id": "home.column_settings.basic" - }, - { - "defaultMessage": "Update in real-time", - "id": "home.column_settings.update_live" - }, - { "defaultMessage": "Quick filter bar", "id": "notifications.column_settings.filter_bar.category" }, @@ -2088,10 +2075,6 @@ { "descriptors": [ { - "defaultMessage": "and {count, plural, one {# other} other {# others}}", - "id": "notification.and_n_others" - }, - { "defaultMessage": "{name} followed you", "id": "notification.follow" }, diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 7e5e1490d..ab000fa8d 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -103,7 +103,7 @@ "confirmations.logout.confirm": "Αποσύνδεση", "confirmations.logout.message": "Σίγουρα θέλεις να αποσυνδεθείς;", "confirmations.mute.confirm": "Αποσιώπηση", - "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", + "confirmations.mute.explanation": "Αυτό θα κρύψει τις δημοσιεύσεις τους και τις δημοσιεύσεις που τους αναφέρουν, αλλά θα συνεχίσουν να μπορούν να βλέπουν τις δημοσιεύσεις σου και να σε ακολουθούν.", "confirmations.mute.message": "Σίγουρα θες να αποσιωπήσεις {name};", "confirmations.redraft.confirm": "Διαγραφή & ξαναγράψιμο", "confirmations.redraft.message": "Σίγουρα θέλεις να σβήσεις αυτή την κατάσταση και να την ξαναγράψεις; Οι αναφορές και τα αγαπημένα της θα χαθούν ενώ οι απαντήσεις προς αυτή θα μείνουν ορφανές.", @@ -152,10 +152,10 @@ "empty_column.mutes": "Δεν έχεις αποσιωπήσει κανένα χρήστη ακόμα.", "empty_column.notifications": "Δεν έχεις ειδοποιήσεις ακόμα. Αλληλεπίδρασε με άλλους χρήστες για να ξεκινήσεις την κουβέντα.", "empty_column.public": "Δεν υπάρχει τίποτα εδώ! Γράψε κάτι δημόσιο, ή ακολούθησε χειροκίνητα χρήστες από άλλους κόμβους για να τη γεμίσεις", - "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", - "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", - "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", - "errors.unexpected_crash.report_issue": "Report issue", + "error.unexpected_crash.explanation": "Είτε λόγω λάθους στον κώδικά μας ή λόγω ασυμβατότητας με τον browser, η σελίδα δε μπόρεσε να εμφανιστεί σωστά.", + "error.unexpected_crash.next_steps": "Δοκίμασε να ανανεώσεις τη σελίδα. Αν αυτό δε βοηθήσει, ίσως να μπορέσεις να χρησιμοποιήσεις το Mastodon μέσω διαφορετικού browser ή κάποιας εφαρμογής.", + "errors.unexpected_crash.copy_stacktrace": "Αντιγραφή μηνυμάτων κώδικα στο πρόχειρο", + "errors.unexpected_crash.report_issue": "Αναφορά προβλήματος", "follow_request.authorize": "Ενέκρινε", "follow_request.reject": "Απέρριψε", "getting_started.developers": "Ανάπτυξη", @@ -178,7 +178,6 @@ "home.column_settings.basic": "Βασικές ρυθμίσεις", "home.column_settings.show_reblogs": "Εμφάνιση προωθήσεων", "home.column_settings.show_replies": "Εμφάνιση απαντήσεων", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# μέρα} other {# μέρες}}", "intervals.full.hours": "{number, plural, one {# ώρα} other {# ώρες}}", "intervals.full.minutes": "{number, plural, one {# λεπτό} other {# λεπτά}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Προτιμήσεις", "navigation_bar.public_timeline": "Ομοσπονδιακή ροή", "navigation_bar.security": "Ασφάλεια", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "Ο/Η {name} σημείωσε ως αγαπημένη την κατάστασή σου", "notification.follow": "Ο/Η {name} σε ακολούθησε", "notification.mention": "Ο/Η {name} σε ανέφερε", @@ -301,7 +299,7 @@ "notifications.group": "{count} ειδοποιήσεις", "poll.closed": "Κλειστή", "poll.refresh": "Ανανέωση", - "poll.total_people": "{count, plural, one {# person} other {# people}}", + "poll.total_people": "{count, plural, one {# άτομο} other {# άτομα}}", "poll.total_votes": "{count, plural, one {# ψήφος} other {# ψήφοι}}", "poll.vote": "Ψήφισε", "poll.voted": "Ψηφίσατε αυτήν την απάντηση", @@ -316,7 +314,7 @@ "privacy.public.short": "Δημόσιο", "privacy.unlisted.long": "Μην δημοσιεύσεις στις δημόσιες ροές", "privacy.unlisted.short": "Μη καταχωρημένα", - "refresh": "Refresh", + "refresh": "Ανανέωση", "regeneration_indicator.label": "Φορτώνει…", "regeneration_indicator.sublabel": "Η αρχική σου ροή ετοιμάζεται!", "relative_time.days": "{number}η", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 272f40c3a..4005a54c3 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -182,7 +182,6 @@ "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -277,7 +276,6 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.mention": "{name} mentioned you", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 5aeb605bd..0070cdb5c 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Bazaj agordoj", "home.column_settings.show_reblogs": "Montri diskonigojn", "home.column_settings.show_replies": "Montri respondojn", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# tago} other {# tagoj}}", "intervals.full.hours": "{number, plural, one {# horo} other {# horoj}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutoj}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Preferoj", "navigation_bar.public_timeline": "Fratara tempolinio", "navigation_bar.security": "Sekureco", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} stelumis vian mesaĝon", "notification.follow": "{name} eksekvis vin", "notification.mention": "{name} menciis vin", @@ -301,7 +299,7 @@ "notifications.group": "{count} sciigoj", "poll.closed": "Finita", "poll.refresh": "Aktualigi", - "poll.total_people": "{count, plural, one {# person} other {# people}}", + "poll.total_people": "{count, plural, one {# homo} other {# homoj}}", "poll.total_votes": "{count, plural, one {# voĉdono} other {# voĉdonoj}}", "poll.vote": "Voĉdoni", "poll.voted": "Vi elektis por ĉi tiu respondo", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 825a67178..d46063b18 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -106,7 +106,7 @@ "confirmations.mute.explanation": "Esto ocultará mensajes de ellos y mensajes que los mencionen, pero todavía les permitirá ver tus mensajes o seguirte.", "confirmations.mute.message": "¿Estás seguro que querés silenciar a {name}?", "confirmations.redraft.confirm": "Eliminar toot original y editarlo", - "confirmations.redraft.message": "¿Estás seguro que querés eliminar este estado y volverlo a editarlo? Se perderán las veces marcadas como favoritos y los retoots, y las respuestas a la publicación original quedarán huérfanas.", + "confirmations.redraft.message": "¿Estás seguro que querés eliminar este estado y volver a editarlo? Se perderán las veces marcadas como favoritos y los retoots, y las respuestas a la publicación original quedarán huérfanas.", "confirmations.reply.confirm": "Responder", "confirmations.reply.message": "Responder ahora sobreescribirá el mensaje que estás redactando actualmente. ¿Estás seguro que querés seguir?", "confirmations.unfollow.confirm": "Dejar de seguir", @@ -178,7 +178,6 @@ "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar retoots", "home.column_settings.show_replies": "Mostrar respuestas", - "home.column_settings.update_live": "Actualizar en tiempo real", "intervals.full.days": "{number, plural, one {# día} other {# días}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Configuración", "navigation_bar.public_timeline": "Línea temporal federada", "navigation_bar.security": "Seguridad", - "notification.and_n_others": "y {count, plural, one {otro} other {otros #}}", "notification.favourite": "{name} marcó tu estado como favorito", "notification.follow": "{name} te empezó a seguir", "notification.mention": "{name} te mencionó", @@ -308,13 +306,13 @@ "poll_button.add_poll": "Agregar una encuesta", "poll_button.remove_poll": "Quitar encuesta", "privacy.change": "Configurar privacidad de estado", - "privacy.direct.long": "Enviar entrada sólo a los usuarios mencionados", + "privacy.direct.long": "Enviar toot sólo a los usuarios mencionados", "privacy.direct.short": "Directo", - "privacy.private.long": "Enviar entrada sólo a los seguidores", + "privacy.private.long": "Enviar toot sólo a los seguidores", "privacy.private.short": "Sólo a seguidores", - "privacy.public.long": "Enviar entrada a las líneas temporales públicas", + "privacy.public.long": "Enviar toot a las líneas temporales públicas", "privacy.public.short": "Público", - "privacy.unlisted.long": "No enviar entrada a las líneas temporales públicas", + "privacy.unlisted.long": "No enviar toot a las líneas temporales públicas", "privacy.unlisted.short": "No listado", "refresh": "Refrescar", "regeneration_indicator.label": "Cargando…", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 8a88b0c5b..c213a03e1 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -103,7 +103,7 @@ "confirmations.logout.confirm": "Cerrar sesión", "confirmations.logout.message": "¿Estás seguro de querer cerrar la sesión?", "confirmations.mute.confirm": "Silenciar", - "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", + "confirmations.mute.explanation": "Esto esconderá las publicaciones de ellos y en las que los has mencionado, pero les permitirá ver tus mensajes y seguirte.", "confirmations.mute.message": "¿Estás seguro de que quieres silenciar a {name}?", "confirmations.redraft.confirm": "Borrar y volver a borrador", "confirmations.redraft.message": "Estás seguro de que quieres borrar este estado y volverlo a borrador? Perderás todas las respuestas, impulsos y favoritos asociados a él, y las respuestas a la publicación original quedarán huérfanos.", @@ -152,10 +152,10 @@ "empty_column.mutes": "Aún no has silenciado a ningún usuario.", "empty_column.notifications": "No tienes ninguna notificación aún. Interactúa con otros para empezar una conversación.", "empty_column.public": "¡No hay nada aquí! Escribe algo públicamente, o sigue usuarios de otras instancias manualmente para llenarlo", - "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", - "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", - "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", - "errors.unexpected_crash.report_issue": "Report issue", + "error.unexpected_crash.explanation": "Debido a un error en nuestro código o a un problema de compatibilidad con el navegador, esta página no se ha podido mostrar correctamente.", + "error.unexpected_crash.next_steps": "Intenta actualizar la página. Si eso no ayuda, es posible que puedas usar Mastodon a través de otro navegador o aplicación nativa.", + "errors.unexpected_crash.copy_stacktrace": "Copiar el seguimiento de pila en el portapapeles", + "errors.unexpected_crash.report_issue": "Informar de un problema/error", "follow_request.authorize": "Autorizar", "follow_request.reject": "Rechazar", "getting_started.developers": "Desarrolladores", @@ -178,7 +178,6 @@ "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar retoots", "home.column_settings.show_replies": "Mostrar respuestas", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# día} other {# días}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Historia federada", "navigation_bar.security": "Seguridad", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} marcó tu estado como favorito", "notification.follow": "{name} te empezó a seguir", "notification.mention": "{name} te ha mencionado", @@ -304,7 +302,7 @@ "poll.total_people": "{count, plural, one {# person} other {# people}}", "poll.total_votes": "{count, plural, one {# voto} other {# votos}}", "poll.vote": "Votar", - "poll.voted": "You voted for this answer", + "poll.voted": "Has votado a favor de esta respuesta", "poll_button.add_poll": "Añadir una encuesta", "poll_button.remove_poll": "Eliminar encuesta", "privacy.change": "Ajustar privacidad", @@ -316,7 +314,7 @@ "privacy.public.short": "Público", "privacy.unlisted.long": "No mostrar en la historia federada", "privacy.unlisted.short": "No listado", - "refresh": "Refresh", + "refresh": "Actualizar", "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "¡Tu historia de inicio se está preparando!", "relative_time.days": "{number}d", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index bd43c1475..db60dab54 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Peamine", "home.column_settings.show_reblogs": "Näita upitusi", "home.column_settings.show_replies": "Näita vastuseid", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# päev} other {# päevad}}", "intervals.full.hours": "{number, plural, one {# tund} other {# tundi}}", "intervals.full.minutes": "{number, plural, one {# minut} other {# minutit}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Eelistused", "navigation_bar.public_timeline": "Föderatiivne ajajoon", "navigation_bar.security": "Turvalisus", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} märkis su staatuse lemmikuks", "notification.follow": "{name} jälgib sind", "notification.mention": "{name} mainis sind", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index a8b10513d..f89901ab0 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -21,13 +21,13 @@ "account.locked_info": "Kontu honen pribatutasun egoera blokeatuta gisa ezarri da. Jabeak eskuz erabakitzen du nork jarraitu diezaioken.", "account.media": "Multimedia", "account.mention": "Aipatu @{name}", - "account.moved_to": "{name} hona lekualdatu da:", + "account.moved_to": "{name} hona migratu da:", "account.mute": "Mututu @{name}", "account.mute_notifications": "Mututu @{name}(r)en jakinarazpenak", "account.muted": "Mutututa", "account.never_active": "Inoiz ez", - "account.posts": "Toot", - "account.posts_with_replies": "Toot eta erantzunak", + "account.posts": "Tootak", + "account.posts_with_replies": "Toot-ak eta erantzunak", "account.report": "Salatu @{name}", "account.requested": "Onarpenaren zain. Klikatu jarraitzeko eskaera ezeztatzeko", "account.share": "@{name}(e)ren profila elkarbanatu", @@ -38,7 +38,7 @@ "account.unfollow": "Utzi jarraitzeari", "account.unmute": "Desmututu @{name}", "account.unmute_notifications": "Desmututu @{name}(r)en jakinarazpenak", - "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", + "alert.rate_limited.message": "Saiatu {retry_time, time, medium} barru.", "alert.rate_limited.title": "Rate limited", "alert.unexpected.message": "Ustekabeko errore bat gertatu da.", "alert.unexpected.title": "Ene!", @@ -61,7 +61,7 @@ "column.lists": "Zerrendak", "column.mutes": "Mutututako erabiltzaileak", "column.notifications": "Jakinarazpenak", - "column.pins": "Pinned toot", + "column.pins": "Finkatutako toot-ak", "column.public": "Federatutako denbora-lerroa", "column_back_button.label": "Atzera", "column_header.hide_settings": "Ezkutatu ezarpenak", @@ -103,7 +103,7 @@ "confirmations.logout.confirm": "Amaitu saioa", "confirmations.logout.message": "Ziur saioa amaitu nahi duzula?", "confirmations.mute.confirm": "Mututu", - "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", + "confirmations.mute.explanation": "Honek horko mezuak eta aipamena egiten dietenak ezkutatuko ditu, baina beraiek zure mezuak ikusi ahal izango dituzte eta zuri jarraitu.", "confirmations.mute.message": "Ziur {name} mututu nahi duzula?", "confirmations.redraft.confirm": "Ezabatu eta berridatzi", "confirmations.redraft.message": "Ziur mezu hau ezabatu eta berridatzi nahi duzula? Gogokoak eta bultzadak galduko dira eta jaso dituen erantzunak umezurtz geratuko dira.", @@ -111,10 +111,10 @@ "confirmations.reply.message": "Orain erantzuteak idazten ari zaren mezua gainidatziko du. Ziur jarraitu nahi duzula?", "confirmations.unfollow.confirm": "Utzi jarraitzeari", "confirmations.unfollow.message": "Ziur {name} jarraitzeari utzi nahi diozula?", - "conversation.delete": "Delete conversation", - "conversation.mark_as_read": "Mark as read", - "conversation.open": "View conversation", - "conversation.with": "With {names}", + "conversation.delete": "Ezabatu elkarrizketa", + "conversation.mark_as_read": "Markatu irakurrita bezala", + "conversation.open": "Ikusi elkarrizketa", + "conversation.with": "Hauekin: {names}", "directory.federated": "Fedibertso ezagunekoak", "directory.local": "{domain} domeinukoak soilik", "directory.new_arrivals": "Iritsi berriak", @@ -152,10 +152,10 @@ "empty_column.mutes": "Ez duzu erabiltzailerik mututu oraindik.", "empty_column.notifications": "Ez duzu jakinarazpenik oraindik. Jarri besteekin harremanetan elkarrizketa abiatzeko.", "empty_column.public": "Ez dago ezer hemen! Idatzi zerbait publikoki edo jarraitu eskuz beste zerbitzari batzuetako erabiltzaileak hau betetzen joateko", - "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", - "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", + "error.unexpected_crash.explanation": "Gure kodean arazoren bat dela eta, edo nabigatzailearekin bateragarritasun arazoren bat dela eta, orri hau ezin izan da ongi bistaratu.", + "error.unexpected_crash.next_steps": "Saiatu orria berritzen. Horrek ez badu laguntzen, agian Mastodon erabiltzeko aukera duzu oraindik ere beste nabigatzaile bat edo aplikazio natibo bat erabilita.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", - "errors.unexpected_crash.report_issue": "Report issue", + "errors.unexpected_crash.report_issue": "Eman arazoaren berri", "follow_request.authorize": "Baimendu", "follow_request.reject": "Ukatu", "getting_started.developers": "Garatzaileak", @@ -178,7 +178,6 @@ "home.column_settings.basic": "Oinarrizkoa", "home.column_settings.show_reblogs": "Erakutsi bultzadak", "home.column_settings.show_replies": "Erakutsi erantzunak", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {egun #} other {# egun}}", "intervals.full.hours": "{number, plural, one {ordu #} other {# ordu}}", "intervals.full.minutes": "{number, plural, one {minutu #} other {# minutu}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Hobespenak", "navigation_bar.public_timeline": "Federatutako denbora-lerroa", "navigation_bar.security": "Segurtasuna", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name}(e)k zure mezua gogoko du", "notification.follow": "{name}(e)k jarraitzen zaitu", "notification.mention": "{name}(e)k aipatu zaitu", @@ -301,10 +299,10 @@ "notifications.group": "{count} jakinarazpen", "poll.closed": "Itxita", "poll.refresh": "Berritu", - "poll.total_people": "{count, plural, one {# person} other {# people}}", + "poll.total_people": "{count, plural, one {pertsona #} other {# pertsona}}", "poll.total_votes": "{count, plural, one {boto #} other {# boto}}", "poll.vote": "Bozkatu", - "poll.voted": "You voted for this answer", + "poll.voted": "Erantzun honi eman diozu botoa", "poll_button.add_poll": "Gehitu inkesta bat", "poll_button.remove_poll": "Kendu inkesta", "privacy.change": "Doitu mezuaren pribatutasuna", @@ -316,7 +314,7 @@ "privacy.public.short": "Publikoa", "privacy.unlisted.long": "Do not show in public timelines", "privacy.unlisted.short": "Zerrendatu gabea", - "refresh": "Refresh", + "refresh": "Berritu", "regeneration_indicator.label": "Kargatzen…", "regeneration_indicator.sublabel": "Zure hasiera-jarioa prestatzen ari da!", "relative_time.days": "{number}e", @@ -410,7 +408,7 @@ "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", "upload_modal.detect_text": "Antzeman irudiko testua", "upload_modal.edit_media": "Editatu multimedia", - "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", + "upload_modal.hint": "Sakatu eta jaregin aurrebistako zirkulua iruditxoetan beti ikusgai egongo den puntu fokala hautatzeko.", "upload_modal.preview_label": "Aurreikusi({ratio})", "upload_progress.label": "Igotzen...", "video.close": "Itxi bideoa", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 97b7dc00d..b651edd32 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "اصلی", "home.column_settings.show_reblogs": "نمایش بازبوقها", "home.column_settings.show_replies": "نمایش پاسخها", - "home.column_settings.update_live": "بهروزرسانی لحظهای", "intervals.full.days": "{number, plural, one {# روز} other {# روز}}", "intervals.full.hours": "{number, plural, one {# ساعت} other {# ساعت}}", "intervals.full.minutes": "{number, plural, one {# دقیقه} other {# دقیقه}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "ترجیحات", "navigation_bar.public_timeline": "نوشتههای همهجا", "navigation_bar.security": "امنیت", - "notification.and_n_others": "و {count, plural, one {# اعلان دیگر} other {# اعلان دیگر}}", "notification.favourite": "{name} نوشتهٔ شما را پسندید", "notification.follow": "{name} پیگیر شما شد", "notification.mention": "{name} از شما نام برد", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index d3c68b757..2e71e6e18 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Perusasetukset", "home.column_settings.show_reblogs": "Näytä buustaukset", "home.column_settings.show_replies": "Näytä vastaukset", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "Päivä päiviä", "intervals.full.hours": "Tunti tunteja", "intervals.full.minutes": "Minuuti minuuteja", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Asetukset", "navigation_bar.public_timeline": "Yleinen aikajana", "navigation_bar.security": "Tunnukset", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} tykkäsi tilastasi", "notification.follow": "{name} seurasi sinua", "notification.mention": "{name} mainitsi sinut", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index daa4cc529..38f20b619 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -8,7 +8,7 @@ "account.direct": "Envoyer un message direct à @{name}", "account.domain_blocked": "Domaine caché", "account.edit_profile": "Modifier le profil", - "account.endorse": "Mettre en avant sur le profil", + "account.endorse": "Recommander sur le profil", "account.follow": "Suivre", "account.followers": "Abonné⋅e⋅s", "account.followers.empty": "Personne ne suit cet utilisateur·rice pour l’instant.", @@ -34,7 +34,7 @@ "account.show_reblogs": "Afficher les partages de @{name}", "account.unblock": "Débloquer @{name}", "account.unblock_domain": "Ne plus masquer {domain}", - "account.unendorse": "Ne pas mettre en avant sur le profil", + "account.unendorse": "Ne plus recommander sur le profil", "account.unfollow": "Ne plus suivre", "account.unmute": "Ne plus masquer @{name}", "account.unmute_notifications": "Réactiver les notifications de @{name}", @@ -73,8 +73,8 @@ "column_subheading.settings": "Paramètres", "community.column_settings.media_only": "Média uniquement", "compose_form.direct_message_warning": "Ce pouet sera uniquement envoyé aux personnes mentionnées. Cependant, l’administration de votre instance et des instances réceptrices pourront inspecter ce message.", - "compose_form.direct_message_warning_learn_more": "Plus d'informations", - "compose_form.hashtag_warning": "Ce pouet ne sera pas listé dans les recherches par mot-clé car sa visibilité est réglée sur \"non listé\". Seuls les pouets avec une visibilité \"publique\" peuvent être recherchés par mot-clé.", + "compose_form.direct_message_warning_learn_more": "Plus d’informations", + "compose_form.hashtag_warning": "Ce pouet ne sera pas listé dans les recherches par hashtag car sa visibilité est réglée sur \"non listé\". Seuls les pouets avec une visibilité \"publique\" peuvent être recherchés par hashtag.", "compose_form.lock_disclaimer": "Votre compte n’est pas {locked}. Tout le monde peut vous suivre et voir vos pouets privés.", "compose_form.lock_disclaimer.lock": "verrouillé", "compose_form.placeholder": "Qu’avez-vous en tête ?", @@ -86,7 +86,7 @@ "compose_form.publish_loud": "{publish} !", "compose_form.sensitive.hide": "Marquer le média comme sensible", "compose_form.sensitive.marked": "Média marqué comme sensible", - "compose_form.sensitive.unmarked": "Le média n'est pas marqué comme sensible", + "compose_form.sensitive.unmarked": "Le média n’est pas marqué comme sensible", "compose_form.spoiler.marked": "Le texte est caché derrière un avertissement", "compose_form.spoiler.unmarked": "Le texte n’est pas caché", "compose_form.spoiler_placeholder": "Écrivez ici votre avertissement", @@ -108,28 +108,28 @@ "confirmations.redraft.confirm": "Effacer et ré-écrire", "confirmations.redraft.message": "Êtes-vous sûr·e de vouloir effacer ce statut pour le ré-écrire ? Ses partages ainsi que ses mises en favori seront perdu·e·s et ses réponses seront orphelines.", "confirmations.reply.confirm": "Répondre", - "confirmations.reply.message": "Répondre maintenant écrasera le message que vous êtes en train de composer. Voulez-vous vraiment continuer ?", + "confirmations.reply.message": "Répondre maintenant écrasera le message que vous composez actuellement. Êtes-vous sûr de vouloir continuer ?", "confirmations.unfollow.confirm": "Ne plus suivre", "confirmations.unfollow.message": "Voulez-vous arrêter de suivre {name} ?", "conversation.delete": "Supprimer la conversation", "conversation.mark_as_read": "Marquer comme lu", "conversation.open": "Afficher la conversation", "conversation.with": "Avec {names}", - "directory.federated": "De la fédiverse connue", + "directory.federated": "Du fédiverse connu", "directory.local": "De {domain} seulement", "directory.new_arrivals": "Nouveaux arrivants", "directory.recently_active": "Récemment actif", "embed.instructions": "Intégrez ce statut à votre site en copiant le code ci-dessous.", "embed.preview": "Il apparaîtra comme cela :", "emoji_button.activity": "Activités", - "emoji_button.custom": "Personnalisés", + "emoji_button.custom": "Personnalisé", "emoji_button.flags": "Drapeaux", "emoji_button.food": "Nourriture & Boisson", "emoji_button.label": "Insérer un émoji", "emoji_button.nature": "Nature", "emoji_button.not_found": "Pas d’émoji !! (╯°□°)╯︵ ┻━┻", "emoji_button.objects": "Objets", - "emoji_button.people": "Personnages", + "emoji_button.people": "Personnes", "emoji_button.recent": "Fréquemment utilisés", "emoji_button.search": "Recherche…", "emoji_button.search_results": "Résultats de la recherche", @@ -149,12 +149,12 @@ "empty_column.home.public_timeline": "le fil public", "empty_column.list": "Il n’y a rien dans cette liste pour l’instant. Dès que des personnes de cette liste publieront de nouveaux statuts, ils apparaîtront ici.", "empty_column.lists": "Vous n’avez pas encore de liste. Lorsque vous en créerez une, elle apparaîtra ici.", - "empty_column.mutes": "Vous n’avez pas encore mis d'utilisateur·rice·s en silence.", + "empty_column.mutes": "Vous n’avez pas encore mis d’utilisateur·rice·s en silence.", "empty_column.notifications": "Vous n’avez pas encore de notification. Interagissez avec d’autres personnes pour débuter la conversation.", "empty_column.public": "Il n’y a rien ici ! Écrivez quelque chose publiquement, ou bien suivez manuellement des personnes d’autres instances pour le remplir", "error.unexpected_crash.explanation": "En raison d’un bug dans notre code ou d’un problème de compatibilité avec le navigateur, cette page n’a pas pu être affichée correctement.", "error.unexpected_crash.next_steps": "Essayez de rafraîchir la page. Si cela n’aide pas, vous pouvez toujours utiliser Mastodon via un autre navigateur ou une application native.", - "errors.unexpected_crash.copy_stacktrace": "Copier la trace de pile dans le presse-papier", + "errors.unexpected_crash.copy_stacktrace": "Copier la trace-pile dans le presse-papier", "errors.unexpected_crash.report_issue": "Signaler un bogue", "follow_request.authorize": "Accepter", "follow_request.reject": "Rejeter", @@ -178,7 +178,6 @@ "home.column_settings.basic": "Base", "home.column_settings.show_reblogs": "Afficher les partages", "home.column_settings.show_replies": "Afficher les réponses", - "home.column_settings.update_live": "Mise à jour en temps réel", "intervals.full.days": "{number, plural, one {# jour} other {# jours}}", "intervals.full.hours": "{number, plural, one {# heure} other {# heures}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -244,7 +243,7 @@ "lists.new.title_placeholder": "Titre de la nouvelle liste", "lists.search": "Rechercher parmi les gens que vous suivez", "lists.subheading": "Vos listes", - "load_pending": "{count, plural, one {# nouvel item} other {# nouveaux items}}", + "load_pending": "{count, plural, one {# nouvel élément} other {# nouveaux éléments}}", "loading_indicator.label": "Chargement…", "media_gallery.toggle_visible": "Modifier la visibilité", "missing_indicator.label": "Non trouvé", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Préférences", "navigation_bar.public_timeline": "Fil public global", "navigation_bar.security": "Sécurité", - "notification.and_n_others": "et {count, plural, one {# autre} other {# autres}}", "notification.favourite": "{name} a ajouté à ses favoris :", "notification.follow": "{name} vous suit", "notification.mention": "{name} vous a mentionné :", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 433e9a3a5..2dd0dbbad 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.mention": "{name} mentioned you", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index b91925770..0125754b1 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -103,7 +103,7 @@ "confirmations.logout.confirm": "Desconectar", "confirmations.logout.message": "Seguro que desexa desconectar?", "confirmations.mute.confirm": "Acalar", - "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", + "confirmations.mute.explanation": "Esto ocultará as publicacións delas e as que as mencionen, pero poderán seguir lendo as túas publicacións e seguirte.", "confirmations.mute.message": "Está segura de que quere acalar a {name}?", "confirmations.redraft.confirm": "Eliminar e reescribir", "confirmations.redraft.message": "Está segura de querer eliminar este estado e voltalo a escribir? Perderá réplicas e favoritas, e as respostas ao orixinal quedarán orfas.", @@ -152,10 +152,10 @@ "empty_column.mutes": "Non acalou ningunha usuaria polo de agora.", "empty_column.notifications": "Aínda non ten notificacións. Interactúe con outras para iniciar unha conversa.", "empty_column.public": "Nada por aquí! Escriba algo de xeito público, ou siga manualmente usuarias de outros servidores para ir enchéndoa", - "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", - "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", - "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", - "errors.unexpected_crash.report_issue": "Report issue", + "error.unexpected_crash.explanation": "Non se mostra correctamente a páxina debido a un fallo no código ou problema de compatibilidade do navegador.", + "error.unexpected_crash.next_steps": "Intenta actualizar a páxina. Se esto non axuda podes tamén utilizar Mastodon en outro navegador ou app nativa.", + "errors.unexpected_crash.copy_stacktrace": "Copiar trazas ao portaretallos", + "errors.unexpected_crash.report_issue": "Informar de problema", "follow_request.authorize": "Autorizar", "follow_request.reject": "Rexeitar", "getting_started.developers": "Desenvolvedoras", @@ -178,7 +178,6 @@ "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar repeticións", "home.column_settings.show_replies": "Mostrar respostas", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural,one {# día} other {# días}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Liña temporal federada", "navigation_bar.security": "Seguridade", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} marcou como favorito o seu estado", "notification.follow": "{name} está a seguila", "notification.mention": "{name} mencionoute", @@ -301,7 +299,7 @@ "notifications.group": "{count} notificacións", "poll.closed": "Pechado", "poll.refresh": "Actualizar", - "poll.total_people": "{count, plural, one {# person} other {# people}}", + "poll.total_people": "{count, plural,one {# persoa}other {# persoas}}", "poll.total_votes": "{count, plural, one {# voto} outros {# votos}}", "poll.vote": "Votar", "poll.voted": "Votou por esta opción", @@ -316,7 +314,7 @@ "privacy.public.short": "Pública", "privacy.unlisted.long": "Non publicar en liñas temporais públicas", "privacy.unlisted.short": "Non listada", - "refresh": "Refresh", + "refresh": "Actualizar", "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "Estase a preparar a súa liña temporal de inicio!", "relative_time.days": "{number}d", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 6ad96da4f..70aec3279 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "למתחילים", "home.column_settings.show_reblogs": "הצגת הדהודים", "home.column_settings.show_replies": "הצגת תגובות", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "העדפות", "navigation_bar.public_timeline": "ציר זמן בין-קהילתי", "navigation_bar.security": "Security", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "חצרוצך חובב על ידי {name}", "notification.follow": "{name} במעקב אחרייך", "notification.mention": "אוזכרת על ידי {name}", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 3f685d968..4fb924a5f 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.mention": "{name} mentioned you", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index bf5322607..09298a7ad 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Osnovno", "home.column_settings.show_reblogs": "Pokaži boostove", "home.column_settings.show_replies": "Pokaži odgovore", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Postavke", "navigation_bar.public_timeline": "Federalni timeline", "navigation_bar.security": "Security", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} je lajkao tvoj status", "notification.follow": "{name} te sada slijedi", "notification.mention": "{name} te je spomenuo", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 8a483d686..c35c943e6 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -103,7 +103,7 @@ "confirmations.logout.confirm": "Kijelentkezés", "confirmations.logout.message": "Biztosan ki akar jelentkezni?", "confirmations.mute.confirm": "Némítás", - "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", + "confirmations.mute.explanation": "Ez elrejti a tőlük érkező posztokat, valamint az őket megemlítőket, de ők továbbra is láthatják a te posztjaidat és követhetnek is téged.", "confirmations.mute.message": "Biztos, hogy némítani szeretnéd {name}?", "confirmations.redraft.confirm": "Törlés és újraírás", "confirmations.redraft.message": "Biztos, hogy ezt a tülköt szeretnéd törölni és újraírni? Minden megtolást és kedvencnek jelölést elvesztesz, az eredetire adott válaszok pedig elárvulnak.", @@ -152,10 +152,10 @@ "empty_column.mutes": "Még egy felhasználót sem némítottál le.", "empty_column.notifications": "Jelenleg nincsenek értesítéseid. Lépj kapcsolatba másokkal, hogy elindítsd a beszélgetést.", "empty_column.public": "Jelenleg itt nincs semmi! Írj valamit nyilvánosan vagy kövess más szervereken levő felhasználókat, hogy megtöltsd", - "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", - "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", - "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", - "errors.unexpected_crash.report_issue": "Report issue", + "error.unexpected_crash.explanation": "Egy hiba vagy böngésző inkompatibilitás miatt ez az oldal nem jeleníthető meg rendesen.", + "error.unexpected_crash.next_steps": "Próbáld frissíteni az oldalt. Ha ez nem segít, egy másik böngészőn vagy appon keresztül még mindig használhatod a Mastodont.", + "errors.unexpected_crash.copy_stacktrace": "Stacktrace vágólapra másolása", + "errors.unexpected_crash.report_issue": "Probléma bejelentése", "follow_request.authorize": "Engedélyezés", "follow_request.reject": "Visszautasítás", "getting_started.developers": "Fejlesztőknek", @@ -178,7 +178,6 @@ "home.column_settings.basic": "Alapértelmezések", "home.column_settings.show_reblogs": "Megtolások mutatása", "home.column_settings.show_replies": "Válaszok mutatása", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# nap} other {# nap}}", "intervals.full.hours": "{number, plural, one {# óra} other {# óra}}", "intervals.full.minutes": "{number, plural, one {# perc} other {# perc}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Beállítások", "navigation_bar.public_timeline": "Föderációs idővonal", "navigation_bar.security": "Biztonság", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} kedvencnek jelölte egy tülködet", "notification.follow": "{name} követ téged", "notification.mention": "{name} megemlített", @@ -301,10 +299,10 @@ "notifications.group": "{count} értesítés", "poll.closed": "Lezárva", "poll.refresh": "Frissítés", - "poll.total_people": "{count, plural, one {# person} other {# people}}", + "poll.total_people": "{count, plural, one {# személy} other {# személy}}", "poll.total_votes": "{count, plural, one {# szavazat} other {# szavazat}}", "poll.vote": "Szavazás", - "poll.voted": "You voted for this answer", + "poll.voted": "Erre a válaszra szavaztál", "poll_button.add_poll": "Új szavazás", "poll_button.remove_poll": "Szavazás törlése", "privacy.change": "Tülk láthatóságának módosítása", @@ -316,7 +314,7 @@ "privacy.public.short": "Nyilvános", "privacy.unlisted.long": "Ne mutassuk nyilvános idővonalon", "privacy.unlisted.short": "Listázatlan", - "refresh": "Refresh", + "refresh": "Frissítés", "regeneration_indicator.label": "Töltődik…", "regeneration_indicator.sublabel": "A saját idővonalad épp készül!", "relative_time.days": "{number}nap", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index d167552f5..69af86bf2 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Հիմնական", "home.column_settings.show_reblogs": "Ցուցադրել տարածածները", "home.column_settings.show_replies": "Ցուցադրել պատասխանները", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Նախապատվություններ", "navigation_bar.public_timeline": "Դաշնային հոսք", "navigation_bar.security": "Անվտանգություն", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} հավանեց թութդ", "notification.follow": "{name} սկսեց հետեւել քեզ", "notification.mention": "{name} նշեց քեզ", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 4846cfe9f..371922a4d 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -117,7 +117,7 @@ "conversation.with": "Dengan {names}", "directory.federated": "Dari fediverse yang dikenal", "directory.local": "Dari {domain} saja", - "directory.new_arrivals": "New arrivals", + "directory.new_arrivals": "Yang baru datang", "directory.recently_active": "Baru-baru ini aktif", "embed.instructions": "Sematkan status ini di website anda dengan menyalin kode di bawah ini.", "embed.preview": "Seperti ini nantinya:", @@ -178,7 +178,6 @@ "home.column_settings.basic": "Dasar", "home.column_settings.show_reblogs": "Tampilkan boost", "home.column_settings.show_replies": "Tampilkan balasan", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, other {# hari}}", "intervals.full.hours": "{number, plural, other {# jam}}", "intervals.full.minutes": "{number, plural, other {# menit}}", @@ -232,75 +231,74 @@ "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", "keyboard_shortcuts.up": "to move up in the list", "lightbox.close": "Tutup", - "lightbox.next": "Next", - "lightbox.previous": "Previous", - "lightbox.view_context": "View context", - "lists.account.add": "Add to list", - "lists.account.remove": "Remove from list", - "lists.delete": "Delete list", - "lists.edit": "Edit list", - "lists.edit.submit": "Change title", - "lists.new.create": "Add list", - "lists.new.title_placeholder": "New list title", - "lists.search": "Search among people you follow", - "lists.subheading": "Your lists", + "lightbox.next": "Selanjutnya", + "lightbox.previous": "Sebelumnya", + "lightbox.view_context": "Lihat konteks", + "lists.account.add": "Tambah ke daftar", + "lists.account.remove": "Hapus dari daftar", + "lists.delete": "Hapus daftar", + "lists.edit": "Sunting daftar", + "lists.edit.submit": "Ubah judul", + "lists.new.create": "Tambah daftar", + "lists.new.title_placeholder": "Judul daftar baru", + "lists.search": "Cari di antara orang yang Anda ikuti", + "lists.subheading": "Daftar Anda", "load_pending": "{count, plural, one {# new item} other {# new items}}", "loading_indicator.label": "Tunggu sebentar...", "media_gallery.toggle_visible": "Tampil/Sembunyikan", "missing_indicator.label": "Tidak ditemukan", - "missing_indicator.sublabel": "This resource could not be found", - "mute_modal.hide_notifications": "Hide notifications from this user?", - "navigation_bar.apps": "Mobile apps", + "missing_indicator.sublabel": "Sumber daya tak bisa ditemukan", + "mute_modal.hide_notifications": "Sembunyikan notifikasi dari pengguna ini?", + "navigation_bar.apps": "Aplikasi mobile", "navigation_bar.blocks": "Pengguna diblokir", "navigation_bar.community_timeline": "Linimasa lokal", - "navigation_bar.compose": "Compose new toot", - "navigation_bar.direct": "Direct messages", - "navigation_bar.discover": "Discover", - "navigation_bar.domain_blocks": "Hidden domains", + "navigation_bar.compose": "Tulis toot baru", + "navigation_bar.direct": "Pesan langsung", + "navigation_bar.discover": "Temukan", + "navigation_bar.domain_blocks": "Domain tersembunyi", "navigation_bar.edit_profile": "Ubah profil", "navigation_bar.favourites": "Favorit", - "navigation_bar.filters": "Muted words", + "navigation_bar.filters": "Kata yang dibisukan", "navigation_bar.follow_requests": "Permintaan mengikuti", "navigation_bar.follows_and_followers": "Follows and followers", "navigation_bar.info": "Informasi selengkapnya", "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", - "navigation_bar.lists": "Lists", + "navigation_bar.lists": "Daftar", "navigation_bar.logout": "Keluar", "navigation_bar.mutes": "Pengguna dibisukan", "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Pinned toots", + "navigation_bar.pins": "Toot tersemat", "navigation_bar.preferences": "Pengaturan", "navigation_bar.public_timeline": "Linimasa gabungan", - "navigation_bar.security": "Security", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", + "navigation_bar.security": "Keamanan", "notification.favourite": "{name} menyukai status anda", "notification.follow": "{name} mengikuti anda", - "notification.mention": "{name} mentioned you", - "notification.poll": "A poll you have voted in has ended", + "notification.mention": "{name} menyebut Anda", + "notification.poll": "Japat yang Anda ikuti telah berakhir", "notification.reblog": "{name} mem-boost status anda", "notifications.clear": "Hapus notifikasi", "notifications.clear_confirmation": "Apa anda yakin hendak menghapus semua notifikasi anda?", "notifications.column_settings.alert": "Notifikasi desktop", "notifications.column_settings.favourite": "Favorit:", - "notifications.column_settings.filter_bar.advanced": "Display all categories", - "notifications.column_settings.filter_bar.category": "Quick filter bar", - "notifications.column_settings.filter_bar.show": "Show", + "notifications.column_settings.filter_bar.advanced": "Tampilkan semua kategori", + "notifications.column_settings.filter_bar.category": "Bilah penyaring cepat", + "notifications.column_settings.filter_bar.show": "Tampilkan", "notifications.column_settings.follow": "Pengikut baru:", "notifications.column_settings.mention": "Balasan:", - "notifications.column_settings.poll": "Poll results:", - "notifications.column_settings.push": "Push notifications", + "notifications.column_settings.poll": "Hasil japat:", + "notifications.column_settings.push": "Notifikasi dorong", "notifications.column_settings.reblog": "Boost:", "notifications.column_settings.show": "Tampilkan dalam kolom", "notifications.column_settings.sound": "Mainkan suara", - "notifications.filter.all": "All", - "notifications.filter.boosts": "Boosts", - "notifications.filter.favourites": "Favourites", - "notifications.filter.follows": "Follows", - "notifications.filter.mentions": "Mentions", - "notifications.filter.polls": "Poll results", - "notifications.group": "{count} notifications", - "poll.closed": "Closed", - "poll.refresh": "Refresh", + "notifications.filter.all": "Semua", + "notifications.filter.boosts": "Boost", + "notifications.filter.favourites": "Favorit", + "notifications.filter.follows": "Diikuti", + "notifications.filter.mentions": "Sebutan", + "notifications.filter.polls": "Hasil japat", + "notifications.group": "{count} notifikasi", + "poll.closed": "Ditutup", + "poll.refresh": "Segarkan", "poll.total_people": "{count, plural, one {# person} other {# people}}", "poll.total_votes": "{count, plural, one {# vote} other {# votes}}", "poll.vote": "Vote", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 07e7f6380..076835218 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Simpla", "home.column_settings.show_reblogs": "Montrar repeti", "home.column_settings.show_replies": "Montrar respondi", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Preferi", "navigation_bar.public_timeline": "Federata tempolineo", "navigation_bar.security": "Security", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} favorizis tua mesajo", "notification.follow": "{name} sequeskis tu", "notification.mention": "{name} mencionis tu", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 8d0a52b12..8d4b8f66e 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Semplice", "home.column_settings.show_reblogs": "Mostra post condivisi", "home.column_settings.show_replies": "Mostra risposte", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# giorno} other {# giorni}}", "intervals.full.hours": "{number, plural, one {# ora} other {# ore}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minuti}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Impostazioni", "navigation_bar.public_timeline": "Timeline federata", "navigation_bar.security": "Sicurezza", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} ha apprezzato il tuo post", "notification.follow": "{name} ha iniziato a seguirti", "notification.mention": "{name} ti ha menzionato", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 19038aaef..fdcbe53a2 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -115,7 +115,7 @@ "confirmations.reply.message": "今返信すると現在作成中のメッセージが上書きされます。本当に実行しますか?", "confirmations.unfollow.confirm": "フォロー解除", "confirmations.unfollow.message": "本当に{name}さんのフォローを解除しますか?", - "conversation.delete": "この会話を削除", + "conversation.delete": "会話を削除", "conversation.mark_as_read": "既読にする", "conversation.open": "会話を表示", "conversation.with": "{names}", @@ -182,7 +182,6 @@ "home.column_settings.basic": "基本設定", "home.column_settings.show_reblogs": "ブースト表示", "home.column_settings.show_replies": "返信表示", - "home.column_settings.update_live": "リアルタイム更新", "intervals.full.days": "{number}日", "intervals.full.hours": "{number}時間", "intervals.full.minutes": "{number}分", @@ -277,7 +276,6 @@ "navigation_bar.public_timeline": "連合タイムライン", "navigation_bar.misc": "その他", "navigation_bar.security": "セキュリティ", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name}さんがあなたのトゥートをお気に入りに登録しました", "notification.follow": "{name}さんにフォローされました", "notification.mention": "{name}さんがあなたに返信しました", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 1c579aa8f..35789374a 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "ძირითადი", "home.column_settings.show_reblogs": "ბუსტების ჩვენება", "home.column_settings.show_replies": "პასუხების ჩვენება", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "პრეფერენსიები", "navigation_bar.public_timeline": "ფედერალური თაიმლაინი", "navigation_bar.security": "უსაფრთხოება", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name}-მა თქვენი სტატუსი აქცია ფავორიტად", "notification.follow": "{name} გამოგყვათ", "notification.mention": "{name}-მა გასახელათ", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 37b63f13a..ba0f5378e 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Негізгі", "home.column_settings.show_reblogs": "Бөлісулерді көрсету", "home.column_settings.show_replies": "Жауаптарды көрсету", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# күн} other {# күн}}", "intervals.full.hours": "{number, plural, one {# сағат} other {# сағат}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Басымдықтар", "navigation_bar.public_timeline": "Жаһандық желі", "navigation_bar.security": "Қауіпсіздік", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} жазбаңызды таңдаулыға қосты", "notification.follow": "{name} сізге жазылды", "notification.mention": "{name} сізді атап өтті", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 047071136..ea70c7055 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "기본 설정", "home.column_settings.show_reblogs": "부스트 표시", "home.column_settings.show_replies": "답글 표시", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number} 일", "intervals.full.hours": "{number} 시간", "intervals.full.minutes": "{number} 분", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "사용자 설정", "navigation_bar.public_timeline": "연합 타임라인", "navigation_bar.security": "보안", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name}님이 즐겨찾기 했습니다", "notification.follow": "{name}님이 나를 팔로우 했습니다", "notification.mention": "{name}님이 답글을 보냈습니다", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 433e9a3a5..39ca86a0c 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.mention": "{name} mentioned you", @@ -412,7 +410,7 @@ "upload_modal.edit_media": "Edit media", "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", "upload_modal.preview_label": "Preview ({ratio})", - "upload_progress.label": "Uploading...", + "upload_progress.label": "Uploading…", "video.close": "Close video", "video.exit_fullscreen": "Exit full screen", "video.expand": "Expand video", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 01d8fe03b..1c0e35501 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.mention": "{name} mentioned you", @@ -412,7 +410,7 @@ "upload_modal.edit_media": "Edit media", "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", "upload_modal.preview_label": "Preview ({ratio})", - "upload_progress.label": "Uploading...", + "upload_progress.label": "Uploading…", "video.close": "Close video", "video.exit_fullscreen": "Exit full screen", "video.expand": "Expand video", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 06a976271..9a4a417af 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.mention": "{name} mentioned you", @@ -412,7 +410,7 @@ "upload_modal.edit_media": "Edit media", "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", "upload_modal.preview_label": "Preview ({ratio})", - "upload_progress.label": "Uploading...", + "upload_progress.label": "Uploading…", "video.close": "Close video", "video.exit_fullscreen": "Exit full screen", "video.expand": "Expand video", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 8805c0e0b..6881d3be3 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Show boosts", "home.column_settings.show_replies": "Show replies", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.security": "Security", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} favourited your status", "notification.follow": "{name} followed you", "notification.mention": "{name} mentioned you", @@ -412,7 +410,7 @@ "upload_modal.edit_media": "Edit media", "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", "upload_modal.preview_label": "Preview ({ratio})", - "upload_progress.label": "Uploading...", + "upload_progress.label": "Uploading…", "video.close": "Close video", "video.exit_fullscreen": "Exit full screen", "video.expand": "Expand video", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index f9e8457a0..68b8f4cbd 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Algemeen", "home.column_settings.show_reblogs": "Boosts tonen", "home.column_settings.show_replies": "Reacties tonen", - "home.column_settings.update_live": "In realtime bijwerken", "intervals.full.days": "{number, plural, one {# dag} other {# dagen}}", "intervals.full.hours": "{number, plural, one {# uur} other {# uur}}", "intervals.full.minutes": "{number, plural, one {# minuut} other {# minuten}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Instellingen", "navigation_bar.public_timeline": "Globale tijdlijn", "navigation_bar.security": "Beveiliging", - "notification.and_n_others": "en {count, plural, one {# meer} other {# meer}}", "notification.favourite": "{name} voegde jouw toot als favoriet toe", "notification.follow": "{name} volgt jou nu", "notification.mention": "{name} vermeldde jou", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 53c5610c1..73a319179 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -15,7 +15,7 @@ "account.follows": "Føljingar", "account.follows.empty": "Denne brukaren foljer ikkje nokon ennå.", "account.follows_you": "Føljar deg", - "account.hide_reblogs": "Gøym robotar for @{name}", + "account.hide_reblogs": "Gøym fremhevingar for @{name}", "account.last_status": "Sist aktiv", "account.link_verified_on": "Eigerskap for denne linken er sist sjekket den {date}", "account.locked_info": "Brukarens privat-status er satt til lukka. Eigaren må manuelt døme kvem som kan følje honom.", @@ -23,7 +23,7 @@ "account.mention": "Nemne @{name}", "account.moved_to": "{name} har flytta til:", "account.mute": "Målbind @{name}", - "account.mute_notifications": "Målbind notifikasjoner ifrå @{name}", + "account.mute_notifications": "Målbind varslingar ifrå @{name}", "account.muted": "Målbindt", "account.never_active": "Aldri", "account.posts": "Tutar", @@ -60,7 +60,7 @@ "column.home": "Heim", "column.lists": "Lister", "column.mutes": "Målbindte brukare", - "column.notifications": "Varslinger", + "column.notifications": "Varslingar", "column.pins": "Festa tuter", "column.public": "Federert samtid", "column_back_button.label": "Tilbake", @@ -74,31 +74,31 @@ "community.column_settings.media_only": "Kun medie", "compose_form.direct_message_warning": "Denne tuten vil kun verte synleg for nemnde brukarar.", "compose_form.direct_message_warning_learn_more": "Lær meir", - "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", - "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.", + "compose_form.hashtag_warning": "Denne tuten vill ikkje bli lista under nokon knagg ettersom den ikkje er opplista. Berre offentlege tutar kan ble søkt på ved emneknagg.", + "compose_form.lock_disclaimer": "Din brukar er ikkje {locked}. Alle kan følje deg for å sjå føljar-modus poster.", "compose_form.lock_disclaimer.lock": "låst", "compose_form.placeholder": "Kva har du på hjartet?", "compose_form.poll.add_option": "Legg til eit punkt", "compose_form.poll.duration": "Varigheit for spørring", "compose_form.poll.option_placeholder": "Val {number}", - "compose_form.poll.remove_option": "Remove this choice", - "compose_form.publish": "Toot", + "compose_form.poll.remove_option": "Ta burt dette valet", + "compose_form.publish": "Tut", "compose_form.publish_loud": "{publish}!", - "compose_form.sensitive.hide": "Mark media as sensitive", - "compose_form.sensitive.marked": "Media is marked as sensitive", - "compose_form.sensitive.unmarked": "Media is not marked as sensitive", - "compose_form.spoiler.marked": "Text is hidden behind warning", - "compose_form.spoiler.unmarked": "Text is not hidden", - "compose_form.spoiler_placeholder": "Write your warning here", - "confirmation_modal.cancel": "Cancel", - "confirmations.block.block_and_report": "Block & Report", - "confirmations.block.confirm": "Block", - "confirmations.block.message": "Are you sure you want to block {name}?", - "confirmations.delete.confirm": "Delete", - "confirmations.delete.message": "Are you sure you want to delete this status?", - "confirmations.delete_list.confirm": "Delete", - "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", - "confirmations.domain_block.confirm": "Hide entire domain", + "compose_form.sensitive.hide": "Merk media som sensitivt", + "compose_form.sensitive.marked": "Media er markert som sensitivt", + "compose_form.sensitive.unmarked": "Media er ikkje merka som sensitivt", + "compose_form.spoiler.marked": "Tekst er gøymt bak ein advarsel", + "compose_form.spoiler.unmarked": "Tekst er ikkje gøymt", + "compose_form.spoiler_placeholder": "Skriv varselen din her", + "confirmation_modal.cancel": "Avbrot", + "confirmations.block.block_and_report": "Blokk & rapportér", + "confirmations.block.confirm": "Blokkér", + "confirmations.block.message": "Er du sikker på at du vill blokke {name}?", + "confirmations.delete.confirm": "Slett", + "confirmations.delete.message": "Er du sikker på at du vill slette denne statusen?", + "confirmations.delete_list.confirm": "Slett", + "confirmations.delete_list.message": "Er du sikker på at du vill slette denne listen for alltid?", + "confirmations.domain_block.confirm": "Gøym heile domenet", "confirmations.domain_block.message": "Er du ordentleg, ordentleg sikker på at du vill blokkere heile {domain}? I dei tilfeller er det bedre med ein målretta blokkering eller demping av individuelle brukare.", "confirmations.logout.confirm": "Logg ut", "confirmations.logout.message": "Er du sikker på at du vill logge ut?", @@ -108,96 +108,95 @@ "confirmations.redraft.confirm": "Slett & gjennopprett", "confirmations.redraft.message": "Er du sikker på at du vill slette statusen og gjennoprette den? Favoritter og framhevinger vill bli borte, og svar til den originale posten vill bli einstøing.", "confirmations.reply.confirm": "Svar", - "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", - "confirmations.unfollow.confirm": "Unfollow", - "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?", - "conversation.delete": "Delete conversation", - "conversation.mark_as_read": "Mark as read", - "conversation.open": "View conversation", - "conversation.with": "With {names}", - "directory.federated": "From known fediverse", - "directory.local": "From {domain} only", - "directory.new_arrivals": "New arrivals", - "directory.recently_active": "Recently active", + "confirmations.reply.message": "Å svare nå vill overskrive meldingen du er i ferd med å skrive. Er du sikker på at du vill gå fram?", + "confirmations.unfollow.confirm": "Avfølj", + "confirmations.unfollow.message": "Er du sikker på at du vill avfølje {name}?", + "conversation.delete": "Slett samtale", + "conversation.mark_as_read": "Merk som lest", + "conversation.open": "Sjå samtale", + "conversation.with": "Med {names}", + "directory.federated": "Fra kjent fedivers", + "directory.local": "Fra berre {domain} domenet", + "directory.new_arrivals": "Nyankommne", + "directory.recently_active": "Nylig aktiv", "embed.instructions": "Embed this status on your website by copying the code below.", - "embed.preview": "Here is what it will look like:", - "emoji_button.activity": "Activity", + "embed.preview": "Dette er korleis den vil sjå ut:", + "emoji_button.activity": "Aktivitet", "emoji_button.custom": "Custom", - "emoji_button.flags": "Flags", - "emoji_button.food": "Food & Drink", - "emoji_button.label": "Insert emoji", - "emoji_button.nature": "Nature", + "emoji_button.flags": "Flagg", + "emoji_button.food": "Mat & drikke", + "emoji_button.label": "Legg til smilefjes", + "emoji_button.nature": "Natur", "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻", - "emoji_button.objects": "Objects", - "emoji_button.people": "People", - "emoji_button.recent": "Frequently used", - "emoji_button.search": "Search...", - "emoji_button.search_results": "Search results", - "emoji_button.symbols": "Symbols", - "emoji_button.travel": "Travel & Places", - "empty_column.account_timeline": "No toots here!", - "empty_column.account_unavailable": "Profile unavailable", - "empty_column.blocks": "You haven't blocked any users yet.", - "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!", - "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.", - "empty_column.domain_blocks": "There are no hidden domains yet.", - "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", - "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", - "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.", - "empty_column.hashtag": "There is nothing in this hashtag yet.", - "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.", - "empty_column.home.public_timeline": "the public timeline", - "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.", - "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.", - "empty_column.mutes": "You haven't muted any users yet.", + "emoji_button.objects": "Objektar", + "emoji_button.people": "Folk", + "emoji_button.recent": "Ofte brukt", + "emoji_button.search": "Søk...", + "emoji_button.search_results": "Søke resultater", + "emoji_button.symbols": "Symbolar", + "emoji_button.travel": "Reise & steder", + "empty_column.account_timeline": "Ikkje nokon tutar her!", + "empty_column.account_unavailable": "Profil ikkje tilgjengelig", + "empty_column.blocks": "Du har ikkje blokkért nokon brukarar ennå.", + "empty_column.community": "Den lokale samtiden er tom. Skriv noko offentleg å få ballen til å rulle!", + "empty_column.direct": "Du har ikkje nokon direkte meldingar ennå. Når du sendar eller får ein, så vill den ende opp her.", + "empty_column.domain_blocks": "Der er ikkje nokon gøymte domener enno.", + "empty_column.favourited_statuses": "Du har ikkje favorisert nokon tutar enno. Når du favoriserer noko, så vill det ende opp her.", + "empty_column.favourites": "Ikkje nokon har favorisert denne tuten enno. Når nokon gjer det, så vill den ende opp her.", + "empty_column.follow_requests": "Du har ikkje nokon føljar førespurnad enno. Når du får ein, så vill den sjåast her.", + "empty_column.hashtag": "Det er ikkje noko i denne emneknaggen her enno.", + "empty_column.home": "Din heime-tidslinja er tom! Dra til {public} eller søk for å starte å møte andre brukare.", + "empty_column.home.public_timeline": "Den offentlege tidslinja", + "empty_column.list": "Det er ikkje noko i denne lista enno. Når medlemmar av denne lista poster statuser, så vill dei sjåast her.", + "empty_column.lists": "Du har ikkje nokon liste enno. Når du lagar ein, så vill den ende up her.", + "empty_column.mutes": "Du har ikkje dempet nokon brukare enno.", "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.", "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up", "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", - "errors.unexpected_crash.report_issue": "Report issue", - "follow_request.authorize": "Authorize", + "errors.unexpected_crash.report_issue": "Rapportér problem", + "follow_request.authorize": "Autoriser", "follow_request.reject": "Reject", - "getting_started.developers": "Developers", + "getting_started.developers": "Utviklare", "getting_started.directory": "Profile directory", - "getting_started.documentation": "Documentation", - "getting_started.heading": "Getting started", - "getting_started.invite": "Invite people", - "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.", - "getting_started.security": "Security", - "getting_started.terms": "Terms of service", - "hashtag.column_header.tag_mode.all": "and {additional}", - "hashtag.column_header.tag_mode.any": "or {additional}", - "hashtag.column_header.tag_mode.none": "without {additional}", + "getting_started.documentation": "Dokumentasjon", + "getting_started.heading": "Komme i gong", + "getting_started.invite": "Inviter folk", + "getting_started.open_source_notice": "Mastodon har åpen kilde kode. Du kan hjelpe til med problemar på GitHub gjennom {github}.", + "getting_started.security": "Brukar instillingar", + "getting_started.terms": "Brukarvillkår", + "hashtag.column_header.tag_mode.all": "og {additional}", + "hashtag.column_header.tag_mode.any": "eller {additional}", + "hashtag.column_header.tag_mode.none": "uten {additional}", "hashtag.column_settings.select.no_options_message": "No suggestions found", "hashtag.column_settings.select.placeholder": "Enter hashtags…", - "hashtag.column_settings.tag_mode.all": "All of these", + "hashtag.column_settings.tag_mode.all": "Alle disse", "hashtag.column_settings.tag_mode.any": "Any of these", "hashtag.column_settings.tag_mode.none": "None of these", "hashtag.column_settings.tag_toggle": "Include additional tags in this column", "home.column_settings.basic": "Basic", - "home.column_settings.show_reblogs": "Show boosts", - "home.column_settings.show_replies": "Show replies", - "home.column_settings.update_live": "Update in real-time", + "home.column_settings.show_reblogs": "Vis fremhevingar", + "home.column_settings.show_replies": "Vis svar", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", - "introduction.federation.action": "Next", - "introduction.federation.federated.headline": "Federated", + "introduction.federation.action": "Neste", + "introduction.federation.federated.headline": "Federert", "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.", - "introduction.federation.home.headline": "Home", + "introduction.federation.home.headline": "Heim", "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!", - "introduction.federation.local.headline": "Local", + "introduction.federation.local.headline": "Lokal", "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.", - "introduction.interactions.action": "Finish toot-orial!", - "introduction.interactions.favourite.headline": "Favourite", + "introduction.interactions.action": "Fullfør omvisning!", + "introduction.interactions.favourite.headline": "Lik", "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.", - "introduction.interactions.reblog.headline": "Boost", + "introduction.interactions.reblog.headline": "Fremhev", "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.", - "introduction.interactions.reply.headline": "Reply", + "introduction.interactions.reply.headline": "Svar", "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.", "introduction.welcome.action": "Let's go!", - "introduction.welcome.headline": "First steps", + "introduction.welcome.headline": "Første steg", "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.", "keyboard_shortcuts.back": "to navigate back", "keyboard_shortcuts.blocked": "to open blocked users list", @@ -228,27 +227,27 @@ "keyboard_shortcuts.start": "to open \"get started\" column", "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW", "keyboard_shortcuts.toggle_sensitivity": "to show/hide media", - "keyboard_shortcuts.toot": "to start a brand new toot", + "keyboard_shortcuts.toot": "Start ein heilt ny tut", "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search", "keyboard_shortcuts.up": "to move up in the list", - "lightbox.close": "Close", - "lightbox.next": "Next", - "lightbox.previous": "Previous", - "lightbox.view_context": "View context", - "lists.account.add": "Add to list", - "lists.account.remove": "Remove from list", - "lists.delete": "Delete list", - "lists.edit": "Edit list", - "lists.edit.submit": "Change title", - "lists.new.create": "Add list", - "lists.new.title_placeholder": "New list title", - "lists.search": "Search among people you follow", - "lists.subheading": "Your lists", + "lightbox.close": "Lukk", + "lightbox.next": "Neste", + "lightbox.previous": "Forrige", + "lightbox.view_context": "Sjå kontekst", + "lists.account.add": "Legg til i liste", + "lists.account.remove": "Ta burt fra liste", + "lists.delete": "Slett liste", + "lists.edit": "Rediger liste", + "lists.edit.submit": "Bytt tittel", + "lists.new.create": "Legg til liste", + "lists.new.title_placeholder": "Ny liste tittel", + "lists.search": "Søk gjennom folk du føljar", + "lists.subheading": "Dine lister", "load_pending": "{count, plural, one {# new item} other {# new items}}", - "loading_indicator.label": "Loading...", + "loading_indicator.label": "Laster...", "media_gallery.toggle_visible": "Toggle visibility", - "missing_indicator.label": "Not found", - "missing_indicator.sublabel": "This resource could not be found", + "missing_indicator.label": "Ikkje funne", + "missing_indicator.sublabel": "Denne ressursen ble ikkje funne", "mute_modal.hide_notifications": "Hide notifications from this user?", "navigation_bar.apps": "Mobile apps", "navigation_bar.blocks": "Blocked users", @@ -264,38 +263,37 @@ "navigation_bar.follows_and_followers": "Follows and followers", "navigation_bar.info": "About this server", "navigation_bar.keyboard_shortcuts": "Hotkeys", - "navigation_bar.lists": "Lists", - "navigation_bar.logout": "Logout", - "navigation_bar.mutes": "Muted users", - "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Pinned toots", - "navigation_bar.preferences": "Preferences", - "navigation_bar.public_timeline": "Federated timeline", - "navigation_bar.security": "Security", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", - "notification.favourite": "{name} favourited your status", - "notification.follow": "{name} followed you", - "notification.mention": "{name} mentioned you", + "navigation_bar.lists": "Lister", + "navigation_bar.logout": "Logg ut", + "navigation_bar.mutes": "Dempa brukare", + "navigation_bar.personal": "Personlig", + "navigation_bar.pins": "Festa tuter", + "navigation_bar.preferences": "Preferanser", + "navigation_bar.public_timeline": "Federert tidslinje", + "navigation_bar.security": "Sikkerheit", + "notification.favourite": "{name} likte din status", + "notification.follow": "{name} fulgte deg", + "notification.mention": "{name} nevnte deg", "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", - "notifications.clear": "Clear notifications", + "notifications.clear": "Klarer notifikasjoner", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.category": "Quick filter bar", "notifications.column_settings.filter_bar.show": "Show", - "notifications.column_settings.follow": "New followers:", + "notifications.column_settings.follow": "Nye føljare:", "notifications.column_settings.mention": "Mentions:", "notifications.column_settings.poll": "Poll results:", "notifications.column_settings.push": "Push notifications", - "notifications.column_settings.reblog": "Boosts:", + "notifications.column_settings.reblog": "Framhevinger:", "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "Play sound", "notifications.filter.all": "All", - "notifications.filter.boosts": "Boosts", - "notifications.filter.favourites": "Favourites", - "notifications.filter.follows": "Follows", + "notifications.filter.boosts": "Framhevinger", + "notifications.filter.favourites": "Favoritter", + "notifications.filter.follows": "Føljare", "notifications.filter.mentions": "Mentions", "notifications.filter.polls": "Poll results", "notifications.group": "{count} notifications", @@ -412,7 +410,7 @@ "upload_modal.edit_media": "Edit media", "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", "upload_modal.preview_label": "Preview ({ratio})", - "upload_progress.label": "Uploading...", + "upload_progress.label": "Uploading…", "video.close": "Close video", "video.exit_fullscreen": "Exit full screen", "video.expand": "Expand video", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 54b92181b..37b893938 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Enkel", "home.column_settings.show_reblogs": "Vis fremhevinger", "home.column_settings.show_replies": "Vis svar", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Preferanser", "navigation_bar.public_timeline": "Felles tidslinje", "navigation_bar.security": "Security", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} likte din status", "notification.follow": "{name} fulgte deg", "notification.mention": "{name} nevnte deg", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 37a3a45e7..b52d58970 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -155,7 +155,7 @@ "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", - "errors.unexpected_crash.report_issue": "Report issue", + "errors.unexpected_crash.report_issue": "Senhalar un problèma", "follow_request.authorize": "Acceptar", "follow_request.reject": "Regetar", "getting_started.developers": "Desvelopaires", @@ -178,7 +178,6 @@ "home.column_settings.basic": "Basic", "home.column_settings.show_reblogs": "Mostrar los partatges", "home.column_settings.show_replies": "Mostrar las responsas", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# jorn} other {# jorns}}", "intervals.full.hours": "{number, plural, one {# ora} other {# oras}}", "intervals.full.minutes": "{number, plural, one {# minuta} other {# minutas}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Preferéncias", "navigation_bar.public_timeline": "Flux public global", "navigation_bar.security": "Seguretat", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} a ajustat a sos favorits", "notification.follow": "{name} vos sèc", "notification.mention": "{name} vos a mencionat", @@ -301,7 +299,7 @@ "notifications.group": "{count} notificacions", "poll.closed": "Tampat", "poll.refresh": "Actualizar", - "poll.total_people": "{count, plural, one {# person} other {# people}}", + "poll.total_people": "{count, plural, one {# persona} other {# personas}}", "poll.total_votes": "{count, plural, one {# vòte} other {# vòtes}}", "poll.vote": "Votar", "poll.voted": "You voted for this answer", @@ -316,7 +314,7 @@ "privacy.public.short": "Public", "privacy.unlisted.long": "Mostrar pas dins los fluxes publics", "privacy.unlisted.short": "Pas-listat", - "refresh": "Refresh", + "refresh": "Actualizar", "regeneration_indicator.label": "Cargament…", "regeneration_indicator.sublabel": "Sèm a preparar vòstre flux d’acuèlh !", "relative_time.days": "fa {number}d", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index cd3284c72..29b448cb6 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -4,7 +4,7 @@ "account.block": "Blokuj @{name}", "account.block_domain": "Blokuj wszystko z {domain}", "account.blocked": "Zablokowany(-a)", - "account.cancel_follow_request": "Cancel follow request", + "account.cancel_follow_request": "Zrezygnuj z prośby o możliwość śledzenia", "account.direct": "Wyślij wiadomość bezpośrednią do @{name}", "account.domain_blocked": "Ukryto domenę", "account.edit_profile": "Edytuj profil", @@ -16,7 +16,7 @@ "account.follows.empty": "Ten użytkownik nie śledzi jeszcze nikogo.", "account.follows_you": "Śledzi Cię", "account.hide_reblogs": "Ukryj podbicia od @{name}", - "account.last_status": "Last active", + "account.last_status": "Ostatnia aktywność", "account.link_verified_on": "Własność tego odnośnika została potwierdzona {date}", "account.locked_info": "To konto jest prywatne. Właściciel ręcznie wybiera kto może go śledzić.", "account.media": "Zawartość multimedialna", @@ -25,7 +25,7 @@ "account.mute": "Wycisz @{name}", "account.mute_notifications": "Wycisz powiadomienia o @{name}", "account.muted": "Wyciszony", - "account.never_active": "Never", + "account.never_active": "Nigdy", "account.posts": "Wpisy", "account.posts_with_replies": "Wpisy i odpowiedzi", "account.report": "Zgłoś @{name}", @@ -38,11 +38,11 @@ "account.unfollow": "Przestań śledzić", "account.unmute": "Cofnij wyciszenie @{name}", "account.unmute_notifications": "Cofnij wyciszenie powiadomień od @{name}", - "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.", + "alert.rate_limited.message": "Spróbuj ponownie po {retry_time, time, medium}.", "alert.rate_limited.title": "Rate limited", "alert.unexpected.message": "Wystąpił nieoczekiwany błąd.", "alert.unexpected.title": "O nie!", - "autosuggest_hashtag.per_week": "{count} per week", + "autosuggest_hashtag.per_week": "{count} co tydzień", "boost_modal.combo": "Naciśnij {combo}, aby pominąć to następnym razem", "bundle_column_error.body": "Coś poszło nie tak podczas ładowania tego składnika.", "bundle_column_error.retry": "Spróbuj ponownie", @@ -53,7 +53,7 @@ "column.blocks": "Zablokowani użytkownicy", "column.community": "Lokalna oś czasu", "column.direct": "Wiadomości bezpośrednie", - "column.directory": "Browse profiles", + "column.directory": "Przeglądaj profile", "column.domain_blocks": "Ukryte domeny", "column.favourites": "Ulubione", "column.follow_requests": "Prośby o śledzenie", @@ -107,7 +107,7 @@ "confirmations.logout.confirm": "Wyloguj", "confirmations.logout.message": "Czy na pewno chcesz się wylogować?", "confirmations.mute.confirm": "Wycisz", - "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.", + "confirmations.mute.explanation": "To schowa ich i wspominające ich posty, ale wciąż pozwoli im widzieć twoje posty i śledzić cię.", "confirmations.mute.message": "Czy na pewno chcesz wyciszyć {name}?", "confirmations.redraft.confirm": "Usuń i przeredaguj", "confirmations.redraft.message": "Czy na pewno chcesz usunąć i przeredagować ten wpis? Polubienia i podbicia zostaną utracone, a odpowiedzi do oryginalnego wpisu zostaną osierocone.", @@ -119,10 +119,10 @@ "conversation.mark_as_read": "Oznacz jako przeczytane", "conversation.open": "Zobacz rozmowę", "conversation.with": "Z {names}", - "directory.federated": "From known fediverse", - "directory.local": "From {domain} only", - "directory.new_arrivals": "New arrivals", - "directory.recently_active": "Recently active", + "directory.federated": "Ze znanego fediwersum", + "directory.local": "Tylko z {domain}", + "directory.new_arrivals": "Nowości", + "directory.recently_active": "Ostatnio aktywne", "embed.instructions": "Osadź ten wpis na swojej stronie wklejając poniższy kod.", "embed.preview": "Tak będzie to wyglądać:", "emoji_button.activity": "Aktywność", @@ -156,10 +156,10 @@ "empty_column.mutes": "Nie wyciszyłeś(-aś) jeszcze żadnego użytkownika.", "empty_column.notifications": "Nie masz żadnych powiadomień. Rozpocznij interakcje z innymi użytkownikami.", "empty_column.public": "Tu nic nie ma! Napisz coś publicznie, lub dodaj ludzi z innych serwerów, aby to wyświetlić", - "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", - "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", - "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", - "errors.unexpected_crash.report_issue": "Report issue", + "error.unexpected_crash.explanation": "W związku z błędem w naszym kodzie lub braku kompatybilności przeglądarki, ta strona nie może być poprawnie wyświetlona.", + "error.unexpected_crash.next_steps": "Spróbuj odświeżyć stronę. Jeśli to nie pomoże, wciąż jesteś w stanie używać Mastodona przez inną przeglądarkę lub natywną aplikację.", + "errors.unexpected_crash.copy_stacktrace": "Skopiuj ślad stosu do schowka", + "errors.unexpected_crash.report_issue": "Zgłoś problem", "follow_request.authorize": "Autoryzuj", "follow_request.reject": "Odrzuć", "getting_started.developers": "Dla programistów", @@ -182,7 +182,6 @@ "home.column_settings.basic": "Podstawowe", "home.column_settings.show_reblogs": "Pokazuj podbicia", "home.column_settings.show_replies": "Pokazuj odpowiedzi", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# dzień} few {# dni} many {# dni} other {# dni}}", "intervals.full.hours": "{number, plural, one {# godzina} few {# godziny} many {# godzin} other {# godzin}}", "intervals.full.minutes": "{number, plural, one {# minuta} few {# minuty} many {# minut} other {# minut}}", @@ -248,7 +247,7 @@ "lists.new.title_placeholder": "Wprowadź tytuł listy", "lists.search": "Szukaj wśród osób które śledzisz", "lists.subheading": "Twoje listy", - "load_pending": "{count, plural, one {# new item} other {# new items}}", + "load_pending": "{count, plural, one {# nowy przedmiot} other {nowe przedmioty}}", "loading_indicator.label": "Ładowanie…", "media_gallery.toggle_visible": "Przełącz widoczność", "missing_indicator.label": "Nie znaleziono", @@ -277,7 +276,6 @@ "navigation_bar.preferences": "Preferencje", "navigation_bar.public_timeline": "Globalna oś czasu", "navigation_bar.security": "Bezpieczeństwo", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} dodał(a) Twój wpis do ulubionych", "notification.follow": "{name} zaczął(-ęła) Cię śledzić", "notification.mention": "{name} wspomniał(a) o tobie", @@ -306,7 +304,7 @@ "notifications.group": "{count, number} {count, plural, one {powiadomienie} few {powiadomienia} many {powiadomień} more {powiadomień}}", "poll.closed": "Zamknięte", "poll.refresh": "Odśwież", - "poll.total_people": "{count, plural, one {# person} other {# people}}", + "poll.total_people": "{count, plural, one {# osoba} few {# osoby} many {# osób} other {# osób}}", "poll.total_votes": "{count, plural, one {# głos} few {# głosy} many {# głosów} other {# głosów}}", "poll.vote": "Zagłosuj", "poll.voted": "You voted for this answer", @@ -321,7 +319,7 @@ "privacy.public.short": "Publiczny", "privacy.unlisted.long": "Niewidoczny na publicznych osiach czasu", "privacy.unlisted.short": "Niewidoczny", - "refresh": "Refresh", + "refresh": "Odśwież", "regeneration_indicator.label": "Ładuję…", "regeneration_indicator.sublabel": "Twoja oś czasu jest przygotowywana!", "relative_time.days": "{number} dni", @@ -346,7 +344,7 @@ "search_results.accounts": "Ludzie", "search_results.hashtags": "Hashtagi", "search_results.statuses": "Wpisy", - "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.statuses_fts_disabled": "Szukanie wpisów przy pomocy ich zawartości nie jest włączone na tym serwerze Mastodona.", "search_results.total": "{count, number} {count, plural, one {wynik} few {wyniki} many {wyników} more {wyników}}", "status.admin_account": "Otwórz interfejs moderacyjny dla @{name}", "status.admin_status": "Otwórz ten wpis w interfejsie moderacyjnym", @@ -385,7 +383,7 @@ "status.show_more": "Rozwiń", "status.show_more_all": "Rozwiń wszystkie", "status.show_thread": "Pokaż wątek", - "status.uncached_media_warning": "Not available", + "status.uncached_media_warning": "Niedostępne", "status.unmute_conversation": "Cofnij wyciszenie konwersacji", "status.unpin": "Odepnij z profilu", "suggestions.dismiss": "Odrzuć sugestię", @@ -401,7 +399,7 @@ "time_remaining.moments": "Pozostała chwila", "time_remaining.seconds": "{number, plural, one {Pozostała # sekunda} few {Pozostały # sekundy} many {Pozostało # sekund} other {Pozostało # sekund}}", "trends.count_by_accounts": "{count} {rawCount, plural, one {osoba rozmawia} few {osoby rozmawiają} other {osób rozmawia}} o tym", - "trends.trending_now": "Trending now", + "trends.trending_now": "Popularne teraz", "ui.beforeunload": "Utracisz tworzony wpis, jeżeli opuścisz Mastodona.", "upload_area.title": "Przeciągnij i upuść aby wysłać", "upload_button.label": "Dodaj zawartość multimedialną (JPEG, PNG, GIF, WebM, MP4, MOV)", @@ -410,13 +408,13 @@ "upload_form.description": "Wprowadź opis dla niewidomych i niedowidzących", "upload_form.edit": "Edytuj", "upload_form.undo": "Usuń", - "upload_modal.analyzing_picture": "Analyzing picture…", + "upload_modal.analyzing_picture": "Analizowanie obrazu…", "upload_modal.apply": "Zastosuj", - "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", - "upload_modal.detect_text": "Detect text from picture", - "upload_modal.edit_media": "Edit media", - "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.", - "upload_modal.preview_label": "Preview ({ratio})", + "upload_modal.description_placeholder": "Pchnąć w tę łódź jeża lub ośm skrzyń fig", + "upload_modal.detect_text": "Wykryj tekst ze obrazu", + "upload_modal.edit_media": "Edytuj multimedia", + "upload_modal.hint": "Kliknij lub przeciągnij kółko na podglądzie by wybrać centralny punkt, który zawsze będzie na widoku na miniaturce.", + "upload_modal.preview_label": "Podgląd ({ratio})", "upload_progress.label": "Wysyłanie…", "video.close": "Zamknij film", "video.exit_fullscreen": "Opuść tryb pełnoekranowy", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index bb1477c52..7c6a1fd22 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar compartilhamentos", "home.column_settings.show_replies": "Mostrar as respostas", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# dia} other {# dias}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Preferências", "navigation_bar.public_timeline": "Global", "navigation_bar.security": "Segurança", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} adicionou a sua postagem aos favoritos", "notification.follow": "{name} te seguiu", "notification.mention": "{name} te mencionou", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 2320223e8..859dc1991 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Básico", "home.column_settings.show_reblogs": "Mostrar boosts", "home.column_settings.show_replies": "Mostrar respostas", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# dia} other {# dias}}", "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}", "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Preferências", "navigation_bar.public_timeline": "Cronologia federada", "navigation_bar.security": "Segurança", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} adicionou o teu estado aos favoritos", "notification.follow": "{name} começou a seguir-te", "notification.mention": "{name} mencionou-te", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 5118ce39a..617dbcc0d 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "De bază", "home.column_settings.show_reblogs": "Arată redistribuirile", "home.column_settings.show_replies": "Arată răspunsurile", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Preferințe", "navigation_bar.public_timeline": "Flux global", "navigation_bar.security": "Securitate", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} a adăugat statusul tău la favorite", "notification.follow": "{name} te urmărește", "notification.mention": "{name} te-a menționat", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 2cf216971..4ace1649a 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Основные", "home.column_settings.show_reblogs": "Показывать продвижения", "home.column_settings.show_replies": "Показывать ответы", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# день} few {# дня} other {# дней}}", "intervals.full.hours": "{number, plural, one {# час} few {# часа} other {# часов}}", "intervals.full.minutes": "{number, plural, one {# минута} few {# минуты} other {# минут}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Настройки", "navigation_bar.public_timeline": "Глобальная лента", "navigation_bar.security": "Безопасность", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} понравился Ваш статус", "notification.follow": "{name} подписался (-лась) на вас", "notification.mention": "{name} упомянул(а) вас", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 946ccfa26..5d2726309 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -154,7 +154,7 @@ "empty_column.public": "Ešte tu nič nie je. Napíš niečo verejne, alebo začni sledovať užívateľov z iných serverov, aby tu niečo pribudlo", "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", - "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", + "errors.unexpected_crash.copy_stacktrace": "Skopíruj stacktrace do schránky", "errors.unexpected_crash.report_issue": "Nahlás problém", "follow_request.authorize": "Povoľ prístup", "follow_request.reject": "Odmietni", @@ -178,7 +178,6 @@ "home.column_settings.basic": "Základné", "home.column_settings.show_reblogs": "Zobraziť povýšené", "home.column_settings.show_replies": "Ukázať odpovede", - "home.column_settings.update_live": "Aktualizuj v reálnom čase", "intervals.full.days": "{number, plural, one {# deň} few {# dní} many {# dní} other {# dní}}", "intervals.full.hours": "{number, plural, one {# hodina} few {# hodín} many {# hodín} other {# hodín}}", "intervals.full.minutes": "{number, plural, one {# minúta} few {# minút} many {# minút} other {# minút}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Voľby", "navigation_bar.public_timeline": "Federovaná časová os", "navigation_bar.security": "Zabezbečenie", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} si obľúbil/a tvoj príspevok", "notification.follow": "{name} ťa začal/a následovať", "notification.mention": "{name} ťa spomenul/a", @@ -301,7 +299,7 @@ "notifications.group": "{count} oboznámení", "poll.closed": "Uzatvorená", "poll.refresh": "Občerstvi", - "poll.total_people": "{count, plural, one {# person} other {# people}}", + "poll.total_people": "{count, plural, one {# človek} few {# ľudia} other {# ľudí}}", "poll.total_votes": "{count, plural, one {# hlas} few {# hlasov} many {# hlasov} other {# hlasov}}", "poll.vote": "Hlasuj", "poll.voted": "Hlasoval/a si za túto voľbu", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index d9d032891..65e275102 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Osnovno", "home.column_settings.show_reblogs": "Pokaži spodbude", "home.column_settings.show_replies": "Pokaži odgovore", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# dan} two {# dni} few {# dni} other {# dni}}", "intervals.full.hours": "{number, plural, one {# ura} two {# uri} few {# ure} other {# ur}}", "intervals.full.minutes": "{number, plural, one {# minuta} two {# minuti} few {# minute} other {# minut}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Nastavitve", "navigation_bar.public_timeline": "Združena časovnica", "navigation_bar.security": "Varnost", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} je vzljubil/a vaš status", "notification.follow": "{name} vam sledi", "notification.mention": "{name} vas je omenil/a", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index e97ab0155..f58466d87 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Bazë", "home.column_settings.show_reblogs": "Shfaq përforcime", "home.column_settings.show_replies": "Shfaq përgjigje", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Parapëlqime", "navigation_bar.public_timeline": "Rrjedhë kohore të federuarish", "navigation_bar.security": "Siguri", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} parapëlqeu gjendjen tuaj", "notification.follow": "{name} zuri t’ju ndjekë", "notification.mention": "{name} ju ka përmendur", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 77ec96d97..59b8459ae 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Osnovno", "home.column_settings.show_reblogs": "Prikaži i podržavanja", "home.column_settings.show_replies": "Prikaži odgovore", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Podešavanja", "navigation_bar.public_timeline": "Federisana lajna", "navigation_bar.security": "Security", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} je stavio Vaš status kao omiljeni", "notification.follow": "{name} Vas je zapratio", "notification.mention": "{name} Vas je pomenuo", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index a84e3c610..d222e774d 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Основно", "home.column_settings.show_reblogs": "Прикажи и подржавања", "home.column_settings.show_replies": "Прикажи одговоре", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Подешавања", "navigation_bar.public_timeline": "Здружена временска линија", "navigation_bar.security": "Безбедност", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} је ставио/ла Ваш статус као омиљени", "notification.follow": "{name} Вас је запратио/ла", "notification.mention": "{name} Вас је поменуо/ла", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 4e305eeff..e8c1c40c2 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -178,24 +178,23 @@ "home.column_settings.basic": "Grundläggande", "home.column_settings.show_reblogs": "Visa knuffar", "home.column_settings.show_replies": "Visa svar", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# dag} other {# dagar}}", "intervals.full.hours": "{hours, plural, one {# timme} other {# timmar}}", "intervals.full.minutes": "{minutes, plural, one {1 minut} other {# minuter}}", "introduction.federation.action": "Nästa", "introduction.federation.federated.headline": "Federerad", - "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.", + "introduction.federation.federated.text": "Publika inlägg från andra servrar i servernätverket visas i den förenade tidslinjen.", "introduction.federation.home.headline": "Hem", - "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!", + "introduction.federation.home.text": "Inlägg från personer du följer kommer att visas i din hemtidlinje. Du kan följa vem du vill på vald server!", "introduction.federation.local.headline": "Lokal", - "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.", + "introduction.federation.local.text": "Publika inlägg från personer på samma server som du kommer att visas på den lokala tidslinjen.", "introduction.interactions.action": "Slutför introduktionsguide!", "introduction.interactions.favourite.headline": "Favorit", - "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.", + "introduction.interactions.favourite.text": "Du kan spara en tut till senare, och visa författaren att du gillade den genom att göra den till favorit.", "introduction.interactions.reblog.headline": "Knuffa", - "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.", + "introduction.interactions.reblog.text": "Du kan dela andra personers tutar med dina följare genom att knuffa dem.", "introduction.interactions.reply.headline": "Svara", - "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.", + "introduction.interactions.reply.text": "Du kan besvara andra personers och dina egna tutar, vilket kommer att koppla ihop dem i en konversation.", "introduction.welcome.action": "Sätt igång!", "introduction.welcome.headline": "Första stegen", "introduction.welcome.text": "Välkommen till fediverse! Om några ögonblick kommer du kunna sända ut meddelanden och prata med dina vänner över en mängd servrar. Men den här servern, {domain}, är speciell — den är hem åt din profil, så kom ihåg vad den heter.", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Inställningar", "navigation_bar.public_timeline": "Förenad tidslinje", "navigation_bar.security": "Säkerhet", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} favoriserade din status", "notification.follow": "{name} följer dig", "notification.mention": "{name} nämnde dig", @@ -320,10 +318,10 @@ "regeneration_indicator.label": "Laddar…", "regeneration_indicator.sublabel": "Ditt hemmaflöde förbereds!", "relative_time.days": "{number}d", - "relative_time.hours": "{number}h", + "relative_time.hours": "{number}tim", "relative_time.just_now": "nu", - "relative_time.minutes": "{number}m", - "relative_time.seconds": "{number}s", + "relative_time.minutes": "{number}min", + "relative_time.seconds": "{number}sek", "reply_indicator.cancel": "Ångra", "report.forward": "Vidarebefordra till {target}", "report.forward_hint": "Kontot är från en annan server. Skicka även en anonymiserad kopia av anmälan dit?", @@ -341,16 +339,16 @@ "search_results.accounts": "Människor", "search_results.hashtags": "Hashtaggar", "search_results.statuses": "Toots", - "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "search_results.statuses_fts_disabled": "Att söka toots med deras innehåll är inte möjligt på denna Mastodon-server.", "search_results.total": "{count, number} {count, plural, ett {result} andra {results}}", - "status.admin_account": "Open moderation interface for @{name}", - "status.admin_status": "Open this status in the moderation interface", + "status.admin_account": "Öppet modereringsgränssnitt för @{name}", + "status.admin_status": "Öppna denna status i modereringsgränssnittet", "status.block": "Blockera @{name}", "status.cancel_reblog_private": "Ta bort knuff", "status.cannot_reblog": "Detta inlägg kan inte knuffas", "status.copy": "Kopiera länk till status", "status.delete": "Ta bort", - "status.detailed_status": "Detailed conversation view", + "status.detailed_status": "Detaljerad samtalsvy", "status.direct": "Direktmeddela @{name}", "status.embed": "Bädda in", "status.favourite": "Favorit", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 3e019f0cb..82b5fff9e 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "அடிப்படையான", "home.column_settings.show_reblogs": "காட்டு boosts", "home.column_settings.show_replies": "பதில்களைக் காண்பி", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} மற்ற {# days}}", "intervals.full.hours": "{number, plural, one {# hour} மற்ற {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} மற்ற {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "விருப்பங்கள்", "navigation_bar.public_timeline": "கூட்டாட்சி காலக்கெடு", "navigation_bar.security": "பத்திரம்", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} ஆர்வம் கொண்டவர், உங்கள் நிலை", "notification.follow": "{name} நீங்கள் தொடர்ந்து வந்தீர்கள்", "notification.mention": "{name} நீங்கள் குறிப்பிட்டுள்ளீர்கள்", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 720798d13..3cfbc5786 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "ప్రాథమిక", "home.column_settings.show_reblogs": "బూస్ట్ లను చూపించు", "home.column_settings.show_replies": "ప్రత్యుత్తరాలను చూపించు", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "ప్రాధాన్యతలు", "navigation_bar.public_timeline": "సమాఖ్య కాలక్రమం", "navigation_bar.security": "భద్రత", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} మీ స్టేటస్ ను ఇష్టపడ్డారు", "notification.follow": "{name} మిమ్మల్ని అనుసరిస్తున్నారు", "notification.mention": "{name} మిమ్మల్ని ప్రస్తావించారు", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index aeeebb090..a9278fdd0 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -155,7 +155,7 @@ "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard", - "errors.unexpected_crash.report_issue": "Report issue", + "errors.unexpected_crash.report_issue": "รายงานปัญหา", "follow_request.authorize": "อนุญาต", "follow_request.reject": "ปฏิเสธ", "getting_started.developers": "นักพัฒนา", @@ -163,7 +163,7 @@ "getting_started.documentation": "เอกสารประกอบ", "getting_started.heading": "เริ่มต้นใช้งาน", "getting_started.invite": "เชิญผู้คน", - "getting_started.open_source_notice": "Mastodon เป็นซอฟต์แวร์เปิดต้นฉบับ คุณสามารถมีส่วนร่วมหรือรายงานปัญหาใน GitHub ที่ {github}", + "getting_started.open_source_notice": "Mastodon เป็นซอฟต์แวร์เปิดต้นฉบับ คุณสามารถมีส่วนร่วมหรือรายงานปัญหาที่ GitHub ที่ {github}", "getting_started.security": "ความปลอดภัย", "getting_started.terms": "เงื่อนไขการให้บริการ", "hashtag.column_header.tag_mode.all": "และ {additional}", @@ -178,7 +178,6 @@ "home.column_settings.basic": "พื้นฐาน", "home.column_settings.show_reblogs": "แสดงการดัน", "home.column_settings.show_replies": "แสดงการตอบกลับ", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, other {# วัน}}", "intervals.full.hours": "{number, plural, other {# ชั่วโมง}}", "intervals.full.minutes": "{number, plural, other {# นาที}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "การกำหนดลักษณะ", "navigation_bar.public_timeline": "เส้นเวลาที่ติดต่อกับภายนอก", "navigation_bar.security": "ความปลอดภัย", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} ได้ชื่นชอบสถานะของคุณ", "notification.follow": "{name} ได้ติดตามคุณ", "notification.mention": "{name} ได้กล่าวถึงคุณ", @@ -316,7 +314,7 @@ "privacy.public.short": "สาธารณะ", "privacy.unlisted.long": "ไม่โพสต์ไปยังเส้นเวลาสาธารณะ", "privacy.unlisted.short": "ไม่อยู่ในรายการ", - "refresh": "Refresh", + "refresh": "รีเฟรช", "regeneration_indicator.label": "กำลังโหลด…", "regeneration_indicator.sublabel": "กำลังเตรียมฟีดหน้าแรกของคุณ!", "relative_time.days": "{number} วัน", @@ -396,7 +394,7 @@ "time_remaining.moments": "ช่วงเวลาที่เหลือ", "time_remaining.seconds": "เหลืออีก {number, plural, other {# วินาที}}", "trends.count_by_accounts": "{count} {rawCount, plural, other {คน}}กำลังคุย", - "trends.trending_now": "แนวโน้มตอนนี้", + "trends.trending_now": "กำลังนิยม", "ui.beforeunload": "แบบร่างของคุณจะหายไปหากคุณออกจาก Mastodon", "upload_area.title": "ลากแล้วปล่อยเพื่ออัปโหลด", "upload_button.label": "เพิ่มสื่อ (JPEG, PNG, GIF, WebM, MP4, MOV)", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 364b98c89..5ceefa182 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "Temel", "home.column_settings.show_reblogs": "Boost edilenleri göster", "home.column_settings.show_replies": "Cevapları göster", - "home.column_settings.update_live": "Gerçek zamanlı güncelle", "intervals.full.days": "{number, plural, one {# gün} other {# gün}}", "intervals.full.hours": "{number, plural, one {# saat} other {# saat}}", "intervals.full.minutes": "{number, plural, one {# dakika} other {# dakika}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Tercihler", "navigation_bar.public_timeline": "Federe zaman tüneli", "navigation_bar.security": "Güvenlik", - "notification.and_n_others": "ve {count, plural, one {# diğeri} other {# diğerleri}}", "notification.favourite": "{name} senin durumunu favorilere ekledi", "notification.follow": "{name} seni takip ediyor", "notification.mention": "{name} senden bahsetti", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index ec56c1484..6501c0283 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -111,9 +111,9 @@ "confirmations.reply.message": "Поточна відповідь перезапише повідомлення, яке ви зараз пишете. Ви впевнені, що хочете продовжити?", "confirmations.unfollow.confirm": "Відписатися", "confirmations.unfollow.message": "Ви впевнені, що хочете відписатися від {name}?", - "conversation.delete": "Delete conversation", - "conversation.mark_as_read": "Mark as read", - "conversation.open": "View conversation", + "conversation.delete": "Видалити цю бесіду", + "conversation.mark_as_read": "Позначити як прочитане", + "conversation.open": "Переглянути бесіду", "conversation.with": "With {names}", "directory.federated": "З відомого федесвіту", "directory.local": "Тільки з домену {domain}", @@ -178,7 +178,6 @@ "home.column_settings.basic": "Основні", "home.column_settings.show_reblogs": "Показувати передмухи", "home.column_settings.show_replies": "Показувати відповіді", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# день} few {# дні} other {# днів}}", "intervals.full.hours": "{number, plural, one {# година} few {# години} other {# годин}}", "intervals.full.minutes": "{number, plural, one {# хвилина} few {# хвилини} other {# хвилин}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "Налаштування", "navigation_bar.public_timeline": "Глобальна стрічка", "navigation_bar.security": "Безпека", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} вподобав(-ла) ваш допис", "notification.follow": "{name} підписався(-лась) на Вас", "notification.mention": "{name} згадав(-ла) Вас", @@ -316,7 +314,7 @@ "privacy.public.short": "Публічно", "privacy.unlisted.long": "Не показувати у публічних стрічках", "privacy.unlisted.short": "Прихований", - "refresh": "Refresh", + "refresh": "Оновити", "regeneration_indicator.label": "Завантаження…", "regeneration_indicator.sublabel": "Ваша домашня стрічка готується!", "relative_time.days": "{number}д", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 402f7acae..2804b2724 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "基本设置", "home.column_settings.show_reblogs": "显示转嘟", "home.column_settings.show_replies": "显示回复", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number} 天", "intervals.full.hours": "{number} 小时", "intervals.full.minutes": "{number} 分钟", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "首选项", "navigation_bar.public_timeline": "跨站公共时间轴", "navigation_bar.security": "安全", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} 收藏了你的嘟文", "notification.follow": "{name} 开始关注你", "notification.mention": "{name} 提及了你", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 9e07e7995..3ca9f0e2e 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "基本", "home.column_settings.show_reblogs": "顯示被轉推的文章", "home.column_settings.show_replies": "顯示回應文章", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# day} other {# days}}", "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}", "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "偏好設定", "navigation_bar.public_timeline": "跨站時間軸", "navigation_bar.security": "安全", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} 收藏了你的文章", "notification.follow": "{name} 開始關注你", "notification.mention": "{name} 提及你", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index deb5a3e27..136573381 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -178,7 +178,6 @@ "home.column_settings.basic": "基本", "home.column_settings.show_reblogs": "顯示轉嘟", "home.column_settings.show_replies": "顯示回覆", - "home.column_settings.update_live": "Update in real-time", "intervals.full.days": "{number, plural, one {# 天} other {# 天}}", "intervals.full.hours": "{number, plural, one {# 小時} other {# 小時}}", "intervals.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}", @@ -272,7 +271,6 @@ "navigation_bar.preferences": "偏好設定", "navigation_bar.public_timeline": "聯邦時間軸", "navigation_bar.security": "安全性", - "notification.and_n_others": "and {count, plural, one {# other} other {# others}}", "notification.favourite": "{name} 把你的嘟文加入了最愛", "notification.follow": "{name} 關注了你", "notification.mention": "{name} 提到了你", diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index eaccb008c..64a6ccf17 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -3127,37 +3127,27 @@ a.status-card.compact:hover { cursor: default; display: flex; flex: 1 1 auto; + flex-direction: column; align-items: center; justify-content: center; padding: 20px; - & > div { - width: 100%; - background: transparent; - padding-top: 0; - } - &__figure { - background: url('~images/elephant_ui_working.svg') no-repeat center 0; - width: 100%; - height: 160px; - background-size: contain; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); + &, + img { + display: block; + width: auto; + height: 160px; + margin: 0; + } } - &.missing-indicator { + &--without-header { padding-top: 20px + 48px; - - .regeneration-indicator__figure { - background-image: url('~images/elephant_ui_disappointed.svg'); - } } &__label { - margin-top: 200px; + margin-top: 30px; strong { display: block; @@ -6102,7 +6092,8 @@ noscript { background: $base-shadow-color; img, - video { + video, + canvas { display: block; max-height: 80vh; width: 100%; diff --git a/app/javascript/styles/mastodon/introduction.scss b/app/javascript/styles/mastodon/introduction.scss index 222d8f60e..b44ae7306 100644 --- a/app/javascript/styles/mastodon/introduction.scss +++ b/app/javascript/styles/mastodon/introduction.scss @@ -3,9 +3,10 @@ flex-direction: column; justify-content: center; align-items: center; + height: 100vh; + background: $ui-base-color; @media screen and (max-width: 920px) { - background: darken($ui-base-color, 8%); display: block !important; } diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 4587664b8..d109d991c 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -19,7 +19,7 @@ class FeedManager def filter?(timeline_type, status, receiver_id) if timeline_type == :home - filter_from_home?(status, receiver_id) + filter_from_home?(status, receiver_id, build_crutches(receiver_id, [status])) elsif timeline_type == :mentions filter_from_mentions?(status, receiver_id) elsif timeline_type == :direct @@ -31,6 +31,7 @@ class FeedManager def push_to_home(account, status) return false unless add_to_feed(:home, account.id, status, account.user&.aggregates_reblogs?) + trim(:home, account.id) PushUpdateWorker.perform_async(account.id, status.id, "timeline:#{account.id}") if push_update_required?("timeline:#{account.id}") true @@ -38,6 +39,7 @@ class FeedManager def unpush_from_home(account, status) return false unless remove_from_feed(:home, account.id, status, account.user&.aggregates_reblogs?) + redis.publish("timeline:#{account.id}", Oj.dump(event: :delete, payload: status.id.to_s)) true end @@ -49,7 +51,9 @@ class FeedManager should_filter &&= !(list.show_list_replies? && ListAccount.where(list_id: list.id, account_id: status.in_reply_to_account_id).exists?) return false if should_filter end + return false unless add_to_feed(:list, list.id, status, list.account.user&.aggregates_reblogs?) + trim(:list, list.id) PushUpdateWorker.perform_async(list.account_id, status.id, "timeline:list:#{list.id}") if push_update_required?("timeline:list:#{list.id}") true @@ -57,6 +61,7 @@ class FeedManager def unpush_from_list(list, status) return false unless remove_from_feed(:list, list.id, status, list.account.user&.aggregates_reblogs?) + redis.publish("timeline:list:#{list.id}", Oj.dump(event: :delete, payload: status.id.to_s)) true end @@ -100,16 +105,21 @@ class FeedManager def merge_into_timeline(from_account, into_account) timeline_key = key(:home, into_account.id) - query = from_account.statuses.limit(FeedManager::MAX_ITEMS / 4) + aggregate = into_account.user&.aggregates_reblogs? + query = from_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, reblog: :account).limit(FeedManager::MAX_ITEMS / 4) if redis.zcard(timeline_key) >= FeedManager::MAX_ITEMS / 4 - oldest_home_score = redis.zrange(timeline_key, 0, 0, with_scores: true)&.first&.last&.to_i || 0 + oldest_home_score = redis.zrange(timeline_key, 0, 0, with_scores: true).first.last.to_i query = query.where('id > ?', oldest_home_score) end - query.each do |status| - next if status.direct_visibility? || status.limited_visibility? || filter?(:home, status, into_account) - add_to_feed(:home, into_account.id, status, into_account.user&.aggregates_reblogs?) + statuses = query.to_a + crutches = build_crutches(into_account.id, statuses) + + statuses.each do |status| + next if filter_from_home?(status, into_account, crutches) + + add_to_feed(:home, into_account.id, status, aggregate) end trim(:home, into_account.id) @@ -135,24 +145,35 @@ class FeedManager end def populate_feed(account) - added = 0 - limit = FeedManager::MAX_ITEMS / 2 - max_id = nil + limit = FeedManager::MAX_ITEMS / 2 + aggregate = account.user&.aggregates_reblogs? + timeline_key = key(:home, account.id) - loop do - statuses = Status.as_home_timeline(account) - .paginate_by_max_id(limit, max_id) + account.statuses.where.not(visibility: :direct).limit(limit).each do |status| + add_to_feed(:home, account.id, status, aggregate) + end - break if statuses.empty? + account.following.includes(:account_stat).find_each do |target_account| + if redis.zcard(timeline_key) >= limit + oldest_home_score = redis.zrange(timeline_key, 0, 0, with_scores: true).first.last.to_i + last_status_score = Mastodon::Snowflake.id_at(account.last_status_at) - statuses.each do |status| - next if filter_from_home?(status, account) - added += 1 if add_to_feed(:home, account.id, status, account.user&.aggregates_reblogs?) + # If the feed is full and this account has not posted more recently + # than the last item on the feed, then we can skip the whole account + # because none of its statuses would stay on the feed anyway + next if last_status_score < oldest_home_score end - break unless added.zero? + statuses = target_account.statuses.where(visibility: [:public, :unlisted, :private]).includes(:preloadable_poll, reblog: :account).limit(limit) + crutches = build_crutches(account.id, statuses) - max_id = statuses.last.id + statuses.each do |status| + next if filter_from_home?(status, account, crutches) + + add_to_feed(:home, account.id, status, aggregate) + end + + trim(:home, account.id) end end @@ -188,31 +209,33 @@ class FeedManager (context == :home ? Mute.where(account_id: receiver_id, target_account_id: account_ids).any? : Mute.where(account_id: receiver_id, target_account_id: account_ids, hide_notifications: true).any?) end - def filter_from_home?(status, receiver_id) + def filter_from_home?(status, receiver_id, crutches) return false if receiver_id == status.account_id return true if status.reply? && (status.in_reply_to_id.nil? || status.in_reply_to_account_id.nil?) return true if phrase_filtered?(status, receiver_id, :home) - check_for_blocks = status.active_mentions.pluck(:account_id) + check_for_blocks = crutches[:active_mentions][status.id] || [] check_for_blocks.concat([status.account_id]) if status.reblog? check_for_blocks.concat([status.reblog.account_id]) - check_for_blocks.concat(status.reblog.active_mentions.pluck(:account_id)) + check_for_blocks.concat(crutches[:active_mentions][status.reblog_of_id] || []) end - return true if blocks_or_mutes?(receiver_id, check_for_blocks, :home) + return true if check_for_blocks.any? { |target_account_id| crutches[:blocking][target_account_id] || crutches[:muting][target_account_id] } if status.reply? && !status.in_reply_to_account_id.nil? # Filter out if it's a reply - should_filter = !Follow.where(account_id: receiver_id, target_account_id: status.in_reply_to_account_id).exists? # and I'm not following the person it's a reply to + should_filter = !crutches[:following][status.in_reply_to_account_id] # and I'm not following the person it's a reply to should_filter &&= receiver_id != status.in_reply_to_account_id # and it's not a reply to me should_filter &&= status.account_id != status.in_reply_to_account_id # and it's not a self-reply - return should_filter + + return !!should_filter elsif status.reblog? # Filter out a reblog - should_filter = Follow.where(account_id: receiver_id, target_account_id: status.account_id, show_reblogs: false).exists? # if the reblogger's reblogs are suppressed - should_filter ||= Block.where(account_id: status.reblog.account_id, target_account_id: receiver_id).exists? # or if the author of the reblogged status is blocking me - should_filter ||= AccountDomainBlock.where(account_id: receiver_id, domain: status.reblog.account.domain).exists? # or the author's domain is blocked - return should_filter + should_filter = crutches[:hiding_reblogs][status.account_id] # if the reblogger's reblogs are suppressed + should_filter ||= crutches[:blocked_by][status.reblog.account_id] # or if the author of the reblogged status is blocking me + should_filter ||= crutches[:domain_blocking][status.reblog.account.domain] # or the author's domain is blocked + + return !!should_filter end false @@ -349,4 +372,31 @@ class FeedManager redis.zrem(timeline_key, status.id) end + + def build_crutches(receiver_id, statuses) + crutches = {} + + crutches[:active_mentions] = Mention.active.where(status_id: statuses.flat_map { |s| [s.id, s.reblog_of_id] }.compact).pluck(:status_id, :account_id).each_with_object({}) { |(id, account_id), mapping| (mapping[id] ||= []).push(account_id) } + + check_for_blocks = statuses.flat_map do |s| + arr = crutches[:active_mentions][s.id] || [] + arr.concat([s.account_id]) + + if s.reblog? + arr.concat([s.reblog.account_id]) + arr.concat(crutches[:active_mentions][s.reblog_of_id] || []) + end + + arr + end + + crutches[:following] = Follow.where(account_id: receiver_id, target_account_id: statuses.map(&:in_reply_to_account_id).compact).pluck(:target_account_id).each_with_object({}) { |id, mapping| mapping[id] = true } + crutches[:hiding_reblogs] = Follow.where(account_id: receiver_id, target_account_id: statuses.map { |s| s.account_id if s.reblog? }.compact, show_reblogs: false).pluck(:target_account_id).each_with_object({}) { |id, mapping| mapping[id] = true } + crutches[:blocking] = Block.where(account_id: receiver_id, target_account_id: check_for_blocks).pluck(:target_account_id).each_with_object({}) { |id, mapping| mapping[id] = true } + crutches[:muting] = Mute.where(account_id: receiver_id, target_account_id: check_for_blocks).pluck(:target_account_id).each_with_object({}) { |id, mapping| mapping[id] = true } + crutches[:domain_blocking] = AccountDomainBlock.where(account_id: receiver_id, domain: statuses.map { |s| s.reblog&.account&.domain }.compact).pluck(:domain).each_with_object({}) { |domain, mapping| mapping[domain] = true } + crutches[:blocked_by] = Block.where(target_account_id: receiver_id, account_id: statuses.map { |s| s.reblog&.account_id }.compact).pluck(:account_id).each_with_object({}) { |id, mapping| mapping[id] = true } + + crutches + end end diff --git a/app/lib/spam_check.rb b/app/lib/spam_check.rb index 441697364..5b40514fd 100644 --- a/app/lib/spam_check.rb +++ b/app/lib/spam_check.rb @@ -44,7 +44,6 @@ class SpamCheck end def flag! - auto_silence_account! auto_report_status! end @@ -134,17 +133,13 @@ class SpamCheck text.gsub(/\s+/, ' ').strip end - def auto_silence_account! - @account.silence! - end - def auto_report_status! status_ids = Status.where(visibility: %i(public unlisted)).where(id: matching_status_ids).pluck(:id) + [@status.id] if @status.distributable? - ReportService.new.call(Account.representative, @account, status_ids: status_ids, comment: I18n.t('spam_check.spam_detected_and_silenced')) + ReportService.new.call(Account.representative, @account, status_ids: status_ids, comment: I18n.t('spam_check.spam_detected')) end def already_flagged? - @account.silenced? + @account.silenced? || @account.targeted_reports.unresolved.where(account_id: -99).exists? end def trusted? diff --git a/app/models/account.rb b/app/models/account.rb index 52ce9a676..db2eb8993 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -202,7 +202,7 @@ class Account < ApplicationRecord end def unsilence! - update!(silenced_at: nil, trust_level: trust_level == TRUST_LEVELS[:untrusted] ? TRUST_LEVELS[:trusted] : trust_level) + update!(silenced_at: nil) end def suspended? @@ -312,10 +312,9 @@ class Account < ApplicationRecord def save_with_optional_media! save! rescue ActiveRecord::RecordInvalid - self.avatar = nil - self.header = nil - self[:avatar_remote_url] = '' - self[:header_remote_url] = '' + self.avatar = nil + self.header = nil + save! end diff --git a/app/models/admin/account_action.rb b/app/models/admin/account_action.rb index b30a82369..e9da003a3 100644 --- a/app/models/admin/account_action.rb +++ b/app/models/admin/account_action.rb @@ -62,6 +62,8 @@ class Admin::AccountAction def process_action! case type + when 'none' + handle_resolve! when 'disable' handle_disable! when 'silence' @@ -103,6 +105,16 @@ class Admin::AccountAction end end + def handle_resolve! + if with_report? && report.account_id == -99 && target_account.trust_level == Account::TRUST_LEVELS[:untrusted] + # This is an automated report and it is being dismissed, so it's + # a false positive, in which case update the account's trust level + # to prevent further spam checks + + target_account.update(trust_level: Account::TRUST_LEVELS[:trusted]) + end + end + def handle_disable! authorize(target_account.user, :disable?) log_action(:disable, target_account.user) diff --git a/app/models/concerns/remotable.rb b/app/models/concerns/remotable.rb index 082302619..b7a476c87 100644 --- a/app/models/concerns/remotable.rb +++ b/app/models/concerns/remotable.rb @@ -18,7 +18,7 @@ module Remotable return end - return if !%w(http https).include?(parsed_url.scheme) || parsed_url.host.blank? || self[attribute_name] == url + return if !%w(http https).include?(parsed_url.scheme) || parsed_url.host.blank? || (self[attribute_name] == url && send("#{attachment_name}_file_name").present?) begin Request.new(:get, url).perform do |response| diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb index f1ee38325..3398af169 100644 --- a/app/models/form/admin_settings.rb +++ b/app/models/form/admin_settings.rb @@ -36,6 +36,7 @@ class Form::AdminSettings show_replies_in_public_timelines spam_check_enabled trends + trendable_by_default show_domain_blocks show_domain_blocks_rationale noindex @@ -56,6 +57,7 @@ class Form::AdminSettings show_replies_in_public_timelines spam_check_enabled trends + trendable_by_default noindex ).freeze diff --git a/app/models/home_feed.rb b/app/models/home_feed.rb index ba7564983..1fd506138 100644 --- a/app/models/home_feed.rb +++ b/app/models/home_feed.rb @@ -7,19 +7,7 @@ class HomeFeed < Feed @account = account end - def get(limit, max_id = nil, since_id = nil, min_id = nil) - if redis.exists("account:#{@account.id}:regeneration") - from_database(limit, max_id, since_id, min_id) - else - super - end - end - - private - - def from_database(limit, max_id, since_id, min_id) - Status.as_home_timeline(@account) - .paginate_by_id(limit, max_id: max_id, since_id: since_id, min_id: min_id) - .reject { |status| FeedManager.instance.filter?(:home, status, @account.id) } + def regenerating? + redis.exists("account:#{@id}:regeneration") end end diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index 4f06a40cf..056ed816e 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -57,6 +57,7 @@ class MediaAttachment < ApplicationRecord small: { convert_options: { output: { + 'loglevel' => 'fatal', vf: 'scale=\'min(400\, iw):min(400\, ih)\':force_original_aspect_ratio=decrease', }, }, @@ -70,6 +71,7 @@ class MediaAttachment < ApplicationRecord keep_same_format: true, convert_options: { output: { + 'loglevel' => 'fatal', 'map_metadata' => '-1', 'c:v' => 'copy', 'c:a' => 'copy', @@ -84,6 +86,7 @@ class MediaAttachment < ApplicationRecord content_type: 'audio/mpeg', convert_options: { output: { + 'loglevel' => 'fatal', 'q:a' => 2, }, }, diff --git a/app/models/status.rb b/app/models/status.rb index 7ac0fb5bd..c189d19bf 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -291,10 +291,6 @@ class Status < ApplicationRecord where(language: nil).or where(language: account.chosen_languages) end - def as_home_timeline(account) - where(account: [account] + account.following).where(visibility: [:public, :unlisted, :private]) - end - def as_direct_timeline(account, limit = 20, max_id = nil, since_id = nil, cache_ids = false) # direct timeline is mix of direct message from_me and to_me. # 2 queries are executed with pagination. diff --git a/app/models/tag.rb b/app/models/tag.rb index 82786daa8..d3a7e1e6d 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -37,6 +37,7 @@ class Tag < ApplicationRecord scope :pending_review, -> { unreviewed.where.not(requested_review_at: nil) } scope :usable, -> { where(usable: [true, nil]) } scope :listable, -> { where(listable: [true, nil]) } + scope :trendable, -> { Setting.trendable_by_default ? where(trendable: [true, nil]) : where(trendable: true) } scope :discoverable, -> { listable.joins(:account_tag_stat).where(AccountTagStat.arel_table[:accounts_count].gt(0)).order(Arel.sql('account_tag_stats.accounts_count desc')) } scope :most_used, ->(account) { joins(:statuses).where(statuses: { account: account }).group(:id).order(Arel.sql('count(*) desc')) } scope :matches_name, ->(value) { where(arel_table[:name].matches("#{value}%")) } @@ -76,7 +77,7 @@ class Tag < ApplicationRecord alias listable? listable def trendable - boolean_with_default('trendable', false) + boolean_with_default('trendable', Setting.trendable_by_default) end alias trendable? trendable diff --git a/app/models/trending_tags.rb b/app/models/trending_tags.rb index 8cdade42d..c69f6d3c3 100644 --- a/app/models/trending_tags.rb +++ b/app/models/trending_tags.rb @@ -90,7 +90,7 @@ class TrendingTags tag_ids = redis.zrevrange(KEY, 0, LIMIT - 1).map(&:to_i) tags = Tag.where(id: tag_ids) - tags = tags.where(trendable: true) if filtered + tags = tags.trendable if filtered tags = tags.each_with_object({}) { |tag, h| h[tag.id] = tag } tag_ids.map { |tag_id| tags[tag_id] }.compact.take(limit) diff --git a/app/services/hashtag_query_service.rb b/app/services/hashtag_query_service.rb index 282821710..196de0639 100644 --- a/app/services/hashtag_query_service.rb +++ b/app/services/hashtag_query_service.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class HashtagQueryService < BaseService + LIMIT_PER_MODE = 4 + def call(tag, params, account = nil, local = false) tags = tags_for(Array(tag.name) | Array(params[:any])).pluck(:id) all = tags_for(params[:all]) @@ -15,6 +17,6 @@ class HashtagQueryService < BaseService private def tags_for(names) - Tag.matching_name(names) if names.presence + Tag.matching_name(Array(names).take(LIMIT_PER_MODE)) if names.present? end end diff --git a/app/validators/poll_validator.rb b/app/validators/poll_validator.rb index 9d7321cad..8259a62e5 100644 --- a/app/validators/poll_validator.rb +++ b/app/validators/poll_validator.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true class PollValidator < ActiveModel::Validator - MAX_OPTIONS = 4 - MAX_OPTION_CHARS = 25 + MAX_OPTIONS = 5 + MAX_OPTION_CHARS = 100 MAX_EXPIRATION = 1.month.freeze MIN_EXPIRATION = 5.minutes.freeze diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml index f24f4e195..80f4cd828 100644 --- a/app/views/about/show.html.haml +++ b/app/views/about/show.html.haml @@ -52,13 +52,12 @@ .hero-widget__img = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.jpg'), alt: @instance_presenter.site_title - - if @instance_presenter.site_short_description.present? - .hero-widget__text - %p - = @instance_presenter.site_short_description.html_safe.presence - = link_to about_more_path do - = t('about.learn_more') - = fa_icon 'angle-double-right' + .hero-widget__text + %p + = @instance_presenter.site_short_description.html_safe.presence || t('about.about_mastodon_html') + = link_to about_more_path do + = t('about.learn_more') + = fa_icon 'angle-double-right' .hero-widget__footer .hero-widget__footer__column diff --git a/app/views/admin/custom_emojis/_custom_emoji.html.haml b/app/views/admin/custom_emojis/_custom_emoji.html.haml index 2103b0fa7..526c844e9 100644 --- a/app/views/admin/custom_emojis/_custom_emoji.html.haml +++ b/app/views/admin/custom_emojis/_custom_emoji.html.haml @@ -17,6 +17,10 @@ - else = custom_emoji.domain + - if custom_emoji.local_counterpart.present? + • + = t('admin.accounts.location.local') + %br/ - if custom_emoji.disabled? diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml index e96ea0b03..ba66aeff8 100644 --- a/app/views/admin/settings/edit.html.haml +++ b/app/views/admin/settings/edit.html.haml @@ -20,10 +20,10 @@ = f.input :site_contact_email, wrapper: :with_label, label: t('admin.settings.contact_information.email') .fields-group - = f.input :site_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_description.title'), hint: t('admin.settings.site_description.desc_html'), input_html: { rows: 4 } + = f.input :site_short_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_short_description.title'), hint: t('admin.settings.site_short_description.desc_html'), input_html: { rows: 2 } .fields-group - = f.input :site_short_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_short_description.title'), hint: t('admin.settings.site_short_description.desc_html'), input_html: { rows: 2 } + = f.input :site_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_description.title'), hint: t('admin.settings.site_description.desc_html'), input_html: { rows: 2 } .fields-row .fields-row__column.fields-row__column-6.fields-group @@ -72,6 +72,9 @@ = f.input :trends, as: :boolean, wrapper: :with_label, label: t('admin.settings.trends.title'), hint: t('admin.settings.trends.desc_html') .fields-group + = f.input :trendable_by_default, as: :boolean, wrapper: :with_label, label: t('admin.settings.trendable_by_default.title'), hint: t('admin.settings.trendable_by_default.desc_html') + + .fields-group = f.input :noindex, as: :boolean, wrapper: :with_label, label: t('admin.settings.default_noindex.title'), hint: t('admin.settings.default_noindex.desc_html') .fields-group @@ -101,8 +104,8 @@ = f.input :show_domain_blocks_rationale, wrapper: :with_label, collection: %i(disabled users all), label: t('admin.settings.domain_blocks_rationale.title'), label_method: lambda { |value| t("admin.settings.domain_blocks.#{value}") }, include_blank: false, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li' .fields-group - = f.input :closed_registrations_message, as: :text, wrapper: :with_block_label, label: t('admin.settings.registrations.closed_message.title'), hint: t('admin.settings.registrations.closed_message.desc_html'), input_html: { rows: 8 } = f.input :site_extended_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_description_extended.title'), hint: t('admin.settings.site_description_extended.desc_html'), input_html: { rows: 8 } unless whitelist_mode? + = f.input :closed_registrations_message, as: :text, wrapper: :with_block_label, label: t('admin.settings.registrations.closed_message.title'), hint: t('admin.settings.registrations.closed_message.desc_html'), input_html: { rows: 8 } = f.input :site_terms, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_terms.title'), hint: t('admin.settings.site_terms.desc_html'), input_html: { rows: 8 } = f.input :custom_css, wrapper: :with_block_label, as: :text, input_html: { rows: 8 }, label: t('admin.settings.custom_css.title'), hint: t('admin.settings.custom_css.desc_html') diff --git a/app/views/application/_sidebar.html.haml b/app/views/application/_sidebar.html.haml index 33e7c96fe..7ec91c06a 100644 --- a/app/views/application/_sidebar.html.haml +++ b/app/views/application/_sidebar.html.haml @@ -3,7 +3,7 @@ = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.jpg'), alt: @instance_presenter.site_title .hero-widget__text - %p= @instance_presenter.site_short_description.html_safe.presence || @instance_presenter.site_description.html_safe.presence || t('about.generic_description', domain: site_hostname) + %p= @instance_presenter.site_short_description.html_safe.presence || t('about.about_mastodon_html') - if Setting.trends && !(user_signed_in? && !current_user.setting_trends) - trends = TrendingTags.get(3) diff --git a/app/views/shared/_og.html.haml b/app/views/shared/_og.html.haml index 576f47a67..c8f12974e 100644 --- a/app/views/shared/_og.html.haml +++ b/app/views/shared/_og.html.haml @@ -1,5 +1,5 @@ - thumbnail = @instance_presenter.thumbnail -- description ||= strip_tags(@instance_presenter.site_short_description.presence || @instance_presenter.site_description.presence || t('about.about_mastodon_html')) +- description ||= strip_tags(@instance_presenter.site_short_description.presence || t('about.about_mastodon_html')) %meta{ name: 'description', content: description }/ diff --git a/app/views/statuses/_detailed_status.html.haml b/app/views/statuses/_detailed_status.html.haml index 12f03ccdd..5cee84ada 100644 --- a/app/views/statuses/_detailed_status.html.haml +++ b/app/views/statuses/_detailed_status.html.haml @@ -20,7 +20,7 @@ %p{ :style => ('margin-bottom: 0' unless current_account&.user&.setting_expand_spoilers) }< %span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: autoplay)} %button.status__content__spoiler-link= t('statuses.show_more') - .e-content{ lang: status.language, style: "display: #{!current_account&.user&.setting_expand_spoilers && status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" } + .e-content{ style: "display: #{!current_account&.user&.setting_expand_spoilers && status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" } = Formatter.instance.format(status, custom_emojify: true, autoplay: autoplay) - if status.preloadable_poll = react_component :poll, disabled: true, poll: ActiveModelSerializers::SerializableResource.new(status.preloadable_poll, serializer: REST::PollSerializer, scope: current_user, scope_name: :current_user).as_json do diff --git a/app/views/statuses/_simple_status.html.haml b/app/views/statuses/_simple_status.html.haml index fe1591bf9..a0e77ac6d 100644 --- a/app/views/statuses/_simple_status.html.haml +++ b/app/views/statuses/_simple_status.html.haml @@ -24,7 +24,7 @@ %p{ :style => ('margin-bottom: 0' unless current_account&.user&.setting_expand_spoilers) }< %span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: autoplay)} %button.status__content__spoiler-link= t('statuses.show_more') - .e-content{ lang: status.language, style: "display: #{!current_account&.user&.setting_expand_spoilers && status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }< + .e-content{ style: "display: #{!current_account&.user&.setting_expand_spoilers && status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }< = Formatter.instance.format(status, custom_emojify: true, autoplay: autoplay) - if status.preloadable_poll = react_component :poll, disabled: true, poll: ActiveModelSerializers::SerializableResource.new(status.preloadable_poll, serializer: REST::PollSerializer, scope: current_user, scope_name: :current_user).as_json do diff --git a/config/deploy.rb b/config/deploy.rb index c4133e794..4dc36c65c 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -lock '3.11.1' +lock '3.11.2' set :repo_url, ENV.fetch('REPO', 'https://github.com/tootsuite/mastodon.git') set :branch, ENV.fetch('BRANCH', 'master') diff --git a/config/initializers/json_ld.rb b/config/initializers/json_ld.rb index d5575d135..3ed3c4b31 100644 --- a/config/initializers/json_ld.rb +++ b/config/initializers/json_ld.rb @@ -1,3 +1,4 @@ # frozen_string_literal: true require_relative '../../lib/json_ld/security' +require_relative '../../lib/json_ld/identity' diff --git a/config/initializers/paperclip.rb b/config/initializers/paperclip.rb index f308c2841..d3602e655 100644 --- a/config/initializers/paperclip.rb +++ b/config/initializers/paperclip.rb @@ -1,10 +1,11 @@ # frozen_string_literal: true -Paperclip.options[:read_timeout] = 60 - Paperclip.interpolates :filename do |attachment, style| - return attachment.original_filename if style == :original - [basename(attachment, style), extension(attachment, style)].delete_if(&:blank?).join('.') + if style == :original + attachment.original_filename + else + [basename(attachment, style), extension(attachment, style)].delete_if(&:blank?).join('.') + end end Paperclip::Attachment.default_options.merge!( @@ -24,22 +25,27 @@ if ENV['S3_ENABLED'] == 'true' storage: :s3, s3_protocol: s3_protocol, s3_host_name: s3_hostname, + s3_headers: { 'X-Amz-Multipart-Threshold' => ENV.fetch('S3_MULTIPART_THRESHOLD') { 15.megabytes }.to_i, 'Cache-Control' => 'public, max-age=315576000, immutable', }, + s3_permissions: ENV.fetch('S3_PERMISSION') { 'public-read' }, s3_region: s3_region, + s3_credentials: { bucket: ENV['S3_BUCKET'], access_key_id: ENV['AWS_ACCESS_KEY_ID'], secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'], }, + s3_options: { signature_version: ENV.fetch('S3_SIGNATURE_VERSION') { 'v4' }, http_open_timeout: 5, http_read_timeout: 5, http_idle_timeout: 5, + retry_limit: 0, } ) @@ -48,6 +54,7 @@ if ENV['S3_ENABLED'] == 'true' endpoint: ENV['S3_ENDPOINT'], force_path_style: true ) + Paperclip::Attachment.default_options[:url] = ':s3_path_url' end @@ -73,6 +80,7 @@ elsif ENV['SWIFT_ENABLED'] == 'true' openstack_region: ENV['SWIFT_REGION'], openstack_cache_ttl: ENV.fetch('SWIFT_CACHE_TTL') { 60 }, }, + fog_directory: ENV['SWIFT_CONTAINER'], fog_host: ENV['SWIFT_OBJECT_URL'], fog_public: true @@ -81,7 +89,7 @@ else Paperclip::Attachment.default_options.merge!( storage: :filesystem, use_timestamp: true, - path: (ENV['PAPERCLIP_ROOT_PATH'] || ':rails_root/public/system') + '/:class/:attachment/:id_partition/:style/:filename', - url: (ENV['PAPERCLIP_ROOT_URL'] || '/system') + '/:class/:attachment/:id_partition/:style/:filename', + path: ENV.fetch('PAPERCLIP_ROOT_PATH', ':rails_root/public/system') + '/:class/:attachment/:id_partition/:style/:filename', + url: ENV.fetch('PAPERCLIP_ROOT_URL', '/system') + '/:class/:attachment/:id_partition/:style/:filename', ) end diff --git a/config/locales/activerecord.es-AR.yml b/config/locales/activerecord.es-AR.yml new file mode 100644 index 000000000..4cdd90278 --- /dev/null +++ b/config/locales/activerecord.es-AR.yml @@ -0,0 +1,17 @@ +--- +es-AR: + activerecord: + attributes: + poll: + expires_at: Fecha límite + options: Opciones + errors: + models: + account: + attributes: + username: + invalid: sólo letras, números y subguiones ("_") + status: + attributes: + reblog: + taken: del estado ya existe diff --git a/config/locales/activerecord.es.yml b/config/locales/activerecord.es.yml index 2fbf0ffd7..f40e6c361 100644 --- a/config/locales/activerecord.es.yml +++ b/config/locales/activerecord.es.yml @@ -1 +1,17 @@ ---- {} +--- +es: + activerecord: + attributes: + poll: + expires_at: Vencimiento + options: Opciones + errors: + models: + account: + attributes: + username: + invalid: sólo letras, números y guiones bajos + status: + attributes: + reblog: + taken: del estado ya existe diff --git a/config/locales/activerecord.pt-PT.yml b/config/locales/activerecord.pt-PT.yml new file mode 100644 index 000000000..cbb053a90 --- /dev/null +++ b/config/locales/activerecord.pt-PT.yml @@ -0,0 +1,13 @@ +--- +pt-PT: + activerecord: + errors: + models: + account: + attributes: + username: + invalid: apenas letras, números e underscores + status: + attributes: + reblog: + taken: do status já existe diff --git a/config/locales/activerecord.sv.yml b/config/locales/activerecord.sv.yml index 0ae4906d7..8d142e7ac 100644 --- a/config/locales/activerecord.sv.yml +++ b/config/locales/activerecord.sv.yml @@ -1,9 +1,13 @@ --- sv: activerecord: + attributes: + poll: + expires_at: Tidsgräns + options: Val errors: models: account: attributes: username: - invalid: enbart bokstäver, siffror och understreck + invalid: endast bokstäver, siffror och understrykning diff --git a/config/locales/ar.yml b/config/locales/ar.yml index f1d9570ad..2bf6789be 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -18,7 +18,6 @@ ar: discover_users: اكتشف مستخدِمين documentation: الدليل federation_hint_html: بواسطة حساب في %{instance} ستتمكن من تتبع أناس في أي خادم ماستدون وأكثر. - generic_description: "%{domain} هو سيرفر من بين سيرفرات الشبكة" get_apps: جرّب تطبيقا على الموبايل hosted_on: ماستدون مُستضاف على %{domain} learn_more: تعلم المزيد @@ -237,6 +236,7 @@ ar: deleted_status: "(منشور محذوف)" title: سِجلّ التفتيش و المعاينة custom_emojis: + assign_category: اسند فئة by_domain: النطاق copied_msg: تم إنشاء نسخة محلية للإيموجي بنجاح copy: نسخ @@ -279,7 +279,7 @@ ar: feature_timeline_preview: معاينة الخيط الزمني features: الميّزات hidden_service: الفيديرالية مع الخدمات الخفية - open_reports: فتح الشكاوى + open_reports: شكاوي مفتوحة pending_tags: وسوم في انتظار المراجعة pending_users: مستخدمين في انتظار مراجعة recent_users: أحدث المستخدِمين @@ -289,15 +289,22 @@ ar: space: المساحة المستخدَمة title: لوح المراقبة total_users: إجمالي المستخدِمين - trends: المؤشرات + trends: المتداوَلة week_interactions: تفاعُلات هذا الأسبوع - week_users_active: نشط هذا الأسبوع + week_users_active: نشطاء هذا الأسبوع week_users_new: مستخدِمين هذا الأسبوع + whitelist_mode: وضع القائمة البيضاء + domain_allows: + add_new: إضافة النطاق إلى القائمة البيضاء + created_msg: تمت إضافة النطاق إلى القائمة البيضاء بنجاح + destroyed_msg: تمت إزالة النطاق مِن القائمة البيضاء + undo: إزالة من القائمة البيضاء domain_blocks: add_new: إضافة حجب جديد لنطاق created_msg: إنّ حجب النطاق حيز التشغيل destroyed_msg: تم إلغاء الحجب المفروض على النطاق domain: النطاق + edit: تحرير النطاق المحظور new: create: إنشاء حظر hint: لن تمنع كتلة المجال إنشاء إدخالات حساب في قاعدة البيانات ، ولكنها ستطبق طرق الإشراف المحددة بأثر رجعي وتلقائي على هذه الحسابات. @@ -308,6 +315,7 @@ ar: suspend: تعليق title: حجب نطاق جديد private_comment: تعليق خاص + public_comment: تعليق للعلن reject_media: رفض ملفات الوسائط reject_media_hint: يزيل ملفات الوسائط المخزنة محليًا ويرفض تنزيل أي ملفات في المستقبل. غير ذي صلة للتعليق reject_reports: رفض التقارير @@ -356,6 +364,7 @@ ar: limited: محدود title: الإشراف private_comment: تعليق خاص + public_comment: تعليق للعلن title: الفديرالية total_blocked_by_us: المحجوبة مِن طرفنا total_followed_by_them: يُتابِعونها @@ -434,6 +443,8 @@ ar: title: سي أس أس مخصص domain_blocks: all: للجميع + domain_blocks_rationale: + title: اظهر السبب hero: desc_html: معروض على الصفحة الأولى. لا يقل عن 600 × 100 بكسل. عند عدم التعيين ، تعود الصورة إلى النسخة المصغرة على سبيل المثال title: الصورة الرأسية @@ -562,6 +573,7 @@ ar: delete_account: حذف حساب delete_account_html: إن كنت ترغب في حذف حسابك يُمكنك <a href="%{path}">المواصلة هنا</a>. سوف يُطلَبُ منك التأكيد قبل الحذف. description: + prefix_invited_by_user: يدعوك @%{name} للاتحاق بخادم ماستدون هذا! prefix_sign_up: أنشئ حسابًا على ماستدون اليوم! didnt_get_confirmation: لم تتلق تعليمات التأكيد ؟ forgot_password: نسيت كلمة المرور ؟ @@ -585,6 +597,7 @@ ar: status: account_status: حالة الحساب functional: حسابك جاهز. + redirecting_to: حسابك غير نشط لأنه تم تحويله حاليا إلى %{acct}. trouble_logging_in: هل صادفتكم مشكلة في الولوج؟ authorize_follow: already_following: أنت تتابع بالفعل هذا الحساب @@ -616,10 +629,18 @@ ar: x_months: "%{count} شه" x_seconds: "%{count}ث" deletes: + challenge_not_passed: المعلومات التي أدخلتها لم تكن صحيحة confirm_password: قم بإدخال كلمتك السرية الحالية للتحقق من هويتك + confirm_username: ادخل اسم المستخدم الخاص بك لتأكيد الإجراء proceed: حذف حساب success_msg: تم حذف حسابك بنجاح warning: + before: 'يرجى قراءة هذه الملاحظات بتأنّي قبل المواصلة:' + data_removal: سوف تُحذَف منشوراتك والبيانات الأخرى نهائيا + email_change_html: بإمكانك <a href="%{path}">تغيير عنوان بريدك الإلكتروني</a> دون أن يُحذف حسابك + irreversible: لن يكون بإمكانك استرجاع أو إعادة تنشيط حسابك + more_details_html: للمزيد مِن التفاصيل ، يرجى الإطلاع على <a href="%{terms_path}">سياسة الخصوصية</a>. + username_available: سيصبح اسم مستخدمك متوفرا ثانية username_unavailable: سيبقى اسم المستخدم الخاص بك غير متوفر directories: directory: سِجلّ الصفحات التعريفية @@ -759,13 +780,18 @@ ar: cancel: ألغِ التوجيه cancelled_msg: تم إلغاء التوجيه بنجاح. errors: + move_to_self: لا يمكنه أن يكون الحساب الحالي not_found: تعذر العثور عليه + on_cooldown: إنّك في مرحلة الجمود followers_count: المتابِعين عند الإنتقال incoming_migrations: الانتقال مِن حساب آخر + not_redirecting: حاليا ، حسابك لا يقوم بالتحويل إلى أي حساب آخر. past_migrations: التهجيرات السابقة proceed_with_move: انقل مشارِكيك redirecting_to: حسابك موجَّه إلى %{acct}. set_redirect: تعين إعادة التوجيه + warning: + before: 'يرجى قراءة هذه الملاحظات بتأنّي قبل المواصلة:' moderation: title: الإشراف notification_mailer: @@ -866,6 +892,9 @@ ar: reply: proceed: المواصلة إلى الرد prompt: 'ترغب في الرد على هذا التبويق:' + scheduled_statuses: + over_total_limit: لقد بلغت حد الـ %{limit} مِن التبويقات المبرمَجة + too_soon: يجب أن يكون تاريخ البرمجة في المستقبَل sessions: activity: آخر نشاط browser: المتصفح @@ -927,6 +956,8 @@ ar: profile: الملف التعريفي relationships: المتابِعون والمتابَعون two_factor_authentication: المُصادقة بخُطوَتَيْن + spam_check: + spam_detected: هذا إبلاغ تلقائي. تم اكتشاف منشورات عشوائية غير مرغوب فيها. statuses: attached: description: 'مُرفَق: %{attached}' @@ -990,6 +1021,10 @@ ar: contrast: ماستدون (تباين عالٍ) default: ماستدون (داكن) mastodon-light: ماستدون (فاتح) + time: + formats: + default: "%b %d, %Y, %H:%M" + month: "%b %Y" two_factor_authentication: code_hint: قم بإدخال الرمز المُوَلّد عبر تطبيق المصادقة للتأكيد description_html: في حال تفعيل <strong>المصادقة بخطوتين </strong>، فتسجيل الدخول يتطلب منك أن يكون بحوزتك هاتفك النقال قصد توليد الرمز الذي سيتم إدخاله. diff --git a/config/locales/bn.yml b/config/locales/bn.yml index 1da7aac53..9fdc3ed29 100644 --- a/config/locales/bn.yml +++ b/config/locales/bn.yml @@ -18,7 +18,6 @@ bn: discover_users: ব্যবহারকারীদের দেখুন documentation: ব্যবহারবিলি federation_hint_html: "%{instance}তে একটা নিবন্ধন থাকলে আপনি যেকোনো মাস্টাডন বা এধরণের অন্যান্য সার্ভারের মানুষের সাথে যুক্ত হতে পারবেন ।" - generic_description: নেটওয়ার্কের ভেতরে %{domain} একটি সার্ভার get_apps: মোবাইল এপ্প একটা ব্যবহার করতে পারেন hosted_on: এই মাস্টাডনটি আছে %{domain} এ learn_more: বিস্তারিত জানুন diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 74bb406ac..1d815adcf 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -18,7 +18,6 @@ ca: discover_users: Descobreix usuaris documentation: Documentació federation_hint_html: Amb un compte de %{instance} podràs seguir persones de qualsevol servidor Mastodon i altres. - generic_description: "%{domain} és un servidor a la xarxa" get_apps: Prova una aplicació mòbil hosted_on: Mastodon allotjat a %{domain} instance_actor_flash: | @@ -507,6 +506,9 @@ ca: desc_html: Mostra la línia de temps pública a la pàgina inicial title: Vista prèvia de la línia de temps title: Configuració del lloc + trendable_by_default: + desc_html: Afecta a les etiquetes que no s'havien rebutjat prèviament + title: Permet que les etiquetes passin a la tendència sense revisió prèvia trends: desc_html: Mostra públicament les etiquetes revisades anteriorment que actualment estan en tendència title: Etiquetes tendència @@ -1005,8 +1007,6 @@ ca: profile: Perfil relationships: Seguits i seguidors two_factor_authentication: Autenticació de dos factors - spam_check: - spam_detected_and_silenced: Aquest és un informe automatitzat. S'ha detectat correu brossa i el remitent s'ha silenciat automàticament. Si es tracta d’un error, si us plau, trèieu el silenci del compte. statuses: attached: description: 'Adjunt: %{attached}' diff --git a/config/locales/co.yml b/config/locales/co.yml index 8a99e2292..41e2ccfbb 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -18,7 +18,6 @@ co: discover_users: Scopre utilizatori documentation: Ducumentazione federation_hint_html: Cù un contu nant'à %{instance} puderete siguità ghjente da tutti i servori Mastodon è ancu più d'altri. - generic_description: "%{domain} hè un servore di a rete" get_apps: Pruvà un'applicazione di telefuninu hosted_on: Mastodon allughjatu nant’à %{domain} instance_actor_flash: | @@ -507,6 +506,9 @@ co: desc_html: Vede a linea pubblica nant’a pagina d’accolta title: Vista di e linee title: Parametri di u situ + trendable_by_default: + desc_html: Ùn affetta micca quelli chì sò digià stati ricusati + title: Auturizà l'hashtag à esse in tindenze senza verificazione trends: desc_html: Mustrà à u pubblicu i hashtag chì sò stati digià verificati è chì sò in e tendenze avà title: Tendenze di hashtag @@ -1005,8 +1007,6 @@ co: profile: Prufile relationships: Abbunamenti è abbunati two_factor_authentication: Identificazione à dui fattori - spam_check: - spam_detected_and_silenced: Quessu ghjè un signalamente autumaticu. Un spam hè statu ditettatu è u speditore hè statu silenzatu. S'ellu era un sbagliu, pudete annullà l'azzione. statuses: attached: description: 'Aghjuntu: %{attached}' diff --git a/config/locales/cs.yml b/config/locales/cs.yml index d1311063c..8a3669a6c 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -2,7 +2,7 @@ cs: about: about_hashtag_html: Tohle jsou veřejné tooty označené hashtagem <strong>#%{hashtag}</strong>. Pokud máte účet kdekoliv ve fedivesmíru, můžete s nimi interagovat. - about_mastodon_html: Mastodon je sociální síť založená na otevřených webových protokolech a svobodném, otevřeném softwaru. Je decentralizovaná jako e-mail. + about_mastodon_html: 'Sociální síť budoucnosti: žádné reklamy, žádné korporátní sledování, etický design a decentralizace! S Mastodonem vlastníte svoje data!' about_this: O tomto serveru active_count_after: aktivních active_footnote: Měsíční aktivní uživatelé (MAU) @@ -18,7 +18,6 @@ cs: discover_users: Objevujte uživatele documentation: Dokumentace federation_hint_html: S účtem na %{instance} můžete sledovat lidi na jakémkoliv serveru Mastodon a jiných službách. - generic_description: "%{domain} je jedním ze serverů v síti" get_apps: Vyzkoušejte mobilní aplikaci hosted_on: Mastodon na adrese %{domain} instance_actor_flash: | @@ -40,10 +39,10 @@ cs: unavailable_content: Nedostupný obsah unavailable_content_description: domain: Server - reason: 'Důvod:' - rejecting_media: Mediální soubory z tohoto serveru nebudou zpracovány a nebudou zobrazeny žádné náhledy. Pro prohlédnutí médií bude třeba manuálně přejít na druhý server. - silenced: Příspěvky z tohoto severu nebudou zobrazeni nikde kromě vašeho domovského proudu, v případě, že sledujete autora. - suspended: Nebudete moci sledovat nikoho z tohoto serveru, žádná data z něj nebudou zpracována či uložena a žádná data nebudou vyměněna mezi servery. + reason: Důvod + rejecting_media: 'Mediální soubory z tohoto serveru nebudou zpracovány a nebudou zobrazeny žádné náhledy. Pro prohlédnutí médií bude třeba manuálně přejít na druhý server:' + silenced: 'Příspěvky z těchto serverů nebudou zobrazeny ve veřejných časových osách a konverzacích a nebudou generována oznámení o interakcích uživatelů z toho serveru, pokud je nesledujete:' + suspended: 'Žádná data z těchto serverů nebudou zpracována, ukládána ani vyměňována, čímž bude znemožněna jakákoliv interakce či komunikace s uživateli z těchto serverů:' unavailable_content_html: Mastodon vám obvykle dovoluje prohlížet si obsah a komunikovat s uživateli z jakéhokoliv dalšího serveru ve fedivesmíru. Tohle jsou výjimky, které byly zavedeny na tomto konkrétním serveru. user_count_after: few: uživatelé @@ -270,7 +269,7 @@ cs: updated_msg: Emoji úspěšně aktualizováno! upload: Nahrát dashboard: - authorized_fetch_mode: Autorizovaný režim fetch + authorized_fetch_mode: Zabezpečený režim backlog: opožděné úlohy config: Konfigurace feature_deletions: Smazání účtů @@ -400,7 +399,7 @@ cs: pending: Čekám na souhlas mostu save_and_enable: Uložit a povolit setup: Nastavit připojení k mostu - signatures_not_enabled: Mosty nebudou fungovat správně, dokud je povolen bezpečný režim nebo režim bílé listiny + signatures_not_enabled: Mosty nebudou fungovat správně, dokud je povolen zabezpečený režim nebo režim bílé listiny status: Stav title: Mosty report_notes: @@ -491,8 +490,8 @@ cs: open: Kdokoliv se může registrovat title: Režim registrací show_known_fediverse_at_about_page: - desc_html: Je-li tohle zapnuto, zobrazí se v náhledu tooty z celého známého fedivesmíru. Jinak budou zobrazeny pouze místní tooty. - title: Zobrazit na náhledu časové osy celý známý fedivesmír + desc_html: Je-li tohle vypnuto, bude veřejná časová osa, na kterou odkazuje hlavní stránka serveru, omezena pouze na místní obsah + title: Zobrazit na nepřihlášené stránce časové osy federovaný obsah show_staff_badge: desc_html: Zobrazit na stránce uživatele odznak člena personálu title: Zobrazit odznak personálu @@ -503,22 +502,25 @@ cs: desc_html: Dobré místo pro vaše pravidla, pokyny a jiné věci, které váš server odlišují od ostatních. Lze použít HTML značky title: Vlastní rozšířené informace site_short_description: - desc_html: Zobrazen v postranním panelu a meta značkách. Popište, co je Mastodon a díky čemu je tento server zvláštní v jediném odstavci. + desc_html: Zobrazen v postranním panelu a meta značkách. Popište, co je Mastodon a díky čemu je tento server zvláštní, v jediném odstavci. title: Krátký popis serveru site_terms: desc_html: Můžete si napsat vlastní zásady soukromí, podmínky používání či jiné legality. Můžete použít HTML značky title: Vlastní podmínky používání site_title: Název serveru spam_check_enabled: - desc_html: Mastodon může automaticky utišovat a nahlašovat účty podle opatření, jako například detekování účtů, které odesílají opakované nevyžadované zprávy. Mohou se najít špatné shody. - title: Antispam + desc_html: Mastodon může automaticky nahlašovat účty, které opakovaně odesílají nevyžádané zprávy. Mohou se najít špatné shody. + title: Antispamová automatizace thumbnail: desc_html: Používáno pro náhledy přes OpenGraph a API. Doporučuje se rozlišení 1200x630px title: Miniatura serveru timeline_preview: - desc_html: Zobrazit na hlavní straně veřejnou časovou osu - title: Náhled časové osy + desc_html: Zobrazit na hlavní straně odkaz na veřejnou časovou osu a povolit přístup na veřejnou časovou osu pomocí API bez autentizace + title: Povolit neautentizovaný přístup k časové ose title: Nastavení stránky + trendable_by_default: + desc_html: Ovlivňuje hashtagy, které nebyly dříve zakázány + title: Dovolit hashtagům zobrazit se na trendech bez předchozího posouzení trends: desc_html: Veřejně zobrazit předtím schválené hashtagy, které jsou aktuálně populární title: Populární hashtagy @@ -551,7 +553,7 @@ cs: reviewed: Schválen title: Hashtagy trending_right_now: Aktuální trendy - unique_uses_today: "%{count} dnes píší" + unique_uses_today: "%{count} dnes píše" unreviewed: Neposouzeno updated_msg: Nastavení hashtagu bylo úspěšně aktualizováno title: Administrace @@ -809,7 +811,7 @@ cs: '604800': 1 týden '86400': 1 den expires_in_prompt: Nikdy - generate: Vygenerovat + generate: Vygenerovat pozvánku invited_by: 'Byl/a jste pozván/a uživatelem:' max_uses: few: "%{count} použití" @@ -1026,7 +1028,7 @@ cs: relationships: Sledovaní a sledující two_factor_authentication: Dvoufázové ověřování spam_check: - spam_detected_and_silenced: Tohle je automtické nahlášení. Byl detekován spam a jeho odesílatel byl automaticky utišen. Pokud je tohle chyba, prosím odtište tento účet. + spam_detected: Tohle je automatizované nahlášení. Byl detekován spam. statuses: attached: description: 'Přiloženo: %{attached}' diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 24bed1060..202e5de6c 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -18,7 +18,6 @@ cy: discover_users: Darganfod defnyddwyr documentation: Dogfennaeth federation_hint_html: Gyda cyfrif ar %{instance}, gallwch dilyn pobl ar unrhyw gweinydd Mastodon, a thu hwnt. - generic_description: Mae %{domain} yn un gweinydd yn y rhwydwaith get_apps: Rhowch gynnig ar ap dyfeis symudol hosted_on: Mastodon wedi ei weinyddu ar %{domain} instance_actor_flash: | diff --git a/config/locales/da.yml b/config/locales/da.yml index 85a5bbefd..5e291154a 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -14,7 +14,6 @@ da: contact_unavailable: Ikke tilgængeligt discover_users: Opdag brugere documentation: Dokumentation - generic_description: "%{domain} er en server i netværket" get_apps: Prøv en mobil app hosted_on: Mostodon hostet på %{domain} learn_more: Lær mere @@ -26,6 +25,7 @@ da: other: statusser status_count_before: Som har skrevet terms: Vilkår for service + unavailable_content: Utilgængeligt indhold user_count_after: one: bruger other: brugere diff --git a/config/locales/de.yml b/config/locales/de.yml index 83f0c655f..77c66fb71 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -5,7 +5,7 @@ de: about_mastodon_html: Mastodon ist ein soziales Netzwerk. Es basiert auf offenen Web-Protokollen und freier, quelloffener Software. Es ist dezentral (so wie E-Mail!). about_this: Über diesen Server active_count_after: aktiv - active_footnote: Monatlich Aktive Nutzer_innen (MAU) + active_footnote: Monatlich Aktive User (MAU) administered_by: 'Betrieben von:' api: API apps: Mobile Apps @@ -15,10 +15,9 @@ de: contact: Kontakt contact_missing: Nicht angegeben contact_unavailable: Nicht verfügbar - discover_users: Benutzer_innen entdecken + discover_users: Benutzer entdecken documentation: Dokumentation - federation_hint_html: Mit einem Konto auf %{instance} wirst du in der Lage sein Nutzer_innen auf beliebigen Mastodon-Servern und darüber hinaus zu folgen. - generic_description: "%{domain} ist ein Server im Fediversum" + federation_hint_html: Mit einem Account auf %{instance} wirst du in der Lage sein Nutzern auf irgendeinem Mastodon-Server und darüber hinaus zu folgen. get_apps: Versuche eine mobile App hosted_on: Mastodon, gehostet auf %{domain} instance_actor_flash: | @@ -54,8 +53,8 @@ de: featured_tags_hint: Du kannst spezifische Hashtags, die hier angezeigt werden, angeben. follow: Folgen followers: - one: Folger_innen - other: Folger_innen + one: Folgender + other: Folgende following: Folgt joined: Beigetreten am %{date} last_active: zuletzt aktiv @@ -119,8 +118,8 @@ de: enable: Freischalten enabled: Freigegeben feed_url: Feed-URL - followers: Folger_innen - followers_url: URL der Folger_innen + followers: Folgende + followers_url: URL des Folgenden follows: Folgt header: Titelbild inbox_url: Posteingangs-URL @@ -283,11 +282,11 @@ de: software: Software space: Speicherverbrauch title: Übersicht - total_users: Benutzer_innen insgesamt + total_users: Benutzer insgesamt trends: Trends week_interactions: Interaktionen diese Woche week_users_active: Aktiv diese Woche - week_users_new: Benutzer_innen diese Woche + week_users_new: Benutzer diese Woche whitelist_mode: Whitelist-Modus domain_allows: add_new: Whitelist-Domain @@ -346,7 +345,7 @@ de: title: E-Mail-Domain-Blockade followers: back_to_account: Zurück zum Konto - title: "%{acct}'s Folger_innen" + title: "%{acct}'s Follower" instances: by_domain: Domain delivery_available: Zustellung funktioniert @@ -507,6 +506,9 @@ de: desc_html: Auf der Einstiegsseite die öffentliche Zeitleiste anzeigen title: Zeitleisten-Vorschau title: Server-Einstellungen + trendable_by_default: + desc_html: Betroffene Hashtags, die bisher nicht gesperrt wurden + title: Hashtags ohne vorherige Überprüfung erlauben zu trenden trends: desc_html: Zuvor überprüfte Hashtags öffentlich anzeigen, die derzeit angesagt sind title: Trendende Hashtags @@ -564,7 +566,7 @@ de: add_new: Alias erstellen created_msg: Ein neuer Alias wurde erfolgreich erstellt. Du kannst nun den Wechsel vom alten Konto starten. deleted_msg: Der Alias wurde erfolgreich entfernt. Aus diesem Konto zu diesem zu verschieben ist nicht mehr möglich. - hint_html: Wenn du von einem Konto zu einem anderem Konto wechseln möchtest, dann kannst du einen Alias erstellen, welcher benötigt wird bevor du deine Folger_innen vom altem Account zu diesen migrierst. Die Aktion alleine ist <strong>harmlos und widerruflich</strong>. <strong>Die Kontenmigration wird vom altem Konto aus eingeleitet</strong>. + hint_html: Wenn du von einem Konto zu einem anderem Konto wechseln möchtest, dann kannst du einen Alias erstellen, welcher benötigt wird bevor du deine Folgenden vom altem Account zu diesen migrierst. Die Aktion alleine ist <strong>harmlos und widerruflich</strong>. <strong>Die Kontenmigration wird vom altem Konto aus eingeleitet</strong>. remove: Alle Aliase aufheben appearance: advanced_web_interface: Fortgeschrittene Benutzeroberfläche @@ -676,7 +678,7 @@ de: username_unavailable: Dein Benutzername bleibt nicht verfügbar directories: directory: Profilverzeichnis - explanation: Entdecke Benutzer_innen basierend auf deren Interessen + explanation: Entdecke Benutzer basierend auf deren Interessen explore_mastodon: Entdecke %{title} domain_validator: invalid_domain: ist kein gültiger Domain-Name @@ -816,7 +818,7 @@ de: migrations: acct: benutzername@domain des neuen Kontos cancel: Umleitung abbrechen - cancel_explanation: Das Abbrechen der Umleitung wird dein aktuelles Konto erneut aktivieren, aber keine Folger_innen, die auf dieses Konto verschoben wurden, zurückholen. + cancel_explanation: Das Abbrechen der Umleitung wird dein aktuelles Konto erneut aktivieren, aber keine Folgenden, die auf dieses Konto verschoben wurden, zurückholen. cancelled_msg: Die Umleitung wurde erfolgreich abgebrochen. errors: already_moved: ist das gleiche Konto, zu dem du bereits umgezogen bist @@ -824,14 +826,14 @@ de: move_to_self: darf nicht das aktuelles Konto sein not_found: kann nicht gefunden werden on_cooldown: Die Abklingzeit läuft gerade - followers_count: Folger_innen zur Zeit des Verschiebens + followers_count: Folgende zur Zeit des Verschiebens incoming_migrations: Ziehe von einem anderen Konto um incoming_migrations_html: Um von einem anderen Konto zu diesem zu wechseln, musst du zuerst <a href="%{path}">einen Kontoalias</a> erstellen. - moved_msg: Dein Konto wird jetzt zu %{acct} weitergeleitet und deine Folger_innen werden verschoben. + moved_msg: Dein Konto wird jetzt zu %{acct} weitergeleitet und deine Folgende werden verschoben. not_redirecting: Dein Konto wird derzeit nicht auf ein anderes Konto weitergeleitet. on_cooldown: Du hast dein Konto vor kurzem migriert. Diese Funktion wird in %{count} Tagen wieder verfügbar sein. past_migrations: Vorherige Migrationen - proceed_with_move: Folger_innen verschieben + proceed_with_move: Folgende verschieben redirecting_to: Dein Konto wird zu %{acct} weitergeleitet. set_redirect: Umleitung einrichten warning: @@ -839,7 +841,7 @@ de: before: 'Bevor du fortfährst, lese bitte diese Hinweise sorgfältig durch:' cooldown: Nach dem Migrieren wird es eine Abklingzeit geben, in der du das Konto nicht noch einmal migrieren kannst disabled_account: Dein aktuelles Konto wird nachher nicht vollständig nutzbar sein. Du hast jedoch Zugriff auf den Datenexport sowie die Reaktivierung. - followers: Diese Aktion wird alle Folger_innen vom aktuellen Konto auf das neue Konto verschieben + followers: Diese Aktion wird alle Folgende vom aktuellen Konto auf das neue Konto verschieben only_redirect_html: Alternativ kannst du <a href="%{path}">nur eine Weiterleitung auf dein Profil</a> erstellen. other_data: Keine anderen Daten werden automatisch verschoben redirect: Das Profil deines aktuellen Kontos wird mit einer Weiterleitungsnachricht versehen und von Suchanfragen ausgeschlossen @@ -1003,10 +1005,10 @@ de: notifications: Benachrichtigungen preferences: Einstellungen profile: Profil - relationships: Folger_innen und Gefolgte + relationships: Folgende und Gefolgte two_factor_authentication: Zwei-Faktor-Auth spam_check: - spam_detected_and_silenced: Dies ist ein automatisierter Bericht. Spam wurde erkannt und der Absender wurde automatisch stummgeschaltet. Wenn dies ein Fehler ist, schalte dieses Konto bitte wieder frei. + spam_detected: Dies ist ein automatisierter Bericht. Es wurde Spam erkannt. statuses: attached: description: 'Angehängt: %{attached}' @@ -1041,8 +1043,8 @@ de: sign_in_to_participate: Melde dich an, um an der Konversation teilzuhaben title: '%{name}: "%{quote}"' visibilities: - private: Nur für Folger_innen - private_long: Nur für Folger_innen sichtbar + private: Nur Folgende + private_long: Nur für Folgende sichtbar public: Öffentlich public_long: Für alle sichtbar unlisted: Nicht gelistet @@ -1059,9 +1061,9 @@ de: <h3 id="collect">Welche Informationen sammeln wir?</h3> <ul> - <li><em>Grundlegende Kontoinformationen</em>: Wenn du dich auf diesem Server registrierst, wirst du darum gebeten, einen Benutzer:innen-Namen, eine E-Mail-Adresse und ein Passwort einzugeben. Du kannst auch zusätzliche Profilinformationen wie etwa einen Anzeigenamen oder eine Biografie eingeben und ein Profilbild oder ein Headerbild hochladen. Der Benutzer:innen-Name, der Anzeigename, die Biografie, das Profilbild und das Headerbild werden immer öffentlich angezeigt.</li> + <li><em>Grundlegende Kontoinformationen</em>: Wenn du dich auf diesem Server registrierst, wirst du darum gebeten, einen Benutzernamen, eine E-Mail-Adresse und ein Passwort einzugeben. Du kannst auch zusätzliche Profilinformationen wie etwa einen Anzeigenamen oder eine Biografie eingeben und ein Profilbild oder ein Headerbild hochladen. Der Benutzername, der Anzeigename, die Biografie, das Profilbild und das Headerbild werden immer öffentlich angezeigt.</li> <li><em>Beiträge, Folge- und andere öffentliche Informationen</em>: Die Liste der Leute, denen du folgst, wird öffentlich gezeigt, das gleiche gilt für deine Folgenden (Follower). Sobald du eine Nachricht übermittelst, wird das Datum und die Uhrzeit gemeinsam mit der Information, welche Anwendung du dafür verwendet hast, gespeichert. Nachricht können Medienanhänge enthalten, etwa Bilder und Videos. Öffentliche und ungelistete Beiträge sind öffentlich verfügbar. Sobald du einen Beitrag auf deinem Profil anpinnst, sind dies auch öffentlich verfügbare Informationen. Deine Beiträge werden an deine Folgenden ausgeliefert, was in manchen Fällen bedeutet, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Sobald du Beiträge löschst, wird dies ebenso an deine Follower ausgeliefert. Die Handlungen des Teilens und Favorisieren eines anderen Beitrages ist immer öffentlich.</li> - <li><em>Direkte und "Nur Folgende"-Beiträge</em>: Alle Beiträge werden auf dem Server gespeichert und verarbeitet. "Nur Folgende"-Beiträge werden an deine Folgenden und an Benutzer:innen, die du in ihnen erwähnst, ausgeliefert, direkte Beiträge nur an in ihnen erwähnte Benutzer:innen. In manchen Fällen bedeutet dass, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Wir bemühen uns nach bestem Wissen und Gewissen, den Zugriff auf diese Beiträge auf nur autorisierte Personen einzuschränken, jedoch könnten andere Server dabei scheitern. Deswegen ist es wichtig, die Server, zu denen deine Folgenden gehören, zu überprüfen. Du kannst eine Option in den Einstellungen umschalten, um neue Folgenden manuell anzunehmen oder abzuweisen. <em>Bitte beachte, dass die Betreiber des Server und jedes empfangenden Servers solche Nachrichten anschauen könnten</em> und dass Empfänger von diesen eine Bildschirmkopie erstellen könnten, sie kopieren oder anderweitig weiterverteilen könnten. <em>Teile nicht irgendwelche gefährlichen Informationen über Mastodon.</em></li> + <li><em>Direkte und "Nur Folgende"-Beiträge</em>: Alle Beiträge werden auf dem Server gespeichert und verarbeitet. "Nur Folgende"-Beiträge werden an deine Folgenden und an Benutzer, die du in ihnen erwähnst, ausgeliefert, direkte Beiträge nur an in ihnen erwähnte Benutzer. In manchen Fällen bedeutet dass, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Wir bemühen uns nach bestem Wissen und Gewissen, den Zugriff auf diese Beiträge auf nur autorisierte Personen einzuschränken, jedoch könnten andere Server dabei scheitern. Deswegen ist es wichtig, die Server, zu denen deine Folgenden gehören, zu überprüfen. Du kannst eine Option in den Einstellungen umschalten, um neue Folgenden manuell anzunehmen oder abzuweisen. <em>Bitte beachte, dass die Betreiber des Server und jedes empfangenden Servers solche Nachrichten anschauen könnten</em> und dass Empfänger von diesen eine Bildschirmkopie erstellen könnten, sie kopieren oder anderweitig weiterverteilen könnten. <em>Teile nicht irgendwelche gefährlichen Informationen über Mastodon.</em></li> <li><em>Internet Protocol-Adressen (IP-Adressen) und andere Metadaten</em>: Sobald du dich anmeldest, erfassen wir sowohl die IP-Adresse, von der aus du dich anmeldest, als auch den Namen deine Browseranwendung. Alle angemeldeten Sitzungen (Sessions) sind für deine Überprüfung und Widerruf in den Einstellungen verfügbar. Die letzte verwendete IP-Adresse wird bis zu 12 Monate lang gespeichert. Wir könnten auch Serverprotokoll behalten, welche die IP-Adresse von jeder Anfrage an unseren Server enthalten.</li> </ul> @@ -1091,7 +1093,7 @@ de: <ul> <li>Serverprotokolle, die IP-Adressen von allen deinen Anfragen an diesen Server, falls solche Protokolle behalten werden, für nicht mehr als 90 Tage behalten.</li> - <li>registrierten Benutzer:innen zugeordnete IP-Adressen nicht länger als 12 Monate behalten.</li> + <li>registrierten Benutzer zugeordnete IP-Adressen nicht länger als 12 Monate behalten.</li> </ul> <p>Du kannst ein Archiv deines Inhalts anfordern und herunterladen, inkludierend deiner Beiträge, Medienanhänge, Profilbilder und Headerbilder.</p> diff --git a/config/locales/devise.ar.yml b/config/locales/devise.ar.yml index 90f026e10..4662cd030 100644 --- a/config/locales/devise.ar.yml +++ b/config/locales/devise.ar.yml @@ -46,8 +46,10 @@ ar: subject: 'ماستدون: تعليمات استعادة كلمة المرور' title: إعادة تعيين كلمة السر two_factor_disabled: + subject: 'ماستدون: نظام المصادقة بخطوتين مُعطّل' title: إنّ 2FA معطّل two_factor_enabled: + subject: 'ماستدون: تم تفعيل نظام المصادقة بخطوتين' title: إنّ 2FA نشِط unlock_instructions: subject: 'ماستدون: تعليمات فك القفل' diff --git a/config/locales/devise.cs.yml b/config/locales/devise.cs.yml index d1b9fc09c..25be731d0 100644 --- a/config/locales/devise.cs.yml +++ b/config/locales/devise.cs.yml @@ -8,7 +8,7 @@ cs: failure: already_authenticated: Již jste přihlášen/a. inactive: Váš účet ještě není aktivován. - invalid: Neplatný %{authentication_keys} nebo heslo. + invalid: Neplatné %{authentication_keys} nebo heslo. last_attempt: Máte ještě jeden pokus, než bude váš účet uzamčen. locked: Váš účet je uzamčen. not_found_in_database: Neplatné %{authentication_keys} nebo heslo. @@ -21,7 +21,7 @@ cs: action: Potvrdit e-mailovou adresu action_with_app: Potvrdit a navrátit se do %{app} explanation: S touto e-mailovou adresou jste si vytvořil/a účet na %{host}. K jeho aktivaci vám zbývá jedno kliknutí. Pokud jste to nebyl/a vy, prosím ignorujte tento e-mail. - explanation_when_pending: S touto e-mailovou adresou jste si vyžádal/a pozvánku na %{host}. Jakmile svou e-mailovou adresu potvrdíte, posoudíme váš poadavek. Do té doby se nemůžete přihlásit. Pokud bude váš požadavek zamítnut, budou vaše data odstraněna, takže od vás nebude vyžadována žádná další akce. Pokud jste to nebyl/a vy, prosím ignorujte tento e-mail. + explanation_when_pending: S touto e-mailovou adresou jste si vyžádal/a pozvánku na %{host}. Jakmile svou e-mailovou adresu potvrdíte, posoudíme váš poadavek. Můžete se přihlásit, změnit si své detaily či smazat svůj účet, ale do schválení účtu nemáte přístup ke většině funkcí. Pokud bude váš požadavek zamítnut, budou vaše data odstraněna, takže od vás nebude vyžadována žádná další akce. Pokud jste to nebyl/a vy, prosím ignorujte tento e-mail. extra_html: Prosím podívejte se také na <a href="%{terms_path}">pravidla tohoto serveru</a> a <a href="%{policy_path}">naše podmínky používání</a>. subject: 'Mastodon: Potvrzovací instrukce pro %{instance}' title: Potvrďte e-mailovou adresu diff --git a/config/locales/devise.el.yml b/config/locales/devise.el.yml index f064cbe83..5dc7658c2 100644 --- a/config/locales/devise.el.yml +++ b/config/locales/devise.el.yml @@ -51,7 +51,13 @@ el: subject: 'Mastodon: Απενεργοποιήθηκε ο έλεγχος ταυτότητας δύο παραγόντων' title: Απενεργοποιημένο 2FA two_factor_enabled: + explanation: Έχει ενεργοποιηθεί η πιστοποίηση 2 παραγόντων για το λογαριασμό σου (2FA). Για να συνδεθείς θα απαιτηθεί πιστοποιημένο τεκμήριο από κάποια ζευγαρωμένη εφαρμογή. + subject: 'Mastodon: Ενεργοποιήθηκε η πιστοποίηση 2 παραγόντων (2FA)' title: Επαλήθευση δύο βημάτων ενεργή + two_factor_recovery_codes_changed: + explanation: Οι προηγούμενοι κωδικοί ανάκτησης ακυρώθηκαν και δημιουργήθηκαν νέοι. + subject: 'Mastodon: Δημιουργήθηκαν νέοι κωδικοί ανάκτησης' + title: Οι κωδικοί ανάκτησης 2FA άλλαξαν unlock_instructions: subject: 'Mastodon: Οδηγίες ξεκλειδώματος' omniauth_callbacks: diff --git a/config/locales/devise.eo.yml b/config/locales/devise.eo.yml index d7b7b2d6c..7c67ac8fa 100644 --- a/config/locales/devise.eo.yml +++ b/config/locales/devise.eo.yml @@ -46,6 +46,10 @@ eo: extra: Se vi ne petis ĉi tion, bonvolu ignori ĉi tiun retmesaĝon. Via pasvorto ne ŝanĝiĝos se vi ne aliras la supran ligilon kaj kreas novan. subject: 'Mastodon: Instrukcioj por ŝanĝi pasvorton' title: Pasvorto restarigita + two_factor_disabled: + title: la du-etapa aŭtentigo estas malŝaltita + two_factor_enabled: + title: la du-etapa aŭtentigo estas ŝaltita unlock_instructions: subject: 'Mastodon: Instrukcioj por malŝlosi' omniauth_callbacks: diff --git a/config/locales/devise.es.yml b/config/locales/devise.es.yml index 515d5c1ed..80d438092 100644 --- a/config/locales/devise.es.yml +++ b/config/locales/devise.es.yml @@ -1 +1,98 @@ -es-AR: +--- +es: + devise: + confirmations: + confirmed: Su direccion de email ha sido confirmada con exito. + send_instructions: Recibirá un correo electrónico con instrucciones sobre cómo confirmar su dirección de correo en pocos minutos. + send_paranoid_instructions: Si su dirección de correo electrónico existe en nuestra base de datos, recibirá un correo electrónico con instrucciones sobre cómo confirmar su dirección de correo en pocos minutos. + failure: + already_authenticated: Usted ya está registrado. + inactive: Su cuenta todavía no está activa. + invalid: Inválido %{authentication_keys} o contraseña. + last_attempt: Tiene un intento más antes de que su cuenta sea bloqueada. + locked: Su cuenta está bloqueada. + not_found_in_database: Inválido %{authentication_keys} o contraseña. + pending: Su cuenta aun se encuentra bajo revisión. + timeout: Su sesión ha expirado. Por favor inicie sesión de nuevo para continuar. + unauthenticated: Necesita iniciar sesión o registrarse antes de continuar. + unconfirmed: Tiene que confirmar su dirección de correo electrónico antes de continuar. + mailer: + confirmation_instructions: + action: Verificar dirección de correo electrónico + action_with_app: Confirmar y regresar a %{app} + explanation: Has creado una cuenta en %{host} con esta dirección de correo electrónico. Estas a un clic de activarla. Si no fue usted, por favor ignore este correo electrónico. + explanation_when_pending: Usted ha solicitado una invitación a %{host} con esta dirección de correo electrónico. Una vez que confirme su dirección de correo electrónico, revisaremos su aplicación. No puede iniciar sesión hasta que su aplicación sea revisada. Si su solicitud está rechazada, sus datos serán eliminados, así que no será necesaria ninguna acción adicional por ti. Si no fuera usted, por favor ignore este correo electrónico. + extra_html: Por favor revise <a href="%{terms_path}">las reglas de la instancia</a> y <a href="%{policy_path}">nuestros términos de servicio</a>. + subject: 'Mastodon: Instrucciones de confirmación para %{instance}' + title: Verificar dirección de correo electrónico + email_changed: + explanation: 'El correo electrónico para su cuenta esta siendo cambiada a:' + extra: Si usted no ha cambiado su correo electrónico, es probable que alguien haya conseguido acceso a su cuenta. Por favor cambie su contraseña inmediatamente o contacte al administrador de la instancia si usted no puede iniciar sesión. + subject: 'Mastodon: Correo electrónico cambiado' + title: Nueva dirección de correo electrónico + password_change: + explanation: La contraseña de su cuenta a sido cambiada. + extra: Si usted no a cambiado su contraseña. es probable que alguien a conseguido acceso a su cuenta. Por favor cambie su contraseña inmediatamente o contacte a el administrador de la instancia si usted esta bloqueado de su cuenta. + subject: 'Mastodon: Contraseña cambiada' + title: Contraseña cambiada + reconfirmation_instructions: + explanation: Confirme la nueva dirección para cambiar su coreo electrónico. + extra: Si no iniciaste este cambio, por favor ignora este correo. Esta dirección de correo para la cuenta de Mastodon no cambiará hasta que accedas al vinculo arriba. + subject: 'Mastodon: Confirme correo electrónico para %{instance}' + title: Verifique dirección de correo electrónico + reset_password_instructions: + action: Cambiar contraseña + explanation: Solicitaste una nueva contraseña para tu cuenta. + extra: Si no solicitaste esto, por favor ignora este correo. Tu contraseña no cambiará hasta que tu accedas al vinculo arriba y crees una nueva. + subject: 'Mastodon: Instrucciones para reiniciar contraseña' + title: Reiniciar contraseña + two_factor_disabled: + explanation: La autenticación de dos factores para tu cuenta ha sido deshabilitada. Ahora puedes conectarte solamente usando la dirección de correo electrónico y la contraseña. + subject: 'Mastodon: La autenticación de dos factores está deshabilitada' + title: 2FA desactivada + two_factor_enabled: + explanation: La autenticación de dos factores para tu cuenta ha sido habilitada. Se requiere un token generado por la aplicación TOTP emparejada para ingresar. + subject: 'Mastodon: La autenticación de dos factores está habilitada' + title: 2FA activada + two_factor_recovery_codes_changed: + explanation: Los códigos de recuperación previos han sido invalidados y se generaron códigos nuevos. + subject: 'Mastodon: Los códigos de recuperación de dos factores fueron regenerados' + title: Códigos de recuperación 2FA cambiados + unlock_instructions: + subject: 'Mastodon: Instrucciones para desbloquear' + omniauth_callbacks: + failure: No podemos autentificarle desde %{kind} debido a "%{reason}". + success: Autentificado con éxito desde la cuenta %{kind} . + passwords: + no_token: No puede acceder a esta página sin provenir desde el correo de reinicio de contraseña. Si viene desde el correo de reinicio de contraseña, por favor asegúrese que está utilizando la dirección completa proporcionada. + send_instructions: Recibirá un correo electrónico con instrucciones sobre cómo reiniciar su contraseña en pocos minutos. + send_paranoid_instructions: Si su correo electrónico existe en nuestra base de datos, recibirá un enlace de recuperación de contraseña en su dirección de correo en pocos minutos. + updated: Su contraseña ha sido cambiada con éxito. Ahora ya está registrado. + updated_not_active: Su contraseña ha sido cambiada con éxito. + registrations: + destroyed: "¡Adios! Su cuenta ha sido cancelada con éxito. Esperamos verle pronto de nuevo." + signed_up: "¡Bienvenido! Se ha registrado con éxito." + signed_up_but_inactive: Se ha registrado con éxito. Sin embargo, no podemos identificarle porque su cuenta no ha sido activada todavía. + signed_up_but_locked: Se ha registrado con éxito. Sin embargo, no podemos identificarle porque su cuenta está bloqueada. + signed_up_but_pending: Un mensaje con un enlace de confirmacion ha sido enviado a su direccion de email. Luego de clickear el link revisaremos su aplicacion. Seras notificado si es aprovada. + signed_up_but_unconfirmed: Un mensaje con un enlace de confirmación ha sido enviado a su correo electrónico. Por favor siga el enlace para activar su cuenta. + update_needs_confirmation: Ha actualizado su cuenta con éxito, pero necesitamos verificar su nueva dirección de correo. Por favor compruebe su correo y siga el enlace para confirmar su nueva dirección de correo. + updated: su cuenta ha sido actualizada con éxito. + sessions: + already_signed_out: Cerró sesión con éxito. + signed_in: Se registró con éxito. + signed_out: Cerró sesión con éxito. + unlocks: + send_instructions: Recibirá un correo electrónico con instrucciones sobre cómo desbloquear su cuenta en pocos minutos. + send_paranoid_instructions: Si su cuenta existe, recibirá un correo electrónico con instrucciones sobre cómo desbloquearla en pocos minutos. + unlocked: Su cuenta ha sido desbloqueada con éxito. Por favor inicie sesión para continuar. + errors: + messages: + already_confirmed: ya fue confirmado, por favor intente iniciar sesión + confirmation_period_expired: necesita ser confirmado dentro de %{period}, por favor pida una nueva + expired: ha expirado, por favor pida una nueva + not_found: no encontrado + not_locked: no fue bloqueada + not_saved: + one: '1 error prohibió este %{resource} de ser guardado:' + other: "%{count} errores prohibieron este %{resource} de ser guardado:" diff --git a/config/locales/devise.eu.yml b/config/locales/devise.eu.yml index 3526f2ab5..2160f2243 100644 --- a/config/locales/devise.eu.yml +++ b/config/locales/devise.eu.yml @@ -46,6 +46,10 @@ eu: extra: Ez baduzu hau eskatu, mesedez ezikusi e-mail hau. Zure pasahitza ez da aldatuko goiko estekara sartu eta berri bat sortzen ez baduzu. subject: 'Mastodon: Pasahitza berrezartzeko argibideak' title: Pasahitza berrezartzea + two_factor_disabled: + title: 2FA desgaituta + two_factor_enabled: + title: 2FA gaituta unlock_instructions: subject: 'Mastodon: Desblokeatzeko argibideak' omniauth_callbacks: diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml index dc89b478b..37ebdaa07 100644 --- a/config/locales/devise.fr.yml +++ b/config/locales/devise.fr.yml @@ -9,7 +9,7 @@ fr: already_authenticated: Vous êtes déjà connecté⋅e. inactive: Votre compte n’est pas encore activé. invalid: "%{authentication_keys} ou mot de passe invalide." - last_attempt: Vous avez droit à une tentative avant que votre compte ne soit verrouillé. + last_attempt: Vous avez droit à une dernière tentative avant que votre compte ne soit verrouillé. locked: Votre compte est verrouillé. not_found_in_database: "%{authentication_keys} ou mot de passe invalide." pending: Votre compte est toujours en cours d'approbation. diff --git a/config/locales/devise.ja.yml b/config/locales/devise.ja.yml index ffdbd1b60..5f32b2381 100644 --- a/config/locales/devise.ja.yml +++ b/config/locales/devise.ja.yml @@ -21,7 +21,7 @@ ja: action: メールアドレスの確認 action_with_app: 確認し %{app} に戻る explanation: このメールアドレスで%{host}にアカウントを作成しました。有効にするまであと一歩です。もし心当たりがない場合、申し訳ありませんがこのメールを無視してください。 - explanation_when_pending: このメールアドレスで%{host}への登録を申請しました。あなたがメールアドレスを確認したら、サーバー管理者が申請を審査します。それまでログインできません。申請が却下された場合、あなたのデータは削除されますので以降の操作は必要ありません。もし心当たりがない場合、申し訳ありませんがこのメールを無視してください。 + explanation_when_pending: このメールアドレスで %{host} への登録を申請しました。あなたがメールアドレスを確認したら、サーバー管理者が申請を審査します。ログインして一部設定を変更したりアカウントを削除できますが、ほとんどの機能は申請が承認されるまで利用できません。申請が却下された場合、あなたのデータは削除されますので以降の操作は必要ありません。もし心当たりがない場合、申し訳ありませんがこのメールを無視してください。 extra_html: また <a href="%{terms_path}">サーバーのルール</a> と <a href="%{policy_path}">利用規約</a> もお読みください。 subject: 'Mastodon: メールアドレスの確認 %{instance}' title: メールアドレスの確認 diff --git a/config/locales/devise.th.yml b/config/locales/devise.th.yml index dd18229df..383c51513 100644 --- a/config/locales/devise.th.yml +++ b/config/locales/devise.th.yml @@ -21,6 +21,10 @@ th: title: เปลี่ยนรหัสผ่านแล้ว reset_password_instructions: action: เปลี่ยนรหัสผ่าน + two_factor_disabled: + title: ปิดใช้งาน 2FA แล้ว + two_factor_enabled: + title: เปิดใช้งาน 2FA แล้ว passwords: send_instructions: If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes. send_paranoid_instructions: If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes. diff --git a/config/locales/devise.uk.yml b/config/locales/devise.uk.yml index c44bda5ea..e1eb2d1ae 100644 --- a/config/locales/devise.uk.yml +++ b/config/locales/devise.uk.yml @@ -45,6 +45,10 @@ uk: extra: Якщо ви не запитували зміну пароля, ігноруйте цей лист. Ваш пароль не буде змінено, допоки ви не перейдете за посиланням та не створите новий. subject: 'Mastodon: Інструкції для скидання паролю' title: Скидання пароля + two_factor_disabled: + title: Двофакторна автентифікація вимкнена + two_factor_enabled: + title: Двофакторна автентифікація увімкнена unlock_instructions: subject: 'Mastodon: Інструкції для розблокування' omniauth_callbacks: diff --git a/config/locales/el.yml b/config/locales/el.yml index 7756dc0e0..caaab41f8 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -18,7 +18,6 @@ el: discover_users: Ανακάλυψε χρήστες documentation: Τεκμηρίωση federation_hint_html: Με ένα λογαριασμό στο %{instance} θα μπορείς να ακολουθείς ανθρώπους σε οποιοδήποτε κόμβο στο Mastodon αλλά και αλλού. - generic_description: "%{domain} είναι ένας εξυπηρετητής στο δίκτυο" get_apps: Δοκίμασε μια εφαρμογή κινητού hosted_on: Το Mastodon φιλοξενείται στο %{domain} instance_actor_flash: | @@ -39,6 +38,10 @@ el: unavailable_content_description: domain: Διακομιστής reason: 'Αιτία:' + rejecting_media: 'Τα αρχεία πολυμέσων αυτών των διακομιστών δεν θα επεξεργάζονται, δεν θα αποθηκεύονται και δεν θα εμφανίζεται η προεπισκόπησή τους, απαιτώντας χειροκίνητη επιλογή μέχρι το αρχικό αρχείο:' + silenced: 'Οι δημοσιεύσεις αυτών των διακομιστών θα είναι κρυμμένες από τις δημόσιες ροές και συζητήσεις, ενώ δεν θα δημιουργούνται ειδοποιήσεις για τις ενέργειες των χρηστών τους, εκτός κι αν τους ακολουθείς:' + suspended: 'Κανένα δεδομένο δε θα επεξεργάζεται, δε θα αποθηκεύεται και δε θα ανταλλάσσεται για αυτούς τους διακομιστές, καθιστώντας οποιαδήποτε αλληλεπίδραση ή επικοινωνία με χρήστες από αυτούς τους διακομιστές αδύνατη:' + unavailable_content_html: Το Mastodon γενικά επιτρέπει να δεις περιεχόμενο και να αλληλεπιδράσεις με χρήστες από οποιονδήποτε διακομιστή στο fediverse. Εδώ είναι οι εξαιρέσεις που ισχύουν σε αυτόν τον συγκεκριμένο διακομιστή. user_count_after: one: χρήστης other: χρήστες @@ -236,12 +239,14 @@ el: delete: Διαγραφή destroyed_msg: Επιτυχής καταστροφή του emojo! disable: Απενεργοποίηση + disabled: Απενεργοποιημένα disabled_msg: Επιτυχής απενεργοποίηση αυτού του emoji emoji: Emoji enable: Ενεργοποίηση enabled: Ενεργοποιημένα enabled_msg: Επιτυχής ενεργοποίηση αυτού του emoji image_hint: PNG έως 50KB + list: Εμφάνιση listed: Αναφερθέντα new: title: Προσθήκη νέου προσαρμοσμένου emoji @@ -250,6 +255,7 @@ el: shortcode_hint: Τουλάχιστον 2 χαρακτήρες, μόνο αλφαριθμητικοί και κάτω παύλες title: Προσαρμοσμένα emoji uncategorized: Χωρίς κατηγορία + unlist: Απόκρυψη unlisted: Μη καταχωρημένα update_failed_msg: Αδυναμία ενημέρωσης του emoji updated_msg: Επιτυχής ενημέρωση του emoji! @@ -381,6 +387,7 @@ el: pending: Περιμένοντας την έγκριση του ανταποκριτή save_and_enable: Αποθήκευση και ενεργοποίηση setup: Όρισε μια σύνδεση ανταπόκρισης + signatures_not_enabled: Οι ανταποκριτές δεν θα λειτουργούν σωστά όσο είναι ενεργοποιημένες οι επιλογές ασφαλούς λειτουργίας ή επιτρεπόμενων συνδέσεων status: Κατάσταση title: Ανταποκριτές report_notes: @@ -499,6 +506,9 @@ el: desc_html: Εμφάνισε τη δημόσια ροή στην αρχική σελίδα title: Προεπισκόπιση ροής title: Ρυθμίσεις ιστότοπου + trendable_by_default: + desc_html: Επηρεάζει τις ταμπέλες που δεν είχαν απαγορευτεί νωρίτερα + title: Επέτρεψε στις ταμπέλες να εμφανιστούν στις τάσεις χωρίς προηγούμενη έγκριση trends: desc_html: Δημόσια εμφάνιση ταμπελών που έχουν ήδη εγκριθεί και είναι δημοφιλείς title: Δημοφιλείς ταμπέλες @@ -552,6 +562,11 @@ el: new_trending_tag: body: 'Η ταμπέλα #%{name} είναι δημοφιλής σήμερα, αλλά δεν έχει εγκριθεί μέχρι τώρα. Δεν θα εμφανίζεται δημοσίως μέχρι να δοθεί έγκρισή, αλλιώς αποθηκεύστε τη φόρμα ως έχει για να μην την δείτε ξανά.' subject: Νέα ταμπέλα προς έγκριση στο %{instance} (#%{name}) + aliases: + add_new: Δημιουργία ψευδώνυμου + created_msg: Δημιουργήθηκε νέο ψευδώνυμο. Τώρα μπορείς να ξεκινήσεις τη μεταφορά από τον παλιό λογαριασμό. + deleted_msg: Αφαιρέθηκε το ψευδώνυμο. Η μεταφορά από εκείνον τον λογαριασμό σε αυτόν εδώ δε θα είναι πλέον δυνατή. + remove: Αφαίρεση ψευδώνυμου appearance: advanced_web_interface: Προηγμένη λειτουργία χρήσης advanced_web_interface_hint: 'Αν θέλεις να χρησιμοποιήσεις ολόκληρο το πλάτος της οθόνης σου, η προηγμένη λειτουργία χρήσης σου επιτρέπει να ορίσεις πολλαπλές κολώνες ώστε να βλέπεις ταυτόχρονα όση πληροφορία θέλεις: Την αρχική ροή, τις ειδοποιήσεις, την ομοσπονδιακή ροή και όσες λίστες και ταμπέλες θέλεις.' @@ -801,8 +816,24 @@ el: acct: ΌνομαΧρήστη@Τομέας του νέου λογαριασμού cancel: Ακύρωση ανακατεύθυνσης errors: + move_to_self: δεν επιτρέπεται να είναι ο τρέχων λογαριασμός not_found: δεν βρέθηκε + on_cooldown: Είσαι σε περίοδο προσαρμογής + followers_count: Ακόλουθοι τη στιγμή της μεταφοράς + incoming_migrations: Μεταφορά από διαφορετικό λογαριασμό + past_migrations: Προηγούμενες μετακινήσεις proceed_with_move: Μετακίνηση ακολούθων + redirecting_to: Ο λογαριασμός σου ανακατευθύνει στο %{acct}. + set_redirect: Όρισε ανακατεύθυνση + warning: + backreference_required: Θα πρέπει πρώτα να ρυθμιστεί μια αναφορά από τον νέο λογαριασμό προς αυτόν + before: 'Πριν συνεχίσεις, παρακαλούμε διάβασε αυτές τις σημειώσεις προσεκτικά:' + cooldown: Άπαξ και μεταφερθείς υπάρχει μια περίοδος προσαρμογής κατά την οποία δε θα μπορείς να μετακινηθείς ξανά + disabled_account: Ο τρέχων λογαριασμός σου δε θα είναι πλήρως ενεργός μετά. Πάντως θα έχεις πρόσβαση στην εξαγωγή δεδομένων καθώς και στην επανενεργοποίηση. + followers: Αυτή η ενέργεια θα μεταφέρει όλους τους ακόλουθούς σου από τον τρέχοντα λογαριασμός στον νέο λογαριασμό + only_redirect_html: Εναλλακτικά, μπορείς <a href="%{path}">απλά να προσθέσεις μια ανακατατεύθυνση στο προφίλ σου</a>. + other_data: Κανένα άλλο δεδομένο δε θα μεταφερθεί αυτόματα + redirect: Το προφίλ του τρέχοντος λογαριασμό σου θα ενημερωθεί με μια σημείωση ανακατεύθυνσης και θα εξαιρεθεί από τα αποτελέσματα αναζητήσεων moderation: title: Συντονισμός notification_mailer: @@ -947,6 +978,7 @@ el: settings: account: Λογαριασμός account_settings: Ρυθμίσεις λογαριασμού + aliases: Ψευδώνυμα λογαριασμών appearance: Εμφάνιση authorized_apps: Εγκεκριμένες εφαρμογές back: Πίσω στο Mastodon @@ -964,8 +996,6 @@ el: profile: Προφίλ relationships: Ακολουθεί και ακολουθείται two_factor_authentication: Πιστοποίηση 2 παραγόντων (2FA) - spam_check: - spam_detected_and_silenced: 'Αυτόματο μήνυμα: Ανιχνεύθηκε ανεπιθύμητο περιεχόμενο (σπαμ) και ο αποστολέας αποσιωπήθηκε αυτόματα. Αν έγινε λάθος, παρακαλώ διακόψτε την αποσιώπηση του λογαριασμού.' statuses: attached: description: 'Συνημμένα: %{attached}' @@ -989,6 +1019,9 @@ el: private: Τα μη δημόσια τουτ δεν καρφιτσώνονται reblog: Οι προωθήσεις δεν καρφιτσώνονται poll: + total_people: + one: "%{count} άτομο" + other: "%{count} άτομα" total_votes: one: "%{count} ψήφος" other: "%{count} ψήφοι" diff --git a/config/locales/en.yml b/config/locales/en.yml index 2665d0b28..1ebeba2f2 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2,7 +2,7 @@ en: about: about_hashtag_html: These are public toots tagged with <strong>#%{hashtag}</strong>. You can interact with them if you have an account anywhere in the fediverse. - about_mastodon_html: Mastodon is a social network based on open web protocols and free, open-source software. It is decentralized like e-mail. + about_mastodon_html: 'The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!' about_this: About active_count_after: active active_footnote: Monthly Active Users (MAU) @@ -18,7 +18,6 @@ en: discover_users: Discover users documentation: Documentation federation_hint_html: With an account on %{instance} you'll be able to follow people on any Mastodon server and beyond. - generic_description: "%{domain} is one server in the network" get_apps: Try a mobile app hosted_on: Mastodon hosted on %{domain} instance_actor_flash: | @@ -486,8 +485,8 @@ en: open: Anyone can sign up title: Registrations mode show_known_fediverse_at_about_page: - desc_html: When toggled, it will show toots from all the known fediverse on preview. Otherwise it will only show local toots. - title: Show known fediverse on timeline preview + desc_html: When disabled, restricts the public timeline linked from the landing page to showing only local content + title: Include federated content on unauthenticated public timeline page show_reblogs_in_public_timelines: desc_html: Show public boosts of public toots in local and public timelines. title: Show boosts in public timelines @@ -511,15 +510,18 @@ en: title: Custom terms of service site_title: Server name spam_check_enabled: - desc_html: Mastodon can auto-silence and auto-report accounts that send repeated unsolicited messages. There may be false positives. + desc_html: Mastodon can auto-report accounts that send repeated unsolicited messages. There may be false positives. title: Anti-spam automation thumbnail: desc_html: Used for previews via OpenGraph and API. 1200x630px recommended title: Server thumbnail timeline_preview: - desc_html: Display public timeline on landing page - title: Timeline preview + desc_html: Display link to public timeline on landing page and allow API access to the public timeline without authentication + title: Allow unauthenticated access to public timeline title: Site settings + trendable_by_default: + desc_html: Affects hashtags that have not been previously disallowed + title: Allow hashtags to trend without prior review trends: desc_html: Publicly display previously reviewed hashtags that are currently trending title: Trending hashtags @@ -1022,7 +1024,7 @@ en: relationships: Follows and followers two_factor_authentication: Two-factor Auth spam_check: - spam_detected_and_silenced: This is an automated report. Spam has been detected and the sender has been silenced automatically. If this is a mistake, please unsilence the account. + spam_detected: This is an automated report. Spam has been detected. statuses: attached: description: 'Attached: %{attached}' diff --git a/config/locales/eo.yml b/config/locales/eo.yml index f33c094fc..dd3ca1079 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -18,7 +18,6 @@ eo: discover_users: Malkovri uzantojn documentation: Dokumentado federation_hint_html: Per konto ĉe %{instance}, vi povos sekvi homojn ĉe iu ajn Mastodon nodo kaj preter. - generic_description: "%{domain} estas unu servilo en la reto" get_apps: Provu telefonan aplikaĵon hosted_on: "%{domain} estas nodo de Mastodon" instance_actor_flash: | @@ -508,13 +507,16 @@ eo: directory: En la adresaro in_directory: "%{count} en adresaro" last_active: Lasta aktiva + most_popular: La plej populara most_recent: Plej lasta name: Kradvorto review: La statuso de la recenzo reviewed: Recenzis title: Kradvortoj trending_right_now: Nunaj furoraĵoj + unique_uses_today: "%{count} uzas hodiaŭ" unreviewed: Ne recenzis + updated_msg: Kradvorto agordoj ĝisdatigis sukcese title: Administrado warning_presets: add_new: Aldoni novan @@ -533,6 +535,11 @@ eo: new_trending_tag: body: 'La kradvorto #%{name} furoras hodiaŭ, sed ankoraŭ ne estis kontrolita. Ĝi ne aperos publike sen via aprobo. Se vi ne volas tion, simple konservu la formularon tiel kiel.' subject: Nova kradvorto kontrolebla en %{instance} (#%{name}) + aliases: + add_new: Krei alinomon + created_msg: Kreis novan alinomon sukcese. Vi povas inici la transloki el la malnovan konton nun. + deleted_msg: Forigis la alinomon sukcese. Transloki el tiu konto al ĉi tiu ne plu eblos. + remove: Malligili alinomon appearance: advanced_web_interface: Altnivela retpaĝa interfaco advanced_web_interface_hint: 'Se vi volas uzi la tutan larĝecon de via ekrano, la kompleksa reta interfaco permesas al vi agordi multajn malsamajn kolumnojn por vidi tiom da informoj kiom vi volas samtempe: Hejmo, sciigoj, fratara tempolinio, kaj ajna kvanto de listoj kaj kradvortoj.' @@ -559,9 +566,11 @@ eo: apply_for_account: Peti inviton change_password: Pasvorto checkbox_agreement_html: Mi samopinii al la <a href="%{rules_path}" target="_blank">Servo reguloj</a> kaj <a href="%{terms_path}" target="_blank">kondiĉo al servadon</a> + checkbox_agreement_without_rules_html: Mi konsenti la <a href="%{terms_path}" target="_blank">reguloj de servado</a> delete_account: Forigi konton delete_account_html: Se vi deziras forigi vian konton, vi povas <a href="%{path}">fari tion ĉi tie</a>. Vi bezonos konfirmi vian peton. description: + prefix_invited_by_user: "@%{name} invitigi vin aligiĝi ĉi tiu servilo de Mastodon!" prefix_sign_up: Registriĝi ĉe Mastodon hodiaŭ! didnt_get_confirmation: Ĉu vi ne ricevis la instrukciojn por konfirmi? forgot_password: Pasvorto forgesita? @@ -617,6 +626,7 @@ eo: x_seconds: "%{count}s" deletes: confirm_password: Enmetu vian nunan pasvorton por konfirmi vian identecon + confirm_username: Enigi vian uzantnomon por konfirmi la procedo proceed: Forigi konton success_msg: Via konto estis sukcese forigita directories: @@ -761,6 +771,7 @@ eo: too_many: Aldoni pli ol 4 dosierojn ne eblas migrations: acct: uzantnomo@domajno de la nova konto + proceed_with_move: Translokigi sekvantoj moderation: title: Kontrolado notification_mailer: @@ -905,6 +916,7 @@ eo: settings: account: Konto account_settings: Agordoj de konto + aliases: Kontoj alinomoj appearance: Apero authorized_apps: Rajtigitaj aplikaĵoj back: Reveni al Mastodon diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index fe61b69c4..d70007d27 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -1,5 +1,387 @@ --- es-AR: + about: + about_hashtag_html: Estos son toots públicos etiquetados con <strong>#%{hashtag}</strong>. Si tenés una cuenta en cualquier parte del fediverso, podés interactuar con ellos. + about_mastodon_html: Mastodon es una red social basada en protocolos abiertos de la web y es software libre y de código abierto. Es descentralizada, como el correo electrónico. + about_this: Acerca de Mastodon + active_count_after: activo + active_footnote: Usuarios activos mensualmente (MAU) + administered_by: 'Administrado por:' + api: API + apps: Aplicaciones móviles + apps_platforms: Usá Mastodon desde iOS, Android y otras plataformas + browse_directory: Explorá el directorio de perfiles y filtrá por intereses + browse_public_posts: Explorá un flujo en tiempo real de toots públicos en Mastodon + contact: Contacto + contact_missing: No establecido + contact_unavailable: No disponible + discover_users: Descubrir usuarios + documentation: Documentación + federation_hint_html: Con una cuenta en %{instance} vas a poder seguir a gente de cualquier servidor de Mastodon y más allá. + get_apps: Probá una aplicación móvil + hosted_on: Mastodon alojado en %{domain} + instance_actor_flash: | + Esta cuenta es un actor virtual usado para representar al propio servidor y no a ningún usuario individual. + Se usa para fines federativos y no debe ser bloqueado a menos que quieras bloquear toda la instancia, en cuyo caso deberías usar un bloqueo de dominio. + learn_more: Aprendé más + privacy_policy: Política de privacidad + see_whats_happening: Esto es lo que está pasando ahora + server_stats: 'Estadísticas del servidor:' + source_code: Código fuente + status_count_after: + one: estado + other: estados + status_count_before: Que enviaron + tagline: Seguí a tus amigos y descubrí nueva gente + terms: Términos del servicio + unavailable_content: Contenido no disponible + unavailable_content_description: + domain: Servidor + reason: Razón + rejecting_media: 'Los archivos de medios de este servidor no van a ser procesados y no se mostrarán miniaturas, lo que requiere un clic manual hacia el archivo original:' + silenced: 'Los toots de estos servidores se ocultarán en las líneas temporales y conversaciones públicas, y no se generarán notificaciones de las interacciones de sus usuarios, a menos que los estés siguiendo:' + suspended: 'No se procesarán, almacenarán o intercambiarán datos de estos servidores, haciendo imposible cualquier interacción o comunicación con los usuarios de estos servidores:' + unavailable_content_html: Mastodon generalmente te permite ver contenido e interactuar con usuarios de cualquier otro servidor en el fediverso. Estas son las excepciones que se hicieron en este servidor en particular. + user_count_after: + one: usuario + other: usuarios + user_count_before: Hogar de + what_is_mastodon: "¿Qué es Mastodon?" + accounts: + choices_html: 'Recomendados de %{name}:' + endorsements_hint: Podés recomendar a gente que seguís desde la interface web, y van a aparecerán acá. + featured_tags_hint: Pdés destacar etiquetas específicas que se mostrarán acá. + follow: Seguir + followers: + one: Seguidor + other: Seguidores + following: Siguiendo + joined: Se unió en %{date} + last_active: última vez activo + link_verified_on: La propiedad de este enlace fue verificada el %{date} + media: Medios + moved_html: "%{name} se mudó a %{new_profile_link}:" + network_hidden: Esta información no está disponible + never_active: Nunca + nothing_here: "¡No hay nada acá!" + people_followed_by: "%{name} sigue a estas personas" + people_who_follow: Estas personas siguen a %{name} + pin_errors: + following: Ya tenés que estar siguiendo a la persona que querés recomendar + posts: + one: Toot + other: Toots + posts_tab_heading: Toots + posts_with_replies: Toots con respuestas + reserved_username: El nombre de usuario está reservado + roles: + admin: Administrador + bot: Bot + moderator: Moderador + unavailable: Perfil no disponible + unfollow: Dejar de seguir + admin: + account_actions: + action: Ejecutar acción + title: Ejecutar acción de moderación en %{acct} + account_moderation_notes: + create: Dejar nota + created_msg: "¡Nota de moderación creada exitosamente!" + delete: Eliminar + destroyed_msg: "¡Nota de moderación destruída exitosamente!" + accounts: + approve: Aprobar + approve_all: Aprobar todas + are_you_sure: "¿Estás seguro?" + avatar: Avatar + by_domain: Dominio + change_email: + changed_msg: "¡Correo electrónico de cuenta cambiado exitosamente!" + current_email: Correo electrónico actual + label: Cambiar correo electrónico + new_email: Nuevo correo electrónico + submit: Cambiar correo electrónico + title: Cambiar correo electrónico para %{username} + confirm: Confirmar + confirmed: Confirmado + confirming: Confirmando + deleted: Eliminado + demote: Bajar de nivel + disable: Deshabilitar + disable_two_factor_authentication: Deshabilitar 2FA + disabled: Deshabilitada + display_name: Nombre para mostrar + domain: Dominio + edit: Editar + email: Correo electrónico + email_status: Estado del correo + enable: Habilitar + enabled: Habilitada + feed_url: Dirección de la fuente web + followers: Seguidores + followers_url: Dirección web de los seguidores + header: Cabecera + inbox_url: Dirección web de la bandeja de entrada + invited_by: Invitado por + ip: Dirección IP + joined: Se unió en + location: + all: Todas + local: Local + remote: Remota + title: Ubicación + login_status: Estado del inicio de sesión + media_attachments: Adjuntos + memorialize: Convertir en recordatorio + moderation: + active: Activa + all: Todas + pending: Pendiente + silenced: Silenciados + suspended: Suspendidos + title: Moderación + moderation_notes: Notas de moderación + most_recent_activity: Actividad más reciente + most_recent_ip: Direcciones IP más recientes + no_account_selected: No se cambió ninguna cuenta ya que ninguna fue seleccionada + no_limits_imposed: Sin límites impuestos + not_subscribed: No suscripto + outbox_url: Dirección web de la bandeja de salida + pending: Revisión pendiente + perform_full_suspension: Suspender + profile_url: Dirección web del perfil + promote: Promocionar + protocol: Protocolo + public: Pública + push_subscription_expires: La suscripción PuSH vence + redownload: Recargar perfil + reject: Rechazar + reject_all: Rechazar todas + remove_avatar: Quitar avatar + remove_header: Quitar cabecera + resend_confirmation: + already_confirmed: Este usuario ya está confirmado + send: Reenviar correo electrónico de confirmación + success: "¡Correo electrónico de confirmación enviado exitosamente!" + reset: Restablecer + reset_password: Cambiar contraseña + resubscribe: Resuscribir + role: Permisos + roles: + admin: Administrador + moderator: Moderador + staff: Equipo + user: Usuario + search: Buscar + shared_inbox_url: Dirección web de la bandeja de entrada compartida + show: + created_reports: Informes hechos + targeted_reports: Denunciado por otros + silence: Silenciar + silenced: Silenciadas + statuses: Estados + subscribe: Suscribirse + suspended: Suspendidas + title: Cuentas + unconfirmed_email: Correo electrónico sin confirmar + undo_silenced: Deshacer silenciado + undo_suspension: Deshacer suspensión + unsubscribe: Desuscribirse + username: Nombre de usuario + warn: Advertir + web: Web + whitelisted: Aprobadas + action_logs: + actions: + assigned_to_self_report: "%{name} se asignó la denuncia %{target} a sí" + change_email_user: "%{name} cambió la dirección de correo electrónico del usuario %{target}" + confirm_user: "%{name} confirmó la dirección de correo del usuario %{target}" + create_account_warning: "%{name} envió una advertencia a %{target}" + create_custom_emoji: "%{name} subió nuevo emoji %{target}" + create_domain_block: "%{name} bloqueó el dominio %{target}" + create_email_domain_block: "%{name} desaprobó el dominio de correo electrónico %{target}" + demote_user: "%{name} bajó de nivel al usuario %{target}" + destroy_custom_emoji: "%{name} destruyó el emoji %{target}" + destroy_domain_block: "%{name} desbloqueó el dominio %{target}" + destroy_email_domain_block: "%{name} aprobó el dominio de correo electrónico %{target}" + destroy_status: "%{name} eliminó el estado de %{target}" + disable_2fa_user: "%{name} deshabilitó el requerimiento de dos factores para el usuario %{target}" + disable_custom_emoji: "%{name} deshabilitó el emoji %{target}" + disable_user: "%{name} deshabilitó el inicio de sesión para el usuario %{target}" + enable_custom_emoji: "%{name} habilitó el emoji %{target}" + enable_user: "%{name} habilitó el inicio de sesión para el usuario %{target}" + memorialize_account: "%{name} convirtió la cuenta de %{target} en una página de recordatorio" + remove_avatar_user: "%{name} quitó el avatar de %{target}" + reopen_report: "%{name} reabrió la denuncia %{target}" + reset_password_user: "%{name} cambió la contraseña del usuario %{target}" + resolve_report: "%{name} resolvió la denuncia %{target}" + silence_account: "%{name} silenció la cuenta de %{target}" + suspend_account: "%{name} suspendió la cuenta de %{target}" + unassigned_report: "%{name} desasignó la denuncia %{target}" + unsilence_account: "%{name} quitó el silenciado de la cuenta de %{target}" + unsuspend_account: "%{name} quitó la suspensión de la cuenta de %{target}" + update_custom_emoji: "%{name} actualizó el emoji %{target}" + update_status: "%{name} actualizó el estado de %{target}" + deleted_status: "(estado borrado)" + title: Registro de auditoría + custom_emojis: + assign_category: Asignar categoría + by_domain: Dominio + copied_msg: Copia local del emoji creada exitosamente + copy: Copiar + copy_failed_msg: No se pudo realizar una copia local de ese emoji + create_new_category: Crear nueva categoría + created_msg: "¡Emoji creado exitosamente!" + delete: Eliminar + destroyed_msg: "¡Emoji destruido exitosamente!" + disable: Deshabilitar + disabled: Deshabilitado + disabled_msg: Se deshabilitó ese emoji exitosamente + emoji: Emoji + enable: Habilitar + enabled: Habilitado + enabled_msg: Se habilitó ese emoji exitosamente + image_hint: PNG de hasta 50KB + list: Lista + listed: Listados + new: + title: Agregar nuevo emoji personalizado + overwrite: Sobreescribir + shortcode: Código corto + shortcode_hint: Al menos 2 caracteres, sólo caracteres alfanuméricos y subguiones ("_") + title: Emojis personalizados + uncategorized: Sin categoría + unlist: No agregar a lista + unlisted: No listado + update_failed_msg: No se pudo actualizar ese emoji + updated_msg: "¡Emoji actualizado exitosamente!" + upload: Subir + dashboard: + authorized_fetch_mode: Modo seguro + backlog: trabajos registrados + config: Configuración + feature_deletions: Eliminaciones de cuenta + feature_invites: Enlaces de invitación + feature_profile_directory: Directorio de perfiles + feature_registrations: Registros + feature_relay: Relé de federación + feature_spam_check: Anti-spam + feature_timeline_preview: Previsualización de la línea temporal + features: Funciones + hidden_service: Federación con servicios ocultos + open_reports: abrir denuncias + pending_tags: etiquetas esperando revisión + pending_users: usuarios esperando revisión + recent_users: Usuarios recientes + search: Búsqueda de texto completo + single_user_mode: Modo de usuario único + software: Software + space: Uso del espacio + title: Panel + total_users: usuarios en total + trends: Tendencias + week_interactions: interacciones esta semana + week_users_active: activos esta semana + week_users_new: usuarios esta semana + whitelist_mode: Modo de aprobación + domain_allows: + add_new: Aprobar dominio + created_msg: El dominio se aprobó exitosamente + destroyed_msg: El dominio no se aprobó + undo: No aprobado + domain_blocks: + add_new: Agregar nuevo bloquedo de dominio + created_msg: Ahora se está procesando el bloquedo de dominio + destroyed_msg: Se deshizo el bloqueo de dominio + domain: Dominio + edit: Editar bloqueo de dominio + existing_domain_block_html: Ya le aplicaste límites más estrictos a %{name}, por lo que primero necesitás <a href="%{unblock_url}">desbloquearlo</a>. + new: + create: Crear bloqueo + hint: El bloqueo de dominio no va a prevenir la creación de toots de cuenta en la base de datos, pero se aplicarán métodos específicos de moderación en esas cuentas, retroactiva y automáticamente. + severity: + desc_html: "<strong>Silenciar</strong> hará que los toots de la cuenta sean invisibles a quienes no estén siguiendo esa cuenta. <strong>Suspender</strong> quitará todo el contenido, archivos de medio y datos de perfil de la cuenta. Usá <strong>Ninguno</strong> si simplemente querés rechazar archivos de medios." + noop: Ninguno + silence: Silenciar + suspend: Suspender + title: Nuevo bloquedo de dominio + private_comment: Comentario privado + private_comment_hint: Comentario sobre la limitación de este dominio, para uso interno de los moderadores. + public_comment: Comentario público + public_comment_hint: Comentario sobre la limitación de este dominio para el público en general, si está habilitada la publicación de lista de limitaciones de dominio. + reject_media: Rechazar archivos de medio + reject_media_hint: Quita los archivos de medio almacenados e impide la descarga en el futuro. Irrelevante para suspensiones. + reject_reports: Rechazar denuncias + reject_reports_hint: Ignora todas las denuncias que vengan de este dominio. Irrelevante para suspensiones. + rejecting_media: rechazando archivos de medio + rejecting_reports: rechazando denuncias + severity: + silence: silenciado + suspend: suspendido + show: + affected_accounts: + one: Una cuenta afectada en la base de datos + other: "%{count} cuentas afectadas en la base de datos" + retroactive: + silence: Quitar silenciado de las cuentas existentes afectadas de este dominio + suspend: Quitar suspensión de las cuentas existentes afectadas de este dominio + title: Deshacer el bloqueo de dominio para %{domain} + undo: Deshacer + undo: Deshacer bloqueo de dominio + view: Ver bloqueo de dominio + email_domain_blocks: + add_new: Agregar nuevo + created_msg: Se desaprobó dominio de correo electrónico exitosamente + delete: Eliminar + destroyed_msg: Se aprobó dominio de correo electrónico exitosamente + domain: Dominio + new: + create: Agregar dominio + title: Nueva desaprobación de correo electrónico + title: Desaprobación de correo electrónico + followers: + back_to_account: Volver a la cuenta + title: Seguidores de %{acct} + instances: + by_domain: Dominio + delivery_available: La entrega está disponible + known_accounts: + one: "%{count} cuenta conocida" + other: "%{count} cuentas conocidas" + moderation: + all: Todas + limited: Limitadas + title: Moderación + private_comment: Comentario privado + public_comment: Comentario público + title: Federación + total_blocked_by_us: Bloqueada por nosotros + total_followed_by_them: Seguidos por ellos + total_followed_by_us: Seguidos por nosotros + total_reported: Denuncias sobre ellos + total_storage: Adjuntos + invites: + deactivate_all: Desactivar todas + filter: + all: Todas + available: Disponibles + expired: Vencidas + title: Filtrar + title: Invitaciones + pending_accounts: + title: Cuentas pendientes (%{count}) + relays: + add_new: Agregar nuevo relé + delete: Eliminar + description_html: Un <strong>relé de federación</strong> es un servidor intermedio que intercambia grandes volúmenes de toots públicos entre servidores que se suscriben y publican en él. <strong>Puede ayudar a servidores chicos y medianos a descubrir contenido del fediverso</strong>, que de otra manera requeriría que los usuarios locales siguiesen manualmente a personas de servidores remotos. + disable: Deshabilitar + disabled: Deshabilitado + enable: Habilitar + enable_hint: Una vez habilitado, tu servidor se suscribirá a todos los toots públicos desde este relé, y comenzará a enviar los toots públicos de este servidor al relé. + enabled: Habilitado + inbox_url: Dirección web del relé + pending: Esperando aprobación del relé + save_and_enable: Guardar y habilitar errors: '400': The request you submitted was invalid or malformed. '403': You don't have permission to view this page. diff --git a/config/locales/es.yml b/config/locales/es.yml index 0a6341217..8a194fdc1 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -18,7 +18,6 @@ es: discover_users: Descubrir usuarios documentation: Documentación federation_hint_html: Con una cuenta en %{instance} usted podrá seguir a las personas en cualquier servidor de Mastodon y más allá. - generic_description: "%{domain} es un servidor en la red" get_apps: Probar una aplicación móvil hosted_on: Mastodon hosteado en %{domain} instance_actor_flash: | @@ -247,6 +246,7 @@ es: enabled: Activado enabled_msg: Se habilitó con éxito ese emoji image_hint: PNG de hasta 50KB + list: Lista listed: Listados new: title: Añadir nuevo emoji personalizado @@ -255,6 +255,7 @@ es: shortcode_hint: Al menos 2 caracteres, solo caracteres alfanuméricos y guiones bajos title: Emojis personalizados uncategorized: Sin clasificar + unlist: No listado unlisted: Sin listar update_failed_msg: No se pudo actualizar ese emoji updated_msg: "¡Emoji actualizado con éxito!" @@ -386,6 +387,7 @@ es: pending: Esperando la aprobación del relés save_and_enable: Guardar y conectar setup: Preparar una conexión de relés + signatures_not_enabled: Los relés no funcionarán correctamente mientras el modo seguro o el modo de lista blanca estén habilitados status: Estado title: Releses report_notes: @@ -434,10 +436,16 @@ es: custom_css: desc_html: Modificar el aspecto con CSS cargado en cada página title: CSS personalizado + default_noindex: + desc_html: Afecta a todos los usuarios que no han cambiado esta configuración por sí mismos + title: Optar por los usuarios fuera de la indexación en los motores de búsqueda por defecto domain_blocks: all: A todos disabled: A nadie + title: Mostrar dominios bloqueados users: Para los usuarios locales que han iniciado sesión + domain_blocks_rationale: + title: Mostrar la razón de ser hero: desc_html: Mostrado en la página principal. Recomendable al menos 600x100px. Por defecto se establece a la miniatura de la instancia title: Imagen de portada @@ -498,6 +506,9 @@ es: desc_html: Mostrar línea de tiempo pública en la portada title: Previsualización title: Ajustes del sitio + trendable_by_default: + desc_html: Afecta a etiquetas que no han sido previamente rechazadas + title: Permitir que las etiquetas sean tendencia sin revisión previa trends: desc_html: Mostrar públicamente hashtags previamente revisados que son tendencia title: Hashtags de tendencia @@ -518,6 +529,7 @@ es: tags: accounts_today: Usos únicos de hoy accounts_week: Usos únicos esta semana + breakdown: Desglose del consumo actual por fuentes context: Contexto directory: En el directorio in_directory: "%{count} en el directorio" @@ -554,6 +566,7 @@ es: add_new: Crear alias created_msg: El nuevo alias se ha creado correctamente. Ahora puedes empezar el traslado desde la cuenta antigua. deleted_msg: Elimina el alias correctamente. El traslado de esa cuenta a esta ya no será posible. + hint_html: Si quieres migrar de otra cuenta a esta, aquí puedes crear un alias, es necesario proceder antes de empezar a mover seguidores de la cuenta anterior a esta. Esta acción por sí misma es <strong>inofensiva y reversible</strong>. <strong>La migración de la cuenta se inicia desde la cuenta antigua</strong>. remove: Desvincular alias appearance: advanced_web_interface: Interfaz web avanzada @@ -654,6 +667,7 @@ es: success_msg: Tu cuenta se eliminó con éxito warning: before: 'Antes de continuar, por favor lee con atención las siguientes notas:' + caches: El contenido que ha sido almacenado en caché por otros servidores puede persistir data_removal: Tus publicaciones y el resto de datos se eliminarán definitivamente email_change_html: Puedes <a href="%{path}"> cambiar tu dirección de correo electrónico</a> sin eliminar tu cuenta email_contact_html: Si aún no te ha llegado, puedes escribir a <a href="mailto:%{email}">%{email}</a> para pedir ayuda @@ -669,7 +683,7 @@ es: domain_validator: invalid_domain: no es un nombre de dominio válido errors: - '400': The request you submitted was invalid or malformed. + '400': La solicitud que has enviado no es valida o estaba malformada. '403': No tienes permiso para acceder a esta página. '404': La página que estabas buscando no existe. '406': Esta página no está disponible en el formato solicitado. @@ -705,6 +719,7 @@ es: add_new: Añadir nuevo errors: limit: Ya has alcanzado la cantidad máxima de hashtags + hint_html: "<strong>¿Qué son las etiquetas destacadas?</strong> Se muestran de forma prominente en tu perfil público y permiten a los usuarios navegar por tus publicaciones públicas específicamente bajo esas etiquetas. Son una gran herramienta para hacer un seguimiento de trabajos creativos o proyectos a largo plazo." filters: contexts: home: Timeline propio @@ -730,6 +745,7 @@ es: all: Todos changes_saved_msg: "¡Cambios guardados con éxito!" copy: Copiar + no_batch_actions_available: No hay acciones por lotes disponibles en esta página order_by: Ordenar por save_changes: Guardar cambios validation_errors: @@ -805,7 +821,30 @@ es: cancel_explanation: Al cancelar el redireccionamiento se reactivará tu cuenta actual, pero no recuperarás los seguidores que hayan sido trasladados a la otra cuenta. cancelled_msg: El redireccionamiento se ha cancelado correctamente. errors: + already_moved: es la misma cuenta a la que ya has migrado + missing_also_known_as: no está haciendo referencia a esta cuenta + move_to_self: no puede ser la cuenta actual not_found: no se pudo encontrar + on_cooldown: Estás en tiempo de reutilización + followers_count: Seguidores al momento de migrar + incoming_migrations: Migrar de una cuenta diferente + incoming_migrations_html: Para migrar de otra cuenta a esta, primero necesitas <a href="%{path}">crear un alias de la cuenta</a>. + moved_msg: Tu cuenta ahora se está redirigiendo a %{acct} y tus seguidores se están migrando. + not_redirecting: Tu cuenta no se está redirigiendo a ninguna otra cuenta actualmente. + on_cooldown: Has migrado tu cuenta recientemente. Esta función estará disponible de nuevo en %{count} días. + past_migrations: Migraciones pasadas + proceed_with_move: Migrar seguidores + redirecting_to: Tu cuenta se está redirigiendo a %{acct}. + set_redirect: Establecer redirección + warning: + backreference_required: La nueva cuenta debe ser configurada primero para hacer referencia a esta + before: 'Antes de continuar, por favor lee con atención las siguientes notas:' + cooldown: Después de migrar hay un período de espera durante el cual no podrás volver a migrar + disabled_account: Tu cuenta actual no será completamente utilizable después. Sin embargo, tendrás acceso a la exportación de datos así como a la reactivación. + followers: Esta acción migrará a todos los seguidores de la cuenta actual a la nueva cuenta + only_redirect_html: Alternativamente, solo puedes <a href="%{path}">poner una redirección en tu perfil</a>. + other_data: No se moverán otros datos automáticamente + redirect: El perfil de tu cuenta actual se actualizará con un aviso de redirección y será excluido de las búsquedas moderation: title: Moderación notification_mailer: @@ -950,6 +989,7 @@ es: settings: account: Cuenta account_settings: Ajustes de la cuenta + aliases: Alias de la cuenta appearance: Apariencia authorized_apps: Aplicaciones autorizadas back: Volver al inicio @@ -968,7 +1008,7 @@ es: relationships: Siguiendo y seguidores two_factor_authentication: Autenticación de dos factores spam_check: - spam_detected_and_silenced: Este es un informe automatizado. Se ha detectado spam y el remitente ha sido silenciado automáticamente. Si esto es un error, por favor, deja de silenciar la cuenta. + spam_detected: Este es un informe automatizado. Se ha detectado Spam. statuses: attached: description: 'Adjunto: %{attached}' @@ -992,6 +1032,9 @@ es: private: Los toots no-públicos no pueden fijarse reblog: Un boost no puede fijarse poll: + total_people: + one: persona %{count} + other: "%{count} gente" total_votes: one: "%{count} voto" other: "%{count} votos" @@ -1129,7 +1172,9 @@ es: disable: Mientras su cuenta esté congelada, la información de su cuenta permanecerá intacta, pero no puede realizar ninguna acción hasta que se desbloquee. silence: Mientras su cuenta está limitada, sólo las personas que ya le están siguiendo verán sus toots en este servidor, y puede que se le excluya de varios listados públicos. Sin embargo, otros pueden seguirle manualmente. suspend: Su cuenta ha sido suspendida, y todos tus toots y tus archivos multimedia subidos han sido irreversiblemente eliminados de este servidor, y de los servidores donde tenías seguidores. + get_in_touch: Puede responder a esta dirección de correo electrónico para ponerse en contacto con el personal de %{instance}. review_server_policies: Revisar las políticas del servidor + statuses: 'Específicamente, para:' subject: disable: Su cuenta %{acct} ha sido congelada none: Advertencia para %{acct} diff --git a/config/locales/et.yml b/config/locales/et.yml index 0a66d49f4..6b814a23c 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -18,7 +18,6 @@ et: discover_users: Avasta kasutajaid documentation: Dokumentatsioon federation_hint_html: Kui Teil on kasutaja %{instance}-is, saate Te jälgida inimesi üks kõik millisel Mastodoni serveril ja kaugemalgi. - generic_description: "%{domain} on ainult üks server terves võrgus" get_apps: Proovi mobiilirakendusi hosted_on: Mastodon majutatud %{domain}-is instance_actor_flash: | @@ -884,8 +883,6 @@ et: profile: Profiil relationships: Jälgitud ja jälgijad two_factor_authentication: Kahesammuline autentimine - spam_check: - spam_detected_and_silenced: See on automatiseeritud teavitus. Rämpspost on tuvastatud ja nende autor on automaatselt vaigistatud. Kui see on viga, palun eemaldage vaigistus. statuses: attached: description: 'Manused: %{attached}' diff --git a/config/locales/eu.yml b/config/locales/eu.yml index a3061b99e..1f2ac6644 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -4,7 +4,7 @@ eu: about_hashtag_html: Hauek <strong>#%{hashtag}</strong> traola duten toot publikoak dira. Fedibertsoko edozein kontu baduzu harremanetan jarri zaitezke. about_mastodon_html: Mastodon web protokolo ireki eta libreak darabiltzan gizarte sare bat da. E-mail sarea bezala deszentralizatua da. about_this: Honi buruz - active_count_after: aktiboa + active_count_after: aktibo active_footnote: Hilabeteko erabiltzaile aktiboak (HEA) administered_by: 'Administratzailea(k):' api: APIa @@ -18,7 +18,6 @@ eu: discover_users: Aurkitu erabiltzaileak documentation: Dokumentazioa federation_hint_html: "%{instance} instantzian kontu bat izanda edozein Mastodon zerbitzariko jendea jarraitu ahal izango duzu, eta harago ere." - generic_description: "%{domain} sareko zerbitzari bat da" get_apps: Probatu mugikorrerako aplikazio bat hosted_on: Mastodon %{domain} domeinuan ostatatua instance_actor_flash: 'Kontu hau zerbitzaria bera adierazten duen aktore birtual bat da, ez norbanako bat. Federaziorako erabiltzen da eta ez zenuke blokeatu behar instantzia osoa blokeatu nahi ez baduzu, kasu horretan domeinua blokeatzea egokia litzateke. @@ -35,6 +34,14 @@ eu: status_count_before: Hauek tagline: Jarraitu lagunak eta egin berriak terms: Erabilera baldintzak + unavailable_content: Eduki eskuraezina + unavailable_content_description: + domain: Zerbitzaria + reason: Arrazoia + rejecting_media: 'Zerbitzari hauetako multimedia fitxategiak ez dira prozesatuko ez gordeko, eta ez dira iruditxoak bistaratuko, jatorrizko irudira joan behar izango da klik eginez:' + silenced: 'Zerbitzari hauetako mezuak denbora-lerro eta elkarrizketa publikoetan ezkutatuko dira, eta bere erabiltzaileen interakzioek ez dute jakinarazpenik sortuko ez badituzu jarraitzen:' + suspended: 'Ez da zerbitzari hauetako daturik prozesatuko, gordeko, edo partekatuko, zerbitzari hauetako erabiltzaileekin komunikatzea ezinezkoa eginez:' + unavailable_content_html: Mastodonek orokorrean fedibertsoko beste zerbitzarietako erabiltzaileen edukia ikustea eta beraiekin aritzea ahalbidetzen dizu. Salbuespena egin da zerbitzari zehatz honekin. user_count_after: one: erabiltzaile other: erabiltzaile @@ -42,6 +49,8 @@ eu: what_is_mastodon: Zer da Mastodon? accounts: choices_html: "%{name}(r)en aukerak:" + endorsements_hint: Jarraitzen duzun jendea sustatu dezakezu web interfazearen bidez, eta hemen agertuko da. + featured_tags_hint: Hemen agertuko diren traolak nabarmendu ditzakezu. follow: Jarraitu followers: one: Jarraitzaile @@ -51,7 +60,7 @@ eu: last_active: azkenekoz aktiboa link_verified_on: 'Esteka honen jabetzaren egiaztaketa data: %{date}' media: Multimedia - moved_html: "%{name} hona lekualdatu da %{new_profile_link}:" + moved_html: "%{name} hona migratu da %{new_profile_link}:" network_hidden: Informazio hau ez dago eskuragarri never_active: Inoiz ez nothing_here: Ez dago ezer hemen! @@ -220,19 +229,24 @@ eu: deleted_status: "(ezabatutako mezua)" title: Auditoria-egunkaria custom_emojis: + assign_category: Esleitu kategoria by_domain: Domeinua copied_msg: Ongi sortu da emoji-aren kopia lokala copy: Kopiatu copy_failed_msg: Ezin izan da emoji-aren kopia lokal bat sortu + create_new_category: Sortu kategoria berria created_msg: Emoji-a ongi sortu da! delete: Ezabatu destroyed_msg: Emoji-a ongi suntsitu da! disable: Desgaitu + disabled: Desgaituta disabled_msg: Emoji-a ongi desgaitu da emoji: Emojia enable: Gaitu + enabled: Gaituta enabled_msg: Emoji hori ongi gaitu da image_hint: PNG gehienez 50KB + list: Zerrendatu listed: Zerrendatua new: title: Gehitu emoji pertsonal berria @@ -240,6 +254,8 @@ eu: shortcode: Laster-kodea shortcode_hint: Gutxienez 2 karaktere, alfanumerikoak eta azpimarra besterik ez title: Emoji pertsonalak + uncategorized: Kategoriarik gabe + unlist: Kendu zerrendatik unlisted: Zerrendatu gabea update_failed_msg: Ezin izan da emoji hori eguneratu updated_msg: Emoji-a ongi eguneratu da! @@ -422,6 +438,10 @@ eu: domain_blocks: all: Guztiei disabled: Inori ez + title: Erakutsi domeinu-blokeoak + users: Saioa hasita duten erabiltzaile lokalei + domain_blocks_rationale: + title: Erakutsi arrazoia hero: desc_html: Azaleko orrian bistaratua. Gutxienez 600x100px aholkatzen da. Ezartzen ez bada, zerbitzariaren irudia hartuko du title: Azaleko irudia @@ -483,6 +503,7 @@ eu: title: Denbora-lerroaren aurrebista title: Gunearen ezarpenak trends: + desc_html: Erakutsi publikoki orain joeran dauden aurretik errebisatutako traolak title: Traolak joeran statuses: back_to_account: Atzera kontuaren orrira @@ -504,6 +525,10 @@ eu: context: Testuingurua directory: Direktorioan in_directory: "%{count} direktorioan" + last_active: Azkenekoz aktiboa + most_popular: Erabilienak + most_recent: Azkenak + name: Traola review: Berrikusketaren egoera reviewed: Berrikusita title: Traolak @@ -526,6 +551,14 @@ eu: body: "%{reporter}(e)k %{target} salatu du" body_remote: "%{domain} domeinuko norbaitek %{target} salatu du" subject: Salaketa berria %{instance} instantzian (#%{id}) + new_trending_tag: + subject: Traola berria errebisatzeko %{instance} instantzian (#%{name}) + aliases: + add_new: Sortu ezizena + created_msg: Ongi sortu da ezizena. Orain kontu zaharretik migratzen hasi zaitezke. + deleted_msg: Ongi kendu da ezizena. Orain ezin izango da aurreko kontutik hona migratu. + hint_html: Beste kontu batetik hona migratu nahi baduzu, hemen ezizen bat sortu dezakezu, hau beharrezkoa da kontu zaharreko jarraitzaileak hona ekartzeko. Ekintza hau berez <strong>kaltegabea eta desegingarria</strong> da. <strong>Kontuaren migrazioa kontu zaharretik abiatzen da</strong>. + remove: Deslotu ezizena appearance: advanced_web_interface: Web interfaze aurreratua advanced_web_interface_hint: 'Pantaila bere zabalera osoan erabili nahi baduzu, web interfaze aurreratuak hainbat zutabe desberdin konfiguratzea ahalbidetzen dizu, aldi berean nahi beste informazio ikusteko: Hasiera, jakinarazpenak, federatutako denbora-lerroa, edo nahi beste zerrenda eta traola.' @@ -555,12 +588,16 @@ eu: checkbox_agreement_without_rules_html: <a href="%{terms_path}" target="_blank">Erabilera baldintzak</a> onartzen ditut delete_account: Ezabatu kontua delete_account_html: Kontua ezabatu nahi baduzu, <a href="%{path}">jarraitu hemen</a>. Berrestea eskatuko zaizu. + description: + prefix_invited_by_user: "@%{name} erabiltzaileak Mastodon zerbitzari honetara elkartzera gonbidatzen zaitu!" + prefix_sign_up: Eman izena Mastodon-en! + suffix: Kontu bat baduzu, jendea jarraitu ahal izango duzu, mezuak bidali eta Mastodon zein kanpoko zerbitzarietako erabiltzaileekin elkarrizketan aritu! didnt_get_confirmation: Ez dituzu berresteko argibideak jaso? forgot_password: Pasahitza ahaztu duzu? invalid_reset_password_token: Pasahitza berrezartzeko token-a baliogabea da edo iraungitu du. Eskatu beste bat. login: Hasi saioa logout: Amaitu saioa - migrate_account: Lekualdatu beste kontu batera + migrate_account: Migratu beste kontu batera migrate_account_html: Kontu hau beste batera birbideratu nahi baduzu, <a href="%{path}">hemen konfiguratu</a> dezakezu. or_log_in_with: Edo hasi saioa honekin providers: @@ -581,6 +618,7 @@ eu: confirming: E-mail baieztapena osatu bitartean zain. functional: Zure kontua guztiz erabilgarri dago. pending: Zure eskaera gainbegiratzeko dago oraindik. Honek denbora behar lezake. Zure eskaera onartzen bada e-mail bat jasoko duzu. + redirecting_to: Zure kontua ez dago aktibo orain %{acct} kontura birbideratzen duelako. trouble_logging_in: Arazoak saioa hasteko? authorize_follow: already_following: Kontu hau aurretik jarraitzen duzu @@ -593,6 +631,11 @@ eu: return: Erakutsi erabiltzailearen profila web: Joan webera title: Jarraitu %{acct} + challenge: + confirm: Jarraitu + hint_html: "<strong>Oharra:</strong> Ez dizugu pasahitza berriro eskatuko ordu batez." + invalid_password: Pasahitz baliogabea + prompt: Berretsi pasahitza jarraitzeko datetime: distance_in_words: about_x_hours: "%{count}o" @@ -608,9 +651,18 @@ eu: x_months: "%{count} hilabete" x_seconds: "%{count}s" deletes: + challenge_not_passed: Sartu duzun informazioa ez da zuzena confirm_password: Sartu zure oraingo pasahitza zure identitatea baieztatzeko + confirm_username: Sartu zure erabiltzaile-izena prozedura berresteko proceed: Ezabatu kontua success_msg: Zure kontua ongi ezabatu da + warning: + before: 'Jarraitu aurretik, irakurri adi ohar hauek:' + caches: Beste zerbitzariek cachean duten edukia mantentzea gerta daiteke + data_removal: Zure mezuak eta beste datuak behin betiko ezabatuko dira + more_details_html: Xehetasun gehiagorako, ikusi <a href="%{terms_path}">pribatutasun politika</a>. + username_available: Zure erabiltzaile-izena berriro eskuragarri egongo da + username_unavailable: Zure erabiltzaile-izena ez da eskuragarri egongo directories: directory: Profilen direktorioa explanation: Deskubritu erabiltzaileak interesen arabera @@ -618,10 +670,10 @@ eu: domain_validator: invalid_domain: ez da domeinu izen baliogarria errors: - '400': The request you submitted was invalid or malformed. + '400': Bidali duzun eskaria baliogabea da edo gaizki osatua dago. '403': Ez duzu orri hau ikusteko baimenik. '404': Bilatu duzun orria ez dago hemen. - '406': This page is not available in the requested format. + '406': Orri hau ez dago eskatutako formatuan eskuragarri. '410': Bilatu duzun orria ez dago hemen jada. '422': content: Segurtasun egiaztaketak huts egin du. Cookie-ak blokeatzen dituzu? @@ -750,6 +802,33 @@ eu: too_many: Ezin dira 4 fitxategi baino gehiago erantsi migrations: acct: Kontu berriaren erabiltzaile@domeinua + cancel: Ezeztatu birbideratzea + cancel_explanation: Birbideratzea ezezteak zure kontu hau berriro aktibatuko du, baina ez ditu atzera ekarriko bestera aldatu diren jarraitzaileak. + cancelled_msg: Ongi ezeztatu da birbideratzea. + errors: + already_moved: kontu honetara migratu duzu dagoeneko + missing_also_known_as: ez dio kontu honi erreferentzia egiten + move_to_self: ezin da oraingo kontua izan + not_found: ezin izan da aurkitu + on_cooldown: Egonaldian zaude + followers_count: Jarraitzaileak migrazioaren unean + incoming_migrations: Beste kontu batetik migratuz + incoming_migrations_html: Beste kontu batetik hona migratzeko, aurretik <a href="%{path}">kontuaren ezizen bat sortu</a> behar duzu. + moved_msg: Zure kontuak orain %{acct} kontura birbideratzen du, eta zure jarraitzaileak hara migratuak izaten ari dira. + not_redirecting: Zure kontuak ez du orain beste konturen batera birbideratzen. + on_cooldown: Duela gutxi migratu duzu. Funtzio hau %{count} egun barru egongo da berriro eskuragarri. + past_migrations: Aurreko migrazioak + proceed_with_move: Mugitu jarraitzaileak + redirecting_to: 'Zure kontuak hona birbideratzen du: %{acct}.' + set_redirect: Ezarri birbideratzea + warning: + backreference_required: Kontu berria honi erreferentzia egiteko konfiguratu behar da + before: 'Jarraitu aurretik, irakurri adi ohar hauek:' + cooldown: Migratu eta gero egonaldi tarte bat egongo da eta bitartean ezin izango duzu berriro migratu + followers: Ekintza honek jarraitzaile guztiak eramango ditu uneko kontutik kontu berrira + only_redirect_html: Bestela, <a href="%{path}">zure profilean birbideratze soil bat jarri</a> dezakezu. + other_data: Ez da beste daturik migratuko automatikoki + redirect: Zure uneko kontuaren profila eguneratuko da birbideratze ohar batekin eta bilaketetatik kenduko da moderation: title: Moderazioa notification_mailer: @@ -894,6 +973,7 @@ eu: settings: account: Kontua account_settings: Kontuaren ezarpenak + aliases: Kontuaren ezizenak appearance: Itxura authorized_apps: Baimendutako aplikazioak back: Itzuli Mastodon-era @@ -911,8 +991,6 @@ eu: profile: Profila relationships: Jarraitutakoak eta jarraitzaileak two_factor_authentication: Bi faktoreetako autentifikazioa - spam_check: - spam_detected_and_silenced: Hau salaketa automatiko bat da. Spam-a antzeman da eta igorlea automatikoki isilarazi da. Hau akats bat bada, utzi kontua isilarazteari. statuses: attached: description: 'Erantsita: %{attached}' @@ -936,6 +1014,9 @@ eu: private: Ezin dira publikoak ez diren toot-ak finkatu reblog: Bultzada bat ezin da finkatu poll: + total_people: + one: pertsona %{count} + other: "%{count} pertsona" total_votes: one: Boto %{count} other: "%{count} boto" @@ -1074,6 +1155,7 @@ eu: silence: Zure kontua murriztua dagoen bitartean, jada zu jarraitzen zaituztenak besterik ez dituzte zure Toot-ak ikusiko zerbitzari honetan, eta agian zerrenda publikoetatik kenduko zaizu. Hala ere besteek oraindik zu jarraitu zaitzakete. suspend: Zure kontua kanporatua izan da, zure toot guztiak eta multimedia fitxategiak behin betiko ezabatu dira zerbitzari honetatik, eta zure jarraitzaileen zerbitzarietatik. review_server_policies: Berrikusi zerbitzariko politikak + statuses: 'Zehazki, honentzat:' subject: disable: Zure %{acct} kontua izoztu da none: "%{acct} konturako abisua" diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 8b64c131d..ebac705d8 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -2,7 +2,7 @@ fa: about: about_hashtag_html: اینها نوشتههای عمومی هستند که برچسب (هشتگ) <strong>#%{hashtag}</strong> را دارند. اگر شما روی هر سروری حساب داشته باشید میتوانید به این نوشتهها واکنش نشان دهید. - about_mastodon_html: ماستدون (Mastodon) یک شبکهٔ اجتماعی است که بر اساس پروتکلهای آزاد وب و نرمافزارهای آزاد و کدباز ساخته شده است. این شبکه مانند ایمیل غیرمتمرکز است. + about_mastodon_html: 'شبکهٔ اجتماعی آینده: بدون تبلیغات، بدون شنود از طرف شرکتها، طراحی اخلاقمدار، و معماری غیرمتمرکز! با ماستدون صاحب دادههای خودتان باشید!' about_this: درباره active_count_after: فعال active_footnote: کاربران فعال در ماه گذشته @@ -18,7 +18,6 @@ fa: discover_users: یافتن کاربران documentation: مستندات federation_hint_html: با داشتن حساب روی %{instance} میتوانید کاربران همهٔ سرورهای دیگر ماستدون (و سایر شبکههای سازگار با آن) را پی بگیرید. - generic_description: "%{domain} یک سرور روی شبکه است" get_apps: یک اپ موبایل را امتحان کنید hosted_on: ماستدون، میزبانیشده روی %{domain} instance_actor_flash: | @@ -507,6 +506,9 @@ fa: desc_html: نوشتههای عمومی این سرور را در صفحهٔ آغازین نشان دهید title: پیشنمایش نوشتهها title: تنظیمات سایت + trendable_by_default: + desc_html: روی برچسبهایی که پیش از این ممنوع نشدهاند تأثیر میگذارد + title: بگذارید که برچسبهای پرطرفدار بدون بازبینی قبلی نمایش داده شوند trends: desc_html: برچسبهای عمومی که پیشتر بازبینی شدهاند و هماینک پرطرفدارند title: برچسبهای پرطرفدار @@ -1006,7 +1008,7 @@ fa: relationships: پیگیریها و پیگیران two_factor_authentication: ورود دومرحلهای spam_check: - spam_detected_and_silenced: این یک گزارش خودکار است. هرزنامه به طور خودکار تشخیص داده شده و کاربر بیصدا شده است. اگر اشتباهی رخ داده لطفاً حساب را باصدا کنید. + spam_detected: این یک گزارش خودکار برای تشخیص هرزنامه است. statuses: attached: description: 'پیوستشده: %{attached}' diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 2f8fd3497..500c2408f 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -10,7 +10,6 @@ fi: contact_missing: Ei asetettu contact_unavailable: Ei saatavilla documentation: Dokumentaatio - generic_description: "%{domain} on yksi verkostoon kuuluvista palvelimista" hosted_on: Mastodon palvelimella %{domain} learn_more: Lisätietoja privacy_policy: Tietosuojaseloste diff --git a/config/locales/fr.yml b/config/locales/fr.yml index fbe1c0872..f44a0893f 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -18,7 +18,6 @@ fr: discover_users: Découvrez des utilisateur·rice·s documentation: Documentation federation_hint_html: Avec un compte sur %{instance}, vous pourrez suivre les gens sur n’importe quel serveur Mastodon et au-delà. - generic_description: "%{domain} est seulement un serveur du réseau" get_apps: Essayez une application mobile hosted_on: Serveur Mastodon hébergée par %{domain} instance_actor_flash: | @@ -51,7 +50,7 @@ fr: accounts: choices_html: "%{name} recommande :" endorsements_hint: Vous pouvez soutenir les personnes que vous suivez depuis l’interface web, et elles apparaîtront ici. - featured_tags_hint: Vous pouvez mettre en avant des hashtags spécifiques qui seront affichés ici. + featured_tags_hint: Vous pouvez recommander des hashtags spécifiques qui seront affichés ici. follow: Suivre followers: one: Abonné·e @@ -378,7 +377,7 @@ fr: relays: add_new: Ajouter un nouveau relais delete: Effacer - description_html: Un <strong>relai de fédération</strong> est un serveur intermédiaire qui échange de grandes quantités de pouets entre les serveurs qui publient dessus et ceux qui y sont abonnés. <strong>Il peut aider les petits et moyen serveurs à découvrir du contenu sur le fediverse</strong>, ce qui normalement nécessiterait que les membres locaux suivent des gens inscrits sur des serveurs distants. + description_html: Un <strong>relai de fédération</strong> est un serveur intermédiaire qui échange de grandes quantités de pouets publics entre les serveurs qui publient dessus et ceux qui y sont abonnés. <strong>Il peut aider les petits et moyen serveurs à découvrir du contenu sur le fediverse</strong>, ce qui normalement nécessiterait que les membres locaux suivent des gens inscrits sur des serveurs distants. disable: Désactiver disabled: Désactivé enable: Activé @@ -507,6 +506,9 @@ fr: desc_html: Afficher le fil public sur la page d’accueil title: Prévisualisation du fil global title: Paramètres du serveur + trendable_by_default: + desc_html: Affecte les hashtags qui n'ont pas été précédemment non autorisés + title: Autoriser les hashtags à apparaître dans les tendances sans examen préalable trends: desc_html: Afficher publiquement les hashtags approuvés qui sont populaires en ce moment title: Hashtags populaires @@ -558,13 +560,13 @@ fr: body_remote: Quelqu’un de %{domain} a signalé %{target} subject: Nouveau signalement sur %{instance} (#%{id}) new_trending_tag: - body: 'Le hashtag #%{name} est populaire aujourd’hui, mais il n’a pas été approuvé. Il ne sera pas affiché publiquement à moins que l’autorisiez, ou sauvegardez simplement ce formulaire tel quel pour ne plus jamais en entendre parler.' + body: 'Le hashtag #%{name} est populaire aujourd’hui, mais il n’a pas été approuvé. Il ne sera pas affiché publiquement à moins que vous l’autorisiez, ou sauvegardiez simplement ce formulaire tel quel pour ne plus jamais en entendre parler.' subject: Nouveau hashtag en attente de traitement sur %{instance} (#%{name}) aliases: add_new: Créer un alias created_msg: Un nouvel alias a été créé avec succès. Vous pouvez maintenant lancer le déplacement depuis l'ancien compte. - deleted_msg: Suppression réussie de l'alias. Déplacer de ce compte vers celui-ci ne sera plus possible. - hint_html: Si vous voulez passer d'un autre compte à celui-ci, vous pouvez créer ici un alias, qui est nécessaire avant de pouvoir déplacer les abonné·e·s de l'ancien compte à celui-ci. Cette action en soi est <strong>inoffensive et réversible</strong>. <strong>La migration du compte est initiée à partir de l'ancien compte</strong>. + deleted_msg: Suppression réussie de l'alias. Le déménagement de ce compte vers celui-ci ne sera plus possible. + hint_html: Si vous voulez déménager d’un autre compte vers celui-ci, vous pouvez créer ici un alias, qui est nécessaire avant de pouvoir migrer les abonné·e·s de l’ancien compte vers celui-ci. Cette action en soi est <strong>inoffensive et réversible</strong>. <strong>La migration du compte est initiée à partir de l’ancien compte</strong>. remove: Détacher l'alias appearance: advanced_web_interface: Interface web avancée @@ -604,7 +606,7 @@ fr: invalid_reset_password_token: Le lien de réinitialisation du mot de passe est invalide ou a expiré. Merci de réessayer. login: Se connecter logout: Se déconnecter - migrate_account: Déplacer vers un compte différent + migrate_account: Déménager vers un compte différent migrate_account_html: Si vous voulez rediriger ce compte vers un autre, vous pouvez le <a href="%{path}">configurer ici</a>. or_log_in_with: Ou authentifiez-vous avec providers: @@ -716,7 +718,7 @@ fr: featured_tags: add_new: Ajouter un nouvel hashtag errors: - limit: Vous avez déjà mis en avant le nombre maximum de hashtags + limit: Vous avez déjà recommandé le nombre maximum de hashtags hint_html: "<strong>Que sont les hashtags vedettes ?</strong> Ils sont affichés avec emphase sur votre flux d'actualités publique et permettent aux gens de parcourir vos messages publics spécifiquement sous ces hashtags. Ils sont un excellent outil pour garder trace des œuvres créatives ou des projets à long terme." filters: contexts: @@ -816,7 +818,7 @@ fr: migrations: acct: profil@domaine du nouveau compte cancel: Annuler la redirection - cancel_explanation: Annuler la redirection réactivera votre compte courant, mais ne rapportera pas les abonnés qui ont été déplacés sur ce compte. + cancel_explanation: Annuler la redirection réactivera votre compte courant, mais ne rapportera pas les abonné·e·s qui ont été déplacé·e·s sur ce compte. cancelled_msg: Suppression de la redirection réussie. errors: already_moved: est le même compte que vous avez déjà déplacé vers @@ -831,15 +833,15 @@ fr: not_redirecting: Votre compte n'est pas redirigé vers un autre compte actuellement. on_cooldown: Vous avez récemment migré votre compte. Cette fonction sera à nouveau disponible dans %{count} jours. past_migrations: Migrations passées - proceed_with_move: Déplacer les abonnés + proceed_with_move: Migrer les abonné·e·s redirecting_to: Votre compte est redirigé vers %{acct}. set_redirect: Définir redirection warning: backreference_required: Le nouveau compte doit d'abord être configuré pour faire référence à celui-ci before: 'Avant de procéder, veuillez lire attentivement ces notes :' - cooldown: Après le déménagement, il y a une période de refroidissement pendant laquelle vous ne pourrez plus bouger + cooldown: Après le déménagement, il y a une période de gel pendant laquelle vous ne pourrez plus re-déménager disabled_account: Votre compte actuel ne sera pas entièrement utilisable par la suite. Cependant, vous aurez accès à l'exportation de données et à la ré-activation. - followers: Cette action va déplacer tous les abonnés du compte courant vers le nouveau compte + followers: Cette action va déménager tou·te·s les abonné·e·s du compte actuel vers le nouveau compte only_redirect_html: Alternativement, vous pouvez <a href="%{path}">seulement appliquer une redirection sur votre profil</a>. other_data: Aucune autre donnée ne sera déplacée automatiquement redirect: Le profil de votre compte actuel sera mis à jour avec un avis de redirection et sera exclu des recherches @@ -995,7 +997,7 @@ fr: development: Développement edit_profile: Modifier le profil export: Export de données - featured_tags: Hashtags mis en avant + featured_tags: Hashtags recommandés identity_proofs: Preuves d’identité import: Import de données import_and_export: Import et export @@ -1006,7 +1008,7 @@ fr: relationships: Abonnements et abonné·e·s two_factor_authentication: Identification à deux facteurs spam_check: - spam_detected_and_silenced: Ceci est un rapport automatisé. Du spam a été détecté et l’expéditeur a été silencié automatiquement. Si c’est une erreur, veuillez désactiver la sourdine du compte. + spam_detected: Ceci est un rapport automatisé. Du spam a été détecté. statuses: attached: description: 'Attaché : %{attached}' diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 3924eeedc..f32575752 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -1,9 +1,9 @@ --- gl: about: - about_hashtag_html: Estas son mensaxes públicas etiquetadas con <strong>#%{hashtag}</strong>. Pode interactuar con elas si ten unha conta nalgures do fediverso. + about_hashtag_html: Estas son mensaxes públicas etiquetadas con <strong>#%{hashtag}</strong>. Podes interactuar con elas se tes unha conta nalgures do fediverso. about_mastodon_html: Mastodon é unha rede social que se basea en protocolos web abertos e libres, software de código aberto. É descentralizada como o correo electrónico. - about_this: Sobre + about_this: Acerca de active_count_after: activo active_footnote: Usuarias Activas no Mes (UAM) administered_by: 'Administrada por:' @@ -18,7 +18,6 @@ gl: discover_users: Descubra usuarias documentation: Documentación federation_hint_html: Con unha conta en %{instance} poderá seguir a outras persoas en calquera dos servidores Mastodon e incluso máis. - generic_description: "%{domain} é un servidor na rede" get_apps: Probe cunha app móbil hosted_on: Mastodon aloxado en %{domain} instance_actor_flash: 'Esta conta é un actor virtual utilizado para representar ao servidor e non a unha usuaria individual. Utilízase para propósitos de federación e non debería estar bloqueada a menos que queira bloquear a toda a instancia, en tal caso debería utilizar o bloqueo do dominio. @@ -37,6 +36,7 @@ gl: terms: Termos do servizo unavailable_content: Contido non dispoñible unavailable_content_description: + domain: Servidor reason: 'Razón:' rejecting_media: Os ficheiros de medios de este servidor non se procesarán e non se mostrarán miniaturas, precisando solicitarse manualmente ao outro servidor. silenced: As publicacións desde este servidor non se mostrarán en ningún lugar excepto no Inicio se segues ao autor. @@ -239,11 +239,14 @@ gl: delete: Eliminar destroyed_msg: Emojo destruído satisfactoriamente! disable: Deshabilitar + disabled: Desactivado disabled_msg: Deshabilitouse correctamente ese emoji emoji: Emoji enable: Habilitar + enabled: Activado enabled_msg: Habilitouse correctamente ese emoji image_hint: PNG ate 50KB + list: A lista listed: Listado new: title: Engadir novo emoji persoalizado @@ -252,6 +255,7 @@ gl: shortcode_hint: Cando menos 2 caracteres, só caracteres alfanuméricos e subliñados title: Emojis persoalizados uncategorized: Sen categorizar + unlist: Sacar da lista unlisted: Non listado update_failed_msg: Non se puido actualizar ese emoji updated_msg: Actualizouse correctamente o emoji! @@ -383,6 +387,7 @@ gl: pending: Agardando polo permiso do repetidor save_and_enable: Gardar e activar setup: Configurar a conexión ao repetidor + signatures_not_enabled: Os repetidores non funcionarán correctamente se o modo seguro ou lista branca están activados status: Estado title: Repetidores report_notes: @@ -501,6 +506,9 @@ gl: desc_html: Mostrar liña de tempo pública na páxina de inicio title: vista previa da liña temporal title: Axustes do sitio + trendable_by_default: + desc_html: Afecta a etiquetas que non foron rexeitadas previamente + title: Permite as etiquetas ser tendencia sen revisión previa trends: desc_html: Mostrar públicamente etiquetas previamente revisadas que actualmente son tendencia title: Etiquetas Tendencia @@ -827,13 +835,16 @@ gl: past_migrations: Migracións pasadas proceed_with_move: Mover seguidoras redirecting_to: A conta está redirixindo cara a %{acct}. + set_redirect: Establecer redirección warning: backreference_required: Tes que configurar primeiro a nova conta para referenciar hacia esta before: 'Antes de seguir, por favor lé estas notas con atención:' cooldown: Tras a migración existe un período de calma durante o cal non poderás voltar a migrar de novo disabled_account: Tras o cambio a túa conta actual non será totalmente usable, pero terás acceso a exportar os datos e tamén a reactivación. followers: Esta acción moverá todas as túas seguidoras desde a conta actual a nova conta + only_redirect_html: De xeito alternativo, podes <a href="%{path}">simplemente por unha redirección no perfil</a>. other_data: Non se moverán outros datos de xeito automático + redirect: O perfil da túa conta actualizarase cun aviso de redirección e será excluído das buscas moderation: title: Moderación notification_mailer: @@ -996,8 +1007,6 @@ gl: profile: Perfil relationships: Seguindo e seguidoras two_factor_authentication: Validar Dobre Factor - spam_check: - spam_detected_and_silenced: Esto é un informe automático. Detectouse spam e o remitente foi bloqueado automáticamente. Se o considera un fallo, por favor desbloquee a conta. statuses: attached: description: 'Axenado: %{attached}' @@ -1021,6 +1030,9 @@ gl: private: As mensaxes non-públicas non poden ser fixadas reblog: Non se poden fixar as mensaxes promovidas poll: + total_people: + one: "%{count} persoa" + other: "%{count} persoas" total_votes: one: "%{count} voto" other: "%{count} votos" diff --git a/config/locales/he.yml b/config/locales/he.yml index f7b121777..50db571dc 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -9,7 +9,6 @@ he: contact_missing: ללא הגדרה contact_unavailable: לא רלוונטי/חסר documentation: תיעוד - generic_description: "%{domain} הוא שרת אחד בתוך הרשת" hosted_on: מסטודון שיושב בכתובת %{domain} learn_more: מידע נוסף source_code: קוד מקור diff --git a/config/locales/hu.yml b/config/locales/hu.yml index c1222018d..af7048ebb 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -18,7 +18,6 @@ hu: discover_users: Találj meg másokat documentation: Dokumentáció federation_hint_html: Egy %{instance} fiókkal bármely más Mastodon szerveren vagy a föderációban lévő felhasználót követni tudsz. - generic_description: "%{domain} csak egy a számtalan szerver közül a föderációban" get_apps: Próbálj ki egy mobil appot hosted_on: "%{domain} Mastodon szerver" instance_actor_flash: 'Ez a fiók egy virtuális szereplő, mely magát a szervert reprezentálja, nem egy felhasználót. Ez a föderáció támogatására készült, ezért nem szabad blokkolni, hacsak egy teljes szervert nem akarsz kitiltani, amire persze a domain blokkolása jobb megoldás. @@ -37,6 +36,7 @@ hu: terms: Felhasználási feltételek unavailable_content: A tartalom nem elérhető unavailable_content_description: + domain: Szerver reason: 'Indok:' rejecting_media: A szerverről származó médiafájlok nem kerülnek feldolgozásra, és nem jelennek meg miniatűrök, amelyek kézi átkattintást igényelnek a másik szerverre. silenced: A szerver hozzászólásai csak a saját hírvonalon jelennek meg, ha követik a szerzőt. @@ -239,11 +239,14 @@ hu: delete: Törlés destroyed_msg: Emoji törlése sikeres! disable: Letiltás + disabled: Letiltva disabled_msg: Emoji letiltva emoji: Emoji enable: Engedélyezés + enabled: Engedélyezve enabled_msg: Emoji engedélyezve image_hint: PNG (maximális méret 50KB) + list: Listázás listed: Listázva new: title: Új egyedi emoji hozzáadása @@ -252,6 +255,7 @@ hu: shortcode_hint: Legalább két karakter, csak betűk, számok és alsóvonás title: Egyedi emojik uncategorized: Nem kategorizált + unlist: Elrejtés a listáról unlisted: Nincs listázva update_failed_msg: Nem sikerült frissíteni az emojit updated_msg: Emoji sikeresen frissítve! @@ -383,6 +387,7 @@ hu: pending: Várakozás a relé jóváhagyására save_and_enable: Mentés és engedélyezés setup: Relé kapcsolat felállítása + signatures_not_enabled: A relék nem fognak jól működni, amíg a biztonságos mód vagy az engedélyező listás mód aktív status: Állapot title: Relék report_notes: @@ -827,13 +832,16 @@ hu: past_migrations: Eddigi költözések proceed_with_move: Követők átköltöztetése redirecting_to: A fiókod át van irányítva ide %{acct}. + set_redirect: Átirányítás beállítása warning: backreference_required: Az új fiókot először be kell úgy állítani, hogy ezt visszahivatkozza before: 'Mielőtt továbbmész, olvasd el ezeket kérlek figyelmesen:' cooldown: A költözés után van egy türelmi idő, mely alatt nem tudsz majd újra költözni disabled_account: A jelenlegi fiókod nem lesz teljesen használható ezután. Viszont elérhető lesz majd az adatexport funkció, valamint a reaktiválás is. followers: Ez a művelet az összes követődet a jelenlegi fiókról az újra fogja költöztetni + only_redirect_html: Az is lehetséges, hogy <a href="%{path}">csak átirányítást raksz a profilodra</a>. other_data: Más adatot nem fogunk automatikusan mozgatni + redirect: A jelenlegi fiókod profiljára átirányításról szóló figyelmeztetést rakunk, valamint már nem fogjuk mutatni a keresésekben moderation: title: Moderáció notification_mailer: @@ -996,8 +1004,6 @@ hu: profile: Profil relationships: Követések és követők two_factor_authentication: Kétlépcsős azonosítás - spam_check: - spam_detected_and_silenced: Ez egy automatikus bejelentés. Spamet érzékeltünk, így a küldőt automatikusan elnémítottuk. Ha ez hiba, oldd fel a némítást. statuses: attached: description: 'Csatolva: %{attached}' @@ -1021,6 +1027,9 @@ hu: private: Csak nyilvános tülköt tűzhetsz ki reblog: Megtolt tülköt nem tudsz kitűzni poll: + total_people: + one: "%{count} személy" + other: "%{count} személy" total_votes: one: "%{count} szavazat" other: "%{count} szavazat" diff --git a/config/locales/id.yml b/config/locales/id.yml index 38cb4e95d..572769a5a 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -18,7 +18,6 @@ id: discover_users: Temukan pengguna documentation: Dokumentasi federation_hint_html: Dengan akun di %{instance} Anda dapat mengikuti orang di server Mastodon mana pun dan di luarnya. - generic_description: "%{domain} adalah satu server dalam jaringan" get_apps: Coba aplikasi mobile hosted_on: Mastodon dihosting di %{domain} instance_actor_flash: 'Akun ini adalah aktor virtual yang dipakai untuk merepresentasikan server, bukan pengguna individu. Ini dipakai untuk tujuan federasi dan jangan diblokir kecuali Anda ingin memblokir seluruh instansi, yang seharusnya Anda pakai blokir domain. @@ -145,6 +144,7 @@ id: no_limits_imposed: Tidak ada batasan not_subscribed: Tidak berlangganan outbox_url: URL Kotak keluar + pending: Tinjauan tertunda perform_full_suspension: Lakukan suspen penuh profile_url: URL profil promote: Promosikan @@ -193,7 +193,54 @@ id: action_logs: actions: assigned_to_self_report: "%{name} menugaskan laporan %{target} kpd dirinya sendiri" + change_email_user: "%{name} mengubah alamat surel pengguna %{target}" + confirm_user: "%{name} mengonfirmasi alamat surel pengguna %{target}" + create_account_warning: "%{name} mengirim peringatan untuk %{target}" + create_custom_emoji: "%{name} mengunggah emoji baru %{target}" + create_domain_block: "%{name} memblokir domain %{target}" + create_email_domain_block: "%{name} memasukkan ke daftar hitam domain surel %{target}" + demote_user: "%{name} menurunkan pengguna %{target}" + destroy_custom_emoji: "%{name} menghapus emoji %{target}" + destroy_domain_block: "%{name} membuka blokir domain %{target}" + destroy_email_domain_block: "%{name} memasukkan ke daftar putih surel domain %{target}" + disable_2fa_user: "%{name} mematikan syarat dua faktor utk pengguna %{target}" + disable_custom_emoji: "%{name} mematikan emoji %{target}" + disable_user: "%{name} mematikan login untuk pengguna %{target}" + enable_custom_emoji: "%{name} mengaktifkan emoji %{target}" + enable_user: "%{name} mengaktifkan login untuk pengguna %{target}" + memorialize_account: "%{name} mengubah akun %{target} jadi halaman memorial" + promote_user: "%{name} mempromosikan pengguna %{target}" + remove_avatar_user: "%{name} menghapus avatar %{target}" + reopen_report: "%{name} membuka ulang laporan %{target}" + reset_password_user: "%{name} mereset kata sandi pengguna %{target}" + resolve_report: "%{name} menyelesaikan laporan %{target}" + silence_account: "%{name} membungkam akun %{target}" + suspend_account: "%{name} menangguhkan akun %{target}" + unassigned_report: "%{name} tidak menugaskan laporan %{target}" + unsilence_account: "%{name} menghapus bungkaman akun %{target}" + unsuspend_account: "%{name} menghapus penangguhan akun %{target}" + update_custom_emoji: "%{name} memperbarui emoji %{target}" + deleted_status: "(status dihapus)" + title: Log audit custom_emojis: + assign_category: Beri kategori + by_domain: Domain + copied_msg: Pembuatan salinan lokal emoji berhasil + copy: Salin + copy_failed_msg: Tidak dapat membuat salinan lokal emoji + create_new_category: Buat kategori baru + created_msg: Emoji berhasil dibuat! + delete: Hapus + destroyed_msg: Emoji berhasil dihapus! + disable: Matikan + disabled: Dinonaktifkan + disabled_msg: Emoji berhasil dinonaktifkan + emoji: Emoji + enable: Aktifkan + enabled: Diaktifkan + enabled_msg: Emoji berhasil diaktifkan + image_hint: PNG hingga 50KB + list: Daftar listed: Terdaftar new: title: Tambah emoji kustom baru @@ -209,6 +256,7 @@ id: upload: Unggah dashboard: authorized_fetch_mode: Mode aman + backlog: pekerjaan di-backlog config: Konfigurasi feature_deletions: Penghapusan akun feature_invites: Tautan undangan @@ -222,20 +270,49 @@ id: open_reports: buka laporan pending_tags: tagar menunggu ditinjau pending_users: pengguna menunggu ditinjau + recent_users: Pengguna terbaru + search: Pencarian teks lengkap + single_user_mode: Mode pengguna tunggal + software: Perangkat lunak + space: Penggunaan ruang + title: Dasbor + total_users: total pengguna + trends: Tren + week_interactions: interaksi minggu ini + week_users_active: aktif minggu ini + week_users_new: pengguna minggu ini + whitelist_mode: Mode daftar putih + domain_allows: + add_new: Daftar putihkan domain + created_msg: Domain berhasil masuk daftar putih + destroyed_msg: Domain dihapus dari daftar putih + undo: Hapus dari daftar putih domain_blocks: add_new: Tambah created_msg: Pemblokiran domain sedang diproses destroyed_msg: Pemblokiran domain telah dibatalkan + domain: Domain + edit: Edit blok domain + existing_domain_block_html: Anda telah menerapkan batasan yang lebih ketat pada %{name}, Anda harus <a href="%{unblock_url}">membuka blokirnya</a> lebih dulu. new: create: Buat pemblokiran hint: Pemblokiran domain tidak akan menghentikan pembuatan akun dalam database, tapi kami akan memberikan moderasi otomatis pada akun-akun tersebut. severity: desc_html: "<strong>Pendiaman</strong> akan membuat semua postingan tidak dapat dilihat oleh semua orang yang tidak mengikutinya. <strong>Suspen</strong> akan menghapus semua konten, media, dan profil dari akun yang bersangkutan." + noop: Tidak ada silence: Pendiaman suspend: Suspen title: Pemblokiran domain baru + private_comment: Komentar pribadi + public_comment: Komentar publik reject_media: Tolak berkas media reject_media_hint: Hapus file media yang tersimpan dan menolak semua unduhan nantinya. Tidak terpengaruh dengan suspen + reject_reports: Tolak laporan + reject_reports_hint: Abaikan semua laporan dari domain ini. Tidak relevan untuk penangguhan + rejecting_media: tolak berkas media + severity: + silence: dibungkam + suspend: ditangguhkan show: affected_accounts: other: "%{count} akun dalam database terpengaruh" @@ -243,22 +320,111 @@ id: silence: Hapus pendiaman terhadap akun pada domain ini suspend: Hapus suspen terhadap akun pada domain ini title: Hapus pemblokiran domain %{domain} + undo: Urungkan + undo: Urungkan blokir domain + view: Lihat blokir domain + email_domain_blocks: + add_new: Tambah baru + created_msg: Berhasil menambahkan domain surel ke daftar hitam + delete: Hapus + destroyed_msg: Berhasil menghapus domain surel dari daftar hitam + domain: Domain + new: + create: Tambah domain + title: Entri daftar hitam surel baru + title: Daftar hitam surel + followers: + back_to_account: Kembali Ke Akun + title: Pengikut %{acct} instances: + by_domain: Domain + delivery_available: Pengiriman tersedia + moderation: + all: Semua + limited: Terbatas + title: Moderasi + private_comment: Komentar pribadi + public_comment: Komentar publik title: Server yang diketahui + total_blocked_by_us: Yang kita blokir + total_followed_by_them: Diikuti mereka + total_followed_by_us: Diikuti kita + total_storage: Lampiran media + invites: + deactivate_all: Nonaktifkan semua + filter: + all: Semua + available: Tersedia + expired: Kedaluwarsa + title: Saring + title: Undang + pending_accounts: + title: Akun tertunda (%{count}) + relays: + add_new: Tambah relai baru + delete: Hapus + disable: Matikan + disabled: Dimatikan + enable: Aktifkan + enable_hint: Saat diaktifkan, server Anda akan melanggan semua toot publik dari relai ini, dan akan mengirim toot publik server ini ke sana. + enabled: Diaktifkan + inbox_url: URL Relai + pending: Menunggu persetujuan relai + save_and_enable: Simpan dan aktifkan + setup: Atur koneksi relai + signatures_not_enabled: Relai tak akan bekerja dengan benar saat mode aman atau mode daftar putih diaktifkan + status: Status + title: Relai + report_notes: + created_msg: Catatan laporan berhasil dibuat! + destroyed_msg: Catatan laporan berhasil dihapus! reports: + account: + note: catatan + report: lapor + action_taken_by: Aksi dilakukan oleh + are_you_sure: Apakah Anda yakin? + assign_to_self: Tugaskan kpd saya + assigned: Moderator tertugas comment: none: Tidak ada + created_at: Dilaporkan mark_as_resolved: Tandai telah diseleseikan + mark_as_unresolved: Tandai belum terselesaikan + notes: + create: Tambah catatan + create_and_resolve: Diselesaikan dengan catatan + create_and_unresolve: Dibuka kembali dengan catatan + delete: Hapus + placeholder: Jelaskan aksi yang telah dilakukan, atau pembaruan lain yang berhubungan... + reopen: Buka lagi laporan report: 'Laporkan #%{id}' reported_account: Akun yang dilaporkan reported_by: Dilaporkan oleh resolved: Terseleseikan + resolved_msg: Laporan berhasil diselesaikan! + status: Status title: Laporan unresolved: Belum Terseleseikan + updated_at: Diperbarui settings: + activity_api_enabled: + desc_html: Hitung status yang dipos scr lokal, pengguna aktif, dan registrasi baru dlm keranjang bulanan + title: Terbitkan statistik keseluruhan tentang aktivitas pengguna + bootstrap_timeline_accounts: + desc_html: Pisahkan nama pengguna dengan koma. Hanya akun lokal dan tak terkunci yang akan bekerja. Isi bawaan jika kosong adalah semua admin lokal. + title: Ikuti scr bawaan untuk pengguna baru contact_information: email: Masukkan alamat email username: Masukkan nama pengguna + custom_css: + desc_html: Ubah tampilan dengan CSS yang dimuat di setiap halaman + title: CSS Kustom + default_noindex: + title: Singkirkan pengguna dari pengindeksan mesin pencari scr bawaan + domain_blocks: + all: Kepada semua orang + title: Lihat blokir domain registrations: closed_message: desc_html: Ditampilkan pada halaman depan saat pendaftaran ditutup<br>Anda bisa menggunakan tag HTML @@ -271,7 +437,51 @@ id: title: Deskripsi situs tambahan site_title: Judul Situs title: Pengaturan situs + statuses: + batch: + nsfw_off: Tandai sebagai tak sensitif + nsfw_on: Tandai sebagai sensitif + deleted: Dihapus + failed_to_execute: Gagal mengeksekusi + media: + title: Media + no_media: Tanpa media + no_status_selected: Tak ada status yang berubah karena tak ada yang dipilih + title: Status akun + with_media: Dengan media + tags: + accounts_today: Penggunaan unik hari ini + accounts_week: Penggunaan unik minggu ini + breakdown: Rinci penggunaan hari ini berdasar sumber + context: Konteks + directory: Di direktori + in_directory: "%{count} di direktori" + last_active: Terakhir aktif + most_popular: Paling populer + most_recent: Terkini + name: Tagar + review: Tinjau status + reviewed: Ditinjau + title: Tagar + trending_right_now: Sedang tren sekarang + unique_uses_today: "%{count} memposkan hari ini" + unreviewed: Tak tertinjau + updated_msg: Pembaruan pengaturan tagar berhasil title: Administrasi + warning_presets: + add_new: Tambah baru + delete: Hapus + edit: Sunting + edit_preset: Sunting preset peringatan + title: Kelola preset peringatan + admin_mailer: + new_pending_account: + body: Detail akun baru di bawah. Anda dapat menyetujui atau menolak lamaran ini. + subject: Akun baru muncul untuk ditinjau di %{instance} (%{username}) + new_report: + body: "%{reporter} telah melaporkan %{target}" + body_remote: Seseorang dari %{domain} telah melaporkan %{target} + subject: Laporan baru untuk %{instance} (#%{id}) application_mailer: settings: 'Ubah pilihan email: %{link}' view: 'Tampilan:' diff --git a/config/locales/it.yml b/config/locales/it.yml index 447ac4a1e..f35c717a6 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -18,7 +18,6 @@ it: discover_users: Scopri utenti documentation: Documentazione federation_hint_html: Con un account su %{instance} sarai in grado di seguire persone su qualsiasi server Mastodon e oltre. - generic_description: "%{domain} è un server nella rete" get_apps: Prova un'app per smartphone hosted_on: Mastodon ospitato su %{domain} instance_actor_flash: | @@ -943,8 +942,6 @@ it: profile: Profilo relationships: Follows e followers two_factor_authentication: Autenticazione a due fattori - spam_check: - spam_detected_and_silenced: Questa è una segnalazione automatica. É stato rilevato dello spam e il mittente è stato automaticamente silenziato. Se fosse un errore, per favore annulla questa operazione sull'account. statuses: attached: description: 'Allegato: %{attached}' diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 00e27d4ae..f7d66b2ce 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -18,7 +18,6 @@ ja: discover_users: ユーザーを見つける documentation: ドキュメント federation_hint_html: "%{instance} のアカウントひとつでどんなMastodon互換サーバーのユーザーでもフォローできるでしょう。" - generic_description: "%{domain} は、Mastodon サーバーの一つです" get_apps: モバイルアプリを試す hosted_on: Mastodon hosted on %{domain} instance_actor_flash: 'このアカウントはサーバーそのものを示す仮想的なもので、特定のユーザーを示すものではありません。これはサーバーの連合のために使用されます。サーバー全体をブロックするときは、このアカウントをブロックせずに、ドメインブロックを使用してください。 @@ -244,7 +243,7 @@ ja: enabled_msg: 絵文字を有効化しました image_hint: 50KBまでのPNG画像を利用できます list: 表示 - listed: 収載 + listed: 表示 new: title: 新規カスタム絵文字の追加 overwrite: 上書き @@ -473,8 +472,8 @@ ja: open: 誰でも登録可 title: 新規登録 show_known_fediverse_at_about_page: - desc_html: チェックを入れるとプレビュー欄に既知の連合先全てのトゥートを表示します。外すとローカルのトゥートだけ表示します。 - title: タイムラインプレビューに連合タイムラインを表示する + desc_html: チェックを外すと、ランディングページからリンクされた公開タイムラインにローカルの公開トゥートのみ表示します。 + title: 公開タイムラインに連合先のコンテンツも表示する show_staff_badge: desc_html: ユーザーページにスタッフのバッジを表示します title: スタッフバッジを表示する @@ -492,15 +491,18 @@ ja: title: カスタム利用規約 site_title: サーバーの名前 spam_check_enabled: - desc_html: 迷惑なメッセージを繰り返し送信するアカウントを自動でサイレンスにし通報することができます。誤検知を含む可能性があります。 + desc_html: 迷惑なメッセージを繰り返し送信するアカウントを自動で通報することができます。誤検知を含む可能性があります。 title: スパム対策を有効にする thumbnail: desc_html: OpenGraphとAPIによるプレビューに使用されます。サイズは1200×630px推奨です title: サーバーのサムネイル timeline_preview: - desc_html: ランディングページに公開タイムラインを表示します - title: タイムラインプレビュー + desc_html: ランディングページに公開タイムラインへのリンクを表示し、認証なしでの公開タイムラインへの API アクセスを許可します + title: 公開タイムラインへの未認証のアクセスを許可する title: サイト設定 + trendable_by_default: + desc_html: 表示を拒否していないハッシュタグに影響します + title: 審査前のハッシュタグのトレンドへの表示を許可する trends: desc_html: 現在トレンドになっている承認済みのハッシュタグを公開します title: トレンドタグを有効にする @@ -659,7 +661,7 @@ ja: success_msg: アカウントは正常に削除されました warning: before: '続行する前に、次の点を再度確認してください:' - caches: 削除しても他のサーバーに残り続ける場合があります + caches: 他のサーバーにコンテンツのキャッシュがずっと残る場合があります data_removal: あなたの投稿やその他のデータはこのサーバーから完全に削除されます email_change_html: アカウントを削除しなくても<a href="%{path}">メールアドレスを変更</a>できます email_contact_html: それでも届かない場合、<a href="mailto:%{email}">%{email}</a> までメールで問い合わせてください @@ -737,7 +739,7 @@ ja: all: すべて changes_saved_msg: 正常に変更されました! copy: コピー - no_batch_actions_available: 利用可能なバッチアクションはありません + no_batch_actions_available: このページに一括操作はありません order_by: 並び順 save_changes: 変更を保存 use_this: これを使う @@ -789,7 +791,7 @@ ja: '604800': 1 週間 '86400': 1 日 expires_in_prompt: 無期限 - generate: 作成 + generate: 招待リンクを作成 invited_by: '次の人に招待されました:' max_uses: other: "%{count}" @@ -998,7 +1000,7 @@ ja: relationships: フォロー・フォロワー two_factor_authentication: 二段階認証 spam_check: - spam_detected_and_silenced: これは自動通報です。スパムが検出されたため、当該送信者は自動的にサイレンスに設定されました。もしこれが誤りである場合、アカウントのサイレンスを解除してください。 + spam_detected: これは自動的に作成された通報です。スパムが検出されています。 statuses: attached: description: '添付: %{attached}' diff --git a/config/locales/ka.yml b/config/locales/ka.yml index c921fa56f..0ab1f2d69 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -11,7 +11,6 @@ ka: contact_missing: არაა დაყენებული contact_unavailable: მიუწ. documentation: დოკუმენტაცია - generic_description: "%{domain} ერთი სერვერია ქსელში" hosted_on: მასტოდონს მასპინძლობს %{domain} learn_more: გაიგე მეტი privacy_policy: კონფიდენციალურობის პოლიტიკა diff --git a/config/locales/kk.yml b/config/locales/kk.yml index 84cbdd294..49cc18a4c 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -10,7 +10,6 @@ kk: contact_missing: Бапталмаған contact_unavailable: Белгісіз documentation: Құжаттама - generic_description: "%{domain} желідегі серверлердің бірі" hosted_on: Mastodon орнатылған %{domain} доменінде learn_more: Көбірек білу privacy_policy: Құпиялылық саясаты diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 82e20e04f..bae3d69bc 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -1,7 +1,7 @@ --- ko: about: - about_hashtag_html: "<strong>#%{hashtag}</strong> 라는 해시태그가 붙은 공개 툿 입니다. 같은 연합에 속한 임의의 인스턴스에 계정을 생성하면 당신도 대화에 참여할 수 있습니다." + about_hashtag_html: "<strong>#%{hashtag}</strong> 해시태그가 붙은 공개 툿 입니다. 같은 연합에 속한 임의의 인스턴스에 계정을 생성하면 당신도 대화에 참여할 수 있습니다." about_mastodon_html: 마스토돈은 <em>오픈 소스 기반의</em> 소셜 네트워크 서비스 입니다. 상용 플랫폼의 대체로서 <em>분산형 구조</em>를 채택해, 여러분의 대화가 한 회사에 독점되는 것을 방지합니다. 신뢰할 수 있는 인스턴스를 선택하세요 — 어떤 인스턴스를 고르더라도, 누구와도 대화할 수 있습니다. 누구나 자신만의 마스토돈 인스턴스를 만들 수 있으며, 아주 매끄럽게 <em>소셜 네트워크</em>에 참가할 수 있습니다. about_this: 이 인스턴스에 대해서 active_count_after: 활성 사용자 @@ -18,7 +18,6 @@ ko: discover_users: 유저 발견하기 documentation: 문서 federation_hint_html: "%{instance}에 계정을 만드는 것으로 모든 마스토돈 서버, 그리고 호환 되는 모든 서버의 사용자를 팔로우 할 수 있습니다." - generic_description: "%{domain} 은 네트워크에 있는 한 서버입니다" get_apps: 모바일 앱 사용해 보기 hosted_on: "%{domain}에서 호스팅 되는 마스토돈" instance_actor_flash: | @@ -463,7 +462,7 @@ ko: desc_html: 신규 등록을 받지 않을 때 프론트 페이지에 표시됩니다. HTML 태그를 사용할 수 있습니다 title: 신규 등록 정지 시 메시지 deletion: - desc_html: 유저가 자신의 계정을 삭제할 수 있도록 설정합니다 + desc_html: 유저가 자신의 계정을 삭제할 수 있도록 허용합니다 title: 계정 삭제를 허가함 min_invite_role: disabled: 아무도 못 하게 @@ -503,6 +502,9 @@ ko: desc_html: 랜딩 페이지에 공개 타임라인을 표시합니다 title: 타임라인 프리뷰 title: 사이트 설정 + trendable_by_default: + desc_html: 이전에 비허용 되지 않은 해시태그들에 영향을 미칩니다 + title: 해시태그가 사전 리뷰 없이 트렌드에 올라갈 수 있도록 허용 trends: desc_html: 리뷰를 거친 해시태그를 유행하는 해시태그에 공개적으로 보여줍니다 title: 유행하는 해시태그 @@ -554,7 +556,7 @@ ko: body_remote: "%{domain}의 누군가가 %{target}을 신고했습니다" subject: "%{instance} 에 새 신고 등록됨 (#%{id})" new_trending_tag: - body: "#%{name}가 오늘 유행하고 있습니다, 하지만 심사 된 적이 없습니다. 허용하지 않는 한 공개적으로 나타나지 않습니다. 또는 그냥 저장을 눌러 더이상 나타나지 않게 할 수 있습니다." + body: '오늘 #%{name} 해시태그가 유행하고 있습니다, 하지만 심사 된 적이 없습니다. 허용하지 않는 한 공개적으로 나타나지 않습니다. 또는 그냥 저장을 눌러 더이상 나타나지 않게 할 수 있습니다.' subject: 새 해시태그가 %{instance}에서 심사 대기 중입니다(#%{name}) aliases: add_new: 별칭 만들기 @@ -997,8 +999,6 @@ ko: profile: 프로필 relationships: 팔로잉과 팔로워 two_factor_authentication: 2단계 인증 - spam_check: - spam_detected_and_silenced: 이것은 자동화 된 보고입니다. 스팸이 감지 되어 작성자를 자동으로 침묵 처리하였습니다. 만약 실수였다면 계정을 침묵 해제하세요. statuses: attached: description: '첨부: %{attached}' diff --git a/config/locales/lt.yml b/config/locales/lt.yml index e1471eed0..7a09bee59 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -9,7 +9,6 @@ lt: contact: Kontaktai contact_missing: Nenustatyta documentation: Dokumentacija - generic_description: "%{domain} yra vienas serveris tinkle" hosted_on: Mastodon palaikomas naudojantis %{domain} talpinimu learn_more: Daugiau privacy_policy: Privatumo Politika diff --git a/config/locales/ms.yml b/config/locales/ms.yml index b77a1fd92..d824aed60 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -10,7 +10,6 @@ ms: contact_missing: Tidak ditetapkan contact_unavailable: Tidak tersedia documentation: Pendokumenan - generic_description: "%{domain} ialah salah sebuah pelayan dalam rangkaian Mastodon" hosted_on: Mastodon dihoskan di %{domain} learn_more: Ketahui lebih lanjut privacy_policy: Polisi privasi diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 1a2b158ca..2c9e42b33 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -18,7 +18,6 @@ nl: discover_users: Gebruikers ontdekken documentation: Documentatie federation_hint_html: Met een account op %{instance} ben je in staat om mensen die zich op andere Mastodonservers (en op andere plekken) bevinden te volgen. - generic_description: "%{domain} is een server in het Mastodonnetwerk" get_apps: Mobiele apps hosted_on: Mastodon op %{domain} instance_actor_flash: 'Dit account is een virtuel actor die wordt gebruikt om de server zelf te vertegenwoordigen en is geen individuele gebruiker. Het wordt voor federatiedoeleinden gebruikt en moet niet worden geblokkeerd, tenzij je de hele server wil blokkeren. In zo''n geval dien je echter een domeinblokkade te gebruiken. @@ -479,8 +478,8 @@ nl: open: Iedereen kan zich registreren title: Registratiemodus show_known_fediverse_at_about_page: - desc_html: Wanneer ingeschakeld wordt de globale tijdlijn op de voorpagina getoond en wanneer uitgeschakeld de lokale tijdljn. - title: De globale tijdlijn op de voorpagina tonen + desc_html: Wanneer ingeschakeld wordt de globale tijdlijn op de voorpagina getoond en wanneer uitgeschakeld de lokale tijdlijn + title: De globale tijdlijn op de openbare tijdlijnpagina tonen show_staff_badge: desc_html: Medewerkersbadge op profielpagina tonen title: Medewerkersbadge tonen @@ -504,8 +503,8 @@ nl: desc_html: Gebruikt als voorvertoning voor OpenGraph en de API. 1200x630px aanbevolen title: Thumbnail Mastodonserver timeline_preview: - desc_html: Toon een openbare tijdlijn op de voorpagina - title: Tijdlijn op de voorpagina tonen + desc_html: Toon een link naar de openbare tijdlijnpagina op de voorpagina en geef de API zonder in te loggen toegang tot de openbare tijdlijn + title: Toegang tot de openbare tijdlijn zonder in te loggen toestaan title: Server-instellingen trends: desc_html: Eerder beoordeelde hashtags die op dit moment trending zijn openbaar tonen @@ -795,7 +794,7 @@ nl: '604800': 1 week '86400': 1 dag expires_in_prompt: Nooit - generate: Genereren + generate: Uitnodigingslink genereren invited_by: 'Jij bent uitgenodigd door:' max_uses: one: 1 keer @@ -1005,8 +1004,6 @@ nl: profile: Profiel relationships: Volgers en gevolgden two_factor_authentication: Tweestapsverificatie - spam_check: - spam_detected_and_silenced: Dit is een automatisch gegenereerde rapportage. Er is spam gedetecteerd en de verzender hiervan werd automatisch genegeerd. Wanneer dit een vergissing is, kun je het negeren van dit account beter weer ongedaan maken. statuses: attached: description: 'Bijlagen: %{attached}' diff --git a/config/locales/no.yml b/config/locales/no.yml index c6b9605b3..fa40975a7 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -7,7 +7,6 @@ contact: Kontakt contact_missing: Ikke innstilt contact_unavailable: Ikke tilgjengelig - generic_description: "%{domain} er en tjener i nettverket" hosted_on: Mastodon driftet på %{domain} learn_more: Lær mer source_code: Kildekode diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 819ea3ef6..bd19401ed 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -18,7 +18,6 @@ oc: discover_users: Descobrissètz de nòvas personas documentation: Documentacion federation_hint_html: Amb un compte sus %{instance} poiretz sègre de personas de qualque siasque servidor Mastodon e encara mai. - generic_description: "%{domain} es un dels servidors del malhum" get_apps: Ensajatz una aplicacion mobil hosted_on: Mastodon albergat sus %{domain} learn_more: Ne saber mai diff --git a/config/locales/pl.yml b/config/locales/pl.yml index af3a55211..40a8bd993 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -18,7 +18,6 @@ pl: discover_users: Odkrywaj użytkowników documentation: Dokumentacja federation_hint_html: Z kontem na %{instance}, możesz śledzić użytkowników każdego serwera Mastodona i nie tylko. - generic_description: "%{domain} jest jednym z serwerów sieci" get_apps: Spróbuj aplikacji mobilnej hosted_on: Mastodon uruchomiony na %{domain} learn_more: Dowiedz się więcej diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 32ea8caf6..bafbcaab3 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -18,7 +18,6 @@ pt-BR: discover_users: Descubra usuários documentation: Documentação federation_hint_html: Com uma conta em %{instance} você vai poder seguir pessoas em qualquer servidor Mastodon ou outros do fediverso. - generic_description: "%{domain} é um servidor na rede" get_apps: Experimente um aplicativo hosted_on: Mastodon hospedado em %{domain} learn_more: Saiba mais @@ -900,8 +899,6 @@ pt-BR: profile: Perfil relationships: Seguindo e seguidores two_factor_authentication: Autenticação em dois passos - spam_check: - spam_detected_and_silenced: Este é um relatório automatizado. Spam foi detectado e o remetente foi silenciado automaticamente. Se isto for um erro, por favor, desfaça esta ação. statuses: attached: description: 'Anexado: %{attached}' diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index ecca3b845..fe23160a2 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -10,7 +10,6 @@ pt-PT: contact_missing: Não configurado contact_unavailable: n.d. documentation: Documentação - generic_description: "%{domain} é um servidor na rede" hosted_on: Mastodon em %{domain} learn_more: Saber mais privacy_policy: Política de privacidade diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 818180086..df4a04048 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -18,7 +18,6 @@ ru: discover_users: Находите пользователей documentation: Документация federation_hint_html: С учётной записью на %{instance} вы сможете подписываться на людей с любого сервера Mastodon и не только. - generic_description: "%{domain} - один из серверов сети" get_apps: Попробуйте мобильное приложение hosted_on: Mastodon размещен на %{domain} learn_more: Узнать больше @@ -582,6 +581,9 @@ ru: reset_password: Сбросить пароль security: Безопасность set_new_password: Задать новый пароль + status: + functional: Ваш аккаунт в полном порядке. + redirecting_to: Ваш аккаунт признан неактивным, потому что он перенаправляет на %{acct}. trouble_logging_in: Не удаётся войти? authorize_follow: already_following: Вы уже подписаны на этот аккаунт @@ -621,6 +623,7 @@ ru: before: 'Внимательно прочитайте следующую информацию перед началом:' caches: Содержимое, которое было закэшировано другими серверами, может сохраниться data_removal: Ваши записи и прочие данные будут безвозвратно удалены + email_change_html: <a href="%{path}">Поменять свой e-mail</a> можно не удаляя аккаунт irreversible: Вы не сможете восстановить или повторно активировать свой аккаунт username_available: Ваш юзернейм снова станет доступным username_unavailable: Ваш юзернейм останется недоступным @@ -768,11 +771,14 @@ ru: migrations: acct: имя@домен нового аккаунта cancel: Отменить переезд + cancel_explanation: Отмена перенаправления повторно активирует аккаунт, но не вернёт обратно подписчиков, которые были перемещены на тот аккаунт. cancelled_msg: Переезд был успешно отменён. errors: on_cooldown: Вы пока не можете переезжать followers_count: Подписчиков на момент переезда incoming_migrations: Переезд с другого аккаунта + moved_msg: Ваш аккаунт теперь перенаправляет на %{acct} и подписчики перемещаются туда. + not_redirecting: Ваш аккаунт пока что не перенаправляет на любой другой аккаунт. on_cooldown: Вы уже недавно переносили свой аккаунт. Эта возможность будет снова доступна через %{count} дн. past_migrations: Прошлые переезды proceed_with_move: Перенести подписчиков @@ -784,6 +790,7 @@ ru: disabled_account: Ваш текущий аккаунт впоследствии нельзя будет больше использовать. При этом, у вас будет доступ к экспорту данных, а также к повторной активации аккаунта. followers: Это действие перенесёт всех ваших подписчиков с текущего аккаунта на новый other_data: Никакие другие данные не будут автоматически перенесены + redirect: Профиль этого аккаунта будет обновлён с заметкой о перенаправлении, а также исключён из поиска moderation: title: Модерация notification_mailer: diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml index 27c9e64dc..d1b85d921 100644 --- a/config/locales/simple_form.ar.yml +++ b/config/locales/simple_form.ar.yml @@ -14,6 +14,7 @@ ar: bot: يُعلِم أنّ هذا الحساب لا يمثل شخصًا context: واحد أو أكثر من السياقات التي يجب أن ينطبق عليها عامل التصفية digest: تُرسَل إليك بعد مُضيّ مدة مِن خمول نشاطك و فقط إذا ما تلقيت رسائل شخصية مباشِرة أثناء فترة غيابك مِن الشبكة + discoverable: سِجل الملفات التعريفية للمستخدمين هو طريقة أخرى لبلوغ جمهور أوسع email: سوف تتلقى رسالة إلكترونية للتأكيد fields: يُمكنك عرض 4 عناصر على شكل جدول في صفحتك التعريفية header: ملف PNG أو GIF أو JPG. حجمه على أقصى تصدير %{size}. سيتم تصغيره إلى %{dimensions}px @@ -25,11 +26,14 @@ ar: phrase: سوف يتم العثور عليه مهما كان نوع النص أو حتى و إن كان داخل الويب فيه تحذير عن المحتوى scopes: ما هي المجالات المسموح بها في التطبيق ؟ إن قمت باختيار أعلى المجالات فيمكنك الاستغناء عن الخَيار اليدوي. setting_aggregate_reblogs: لا تقم بعرض المشارَكات الجديدة لتبويقات قد قُمتَ بمشاركتها سابقا (هذا الإجراء يعني المشاركات الجديدة فقط التي تلقيتَها) + setting_default_sensitive: تُخفى الوسائط الحساسة تلقائيا ويمكن اظهارها عن طريق النقر عليها setting_display_media_default: إخفاء الوسائط المُعيَّنة كحساسة setting_display_media_hide_all: إخفاء كافة الوسائط دائمًا setting_display_media_show_all: دائمًا عرض الوسائط المُعيَّنة كحساسة setting_hide_network: الحسابات التي تُتابعها و التي تُتابِعك على حد سواء لن تُعرَض على صفحتك التعريفية setting_noindex: ذلك يؤثر على صفحتك التعريفية وصفحات المنشورات + setting_show_application: يتم عرض اسم التطبيق الذي تستخدمه عند التبويق في العرض المفصّل لتبوبيقاتك + setting_use_pending_items: إخفاء تحديثات الخط وراء نقرة بدلًا مِن التمرير التلقائي للتدفق username: اسم المستخدم الخاص بك سوف يكون فريدا مِن نوعه على %{domain} featured_tag: name: 'رُبَّما تريد·ين استخدام واحد مِن هذه:' @@ -133,8 +137,10 @@ ar: follow: ابعث بريداً إلكترونيًا عندما يتبعك أحد follow_request: ابعث بريدا إلكترونيا عندما يقوم أحدهم بإرسال طلب بالمتابعة mention: ابعث بريداً إلكترونيًا عندما يُشير إليك أو يذكُرك أحدهم + pending_account: ابعث رسالة إلكترونية إن كان هناك حساب جديد بحاجة إلى مراجعة reblog: ابعث بريداً إلكترونيًا عندما يقوم أحدهم بترقية منشورك report: إرسال رسالة إلكترونية عند تلقّي إبلاغ جديد + trending_tag: ابعث رسالة إلكترونية إن كان هناك وسم متداوَل بحاجة إلى مراجعة tag: listable: اسمح لهذا الوسم بالظهور في البحث وفي دليل الصفحات التعريفية name: الوسم diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 2ce286973..1b7667c84 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -43,7 +43,7 @@ de: setting_show_application: Die Anwendung die du nutzst wird in der detaillierten Ansicht deiner Beiträge angezeigt setting_use_blurhash: Die Farbverläufe basieren auf den Farben der versteckten Medien, aber verstecken irgendwelche Details setting_use_pending_items: Neue Beiträge hinter einem Klick verstecken anstatt automatisch zu scrollen - username: Dein Profilname wird auf %{domain} einzigartig sein + username: Dein Benutzername wird auf %{domain} einzigartig sein whole_word: Wenn das Schlagwort nur aus Buchstaben und Zahlen besteht, wird es nur angewendet, wenn es dem ganzen Wort entspricht domain_allow: domain: Diese Domain kann Daten von diesem Server abrufen und eingehende Daten werden verarbeitet und gespeichert @@ -84,7 +84,7 @@ de: suspend: Deaktivieren und Benutzerdaten unwiderruflich löschen warning_preset_id: Benutze eine Warnungsvorlage defaults: - autofollow: Eingeladene Nutzer_innen sollen dir automatisch folgen + autofollow: Eingeladene Nutzer sollen dir automatisch folgen avatar: Profilbild bot: Dieses Profil ist ein Bot chosen_languages: Sprachen filtern diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index 53ff05de1..cbce97171 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -2,6 +2,10 @@ el: simple_form: hints: + account_alias: + acct: Ορίστε το username@domain του λογαριασμού από τον οποίο θέλετε να μετακινηθείτε + account_migration: + acct: Ορίστε το username@domain του λογαριασμού στον οποίο θέλετε να μετακινηθείτε account_warning_preset: text: Μπορεις να χρησιμοποιήσεις συντακτικό ενός τουτ όπως διευθύνσεις URL, ταμπέλες και αναφορές admin_account_action: @@ -15,6 +19,8 @@ el: avatar: PNG, GIF ή JPG. Έως %{size}. Θα περιοριστεί σε διάσταση %{dimensions}px bot: Ο λογαριασμός αυτός εκτελεί κυρίως αυτοματοποιημένες ενέργειες και ίσως να μην παρακολουθείται context: Ένα ή περισσότερα πλαίσια στα οποία μπορεί να εφαρμόζεται αυτό το φίλτρο + current_password: Για λόγους ασφαλείας παρακαλώ γράψε τον κωδικό του τρέχοντος λογαριασμού + current_username: Για επιβεβαίωση, παρακαλώ γράψε το όνομα χρήστη του τρέχοντος λογαριασμού digest: Αποστέλλεται μόνο μετά από μακρά περίοδο αδράνειας και μόνο αν έχεις λάβει προσωπικά μηνύματα κατά την απουσία σου discoverable: Ο κατάλογος λογαριασμών είναι ένας ακόμα τρόπος ώστε ο λογαριασμός σου να βρει μεγαλύτερο κοινό email: Θα σου σταλεί email επιβεβαίωσης @@ -43,6 +49,8 @@ el: domain: Ο τομέας αυτός θα επιτρέπεται να ανακτά δεδομένα από αυτό τον διακομιστή και τα εισερχόμενα δεδομένα θα επεξεργάζονται και θα αποθηκεύονται featured_tag: name: 'Ίσως να θες να χρησιμοποιήσεις μια από αυτές:' + form_challenge: + current_password: Μπαίνεις σε ασφαλή περιοχή imports: data: Αρχείο CSV που έχει εξαχθεί από διαφορετικό κόμβο Mastodon invite_request: @@ -58,6 +66,10 @@ el: fields: name: Ταμπέλα value: Περιεχόμενο + account_alias: + acct: Διακριτικό του παλιού λογαριασμού + account_migration: + acct: Διακριτικό του νέου λογαριασμού account_warning_preset: text: Προκαθορισμένο κείμενο admin_account_action: diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index b6bacde3a..8c2a087c5 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -121,6 +121,8 @@ eo: must_be_follower: Bloki sciigojn de nesekvantoj must_be_following: Bloki sciigojn de homoj, kiujn vi ne sekvas must_be_following_dm: Bloki rektajn mesaĝojn de homoj, kiujn vi ne sekvas + invite: + comment: Komento invite_request: text: Kial vi volas aliĝi? notification_emails: diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml index 65fa6c846..471577d79 100644 --- a/config/locales/simple_form.eu.yml +++ b/config/locales/simple_form.eu.yml @@ -2,6 +2,8 @@ eu: simple_form: hints: + account_alias: + acct: Zehaztu migrazioaren jatorri den kontuaren erabiltzailea@domeinua account_warning_preset: text: Toot sintaxia erabili dezakezu, URLak, traolak eta aipamenak admin_account_action: @@ -14,6 +16,8 @@ eu: avatar: PNG, GIF edo JPG. Gehienez %{size}. %{dimensions}px neurrira eskalatuko da bot: Kontu honek nagusiki automatizatutako ekintzak burutzen ditu eta agian ez du inork monitorizatzen context: Iragazkia aplikatzeko testuinguru bat edo batzuk + current_password: Segurtasunagatik sartu uneko kontuaren pasahitza + current_username: Berresteko sartu uneko kontuaren erabiltzaile-izena digest: Jarduerarik gabeko epe luze bat eta gero mezu pertsonalen bat jaso baduzu, besterik ez email: Baieztapen e-mail bat bidaliko zaizu fields: 4 elementu bistaratu ditzakezu taula batean zure profilean @@ -38,6 +42,8 @@ eu: whole_word: Hitz eta esaldi gakoa alfanumerikoa denean, hitz osoarekin bat datorrenean besterik ez da aplikatuko featured_tag: name: 'Hauetakoren bat erabili zenezake:' + form_challenge: + current_password: Zonalde seguruan sartzen ari zara imports: data: Beste Mastodon zerbitzari batetik esportatutako CSV fitxategia invite_request: @@ -51,9 +57,14 @@ eu: fields: name: Etiketa value: Edukia + account_alias: + acct: Kontu zaharraren helbidea + account_migration: + acct: Kontu berriaren helbidea account_warning_preset: text: Aurrez ezarritako testua admin_account_action: + include_statuses: Txertatu salatutako toot-ak e-mailean send_email_notification: Jakinarazi erabiltzaileari e-mail bidez text: Abisu pertsonalizatua type: Ekintza @@ -123,6 +134,8 @@ eu: must_be_follower: Blokeatu jarraitzaile ez direnen jakinarazpenak must_be_following: Blokeatu zuk jarraitzen ez dituzu horien jakinarazpenak must_be_following_dm: Blokeatu zuk jarraitzen ez dituzun horien mezu zuzenak + invite: + comment: Iruzkina invite_request: text: Zergatik elkartu nahi duzu? notification_emails: @@ -134,7 +147,10 @@ eu: pending_account: Bidali e-mail bat kontu bat berrikusi behar denean reblog: Bidali e-mail bat norbaitek zure mezuari bultzada ematen badio report: Bidali e-maila txosten berri bat aurkezten denean + trending_tag: Bidali e-mail bat errebisatu gabeko traola bat joeran dagoenean tag: + listable: Baimendu traola hau bilaketetan agertzea eta profilen direktorioan + name: Traola trendable: Baimendu traola hau joeretan agertzea usable: Baimendu toot-ek traola hau erabiltzea 'no': Ez diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 6bfff0c15..cff0db719 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -3,9 +3,9 @@ fr: simple_form: hints: account_alias: - acct: Spécifiez le nom d'utilisateur@domaine du compte que vous souhaitez déplacer + acct: Spécifiez le nom d’utilisateur@domaine du compte que vous souhaitez migrer account_migration: - acct: Spécifiez le nom d'utilisateur@domaine du compte vers lequel vous souhaitez déplacer + acct: Spécifiez le nom d’utilisateur@domaine du compte vers lequel vous souhaitez déménager account_warning_preset: text: Vous pouvez utiliser la syntaxe des pouets, comme les URLs, les hashtags et les mentions admin_account_action: diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 869231bdf..500ff7f76 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -39,6 +39,8 @@ th: whole_word: เมื่อคำสำคัญหรือวลีมีแค่ตัวอักษรและตัวเลข จะถูกใช้หากตรงกันทั้งคำเท่านั้น featured_tag: name: 'คุณอาจต้องการใช้หนึ่งในนี้:' + form_challenge: + current_password: คุณกำลังเข้าสู่พื้นที่ปลอดภัย imports: data: ไฟล์ CSV ที่ส่งออกจากเซิร์ฟเวอร์ Mastodon อื่น invite_request: @@ -109,6 +111,7 @@ th: setting_show_application: เปิดเผยแอปพลิเคชันที่ใช้ในการส่งโพสต์ setting_system_font_ui: ใช้แบบอักษรเริ่มต้นของระบบ setting_theme: ชุดรูปแบบไซต์ + setting_trends: แสดงแนวโน้มของวันนี้ setting_unfollow_modal: แสดงกล่องโต้ตอบการยืนยันก่อนเลิกติดตามใครสักคน setting_use_blurhash: แสดงการไล่ระดับสีที่มีสีสันสำหรับสื่อที่ซ่อนอยู่ setting_use_pending_items: โหมดช้า diff --git a/config/locales/sk.yml b/config/locales/sk.yml index abcfa8870..4975035fe 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -18,7 +18,6 @@ sk: discover_users: Objavuj užívateľov documentation: Dokumentácia federation_hint_html: S účtom na %{instance} budeš môcť následovať ľúdí na hociakom Mastodon serveri, ale aj na iných serveroch. - generic_description: "%{domain} je jeden server v sieti" get_apps: Vyskúšaj aplikácie hosted_on: Mastodon hostovaný na %{domain} instance_actor_flash: | @@ -660,7 +659,7 @@ sk: proceed: Vymaž účet success_msg: Tvoj účet bol úspešne vymazaný warning: - before: 'Predtým, než budeš pokračovať, prosím pozorne si prečítaj tieto poznámky:' + before: 'Než budeš pokračovať, prosím pozorne si prečítaj tieto poznámky:' caches: Obsah, ktorý bol predčítaný inými servermi môže zanechať pozostatky data_removal: Tvoje príspevky a iné dáta budú natrvalo odstránené more_details_html: Pre viac podrobností, pozri <a href="%{terms_path}">zásady súkromia</a>. @@ -818,6 +817,7 @@ sk: missing_also_known_as: neodkazuje spätne na tento účet move_to_self: nemôže to byť tvoj súčasný účet not_found: nebolo možné nájsť + on_cooldown: Si v spánkovom stave followers_count: Následovatelia v čase presunu incoming_migrations: Presúvam sa z iného účtu not_redirecting: Tvoj účet v súčasnosti nepresmerováva na žiaden iný účet. @@ -826,6 +826,8 @@ sk: redirecting_to: Tvoj účet presmerováva na %{acct}. set_redirect: Nastav presmerovanie warning: + backreference_required: Nový účet musí byť najskôr nastavený tak, aby spätne odkazoval na tento + before: 'Než budeš pokračovať, prosím pozorne si prečítaj tieto poznámky:' other_data: Žiadne iné dáta nebudú presunuté automaticky moderation: title: Moderovanie @@ -1093,7 +1095,7 @@ sk: suspend: Tvoj účet bol vylúčený welcome: edit_profile_action: Nastav profil - edit_profile_step: Profil si môžeš prispôsobiť nahratím portrétu a hlavičky, môžeš upraviť svoje meno a viac. Pokiaľ chceš preverovať nových následovateľov predtým než ťa budú môcť sledovať, môžeš uzamknúť svoj účet. + edit_profile_step: Profil si môžeš prispôsobiť nahratím portrétu a záhlavia, môžeš upraviť svoje meno a viac. Pokiaľ chceš preverovať nových následovateľov predtým než ťa budú môcť sledovať, môžeš uzamknúť svoj účet. explanation: Tu nájdeš nejaké tipy do začiatku final_action: Začni prispievať final_step: 'Začni písať! Aj bez následovateľov budú tvoje verejné príspevky videné ostatnými, napríklad na miestnej osi a pod haštagmi. Ak chceš, môžeš sa ostatným predstaviť pod haštagom #introductions.' diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 63eed6409..22b58e7b6 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -18,7 +18,6 @@ sl: discover_users: Odkrijte uporabnike documentation: Dokumentacija federation_hint_html: Z računom na %{instance} boste lahko spremljali ljudi na kateremkoli Mastodon strežniku. - generic_description: "%{domain} je en strežnik v omrežju" get_apps: Poskusite mobilno aplikacijo hosted_on: Mastodon gostuje na %{domain} instance_actor_flash: | @@ -896,8 +895,6 @@ sl: profile: Profil relationships: Sledenja in sledilci two_factor_authentication: Dvofaktorsko overjanje - spam_check: - spam_detected_and_silenced: To je samodejno poročilo. Zaznana je bila neželena pošta in pošiljatelj je bil samodejno utišan. Če je prišlo do napake, prekličite utišanje računa. statuses: attached: description: 'Priloženo: %{attached}' diff --git a/config/locales/sq.yml b/config/locales/sq.yml index af180e281..ac811b0b0 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -9,7 +9,6 @@ sq: contact: Kontakt contact_missing: I parregulluar documentation: Dokumentim - generic_description: "%{domain} është një shërbyes te rrjeti" hosted_on: Mastodon i strehuar në %{domain} learn_more: Mësoni më tepër privacy_policy: Rregulla privatësie diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index 44bae34d0..2bddaf311 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -6,7 +6,6 @@ sr-Latn: about_this: O instanci contact: Kontakt contact_missing: Nije postavljeno - generic_description: "%{domain} je server na mreži" hosted_on: Mastodont hostovan na %{domain} learn_more: Saznajte više source_code: Izvorni kod diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 4a5d551ef..404310fe9 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -9,7 +9,6 @@ sr: contact: Контакт contact_missing: Није постављено documentation: Документација - generic_description: "%{domain} је сервер на мрежи" hosted_on: Мастодонт хостован на %{domain} learn_more: Сазнајте више privacy_policy: Полиса приватности diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 123d8f958..c980b7d05 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -8,7 +8,6 @@ sv: api: API contact: Kontakt contact_missing: Inte inställd - generic_description: "%{domain} är en server i nätverket" hosted_on: Mastodon värd på %{domain} learn_more: Lär dig mer source_code: Källkod @@ -556,6 +555,8 @@ sv: notifications: Meddelanden preferences: Inställningar two_factor_authentication: Tvåstegsautentisering + spam_check: + spam_detected: Det här är en automatisk rapport. Spam har upptäckts. statuses: attached: description: 'Bifogad: %{attached}' diff --git a/config/locales/te.yml b/config/locales/te.yml index ec4846554..526b03b49 100644 --- a/config/locales/te.yml +++ b/config/locales/te.yml @@ -10,7 +10,6 @@ te: contact_missing: ఇంకా సెట్ చేయలేదు contact_unavailable: వర్తించదు documentation: పత్రీకరణ - generic_description: "%{domain} అనేది నెట్వర్కులోని ఒక సర్వరు" hosted_on: మాస్టొడాన్ %{domain} లో హోస్టు చేయబడింది learn_more: మరింత తెలుసుకోండి privacy_policy: గోప్యత విధానము diff --git a/config/locales/th.yml b/config/locales/th.yml index 09d81c752..5a56bcd35 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -1,7 +1,7 @@ --- th: about: - about_hashtag_html: มีโพสต์สาธารณะที่ถูกแท็กด้วย <strong>#%{hashtag}</strong> คุณสามารถโต้ตอบได้หากคุณมีบัญชีที่ไหนก็ได้ในเฟดิเวิร์ส + about_hashtag_html: มีการแท็กโพสต์สาธารณะเหล่านี้ด้วย <strong>#%{hashtag}</strong> คุณสามารถโต้ตอบกับโพสต์หากคุณมีบัญชีที่ใดก็ตามในเฟดิเวิร์ส about_mastodon_html: Mastodon เป็นเครือข่ายสังคมที่ทำงานบนโปรโตคอลเว็บแบบเปิดและซอฟต์แวร์เสรีที่เปิดต้นฉบับ กระจายศูนย์เหมือนอีเมล about_this: เกี่ยวกับ active_count_after: ที่ใช้งาน @@ -17,10 +17,9 @@ th: contact_unavailable: ไม่มี discover_users: ค้นพบผู้ใช้ documentation: เอกสารประกอบ - federation_hint_html: เมื่อคุณมีบัญชีที่ %{instance} แล้ว คุณสามารถติดตามผู้คนบนเซิร์ฟเวอร์ Mastodon เซิร์ฟเวอร์ใดก็ได้ - generic_description: "%{domain} เป็นเซิร์ฟเวอร์หนึ่งในเครือข่าย" + federation_hint_html: ด้วยบัญชีที่ %{instance} คุณจะสามารถติดตามผู้คนในเซิร์ฟเวอร์ Mastodon และอื่น ๆ get_apps: ลองแอปสำหรับมือถือ - hosted_on: Mastodon ให้บริการบน %{domain} + hosted_on: Mastodon ที่โฮสต์ที่ %{domain} learn_more: เรียนรู้เพิ่มเติม privacy_policy: นโยบายความเป็นส่วนตัว see_whats_happening: ดูสิ่งที่กำลังเกิดขึ้น @@ -28,9 +27,11 @@ th: source_code: โค้ดต้นฉบับ status_count_after: other: สถานะ - status_count_before: ผู้ใช้เหล่านั้นได้สร้าง + status_count_before: ผู้สร้าง + tagline: ติดตามเพื่อน ๆ และค้นพบเพื่อนใหม่ ๆ terms: เงื่อนไขการให้บริการ unavailable_content_description: + domain: เซิร์ฟเวอร์ reason: 'เหตุผล:' user_count_after: other: ผู้ใช้ @@ -181,9 +182,11 @@ th: delete: ลบ destroyed_msg: ทำลายอีโมโจสำเร็จ! disable: ปิดใช้งาน + disabled: ปิดใช้งานอยู่ disabled_msg: ปิดใช้งานอีโมจินั้นสำเร็จ emoji: อีโมจิ enable: เปิดใช้งาน + enabled: เปิดใช้งานอยู่ enabled_msg: เปิดใช้งานอีโมจินั้นสำเร็จ image_hint: PNG สูงสุด 50KB new: @@ -263,6 +266,8 @@ th: all: ทั้งหมด limited: จำกัดอยู่ title: การควบคุม + private_comment: ความคิดเห็นส่วนตัว + public_comment: ความคิดเห็นสาธารณะ title: การติดต่อกับภายนอก total_storage: ไฟล์แนบสื่อ invites: @@ -314,6 +319,8 @@ th: username: ชื่อผู้ใช้ในการติดต่อ custom_css: title: CSS ที่กำหนดเอง + domain_blocks: + title: แสดงการปิดกั้นโดเมน profile_directory: title: เปิดใช้งานไดเรกทอรีโปรไฟล์ registrations: @@ -349,6 +356,8 @@ th: desc_html: แสดงเส้นเวลาสาธารณะในหน้าเริ่มต้น title: ตัวอย่างเส้นเวลา title: การตั้งค่าไซต์ + trends: + title: แฮชแท็กที่กำลังนิยม statuses: back_to_account: กลับไปที่หน้าบัญชี batch: @@ -361,9 +370,12 @@ th: no_media: ไม่มีสื่อ title: สถานะบัญชี tags: + context: บริบท + directory: ในไดเรกทอรี in_directory: "%{count} ในไดเรกทอรี" name: แฮชแท็ก title: แฮชแท็ก + trending_right_now: กำลังนิยม title: การดูแล warning_presets: add_new: เพิ่มใหม่ @@ -375,6 +387,7 @@ th: advanced_web_interface: ส่วนติดต่อเว็บขั้นสูง animations_and_accessibility: ภาพเคลื่อนไหวและการช่วยการเข้าถึง confirmation_dialogs: กล่องโต้ตอบการยืนยัน + discovery: ค้นพบ sensitive_content: เนื้อหาที่ละเอียดอ่อน application_mailer: notification_preferences: เปลี่ยนการกำหนดลักษณะอีเมล @@ -389,6 +402,8 @@ th: auth: apply_for_account: ขอคำเชิญ change_password: รหัสผ่าน + checkbox_agreement_html: ฉันยอมรับ <a href="%{rules_path}" target="_blank">กฎของเซิร์ฟเวอร์</a> และ <a href="%{terms_path}" target="_blank">เงื่อนไขการให้บริการ</a> + checkbox_agreement_without_rules_html: ฉันยอมรับ <a href="%{terms_path}" target="_blank">เงื่อนไขการให้บริการ</a> delete_account: ลบบัญชี forgot_password: ลืมรหัสผ่านของคุณ? login: เข้าสู่ระบบ @@ -416,6 +431,7 @@ th: web: ไปยังเว็บ title: ติดตาม %{acct} challenge: + confirm: ดำเนินการต่อ invalid_password: รหัสผ่านไม่ถูกต้อง prompt: ยืนยันรหัสผ่านเพื่อดำเนินการต่อ datetime: @@ -452,6 +468,8 @@ th: '500': title: หน้านี้ไม่ถูกต้อง '503': The page could not be served due to a temporary server failure. + existing_username_validator: + not_found_multiple: ไม่พบ %{usernames} exports: archive_takeout: date: วันที่ @@ -484,6 +502,7 @@ th: developers: นักพัฒนา more: เพิ่มเติม… resources: ทรัพยากร + trending_now: กำลังนิยม generic: all: ทั้งหมด changes_saved_msg: บันทึกการเปลี่ยนแปลงสำเร็จ! @@ -525,6 +544,10 @@ th: too_many: ไม่สามารถแนบมากกว่า 4 ไฟล์ migrations: acct: username@domain ของบัญชีใหม่ + cancel: ยกเลิกการเปลี่ยนเส้นทาง + proceed_with_move: ย้ายผู้ติดตาม + redirecting_to: บัญชีของคุณกำลังเปลี่ยนเส้นทางไปยัง %{acct} + set_redirect: ตั้งการเปลี่ยนเส้นทาง moderation: title: การควบคุม notification_mailer: @@ -639,6 +662,7 @@ th: development: การพัฒนา edit_profile: แก้ไขโปรไฟล์ export: การส่งออกข้อมูล + featured_tags: แฮชแท็กที่แนะนำ import: การนำเข้า import_and_export: การนำเข้าและการส่งออก notifications: การแจ้งเตือน diff --git a/config/locales/tr.yml b/config/locales/tr.yml index bdc72c767..7e53e7f2c 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -18,7 +18,6 @@ tr: discover_users: Kullanıcıları keşfet documentation: Belgeler federation_hint_html: "%{instance} hesabınızla, herhangi bir Mastodon sunucusundaki ve haricindeki kişileri takip edebilirsiniz." - generic_description: "%{domain} ağdaki bir sunucudur" get_apps: Bir mobil uygulamayı deneyin hosted_on: Mastodon %{domain} üzerinde barındırılıyor instance_actor_flash: | @@ -208,6 +207,7 @@ tr: destroy_custom_emoji: "%{target} emoji, %{name} tarafından kaldırıldı" destroy_domain_block: "%{target} alan adının engeli %{name} tarafından kaldırıldı" destroy_email_domain_block: "%{target} e-posta sunucusu, %{name} tarafından beyaz listeye alındı" + destroy_status: "%{name}, %{target} kullanıcısının durumunu kaldırdı" disable_2fa_user: "%{name}, %{target} kullanıcısı için iki adım gereksinimini kapattı" disable_custom_emoji: "%{target} emoji, %{name} tarafından devre dışı bırakıldı" disable_user: "%{name} %{target} kullanıcısı için oturum açmayı devre dışı bıraktı" @@ -221,9 +221,11 @@ tr: resolve_report: "%{name} %{target} şikayetini çözdü" silence_account: "%{name} %{target}'in hesabını susturdu" suspend_account: "%{name} %{target}'in hesabını uzaklaştırdı" + unassigned_report: "%{name} %{target} şikayetinin atamasını geri aldı" unsilence_account: "%{name} %{target}'in hesabının susturmasını kaldırdı" unsuspend_account: "%{name} %{target}'in hesabının uzaklaştırmasını kaldırdı" update_custom_emoji: "%{name} %{target} emojiyi güncelledi" + update_status: "%{name}, %{target} kullanıcısının durumunu güncelledi" deleted_status: "(silinmiş durum)" title: Denetim günlüğü custom_emojis: @@ -260,6 +262,7 @@ tr: upload: Yükle dashboard: authorized_fetch_mode: Güvenli mod + backlog: bekleyen işler config: Yapılandırma feature_deletions: Hesap silme feature_invites: Davet linkleri @@ -307,10 +310,13 @@ tr: suspend: Uzaklaştır title: Yeni domain bloğu private_comment: Özel yorum + private_comment_hint: Denetleyiciler tarafından dahili kullanım için bu alan adı sınırlaması hakkında yorum. public_comment: Genel yorum + public_comment_hint: Eğer alan adı sınırlamaları listesinin tanıtılması etkinleştirilmişse, genel kullanım için bu alan adı sınırlaması hakkında yorum. reject_media: Ortam dosyalarını reddetme reject_media_hint: Yerel olarak depolanmış ortam dosyalarını ve gelecekte indirilecek olanları reddeder. Uzaklaştırma için uygun değildir reject_reports: Raporları reddet + reject_reports_hint: Bu alan adından gelen tüm şikayetleri yok sayın. Uzaklaştırmalar için mevzu dışıdır rejecting_media: ortam dosyalarını reddet rejecting_reports: şikayetleri reddet severity: @@ -371,9 +377,11 @@ tr: relays: add_new: Yeni aktarıcı ekle delete: Sil + description_html: "<strong>Federasyon aktarıcısı</strong>, kendisine abone olan ve yayın yapan sunucular arasında büyük miktarlarda herkese açık gönderilerin değiş tokuşunu yapan aracı bir sunucudur. <strong>Küçük ve orta boyutlu sunucuların fediverse'ten içerik keşfetmesine yardımcı olurlar</strong>, aksi takdirde yerel kullanıcıların uzak sunuculardaki diğer kişileri manuel olarak takip etmeleri gerekecektir." disable: Devre dışı disabled: Devre dışı enable: Etkin + enable_hint: Etkinleştirildiğinde, sunucunuz bu aktarıcıdan gelecek tüm herkese açık gönderilere abone olacak, ve kendisinin herkese açık gönderilerini bu aktarıcıya göndermeye başlayacaktır. enabled: Etkin inbox_url: Aktarıcı URL'si pending: Aktarıcının onaylaması için bekleniyor @@ -403,6 +411,7 @@ tr: create_and_resolve: Not ile çözümle create_and_unresolve: Not ile tekrar aç delete: Sil + placeholder: Hangi işlemlerin yapıldığını, ya da diğer ilgili güncellemeleri açıklayın... reopen: Şikayeti tekrar aç report: 'Şikayet #%{id}' reported_account: Şikayet edilen hesap @@ -416,13 +425,16 @@ tr: updated_at: Güncellendi settings: activity_api_enabled: + desc_html: Yerel olarak yayınlanan durumların, aktif kullanıcıların, ve haftalık kovalardaki yeni kayıtların sayısı title: Kullanıcı etkinliği hakkında toplu istatistikler yayınlayın bootstrap_timeline_accounts: + desc_html: Birden fazla kullanıcı adını virgülle ayırın. Yalnızca yerel ve kilitlenmemiş hesaplar geçerlidir. Boş olduğunda varsayılan tüm yerel yöneticilerdir. title: Yeni kullanıcılar için varsayılan takipler contact_information: email: Herkese açık e-posta adresiniz username: Bir kullanıcı adı giriniz custom_css: + desc_html: Görünümü her sayfada yüklenecek CSS ile değiştirin title: Özel CSS default_noindex: desc_html: Bu ayarı kendileri değiştirmeyen tüm kullanıcıları etkiler @@ -435,8 +447,10 @@ tr: domain_blocks_rationale: title: Gerekçeyi göster hero: + desc_html: Önsayfada görüntülenir. En az 600x100px önerilir. Ayarlanmadığında, sunucu küçük resmi kullanılır title: Kahraman görseli mascot: + desc_html: Birden fazla sayfada görüntülenir. En az 293x205px önerilir. Ayarlanmadığında, varsayılan maskot kullanılır title: Maskot görseli peers_api_enabled: desc_html: Bu sunucunun fediverse'te karşılaştığı alan adları @@ -463,6 +477,9 @@ tr: none: Hiç kimse kayıt olamaz open: Herkes kaydolabilir title: Kayıt modu + show_known_fediverse_at_about_page: + desc_html: Değiştirildiğinde, bilinen bütün fediverse'lerden gönderileri ön izlemede gösterir. Diğer türlü sadece yerel gönderileri gösterecektir. + title: Zaman çizelgesi ön izlemesinde bilinen fediverse'i göster show_staff_badge: desc_html: Kullanıcının sayfasında bir personel rozeti göster title: Personel rozeti göster @@ -473,6 +490,7 @@ tr: desc_html: Harici bilgi sayfasında gösterilir.<br>HTML etiketleri girebilirsiniz title: Sunucu hakkında detaylı bilgi site_short_description: + desc_html: Kenar çubuğunda ve meta etiketlerinde görüntülenir. Mastodon'un ne olduğunu ve bu sunucuyu özel kılan şeyleri tek bir paragrafta açıklayın. title: Kısa sunucu açıklaması site_terms: desc_html: Kendi gizlilik politikanızı, hizmet şartlarınızı ya da diğer hukuki metinlerinizi yazabilirsiniz. HTML etiketleri kullanabilirsiniz @@ -485,9 +503,14 @@ tr: desc_html: OpenGraph ve API ile ön izlemeler için kullanılır. 1200x630px tavsiye edilir title: Sunucu küçük resmi timeline_preview: + desc_html: Açılış sayfasında genel zaman çizelgesini görüntüle title: Zaman çizelgesi önizlemesi title: Site Ayarları + trendable_by_default: + desc_html: Daha önce izin verilmeyen etiketleri etkiler + title: Ön inceleme yapmadan etiketlerin trend olmasına izin ver trends: + desc_html: Şu anda trend olan ve daha önce incelenen etiketleri herkese açık olarak göster title: Trend etiketler statuses: back_to_account: Hesap sayfasına geri dön @@ -506,8 +529,10 @@ tr: tags: accounts_today: Bugünkü eşsiz kullanımlar accounts_week: Bu haftaki eşsiz kullanımlar + breakdown: Bugünkü kullanımın kaynağa göre dağılımı context: İçerik directory: Dizinde + in_directory: Dizinde %{count} last_active: Son aktiflik most_popular: En popüler most_recent: En yeni @@ -534,8 +559,15 @@ tr: body: "%{reporter} %{target}'i şikayet etti" body_remote: "%{domain}'den birisi %{target}'i şikayet etti" subject: "%{instance} için yeni şikayet (#%{id})" + new_trending_tag: + body: "#%{name} etiketi bugün trend, ancak daha önce incelenmedi. Siz izin vermediğiniz sürece herkese açık olarak gösterilmeyecek, ya da bir daha asla hakkında bir şey duymamak için olduğu şekliyle formu kaydedin." + subject: "%{instance} üzerinde gözden geçirmek için yeni etiket (#%{name})" aliases: add_new: Takma ad oluştur + created_msg: Yeni takma ad başarıyla oluşturuldu. Artık eski hesaptan taşınmayı başlatabilirsiniz. + deleted_msg: Yeni takma ad başarıyla kaldırıldı. O hesaptan bu hesaba taşınmak artık mümkün değil. + hint_html: Başka bir hesaptan bu hesaba taşınmak istiyorsanız, takipçileri eski hesaptan bu hesaba taşımadan önce gerekli olan takma adı burada oluşturabilirsiniz. Bu eylem kendi başına <strong>zararsızdır ve geri döndürülebilir</strong>. <strong>Hesap taşıma işlemi eski hesaptan başlatılır</strong>. + remove: Takma adların bağlantısını kaldır appearance: advanced_web_interface: Gelişmiş web arayüzü advanced_web_interface_hint: 'Tüm ekran genişliğinizden yararlanmak istiyorsanız, gelişmiş web arayüzü istediğiniz kadar bilgi görecek kadar çok sayıda farklı sütunu yapılandırmanıza olanak tanır: Anasayfa, bildirimler, birleşik zaman çizelgesi, istediğiniz sayıda liste ve etiket.' @@ -568,6 +600,7 @@ tr: description: prefix_invited_by_user: "@%{name} sizi Mastodon'un bu sunucusuna katılmaya davet ediyor!" prefix_sign_up: Bugün Mastodon'a kaydolun! + suffix: Bir hesapla, kişileri takip edebilir, güncellemeler gönderebilir, herhangi bir Mastodon sunucusundan kullanıcılarla mesaj alışverişinde bulunabilir ve daha birçok şey yapabilirsin! didnt_get_confirmation: Hesap doğrulama mailini almadınız mı? forgot_password: Parolanızı unuttunuz mu? invalid_reset_password_token: Parola sıfırlama belirteci geçersiz veya süresi dolmuş. Lütfen yeni bir tane talep edin. @@ -594,6 +627,7 @@ tr: confirming: E-posta doğrulamasının tamamlanması bekleniyor. functional: Hesabınız tamamen kullanıma hazır. pending: Başvurunuz personelimiz tarafından gözden geçirilmeyi beklemektedir. Bu biraz zaman alabilir. Başvurunuz onaylanırsa bir e-posta alacaksınız. + redirecting_to: Hesabınız aktif değil çünkü şu anda %{acct} adresine yönlendirilmektedir. trouble_logging_in: Oturum açarken sorun mu yaşıyorsunuz? authorize_follow: already_following: Bu hesabı zaten takip ediyorsunuz @@ -604,9 +638,11 @@ tr: post_follow: close: Ya da, sadece bu pencereyi kapatabilirsiniz. return: Kullanıcının profilini göster + web: Web'e git title: "%{acct}'i takip et" challenge: confirm: Devam et + hint_html: "<strong>İpucu:</strong> Önümüzdeki saat boyunca sana parolanı sormayacağız." invalid_password: Geçersiz parola prompt: Devam etmek parolayı doğrulayın datetime: @@ -634,6 +670,12 @@ tr: caches: Diğer sunucular tarafından ön belleğe alınan içerik kalabilir data_removal: Gönderileriniz ve diğer verileriniz kalıcı olarak silinecektir email_change_html: Hesabınızı silmeden <a href="%{path}">e-posta adresinizi değiştirebilirsiniz</a> + email_contact_html: Eğer hala ulaşmazsa, yardım için <a href="mailto:%{email}">%{email}</a> adresine e-posta gönderebilirsiniz + email_reconfirmation_html: Eğer doğrulama e-postası almıyorsanız, <a href="%{path}">tekrar talep edebilirsiniz</a> + irreversible: Hesabınızı geri yükleyemeyecek ya da yeniden etkinleştiremeyeceksiniz + more_details_html: Daha fazla ayrıntı için, <a href="%{terms_path}">gizlilik politikası</a>na göz atın. + username_available: Kullanıcı adınız tekrar kullanılabilir olacaktır + username_unavailable: Kullanıcı adınız kullanılamaz kalacaktır directories: directory: Profil dizini explanation: Kullanıcıları ilgi alanlarına göre keşfedin @@ -649,7 +691,7 @@ tr: '422': content: Güvenlik doğrulaması başarısız oldu. Site cookie'lerini engellemiş olabilirsiniz. title: Güvenlik doğrulamasu başarısız - '429': Throttled + '429': Kısıtlandı '500': content: Üzgünüz, ancak bir şey ters gitti. title: Bu sayfa doğru değil @@ -657,15 +699,18 @@ tr: noscript_html: Mastodon web uygulamasını kullanmak için lütfen JavaScript'i etkinleştirin. Alternatif olarak, platformunuz için Mastodon <a href="%{apps_path}">yerel uygulamalardan</a> birini deneyin. existing_username_validator: not_found: bu kullanıcı adına sahip yerel bir kullanıcı bulunamadı + not_found_multiple: "%{usernames} bulunamadı" exports: archive_takeout: date: Tarih download: Arşivinizi indirin hint_html: "<strong>Gönderileriniz ve yüklediğiniz ortamların</strong> bir arşivini talep edebilirsiniz. Dışa aktarılan veriler, herhangi bir uyumlu yazılım tarafından okunabilen ActivityPub formatında olacaktır. Her 7 günde bir arşiv talep edebilirsiniz." in_progress: Arşivinizi derliyoruz... + request: Arşiv isteği size: Boyut blocks: Blokladıklarınız csv: CSV + domain_blocks: Alan adı blokları follows: Takip ettikleriniz lists: Listeler mutes: Susturduklarınız @@ -683,6 +728,9 @@ tr: thread: Sohbetler edit: title: Filtreyi düzenle + errors: + invalid_context: Sıfır ya da geçersiz içerik sağlandı + invalid_irreversible: Geri dönüşümsüz filtreleme sadece anasayfa ya da bildirim bağlamında çalışır index: delete: Sil title: Filtreler @@ -697,6 +745,7 @@ tr: all: Tümü changes_saved_msg: Değişiklikler başarıyla kaydedildi! copy: Kopyala + no_batch_actions_available: Bu sayfada toplu işlem yok order_by: Sıralama ölçütü save_changes: Değişiklikleri kaydet validation_errors: @@ -710,9 +759,15 @@ tr: authorize_connection_prompt: Bu kriptolu bağlantıyı yetkilendir? errors: failed: Kriptolu bağlantı başarısız oldu. Lütfen %{provider} üzerinden tekrar deneyin. + keybase: + invalid_token: Keybase belirteçleri imza hash'leridir ve 66 hex karakter içermelidir + verification_failed: Keybase, bu belirteci, %{kb_username} Keybase kullanıcısının imzası olarak tanımıyor. Lütfen Keybase'den tekrar deneyin. + wrong_user: "%{current} olarak giriş yaparken %{proving} için bir kanıt oluşturulamıyor. %{proving} olarak giriş yapın ve tekrar deneyin." + explanation_html: Burada, Keybase profili gibi diğer kimliklerinizi şifreli olarak bağlayabilirsiniz. Bu, diğer kişilerin size şifreli mesajlar göndermesini ve gönderdiğiniz içeriğe güvenmelerini sağlar. i_am_html: Ben %{service} üzerinde %{username}. identity: Kimlik inactive: Pasif + publicize_checkbox: 'Ve bunu paylaş:' publicize_toot: 'İspatlandı! Ben %{service} üzerinde %{username}: %{url}' status: Doğrulama durumu view_proof: Kanıt görüntüle @@ -763,23 +818,33 @@ tr: migrations: acct: Taşındı cancel: Yönlendirmeyi iptal et + cancel_explanation: Yönlendirmeyi iptal etmek, mevcut hesabınızı yeniden etkinleştirecek, ancak söz konusu hesaba taşınan takipçileri geri getirmeyecektir. cancelled_msg: Yönlendirme başarıyla iptal edildi. errors: already_moved: zaten taşındığınızla aynı hesap + missing_also_known_as: bu hesaba geri referans yapmamaktadır move_to_self: mevcut hesap olamaz not_found: bulunamadı on_cooldown: Soğuma aşamasındasınız followers_count: Taşınma zamanındaki takipçiler incoming_migrations: Farklı bir hesaptan taşınma + incoming_migrations_html: Başka bir hesaptan bu hesaba taşınmak için önce bir <a href="%{path}">hesap takma adı oluşturmanız</a> gerekmektedir. + moved_msg: Hesabınız şimdi %{acct} adresine yönlendiriliyor ve takipçileriniz taşınıyor. + not_redirecting: Hesabınız şu anda başka bir hesaba yönlendirilmemektedir. + on_cooldown: Son zamanlarda hesabınızı taşıdınız. Bu işlev %{count} gün içinde tekrar kullanılabilir olacaktır. past_migrations: Geçmiş taşınmalar proceed_with_move: Takipçileri taşı redirecting_to: Hesabınız %{acct} hesabına yönlendirilmektedir. set_redirect: Yönlendirme ayarla warning: + backreference_required: Öncelikle, yeni hesap bu hesabı geri referans edecek şekilde yapılandırılmalıdır before: 'Devam etmeden önce, lütfen bu notları dikkatlice okuyun:' cooldown: Taşındıktan sonra, yeniden taşınma imkanınızın olmayacağı bir soğuma periyodu vardır + disabled_account: Sonrasında, mevcut hesabınız tamamen kullanılabilir olmayacaktır. Ancak, yeniden etkinleştirme işleminin yanı sıra veri dışa aktarma erişimine sahip olacaksınız. followers: Bu eylem tüm takipçileri şu anki hesaptan yeni hesaba taşıyacaktır + only_redirect_html: Alternatif olarak, <a href="%{path}">sadece profilinize bir yönlendirme koyabilirsiniz</a>. other_data: Başka bir veri otomatik olarak taşınmayacaktır + redirect: Mevcut hesabınızın profili bir yönlendirme bildirimi ile güncellenecek ve aramaların dışında tutulacaktır moderation: title: Yönetim notification_mailer: @@ -835,6 +900,9 @@ tr: polls: errors: already_voted: Bu ankete daha önce oy verdiniz + duplicate_options: kopya ögeler içeriyor + duration_too_long: ileriye doğru çok geç + duration_too_short: çok erken expired: Anket çoktan sona erdi over_character_limit: her biri %{max} karakterden daha uzun olamaz too_few_options: birden fazla öğeye sahip olmalı @@ -862,6 +930,7 @@ tr: no_account_html: Hesabınız yok mu? <a href='%{sign_up_path}' target='_blank'>Buradan kaydolabilirsiniz</a> proceed: Takip onayı prompt: Bu kullanıcıyı takip etmek istediğinize emin misiniz? + reason_html: "<strong>Bu adım neden gerekli?</strong><code>%{instance}</code> kayıtlı olduğunuz sunucu olmayabilir, bu yüzden önce sizi kendi sunucunuza yönlendirmemiz gerekmektedir." remote_interaction: favourite: proceed: Favorilere eklemek için ilerle @@ -872,6 +941,10 @@ tr: reply: proceed: Cevap vermek için ilerle prompt: 'Bu gönderiye cevap vermek istiyorsunuz:' + scheduled_statuses: + over_daily_limit: O gün için %{limit} zamanlanmış gönderi sınırını aştınız + over_total_limit: "%{limit} zamanlanmış gönderi sınırını aştınız" + too_soon: Programlanan tarih bugünden ileri bir tarihte olmalıdır sessions: activity: Son aktivite browser: Tarayıcı @@ -916,6 +989,7 @@ tr: settings: account: Hesap account_settings: Hesap ayarları + aliases: Hesap takma adları appearance: Görünüm authorized_apps: Yetkilendirilen uygulamalar back: Mastodon'a geri dön @@ -933,6 +1007,8 @@ tr: profile: Profil relationships: Takip edilenler ve takipçiler two_factor_authentication: İki-faktörlü doğrulama + spam_check: + spam_detected: Bu otomatik bir şikayettir. Spam tespit edildi. statuses: attached: description: 'Ekli: %{attached}' @@ -951,10 +1027,14 @@ tr: open_in_web: Web sayfasında aç over_character_limit: "%{max} karakter limiti aşıldı" pin_errors: + limit: Hali hazırda maksimum sayıda gönderiyi sabitlediniz ownership: Başkasının gönderisi sabitlenemez private: Halka açık olmayan gönderi sabitlenemez reblog: Bir yineleme sabitlenemez poll: + total_people: + one: "%{count} kişi" + other: "%{count} kişi" total_votes: one: "%{count} oy" other: "%{count} oy" @@ -980,20 +1060,47 @@ tr: themes: contrast: Mastodon (Yüksek karşıtlık) default: Mastodon (Karanlık) + mastodon-light: Mastodon (Açık) + time: + formats: + default: "%b %d, %Y, %H:%M" + month: "%b %Y" two_factor_authentication: code_hint: Onaylamak için kimlik doğrulama uygulamanızın oluşturduğu kodu giriniz description_html: Eğer <strong>iki-faktörlü kimlik doğrulamayı</strong> aktif ederseniz, giriş yaparken sizin için giriş kodu üreten telefonunuza ihtiyaç duyacaksınız. disable: Devre dışı bırak enable: Aktifleştir + enabled: İki adımlı kimlik doğrulama etkin enabled_success: İki-faktörlü kimlik doğrulama başarıyla aktif edildi generate_recovery_codes: Kurtarma Kodlarını Oluştur instructions_html: <strong>Bu QR kodunu, telefonunuzdaki <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2">Google Authenticator</a> veya benzer bir TOTP uygulamasıyla taratınız</strong>. Bundan sonra giriş yaparken uygulamanın ürettiği kodu kullanarak giriş yapacaksınız. lost_recovery_codes: Kurtarma kodları telefonunuzu kaybettiğiniz durumlarda hesabınıza erişim yapabilmenize olanak tanır. Eğer kurtarma kodlarınızı kaybettiyseniz burada tekrar oluşturabilirsiniz. Eski kurtarma kodlarınız geçersiz hale gelecektir. manual_instructions: 'Eğer QR kodunu taratamıyorsanız ve elle giriş yapmanız gerekiyorsa buradaki gizli düz metni girebilirsiniz:' + recovery_codes: Kurtarma kodlarını yedekle recovery_codes_regenerated: Kurtarma kodları başarıyla oluşturuldu recovery_instructions_html: 'Eğer telefonunuza erişiminizi kaybederseniz, aşağıdaki kurtarma kodlarından birini kullanarak hesabınıza giriş yapabilirsiniz. Kurtarma kodlarınızı güvenli halde tutunuz. Örneğin: kodların çıktısını alıp diğer önemli belgeleriniz ile birlikte saklayabilirsiniz.' setup: Kuruluma başla wrong_code: Girdiğiniz kod geçersiz! Telefonunuzun saati geri/ileri kalmış olabilir. + user_mailer: + backup_ready: + explanation: Mastodon hesabınızın tam bir yedeğini istediniz. Şimdi indirmeye hazır! + subject: Arşiviniz indirilmeye hazır + title: Arşiv paketlemesi + warning: + explanation: + disable: Hesabınız donmuşken, hesap verileriniz bozulmadan kalır, ancak kilidi açılıncaya kadar herhangi bir işlem gerçekleştiremezsiniz. + silence: Hesabınız sınırlı iken, yalnızca sizi takip eden kişiler bu sunucuda gönderilerinizi görecek ve çeşitli halka açık listelerin dışında tutulabilirsiniz. Ancak, diğerleri hala sizi manuel olarak takip edebilir. + suspend: Hesabınız askıya alındı ve tüm gönderileriniz ve yüklediğiniz medya dosyalarınız bu sunucudan ve takipçilerinizin bulunduğu sunuculardan geri alınamaz şekilde kaldırıldı. + get_in_touch: "%{instance} çalışanlarıyla iletişim kurmak için bu e-postayı yanıtlayabilirsiniz." + review_server_policies: Sunucu politikalarını inceleyin + subject: + disable: "%{acct} hesabınız donduruldu" + none: "%{acct} için uyarı" + silence: "%{acct} hesabınız sınırlandırıldı" + suspend: "%{acct} hesabınız askıya alındı" + title: + disable: Hesap donduruldu + none: Uyarı users: invalid_email: E-posta adresiniz geçersiz invalid_otp_token: İki-faktörlü kodunuz geçersiz diff --git a/config/locales/uk.yml b/config/locales/uk.yml index ade86d604..1d3459a0f 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -18,7 +18,6 @@ uk: discover_users: Знайдіть цікавих користувачів documentation: Документація federation_hint_html: З обліковим записом на %{instance} ви зможете слідкувати за людьми на будь-якому сервері Mastodon та поза ним. - generic_description: "%{domain} є одним сервером у мережі" get_apps: Спробуйте мобільний додаток hosted_on: Mastodon розміщено на %{domain} instance_actor_flash: 'Цей обліковий запис є віртуальною особою, яка використовується для представлення самого сервера, а не певного користувача. Він використовується для потреб федерації і не повинен бути заблокований, якщо тільки ви не хочете заблокувати весь сервер, у цьому випадку ви повинні скористатися блокуванням домену. @@ -37,6 +36,10 @@ uk: status_count_before: Опубліковано tagline: Слідкуйте за друзями та знаходьте нових terms: Правила використання + unavailable_content: Недоступний вміст + unavailable_content_description: + domain: Сервер + reason: Причина user_count_after: few: користувача many: користувачів @@ -236,11 +239,14 @@ uk: delete: Видалити destroyed_msg: Емодзі усіпішно видалене! disable: Вимкнути + disabled: Вимкнено disabled_msg: Емодзі успішно вимкнено emoji: Емодзі enable: Увімкнути + enabled: Увімкнено enabled_msg: Емодзі успішно увімкнене image_hint: PNG розміром до 50 КБ + list: Список listed: У списку new: title: Додати новий емодзі @@ -248,6 +254,7 @@ uk: shortcode: Шорткод shortcode_hint: Мінімум два символи, тільки цифрові й латинські символи або підкреслення title: Особливі емодзі + uncategorized: Без категорії unlisted: Не у списку update_failed_msg: Не вийшло оновити емозді updated_msg: Емодзі успішно оновлене! @@ -382,6 +389,7 @@ uk: pending: Очікуємо на підтвердження ретранслятором save_and_enable: Зберегти та увімкнути setup: Налаштування з'єднання з ретранслятором + signatures_not_enabled: Ретранслятори не будуть добре працювати поки ввімкнений безопасний режим або режим білого списка status: Статус title: Ретранслятори report_notes: @@ -430,6 +438,8 @@ uk: custom_css: desc_html: Відобразити вигляд, коли CSS завантажено для кожної сторінки title: Користувацький CSS + default_noindex: + desc_html: Впливає на усіх користувачів, які не змінили це настроювання самостійно domain_blocks: all: Всi disabled: Нікого @@ -520,6 +530,7 @@ uk: context: Контекст directory: У каталозі in_directory: "%{count} у каталозі" + name: Хештеґ review: Переглянути статус reviewed: Переглянуто title: Хештеґи @@ -544,6 +555,10 @@ uk: subject: Нова скарга до %{instance} (#%{id}) new_trending_tag: subject: Новий хештеґ надіслано на розгляд до %{instance} (#%{name}) + aliases: + add_new: Створити псевдонім + created_msg: Новий псевдонім успішно створено. Тепер ви можете починати переміщення зі старого облікового запису. + deleted_msg: Псевдонім успішно видалено. Переміщення з того облікового запису до цього більше не можливе. appearance: advanced_web_interface: Розширений web-інтерфейс advanced_web_interface_hint: 'Розширений веб-інтерфейс дає змогу бачити багато стовпчиків одночасно: основна сторінка, сповіщення, глобальна стрічка, будь-які списки та хештеґи. Потребує широкого екрана.' @@ -783,6 +798,7 @@ uk: too_many: Не можна додати більше 4 файлів migrations: acct: username@domain нового облікового запису + cancel: Скасувати перенаправлення moderation: title: Модерація notification_mailer: @@ -948,8 +964,6 @@ uk: profile: Профіль relationships: Підписки та підписники two_factor_authentication: Двофакторна авторизація - spam_check: - spam_detected_and_silenced: Це автоматично згенерована скарга. Було виявлено розсилку спаму, відправник був автоматично заглушений. Якщо це помилка, зніміть заглушування з облікового запису. statuses: attached: description: 'Прикріплено: %{attached}' diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 89506e223..55685c82e 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -18,7 +18,6 @@ zh-CN: discover_users: 发现用户 documentation: 文档 federation_hint_html: 在%{instance} 上拥有账户后,你可以关注任何 Mastodon 服务器或其他服务器上的人。 - generic_description: "%{domain} 是这个庞大网络中的一台服务器" get_apps: 尝试移动应用 hosted_on: 一个在 %{domain} 上运行的 Mastodon 实例 learn_more: 了解详情 diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index 6f77f52c3..338cf810e 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -8,7 +8,6 @@ zh-HK: contact: 聯絡 contact_missing: 未設定 contact_unavailable: 未公開 - generic_description: "%{domain} 是 Mastodon 網絡中其中一個服務站" hosted_on: 在 %{domain} 運作的 Mastodon 服務站 learn_more: 了解更多 source_code: 源代碼 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 7750d596b..bb6e761c7 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -16,7 +16,6 @@ zh-TW: contact_unavailable: 未公開 discover_users: 探索使用者 documentation: 文件 - generic_description: "%{domain} 是 Mastodon 網路中其中一個站點" get_apps: 嘗試行動應用程式 hosted_on: 在 %{domain} 運作的 Mastodon 站點 learn_more: 了解詳細 diff --git a/config/settings.yml b/config/settings.yml index 0e615f8e8..d13e99831 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -40,6 +40,7 @@ defaults: &defaults use_blurhash: true use_pending_items: false trends: true + trendable_by_default: false notification_emails: follow: false reblog: false diff --git a/db/migrate/20181024224956_migrate_account_conversations.rb b/db/migrate/20181024224956_migrate_account_conversations.rb index b718f9e1d..d4bc3b91d 100644 --- a/db/migrate/20181024224956_migrate_account_conversations.rb +++ b/db/migrate/20181024224956_migrate_account_conversations.rb @@ -52,6 +52,6 @@ class MigrateAccountConversations < ActiveRecord::Migration[5.2] end def notifications_about_direct_statuses - Notification.joins(mention: :status).where(activity_type: 'Mention', statuses: { visibility: :direct }) + Notification.joins('INNER JOIN mentions ON mentions.id = notifications.activity_id INNER JOIN statuses ON statuses.id = mentions.status_id').where(activity_type: 'Mention', statuses: { visibility: :direct }) end end diff --git a/db/migrate/20191007013357_update_pt_locales.rb b/db/migrate/20191007013357_update_pt_locales.rb new file mode 100644 index 000000000..b7288d38a --- /dev/null +++ b/db/migrate/20191007013357_update_pt_locales.rb @@ -0,0 +1,11 @@ +class UpdatePtLocales < ActiveRecord::Migration[5.2] + disable_ddl_transaction! + + def up + User.where(locale: 'pt').in_batches.update_all(locale: 'pt-PT') + end + + def down + User.where(locale: 'pt-PT').in_batches.update_all(locale: 'pt') + end +end diff --git a/db/schema.rb b/db/schema.rb index d9c4f7a37..eb86a9f68 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2019_10_01_213028) do +ActiveRecord::Schema.define(version: 2019_10_07_013357) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -706,6 +706,30 @@ ActiveRecord::Schema.define(version: 2019_10_01_213028) do t.index ["tag_id", "status_id"], name: "index_statuses_tags_on_tag_id_and_status_id", unique: true end + create_table "stream_entries", force: :cascade do |t| + t.bigint "activity_id" + t.string "activity_type" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.boolean "hidden", default: false, null: false + t.bigint "account_id" + t.index ["account_id", "activity_type", "id"], name: "index_stream_entries_on_account_id_and_activity_type_and_id" + t.index ["activity_id", "activity_type"], name: "index_stream_entries_on_activity_id_and_activity_type" + end + + create_table "subscriptions", force: :cascade do |t| + t.string "callback_url", default: "", null: false + t.string "secret" + t.datetime "expires_at" + t.boolean "confirmed", default: false, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.datetime "last_successful_delivery_at" + t.string "domain" + t.bigint "account_id", null: false + t.index ["account_id", "callback_url"], name: "index_subscriptions_on_account_id_and_callback_url", unique: true + end + create_table "tags", force: :cascade do |t| t.string "name", default: "", null: false t.datetime "created_at", null: false diff --git a/lib/json_ld/identity.rb b/lib/json_ld/identity.rb new file mode 100644 index 000000000..4fb3f8e9d --- /dev/null +++ b/lib/json_ld/identity.rb @@ -0,0 +1,87 @@ +# -*- encoding: utf-8 -*- +# frozen_string_literal: true +# This file generated automatically from http://w3id.org/identity/v1 +require 'json/ld' +class JSON::LD::Context + add_preloaded("http://w3id.org/identity/v1") do + new(term_definitions: { + "Credential" => TermDefinition.new("Credential", id: "https://w3id.org/credentials#Credential", simple: true), + "CryptographicKey" => TermDefinition.new("CryptographicKey", id: "https://w3id.org/security#Key", simple: true), + "CryptographicKeyCredential" => TermDefinition.new("CryptographicKeyCredential", id: "https://w3id.org/credentials#CryptographicKeyCredential", simple: true), + "EncryptedMessage" => TermDefinition.new("EncryptedMessage", id: "https://w3id.org/security#EncryptedMessage", simple: true), + "GraphSignature2012" => TermDefinition.new("GraphSignature2012", id: "https://w3id.org/security#GraphSignature2012", simple: true), + "Group" => TermDefinition.new("Group", id: "https://www.w3.org/ns/activitystreams#Group", simple: true), + "Identity" => TermDefinition.new("Identity", id: "https://w3id.org/identity#Identity", simple: true), + "LinkedDataSignature2015" => TermDefinition.new("LinkedDataSignature2015", id: "https://w3id.org/security#LinkedDataSignature2015", simple: true), + "Organization" => TermDefinition.new("Organization", id: "http://schema.org/Organization", simple: true), + "Person" => TermDefinition.new("Person", id: "http://schema.org/Person", simple: true), + "PostalAddress" => TermDefinition.new("PostalAddress", id: "http://schema.org/PostalAddress", simple: true), + "about" => TermDefinition.new("about", id: "http://schema.org/about", type_mapping: "@id"), + "accessControl" => TermDefinition.new("accessControl", id: "https://w3id.org/permissions#accessControl", type_mapping: "@id"), + "address" => TermDefinition.new("address", id: "http://schema.org/address", type_mapping: "@id"), + "addressCountry" => TermDefinition.new("addressCountry", id: "http://schema.org/addressCountry", simple: true), + "addressLocality" => TermDefinition.new("addressLocality", id: "http://schema.org/addressLocality", simple: true), + "addressRegion" => TermDefinition.new("addressRegion", id: "http://schema.org/addressRegion", simple: true), + "cipherAlgorithm" => TermDefinition.new("cipherAlgorithm", id: "https://w3id.org/security#cipherAlgorithm", simple: true), + "cipherData" => TermDefinition.new("cipherData", id: "https://w3id.org/security#cipherData", simple: true), + "cipherKey" => TermDefinition.new("cipherKey", id: "https://w3id.org/security#cipherKey", simple: true), + "claim" => TermDefinition.new("claim", id: "https://w3id.org/credentials#claim", type_mapping: "@id"), + "comment" => TermDefinition.new("comment", id: "http://www.w3.org/2000/01/rdf-schema#comment", simple: true), + "created" => TermDefinition.new("created", id: "http://purl.org/dc/terms/created", type_mapping: "http://www.w3.org/2001/XMLSchema#dateTime"), + "creator" => TermDefinition.new("creator", id: "http://purl.org/dc/terms/creator", type_mapping: "@id"), + "cred" => TermDefinition.new("cred", id: "https://w3id.org/credentials#", simple: true, prefix: true), + "credential" => TermDefinition.new("credential", id: "https://w3id.org/credentials#credential", type_mapping: "@id"), + "dc" => TermDefinition.new("dc", id: "http://purl.org/dc/terms/", simple: true, prefix: true), + "description" => TermDefinition.new("description", id: "http://schema.org/description", simple: true), + "digestAlgorithm" => TermDefinition.new("digestAlgorithm", id: "https://w3id.org/security#digestAlgorithm", simple: true), + "digestValue" => TermDefinition.new("digestValue", id: "https://w3id.org/security#digestValue", simple: true), + "domain" => TermDefinition.new("domain", id: "https://w3id.org/security#domain", simple: true), + "email" => TermDefinition.new("email", id: "http://schema.org/email", simple: true), + "expires" => TermDefinition.new("expires", id: "https://w3id.org/security#expiration", type_mapping: "http://www.w3.org/2001/XMLSchema#dateTime"), + "familyName" => TermDefinition.new("familyName", id: "http://schema.org/familyName", simple: true), + "givenName" => TermDefinition.new("givenName", id: "http://schema.org/givenName", simple: true), + "id" => TermDefinition.new("id", id: "@id", simple: true), + "identity" => TermDefinition.new("identity", id: "https://w3id.org/identity#", simple: true, prefix: true), + "identityService" => TermDefinition.new("identityService", id: "https://w3id.org/identity#identityService", type_mapping: "@id"), + "idp" => TermDefinition.new("idp", id: "https://w3id.org/identity#idp", type_mapping: "@id"), + "image" => TermDefinition.new("image", id: "http://schema.org/image", type_mapping: "@id"), + "initializationVector" => TermDefinition.new("initializationVector", id: "https://w3id.org/security#initializationVector", simple: true), + "issued" => TermDefinition.new("issued", id: "https://w3id.org/credentials#issued", type_mapping: "http://www.w3.org/2001/XMLSchema#dateTime"), + "issuer" => TermDefinition.new("issuer", id: "https://w3id.org/credentials#issuer", type_mapping: "@id"), + "label" => TermDefinition.new("label", id: "http://www.w3.org/2000/01/rdf-schema#label", simple: true), + "member" => TermDefinition.new("member", id: "http://schema.org/member", type_mapping: "@id"), + "memberOf" => TermDefinition.new("memberOf", id: "http://schema.org/memberOf", type_mapping: "@id"), + "name" => TermDefinition.new("name", id: "http://schema.org/name", simple: true), + "nonce" => TermDefinition.new("nonce", id: "https://w3id.org/security#nonce", simple: true), + "normalizationAlgorithm" => TermDefinition.new("normalizationAlgorithm", id: "https://w3id.org/security#normalizationAlgorithm", simple: true), + "owner" => TermDefinition.new("owner", id: "https://w3id.org/security#owner", type_mapping: "@id"), + "password" => TermDefinition.new("password", id: "https://w3id.org/security#password", simple: true), + "paymentProcessor" => TermDefinition.new("paymentProcessor", id: "https://w3id.org/payswarm#processor", simple: true), + "perm" => TermDefinition.new("perm", id: "https://w3id.org/permissions#", simple: true, prefix: true), + "postalCode" => TermDefinition.new("postalCode", id: "http://schema.org/postalCode", simple: true), + "preferences" => TermDefinition.new("preferences", id: "https://w3id.org/payswarm#preferences", type_mapping: "@vocab"), + "privateKey" => TermDefinition.new("privateKey", id: "https://w3id.org/security#privateKey", type_mapping: "@id"), + "privateKeyPem" => TermDefinition.new("privateKeyPem", id: "https://w3id.org/security#privateKeyPem", simple: true), + "ps" => TermDefinition.new("ps", id: "https://w3id.org/payswarm#", simple: true, prefix: true), + "publicKey" => TermDefinition.new("publicKey", id: "https://w3id.org/security#publicKey", type_mapping: "@id"), + "publicKeyPem" => TermDefinition.new("publicKeyPem", id: "https://w3id.org/security#publicKeyPem", simple: true), + "publicKeyService" => TermDefinition.new("publicKeyService", id: "https://w3id.org/security#publicKeyService", type_mapping: "@id"), + "rdf" => TermDefinition.new("rdf", id: "http://www.w3.org/1999/02/22-rdf-syntax-ns#", simple: true, prefix: true), + "rdfs" => TermDefinition.new("rdfs", id: "http://www.w3.org/2000/01/rdf-schema#", simple: true, prefix: true), + "recipient" => TermDefinition.new("recipient", id: "https://w3id.org/credentials#recipient", type_mapping: "@id"), + "revoked" => TermDefinition.new("revoked", id: "https://w3id.org/security#revoked", type_mapping: "http://www.w3.org/2001/XMLSchema#dateTime"), + "schema" => TermDefinition.new("schema", id: "http://schema.org/", simple: true, prefix: true), + "sec" => TermDefinition.new("sec", id: "https://w3id.org/security#", simple: true, prefix: true), + "signature" => TermDefinition.new("signature", id: "https://w3id.org/security#signature", simple: true), + "signatureAlgorithm" => TermDefinition.new("signatureAlgorithm", id: "https://w3id.org/security#signatureAlgorithm", simple: true), + "signatureValue" => TermDefinition.new("signatureValue", id: "https://w3id.org/security#signatureValue", simple: true), + "streetAddress" => TermDefinition.new("streetAddress", id: "http://schema.org/streetAddress", simple: true), + "title" => TermDefinition.new("title", id: "http://purl.org/dc/terms/title", simple: true), + "type" => TermDefinition.new("type", id: "@type", simple: true), + "url" => TermDefinition.new("url", id: "http://schema.org/url", type_mapping: "@id"), + "writePermission" => TermDefinition.new("writePermission", id: "https://w3id.org/permissions#writePermission", type_mapping: "@id"), + "xsd" => TermDefinition.new("xsd", id: "http://www.w3.org/2001/XMLSchema#", simple: true, prefix: true) + }) + end + alias_preloaded("https://w3id.org/identity/v1", "http://w3id.org/identity/v1") +end diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb index a09a6ab04..6dbb75689 100644 --- a/lib/mastodon/accounts_cli.rb +++ b/lib/mastodon/accounts_cli.rb @@ -211,7 +211,6 @@ module Mastodon end option :concurrency, type: :numeric, default: 5, aliases: [:c] - option :verbose, type: :boolean, aliases: [:v] option :dry_run, type: :boolean desc 'cull', 'Remove remote accounts that no longer exist' long_desc <<-LONG_DESC diff --git a/lib/mastodon/cli_helper.rb b/lib/mastodon/cli_helper.rb index da7348349..ec4d9a81e 100644 --- a/lib/mastodon/cli_helper.rb +++ b/lib/mastodon/cli_helper.rb @@ -15,7 +15,12 @@ module Mastodon end def parallelize_with_progress(scope) - ActiveRecord::Base.configurations[Rails.env]['pool'] = options[:concurrency] + if options[:concurrency] < 1 + say('Cannot run with this concurrency setting, must be at least 1', :red) + exit(1) + end + + ActiveRecord::Base.configurations[Rails.env]['pool'] = options[:concurrency] + 1 progress = create_progress_bar(scope.count) pool = Concurrent::FixedThreadPool.new(options[:concurrency]) @@ -27,17 +32,26 @@ module Mastodon items.each do |item| futures << Concurrent::Future.execute(executor: pool) do - ActiveRecord::Base.connection_pool.with_connection do - begin - progress.log("Processing #{item.id}") if options[:verbose] - - result = yield(item) - aggregate.increment(result) if result.is_a?(Integer) - rescue => e - progress.log pastel.red("Error processing #{item.id}: #{e}") - ensure - progress.increment + begin + if !progress.total.nil? && progress.progress + 1 > progress.total + # The number of items has changed between start and now, + # since there is no good way to predict the final count from + # here, just change the progress bar to an indeterminate one + + progress.total = nil end + + progress.log("Processing #{item.id}") if options[:verbose] + + result = ActiveRecord::Base.connection_pool.with_connection do + yield(item) + end + + aggregate.increment(result) if result.is_a?(Integer) + rescue => e + progress.log pastel.red("Error processing #{item.id}: #{e}") + ensure + progress.increment end end end @@ -46,7 +60,7 @@ module Mastodon futures.map(&:value) end - progress.finish + progress.stop [total.value, aggregate.value] end diff --git a/lib/mastodon/feeds_cli.rb b/lib/mastodon/feeds_cli.rb index ea7c90dff..578ea15c5 100644 --- a/lib/mastodon/feeds_cli.rb +++ b/lib/mastodon/feeds_cli.rb @@ -27,7 +27,6 @@ module Mastodon dry_run = options[:dry_run] ? '(DRY RUN)' : '' if options[:all] || username.nil? - processed, = parallelize_with_progress(Account.joins(:user).merge(User.active)) do |account| PrecomputeFeedService.new.call(account) unless options[:dry_run] end diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb index ec2f36c30..e48175134 100644 --- a/lib/mastodon/media_cli.rb +++ b/lib/mastodon/media_cli.rb @@ -50,6 +50,7 @@ module Mastodon option :concurrency, type: :numeric, default: 5, aliases: [:c] option :verbose, type: :boolean, default: false, aliases: [:v] option :dry_run, type: :boolean, default: false + option :force, type: :boolean, default: false desc 'refresh', 'Fetch remote media files' long_desc <<-DESC Re-downloads media attachments from other servers. You must specify the @@ -62,6 +63,9 @@ module Mastodon using username@domain handle of the account. Use the --domain option to download attachments from a specific domain. + + By default, attachments that are believed to be already downloaded will + not be re-downloaded. To force re-download of every URL, use --force. DESC def refresh dry_run = options[:dry_run] ? ' (DRY RUN)' : '' @@ -85,7 +89,7 @@ module Mastodon end processed, aggregate = parallelize_with_progress(scope) do |media_attachment| - next if media_attachment.remote_url.blank? + next if media_attachment.remote_url.blank? || (!options[:force] && media_attachment.file_file_name.present?) unless options[:dry_run] media_attachment.reset_file! @@ -97,5 +101,17 @@ module Mastodon say("Downloaded #{processed} media attachments (approx. #{number_to_human_size(aggregate)})#{dry_run}", :green, true) end + + desc 'usage', 'Calculate disk space consumed by Mastodon' + def usage + say("Attachments:\t#{number_to_human_size(MediaAttachment.sum(:file_file_size))} (#{number_to_human_size(MediaAttachment.where(account: Account.local).sum(:file_file_size))} local)") + say("Custom emoji:\t#{number_to_human_size(CustomEmoji.sum(:image_file_size))} (#{number_to_human_size(CustomEmoji.local.sum(:image_file_size))} local)") + say("Preview cards:\t#{number_to_human_size(PreviewCard.sum(:image_file_size))}") + say("Avatars:\t#{number_to_human_size(Account.sum(:avatar_file_size))} (#{number_to_human_size(Account.local.sum(:avatar_file_size))} local)") + say("Headers:\t#{number_to_human_size(Account.sum(:header_file_size))} (#{number_to_human_size(Account.local.sum(:header_file_size))} local)") + say("Backups:\t#{number_to_human_size(Backup.sum(:dump_file_size))}") + say("Imports:\t#{number_to_human_size(Import.sum(:data_file_size))}") + say("Settings:\t#{number_to_human_size(SiteUpload.sum(:file_file_size))}") + end end end diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 8010e526b..a8e5f0b79 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -13,7 +13,7 @@ module Mastodon end def patch - 0 + 1 end def flags diff --git a/package.json b/package.json index 6282f1439..6baaeae58 100644 --- a/package.json +++ b/package.json @@ -160,7 +160,7 @@ "stringz": "^2.0.0", "substring-trie": "^1.0.2", "terser-webpack-plugin": "^1.4.1", - "tesseract.js": "^2.0.0-alpha.15", + "tesseract.js": "^2.0.0-alpha.16", "throng": "^4.0.0", "tiny-queue": "^0.2.1", "uuid": "^3.1.0", @@ -177,7 +177,7 @@ "babel-jest": "^24.9.0", "enzyme": "^3.10.0", "enzyme-adapter-react-16": "^1.14.0", - "eslint": "^6.4.0", + "eslint": "^6.5.0", "eslint-plugin-import": "~2.18.2", "eslint-plugin-jsx-a11y": "~6.2.3", "eslint-plugin-promise": "~4.2.1", diff --git a/spec/lib/spam_check_spec.rb b/spec/lib/spam_check_spec.rb index 4cae46111..d4d66a499 100644 --- a/spec/lib/spam_check_spec.rb +++ b/spec/lib/spam_check_spec.rb @@ -181,10 +181,6 @@ RSpec.describe SpamCheck do described_class.new(status2).flag! end - it 'silences the account' do - expect(sender.silenced?).to be true - end - it 'creates a report about the account' do expect(sender.targeted_reports.unresolved.count).to eq 1 end diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index 3eec464bd..b2f6234cb 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -126,8 +126,8 @@ RSpec.describe Account, type: :model do end it 'sets default avatar, header, avatar_remote_url, and header_remote_url' do - expect(account.avatar_remote_url).to eq '' - expect(account.header_remote_url).to eq '' + expect(account.avatar_remote_url).to eq 'https://remote.test/invalid_avatar' + expect(account.header_remote_url).to eq expectation.header_remote_url expect(account.avatar_file_name).to eq nil expect(account.header_file_name).to eq nil end diff --git a/spec/models/concerns/remotable_spec.rb b/spec/models/concerns/remotable_spec.rb index a4289cc45..99a60cbf6 100644 --- a/spec/models/concerns/remotable_spec.rb +++ b/spec/models/concerns/remotable_spec.rb @@ -18,6 +18,8 @@ RSpec.describe Remotable do def hoge=(arg); end + def hoge_file_name; end + def hoge_file_name=(arg); end def has_attribute?(arg); end @@ -109,12 +111,21 @@ RSpec.describe Remotable do end context 'foo[attribute_name] == url' do - it 'makes no request' do + it 'makes no request if file is saved' do allow(foo).to receive(:[]).with(attribute_name).and_return(url) + allow(foo).to receive(:hoge_file_name).and_return('foo.jpg') foo.hoge_remote_url = url expect(request).not_to have_been_requested end + + it 'makes request if file is not saved' do + allow(foo).to receive(:[]).with(attribute_name).and_return(url) + allow(foo).to receive(:hoge_file_name).and_return(nil) + + foo.hoge_remote_url = url + expect(request).to have_been_requested + end end context "scheme is https, parsed_url.host isn't empty, and foo[attribute_name] != url" do diff --git a/spec/models/home_feed_spec.rb b/spec/models/home_feed_spec.rb index 3acb997f1..ee7a83960 100644 --- a/spec/models/home_feed_spec.rb +++ b/spec/models/home_feed_spec.rb @@ -34,11 +34,10 @@ RSpec.describe HomeFeed, type: :model do Redis.current.set("account:#{account.id}:regeneration", true) end - it 'gets statuses with ids in the range from database' do + it 'returns nothing' do results = subject.get(3) - expect(results.map(&:id)).to eq [10, 3, 2] - expect(results.first.attributes.keys).to include('id', 'updated_at') + expect(results.map(&:id)).to eq [] end end end diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb index 8e90b92d0..02f533287 100644 --- a/spec/models/status_spec.rb +++ b/spec/models/status_spec.rb @@ -333,49 +333,6 @@ RSpec.describe Status, type: :model do end end - describe '.as_home_timeline' do - let(:account) { Fabricate(:account) } - let(:followed) { Fabricate(:account) } - let(:not_followed) { Fabricate(:account) } - - before do - Fabricate(:follow, account: account, target_account: followed) - - @self_status = Fabricate(:status, account: account, visibility: :public) - @self_direct_status = Fabricate(:status, account: account, visibility: :direct) - @followed_status = Fabricate(:status, account: followed, visibility: :public) - @followed_direct_status = Fabricate(:status, account: followed, visibility: :direct) - @not_followed_status = Fabricate(:status, account: not_followed, visibility: :public) - - @results = Status.as_home_timeline(account) - end - - it 'includes statuses from self' do - expect(@results).to include(@self_status) - end - - it 'does not include direct statuses from self' do - expect(@results).to_not include(@self_direct_status) - end - - it 'includes statuses from followed' do - expect(@results).to include(@followed_status) - end - - it 'does not include direct statuses mentioning recipient from followed' do - Fabricate(:mention, account: account, status: @followed_direct_status) - expect(@results).to_not include(@followed_direct_status) - end - - it 'does not include direct statuses not mentioning recipient from followed' do - expect(@results).not_to include(@followed_direct_status) - end - - it 'does not include statuses from non-followed' do - expect(@results).not_to include(@not_followed_status) - end - end - describe '.as_direct_timeline' do let(:account) { Fabricate(:account) } let(:followed) { Fabricate(:account) } diff --git a/yarn.lock b/yarn.lock index 32019a6b5..86c72dbef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3921,10 +3921,10 @@ eslint@^2.7.0: text-table "~0.2.0" user-home "^2.0.0" -eslint@^6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.4.0.tgz#5aa9227c3fbe921982b2eda94ba0d7fae858611a" - integrity sha512-WTVEzK3lSFoXUovDHEbkJqCVPEPwbhCq4trDktNI6ygs7aO41d4cDT0JFAT5MivzZeVLWlg7vHL+bgrQv/t3vA== +eslint@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.5.0.tgz#304623eec903969dd5c9f2d61c6ce3d6ecec8750" + integrity sha512-IIbSW+vKOqMatPmS9ayyku4tvWxHY2iricSRtOz6+ZA5IPRlgXzEL0u/j6dr4eha0ugmhMwDTqxtmNu3kj9O4w== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.10.0" @@ -4005,12 +4005,7 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" -estraverse@^4.0.0, estraverse@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= - -estraverse@^4.1.0, estraverse@^4.1.1: +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -7009,11 +7004,6 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" -node-fetch@^2.3.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== - node-forge@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.8.2.tgz#b4bcc59fb12ce77a8825fc6a783dfe3182499c5a" @@ -9398,21 +9388,16 @@ selfsigned@^1.10.6: dependencies: node-forge "0.8.2" -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.1, semver@^5.7.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== semver@4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7" integrity sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c= -semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -10103,10 +10088,10 @@ terser@^4.1.2: source-map "~0.6.1" source-map-support "~0.5.12" -tesseract.js-core@^2.0.0-beta.11: - version "2.0.0-beta.11" - resolved "https://registry.yarnpkg.com/tesseract.js-core/-/tesseract.js-core-2.0.0-beta.11.tgz#c35e3e689efad30138603977ad7eaaac44c7fd37" - integrity sha512-07haKH2JYYo0OfIJoioMS9dDiI5Hrl7+r1MqjeNAAT5WpKO0ATe4cpncC8s1kz0e3s1kaC5WOwL3YJcjbJE+hg== +tesseract.js-core@^2.0.0-beta.12: + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/tesseract.js-core/-/tesseract.js-core-2.0.0-beta.13.tgz#a21d798e88098898a9bdd935d0553215e03274f8" + integrity sha512-GboWV/aV5h+Whito6L6Q3WCFZ2+lgxZGgjY84wSpWbTLEkkZgHsU+dz1or+3rWSABH/nuzHDco1bZRk5+f94mw== tesseract.js-utils@^1.0.0-beta.8: version "1.0.0-beta.8" @@ -10120,18 +10105,17 @@ tesseract.js-utils@^1.0.0-beta.8: is-url "^1.2.4" zlibjs "^0.3.1" -tesseract.js@^2.0.0-alpha.15: - version "2.0.0-alpha.15" - resolved "https://registry.yarnpkg.com/tesseract.js/-/tesseract.js-2.0.0-alpha.15.tgz#9887f4d1c10e25bb098fde7a10580c865c362fad" - integrity sha512-qM1XUFVlTO+tx6oVRpd9QQ8PwQLxo3qhbfIHByUlUVIqWx6y/U9xlHIaG033/Tjfs2EQ0NAehPTOJ+eNElsXEg== +tesseract.js@^2.0.0-alpha.16: + version "2.0.0-alpha.16" + resolved "https://registry.yarnpkg.com/tesseract.js/-/tesseract.js-2.0.0-alpha.16.tgz#1e17717234a1464481abe12283f2c3ac79603d2e" + integrity sha512-8g3je2Kl8rkAFtpmwilGGj+8rCiPClNQaCjW6IafOPNn7hzFnVdL6fU6rG1Xsrc4Twv0HOa75kbpx5u70/WbTA== dependencies: axios "^0.18.0" check-types "^7.4.0" is-url "1.2.2" - node-fetch "^2.3.0" opencollective-postinstall "^2.0.2" resolve-url "^0.2.1" - tesseract.js-core "^2.0.0-beta.11" + tesseract.js-core "^2.0.0-beta.12" tesseract.js-utils "^1.0.0-beta.8" test-exclude@^5.0.0: |