Merge branch 'master' of https://github.com/tootsuite/mastodon 24 dec 2020

This commit is contained in:
tykayn 2020-12-24 16:38:36 +01:00 committed by Baptiste Lemoine
commit c1ce0d49c8
348 changed files with 10875 additions and 2775 deletions

View File

@ -5,38 +5,39 @@ Mastodon is available on [GitHub](https://github.com/tootsuite/mastodon)
and provided thanks to the work of the following contributors: and provided thanks to the work of the following contributors:
* [Gargron](https://github.com/Gargron) * [Gargron](https://github.com/Gargron)
* [dependabot-preview[bot]](https://github.com/apps/dependabot-preview)
* [ThibG](https://github.com/ThibG) * [ThibG](https://github.com/ThibG)
* [ykzts](https://github.com/ykzts) * [dependabot-preview[bot]](https://github.com/apps/dependabot-preview)
* [dependabot[bot]](https://github.com/apps/dependabot) * [dependabot[bot]](https://github.com/apps/dependabot)
* [ykzts](https://github.com/ykzts)
* [akihikodaki](https://github.com/akihikodaki) * [akihikodaki](https://github.com/akihikodaki)
* [mjankowski](https://github.com/mjankowski) * [mjankowski](https://github.com/mjankowski)
* [unarist](https://github.com/unarist) * [unarist](https://github.com/unarist)
* [yiskah](https://github.com/yiskah) * [yiskah](https://github.com/yiskah)
* [nolanlawson](https://github.com/nolanlawson) * [nolanlawson](https://github.com/nolanlawson)
* [abcang](https://github.com/abcang) * [abcang](https://github.com/abcang)
* [ysksn](https://github.com/ysksn)
* [mayaeh](https://github.com/mayaeh) * [mayaeh](https://github.com/mayaeh)
* [ysksn](https://github.com/ysksn)
* [sorin-davidoi](https://github.com/sorin-davidoi) * [sorin-davidoi](https://github.com/sorin-davidoi)
* [noellabo](https://github.com/noellabo)
* [lynlynlynx](https://github.com/lynlynlynx) * [lynlynlynx](https://github.com/lynlynlynx)
* [m4sk1n](mailto:me@m4sk.in) * [m4sk1n](mailto:me@m4sk.in)
* [Marcin Mikołajczak](mailto:me@m4sk.in) * [Marcin Mikołajczak](mailto:me@m4sk.in)
* [Kjwon15](https://github.com/Kjwon15) * [Kjwon15](https://github.com/Kjwon15)
* [noellabo](https://github.com/noellabo)
* [renatolond](https://github.com/renatolond) * [renatolond](https://github.com/renatolond)
* [alpaca-tc](https://github.com/alpaca-tc) * [alpaca-tc](https://github.com/alpaca-tc)
* [jeroenpraat](https://github.com/jeroenpraat) * [jeroenpraat](https://github.com/jeroenpraat)
* [nclm](https://github.com/nclm) * [nclm](https://github.com/nclm)
* [ineffyble](https://github.com/ineffyble) * [ineffyble](https://github.com/ineffyble)
* [shleeable](https://github.com/shleeable)
* [zunda](https://github.com/zunda) * [zunda](https://github.com/zunda)
* [shleeable](https://github.com/shleeable)
* [Masoud Abkenar](mailto:ampbox@gmail.com) * [Masoud Abkenar](mailto:ampbox@gmail.com)
* [blackle](https://github.com/blackle) * [blackle](https://github.com/blackle)
* [Quent-in](https://github.com/Quent-in) * [Quent-in](https://github.com/Quent-in)
* [JantsoP](https://github.com/JantsoP) * [JantsoP](https://github.com/JantsoP)
* [nullkal](https://github.com/nullkal) * [nullkal](https://github.com/nullkal)
* [yookoala](https://github.com/yookoala) * [yookoala](https://github.com/yookoala)
* [Sasha-Sorokin](https://github.com/Sasha-Sorokin) * [Brawaru](https://github.com/Brawaru)
* [ariasuni](https://github.com/ariasuni)
* [Aditoo17](https://github.com/Aditoo17) * [Aditoo17](https://github.com/Aditoo17)
* [Quenty31](https://github.com/Quenty31) * [Quenty31](https://github.com/Quenty31)
* [marek-lach](https://github.com/marek-lach) * [marek-lach](https://github.com/marek-lach)
@ -45,7 +46,6 @@ and provided thanks to the work of the following contributors:
* [danhunsaker](https://github.com/danhunsaker) * [danhunsaker](https://github.com/danhunsaker)
* [eramdam](https://github.com/eramdam) * [eramdam](https://github.com/eramdam)
* [takayamaki](https://github.com/takayamaki) * [takayamaki](https://github.com/takayamaki)
* [ariasuni](https://github.com/ariasuni)
* [masarakki](https://github.com/masarakki) * [masarakki](https://github.com/masarakki)
* [ticky](https://github.com/ticky) * [ticky](https://github.com/ticky)
* [ThisIsMissEm](https://github.com/ThisIsMissEm) * [ThisIsMissEm](https://github.com/ThisIsMissEm)
@ -53,14 +53,15 @@ and provided thanks to the work of the following contributors:
* [hcmiya](https://github.com/hcmiya) * [hcmiya](https://github.com/hcmiya)
* [stephenburgess8](https://github.com/stephenburgess8) * [stephenburgess8](https://github.com/stephenburgess8)
* [Wonderfall](mailto:wonderfall@targaryen.house) * [Wonderfall](mailto:wonderfall@targaryen.house)
* [trwnh](https://github.com/trwnh)
* [matteoaquila](https://github.com/matteoaquila) * [matteoaquila](https://github.com/matteoaquila)
* [yukimochi](https://github.com/yukimochi) * [yukimochi](https://github.com/yukimochi)
* [palindromordnilap](https://github.com/palindromordnilap) * [palindromordnilap](https://github.com/palindromordnilap)
* [rkarabut](https://github.com/rkarabut) * [rkarabut](https://github.com/rkarabut)
* [trwnh](https://github.com/trwnh)
* [nightpool](https://github.com/nightpool) * [nightpool](https://github.com/nightpool)
* [Artoria2e5](https://github.com/Artoria2e5) * [Artoria2e5](https://github.com/Artoria2e5)
* [marrus-sh](https://github.com/marrus-sh) * [marrus-sh](https://github.com/marrus-sh)
* [dunn](https://github.com/dunn)
* [krainboltgreene](https://github.com/krainboltgreene) * [krainboltgreene](https://github.com/krainboltgreene)
* [pfigel](https://github.com/pfigel) * [pfigel](https://github.com/pfigel)
* [BoFFire](https://github.com/BoFFire) * [BoFFire](https://github.com/BoFFire)
@ -84,25 +85,25 @@ and provided thanks to the work of the following contributors:
* [ashleyhull-versent](https://github.com/ashleyhull-versent) * [ashleyhull-versent](https://github.com/ashleyhull-versent)
* [yhirano55](https://github.com/yhirano55) * [yhirano55](https://github.com/yhirano55)
* [rinsuki](https://github.com/rinsuki) * [rinsuki](https://github.com/rinsuki)
* [dunn](https://github.com/dunn)
* [devkral](https://github.com/devkral) * [devkral](https://github.com/devkral)
* [camponez](https://github.com/camponez) * [camponez](https://github.com/camponez)
* [hugogameiro](https://github.com/hugogameiro) * [hugogameiro](https://github.com/hugogameiro)
* [SerCom_KC](mailto:szescxz@gmail.com) * [SerCom_KC](mailto:szescxz@gmail.com)
* [aschmitz](https://github.com/aschmitz) * [aschmitz](https://github.com/aschmitz)
* [mfmfuyu](https://github.com/mfmfuyu)
* [kedamaDQ](https://github.com/kedamaDQ)
* [fpiesche](https://github.com/fpiesche) * [fpiesche](https://github.com/fpiesche)
* [gandaro](https://github.com/gandaro) * [gandaro](https://github.com/gandaro)
* [johnsudaar](https://github.com/johnsudaar) * [johnsudaar](https://github.com/johnsudaar)
* [trebmuh](https://github.com/trebmuh) * [trebmuh](https://github.com/trebmuh)
* [rmhasan](https://github.com/rmhasan) * [rmhasan](https://github.com/rmhasan)
* [kedamaDQ](https://github.com/kedamaDQ)
* [lindwurm](https://github.com/lindwurm) * [lindwurm](https://github.com/lindwurm)
* [victorhck](mailto:victorhck@geeko.site) * [victorhck](mailto:victorhck@geeko.site)
* [voidsatisfaction](https://github.com/voidsatisfaction) * [voidsatisfaction](https://github.com/voidsatisfaction)
* [mkljczk](https://github.com/mkljczk)
* [hikari-no-yume](https://github.com/hikari-no-yume) * [hikari-no-yume](https://github.com/hikari-no-yume)
* [seefood](https://github.com/seefood) * [seefood](https://github.com/seefood)
* [jackjennings](https://github.com/jackjennings) * [jackjennings](https://github.com/jackjennings)
* [mfmfuyu](https://github.com/mfmfuyu)
* [puckipedia](https://github.com/puckipedia) * [puckipedia](https://github.com/puckipedia)
* [spla](mailto:spla@mastodont.cat) * [spla](mailto:spla@mastodont.cat)
* [walf443](https://github.com/walf443) * [walf443](https://github.com/walf443)
@ -111,14 +112,15 @@ and provided thanks to the work of the following contributors:
* [Ashley](mailto:expenses@airmail.cc) * [Ashley](mailto:expenses@airmail.cc)
* [xqus](https://github.com/xqus) * [xqus](https://github.com/xqus)
* [pfm-eyesightjp](https://github.com/pfm-eyesightjp) * [pfm-eyesightjp](https://github.com/pfm-eyesightjp)
* [Samy KACIMI](mailto:samy.kacimi@gmail.com) * [fakenine](https://github.com/fakenine)
* [tsuwatch](https://github.com/tsuwatch) * [tsuwatch](https://github.com/tsuwatch)
* [victorhck](https://github.com/victorhck) * [victorhck](https://github.com/victorhck)
* [mkljczk](https://github.com/mkljczk)
* [manuelviens](https://github.com/manuelviens) * [manuelviens](https://github.com/manuelviens)
* [tateisu](https://github.com/tateisu)
* [fvh-P](https://github.com/fvh-P) * [fvh-P](https://github.com/fvh-P)
* [rtucker](https://github.com/rtucker) * [rtucker](https://github.com/rtucker)
* [Anna e só](mailto:contraexemplos@gmail.com) * [Anna e só](mailto:contraexemplos@gmail.com)
* [dariusk](https://github.com/dariusk)
* [kazu9su](https://github.com/kazu9su) * [kazu9su](https://github.com/kazu9su)
* [Komic](https://github.com/Komic) * [Komic](https://github.com/Komic)
* [lmorchard](https://github.com/lmorchard) * [lmorchard](https://github.com/lmorchard)
@ -145,9 +147,9 @@ and provided thanks to the work of the following contributors:
* [fhemberger](https://github.com/fhemberger) * [fhemberger](https://github.com/fhemberger)
* [Gomasy](https://github.com/Gomasy) * [Gomasy](https://github.com/Gomasy)
* [greysteil](https://github.com/greysteil) * [greysteil](https://github.com/greysteil)
* [hencatsmith](https://github.com/hencatsmith) * [hendotcat](https://github.com/hendotcat)
* [d6rkaiz](https://github.com/d6rkaiz) * [d6rkaiz](https://github.com/d6rkaiz)
* [Reverite](https://github.com/Reverite) * [ladyisatis](https://github.com/ladyisatis)
* [JohnD28](https://github.com/JohnD28) * [JohnD28](https://github.com/JohnD28)
* [znz](https://github.com/znz) * [znz](https://github.com/znz)
* [saper](https://github.com/saper) * [saper](https://github.com/saper)
@ -160,14 +162,14 @@ and provided thanks to the work of the following contributors:
* [leopku](https://github.com/leopku) * [leopku](https://github.com/leopku)
* [SansPseudoFix](https://github.com/SansPseudoFix) * [SansPseudoFix](https://github.com/SansPseudoFix)
* [spla](mailto:sp@mastodont.cat) * [spla](mailto:sp@mastodont.cat)
* [tateisu](https://github.com/tateisu)
* [tomfhowe](https://github.com/tomfhowe) * [tomfhowe](https://github.com/tomfhowe)
* [noraworld](https://github.com/noraworld) * [noraworld](https://github.com/noraworld)
* [lfuelling](https://github.com/lfuelling) * [lfuelling](https://github.com/lfuelling)
* [theboss](https://github.com/theboss) * [aji-su](https://github.com/aji-su)
* [nzws](https://github.com/nzws) * [nzws](https://github.com/nzws)
* [duxovni](https://github.com/duxovni) * [duxovni](https://github.com/duxovni)
* [smorimoto](https://github.com/smorimoto) * [smorimoto](https://github.com/smorimoto)
* [mashirozx](https://github.com/mashirozx)
* [178inaba](https://github.com/178inaba) * [178inaba](https://github.com/178inaba)
* [acid-chicken](https://github.com/acid-chicken) * [acid-chicken](https://github.com/acid-chicken)
* [xgess](https://github.com/xgess) * [xgess](https://github.com/xgess)
@ -175,7 +177,6 @@ and provided thanks to the work of the following contributors:
* [aablinov](https://github.com/aablinov) * [aablinov](https://github.com/aablinov)
* [stalker314314](https://github.com/stalker314314) * [stalker314314](https://github.com/stalker314314)
* [cutls](https://github.com/cutls) * [cutls](https://github.com/cutls)
* [dariusk](https://github.com/dariusk)
* [huertanix](https://github.com/huertanix) * [huertanix](https://github.com/huertanix)
* [eleboucher](https://github.com/eleboucher) * [eleboucher](https://github.com/eleboucher)
* [halkeye](https://github.com/halkeye) * [halkeye](https://github.com/halkeye)
@ -183,7 +184,7 @@ and provided thanks to the work of the following contributors:
* [treby](https://github.com/treby) * [treby](https://github.com/treby)
* [jpdevries](https://github.com/jpdevries) * [jpdevries](https://github.com/jpdevries)
* [gdpelican](https://github.com/gdpelican) * [gdpelican](https://github.com/gdpelican)
* [kmichl](https://github.com/kmichl) * [Korbinian](mailto:kontakt@korbinian-michl.de)
* [Kurtis Rainbolt-Greene](mailto:me@kurtisrainboltgreene.name) * [Kurtis Rainbolt-Greene](mailto:me@kurtisrainboltgreene.name)
* [panarom](https://github.com/panarom) * [panarom](https://github.com/panarom)
* [Dar13](https://github.com/Dar13) * [Dar13](https://github.com/Dar13)
@ -225,6 +226,7 @@ and provided thanks to the work of the following contributors:
* [aaribaud](https://github.com/aaribaud) * [aaribaud](https://github.com/aaribaud)
* [pointlessone](https://github.com/pointlessone) * [pointlessone](https://github.com/pointlessone)
* [Andrew](mailto:andrewlchronister@gmail.com) * [Andrew](mailto:andrewlchronister@gmail.com)
* [arielrodrigues](https://github.com/arielrodrigues)
* [aurelien-reeves](https://github.com/aurelien-reeves) * [aurelien-reeves](https://github.com/aurelien-reeves)
* [elegaanz](https://github.com/elegaanz) * [elegaanz](https://github.com/elegaanz)
* [estuans](https://github.com/estuans) * [estuans](https://github.com/estuans)
@ -238,6 +240,7 @@ and provided thanks to the work of the following contributors:
* [muffinista](https://github.com/muffinista) * [muffinista](https://github.com/muffinista)
* [cdutson](https://github.com/cdutson) * [cdutson](https://github.com/cdutson)
* [farlistener](https://github.com/farlistener) * [farlistener](https://github.com/farlistener)
* [divergentdave](https://github.com/divergentdave)
* [DavidLibeau](https://github.com/DavidLibeau) * [DavidLibeau](https://github.com/DavidLibeau)
* [dmerejkowsky](https://github.com/dmerejkowsky) * [dmerejkowsky](https://github.com/dmerejkowsky)
* [ddevault](https://github.com/ddevault) * [ddevault](https://github.com/ddevault)
@ -276,7 +279,7 @@ and provided thanks to the work of the following contributors:
* [xPaw](https://github.com/xPaw) * [xPaw](https://github.com/xPaw)
* [petzah](https://github.com/petzah) * [petzah](https://github.com/petzah)
* [ignisf](https://github.com/ignisf) * [ignisf](https://github.com/ignisf)
* [raymestalez](https://github.com/raymestalez) * [lumenwrites](https://github.com/lumenwrites)
* [remram44](https://github.com/remram44) * [remram44](https://github.com/remram44)
* [sts10](https://github.com/sts10) * [sts10](https://github.com/sts10)
* [SuperSandro2000](https://github.com/SuperSandro2000) * [SuperSandro2000](https://github.com/SuperSandro2000)
@ -286,8 +289,9 @@ and provided thanks to the work of the following contributors:
* [Sir-Boops](https://github.com/Sir-Boops) * [Sir-Boops](https://github.com/Sir-Boops)
* [stemid](https://github.com/stemid) * [stemid](https://github.com/stemid)
* [sumdog](https://github.com/sumdog) * [sumdog](https://github.com/sumdog)
* [OmmyZhang](https://github.com/OmmyZhang)
* [ThomasLeister](https://github.com/ThomasLeister) * [ThomasLeister](https://github.com/ThomasLeister)
* [mcat-ee](https://github.com/mcat-ee) * [Tom McAtee](mailto:a1608768@student.adelaide.edu.au)
* [tototoshi](https://github.com/tototoshi) * [tototoshi](https://github.com/tototoshi)
* [TrashMacNugget](https://github.com/TrashMacNugget) * [TrashMacNugget](https://github.com/TrashMacNugget)
* [VirtuBox](https://github.com/VirtuBox) * [VirtuBox](https://github.com/VirtuBox)
@ -314,11 +318,13 @@ and provided thanks to the work of the following contributors:
* [matsurai25](https://github.com/matsurai25) * [matsurai25](https://github.com/matsurai25)
* [mecab](https://github.com/mecab) * [mecab](https://github.com/mecab)
* [nicobz25](https://github.com/nicobz25) * [nicobz25](https://github.com/nicobz25)
* [niwatori24](https://github.com/niwatori24)
* [oliverkeeble](https://github.com/oliverkeeble) * [oliverkeeble](https://github.com/oliverkeeble)
* [partev](https://github.com/partev) * [partev](https://github.com/partev)
* [pinfort](https://github.com/pinfort) * [pinfort](https://github.com/pinfort)
* [rbaumert](https://github.com/rbaumert) * [rbaumert](https://github.com/rbaumert)
* [rhoio](https://github.com/rhoio) * [rhoio](https://github.com/rhoio)
* [santiagorodriguez96](https://github.com/santiagorodriguez96)
* [sclaire-1](https://github.com/sclaire-1) * [sclaire-1](https://github.com/sclaire-1)
* [umonaca](https://github.com/umonaca) * [umonaca](https://github.com/umonaca)
* [usagi-f](https://github.com/usagi-f) * [usagi-f](https://github.com/usagi-f)
@ -327,7 +333,7 @@ and provided thanks to the work of the following contributors:
* [wxcafe](https://github.com/wxcafe) * [wxcafe](https://github.com/wxcafe)
* [Grawl](https://github.com/Grawl) * [Grawl](https://github.com/Grawl)
* [新都心(Neet Shin)](mailto:nucx@dio-vox.com) * [新都心(Neet Shin)](mailto:nucx@dio-vox.com)
* [clarfon](https://github.com/clarfon) * [clarfonthey](https://github.com/clarfonthey)
* [cygnan](https://github.com/cygnan) * [cygnan](https://github.com/cygnan)
* [Awea](https://github.com/Awea) * [Awea](https://github.com/Awea)
* [eai04191](https://github.com/eai04191) * [eai04191](https://github.com/eai04191)
@ -358,11 +364,11 @@ and provided thanks to the work of the following contributors:
* [schas002](https://github.com/schas002) * [schas002](https://github.com/schas002)
* [contraexemplo](https://github.com/contraexemplo) * [contraexemplo](https://github.com/contraexemplo)
* [abackstrom](https://github.com/abackstrom) * [abackstrom](https://github.com/abackstrom)
* [arielrodrigues](https://github.com/arielrodrigues)
* [orlea](https://github.com/orlea) * [orlea](https://github.com/orlea)
* [armandfardeau](https://github.com/armandfardeau) * [armandfardeau](https://github.com/armandfardeau)
* [raboof](https://github.com/raboof) * [raboof](https://github.com/raboof)
* [jumbosushi](https://github.com/jumbosushi) * [jumbosushi](https://github.com/jumbosushi)
* [acuteaura](https://github.com/acuteaura)
* [ayumin](https://github.com/ayumin) * [ayumin](https://github.com/ayumin)
* [bzg](https://github.com/bzg) * [bzg](https://github.com/bzg)
* [BastienDurel](https://github.com/BastienDurel) * [BastienDurel](https://github.com/BastienDurel)
@ -389,7 +395,7 @@ and provided thanks to the work of the following contributors:
* [colindean](https://github.com/colindean) * [colindean](https://github.com/colindean)
* [DeeUnderscore](https://github.com/DeeUnderscore) * [DeeUnderscore](https://github.com/DeeUnderscore)
* [dachinat](https://github.com/dachinat) * [dachinat](https://github.com/dachinat)
* [shapeshifter-system](https://github.com/shapeshifter-system) * [monsterpit-firedemon](https://github.com/monsterpit-firedemon)
* [watilde](https://github.com/watilde) * [watilde](https://github.com/watilde)
* [daprice](https://github.com/daprice) * [daprice](https://github.com/daprice)
* [da2x](https://github.com/da2x) * [da2x](https://github.com/da2x)
@ -400,14 +406,13 @@ and provided thanks to the work of the following contributors:
* [singingwolfboy](https://github.com/singingwolfboy) * [singingwolfboy](https://github.com/singingwolfboy)
* [caldwell](https://github.com/caldwell) * [caldwell](https://github.com/caldwell)
* [davidcelis](https://github.com/davidcelis) * [davidcelis](https://github.com/davidcelis)
* [divergentdave](https://github.com/divergentdave)
* [davefp](https://github.com/davefp) * [davefp](https://github.com/davefp)
* [yipdw](https://github.com/yipdw) * [yipdw](https://github.com/yipdw)
* [debanshuk](https://github.com/debanshuk) * [debanshuk](https://github.com/debanshuk)
* [mascali33](https://github.com/mascali33) * [mascali33](https://github.com/mascali33)
* [DerekNonGeneric](https://github.com/DerekNonGeneric) * [DerekNonGeneric](https://github.com/DerekNonGeneric)
* [dblandin](https://github.com/dblandin) * [dblandin](https://github.com/dblandin)
* [Drew Gates](mailto:aranaur@users.noreply.github.com) * [Aranaur](https://github.com/Aranaur)
* [dtschust](https://github.com/dtschust) * [dtschust](https://github.com/dtschust)
* [Dryusdan](https://github.com/Dryusdan) * [Dryusdan](https://github.com/Dryusdan)
* [d3vgru](https://github.com/d3vgru) * [d3vgru](https://github.com/d3vgru)
@ -451,22 +456,25 @@ and provided thanks to the work of the following contributors:
* [J Yeary](mailto:usbsnowcrash@users.noreply.github.com) * [J Yeary](mailto:usbsnowcrash@users.noreply.github.com)
* [jack-michaud](https://github.com/jack-michaud) * [jack-michaud](https://github.com/jack-michaud)
* [Floppy](https://github.com/Floppy) * [Floppy](https://github.com/Floppy)
* [loomchild](https://github.com/loomchild) * [Jarek Lipski](mailto:pub@loomchild.net)
* [jglauche](https://github.com/jglauche) * [Jennifer Glauche](mailto:=^.^=@github19.jglauche.de)
* [jenkr55](https://github.com/jenkr55) * [Jennifer Kruse](mailto:jenkr55@gmail.com)
* [hyenagirl64](https://github.com/hyenagirl64) * [Jeremy Rose](mailto:nornagon@nornagon.net)
* [press5](https://github.com/press5) * [Jessica](mailto:46502909+hyenagirl64@users.noreply.github.com)
* [TrollDecker](https://github.com/TrollDecker) * [Jessica K. Litwin](mailto:jessica@litw.in)
* [jmontane](https://github.com/jmontane) * [Jo Decker](mailto:trolldecker@users.noreply.github.com)
* [Joan Montané](mailto:jmontane@users.noreply.github.com)
* [Jonathan Klee](mailto:klee.jonathan@gmail.com) * [Jonathan Klee](mailto:klee.jonathan@gmail.com)
* [Jordan Guerder](mailto:jguerder@fr.pulseheberg.net) * [Jordan Guerder](mailto:jguerder@fr.pulseheberg.net)
* [Joseph Mingrone](mailto:jehops@users.noreply.github.com) * [Joseph Mingrone](mailto:jehops@users.noreply.github.com)
* [Josh Leeb-du Toit](mailto:mail@joshleeb.com)
* [Joshua Wood](mailto:josh@joshuawood.net) * [Joshua Wood](mailto:josh@joshuawood.net)
* [Julien](mailto:tiwy57@users.noreply.github.com) * [Julien](mailto:tiwy57@users.noreply.github.com)
* [Julien Deswaef](mailto:juego@requiem4tv.com) * [Julien Deswaef](mailto:juego@requiem4tv.com)
* [June Sallou](mailto:jnsll@users.noreply.github.com) * [June Sallou](mailto:jnsll@users.noreply.github.com)
* [Jérémy Benoist](mailto:j0k3r@users.noreply.github.com) * [Jérémy Benoist](mailto:j0k3r@users.noreply.github.com)
* [KEINOS](mailto:github@keinos.com) * [KEINOS](mailto:github@keinos.com)
* [Kairui Song | 宋恺睿](mailto:ryncsn@gmail.com)
* [Keiji Matsuzaki](mailto:futoase@gmail.com) * [Keiji Matsuzaki](mailto:futoase@gmail.com)
* [Kevin Liu](mailto:kevin@potatofrom.space) * [Kevin Liu](mailto:kevin@potatofrom.space)
* [Kit Redgrave](mailto:qwertyitis@gmail.com) * [Kit Redgrave](mailto:qwertyitis@gmail.com)
@ -482,7 +490,6 @@ and provided thanks to the work of the following contributors:
* [Lukas Burk](mailto:jemus42@users.noreply.github.com) * [Lukas Burk](mailto:jemus42@users.noreply.github.com)
* [Manato Kameya](mailto:grabacr07+github@gmail.com) * [Manato Kameya](mailto:grabacr07+github@gmail.com)
* [Mantas](mailto:mistermantas@users.noreply.github.com) * [Mantas](mailto:mistermantas@users.noreply.github.com)
* [Marcin Mikołajczak](mailto:me@mkljczk.pl)
* [Mareena Kunjachan](mailto:mareenakunjachan@gmail.com) * [Mareena Kunjachan](mailto:mareenakunjachan@gmail.com)
* [Marek Lach](mailto:marek.brohatwack.lach@gmail.com) * [Marek Lach](mailto:marek.brohatwack.lach@gmail.com)
* [Markus R](mailto:wirehack7@users.noreply.github.com) * [Markus R](mailto:wirehack7@users.noreply.github.com)
@ -529,10 +536,12 @@ and provided thanks to the work of the following contributors:
* [Norayr Chilingarian](mailto:norayr@arnet.am) * [Norayr Chilingarian](mailto:norayr@arnet.am)
* [Noëlle Anthony](mailto:noelle.d.anthony@gmail.com) * [Noëlle Anthony](mailto:noelle.d.anthony@gmail.com)
* [N氏](mailto:uenok.htc@gmail.com) * [N氏](mailto:uenok.htc@gmail.com)
* [OSAMU SATO](mailto:satosamu@gmail.com)
* [Olivier Nicole](mailto:olivierthnicole@gmail.com) * [Olivier Nicole](mailto:olivierthnicole@gmail.com)
* [Oskari Noppa](mailto:noppa@users.noreply.github.com) * [Oskari Noppa](mailto:noppa@users.noreply.github.com)
* [Otakan](mailto:otakan951@gmail.com) * [Otakan](mailto:otakan951@gmail.com)
* [Padraig Fahy](mailto:tech@padraigfahy.com) * [Padraig Fahy](mailto:tech@padraigfahy.com)
* [Patrice Ferlet](mailto:metal3d@gmail.com)
* [PatrickRWells](mailto:32802366+patrickrwells@users.noreply.github.com) * [PatrickRWells](mailto:32802366+patrickrwells@users.noreply.github.com)
* [Paul](mailto:naydex.mc+github@gmail.com) * [Paul](mailto:naydex.mc+github@gmail.com)
* [Pete Keen](mailto:pete@petekeen.net) * [Pete Keen](mailto:pete@petekeen.net)
@ -574,7 +583,6 @@ and provided thanks to the work of the following contributors:
* [TakesxiSximada](mailto:takesxi.sximada@gmail.com) * [TakesxiSximada](mailto:takesxi.sximada@gmail.com)
* [Tao Bror Bojlén](mailto:brortao@users.noreply.github.com) * [Tao Bror Bojlén](mailto:brortao@users.noreply.github.com)
* [Taras Gogol](mailto:taras2358@gmail.com) * [Taras Gogol](mailto:taras2358@gmail.com)
* [Tdxdxoz](mailto:tdxdxoz@gmail.com)
* [TheInventrix](mailto:theinventrix@users.noreply.github.com) * [TheInventrix](mailto:theinventrix@users.noreply.github.com)
* [TheMainOne](mailto:50847364+theevilskeleton@users.noreply.github.com) * [TheMainOne](mailto:50847364+theevilskeleton@users.noreply.github.com)
* [Thomas Alberola](mailto:thomas@needacoffee.fr) * [Thomas Alberola](mailto:thomas@needacoffee.fr)
@ -594,6 +602,7 @@ and provided thanks to the work of the following contributors:
* [Wesley Ellis](mailto:tahnok@gmail.com) * [Wesley Ellis](mailto:tahnok@gmail.com)
* [Wiktor](mailto:wiktor@metacode.biz) * [Wiktor](mailto:wiktor@metacode.biz)
* [Wonderfall](mailto:wonderfall@schrodinger.io) * [Wonderfall](mailto:wonderfall@schrodinger.io)
* [Y.Yamashiro](mailto:shukukei@mojizuri.jp)
* [YDrogen](mailto:ydrogen45@gmail.com) * [YDrogen](mailto:ydrogen45@gmail.com)
* [YMHuang](mailto:ymhuang@fmbase.tw) * [YMHuang](mailto:ymhuang@fmbase.tw)
* [YOSHIOKA Eiichiro](mailto:yoshioka.eiichiro@gmail.com) * [YOSHIOKA Eiichiro](mailto:yoshioka.eiichiro@gmail.com)
@ -638,6 +647,7 @@ and provided thanks to the work of the following contributors:
* [jumoru](mailto:jumoru@mailbox.org) * [jumoru](mailto:jumoru@mailbox.org)
* [kaiyou](mailto:pierre@jaury.eu) * [kaiyou](mailto:pierre@jaury.eu)
* [karlyeurl](mailto:karl.yeurl@gmail.com) * [karlyeurl](mailto:karl.yeurl@gmail.com)
* [kawaguchi](mailto:jiikko@users.noreply.github.com)
* [kedama](mailto:32974885+kedamadq@users.noreply.github.com) * [kedama](mailto:32974885+kedamadq@users.noreply.github.com)
* [kuro5hin](mailto:rusty@kuro5hin.org) * [kuro5hin](mailto:rusty@kuro5hin.org)
* [leo60228](mailto:leo@60228.dev) * [leo60228](mailto:leo@60228.dev)
@ -655,6 +665,7 @@ and provided thanks to the work of the following contributors:
* [notozeki](mailto:notozeki@users.noreply.github.com) * [notozeki](mailto:notozeki@users.noreply.github.com)
* [ntl-purism](mailto:57806346+ntl-purism@users.noreply.github.com) * [ntl-purism](mailto:57806346+ntl-purism@users.noreply.github.com)
* [nzws](mailto:git-yuzu@svk.jp) * [nzws](mailto:git-yuzu@svk.jp)
* [proxy](mailto:51172302+3n-k1@users.noreply.github.com)
* [rch850](mailto:rich850@gmail.com) * [rch850](mailto:rich850@gmail.com)
* [roikale](mailto:roikale@users.noreply.github.com) * [roikale](mailto:roikale@users.noreply.github.com)
* [rysiekpl](mailto:rysiek@hackerspace.pl) * [rysiekpl](mailto:rysiek@hackerspace.pl)

View File

@ -3,6 +3,237 @@ Changelog
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
## Unreleased
### Added
- **Add hotkeys for audio/video control in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/15158), [Gargron](https://github.com/tootsuite/mastodon/pull/15198))
- `Space` and `k` to toggle playback
- `m` to toggle mute
- `f` to toggle fullscreen
- `j` and `l` to go back and forward by 10 seconds
- `.` and `,` to go back and forward by a frame (video only)
- Add expand/compress button on media modal in web UI ([mashirozx](https://github.com/tootsuite/mastodon/pull/15068), [mashirozx](https://github.com/tootsuite/mastodon/pull/15088), [mashirozx](https://github.com/tootsuite/mastodon/pull/15094))
- Add border around 🕺 emoji in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14769))
- Add border around 🐞 emoji in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14712))
- Add home link to the getting started column when home isn't mounted ([ThibG](https://github.com/tootsuite/mastodon/pull/14707))
- Add option to disable swiping motions across the web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13885))
- **Add pop-out player for audio/video in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/14870), [Gargron](https://github.com/tootsuite/mastodon/pull/15157), [Gargron](https://github.com/tootsuite/mastodon/pull/14915), [noellabo](https://github.com/tootsuite/mastodon/pull/15309))
- Continue watching/listening when you scroll away
- Action bar to interact with/open toot from the pop-out player
- Add unread notification markers in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14818), [ThibG](https://github.com/tootsuite/mastodon/pull/14960), [ThibG](https://github.com/tootsuite/mastodon/pull/14954), [noellabo](https://github.com/tootsuite/mastodon/pull/14897), [noellabo](https://github.com/tootsuite/mastodon/pull/14907))
- Add paragraph about browser add-ons when encountering errors in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14801))
- Add import and export for bookmarks ([ThibG](https://github.com/tootsuite/mastodon/pull/14956))
- Add cache buster feature for media files ([Gargron](https://github.com/tootsuite/mastodon/pull/15155))
- If you have a proxy cache in front of object storage, deleted files will persist until the cache expires
- If enabled, cache buster will make a special request to the proxy to signal a cache reset
- Add duration option to the mute function ([aquarla](https://github.com/tootsuite/mastodon/pull/13831))
- Add replies policy option to the list function ([ThibG](https://github.com/tootsuite/mastodon/pull/9205), [trwnh](https://github.com/tootsuite/mastodon/pull/15304))
- Add `og:published_time` OpenGraph tags on toots ([nornagon](https://github.com/tootsuite/mastodon/pull/14865))
- **Add option to be notified when a followed user posts** ([Gargron](https://github.com/tootsuite/mastodon/pull/13546), [ThibG](https://github.com/tootsuite/mastodon/pull/14896), [Gargron](https://github.com/tootsuite/mastodon/pull/14822))
- If you don't want to miss a toot, click the bell button!
- Add client-side validation in password change forms ([ThibG](https://github.com/tootsuite/mastodon/pull/14564))
- Add client-side validation in the registration form ([ThibG](https://github.com/tootsuite/mastodon/pull/14560), [ThibG](https://github.com/tootsuite/mastodon/pull/14599))
- Add support for Gemini URLs ([joshleeb](https://github.com/tootsuite/mastodon/pull/15013))
- Add app shortcuts to web app manifest ([mkljczk](https://github.com/tootsuite/mastodon/pull/15234))
- Add WebAuthn as an alternative 2FA method ([santiagorodriguez96](https://github.com/tootsuite/mastodon/pull/14466), [jiikko](https://github.com/tootsuite/mastodon/pull/14806))
- Add honeypot fields and minimum fill-out time for sign-up form ([ThibG](https://github.com/tootsuite/mastodon/pull/15276))
- Add icon for mutual relationships in relationship manager ([noellabo](https://github.com/tootsuite/mastodon/pull/15149))
- Add follow selected followers button in relationship manager ([noellabo](https://github.com/tootsuite/mastodon/pull/15148))
- **Add subresource integrity for JS and CSS assets** ([Gargron](https://github.com/tootsuite/mastodon/pull/15096))
- If you use a CDN for static assets (JavaScript, CSS, and so on), you have to trust that the CDN does not modify the assets maliciously
- Subresource integrity compares server-generated asset digests with what's actually served from the CDN and prevents such attacks
- Add `ku`, `sa`, `sc`, `zgh` to available locales ([ykzts](https://github.com/tootsuite/mastodon/pull/15138))
- Add ability to force an account to mark media as sensitive ([noellabo](https://github.com/tootsuite/mastodon/pull/14361))
- **Add ability to block access or limit sign-ups from chosen IPs** ([Gargron](https://github.com/tootsuite/mastodon/pull/14963), [ThibG](https://github.com/tootsuite/mastodon/pull/15263))
- Add rules for IPs or CIDR ranges that automatically expire after a configurable amount of time
- Choose the severity of the rule, either blocking all access or merely limiting sign-ups
- **Add support for reversible suspensions through ActivityPub** ([Gargron](https://github.com/tootsuite/mastodon/pull/14989))
- Servers can signal that one of their accounts has been suspended
- During suspension, the account can only delete its own content
- A reversal of the suspension can be signalled the same way
- A local suspension always overrides a remote one
- Add indication to admin UI of whether a report has been forwarded ([ThibG](https://github.com/tootsuite/mastodon/pull/13237))
- Add display of reasons for joining of an account in admin UI ([mashirozx](https://github.com/tootsuite/mastodon/pull/15265))
- Add option to obfuscate domain name in public list of domain blocks ([Gargron](https://github.com/tootsuite/mastodon/pull/15355))
- Add option to make reasons for joining required on sign-up ([ThibG](https://github.com/tootsuite/mastodon/pull/15326), [ThibG](https://github.com/tootsuite/mastodon/pull/15358), [ThibG](https://github.com/tootsuite/mastodon/pull/15385), [ThibG](https://github.com/tootsuite/mastodon/pull/15405))
- Add ActivityPub follower synchronization mechanism ([ThibG](https://github.com/tootsuite/mastodon/pull/14510), [ThibG](https://github.com/tootsuite/mastodon/pull/15026))
- Add outbox attribute to instance actor ([ThibG](https://github.com/tootsuite/mastodon/pull/14721))
- Add featured hashtags as an ActivityPub collection ([Gargron](https://github.com/tootsuite/mastodon/pull/11595), [noellabo](https://github.com/tootsuite/mastodon/pull/15277))
- Add support for dereferencing objects through bearcaps ([Gargron](https://github.com/tootsuite/mastodon/pull/14683), [noellabo](https://github.com/tootsuite/mastodon/pull/14981))
- Add `S3_READ_TIMEOUT` environment variable ([tateisu](https://github.com/tootsuite/mastodon/pull/14952))
- Add `ALLOWED_PRIVATE_ADDRESSES` environment variable ([ThibG](https://github.com/tootsuite/mastodon/pull/14722))
- Add `--fix-permissions` option to `tootctl media remove-orphans` ([Gargron](https://github.com/tootsuite/mastodon/pull/14383), [uist1idrju3i](https://github.com/tootsuite/mastodon/pull/14715))
- Add `tootctl accounts merge` ([Gargron](https://github.com/tootsuite/mastodon/pull/15201), [ThibG](https://github.com/tootsuite/mastodon/pull/15264), [ThibG](https://github.com/tootsuite/mastodon/pull/15256))
- Has someone changed their domain or subdomain thereby creating two accounts where there should be one?
- This command will fix it on your end
- Add `tootctl maintenance fix-duplicates` ([ThibG](https://github.com/tootsuite/mastodon/pull/14860), [Gargron](https://github.com/tootsuite/mastodon/pull/15223), [ThibG](https://github.com/tootsuite/mastodon/pull/15373))
- Index corruption in the database?
- This command is for you
- **Add support for managing multiple stream subscriptions in a single connection** ([Gargron](https://github.com/tootsuite/mastodon/pull/14524), [Gargron](https://github.com/tootsuite/mastodon/pull/14566), [mfmfuyu](https://github.com/tootsuite/mastodon/pull/14859), [zunda](https://github.com/tootsuite/mastodon/pull/14608))
- Previously, getting live updates for multiple timelines required opening a HTTP or WebSocket connection for each
- More connections means more resource consumption on both ends, not to mention the (ever so slight) delay when establishing a new connection
- Now, with just a single WebSocket connection you can subscribe and unsubscribe to and from multiple streams
- Add support for limiting results by both `min_id` and `max_id` at the same time in REST API ([tateisu](https://github.com/tootsuite/mastodon/pull/14776))
- Add `GET /api/v1/accounts/:id/featured_tags` to REST API ([noellabo](https://github.com/tootsuite/mastodon/pull/11817), [noellabo](https://github.com/tootsuite/mastodon/pull/15270))
- Add stoplight for object storage failures, return HTTP 503 in REST API ([Gargron](https://github.com/tootsuite/mastodon/pull/13043))
- Add optional `tootctl remove media` cronjob in Helm chart ([dunn](https://github.com/tootsuite/mastodon/pull/14396))
- Add clean error message when `RAILS_ENV` is unset ([ThibG](https://github.com/tootsuite/mastodon/pull/15381))
### Changed
- **Change media modals look in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/15217), [Gargron](https://github.com/tootsuite/mastodon/pull/15221), [Gargron](https://github.com/tootsuite/mastodon/pull/15284), [Gargron](https://github.com/tootsuite/mastodon/pull/15283), [Kjwon15](https://github.com/tootsuite/mastodon/pull/15308), [noellabo](https://github.com/tootsuite/mastodon/pull/15305))
- Background of the overlay matches the color of the image
- Action bar to interact with or open the toot from the modal
- Change order of announcements in admin UI to be newest-first ([ThibG](https://github.com/tootsuite/mastodon/pull/15091))
- **Change account suspensions to be reversible by default** ([Gargron](https://github.com/tootsuite/mastodon/pull/14726), [ThibG](https://github.com/tootsuite/mastodon/pull/15152), [ThibG](https://github.com/tootsuite/mastodon/pull/15106), [ThibG](https://github.com/tootsuite/mastodon/pull/15100), [ThibG](https://github.com/tootsuite/mastodon/pull/15099), [noellabo](https://github.com/tootsuite/mastodon/pull/14855), [ThibG](https://github.com/tootsuite/mastodon/pull/15380))
- Suspensions no longer equal deletions
- A suspended account can be unsuspended with minimal consequences for 30 days
- Immediate deletion of data is still available as an explicit option
- Suspended accounts can request an archive of their data through the UI
- Change REST API to return empty data for suspended accounts (14765)
- Change web UI to show empty profile for suspended accounts ([Gargron](https://github.com/tootsuite/mastodon/pull/14766), [Gargron](https://github.com/tootsuite/mastodon/pull/15345))
- Change featured hashtag suggestions to be recently used instead of most used ([abcang](https://github.com/tootsuite/mastodon/pull/14760))
- Change direct toots to appear in the home feed again ([Gargron](https://github.com/tootsuite/mastodon/pull/14711), [ThibG](https://github.com/tootsuite/mastodon/pull/15182), [noellabo](https://github.com/tootsuite/mastodon/pull/14727))
- Return to treating all toots the same instead of trying to retrofit direct visibility into an instant messaging model
- Change email address validation to return more specific errors ([ThibG](https://github.com/tootsuite/mastodon/pull/14565))
- Change HTTP signature requirements to include `Digest` header on `POST` requests ([ThibG](https://github.com/tootsuite/mastodon/pull/15069))
- Change click area of video/audio player buttons to be bigger in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/15049))
- Change order of filters by alphabetic by "keyword or phrase" ([ariasuni](https://github.com/tootsuite/mastodon/pull/15050))
- Change suspension of remote accounts to also undo outgoing follows ([ThibG](https://github.com/tootsuite/mastodon/pull/15188))
- Change string "Home" to "Home and lists" in the filter creation screen ([ariasuni](https://github.com/tootsuite/mastodon/pull/15139))
- Change string "Boost to original audience" to "Boost with original visibility" in web UI ([3n-k1](https://github.com/tootsuite/mastodon/pull/14598))
- Change string "Show more" to "Show newer" and "Show older" on public pages ([ariasuni](https://github.com/tootsuite/mastodon/pull/15052))
- Change order of announcements to be reverse chronological in web UI ([dariusk](https://github.com/tootsuite/mastodon/pull/15065), [dariusk](https://github.com/tootsuite/mastodon/pull/15070))
- Change RTL detection to rely on unicode-bidi paragraph by paragraph in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/14573))
- Change visibility icon next to timestamp to be clickable in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/15053), [mayaeh](https://github.com/tootsuite/mastodon/pull/15055))
- Change public thread view to hide "Show thread" link ([ThibG](https://github.com/tootsuite/mastodon/pull/15266))
- Change number format on about page from full to shortened ([Gargron](https://github.com/tootsuite/mastodon/pull/15327))
- Change how scheduled tasks run in multi-process environments ([noellabo](https://github.com/tootsuite/mastodon/pull/15314))
- New dedicated queue `scheduler`
- Runs by default when Sidekiq is executed with no options
- Has to be added manually in a multi-process environment
### Removed
- Remove fade-in animation from modals in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/15199))
- Remove auto-redirect to direct messages in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/15142))
- Remove obsolete IndexedDB operations from web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/14730))
- Remove dependency on unused and unmaintained http_parser.rb gem ([ThibG](https://github.com/tootsuite/mastodon/pull/14574))
### Fixed
- Fix layout on about page when contact account has a long username ([ThibG](https://github.com/tootsuite/mastodon/pull/15357))
- Fix follow limit preventing re-following of a moved account ([Gargron](https://github.com/tootsuite/mastodon/pull/14207))
- **Fix deletes not reaching every server that interacted with toot** ([Gargron](https://github.com/tootsuite/mastodon/pull/15200))
- Previously, delete of a toot would be primarily sent to the followers of its author, people mentioned in the toot, and people who reblogged the toot
- Now, additionally, it is ensured that it is sent to people who replied to it, favourited it, and to the person it replies to even if that person is not mentioned
- Fix resolving an account through its non-canonical form (i.e. alternate domain) ([ThibG](https://github.com/tootsuite/mastodon/pull/15187))
- Fix sending redundant ActivityPub events when processing remote account deletion ([ThibG](https://github.com/tootsuite/mastodon/pull/15104))
- Fix Move handler not being triggered when failing to fetch target account ([ThibG](https://github.com/tootsuite/mastodon/pull/15107))
- Fix downloading remote media files when server returns empty filename ([ThibG](https://github.com/tootsuite/mastodon/pull/14867))
- Fix account processing failing because of large collections ([ThibG](https://github.com/tootsuite/mastodon/pull/15027))
- Fix not being able to unfavorite toots one has lost access to ([ThibG](https://github.com/tootsuite/mastodon/pull/15192))
- Fix not being able to unbookmark toots one has lost access to ([ThibG](https://github.com/tootsuite/mastodon/pull/14604))
- Fix possible casing inconsistencies in hashtag search ([ThibG](https://github.com/tootsuite/mastodon/pull/14906))
- Fix updating account counters when association is not yet created ([Gargron](https://github.com/tootsuite/mastodon/pull/15108))
- Fix cookies not having a SameSite attribute ([Gargron](https://github.com/tootsuite/mastodon/pull/15098))
- Fix poll ending notifications being created for each vote ([ThibG](https://github.com/tootsuite/mastodon/pull/15071))
- Fix multiple boosts of a same toot erroneously appearing in TL ([ThibG](https://github.com/tootsuite/mastodon/pull/14759))
- Fix asset builds not picking up `CDN_HOST` change ([ThibG](https://github.com/tootsuite/mastodon/pull/14381))
- Fix desktop notifications permission prompt in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/14985), [Gargron](https://github.com/tootsuite/mastodon/pull/15141), [ThibG](https://github.com/tootsuite/mastodon/pull/13543), [ThibG](https://github.com/tootsuite/mastodon/pull/15176))
- Some time ago, browsers added a requirement that desktop notification prompts could only be displayed in response to a user-generated event (such as a click)
- This means that for some time, users who haven't already given the permission before were not getting a prompt and as such were not receiving desktop notifications
- Fix "Mark media as sensitive" string not supporting pluralizations in other languages in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/15051))
- Fix glitched image uploads when canvas read access is blocked in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/15180))
- Fix some account gallery items having empty labels in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/15073))
- Fix alt-key hotkeys activating while typing in a text field in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14942))
- Fix wrong seek bar width on media player in web UI ([mfmfuyu](https://github.com/tootsuite/mastodon/pull/15060))
- Fix logging out on mobile in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14901))
- Fix wrong click area for GIFVs in media modal in web UI ([noellabo](https://github.com/tootsuite/mastodon/pull/14615))
- Fix unreadable placeholder text color in high contrast theme in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/14803))
- Fix scrolling issues when closing some dropdown menus in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14606))
- Fix notification filter bar incorrectly filtering gaps in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14808))
- Fix disabled boost icon being replaced by private boost icon on hover in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14456))
- Fix hashtag detection in compose form being different to server-side in web UI ([kedamaDQ](https://github.com/tootsuite/mastodon/pull/14484), [ThibG](https://github.com/tootsuite/mastodon/pull/14513))
- Fix home last read marker mishandling gaps in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14809))
- Fix unnecessary re-rendering of various components when typing in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/15286))
- Fix notifications being unnecessarily re-rendered in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/15312))
- Fix column swiping animation logic in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/15301))
- Fix inefficiency when fetching hashtag timeline ([noellabo](https://github.com/tootsuite/mastodon/pull/14861), [akihikodaki](https://github.com/tootsuite/mastodon/pull/14662))
- Fix inefficiency when fetching bookmarks ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14674))
- Fix inefficiency when fetching favourites ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14673))
- Fix inefficiency when fetching media-only account timeline ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14675))
- Fix inefficieny when deleting accounts ([Gargron](https://github.com/tootsuite/mastodon/pull/15387), [ThibG](https://github.com/tootsuite/mastodon/pull/15409), [ThibG](https://github.com/tootsuite/mastodon/pull/15407), [ThibG](https://github.com/tootsuite/mastodon/pull/15408), [ThibG](https://github.com/tootsuite/mastodon/pull/15402))
- Fix redundant query when processing batch actions on custom emojis ([niwatori24](https://github.com/tootsuite/mastodon/pull/14534))
- Fix slow distinct queries where grouped queries are faster ([Gargron](https://github.com/tootsuite/mastodon/pull/15287))
- Fix performance on instances list in admin UI ([Gargron](https://github.com/tootsuite/mastodon/pull/15282))
- Fix server actor appearing in list of accounts in admin UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14567))
- Fix "bootstrap timeline accounts" toggle in site settings in admin UI ([ThibG](https://github.com/tootsuite/mastodon/pull/15325))
- Fix PostgreSQL secret name for cronjob in Helm chart ([metal3d](https://github.com/tootsuite/mastodon/pull/15072))
- Fix Procfile not being compatible with herokuish ([acuteaura](https://github.com/tootsuite/mastodon/pull/12685))
- Fix installation of tini being split into multiple steps in Dockerfile ([ryncsn](https://github.com/tootsuite/mastodon/pull/14686))
### Security
- Fix streaming API allowing connections to persist after access token invalidation ([Gargron](https://github.com/tootsuite/mastodon/pull/15111))
- Fix 2FA/sign-in token sessions being valid after password change ([Gargron](https://github.com/tootsuite/mastodon/pull/14802))
- Fix resolving accounts sometimes creating duplicate records for a given ActivityPub identifier ([ThibG](https://github.com/tootsuite/mastodon/pull/15364))
## [3.2.2] - 2020-12-19
### Added
- Add `tootctl maintenance fix-duplicates` ([ThibG](https://github.com/tootsuite/mastodon/pull/14860), [Gargron](https://github.com/tootsuite/mastodon/pull/15223))
- Index corruption in the database?
- This command is for you
### Removed
- Remove dependency on unused and unmaintained http_parser.rb gem ([ThibG](https://github.com/tootsuite/mastodon/pull/14574))
### Fixed
- Fix Move handler not being triggered when failing to fetch target account ([ThibG](https://github.com/tootsuite/mastodon/pull/15107))
- Fix downloading remote media files when server returns empty filename ([ThibG](https://github.com/tootsuite/mastodon/pull/14867))
- Fix possible casing inconsistencies in hashtag search ([ThibG](https://github.com/tootsuite/mastodon/pull/14906))
- Fix updating account counters when association is not yet created ([Gargron](https://github.com/tootsuite/mastodon/pull/15108))
- Fix account processing failing because of large collections ([ThibG](https://github.com/tootsuite/mastodon/pull/15027))
- Fix resolving an account through its non-canonical form (i.e. alternate domain) ([ThibG](https://github.com/tootsuite/mastodon/pull/15187))
- Fix slow distinct queries where grouped queries are faster ([Gargron](https://github.com/tootsuite/mastodon/pull/15287))
### Security
- Fix 2FA/sign-in token sessions being valid after password change ([Gargron](https://github.com/tootsuite/mastodon/pull/14802))
- Fix resolving accounts sometimes creating duplicate records for a given ActivityPub identifier ([ThibG](https://github.com/tootsuite/mastodon/pull/15364))
## [3.2.1] - 2020-10-19
### Added
- Add support for latest HTTP Signatures spec draft ([ThibG](https://github.com/tootsuite/mastodon/pull/14556))
- Add support for inlined objects in ActivityPub `to`/`cc` ([ThibG](https://github.com/tootsuite/mastodon/pull/14514))
### Changed
- Change actors to not be served at all without authentication in limited federation mode ([ThibG](https://github.com/tootsuite/mastodon/pull/14800))
- Previously, a bare version of an actor was served when not authenticated, i.e. username and public key
- Because all actor fetch requests are signed using a separate system actor, that is no longer required
### Fixed
- Fix `tootctl media` commands not recognizing very large IDs ([ThibG](https://github.com/tootsuite/mastodon/pull/14536))
- Fix crash when failing to load emoji picker in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14525))
- Fix contrast requirements in thumbnail color extraction ([ThibG](https://github.com/tootsuite/mastodon/pull/14464))
- Fix audio/video player not using `CDN_HOST` on public pages ([ThibG](https://github.com/tootsuite/mastodon/pull/14486))
- Fix private boost icon not being used on public pages ([OmmyZhang](https://github.com/tootsuite/mastodon/pull/14471))
- Fix audio player on Safari in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14485), [ThibG](https://github.com/tootsuite/mastodon/pull/14465))
- Fix dereferencing remote statuses not using the correct account for signature when receiving a targeted inbox delivery ([ThibG](https://github.com/tootsuite/mastodon/pull/14656))
- Fix nil error in `tootctl media remove` ([noellabo](https://github.com/tootsuite/mastodon/pull/14657))
- Fix videos with near-60 fps being rejected ([Gargron](https://github.com/tootsuite/mastodon/pull/14684))
- Fix reported statuses not being included in warning e-mail ([Gargron](https://github.com/tootsuite/mastodon/pull/14778))
- Fix `Reject` activities of `Follow` objects not correctly destroying a follow relationship ([ThibG](https://github.com/tootsuite/mastodon/pull/14479))
- Fix inefficiencies in fan-out-on-write service ([Gargron](https://github.com/tootsuite/mastodon/pull/14682), [noellabo](https://github.com/tootsuite/mastodon/pull/14709))
- Fix timeout errors when trying to webfinger some IPv6 configurations ([Gargron](https://github.com/tootsuite/mastodon/pull/14919))
- Fix files served as `application/octet-stream` being rejected without attempting mime type detection ([ThibG](https://github.com/tootsuite/mastodon/pull/14452))
## [3.2.0] - 2020-07-27 ## [3.2.0] - 2020-07-27
### Added ### Added

View File

@ -4,7 +4,7 @@ FROM ubuntu:20.04 as build-dep
SHELL ["bash", "-c"] SHELL ["bash", "-c"]
# Install Node v12 (LTS) # Install Node v12 (LTS)
ENV NODE_VER="12.16.3" ENV NODE_VER="12.20.0"
RUN ARCH= && \ RUN ARCH= && \
dpkgArch="$(dpkg --print-architecture)" && \ dpkgArch="$(dpkg --print-architecture)" && \
case "${dpkgArch##*-}" in \ case "${dpkgArch##*-}" in \

View File

@ -44,6 +44,7 @@ gem 'net-ldap', '~> 0.16'
gem 'omniauth-cas', '~> 2.0' gem 'omniauth-cas', '~> 2.0'
gem 'omniauth-saml', '~> 1.10' gem 'omniauth-saml', '~> 1.10'
gem 'omniauth', '~> 1.9' gem 'omniauth', '~> 1.9'
gem 'omniauth-rails_csrf_protection', '~> 0.1'
gem 'color_diff', '~> 0.1' gem 'color_diff', '~> 0.1'
gem 'discard', '~> 1.2' gem 'discard', '~> 1.2'
@ -81,6 +82,7 @@ gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock'
gem 'rqrcode', '~> 1.1' gem 'rqrcode', '~> 1.1'
gem 'ruby-progressbar', '~> 1.10' gem 'ruby-progressbar', '~> 1.10'
gem 'sanitize', '~> 5.2' gem 'sanitize', '~> 5.2'
gem 'scenic', '~> 1.5'
gem 'sidekiq', '~> 6.1' gem 'sidekiq', '~> 6.1'
gem 'sidekiq-scheduler', '~> 3.0' gem 'sidekiq-scheduler', '~> 3.0'
gem 'sidekiq-unique-jobs', '~> 6.0' gem 'sidekiq-unique-jobs', '~> 6.0'

View File

@ -375,6 +375,9 @@ GEM
addressable (~> 2.3) addressable (~> 2.3)
nokogiri (~> 1.5) nokogiri (~> 1.5)
omniauth (~> 1.2) omniauth (~> 1.2)
omniauth-rails_csrf_protection (0.1.2)
actionpack (>= 4.2)
omniauth (>= 1.3.1)
omniauth-saml (1.10.3) omniauth-saml (1.10.3)
omniauth (~> 1.3, >= 1.3.2) omniauth (~> 1.3, >= 1.3.2)
ruby-saml (~> 1.9) ruby-saml (~> 1.9)
@ -558,6 +561,9 @@ GEM
crass (~> 1.0.2) crass (~> 1.0.2)
nokogiri (>= 1.8.0) nokogiri (>= 1.8.0)
nokogumbo (~> 2.0) nokogumbo (~> 2.0)
scenic (1.5.4)
activerecord (>= 4.0.0)
railties (>= 4.0.0)
securecompare (1.0.0) securecompare (1.0.0)
semantic_range (2.3.0) semantic_range (2.3.0)
sidekiq (6.1.2) sidekiq (6.1.2)
@ -741,6 +747,7 @@ DEPENDENCIES
oj (~> 3.10) oj (~> 3.10)
omniauth (~> 1.9) omniauth (~> 1.9)
omniauth-cas (~> 2.0) omniauth-cas (~> 2.0)
omniauth-rails_csrf_protection (~> 0.1)
omniauth-saml (~> 1.10) omniauth-saml (~> 1.10)
ox (~> 2.13) ox (~> 2.13)
paperclip (~> 6.0) paperclip (~> 6.0)
@ -778,6 +785,7 @@ DEPENDENCIES
rubocop-rails (~> 2.8) rubocop-rails (~> 2.8)
ruby-progressbar (~> 1.10) ruby-progressbar (~> 1.10)
sanitize (~> 5.2) sanitize (~> 5.2)
scenic (~> 1.5)
sidekiq (~> 6.1) sidekiq (~> 6.1)
sidekiq-bulk (~> 0.2.0) sidekiq-bulk (~> 0.2.0)
sidekiq-scheduler (~> 3.0) sidekiq-scheduler (~> 3.0)

View File

@ -1,12 +1,15 @@
# frozen_string_literal: true # frozen_string_literal: true
class AboutController < ApplicationController class AboutController < ApplicationController
include RegistrationSpamConcern
layout 'public' layout 'public'
before_action :require_open_federation!, only: [:show, :more] before_action :require_open_federation!, only: [:show, :more]
before_action :set_body_classes, only: :show before_action :set_body_classes, only: :show
before_action :set_instance_presenter before_action :set_instance_presenter
before_action :set_expires_in, only: [:show, :more, :terms] before_action :set_expires_in, only: [:more, :terms]
before_action :set_registration_form_time, only: :show
skip_before_action :require_functional!, only: [:more, :terms] skip_before_action :require_functional!, only: [:more, :terms]

View File

@ -81,7 +81,7 @@ class AccountsController < ApplicationController
end end
def account_media_status_ids def account_media_status_ids
@account.media_attachments.attached.reorder(nil).select(:status_id).distinct @account.media_attachments.attached.reorder(nil).select(:status_id).group(:status_id)
end end
def no_replies_scope def no_replies_scope

View File

@ -29,6 +29,7 @@ module Admin
@domain_block = existing_domain_block @domain_block = existing_domain_block
@domain_block.update(resource_params) @domain_block.update(resource_params)
end end
if @domain_block.save if @domain_block.save
DomainBlockWorker.perform_async(@domain_block.id) DomainBlockWorker.perform_async(@domain_block.id)
log_action :create, @domain_block log_action :create, @domain_block
@ -40,7 +41,7 @@ module Admin
end end
def update def update
authorize :domain_block, :create? authorize :domain_block, :update?
@domain_block.update(update_params) @domain_block.update(update_params)
@ -48,7 +49,7 @@ module Admin
if @domain_block.save if @domain_block.save
DomainBlockWorker.perform_async(@domain_block.id, severity_changed) DomainBlockWorker.perform_async(@domain_block.id, severity_changed)
log_action :create, @domain_block log_action :update, @domain_block
redirect_to admin_instances_path(limited: '1'), notice: I18n.t('admin.domain_blocks.created_msg') redirect_to admin_instances_path(limited: '1'), notice: I18n.t('admin.domain_blocks.created_msg')
else else
render :edit render :edit
@ -73,11 +74,11 @@ module Admin
end end
def update_params def update_params
params.require(:domain_block).permit(:severity, :reject_media, :reject_reports, :private_comment, :public_comment) params.require(:domain_block).permit(:severity, :reject_media, :reject_reports, :private_comment, :public_comment, :obfuscate)
end end
def resource_params def resource_params
params.require(:domain_block).permit(:domain, :severity, :reject_media, :reject_reports, :private_comment, :public_comment) params.require(:domain_block).permit(:domain, :severity, :reject_media, :reject_reports, :private_comment, :public_comment, :obfuscate)
end end
end end
end end

View File

@ -2,65 +2,31 @@
module Admin module Admin
class InstancesController < BaseController class InstancesController < BaseController
before_action :set_domain_block, only: :show before_action :set_instances, only: :index
before_action :set_domain_allow, only: :show
before_action :set_instance, only: :show before_action :set_instance, only: :show
def index def index
authorize :instance, :index? authorize :instance, :index?
@instances = ordered_instances
end end
def show def show
authorize :instance, :show? authorize :instance, :show?
@following_count = Follow.where(account: Account.where(domain: params[:id])).count
@followers_count = Follow.where(target_account: Account.where(domain: params[:id])).count
@reports_count = Report.where(target_account: Account.where(domain: params[:id])).count
@blocks_count = Block.where(target_account: Account.where(domain: params[:id])).count
@available = DeliveryFailureTracker.available?(params[:id])
@media_storage = MediaAttachment.where(account: Account.where(domain: params[:id])).sum(:file_file_size)
@private_comment = @domain_block&.private_comment
@public_comment = @domain_block&.public_comment
end end
private private
def set_domain_block
@domain_block = DomainBlock.rule_for(params[:id])
end
def set_domain_allow
@domain_allow = DomainAllow.rule_for(params[:id])
end
def set_instance def set_instance
resource = Account.by_domain_accounts.find_by(domain: params[:id]) @instance = Instance.find(params[:id])
resource ||= @domain_block end
resource ||= @domain_allow
if resource def set_instances
@instance = Instance.new(resource) @instances = filtered_instances.page(params[:page])
else
not_found
end
end end
def filtered_instances def filtered_instances
InstanceFilter.new(whitelist_mode? ? { allowed: true } : filter_params).results InstanceFilter.new(whitelist_mode? ? { allowed: true } : filter_params).results
end end
def paginated_instances
filtered_instances.page(params[:page])
end
helper_method :paginated_instances
def ordered_instances
paginated_instances.map { |resource| Instance.new(resource) }
end
def filter_params def filter_params
params.slice(*InstanceFilter::KEYS).permit(*InstanceFilter::KEYS) params.slice(*InstanceFilter::KEYS).permit(*InstanceFilter::KEYS)
end end

View File

@ -14,7 +14,7 @@ module Admin
@statuses = @account.statuses.where(visibility: [:public, :unlisted]) @statuses = @account.statuses.where(visibility: [:public, :unlisted])
if params[:media] if params[:media]
account_media_status_ids = @account.media_attachments.attached.reorder(nil).select(:status_id).distinct account_media_status_ids = @account.media_attachments.attached.reorder(nil).select(:status_id).group(:status_id)
@statuses.merge!(Status.where(id: account_media_status_ids)) @statuses.merge!(Status.where(id: account_media_status_ids))
end end

View File

@ -40,7 +40,7 @@ class Api::BaseController < ApplicationController
render json: { error: 'This action is not allowed' }, status: 403 render json: { error: 'This action is not allowed' }, status: 403
end end
rescue_from Mastodon::RaceConditionError do rescue_from Mastodon::RaceConditionError, Seahorse::Client::NetworkingError, Stoplight::Error::RedLight do
render json: { error: 'There was a temporary problem serving your request, please try again' }, status: 503 render json: { error: 'There was a temporary problem serving your request, please try again' }, status: 503
end end

View File

@ -7,7 +7,7 @@ class Api::V1::Accounts::FeaturedTagsController < Api::BaseController
respond_to :json respond_to :json
def index def index
render json: @featured_tags, each_serializer: REST::AccountFeaturedTagSerializer render json: @featured_tags, each_serializer: REST::FeaturedTagSerializer
end end
private private
@ -17,6 +17,6 @@ class Api::V1::Accounts::FeaturedTagsController < Api::BaseController
end end
def set_featured_tags def set_featured_tags
@featured_tags = @account.suspended? ? @account.featured_tags : [] @featured_tags = @account.suspended? ? [] : @account.featured_tags
end end
end end

View File

@ -8,7 +8,7 @@ class Api::V1::Instances::PeersController < Api::BaseController
def index def index
expires_in 1.day, public: true expires_in 1.day, public: true
render_with_cache(expires_in: 1.day) { Account.remote.domains } render_with_cache(expires_in: 1.day) { Instance.where.not(domain: DomainBlock.select(:domain)).pluck(:domain) }
end end
private private

View File

@ -28,7 +28,7 @@ class ApplicationController < ActionController::Base
rescue_from ActiveRecord::RecordNotFound, with: :not_found rescue_from ActiveRecord::RecordNotFound, with: :not_found
rescue_from Mastodon::NotPermittedError, with: :forbidden rescue_from Mastodon::NotPermittedError, with: :forbidden
rescue_from HTTP::Error, OpenSSL::SSL::SSLError, with: :internal_server_error rescue_from HTTP::Error, OpenSSL::SSL::SSLError, with: :internal_server_error
rescue_from Mastodon::RaceConditionError, with: :service_unavailable rescue_from Mastodon::RaceConditionError, Seahorse::Client::NetworkingError, Stoplight::Error::RedLight, with: :service_unavailable
rescue_from Mastodon::RateLimitExceededError, with: :too_many_requests rescue_from Mastodon::RateLimitExceededError, with: :too_many_requests
before_action :store_current_location, except: :raise_not_found, unless: :devise_controller? before_action :store_current_location, except: :raise_not_found, unless: :devise_controller?

View File

@ -2,6 +2,7 @@
class Auth::RegistrationsController < Devise::RegistrationsController class Auth::RegistrationsController < Devise::RegistrationsController
include Devise::Controllers::Rememberable include Devise::Controllers::Rememberable
include RegistrationSpamConcern
layout :determine_layout layout :determine_layout
@ -13,6 +14,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController
before_action :set_body_classes, only: [:new, :create, :edit, :update] before_action :set_body_classes, only: [:new, :create, :edit, :update]
before_action :require_not_suspended!, only: [:update] before_action :require_not_suspended!, only: [:update]
before_action :set_cache_headers, only: [:edit, :update] before_action :set_cache_headers, only: [:edit, :update]
before_action :set_registration_form_time, only: :new
skip_before_action :require_functional!, only: [:edit, :update] skip_before_action :require_functional!, only: [:edit, :update]
@ -45,16 +47,17 @@ class Auth::RegistrationsController < Devise::RegistrationsController
def build_resource(hash = nil) def build_resource(hash = nil)
super(hash) super(hash)
resource.locale = I18n.locale resource.locale = I18n.locale
resource.invite_code = params[:invite_code] if resource.invite_code.blank? resource.invite_code = params[:invite_code] if resource.invite_code.blank?
resource.sign_up_ip = request.remote_ip resource.registration_form_time = session[:registration_form_time]
resource.sign_up_ip = request.remote_ip
resource.build_account if resource.account.nil? resource.build_account if resource.account.nil?
end end
def configure_sign_up_params def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up) do |u| devise_parameter_sanitizer.permit(:sign_up) do |u|
u.permit({ account_attributes: [:username], invite_request_attributes: [:text] }, :email, :password, :password_confirmation, :invite_code, :agreement) u.permit({ account_attributes: [:username], invite_request_attributes: [:text] }, :email, :password, :password_confirmation, :invite_code, :agreement, :website, :confirm_password)
end end
end end

View File

@ -0,0 +1,9 @@
# frozen_string_literal: true
module RegistrationSpamConcern
extend ActiveSupport::Concern
def set_registration_form_time
session[:registration_form_time] = Time.now.utc
end
end

View File

@ -7,6 +7,13 @@ module ApplicationHelper
follow follow
).freeze ).freeze
RTL_LOCALES = %i(
ar
fa
he
ku
).freeze
def active_nav_class(*paths) def active_nav_class(*paths)
paths.any? { |path| current_page?(path) } ? 'active' : '' paths.any? { |path| current_page?(path) } ? 'active' : ''
end end
@ -44,7 +51,7 @@ module ApplicationHelper
end end
def locale_direction def locale_direction
if [:ar, :fa, :he].include?(I18n.locale) if RTL_LOCALES.include?(I18n.locale)
'rtl' 'rtl'
else else
'ltr' 'ltr'

View File

@ -92,22 +92,6 @@ module StatusesHelper
end end
end end
def rtl_status?(status)
status.local? ? rtl?(status.text) : rtl?(strip_tags(status.text))
end
def rtl?(text)
text = simplified_text(text)
rtl_words = text.scan(/[\p{Hebrew}\p{Arabic}\p{Syriac}\p{Thaana}\p{Nko}]+/m)
if rtl_words.present?
total_size = text.size.to_f
rtl_size(rtl_words) / total_size > 0.3
else
false
end
end
def fa_visibility_icon(status) def fa_visibility_icon(status)
case status.visibility case status.visibility
when 'public' when 'public'
@ -143,10 +127,6 @@ module StatusesHelper
end end
end end
def rtl_size(words)
words.reduce(0) { |acc, elem| acc + elem.size }.to_f
end
def embedded_view? def embedded_view?
params[:controller] == EMBEDDED_CONTROLLER && params[:action] == EMBEDDED_ACTION params[:controller] == EMBEDDED_CONTROLLER && params[:action] == EMBEDDED_ACTION
end end

View File

@ -1,7 +1,6 @@
import api from '../api'; import api from '../api';
import { debounce } from 'lodash'; import { debounce } from 'lodash';
import compareId from '../compare_id'; import compareId from '../compare_id';
import { showAlertForError } from './alerts';
export const MARKERS_FETCH_REQUEST = 'MARKERS_FETCH_REQUEST'; export const MARKERS_FETCH_REQUEST = 'MARKERS_FETCH_REQUEST';
export const MARKERS_FETCH_SUCCESS = 'MARKERS_FETCH_SUCCESS'; export const MARKERS_FETCH_SUCCESS = 'MARKERS_FETCH_SUCCESS';
@ -29,15 +28,19 @@ export const synchronouslySubmitMarkers = () => (dispatch, getState) => {
}, },
body: JSON.stringify(params), body: JSON.stringify(params),
}); });
return; return;
} else if (navigator && navigator.sendBeacon) { } else if (navigator && navigator.sendBeacon) {
// Failing that, we can use sendBeacon, but we have to encode the data as // Failing that, we can use sendBeacon, but we have to encode the data as
// FormData for DoorKeeper to recognize the token. // FormData for DoorKeeper to recognize the token.
const formData = new FormData(); const formData = new FormData();
formData.append('bearer_token', accessToken); formData.append('bearer_token', accessToken);
for (const [id, value] of Object.entries(params)) { for (const [id, value] of Object.entries(params)) {
formData.append(`${id}[last_read_id]`, value.last_read_id); formData.append(`${id}[last_read_id]`, value.last_read_id);
} }
if (navigator.sendBeacon('/api/v1/markers', formData)) { if (navigator.sendBeacon('/api/v1/markers', formData)) {
return; return;
} }
@ -85,11 +88,9 @@ const debouncedSubmitMarkers = debounce((dispatch, getState) => {
return; return;
} }
api().post('/api/v1/markers', params).then(() => { api(getState).post('/api/v1/markers', params).then(() => {
dispatch(submitMarkersSuccess(params)); dispatch(submitMarkersSuccess(params));
}).catch(error => { }).catch(() => {});
dispatch(showAlertForError(error));
});
}, 300000, { leading: true, trailing: true }); }, 300000, { leading: true, trailing: true });
export function submitMarkersSuccess({ home, notifications }) { export function submitMarkersSuccess({ home, notifications }) {
@ -102,9 +103,11 @@ export function submitMarkersSuccess({ home, notifications }) {
export function submitMarkers(params = {}) { export function submitMarkers(params = {}) {
const result = (dispatch, getState) => debouncedSubmitMarkers(dispatch, getState); const result = (dispatch, getState) => debouncedSubmitMarkers(dispatch, getState);
if (params.immediate === true) { if (params.immediate === true) {
debouncedSubmitMarkers.flush(); debouncedSubmitMarkers.flush();
} }
return result; return result;
}; };

View File

@ -37,9 +37,8 @@ export const NOTIFICATIONS_UNMOUNT = 'NOTIFICATIONS_UNMOUNT';
export const NOTIFICATIONS_MARK_AS_READ = 'NOTIFICATIONS_MARK_AS_READ'; export const NOTIFICATIONS_MARK_AS_READ = 'NOTIFICATIONS_MARK_AS_READ';
export const NOTIFICATIONS_SET_BROWSER_SUPPORT = 'NOTIFICATIONS_SET_BROWSER_SUPPORT'; export const NOTIFICATIONS_SET_BROWSER_SUPPORT = 'NOTIFICATIONS_SET_BROWSER_SUPPORT';
export const NOTIFICATIONS_SET_BROWSER_PERMISSION = 'NOTIFICATIONS_SET_BROWSER_PERMISSION'; export const NOTIFICATIONS_SET_BROWSER_PERMISSION = 'NOTIFICATIONS_SET_BROWSER_PERMISSION';
export const NOTIFICATIONS_DISMISS_BROWSER_PERMISSION = 'NOTIFICATIONS_DISMISS_BROWSER_PERMISSION';
defineMessages({ defineMessages({
mention: { id: 'notification.mention', defaultMessage: '{name} mentioned you' }, mention: { id: 'notification.mention', defaultMessage: '{name} mentioned you' },
@ -284,7 +283,3 @@ export function setBrowserPermission (value) {
value, value,
}; };
} }
export const dismissBrowserPermission = () => ({
type: NOTIFICATIONS_DISMISS_BROWSER_PERMISSION,
});

View File

@ -0,0 +1,112 @@
const DIGIT_CHARACTERS = [
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H',
'I',
'J',
'K',
'L',
'M',
'N',
'O',
'P',
'Q',
'R',
'S',
'T',
'U',
'V',
'W',
'X',
'Y',
'Z',
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
'x',
'y',
'z',
'#',
'$',
'%',
'*',
'+',
',',
'-',
'.',
':',
';',
'=',
'?',
'@',
'[',
']',
'^',
'_',
'{',
'|',
'}',
'~',
];
export const decode83 = (str) => {
let value = 0;
let c, digit;
for (let i = 0; i < str.length; i++) {
c = str[i];
digit = DIGIT_CHARACTERS.indexOf(c);
value = value * 83 + digit;
}
return value;
};
export const intToRGB = int => ({
r: Math.max(0, (int >> 16)),
g: Math.max(0, (int >> 8) & 255),
b: Math.max(0, (int & 255)),
});
export const getAverageFromBlurhash = blurhash => {
if (!blurhash) {
return null;
}
return intToRGB(decode83(blurhash.slice(2, 6)));
};

View File

@ -4,7 +4,6 @@ import AutosuggestEmoji from './autosuggest_emoji';
import AutosuggestHashtag from './autosuggest_hashtag'; import AutosuggestHashtag from './autosuggest_hashtag';
import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { isRtl } from '../rtl';
import ImmutablePureComponent from 'react-immutable-pure-component'; import ImmutablePureComponent from 'react-immutable-pure-component';
import classNames from 'classnames'; import classNames from 'classnames';
import { List as ImmutableList } from 'immutable'; import { List as ImmutableList } from 'immutable';
@ -189,11 +188,6 @@ export default class AutosuggestInput extends ImmutablePureComponent {
render () { render () {
const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus, className, id, maxLength } = this.props; const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus, className, id, maxLength } = this.props;
const { suggestionsHidden } = this.state; const { suggestionsHidden } = this.state;
const style = { direction: 'ltr' };
if (isRtl(value)) {
style.direction = 'rtl';
}
return ( return (
<div className='autosuggest-input'> <div className='autosuggest-input'>
@ -212,7 +206,7 @@ export default class AutosuggestInput extends ImmutablePureComponent {
onKeyUp={onKeyUp} onKeyUp={onKeyUp}
onFocus={this.onFocus} onFocus={this.onFocus}
onBlur={this.onBlur} onBlur={this.onBlur}
style={style} dir='auto'
aria-autocomplete='list' aria-autocomplete='list'
id={id} id={id}
className={className} className={className}

View File

@ -4,7 +4,6 @@ import AutosuggestEmoji from './autosuggest_emoji';
import AutosuggestHashtag from './autosuggest_hashtag'; import AutosuggestHashtag from './autosuggest_hashtag';
import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { isRtl } from '../rtl';
import ImmutablePureComponent from 'react-immutable-pure-component'; import ImmutablePureComponent from 'react-immutable-pure-component';
import Textarea from 'react-textarea-autosize'; import Textarea from 'react-textarea-autosize';
import classNames from 'classnames'; import classNames from 'classnames';
@ -204,11 +203,6 @@ export default class AutosuggestTextarea extends ImmutablePureComponent {
render() { render() {
const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus, children } = this.props; const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus, children } = this.props;
const { suggestionsHidden } = this.state; const { suggestionsHidden } = this.state;
const style = { direction: 'ltr' };
if (isRtl(value)) {
style.direction = 'rtl';
}
return [ return [
<div <div
@ -232,7 +226,7 @@ export default class AutosuggestTextarea extends ImmutablePureComponent {
onFocus={this.onFocus} onFocus={this.onFocus}
onBlur={this.onBlur} onBlur={this.onBlur}
onPaste={this.onPaste} onPaste={this.onPaste}
style={style} dir='auto'
aria-autocomplete='list' aria-autocomplete='list'
/> />
</label > </label >

View File

@ -1,12 +1,18 @@
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import 'wicg-inert'; import 'wicg-inert';
import { multiply } from 'color-blend';
export default class ModalRoot extends React.PureComponent { export default class ModalRoot extends React.PureComponent {
static propTypes = { static propTypes = {
children: PropTypes.node, children: PropTypes.node,
onClose: PropTypes.func.isRequired, onClose: PropTypes.func.isRequired,
backgroundColor: PropTypes.shape({
r: PropTypes.number,
g: PropTypes.number,
b: PropTypes.number,
}),
}; };
activeElement = this.props.children ? document.activeElement : null; activeElement = this.props.children ? document.activeElement : null;
@ -62,9 +68,7 @@ export default class ModalRoot extends React.PureComponent {
Promise.resolve().then(() => { Promise.resolve().then(() => {
this.activeElement.focus({ preventScroll: true }); this.activeElement.focus({ preventScroll: true });
this.activeElement = null; this.activeElement = null;
}).catch((error) => { }).catch(console.error);
console.error(error);
});
} }
} }
@ -91,10 +95,16 @@ export default class ModalRoot extends React.PureComponent {
); );
} }
let backgroundColor = null;
if (this.props.backgroundColor) {
backgroundColor = multiply({ ...this.props.backgroundColor, a: 1 }, { r: 0, g: 0, b: 0, a: 0.7 });
}
return ( return (
<div className='modal-root' ref={this.setRef}> <div className='modal-root' ref={this.setRef}>
<div style={{ pointerEvents: visible ? 'auto' : 'none' }}> <div style={{ pointerEvents: visible ? 'auto' : 'none' }}>
<div role='presentation' className='modal-root__overlay' onClick={onClose} /> <div role='presentation' className='modal-root__overlay' onClick={onClose} style={{ backgroundColor: backgroundColor ? `rgba(${backgroundColor.r}, ${backgroundColor.g}, ${backgroundColor.b}, 0.7)` : null }} />
<div role='dialog' className='modal-root__container'>{children}</div> <div role='dialog' className='modal-root__container'>{children}</div>
</div> </div>
</div> </div>

View File

@ -97,7 +97,7 @@ class Status extends ImmutablePureComponent {
cachedMediaWidth: PropTypes.number, cachedMediaWidth: PropTypes.number,
scrollKey: PropTypes.string, scrollKey: PropTypes.string,
deployPictureInPicture: PropTypes.func, deployPictureInPicture: PropTypes.func,
pictureInPicture: PropTypes.shape({ pictureInPicture: ImmutablePropTypes.contains({
inUse: PropTypes.bool, inUse: PropTypes.bool,
available: PropTypes.bool, available: PropTypes.bool,
}), }),
@ -192,8 +192,13 @@ class Status extends ImmutablePureComponent {
return <div className='audio-player' style={{ height: '110px' }} />; return <div className='audio-player' style={{ height: '110px' }} />;
} }
handleOpenVideo = (media, options) => { handleOpenVideo = (options) => {
this.props.onOpenVideo(media, options); const status = this._properStatus();
this.props.onOpenVideo(status.get('id'), status.getIn(['media_attachments', 0]), options);
}
handleOpenMedia = (media, index) => {
this.props.onOpenMedia(this._properStatus().get('id'), media, index);
} }
handleHotkeyOpenMedia = e => { handleHotkeyOpenMedia = e => {
@ -203,12 +208,10 @@ class Status extends ImmutablePureComponent {
e.preventDefault(); e.preventDefault();
if (status.get('media_attachments').size > 0) { if (status.get('media_attachments').size > 0) {
if (status.getIn(['media_attachments', 0, 'type']) === 'audio') { if (status.getIn(['media_attachments', 0, 'type']) === 'video') {
// TODO: toggle play/paused? onOpenVideo(status.get('id'), status.getIn(['media_attachments', 0]), { startTime: 0 });
} else if (status.getIn(['media_attachments', 0, 'type']) === 'video') {
onOpenVideo(status.getIn(['media_attachments', 0]), { startTime: 0 });
} else { } else {
onOpenMedia(status.get('media_attachments'), 0); onOpenMedia(status.get('id'), status.get('media_attachments'), 0);
} }
} }
} }
@ -351,7 +354,7 @@ class Status extends ImmutablePureComponent {
status = status.get('reblog'); status = status.get('reblog');
} }
if (pictureInPicture.inUse) { if (pictureInPicture.get('inUse')) {
media = <PictureInPicturePlaceholder width={this.props.cachedMediaWidth} />; media = <PictureInPicturePlaceholder width={this.props.cachedMediaWidth} />;
} else if (status.get('media_attachments').size > 0) { } else if (status.get('media_attachments').size > 0) {
if (this.props.muted) { if (this.props.muted) {
@ -378,7 +381,7 @@ class Status extends ImmutablePureComponent {
width={this.props.cachedMediaWidth} width={this.props.cachedMediaWidth}
height={110} height={110}
cacheWidth={this.props.cacheMediaWidth} cacheWidth={this.props.cacheMediaWidth}
deployPictureInPicture={pictureInPicture.available ? this.handleDeployPictureInPicture : undefined} deployPictureInPicture={pictureInPicture.get('available') ? this.handleDeployPictureInPicture : undefined}
/> />
)} )}
</Bundle> </Bundle>
@ -401,7 +404,7 @@ class Status extends ImmutablePureComponent {
sensitive={status.get('sensitive')} sensitive={status.get('sensitive')}
onOpenVideo={this.handleOpenVideo} onOpenVideo={this.handleOpenVideo}
cacheWidth={this.props.cacheMediaWidth} cacheWidth={this.props.cacheMediaWidth}
deployPictureInPicture={pictureInPicture.available ? this.handleDeployPictureInPicture : undefined} deployPictureInPicture={pictureInPicture.get('available') ? this.handleDeployPictureInPicture : undefined}
visible={this.state.showMedia} visible={this.state.showMedia}
onToggleVisibility={this.handleToggleMediaVisibility} onToggleVisibility={this.handleToggleMediaVisibility}
/> />
@ -416,7 +419,7 @@ class Status extends ImmutablePureComponent {
media={status.get('media_attachments')} media={status.get('media_attachments')}
sensitive={status.get('sensitive')} sensitive={status.get('sensitive')}
height={110} height={110}
onOpenMedia={this.props.onOpenMedia} onOpenMedia={this.handleOpenMedia}
cacheWidth={this.props.cacheMediaWidth} cacheWidth={this.props.cacheMediaWidth}
defaultWidth={this.props.cachedMediaWidth} defaultWidth={this.props.cachedMediaWidth}
visible={this.state.showMedia} visible={this.state.showMedia}
@ -429,7 +432,7 @@ class Status extends ImmutablePureComponent {
} else if (status.get('spoiler_text').length === 0 && status.get('card')) { } else if (status.get('spoiler_text').length === 0 && status.get('card')) {
media = ( media = (
<Card <Card
onOpenMedia={this.props.onOpenMedia} onOpenMedia={this.handleOpenMedia}
card={status.get('card')} card={status.get('card')}
compact compact
cacheWidth={this.props.cacheMediaWidth} cacheWidth={this.props.cacheMediaWidth}

View File

@ -1,7 +1,6 @@
import React from 'react'; import React from 'react';
import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { isRtl } from '../rtl';
import { FormattedMessage } from 'react-intl'; import { FormattedMessage } from 'react-intl';
import Permalink from './permalink'; import Permalink from './permalink';
import classnames from 'classnames'; import classnames from 'classnames';
@ -185,17 +184,12 @@ export default class StatusContent extends React.PureComponent {
const content = { __html: status.get('contentHtml') }; const content = { __html: status.get('contentHtml') };
const spoilerContent = { __html: status.get('spoilerHtml') }; const spoilerContent = { __html: status.get('spoilerHtml') };
const directionStyle = { direction: 'ltr' };
const classNames = classnames('status__content', { const classNames = classnames('status__content', {
'status__content--with-action' : this.props.onClick && this.context.router, 'status__content--with-action' : this.props.onClick && this.context.router,
'status__content--with-spoiler': status.get('spoiler_text').length > 0, 'status__content--with-spoiler': status.get('spoiler_text').length > 0,
'status__content--collapsed' : renderReadMore, 'status__content--collapsed' : renderReadMore,
}); });
if (isRtl(status.get('search_index'))) {
directionStyle.direction = 'rtl';
}
const showThreadButton = ( const showThreadButton = (
<button <button
className='status__content__read-more-button' className='status__content__read-more-button'
@ -255,14 +249,7 @@ export default class StatusContent extends React.PureComponent {
} }
return ( return (
<div <div className={classNames} ref={this.setRef} tabIndex='0' onMouseDown={this.handleMouseDown} onMouseUp={this.handleMouseUp}>
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 }}> <p style={{ marginBottom: hidden && status.get('mentions').isEmpty() ? '0px' : null }}>
<span dangerouslySetInnerHTML={spoilerContent} /> <span dangerouslySetInnerHTML={spoilerContent} />
{' '} {' '}
@ -275,12 +262,7 @@ export default class StatusContent extends React.PureComponent {
{mentionsPlaceholder} {mentionsPlaceholder}
<div <div tabIndex={!hidden ? 0 : null} className={`status__content__text ${!hidden ? 'status__content__text--visible' : ''}`} dangerouslySetInnerHTML={content} />
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')} />} {!hidden && !!status.get('poll') && <PollContainer pollId={status.get('poll')} />}
@ -289,20 +271,8 @@ export default class StatusContent extends React.PureComponent {
); );
} else if (this.props.onClick) { } else if (this.props.onClick) {
const output = [ const output = [
<div <div className={classNames} ref={this.setRef} tabIndex='0' onMouseDown={this.handleMouseDown} onMouseUp={this.handleMouseUp} key='status-content'>
className={classNames} <div className='status__content__text status__content__text--visible' dangerouslySetInnerHTML={content} />
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}
/>
{!!status.get('poll') && <PollContainer pollId={status.get('poll')} />} {!!status.get('poll') && <PollContainer pollId={status.get('poll')} />}
@ -317,17 +287,8 @@ export default class StatusContent extends React.PureComponent {
return output; return output;
} else { } else {
return ( return (
<div <div className={classNames} ref={this.setRef} tabIndex='0'>
className={classNames} <div className='status__content__text status__content__text--visible' dangerouslySetInnerHTML={content} />
ref={this.setRef}
tabIndex='0'
style={directionStyle}
>
<div
className='status__content__text status__content__text--visible'
style={directionStyle}
dangerouslySetInnerHTML={content}
/>
{!!status.get('poll') && <PollContainer pollId={status.get('poll')} />} {!!status.get('poll') && <PollContainer pollId={status.get('poll')} />}

View File

@ -30,6 +30,7 @@ export default class MediaContainer extends PureComponent {
media: null, media: null,
index: null, index: null,
time: null, time: null,
backgroundColor: null,
}; };
handleOpenMedia = (media, index) => { handleOpenMedia = (media, index) => {
@ -52,7 +53,16 @@ export default class MediaContainer extends PureComponent {
document.body.classList.remove('with-modals--active'); document.body.classList.remove('with-modals--active');
document.documentElement.style.marginRight = 0; document.documentElement.style.marginRight = 0;
this.setState({ media: null, index: null, time: null }); this.setState({
media: null,
index: null,
time: null,
backgroundColor: null,
});
}
setBackgroundColor = color => {
this.setState({ backgroundColor: color });
} }
render () { render () {
@ -85,13 +95,14 @@ export default class MediaContainer extends PureComponent {
); );
})} })}
<ModalRoot onClose={this.handleCloseMedia}> <ModalRoot backgroundColor={this.state.backgroundColor} onClose={this.handleCloseMedia}>
{this.state.media && ( {this.state.media && (
<MediaModal <MediaModal
media={this.state.media} media={this.state.media}
index={this.state.index || 0} index={this.state.index || 0}
time={this.state.time} time={this.state.time}
onClose={this.handleCloseMedia} onClose={this.handleCloseMedia}
onChangeBackgroundColor={this.setBackgroundColor}
/> />
)} )}
</ModalRoot> </ModalRoot>

View File

@ -1,7 +1,7 @@
import React from 'react'; import React from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import Status from '../components/status'; import Status from '../components/status';
import { makeGetStatus } from '../selectors'; import { makeGetStatus, makeGetPictureInPicture } from '../selectors';
import { import {
replyCompose, replyCompose,
mentionCompose, mentionCompose,
@ -54,14 +54,11 @@ const messages = defineMessages({
const makeMapStateToProps = () => { const makeMapStateToProps = () => {
const getStatus = makeGetStatus(); const getStatus = makeGetStatus();
const getPictureInPicture = makeGetPictureInPicture();
const mapStateToProps = (state, props) => ({ const mapStateToProps = (state, props) => ({
status: getStatus(state, props), status: getStatus(state, props),
pictureInPicture: getPictureInPicture(state, props),
pictureInPicture: {
inUse: state.getIn(['meta', 'layout']) !== 'mobile' && state.get('picture_in_picture').statusId === props.id,
available: state.getIn(['meta', 'layout']) !== 'mobile',
},
}); });
return mapStateToProps; return mapStateToProps;
@ -152,12 +149,12 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
dispatch(mentionCompose(account, router)); dispatch(mentionCompose(account, router));
}, },
onOpenMedia (media, index) { onOpenMedia (statusId, media, index) {
dispatch(openModal('MEDIA', { media, index })); dispatch(openModal('MEDIA', { statusId, media, index }));
}, },
onOpenVideo (media, options) { onOpenVideo (statusId, media, options) {
dispatch(openModal('VIDEO', { media, options })); dispatch(openModal('VIDEO', { statusId, media, options }));
}, },
onBlock (status) { onBlock (status) {

View File

@ -170,7 +170,7 @@ class Header extends ImmutablePureComponent {
} else if (account.getIn(['relationship', 'requested'])) { } else if (account.getIn(['relationship', 'requested'])) {
actionBtn = <Button className='logo-button' text={intl.formatMessage(messages.cancel_follow_request)} title={intl.formatMessage(messages.requested)} onClick={this.props.onFollow} />; actionBtn = <Button className='logo-button' text={intl.formatMessage(messages.cancel_follow_request)} title={intl.formatMessage(messages.requested)} onClick={this.props.onFollow} />;
} else if (!account.getIn(['relationship', 'blocking'])) { } else if (!account.getIn(['relationship', 'blocking'])) {
actionBtn = <Button disabled={account.getIn(['relationship', 'blocked_by'])} className={classNames('logo-button', { 'button--destructive': account.getIn(['relationship', 'following']) })} text={intl.formatMessage(account.getIn(['relationship', 'following']) ? messages.unfollow : messages.follow)} onClick={this.props.onFollow} />; actionBtn = <Button disabled={account.getIn(['relationship', 'blocked_by'])} className={classNames('logo-button', { 'button--destructive': account.getIn(['relationship', 'following']) })} style={account.getIn(['relationship', 'following']) && { padding: '0 10px', 'min-width': '88px' }} text={intl.formatMessage(account.getIn(['relationship', 'following']) ? messages.unfollow : messages.follow)} onClick={this.props.onFollow} />;
} else if (account.getIn(['relationship', 'blocking'])) { } else if (account.getIn(['relationship', 'blocking'])) {
actionBtn = <Button className='logo-button' text={intl.formatMessage(messages.unblock, { name: account.get('username') })} onClick={this.props.onBlock} />; actionBtn = <Button className='logo-button' text={intl.formatMessage(messages.unblock, { name: account.get('username') })} onClick={this.props.onBlock} />;
} }

View File

@ -105,15 +105,18 @@ class AccountGallery extends ImmutablePureComponent {
} }
handleOpenMedia = attachment => { handleOpenMedia = attachment => {
const { dispatch } = this.props;
const statusId = attachment.getIn(['status', 'id']);
if (attachment.get('type') === 'video') { if (attachment.get('type') === 'video') {
this.props.dispatch(openModal('VIDEO', { media: attachment, status: attachment.get('status'), options: { autoPlay: true } })); dispatch(openModal('VIDEO', { media: attachment, statusId, options: { autoPlay: true } }));
} else if (attachment.get('type') === 'audio') { } else if (attachment.get('type') === 'audio') {
this.props.dispatch(openModal('AUDIO', { media: attachment, status: attachment.get('status'), options: { autoPlay: true } })); dispatch(openModal('AUDIO', { media: attachment, statusId, options: { autoPlay: true } }));
} else { } else {
const media = attachment.getIn(['status', 'media_attachments']); const media = attachment.getIn(['status', 'media_attachments']);
const index = media.findIndex(x => x.get('id') === attachment.get('id')); const index = media.findIndex(x => x.get('id') === attachment.get('id'));
this.props.dispatch(openModal('MEDIA', { media, index, status: attachment.get('status') })); dispatch(openModal('MEDIA', { media, index, statusId }));
} }
} }
@ -149,6 +152,14 @@ class AccountGallery extends ImmutablePureComponent {
loadOlder = <LoadMore visible={!isLoading} onClick={this.handleLoadOlder} />; loadOlder = <LoadMore visible={!isLoading} onClick={this.handleLoadOlder} />;
} }
let emptyMessage;
if (suspended) {
emptyMessage = <FormattedMessage id='empty_column.account_suspended' defaultMessage='Account suspended' />;
} else if (blockedBy) {
emptyMessage = <FormattedMessage id='empty_column.account_unavailable' defaultMessage='Profile unavailable' />;
}
return ( return (
<Column> <Column>
<ColumnBackButton multiColumn={multiColumn} /> <ColumnBackButton multiColumn={multiColumn} />
@ -159,7 +170,7 @@ class AccountGallery extends ImmutablePureComponent {
{(suspended || blockedBy) ? ( {(suspended || blockedBy) ? (
<div className='empty-column-indicator'> <div className='empty-column-indicator'>
<FormattedMessage id='empty_column.account_unavailable' defaultMessage='Profile unavailable' /> {emptyMessage}
</div> </div>
) : ( ) : (
<div role='feed' className='account-gallery__container' ref={this.handleRef}> <div role='feed' className='account-gallery__container' ref={this.handleRef}>

View File

@ -136,7 +136,9 @@ class AccountTimeline extends ImmutablePureComponent {
let emptyMessage; let emptyMessage;
if (suspended || blockedBy) { if (suspended) {
emptyMessage = <FormattedMessage id='empty_column.account_suspended' defaultMessage='Account suspended' />;
} else if (blockedBy) {
emptyMessage = <FormattedMessage id='empty_column.account_unavailable' defaultMessage='Profile unavailable' />; emptyMessage = <FormattedMessage id='empty_column.account_unavailable' defaultMessage='Profile unavailable' />;
} else if (remote && statusIds.isEmpty()) { } else if (remote && statusIds.isEmpty()) {
emptyMessage = <RemoteHint url={remoteUrl} />; emptyMessage = <RemoteHint url={remoteUrl} />;

View File

@ -83,6 +83,18 @@ class ComposeForm extends ImmutablePureComponent {
} }
}; };
getFulltextForCharacterCounting = () => {
return [this.props.spoiler? this.props.spoilerText: '', countableText(this.props.text)].join('');
}
canSubmit = () => {
const { isSubmitting, isChangingUpload, isUploading, anyMedia } = this.props;
const fulltext = this.getFulltextForCharacterCounting();
const isOnlyWhitespace = fulltext.length !== 0 && fulltext.trim().length === 0;
return !(isSubmitting || isUploading || isChangingUpload || length(fulltext) > 500 || (isOnlyWhitespace && !anyMedia));
}
handleSubmit = () => { handleSubmit = () => {
if (this.props.text !== this.autosuggestTextarea.textarea.value) { if (this.props.text !== this.autosuggestTextarea.textarea.value) {
// Something changed the text inside the textarea (e.g. browser extensions like Grammarly) // Something changed the text inside the textarea (e.g. browser extensions like Grammarly)
@ -90,11 +102,7 @@ class ComposeForm extends ImmutablePureComponent {
this.props.onChange(this.autosuggestTextarea.textarea.value); this.props.onChange(this.autosuggestTextarea.textarea.value);
} }
// Submit disabled: if (!this.canSubmit()) {
const { isSubmitting, isChangingUpload, isUploading, anyMedia } = this.props;
const fulltext = [this.props.spoilerText, countableText(this.props.text)].join('');
if (isSubmitting || isUploading || isChangingUpload || length(fulltext) > this.props.maxTootCharsLimit || (fulltext.length !== 0 && fulltext.trim().length === 0 && !anyMedia)) {
return; return;
} }
@ -183,11 +191,9 @@ class ComposeForm extends ImmutablePureComponent {
this.props.onPickEmoji(position, data, needsSpace); this.props.onPickEmoji(position, data, needsSpace);
}; };
render() { render () {
const { intl, onPaste, showSearch, anyMedia } = this.props; const { intl, onPaste, showSearch } = this.props;
const disabled = this.props.isSubmitting; const disabled = this.props.isSubmitting;
const text = [this.props.spoilerText, countableText(this.props.text)].join('');
const disabledButton = disabled || this.props.isUploading || this.props.isChangingUpload || length(text) > this.props.maxTootCharsLimit || (text.length !== 0 && text.trim().length === 0 && !anyMedia);
let publishText = ''; let publishText = '';
if (this.props.privacy === 'private' || this.props.privacy === 'direct') { if (this.props.privacy === 'private' || this.props.privacy === 'direct') {
@ -252,23 +258,14 @@ class ComposeForm extends ImmutablePureComponent {
<PollButtonContainer /> <PollButtonContainer />
<PrivacyDropdownContainer /> <PrivacyDropdownContainer />
<SpoilerButtonContainer /> <SpoilerButtonContainer />
</div > </div>
<div className='character-counter__wrapper'><CharacterCounter <div className='character-counter__wrapper'><CharacterCounter max={500} text={this.getFulltextForCharacterCounting()} /></div>
max={this.props.maxTootCharsLimit} </div>
text={text}
/></div >
</div >
<div className='compose-form__publish'> <div className='compose-form__publish'>
<div className='compose-form__publish-button-wrapper'><Button <div className='compose-form__publish-button-wrapper'><Button text={publishText} onClick={this.handleSubmit} disabled={!this.canSubmit()} block /></div>
text={publishText} </div>
onClick={this.handleSubmit} </div>
disabled={disabledButton}
block
/></div >
</div >
</div >
); );
} }

View File

@ -6,7 +6,6 @@ import IconButton from '../../../components/icon_button';
import DisplayName from '../../../components/display_name'; import DisplayName from '../../../components/display_name';
import { defineMessages, injectIntl } from 'react-intl'; import { defineMessages, injectIntl } from 'react-intl';
import ImmutablePureComponent from 'react-immutable-pure-component'; import ImmutablePureComponent from 'react-immutable-pure-component';
import { isRtl } from '../../../rtl';
import AttachmentList from 'mastodon/components/attachment_list'; import AttachmentList from 'mastodon/components/attachment_list';
const messages = defineMessages({ const messages = defineMessages({
@ -45,9 +44,6 @@ class ReplyIndicator extends ImmutablePureComponent {
} }
const content = { __html: status.get('contentHtml') }; const content = { __html: status.get('contentHtml') };
const style = {
direction: isRtl(status.get('search_index')) ? 'rtl' : 'ltr',
};
return ( return (
<div className='reply-indicator'> <div className='reply-indicator'>
@ -60,7 +56,7 @@ class ReplyIndicator extends ImmutablePureComponent {
</a> </a>
</div> </div>
<div className='reply-indicator__content' style={style} dangerouslySetInnerHTML={content} /> <div className='reply-indicator__content' dangerouslySetInnerHTML={content} />
{status.get('media_attachments').size > 0 && ( {status.get('media_attachments').size > 0 && (
<AttachmentList <AttachmentList

View File

@ -20,9 +20,9 @@ import RadioButton from 'mastodon/components/radio_button';
const messages = defineMessages({ const messages = defineMessages({
deleteMessage: { id: 'confirmations.delete_list.message', defaultMessage: 'Are you sure you want to permanently delete this list?' }, deleteMessage: { id: 'confirmations.delete_list.message', defaultMessage: 'Are you sure you want to permanently delete this list?' },
deleteConfirm: { id: 'confirmations.delete_list.confirm', defaultMessage: 'Delete' }, deleteConfirm: { id: 'confirmations.delete_list.confirm', defaultMessage: 'Delete' },
all_replies: { id: 'lists.replies_policy.all_replies', defaultMessage: 'Any followed user' }, followed: { id: 'lists.replies_policy.followed', defaultMessage: 'Any followed user' },
no_replies: { id: 'lists.replies_policy.no_replies', defaultMessage: 'No one' }, none: { id: 'lists.replies_policy.none', defaultMessage: 'No one' },
list_replies: { id: 'lists.replies_policy.list_replies', defaultMessage: 'Members of the list' }, list: { id: 'lists.replies_policy.list', defaultMessage: 'Members of the list' },
}); });
const mapStateToProps = (state, props) => ({ const mapStateToProps = (state, props) => ({
@ -193,7 +193,7 @@ class ListTimeline extends React.PureComponent {
<FormattedMessage id='lists.replies_policy.title' defaultMessage='Show replies to:' /> <FormattedMessage id='lists.replies_policy.title' defaultMessage='Show replies to:' />
</span> </span>
<div className='column-settings__row'> <div className='column-settings__row'>
{ ['no_replies', 'list_replies', 'all_replies'].map(policy => ( { ['none', 'list', 'followed'].map(policy => (
<RadioButton name='order' value={policy} label={intl.formatMessage(messages[policy])} checked={replies_policy === policy} onChange={this.handleRepliesPolicyChange} /> <RadioButton name='order' value={policy} label={intl.formatMessage(messages[policy])} checked={replies_policy === policy} onChange={this.handleRepliesPolicyChange} />
))} ))}
</div> </div>

View File

@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePropTypes from 'react-immutable-proptypes';
import { FormattedMessage } from 'react-intl'; import { FormattedMessage } from 'react-intl';
import ClearColumnButton from './clear_column_button'; import ClearColumnButton from './clear_column_button';
import GrantPermissionButton from './grant_permission_button';
import SettingToggle from './setting_toggle'; import SettingToggle from './setting_toggle';
export default class ColumnSettings extends React.PureComponent { export default class ColumnSettings extends React.PureComponent {
@ -23,7 +24,7 @@ export default class ColumnSettings extends React.PureComponent {
} }
render () { render () {
const { settings, pushSettings, onChange, onClear, alertsEnabled, browserSupport, browserPermission } = this.props; const { settings, pushSettings, onChange, onClear, alertsEnabled, browserSupport, browserPermission, onRequestNotificationPermission } = this.props;
const filterShowStr = <FormattedMessage id='notifications.column_settings.filter_bar.show' defaultMessage='Show' />; const filterShowStr = <FormattedMessage id='notifications.column_settings.filter_bar.show' defaultMessage='Show' />;
const filterAdvancedStr = <FormattedMessage id='notifications.column_settings.filter_bar.advanced' defaultMessage='Display all categories' />; const filterAdvancedStr = <FormattedMessage id='notifications.column_settings.filter_bar.advanced' defaultMessage='Display all categories' />;
@ -42,6 +43,14 @@ export default class ColumnSettings extends React.PureComponent {
</div> </div>
)} )}
{alertsEnabled && browserSupport && browserPermission === 'default' && (
<div className='column-settings__row column-settings__row--with-margin'>
<span className='warning-hint'>
<FormattedMessage id='notifications.permission_required' defaultMessage='Desktop notifications are unavailable because the required permission has not been granted.' /> <GrantPermissionButton onClick={onRequestNotificationPermission} />
</span>
</div>
)}
<div className='column-settings__row'> <div className='column-settings__row'>
<ClearColumnButton onClick={onClear} /> <ClearColumnButton onClick={onClear} />
</div> </div>
@ -61,7 +70,7 @@ export default class ColumnSettings extends React.PureComponent {
<span id='notifications-follow' className='column-settings__section'><FormattedMessage id='notifications.column_settings.follow' defaultMessage='New followers:' /></span> <span id='notifications-follow' className='column-settings__section'><FormattedMessage id='notifications.column_settings.follow' defaultMessage='New followers:' /></span>
<div className='column-settings__row'> <div className='column-settings__row'>
<SettingToggle disabled={browserPermission !== 'granted'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'follow']} onChange={onChange} label={alertStr} /> <SettingToggle disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'follow']} onChange={onChange} label={alertStr} />
{showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'follow']} onChange={this.onPushChange} label={pushStr} />} {showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'follow']} onChange={this.onPushChange} label={pushStr} />}
<SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'follow']} onChange={onChange} label={showStr} /> <SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'follow']} onChange={onChange} label={showStr} />
<SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'follow']} onChange={onChange} label={soundStr} /> <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'follow']} onChange={onChange} label={soundStr} />
@ -72,7 +81,7 @@ export default class ColumnSettings extends React.PureComponent {
<span id='notifications-follow-request' className='column-settings__section'><FormattedMessage id='notifications.column_settings.follow_request' defaultMessage='New follow requests:' /></span> <span id='notifications-follow-request' className='column-settings__section'><FormattedMessage id='notifications.column_settings.follow_request' defaultMessage='New follow requests:' /></span>
<div className='column-settings__row'> <div className='column-settings__row'>
<SettingToggle disabled={browserPermission !== 'granted'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'follow_request']} onChange={onChange} label={alertStr} /> <SettingToggle disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'follow_request']} onChange={onChange} label={alertStr} />
{showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'follow_request']} onChange={this.onPushChange} label={pushStr} />} {showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'follow_request']} onChange={this.onPushChange} label={pushStr} />}
<SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'follow_request']} onChange={onChange} label={showStr} /> <SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'follow_request']} onChange={onChange} label={showStr} />
<SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'follow_request']} onChange={onChange} label={soundStr} /> <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'follow_request']} onChange={onChange} label={soundStr} />
@ -83,7 +92,7 @@ export default class ColumnSettings extends React.PureComponent {
<span id='notifications-favourite' className='column-settings__section'><FormattedMessage id='notifications.column_settings.favourite' defaultMessage='Favourites:' /></span> <span id='notifications-favourite' className='column-settings__section'><FormattedMessage id='notifications.column_settings.favourite' defaultMessage='Favourites:' /></span>
<div className='column-settings__row'> <div className='column-settings__row'>
<SettingToggle disabled={browserPermission !== 'granted'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'favourite']} onChange={onChange} label={alertStr} /> <SettingToggle disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'favourite']} onChange={onChange} label={alertStr} />
{showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'favourite']} onChange={this.onPushChange} label={pushStr} />} {showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'favourite']} onChange={this.onPushChange} label={pushStr} />}
<SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'favourite']} onChange={onChange} label={showStr} /> <SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'favourite']} onChange={onChange} label={showStr} />
<SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'favourite']} onChange={onChange} label={soundStr} /> <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'favourite']} onChange={onChange} label={soundStr} />
@ -94,7 +103,7 @@ export default class ColumnSettings extends React.PureComponent {
<span id='notifications-mention' className='column-settings__section'><FormattedMessage id='notifications.column_settings.mention' defaultMessage='Mentions:' /></span> <span id='notifications-mention' className='column-settings__section'><FormattedMessage id='notifications.column_settings.mention' defaultMessage='Mentions:' /></span>
<div className='column-settings__row'> <div className='column-settings__row'>
<SettingToggle disabled={browserPermission !== 'granted'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'mention']} onChange={onChange} label={alertStr} /> <SettingToggle disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'mention']} onChange={onChange} label={alertStr} />
{showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'mention']} onChange={this.onPushChange} label={pushStr} />} {showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'mention']} onChange={this.onPushChange} label={pushStr} />}
<SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'mention']} onChange={onChange} label={showStr} /> <SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'mention']} onChange={onChange} label={showStr} />
<SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'mention']} onChange={onChange} label={soundStr} /> <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'mention']} onChange={onChange} label={soundStr} />
@ -105,7 +114,7 @@ export default class ColumnSettings extends React.PureComponent {
<span id='notifications-reblog' className='column-settings__section'><FormattedMessage id='notifications.column_settings.reblog' defaultMessage='Boosts:' /></span> <span id='notifications-reblog' className='column-settings__section'><FormattedMessage id='notifications.column_settings.reblog' defaultMessage='Boosts:' /></span>
<div className='column-settings__row'> <div className='column-settings__row'>
<SettingToggle disabled={browserPermission !== 'granted'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'reblog']} onChange={onChange} label={alertStr} /> <SettingToggle disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'reblog']} onChange={onChange} label={alertStr} />
{showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'reblog']} onChange={this.onPushChange} label={pushStr} />} {showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'reblog']} onChange={this.onPushChange} label={pushStr} />}
<SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'reblog']} onChange={onChange} label={showStr} /> <SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'reblog']} onChange={onChange} label={showStr} />
<SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'reblog']} onChange={onChange} label={soundStr} /> <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'reblog']} onChange={onChange} label={soundStr} />
@ -116,7 +125,7 @@ export default class ColumnSettings extends React.PureComponent {
<span id='notifications-poll' className='column-settings__section'><FormattedMessage id='notifications.column_settings.poll' defaultMessage='Poll results:' /></span> <span id='notifications-poll' className='column-settings__section'><FormattedMessage id='notifications.column_settings.poll' defaultMessage='Poll results:' /></span>
<div className='column-settings__row'> <div className='column-settings__row'>
<SettingToggle disabled={browserPermission !== 'granted'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'poll']} onChange={onChange} label={alertStr} /> <SettingToggle disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'poll']} onChange={onChange} label={alertStr} />
{showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'poll']} onChange={this.onPushChange} label={pushStr} />} {showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'poll']} onChange={this.onPushChange} label={pushStr} />}
<SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'poll']} onChange={onChange} label={showStr} /> <SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'poll']} onChange={onChange} label={showStr} />
<SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'poll']} onChange={onChange} label={soundStr} /> <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'poll']} onChange={onChange} label={soundStr} />
@ -127,7 +136,7 @@ export default class ColumnSettings extends React.PureComponent {
<span id='notifications-status' className='column-settings__section'><FormattedMessage id='notifications.column_settings.status' defaultMessage='New toots:' /></span> <span id='notifications-status' className='column-settings__section'><FormattedMessage id='notifications.column_settings.status' defaultMessage='New toots:' /></span>
<div className='column-settings__row'> <div className='column-settings__row'>
<SettingToggle disabled={browserPermission !== 'granted'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'status']} onChange={onChange} label={alertStr} /> <SettingToggle disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'status']} onChange={onChange} label={alertStr} />
{showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'status']} onChange={this.onPushChange} label={pushStr} />} {showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'status']} onChange={this.onPushChange} label={pushStr} />}
<SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'status']} onChange={onChange} label={showStr} /> <SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'status']} onChange={onChange} label={showStr} />
<SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'status']} onChange={onChange} label={soundStr} /> <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'status']} onChange={onChange} label={soundStr} />

View File

@ -0,0 +1,19 @@
import React from 'react';
import PropTypes from 'prop-types';
import { FormattedMessage } from 'react-intl';
export default class GrantPermissionButton extends React.PureComponent {
static propTypes = {
onClick: PropTypes.func.isRequired,
};
render () {
return (
<button className='text-btn column-header__permission-btn' tabIndex='0' onClick={this.props.onClick}>
<FormattedMessage id='notifications.grant_permission' defaultMessage='Grant permission.' />
</button>
);
}
}

View File

@ -2,7 +2,8 @@ import React from 'react';
import Icon from 'mastodon/components/icon'; import Icon from 'mastodon/components/icon';
import Button from 'mastodon/components/button'; import Button from 'mastodon/components/button';
import IconButton from 'mastodon/components/icon_button'; import IconButton from 'mastodon/components/icon_button';
import { requestBrowserPermission, dismissBrowserPermission } from 'mastodon/actions/notifications'; import { requestBrowserPermission } from 'mastodon/actions/notifications';
import { changeSetting } from 'mastodon/actions/settings';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
@ -25,7 +26,7 @@ class NotificationsPermissionBanner extends React.PureComponent {
} }
handleClose = () => { handleClose = () => {
this.props.dispatch(dismissBrowserPermission()); this.props.dispatch(changeSetting(['notifications', 'dismissPermissionBanner'], true));
} }
render () { render () {

View File

@ -32,10 +32,16 @@ const messages = defineMessages({
markAsRead : { id: 'notifications.mark_as_read', defaultMessage: 'Mark every notification as read' }, markAsRead : { id: 'notifications.mark_as_read', defaultMessage: 'Mark every notification as read' },
}); });
const getExcludedTypes = createSelector([
state => state.getIn(['settings', 'notifications', 'shows']),
], (shows) => {
return ImmutableList(shows.filter(item => !item).keys());
});
const getNotifications = createSelector([ const getNotifications = createSelector([
state => state.getIn(['settings', 'notifications', 'quickFilter', 'show']), state => state.getIn(['settings', 'notifications', 'quickFilter', 'show']),
state => state.getIn(['settings', 'notifications', 'quickFilter', 'active']), state => state.getIn(['settings', 'notifications', 'quickFilter', 'active']),
state => ImmutableList(state.getIn(['settings', 'notifications', 'shows']).filter(item => !item).keys()), getExcludedTypes,
state => state.getIn(['notifications', 'items']), state => state.getIn(['notifications', 'items']),
], (showFilterBar, allowedType, excludedTypes, notifications) => { ], (showFilterBar, allowedType, excludedTypes, notifications) => {
if (!showFilterBar || allowedType === 'all') { if (!showFilterBar || allowedType === 'all') {
@ -56,7 +62,7 @@ const mapStateToProps = state => ({
numPending: state.getIn(['notifications', 'pendingItems'], ImmutableList()).size, numPending: state.getIn(['notifications', 'pendingItems'], ImmutableList()).size,
lastReadId: state.getIn(['notifications', 'readMarkerId']), lastReadId: state.getIn(['notifications', 'readMarkerId']),
canMarkAsRead: state.getIn(['notifications', 'readMarkerId']) !== '0' && getNotifications(state).some(item => item !== null && compareId(item.get('id'), state.getIn(['notifications', 'readMarkerId'])) > 0), canMarkAsRead: state.getIn(['notifications', 'readMarkerId']) !== '0' && getNotifications(state).some(item => item !== null && compareId(item.get('id'), state.getIn(['notifications', 'readMarkerId'])) > 0),
needsNotificationPermission: state.getIn(['settings', 'notifications', 'alerts']).includes(true) && state.getIn(['notifications', 'browserSupport']) && state.getIn(['notifications', 'browserPermission']) === 'default', needsNotificationPermission: state.getIn(['settings', 'notifications', 'alerts']).includes(true) && state.getIn(['notifications', 'browserSupport']) && state.getIn(['notifications', 'browserPermission']) === 'default' && !state.getIn(['settings', 'notifications', 'dismissPermissionBanner']),
}); });
export default @connect(mapStateToProps) export default @connect(mapStateToProps)

View File

@ -22,6 +22,7 @@ const messages = defineMessages({
favourite: { id: 'status.favourite', defaultMessage: 'Favourite' }, favourite: { id: 'status.favourite', defaultMessage: 'Favourite' },
replyConfirm: { id: 'confirmations.reply.confirm', defaultMessage: 'Reply' }, replyConfirm: { id: 'confirmations.reply.confirm', defaultMessage: 'Reply' },
replyMessage: { id: 'confirmations.reply.message', defaultMessage: 'Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?' }, replyMessage: { id: 'confirmations.reply.message', defaultMessage: 'Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?' },
open: { id: 'status.open', defaultMessage: 'Expand this status' },
}); });
const makeMapStateToProps = () => { const makeMapStateToProps = () => {
@ -49,11 +50,19 @@ class Footer extends ImmutablePureComponent {
intl: PropTypes.object.isRequired, intl: PropTypes.object.isRequired,
dispatch: PropTypes.func.isRequired, dispatch: PropTypes.func.isRequired,
askReplyConfirmation: PropTypes.bool, askReplyConfirmation: PropTypes.bool,
withOpenButton: PropTypes.bool,
onClose: PropTypes.func,
}; };
_performReply = () => { _performReply = () => {
const { dispatch, status } = this.props; const { dispatch, status, onClose } = this.props;
dispatch(replyCompose(status, this.context.router.history)); const { router } = this.context;
if (onClose) {
onClose();
}
dispatch(replyCompose(status, router.history));
}; };
handleReplyClick = () => { handleReplyClick = () => {
@ -97,8 +106,20 @@ class Footer extends ImmutablePureComponent {
} }
}; };
handleOpenClick = e => {
const { router } = this.context;
if (e.button !== 0 || !router) {
return;
}
const { status } = this.props;
router.history.push(`/statuses/${status.get('id')}`);
}
render () { render () {
const { status, intl } = this.props; const { status, intl, withOpenButton } = this.props;
const publicStatus = ['public', 'unlisted'].includes(status.get('visibility')); const publicStatus = ['public', 'unlisted'].includes(status.get('visibility'));
const reblogPrivate = status.getIn(['account', 'id']) === me && status.get('visibility') === 'private'; const reblogPrivate = status.getIn(['account', 'id']) === me && status.get('visibility') === 'private';
@ -130,6 +151,7 @@ class Footer extends ImmutablePureComponent {
<IconButton className='status__action-bar-button' title={replyTitle} icon={status.get('in_reply_to_account_id') === status.getIn(['account', 'id']) ? 'reply' : replyIcon} onClick={this.handleReplyClick} counter={status.get('replies_count')} obfuscateCount /> <IconButton className='status__action-bar-button' title={replyTitle} icon={status.get('in_reply_to_account_id') === status.getIn(['account', 'id']) ? 'reply' : replyIcon} onClick={this.handleReplyClick} counter={status.get('replies_count')} obfuscateCount />
<IconButton className={classNames('status__action-bar-button', { reblogPrivate })} disabled={!publicStatus && !reblogPrivate} active={status.get('reblogged')} pressed={status.get('reblogged')} title={reblogTitle} icon='retweet' onClick={this.handleReblogClick} counter={status.get('reblogs_count')} /> <IconButton className={classNames('status__action-bar-button', { reblogPrivate })} disabled={!publicStatus && !reblogPrivate} active={status.get('reblogged')} pressed={status.get('reblogged')} title={reblogTitle} icon='retweet' onClick={this.handleReblogClick} counter={status.get('reblogs_count')} />
<IconButton className='status__action-bar-button star-icon' animate active={status.get('favourited')} pressed={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} counter={status.get('favourites_count')} /> <IconButton className='status__action-bar-button star-icon' animate active={status.get('favourited')} pressed={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} counter={status.get('favourites_count')} />
{withOpenButton && <IconButton className='status__action-bar-button' title={intl.formatMessage(messages.open)} icon='external-link' onClick={this.handleOpenClick} />}
</div> </div>
); );
} }

View File

@ -32,16 +32,19 @@ class DetailedStatus extends ImmutablePureComponent {
}; };
static propTypes = { static propTypes = {
status : ImmutablePropTypes.map, status: ImmutablePropTypes.map,
onOpenMedia : PropTypes.func.isRequired, onOpenMedia: PropTypes.func.isRequired,
onOpenVideo : PropTypes.func.isRequired, onOpenVideo: PropTypes.func.isRequired,
onToggleHidden : PropTypes.func.isRequired, onToggleHidden: PropTypes.func.isRequired,
measureHeight : PropTypes.bool, measureHeight: PropTypes.bool,
onHeightChange : PropTypes.func, onHeightChange: PropTypes.func,
domain : PropTypes.string.isRequired, domain: PropTypes.string.isRequired,
compact : PropTypes.bool, compact: PropTypes.bool,
showMedia : PropTypes.bool, showMedia: PropTypes.bool,
usingPiP : PropTypes.bool, pictureInPicture: ImmutablePropTypes.contains({
inUse: PropTypes.bool,
available: PropTypes.bool,
}),
onToggleMediaVisibility: PropTypes.func, onToggleMediaVisibility: PropTypes.func,
}; };
@ -58,9 +61,9 @@ class DetailedStatus extends ImmutablePureComponent {
e.stopPropagation(); e.stopPropagation();
}; };
handleOpenVideo = (media, options) => { handleOpenVideo = (options) => {
this.props.onOpenVideo(media, options); this.props.onOpenVideo(this.props.status.getIn(['media_attachments', 0]), options);
}; }
handleExpandedToggle = () => { handleExpandedToggle = () => {
this.props.onToggleHidden(this.props.status); this.props.onToggleHidden(this.props.status);
@ -105,7 +108,7 @@ class DetailedStatus extends ImmutablePureComponent {
console.log('status in render ', status); console.log('status in render ', status);
const outerStyle = { boxSizing: 'border-box' }; const outerStyle = { boxSizing: 'border-box' };
const { intl, compact, usingPiP } = this.props; const { intl, compact, pictureInPicture } = this.props;
if (!status) { if (!status) {
return null; return null;
@ -121,7 +124,7 @@ class DetailedStatus extends ImmutablePureComponent {
outerStyle.height = `${this.state.height}px`; outerStyle.height = `${this.state.height}px`;
} }
if (usingPiP) { if (pictureInPicture.get('inUse')) {
media = <PictureInPicturePlaceholder />; media = <PictureInPicturePlaceholder />;
} else if (status.get('media_attachments').size > 0) { } else if (status.get('media_attachments').size > 0) {
if (status.getIn(['media_attachments', 0, 'type']) === 'audio') { if (status.getIn(['media_attachments', 0, 'type']) === 'audio') {

View File

@ -1,6 +1,6 @@
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import DetailedStatus from '../components/detailed_status'; import DetailedStatus from '../components/detailed_status';
import { makeGetStatus } from '../../../selectors'; import { makeGetStatus, makeGetPictureInPicture } from '../../../selectors';
import { import {
replyCompose, replyCompose,
mentionCompose, mentionCompose,
@ -40,10 +40,12 @@ const messages = defineMessages({
const makeMapStateToProps = () => { const makeMapStateToProps = () => {
const getStatus = makeGetStatus(); const getStatus = makeGetStatus();
const getPictureInPicture = makeGetPictureInPicture();
const mapStateToProps = (state, props) => ({ const mapStateToProps = (state, props) => ({
status: getStatus(state, props), status: getStatus(state, props),
domain: state.getIn(['meta', 'domain']), domain: state.getIn(['meta', 'domain']),
pictureInPicture: getPictureInPicture(state, props),
}); });
return mapStateToProps; return mapStateToProps;

View File

@ -43,7 +43,7 @@ import {
import { initMuteModal } from '../../actions/mutes'; import { initMuteModal } from '../../actions/mutes';
import { initBlockModal } from '../../actions/blocks'; import { initBlockModal } from '../../actions/blocks';
import { initReport } from '../../actions/reports'; import { initReport } from '../../actions/reports';
import { makeGetStatus } from '../../selectors'; import { makeGetStatus, makeGetPictureInPicture } from '../../selectors';
import { ScrollContainer } from 'react-router-scroll-4'; import { ScrollContainer } from 'react-router-scroll-4';
import ColumnBackButton from '../../components/column_back_button'; import ColumnBackButton from '../../components/column_back_button';
import ColumnHeader from '../../components/column_header'; import ColumnHeader from '../../components/column_header';
@ -72,6 +72,7 @@ const messages = defineMessages({
const makeMapStateToProps = () => { const makeMapStateToProps = () => {
const getStatus = makeGetStatus(); const getStatus = makeGetStatus();
const getPictureInPicture = makeGetPictureInPicture();
const getAncestorsIds = createSelector([ const getAncestorsIds = createSelector([
(_, { id }) => id, (_, { id }) => id,
@ -129,11 +130,12 @@ const makeMapStateToProps = () => {
const mapStateToProps = (state, props) => { const mapStateToProps = (state, props) => {
const status = getStatus(state, { id: props.params.statusId }); const status = getStatus(state, { id: props.params.statusId });
let ancestorsIds = Immutable.List();
let ancestorsIds = Immutable.List();
let descendantsIds = Immutable.List(); let descendantsIds = Immutable.List();
if (status) { if (status) {
ancestorsIds = getAncestorsIds(state, { id: status.get('in_reply_to_id') }); ancestorsIds = getAncestorsIds(state, { id: status.get('in_reply_to_id') });
descendantsIds = getDescendantsIds(state, { id: status.get('id') }); descendantsIds = getDescendantsIds(state, { id: status.get('id') });
} }
@ -143,7 +145,7 @@ const makeMapStateToProps = () => {
descendantsIds, descendantsIds,
askReplyConfirmation: state.getIn(['compose', 'text']).trim().length !== 0, askReplyConfirmation: state.getIn(['compose', 'text']).trim().length !== 0,
domain: state.getIn(['meta', 'domain']), domain: state.getIn(['meta', 'domain']),
usingPiP: state.get('picture_in_picture').statusId === props.params.statusId, pictureInPicture: getPictureInPicture(state, { id: props.params.statusId }),
}; };
}; };
@ -168,7 +170,10 @@ class Status extends ImmutablePureComponent {
askReplyConfirmation: PropTypes.bool, askReplyConfirmation: PropTypes.bool,
multiColumn: PropTypes.bool, multiColumn: PropTypes.bool,
domain: PropTypes.string.isRequired, domain: PropTypes.string.isRequired,
usingPiP: PropTypes.bool, pictureInPicture: ImmutablePropTypes.contains({
inUse: PropTypes.bool,
available: PropTypes.bool,
}),
}; };
state = { state = {
@ -276,22 +281,20 @@ class Status extends ImmutablePureComponent {
} }
handleOpenMedia = (media, index) => { handleOpenMedia = (media, index) => {
this.props.dispatch(openModal('MEDIA', { media, index })); this.props.dispatch(openModal('MEDIA', { statusId: this.props.status.get('id'), media, index }));
} }
handleOpenVideo = (media, options) => { handleOpenVideo = (media, options) => {
this.props.dispatch(openModal('VIDEO', { media, options })); this.props.dispatch(openModal('VIDEO', { statusId: this.props.status.get('id'), media, options }));
} }
handleHotkeyOpenMedia = e => { handleHotkeyOpenMedia = e => {
const status = this._properStatus(); const { status } = this.props;
e.preventDefault(); e.preventDefault();
if (status.get('media_attachments').size > 0) { if (status.get('media_attachments').size > 0) {
if (status.getIn(['media_attachments', 0, 'type']) === 'audio') { if (status.getIn(['media_attachments', 0, 'type']) === 'video') {
// TODO: toggle play/paused?
} else if (status.getIn(['media_attachments', 0, 'type']) === 'video') {
this.handleOpenVideo(status.getIn(['media_attachments', 0]), { startTime: 0 }); this.handleOpenVideo(status.getIn(['media_attachments', 0]), { startTime: 0 });
} else { } else {
this.handleOpenMedia(status.get('media_attachments'), 0); this.handleOpenMedia(status.get('media_attachments'), 0);
@ -494,7 +497,7 @@ class Status extends ImmutablePureComponent {
render () { render () {
let ancestors, descendants; let ancestors, descendants;
const { shouldUpdateScroll, status, ancestorsIds, descendantsIds, intl, domain, multiColumn, usingPiP } = this.props; const { shouldUpdateScroll, status, ancestorsIds, descendantsIds, intl, domain, multiColumn, pictureInPicture } = this.props;
const { fullscreen } = this.state; const { fullscreen } = this.state;
if (status === null) { if (status === null) {
@ -552,7 +555,7 @@ class Status extends ImmutablePureComponent {
domain={domain} domain={domain}
showMedia={this.state.showMedia} showMedia={this.state.showMedia}
onToggleMediaVisibility={this.handleToggleMediaVisibility} onToggleMediaVisibility={this.handleToggleMediaVisibility}
usingPiP={usingPiP} pictureInPicture={pictureInPicture}
/> />
<ActionBar <ActionBar

View File

@ -4,13 +4,11 @@ import PropTypes from 'prop-types';
import Audio from 'mastodon/features/audio'; import Audio from 'mastodon/features/audio';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import ImmutablePureComponent from 'react-immutable-pure-component'; import ImmutablePureComponent from 'react-immutable-pure-component';
import { FormattedMessage } from 'react-intl';
import { previewState } from './video_modal'; import { previewState } from './video_modal';
import classNames from 'classnames'; import Footer from 'mastodon/features/picture_in_picture/components/footer';
import Icon from 'mastodon/components/icon';
const mapStateToProps = (state, { status }) => ({ const mapStateToProps = (state, { statusId }) => ({
account: state.getIn(['accounts', status.get('account')]), accountStaticAvatar: state.getIn(['accounts', state.getIn(['statuses', statusId, 'account']), 'avatar_static']),
}); });
export default @connect(mapStateToProps) export default @connect(mapStateToProps)
@ -18,12 +16,13 @@ class AudioModal extends ImmutablePureComponent {
static propTypes = { static propTypes = {
media: ImmutablePropTypes.map.isRequired, media: ImmutablePropTypes.map.isRequired,
status: ImmutablePropTypes.map, statusId: PropTypes.string.isRequired,
accountStaticAvatar: PropTypes.string.isRequired,
options: PropTypes.shape({ options: PropTypes.shape({
autoPlay: PropTypes.bool, autoPlay: PropTypes.bool,
}), }),
account: ImmutablePropTypes.map,
onClose: PropTypes.func.isRequired, onClose: PropTypes.func.isRequired,
onChangeBackgroundColor: PropTypes.func.isRequired,
}; };
static contextTypes = { static contextTypes = {
@ -52,15 +51,8 @@ class AudioModal extends ImmutablePureComponent {
} }
} }
handleStatusClick = e => {
if (e.button === 0 && !(e.ctrlKey || e.metaKey)) {
e.preventDefault();
this.context.router.history.push(`/statuses/${this.props.status.get('id')}`);
}
}
render () { render () {
const { media, status, account } = this.props; const { media, accountStaticAvatar, statusId, onClose } = this.props;
const options = this.props.options || {}; const options = this.props.options || {};
return ( return (
@ -71,7 +63,7 @@ class AudioModal extends ImmutablePureComponent {
alt={media.get('description')} alt={media.get('description')}
duration={media.getIn(['meta', 'original', 'duration'], 0)} duration={media.getIn(['meta', 'original', 'duration'], 0)}
height={150} height={150}
poster={media.get('preview_url') || account.get('avatar_static')} poster={media.get('preview_url') || accountStaticAvatar}
backgroundColor={media.getIn(['meta', 'colors', 'background'])} backgroundColor={media.getIn(['meta', 'colors', 'background'])}
foregroundColor={media.getIn(['meta', 'colors', 'foreground'])} foregroundColor={media.getIn(['meta', 'colors', 'foreground'])}
accentColor={media.getIn(['meta', 'colors', 'accent'])} accentColor={media.getIn(['meta', 'colors', 'accent'])}
@ -79,11 +71,9 @@ class AudioModal extends ImmutablePureComponent {
/> />
</div> </div>
{status && ( <div className='media-modal__overlay'>
<div className={classNames('media-modal__meta')}> {statusId && <Footer statusId={statusId} withOpenButton onClose={onClose} />}
<a href={status.get('url')} onClick={this.handleStatusClick}><Icon id='comments' /> <FormattedMessage id='lightbox.view_context' defaultMessage='View context' /></a> </div>
</div>
)}
</div> </div>
); );
} }

View File

@ -75,7 +75,9 @@ class ColumnsArea extends ImmutablePureComponent {
} }
componentWillReceiveProps() { componentWillReceiveProps() {
this.setState({ shouldAnimate: false }); if (typeof this.pendingIndex !== 'number' && this.lastIndex !== getIndex(this.context.router.history.location.pathname)) {
this.setState({ shouldAnimate: false });
}
} }
componentDidMount() { componentDidMount() {
@ -99,8 +101,13 @@ class ColumnsArea extends ImmutablePureComponent {
if (this.props.singleColumn !== prevProps.singleColumn && !this.props.singleColumn) { if (this.props.singleColumn !== prevProps.singleColumn && !this.props.singleColumn) {
this.node.addEventListener('wheel', this.handleWheel, supportsPassiveEvents ? { passive: true } : false); this.node.addEventListener('wheel', this.handleWheel, supportsPassiveEvents ? { passive: true } : false);
} }
this.lastIndex = getIndex(this.context.router.history.location.pathname);
this.setState({ shouldAnimate: true }); const newIndex = getIndex(this.context.router.history.location.pathname);
if (this.lastIndex !== newIndex) {
this.lastIndex = newIndex;
this.setState({ shouldAnimate: true });
}
} }
componentWillUnmount () { componentWillUnmount () {

View File

@ -4,13 +4,15 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import Video from 'mastodon/features/video'; import Video from 'mastodon/features/video';
import classNames from 'classnames'; import classNames from 'classnames';
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import { defineMessages, injectIntl } from 'react-intl';
import IconButton from 'mastodon/components/icon_button'; import IconButton from 'mastodon/components/icon_button';
import ImmutablePureComponent from 'react-immutable-pure-component'; import ImmutablePureComponent from 'react-immutable-pure-component';
import ImageLoader from './image_loader'; import ImageLoader from './image_loader';
import Icon from 'mastodon/components/icon'; import Icon from 'mastodon/components/icon';
import GIFV from 'mastodon/components/gifv'; import GIFV from 'mastodon/components/gifv';
import { disableSwiping } from 'mastodon/initial_state'; import { disableSwiping } from 'mastodon/initial_state';
import Footer from 'mastodon/features/picture_in_picture/components/footer';
import { getAverageFromBlurhash } from 'mastodon/blurhash';
const messages = defineMessages({ const messages = defineMessages({
close: { id: 'lightbox.close', defaultMessage: 'Close' }, close: { id: 'lightbox.close', defaultMessage: 'Close' },
@ -25,10 +27,11 @@ class MediaModal extends ImmutablePureComponent {
static propTypes = { static propTypes = {
media: ImmutablePropTypes.list.isRequired, media: ImmutablePropTypes.list.isRequired,
status: ImmutablePropTypes.map, statusId: PropTypes.string,
index: PropTypes.number.isRequired, index: PropTypes.number.isRequired,
onClose: PropTypes.func.isRequired, onClose: PropTypes.func.isRequired,
intl: PropTypes.object.isRequired, intl: PropTypes.object.isRequired,
onChangeBackgroundColor: PropTypes.func.isRequired,
}; };
static contextTypes = { static contextTypes = {
@ -67,6 +70,7 @@ class MediaModal extends ImmutablePureComponent {
handleChangeIndex = (e) => { handleChangeIndex = (e) => {
const index = Number(e.currentTarget.getAttribute('data-index')); const index = Number(e.currentTarget.getAttribute('data-index'));
this.setState({ this.setState({
index: index % this.props.media.size, index: index % this.props.media.size,
zoomButtonHidden: true, zoomButtonHidden: true,
@ -100,6 +104,25 @@ class MediaModal extends ImmutablePureComponent {
this.props.onClose(); this.props.onClose();
}); });
} }
this._sendBackgroundColor();
}
componentDidUpdate (prevProps, prevState) {
if (prevState.index !== this.state.index) {
this._sendBackgroundColor();
}
}
_sendBackgroundColor () {
const { media, onChangeBackgroundColor } = this.props;
const index = this.getIndex();
const blurhash = media.getIn([index, 'blurhash']);
if (blurhash) {
const backgroundColor = getAverageFromBlurhash(blurhash);
onChangeBackgroundColor(backgroundColor);
}
} }
componentWillUnmount () { componentWillUnmount () {
@ -112,6 +135,8 @@ class MediaModal extends ImmutablePureComponent {
this.context.router.history.goBack(); this.context.router.history.goBack();
} }
} }
this.props.onChangeBackgroundColor(null);
} }
getIndex () { getIndex () {
@ -127,30 +152,19 @@ class MediaModal extends ImmutablePureComponent {
handleStatusClick = e => { handleStatusClick = e => {
if (e.button === 0 && !(e.ctrlKey || e.metaKey)) { if (e.button === 0 && !(e.ctrlKey || e.metaKey)) {
e.preventDefault(); e.preventDefault();
this.context.router.history.push(`/statuses/${this.props.status.get('id')}`); this.context.router.history.push(`/statuses/${this.props.statusId}`);
} }
} }
render () { render () {
const { media, status, intl, onClose } = this.props; const { media, statusId, intl, onClose } = this.props;
const { navigationHidden } = this.state; const { navigationHidden } = this.state;
const index = this.getIndex(); const index = this.getIndex();
let pagination = [];
const leftNav = media.size > 1 && <button tabIndex='0' className='media-modal__nav media-modal__nav--left' onClick={this.handlePrevClick} aria-label={intl.formatMessage(messages.previous)}><Icon id='chevron-left' fixedWidth /></button>; const leftNav = media.size > 1 && <button tabIndex='0' className='media-modal__nav media-modal__nav--left' onClick={this.handlePrevClick} aria-label={intl.formatMessage(messages.previous)}><Icon id='chevron-left' fixedWidth /></button>;
const rightNav = media.size > 1 && <button tabIndex='0' className='media-modal__nav media-modal__nav--right' onClick={this.handleNextClick} aria-label={intl.formatMessage(messages.next)}><Icon id='chevron-right' fixedWidth /></button>; const rightNav = media.size > 1 && <button tabIndex='0' className='media-modal__nav media-modal__nav--right' onClick={this.handleNextClick} aria-label={intl.formatMessage(messages.next)}><Icon id='chevron-right' fixedWidth /></button>;
if (media.size > 1) {
pagination = media.map((item, i) => {
const classes = ['media-modal__button'];
if (i === index) {
classes.push('media-modal__button--active');
}
return (<li className='media-modal__page-dot' key={i}><button tabIndex='0' className={classes.join(' ')} onClick={this.handleChangeIndex} data-index={i}>{i + 1}</button></li>);
});
}
const content = media.map((image) => { const content = media.map((image) => {
const width = image.getIn(['meta', 'original', 'width']) || null; const width = image.getIn(['meta', 'original', 'width']) || null;
const height = image.getIn(['meta', 'original', 'height']) || null; const height = image.getIn(['meta', 'original', 'height']) || null;
@ -218,13 +232,19 @@ class MediaModal extends ImmutablePureComponent {
'media-modal__navigation--hidden': navigationHidden, 'media-modal__navigation--hidden': navigationHidden,
}); });
let pagination;
if (media.size > 1) {
pagination = media.map((item, i) => (
<button key={i} className={classNames('media-modal__page-dot', { active: i === index })} data-index={i} onClick={this.handleChangeIndex}>
{i + 1}
</button>
));
}
return ( return (
<div className='modal-root__modal media-modal'> <div className='modal-root__modal media-modal'>
<div <div className='media-modal__closer' role='presentation' onClick={onClose} >
className='media-modal__closer'
role='presentation'
onClick={onClose}
>
<ReactSwipeableViews <ReactSwipeableViews
style={swipeableViewsStyle} style={swipeableViewsStyle}
containerStyle={containerStyle} containerStyle={containerStyle}
@ -243,15 +263,10 @@ class MediaModal extends ImmutablePureComponent {
{leftNav} {leftNav}
{rightNav} {rightNav}
{status && ( <div className='media-modal__overlay'>
<div className={classNames('media-modal__meta', { 'media-modal__meta--shifted': media.size > 1 })}> {pagination && <ul className='media-modal__pagination'>{pagination}</ul>}
<a href={status.get('url')} onClick={this.handleStatusClick}><Icon id='comments' /> <FormattedMessage id='lightbox.view_context' defaultMessage='View context' /></a> {statusId && <Footer statusId={statusId} withOpenButton onClose={onClose} />}
</div> </div>
)}
<ul className='media-modal__pagination'>
{pagination}
</ul>
</div> </div>
</div> </div>
); );

View File

@ -45,6 +45,10 @@ export default class ModalRoot extends React.PureComponent {
onClose: PropTypes.func.isRequired, onClose: PropTypes.func.isRequired,
}; };
state = {
backgroundColor: null,
};
getSnapshotBeforeUpdate () { getSnapshotBeforeUpdate () {
return { visible: !!this.props.type }; return { visible: !!this.props.type };
} }
@ -59,6 +63,10 @@ export default class ModalRoot extends React.PureComponent {
} }
} }
setBackgroundColor = color => {
this.setState({ backgroundColor: color });
}
renderLoading = modalId => () => { renderLoading = modalId => () => {
return ['MEDIA', 'VIDEO', 'BOOST', 'CONFIRM', 'ACTIONS'].indexOf(modalId) === -1 ? <ModalLoading /> : null; return ['MEDIA', 'VIDEO', 'BOOST', 'CONFIRM', 'ACTIONS'].indexOf(modalId) === -1 ? <ModalLoading /> : null;
} }
@ -71,13 +79,14 @@ export default class ModalRoot extends React.PureComponent {
render () { render () {
const { type, props, onClose } = this.props; const { type, props, onClose } = this.props;
const { backgroundColor } = this.state;
const visible = !!type; const visible = !!type;
return ( return (
<Base onClose={onClose}> <Base backgroundColor={backgroundColor} onClose={onClose}>
{visible && ( {visible && (
<BundleContainer fetchComponent={MODAL_COMPONENTS[type]} loading={this.renderLoading(type)} error={this.renderError} renderDelay={200}> <BundleContainer fetchComponent={MODAL_COMPONENTS[type]} loading={this.renderLoading(type)} error={this.renderError} renderDelay={200}>
{(SpecificComponent) => <SpecificComponent {...props} onClose={onClose} />} {(SpecificComponent) => <SpecificComponent {...props} onChangeBackgroundColor={this.setBackgroundColor} onClose={onClose} />}
</BundleContainer> </BundleContainer>
)} )}
</Base> </Base>

View File

@ -3,9 +3,8 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import Video from 'mastodon/features/video'; import Video from 'mastodon/features/video';
import ImmutablePureComponent from 'react-immutable-pure-component'; import ImmutablePureComponent from 'react-immutable-pure-component';
import { FormattedMessage } from 'react-intl'; import Footer from 'mastodon/features/picture_in_picture/components/footer';
import classNames from 'classnames'; import { getAverageFromBlurhash } from 'mastodon/blurhash';
import Icon from 'mastodon/components/icon';
export const previewState = 'previewVideoModal'; export const previewState = 'previewVideoModal';
@ -13,13 +12,14 @@ export default class VideoModal extends ImmutablePureComponent {
static propTypes = { static propTypes = {
media: ImmutablePropTypes.map.isRequired, media: ImmutablePropTypes.map.isRequired,
status: ImmutablePropTypes.map, statusId: PropTypes.string,
options: PropTypes.shape({ options: PropTypes.shape({
startTime: PropTypes.number, startTime: PropTypes.number,
autoPlay: PropTypes.bool, autoPlay: PropTypes.bool,
defaultVolume: PropTypes.number, defaultVolume: PropTypes.number,
}), }),
onClose: PropTypes.func.isRequired, onClose: PropTypes.func.isRequired,
onChangeBackgroundColor: PropTypes.func.isRequired,
}; };
static contextTypes = { static contextTypes = {
@ -27,36 +27,35 @@ export default class VideoModal extends ImmutablePureComponent {
}; };
componentDidMount () { componentDidMount () {
if (this.context.router) { const { router } = this.context;
const history = this.context.router.history; const { media, onChangeBackgroundColor, onClose } = this.props;
history.push(history.location.pathname, previewState); if (router) {
router.history.push(router.history.location.pathname, previewState);
this.unlistenHistory = router.history.listen(() => onClose());
}
this.unlistenHistory = history.listen(() => { const backgroundColor = getAverageFromBlurhash(media.get('blurhash'));
this.props.onClose();
}); if (backgroundColor) {
onChangeBackgroundColor(backgroundColor);
} }
} }
componentWillUnmount () { componentWillUnmount () {
if (this.context.router) { const { router } = this.context;
if (router) {
this.unlistenHistory(); this.unlistenHistory();
if (this.context.router.history.location.state === previewState) { if (router.history.location.state === previewState) {
this.context.router.history.goBack(); router.history.goBack();
} }
} }
} }
handleStatusClick = e => {
if (e.button === 0 && !(e.ctrlKey || e.metaKey)) {
e.preventDefault();
this.context.router.history.push(`/statuses/${this.props.status.get('id')}`);
}
}
render () { render () {
const { media, status, onClose } = this.props; const { media, statusId, onClose } = this.props;
const options = this.props.options || {}; const options = this.props.options || {};
return ( return (
@ -76,11 +75,9 @@ export default class VideoModal extends ImmutablePureComponent {
/> />
</div> </div>
{status && ( <div className='media-modal__overlay'>
<div className={classNames('media-modal__meta')}> {statusId && <Footer statusId={statusId} withOpenButton onClose={onClose} />}
<a href={status.get('url')} onClick={this.handleStatusClick}><Icon id='comments' /> <FormattedMessage id='lightbox.view_context' defaultMessage='View context' /></a> </div>
</div>
)}
</div> </div>
); );
} }

View File

@ -1,7 +1,7 @@
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
import { fromJS, is } from 'immutable'; import { is } from 'immutable';
import { throttle, debounce } from 'lodash'; import { throttle, debounce } from 'lodash';
import classNames from 'classnames'; import classNames from 'classnames';
import { isFullscreen, requestFullscreen, exitFullscreen } from '../ui/util/fullscreen'; import { isFullscreen, requestFullscreen, exitFullscreen } from '../ui/util/fullscreen';
@ -118,7 +118,6 @@ class Video extends React.PureComponent {
deployPictureInPicture: PropTypes.func, deployPictureInPicture: PropTypes.func,
intl: PropTypes.object.isRequired, intl: PropTypes.object.isRequired,
blurhash: PropTypes.string, blurhash: PropTypes.string,
link: PropTypes.node,
autoPlay: PropTypes.bool, autoPlay: PropTypes.bool,
volume: PropTypes.number, volume: PropTypes.number,
muted: PropTypes.bool, muted: PropTypes.bool,
@ -496,25 +495,13 @@ class Video extends React.PureComponent {
} }
handleOpenVideo = () => { handleOpenVideo = () => {
const { src, preview, width, height, alt } = this.props; this.video.pause();
const media = fromJS({ this.props.onOpenVideo({
type: 'video',
url: src,
preview_url: preview,
description: alt,
width,
height,
});
const options = {
startTime: this.video.currentTime, startTime: this.video.currentTime,
autoPlay: !this.state.paused, autoPlay: !this.state.paused,
defaultVolume: this.state.volume, defaultVolume: this.state.volume,
}; });
this.video.pause();
this.props.onOpenVideo(media, options);
} }
handleCloseVideo = () => { handleCloseVideo = () => {
@ -534,7 +521,7 @@ class Video extends React.PureComponent {
} }
render () { render () {
const { preview, src, inline, onOpenVideo, onCloseVideo, intl, alt, detailed, sensitive, link, editable, blurhash } = this.props; const { preview, src, inline, onOpenVideo, onCloseVideo, intl, alt, detailed, sensitive, editable, blurhash } = this.props;
const { containerWidth, currentTime, duration, volume, buffer, dragging, paused, fullscreen, hovered, muted, revealed } = this.state; const { containerWidth, currentTime, duration, volume, buffer, dragging, paused, fullscreen, hovered, muted, revealed } = this.state;
const progress = Math.min((currentTime / duration) * 100, 100); const progress = Math.min((currentTime / duration) * 100, 100);
const playerStyle = {}; const playerStyle = {};
@ -648,8 +635,6 @@ class Video extends React.PureComponent {
<span className='video-player__time-total'>{formatTime(Math.floor(duration))}</span> <span className='video-player__time-total'>{formatTime(Math.floor(duration))}</span>
</span> </span>
)} )}
{link && <span className='video-player__link'>{link}</span>}
</div> </div>
<div className='video-player__buttons right'> <div className='video-player__buttons right'>

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "نتائج البحث", "emoji_button.search_results": "نتائج البحث",
"emoji_button.symbols": "رموز", "emoji_button.symbols": "رموز",
"emoji_button.travel": "الأماكن والسفر", "emoji_button.travel": "الأماكن والسفر",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "ليس هناك تبويقات!", "empty_column.account_timeline": "ليس هناك تبويقات!",
"empty_column.account_unavailable": "الملف التعريفي غير متوفر", "empty_column.account_unavailable": "الملف التعريفي غير متوفر",
"empty_column.blocks": "لم تقم بحظر أي مستخدِم بعد.", "empty_column.blocks": "لم تقم بحظر أي مستخدِم بعد.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "التالي", "lightbox.next": "التالي",
"lightbox.previous": "العودة", "lightbox.previous": "العودة",
"lightbox.view_context": "اعرض السياق",
"lists.account.add": "أضف إلى القائمة", "lists.account.add": "أضف إلى القائمة",
"lists.account.remove": "احذف من القائمة", "lists.account.remove": "احذف من القائمة",
"lists.delete": "احذف القائمة", "lists.delete": "احذف القائمة",
@ -266,9 +266,9 @@
"lists.edit.submit": "تعديل العنوان", "lists.edit.submit": "تعديل العنوان",
"lists.new.create": "إنشاء قائمة", "lists.new.create": "إنشاء قائمة",
"lists.new.title_placeholder": "عنوان القائمة الجديدة", "lists.new.title_placeholder": "عنوان القائمة الجديدة",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "إبحث في قائمة الحسابات التي تُتابِعها", "lists.search": "إبحث في قائمة الحسابات التي تُتابِعها",
"lists.subheading": "قوائمك", "lists.subheading": "قوائمك",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "الإشارات", "notifications.filter.mentions": "الإشارات",
"notifications.filter.polls": "نتائج استطلاع الرأي", "notifications.filter.polls": "نتائج استطلاع الرأي",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} إشعارات", "notifications.group": "{count} إشعارات",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Search results", "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Símbolos", "emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viaxes y llugares", "emoji_button.travel": "Viaxes y llugares",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "¡Equí nun hai barritos!", "empty_column.account_timeline": "¡Equí nun hai barritos!",
"empty_column.account_unavailable": "Profile unavailable", "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Entá nun bloquiesti a nunengún usuariu.", "empty_column.blocks": "Entá nun bloquiesti a nunengún usuariu.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Siguiente", "lightbox.next": "Siguiente",
"lightbox.previous": "Previous", "lightbox.previous": "Previous",
"lightbox.view_context": "View context",
"lists.account.add": "Amestar a la llista", "lists.account.add": "Amestar a la llista",
"lists.account.remove": "Desaniciar de la llista", "lists.account.remove": "Desaniciar de la llista",
"lists.delete": "Desaniciar la llista", "lists.delete": "Desaniciar la llista",
@ -266,9 +266,9 @@
"lists.edit.submit": "Change title", "lists.edit.submit": "Change title",
"lists.new.create": "Add list", "lists.new.create": "Add list",
"lists.new.title_placeholder": "Títulu nuevu de la llista", "lists.new.title_placeholder": "Títulu nuevu de la llista",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Guetar ente la xente que sigues", "lists.search": "Guetar ente la xente que sigues",
"lists.subheading": "Les tos llistes", "lists.subheading": "Les tos llistes",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Menciones", "notifications.filter.mentions": "Menciones",
"notifications.filter.polls": "Poll results", "notifications.filter.polls": "Poll results",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} avisos", "notifications.group": "{count} avisos",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Search results", "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols", "emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places", "emoji_button.travel": "Travel & Places",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "No toots here!", "empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable", "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.", "empty_column.blocks": "You haven't blocked any users yet.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Next", "lightbox.next": "Next",
"lightbox.previous": "Previous", "lightbox.previous": "Previous",
"lightbox.view_context": "View context",
"lists.account.add": "Add to list", "lists.account.add": "Add to list",
"lists.account.remove": "Remove from list", "lists.account.remove": "Remove from list",
"lists.delete": "Delete list", "lists.delete": "Delete list",
@ -266,9 +266,9 @@
"lists.edit.submit": "Change title", "lists.edit.submit": "Change title",
"lists.new.create": "Add list", "lists.new.create": "Add list",
"lists.new.title_placeholder": "New list title", "lists.new.title_placeholder": "New list title",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among people you follow", "lists.search": "Search among people you follow",
"lists.subheading": "Your lists", "lists.subheading": "Your lists",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Mentions", "notifications.filter.mentions": "Mentions",
"notifications.filter.polls": "Poll results", "notifications.filter.polls": "Poll results",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} notifications", "notifications.group": "{count} notifications",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "খোঁজার ফলাফল", "emoji_button.search_results": "খোঁজার ফলাফল",
"emoji_button.symbols": "প্রতীক", "emoji_button.symbols": "প্রতীক",
"emoji_button.travel": "ভ্রমণ এবং স্থান", "emoji_button.travel": "ভ্রমণ এবং স্থান",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "এখানে কোনো টুট নেই!", "empty_column.account_timeline": "এখানে কোনো টুট নেই!",
"empty_column.account_unavailable": "নিজস্ব পাতা নেই", "empty_column.account_unavailable": "নিজস্ব পাতা নেই",
"empty_column.blocks": "আপনি কোনো ব্যবহারকারীদের ব্লক করেন নি।", "empty_column.blocks": "আপনি কোনো ব্যবহারকারীদের ব্লক করেন নি।",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "পরবর্তী", "lightbox.next": "পরবর্তী",
"lightbox.previous": "পূর্ববর্তী", "lightbox.previous": "পূর্ববর্তী",
"lightbox.view_context": "প্রসঙ্গটি দেখতে",
"lists.account.add": "তালিকাতে যুক্ত করতে", "lists.account.add": "তালিকাতে যুক্ত করতে",
"lists.account.remove": "তালিকা থেকে বাদ দিতে", "lists.account.remove": "তালিকা থেকে বাদ দিতে",
"lists.delete": "তালিকা মুছে ফেলতে", "lists.delete": "তালিকা মুছে ফেলতে",
@ -266,9 +266,9 @@
"lists.edit.submit": "শিরোনাম সম্পাদনা করতে", "lists.edit.submit": "শিরোনাম সম্পাদনা করতে",
"lists.new.create": "তালিকাতে যুক্ত করতে", "lists.new.create": "তালিকাতে যুক্ত করতে",
"lists.new.title_placeholder": "তালিকার নতুন শিরোনাম দিতে", "lists.new.title_placeholder": "তালিকার নতুন শিরোনাম দিতে",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "যাদের অনুসরণ করেন তাদের ভেতরে খুঁজুন", "lists.search": "যাদের অনুসরণ করেন তাদের ভেতরে খুঁজুন",
"lists.subheading": "আপনার তালিকা", "lists.subheading": "আপনার তালিকা",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "উল্লেখিত", "notifications.filter.mentions": "উল্লেখিত",
"notifications.filter.polls": "নির্বাচনের ফলাফল", "notifications.filter.polls": "নির্বাচনের ফলাফল",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} প্রজ্ঞাপন", "notifications.group": "{count} প্রজ্ঞাপন",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Disoc'hoù an enklask", "emoji_button.search_results": "Disoc'hoù an enklask",
"emoji_button.symbols": "Arouezioù", "emoji_button.symbols": "Arouezioù",
"emoji_button.travel": "Lec'hioù ha Beajoù", "emoji_button.travel": "Lec'hioù ha Beajoù",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "Toud ebet amañ!", "empty_column.account_timeline": "Toud ebet amañ!",
"empty_column.account_unavailable": "Profil dihegerz", "empty_column.account_unavailable": "Profil dihegerz",
"empty_column.blocks": "N'eus ket bet berzet implijer·ez ganeoc'h c'hoazh.", "empty_column.blocks": "N'eus ket bet berzet implijer·ez ganeoc'h c'hoazh.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Da-heul", "lightbox.next": "Da-heul",
"lightbox.previous": "A-raok", "lightbox.previous": "A-raok",
"lightbox.view_context": "Diskouez ar c'hemperzh",
"lists.account.add": "Ouzhpennañ d'al listenn", "lists.account.add": "Ouzhpennañ d'al listenn",
"lists.account.remove": "Lemel kuit eus al listenn", "lists.account.remove": "Lemel kuit eus al listenn",
"lists.delete": "Dilemel al listenn", "lists.delete": "Dilemel al listenn",
@ -266,9 +266,9 @@
"lists.edit.submit": "Cheñch an titl", "lists.edit.submit": "Cheñch an titl",
"lists.new.create": "Ouzhpennañ ul listenn", "lists.new.create": "Ouzhpennañ ul listenn",
"lists.new.title_placeholder": "Titl nevez al listenn", "lists.new.title_placeholder": "Titl nevez al listenn",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among people you follow", "lists.search": "Search among people you follow",
"lists.subheading": "Ho listennoù", "lists.subheading": "Ho listennoù",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Menegoù", "notifications.filter.mentions": "Menegoù",
"notifications.filter.polls": "Disoc'hoù ar sontadegoù", "notifications.filter.polls": "Disoc'hoù ar sontadegoù",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} a gemennoù", "notifications.group": "{count} a gemennoù",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Resultats de la cerca", "emoji_button.search_results": "Resultats de la cerca",
"emoji_button.symbols": "Símbols", "emoji_button.symbols": "Símbols",
"emoji_button.travel": "Viatges i Llocs", "emoji_button.travel": "Viatges i Llocs",
"empty_column.account_suspended": "Compte suspès",
"empty_column.account_timeline": "No hi ha tuts aquí!", "empty_column.account_timeline": "No hi ha tuts aquí!",
"empty_column.account_unavailable": "Perfil no disponible", "empty_column.account_unavailable": "Perfil no disponible",
"empty_column.blocks": "Encara no has bloquejat cap usuari.", "empty_column.blocks": "Encara no has bloquejat cap usuari.",
@ -258,7 +259,6 @@
"lightbox.expand": "Amplia el quadre de visualització de limatge", "lightbox.expand": "Amplia el quadre de visualització de limatge",
"lightbox.next": "Següent", "lightbox.next": "Següent",
"lightbox.previous": "Anterior", "lightbox.previous": "Anterior",
"lightbox.view_context": "Veure el context",
"lists.account.add": "Afegir a la llista", "lists.account.add": "Afegir a la llista",
"lists.account.remove": "Treure de la llista", "lists.account.remove": "Treure de la llista",
"lists.delete": "Esborrar llista", "lists.delete": "Esborrar llista",
@ -266,9 +266,9 @@
"lists.edit.submit": "Canvi de títol", "lists.edit.submit": "Canvi de títol",
"lists.new.create": "Afegir llista", "lists.new.create": "Afegir llista",
"lists.new.title_placeholder": "Nova llista", "lists.new.title_placeholder": "Nova llista",
"lists.replies_policy.all_replies": "Qualsevol usuari seguit", "lists.replies_policy.followed": "Qualsevol usuari seguit",
"lists.replies_policy.list_replies": "Membres de la llista", "lists.replies_policy.list": "Membres de la llista",
"lists.replies_policy.no_replies": "Ningú", "lists.replies_policy.none": "Ningú",
"lists.replies_policy.title": "Mostra respostes a:", "lists.replies_policy.title": "Mostra respostes a:",
"lists.search": "Cercar entre les persones que segueixes", "lists.search": "Cercar entre les persones que segueixes",
"lists.subheading": "Les teves llistes", "lists.subheading": "Les teves llistes",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Mencions", "notifications.filter.mentions": "Mencions",
"notifications.filter.polls": "Resultats de l'enquesta", "notifications.filter.polls": "Resultats de l'enquesta",
"notifications.filter.statuses": "Actualitzacions de gent que segueixes", "notifications.filter.statuses": "Actualitzacions de gent que segueixes",
"notifications.grant_permission": "Concedir permís.",
"notifications.group": "{count} notificacions", "notifications.group": "{count} notificacions",
"notifications.mark_as_read": "Marca cada notificació com a llegida", "notifications.mark_as_read": "Marca cada notificació com a llegida",
"notifications.permission_denied": "No sha pogut activar les notificacions descriptori perquè sha denegat el permís.", "notifications.permission_denied": "No sha pogut activar les notificacions descriptori perquè sha denegat el permís.",
"notifications.permission_denied_alert": "No es poden activar les notificacions del escriptori perquè el permís del navegador ha estat denegat abans", "notifications.permission_denied_alert": "No es poden activar les notificacions del escriptori perquè el permís del navegador ha estat denegat abans",
"notifications.permission_required": "Les notificacions d'escriptori no estan disponibles perquè el permís requerit no ha estat concedit.",
"notifications_permission_banner.enable": "Activar les notificacions descriptori", "notifications_permission_banner.enable": "Activar les notificacions descriptori",
"notifications_permission_banner.how_to_control": "Per a rebre notificacions quan Mastodon no està obert cal activar les notificacions descriptori. Pots controlar amb precisió quins tipus dinteraccions generen notificacions descriptori després dactivar el botó {icon} de dalt.", "notifications_permission_banner.how_to_control": "Per a rebre notificacions quan Mastodon no està obert cal activar les notificacions descriptori. Pots controlar amb precisió quins tipus dinteraccions generen notificacions descriptori després dactivar el botó {icon} de dalt.",
"notifications_permission_banner.title": "Mai et perdis res", "notifications_permission_banner.title": "Mai et perdis res",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Risultati di a cerca", "emoji_button.search_results": "Risultati di a cerca",
"emoji_button.symbols": "Simbuli", "emoji_button.symbols": "Simbuli",
"emoji_button.travel": "Lochi è Viaghju", "emoji_button.travel": "Lochi è Viaghju",
"empty_column.account_suspended": "Contu suspesu",
"empty_column.account_timeline": "Nisun statutu quì!", "empty_column.account_timeline": "Nisun statutu quì!",
"empty_column.account_unavailable": "Prufile micca dispunibule", "empty_column.account_unavailable": "Prufile micca dispunibule",
"empty_column.blocks": "Per avà ùn avete bluccatu manc'un utilizatore.", "empty_column.blocks": "Per avà ùn avete bluccatu manc'un utilizatore.",
@ -258,7 +259,6 @@
"lightbox.expand": "Ingrandà a finestra d'affissera di i ritratti", "lightbox.expand": "Ingrandà a finestra d'affissera di i ritratti",
"lightbox.next": "Siguente", "lightbox.next": "Siguente",
"lightbox.previous": "Pricidente", "lightbox.previous": "Pricidente",
"lightbox.view_context": "Vede u cuntestu",
"lists.account.add": "Aghjunghje à a lista", "lists.account.add": "Aghjunghje à a lista",
"lists.account.remove": "Toglie di a lista", "lists.account.remove": "Toglie di a lista",
"lists.delete": "Toglie a lista", "lists.delete": "Toglie a lista",
@ -266,9 +266,9 @@
"lists.edit.submit": "Cambià u titulu", "lists.edit.submit": "Cambià u titulu",
"lists.new.create": "Aghjunghje", "lists.new.create": "Aghjunghje",
"lists.new.title_placeholder": "Titulu di a lista", "lists.new.title_placeholder": "Titulu di a lista",
"lists.replies_policy.all_replies": "Tutti i vostri abbunamenti", "lists.replies_policy.followed": "Tutti i vostri abbunamenti",
"lists.replies_policy.list_replies": "Membri di a lista", "lists.replies_policy.list": "Membri di a lista",
"lists.replies_policy.no_replies": "Nisunu", "lists.replies_policy.none": "Nimu",
"lists.replies_policy.title": "Vede e risposte à:", "lists.replies_policy.title": "Vede e risposte à:",
"lists.search": "Circà indè i vostr'abbunamenti", "lists.search": "Circà indè i vostr'abbunamenti",
"lists.subheading": "E vo liste", "lists.subheading": "E vo liste",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Minzione", "notifications.filter.mentions": "Minzione",
"notifications.filter.polls": "Risultati di u scandagliu", "notifications.filter.polls": "Risultati di u scandagliu",
"notifications.filter.statuses": "Messe à ghjornu di e persone chì siguitate", "notifications.filter.statuses": "Messe à ghjornu di e persone chì siguitate",
"notifications.grant_permission": "Auturizà.",
"notifications.group": "{count} nutificazione", "notifications.group": "{count} nutificazione",
"notifications.mark_as_read": "Marcà tutte e nutificazione cum'è lette", "notifications.mark_as_read": "Marcà tutte e nutificazione cum'è lette",
"notifications.permission_denied": "Ùn si po micca attivà e nutificazione desktop perchè a dumanda d'auturizazione hè stata ricusata", "notifications.permission_denied": "Ùn si po micca attivà e nutificazione desktop perchè l'auturizazione hè stata ricusata",
"notifications.permission_denied_alert": "Ùn pudete micca attivà e nutificazione nant'à l'urdinatore, perchè avete digià ricusatu a dumanda d'auturizazione di u navigatore", "notifications.permission_denied_alert": "Ùn pudete micca attivà e nutificazione nant'à l'urdinatore, perchè avete digià ricusatu a dumanda d'auturizazione di u navigatore",
"notifications.permission_required": "Ùn si po micca attivà e nutificazione desktop perchè a l'auturizazione richiesta ùn hè micca stata data.",
"notifications_permission_banner.enable": "Attivà e nutificazione nant'à l'urdinatore", "notifications_permission_banner.enable": "Attivà e nutificazione nant'à l'urdinatore",
"notifications_permission_banner.how_to_control": "Per riceve nutificazione quandu Mastodon ùn hè micca aperta, attivate e nutificazione nant'à l'urdinatore. Pudete decide quali tippi d'interazione anu da mandà ste nutificazione cù u buttone {icon} quì sopra quandu saranu attivate.", "notifications_permission_banner.how_to_control": "Per riceve nutificazione quandu Mastodon ùn hè micca aperta, attivate e nutificazione nant'à l'urdinatore. Pudete decide quali tippi d'interazione anu da mandà ste nutificazione cù u buttone {icon} quì sopra quandu saranu attivate.",
"notifications_permission_banner.title": "Ùn mancate mai nunda", "notifications_permission_banner.title": "Ùn mancate mai nunda",

View File

@ -1,5 +1,5 @@
{ {
"account.account_note_header": "Note", "account.account_note_header": "Poznámka",
"account.add_or_remove_from_list": "Přidat nebo odstranit ze seznamů", "account.add_or_remove_from_list": "Přidat nebo odstranit ze seznamů",
"account.badges.bot": "Robot", "account.badges.bot": "Robot",
"account.badges.group": "Skupina", "account.badges.group": "Skupina",
@ -12,12 +12,12 @@
"account.disable_notifications": "Stop notifying me when @{name} posts", "account.disable_notifications": "Stop notifying me when @{name} posts",
"account.domain_blocked": "Doména skryta", "account.domain_blocked": "Doména skryta",
"account.edit_profile": "Upravit profil", "account.edit_profile": "Upravit profil",
"account.enable_notifications": "Notify me when @{name} posts", "account.enable_notifications": "Oznámit mě na příspěvky @{name}",
"account.endorse": "Zvýraznit na profilu", "account.endorse": "Zvýraznit na profilu",
"account.follow": "Sledovat", "account.follow": "Sledovat",
"account.followers": "Sledující", "account.followers": "Sledující",
"account.followers.empty": "Tohoto uživatele ještě nikdo nesleduje.", "account.followers.empty": "Tohoto uživatele ještě nikdo nesleduje.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", "account.followers_counter": "{count, plural, one {{counter} sledující} few {{counter} sledující} many {{counter} sledujících} other {{counter} sledujících}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Tento uživatel ještě nikoho nesleduje.", "account.follows.empty": "Tento uživatel ještě nikoho nesleduje.",
"account.follows_you": "Sleduje vás", "account.follows_you": "Sleduje vás",
@ -149,6 +149,7 @@
"emoji_button.search_results": "Výsledky hledání", "emoji_button.search_results": "Výsledky hledání",
"emoji_button.symbols": "Symboly", "emoji_button.symbols": "Symboly",
"emoji_button.travel": "Cestování a místa", "emoji_button.travel": "Cestování a místa",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "Nejsou tu žádné tooty!", "empty_column.account_timeline": "Nejsou tu žádné tooty!",
"empty_column.account_unavailable": "Profil nedostupný", "empty_column.account_unavailable": "Profil nedostupný",
"empty_column.blocks": "Ještě jste nezablokovali žádného uživatele.", "empty_column.blocks": "Ještě jste nezablokovali žádného uživatele.",
@ -176,7 +177,7 @@
"follow_request.authorize": "Autorizovat", "follow_request.authorize": "Autorizovat",
"follow_request.reject": "Odmítnout", "follow_request.reject": "Odmítnout",
"follow_requests.unlocked_explanation": "Přestože váš účet není uzamčen, {domain} si myslí, že budete chtít následující požadavky na sledování zkontrolovat ručně.", "follow_requests.unlocked_explanation": "Přestože váš účet není uzamčen, {domain} si myslí, že budete chtít následující požadavky na sledování zkontrolovat ručně.",
"generic.saved": "Saved", "generic.saved": "Uloženo",
"getting_started.developers": "Vývojáři", "getting_started.developers": "Vývojáři",
"getting_started.directory": "Adresář profilů", "getting_started.directory": "Adresář profilů",
"getting_started.documentation": "Dokumentace", "getting_started.documentation": "Dokumentace",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Další", "lightbox.next": "Další",
"lightbox.previous": "Předchozí", "lightbox.previous": "Předchozí",
"lightbox.view_context": "Zobrazit kontext",
"lists.account.add": "Přidat do seznamu", "lists.account.add": "Přidat do seznamu",
"lists.account.remove": "Odebrat ze seznamu", "lists.account.remove": "Odebrat ze seznamu",
"lists.delete": "Smazat seznam", "lists.delete": "Smazat seznam",
@ -266,9 +266,9 @@
"lists.edit.submit": "Změnit název", "lists.edit.submit": "Změnit název",
"lists.new.create": "Přidat seznam", "lists.new.create": "Přidat seznam",
"lists.new.title_placeholder": "Název nového seznamu", "lists.new.title_placeholder": "Název nového seznamu",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Hledejte mezi lidmi, které sledujete", "lists.search": "Hledejte mezi lidmi, které sledujete",
"lists.subheading": "Vaše seznamy", "lists.subheading": "Vaše seznamy",
@ -326,18 +326,20 @@
"notifications.column_settings.reblog": "Boosty:", "notifications.column_settings.reblog": "Boosty:",
"notifications.column_settings.show": "Zobrazit ve sloupci", "notifications.column_settings.show": "Zobrazit ve sloupci",
"notifications.column_settings.sound": "Přehrát zvuk", "notifications.column_settings.sound": "Přehrát zvuk",
"notifications.column_settings.status": "New toots:", "notifications.column_settings.status": "Nové tooty:",
"notifications.filter.all": "Vše", "notifications.filter.all": "Vše",
"notifications.filter.boosts": "Boosty", "notifications.filter.boosts": "Boosty",
"notifications.filter.favourites": "Oblíbení", "notifications.filter.favourites": "Oblíbení",
"notifications.filter.follows": "Sledování", "notifications.filter.follows": "Sledování",
"notifications.filter.mentions": "Zmínky", "notifications.filter.mentions": "Zmínky",
"notifications.filter.polls": "Výsledky anket", "notifications.filter.polls": "Výsledky anket",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Aktuality od lidí, které sledujete",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} oznámení", "notifications.group": "{count} oznámení",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",
@ -458,7 +460,7 @@
"upload_form.audio_description": "Popis pro sluchově postižené", "upload_form.audio_description": "Popis pro sluchově postižené",
"upload_form.description": "Popis pro zrakově postižené", "upload_form.description": "Popis pro zrakově postižené",
"upload_form.edit": "Upravit", "upload_form.edit": "Upravit",
"upload_form.thumbnail": "Change thumbnail", "upload_form.thumbnail": "Změnit miniaturu",
"upload_form.undo": "Smazat", "upload_form.undo": "Smazat",
"upload_form.video_description": "Popis pro sluchově či zrakově postižené", "upload_form.video_description": "Popis pro sluchově či zrakově postižené",
"upload_modal.analyzing_picture": "Analyzuji obrázek…", "upload_modal.analyzing_picture": "Analyzuji obrázek…",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Canlyniadau chwilio", "emoji_button.search_results": "Canlyniadau chwilio",
"emoji_button.symbols": "Symbolau", "emoji_button.symbols": "Symbolau",
"emoji_button.travel": "Teithio & Llefydd", "emoji_button.travel": "Teithio & Llefydd",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "Dim tŵtiau fama!", "empty_column.account_timeline": "Dim tŵtiau fama!",
"empty_column.account_unavailable": "Proffil ddim ar gael", "empty_column.account_unavailable": "Proffil ddim ar gael",
"empty_column.blocks": "Nid ydych wedi blocio unrhyw ddefnyddwyr eto.", "empty_column.blocks": "Nid ydych wedi blocio unrhyw ddefnyddwyr eto.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Nesaf", "lightbox.next": "Nesaf",
"lightbox.previous": "Blaenorol", "lightbox.previous": "Blaenorol",
"lightbox.view_context": "Gweld cyd-destyn",
"lists.account.add": "Ychwanegwch at restr", "lists.account.add": "Ychwanegwch at restr",
"lists.account.remove": "Dileu o'r rhestr", "lists.account.remove": "Dileu o'r rhestr",
"lists.delete": "Dileu rhestr", "lists.delete": "Dileu rhestr",
@ -266,9 +266,9 @@
"lists.edit.submit": "Newid teitl", "lists.edit.submit": "Newid teitl",
"lists.new.create": "Ychwanegu rhestr", "lists.new.create": "Ychwanegu rhestr",
"lists.new.title_placeholder": "Teitl rhestr newydd", "lists.new.title_placeholder": "Teitl rhestr newydd",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Chwilio ymysg pobl yr ydych yn ei ddilyn", "lists.search": "Chwilio ymysg pobl yr ydych yn ei ddilyn",
"lists.subheading": "Eich rhestrau", "lists.subheading": "Eich rhestrau",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Crybwylliadau", "notifications.filter.mentions": "Crybwylliadau",
"notifications.filter.polls": "Canlyniadau pleidlais", "notifications.filter.polls": "Canlyniadau pleidlais",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} o hysbysiadau", "notifications.group": "{count} o hysbysiadau",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Søgeresultater", "emoji_button.search_results": "Søgeresultater",
"emoji_button.symbols": "Symboler", "emoji_button.symbols": "Symboler",
"emoji_button.travel": "Rejser & steder", "emoji_button.travel": "Rejser & steder",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "Ingen bidrag her!", "empty_column.account_timeline": "Ingen bidrag her!",
"empty_column.account_unavailable": "Profil utilgængelig", "empty_column.account_unavailable": "Profil utilgængelig",
"empty_column.blocks": "Du har ikke blokeret nogen endnu.", "empty_column.blocks": "Du har ikke blokeret nogen endnu.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Næste", "lightbox.next": "Næste",
"lightbox.previous": "Forrige", "lightbox.previous": "Forrige",
"lightbox.view_context": "Vis kontekst",
"lists.account.add": "Tilføj til liste", "lists.account.add": "Tilføj til liste",
"lists.account.remove": "Fjern fra liste", "lists.account.remove": "Fjern fra liste",
"lists.delete": "Slet liste", "lists.delete": "Slet liste",
@ -266,9 +266,9 @@
"lists.edit.submit": "Skift titel", "lists.edit.submit": "Skift titel",
"lists.new.create": "Tilføj liste", "lists.new.create": "Tilføj liste",
"lists.new.title_placeholder": "Ny liste titel", "lists.new.title_placeholder": "Ny liste titel",
"lists.replies_policy.all_replies": "Enhver fulgt bruger", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Medlemmer af listen", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "Ingen", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Vis svar til:", "lists.replies_policy.title": "Vis svar til:",
"lists.search": "Søg iblandt folk du følger", "lists.search": "Søg iblandt folk du følger",
"lists.subheading": "Dine lister", "lists.subheading": "Dine lister",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Statusser der nævner dig", "notifications.filter.mentions": "Statusser der nævner dig",
"notifications.filter.polls": "Afstemningsresultat", "notifications.filter.polls": "Afstemningsresultat",
"notifications.filter.statuses": "Opdateringer fra personer, du følger", "notifications.filter.statuses": "Opdateringer fra personer, du følger",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} notifikationer", "notifications.group": "{count} notifikationer",
"notifications.mark_as_read": "Markér alle notifikationer som læst", "notifications.mark_as_read": "Markér alle notifikationer som læst",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Aktivér skrivebordsmeddelelser", "notifications_permission_banner.enable": "Aktivér skrivebordsmeddelelser",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Gå aldrig glip af noget", "notifications_permission_banner.title": "Gå aldrig glip af noget",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Suchergebnisse", "emoji_button.search_results": "Suchergebnisse",
"emoji_button.symbols": "Symbole", "emoji_button.symbols": "Symbole",
"emoji_button.travel": "Reisen und Orte", "emoji_button.travel": "Reisen und Orte",
"empty_column.account_suspended": "Konto gesperrt",
"empty_column.account_timeline": "Keine Beiträge!", "empty_column.account_timeline": "Keine Beiträge!",
"empty_column.account_unavailable": "Konto nicht verfügbar", "empty_column.account_unavailable": "Konto nicht verfügbar",
"empty_column.blocks": "Du hast keine Profile blockiert.", "empty_column.blocks": "Du hast keine Profile blockiert.",
@ -258,7 +259,6 @@
"lightbox.expand": "Bildansicht erweitern", "lightbox.expand": "Bildansicht erweitern",
"lightbox.next": "Weiter", "lightbox.next": "Weiter",
"lightbox.previous": "Zurück", "lightbox.previous": "Zurück",
"lightbox.view_context": "Beitrag sehen",
"lists.account.add": "Zur Liste hinzufügen", "lists.account.add": "Zur Liste hinzufügen",
"lists.account.remove": "Von der Liste entfernen", "lists.account.remove": "Von der Liste entfernen",
"lists.delete": "Liste löschen", "lists.delete": "Liste löschen",
@ -266,9 +266,9 @@
"lists.edit.submit": "Titel ändern", "lists.edit.submit": "Titel ändern",
"lists.new.create": "Liste hinzufügen", "lists.new.create": "Liste hinzufügen",
"lists.new.title_placeholder": "Neuer Titel der Liste", "lists.new.title_placeholder": "Neuer Titel der Liste",
"lists.replies_policy.all_replies": "Jeder gefolgte Benutzer", "lists.replies_policy.followed": "Jeder gefolgte Benutzer",
"lists.replies_policy.list_replies": "Mitglieder der Liste", "lists.replies_policy.list": "Mitglieder der Liste",
"lists.replies_policy.no_replies": "Niemand", "lists.replies_policy.none": "Niemand",
"lists.replies_policy.title": "Antworten anzeigen für:", "lists.replies_policy.title": "Antworten anzeigen für:",
"lists.search": "Suche nach Leuten denen du folgst", "lists.search": "Suche nach Leuten denen du folgst",
"lists.subheading": "Deine Listen", "lists.subheading": "Deine Listen",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Erwähnungen", "notifications.filter.mentions": "Erwähnungen",
"notifications.filter.polls": "Ergebnisse der Umfrage", "notifications.filter.polls": "Ergebnisse der Umfrage",
"notifications.filter.statuses": "Updates von Personen, denen du folgst", "notifications.filter.statuses": "Updates von Personen, denen du folgst",
"notifications.grant_permission": "Zugriff gewährt.",
"notifications.group": "{count} Benachrichtigungen", "notifications.group": "{count} Benachrichtigungen",
"notifications.mark_as_read": "Alle Benachrichtigungen als gelesen markieren", "notifications.mark_as_read": "Alle Benachrichtigungen als gelesen markieren",
"notifications.permission_denied": "Desktop-Benachrichtigungen können nicht aktiviert werden, da die Berechtigung verweigert wurde.", "notifications.permission_denied": "Desktop-Benachrichtigungen können nicht aktiviert werden, da die Berechtigung verweigert wurde.",
"notifications.permission_denied_alert": "Desktop-Benachrichtigungen können nicht aktiviert werden, da die Browser-Berechtigung zuvor verweigert wurde", "notifications.permission_denied_alert": "Desktop-Benachrichtigungen können nicht aktiviert werden, da die Browser-Berechtigung zuvor verweigert wurde",
"notifications.permission_required": "Desktop-Benachrichtigungen sind nicht verfügbar, da die erforderliche Berechtigung nicht erteilt wurde.",
"notifications_permission_banner.enable": "Aktiviere Desktop-Benachrichtigungen", "notifications_permission_banner.enable": "Aktiviere Desktop-Benachrichtigungen",
"notifications_permission_banner.how_to_control": "Um Benachrichtigungen zu erhalten, wenn Mastodon nicht geöffnet ist, aktiviere die Desktop-Benachrichtigungen. Du kannst genau bestimmen, welche Arten von Interaktionen Desktop-Benachrichtigungen über die {icon} -Taste erzeugen, sobald diese aktiviert sind.", "notifications_permission_banner.how_to_control": "Um Benachrichtigungen zu erhalten, wenn Mastodon nicht geöffnet ist, aktiviere die Desktop-Benachrichtigungen. Du kannst genau bestimmen, welche Arten von Interaktionen Desktop-Benachrichtigungen über die {icon} -Taste erzeugen, sobald diese aktiviert sind.",
"notifications_permission_banner.title": "Verpasse nie etwas", "notifications_permission_banner.title": "Verpasse nie etwas",
@ -379,7 +381,7 @@
"search_popout.search_format": "Fortgeschrittenes Suchformat", "search_popout.search_format": "Fortgeschrittenes Suchformat",
"search_popout.tips.full_text": "Einfache Texteingabe gibt Beiträge, die du geschrieben, favorisiert und geteilt hast zurück. Außerdem auch Beiträge in denen du erwähnt wurdest, aber auch passende Nutzernamen, Anzeigenamen oder Hashtags.", "search_popout.tips.full_text": "Einfache Texteingabe gibt Beiträge, die du geschrieben, favorisiert und geteilt hast zurück. Außerdem auch Beiträge in denen du erwähnt wurdest, aber auch passende Nutzernamen, Anzeigenamen oder Hashtags.",
"search_popout.tips.hashtag": "Hashtag", "search_popout.tips.hashtag": "Hashtag",
"search_popout.tips.status": "Beitrag", "search_popout.tips.status": "Tröt",
"search_popout.tips.text": "Einfache Texteingabe gibt Anzeigenamen, Benutzernamen und Hashtags zurück", "search_popout.tips.text": "Einfache Texteingabe gibt Anzeigenamen, Benutzernamen und Hashtags zurück",
"search_popout.tips.user": "Nutzer", "search_popout.tips.user": "Nutzer",
"search_results.accounts": "Personen", "search_results.accounts": "Personen",

View File

@ -652,6 +652,10 @@
}, },
{ {
"descriptors": [ "descriptors": [
{
"defaultMessage": "Account suspended",
"id": "empty_column.account_suspended"
},
{ {
"defaultMessage": "Profile unavailable", "defaultMessage": "Profile unavailable",
"id": "empty_column.account_unavailable" "id": "empty_column.account_unavailable"
@ -712,6 +716,10 @@
"defaultMessage": "Older toots", "defaultMessage": "Older toots",
"id": "timeline_hint.resources.statuses" "id": "timeline_hint.resources.statuses"
}, },
{
"defaultMessage": "Account suspended",
"id": "empty_column.account_suspended"
},
{ {
"defaultMessage": "Profile unavailable", "defaultMessage": "Profile unavailable",
"id": "empty_column.account_unavailable" "id": "empty_column.account_unavailable"
@ -2161,15 +2169,15 @@
}, },
{ {
"defaultMessage": "Any followed user", "defaultMessage": "Any followed user",
"id": "lists.replies_policy.all_replies" "id": "lists.replies_policy.followed"
}, },
{ {
"defaultMessage": "No one", "defaultMessage": "No one",
"id": "lists.replies_policy.no_replies" "id": "lists.replies_policy.none"
}, },
{ {
"defaultMessage": "Members of the list", "defaultMessage": "Members of the list",
"id": "lists.replies_policy.list_replies" "id": "lists.replies_policy.list"
}, },
{ {
"defaultMessage": "Edit list", "defaultMessage": "Edit list",
@ -2272,6 +2280,10 @@
"defaultMessage": "Desktop notifications are unavailable due to previously denied browser permissions request", "defaultMessage": "Desktop notifications are unavailable due to previously denied browser permissions request",
"id": "notifications.permission_denied" "id": "notifications.permission_denied"
}, },
{
"defaultMessage": "Desktop notifications are unavailable because the required permission has not been granted.",
"id": "notifications.permission_required"
},
{ {
"defaultMessage": "Quick filter bar", "defaultMessage": "Quick filter bar",
"id": "notifications.column_settings.filter_bar.category" "id": "notifications.column_settings.filter_bar.category"
@ -2353,6 +2365,15 @@
], ],
"path": "app/javascript/mastodon/features/notifications/components/follow_request.json" "path": "app/javascript/mastodon/features/notifications/components/follow_request.json"
}, },
{
"descriptors": [
{
"defaultMessage": "Grant permission.",
"id": "notifications.grant_permission"
}
],
"path": "app/javascript/mastodon/features/notifications/components/grant_permission_button.json"
},
{ {
"descriptors": [ "descriptors": [
{ {
@ -2388,6 +2409,10 @@
}, },
{ {
"descriptors": [ "descriptors": [
{
"defaultMessage": "Close",
"id": "lightbox.close"
},
{ {
"defaultMessage": "Never miss a thing", "defaultMessage": "Never miss a thing",
"id": "notifications_permission_banner.title" "id": "notifications_permission_banner.title"
@ -2474,10 +2499,23 @@
{ {
"defaultMessage": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "defaultMessage": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
"id": "confirmations.reply.message" "id": "confirmations.reply.message"
},
{
"defaultMessage": "Expand this status",
"id": "status.open"
} }
], ],
"path": "app/javascript/mastodon/features/picture_in_picture/components/footer.json" "path": "app/javascript/mastodon/features/picture_in_picture/components/footer.json"
}, },
{
"descriptors": [
{
"defaultMessage": "Close",
"id": "lightbox.close"
}
],
"path": "app/javascript/mastodon/features/picture_in_picture/components/header.json"
},
{ {
"descriptors": [ "descriptors": [
{ {
@ -2751,15 +2789,6 @@
], ],
"path": "app/javascript/mastodon/features/status/index.json" "path": "app/javascript/mastodon/features/status/index.json"
}, },
{
"descriptors": [
{
"defaultMessage": "View context",
"id": "lightbox.view_context"
}
],
"path": "app/javascript/mastodon/features/ui/components/audio_modal.json"
},
{ {
"descriptors": [ "descriptors": [
{ {
@ -3023,10 +3052,6 @@
{ {
"defaultMessage": "Next", "defaultMessage": "Next",
"id": "lightbox.next" "id": "lightbox.next"
},
{
"defaultMessage": "View context",
"id": "lightbox.view_context"
} }
], ],
"path": "app/javascript/mastodon/features/ui/components/media_modal.json" "path": "app/javascript/mastodon/features/ui/components/media_modal.json"
@ -3192,15 +3217,6 @@
], ],
"path": "app/javascript/mastodon/features/ui/components/upload_area.json" "path": "app/javascript/mastodon/features/ui/components/upload_area.json"
}, },
{
"descriptors": [
{
"defaultMessage": "View context",
"id": "lightbox.view_context"
}
],
"path": "app/javascript/mastodon/features/ui/components/video_modal.json"
},
{ {
"descriptors": [ "descriptors": [
{ {

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Αποτελέσματα αναζήτησης", "emoji_button.search_results": "Αποτελέσματα αναζήτησης",
"emoji_button.symbols": "Σύμβολα", "emoji_button.symbols": "Σύμβολα",
"emoji_button.travel": "Ταξίδια & Τοποθεσίες", "emoji_button.travel": "Ταξίδια & Τοποθεσίες",
"empty_column.account_suspended": "Λογαριασμός σε αναστολή",
"empty_column.account_timeline": "Δεν έχει τουτ εδώ!", "empty_column.account_timeline": "Δεν έχει τουτ εδώ!",
"empty_column.account_unavailable": "Μη διαθέσιμο προφίλ", "empty_column.account_unavailable": "Μη διαθέσιμο προφίλ",
"empty_column.blocks": "Δεν έχεις αποκλείσει κανέναν χρήστη ακόμα.", "empty_column.blocks": "Δεν έχεις αποκλείσει κανέναν χρήστη ακόμα.",
@ -258,7 +259,6 @@
"lightbox.expand": "Ανάπτυξη πλαισίου εμφάνισης εικόνας", "lightbox.expand": "Ανάπτυξη πλαισίου εμφάνισης εικόνας",
"lightbox.next": "Επόμενο", "lightbox.next": "Επόμενο",
"lightbox.previous": "Προηγούμενο", "lightbox.previous": "Προηγούμενο",
"lightbox.view_context": "Εμφάνιση πλαισίου",
"lists.account.add": "Πρόσθεσε στη λίστα", "lists.account.add": "Πρόσθεσε στη λίστα",
"lists.account.remove": "Βγάλε από τη λίστα", "lists.account.remove": "Βγάλε από τη λίστα",
"lists.delete": "Διαγραφή λίστας", "lists.delete": "Διαγραφή λίστας",
@ -266,9 +266,9 @@
"lists.edit.submit": "Αλλαγή τίτλου", "lists.edit.submit": "Αλλαγή τίτλου",
"lists.new.create": "Προσθήκη λίστας", "lists.new.create": "Προσθήκη λίστας",
"lists.new.title_placeholder": "Τίτλος νέας λίστα", "lists.new.title_placeholder": "Τίτλος νέας λίστα",
"lists.replies_policy.all_replies": "Οποιοσδήποτε χρήστης που ακολουθείς", "lists.replies_policy.followed": "Οποιοσδήποτε χρήστης που ακολουθείς",
"lists.replies_policy.list_replies": "Μέλη της λίστας", "lists.replies_policy.list": "Μέλη της λίστας",
"lists.replies_policy.no_replies": "Κανείς", "lists.replies_policy.none": "Κανένας",
"lists.replies_policy.title": "Εμφάνιση απαντήσεων σε:", "lists.replies_policy.title": "Εμφάνιση απαντήσεων σε:",
"lists.search": "Αναζήτησε μεταξύ των ανθρώπων που ακουλουθείς", "lists.search": "Αναζήτησε μεταξύ των ανθρώπων που ακουλουθείς",
"lists.subheading": "Οι λίστες σου", "lists.subheading": "Οι λίστες σου",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Αναφορές", "notifications.filter.mentions": "Αναφορές",
"notifications.filter.polls": "Αποτελέσματα ψηφοφορίας", "notifications.filter.polls": "Αποτελέσματα ψηφοφορίας",
"notifications.filter.statuses": "Ενημερώσεις από όσους ακολουθείς", "notifications.filter.statuses": "Ενημερώσεις από όσους ακολουθείς",
"notifications.grant_permission": "Χορήγηση άδειας.",
"notifications.group": "{count} ειδοποιήσεις", "notifications.group": "{count} ειδοποιήσεις",
"notifications.mark_as_read": "Σημείωσε όλες τις ειδοποιήσεις ως αναγνωσμένες", "notifications.mark_as_read": "Σημείωσε όλες τις ειδοποιήσεις ως αναγνωσμένες",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Οι ειδοποιήσεις δεν είναι διαθέσιμες επειδή δεν έχει δοθεί η απαιτούμενη άδεια.",
"notifications_permission_banner.enable": "Ενεργοποίηση ειδοποιήσεων επιφάνειας εργασίας", "notifications_permission_banner.enable": "Ενεργοποίηση ειδοποιήσεων επιφάνειας εργασίας",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Μη χάσετε τίποτα", "notifications_permission_banner.title": "Μη χάσετε τίποτα",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Search results", "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols", "emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places", "emoji_button.travel": "Travel & Places",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "No toots here!", "empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable", "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.", "empty_column.blocks": "You haven't blocked any users yet.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Next", "lightbox.next": "Next",
"lightbox.previous": "Previous", "lightbox.previous": "Previous",
"lightbox.view_context": "View context",
"lists.account.add": "Add to list", "lists.account.add": "Add to list",
"lists.account.remove": "Remove from list", "lists.account.remove": "Remove from list",
"lists.delete": "Delete list", "lists.delete": "Delete list",
@ -266,9 +266,9 @@
"lists.edit.submit": "Change title", "lists.edit.submit": "Change title",
"lists.new.create": "Add list", "lists.new.create": "Add list",
"lists.new.title_placeholder": "New list title", "lists.new.title_placeholder": "New list title",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among people you follow", "lists.search": "Search among people you follow",
"lists.subheading": "Your lists", "lists.subheading": "Your lists",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Mentions", "notifications.filter.mentions": "Mentions",
"notifications.filter.polls": "Poll results", "notifications.filter.polls": "Poll results",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} notifications", "notifications.group": "{count} notifications",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -6,7 +6,7 @@
"account.block": "Bloki @{name}", "account.block": "Bloki @{name}",
"account.block_domain": "Bloki {domain}", "account.block_domain": "Bloki {domain}",
"account.blocked": "Blokita", "account.blocked": "Blokita",
"account.browse_more_on_origin_server": "Browse more on the original profile", "account.browse_more_on_origin_server": "Rigardi pli al la originala profilo",
"account.cancel_follow_request": "Nuligi peton de sekvado", "account.cancel_follow_request": "Nuligi peton de sekvado",
"account.direct": "Rekte mesaĝi @{name}", "account.direct": "Rekte mesaĝi @{name}",
"account.disable_notifications": "Stop notifying me when @{name} posts", "account.disable_notifications": "Stop notifying me when @{name} posts",
@ -149,6 +149,7 @@
"emoji_button.search_results": "Serĉaj rezultoj", "emoji_button.search_results": "Serĉaj rezultoj",
"emoji_button.symbols": "Simboloj", "emoji_button.symbols": "Simboloj",
"emoji_button.travel": "Vojaĝoj kaj lokoj", "emoji_button.travel": "Vojaĝoj kaj lokoj",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "Neniu mesaĝo ĉi tie!", "empty_column.account_timeline": "Neniu mesaĝo ĉi tie!",
"empty_column.account_unavailable": "Profilo ne disponebla", "empty_column.account_unavailable": "Profilo ne disponebla",
"empty_column.blocks": "Vi ankoraŭ ne blokis uzanton.", "empty_column.blocks": "Vi ankoraŭ ne blokis uzanton.",
@ -236,7 +237,7 @@
"keyboard_shortcuts.hotkey": "Rapidklavo", "keyboard_shortcuts.hotkey": "Rapidklavo",
"keyboard_shortcuts.legend": "montri ĉi tiun noton", "keyboard_shortcuts.legend": "montri ĉi tiun noton",
"keyboard_shortcuts.local": "malfermi la lokan tempolinion", "keyboard_shortcuts.local": "malfermi la lokan tempolinion",
"keyboard_shortcuts.mention": "por mencii la aŭtoron", "keyboard_shortcuts.mention": "mencii la aŭtoron",
"keyboard_shortcuts.muted": "malfermi la liston de silentigitaj uzantoj", "keyboard_shortcuts.muted": "malfermi la liston de silentigitaj uzantoj",
"keyboard_shortcuts.my_profile": "malfermi vian profilon", "keyboard_shortcuts.my_profile": "malfermi vian profilon",
"keyboard_shortcuts.notifications": "malfermi la kolumnon de sciigoj", "keyboard_shortcuts.notifications": "malfermi la kolumnon de sciigoj",
@ -246,7 +247,7 @@
"keyboard_shortcuts.reply": "respondi", "keyboard_shortcuts.reply": "respondi",
"keyboard_shortcuts.requests": "malfermi la liston de petoj de sekvado", "keyboard_shortcuts.requests": "malfermi la liston de petoj de sekvado",
"keyboard_shortcuts.search": "enfokusigi la serĉilon", "keyboard_shortcuts.search": "enfokusigi la serĉilon",
"keyboard_shortcuts.spoilers": "to show/hide CW field", "keyboard_shortcuts.spoilers": "montri/kaŝi la kampon de enhava averto",
"keyboard_shortcuts.start": "malfermi la kolumnon «por komenci»", "keyboard_shortcuts.start": "malfermi la kolumnon «por komenci»",
"keyboard_shortcuts.toggle_hidden": "montri/kaŝi tekston malantaŭ enhava averto", "keyboard_shortcuts.toggle_hidden": "montri/kaŝi tekston malantaŭ enhava averto",
"keyboard_shortcuts.toggle_sensitivity": "montri/kaŝi aŭdovidaĵojn", "keyboard_shortcuts.toggle_sensitivity": "montri/kaŝi aŭdovidaĵojn",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Sekva", "lightbox.next": "Sekva",
"lightbox.previous": "Antaŭa", "lightbox.previous": "Antaŭa",
"lightbox.view_context": "Vidi kuntekston",
"lists.account.add": "Aldoni al la listo", "lists.account.add": "Aldoni al la listo",
"lists.account.remove": "Forigi de la listo", "lists.account.remove": "Forigi de la listo",
"lists.delete": "Forigi la liston", "lists.delete": "Forigi la liston",
@ -266,10 +266,10 @@
"lists.edit.submit": "Ŝanĝi titolon", "lists.edit.submit": "Ŝanĝi titolon",
"lists.new.create": "Aldoni liston", "lists.new.create": "Aldoni liston",
"lists.new.title_placeholder": "Titolo de la nova listo", "lists.new.title_placeholder": "Titolo de la nova listo",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Montri respondon al:",
"lists.search": "Serĉi inter la homoj, kiujn vi sekvas", "lists.search": "Serĉi inter la homoj, kiujn vi sekvas",
"lists.subheading": "Viaj listoj", "lists.subheading": "Viaj listoj",
"load_pending": "{count,plural, one {# nova elemento} other {# novaj elementoj}}", "load_pending": "{count,plural, one {# nova elemento} other {# novaj elementoj}}",
@ -277,9 +277,9 @@
"media_gallery.toggle_visible": "Baskuligi videblecon", "media_gallery.toggle_visible": "Baskuligi videblecon",
"missing_indicator.label": "Ne trovita", "missing_indicator.label": "Ne trovita",
"missing_indicator.sublabel": "Ĉi tiu elemento ne estis trovita", "missing_indicator.sublabel": "Ĉi tiu elemento ne estis trovita",
"mute_modal.duration": "Duration", "mute_modal.duration": "Daŭro",
"mute_modal.hide_notifications": "Ĉu vi volas kaŝi la sciigojn de ĉi tiu uzanto?", "mute_modal.hide_notifications": "Ĉu vi volas kaŝi la sciigojn de ĉi tiu uzanto?",
"mute_modal.indefinite": "Indefinite", "mute_modal.indefinite": "Nedifinita",
"navigation_bar.apps": "Telefonaj aplikaĵoj", "navigation_bar.apps": "Telefonaj aplikaĵoj",
"navigation_bar.blocks": "Blokitaj uzantoj", "navigation_bar.blocks": "Blokitaj uzantoj",
"navigation_bar.bookmarks": "Legosignoj", "navigation_bar.bookmarks": "Legosignoj",
@ -310,7 +310,7 @@
"notification.own_poll": "Via balotenketo finiĝitis", "notification.own_poll": "Via balotenketo finiĝitis",
"notification.poll": "Partoprenita balotenketo finiĝis", "notification.poll": "Partoprenita balotenketo finiĝis",
"notification.reblog": "{name} diskonigis vian mesaĝon", "notification.reblog": "{name} diskonigis vian mesaĝon",
"notification.status": "{name} just posted", "notification.status": "{name} ĵus afiŝita",
"notifications.clear": "Forviŝi sciigojn", "notifications.clear": "Forviŝi sciigojn",
"notifications.clear_confirmation": "Ĉu vi certas, ke vi volas porĉiame forviŝi ĉiujn viajn sciigojn?", "notifications.clear_confirmation": "Ĉu vi certas, ke vi volas porĉiame forviŝi ĉiujn viajn sciigojn?",
"notifications.column_settings.alert": "Retumilaj sciigoj", "notifications.column_settings.alert": "Retumilaj sciigoj",
@ -326,7 +326,7 @@
"notifications.column_settings.reblog": "Diskonigoj:", "notifications.column_settings.reblog": "Diskonigoj:",
"notifications.column_settings.show": "Montri en kolumno", "notifications.column_settings.show": "Montri en kolumno",
"notifications.column_settings.sound": "Eligi sonon", "notifications.column_settings.sound": "Eligi sonon",
"notifications.column_settings.status": "New toots:", "notifications.column_settings.status": "Novaj mesaĝoj:",
"notifications.filter.all": "Ĉiuj", "notifications.filter.all": "Ĉiuj",
"notifications.filter.boosts": "Diskonigoj", "notifications.filter.boosts": "Diskonigoj",
"notifications.filter.favourites": "Stelumoj", "notifications.filter.favourites": "Stelumoj",
@ -334,13 +334,15 @@
"notifications.filter.mentions": "Mencioj", "notifications.filter.mentions": "Mencioj",
"notifications.filter.polls": "Balotenketaj rezultoj", "notifications.filter.polls": "Balotenketaj rezultoj",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} sciigoj", "notifications.group": "{count} sciigoj",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Marki ĉiujn sciigojn legita",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Ebligi retumilajn sciigojn",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Neniam preterlasas iun ajn",
"picture_in_picture.restore": "Put it back", "picture_in_picture.restore": "Put it back",
"poll.closed": "Finita", "poll.closed": "Finita",
"poll.refresh": "Aktualigi", "poll.refresh": "Aktualigi",
@ -351,13 +353,13 @@
"poll_button.add_poll": "Aldoni balotenketon", "poll_button.add_poll": "Aldoni balotenketon",
"poll_button.remove_poll": "Forigi balotenketon", "poll_button.remove_poll": "Forigi balotenketon",
"privacy.change": "Agordi mesaĝan privatecon", "privacy.change": "Agordi mesaĝan privatecon",
"privacy.direct.long": "Afiŝi nur al menciitaj uzantoj", "privacy.direct.long": "Videbla nur al menciitaj uzantoj",
"privacy.direct.short": "Rekta", "privacy.direct.short": "Rekta",
"privacy.private.long": "Afiŝi nur al sekvantoj", "privacy.private.long": "Videbla nur al viaj sekvantoj",
"privacy.private.short": "Nur por sekvantoj", "privacy.private.short": "Nur al sekvantoj",
"privacy.public.long": "Afiŝi en publikaj tempolinioj", "privacy.public.long": "Videbla al ĉiuj, afiŝita en publikaj tempolinioj",
"privacy.public.short": "Publika", "privacy.public.short": "Publika",
"privacy.unlisted.long": "Ne afiŝi en publikaj tempolinioj", "privacy.unlisted.long": "Videbla al ĉiuj, sed ne en publikaj tempolinioj",
"privacy.unlisted.short": "Nelistigita", "privacy.unlisted.short": "Nelistigita",
"refresh": "Refreŝigu", "refresh": "Refreŝigu",
"regeneration_indicator.label": "Ŝargado…", "regeneration_indicator.label": "Ŝargado…",
@ -448,7 +450,7 @@
"trends.counter_by_accounts": "{count, plural, one {{counter} persono} other {{counter} personoj}} parolante", "trends.counter_by_accounts": "{count, plural, one {{counter} persono} other {{counter} personoj}} parolante",
"trends.trending_now": "Nunaj furoraĵoj", "trends.trending_now": "Nunaj furoraĵoj",
"ui.beforeunload": "Via malneto perdiĝos se vi eliras de Mastodon.", "ui.beforeunload": "Via malneto perdiĝos se vi eliras de Mastodon.",
"units.short.billion": "{count}B", "units.short.billion": "{count}Md",
"units.short.million": "{count}M", "units.short.million": "{count}M",
"units.short.thousand": "{count}K", "units.short.thousand": "{count}K",
"upload_area.title": "Altreni kaj lasi por alŝuti", "upload_area.title": "Altreni kaj lasi por alŝuti",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Resultados de búsqueda", "emoji_button.search_results": "Resultados de búsqueda",
"emoji_button.symbols": "Símbolos", "emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viajes y lugares", "emoji_button.travel": "Viajes y lugares",
"empty_column.account_suspended": "Cuenta suspendida",
"empty_column.account_timeline": "¡No hay toots acá!", "empty_column.account_timeline": "¡No hay toots acá!",
"empty_column.account_unavailable": "Perfil no disponible", "empty_column.account_unavailable": "Perfil no disponible",
"empty_column.blocks": "Todavía no bloqueaste a ningún usuario.", "empty_column.blocks": "Todavía no bloqueaste a ningún usuario.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expandir cuadro de vista de imagen", "lightbox.expand": "Expandir cuadro de vista de imagen",
"lightbox.next": "Siguiente", "lightbox.next": "Siguiente",
"lightbox.previous": "Anterior", "lightbox.previous": "Anterior",
"lightbox.view_context": "Ver contexto",
"lists.account.add": "Agregar a lista", "lists.account.add": "Agregar a lista",
"lists.account.remove": "Quitar de lista", "lists.account.remove": "Quitar de lista",
"lists.delete": "Eliminar lista", "lists.delete": "Eliminar lista",
@ -266,9 +266,9 @@
"lists.edit.submit": "Cambiar título", "lists.edit.submit": "Cambiar título",
"lists.new.create": "Agregar lista", "lists.new.create": "Agregar lista",
"lists.new.title_placeholder": "Nuevo título de lista", "lists.new.title_placeholder": "Nuevo título de lista",
"lists.replies_policy.all_replies": "Cualquier cuenta seguida", "lists.replies_policy.followed": "Cualquier cuenta seguida",
"lists.replies_policy.list_replies": "Miembros de la lista", "lists.replies_policy.list": "Miembros de la lista",
"lists.replies_policy.no_replies": "Nadie", "lists.replies_policy.none": "Nadie",
"lists.replies_policy.title": "Mostrar respuestas a:", "lists.replies_policy.title": "Mostrar respuestas a:",
"lists.search": "Buscar entre la gente que seguís", "lists.search": "Buscar entre la gente que seguís",
"lists.subheading": "Tus listas", "lists.subheading": "Tus listas",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Menciones", "notifications.filter.mentions": "Menciones",
"notifications.filter.polls": "Resultados de encuesta", "notifications.filter.polls": "Resultados de encuesta",
"notifications.filter.statuses": "Actualizaciones de cuentas que seguís", "notifications.filter.statuses": "Actualizaciones de cuentas que seguís",
"notifications.grant_permission": "Conceder permiso.",
"notifications.group": "{count} notificaciones", "notifications.group": "{count} notificaciones",
"notifications.mark_as_read": "Marcar cada notificación como leída", "notifications.mark_as_read": "Marcar cada notificación como leída",
"notifications.permission_denied": "Las notificaciones de escritorio no están disponibles, debido a una solicitud de permiso del navegador web previamente denegada", "notifications.permission_denied": "Las notificaciones de escritorio no están disponibles, debido a una solicitud de permiso del navegador web previamente denegada",
"notifications.permission_denied_alert": "No se pueden habilitar las notificaciones de escritorio, ya que el permiso del navegador fue denegado antes", "notifications.permission_denied_alert": "No se pueden habilitar las notificaciones de escritorio, ya que el permiso del navegador fue denegado antes",
"notifications.permission_required": "Las notificaciones de escritorio no están disponibles porque no se concedió el permiso requerido.",
"notifications_permission_banner.enable": "Habilitar notificaciones de escritorio", "notifications_permission_banner.enable": "Habilitar notificaciones de escritorio",
"notifications_permission_banner.how_to_control": "Para recibir notificaciones cuando Mastodon no está abierto, habilitá las notificaciones de escritorio. Podés controlar con precisión qué tipos de interacciones generan notificaciones de escritorio a través del botón {icon} de arriba, una vez que estén habilitadas.", "notifications_permission_banner.how_to_control": "Para recibir notificaciones cuando Mastodon no está abierto, habilitá las notificaciones de escritorio. Podés controlar con precisión qué tipos de interacciones generan notificaciones de escritorio a través del botón {icon} de arriba, una vez que estén habilitadas.",
"notifications_permission_banner.title": "No te pierdas nada", "notifications_permission_banner.title": "No te pierdas nada",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Resultados de búsqueda", "emoji_button.search_results": "Resultados de búsqueda",
"emoji_button.symbols": "Símbolos", "emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viajes y lugares", "emoji_button.travel": "Viajes y lugares",
"empty_column.account_suspended": "Cuenta suspendida",
"empty_column.account_timeline": "¡No hay toots aquí!", "empty_column.account_timeline": "¡No hay toots aquí!",
"empty_column.account_unavailable": "Perfil no disponible", "empty_column.account_unavailable": "Perfil no disponible",
"empty_column.blocks": "Aún no has bloqueado a ningún usuario.", "empty_column.blocks": "Aún no has bloqueado a ningún usuario.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expandir cuadro de visualización de imagen", "lightbox.expand": "Expandir cuadro de visualización de imagen",
"lightbox.next": "Siguiente", "lightbox.next": "Siguiente",
"lightbox.previous": "Anterior", "lightbox.previous": "Anterior",
"lightbox.view_context": "Ver contexto",
"lists.account.add": "Añadir a lista", "lists.account.add": "Añadir a lista",
"lists.account.remove": "Quitar de lista", "lists.account.remove": "Quitar de lista",
"lists.delete": "Borrar lista", "lists.delete": "Borrar lista",
@ -266,9 +266,9 @@
"lists.edit.submit": "Cambiar título", "lists.edit.submit": "Cambiar título",
"lists.new.create": "Añadir lista", "lists.new.create": "Añadir lista",
"lists.new.title_placeholder": "Título de la nueva lista", "lists.new.title_placeholder": "Título de la nueva lista",
"lists.replies_policy.all_replies": "Cualquier usuario al que sigas", "lists.replies_policy.followed": "Cualquier usuario seguido",
"lists.replies_policy.list_replies": "Miembros de la lista", "lists.replies_policy.list": "Miembros de la lista",
"lists.replies_policy.no_replies": "Nadie", "lists.replies_policy.none": "Nadie",
"lists.replies_policy.title": "Mostrar respuestas a:", "lists.replies_policy.title": "Mostrar respuestas a:",
"lists.search": "Buscar entre la gente a la que sigues", "lists.search": "Buscar entre la gente a la que sigues",
"lists.subheading": "Tus listas", "lists.subheading": "Tus listas",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Menciones", "notifications.filter.mentions": "Menciones",
"notifications.filter.polls": "Resultados de la votación", "notifications.filter.polls": "Resultados de la votación",
"notifications.filter.statuses": "Actualizaciones de gente a la que sigues", "notifications.filter.statuses": "Actualizaciones de gente a la que sigues",
"notifications.grant_permission": "Conceder permiso.",
"notifications.group": "{count} notificaciones", "notifications.group": "{count} notificaciones",
"notifications.mark_as_read": "Marcar todas las notificaciones como leídas", "notifications.mark_as_read": "Marcar todas las notificaciones como leídas",
"notifications.permission_denied": "No se pueden habilitar las notificaciones de escritorio ya que se denegó el permiso.", "notifications.permission_denied": "No se pueden habilitar las notificaciones de escritorio ya que se denegó el permiso.",
"notifications.permission_denied_alert": "No se pueden habilitar las notificaciones de escritorio, ya que el permiso del navegador fue denegado anteriormente", "notifications.permission_denied_alert": "No se pueden habilitar las notificaciones de escritorio, ya que el permiso del navegador fue denegado anteriormente",
"notifications.permission_required": "Las notificaciones de escritorio no están disponibles porque no se ha concedido el permiso requerido.",
"notifications_permission_banner.enable": "Habilitar notificaciones de escritorio", "notifications_permission_banner.enable": "Habilitar notificaciones de escritorio",
"notifications_permission_banner.how_to_control": "Para recibir notificaciones cuando Mastodon no esté abierto, habilite las notificaciones de escritorio. Puedes controlar con precisión qué tipos de interacciones generan notificaciones de escritorio a través del botón {icon} de arriba una vez que estén habilitadas.", "notifications_permission_banner.how_to_control": "Para recibir notificaciones cuando Mastodon no esté abierto, habilite las notificaciones de escritorio. Puedes controlar con precisión qué tipos de interacciones generan notificaciones de escritorio a través del botón {icon} de arriba una vez que estén habilitadas.",
"notifications_permission_banner.title": "Nunca te pierdas nada", "notifications_permission_banner.title": "Nunca te pierdas nada",
@ -390,7 +392,7 @@
"status.admin_account": "Abrir interfaz de moderación para @{name}", "status.admin_account": "Abrir interfaz de moderación para @{name}",
"status.admin_status": "Abrir este estado en la interfaz de moderación", "status.admin_status": "Abrir este estado en la interfaz de moderación",
"status.block": "Bloquear a @{name}", "status.block": "Bloquear a @{name}",
"status.bookmark": "Marcador", "status.bookmark": "Añadir marcador",
"status.cancel_reblog_private": "Eliminar retoot", "status.cancel_reblog_private": "Eliminar retoot",
"status.cannot_reblog": "Este toot no puede retootearse", "status.cannot_reblog": "Este toot no puede retootearse",
"status.copy": "Copiar enlace al estado", "status.copy": "Copiar enlace al estado",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Otsitulemused", "emoji_button.search_results": "Otsitulemused",
"emoji_button.symbols": "Sümbolid", "emoji_button.symbols": "Sümbolid",
"emoji_button.travel": "Reisimine & Kohad", "emoji_button.travel": "Reisimine & Kohad",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "Siin tuute ei ole!", "empty_column.account_timeline": "Siin tuute ei ole!",
"empty_column.account_unavailable": "Profiil pole saadaval", "empty_column.account_unavailable": "Profiil pole saadaval",
"empty_column.blocks": "Sa ei ole veel ühtegi kasutajat blokeerinud.", "empty_column.blocks": "Sa ei ole veel ühtegi kasutajat blokeerinud.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Järgmine", "lightbox.next": "Järgmine",
"lightbox.previous": "Eelmine", "lightbox.previous": "Eelmine",
"lightbox.view_context": "Vaata konteksti",
"lists.account.add": "Lisa nimistusse", "lists.account.add": "Lisa nimistusse",
"lists.account.remove": "Eemalda nimistust", "lists.account.remove": "Eemalda nimistust",
"lists.delete": "Kustuta nimistu", "lists.delete": "Kustuta nimistu",
@ -266,9 +266,9 @@
"lists.edit.submit": "Muuda pealkiri", "lists.edit.submit": "Muuda pealkiri",
"lists.new.create": "Lisa nimistu", "lists.new.create": "Lisa nimistu",
"lists.new.title_placeholder": "Uus nimistu pealkiri", "lists.new.title_placeholder": "Uus nimistu pealkiri",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Otsi Teie poolt jälgitavate inimese hulgast", "lists.search": "Otsi Teie poolt jälgitavate inimese hulgast",
"lists.subheading": "Teie nimistud", "lists.subheading": "Teie nimistud",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Mainimised", "notifications.filter.mentions": "Mainimised",
"notifications.filter.polls": "Küsitluse tulemused", "notifications.filter.polls": "Küsitluse tulemused",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} teated", "notifications.group": "{count} teated",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Bilaketaren emaitzak", "emoji_button.search_results": "Bilaketaren emaitzak",
"emoji_button.symbols": "Sinboloak", "emoji_button.symbols": "Sinboloak",
"emoji_button.travel": "Bidaiak eta tokiak", "emoji_button.travel": "Bidaiak eta tokiak",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "Ez dago tootik hemen!", "empty_column.account_timeline": "Ez dago tootik hemen!",
"empty_column.account_unavailable": "Profila ez dago eskuragarri", "empty_column.account_unavailable": "Profila ez dago eskuragarri",
"empty_column.blocks": "Ez duzu erabiltzailerik blokeatu oraindik.", "empty_column.blocks": "Ez duzu erabiltzailerik blokeatu oraindik.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Hurrengoa", "lightbox.next": "Hurrengoa",
"lightbox.previous": "Aurrekoa", "lightbox.previous": "Aurrekoa",
"lightbox.view_context": "Ikusi testuingurua",
"lists.account.add": "Gehitu zerrendara", "lists.account.add": "Gehitu zerrendara",
"lists.account.remove": "Kendu zerrendatik", "lists.account.remove": "Kendu zerrendatik",
"lists.delete": "Ezabatu zerrenda", "lists.delete": "Ezabatu zerrenda",
@ -266,9 +266,9 @@
"lists.edit.submit": "Aldatu izenburua", "lists.edit.submit": "Aldatu izenburua",
"lists.new.create": "Gehitu zerrenda", "lists.new.create": "Gehitu zerrenda",
"lists.new.title_placeholder": "Zerrenda berriaren izena", "lists.new.title_placeholder": "Zerrenda berriaren izena",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Bilatu jarraitzen dituzun pertsonen artean", "lists.search": "Bilatu jarraitzen dituzun pertsonen artean",
"lists.subheading": "Zure zerrendak", "lists.subheading": "Zure zerrendak",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Aipamenak", "notifications.filter.mentions": "Aipamenak",
"notifications.filter.polls": "Inkestaren emaitza", "notifications.filter.polls": "Inkestaren emaitza",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} jakinarazpen", "notifications.group": "{count} jakinarazpen",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -80,8 +80,8 @@
"column_header.pin": "ثابت‌کردن", "column_header.pin": "ثابت‌کردن",
"column_header.show_settings": "نمایش تنظیمات", "column_header.show_settings": "نمایش تنظیمات",
"column_header.unpin": "رهاکردن", "column_header.unpin": "رهاکردن",
"column_subheading.settings": "تنظیمات", "column_subheading.settings": "ساماندهی",
"community.column_settings.local_only": "تنها بومی", "community.column_settings.local_only": "فقط محلّی",
"community.column_settings.media_only": "فقط رسانه", "community.column_settings.media_only": "فقط رسانه",
"community.column_settings.remote_only": "تنها دوردست", "community.column_settings.remote_only": "تنها دوردست",
"compose_form.direct_message_warning": "این بوق تنها به کاربرانی که از آن‌ها نام برده شده فرستاده خواهد شد.", "compose_form.direct_message_warning": "این بوق تنها به کاربرانی که از آن‌ها نام برده شده فرستاده خواهد شد.",
@ -149,6 +149,7 @@
"emoji_button.search_results": "نتایج جستجو", "emoji_button.search_results": "نتایج جستجو",
"emoji_button.symbols": "نمادها", "emoji_button.symbols": "نمادها",
"emoji_button.travel": "سفر و مکان", "emoji_button.travel": "سفر و مکان",
"empty_column.account_suspended": "حساب معلق شد",
"empty_column.account_timeline": "هیچ بوقی این‌جا نیست!", "empty_column.account_timeline": "هیچ بوقی این‌جا نیست!",
"empty_column.account_unavailable": "نمایهٔ موجود نیست", "empty_column.account_unavailable": "نمایهٔ موجود نیست",
"empty_column.blocks": "هنوز کسی را مسدود نکرده‌اید.", "empty_column.blocks": "هنوز کسی را مسدود نکرده‌اید.",
@ -254,11 +255,10 @@
"keyboard_shortcuts.unfocus": "برای برداشتن تمرکز از نوشتن/جستجو", "keyboard_shortcuts.unfocus": "برای برداشتن تمرکز از نوشتن/جستجو",
"keyboard_shortcuts.up": "برای بالا رفتن در فهرست", "keyboard_shortcuts.up": "برای بالا رفتن در فهرست",
"lightbox.close": "بستن", "lightbox.close": "بستن",
"lightbox.compress": "Compress image view box", "lightbox.compress": "فشرده‌سازی جعبه نمایش تصویر",
"lightbox.expand": "Expand image view box", "lightbox.expand": "گسترش جعبه نمایش تصویر",
"lightbox.next": "بعدی", "lightbox.next": "بعدی",
"lightbox.previous": "قبلی", "lightbox.previous": "قبلی",
"lightbox.view_context": "نمایش گفتگو",
"lists.account.add": "افزودن به فهرست", "lists.account.add": "افزودن به فهرست",
"lists.account.remove": "برداشتن از فهرست", "lists.account.remove": "برداشتن از فهرست",
"lists.delete": "حذف فهرست", "lists.delete": "حذف فهرست",
@ -266,9 +266,9 @@
"lists.edit.submit": "تغییر عنوان", "lists.edit.submit": "تغییر عنوان",
"lists.new.create": "افزودن فهرست", "lists.new.create": "افزودن فهرست",
"lists.new.title_placeholder": "عنوان فهرست تازه", "lists.new.title_placeholder": "عنوان فهرست تازه",
"lists.replies_policy.all_replies": "هر کاربر پی‌گیری‌شده", "lists.replies_policy.followed": "هر کاربر پیگرفته",
"lists.replies_policy.list_replies": "اعضای فهرست", "lists.replies_policy.list": "اعضای فهرست",
"lists.replies_policy.no_replies": "هیچ‌کس", "lists.replies_policy.none": "هیچ کدام",
"lists.replies_policy.title": "نمایش پاسخ‌ها به:", "lists.replies_policy.title": "نمایش پاسخ‌ها به:",
"lists.search": "بین کسانی که پی می‌گیرید بگردید", "lists.search": "بین کسانی که پی می‌گیرید بگردید",
"lists.subheading": "فهرست‌های شما", "lists.subheading": "فهرست‌های شما",
@ -334,12 +334,14 @@
"notifications.filter.mentions": "نام‌بردن‌ها", "notifications.filter.mentions": "نام‌بردن‌ها",
"notifications.filter.polls": "نتایج نظرسنجی", "notifications.filter.polls": "نتایج نظرسنجی",
"notifications.filter.statuses": "به‌روز رسانی‌ها از کسانی که پی‌گیرشانید", "notifications.filter.statuses": "به‌روز رسانی‌ها از کسانی که پی‌گیرشانید",
"notifications.grant_permission": "اعطای مجوز.",
"notifications.group": "{count} اعلان", "notifications.group": "{count} اعلان",
"notifications.mark_as_read": "نشانه‌گذاری همهٔ آگاهی‌ها به عنوان خوانده‌شده", "notifications.mark_as_read": "نشانه‌گذاری همهٔ آگاهی‌ها به عنوان خوانده‌شده",
"notifications.permission_denied": "آگاهی‌های میزکار به دلیل رد کردن درخواست اجازهٔ پیشین مرورگر، در دسترس نیستند", "notifications.permission_denied": "آگاهی‌های میزکار به دلیل رد کردن درخواست اجازهٔ پیشین مرورگر، در دسترس نیستند",
"notifications.permission_denied_alert": "از آن‌جا که پیش از این اجازهٔ مرورگر رد شده است، آگاهی‌های میزکار نمی‌توانند به کار بیفتند", "notifications.permission_denied_alert": "از آن‌جا که پیش از این اجازهٔ مرورگر رد شده است، آگاهی‌های میزکار نمی‌توانند به کار بیفتند",
"notifications.permission_required": "اعلان‌های میزکار در دسترس نیستند زیرا نیازمند مجوزی هستند که اعطا نشده است.",
"notifications_permission_banner.enable": "به کار انداختن آگاهی‌های میزکار", "notifications_permission_banner.enable": "به کار انداختن آگاهی‌های میزکار",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "اگر می‌خواهید حتی زمانی که ماستودون باز نیست اعلان‌ها نمایش یابند، اعلان‌های میزکار را فعال کنید. به محض فعال شدن از طریق دکمه {icon} بالا می‌توانید به دقت کنترل کنید که چه نوع از تعامل‌ها باعث صادر شدن اعلان‌ها شوند.",
"notifications_permission_banner.title": "هرگز چیزی را از دست ندهید", "notifications_permission_banner.title": "هرگز چیزی را از دست ندهید",
"picture_in_picture.restore": "برگرداندن", "picture_in_picture.restore": "برگرداندن",
"poll.closed": "پایان‌یافته", "poll.closed": "پایان‌یافته",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Hakutulokset", "emoji_button.search_results": "Hakutulokset",
"emoji_button.symbols": "Symbolit", "emoji_button.symbols": "Symbolit",
"emoji_button.travel": "Matkailu", "emoji_button.travel": "Matkailu",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "Ei ole 'toots' täällä!", "empty_column.account_timeline": "Ei ole 'toots' täällä!",
"empty_column.account_unavailable": "Profiilia ei löydy", "empty_column.account_unavailable": "Profiilia ei löydy",
"empty_column.blocks": "Et ole vielä estänyt yhtään käyttäjää.", "empty_column.blocks": "Et ole vielä estänyt yhtään käyttäjää.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Seuraava", "lightbox.next": "Seuraava",
"lightbox.previous": "Edellinen", "lightbox.previous": "Edellinen",
"lightbox.view_context": "Näytä kontekstissa",
"lists.account.add": "Lisää listaan", "lists.account.add": "Lisää listaan",
"lists.account.remove": "Poista listasta", "lists.account.remove": "Poista listasta",
"lists.delete": "Poista lista", "lists.delete": "Poista lista",
@ -266,9 +266,9 @@
"lists.edit.submit": "Vaihda otsikko", "lists.edit.submit": "Vaihda otsikko",
"lists.new.create": "Lisää lista", "lists.new.create": "Lisää lista",
"lists.new.title_placeholder": "Uuden listan nimi", "lists.new.title_placeholder": "Uuden listan nimi",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Etsi seuraamistasi henkilöistä", "lists.search": "Etsi seuraamistasi henkilöistä",
"lists.subheading": "Omat listat", "lists.subheading": "Omat listat",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Maininnat", "notifications.filter.mentions": "Maininnat",
"notifications.filter.polls": "Kyselyn tulokset", "notifications.filter.polls": "Kyselyn tulokset",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} ilmoitusta", "notifications.group": "{count} ilmoitusta",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -99,7 +99,7 @@
"compose_form.publish": "Pouet", "compose_form.publish": "Pouet",
"compose_form.publish_loud": "{publish}!", "compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Marquer le média comme sensible", "compose_form.sensitive.hide": "Marquer le média comme sensible",
"compose_form.sensitive.marked": "Média marqué comme sensible", "compose_form.sensitive.marked": "{count, plural, one {Le média est marqué comme sensible} other {Les médias sont marqués comme sensibles}}",
"compose_form.sensitive.unmarked": "Le média nest pas marqué comme sensible", "compose_form.sensitive.unmarked": "Le média nest pas marqué comme sensible",
"compose_form.spoiler.marked": "Le texte est caché derrière un avertissement", "compose_form.spoiler.marked": "Le texte est caché derrière un avertissement",
"compose_form.spoiler.unmarked": "Le texte nest pas caché", "compose_form.spoiler.unmarked": "Le texte nest pas caché",
@ -149,6 +149,7 @@
"emoji_button.search_results": "Résultats de la recherche", "emoji_button.search_results": "Résultats de la recherche",
"emoji_button.symbols": "Symboles", "emoji_button.symbols": "Symboles",
"emoji_button.travel": "Lieux & Voyages", "emoji_button.travel": "Lieux & Voyages",
"empty_column.account_suspended": "Compte suspendu",
"empty_column.account_timeline": "Aucun pouet ici !", "empty_column.account_timeline": "Aucun pouet ici !",
"empty_column.account_unavailable": "Profil non disponible", "empty_column.account_unavailable": "Profil non disponible",
"empty_column.blocks": "Vous navez bloqué aucun·e utilisateur·rice pour le moment.", "empty_column.blocks": "Vous navez bloqué aucun·e utilisateur·rice pour le moment.",
@ -258,7 +259,6 @@
"lightbox.expand": "Agrandir la fenêtre de visualisation des images", "lightbox.expand": "Agrandir la fenêtre de visualisation des images",
"lightbox.next": "Suivant", "lightbox.next": "Suivant",
"lightbox.previous": "Précédent", "lightbox.previous": "Précédent",
"lightbox.view_context": "Voir le contexte",
"lists.account.add": "Ajouter à la liste", "lists.account.add": "Ajouter à la liste",
"lists.account.remove": "Supprimer de la liste", "lists.account.remove": "Supprimer de la liste",
"lists.delete": "Supprimer la liste", "lists.delete": "Supprimer la liste",
@ -266,9 +266,9 @@
"lists.edit.submit": "Modifier le titre", "lists.edit.submit": "Modifier le titre",
"lists.new.create": "Ajouter une liste", "lists.new.create": "Ajouter une liste",
"lists.new.title_placeholder": "Titre de la nouvelle liste", "lists.new.title_placeholder": "Titre de la nouvelle liste",
"lists.replies_policy.all_replies": "Nimporte quel·le utilisateur·rice suivi·e", "lists.replies_policy.followed": "Nimporte quel·le utilisateur·rice suivi·e",
"lists.replies_policy.list_replies": "Membres de la liste", "lists.replies_policy.list": "Membres de la liste",
"lists.replies_policy.no_replies": "Personne", "lists.replies_policy.none": "Personne",
"lists.replies_policy.title": "Afficher les réponses à :", "lists.replies_policy.title": "Afficher les réponses à :",
"lists.search": "Rechercher parmi les gens que vous suivez", "lists.search": "Rechercher parmi les gens que vous suivez",
"lists.subheading": "Vos listes", "lists.subheading": "Vos listes",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Mentions", "notifications.filter.mentions": "Mentions",
"notifications.filter.polls": "Résultats des sondages", "notifications.filter.polls": "Résultats des sondages",
"notifications.filter.statuses": "Mises à jour des personnes que vous suivez", "notifications.filter.statuses": "Mises à jour des personnes que vous suivez",
"notifications.grant_permission": "Accorder lautorisation.",
"notifications.group": "{count} notifications", "notifications.group": "{count} notifications",
"notifications.mark_as_read": "Marquer toutes les notifications comme lues", "notifications.mark_as_read": "Marquer toutes les notifications comme lues",
"notifications.permission_denied": "Impossible dactiver les notifications de bureau car lautorisation a été refusée.", "notifications.permission_denied": "Impossible dactiver les notifications de bureau car lautorisation a été refusée.",
"notifications.permission_denied_alert": "Les notifications de bureau ne peuvent pas être activées, car lautorisation du navigateur a été refusée avant", "notifications.permission_denied_alert": "Les notifications de bureau ne peuvent pas être activées, car lautorisation du navigateur a été refusée avant",
"notifications.permission_required": "Les notifications de bureau ne sont pas disponibles car lautorisation requise na pas été accordée.",
"notifications_permission_banner.enable": "Activer les notifications de bureau", "notifications_permission_banner.enable": "Activer les notifications de bureau",
"notifications_permission_banner.how_to_control": "Pour recevoir des notifications lorsque Mastodon nest pas ouvert, activez les notifications du bureau. Vous pouvez contrôler précisément quels types dinteractions génèrent des notifications de bureau via le bouton {icon} ci-dessus une fois quelles sont activées.", "notifications_permission_banner.how_to_control": "Pour recevoir des notifications lorsque Mastodon nest pas ouvert, activez les notifications du bureau. Vous pouvez contrôler précisément quels types dinteractions génèrent des notifications de bureau via le bouton {icon} ci-dessus une fois quelles sont activées.",
"notifications_permission_banner.title": "Toujours au courant", "notifications_permission_banner.title": "Toujours au courant",
@ -436,7 +438,7 @@
"tabs_bar.local_timeline": "Fil public local", "tabs_bar.local_timeline": "Fil public local",
"tabs_bar.notifications": "Notifications", "tabs_bar.notifications": "Notifications",
"tabs_bar.search": "Chercher", "tabs_bar.search": "Chercher",
"time_remaining.days": "{number, plural, one {# day} other {# days}} restants", "time_remaining.days": "{number, plural, one {# jour} other {# jours}} restant·s",
"time_remaining.hours": "{number, plural, one {# heure} other {# heures}} restantes", "time_remaining.hours": "{number, plural, one {# heure} other {# heures}} restantes",
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} restantes", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} restantes",
"time_remaining.moments": "Encore quelques instants", "time_remaining.moments": "Encore quelques instants",
@ -448,7 +450,7 @@
"trends.counter_by_accounts": "{count, plural, one {{counter} personne en parle} other {{counter} personnes en parlent}}", "trends.counter_by_accounts": "{count, plural, one {{counter} personne en parle} other {{counter} personnes en parlent}}",
"trends.trending_now": "Tendance en ce moment", "trends.trending_now": "Tendance en ce moment",
"ui.beforeunload": "Votre brouillon sera perdu si vous quittez Mastodon.", "ui.beforeunload": "Votre brouillon sera perdu si vous quittez Mastodon.",
"units.short.billion": "{count}B", "units.short.billion": "{count}Md",
"units.short.million": "{count}M", "units.short.million": "{count}M",
"units.short.thousand": "{count}K", "units.short.thousand": "{count}K",
"upload_area.title": "Glissez et déposez pour envoyer", "upload_area.title": "Glissez et déposez pour envoyer",
@ -468,7 +470,7 @@
"upload_modal.detect_text": "Détecter le texte de limage", "upload_modal.detect_text": "Détecter le texte de limage",
"upload_modal.edit_media": "Modifier le média", "upload_modal.edit_media": "Modifier le média",
"upload_modal.hint": "Cliquez ou faites glisser le cercle sur laperçu pour choisir le point focal qui sera toujours visible sur toutes les miniatures.", "upload_modal.hint": "Cliquez ou faites glisser le cercle sur laperçu pour choisir le point focal qui sera toujours visible sur toutes les miniatures.",
"upload_modal.preparing_ocr": "Préparation de OCR…", "upload_modal.preparing_ocr": "Préparation de lOCR…",
"upload_modal.preview_label": "Aperçu ({ratio})", "upload_modal.preview_label": "Aperçu ({ratio})",
"upload_progress.label": "Envoi en cours…", "upload_progress.label": "Envoi en cours…",
"video.close": "Fermer la vidéo", "video.close": "Fermer la vidéo",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Search results", "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols", "emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places", "emoji_button.travel": "Travel & Places",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "No toots here!", "empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable", "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.", "empty_column.blocks": "You haven't blocked any users yet.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Next", "lightbox.next": "Next",
"lightbox.previous": "Previous", "lightbox.previous": "Previous",
"lightbox.view_context": "View context",
"lists.account.add": "Add to list", "lists.account.add": "Add to list",
"lists.account.remove": "Remove from list", "lists.account.remove": "Remove from list",
"lists.delete": "Delete list", "lists.delete": "Delete list",
@ -266,9 +266,9 @@
"lists.edit.submit": "Change title", "lists.edit.submit": "Change title",
"lists.new.create": "Add list", "lists.new.create": "Add list",
"lists.new.title_placeholder": "New list title", "lists.new.title_placeholder": "New list title",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among people you follow", "lists.search": "Search among people you follow",
"lists.subheading": "Your lists", "lists.subheading": "Your lists",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Mentions", "notifications.filter.mentions": "Mentions",
"notifications.filter.polls": "Poll results", "notifications.filter.polls": "Poll results",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} notifications", "notifications.group": "{count} notifications",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -73,7 +73,7 @@
"column.notifications": "Notificacións", "column.notifications": "Notificacións",
"column.pins": "Toots fixados", "column.pins": "Toots fixados",
"column.public": "Cronoloxía federada", "column.public": "Cronoloxía federada",
"column_back_button.label": "Voltar", "column_back_button.label": "Volver",
"column_header.hide_settings": "Agochar axustes", "column_header.hide_settings": "Agochar axustes",
"column_header.moveLeft_settings": "Mover columna cara a esquerda", "column_header.moveLeft_settings": "Mover columna cara a esquerda",
"column_header.moveRight_settings": "Mover columna cara a dereita", "column_header.moveRight_settings": "Mover columna cara a dereita",
@ -149,6 +149,7 @@
"emoji_button.search_results": "Resultados da procura", "emoji_button.search_results": "Resultados da procura",
"emoji_button.symbols": "Símbolos", "emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viaxes e Lugares", "emoji_button.travel": "Viaxes e Lugares",
"empty_column.account_suspended": "Conta suspendida",
"empty_column.account_timeline": "Non hai toots aquí!", "empty_column.account_timeline": "Non hai toots aquí!",
"empty_column.account_unavailable": "Perfil non dispoñible", "empty_column.account_unavailable": "Perfil non dispoñible",
"empty_column.blocks": "Aínda non bloqueaches a ningún usuaria.", "empty_column.blocks": "Aínda non bloqueaches a ningún usuaria.",
@ -219,7 +220,7 @@
"introduction.welcome.action": "Imos!", "introduction.welcome.action": "Imos!",
"introduction.welcome.headline": "Primeiros pasos", "introduction.welcome.headline": "Primeiros pasos",
"introduction.welcome.text": "Benvida ó fediverso! Nun intre poderás difundir mensaxes e falar coas túas amizades nun grande número de servidores. Mais este servidor, {domain}, é especial—hospeda o teu perfil, por iso lémbra o seu nome.", "introduction.welcome.text": "Benvida ó fediverso! Nun intre poderás difundir mensaxes e falar coas túas amizades nun grande número de servidores. Mais este servidor, {domain}, é especial—hospeda o teu perfil, por iso lémbra o seu nome.",
"keyboard_shortcuts.back": "para voltar atrás", "keyboard_shortcuts.back": "para volver atrás",
"keyboard_shortcuts.blocked": "abrir lista de usuarias bloqueadas", "keyboard_shortcuts.blocked": "abrir lista de usuarias bloqueadas",
"keyboard_shortcuts.boost": "promover", "keyboard_shortcuts.boost": "promover",
"keyboard_shortcuts.column": "para destacar un toot nunha das columnas", "keyboard_shortcuts.column": "para destacar un toot nunha das columnas",
@ -258,7 +259,6 @@
"lightbox.expand": "Expandir a caixa de vista da imaxe", "lightbox.expand": "Expandir a caixa de vista da imaxe",
"lightbox.next": "Seguinte", "lightbox.next": "Seguinte",
"lightbox.previous": "Anterior", "lightbox.previous": "Anterior",
"lightbox.view_context": "Ollar contexto",
"lists.account.add": "Engadir á listaxe", "lists.account.add": "Engadir á listaxe",
"lists.account.remove": "Eliminar da listaxe", "lists.account.remove": "Eliminar da listaxe",
"lists.delete": "Eliminar listaxe", "lists.delete": "Eliminar listaxe",
@ -266,9 +266,9 @@
"lists.edit.submit": "Mudar o título", "lists.edit.submit": "Mudar o título",
"lists.new.create": "Engadir listaxe", "lists.new.create": "Engadir listaxe",
"lists.new.title_placeholder": "Título da nova listaxe", "lists.new.title_placeholder": "Título da nova listaxe",
"lists.replies_policy.all_replies": "Calquera usuaria á que segues", "lists.replies_policy.followed": "Toda usuaria seguida",
"lists.replies_policy.list_replies": "Membros da lista", "lists.replies_policy.list": "Membros da lista",
"lists.replies_policy.no_replies": "Ninguén", "lists.replies_policy.none": "Ninguén",
"lists.replies_policy.title": "Mostrar respostas a:", "lists.replies_policy.title": "Mostrar respostas a:",
"lists.search": "Procurar entre as persoas que segues", "lists.search": "Procurar entre as persoas que segues",
"lists.subheading": "As túas listaxes", "lists.subheading": "As túas listaxes",
@ -334,12 +334,14 @@
"notifications.filter.mentions": "Mencións", "notifications.filter.mentions": "Mencións",
"notifications.filter.polls": "Resultados da enquisa", "notifications.filter.polls": "Resultados da enquisa",
"notifications.filter.statuses": "Actualizacións de xente á que segues", "notifications.filter.statuses": "Actualizacións de xente á que segues",
"notifications.grant_permission": "Conceder permiso.",
"notifications.group": "{count} notificacións", "notifications.group": "{count} notificacións",
"notifications.mark_as_read": "Marcar todas as notificacións como lidas", "notifications.mark_as_read": "Marcar todas as notificacións como lidas",
"notifications.permission_denied": "Non se activaron as notificacións de escritorio porque se denegou o permiso.", "notifications.permission_denied": "Non se activaron as notificacións de escritorio porque se denegou o permiso",
"notifications.permission_denied_alert": "Non se poden activar as notificacións de escritorio, xa que o permiso para o navegador foi denegado previamente", "notifications.permission_denied_alert": "Non se poden activar as notificacións de escritorio, xa que o permiso para o navegador foi denegado previamente",
"notifications.permission_required": "As notificacións de escritorio non están dispoñibles porque non se concedeu o permiso necesario.",
"notifications_permission_banner.enable": "Activar notificacións de escritorio", "notifications_permission_banner.enable": "Activar notificacións de escritorio",
"notifications_permission_banner.how_to_control": "Activa as notificacións de escritorio para recibir notificacións mentras Mastodon non está aberto. Podes controlar de xeito preciso o tipo de interaccións crean as notificacións de escritorio a través da {icon} superior unha vez activadas.", "notifications_permission_banner.how_to_control": "Activa as notificacións de escritorio para recibir notificacións mentras Mastodon non está aberto. Podes controlar de xeito preciso o tipo de interaccións que crean as notificacións de escritorio a través da {icon} superior unha vez están activadas.",
"notifications_permission_banner.title": "Non perder nada", "notifications_permission_banner.title": "Non perder nada",
"picture_in_picture.restore": "Devolver", "picture_in_picture.restore": "Devolver",
"poll.closed": "Pechado", "poll.closed": "Pechado",
@ -360,7 +362,7 @@
"privacy.unlisted.long": "Non publicar nas cronoloxías públicas", "privacy.unlisted.long": "Non publicar nas cronoloxías públicas",
"privacy.unlisted.short": "Non listado", "privacy.unlisted.short": "Non listado",
"refresh": "Actualizar", "refresh": "Actualizar",
"regeneration_indicator.label": "Cargando…", "regeneration_indicator.label": "Estase a cargar…",
"regeneration_indicator.sublabel": "Estase a preparar a túa cronoloxía de inicio!", "regeneration_indicator.sublabel": "Estase a preparar a túa cronoloxía de inicio!",
"relative_time.days": "{number}d", "relative_time.days": "{number}d",
"relative_time.hours": "{number}h", "relative_time.hours": "{number}h",
@ -411,7 +413,7 @@
"status.pinned": "Toot fixado", "status.pinned": "Toot fixado",
"status.read_more": "Ler máis", "status.read_more": "Ler máis",
"status.reblog": "Promover", "status.reblog": "Promover",
"status.reblog_private": "Compartir á audiencia orixinal", "status.reblog_private": "Compartir coa audiencia orixinal",
"status.reblogged_by": "{name} promoveu", "status.reblogged_by": "{name} promoveu",
"status.reblogs.empty": "Aínda ninguén promoveu este toot. Cando alguén o faga, amosarase aquí.", "status.reblogs.empty": "Aínda ninguén promoveu este toot. Cando alguén o faga, amosarase aquí.",
"status.redraft": "Eliminar e reescribir", "status.redraft": "Eliminar e reescribir",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "תוצאות חיפוש", "emoji_button.search_results": "תוצאות חיפוש",
"emoji_button.symbols": "סמלים", "emoji_button.symbols": "סמלים",
"emoji_button.travel": "טיולים ואתרים", "emoji_button.travel": "טיולים ואתרים",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "No toots here!", "empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable", "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.", "empty_column.blocks": "You haven't blocked any users yet.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "הלאה", "lightbox.next": "הלאה",
"lightbox.previous": "הקודם", "lightbox.previous": "הקודם",
"lightbox.view_context": "View context",
"lists.account.add": "Add to list", "lists.account.add": "Add to list",
"lists.account.remove": "Remove from list", "lists.account.remove": "Remove from list",
"lists.delete": "Delete list", "lists.delete": "Delete list",
@ -266,9 +266,9 @@
"lists.edit.submit": "Change title", "lists.edit.submit": "Change title",
"lists.new.create": "Add list", "lists.new.create": "Add list",
"lists.new.title_placeholder": "New list title", "lists.new.title_placeholder": "New list title",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among people you follow", "lists.search": "Search among people you follow",
"lists.subheading": "Your lists", "lists.subheading": "Your lists",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Mentions", "notifications.filter.mentions": "Mentions",
"notifications.filter.polls": "Poll results", "notifications.filter.polls": "Poll results",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} notifications", "notifications.group": "{count} notifications",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "खोज परिणाम", "emoji_button.search_results": "खोज परिणाम",
"emoji_button.symbols": "प्रतीक", "emoji_button.symbols": "प्रतीक",
"emoji_button.travel": "यात्रा एवं स्थान", "emoji_button.travel": "यात्रा एवं स्थान",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "सन्नाटा! यहां कोई टूट्स नहीं!", "empty_column.account_timeline": "सन्नाटा! यहां कोई टूट्स नहीं!",
"empty_column.account_unavailable": "प्रोफाइल उपलब्ध नहीं", "empty_column.account_unavailable": "प्रोफाइल उपलब्ध नहीं",
"empty_column.blocks": "आप अभी तक किसी भी यूजर के द्वारा ब्लॉक्ड नहीं हो।", "empty_column.blocks": "आप अभी तक किसी भी यूजर के द्वारा ब्लॉक्ड नहीं हो।",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "अगला", "lightbox.next": "अगला",
"lightbox.previous": "पिछला", "lightbox.previous": "पिछला",
"lightbox.view_context": "View context",
"lists.account.add": "Add to list", "lists.account.add": "Add to list",
"lists.account.remove": "सूची से निकालें", "lists.account.remove": "सूची से निकालें",
"lists.delete": "सूची हटाएँ", "lists.delete": "सूची हटाएँ",
@ -266,9 +266,9 @@
"lists.edit.submit": "Change title", "lists.edit.submit": "Change title",
"lists.new.create": "सूची जोड़ें", "lists.new.create": "सूची जोड़ें",
"lists.new.title_placeholder": "नये सूची का शीर्षक", "lists.new.title_placeholder": "नये सूची का शीर्षक",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among people you follow", "lists.search": "Search among people you follow",
"lists.subheading": "आपकी सूचियाँ", "lists.subheading": "आपकी सूचियाँ",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "उल्लेख", "notifications.filter.mentions": "उल्लेख",
"notifications.filter.polls": "चुनाव परिणाम", "notifications.filter.polls": "चुनाव परिणाम",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} सूचनाएँ", "notifications.group": "{count} सूचनाएँ",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -134,7 +134,7 @@
"directory.new_arrivals": "New arrivals", "directory.new_arrivals": "New arrivals",
"directory.recently_active": "Nedavno aktivni", "directory.recently_active": "Nedavno aktivni",
"embed.instructions": "Embed this status on your website by copying the code below.", "embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:", "embed.preview": "Evo kako će izgledati:",
"emoji_button.activity": "Aktivnost", "emoji_button.activity": "Aktivnost",
"emoji_button.custom": "Prilagođeno", "emoji_button.custom": "Prilagođeno",
"emoji_button.flags": "Zastave", "emoji_button.flags": "Zastave",
@ -149,6 +149,7 @@
"emoji_button.search_results": "Rezultati pretraživanja", "emoji_button.search_results": "Rezultati pretraživanja",
"emoji_button.symbols": "Simboli", "emoji_button.symbols": "Simboli",
"emoji_button.travel": "Putovanje i mjesta", "emoji_button.travel": "Putovanje i mjesta",
"empty_column.account_suspended": "Račun je suspendiran",
"empty_column.account_timeline": "Ovdje nema tootova!", "empty_column.account_timeline": "Ovdje nema tootova!",
"empty_column.account_unavailable": "Profil nije dostupan", "empty_column.account_unavailable": "Profil nije dostupan",
"empty_column.blocks": "Još niste blokirali nikoga.", "empty_column.blocks": "Još niste blokirali nikoga.",
@ -164,7 +165,7 @@
"empty_column.home.public_timeline": "javnu vremensku crtu", "empty_column.home.public_timeline": "javnu vremensku crtu",
"empty_column.list": "Na ovoj listi još nema ničega. Kada članovi ove liste objave nove tootove, oni će se pojaviti ovdje.", "empty_column.list": "Na ovoj listi još nema ničega. Kada članovi ove liste objave nove tootove, oni će se pojaviti ovdje.",
"empty_column.lists": "You don't have any lists yet. When you create one, it will show up 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.", "empty_column.mutes": "Niste utišali nijednog korisnika.",
"empty_column.notifications": "Još nemate obavijesti. Komunicirajte s drugima kako biste započeli razgovor.", "empty_column.notifications": "Još nemate obavijesti. Komunicirajte s drugima kako biste započeli razgovor.",
"empty_column.public": "Ovdje nema ništa! Napišite nešto javno ili ručno pratite korisnike s drugi poslužitelja da biste ovo popunili", "empty_column.public": "Ovdje nema ništa! Napišite nešto javno ili ručno pratite korisnike s drugi poslužitelja da biste ovo popunili",
"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.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Sljedeće", "lightbox.next": "Sljedeće",
"lightbox.previous": "Prethodno", "lightbox.previous": "Prethodno",
"lightbox.view_context": "Prikaži kontekst",
"lists.account.add": "Dodaj na listu", "lists.account.add": "Dodaj na listu",
"lists.account.remove": "Ukloni s liste", "lists.account.remove": "Ukloni s liste",
"lists.delete": "Izbriši listu", "lists.delete": "Izbriši listu",
@ -266,9 +266,9 @@
"lists.edit.submit": "Promijeni naslov", "lists.edit.submit": "Promijeni naslov",
"lists.new.create": "Dodaj listu", "lists.new.create": "Dodaj listu",
"lists.new.title_placeholder": "Naziv nove liste", "lists.new.title_placeholder": "Naziv nove liste",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Bilo koji praćeni korisnik",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Članovi liste",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "Nitko",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Traži među praćenim ljudima", "lists.search": "Traži među praćenim ljudima",
"lists.subheading": "Vaše liste", "lists.subheading": "Vaše liste",
@ -277,10 +277,10 @@
"media_gallery.toggle_visible": "Sakrij {number, plural, one {sliku} other {slike}}", "media_gallery.toggle_visible": "Sakrij {number, plural, one {sliku} other {slike}}",
"missing_indicator.label": "Nije pronađeno", "missing_indicator.label": "Nije pronađeno",
"missing_indicator.sublabel": "This resource could not be found", "missing_indicator.sublabel": "This resource could not be found",
"mute_modal.duration": "Duration", "mute_modal.duration": "Trajanje",
"mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.hide_notifications": "Hide notifications from this user?",
"mute_modal.indefinite": "Indefinite", "mute_modal.indefinite": "Indefinite",
"navigation_bar.apps": "Mobile apps", "navigation_bar.apps": "Mobilne aplikacije",
"navigation_bar.blocks": "Blokirani korisnici", "navigation_bar.blocks": "Blokirani korisnici",
"navigation_bar.bookmarks": "Bookmarks", "navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.community_timeline": "Lokalna vremenska crta", "navigation_bar.community_timeline": "Lokalna vremenska crta",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Spominjanja", "notifications.filter.mentions": "Spominjanja",
"notifications.filter.polls": "Rezultati anketa", "notifications.filter.polls": "Rezultati anketa",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} obavijesti", "notifications.group": "{count} obavijesti",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Označi sve obavijesti kao pročitane",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",
@ -382,7 +384,7 @@
"search_popout.tips.status": "toot", "search_popout.tips.status": "toot",
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
"search_popout.tips.user": "korisnik", "search_popout.tips.user": "korisnik",
"search_results.accounts": "People", "search_results.accounts": "Ljudi",
"search_results.hashtags": "Hashtags", "search_results.hashtags": "Hashtags",
"search_results.statuses": "Toots", "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": "Searching toots by their content is not enabled on this Mastodon server.",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Keresési találatok", "emoji_button.search_results": "Keresési találatok",
"emoji_button.symbols": "Szimbólumok", "emoji_button.symbols": "Szimbólumok",
"emoji_button.travel": "Utazás és Helyek", "emoji_button.travel": "Utazás és Helyek",
"empty_column.account_suspended": "Fiók felfüggesztve",
"empty_column.account_timeline": "Itt nincs tülkölés!", "empty_column.account_timeline": "Itt nincs tülkölés!",
"empty_column.account_unavailable": "A profil nem érhető el", "empty_column.account_unavailable": "A profil nem érhető el",
"empty_column.blocks": "Még senkit sem tiltottál le.", "empty_column.blocks": "Még senkit sem tiltottál le.",
@ -258,7 +259,6 @@
"lightbox.expand": "Képnézet kinagyítása", "lightbox.expand": "Képnézet kinagyítása",
"lightbox.next": "Következő", "lightbox.next": "Következő",
"lightbox.previous": "Előző", "lightbox.previous": "Előző",
"lightbox.view_context": "Környezet megtekintése",
"lists.account.add": "Hozzáadás a listához", "lists.account.add": "Hozzáadás a listához",
"lists.account.remove": "Eltávolítás a listából", "lists.account.remove": "Eltávolítás a listából",
"lists.delete": "Lista törlése", "lists.delete": "Lista törlése",
@ -266,9 +266,9 @@
"lists.edit.submit": "Cím megváltoztatása", "lists.edit.submit": "Cím megváltoztatása",
"lists.new.create": "Lista hozzáadása", "lists.new.create": "Lista hozzáadása",
"lists.new.title_placeholder": "Új lista címe", "lists.new.title_placeholder": "Új lista címe",
"lists.replies_policy.all_replies": "Bármely követett felhasználó", "lists.replies_policy.followed": "Bármely követett felhasználó",
"lists.replies_policy.list_replies": "A lista tagjai", "lists.replies_policy.list": "A lista tagjai",
"lists.replies_policy.no_replies": "Senki", "lists.replies_policy.none": "Senki",
"lists.replies_policy.title": "Nekik mutassuk a válaszokat:", "lists.replies_policy.title": "Nekik mutassuk a válaszokat:",
"lists.search": "Keresés a követett személyek között", "lists.search": "Keresés a követett személyek között",
"lists.subheading": "Listáid", "lists.subheading": "Listáid",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Megemlítések", "notifications.filter.mentions": "Megemlítések",
"notifications.filter.polls": "Szavazások eredményei", "notifications.filter.polls": "Szavazások eredményei",
"notifications.filter.statuses": "Frissítések azoktól, akiket követsz", "notifications.filter.statuses": "Frissítések azoktól, akiket követsz",
"notifications.grant_permission": "Engedély megadása.",
"notifications.group": "{count} értesítés", "notifications.group": "{count} értesítés",
"notifications.mark_as_read": "Minden értesítés olvasottnak jelölése", "notifications.mark_as_read": "Minden értesítés olvasottnak jelölése",
"notifications.permission_denied": "Nem tudjuk engedélyezni az asztali értesítéseket, mert az engedélyt megtagadták.", "notifications.permission_denied": "Nem tudjuk engedélyezni az asztali értesítéseket, mert az engedélyt megtagadták.",
"notifications.permission_denied_alert": "Az asztali értesítések nem engedélyezhetőek, mert az engedélyt megtagadták a böngészőben", "notifications.permission_denied_alert": "Az asztali értesítések nem engedélyezhetőek, mert az engedélyt megtagadták a böngészőben",
"notifications.permission_required": "Az asztali értesítések nem elérhetőek, mert a szükséges engedélyt nem adtad meg.",
"notifications_permission_banner.enable": "Asztali értesítések engedélyezése", "notifications_permission_banner.enable": "Asztali értesítések engedélyezése",
"notifications_permission_banner.how_to_control": "Ahhoz, hogy értesítéseket kapj akkor, amikor a Mastodon nincs megnyitva, engedélyezd az asztali értesítéseket. Pontosan be tudod állítani, hogy milyen interakciókról értesülj a fenti {icon} gombon keresztül, ha egyszer már engedélyezted őket.", "notifications_permission_banner.how_to_control": "Ahhoz, hogy értesítéseket kapj akkor, amikor a Mastodon nincs megnyitva, engedélyezd az asztali értesítéseket. Pontosan be tudod állítani, hogy milyen interakciókról értesülj a fenti {icon} gombon keresztül, ha egyszer már engedélyezted őket.",
"notifications_permission_banner.title": "Soha ne mulassz el semmit", "notifications_permission_banner.title": "Soha ne mulassz el semmit",

View File

@ -9,10 +9,10 @@
"account.browse_more_on_origin_server": "Դիտել աւելին իրական պրոֆիլում", "account.browse_more_on_origin_server": "Դիտել աւելին իրական պրոֆիլում",
"account.cancel_follow_request": "չեղարկել հետեւելու հայցը", "account.cancel_follow_request": "չեղարկել հետեւելու հայցը",
"account.direct": "Նամակ գրել @{name} -ին", "account.direct": "Նամակ գրել @{name} -ին",
"account.disable_notifications": "Stop notifying me when @{name} posts", "account.disable_notifications": "Ծանուցումները անջատել @{name} գրառումների համար",
"account.domain_blocked": "Տիրոյթը արգելափակուած է", "account.domain_blocked": "Տիրոյթը արգելափակուած է",
"account.edit_profile": "Խմբագրել անձնական էջը", "account.edit_profile": "Խմբագրել անձնական էջը",
"account.enable_notifications": "Notify me when @{name} posts", "account.enable_notifications": "Ծանուցել ինձ @{name} գրառումների մասին",
"account.endorse": "Ցուցադրել անձնական էջում", "account.endorse": "Ցուցադրել անձնական էջում",
"account.follow": "Հետեւել", "account.follow": "Հետեւել",
"account.followers": "Հետեւողներ", "account.followers": "Հետեւողներ",
@ -128,7 +128,7 @@
"conversation.delete": "Ջնջել խօսակցութիւնը", "conversation.delete": "Ջնջել խօսակցութիւնը",
"conversation.mark_as_read": "Նշել որպէս ընթերցուած", "conversation.mark_as_read": "Նշել որպէս ընթերցուած",
"conversation.open": "Դիտել խօսակցութիւնը", "conversation.open": "Դիտել խօսակցութիւնը",
"conversation.with": "{names}֊երի հետ", "conversation.with": "{names}-ի հետ",
"directory.federated": "Յայտնի դաշնեզերքից", "directory.federated": "Յայտնի դաշնեզերքից",
"directory.local": "{domain} տիրոյթից միայն", "directory.local": "{domain} տիրոյթից միայն",
"directory.new_arrivals": "Նորեկներ", "directory.new_arrivals": "Նորեկներ",
@ -149,6 +149,7 @@
"emoji_button.search_results": "Որոնման արդիւնքներ", "emoji_button.search_results": "Որոնման արդիւնքներ",
"emoji_button.symbols": "Նշաններ", "emoji_button.symbols": "Նշաններ",
"emoji_button.travel": "Ուղեւորութիւն եւ տեղանքներ", "emoji_button.travel": "Ուղեւորութիւն եւ տեղանքներ",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "Այստեղ թթեր չկա՛ն։", "empty_column.account_timeline": "Այստեղ թթեր չկա՛ն։",
"empty_column.account_unavailable": "Անձնական էջը հասանելի չի", "empty_column.account_unavailable": "Անձնական էջը հասանելի չի",
"empty_column.blocks": "Դու դեռ ոչ մէկի չես արգելափակել։", "empty_column.blocks": "Դու դեռ ոչ մէկի չես արգելափակել։",
@ -168,9 +169,9 @@
"empty_column.notifications": "Ոչ մի ծանուցում դեռ չունես։ Բզիր միւսներին՝ խօսակցութիւնը սկսելու համար։", "empty_column.notifications": "Ոչ մի ծանուցում դեռ չունես։ Բզիր միւսներին՝ խօսակցութիւնը սկսելու համար։",
"empty_column.public": "Այստեղ բան չկա՛յ։ Հրապարակային մի բան գրիր կամ հետեւիր այլ հանգոյցներից էակների՝ այն լցնելու համար։", "empty_column.public": "Այստեղ բան չկա՛յ։ Հրապարակային մի բան գրիր կամ հետեւիր այլ հանգոյցներից էակների՝ այն լցնելու համար։",
"error.unexpected_crash.explanation": "Մեր ծրագրակազմում վրիպակի կամ դիտարկչի անհամատեղելիութեան պատճառով այս էջը չի կարող լիարժէք պատկերուել։", "error.unexpected_crash.explanation": "Մեր ծրագրակազմում վրիպակի կամ դիտարկչի անհամատեղելիութեան պատճառով այս էջը չի կարող լիարժէք պատկերուել։",
"error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", "error.unexpected_crash.explanation_addons": "Այս էջի ճիշտ պատկերումը չի ստացում։ Խափանումը հաւանաբար առաջացել է դիտարկիչի յավելվածից կամ առցանց թարգմանիչից։",
"error.unexpected_crash.next_steps": "Փորձիր թարմացնել էջը։ Եթե դա չօգնի ապա կարող ես օգտվել Մաստադոնից ուրիշ դիտարկիչով կամ հավելվածով։", "error.unexpected_crash.next_steps": "Փորձիր թարմացնել էջը։ Եթե դա չօգնի ապա կարող ես օգտվել Մաստադոնից ուրիշ դիտարկիչով կամ հավելվածով։",
"error.unexpected_crash.next_steps_addons": "Try disabling them and 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.next_steps_addons": "Փորձիր անջատել յաւելուածները եւ թարմացնել էջը։ Եթե դա չօգնի, կարող ես օգտուել Մաստադոնից այլ դիտարկիչով կամ յաւելուածով։",
"errors.unexpected_crash.copy_stacktrace": "Պատճենել սթաքթրեյսը սեղմատախտակին", "errors.unexpected_crash.copy_stacktrace": "Պատճենել սթաքթրեյսը սեղմատախտակին",
"errors.unexpected_crash.report_issue": "Զեկուցել խնդրի մասին", "errors.unexpected_crash.report_issue": "Զեկուցել խնդրի մասին",
"follow_request.authorize": "Վավերացնել", "follow_request.authorize": "Վավերացնել",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Հաջորդ", "lightbox.next": "Հաջորդ",
"lightbox.previous": "Նախորդ", "lightbox.previous": "Նախորդ",
"lightbox.view_context": "Տեսնել ենթատեքստը",
"lists.account.add": "Ավելացնել ցանկին", "lists.account.add": "Ավելացնել ցանկին",
"lists.account.remove": "Հանել ցանկից", "lists.account.remove": "Հանել ցանկից",
"lists.delete": "Ջնջել ցանկը", "lists.delete": "Ջնջել ցանկը",
@ -266,9 +266,9 @@
"lists.edit.submit": "Փոխել վերնագիրը", "lists.edit.submit": "Փոխել վերնագիրը",
"lists.new.create": "Ավելացնել ցանկ", "lists.new.create": "Ավելացնել ցանկ",
"lists.new.title_placeholder": "Նոր ցանկի վերնագիր", "lists.new.title_placeholder": "Նոր ցանկի վերնագիր",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "Ոչ ոք",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Փնտրել քո հետեւած մարդկանց մեջ", "lists.search": "Փնտրել քո հետեւած մարդկանց մեջ",
"lists.subheading": "Քո ցանկերը", "lists.subheading": "Քո ցանկերը",
@ -277,9 +277,9 @@
"media_gallery.toggle_visible": "Ցուցադրել/թաքցնել", "media_gallery.toggle_visible": "Ցուցադրել/թաքցնել",
"missing_indicator.label": "Չգտնվեց", "missing_indicator.label": "Չգտնվեց",
"missing_indicator.sublabel": "Պաշարը չի գտնւում", "missing_indicator.sublabel": "Պաշարը չի գտնւում",
"mute_modal.duration": "Duration", "mute_modal.duration": "Տևողություն",
"mute_modal.hide_notifications": "Թաքցնե՞լ ցանուցումներն այս օգտատիրոջից։", "mute_modal.hide_notifications": "Թաքցնե՞լ ցանուցումներն այս օգտատիրոջից։",
"mute_modal.indefinite": "Indefinite", "mute_modal.indefinite": "Անժամկետ",
"navigation_bar.apps": "Դիւրակիր յաւելուածներ", "navigation_bar.apps": "Դիւրակիր յաւելուածներ",
"navigation_bar.blocks": "Արգելափակված օգտատերեր", "navigation_bar.blocks": "Արգելափակված օգտատերեր",
"navigation_bar.bookmarks": "Էջանիշեր", "navigation_bar.bookmarks": "Էջանիշեր",
@ -310,7 +310,7 @@
"notification.own_poll": "Հարցումդ աւարտուեց", "notification.own_poll": "Հարցումդ աւարտուեց",
"notification.poll": "Հարցումը, ուր դու քուէարկել ես, աւարտուեց։", "notification.poll": "Հարցումը, ուր դու քուէարկել ես, աւարտուեց։",
"notification.reblog": "{name} տարածեց թութդ", "notification.reblog": "{name} տարածեց թութդ",
"notification.status": "{name} just posted", "notification.status": "{name} հենց նոր թթեց",
"notifications.clear": "Մաքրել ծանուցումները", "notifications.clear": "Մաքրել ծանուցումները",
"notifications.clear_confirmation": "Վստա՞հ ես, որ ուզում ես մշտապէս մաքրել քո բոլոր ծանուցումները։", "notifications.clear_confirmation": "Վստա՞հ ես, որ ուզում ես մշտապէս մաքրել քո բոլոր ծանուցումները։",
"notifications.column_settings.alert": "Աշխատատիրոյթի ծանուցումներ", "notifications.column_settings.alert": "Աշխատատիրոյթի ծանուցումներ",
@ -326,7 +326,7 @@
"notifications.column_settings.reblog": "Տարածածներից՝", "notifications.column_settings.reblog": "Տարածածներից՝",
"notifications.column_settings.show": "Ցուցադրել սիւնում", "notifications.column_settings.show": "Ցուցադրել սիւնում",
"notifications.column_settings.sound": "Ձայն հանել", "notifications.column_settings.sound": "Ձայն հանել",
"notifications.column_settings.status": "New toots:", "notifications.column_settings.status": "Նոր թթեր։",
"notifications.filter.all": "Բոլորը", "notifications.filter.all": "Բոլորը",
"notifications.filter.boosts": "Տարածածները", "notifications.filter.boosts": "Տարածածները",
"notifications.filter.favourites": "Հաւանածները", "notifications.filter.favourites": "Հաւանածները",
@ -334,14 +334,16 @@
"notifications.filter.mentions": "Նշումները", "notifications.filter.mentions": "Նշումները",
"notifications.filter.polls": "Հարցման արդիւնքները", "notifications.filter.polls": "Հարցման արդիւնքները",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Թոյլատրել։",
"notifications.group": "{count} ծանուցում", "notifications.group": "{count} ծանուցում",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Համարել բոլոր ծանուցումները ընթերցած",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Միացնել դիտարկչից ծանուցումները",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",
"picture_in_picture.restore": "Put it back", "picture_in_picture.restore": "Հետ բերել",
"poll.closed": "Փակ", "poll.closed": "Փակ",
"poll.refresh": "Թարմացնել", "poll.refresh": "Թարմացնել",
"poll.total_people": "{count, plural, one {# հոգի} other {# հոգի}}", "poll.total_people": "{count, plural, one {# հոգի} other {# հոգի}}",
@ -468,7 +470,7 @@
"upload_modal.detect_text": "Հայտնբերել տեքստը նկարից", "upload_modal.detect_text": "Հայտնբերել տեքստը նկարից",
"upload_modal.edit_media": "Խմբագրել մեդիան", "upload_modal.edit_media": "Խմբագրել մեդիան",
"upload_modal.hint": "Սեղմէք եւ տեղաշարժէք նախադիտման շրջանակը՝ որ ընտրէք մանրապատկերում միշտ տեսանելի կէտը։", "upload_modal.hint": "Սեղմէք եւ տեղաշարժէք նախադիտման շրջանակը՝ որ ընտրէք մանրապատկերում միշտ տեսանելի կէտը։",
"upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preparing_ocr": "Գրաճանաչման նախապատրաստում…",
"upload_modal.preview_label": "Նախադիտում ({ratio})", "upload_modal.preview_label": "Նախադիտում ({ratio})",
"upload_progress.label": "Վերբեռնվում է…", "upload_progress.label": "Վերբեռնվում է…",
"video.close": "Փակել տեսագրութիւնը", "video.close": "Փակել տեսագրութիւնը",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Hasil pencarian", "emoji_button.search_results": "Hasil pencarian",
"emoji_button.symbols": "Simbol", "emoji_button.symbols": "Simbol",
"emoji_button.travel": "Tempat Wisata", "emoji_button.travel": "Tempat Wisata",
"empty_column.account_suspended": "Akun ditangguhkan",
"empty_column.account_timeline": "Tidak ada toot di sini!", "empty_column.account_timeline": "Tidak ada toot di sini!",
"empty_column.account_unavailable": "Profil tidak tersedia", "empty_column.account_unavailable": "Profil tidak tersedia",
"empty_column.blocks": "Anda belum memblokir siapapun.", "empty_column.blocks": "Anda belum memblokir siapapun.",
@ -258,7 +259,6 @@
"lightbox.expand": "Besarkan kotak tampilan gambar", "lightbox.expand": "Besarkan kotak tampilan gambar",
"lightbox.next": "Selanjutnya", "lightbox.next": "Selanjutnya",
"lightbox.previous": "Sebelumnya", "lightbox.previous": "Sebelumnya",
"lightbox.view_context": "Lihat konteks",
"lists.account.add": "Tambah ke daftar", "lists.account.add": "Tambah ke daftar",
"lists.account.remove": "Hapus dari daftar", "lists.account.remove": "Hapus dari daftar",
"lists.delete": "Hapus daftar", "lists.delete": "Hapus daftar",
@ -266,9 +266,9 @@
"lists.edit.submit": "Ubah judul", "lists.edit.submit": "Ubah judul",
"lists.new.create": "Tambah daftar", "lists.new.create": "Tambah daftar",
"lists.new.title_placeholder": "Judul daftar baru", "lists.new.title_placeholder": "Judul daftar baru",
"lists.replies_policy.all_replies": "Siapapun pengguna yang diikuti", "lists.replies_policy.followed": "Siapapun pengguna yang diikuti",
"lists.replies_policy.list_replies": "Anggota di daftar tersebut", "lists.replies_policy.list": "Anggota di daftar tersebut",
"lists.replies_policy.no_replies": "Tidak ada satu pun", "lists.replies_policy.none": "Tidak ada satu pun",
"lists.replies_policy.title": "Tampilkan balasan ke:", "lists.replies_policy.title": "Tampilkan balasan ke:",
"lists.search": "Cari di antara orang yang Anda ikuti", "lists.search": "Cari di antara orang yang Anda ikuti",
"lists.subheading": "Daftar Anda", "lists.subheading": "Daftar Anda",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Sebutan", "notifications.filter.mentions": "Sebutan",
"notifications.filter.polls": "Hasil japat", "notifications.filter.polls": "Hasil japat",
"notifications.filter.statuses": "Pembaruan dari orang yang Anda ikuti", "notifications.filter.statuses": "Pembaruan dari orang yang Anda ikuti",
"notifications.grant_permission": "Setujui izin.",
"notifications.group": "{count} notifikasi", "notifications.group": "{count} notifikasi",
"notifications.mark_as_read": "Tandai setiap notifikasi sebagai sudah dibaca", "notifications.mark_as_read": "Tandai setiap notifikasi sebagai sudah dibaca",
"notifications.permission_denied": "Tidak dapat mengaktifkan notifikasi desktop karena izin ditolak.", "notifications.permission_denied": "Tidak dapat mengaktifkan notifikasi desktop karena izin ditolak.",
"notifications.permission_denied_alert": "Notifikasi desktop tidak dapat diaktifkan karena izin peramban telah ditolak sebelumnya", "notifications.permission_denied_alert": "Notifikasi desktop tidak dapat diaktifkan karena izin peramban telah ditolak sebelumnya",
"notifications.permission_required": "Notifikasi desktop tidak tersedia karena izin yang dibutuhkan belum disetujui.",
"notifications_permission_banner.enable": "Aktifkan notifikasi desktop", "notifications_permission_banner.enable": "Aktifkan notifikasi desktop",
"notifications_permission_banner.how_to_control": "Untuk menerima notifikasi saat Mastodon terbuka, aktifkan notifikasi desktop. Anda dapat mengendalikan tipe interaksi mana yang ditampilkan notifikasi desktop melalui tombol {icon} di atas saat sudah aktif.", "notifications_permission_banner.how_to_control": "Untuk menerima notifikasi saat Mastodon terbuka, aktifkan notifikasi desktop. Anda dapat mengendalikan tipe interaksi mana yang ditampilkan notifikasi desktop melalui tombol {icon} di atas saat sudah aktif.",
"notifications_permission_banner.title": "Jangan lewatkan apapun", "notifications_permission_banner.title": "Jangan lewatkan apapun",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Search results", "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols", "emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places", "emoji_button.travel": "Travel & Places",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "No toots here!", "empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable", "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.", "empty_column.blocks": "You haven't blocked any users yet.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Next", "lightbox.next": "Next",
"lightbox.previous": "Previous", "lightbox.previous": "Previous",
"lightbox.view_context": "View context",
"lists.account.add": "Add to list", "lists.account.add": "Add to list",
"lists.account.remove": "Remove from list", "lists.account.remove": "Remove from list",
"lists.delete": "Delete list", "lists.delete": "Delete list",
@ -266,9 +266,9 @@
"lists.edit.submit": "Change title", "lists.edit.submit": "Change title",
"lists.new.create": "Add list", "lists.new.create": "Add list",
"lists.new.title_placeholder": "New list title", "lists.new.title_placeholder": "New list title",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among people you follow", "lists.search": "Search among people you follow",
"lists.subheading": "Your lists", "lists.subheading": "Your lists",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Mentions", "notifications.filter.mentions": "Mentions",
"notifications.filter.polls": "Poll results", "notifications.filter.polls": "Poll results",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} notifications", "notifications.group": "{count} notifications",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Leitarniðurstöður", "emoji_button.search_results": "Leitarniðurstöður",
"emoji_button.symbols": "Tákn", "emoji_button.symbols": "Tákn",
"emoji_button.travel": "Ferðalög og staðir", "emoji_button.travel": "Ferðalög og staðir",
"empty_column.account_suspended": "Notandaaðgangur í bið",
"empty_column.account_timeline": "Engin tíst hér!", "empty_column.account_timeline": "Engin tíst hér!",
"empty_column.account_unavailable": "Notandasnið ekki tiltækt", "empty_column.account_unavailable": "Notandasnið ekki tiltækt",
"empty_column.blocks": "Þú hefur ekki ennþá útilokað neina notendur.", "empty_column.blocks": "Þú hefur ekki ennþá útilokað neina notendur.",
@ -258,7 +259,6 @@
"lightbox.expand": "Fletta út myndskoðunarreit", "lightbox.expand": "Fletta út myndskoðunarreit",
"lightbox.next": "Næsta", "lightbox.next": "Næsta",
"lightbox.previous": "Fyrra", "lightbox.previous": "Fyrra",
"lightbox.view_context": "Skoða samhengi",
"lists.account.add": "Bæta á lista", "lists.account.add": "Bæta á lista",
"lists.account.remove": "Fjarlægja af lista", "lists.account.remove": "Fjarlægja af lista",
"lists.delete": "Eyða lista", "lists.delete": "Eyða lista",
@ -266,9 +266,9 @@
"lists.edit.submit": "Breyta titli", "lists.edit.submit": "Breyta titli",
"lists.new.create": "Bæta við lista", "lists.new.create": "Bæta við lista",
"lists.new.title_placeholder": "Titill á nýjum lista", "lists.new.title_placeholder": "Titill á nýjum lista",
"lists.replies_policy.all_replies": "Allra notenda sem fylgst er með", "lists.replies_policy.followed": "Allra notenda sem fylgst er með",
"lists.replies_policy.list_replies": "Meðlima listans", "lists.replies_policy.list": "Meðlima listans",
"lists.replies_policy.no_replies": "Engra", "lists.replies_policy.none": "Engra",
"lists.replies_policy.title": "Sýna svör til:", "lists.replies_policy.title": "Sýna svör til:",
"lists.search": "Leita meðal þeirra sem þú fylgist með", "lists.search": "Leita meðal þeirra sem þú fylgist með",
"lists.subheading": "Listarnir þínir", "lists.subheading": "Listarnir þínir",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Tilvísanir", "notifications.filter.mentions": "Tilvísanir",
"notifications.filter.polls": "Niðurstöður könnunar", "notifications.filter.polls": "Niðurstöður könnunar",
"notifications.filter.statuses": "Uppfærslur frá fólki sem þú fylgist með", "notifications.filter.statuses": "Uppfærslur frá fólki sem þú fylgist með",
"notifications.grant_permission": "Veita heimild.",
"notifications.group": "{count} tilkynningar", "notifications.group": "{count} tilkynningar",
"notifications.mark_as_read": "Merkja allar tilkynningar sem lesnar", "notifications.mark_as_read": "Merkja allar tilkynningar sem lesnar",
"notifications.permission_denied": "Tilkynningar á skjáborði eru ekki aðgengilegar megna áður hafnaðra beiðna fyrir vafra", "notifications.permission_denied": "Tilkynningar á skjáborði eru ekki aðgengilegar megna áður hafnaðra beiðna fyrir vafra",
"notifications.permission_denied_alert": "Ekki var hægt að virkja tilkynningar á skjáborði, þar sem heimildum fyrir vafra var áður hafnað", "notifications.permission_denied_alert": "Ekki var hægt að virkja tilkynningar á skjáborði, þar sem heimildum fyrir vafra var áður hafnað",
"notifications.permission_required": "Tilkynningar á skjáborði eru ekki aðgengilegar þar sem nauðsynlegar heimildir hafa ekki verið veittar.",
"notifications_permission_banner.enable": "Virkja tilkynningar á skjáborði", "notifications_permission_banner.enable": "Virkja tilkynningar á skjáborði",
"notifications_permission_banner.how_to_control": "Til að taka á móti tilkynningum þegar Mastodon er ekki opið, skaltu virkja tilkynningar á skjáborði. Þegar þær eru orðnar virkar geturðu stýrt nákvæmlega hverskonar atvik framleiða tilkynningar með því að nota {icon}-hnappinn hér fyrir ofan.", "notifications_permission_banner.how_to_control": "Til að taka á móti tilkynningum þegar Mastodon er ekki opið, skaltu virkja tilkynningar á skjáborði. Þegar þær eru orðnar virkar geturðu stýrt nákvæmlega hverskonar atvik framleiða tilkynningar með því að nota {icon}-hnappinn hér fyrir ofan.",
"notifications_permission_banner.title": "Aldrei missa af neinu", "notifications_permission_banner.title": "Aldrei missa af neinu",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Risultati della ricerca", "emoji_button.search_results": "Risultati della ricerca",
"emoji_button.symbols": "Simboli", "emoji_button.symbols": "Simboli",
"emoji_button.travel": "Viaggi & Luoghi", "emoji_button.travel": "Viaggi & Luoghi",
"empty_column.account_suspended": "Account sospeso",
"empty_column.account_timeline": "Nessun toot qui!", "empty_column.account_timeline": "Nessun toot qui!",
"empty_column.account_unavailable": "Profilo non disponibile", "empty_column.account_unavailable": "Profilo non disponibile",
"empty_column.blocks": "Non hai ancora bloccato alcun utente.", "empty_column.blocks": "Non hai ancora bloccato alcun utente.",
@ -258,7 +259,6 @@
"lightbox.expand": "Espandi casella di visualizzazione immagine", "lightbox.expand": "Espandi casella di visualizzazione immagine",
"lightbox.next": "Successivo", "lightbox.next": "Successivo",
"lightbox.previous": "Precedente", "lightbox.previous": "Precedente",
"lightbox.view_context": "Mostra contesto",
"lists.account.add": "Aggiungi alla lista", "lists.account.add": "Aggiungi alla lista",
"lists.account.remove": "Togli dalla lista", "lists.account.remove": "Togli dalla lista",
"lists.delete": "Elimina lista", "lists.delete": "Elimina lista",
@ -266,9 +266,9 @@
"lists.edit.submit": "Cambia titolo", "lists.edit.submit": "Cambia titolo",
"lists.new.create": "Aggiungi lista", "lists.new.create": "Aggiungi lista",
"lists.new.title_placeholder": "Titolo della nuova lista", "lists.new.title_placeholder": "Titolo della nuova lista",
"lists.replies_policy.all_replies": "Qualsiasi utente seguito", "lists.replies_policy.followed": "Qualsiasi utente seguito",
"lists.replies_policy.list_replies": "Iscritti alla lista", "lists.replies_policy.list": "Iscritti alla lista",
"lists.replies_policy.no_replies": "Nessuno", "lists.replies_policy.none": "Nessuno",
"lists.replies_policy.title": "Mostra risposte a:", "lists.replies_policy.title": "Mostra risposte a:",
"lists.search": "Cerca tra le persone che segui", "lists.search": "Cerca tra le persone che segui",
"lists.subheading": "Le tue liste", "lists.subheading": "Le tue liste",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Menzioni", "notifications.filter.mentions": "Menzioni",
"notifications.filter.polls": "Risultati del sondaggio", "notifications.filter.polls": "Risultati del sondaggio",
"notifications.filter.statuses": "Aggiornamenti dalle persone che segui", "notifications.filter.statuses": "Aggiornamenti dalle persone che segui",
"notifications.grant_permission": "Dai il permesso.",
"notifications.group": "{count} notifiche", "notifications.group": "{count} notifiche",
"notifications.mark_as_read": "Segna tutte le notifiche come lette", "notifications.mark_as_read": "Segna tutte le notifiche come lette",
"notifications.permission_denied": "Impossibile abilitare le notifiche sul desktop perché il permesso è stato negato.", "notifications.permission_denied": "Impossibile abilitare le notifiche sul desktop perché il permesso è stato negato.",
"notifications.permission_denied_alert": "Le notifiche sul desktop non possono essere abilitate, poiché il permesso nel browser è stato negato in precedenza", "notifications.permission_denied_alert": "Le notifiche sul desktop non possono essere abilitate, poiché il permesso nel browser è stato negato in precedenza",
"notifications.permission_required": "Le notifiche desktop non sono disponibili perché l'autorizzazione richiesta non è stata concessa.",
"notifications_permission_banner.enable": "Abilita le notifiche sul desktop", "notifications_permission_banner.enable": "Abilita le notifiche sul desktop",
"notifications_permission_banner.how_to_control": "Per ricevere notifiche quando Mastodon non è aperto, abilita le notifiche desktop. Puoi controllare con precisione quali tipi di interazioni generano notifiche desktop tramite il pulsante {icon} qui sopra, dopo averle abilitate.", "notifications_permission_banner.how_to_control": "Per ricevere notifiche quando Mastodon non è aperto, abilita le notifiche desktop. Puoi controllare con precisione quali tipi di interazioni generano notifiche desktop tramite il pulsante {icon} qui sopra, dopo averle abilitate.",
"notifications_permission_banner.title": "Non perderti mai nulla", "notifications_permission_banner.title": "Non perderti mai nulla",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "検索結果", "emoji_button.search_results": "検索結果",
"emoji_button.symbols": "記号", "emoji_button.symbols": "記号",
"emoji_button.travel": "旅行と場所", "emoji_button.travel": "旅行と場所",
"empty_column.account_suspended": "アカウントは停止されています",
"empty_column.account_timeline": "トゥートがありません!", "empty_column.account_timeline": "トゥートがありません!",
"empty_column.account_unavailable": "プロフィールは利用できません", "empty_column.account_unavailable": "プロフィールは利用できません",
"empty_column.blocks": "まだ誰もブロックしていません。", "empty_column.blocks": "まだ誰もブロックしていません。",
@ -254,11 +255,10 @@
"keyboard_shortcuts.unfocus": "トゥート入力欄・検索欄から離れる", "keyboard_shortcuts.unfocus": "トゥート入力欄・検索欄から離れる",
"keyboard_shortcuts.up": "カラム内一つ上に移動", "keyboard_shortcuts.up": "カラム内一つ上に移動",
"lightbox.close": "閉じる", "lightbox.close": "閉じる",
"lightbox.compress": "Compress image view box", "lightbox.compress": "画像ビューボックスを閉じる",
"lightbox.expand": "Expand image view box", "lightbox.expand": "画像ビューボックスを開く",
"lightbox.next": "次", "lightbox.next": "次",
"lightbox.previous": "前", "lightbox.previous": "前",
"lightbox.view_context": "トゥートを表示",
"lists.account.add": "リストに追加", "lists.account.add": "リストに追加",
"lists.account.remove": "リストから外す", "lists.account.remove": "リストから外す",
"lists.delete": "リストを削除", "lists.delete": "リストを削除",
@ -266,9 +266,9 @@
"lists.edit.submit": "タイトルを変更", "lists.edit.submit": "タイトルを変更",
"lists.new.create": "リストを作成", "lists.new.create": "リストを作成",
"lists.new.title_placeholder": "新規リスト名", "lists.new.title_placeholder": "新規リスト名",
"lists.replies_policy.all_replies": "フォロー中のユーザー全員", "lists.replies_policy.followed": "フォロー中のユーザー全員",
"lists.replies_policy.list_replies": "リストのメンバー", "lists.replies_policy.list": "リストのメンバー",
"lists.replies_policy.no_replies": "表示しない", "lists.replies_policy.none": "表示しない",
"lists.replies_policy.title": "リプライを表示:", "lists.replies_policy.title": "リプライを表示:",
"lists.search": "フォローしている人の中から検索", "lists.search": "フォローしている人の中から検索",
"lists.subheading": "あなたのリスト", "lists.subheading": "あなたのリスト",
@ -333,11 +333,13 @@
"notifications.filter.follows": "フォロー", "notifications.filter.follows": "フォロー",
"notifications.filter.mentions": "返信", "notifications.filter.mentions": "返信",
"notifications.filter.polls": "アンケート結果", "notifications.filter.polls": "アンケート結果",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "フォローしている人の新着情報",
"notifications.grant_permission": "権限の付与",
"notifications.group": "{count} 件の通知", "notifications.group": "{count} 件の通知",
"notifications.mark_as_read": "すべて既読にする", "notifications.mark_as_read": "すべて既読にする",
"notifications.permission_denied": "ブラウザの通知が拒否されているためデスクトップ通知は利用できません", "notifications.permission_denied": "ブラウザの通知が拒否されているためデスクトップ通知は利用できません",
"notifications.permission_denied_alert": "ブラウザの通知が拒否されているためデスクトップ通知を有効にできません", "notifications.permission_denied_alert": "ブラウザの通知が拒否されているためデスクトップ通知を有効にできません",
"notifications.permission_required": "必要な権限が付与されていないため、デスクトップ通知は利用できません。",
"notifications_permission_banner.enable": "デスクトップ通知を有効にする", "notifications_permission_banner.enable": "デスクトップ通知を有効にする",
"notifications_permission_banner.how_to_control": "Mastodon を閉じている間でも通知を受信するにはデスクトップ通知を有効にしてください。有効にすると上の {icon} ボタンから通知の内容を細かくカスタマイズできます。", "notifications_permission_banner.how_to_control": "Mastodon を閉じている間でも通知を受信するにはデスクトップ通知を有効にしてください。有効にすると上の {icon} ボタンから通知の内容を細かくカスタマイズできます。",
"notifications_permission_banner.title": "お見逃しなく", "notifications_permission_banner.title": "お見逃しなく",
@ -357,7 +359,7 @@
"privacy.private.short": "フォロワー限定", "privacy.private.short": "フォロワー限定",
"privacy.public.long": "誰でも閲覧可、公開TLに表示", "privacy.public.long": "誰でも閲覧可、公開TLに表示",
"privacy.public.short": "公開", "privacy.public.short": "公開",
"privacy.unlisted.long": "誰でも閲覧可、公開タイムラインに非表示", "privacy.unlisted.long": "誰でも閲覧可、公開TLに非表示",
"privacy.unlisted.short": "未収載", "privacy.unlisted.short": "未収載",
"refresh": "更新", "refresh": "更新",
"regeneration_indicator.label": "読み込み中…", "regeneration_indicator.label": "読み込み中…",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "ძებნის შედეგები", "emoji_button.search_results": "ძებნის შედეგები",
"emoji_button.symbols": "სიმბოლოები", "emoji_button.symbols": "სიმბოლოები",
"emoji_button.travel": "მოგზაურობა და ადგილები", "emoji_button.travel": "მოგზაურობა და ადგილები",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "No toots here!", "empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable", "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.", "empty_column.blocks": "You haven't blocked any users yet.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "შემდეგი", "lightbox.next": "შემდეგი",
"lightbox.previous": "წინა", "lightbox.previous": "წინა",
"lightbox.view_context": "View context",
"lists.account.add": "სიაში დამატება", "lists.account.add": "სიაში დამატება",
"lists.account.remove": "სიიდან ამოშლა", "lists.account.remove": "სიიდან ამოშლა",
"lists.delete": "სიის წაშლა", "lists.delete": "სიის წაშლა",
@ -266,9 +266,9 @@
"lists.edit.submit": "Change title", "lists.edit.submit": "Change title",
"lists.new.create": "სიის დამატება", "lists.new.create": "სიის დამატება",
"lists.new.title_placeholder": "ახალი სიის სათაური", "lists.new.title_placeholder": "ახალი სიის სათაური",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "ძებნა ადამიანებს შორის რომელთაც მიჰყვებით", "lists.search": "ძებნა ადამიანებს შორის რომელთაც მიჰყვებით",
"lists.subheading": "თქვენი სიები", "lists.subheading": "თქვენი სიები",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Mentions", "notifications.filter.mentions": "Mentions",
"notifications.filter.polls": "Poll results", "notifications.filter.polls": "Poll results",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} შეტყობინება", "notifications.group": "{count} შეტყობინება",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Igemmaḍ n unadi", "emoji_button.search_results": "Igemmaḍ n unadi",
"emoji_button.symbols": "Izamulen", "emoji_button.symbols": "Izamulen",
"emoji_button.travel": "Imeḍqan d Yinigen", "emoji_button.travel": "Imeḍqan d Yinigen",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "Ulac tijewwaqin dagi!", "empty_column.account_timeline": "Ulac tijewwaqin dagi!",
"empty_column.account_unavailable": "Ur nufi ara amaɣnu-ayi", "empty_column.account_unavailable": "Ur nufi ara amaɣnu-ayi",
"empty_column.blocks": "Ur tesḥebseḍ ula yiwen n umseqdac ar tura.", "empty_column.blocks": "Ur tesḥebseḍ ula yiwen n umseqdac ar tura.",
@ -258,7 +259,6 @@
"lightbox.expand": "Simeɣer tamnaḍt n uskan n tugna", "lightbox.expand": "Simeɣer tamnaḍt n uskan n tugna",
"lightbox.next": "Γer zdat", "lightbox.next": "Γer zdat",
"lightbox.previous": "Γer deffir", "lightbox.previous": "Γer deffir",
"lightbox.view_context": "Ẓer amnaḍ",
"lists.account.add": "Rnu ɣer tebdart", "lists.account.add": "Rnu ɣer tebdart",
"lists.account.remove": "Kkes seg tebdart", "lists.account.remove": "Kkes seg tebdart",
"lists.delete": "Kkes tabdart", "lists.delete": "Kkes tabdart",
@ -266,9 +266,9 @@
"lists.edit.submit": "Beddel azwel", "lists.edit.submit": "Beddel azwel",
"lists.new.create": "Rnu tabdart", "lists.new.create": "Rnu tabdart",
"lists.new.title_placeholder": "Azwel amaynut n tebdart", "lists.new.title_placeholder": "Azwel amaynut n tebdart",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "Ula yiwen", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Ssken-d tiririyin i:", "lists.replies_policy.title": "Ssken-d tiririyin i:",
"lists.search": "Nadi gar yemdanen i teṭṭafaṛeḍ", "lists.search": "Nadi gar yemdanen i teṭṭafaṛeḍ",
"lists.subheading": "Tibdarin-ik·im", "lists.subheading": "Tibdarin-ik·im",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Abdar", "notifications.filter.mentions": "Abdar",
"notifications.filter.polls": "Igemmaḍ n usenqed", "notifications.filter.polls": "Igemmaḍ n usenqed",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} n tilɣa", "notifications.group": "{count} n tilɣa",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "D awezɣi ad yili wermad n yilɣa n tnarit axateṛ turagt tettwagdel.", "notifications.permission_denied": "D awezɣi ad yili wermad n yilɣa n tnarit axateṛ turagt tettwagdel.",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",
@ -468,7 +470,7 @@
"upload_modal.detect_text": "Sefru-d aḍris seg tugna", "upload_modal.detect_text": "Sefru-d aḍris seg tugna",
"upload_modal.edit_media": "Ẓreg taɣwalt", "upload_modal.edit_media": "Ẓreg taɣwalt",
"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": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
"upload_modal.preparing_ocr": "Preparing OCR…", "upload_modal.preparing_ocr": "Aheyyi n OCR…",
"upload_modal.preview_label": "Taskant ({ratio})", "upload_modal.preview_label": "Taskant ({ratio})",
"upload_progress.label": "Asali iteddu...", "upload_progress.label": "Asali iteddu...",
"video.close": "Mdel tabidyutt", "video.close": "Mdel tabidyutt",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Іздеу нәтижелері", "emoji_button.search_results": "Іздеу нәтижелері",
"emoji_button.symbols": "Таңбалар", "emoji_button.symbols": "Таңбалар",
"emoji_button.travel": "Саяхат", "emoji_button.travel": "Саяхат",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "Жазба жоқ ешқандай!", "empty_column.account_timeline": "Жазба жоқ ешқандай!",
"empty_column.account_unavailable": "Профиль қолжетімді емес", "empty_column.account_unavailable": "Профиль қолжетімді емес",
"empty_column.blocks": "Ешкімді бұғаттамағансыз.", "empty_column.blocks": "Ешкімді бұғаттамағансыз.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Келесі", "lightbox.next": "Келесі",
"lightbox.previous": "Алдыңғы", "lightbox.previous": "Алдыңғы",
"lightbox.view_context": "Контексті көрсет",
"lists.account.add": "Тізімге қосу", "lists.account.add": "Тізімге қосу",
"lists.account.remove": "Тізімнен шығару", "lists.account.remove": "Тізімнен шығару",
"lists.delete": "Тізімді өшіру", "lists.delete": "Тізімді өшіру",
@ -266,9 +266,9 @@
"lists.edit.submit": "Тақырыбын өзгерту", "lists.edit.submit": "Тақырыбын өзгерту",
"lists.new.create": "Тізім құру", "lists.new.create": "Тізім құру",
"lists.new.title_placeholder": "Жаңа тізім аты", "lists.new.title_placeholder": "Жаңа тізім аты",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Сіз іздеген адамдар арасында іздеу", "lists.search": "Сіз іздеген адамдар арасында іздеу",
"lists.subheading": "Тізімдеріңіз", "lists.subheading": "Тізімдеріңіз",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Аталымдар", "notifications.filter.mentions": "Аталымдар",
"notifications.filter.polls": "Сауалнама нәтижелері", "notifications.filter.polls": "Сауалнама нәтижелері",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} ескертпе", "notifications.group": "{count} ескертпе",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -14,8 +14,8 @@
"account.edit_profile": "Edit profile", "account.edit_profile": "Edit profile",
"account.enable_notifications": "Notify me when @{name} posts", "account.enable_notifications": "Notify me when @{name} posts",
"account.endorse": "Feature on profile", "account.endorse": "Feature on profile",
"account.follow": "Follow", "account.follow": "ಹಿಂಬಾಲಿಸಿ",
"account.followers": "Followers", "account.followers": "ಹಿಂಬಾಲಕರು",
"account.followers.empty": "No one follows this user yet.", "account.followers.empty": "No one follows this user yet.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}", "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}", "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
@ -32,7 +32,7 @@
"account.mute_notifications": "Mute notifications from @{name}", "account.mute_notifications": "Mute notifications from @{name}",
"account.muted": "Muted", "account.muted": "Muted",
"account.never_active": "Never", "account.never_active": "Never",
"account.posts": "Toots", "account.posts": "ಟೂಟ್‌ಗಳು",
"account.posts_with_replies": "Toots and replies", "account.posts_with_replies": "Toots and replies",
"account.report": "Report @{name}", "account.report": "Report @{name}",
"account.requested": "Awaiting approval", "account.requested": "Awaiting approval",
@ -54,7 +54,7 @@
"autosuggest_hashtag.per_week": "{count} per week", "autosuggest_hashtag.per_week": "{count} per week",
"boost_modal.combo": "You can press {combo} to skip this next time", "boost_modal.combo": "You can press {combo} to skip this next time",
"bundle_column_error.body": "Something went wrong while loading this component.", "bundle_column_error.body": "Something went wrong while loading this component.",
"bundle_column_error.retry": "Try again", "bundle_column_error.retry": "ಮರಳಿ ಪ್ರಯತ್ನಿಸಿ",
"bundle_column_error.title": "Network error", "bundle_column_error.title": "Network error",
"bundle_modal_error.close": "Close", "bundle_modal_error.close": "Close",
"bundle_modal_error.message": "Something went wrong while loading this component.", "bundle_modal_error.message": "Something went wrong while loading this component.",
@ -149,6 +149,7 @@
"emoji_button.search_results": "Search results", "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols", "emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places", "emoji_button.travel": "Travel & Places",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "No toots here!", "empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable", "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.", "empty_column.blocks": "You haven't blocked any users yet.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Next", "lightbox.next": "Next",
"lightbox.previous": "Previous", "lightbox.previous": "Previous",
"lightbox.view_context": "View context",
"lists.account.add": "Add to list", "lists.account.add": "Add to list",
"lists.account.remove": "Remove from list", "lists.account.remove": "Remove from list",
"lists.delete": "Delete list", "lists.delete": "Delete list",
@ -266,9 +266,9 @@
"lists.edit.submit": "Change title", "lists.edit.submit": "Change title",
"lists.new.create": "Add list", "lists.new.create": "Add list",
"lists.new.title_placeholder": "New list title", "lists.new.title_placeholder": "New list title",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among people you follow", "lists.search": "Search among people you follow",
"lists.subheading": "Your lists", "lists.subheading": "Your lists",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Mentions", "notifications.filter.mentions": "Mentions",
"notifications.filter.polls": "Poll results", "notifications.filter.polls": "Poll results",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} notifications", "notifications.group": "{count} notifications",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "검색 결과", "emoji_button.search_results": "검색 결과",
"emoji_button.symbols": "기호", "emoji_button.symbols": "기호",
"emoji_button.travel": "여행과 장소", "emoji_button.travel": "여행과 장소",
"empty_column.account_suspended": "계정 정지됨",
"empty_column.account_timeline": "여긴 툿이 없어요!", "empty_column.account_timeline": "여긴 툿이 없어요!",
"empty_column.account_unavailable": "프로필 사용 불가", "empty_column.account_unavailable": "프로필 사용 불가",
"empty_column.blocks": "아직 아무도 차단하지 않았습니다.", "empty_column.blocks": "아직 아무도 차단하지 않았습니다.",
@ -254,11 +255,10 @@
"keyboard_shortcuts.unfocus": "작성창에서 포커스 해제", "keyboard_shortcuts.unfocus": "작성창에서 포커스 해제",
"keyboard_shortcuts.up": "리스트에서 위로 이동", "keyboard_shortcuts.up": "리스트에서 위로 이동",
"lightbox.close": "닫기", "lightbox.close": "닫기",
"lightbox.compress": "Compress image view box", "lightbox.compress": "이미지 박스 압축",
"lightbox.expand": "Expand image view box", "lightbox.expand": "이미지 박스 확장",
"lightbox.next": "다음", "lightbox.next": "다음",
"lightbox.previous": "이전", "lightbox.previous": "이전",
"lightbox.view_context": "게시물 보기",
"lists.account.add": "리스트에 추가", "lists.account.add": "리스트에 추가",
"lists.account.remove": "리스트에서 제거", "lists.account.remove": "리스트에서 제거",
"lists.delete": "리스트 삭제", "lists.delete": "리스트 삭제",
@ -266,9 +266,9 @@
"lists.edit.submit": "제목 수정", "lists.edit.submit": "제목 수정",
"lists.new.create": "리스트 추가", "lists.new.create": "리스트 추가",
"lists.new.title_placeholder": "새 리스트의 이름", "lists.new.title_placeholder": "새 리스트의 이름",
"lists.replies_policy.all_replies": "팔로우 한 사용자 누구나", "lists.replies_policy.followed": "팔로우 한 사용자 누구나",
"lists.replies_policy.list_replies": "목록의 멤버들", "lists.replies_policy.list": "리스트의 구성원들",
"lists.replies_policy.no_replies": "아무도 없음", "lists.replies_policy.none": "아무도 없음",
"lists.replies_policy.title": "답글 표시:", "lists.replies_policy.title": "답글 표시:",
"lists.search": "팔로우 중인 사람들 중에서 찾기", "lists.search": "팔로우 중인 사람들 중에서 찾기",
"lists.subheading": "당신의 리스트", "lists.subheading": "당신의 리스트",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "멘션", "notifications.filter.mentions": "멘션",
"notifications.filter.polls": "투표 결과", "notifications.filter.polls": "투표 결과",
"notifications.filter.statuses": "팔로우 하는 사람들의 최신 게시물", "notifications.filter.statuses": "팔로우 하는 사람들의 최신 게시물",
"notifications.grant_permission": "권한 부여.",
"notifications.group": "{count} 개의 알림", "notifications.group": "{count} 개의 알림",
"notifications.mark_as_read": "모든 알림을 읽은 상태로 표시", "notifications.mark_as_read": "모든 알림을 읽은 상태로 표시",
"notifications.permission_denied": "권한이 거부되었기 때문에 데스크탑 알림을 활성화할 수 없음", "notifications.permission_denied": "권한이 거부되었기 때문에 데스크탑 알림을 활성화할 수 없음",
"notifications.permission_denied_alert": "이전에 브라우저 권한이 거부되었기 때문에, 데스크탑 알림이 활성화 될 수 없습니다.", "notifications.permission_denied_alert": "이전에 브라우저 권한이 거부되었기 때문에, 데스크탑 알림이 활성화 될 수 없습니다.",
"notifications.permission_required": "필요한 권한이 승인되지 않아 데스크탑 알림을 사용할 수 없습니다.",
"notifications_permission_banner.enable": "데스크탑 알림 활성화", "notifications_permission_banner.enable": "데스크탑 알림 활성화",
"notifications_permission_banner.how_to_control": "마스토돈이 열려 있지 않을 때에도 알림을 받으려면, 데스크탑 알림을 활성화 하세요. 당신은 어떤 종류의 반응이 데스크탑 알림을 발생할 지를 {icon} 버튼을 통해 세세하게 설정할 수 있습니다.", "notifications_permission_banner.how_to_control": "마스토돈이 열려 있지 않을 때에도 알림을 받으려면, 데스크탑 알림을 활성화 하세요. 당신은 어떤 종류의 반응이 데스크탑 알림을 발생할 지를 {icon} 버튼을 통해 세세하게 설정할 수 있습니다.",
"notifications_permission_banner.title": "아무것도 놓치지 마세요", "notifications_permission_banner.title": "아무것도 놓치지 마세요",
@ -448,9 +450,9 @@
"trends.counter_by_accounts": "{counter} 명이 말하는 중", "trends.counter_by_accounts": "{counter} 명이 말하는 중",
"trends.trending_now": "지금 유행중", "trends.trending_now": "지금 유행중",
"ui.beforeunload": "지금 나가면 저장되지 않은 항목을 잃게 됩니다.", "ui.beforeunload": "지금 나가면 저장되지 않은 항목을 잃게 됩니다.",
"units.short.billion": "{count}십억", "units.short.billion": "{count}B",
"units.short.million": "{count}백만", "units.short.million": "{count}B",
"units.short.thousand": "{count}", "units.short.thousand": "{count}K",
"upload_area.title": "드래그 & 드롭으로 업로드", "upload_area.title": "드래그 & 드롭으로 업로드",
"upload_button.label": "미디어 추가 (JPEG, PNG, GIF, WebM, MP4, MOV)", "upload_button.label": "미디어 추가 (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_error.limit": "파일 업로드 제한에 도달했습니다.", "upload_error.limit": "파일 업로드 제한에 도달했습니다.",

View File

@ -1,5 +1,5 @@
{ {
"account.account_note_header": "تێبینیتێبینی", "account.account_note_header": "تێبینی ",
"account.add_or_remove_from_list": "زیادکردن یان سڕینەوە لە پێرستەکان", "account.add_or_remove_from_list": "زیادکردن یان سڕینەوە لە پێرستەکان",
"account.badges.bot": "بوت", "account.badges.bot": "بوت",
"account.badges.group": "گرووپ", "account.badges.group": "گرووپ",
@ -149,6 +149,7 @@
"emoji_button.search_results": "ئەنجامەکانی گەڕان", "emoji_button.search_results": "ئەنجامەکانی گەڕان",
"emoji_button.symbols": "هێماکان", "emoji_button.symbols": "هێماکان",
"emoji_button.travel": "گەشت & شوێنەکان", "emoji_button.travel": "گەشت & شوێنەکان",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "لێرە هیچ توتەک نییە!", "empty_column.account_timeline": "لێرە هیچ توتەک نییە!",
"empty_column.account_unavailable": "پرۆفایل بەردەست نیە", "empty_column.account_unavailable": "پرۆفایل بەردەست نیە",
"empty_column.blocks": "تۆ هێشتا هیچ بەکارهێنەرێکت بلۆک نەکردووە.", "empty_column.blocks": "تۆ هێشتا هیچ بەکارهێنەرێکت بلۆک نەکردووە.",
@ -254,11 +255,10 @@
"keyboard_shortcuts.unfocus": "بۆ دروستکردنی ناوچەی دەق/گەڕان", "keyboard_shortcuts.unfocus": "بۆ دروستکردنی ناوچەی دەق/گەڕان",
"keyboard_shortcuts.up": "بۆ ئەوەی لە لیستەکەدا بڕۆیت", "keyboard_shortcuts.up": "بۆ ئەوەی لە لیستەکەدا بڕۆیت",
"lightbox.close": "دابخە", "lightbox.close": "دابخە",
"lightbox.compress": "Compress image view box", "lightbox.compress": "سندوقی نیشاندانی وێنە بپەستێنە",
"lightbox.expand": "Expand image view box", "lightbox.expand": "فراوانکردنی سندوقی بینینی وێنە",
"lightbox.next": "داهاتوو", "lightbox.next": "داهاتوو",
"lightbox.previous": "پێشوو", "lightbox.previous": "پێشوو",
"lightbox.view_context": "پێشاندانی دەق",
"lists.account.add": "زیادکردن بۆ لیست", "lists.account.add": "زیادکردن بۆ لیست",
"lists.account.remove": "لابردن لە لیست", "lists.account.remove": "لابردن لە لیست",
"lists.delete": "سڕینەوەی لیست", "lists.delete": "سڕینەوەی لیست",
@ -266,9 +266,9 @@
"lists.edit.submit": "گۆڕینی ناونیشان", "lists.edit.submit": "گۆڕینی ناونیشان",
"lists.new.create": "زیادکردنی لیست", "lists.new.create": "زیادکردنی لیست",
"lists.new.title_placeholder": "ناونیشانی لیستی نوێ", "lists.new.title_placeholder": "ناونیشانی لیستی نوێ",
"lists.replies_policy.all_replies": "هەربەکارهێنەرێکی شوێنکەوتوو", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "ئەندامانی لیستەکە", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "هیچکەس", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "پیشاندانی وەڵامەکان بۆ:", "lists.replies_policy.title": "پیشاندانی وەڵامەکان بۆ:",
"lists.search": "بگەڕێ لەناو ئەو کەسانەی کە شوێنیان کەوتویت", "lists.search": "بگەڕێ لەناو ئەو کەسانەی کە شوێنیان کەوتویت",
"lists.subheading": "لیستەکانت", "lists.subheading": "لیستەکانت",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "ئاماژەکان", "notifications.filter.mentions": "ئاماژەکان",
"notifications.filter.polls": "ئەنجامەکانی ڕاپرسی", "notifications.filter.polls": "ئەنجامەکانی ڕاپرسی",
"notifications.filter.statuses": "نوێکردنەوەکان ئەو کەسانەی کە پەیڕەوی دەکەیت", "notifications.filter.statuses": "نوێکردنەوەکان ئەو کەسانەی کە پەیڕەوی دەکەیت",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} ئاگانامە", "notifications.group": "{count} ئاگانامە",
"notifications.mark_as_read": "هەموو ئاگانامەکان وەک خوێندراوەتەوە نیشان بکە", "notifications.mark_as_read": "هەموو ئاگانامەکان وەک خوێندراوەتەوە نیشان بکە",
"notifications.permission_denied": "ناتوانرێت ئاگانامەکانی دێسکتۆپ چالاک بکرێت وەک ڕێپێدان ڕەتکرایەوە.", "notifications.permission_denied": "ناتوانرێت ئاگانامەکانی دێسکتۆپ چالاک بکرێت وەک ڕێپێدان ڕەتکرایەوە.",
"notifications.permission_denied_alert": "ناتوانرێت ئاگانامەکانی دێسکتۆپ چالاک بکرێت، چونکە پێشتر مۆڵەتی وێبگەڕ ڕەتکرایەوە", "notifications.permission_denied_alert": "ناتوانرێت ئاگانامەکانی دێسکتۆپ چالاک بکرێت، چونکە پێشتر مۆڵەتی وێبگەڕ ڕەتکرایەوە",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "چالاککردنی ئاگانامەکانی دێسکتۆپ", "notifications_permission_banner.enable": "چالاککردنی ئاگانامەکانی دێسکتۆپ",
"notifications_permission_banner.how_to_control": "بۆ وەرگرتنی ئاگانامەکان کاتێک ماستۆدۆن نەکراوەیە، ئاگانامەکانی دێسکتۆپ چالاک بکە. دەتوانیت بە وردی کۆنترۆڵی جۆری کارلێکەکان بکەیت کە ئاگانامەکانی دێسکتۆپ دروست دەکەن لە ڕێگەی دوگمەی {icon} لەسەرەوە کاتێک چالاک دەکرێن.", "notifications_permission_banner.how_to_control": "بۆ وەرگرتنی ئاگانامەکان کاتێک ماستۆدۆن نەکراوەیە، ئاگانامەکانی دێسکتۆپ چالاک بکە. دەتوانیت بە وردی کۆنترۆڵی جۆری کارلێکەکان بکەیت کە ئاگانامەکانی دێسکتۆپ دروست دەکەن لە ڕێگەی دوگمەی {icon} لەسەرەوە کاتێک چالاک دەکرێن.",
"notifications_permission_banner.title": "هەرگیز شتێک لە دەست مەدە", "notifications_permission_banner.title": "هەرگیز شتێک لە دەست مەدە",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Search results", "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols", "emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places", "emoji_button.travel": "Travel & Places",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "No toots here!", "empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable", "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.", "empty_column.blocks": "You haven't blocked any users yet.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Next", "lightbox.next": "Next",
"lightbox.previous": "Previous", "lightbox.previous": "Previous",
"lightbox.view_context": "View context",
"lists.account.add": "Add to list", "lists.account.add": "Add to list",
"lists.account.remove": "Remove from list", "lists.account.remove": "Remove from list",
"lists.delete": "Delete list", "lists.delete": "Delete list",
@ -266,9 +266,9 @@
"lists.edit.submit": "Change title", "lists.edit.submit": "Change title",
"lists.new.create": "Add list", "lists.new.create": "Add list",
"lists.new.title_placeholder": "New list title", "lists.new.title_placeholder": "New list title",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among people you follow", "lists.search": "Search among people you follow",
"lists.subheading": "Your lists", "lists.subheading": "Your lists",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Mentions", "notifications.filter.mentions": "Mentions",
"notifications.filter.polls": "Poll results", "notifications.filter.polls": "Poll results",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} notifications", "notifications.group": "{count} notifications",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Meklēšanas rezultāti", "emoji_button.search_results": "Meklēšanas rezultāti",
"emoji_button.symbols": "Simboli", "emoji_button.symbols": "Simboli",
"emoji_button.travel": "Ceļošana & Vietas", "emoji_button.travel": "Ceļošana & Vietas",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "Šeit ziņojumu nav!", "empty_column.account_timeline": "Šeit ziņojumu nav!",
"empty_column.account_unavailable": "Profile unavailable", "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "Tu neesi vēl nevienu bloķējis.", "empty_column.blocks": "Tu neesi vēl nevienu bloķējis.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Next", "lightbox.next": "Next",
"lightbox.previous": "Previous", "lightbox.previous": "Previous",
"lightbox.view_context": "View context",
"lists.account.add": "Add to list", "lists.account.add": "Add to list",
"lists.account.remove": "Remove from list", "lists.account.remove": "Remove from list",
"lists.delete": "Delete list", "lists.delete": "Delete list",
@ -266,9 +266,9 @@
"lists.edit.submit": "Change title", "lists.edit.submit": "Change title",
"lists.new.create": "Add list", "lists.new.create": "Add list",
"lists.new.title_placeholder": "New list title", "lists.new.title_placeholder": "New list title",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among people you follow", "lists.search": "Search among people you follow",
"lists.subheading": "Your lists", "lists.subheading": "Your lists",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Mentions", "notifications.filter.mentions": "Mentions",
"notifications.filter.polls": "Poll results", "notifications.filter.polls": "Poll results",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} notifications", "notifications.group": "{count} notifications",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Резултати од барање", "emoji_button.search_results": "Резултати од барање",
"emoji_button.symbols": "Симболи", "emoji_button.symbols": "Симболи",
"emoji_button.travel": "Патувања и Места", "emoji_button.travel": "Патувања и Места",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "No toots here!", "empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Недостапен профил", "empty_column.account_unavailable": "Недостапен профил",
"empty_column.blocks": "Немате сеуште блокирано корисници.", "empty_column.blocks": "Немате сеуште блокирано корисници.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Next", "lightbox.next": "Next",
"lightbox.previous": "Previous", "lightbox.previous": "Previous",
"lightbox.view_context": "View context",
"lists.account.add": "Add to list", "lists.account.add": "Add to list",
"lists.account.remove": "Remove from list", "lists.account.remove": "Remove from list",
"lists.delete": "Delete list", "lists.delete": "Delete list",
@ -266,9 +266,9 @@
"lists.edit.submit": "Change title", "lists.edit.submit": "Change title",
"lists.new.create": "Add list", "lists.new.create": "Add list",
"lists.new.title_placeholder": "New list title", "lists.new.title_placeholder": "New list title",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among people you follow", "lists.search": "Search among people you follow",
"lists.subheading": "Your lists", "lists.subheading": "Your lists",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Спомнувања", "notifications.filter.mentions": "Спомнувања",
"notifications.filter.polls": "Резултати од анкета", "notifications.filter.polls": "Резултати од анкета",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} нотификации", "notifications.group": "{count} нотификации",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -2,17 +2,17 @@
"account.account_note_header": "കുറിപ്പ്", "account.account_note_header": "കുറിപ്പ്",
"account.add_or_remove_from_list": "പട്ടികയിൽ ചേർക്കുകയോ അല്ലെങ്കിൽ മാറ്റുകയോ ചെയ്യുക", "account.add_or_remove_from_list": "പട്ടികയിൽ ചേർക്കുകയോ അല്ലെങ്കിൽ മാറ്റുകയോ ചെയ്യുക",
"account.badges.bot": "റോബോട്ട്", "account.badges.bot": "റോബോട്ട്",
"account.badges.group": "കൂട്ടം", "account.badges.group": "ഗ്രൂപ്പ്",
"account.block": "@{name} നെ ബ്ലോക്ക് ചെയ്യുക", "account.block": "@{name} -നെ തടയുക",
"account.block_domain": "{domain} ൽ നിന്നുള്ള എല്ലാം മറയ്കുക", "account.block_domain": "{domain} ൽ നിന്നുള്ള എല്ലാം മറയ്കുക",
"account.blocked": "തടഞ്ഞു", "account.blocked": "തടഞ്ഞു",
"account.browse_more_on_origin_server": "യഥാർത്ഥ പ്രൊഫൈലിലേക്ക് പോവുക", "account.browse_more_on_origin_server": "യഥാർത്ഥ പ്രൊഫൈലിലേക്ക് പോവുക",
"account.cancel_follow_request": "പിന്തുടരാനുള്ള അപേക്ഷ നിരസിക്കുക", "account.cancel_follow_request": "പിന്തുടരാനുള്ള അപേക്ഷ നിരസിക്കുക",
"account.direct": "@{name} ന് നേരിട്ട് മെസേജ് അയക്കുക", "account.direct": "@{name} ന് നേരിട്ട് മെസേജ് അയക്കുക",
"account.disable_notifications": "Stop notifying me when @{name} posts", "account.disable_notifications": "@{name} പോസ്റ്റുചെയ്യുന്നത് എന്നെ അറിയിക്കുന്നത് നിർത്തുക",
"account.domain_blocked": "മേഖല മറയ്ക്കപ്പെട്ടിരിക്കുന്നു", "account.domain_blocked": "മേഖല മറയ്ക്കപ്പെട്ടിരിക്കുന്നു",
"account.edit_profile": "പ്രൊഫൈൽ തിരുത്തുക", "account.edit_profile": "പ്രൊഫൈൽ തിരുത്തുക",
"account.enable_notifications": "Notify me when @{name} posts", "account.enable_notifications": "@{name} പോസ്റ്റ് ചെയ്യുമ്പോൾ എന്നെ അറിയിക്കുക",
"account.endorse": "പ്രൊഫൈലിൽ പ്രകടമാക്കുക", "account.endorse": "പ്രൊഫൈലിൽ പ്രകടമാക്കുക",
"account.follow": "പിന്തുടരുക", "account.follow": "പിന്തുടരുക",
"account.followers": "പിന്തുടരുന്നവർ", "account.followers": "പിന്തുടരുന്നവർ",
@ -67,7 +67,7 @@
"column.domain_blocks": "മറയ്ക്കപ്പെട്ട മേഖലകൾ", "column.domain_blocks": "മറയ്ക്കപ്പെട്ട മേഖലകൾ",
"column.favourites": "പ്രിയപ്പെട്ടവ", "column.favourites": "പ്രിയപ്പെട്ടവ",
"column.follow_requests": "പിന്തുടരാനുള്ള അഭ്യർത്ഥനകൾ", "column.follow_requests": "പിന്തുടരാനുള്ള അഭ്യർത്ഥനകൾ",
"column.home": "ഭവന", "column.home": "ഹോ",
"column.lists": "പട്ടികകൾ", "column.lists": "പട്ടികകൾ",
"column.mutes": "നിശബ്ദമാക്കപ്പെട്ട ഉപയോക്താക്കൾ", "column.mutes": "നിശബ്ദമാക്കപ്പെട്ട ഉപയോക്താക്കൾ",
"column.notifications": "അറിയിപ്പുകൾ", "column.notifications": "അറിയിപ്പുകൾ",
@ -105,17 +105,17 @@
"compose_form.spoiler.unmarked": "എഴുത്ത് മറയ്ക്കപ്പെട്ടിട്ടില്ല", "compose_form.spoiler.unmarked": "എഴുത്ത് മറയ്ക്കപ്പെട്ടിട്ടില്ല",
"compose_form.spoiler_placeholder": "നിങ്ങളുടെ മുന്നറിയിപ്പ് ഇവിടെ എഴുതുക", "compose_form.spoiler_placeholder": "നിങ്ങളുടെ മുന്നറിയിപ്പ് ഇവിടെ എഴുതുക",
"confirmation_modal.cancel": "റദ്ദാക്കുക", "confirmation_modal.cancel": "റദ്ദാക്കുക",
"confirmations.block.block_and_report": "Block & Report", "confirmations.block.block_and_report": "തടയുകയും റിപ്പോർട്ടും ചെയ്യുക",
"confirmations.block.confirm": "തടയുക", "confirmations.block.confirm": "തടയുക",
"confirmations.block.message": "Are you sure you want to block {name}?", "confirmations.block.message": "{name} തടയാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?",
"confirmations.delete.confirm": "മായ്ക്കുക", "confirmations.delete.confirm": "മായ്ക്കുക",
"confirmations.delete.message": "Are you sure you want to delete this status?", "confirmations.delete.message": "ഈ ടൂട്ട് ഇല്ലാതാക്കണം എന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
"confirmations.delete_list.confirm": "മായ്ക്കുക", "confirmations.delete_list.confirm": "മായ്ക്കുക",
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?", "confirmations.delete_list.message": "ഈ പട്ടിക എന്നെന്നേക്കുമായി നീക്കം ചെയ്യാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?",
"confirmations.domain_block.confirm": "Hide entire domain", "confirmations.domain_block.confirm": "മുഴുവൻ ഡൊമെയ്‌നും തടയുക",
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.", "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
"confirmations.logout.confirm": "പുറത്തുകടക്കുക", "confirmations.logout.confirm": "പുറത്തുകടക്കുക",
"confirmations.logout.message": "Are you sure you want to log out?", "confirmations.logout.message": "നിങ്ങൾക്ക് ലോഗ് ഔട്ട് ചെയ്യണമെന്ന് ഉറപ്പാണോ?",
"confirmations.mute.confirm": "നിശ്ശബ്ദമാക്കുക", "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": "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.message": "Are you sure you want to mute {name}?", "confirmations.mute.message": "Are you sure you want to mute {name}?",
@ -133,7 +133,7 @@
"directory.local": "{domain} ൽ നിന്ന് മാത്രം", "directory.local": "{domain} ൽ നിന്ന് മാത്രം",
"directory.new_arrivals": "പുതിയ വരവുകൾ", "directory.new_arrivals": "പുതിയ വരവുകൾ",
"directory.recently_active": "അടുത്തിടെയായി സജീവമായ", "directory.recently_active": "അടുത്തിടെയായി സജീവമായ",
"embed.instructions": "Embed this status on your website by copying the code below.", "embed.instructions": "ചുവടെയുള്ള കോഡ് പകർത്തിക്കൊണ്ട് നിങ്ങളുടെ വെബ്‌സൈറ്റിൽ ഈ ടൂട്ട് ഉൾച്ചേർക്കുക.",
"embed.preview": "ഇത് ഇങ്ങനെ കാണപ്പെടും:", "embed.preview": "ഇത് ഇങ്ങനെ കാണപ്പെടും:",
"emoji_button.activity": "പ്രവര്‍ത്തനം", "emoji_button.activity": "പ്രവര്‍ത്തനം",
"emoji_button.custom": "സ്വന്തമായ ഭേദഗതി", "emoji_button.custom": "സ്വന്തമായ ഭേദഗതി",
@ -141,7 +141,7 @@
"emoji_button.food": "ഭക്ഷണവും പാനീയവും", "emoji_button.food": "ഭക്ഷണവും പാനീയവും",
"emoji_button.label": "ഇമോജി ചേർക്കുക", "emoji_button.label": "ഇമോജി ചേർക്കുക",
"emoji_button.nature": "പ്രകൃതി", "emoji_button.nature": "പ്രകൃതി",
"emoji_button.not_found": "മോജി പാടില്ല (╯°□°)╯︵ ┻━┻", "emoji_button.not_found": "മോജി പാടില്ല (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "വസ്തുക്കൾ", "emoji_button.objects": "വസ്തുക്കൾ",
"emoji_button.people": "ആളുകൾ", "emoji_button.people": "ആളുകൾ",
"emoji_button.recent": "അടിക്കടി ഉപയോഗിക്കുന്നവ", "emoji_button.recent": "അടിക്കടി ഉപയോഗിക്കുന്നവ",
@ -149,6 +149,7 @@
"emoji_button.search_results": "തിരച്ചിൽ ഫലങ്ങൾ", "emoji_button.search_results": "തിരച്ചിൽ ഫലങ്ങൾ",
"emoji_button.symbols": "ചിഹ്നങ്ങൾ", "emoji_button.symbols": "ചിഹ്നങ്ങൾ",
"emoji_button.travel": "യാത്രയും സ്ഥലങ്ങളും", "emoji_button.travel": "യാത്രയും സ്ഥലങ്ങളും",
"empty_column.account_suspended": "അക്കൗണ്ട് താൽക്കാലികമായി നിർത്തിവച്ചു",
"empty_column.account_timeline": "ഇവിടെ ടൂട്ടുകൾ ഇല്ല!", "empty_column.account_timeline": "ഇവിടെ ടൂട്ടുകൾ ഇല്ല!",
"empty_column.account_unavailable": "പ്രൊഫൈൽ ലഭ്യമല്ല", "empty_column.account_unavailable": "പ്രൊഫൈൽ ലഭ്യമല്ല",
"empty_column.blocks": "നിങ്ങൾ ഇതുവരെ ഒരു ഉപയോക്താക്കളെയും തടഞ്ഞിട്ടില്ല.", "empty_column.blocks": "നിങ്ങൾ ഇതുവരെ ഒരു ഉപയോക്താക്കളെയും തടഞ്ഞിട്ടില്ല.",
@ -159,7 +160,7 @@
"empty_column.favourited_statuses": "നിങ്ങൾക്ക് ഇത് വരെ ഒരു പ്രിയപ്പെട്ട ടൂട്ടും ഇല്ല. നിങ്ങൾ അങ്ങനെ ഒന്ന് പ്രിയപ്പെടുന്ന പക്ഷം അതിവിടെ കാണപ്പെടുന്നതാണ്.", "empty_column.favourited_statuses": "നിങ്ങൾക്ക് ഇത് വരെ ഒരു പ്രിയപ്പെട്ട ടൂട്ടും ഇല്ല. നിങ്ങൾ അങ്ങനെ ഒന്ന് പ്രിയപ്പെടുന്ന പക്ഷം അതിവിടെ കാണപ്പെടുന്നതാണ്.",
"empty_column.favourites": "ഇതുവരെ ആരും ഈ ടൂട്ട് പ്രിയപ്പെട്ടതായി അടയാളപ്പെടുത്തിയിട്ടില്ല. ആരെങ്കിലും അങ്ങനെ ചെയ്യുന്നപക്ഷം അതിവിടെ കാണപ്പെടുന്നതാണ്.", "empty_column.favourites": "ഇതുവരെ ആരും ഈ ടൂട്ട് പ്രിയപ്പെട്ടതായി അടയാളപ്പെടുത്തിയിട്ടില്ല. ആരെങ്കിലും അങ്ങനെ ചെയ്യുന്നപക്ഷം അതിവിടെ കാണപ്പെടുന്നതാണ്.",
"empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it 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.hashtag": "ഈ ഹാഷ്‌ടാഗിൽ ഇതുവരെ ഒന്നുമില്ല.",
"empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.", "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": "പൊതു സമയരേഖ", "empty_column.home.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.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
@ -178,7 +179,7 @@
"follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.", "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"generic.saved": "സംരക്ഷിച്ചു", "generic.saved": "സംരക്ഷിച്ചു",
"getting_started.developers": "വികസിപ്പിക്കുന്നവർ", "getting_started.developers": "വികസിപ്പിക്കുന്നവർ",
"getting_started.directory": "രൂപരേഖ നാമഗൃഹസൂചി", "getting_started.directory": "പ്രൊഫൈൽ ഡയറക്ടറി",
"getting_started.documentation": "രേഖാ സമാഹരണം", "getting_started.documentation": "രേഖാ സമാഹരണം",
"getting_started.heading": "തുടക്കം കുറിക്കുക", "getting_started.heading": "തുടക്കം കുറിക്കുക",
"getting_started.invite": "ആളുകളെ ക്ഷണിക്കുക", "getting_started.invite": "ആളുകളെ ക്ഷണിക്കുക",
@ -189,7 +190,7 @@
"hashtag.column_header.tag_mode.any": "അല്ലെങ്കിൽ {additional}", "hashtag.column_header.tag_mode.any": "അല്ലെങ്കിൽ {additional}",
"hashtag.column_header.tag_mode.none": "{additional} ഇല്ലാതെ", "hashtag.column_header.tag_mode.none": "{additional} ഇല്ലാതെ",
"hashtag.column_settings.select.no_options_message": "ഒരു സൂചനയും കണ്ടെത്തിയില്ല", "hashtag.column_settings.select.no_options_message": "ഒരു സൂചനയും കണ്ടെത്തിയില്ല",
"hashtag.column_settings.select.placeholder": "ചർച്ചാവിഷയങ്ങൾ എഴുതുക…", "hashtag.column_settings.select.placeholder": "ഹാഷ്ടാഗുകൾ എഴുതുക…",
"hashtag.column_settings.tag_mode.all": "ഇവയെല്ലാം", "hashtag.column_settings.tag_mode.all": "ഇവയെല്ലാം",
"hashtag.column_settings.tag_mode.any": "ഇവയിലേതെങ്കിലും", "hashtag.column_settings.tag_mode.any": "ഇവയിലേതെങ്കിലും",
"hashtag.column_settings.tag_mode.none": "ഇതിലൊന്നുമല്ല", "hashtag.column_settings.tag_mode.none": "ഇതിലൊന്നുമല്ല",
@ -205,7 +206,7 @@
"introduction.federation.action": "അടുത്തത്", "introduction.federation.action": "അടുത്തത്",
"introduction.federation.federated.headline": "സംയുക്തമാക്കിയ", "introduction.federation.federated.headline": "സംയുക്തമാക്കിയ",
"introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.", "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
"introduction.federation.home.headline": "ഭവന", "introduction.federation.home.headline": "ഹോ",
"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": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
"introduction.federation.local.headline": "പ്രാദേശികം", "introduction.federation.local.headline": "പ്രാദേശികം",
"introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.", "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
@ -232,17 +233,17 @@
"keyboard_shortcuts.favourites": "to open favourites list", "keyboard_shortcuts.favourites": "to open favourites list",
"keyboard_shortcuts.federated": "to open federated timeline", "keyboard_shortcuts.federated": "to open federated timeline",
"keyboard_shortcuts.heading": "കീബോർഡ് എളുപ്പവഴികൾ", "keyboard_shortcuts.heading": "കീബോർഡ് എളുപ്പവഴികൾ",
"keyboard_shortcuts.home": "to open home timeline", "keyboard_shortcuts.home": "ഹോം ടൈംലൈൻ തുറക്കുന്നതിന്",
"keyboard_shortcuts.hotkey": "Hotkey", "keyboard_shortcuts.hotkey": "Hotkey",
"keyboard_shortcuts.legend": "to display this legend", "keyboard_shortcuts.legend": "to display this legend",
"keyboard_shortcuts.local": "to open local timeline", "keyboard_shortcuts.local": "പ്രാദേശിക സമയരേഖ തുറക്കാൻ",
"keyboard_shortcuts.mention": "to mention author", "keyboard_shortcuts.mention": "to mention author",
"keyboard_shortcuts.muted": "to open muted users list", "keyboard_shortcuts.muted": "to open muted users list",
"keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.my_profile": "നിങ്ങളുടെ പ്രൊഫൈൽ തുറക്കാൻ",
"keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.notifications": "to open notifications column",
"keyboard_shortcuts.open_media": "to open media", "keyboard_shortcuts.open_media": "മീഡിയ തുറക്കാൻ",
"keyboard_shortcuts.pinned": "to open pinned toots list", "keyboard_shortcuts.pinned": "to open pinned toots list",
"keyboard_shortcuts.profile": "to open author's profile", "keyboard_shortcuts.profile": "രചയിതാവിന്റെ പ്രൊഫൈൽ തുറക്കുന്നതിന്",
"keyboard_shortcuts.reply": "മറുപടി അയക്കാൻ", "keyboard_shortcuts.reply": "മറുപടി അയക്കാൻ",
"keyboard_shortcuts.requests": "to open follow requests list", "keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "to focus search", "keyboard_shortcuts.search": "to focus search",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "അടുത്തത്", "lightbox.next": "അടുത്തത്",
"lightbox.previous": "പുറകോട്ട്", "lightbox.previous": "പുറകോട്ട്",
"lightbox.view_context": "View context",
"lists.account.add": "പട്ടികയിലേക്ക് ചേർക്കുക", "lists.account.add": "പട്ടികയിലേക്ക് ചേർക്കുക",
"lists.account.remove": "പട്ടികയിൽ നിന്ന് ഒഴിവാക്കുക", "lists.account.remove": "പട്ടികയിൽ നിന്ന് ഒഴിവാക്കുക",
"lists.delete": "പട്ടിക ഒഴിവാക്കുക", "lists.delete": "പട്ടിക ഒഴിവാക്കുക",
@ -266,9 +266,9 @@
"lists.edit.submit": "തലക്കെട്ട് മാറ്റുക", "lists.edit.submit": "തലക്കെട്ട് മാറ്റുക",
"lists.new.create": "പുതിയ പട്ടിക ചേർക്കുക", "lists.new.create": "പുതിയ പട്ടിക ചേർക്കുക",
"lists.new.title_placeholder": "New list title", "lists.new.title_placeholder": "New list title",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "ആരുമില്ല",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among people you follow", "lists.search": "Search among people you follow",
"lists.subheading": "എന്റെ പട്ടികകൾ", "lists.subheading": "എന്റെ പട്ടികകൾ",
@ -277,206 +277,208 @@
"media_gallery.toggle_visible": "Hide {number, plural, one {image} other {images}}", "media_gallery.toggle_visible": "Hide {number, plural, one {image} other {images}}",
"missing_indicator.label": "കാണാനില്ല", "missing_indicator.label": "കാണാനില്ല",
"missing_indicator.sublabel": "This resource could not be found", "missing_indicator.sublabel": "This resource could not be found",
"mute_modal.duration": "Duration", "mute_modal.duration": "കാലാവധി",
"mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.hide_notifications": "Hide notifications from this user?",
"mute_modal.indefinite": "Indefinite", "mute_modal.indefinite": "അനിശ്ചിതകാല",
"navigation_bar.apps": "Mobile apps", "navigation_bar.apps": "മൊബൈൽ ആപ്പുകൾ",
"navigation_bar.blocks": "Blocked users", "navigation_bar.blocks": "തടയപ്പെട്ട ഉപയോക്താക്കൾ",
"navigation_bar.bookmarks": "അടയാളങ്ങൾ", "navigation_bar.bookmarks": "ബുക്ക്മാർക്കുകൾ",
"navigation_bar.community_timeline": "Local timeline", "navigation_bar.community_timeline": "പ്രാദേശിക സമയരേഖ",
"navigation_bar.compose": "പുതിയ ടൂട്ട് എഴുതുക", "navigation_bar.compose": "പുതിയ ടൂട്ട് എഴുതുക",
"navigation_bar.direct": "Direct messages", "navigation_bar.direct": "നേരിട്ടുള്ള സന്ദേശങ്ങൾ",
"navigation_bar.discover": "Discover", "navigation_bar.discover": "കണ്ടെത്തുക",
"navigation_bar.domain_blocks": "Hidden domains", "navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Edit profile", "navigation_bar.edit_profile": "പ്രൊഫൈൽ തിരുത്തുക",
"navigation_bar.favourites": "Favourites", "navigation_bar.favourites": "പ്രിയപ്പെട്ടവ",
"navigation_bar.filters": "Muted words", "navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "Follow requests", "navigation_bar.follow_requests": "പിന്തുടരാനുള്ള അഭ്യർത്ഥനകൾ",
"navigation_bar.follows_and_followers": "Follows and followers", "navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.info": "About this server", "navigation_bar.info": "ഈ സെർവറിനെക്കുറിച്ച്",
"navigation_bar.keyboard_shortcuts": "Hotkeys", "navigation_bar.keyboard_shortcuts": "Hotkeys",
"navigation_bar.lists": "Lists", "navigation_bar.lists": "ലിസ്റ്റുകൾ",
"navigation_bar.logout": "Logout", "navigation_bar.logout": "ലോഗൗട്ട്",
"navigation_bar.mutes": "Muted users", "navigation_bar.mutes": "നിശബ്ദമാക്കപ്പെട്ട ഉപയോക്താക്കൾ",
"navigation_bar.personal": "Personal", "navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned toots", "navigation_bar.pins": "Pinned toots",
"navigation_bar.preferences": "Preferences", "navigation_bar.preferences": "ക്രമീകരണങ്ങൾ",
"navigation_bar.public_timeline": "Federated timeline", "navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security", "navigation_bar.security": "സുരക്ഷ",
"notification.favourite": "{name} favourited your status", "notification.favourite": "{name} favourited your status",
"notification.follow": "{name} followed you", "notification.follow": "{name} നിങ്ങളെ പിന്തുടർന്നു",
"notification.follow_request": "{name} has requested to follow you", "notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} mentioned you", "notification.mention": "{name} mentioned you",
"notification.own_poll": "Your poll has ended", "notification.own_poll": "നിങ്ങളുടെ പോൾ അവസാനിച്ചു",
"notification.poll": "A poll you have voted in has ended", "notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} boosted your status", "notification.reblog": "{name} നിങ്ങളുടെ പോസ്റ്റ് ബൂസ്റ്റ് ചെയ്തു",
"notification.status": "{name} just posted", "notification.status": "{name} ഇപ്പോൾ പോസ്റ്റുചെയ്‌തു",
"notifications.clear": "Clear notifications", "notifications.clear": "അറിയിപ്പ് മായ്ക്കുക",
"notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
"notifications.column_settings.alert": "Desktop notifications", "notifications.column_settings.alert": "ഡെസ്ക്ടോപ്പ് അറിയിപ്പുകൾ",
"notifications.column_settings.favourite": "Favourites:", "notifications.column_settings.favourite": "പ്രിയപ്പെട്ടവ:",
"notifications.column_settings.filter_bar.advanced": "Display all categories", "notifications.column_settings.filter_bar.advanced": "എല്ലാ വിഭാഗങ്ങളും പ്രദർശിപ്പിക്കുക",
"notifications.column_settings.filter_bar.category": "Quick filter bar", "notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show": "Show", "notifications.column_settings.filter_bar.show": "കാണിക്കുക",
"notifications.column_settings.follow": "New followers:", "notifications.column_settings.follow": "New followers:",
"notifications.column_settings.follow_request": "New follow requests:", "notifications.column_settings.follow_request": "പുതിയ പിന്തുടരൽ അഭ്യർത്ഥനകൾ:",
"notifications.column_settings.mention": "Mentions:", "notifications.column_settings.mention": "Mentions:",
"notifications.column_settings.poll": "Poll results:", "notifications.column_settings.poll": "പോൾ ഫലങ്ങൾ:",
"notifications.column_settings.push": "Push notifications", "notifications.column_settings.push": "Push notifications",
"notifications.column_settings.reblog": "Boosts:", "notifications.column_settings.reblog": "ബൂസ്റ്റുകൾ:",
"notifications.column_settings.show": "Show in column", "notifications.column_settings.show": "Show in column",
"notifications.column_settings.sound": "Play sound", "notifications.column_settings.sound": "ശബ്ദം പ്ലേ ചെയ്യുക",
"notifications.column_settings.status": "New toots:", "notifications.column_settings.status": "പുതിയ ടൂട്ടുകൾ:",
"notifications.filter.all": "All", "notifications.filter.all": "എല്ലാം",
"notifications.filter.boosts": "Boosts", "notifications.filter.boosts": "ബൂസ്റ്റുകൾ",
"notifications.filter.favourites": "Favourites", "notifications.filter.favourites": "പ്രിയപ്പെട്ടവ",
"notifications.filter.follows": "Follows", "notifications.filter.follows": "പിന്തുടരുന്നു",
"notifications.filter.mentions": "Mentions", "notifications.filter.mentions": "Mentions",
"notifications.filter.polls": "Poll results", "notifications.filter.polls": "പോൾ ഫലങ്ങൾ",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "നിങ്ങൾ പിന്തുടരുന്ന ആളുകളിൽ നിന്നുള്ള അപ്‌ഡേറ്റുകൾ",
"notifications.group": "{count} notifications", "notifications.grant_permission": "അനുമതി നൽകുക.",
"notifications.mark_as_read": "Mark every notification as read", "notifications.group": "{count} അറിയിപ്പുകൾ",
"notifications.mark_as_read": "എല്ലാ അറിയിപ്പുകളും വായിച്ചതായി അടയാളപ്പെടുത്തുക",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "ഡെസ്ക്ടോപ്പ് അറിയിപ്പുകൾ പ്രാപ്തമാക്കുക",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",
"picture_in_picture.restore": "Put it back", "picture_in_picture.restore": "തിരികെ വയ്ക്കുക",
"poll.closed": "Closed", "poll.closed": "അടച്ചു",
"poll.refresh": "Refresh", "poll.refresh": "പുതുക്കുക",
"poll.total_people": "{count, plural, one {# person} other {# people}}", "poll.total_people": "{count, plural, one {# person} other {# people}}",
"poll.total_votes": "{count, plural, one {# vote} other {# votes}}", "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
"poll.vote": "Vote", "poll.vote": "വോട്ട് ചെയ്യുക",
"poll.voted": "You voted for this answer", "poll.voted": "You voted for this answer",
"poll_button.add_poll": "Add a poll", "poll_button.add_poll": "ഒരു പോൾ ചേർക്കുക",
"poll_button.remove_poll": "Remove poll", "poll_button.remove_poll": "പോൾ നീക്കംചെയ്യുക",
"privacy.change": "Adjust status privacy", "privacy.change": "Adjust status privacy",
"privacy.direct.long": "Post to mentioned users only", "privacy.direct.long": "Post to mentioned users only",
"privacy.direct.short": "Direct", "privacy.direct.short": "നേരിട്ട്",
"privacy.private.long": "Post to followers only", "privacy.private.long": "Post to followers only",
"privacy.private.short": "Followers-only", "privacy.private.short": "Followers-only",
"privacy.public.long": "Post to public timelines", "privacy.public.long": "Post to public timelines",
"privacy.public.short": "Public", "privacy.public.short": "Public",
"privacy.unlisted.long": "Do not show in public timelines", "privacy.unlisted.long": "Do not show in public timelines",
"privacy.unlisted.short": "Unlisted", "privacy.unlisted.short": "Unlisted",
"refresh": "Refresh", "refresh": "പുതുക്കുക",
"regeneration_indicator.label": "Loading…", "regeneration_indicator.label": "ലഭ്യമാക്കുന്നു…",
"regeneration_indicator.sublabel": "Your home feed is being prepared!", "regeneration_indicator.sublabel": "നിങ്ങളുടെ ഹോം ഫീഡ് തയാറാക്കുന്നു!",
"relative_time.days": "{number}d", "relative_time.days": "{number}d",
"relative_time.hours": "{number}h", "relative_time.hours": "{number}h",
"relative_time.just_now": "now", "relative_time.just_now": "ഇപ്പോൾ",
"relative_time.minutes": "{number}m", "relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s", "relative_time.seconds": "{number}s",
"relative_time.today": "today", "relative_time.today": "ഇന്ന്",
"reply_indicator.cancel": "Cancel", "reply_indicator.cancel": "റദ്ദാക്കുക",
"report.forward": "Forward to {target}", "report.forward": "Forward to {target}",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
"report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:", "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
"report.placeholder": "Additional comments", "report.placeholder": "കൂടുതൽ അഭിപ്രായങ്ങൾ",
"report.submit": "Submit", "report.submit": "സമർപ്പിക്കുക",
"report.target": "Report {target}", "report.target": "Report {target}",
"search.placeholder": "Search", "search.placeholder": "തിരയുക",
"search_popout.search_format": "Advanced search format", "search_popout.search_format": "Advanced search format",
"search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
"search_popout.tips.hashtag": "hashtag", "search_popout.tips.hashtag": "ഹാഷ്ടാഗ്",
"search_popout.tips.status": "status", "search_popout.tips.status": "ടൂട്ട്",
"search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags", "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
"search_popout.tips.user": "user", "search_popout.tips.user": "ഉപയോക്താവ്",
"search_results.accounts": "People", "search_results.accounts": "ആളുകൾ",
"search_results.hashtags": "Hashtags", "search_results.hashtags": "ഹാഷ്ടാഗുകൾ",
"search_results.statuses": "Toots", "search_results.statuses": "ടൂട്ടുകൾ",
"search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
"search_results.total": "{count, number} {count, plural, one {result} other {results}}", "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this status in the moderation interface", "status.admin_status": "Open this status in the moderation interface",
"status.block": "Block @{name}", "status.block": "@{name} -നെ തടയുക",
"status.bookmark": "Bookmark", "status.bookmark": "ബുക്ക്മാർക്ക്",
"status.cancel_reblog_private": "Unboost", "status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted", "status.cannot_reblog": "ഈ പോസ്റ്റ് ബൂസ്റ്ചെയ്യാൻ കഴിയില്ല",
"status.copy": "Copy link to status", "status.copy": "ടൂട്ടിലേക്ക് ലിങ്ക് പകർത്തുക",
"status.delete": "മായ്ക്കുക", "status.delete": "മായ്ക്കുക",
"status.detailed_status": "വിശദമായ സംഭാഷണ കാഴ്‌ച", "status.detailed_status": "വിശദമായ സംഭാഷണ കാഴ്‌ച",
"status.direct": "@{name} ന് നേരിട്ട് മെസേജ് അയക്കുക", "status.direct": "@{name} ന് നേരിട്ട് മെസേജ് അയക്കുക",
"status.embed": "ഉൾച്ചേർക്കുക", "status.embed": "ഉൾച്ചേർക്കുക",
"status.favourite": "പ്രിയപ്പെട്ടത്", "status.favourite": "പ്രിയപ്പെട്ടത്",
"status.filtered": "Filtered", "status.filtered": "ഫിൽട്ടർ ചെയ്‌തു",
"status.load_more": "കൂടുതൽ ലോഡു ചെയ്യുക", "status.load_more": "കൂടുതൽ ലോഡു ചെയ്യുക",
"status.media_hidden": "Media hidden", "status.media_hidden": "മീഡിയ മറച്ചു",
"status.mention": "@{name} സൂചിപ്പിക്കുക", "status.mention": "@{name} സൂചിപ്പിക്കുക",
"status.more": "More", "status.more": "കൂടുതൽ",
"status.mute": "Mute @{name}", "status.mute": "@{name}-നെ നിശ്ശബ്ദമാക്കുക",
"status.mute_conversation": "Mute conversation", "status.mute_conversation": "Mute conversation",
"status.open": "Expand this status", "status.open": "Expand this status",
"status.pin": "Pin on profile", "status.pin": "Pin on profile",
"status.pinned": "Pinned toot", "status.pinned": "Pinned toot",
"status.read_more": "Read more", "status.read_more": "കൂടുതൽ വായിക്കുക",
"status.reblog": "Boost", "status.reblog": "ബൂസ്റ്റ്",
"status.reblog_private": "Boost with original visibility", "status.reblog_private": "Boost with original visibility",
"status.reblogged_by": "{name} boosted", "status.reblogged_by": "{name} ബൂസ്റ്റ് ചെയ്തു",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft", "status.redraft": "ഇല്ലാതാക്കുക & വീണ്ടും ഡ്രാഫ്റ്റ് ചെയ്യുക",
"status.remove_bookmark": "Remove bookmark", "status.remove_bookmark": "ബുക്ക്മാർക്ക് നീക്കംചെയ്യുക",
"status.reply": "Reply", "status.reply": "മറുപടി",
"status.replyAll": "Reply to thread", "status.replyAll": "Reply to thread",
"status.report": "Report @{name}", "status.report": "Report @{name}",
"status.sensitive_warning": "Sensitive content", "status.sensitive_warning": "Sensitive content",
"status.share": "Share", "status.share": "പങ്കിടുക",
"status.show_less": "Show less", "status.show_less": "കുറച്ച് കാണിക്കുക",
"status.show_less_all": "Show less for all", "status.show_less_all": "Show less for all",
"status.show_more": "Show more", "status.show_more": "കൂടുതകൽ കാണിക്കുക",
"status.show_more_all": "Show more for all", "status.show_more_all": "എല്ലാവർക്കുമായി കൂടുതൽ കാണിക്കുക",
"status.show_thread": "Show thread", "status.show_thread": "Show thread",
"status.uncached_media_warning": "Not available", "status.uncached_media_warning": "ലഭ്യമല്ല",
"status.unmute_conversation": "Unmute conversation", "status.unmute_conversation": "Unmute conversation",
"status.unpin": "Unpin from profile", "status.unpin": "Unpin from profile",
"suggestions.dismiss": "Dismiss suggestion", "suggestions.dismiss": "Dismiss suggestion",
"suggestions.header": "You might be interested in…", "suggestions.header": "നിങ്ങൾക്ക് താൽപ്പര്യമുണ്ടാകാം…",
"tabs_bar.federated_timeline": "Federated", "tabs_bar.federated_timeline": "സംയുക്തമാക്കിയ",
"tabs_bar.home": "Home", "tabs_bar.home": "ഹോം",
"tabs_bar.local_timeline": "Local", "tabs_bar.local_timeline": "പ്രാദേശികം",
"tabs_bar.notifications": "Notifications", "tabs_bar.notifications": "അറിയിപ്പുകൾ",
"tabs_bar.search": "Search", "tabs_bar.search": "തിരയുക",
"time_remaining.days": "{number, plural, one {# day} other {# days}} left", "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
"time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left", "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left", "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining", "time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left", "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
"timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.", "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
"timeline_hint.resources.followers": "Followers", "timeline_hint.resources.followers": "പിന്തുടരുന്നവർ",
"timeline_hint.resources.follows": "Follows", "timeline_hint.resources.follows": "പിന്തുടരുന്നു",
"timeline_hint.resources.statuses": "Older toots", "timeline_hint.resources.statuses": "പഴയ ടൂട്ടുകൾ",
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
"trends.trending_now": "Trending now", "trends.trending_now": "ഇപ്പോൾ ട്രെൻഡിംഗ്",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.", "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
"units.short.billion": "{count}B", "units.short.billion": "{count}B",
"units.short.million": "{count}M", "units.short.million": "{count}ദശലക്ഷം",
"units.short.thousand": "{count}K", "units.short.thousand": "{count}K",
"upload_area.title": "Drag & drop to upload", "upload_area.title": "അപ്‌ലോഡുചെയ്യാൻ വലിച്ചിടുക",
"upload_button.label": "Add images, a video or an audio file", "upload_button.label": "ഇമേജുകൾ, ഒരു വീഡിയോ അല്ലെങ്കിൽ ഓഡിയോ ഫയൽ ചേർക്കുക",
"upload_error.limit": "File upload limit exceeded.", "upload_error.limit": "ഫയൽ അപ്‌ലോഡ് പരിധി കവിഞ്ഞു.",
"upload_error.poll": "File upload not allowed with polls.", "upload_error.poll": "File upload not allowed with polls.",
"upload_form.audio_description": "Describe for people with hearing loss", "upload_form.audio_description": "കേൾവിശക്തി ഇല്ലാത്തവർക്ക് വേണ്ടി വിവരണം നൽകൂ",
"upload_form.description": "Describe for the visually impaired", "upload_form.description": "കാഴ്ചശക്തി ഇല്ലാത്തവർക്ക് വേണ്ടി വിവരണം നൽകൂ",
"upload_form.edit": "Edit", "upload_form.edit": "തിരുത്തുക",
"upload_form.thumbnail": "Change thumbnail", "upload_form.thumbnail": "ലഘുചിത്രം മാറ്റുക",
"upload_form.undo": "Delete", "upload_form.undo": "ഇല്ലാതാക്കുക",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment", "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…", "upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply", "upload_modal.apply": "പ്രയോഗിക്കുക",
"upload_modal.choose_image": "Choose image", "upload_modal.choose_image": "ചിത്രം തിരഞ്ഞെടുക്കുക",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog", "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": "Detect text from picture",
"upload_modal.edit_media": "Edit media", "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.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.preparing_ocr": "Preparing OCR…", "upload_modal.preparing_ocr": "Preparing OCR…",
"upload_modal.preview_label": "Preview ({ratio})", "upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading…", "upload_progress.label": "Uploading…",
"video.close": "Close video", "video.close": "വീഡിയോ അടയ്ക്കുക",
"video.download": "Download file", "video.download": "ഫയൽ ഡൌൺലോഡ് ചെയ്യുക",
"video.exit_fullscreen": "Exit full screen", "video.exit_fullscreen": "Exit full screen",
"video.expand": "Expand video", "video.expand": "Expand video",
"video.fullscreen": "Full screen", "video.fullscreen": "പൂർണ്ണ സ്ക്രീൻ",
"video.hide": "Hide video", "video.hide": "വീഡിയോ മറയ്ക്കുക",
"video.mute": "Mute sound", "video.mute": "Mute sound",
"video.pause": "Pause", "video.pause": "Pause",
"video.play": "Play", "video.play": "Play",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Search results", "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols", "emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places", "emoji_button.travel": "Travel & Places",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "No toots here!", "empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable", "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.", "empty_column.blocks": "You haven't blocked any users yet.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Next", "lightbox.next": "Next",
"lightbox.previous": "Previous", "lightbox.previous": "Previous",
"lightbox.view_context": "View context",
"lists.account.add": "Add to list", "lists.account.add": "Add to list",
"lists.account.remove": "Remove from list", "lists.account.remove": "Remove from list",
"lists.delete": "Delete list", "lists.delete": "Delete list",
@ -266,9 +266,9 @@
"lists.edit.submit": "Change title", "lists.edit.submit": "Change title",
"lists.new.create": "Add list", "lists.new.create": "Add list",
"lists.new.title_placeholder": "New list title", "lists.new.title_placeholder": "New list title",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among people you follow", "lists.search": "Search among people you follow",
"lists.subheading": "Your lists", "lists.subheading": "Your lists",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Mentions", "notifications.filter.mentions": "Mentions",
"notifications.filter.polls": "Poll results", "notifications.filter.polls": "Poll results",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} notifications", "notifications.group": "{count} notifications",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Search results", "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols", "emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places", "emoji_button.travel": "Travel & Places",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "No toots here!", "empty_column.account_timeline": "No toots here!",
"empty_column.account_unavailable": "Profile unavailable", "empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.", "empty_column.blocks": "You haven't blocked any users yet.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Next", "lightbox.next": "Next",
"lightbox.previous": "Previous", "lightbox.previous": "Previous",
"lightbox.view_context": "View context",
"lists.account.add": "Add to list", "lists.account.add": "Add to list",
"lists.account.remove": "Remove from list", "lists.account.remove": "Remove from list",
"lists.delete": "Delete list", "lists.delete": "Delete list",
@ -266,9 +266,9 @@
"lists.edit.submit": "Change title", "lists.edit.submit": "Change title",
"lists.new.create": "Add list", "lists.new.create": "Add list",
"lists.new.title_placeholder": "New list title", "lists.new.title_placeholder": "New list title",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among people you follow", "lists.search": "Search among people you follow",
"lists.subheading": "Your lists", "lists.subheading": "Your lists",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Mentions", "notifications.filter.mentions": "Mentions",
"notifications.filter.polls": "Poll results", "notifications.filter.polls": "Poll results",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} notifications", "notifications.group": "{count} notifications",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications", "notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.title": "Never miss a thing",

View File

@ -9,10 +9,10 @@
"account.browse_more_on_origin_server": "Meer op het originele profiel bekijken", "account.browse_more_on_origin_server": "Meer op het originele profiel bekijken",
"account.cancel_follow_request": "Volgverzoek annuleren", "account.cancel_follow_request": "Volgverzoek annuleren",
"account.direct": "@{name} een direct bericht sturen", "account.direct": "@{name} een direct bericht sturen",
"account.disable_notifications": "Stop notifying me when @{name} posts", "account.disable_notifications": "Geef geen melding meer wanneer @{name} toot",
"account.domain_blocked": "Server verborgen", "account.domain_blocked": "Server verborgen",
"account.edit_profile": "Profiel bewerken", "account.edit_profile": "Profiel bewerken",
"account.enable_notifications": "Notify me when @{name} posts", "account.enable_notifications": "Geef een melding wanneer @{name} toot",
"account.endorse": "Op profiel weergeven", "account.endorse": "Op profiel weergeven",
"account.follow": "Volgen", "account.follow": "Volgen",
"account.followers": "Volgers", "account.followers": "Volgers",
@ -98,9 +98,9 @@
"compose_form.poll.switch_to_single": "Poll wijzigen om een enkele keuze toe te staan", "compose_form.poll.switch_to_single": "Poll wijzigen om een enkele keuze toe te staan",
"compose_form.publish": "Toot", "compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!", "compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Media als gevoelig markeren", "compose_form.sensitive.hide": "{count, plural, one {Media als gevoelig markeren} other {Media als gevoelig markeren}}",
"compose_form.sensitive.marked": "Media is als gevoelig gemarkeerd", "compose_form.sensitive.marked": "{count, plural, one {Media is als gevoelig gemarkeerd} other {Media is als gevoelig gemarkeerd}}",
"compose_form.sensitive.unmarked": "Media is niet als gevoelig gemarkeerd", "compose_form.sensitive.unmarked": "{count, plural, one {Media is niet als gevoelig gemarkeerd} other {Media is niet als gevoelig gemarkeerd}}",
"compose_form.spoiler.marked": "Tekst is achter een waarschuwing verborgen", "compose_form.spoiler.marked": "Tekst is achter een waarschuwing verborgen",
"compose_form.spoiler.unmarked": "Tekst is niet verborgen", "compose_form.spoiler.unmarked": "Tekst is niet verborgen",
"compose_form.spoiler_placeholder": "Waarschuwingstekst", "compose_form.spoiler_placeholder": "Waarschuwingstekst",
@ -149,6 +149,7 @@
"emoji_button.search_results": "Zoekresultaten", "emoji_button.search_results": "Zoekresultaten",
"emoji_button.symbols": "Symbolen", "emoji_button.symbols": "Symbolen",
"emoji_button.travel": "Reizen en plekken", "emoji_button.travel": "Reizen en plekken",
"empty_column.account_suspended": "Account opgeschort",
"empty_column.account_timeline": "Hier zijn geen toots!", "empty_column.account_timeline": "Hier zijn geen toots!",
"empty_column.account_unavailable": "Profiel is niet beschikbaar", "empty_column.account_unavailable": "Profiel is niet beschikbaar",
"empty_column.blocks": "Jij hebt nog geen enkele gebruiker geblokkeerd.", "empty_column.blocks": "Jij hebt nog geen enkele gebruiker geblokkeerd.",
@ -168,9 +169,9 @@
"empty_column.notifications": "Je hebt nog geen meldingen. Begin met iemand een gesprek.", "empty_column.notifications": "Je hebt nog geen meldingen. Begin met iemand een gesprek.",
"empty_column.public": "Er is hier helemaal niks! Toot iets in het openbaar of volg mensen van andere servers om het te vullen", "empty_column.public": "Er is hier helemaal niks! Toot iets in het openbaar of volg mensen van andere servers om het te vullen",
"error.unexpected_crash.explanation": "Als gevolg van een bug in onze broncode of als gevolg van een compatibiliteitsprobleem met jouw webbrowser, kan deze pagina niet goed worden weergegeven.", "error.unexpected_crash.explanation": "Als gevolg van een bug in onze broncode of als gevolg van een compatibiliteitsprobleem met jouw webbrowser, kan deze pagina niet goed worden weergegeven.",
"error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", "error.unexpected_crash.explanation_addons": "Deze pagina kon niet correct geladen worden. Deze fout wordt waarschijnlijk door een browser-add-on of een automatische vertalingshulpmiddel veroorzaakt.",
"error.unexpected_crash.next_steps": "Probeer deze pagina te vernieuwen. Wanneer dit niet helpt is het nog steeds mogelijk om Mastodon in een andere webbrowser of mobiele app te gebruiken.", "error.unexpected_crash.next_steps": "Probeer deze pagina te vernieuwen. Wanneer dit niet helpt is het nog steeds mogelijk om Mastodon in een andere webbrowser of mobiele app te gebruiken.",
"error.unexpected_crash.next_steps_addons": "Try disabling them and 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.next_steps_addons": "Probeer deze uit te schakelen en de pagina te verversen. Wanneer dat niet helpt, kun je Mastodon nog altijd met een andere webbrowser of mobiele app gebruiken.",
"errors.unexpected_crash.copy_stacktrace": "Stacktrace naar klembord kopiëren", "errors.unexpected_crash.copy_stacktrace": "Stacktrace naar klembord kopiëren",
"errors.unexpected_crash.report_issue": "Technisch probleem melden", "errors.unexpected_crash.report_issue": "Technisch probleem melden",
"follow_request.authorize": "Goedkeuren", "follow_request.authorize": "Goedkeuren",
@ -258,7 +259,6 @@
"lightbox.expand": "Afbeelding groot weergeven", "lightbox.expand": "Afbeelding groot weergeven",
"lightbox.next": "Volgende", "lightbox.next": "Volgende",
"lightbox.previous": "Vorige", "lightbox.previous": "Vorige",
"lightbox.view_context": "Context tonen",
"lists.account.add": "Aan lijst toevoegen", "lists.account.add": "Aan lijst toevoegen",
"lists.account.remove": "Uit lijst verwijderen", "lists.account.remove": "Uit lijst verwijderen",
"lists.delete": "Lijst verwijderen", "lists.delete": "Lijst verwijderen",
@ -266,10 +266,10 @@
"lists.edit.submit": "Titel veranderen", "lists.edit.submit": "Titel veranderen",
"lists.new.create": "Lijst toevoegen", "lists.new.create": "Lijst toevoegen",
"lists.new.title_placeholder": "Naam nieuwe lijst", "lists.new.title_placeholder": "Naam nieuwe lijst",
"lists.replies_policy.all_replies": "Any followed user", "lists.replies_policy.followed": "Elke gevolgde gebruiker",
"lists.replies_policy.list_replies": "Members of the list", "lists.replies_policy.list": "Leden van de lijst",
"lists.replies_policy.no_replies": "No one", "lists.replies_policy.none": "Niemand",
"lists.replies_policy.title": "Show replies to:", "lists.replies_policy.title": "Toon reacties aan:",
"lists.search": "Zoek naar mensen die je volgt", "lists.search": "Zoek naar mensen die je volgt",
"lists.subheading": "Jouw lijsten", "lists.subheading": "Jouw lijsten",
"load_pending": "{count, plural, one {# nieuw item} other {# nieuwe items}}", "load_pending": "{count, plural, one {# nieuw item} other {# nieuwe items}}",
@ -277,7 +277,7 @@
"media_gallery.toggle_visible": "Media verbergen", "media_gallery.toggle_visible": "Media verbergen",
"missing_indicator.label": "Niet gevonden", "missing_indicator.label": "Niet gevonden",
"missing_indicator.sublabel": "Deze hulpbron kan niet gevonden worden", "missing_indicator.sublabel": "Deze hulpbron kan niet gevonden worden",
"mute_modal.duration": "Duration", "mute_modal.duration": "Duur",
"mute_modal.hide_notifications": "Verberg meldingen van deze persoon?", "mute_modal.hide_notifications": "Verberg meldingen van deze persoon?",
"mute_modal.indefinite": "Voor onbepaalde tijd", "mute_modal.indefinite": "Voor onbepaalde tijd",
"navigation_bar.apps": "Mobiele apps", "navigation_bar.apps": "Mobiele apps",
@ -310,7 +310,7 @@
"notification.own_poll": "Jouw poll is beëindigd", "notification.own_poll": "Jouw poll is beëindigd",
"notification.poll": "Een poll waaraan jij hebt meegedaan is beëindigd", "notification.poll": "Een poll waaraan jij hebt meegedaan is beëindigd",
"notification.reblog": "{name} boostte jouw toot", "notification.reblog": "{name} boostte jouw toot",
"notification.status": "{name} just posted", "notification.status": "{name} heeft zojuist een toot geplaatst",
"notifications.clear": "Meldingen verwijderen", "notifications.clear": "Meldingen verwijderen",
"notifications.clear_confirmation": "Weet je het zeker dat je al jouw meldingen wilt verwijderen?", "notifications.clear_confirmation": "Weet je het zeker dat je al jouw meldingen wilt verwijderen?",
"notifications.column_settings.alert": "Desktopmeldingen", "notifications.column_settings.alert": "Desktopmeldingen",
@ -326,22 +326,24 @@
"notifications.column_settings.reblog": "Boosts:", "notifications.column_settings.reblog": "Boosts:",
"notifications.column_settings.show": "In kolom tonen", "notifications.column_settings.show": "In kolom tonen",
"notifications.column_settings.sound": "Geluid afspelen", "notifications.column_settings.sound": "Geluid afspelen",
"notifications.column_settings.status": "New toots:", "notifications.column_settings.status": "Nieuwe toots:",
"notifications.filter.all": "Alles", "notifications.filter.all": "Alles",
"notifications.filter.boosts": "Boosts", "notifications.filter.boosts": "Boosts",
"notifications.filter.favourites": "Favorieten", "notifications.filter.favourites": "Favorieten",
"notifications.filter.follows": "Die jij volgt", "notifications.filter.follows": "Die jij volgt",
"notifications.filter.mentions": "Vermeldingen", "notifications.filter.mentions": "Vermeldingen",
"notifications.filter.polls": "Pollresultaten", "notifications.filter.polls": "Pollresultaten",
"notifications.filter.statuses": "Updates from people you follow", "notifications.filter.statuses": "Updates van mensen die je volgt",
"notifications.grant_permission": "Toestemming geven.",
"notifications.group": "{count} meldingen", "notifications.group": "{count} meldingen",
"notifications.mark_as_read": "Mark every notification as read", "notifications.mark_as_read": "Markeer elke melding als gelezen",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktopmeldingen zijn niet beschikbaar omdat een eerdere browsertoestemming werd geweigerd",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktopmeldingen kunnen niet worden ingeschakeld, omdat een eerdere browsertoestemming werd geweigerd",
"notifications_permission_banner.enable": "Notificatie meldingen inschakelen", "notifications.permission_required": "Desktopmeldingen zijn niet beschikbaar omdat de benodigde toestemming niet is verleend.",
"notifications_permission_banner.how_to_control": "Gebruikt notificaties om ook meldingen te ontvangen wanneer Mastodon niet open is. U kunt precies bepalen welke soort meldingen wel of geen notificaties afgeven via de bovenstaande knop {icon}.", "notifications_permission_banner.enable": "Desktopmeldingen inschakelen",
"notifications_permission_banner.title": "Never miss a thing", "notifications_permission_banner.how_to_control": "Om meldingen te ontvangen wanneer Mastodon niet open is. Je kunt precies bepalen welke soort interacties wel of geen desktopmeldingen geven via de bovenstaande {icon} knop.",
"picture_in_picture.restore": "Put it back", "notifications_permission_banner.title": "Mis nooit meer iets",
"picture_in_picture.restore": "Terugzetten",
"poll.closed": "Gesloten", "poll.closed": "Gesloten",
"poll.refresh": "Vernieuwen", "poll.refresh": "Vernieuwen",
"poll.total_people": "{count, plural, one {# persoon} other {# mensen}}", "poll.total_people": "{count, plural, one {# persoon} other {# mensen}}",
@ -448,9 +450,9 @@
"trends.counter_by_accounts": "{count, plural, one {{counter} persoon} other {{counter} personen}} zijn aan het praten", "trends.counter_by_accounts": "{count, plural, one {{counter} persoon} other {{counter} personen}} zijn aan het praten",
"trends.trending_now": "Trends", "trends.trending_now": "Trends",
"ui.beforeunload": "Je concept zal verloren gaan als je Mastodon verlaat.", "ui.beforeunload": "Je concept zal verloren gaan als je Mastodon verlaat.",
"units.short.billion": "{count} miljard", "units.short.billion": "{count} mrd.",
"units.short.million": "{count} miljoen", "units.short.million": "{count} mln.",
"units.short.thousand": "{count} duizend", "units.short.thousand": "{count}k",
"upload_area.title": "Hiernaar toe slepen om te uploaden", "upload_area.title": "Hiernaar toe slepen om te uploaden",
"upload_button.label": "Afbeeldingen, een video- of een geluidsbestand toevoegen", "upload_button.label": "Afbeeldingen, een video- of een geluidsbestand toevoegen",
"upload_error.limit": "Uploadlimiet van bestand overschreden.", "upload_error.limit": "Uploadlimiet van bestand overschreden.",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Søkeresultat", "emoji_button.search_results": "Søkeresultat",
"emoji_button.symbols": "Symbol", "emoji_button.symbols": "Symbol",
"emoji_button.travel": "Reise & stader", "emoji_button.travel": "Reise & stader",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "Ingen tut her!", "empty_column.account_timeline": "Ingen tut her!",
"empty_column.account_unavailable": "Profil ikkje tilgjengelig", "empty_column.account_unavailable": "Profil ikkje tilgjengelig",
"empty_column.blocks": "Du har ikkje blokkert nokon brukarar enno.", "empty_column.blocks": "Du har ikkje blokkert nokon brukarar enno.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Neste", "lightbox.next": "Neste",
"lightbox.previous": "Førre", "lightbox.previous": "Førre",
"lightbox.view_context": "Sjå kontekst",
"lists.account.add": "Legg til i liste", "lists.account.add": "Legg til i liste",
"lists.account.remove": "Fjern frå liste", "lists.account.remove": "Fjern frå liste",
"lists.delete": "Slett liste", "lists.delete": "Slett liste",
@ -266,9 +266,9 @@
"lists.edit.submit": "Endre tittel", "lists.edit.submit": "Endre tittel",
"lists.new.create": "Legg til liste", "lists.new.create": "Legg til liste",
"lists.new.title_placeholder": "Ny listetittel", "lists.new.title_placeholder": "Ny listetittel",
"lists.replies_policy.all_replies": "Enhver fulgt bruker", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Medlemmer i listen", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "Ingen", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Vis svar på:", "lists.replies_policy.title": "Vis svar på:",
"lists.search": "Søk gjennom folk du følgjer", "lists.search": "Søk gjennom folk du følgjer",
"lists.subheading": "Dine lister", "lists.subheading": "Dine lister",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Nemningar", "notifications.filter.mentions": "Nemningar",
"notifications.filter.polls": "Røysteresultat", "notifications.filter.polls": "Røysteresultat",
"notifications.filter.statuses": "Oppdateringer fra folk du følger", "notifications.filter.statuses": "Oppdateringer fra folk du følger",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} varsel", "notifications.group": "{count} varsel",
"notifications.mark_as_read": "Merk alle varsler som lest", "notifications.mark_as_read": "Merk alle varsler som lest",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Skru på skrivebordsvarsler", "notifications_permission_banner.enable": "Skru på skrivebordsvarsler",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Aldri gå glipp av noe", "notifications_permission_banner.title": "Aldri gå glipp av noe",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Søkeresultat", "emoji_button.search_results": "Søkeresultat",
"emoji_button.symbols": "Symboler", "emoji_button.symbols": "Symboler",
"emoji_button.travel": "Reise & steder", "emoji_button.travel": "Reise & steder",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "Ingen tuter er her!", "empty_column.account_timeline": "Ingen tuter er her!",
"empty_column.account_unavailable": "Profilen er utilgjengelig", "empty_column.account_unavailable": "Profilen er utilgjengelig",
"empty_column.blocks": "Du har ikke blokkert noen brukere enda.", "empty_column.blocks": "Du har ikke blokkert noen brukere enda.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expand image view box", "lightbox.expand": "Expand image view box",
"lightbox.next": "Neste", "lightbox.next": "Neste",
"lightbox.previous": "Forrige", "lightbox.previous": "Forrige",
"lightbox.view_context": "Vis sammenheng",
"lists.account.add": "Legg til i listen", "lists.account.add": "Legg til i listen",
"lists.account.remove": "Fjern fra listen", "lists.account.remove": "Fjern fra listen",
"lists.delete": "Slett listen", "lists.delete": "Slett listen",
@ -266,9 +266,9 @@
"lists.edit.submit": "Endre tittel", "lists.edit.submit": "Endre tittel",
"lists.new.create": "Ligg til liste", "lists.new.create": "Ligg til liste",
"lists.new.title_placeholder": "Ny listetittel", "lists.new.title_placeholder": "Ny listetittel",
"lists.replies_policy.all_replies": "Enhver fulgt bruker", "lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list_replies": "Medlemmer i listen", "lists.replies_policy.list": "Members of the list",
"lists.replies_policy.no_replies": "Ingen", "lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Vis svar på:", "lists.replies_policy.title": "Vis svar på:",
"lists.search": "Søk blant personer du følger", "lists.search": "Søk blant personer du følger",
"lists.subheading": "Dine lister", "lists.subheading": "Dine lister",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Nevnelser", "notifications.filter.mentions": "Nevnelser",
"notifications.filter.polls": "Avstemningsresultater", "notifications.filter.polls": "Avstemningsresultater",
"notifications.filter.statuses": "Oppdateringer fra folk du følger", "notifications.filter.statuses": "Oppdateringer fra folk du følger",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} varslinger", "notifications.group": "{count} varslinger",
"notifications.mark_as_read": "Merk alle varsler som lest", "notifications.mark_as_read": "Merk alle varsler som lest",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request", "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before", "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Skru på skrivebordsvarsler", "notifications_permission_banner.enable": "Skru på skrivebordsvarsler",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.", "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Aldri gå glipp av noe", "notifications_permission_banner.title": "Aldri gå glipp av noe",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Resultats de recèrca", "emoji_button.search_results": "Resultats de recèrca",
"emoji_button.symbols": "Simbòls", "emoji_button.symbols": "Simbòls",
"emoji_button.travel": "Viatges & lòcs", "emoji_button.travel": "Viatges & lòcs",
"empty_column.account_suspended": "Compte suspendut",
"empty_column.account_timeline": "Cap de tuts aquí!", "empty_column.account_timeline": "Cap de tuts aquí!",
"empty_column.account_unavailable": "Perfil pas disponible", "empty_column.account_unavailable": "Perfil pas disponible",
"empty_column.blocks": "Avètz pas blocat degun pel moment.", "empty_column.blocks": "Avètz pas blocat degun pel moment.",
@ -258,7 +259,6 @@
"lightbox.expand": "Espandir la fenèstra de visualizacion dimatge", "lightbox.expand": "Espandir la fenèstra de visualizacion dimatge",
"lightbox.next": "Seguent", "lightbox.next": "Seguent",
"lightbox.previous": "Precedent", "lightbox.previous": "Precedent",
"lightbox.view_context": "Veire lo contèxt",
"lists.account.add": "Ajustar a la lista", "lists.account.add": "Ajustar a la lista",
"lists.account.remove": "Levar de la lista", "lists.account.remove": "Levar de la lista",
"lists.delete": "Suprimir la lista", "lists.delete": "Suprimir la lista",
@ -266,9 +266,9 @@
"lists.edit.submit": "Cambiar lo títol", "lists.edit.submit": "Cambiar lo títol",
"lists.new.create": "Ajustar una lista", "lists.new.create": "Ajustar una lista",
"lists.new.title_placeholder": "Títol de la nòva lista", "lists.new.title_placeholder": "Títol de la nòva lista",
"lists.replies_policy.all_replies": "Los que sègui", "lists.replies_policy.followed": "Quin seguidor que siá",
"lists.replies_policy.list_replies": "Membres daquesta lista", "lists.replies_policy.list": "Membres de la lista",
"lists.replies_policy.no_replies": "Degun", "lists.replies_policy.none": "Degun",
"lists.replies_policy.title": "Mostrar las responsas a:", "lists.replies_policy.title": "Mostrar las responsas a:",
"lists.search": "Cercar demest lo mond que seguètz", "lists.search": "Cercar demest lo mond que seguètz",
"lists.subheading": "Vòstras listas", "lists.subheading": "Vòstras listas",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Mencions", "notifications.filter.mentions": "Mencions",
"notifications.filter.polls": "Resultats del sondatge", "notifications.filter.polls": "Resultats del sondatge",
"notifications.filter.statuses": "Mesas a jorn del monde que seguissètz", "notifications.filter.statuses": "Mesas a jorn del monde que seguissètz",
"notifications.grant_permission": "Acordar lautorizacion.",
"notifications.group": "{count} notificacions", "notifications.group": "{count} notificacions",
"notifications.mark_as_read": "Marcar totas las notificacions coma legidas", "notifications.mark_as_read": "Marcar totas las notificacions coma legidas",
"notifications.permission_denied": "Las notificacion burèu son pas disponiblas a causa del refús de las demandas dautorizacion navigador", "notifications.permission_denied": "Las notificacion burèu son pas disponiblas a causa del refús de las demandas dautorizacion navigador",
"notifications.permission_denied_alert": "Las notificacions burèu son pas activada, per çò que las autorizacions son estadas refusada abans", "notifications.permission_denied_alert": "Las notificacions burèu son pas activada, per çò que las autorizacions son estadas refusada abans",
"notifications.permission_required": "Las notificacions de burèu son pas indisponiblas perque las permissions requeridas son pas estadas acordadas.",
"notifications_permission_banner.enable": "Activar las notificacions burèu", "notifications_permission_banner.enable": "Activar las notificacions burèu",
"notifications_permission_banner.how_to_control": "Per recebre las notificacions de Mastodon quand es pas dobèrt, activatz las notificacions de burèu. Podètz precisar quin tipe de notificacion generarà una notificacion de burèu via lo boton {icon} dessús un còp activadas.", "notifications_permission_banner.how_to_control": "Per recebre las notificacions de Mastodon quand es pas dobèrt, activatz las notificacions de burèu. Podètz precisar quin tipe de notificacion generarà una notificacion de burèu via lo boton {icon} dessús un còp activadas.",
"notifications_permission_banner.title": "Manquetz pas jamai res", "notifications_permission_banner.title": "Manquetz pas jamai res",

View File

@ -13,7 +13,7 @@
"account.domain_blocked": "Ukryto domenę", "account.domain_blocked": "Ukryto domenę",
"account.edit_profile": "Edytuj profil", "account.edit_profile": "Edytuj profil",
"account.enable_notifications": "Powiadamiaj mnie o wpisach @{name}", "account.enable_notifications": "Powiadamiaj mnie o wpisach @{name}",
"account.endorse": "Polecaj na profilu", "account.endorse": "Wyróżnij na profilu",
"account.follow": "Śledź", "account.follow": "Śledź",
"account.followers": "Śledzący", "account.followers": "Śledzący",
"account.followers.empty": "Nikt jeszcze nie śledzi tego użytkownika.", "account.followers.empty": "Nikt jeszcze nie śledzi tego użytkownika.",
@ -149,6 +149,7 @@
"emoji_button.search_results": "Wyniki wyszukiwania", "emoji_button.search_results": "Wyniki wyszukiwania",
"emoji_button.symbols": "Symbole", "emoji_button.symbols": "Symbole",
"emoji_button.travel": "Podróże i miejsca", "emoji_button.travel": "Podróże i miejsca",
"empty_column.account_suspended": "Konto zawieszone",
"empty_column.account_timeline": "Brak wpisów tutaj!", "empty_column.account_timeline": "Brak wpisów tutaj!",
"empty_column.account_unavailable": "Profil niedostępny", "empty_column.account_unavailable": "Profil niedostępny",
"empty_column.blocks": "Nie zablokowałeś(-aś) jeszcze żadnego użytkownika.", "empty_column.blocks": "Nie zablokowałeś(-aś) jeszcze żadnego użytkownika.",
@ -254,11 +255,10 @@
"keyboard_shortcuts.unfocus": "aby opuścić pole wyszukiwania/pisania", "keyboard_shortcuts.unfocus": "aby opuścić pole wyszukiwania/pisania",
"keyboard_shortcuts.up": "aby przejść na górę listy", "keyboard_shortcuts.up": "aby przejść na górę listy",
"lightbox.close": "Zamknij", "lightbox.close": "Zamknij",
"lightbox.compress": "Compress image view box", "lightbox.compress": "Zmniejsz pole widoku obrazu",
"lightbox.expand": "Expand image view box", "lightbox.expand": "Rozwiń pole widoku obrazu",
"lightbox.next": "Następne", "lightbox.next": "Następne",
"lightbox.previous": "Poprzednie", "lightbox.previous": "Poprzednie",
"lightbox.view_context": "Pokaż kontekst",
"lists.account.add": "Dodaj do listy", "lists.account.add": "Dodaj do listy",
"lists.account.remove": "Usunąć z listy", "lists.account.remove": "Usunąć z listy",
"lists.delete": "Usuń listę", "lists.delete": "Usuń listę",
@ -266,9 +266,9 @@
"lists.edit.submit": "Zmień tytuł", "lists.edit.submit": "Zmień tytuł",
"lists.new.create": "Utwórz listę", "lists.new.create": "Utwórz listę",
"lists.new.title_placeholder": "Wprowadź tytuł listy", "lists.new.title_placeholder": "Wprowadź tytuł listy",
"lists.replies_policy.all_replies": "Dowolnego obserwowanego użytkownika", "lists.replies_policy.followed": "Dowolny obserwowany użytkownik",
"lists.replies_policy.list_replies": "Członków listy", "lists.replies_policy.list": "Członkowie listy",
"lists.replies_policy.no_replies": "Nikogo", "lists.replies_policy.none": "Nikt",
"lists.replies_policy.title": "Pokazuj odpowiedzi dla:", "lists.replies_policy.title": "Pokazuj odpowiedzi dla:",
"lists.search": "Szukaj wśród osób które śledzisz", "lists.search": "Szukaj wśród osób które śledzisz",
"lists.subheading": "Twoje listy", "lists.subheading": "Twoje listy",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Wspomienia", "notifications.filter.mentions": "Wspomienia",
"notifications.filter.polls": "Wyniki głosowania", "notifications.filter.polls": "Wyniki głosowania",
"notifications.filter.statuses": "Aktualizacje od osób które obserwujesz", "notifications.filter.statuses": "Aktualizacje od osób które obserwujesz",
"notifications.grant_permission": "Przyznaj uprawnienia.",
"notifications.group": "{count, number} {count, plural, one {powiadomienie} few {powiadomienia} many {powiadomień} more {powiadomień}}", "notifications.group": "{count, number} {count, plural, one {powiadomienie} few {powiadomienia} many {powiadomień} more {powiadomień}}",
"notifications.mark_as_read": "Oznacz wszystkie powiadomienia jako przeczytane", "notifications.mark_as_read": "Oznacz wszystkie powiadomienia jako przeczytane",
"notifications.permission_denied": "Powiadomienia na pulpicie nie są dostępne, ponieważ wcześniej nie udzielono uprawnień w przeglądarce", "notifications.permission_denied": "Powiadomienia na pulpicie nie są dostępne, ponieważ wcześniej nie udzielono uprawnień w przeglądarce",
"notifications.permission_denied_alert": "Powiadomienia na pulpicie nie mogą zostać włączone, ponieważ wcześniej odmówiono uprawnień", "notifications.permission_denied_alert": "Powiadomienia na pulpicie nie mogą zostać włączone, ponieważ wcześniej odmówiono uprawnień",
"notifications.permission_required": "Powiadomienia na pulpicie nie są dostępne, ponieważ nie przyznano wymaganego uprawnienia.",
"notifications_permission_banner.enable": "Włącz powiadomienia na pulpicie", "notifications_permission_banner.enable": "Włącz powiadomienia na pulpicie",
"notifications_permission_banner.how_to_control": "Aby otrzymywać powiadomienia, gdy Mastodon nie jest otwarty, włącz powiadomienia pulpitu. Możesz dokładnie kontrolować, októrych działaniach będziesz powiadomienia na pulpicie za pomocą przycisku {icon} powyżej, jeżeli tylko zostaną włączone.", "notifications_permission_banner.how_to_control": "Aby otrzymywać powiadomienia, gdy Mastodon nie jest otwarty, włącz powiadomienia pulpitu. Możesz dokładnie kontrolować, októrych działaniach będziesz powiadomienia na pulpicie za pomocą przycisku {icon} powyżej, jeżeli tylko zostaną włączone.",
"notifications_permission_banner.title": "Nie przegap niczego", "notifications_permission_banner.title": "Nie przegap niczego",

View File

@ -149,6 +149,7 @@
"emoji_button.search_results": "Resultados da pesquisa", "emoji_button.search_results": "Resultados da pesquisa",
"emoji_button.symbols": "Símbolos", "emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viagem & Lugares", "emoji_button.travel": "Viagem & Lugares",
"empty_column.account_suspended": "Conta suspensa",
"empty_column.account_timeline": "Nada aqui!", "empty_column.account_timeline": "Nada aqui!",
"empty_column.account_unavailable": "Perfil indisponível", "empty_column.account_unavailable": "Perfil indisponível",
"empty_column.blocks": "Nada aqui.", "empty_column.blocks": "Nada aqui.",
@ -258,7 +259,6 @@
"lightbox.expand": "Expandir caixa de visualização de imagem", "lightbox.expand": "Expandir caixa de visualização de imagem",
"lightbox.next": "Próximo", "lightbox.next": "Próximo",
"lightbox.previous": "Anterior", "lightbox.previous": "Anterior",
"lightbox.view_context": "Ver contexto",
"lists.account.add": "Adicionar à lista", "lists.account.add": "Adicionar à lista",
"lists.account.remove": "Remover da lista", "lists.account.remove": "Remover da lista",
"lists.delete": "Excluir lista", "lists.delete": "Excluir lista",
@ -266,9 +266,9 @@
"lists.edit.submit": "Renomear", "lists.edit.submit": "Renomear",
"lists.new.create": "Criar lista", "lists.new.create": "Criar lista",
"lists.new.title_placeholder": "Nome da lista", "lists.new.title_placeholder": "Nome da lista",
"lists.replies_policy.all_replies": "Qualquer usuário seguido", "lists.replies_policy.followed": "Qualquer usuário seguido",
"lists.replies_policy.list_replies": "Membros da lista", "lists.replies_policy.list": "Membros da lista",
"lists.replies_policy.no_replies": "Ninguém", "lists.replies_policy.none": "Ninguém",
"lists.replies_policy.title": "Mostrar respostas para:", "lists.replies_policy.title": "Mostrar respostas para:",
"lists.search": "Procurar entre as pessoas que você segue", "lists.search": "Procurar entre as pessoas que você segue",
"lists.subheading": "Suas listas", "lists.subheading": "Suas listas",
@ -334,10 +334,12 @@
"notifications.filter.mentions": "Menções", "notifications.filter.mentions": "Menções",
"notifications.filter.polls": "Resultados de enquete", "notifications.filter.polls": "Resultados de enquete",
"notifications.filter.statuses": "Atualizações de pessoas que você segue", "notifications.filter.statuses": "Atualizações de pessoas que você segue",
"notifications.grant_permission": "Conceder permissão.",
"notifications.group": "{count} notificações", "notifications.group": "{count} notificações",
"notifications.mark_as_read": "Marcar todas as notificações como lidas", "notifications.mark_as_read": "Marcar todas as notificações como lidas",
"notifications.permission_denied": "Não é possível habilitar as notificações da área de trabalho pois a permissão foi negada.", "notifications.permission_denied": "Não é possível habilitar as notificações da área de trabalho pois a permissão foi negada.",
"notifications.permission_denied_alert": "As notificações da área de trabalho não podem ser habilitdas pois a permissão do navegador foi negada antes", "notifications.permission_denied_alert": "As notificações da área de trabalho não podem ser habilitdas pois a permissão do navegador foi negada antes",
"notifications.permission_required": "Notificações da área de trabalho não estão disponíveis porque a permissão necessária não foi concedida.",
"notifications_permission_banner.enable": "Habilitar notificações da área de trabalho", "notifications_permission_banner.enable": "Habilitar notificações da área de trabalho",
"notifications_permission_banner.how_to_control": "Para receber notificações quando o Mastodon não estiver aberto, habilite as notificações da área de trabalho. Você pode controlar precisamente quais tipos de interações geram notificações da área de trabalho através do botão {icon} acima uma vez habilitadas.", "notifications_permission_banner.how_to_control": "Para receber notificações quando o Mastodon não estiver aberto, habilite as notificações da área de trabalho. Você pode controlar precisamente quais tipos de interações geram notificações da área de trabalho através do botão {icon} acima uma vez habilitadas.",
"notifications_permission_banner.title": "Nunca perca nada", "notifications_permission_banner.title": "Nunca perca nada",

Some files were not shown because too many files have changed in this diff Show More