Browse Source

Merge tag 'v3.2.0' into closed-social-v3

closed-social-v3
欧醚 3 years ago
parent
commit
b6e7399e9e
175 changed files with 2224 additions and 912 deletions
  1. +0
    -1
      .buildpacks
  2. +6
    -5
      .circleci/config.yml
  3. +374
    -139
      AUTHORS.md
  4. +153
    -0
      CHANGELOG.md
  5. +0
    -3
      app.json
  6. +8
    -2
      app/controllers/api/v1/statuses/reblogs_controller.rb
  7. +1
    -0
      app/controllers/api/v1/statuses_controller.rb
  8. +1
    -1
      app/controllers/application_controller.rb
  9. +1
    -1
      app/javascript/mastodon/actions/compose.js
  10. +2
    -1
      app/javascript/mastodon/actions/statuses.js
  11. +1
    -1
      app/javascript/mastodon/components/common_counter.js
  12. +1
    -1
      app/javascript/mastodon/components/scrollable_list.js
  13. +31
    -9
      app/javascript/mastodon/features/account_timeline/index.js
  14. +2
    -0
      app/javascript/mastodon/features/audio/index.js
  15. +2
    -0
      app/javascript/mastodon/features/video/index.js
  16. +8
    -8
      app/javascript/mastodon/locales/ar.json
  17. +1
    -1
      app/javascript/mastodon/locales/ast.json
  18. +1
    -1
      app/javascript/mastodon/locales/bg.json
  19. +1
    -1
      app/javascript/mastodon/locales/bn.json
  20. +49
    -49
      app/javascript/mastodon/locales/br.json
  21. +6
    -6
      app/javascript/mastodon/locales/ca.json
  22. +2
    -2
      app/javascript/mastodon/locales/co.json
  23. +1
    -1
      app/javascript/mastodon/locales/cs.json
  24. +1
    -1
      app/javascript/mastodon/locales/cy.json
  25. +1
    -1
      app/javascript/mastodon/locales/da.json
  26. +5
    -5
      app/javascript/mastodon/locales/de.json
  27. +17
    -1
      app/javascript/mastodon/locales/defaultMessages.json
  28. +12
    -12
      app/javascript/mastodon/locales/el.json
  29. +1
    -1
      app/javascript/mastodon/locales/en.json
  30. +2
    -2
      app/javascript/mastodon/locales/es-AR.json
  31. +4
    -4
      app/javascript/mastodon/locales/es.json
  32. +1
    -1
      app/javascript/mastodon/locales/et.json
  33. +1
    -1
      app/javascript/mastodon/locales/eu.json
  34. +4
    -4
      app/javascript/mastodon/locales/fa.json
  35. +14
    -14
      app/javascript/mastodon/locales/fi.json
  36. +3
    -3
      app/javascript/mastodon/locales/fr.json
  37. +1
    -1
      app/javascript/mastodon/locales/ga.json
  38. +3
    -3
      app/javascript/mastodon/locales/gl.json
  39. +1
    -1
      app/javascript/mastodon/locales/he.json
  40. +1
    -1
      app/javascript/mastodon/locales/hi.json
  41. +1
    -1
      app/javascript/mastodon/locales/hr.json
  42. +3
    -3
      app/javascript/mastodon/locales/hu.json
  43. +18
    -18
      app/javascript/mastodon/locales/hy.json
  44. +1
    -1
      app/javascript/mastodon/locales/id.json
  45. +1
    -1
      app/javascript/mastodon/locales/io.json
  46. +1
    -1
      app/javascript/mastodon/locales/is.json
  47. +2
    -2
      app/javascript/mastodon/locales/it.json
  48. +3
    -3
      app/javascript/mastodon/locales/ja.json
  49. +1
    -1
      app/javascript/mastodon/locales/ka.json
  50. +13
    -13
      app/javascript/mastodon/locales/kab.json
  51. +1
    -1
      app/javascript/mastodon/locales/kk.json
  52. +1
    -1
      app/javascript/mastodon/locales/kn.json
  53. +4
    -4
      app/javascript/mastodon/locales/ko.json
  54. +1
    -1
      app/javascript/mastodon/locales/ku.json
  55. +1
    -1
      app/javascript/mastodon/locales/lt.json
  56. +12
    -12
      app/javascript/mastodon/locales/lv.json
  57. +1
    -1
      app/javascript/mastodon/locales/mk.json
  58. +21
    -21
      app/javascript/mastodon/locales/ml.json
  59. +1
    -1
      app/javascript/mastodon/locales/mr.json
  60. +1
    -1
      app/javascript/mastodon/locales/ms.json
  61. +6
    -6
      app/javascript/mastodon/locales/nl.json
  62. +1
    -1
      app/javascript/mastodon/locales/nn.json
  63. +1
    -1
      app/javascript/mastodon/locales/no.json
  64. +1
    -1
      app/javascript/mastodon/locales/oc.json
  65. +1
    -1
      app/javascript/mastodon/locales/pl.json
  66. +3
    -3
      app/javascript/mastodon/locales/pt-BR.json
  67. +2
    -2
      app/javascript/mastodon/locales/pt-PT.json
  68. +1
    -1
      app/javascript/mastodon/locales/ro.json
  69. +5
    -5
      app/javascript/mastodon/locales/ru.json
  70. +1
    -1
      app/javascript/mastodon/locales/sc.json
  71. +1
    -1
      app/javascript/mastodon/locales/sk.json
  72. +1
    -1
      app/javascript/mastodon/locales/sl.json
  73. +3
    -3
      app/javascript/mastodon/locales/sq.json
  74. +1
    -1
      app/javascript/mastodon/locales/sr-Latn.json
  75. +1
    -1
      app/javascript/mastodon/locales/sr.json
  76. +1
    -1
      app/javascript/mastodon/locales/sv.json
  77. +1
    -1
      app/javascript/mastodon/locales/szl.json
  78. +1
    -1
      app/javascript/mastodon/locales/ta.json
  79. +1
    -1
      app/javascript/mastodon/locales/tai.json
  80. +1
    -1
      app/javascript/mastodon/locales/te.json
  81. +22
    -22
      app/javascript/mastodon/locales/th.json
  82. +1
    -1
      app/javascript/mastodon/locales/tr.json
  83. +1
    -1
      app/javascript/mastodon/locales/ug.json
  84. +1
    -1
      app/javascript/mastodon/locales/uk.json
  85. +1
    -1
      app/javascript/mastodon/locales/ur.json
  86. +105
    -105
      app/javascript/mastodon/locales/vi.json
  87. +9
    -9
      app/javascript/mastodon/locales/zh-CN.json
  88. +3
    -3
      app/javascript/mastodon/locales/zh-HK.json
  89. +4
    -4
      app/javascript/mastodon/locales/zh-TW.json
  90. +0
    -7
      app/javascript/styles/mastodon-light/diff.scss
  91. +9
    -1
      app/javascript/styles/mastodon/boost.scss
  92. +4
    -8
      app/javascript/styles/mastodon/components.scss
  93. +28
    -0
      app/lib/activitypub/activity.rb
  94. +25
    -14
      app/lib/activitypub/activity/announce.rb
  95. +6
    -1
      app/lib/activitypub/activity/block.rb
  96. +2
    -0
      app/lib/activitypub/activity/create.rb
  97. +51
    -0
      app/lib/activitypub/activity/undo.rb
  98. +2
    -0
      app/lib/activitypub/activity/update.rb
  99. +1
    -0
      app/lib/exceptions.rb
  100. +7
    -1
      app/lib/feed_manager.rb

+ 0
- 1
.buildpacks View File

@ -1,4 +1,3 @@
https://github.com/heroku/heroku-buildpack-apt
https://github.com/Scalingo/ffmpeg-buildpack
https://github.com/Scalingo/nodejs-buildpack
https://github.com/Scalingo/ruby-buildpack

+ 6
- 5
.circleci/config.yml View File

@ -72,11 +72,12 @@ aliases:
- run:
name: Set bundler settings
command: |
bundle config clean 'true'
bundle config deployment 'true'
bundle config with 'pam_authentication'
bundle config without 'development production'
bundle config frozen 'true'
bundle config --local clean 'true'
bundle config --local deployment 'true'
bundle config --local with 'pam_authentication'
bundle config --local without 'development production'
bundle config --local frozen 'true'
bundle config --local path $BUNDLE_PATH
- run:
name: Install bundler dependencies
command: bundle check || (bundle install && bundle clean)

+ 374
- 139
AUTHORS.md View File

@ -5,62 +5,66 @@ Mastodon is available on [GitHub](https://github.com/tootsuite/mastodon)
and provided thanks to the work of the following contributors:
* [Gargron](https://github.com/Gargron)
* [dependabot-preview[bot]](https://github.com/apps/dependabot-preview)
* [ThibG](https://github.com/ThibG)
* [ykzts](https://github.com/ykzts)
* [dependabot[bot]](https://github.com/apps/dependabot)
* [akihikodaki](https://github.com/akihikodaki)
* [dependabot-preview[bot]](https://github.com/apps/dependabot-preview)
* [mjankowski](https://github.com/mjankowski)
* [unarist](https://github.com/unarist)
* [yiskah](https://github.com/yiskah)
* [nolanlawson](https://github.com/nolanlawson)
* [ysksn](https://github.com/ysksn)
* [abcang](https://github.com/abcang)
* [ysksn](https://github.com/ysksn)
* [mayaeh](https://github.com/mayaeh)
* [sorin-davidoi](https://github.com/sorin-davidoi)
* [lynlynlynx](https://github.com/lynlynlynx)
* [mayaeh](https://github.com/mayaeh)
* [m4sk1n](mailto:me@m4sk.in)
* [Marcin Mikołajczak](mailto:me@m4sk.in)
* [Kjwon15](https://github.com/Kjwon15)
* [noellabo](https://github.com/noellabo)
* [renatolond](https://github.com/renatolond)
* [alpaca-tc](https://github.com/alpaca-tc)
* [jeroenpraat](https://github.com/jeroenpraat)
* [nclm](https://github.com/nclm)
* [ineffyble](https://github.com/ineffyble)
* [mabkenar](https://github.com/mabkenar)
* [shleeable](https://github.com/shleeable)
* [zunda](https://github.com/zunda)
* [Masoud Abkenar](mailto:ampbox@gmail.com)
* [blackle](https://github.com/blackle)
* [Quent-in](https://github.com/Quent-in)
* [JantsoP](https://github.com/JantsoP)
* [zunda](https://github.com/zunda)
* [nullkal](https://github.com/nullkal)
* [yookoala](https://github.com/yookoala)
* [Sasha-Sorokin](https://github.com/Sasha-Sorokin)
* [Aditoo17](https://github.com/Aditoo17)
* [Quenty31](https://github.com/Quenty31)
* [marek-lach](https://github.com/marek-lach)
* [shuheiktgw](https://github.com/shuheiktgw)
* [ashfurrow](https://github.com/ashfurrow)
* [danhunsaker](https://github.com/danhunsaker)
* [eramdam](https://github.com/eramdam)
* [noellabo](https://github.com/noellabo)
* [takayamaki](https://github.com/takayamaki)
* [danhunsaker](https://github.com/danhunsaker)
* [ariasuni](https://github.com/ariasuni)
* [masarakki](https://github.com/masarakki)
* [ticky](https://github.com/ticky)
* [ThisIsMissEm](https://github.com/ThisIsMissEm)
* [hinaloe](https://github.com/hinaloe)
* [hcmiya](https://github.com/hcmiya)
* [stephenburgess8](https://github.com/stephenburgess8)
* [Wonderfall](https://github.com/Wonderfall)
* [Wonderfall](mailto:wonderfall@targaryen.house)
* [matteoaquila](https://github.com/matteoaquila)
* [yukimochi](https://github.com/yukimochi)
* [palindromordnilap](https://github.com/palindromordnilap)
* [rkarabut](https://github.com/rkarabut)
* [Artoria2e5](https://github.com/Artoria2e5)
* [trwnh](https://github.com/trwnh)
* [nightpool](https://github.com/nightpool)
* [Artoria2e5](https://github.com/Artoria2e5)
* [marrus-sh](https://github.com/marrus-sh)
* [hinaloe](https://github.com/hinaloe)
* [krainboltgreene](https://github.com/krainboltgreene)
* [pfigel](https://github.com/pfigel)
* [Aldarone](https://github.com/Aldarone)
* [BoFFire](https://github.com/BoFFire)
* [Aldarone](https://github.com/Aldarone)
* [clworld](https://github.com/clworld)
* [MasterGroosha](https://github.com/MasterGroosha)
* [dracos](https://github.com/dracos)
@ -68,52 +72,50 @@ and provided thanks to the work of the following contributors:
* [SerCom_KC](mailto:sercom-kc@users.noreply.github.com)
* [Sylvhem](https://github.com/Sylvhem)
* [MitarashiDango](https://github.com/MitarashiDango)
* [angristan](https://github.com/angristan)
* [JeanGauthier](https://github.com/JeanGauthier)
* [kschaper](https://github.com/kschaper)
* [beatrix-bitrot](https://github.com/beatrix-bitrot)
* [angristan](https://github.com/angristan)
* [koyuawsmbrtn](https://github.com/koyuawsmbrtn)
* [BenLubar](https://github.com/BenLubar)
* [adbelle](https://github.com/adbelle)
* [evanminto](https://github.com/evanminto)
* [MightyPork](https://github.com/MightyPork)
* [ashleyhull-versent](mailto:ashley.hull@versent.com.au)
* [ashleyhull-versent](https://github.com/ashleyhull-versent)
* [yhirano55](https://github.com/yhirano55)
* [rinsuki](https://github.com/rinsuki)
* [dunn](https://github.com/dunn)
* [devkral](https://github.com/devkral)
* [camponez](https://github.com/camponez)
* [hugogameiro](https://github.com/hugogameiro)
* [SerCom_KC](mailto:szescxz@gmail.com)
* [aschmitz](https://github.com/aschmitz)
* [trwnh](https://github.com/trwnh)
* [devkral](https://github.com/devkral)
* [fpiesche](https://github.com/fpiesche)
* [hugogameiro](https://github.com/hugogameiro)
* [gandaro](https://github.com/gandaro)
* [johnsudaar](https://github.com/johnsudaar)
* [ariasuni](https://github.com/ariasuni)
* [trebmuh](https://github.com/trebmuh)
* [rmhasan](https://github.com/rmhasan)
* [kedamaDQ](https://github.com/kedamaDQ)
* [lindwurm](https://github.com/lindwurm)
* [victorhck](mailto:victorhck@geeko.site)
* [voidsatisfaction](https://github.com/voidsatisfaction)
* [BenLubar](https://github.com/BenLubar)
* [hikari-no-yume](https://github.com/hikari-no-yume)
* [seefood](https://github.com/seefood)
* [jackjennings](https://github.com/jackjennings)
* [koyuawsmbrtn](https://github.com/koyuawsmbrtn)
* [mfmfuyu](https://github.com/mfmfuyu)
* [puckipedia](https://github.com/puckipedia)
* [spla](mailto:spla@mastodont.cat)
* [expenses](https://github.com/expenses)
* [walf443](https://github.com/walf443)
* [JoelQ](https://github.com/JoelQ)
* [mistydemeo](https://github.com/mistydemeo)
* [dunn](https://github.com/dunn)
* [Ashley](mailto:expenses@airmail.cc)
* [xqus](https://github.com/xqus)
* [pfm-eyesightjp](https://github.com/pfm-eyesightjp)
* [fakenine](https://github.com/fakenine)
* [Shleeble](https://github.com/Shleeble)
* [Samy KACIMI](mailto:samy.kacimi@gmail.com)
* [tsuwatch](https://github.com/tsuwatch)
* [victorhck](https://github.com/victorhck)
* [mkljczk](https://github.com/mkljczk)
* [manuelviens](https://github.com/manuelviens)
* [puckipedia](https://github.com/puckipedia)
* [fvh-P](https://github.com/fvh-P)
* [rtucker](https://github.com/rtucker)
* [Anna e só](mailto:contraexemplos@gmail.com)
@ -123,6 +125,7 @@ and provided thanks to the work of the following contributors:
* [diomed](https://github.com/diomed)
* [Neetshin](mailto:neetshin@neetsh.in)
* [rainyday](https://github.com/rainyday)
* [tcitworld](https://github.com/tcitworld)
* [ProgVal](https://github.com/ProgVal)
* [valentin2105](https://github.com/valentin2105)
* [yuntan](https://github.com/yuntan)
@ -136,44 +139,53 @@ and provided thanks to the work of the following contributors:
* [TheKinrar](https://github.com/TheKinrar)
* [AA4ch1](https://github.com/AA4ch1)
* [alexgleason](https://github.com/alexgleason)
* [Bèr Kessels](mailto:ber@berk.es)
* [cpytel](https://github.com/cpytel)
* [northerner](https://github.com/northerner)
* [fhemberger](https://github.com/fhemberger)
* [Gomasy](https://github.com/Gomasy)
* [greysteil](https://github.com/greysteil)
* [hencatsmith](https://github.com/hencatsmith)
* [d6rkaiz](https://github.com/d6rkaiz)
* [Reverite](https://github.com/Reverite)
* [JohnD28](https://github.com/JohnD28)
* [znz](https://github.com/znz)
* [saper](https://github.com/saper)
* [Naouak](https://github.com/Naouak)
* [pawelngei](https://github.com/pawelngei)
* [reneklacan](https://github.com/reneklacan)
* [ekiru](https://github.com/ekiru)
* [tcitworld](https://github.com/tcitworld)
* [geta6](https://github.com/geta6)
* [happycoloredbanana](https://github.com/happycoloredbanana)
* [leopku](https://github.com/leopku)
* [SansPseudoFix](https://github.com/SansPseudoFix)
* [salvadorpla](https://github.com/salvadorpla)
* [spla](mailto:sp@mastodont.cat)
* [tateisu](https://github.com/tateisu)
* [tomfhowe](https://github.com/tomfhowe)
* [noraworld](https://github.com/noraworld)
* [lfuelling](https://github.com/lfuelling)
* [theboss](https://github.com/theboss)
* [nzws](https://github.com/nzws)
* [duxovni](https://github.com/duxovni)
* [smorimoto](https://github.com/smorimoto)
* [178inaba](https://github.com/178inaba)
* [acid-chicken](https://github.com/acid-chicken)
* [xgess](https://github.com/xgess)
* [alyssais](https://github.com/alyssais)
* [aablinov](https://github.com/aablinov)
* [stalker314314](https://github.com/stalker314314)
* [cutls](https://github.com/cutls)
* [dariusk](https://github.com/dariusk)
* [huertanix](https://github.com/huertanix)
* [genesixx](https://github.com/genesixx)
* [eleboucher](https://github.com/eleboucher)
* [halkeye](https://github.com/halkeye)
* [Hanage999](https://github.com/Hanage999)
* [treby](https://github.com/treby)
* [jpdevries](https://github.com/jpdevries)
* [gdpelican](https://github.com/gdpelican)
* [kmichl](https://github.com/kmichl)
* [Kurtis Rainbolt-Greene](mailto:me@kurtisrainboltgreene.name)
* [saper](https://github.com/saper)
* [panarom](https://github.com/panarom)
* [Dar13](https://github.com/Dar13)
* [nevillepark](https://github.com/nevillepark)
* [ornithocoder](https://github.com/ornithocoder)
@ -181,7 +193,7 @@ and provided thanks to the work of the following contributors:
* [pierreozoux](https://github.com/pierreozoux)
* [qguv](https://github.com/qguv)
* [Ram Lmn](mailto:ramlmn@users.noreply.github.com)
* [aurelia-sl](https://github.com/aurelia-sl)
* [Sascha](mailto:sascha@serenitylabs.cloud)
* [harukasan](https://github.com/harukasan)
* [stamak](https://github.com/stamak)
* [Technowix](https://github.com/Technowix)
@ -196,9 +208,9 @@ and provided thanks to the work of the following contributors:
* [chr-1x](https://github.com/chr-1x)
* [esetomo](https://github.com/esetomo)
* [foxiehkins](https://github.com/foxiehkins)
* [highemerly](https://github.com/highemerly)
* [hoodie](mailto:hoodiekitten@outlook.com)
* [luzi82](https://github.com/luzi82)
* [duxovni](https://github.com/duxovni)
* [slice](https://github.com/slice)
* [tmm576](https://github.com/tmm576)
* [unsmell](mailto:unsmell@users.noreply.github.com)
@ -209,13 +221,12 @@ and provided thanks to the work of the following contributors:
* [AndreLewin](https://github.com/AndreLewin)
* [0xflotus](https://github.com/0xflotus)
* [redtachyons](https://github.com/redtachyons)
* [acid-chicken](https://github.com/acid-chicken)
* [thurloat](https://github.com/thurloat)
* [aaribaud](https://github.com/aaribaud)
* [pointlessone](https://github.com/pointlessone)
* [Andrew](mailto:andrewlchronister@gmail.com)
* [aurelien-reeves](https://github.com/aurelien-reeves)
* [AnaGelez](https://github.com/AnaGelez)
* [elegaanz](https://github.com/elegaanz)
* [estuans](https://github.com/estuans)
* [dissolve](https://github.com/dissolve)
* [PurpleBooth](https://github.com/PurpleBooth)
@ -227,16 +238,14 @@ and provided thanks to the work of the following contributors:
* [muffinista](https://github.com/muffinista)
* [cdutson](https://github.com/cdutson)
* [farlistener](https://github.com/farlistener)
* [dariusk](https://github.com/dariusk)
* [DavidLibeau](https://github.com/DavidLibeau)
* [dmerejkowsky](https://github.com/dmerejkowsky)
* [ddevault](https://github.com/ddevault)
* [Fjoerfoks](https://github.com/Fjoerfoks)
* [fmauNeko](https://github.com/fmauNeko)
* [gloaec](https://github.com/gloaec)
* [Gomasy](https://github.com/Gomasy)
* [unstabler](https://github.com/unstabler)
* [potato4d](https://github.com/potato4d)
* [Hanage999](https://github.com/Hanage999)
* [h-izumi](https://github.com/h-izumi)
* [ErikXXon](https://github.com/ErikXXon)
* [ian-kelling](https://github.com/ian-kelling)
@ -251,13 +260,17 @@ and provided thanks to the work of the following contributors:
* [tkbky](https://github.com/tkbky)
* [Kaylee](mailto:kaylee@codethat.sucks)
* [Kazhnuz](https://github.com/Kazhnuz)
* [mkody](https://github.com/mkody)
* [connyduck](https://github.com/connyduck)
* [LindseyB](https://github.com/LindseyB)
* [Lorenz Diener](mailto:halcyon@icosahedron.website)
* [alimony](https://github.com/alimony)
* [Markus Amalthea Magnuson](mailto:markus.magnuson@gmail.com)
* [madmath03](https://github.com/madmath03)
* [mig5](https://github.com/mig5)
* [moritzheiber](https://github.com/moritzheiber)
* [Nathaniel Suchy](mailto:me@lunorian.is)
* [ndarville](https://github.com/ndarville)
* [NimaBoscarino](https://github.com/NimaBoscarino)
* [Abzol](https://github.com/Abzol)
* [PatOnTheBack](https://github.com/PatOnTheBack)
* [xPaw](https://github.com/xPaw)
@ -287,16 +300,15 @@ and provided thanks to the work of the following contributors:
* [amazedkoumei](https://github.com/amazedkoumei)
* [anon5r](https://github.com/anon5r)
* [aus-social](https://github.com/aus-social)
* [imbsky](https://github.com/imbsky)
* [bsky](mailto:me@imbsky.net)
* [codl](https://github.com/codl)
* [cpsdqs](https://github.com/cpsdqs)
* [barzamin](https://github.com/barzamin)
* [fhalna](https://github.com/fhalna)
* [highemerly](https://github.com/highemerly)
* [haoyayoi](https://github.com/haoyayoi)
* [ik11235](https://github.com/ik11235)
* [kawax](https://github.com/kawax)
* [shrft](https://github.com/shrft)
* [007lva](https://github.com/007lva)
* [mbajur](https://github.com/mbajur)
* [matsurai25](https://github.com/matsurai25)
@ -307,15 +319,18 @@ and provided thanks to the work of the following contributors:
* [pinfort](https://github.com/pinfort)
* [rbaumert](https://github.com/rbaumert)
* [rhoio](https://github.com/rhoio)
* [sclaire-1](https://github.com/sclaire-1)
* [umonaca](https://github.com/umonaca)
* [usagi-f](https://github.com/usagi-f)
* [vidarlee](https://github.com/vidarlee)
* [vjackson725](https://github.com/vjackson725)
* [wxcafe](https://github.com/wxcafe)
* [Grawl](https://github.com/Grawl)
* [新都心(Neet Shin)](mailto:nucx@dio-vox.com)
* [clarfon](https://github.com/clarfon)
* [cygnan](https://github.com/cygnan)
* [Awea](https://github.com/Awea)
* [halcy](https://github.com/halcy)
* [eai04191](https://github.com/eai04191)
* [8398a7](https://github.com/8398a7)
* [857b](https://github.com/857b)
* [insom](https://github.com/insom)
@ -332,6 +347,7 @@ and provided thanks to the work of the following contributors:
* [a2](https://github.com/a2)
* [alfiedotwtf](https://github.com/alfiedotwtf)
* [0xa](https://github.com/0xa)
* [ArisuOngaku](https://github.com/ArisuOngaku)
* [virtualpain](https://github.com/virtualpain)
* [sapphirus](https://github.com/sapphirus)
* [amandavisconti](https://github.com/amandavisconti)
@ -342,15 +358,22 @@ and provided thanks to the work of the following contributors:
* [schas002](https://github.com/schas002)
* [contraexemplo](https://github.com/contraexemplo)
* [abackstrom](https://github.com/abackstrom)
* [arielrodrigues](https://github.com/arielrodrigues)
* [orlea](https://github.com/orlea)
* [armandfardeau](https://github.com/armandfardeau)
* [raboof](https://github.com/raboof)
* [jumbosushi](https://github.com/jumbosushi)
* [ayumin](https://github.com/ayumin)
* [bzg](https://github.com/bzg)
* [benediktg](https://github.com/benediktg)
* [BastienDurel](https://github.com/BastienDurel)
* [li-bei](https://github.com/li-bei)
* [Benedikt Geißler](mailto:benedikt@g5r.eu)
* [BenisonSebastian](https://github.com/BenisonSebastian)
* [blakebarnett](https://github.com/blakebarnett)
* [bradj](https://github.com/bradj)
* [Brad Janke](mailto:brad.janke@gmail.com)
* [bclindner](https://github.com/bclindner)
* [brycied00d](https://github.com/brycied00d)
* [berkes](https://github.com/berkes)
* [carlosjs23](https://github.com/carlosjs23)
* [cgxxx](https://github.com/cgxxx)
* [kibitan](https://github.com/kibitan)
@ -358,41 +381,48 @@ and provided thanks to the work of the following contributors:
* [chris-martin](https://github.com/chris-martin)
* [DoubleMalt](https://github.com/DoubleMalt)
* [Moosh-be](https://github.com/Moosh-be)
* [cchoi12](https://github.com/cchoi12)
* [Motoma](https://github.com/Motoma)
* [Christopher Kolstad](mailto:christopher.kolstad@finn.no)
* [csu](https://github.com/csu)
* [kklleemm](https://github.com/kklleemm)
* [colindean](https://github.com/colindean)
* [DeeUnderscore](https://github.com/DeeUnderscore)
* [dachinat](https://github.com/dachinat)
* [multiple-creatures](https://github.com/multiple-creatures)
* [shapeshifter-system](https://github.com/shapeshifter-system)
* [watilde](https://github.com/watilde)
* [daprice](https://github.com/daprice)
* [da2x](https://github.com/da2x)
* [codesections](https://github.com/codesections)
* [dar5hak](https://github.com/dar5hak)
* [kant](https://github.com/kant)
* [maxolasersquad](https://github.com/maxolasersquad)
* [singingwolfboy](https://github.com/singingwolfboy)
* [caldwell](https://github.com/caldwell)
* [davidcelis](https://github.com/davidcelis)
* [divergentdave](https://github.com/divergentdave)
* [davefp](https://github.com/davefp)
* [yipdw](https://github.com/yipdw)
* [debanshuk](https://github.com/debanshuk)
* [mascali33](https://github.com/mascali33)
* [DerekNonGeneric](https://github.com/DerekNonGeneric)
* [dblandin](https://github.com/dblandin)
* [Drew Gates](mailto:aranaur@users.noreply.github.com)
* [dtschust](https://github.com/dtschust)
* [Dryusdan](https://github.com/Dryusdan)
* [eai04191](https://github.com/eai04191)
* [d3vgru](https://github.com/d3vgru)
* [Elizafox](https://github.com/Elizafox)
* [enewhuis](https://github.com/enewhuis)
* [ericblade](https://github.com/ericblade)
* [mikoim](https://github.com/mikoim)
* [espenronnevik](https://github.com/espenronnevik)
* [Expenses](mailto:expenses@airmail.cc)
* [fabianonline](https://github.com/fabianonline)
* [Finariel](https://github.com/Finariel)
* [siuying](https://github.com/siuying)
* [zoc](https://github.com/zoc)
* [fwenzel](https://github.com/fwenzel)
* [gabrielrumiranda](https://github.com/gabrielrumiranda)
* [GenbuHase](https://github.com/GenbuHase)
* [nilsding](https://github.com/nilsding)
* [hattori6789](https://github.com/hattori6789)
@ -401,6 +431,7 @@ and provided thanks to the work of the following contributors:
* [myfreeweb](https://github.com/myfreeweb)
* [gfaivre](https://github.com/gfaivre)
* [Fiaxhs](https://github.com/Fiaxhs)
* [rasjonell](https://github.com/rasjonell)
* [reedcourty](https://github.com/reedcourty)
* [anneau](https://github.com/anneau)
* [lanodan](https://github.com/lanodan)
@ -421,46 +452,49 @@ and provided thanks to the work of the following contributors:
* [jack-michaud](https://github.com/jack-michaud)
* [Floppy](https://github.com/Floppy)
* [loomchild](https://github.com/loomchild)
* [jglauche](https://github.com/jglauche)
* [jenkr55](https://github.com/jenkr55)
* [hyenagirl64](https://github.com/hyenagirl64)
* [press5](https://github.com/press5)
* [TrollDecker](https://github.com/TrollDecker)
* [jmontane](https://github.com/jmontane)
* [jonathanklee](https://github.com/jonathanklee)
* [jguerder](https://github.com/jguerder)
* [Jehops](https://github.com/Jehops)
* [joshuap](https://github.com/joshuap)
* [Tiwy57](https://github.com/Tiwy57)
* [xuv](https://github.com/xuv)
* [Jnsll](https://github.com/Jnsll)
* [j0k3r](https://github.com/j0k3r)
* [KEINOS](https://github.com/KEINOS)
* [futoase](https://github.com/futoase)
* [pot8to](https://github.com/pot8to)
* [Jonathan Klee](mailto:klee.jonathan@gmail.com)
* [Jordan Guerder](mailto:jguerder@fr.pulseheberg.net)
* [Joseph Mingrone](mailto:jehops@users.noreply.github.com)
* [Joshua Wood](mailto:josh@joshuawood.net)
* [Julien](mailto:tiwy57@users.noreply.github.com)
* [Julien Deswaef](mailto:juego@requiem4tv.com)
* [June Sallou](mailto:jnsll@users.noreply.github.com)
* [Jérémy Benoist](mailto:j0k3r@users.noreply.github.com)
* [KEINOS](mailto:github@keinos.com)
* [Keiji Matsuzaki](mailto:futoase@gmail.com)
* [Kevin Liu](mailto:kevin@potatofrom.space)
* [Kit Redgrave](mailto:qwertyitis@gmail.com)
* [Knut Erik](mailto:abjectio@users.noreply.github.com)
* [mkody](https://github.com/mkody)
* [k0ta0uchi](https://github.com/k0ta0uchi)
* [KrzysiekJ](https://github.com/KrzysiekJ)
* [Kota Ouchi](mailto:k0ta0uchi@gmail.com)
* [Krzysztof Jurewicz](mailto:krzysztof.jurewicz@gmail.com)
* [Leo Wzukw](mailto:leowzukw@users.noreply.github.com)
* [Tak](https://github.com/Tak)
* [cacheflow](https://github.com/cacheflow)
* [ldidry](https://github.com/ldidry)
* [jemus42](https://github.com/jemus42)
* [lfuelling](https://github.com/lfuelling)
* [Grabacr07](https://github.com/Grabacr07)
* [mistermantas](https://github.com/mistermantas)
* [MareenaKunjachan](https://github.com/MareenaKunjachan)
* [mareklach](https://github.com/mareklach)
* [wirehack7](https://github.com/wirehack7)
* [martymcguire](https://github.com/martymcguire)
* [marvinkopf](https://github.com/marvinkopf)
* [otsune](https://github.com/otsune)
* [mbugowski](https://github.com/mbugowski)
* [Leonie](mailto:62470640+bubblineyuri@users.noreply.github.com)
* [Levi Bard](mailto:taktaktaktaktaktaktaktaktaktak@gmail.com)
* [Lex Alexander](mailto:l.alexander10@gmail.com)
* [Lorenz Diener](mailto:lorenzd@gmail.com)
* [Luc Didry](mailto:ldidry@users.noreply.github.com)
* [Lukas Burk](mailto:jemus42@users.noreply.github.com)
* [Manato Kameya](mailto:grabacr07+github@gmail.com)
* [Mantas](mailto:mistermantas@users.noreply.github.com)
* [Marcin Mikołajczak](mailto:me@mkljczk.pl)
* [Mareena Kunjachan](mailto:mareenakunjachan@gmail.com)
* [Marek Lach](mailto:marek.brohatwack.lach@gmail.com)
* [Markus R](mailto:wirehack7@users.noreply.github.com)
* [Marty McGuire](mailto:schmartissimo@gmail.com)
* [Marvin Kopf](mailto:marvinkopf@posteo.de)
* [Masafumi Otsune](mailto:info@otsune.com)
* [Matej Ľach](mailto:matejlach@users.noreply.github.com)
* [Mateusz Bugowski](mailto:23140767+mbugowski@users.noreply.github.com)
* [Mathias B](mailto:10813340+mathias-b@users.noreply.github.com)
* [madmath03](https://github.com/madmath03)
* [matt-auckland](https://github.com/matt-auckland)
* [webroo](https://github.com/webroo)
* [Mathieu Brunot](mailto:mb.mathieu.brunot@gmail.com)
* [Matt](mailto:matt-auckland@users.noreply.github.com)
* [Matt Sweetman](mailto:webroo@gmail.com)
* [Matthias Beyer](mailto:mail@beyermatthias.de)
* [Matthias Jouan](mailto:matthias.jouan@gmail.com)
* [Matthieu Paret](mailto:matthieuparet69@gmail.com)
@ -512,10 +546,11 @@ and provided thanks to the work of the following contributors:
* [S.H](mailto:gamelinks007@gmail.com)
* [Sadiq Saif](mailto:staticsafe@users.noreply.github.com)
* [Sam Hewitt](mailto:hewittsamuel@gmail.com)
* [Sasha Sorokin](mailto:dafri.nochiterov8@gmail.com)
* [Sara Aimée Smiseth](mailto:51710585+sarasmiseth@users.noreply.github.com)
* [Satoshi KOJIMA](mailto:skoji@mac.com)
* [ScienJus](mailto:i@scienjus.com)
* [Scott Larkin](mailto:scott@codeclimate.com)
* [Scott Sweeny](mailto:scott@ssweeny.net)
* [Sebastian Hübner](mailto:imolein@users.noreply.github.com)
* [Sebastian Morr](mailto:sebastian@morr.cc)
* [Sergei Č](mailto:noiwex1911@gmail.com)
@ -525,10 +560,12 @@ and provided thanks to the work of the following contributors:
* [Shin Kojima](mailto:shin@kojima.org)
* [Shouko Yu](mailto:imshouko@gmail.com)
* [Sina Mashek](mailto:sina@mashek.xyz)
* [Soft. Dev](mailto:24978+nileshkumar@users.noreply.github.com)
* [Soshi Kato](mailto:mail@sossii.com)
* [Spanky](mailto:2788886+spankyworks@users.noreply.github.com)
* [StefOfficiel](mailto:pichard.stephane@free.fr)
* [Steven Tappert](mailto:admin@dark-it.net)
* [Stéphane Guillou](mailto:stephane.guillou@member.fsf.org)
* [Svetlozar Todorov](mailto:svetlik@users.noreply.github.com)
* [Sébastien Santoro](mailto:dereckson@espace-win.org)
* [Tad Thorley](mailto:phaedryx@users.noreply.github.com)
@ -536,7 +573,10 @@ and provided thanks to the work of the following contributors:
* [Takayuki KUSANO](mailto:github@tkusano.jp)
* [TakesxiSximada](mailto:takesxi.sximada@gmail.com)
* [Tao Bror Bojlén](mailto:brortao@users.noreply.github.com)
* [Taras Gogol](mailto:taras2358@gmail.com)
* [Tdxdxoz](mailto:tdxdxoz@gmail.com)
* [TheInventrix](mailto:theinventrix@users.noreply.github.com)
* [TheMainOne](mailto:50847364+theevilskeleton@users.noreply.github.com)
* [Thomas Alberola](mailto:thomas@needacoffee.fr)
* [Toby Deshane](mailto:fortyseven@users.noreply.github.com)
* [Toby Pinder](mailto:gigitrix@gmail.com)
@ -563,6 +603,7 @@ and provided thanks to the work of the following contributors:
* [Yann Klis](mailto:yann.klis@gmail.com)
* [Yağızhan](mailto:35808275+yagizhan49@users.noreply.github.com)
* [Yeechan Lu](mailto:wz.bluesnow@gmail.com)
* [Your Name](mailto:lorenzd@gmail.com)
* [Yusuke Abe](mailto:moonset20@gmail.com)
* [Zachary Spector](mailto:logicaldash@gmail.com)
* [ZiiX](mailto:ziix@users.noreply.github.com)
@ -572,6 +613,7 @@ and provided thanks to the work of the following contributors:
* [bsky](mailto:git@imbsky.net)
* [caesarologia](mailto:lopesgemelli.1@gmail.com)
* [cbayerlein](mailto:c.bayerlein@gmail.com)
* [chr v1.x](mailto:chr@cybre.space)
* [chrolis](mailto:chrolis@users.noreply.github.com)
* [cormo](mailto:cormorant2+github@gmail.com)
* [d0p1](mailto:dopi-sama@hush.com)
@ -582,6 +624,7 @@ and provided thanks to the work of the following contributors:
* [fusshi-](mailto:dikky1218@users.noreply.github.com)
* [gentaro](mailto:gentaroooo@gmail.com)
* [gol-cha](mailto:info@mevo.xyz)
* [guigeekz](mailto:pattusg@gmail.com)
* [hakoai](mailto:hk--76@qa2.so-net.ne.jp)
* [haosbvnker](mailto:github@chaosbunker.com)
* [ichi_i](mailto:51489410+ichi-i@users.noreply.github.com)
@ -593,10 +636,11 @@ and provided thanks to the work of the following contributors:
* [jooops](mailto:joops@autistici.org)
* [jukper](mailto:jukkaperanto@gmail.com)
* [jumoru](mailto:jumoru@mailbox.org)
* [kaiyou](mailto:pierre@jaury.eu)
* [karlyeurl](mailto:karl.yeurl@gmail.com)
* [kedama](mailto:32974885+kedamadq@users.noreply.github.com)
* [kodai](mailto:shirafuta.kodai@gmail.com)
* [kuro5hin](mailto:rusty@kuro5hin.org)
* [leo60228](mailto:leo@60228.dev)
* [luzpaz](mailto:luzpaz@users.noreply.github.com)
* [maxypy](mailto:maxime@mpigou.fr)
* [mhe](mailto:mail@marcus-herrmann.com)
@ -607,21 +651,25 @@ and provided thanks to the work of the following contributors:
* [muan](mailto:muan@github.com)
* [namelessGonbai](mailto:43787036+namelessgonbai@users.noreply.github.com)
* [neetshin](mailto:neetshin@neetsh.in)
* [noiob](mailto:8197071+noiob@users.noreply.github.com)
* [notozeki](mailto:notozeki@users.noreply.github.com)
* [ntl-purism](mailto:57806346+ntl-purism@users.noreply.github.com)
* [nzws](mailto:git-yuzu@svk.jp)
* [rch850](mailto:rich850@gmail.com)
* [roikale](mailto:roikale@users.noreply.github.com)
* [rysiekpl](mailto:rysiek@hackerspace.pl)
* [saturday06](mailto:dyob@lunaport.net)
* [scd31](mailto:57571338+scd31@users.noreply.github.com)
* [scriptjunkie](mailto:scriptjunkie@scriptjunkie.us)
* [seekr](mailto:mario.drs@gmail.com)
* [sternenseemann](mailto:git@lukasepple.de)
* [sundevour](mailto:31990469+sundevour@users.noreply.github.com)
* [syui](mailto:syui@users.noreply.github.com)
* [tackeyy](mailto:mailto.takita.yusuke@gmail.com)
* [tateisu](mailto:tateisu@gmail.com)
* [taicv](mailto:chuvantai@gmail.com)
* [tmyt](mailto:shigure@refy.net)
* [trevDev()](mailto:trev@trevdev.ca)
* [tsia](mailto:github@tsia.de)
* [umonaca](mailto:53662960+umonaca@users.noreply.github.com)
* [utam0k](mailto:k0ma@utam0k.jp)
* [vpzomtrrfrt](mailto:vpzomtrrfrt@gmail.com)
* [walfie](mailto:walfington@gmail.com)
@ -634,6 +682,7 @@ and provided thanks to the work of the following contributors:
* [りんすき](mailto:6533808+rinsuki@users.noreply.github.com)
* [ヨイツの賢狼ホロ | 3rd style](mailto:horo@yoitsu.moe)
* [唐宗勛](mailto:tangzongxun@hotmail.com)
* [夕日](mailto:xirikm@gmail.com)
* [猫吸血鬼ディフリス / 猫ロキP](mailto:deflis@gmail.com)
* [艮 鮟鱇](mailto:ushitora_anqou@yahoo.co.jp)
* [西小倉宏信](mailto:nishiko@mindia.jp)
@ -645,122 +694,308 @@ This document is provided for informational purposes only. Since it is only upda
Following people have contributed to translation of Mastodon:
- ᏦᏁᎢᎵᏫ 😷 (*Spanish, Argentina*)
- Sveinn í Felli (*Icelandic*)
- taicv (*Vietnamese*)
- ButterflyOfFire (*Arabic; French; Kabyle*)
- Duy (*Vietnamese*)
- Evert Prants (*Estonian*)
- Zoltán Gera (*Hungarian*)
- Daniele Lira Mereb (*Portuguese, Brazilian*)
- Kristijan Tkalec (*Slovenian*)
- Evert Prants (*Estonian*)
- stan ionut (*Romanian*)
- Ramdziana F Y (*Indonesian*)
- Michal Stanke (*Czech*)
- Xosé M. (*Galician; Spanish*)
- 奈卜拉 (*Chinese Simplified*)
- borys_sh (*Ukrainian*)
- ButterflyOfFire (*Arabic; French*)
- Miguel Mayol (*Spanish; Catalan*)
- Besnik_b (*Albanian*)
- Thai Localization (*Thai*)
- Emanuel Pina (*Portuguese*)
- Jeong Arm (*Korean; Esperanto; Japanese*)
- Imre Kristoffer Eilertsen (*Norwegian*)
- Danial Behzadi (*Persian*)
- Osoitz (*Basque*)
- oɹʇuʞ (*Spanish, Argentina*)
- koyu (*German*)
- Peterandre (*Norwegian Nynorsk; Norwegian*)
- Jeroen (*Dutch*)
- spla (*Catalan; Spanish*)
- Iváns (*Galician*)
- koyu (*German*)
- Sasha Sorokin (*Russian; Vietnamese; Swedish; Catalan; Greek; Hungarian; Armenian; Albanian; Galician; French; Danish; German; Korean; Ukrainian*)
- enolp (*Asturian*)
- Masoud Abkenar (*Persian*)
- lamnatos (*Greek*)
- Alix Rossi (*Corsican; French*)
- arshat (*Kazakh*)
- FédiQuébec (*French*)
- Marek Ľach (*Slovak; Polish*)
- Muha Aliss (*Turkish*)
- 唐宗勛 (*Chinese Simplified*)
- Jeong Arm (*Korean; Esperanto; Japanese*)
- Oguz Ersen (*Turkish*)
- spla (*Catalan*)
- Ramdziana F Y (*Indonesian*)
- tolstoevsky (*Russian*)
- Emyn-Russell Nt Nefydd (*Welsh*)
- Aditoo17 (*Czech*)
- Xosé M. (*Galician*)
- Roboron (*Spanish*)
- Alix Rossi (*Corsican; French*)
- Maya Minatsuki (*Japanese*)
- Masoud Abkenar (*Persian*)
- Thai Localization (*Thai*)
- Marek Ľach (*Slovak; Polish*)
- d5Ziif3K (*Ukrainian*)
- lamnatos (*Greek*)
- Emyn Nant Nefydd (*Welsh*)
- ariasuni (*French; Esperanto*)
- Roboron (*Spanish*)
- Alessandro Levati (*Italian*)
- Diluns (*Occitan*)
- regulartranslator (*Portuguese, Brazilian*)
- vishnuvaratharajan (*Tamil*)
- Marcin Mikołajczak (*Polish*)
- Yi-Jyun Pan (*Chinese Traditional*)
- adrmzz (*Sardinian*)
- d5Ziif3K (*Ukrainian*)
- GiorgioHerbie (*Italian*)
- christalleras (*Norwegian Nynorsk*)
- Taloran (*Norwegian Nynorsk*)
- ThibG (*French; Icelandic*)
- Akarshan Biswas (*Bengali*)
- atarashiako (*Chinese Simplified*)
- 101010 (*Polish*)
- Yi-Jyun Pan (*Chinese Traditional*)
- silkevicious (*Italian*)
- FédiQuébec (*French*)
- Bertil Hedkvist (*Swedish*)
- cybergene (*Japanese*)
- norayr (*Armenian*)
- William(ѕ)ⁿ (*Spanish*)
- Tiago Epifânio (*Portuguese*)
- Mentor Gashi (*Albanian*)
- Jaz-Michael King (*Welsh*)
- christalleras (*Norwegian Nynorsk*)
- tykayn (*French*)
- Alessandro Levati (*Italian*)
- carolinagiorno (*Portuguese, Brazilian*)
- Roby Thomas (*Malayalam*)
- Bharat Kumar (*Hindi*)
- tykayn (*French*)
- axi (*Finnish*)
- Selyan Slimane AMIRI (*Kabyle*)
- taoxvx (*Danish*)
- sabri (*Spanish*)
- Sasha Sorokin (*Russian*)
- Hrach Mkrtchyan (*Armenian*)
- sabri (*Spanish; Spanish, Argentina*)
- Dewi (*Breton; French*)
- SteinarK (*Norwegian Nynorsk*)
- Mathias B. Vagnes (*Norwegian*)
- dashersyed (*Urdu*)
- ThonyVezbe (*Breton*)
- Acolyte (*Ukrainian*)
- Conight Wang (*Chinese Simplified*)
- Damjan Dimitrioski (*Macedonian*)
- PPNplus (*Thai*)
- Tagomago (*Spanish; French*)
- shioko (*Chinese Simplified*)
- Balázs Meskó (*Hungarian*)
- Evgeny Petrov (*Russian*)
- ariasuni (*French; Esperanto*)
- Tiago Epifânio (*Portuguese*)
- dxwc (*Bengali*)
- Gwenn (*Breton*)
- Ryo (*Korean*)
- Rafael H L Moretti (*Portuguese, Brazilian*)
- jaranta (*Finnish*)
- gagik_ (*Armenian*)
- Felicia (*Swedish*)
- Jess Rafn (*Danish*)
- Stasiek Michalski (*Polish*)
- liffon (*Swedish*)
- dxwc (*Bengali*)
- Saederup92 (*Danish*)
- Vanege (*Esperanto*)
- jmontane (*Catalan*)
- Johan Schiff (*Swedish*)
- Arunmozhi (*Tamil*)
- kat (*Ukrainian; Russian*)
- Laura (*Polish*)
- oti4500 (*Hungarian; Ukrainian*)
- diazepan (*Spanish; Spanish, Argentina*)
- Sokratis Alichanidis (*Greek*)
- Rikard Linde (*Swedish*)
- Juan José Salvador Piedra (*Spanish*)
- diazepan (*Spanish*)
- marzuquccen (*Kabyle*)
- BurekzFinezt (*Serbian*)
- SHeija (*Finnish*)
- Jack R (*Spanish*)
- Saederup92 (*Danish*)
- Stasiek Michalski (*Polish*)
- Dewi (*Breton; French*)
- cybergene (*Japanese*)
- andruhov (*Ukrainian; Russian*)
- 森の子リスのミーコの大冒険 (*Japanese*)
- るいーね (*Japanese*)
- Sam Tux (*Bengali*)
- Unmual (*Spanish*)
- AW Unad (*Indonesian*)
- Andrea Lo Iacono (*Italian*)
- Cutls (*Japanese*)
- Ray (*Spanish*)
- Unmual (*Spanish*)
- Ryo (*Korean*)
- Falling Snowdin (*Vietnamese*)
- Andrea Lo Iacono (*Italian*)
- EPEMA (*German*)
- Kinshuk Sunil (*Hindi*)
- Ullas Joseph (*Malayalam*)
- Yu-Pai Liu (*Chinese Traditional*)
- Amarin Cemthong (*Thai*)
- juanda097 (*Spanish*)
- Anunnakey (*Macedonian*)
- Cutls (*Japanese*)
- StanleyFrew (*French*)
- erikstl (*Esperanto*)
- ruine (*Japanese*)
- MadeInSteak (*Finnish*)
- Sokratis Alichanidis (*Greek*)
- dragnucs2 (*Arabic*)
- frumble (*German*)
- Rikard Linde (*Swedish*)
- PPNplus (*Thai*)
- Heimen Stoffels (*Dutch*)
- Rajarshi Guha (*Bengali*)
- Andrew (*Romanian*)
- Goudarz Jafari (*Persian*)
- arethsu (*Swedish*)
- EPEMA YT (*German*)
- Carlos Solís (*Esperanto*)
- Parthan S Ramanujam (*Tamil*)
- Ali Demirtaş (*Turkish*)
- Kasper Nymand (*Danish*)
- TS (*Finnish*)
- SensDeViata (*Ukrainian*)
- SergioFMiranda (*Portuguese, Brazilian*)
- OctolinGamer (*Portuguese, Brazilian*)
- AzureNya (*Chinese Simplified*)
- Ram varma (*Tamil*)
- 北䑓如法 (*Japanese*)
- frumble (*German*)
- kekkepikkuni (*Tamil*)
- oorsutri (*Tamil*)
- Nithin V (*Tamil*)
- Miro Rauhala (*Finnish*)
- diorama (*Italian*)
- Rhys Harrison (*Esperanto*)
- Guillaume Turchini (*French*)
- Ganesh D (*Marathi*)
- dragnucs2 (*Arabic*)
- Pedro Henrique (*Portuguese, Brazilian*)
- Tejas Harad (*Marathi*)
- Vasanthan (*Tamil*)
- 硫酸鶏 (*Japanese*)
- manukp (*Malayalam*)
- psymyn (*Hebrew*)
- earth dweller (*Marathi*)
- meijerivoi (*Finnish*)
- essaar (*Tamil*)
- serubeena (*Swedish*)
- Rintan (*Japanese*)
- Karol Kosek (*Polish*)
- valarivan (*Tamil*)
- Sebastián Andil (*Slovak*)
- v4vachan (*Malayalam*)
- KEINOS (*Japanese*)
- Ivan T. (*Chinese Traditional, Hong Kong*)
- filippodb (*Italian*)
- Balázs Meskó (*Hungarian*)
- JzshAC (*Chinese Simplified*)
- Rintan1 (*Japanese*)
- Bottle (*Tamil*)
- Khóo (*Chinese Traditional*)
- Steven Tappert (*German*)
- Antillion (*Spanish*)
- ZiriSut (*Kabyle*)
- gowthamanb (*Tamil*)
- hiphipvargas (*Portuguese*)
- Arttu Ylhävuori (*Finnish*)
- Ch. (*Korean*)
- tctovsli (*Norwegian Nynorsk*)
- Hinaloe (*Japanese*)
- strubbl (*German*)
- vjasiegd (*Polish*)
- SamitiMed (*Thai*)
- Reg3xp (*Persian*)
- AlexKoala (*Korean*)
- umelard (*Hebrew*)
- 硫酸鶏 (*Japanese*)
- Adrián Lattes (*Spanish*)
- Hinaloe (*Japanese*)
- Renato "Lond" Cerqueira (*Portuguese, Brazilian*)
- VSx86 (*Russian*)
- Daniel Dimitrov (*Bulgarian*)
- mynameismonkey (*Welsh*)
- parnikkapore (*Thai*)
- Marcin Mikołajczak (*Polish*)
- 森の子リスのミーコの大冒険 (*Japanese*)
- Marcepanek_ (*Polish*)
- Mo_der Steven (*Chinese Simplified*)
- SKELET (*Danish*)
- Renato "Lond" Cerqueira (*Portuguese, Brazilian*)
- enipra (*Armenian*)
- musix (*Persian*)
- ギャラ (*Chinese Simplified; Japanese*)
- ALEM FARID (*Kabyle*)
- ybardapurkar (*Marathi*)
- Adrián Lattes (*Spanish*)
- rasheedgm (*Kannada*)
- omquylzu (*Latvian*)
- Belkacem Mohammed (*Kabyle*)
- Navjot Singh (*Hindi*)
- Ozai (*German*)
- Sahak Petrosyan (*Armenian*)
- Daniel Dimitrov (*Bulgarian*)
- siamano (*Thai; Esperanto*)
- se7entime (*Indonesian*)
- Viorel-Cătălin Răpițeanu (*Romanian*)
- Siddhartha Sarathi Basu (*Bengali*)
- Pachara Chantawong (*Thai*)
- Skew (*French*)
- Zijian Zhao (*Chinese Simplified*)
- Guru Prasath Anandapadmanaban (*Tamil*)
- turtle836 (*German*)
- GatoOscuro (*Spanish*)
- Lamin (*Japanese*)
- Marcepanek_ (*Polish*)
- Yann Aguettaz (*French*)
- Feruz Oripov (*Russian*)
- Mick Onio (*Asturian*)
- hg6 (*Hindi*)
- Malik Mann (*German*)
- padulafacundo (*Spanish*)
- r3dsp1 (*Chinese Traditional, Hong Kong*)
- Tianqi Zhang (*Chinese Simplified*)
- Padraic Calpin (*Slovenian*)
- cenegd (*Chinese Simplified*)
- piupiupiudiu (*Chinese Simplified*)
- Hugh Liu (*Chinese Simplified*)
- Rakino (*Chinese Simplified*)
- Jothipazhani Nagarajan (*Tamil*)
- Miquel Sabaté Solà (*Catalan*)
- AmazighNM (*Kabyle*)
- Solid Rhino (*Dutch*)
- hallomaurits (*Dutch*)
- hussama (*Portuguese, Brazilian*)
- ThibG (*French*)
- shafouz (*Portuguese, Brazilian*)
- Tagada (*French*)
- Tom_ (*Czech*)
- SnDer (*Dutch*)
- PifyZ (*French*)
- eichkat3r (*German*)
- Karol Kosek (*Polish*)
- Akarshan Biswas (*Bengali*)
- PifyZ (*French*)
- OminousCry (*Russian*)
- Shrinivasan T (*Tamil*)
- Nathaël Noguès (*French*)
- Daniel M. (*Catalan*)
- Swati Sani (*Urdu*)
- Kk (*Kannada*)
- SusVersiva (*Catalan*)
- Robin van der Vliet (*Esperanto*)
- Zinkokooo (*Basque*)
- Tradjincal (*French*)
- Steven Tappert (*German*)
- sergioaraujo1 (*Portuguese, Brazilian*)
- Vikatakavi (*Kannada*)
- prabhjot (*Hindi*)
- twpenguin (*Chinese Traditional*)
- mmokhi (*Persian*)
- fedot (*Russian*)
- sergioaraujo1 (*Portuguese, Brazilian*)
- Livingston Samuel (*Tamil*)
- tsundoker (*Malayalam*)
- skaaarrr (*German*)
- 夜楓Yoka (*Chinese Simplified*)
- kiwi0 (*Italian*)
- fedot (*Russian*)
- mkljczk (*Polish*)
- igordrozniak (*Polish*)
- Ricardo Colin (*Spanish*)
- Esther (*Portuguese*)
- Paz Galindo (*Spanish*)
- Philipp Fischbeck (*German*)
- ralozkolya (*Georgian*)
- JackXu (*Chinese Simplified*)
- Lukas Fülling (*German*)
- Allen Zhong (*Chinese Simplified*)
- Zoé Bőle (*German*)
- Lukas Fülling (*German*)
- Albatroz Jeremias (*Portuguese*)
- Samir Tighzert (*Kabyle*)
- Nocta (*French*)
- Anoop (*Malayalam*)
- pezcurrel (*Italian*)
- Dremski (*Bulgarian*)
- Aymeric (*French*)
- tamaina (*Japanese*)
- Doug (*Portuguese, Brazilian*)
- Matias Lavik (*Norwegian Nynorsk*)
- Fleva (*Sardinian*)
- OpenAlgeria (*Arabic*)
- koppe-pan (*Japanese*)
- Amith Raj Shetty (*Kannada*)
- smedvedev (*Russian*)
- Trond Boksasp (*Norwegian*)
- random_person (*Spanish*)
- Sais Lakshmanan (*Tamil*)
- mikel (*Spanish*)
- Mohammad Adnan Mahmood (*Arabic*)

+ 153
- 0
CHANGELOG.md View File

@ -3,6 +3,159 @@ Changelog
All notable changes to this project will be documented in this file.
## [3.2.0] - 2020-07-27
### Added
- Add `SMTP_SSL` environment variable ([OmmyZhang](https://github.com/tootsuite/mastodon/pull/14309))
- Add hotkey for toggling content warning input in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13987))
- **Add e-mail-based sign in challenge for users with disabled 2FA** ([Gargron](https://github.com/tootsuite/mastodon/pull/14013))
- If user tries signing in after:
- Being inactive for a while
- With a previously unknown IP
- Without 2FA being enabled
- Require to enter a token sent via e-mail before sigining in
- Add `limit` param to RSS feeds ([noellabo](https://github.com/tootsuite/mastodon/pull/13743))
- Add `visibility` param to share page ([noellabo](https://github.com/tootsuite/mastodon/pull/13023))
- Add blurhash to link previews ([ThibG](https://github.com/tootsuite/mastodon/pull/13984), [ThibG](https://github.com/tootsuite/mastodon/pull/14143), [ThibG](https://github.com/tootsuite/mastodon/pull/13985), [Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/14267), [Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/14278), [ThibG](https://github.com/tootsuite/mastodon/pull/14126), [ThibG](https://github.com/tootsuite/mastodon/pull/14261), [ThibG](https://github.com/tootsuite/mastodon/pull/14260))
- In web UI, toots cannot be marked as sensitive unless there is media attached
- However, it's possible to do via API or ActivityPub
- Thumnails of link previews of such posts now use blurhash in web UI
- The Card entity in REST API has a new `blurhash` attribute
- Add support for `summary` field for media description in ActivityPub ([ThibG](https://github.com/tootsuite/mastodon/pull/13763))
- Add hints about incomplete remote content to web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/14031), [noellabo](https://github.com/tootsuite/mastodon/pull/14195))
- **Add personal notes for accounts** ([ThibG](https://github.com/tootsuite/mastodon/pull/14148), [Gargron](https://github.com/tootsuite/mastodon/pull/14208), [Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/14251))
- To clarify, these are notes only you can see, to help you remember details
- Notes can be viewed and edited from profiles in web UI
- New REST API: `POST /api/v1/accounts/:id/note` with `comment` param
- The Relationship entity in REST API has a new `note` attribute
- Add Helm chart ([dunn](https://github.com/tootsuite/mastodon/pull/14090), [dunn](https://github.com/tootsuite/mastodon/pull/14256), [dunn](https://github.com/tootsuite/mastodon/pull/14245))
- **Add customizable thumbnails for audio and video attachments** ([Gargron](https://github.com/tootsuite/mastodon/pull/14145), [Gargron](https://github.com/tootsuite/mastodon/pull/14244), [Gargron](https://github.com/tootsuite/mastodon/pull/14273), [Gargron](https://github.com/tootsuite/mastodon/pull/14203), [ThibG](https://github.com/tootsuite/mastodon/pull/14255), [ThibG](https://github.com/tootsuite/mastodon/pull/14306), [noellabo](https://github.com/tootsuite/mastodon/pull/14358), [noellabo](https://github.com/tootsuite/mastodon/pull/14357))
- Metadata (album, artist, etc) is no longer stripped from audio files
- Album art is automatically extracted from audio files
- Thumbnail can be manually uploaded for both audio and video attachments
- Media upload APIs now support `thumbnail` param
- On `POST /api/v1/media` and `POST /api/v2/media`
- And on `PUT /api/v1/media/:id`
- ActivityPub representation of media attachments represents custom thumbnails with an `icon` attribute
- The Media Attachment entity in REST API now has a `preview_remote_url` to its `preview_url`, equivalent to `remote_url` to its `url`
- **Add color extraction for thumbnails** ([Gargron](https://github.com/tootsuite/mastodon/pull/14209), [ThibG](https://github.com/tootsuite/mastodon/pull/14264))
- The `meta` attribute on the Media Attachment entity in REST API can now have a `colors` attribute which in turn contains three hex colors: `background`, `foreground`, and `accent`
- The background color is chosen from the most dominant color around the edges of the thumbnail
- The foreground and accent colors are chosen from the colors that are the most different from the background color using the CIEDE2000 algorithm
- The most satured color of the two is designated as the accent color
- The one with the highest W3C contrast is designated as the foreground color
- If there are not enough colors in the thumbnail, new ones are generated using a monochrome pattern
- Add a visibility indicator to toots in web UI ([noellabo](https://github.com/tootsuite/mastodon/pull/14123), [highemerly](https://github.com/tootsuite/mastodon/pull/14292))
- Add `tootctl email_domain_blocks` ([tateisu](https://github.com/tootsuite/mastodon/pull/13589), [Gargron](https://github.com/tootsuite/mastodon/pull/14147))
- Add "Add new domain block" to header of federation page in admin UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/13934))
- Add ability to keep emoji picker open with ctrl+click in web UI ([bclindner](https://github.com/tootsuite/mastodon/pull/13896), [noellabo](https://github.com/tootsuite/mastodon/pull/14096))
- Add custom icon for private boosts in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14380))
- Add support for Create and Update activities that don't inline objects in ActivityPub ([ThibG](https://github.com/tootsuite/mastodon/pull/14359))
- Add support for Undo activities that don't inline activities in ActivityPub ([ThibG](https://github.com/tootsuite/mastodon/pull/14346))
### Changed
- Change `.env.production.sample` to be leaner and cleaner ([Gargron](https://github.com/tootsuite/mastodon/pull/14206))
- It was overloaded as de-facto documentation and getting quite crowded
- Defer to the actual documentation while still giving a minimal example
- Change `tootctl search deploy` to work faster and display progress ([Gargron](https://github.com/tootsuite/mastodon/pull/14300))
- Change User-Agent of link preview fetching service to include "Bot" ([Gargron](https://github.com/tootsuite/mastodon/pull/14248))
- Some websites may not render OpenGraph tags into HTML if that's not the case
- Change behaviour to carry blocks over when someone migrates their followers ([ThibG](https://github.com/tootsuite/mastodon/pull/14144))
- Change volume control and download buttons in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/14122))
- **Change design of audio players in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/14095), [ThibG](https://github.com/tootsuite/mastodon/pull/14281), [Gargron](https://github.com/tootsuite/mastodon/pull/14282), [ThibG](https://github.com/tootsuite/mastodon/pull/14118), [Gargron](https://github.com/tootsuite/mastodon/pull/14199), [ThibG](https://github.com/tootsuite/mastodon/pull/14338))
- Change reply filter to never filter own toots in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14128))
- Change boost button to no longer serve as visibility indicator in web UI ([noellabo](https://github.com/tootsuite/mastodon/pull/14132), [ThibG](https://github.com/tootsuite/mastodon/pull/14373))
- Change contrast of flash messages ([cchoi12](https://github.com/tootsuite/mastodon/pull/13892))
- Change wording from "Hide media" to "Hide image/images" in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/13834))
- Change appearence of settings pages to be more consistent ([ariasuni](https://github.com/tootsuite/mastodon/pull/13938))
- Change "Add media" tooltip to not include long list of formats in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/13954))
- Change how badly contrasting emoji are rendered in web UI ([leo60228](https://github.com/tootsuite/mastodon/pull/13773), [ThibG](https://github.com/tootsuite/mastodon/pull/13772), [mfmfuyu](https://github.com/tootsuite/mastodon/pull/14020), [ThibG](https://github.com/tootsuite/mastodon/pull/14015))
- Change structure of unavailable content section on about page ([ariasuni](https://github.com/tootsuite/mastodon/pull/13930))
- Change behaviour to accept ActivityPub activities relayed through group actor ([noellabo](https://github.com/tootsuite/mastodon/pull/14279))
- Change amount of processing retries for ActivityPub activities ([noellabo](https://github.com/tootsuite/mastodon/pull/14355))
### Removed
- Remove the terms "blacklist" and "whitelist" from UX ([Gargron](https://github.com/tootsuite/mastodon/pull/14149), [mayaeh](https://github.com/tootsuite/mastodon/pull/14192))
- Environment variables changed (old versions continue to work):
- `WHITELIST_MODE``LIMITED_FEDERATION_MODE`
- `EMAIL_DOMAIN_BLACKLIST``EMAIL_DOMAIN_DENYLIST`
- `EMAIL_DOMAIN_WHITELIST``EMAIL_DOMAIN_ALLOWLIST`
- CLI option changed:
- `tootctl domains purge --whitelist-mode``tootctl domains purge --limited-federation-mode`
- Remove some unnecessary database indices ([lfuelling](https://github.com/tootsuite/mastodon/pull/13695), [noellabo](https://github.com/tootsuite/mastodon/pull/14259))
- Remove unnecessary Node.js version upper bound ([ykzts](https://github.com/tootsuite/mastodon/pull/14139))
### Fixed
- Fix `following` param not working when exact match is found in account search ([noellabo](https://github.com/tootsuite/mastodon/pull/14394))
- Fix sometimes occuring duplicate mention notifications ([noellabo](https://github.com/tootsuite/mastodon/pull/14378))
- Fix RSS feeds not being cachable ([ThibG](https://github.com/tootsuite/mastodon/pull/14368))
- Fix lack of locking around processing of Announce activities in ActivityPub ([noellabo](https://github.com/tootsuite/mastodon/pull/14365))
- Fix boosted toots from blocked account not being retroactively removed from TL ([ThibG](https://github.com/tootsuite/mastodon/pull/14339))
- Fix large shortened numbers (like 1.2K) using incorrect pluralization ([Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/14061))
- Fix streaming server trying to use empty password to connect to Redis when `REDIS_PASSWORD` is given but blank ([ThibG](https://github.com/tootsuite/mastodon/pull/14135))
- Fix being unable to unboost posts when blocked by their author ([ThibG](https://github.com/tootsuite/mastodon/pull/14308))
- Fix account domain block not properly unfollowing accounts from domain ([Gargron](https://github.com/tootsuite/mastodon/pull/14304))
- Fix removing a domain allow wiping known accounts in open federation mode ([ThibG](https://github.com/tootsuite/mastodon/pull/14298))
- Fix blocks and mutes pagination in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14275))
- Fix new posts pushing down origin of opened dropdown in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14271), [ThibG](https://github.com/tootsuite/mastodon/pull/14348))
- Fix timeline markers not being saved sometimes ([ThibG](https://github.com/tootsuite/mastodon/pull/13887), [ThibG](https://github.com/tootsuite/mastodon/pull/13889), [ThibG](https://github.com/tootsuite/mastodon/pull/14155))
- Fix CSV uploads being rejected ([noellabo](https://github.com/tootsuite/mastodon/pull/13835))
- Fix incompatibility with ElasticSearch 7.x ([noellabo](https://github.com/tootsuite/mastodon/pull/13828))
- Fix being able to search posts where you're in the target audience but not actively mentioned ([noellabo](https://github.com/tootsuite/mastodon/pull/13829))
- Fix non-local posts appearing on local-only hashtag timelines in web UI ([noellabo](https://github.com/tootsuite/mastodon/pull/13827))
- Fix `tootctl media remove-orphans` choking on unknown files in storage ([Gargron](https://github.com/tootsuite/mastodon/pull/13765))
- Fix `tootctl upgrade storage-schema` misbehaving ([Gargron](https://github.com/tootsuite/mastodon/pull/13761), [angristan](https://github.com/tootsuite/mastodon/pull/13768))
- Fix it marking records as upgraded even though no files were moved
- Fix it not working with S3 storage
- Fix it not working with custom emojis
- Fix GIF reader raising incorrect exceptions ([ThibG](https://github.com/tootsuite/mastodon/pull/13760))
- Fix hashtag search performing account search as well ([ThibG](https://github.com/tootsuite/mastodon/pull/13758))
- Fix Webfinger returning wrong status code on malformed or missing param ([ThibG](https://github.com/tootsuite/mastodon/pull/13759))
- Fix `rake mastodon:setup` error when some environment variables are set ([ThibG](https://github.com/tootsuite/mastodon/pull/13928))
- Fix admin page crashing when trying to block an invalid domain name in admin UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13884))
- Fix unsent toot confirmation dialog not popping up in single column mode in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13888))
- Fix performance of follow import ([noellabo](https://github.com/tootsuite/mastodon/pull/13836))
- Reduce timeout of Webfinger requests to that of other requests
- Use circuit breakers to stop hitting unresponsive servers
- Avoid hitting servers that are already known to be generally unavailable
- Fix filters ignoring media descriptions ([BenLubar](https://github.com/tootsuite/mastodon/pull/13837))
- Fix some actions on custom emojis leading to cryptic errors in admin UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13951))
- Fix ActivityPub serialization of replies when some of them are URIs ([ThibG](https://github.com/tootsuite/mastodon/pull/13957))
- Fix `rake mastodon:setup` choking on environment variables containing `%` ([ThibG](https://github.com/tootsuite/mastodon/pull/13940))
- Fix account redirect confirmation message talking about moved followers ([ThibG](https://github.com/tootsuite/mastodon/pull/13950))
- Fix avatars having the wrong size on public detailed status pages ([ThibG](https://github.com/tootsuite/mastodon/pull/14140))
- Fix various issues around OpenGraph representation of media ([Gargron](https://github.com/tootsuite/mastodon/pull/14133))
- Pages containing audio no longer say "Attached: 1 image" in description
- Audio attachments now represented as OpenGraph `og:audio`
- The `twitter:player` page now uses Mastodon's proper audio/video player
- Audio/video buffered bars now display correctly in audio/video player
- Volume and progress bars now respond to movement/move smoother
- Fix audio/video/images/cards not reacting to window resizes in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/14130))
- Fix very wide media attachments resulting in too thin a thumbnail in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14127))
- Fix crash when merging posts into home feed after following someone ([ThibG](https://github.com/tootsuite/mastodon/pull/14129))
- Fix unique username constraint for local users not being enforced in database ([ThibG](https://github.com/tootsuite/mastodon/pull/14099))
- Fix unnecessary gap under video modal in web UI ([mfmfuyu](https://github.com/tootsuite/mastodon/pull/14098))
- Fix 2FA and sign in token pages not respecting user locale ([mfmfuyu](https://github.com/tootsuite/mastodon/pull/14087))
- Fix unapproved users being able to view profiles when in limited-federation mode *and* requiring approval for sign-ups ([ThibG](https://github.com/tootsuite/mastodon/pull/14093))
- Fix initial audio volume not corresponding to what's displayed in audio player in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14057))
- Fix timelines sometimes jumping when closing modals in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14019))
- Fix memory usage of downloading remote files ([Gargron](https://github.com/tootsuite/mastodon/pull/14184), [Gargron](https://github.com/tootsuite/mastodon/pull/14181), [noellabo](https://github.com/tootsuite/mastodon/pull/14356))
- Don't read entire file (up to 40 MB) into memory
- Read and write it to temp file in small chunks
- Fix inconsistent account header padding in web UI ([trwnh](https://github.com/tootsuite/mastodon/pull/14179))
- Fix Thai being skipped from language detection ([Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/13989))
- Since Thai has its own alphabet, it can be detected more reliably
- Fix broken hashtag column options styling in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/14247))
- Fix pointer cursor being shown on toots that are not clickable in web UI ([arielrodrigues](https://github.com/tootsuite/mastodon/pull/14185))
- Fix lock icon not being shown when locking account in profile settings ([ThibG](https://github.com/tootsuite/mastodon/pull/14190))
- Fix domain blocks doing work the wrong way around ([ThibG](https://github.com/tootsuite/mastodon/pull/13424))
- Instead of suspending accounts one by one, mark all as suspended first (quick)
- Only then proceed to start removing their data (slow)
- Clear out media attachments in a separate worker (slow)
## [v3.1.5] - 2020-07-07
### Security

+ 0
- 3
app.json View File

@ -88,9 +88,6 @@
{
"url": "https://github.com/heroku/heroku-buildpack-apt"
},
{
"url": "heroku/nodejs"
},
{
"url": "heroku/ruby"
}

+ 8
- 2
app/controllers/api/v1/statuses/reblogs_controller.rb View File

@ -5,7 +5,7 @@ class Api::V1::Statuses::ReblogsController < Api::BaseController
before_action -> { doorkeeper_authorize! :write, :'write:statuses' }
before_action :require_user!
before_action :set_reblog
before_action :set_reblog, only: [:create]
override_rate_limit_headers :create, family: :statuses
@ -16,15 +16,21 @@ class Api::V1::Statuses::ReblogsController < Api::BaseController
end
def destroy
@status = current_account.statuses.find_by(reblog_of_id: @reblog.id)
@status = current_account.statuses.find_by(reblog_of_id: params[:status_id])
if @status
authorize @status, :unreblog?
@status.discard
RemovalWorker.perform_async(@status.id)
@reblog = @status.reblog
else
@reblog = Status.find(params[:status_id])
authorize @reblog, :show?
end
render json: @reblog, serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new([@status], current_account.id, reblogs_map: { @reblog.id => false })
rescue Mastodon::NotPermittedError
not_found
end
private

+ 1
- 0
app/controllers/api/v1/statuses_controller.rb View File

@ -66,6 +66,7 @@ class Api::V1::StatusesController < Api::BaseController
@status.discard
RemovalWorker.perform_async(@status.id, redraft: true)
@status.account.statuses_count = @status.account.statuses_count - 1
render json: @status, serializer: REST::StatusSerializer, source_requested: true
end

+ 1
- 1
app/controllers/application_controller.rb View File

@ -55,7 +55,7 @@ class ApplicationController < ActionController::Base
end
def store_current_location
store_location_for(:user, request.url) unless request.format == :json
store_location_for(:user, request.url) unless [:json, :rss].include?(request.format&.to_sym)
end
def require_admin!

+ 1
- 1
app/javascript/mastodon/actions/compose.js View File

@ -163,7 +163,6 @@ export function submitCompose(routerHistory) {
// To make the app more responsive, immediately push the status
// into the columns
const insertIfOnline = timelineId => {
const timeline = getState().getIn(['timelines', timelineId]);
@ -179,6 +178,7 @@ export function submitCompose(routerHistory) {
if (response.data.in_reply_to_id === null && response.data.visibility === 'public') {
insertIfOnline('community');
insertIfOnline('public');
insertIfOnline(`account:${response.data.account.id}`);
}
}).catch(function (error) {
dispatch(submitComposeFail(error));

+ 2
- 1
app/javascript/mastodon/actions/statuses.js View File

@ -3,7 +3,7 @@ import openDB from '../storage/db';
import { evictStatus } from '../storage/modifier';
import { deleteFromTimelines } from './timelines';
import { importFetchedStatus, importFetchedStatuses, importAccount, importStatus } from './importer';
import { importFetchedStatus, importFetchedStatuses, importAccount, importStatus, importFetchedAccount } from './importer';
import { ensureComposeIsVisible } from './compose';
export const STATUS_FETCH_REQUEST = 'STATUS_FETCH_REQUEST';
@ -155,6 +155,7 @@ export function deleteStatus(id, routerHistory, withRedraft = false) {
evictStatus(id);
dispatch(deleteStatusSuccess(id));
dispatch(deleteFromTimelines(id));
dispatch(importFetchedAccount(response.data.account));
if (withRedraft) {
dispatch(redraft(status, response.data.text));

+ 1
- 1
app/javascript/mastodon/components/common_counter.js View File

@ -37,7 +37,7 @@ export function counterRenderer(counterType, isBold = true) {
return (displayNumber, pluralReady) => (
<FormattedMessage
id='account.following_counter'
defaultMessage='{count, plural, other {{counter} Following}}'
defaultMessage='{count, plural, one {{counter} Following} other {{counter} Following}}'
values={{
count: pluralReady,
counter: renderCounter(displayNumber),

+ 1
- 1
app/javascript/mastodon/components/scrollable_list.js View File

@ -20,7 +20,7 @@ const mapStateToProps = (state, { scrollKey }) => {
};
};
export default @connect(mapStateToProps)
export default @connect(mapStateToProps, null, null, { forwardRef: true })
class ScrollableList extends PureComponent {
static contextTypes = {

+ 31
- 9
app/javascript/mastodon/features/account_timeline/index.js View File

@ -15,6 +15,8 @@ import { FormattedMessage } from 'react-intl';
import { fetchAccountIdentityProofs } from '../../actions/identity_proofs';
import MissingIndicator from 'mastodon/components/missing_indicator';
import TimelineHint from 'mastodon/components/timeline_hint';
import { me } from 'mastodon/initial_state';
import { connectTimeline, disconnectTimeline } from 'mastodon/actions/timelines';
const emptyList = ImmutableList();
@ -61,28 +63,48 @@ class AccountTimeline extends ImmutablePureComponent {
};
componentWillMount () {
const { params: { accountId }, withReplies } = this.props;
const { params: { accountId }, withReplies, dispatch } = this.props;
this.props.dispatch(fetchAccount(accountId));
this.props.dispatch(fetchAccountIdentityProofs(accountId));
dispatch(fetchAccount(accountId));
dispatch(fetchAccountIdentityProofs(accountId));
if (!withReplies) {
this.props.dispatch(expandAccountFeaturedTimeline(accountId));
dispatch(expandAccountFeaturedTimeline(accountId));
}
this.props.dispatch(expandAccountTimeline(accountId, { withReplies }));
dispatch(expandAccountTimeline(accountId, { withReplies }));
if (accountId === me) {
dispatch(connectTimeline(`account:${me}`));
}
}
componentWillReceiveProps (nextProps) {
const { dispatch } = this.props;
if ((nextProps.params.accountId !== this.props.params.accountId && nextProps.params.accountId) || nextProps.withReplies !== this.props.withReplies) {
this.props.dispatch(fetchAccount(nextProps.params.accountId));
this.props.dispatch(fetchAccountIdentityProofs(nextProps.params.accountId));
dispatch(fetchAccount(nextProps.params.accountId));
dispatch(fetchAccountIdentityProofs(nextProps.params.accountId));
if (!nextProps.withReplies) {
this.props.dispatch(expandAccountFeaturedTimeline(nextProps.params.accountId));
dispatch(expandAccountFeaturedTimeline(nextProps.params.accountId));
}
this.props.dispatch(expandAccountTimeline(nextProps.params.accountId, { withReplies: nextProps.params.withReplies }));
dispatch(expandAccountTimeline(nextProps.params.accountId, { withReplies: nextProps.params.withReplies }));
}
if (nextProps.params.accountId === me && this.props.params.accountId !== me) {
dispatch(connectTimeline(`account:${me}`));
} else if (this.props.params.accountId === me && nextProps.params.accountId !== me) {
dispatch(disconnectTimeline(`account:${me}`));
}
}
componentWillUnmount () {
const { dispatch, params: { accountId } } = this.props;
if (accountId === me) {
dispatch(disconnectTimeline(`account:${me}`));
}
}

+ 2
- 0
app/javascript/mastodon/features/audio/index.js View File

@ -298,6 +298,8 @@ class Audio extends React.PureComponent {
_renderCanvas () {
requestAnimationFrame(() => {
if (!this.audio) return;
this.handleTimeUpdate();
this._clear();
this._draw();

+ 2
- 0
app/javascript/mastodon/features/video/index.js View File

@ -182,6 +182,8 @@ class Video extends React.PureComponent {
_updateTime () {
requestAnimationFrame(() => {
if (!this.video) return;
this.handleTimeUpdate();
if (!this.state.paused) {

+ 8
- 8
app/javascript/mastodon/locales/ar.json View File

@ -16,7 +16,7 @@
"account.followers": "مُتابِعون",
"account.followers.empty": "لا أحد يتبع هذا الحساب بعد.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "هذا الحساب لا يتبع أحدًا بعد.",
"account.follows_you": "يتابعك",
"account.hide_reblogs": "إخفاء ترقيات @{name}",
@ -172,7 +172,7 @@
"follow_request.authorize": "ترخيص",
"follow_request.reject": "رفض",
"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": "Saved",
"generic.saved": "تم الحفظ",
"getting_started.developers": "المُطوِّرون",
"getting_started.directory": "دليل الصفحات التعريفية",
"getting_started.documentation": "الدليل",
@ -419,16 +419,16 @@
"time_remaining.minutes": "{number, plural, one {# دقيقة} other {# دقائق}} متبقية",
"time_remaining.moments": "لحظات متبقية",
"time_remaining.seconds": "{number, plural, one {# ثانية} other {# ثوانٍ}} متبقية",
"timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
"timeline_hint.remote_resource_not_displayed": "{resource} من الخوادم الأخرى لا يتم عرضها.",
"timeline_hint.resources.followers": "المتابِعون",
"timeline_hint.resources.follows": "المتابَعون",
"timeline_hint.resources.statuses": "التبويقات القديمة",
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
"trends.trending_now": "المتداولة الآن",
"ui.beforeunload": "سوف تفقد مسودتك إن تركت ماستدون.",
"units.short.billion": "{count}B",
"units.short.million": "{count}M",
"units.short.thousand": "{count}K",
"units.short.billion": "{count} مليار",
"units.short.million": "{count} مليون",
"units.short.thousand": "{count} ألف",
"upload_area.title": "اسحب ثم أفلت للرفع",
"upload_button.label": "إضافة وسائط ({formats})",
"upload_error.limit": "لقد تم بلوغ الحد الأقصى المسموح به لإرسال الملفات.",
@ -436,12 +436,12 @@
"upload_form.audio_description": "وصف للأشخاص ذي قِصر السمع",
"upload_form.description": "وصف للمعاقين بصريا",
"upload_form.edit": "تعديل",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "غيّر الصورة المصغرة",
"upload_form.undo": "حذف",
"upload_form.video_description": "وصف للمعاقين بصريا أو لِذي قِصر السمع",
"upload_modal.analyzing_picture": "جارٍ فحص الصورة…",
"upload_modal.apply": "طبّق",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "اختر صورة",
"upload_modal.description_placeholder": "نصٌّ حكيمٌ لهُ سِرٌّ قاطِعٌ وَذُو شَأنٍ عَظيمٍ مكتوبٌ على ثوبٍ أخضرَ ومُغلفٌ بجلدٍ أزرق",
"upload_modal.detect_text": "اكتشف النص مِن الصورة",
"upload_modal.edit_media": "تعديل الوسائط",

+ 1
- 1
app/javascript/mastodon/locales/ast.json View File

@ -16,7 +16,7 @@
"account.followers": "Siguidores",
"account.followers.empty": "Naide sigue a esti usuariu entá.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Esti usuariu entá nun sigue a naide.",
"account.follows_you": "Síguete",
"account.hide_reblogs": "Anubrir les comparticiones de @{name}",

+ 1
- 1
app/javascript/mastodon/locales/bg.json View File

@ -16,7 +16,7 @@
"account.followers": "Последователи",
"account.followers.empty": "Все още никой не следва този потребител.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Този потребител все още не следва никого.",
"account.follows_you": "Твой последовател",
"account.hide_reblogs": "Hide boosts from @{name}",

+ 1
- 1
app/javascript/mastodon/locales/bn.json View File

@ -16,7 +16,7 @@
"account.followers": "অনুসরণকারী",
"account.followers.empty": "এই সদস্যকে এখনো কেউ অনুসরণ করে না।.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "এই সদস্য কাওকে এখনো অনুসরণ করেন না.",
"account.follows_you": "আপনাকে অনুসরণ করে",
"account.hide_reblogs": "@{name}'র সমর্থনগুলি লুকিয়ে ফেলুন",

+ 49
- 49
app/javascript/mastodon/locales/br.json View File

@ -1,5 +1,5 @@
{
"account.account_note_header": "Note",
"account.account_note_header": "Notenn",
"account.add_or_remove_from_list": "Ouzhpenn pe dilemel eus al listennadoù",
"account.badges.bot": "Robot",
"account.badges.group": "Strollad",
@ -15,8 +15,8 @@
"account.follow": "Heuliañ",
"account.followers": "Heulier·ezed·ien",
"account.followers.empty": "Den na heul an implijer-mañ c'hoazh.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.followers_counter": "{count, plural, other{{counter} Heulier}}",
"account.following_counter": "{count, plural, other {{counter} Heuliañ}}",
"account.follows.empty": "An implijer·ez-mañ na heul den ebet.",
"account.follows_you": "Ho heul",
"account.hide_reblogs": "Kuzh toudoù rannet gant @{name}",
@ -43,7 +43,7 @@
"account.unfollow": "Diheuliañ",
"account.unmute": "Diguzhat @{name}",
"account.unmute_notifications": "Diguzhat kemennoù a @{name}",
"account_note.placeholder": "Click to add a note",
"account_note.placeholder": "Klikit evit ouzhpenniñ un notenn",
"alert.rate_limited.message": "Klaskit en-dro a-benn {retry_time, time, medium}.",
"alert.rate_limited.title": "Feur bevennet",
"alert.unexpected.message": "Ur fazi dic'hortozet zo degouezhet.",
@ -79,9 +79,9 @@
"column_header.show_settings": "Diskouez an arventennoù",
"column_header.unpin": "Dispilhennañ",
"column_subheading.settings": "Arventennoù",
"community.column_settings.local_only": "Local only",
"community.column_settings.local_only": "Nemet lec'hel",
"community.column_settings.media_only": "Nemet Mediaoù",
"community.column_settings.remote_only": "Remote only",
"community.column_settings.remote_only": "Nemet a-bell",
"compose_form.direct_message_warning": "An toud-mañ a vo kaset nemet d'an implijer·ezed·ien meneget.",
"compose_form.direct_message_warning_learn_more": "Gouzout hiroc'h",
"compose_form.hashtag_warning": "Ne vo ket lakaet an toud-mañ er rolloù gerioù-klik dre mard eo anlistennet. N'eus nemet an toudoù foran a c'hall bezañ klasket dre c'her-klik.",
@ -172,13 +172,13 @@
"follow_request.authorize": "Aotren",
"follow_request.reject": "Nac'hañ",
"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": "Saved",
"generic.saved": "Enrollet",
"getting_started.developers": "Diorroerien",
"getting_started.directory": "Roll ar profiloù",
"getting_started.documentation": "Teuliadur",
"getting_started.heading": "Loc'hañ",
"getting_started.invite": "Pediñ tud",
"getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
"getting_started.open_source_notice": "Mastodoñ zo ur meziant digor e darzh. Gallout a rit kenoberzhiañ dezhañ pe danevellañ kudennoù war GitHub e {github}.",
"getting_started.security": "Arventennoù ar gont",
"getting_started.terms": "Divizoù gwerzhañ hollek",
"hashtag.column_header.tag_mode.all": "ha {additional}",
@ -193,14 +193,14 @@
"home.column_settings.basic": "Diazez",
"home.column_settings.show_reblogs": "Diskouez ar skignadennoù",
"home.column_settings.show_replies": "Diskouez ar respontoù",
"home.hide_announcements": "Hide announcements",
"home.show_announcements": "Show announcements",
"home.hide_announcements": "Kuzhat ar c'hemennoù",
"home.show_announcements": "Diskouez ar c'hemennoù",
"intervals.full.days": "{number, plural, one {# devezh} other{# a zevezhioù}}",
"intervals.full.hours": "{number, plural, one {# eurvezh} other{# eurvezh}}",
"intervals.full.minutes": "{number, plural, one {# munut} other{# a vunutoù}}",
"introduction.federation.action": "Da-heul",
"introduction.federation.federated.headline": "Kevreet",
"introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
"introduction.federation.federated.text": "Embannadennoù publik eus dafariaded all ar c'hevrebed a yo war-wel er red-amzer kevredet.",
"introduction.federation.home.headline": "Degemer",
"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": "Lec'hel",
@ -223,13 +223,13 @@
"keyboard_shortcuts.description": "Deskrivadur",
"keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "to move down in the list",
"keyboard_shortcuts.enter": "to open status",
"keyboard_shortcuts.enter": "evit digeriñ un toud",
"keyboard_shortcuts.favourite": "to favourite",
"keyboard_shortcuts.favourites": "to open favourites list",
"keyboard_shortcuts.federated": "to open federated timeline",
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
"keyboard_shortcuts.home": "to open home timeline",
"keyboard_shortcuts.hotkey": "Hotkey",
"keyboard_shortcuts.hotkey": "Berradur",
"keyboard_shortcuts.legend": "to display this legend",
"keyboard_shortcuts.local": "to open local timeline",
"keyboard_shortcuts.mention": "to mention author",
@ -245,14 +245,14 @@
"keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "to start a brand new toot",
"keyboard_shortcuts.toggle_sensitivity": "da guzhat/ziguzhat ur media",
"keyboard_shortcuts.toot": "da gregiñ gant un toud nevez-flamm",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "Serriñ",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"lightbox.view_context": "View context",
"lightbox.next": "Da-heul",
"lightbox.previous": "A-raok",
"lightbox.view_context": "Diskouez ar c'hemperzh",
"lists.account.add": "Ouzhpennañ d'al listenn",
"lists.account.remove": "Lemel kuit eus al listenn",
"lists.delete": "Dilemel al listenn",
@ -298,14 +298,14 @@
"notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} boosted your status",
"notifications.clear": "Clear notifications",
"notifications.clear": "Skarzhañ ar c'hemennoù",
"notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
"notifications.column_settings.alert": "Desktop notifications",
"notifications.column_settings.alert": "Kemennoù war ar burev",
"notifications.column_settings.favourite": "Ar re vuiañ-karet:",
"notifications.column_settings.filter_bar.advanced": "Display all categories",
"notifications.column_settings.filter_bar.advanced": "Skrammañ an-holl rummadoù",
"notifications.column_settings.filter_bar.category": "Barrenn siloù prim",
"notifications.column_settings.filter_bar.show": "Diskouez",
"notifications.column_settings.follow": "New followers:",
"notifications.column_settings.follow": "Heulierien nevez:",
"notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.mention": "Menegoù:",
"notifications.column_settings.poll": "Disoc'hoù ar sontadeg:",
@ -316,7 +316,7 @@
"notifications.filter.all": "Pep tra",
"notifications.filter.boosts": "Skignadennoù",
"notifications.filter.favourites": "Muiañ-karet",
"notifications.filter.follows": "Follows",
"notifications.filter.follows": "Heuliañ",
"notifications.filter.mentions": "Menegoù",
"notifications.filter.polls": "Disoc'hoù ar sontadegoù",
"notifications.group": "{count} a gemennoù",
@ -350,8 +350,8 @@
"report.forward": "Treuzkas da: {target}",
"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.placeholder": "Additional comments",
"report.submit": "Submit",
"report.placeholder": "Askelennoù ouzhpenn",
"report.submit": "Kinnig",
"report.target": "Report {target}",
"search.placeholder": "Klask",
"search_popout.search_format": "Advanced search format",
@ -367,24 +367,24 @@
"search_results.total": "{count, number} {count, plural, one {result} other {results}}",
"status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this status in the moderation interface",
"status.block": "Block @{name}",
"status.block": "Berzañ @{name}",
"status.bookmark": "Ouzhpennañ d'ar sinedoù",
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted",
"status.copy": "Copy link to status",
"status.copy": "Eilañ liamm an toud",
"status.delete": "Dilemel",
"status.detailed_status": "Detailed conversation view",
"status.direct": "Kas ur c'hemennad da @{name}",
"status.embed": "Enframmañ",
"status.favourite": "Muiañ-karet",
"status.filtered": "Filtered",
"status.filtered": "Silet",
"status.load_more": "Kargañ muioc'h",
"status.media_hidden": "Media kuzhet",
"status.mention": "Menegiñ @{name}",
"status.more": "Muioc'h",
"status.mute": "Kuzhat @{name}",
"status.mute_conversation": "Kuzhat ar gaozeadenn",
"status.open": "Expand this status",
"status.open": "Kreskaat an toud-mañ",
"status.pin": "Spilhennañ d'ar profil",
"status.pinned": "Toud spilhennet",
"status.read_more": "Lenn muioc'h",
@ -393,23 +393,23 @@
"status.reblogged_by": "{name} boosted",
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
"status.remove_bookmark": "Remove bookmark",
"status.remove_bookmark": "Dilemel ar sined",
"status.reply": "Respont",
"status.replyAll": "Reply to thread",
"status.replyAll": "Respont d'ar gaozeadenn",
"status.report": "Disklêriañ @{name}",
"status.sensitive_warning": "Sensitive content",
"status.share": "Rannañ",
"status.show_less": "Show less",
"status.show_less": "Diskouez nebeutoc'h",
"status.show_less_all": "Show less for all",
"status.show_more": "Show more",
"status.show_more": "Diskouez muioc'h",
"status.show_more_all": "Show more for all",
"status.show_thread": "Show thread",
"status.uncached_media_warning": "Not available",
"status.show_thread": "Diskouez ar gaozeadenn",
"status.uncached_media_warning": "Dihegerz",
"status.unmute_conversation": "Diguzhat ar gaozeadenn",
"status.unpin": "Dispilhennañ eus ar profil",
"suggestions.dismiss": "Dismiss suggestion",
"suggestions.header": "You might be interested in…",
"tabs_bar.federated_timeline": "Federated",
"tabs_bar.federated_timeline": "Kevredet",
"tabs_bar.home": "Degemer",
"tabs_bar.local_timeline": "Lec'hel",
"tabs_bar.notifications": "Kemennoù",
@ -420,9 +420,9 @@
"time_remaining.moments": "Moments remaining",
"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.resources.followers": "Followers",
"timeline_hint.resources.follows": "Follows",
"timeline_hint.resources.statuses": "Older toots",
"timeline_hint.resources.followers": "Heulier·ezed·ien",
"timeline_hint.resources.follows": "Heuliañ",
"timeline_hint.resources.statuses": "Toudoù koshoc'h",
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
"trends.trending_now": "Luskad ar mare",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
@ -436,24 +436,24 @@
"upload_form.audio_description": "Describe for people with hearing loss",
"upload_form.description": "Describe for the visually impaired",
"upload_form.edit": "Aozañ",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "Kemmañ ar velvenn",
"upload_form.undo": "Dilemel",
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
"upload_modal.choose_image": "Choose image",
"upload_modal.apply": "Arloañ",
"upload_modal.choose_image": "Dibab ur skeudenn",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
"upload_modal.detect_text": "Detect text from picture",
"upload_modal.edit_media": "Edit media",
"upload_modal.detect_text": "Dinoiñ testenn diouzh ar skeudenn",
"upload_modal.edit_media": "Embann ar media",
"upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
"upload_modal.preview_label": "Preview ({ratio})",
"upload_modal.preview_label": "Rakwel ({ratio})",
"upload_progress.label": "O pellgargañ...",
"video.close": "Close video",
"video.close": "Serriñ ar video",
"video.download": "Pellgargañ ar restr",
"video.exit_fullscreen": "Exit full screen",
"video.exit_fullscreen": "Kuitaat ar mod skramm leun",
"video.expand": "Expand video",
"video.fullscreen": "Full screen",
"video.hide": "Hide video",
"video.fullscreen": "Skramm a-bezh",
"video.hide": "Kuzhat ar video",
"video.mute": "Mute sound",
"video.pause": "Pause",
"video.play": "Play",

+ 6
- 6
app/javascript/mastodon/locales/ca.json View File

@ -15,8 +15,8 @@
"account.follow": "Segueix",
"account.followers": "Seguidors",
"account.followers.empty": "Encara ningú no segueix aquest usuari.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidors}}",
"account.following_counter": "{count, plural, other {{counter} Seguint}}",
"account.follows.empty": "Aquest usuari encara no segueix a ningú.",
"account.follows_you": "Et segueix",
"account.hide_reblogs": "Amaga els impulsos de @{name}",
@ -36,7 +36,7 @@
"account.requested": "Esperant aprovació. Clic per a cancel·lar la petició de seguiment",
"account.share": "Comparteix el perfil de @{name}",
"account.show_reblogs": "Mostra els impulsos de @{name}",
"account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
"account.statuses_counter": "{count, plural, one {{counter} Tut} other {{counter} Tuts}}",
"account.unblock": "Desbloqueja @{name}",
"account.unblock_domain": "Mostra {domain}",
"account.unendorse": "No recomanar en el perfil",
@ -423,7 +423,7 @@
"timeline_hint.resources.followers": "Seguidors",
"timeline_hint.resources.follows": "Seguiments",
"timeline_hint.resources.statuses": "Tuts més antics",
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
"trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} persones}} parlant-hi",
"trends.trending_now": "Ara en tendència",
"ui.beforeunload": "El teu esborrany es perdrà si surts de Mastodon.",
"units.short.billion": "{count}B",
@ -436,12 +436,12 @@
"upload_form.audio_description": "Descriviu per a les persones amb pèrdua auditiva",
"upload_form.description": "Descriure els problemes visuals",
"upload_form.edit": "Edita",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "Canvia la miniatura",
"upload_form.undo": "Esborra",
"upload_form.video_description": "Descriu per a les persones amb pèrdua auditiva o deficiència visual",
"upload_modal.analyzing_picture": "Analitzant imatge…",
"upload_modal.apply": "Aplica",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "Tria imatge",
"upload_modal.description_placeholder": "Uns salts ràpids de guineu marró sobre el gos gandul",
"upload_modal.detect_text": "Detecta el text de l'imatge",
"upload_modal.edit_media": "Editar multimèdia",

+ 2
- 2
app/javascript/mastodon/locales/co.json View File

@ -436,12 +436,12 @@
"upload_form.audio_description": "Discrizzione per i ciochi",
"upload_form.description": "Discrive per i malvistosi",
"upload_form.edit": "Mudificà",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "Cambià vignetta",
"upload_form.undo": "Sguassà",
"upload_form.video_description": "Discrizzione per i ciochi o cechi",
"upload_modal.analyzing_picture": "Analisi di u ritrattu…",
"upload_modal.apply": "Affettà",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "Cambià ritrattu",
"upload_modal.description_placeholder": "Chì tempi brevi ziu, quandu solfeghji",
"upload_modal.detect_text": "Ditettà testu da u ritrattu",
"upload_modal.edit_media": "Cambià media",

+ 1
- 1
app/javascript/mastodon/locales/cs.json View File

@ -16,7 +16,7 @@
"account.followers": "Sledující",
"account.followers.empty": "Tohoto uživatele ještě nikdo nesleduje.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, 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_you": "Sleduje vás",
"account.hide_reblogs": "Skrýt boosty od uživatele @{name}",

+ 1
- 1
app/javascript/mastodon/locales/cy.json View File

@ -16,7 +16,7 @@
"account.followers": "Dilynwyr",
"account.followers.empty": "Nid oes neb yn dilyn y defnyddiwr hwn eto.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Nid yw'r defnyddiwr hwn yn dilyn unrhyw un eto.",
"account.follows_you": "Yn eich dilyn chi",
"account.hide_reblogs": "Cuddio bwstiau o @{name}",

+ 1
- 1
app/javascript/mastodon/locales/da.json View File

@ -16,7 +16,7 @@
"account.followers": "Følgere",
"account.followers.empty": "Der er endnu ingen der følger denne bruger.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Denne bruger følger endnu ikke nogen.",
"account.follows_you": "Følger dig",
"account.hide_reblogs": "Skjul fremhævelserne fra @{name}",

+ 5
- 5
app/javascript/mastodon/locales/de.json View File

@ -94,7 +94,7 @@
"compose_form.poll.remove_option": "Wahl entfernen",
"compose_form.poll.switch_to_multiple": "Umfrage ändern, um mehrere Optionen zu erlauben",
"compose_form.poll.switch_to_single": "Umfrage ändern, um eine einzige Wahl zu erlauben",
"compose_form.publish": "Tröt",
"compose_form.publish": "Beitrag",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Medien als heikel markieren",
"compose_form.sensitive.marked": "Medien sind als heikel markiert",
@ -118,7 +118,7 @@
"confirmations.mute.explanation": "Dies wird Beiträge von dieser Person und Beiträge, die diese Person erwähnen, ausblenden, aber es wird der Person trotzdem erlauben, deine Beiträge zu sehen und dir zu folgen.",
"confirmations.mute.message": "Bist du dir sicher, dass du {name} stummschalten möchtest?",
"confirmations.redraft.confirm": "Löschen und neu erstellen",
"confirmations.redraft.message": "Bist du dir sicher, dass du diesen Tröt löschen und neu erstellen möchtest? Favs, geteilte Beiträge und Antworten werden verloren gehen.",
"confirmations.redraft.message": "Bist du dir sicher, dass du diesen Beitrag löschen und neu machen möchtest? Favoriten und Boosts werden verloren gehen und Antworten zu diesem Beitrag werden verwaist sein.",
"confirmations.reply.confirm": "Antworten",
"confirmations.reply.message": "Wenn du jetzt antwortest wird es die gesamte Nachricht verwerfen, die du gerade schreibst. Möchtest du wirklich fortfahren?",
"confirmations.unfollow.confirm": "Entfolgen",
@ -355,7 +355,7 @@
"report.target": "{target} melden",
"search.placeholder": "Suche",
"search_popout.search_format": "Fortgeschrittenes Suchformat",
"search_popout.tips.full_text": "Einfache Texteingabe gibt Tröts, die du geschrieben, gefavt und geteilt hast zurück. Außerdem auch Tröts, 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.status": "Beitrag",
"search_popout.tips.text": "Einfache Texteingabe gibt Anzeigenamen, Benutzernamen und Hashtags zurück",
@ -436,12 +436,12 @@
"upload_form.audio_description": "Beschreibe die Audiodatei für Menschen mit Hörschädigungen",
"upload_form.description": "Für Menschen mit Sehbehinderung beschreiben",
"upload_form.edit": "Bearbeiten",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "Miniaturansicht ändern",
"upload_form.undo": "Löschen",
"upload_form.video_description": "Beschreibe das Video für Menschen mit einer Hör- oder Sehbehinderung",
"upload_modal.analyzing_picture": "Analysiere Bild…",
"upload_modal.apply": "Übernehmen",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "Bild auswählen",
"upload_modal.description_placeholder": "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste",
"upload_modal.detect_text": "Text aus Bild erkennen",
"upload_modal.edit_media": "Medien bearbeiten",

+ 17
- 1
app/javascript/mastodon/locales/defaultMessages.json View File

@ -146,7 +146,7 @@
"id": "account.statuses_counter"
},
{
"defaultMessage": "{count, plural, other {{counter} Following}}",
"defaultMessage": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"id": "account.following_counter"
},
{
@ -2659,6 +2659,22 @@
"defaultMessage": "Boost",
"id": "status.reblog"
},
{
"defaultMessage": "Public",
"id": "privacy.public.short"
},
{
"defaultMessage": "Unlisted",
"id": "privacy.unlisted.short"
},
{
"defaultMessage": "Followers-only",
"id": "privacy.private.short"
},
{
"defaultMessage": "Direct",
"id": "privacy.direct.short"
},
{
"defaultMessage": "You can press {combo} to skip this next time",
"id": "boost_modal.combo"

+ 12
- 12
app/javascript/mastodon/locales/el.json View File

@ -1,5 +1,5 @@
{
"account.account_note_header": "Note",
"account.account_note_header": "Σημείωση",
"account.add_or_remove_from_list": "Προσθήκη ή Αφαίρεση από λίστες",
"account.badges.bot": "Μποτ",
"account.badges.group": "Ομάδα",
@ -15,8 +15,8 @@
"account.follow": "Ακολούθησε",
"account.followers": "Ακόλουθοι",
"account.followers.empty": "Κανείς δεν ακολουθεί αυτό τον χρήστη ακόμα.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.followers_counter": "{count, plural, one {{counter} Ακόλουθος} other {{counter} Ακόλουθοι}}",
"account.following_counter": "{count, plural, other {{counter} Ακολουθεί}}",
"account.follows.empty": "Αυτός ο χρήστης δεν ακολουθεί κανέναν ακόμα.",
"account.follows_you": "Σε ακολουθεί",
"account.hide_reblogs": "Απόκρυψη προωθήσεων από @{name}",
@ -36,14 +36,14 @@
"account.requested": "Εκκρεμεί έγκριση. Κάνε κλικ για να ακυρώσεις το αίτημα παρακολούθησης",
"account.share": "Μοίρασμα του προφίλ @{name}",
"account.show_reblogs": "Εμφάνιση προωθήσεων από @{name}",
"account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
"account.statuses_counter": "{count, plural, one {{counter} Τουτ} other {{counter} Τουτ}}",
"account.unblock": "Ξεμπλόκαρε @{name}",
"account.unblock_domain": "Αποκάλυψε το {domain}",
"account.unendorse": "Άνευ προβολής στο προφίλ",
"account.unfollow": "Διακοπή παρακολούθησης",
"account.unmute": "Διακοπή αποσιώπησης @{name}",
"account.unmute_notifications": "Διακοπή αποσιώπησης ειδοποιήσεων του/της @{name}",
"account_note.placeholder": "Click to add a note",
"account_note.placeholder": "Κλικ για να βάλεις σημείωση",
"alert.rate_limited.message": "Παρακαλούμε δοκίμασε ξανά αφού περάσει η {retry_time, time, medium}.",
"alert.rate_limited.title": "Περιορισμός συχνότητας",
"alert.unexpected.message": "Προέκυψε απροσδόκητο σφάλμα.",
@ -172,7 +172,7 @@
"follow_request.authorize": "Ενέκρινε",
"follow_request.reject": "Απέρριψε",
"follow_requests.unlocked_explanation": "Παρόλο που ο λογαριασμός σου δεν είναι κλειδωμένος, οι διαχειριστές του {domain} θεώρησαν πως ίσως να θέλεις να ελέγξεις χειροκίνητα αυτά τα αιτήματα ακολούθησης.",
"generic.saved": "Saved",
"generic.saved": "Αποθηκεύτηκε",
"getting_started.developers": "Ανάπτυξη",
"getting_started.directory": "Κατάλογος λογαριασμών",
"getting_started.documentation": "Τεκμηρίωση",
@ -423,12 +423,12 @@
"timeline_hint.resources.followers": "Ακόλουθοι",
"timeline_hint.resources.follows": "Ακολουθεί",
"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} άτομο μιλάει} other {{counter} άτομα μιλάνε}}",
"trends.trending_now": "Δημοφιλή τώρα",
"ui.beforeunload": "Το προσχέδιό σου θα χαθεί αν φύγεις από το Mastodon.",
"units.short.billion": "{count}B",
"units.short.million": "{count}M",
"units.short.thousand": "{count}K",
"units.short.billion": "{count}Δ",
"units.short.million": "{count}Ε",
"units.short.thousand": "{count}Χ",
"upload_area.title": "Drag & drop για να ανεβάσεις",
"upload_button.label": "Πρόσθεσε πολυμέσα ({formats})",
"upload_error.limit": "Υπέρβαση ορίου μεγέθους ανεβασμένων αρχείων.",
@ -436,12 +436,12 @@
"upload_form.audio_description": "Περιγραφή για άτομα με προβλήματα ακοής",
"upload_form.description": "Περιέγραψε για όσους & όσες έχουν προβλήματα όρασης",
"upload_form.edit": "Ενημέρωση",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "Αλλαγή μικρογραφίας",
"upload_form.undo": "Διαγραφή",
"upload_form.video_description": "Περιγραφή για άτομα με προβλήματα ακοής ή όρασης",
"upload_modal.analyzing_picture": "Ανάλυση εικόνας…",
"upload_modal.apply": "Εφαρμογή",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "Επιλογή εικόνας",
"upload_modal.description_placeholder": "Λύκος μαύρος και ισχνός του πατέρα του καημός",
"upload_modal.detect_text": "Αναγνώριση κειμένου από την εικόνα",
"upload_modal.edit_media": "Επεξεργασία Πολυμέσων",

+ 1
- 1
app/javascript/mastodon/locales/en.json View File

@ -16,7 +16,7 @@
"account.followers": "Followers",
"account.followers.empty": "No one follows this user yet.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Follows you",
"account.hide_reblogs": "Hide boosts from @{name}",

+ 2
- 2
app/javascript/mastodon/locales/es-AR.json View File

@ -436,12 +436,12 @@
"upload_form.audio_description": "Describir para personas con problemas auditivos",
"upload_form.description": "Agregar descripción para los usuarios con dificultades visuales",
"upload_form.edit": "Editar",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "Cambiar miniatura",
"upload_form.undo": "Eliminar",
"upload_form.video_description": "Describir para personas con problemas auditivos o visuales",
"upload_modal.analyzing_picture": "Analizando imagen…",
"upload_modal.apply": "Aplicar",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "Elegir imagen",
"upload_modal.description_placeholder": "El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja.",
"upload_modal.detect_text": "Detectar texto de la imagen",
"upload_modal.edit_media": "Editar medio",

+ 4
- 4
app/javascript/mastodon/locales/es.json View File

@ -395,7 +395,7 @@
"status.redraft": "Borrar y volver a borrador",
"status.remove_bookmark": "Eliminar marcador",
"status.reply": "Responder",
"status.replyAll": "Responder al hilo",
"status.replyAll": "Responder al hilván",
"status.report": "Reportar",
"status.sensitive_warning": "Contenido sensible",
"status.share": "Compartir",
@ -403,7 +403,7 @@
"status.show_less_all": "Mostrar menos para todo",
"status.show_more": "Mostrar más",
"status.show_more_all": "Mostrar más para todo",
"status.show_thread": "Ver hilo",
"status.show_thread": "Mostrar hilván",
"status.uncached_media_warning": "No disponible",
"status.unmute_conversation": "Dejar de silenciar conversación",
"status.unpin": "Dejar de fijar",
@ -436,12 +436,12 @@
"upload_form.audio_description": "Describir para personas con problemas auditivos",
"upload_form.description": "Describir para los usuarios con dificultad visual",
"upload_form.edit": "Editar",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "Cambiar miniatura",
"upload_form.undo": "Borrar",
"upload_form.video_description": "Describir para personas con problemas auditivos o visuales",
"upload_modal.analyzing_picture": "Analizando imagen…",
"upload_modal.apply": "Aplicar",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "Elegir imagen",
"upload_modal.description_placeholder": "Un rápido zorro marrón salta sobre el perro perezoso",
"upload_modal.detect_text": "Detectar texto de la imagen",
"upload_modal.edit_media": "Editar multimedia",

+ 1
- 1
app/javascript/mastodon/locales/et.json View File

@ -16,7 +16,7 @@
"account.followers": "Jälgijad",
"account.followers.empty": "Keegi ei jälgi seda kasutajat veel.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "See kasutaja ei jälgi veel kedagi.",
"account.follows_you": "Jälgib Teid",
"account.hide_reblogs": "Peida upitused kasutajalt @{name}",

+ 1
- 1
app/javascript/mastodon/locales/eu.json View File

@ -16,7 +16,7 @@
"account.followers": "Jarraitzaileak",
"account.followers.empty": "Ez du inork erabiltzaile hau jarraitzen oraindik.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Erabiltzaile honek ez du inor jarraitzen oraindik.",
"account.follows_you": "Jarraitzen dizu",
"account.hide_reblogs": "Ezkutatu @{name}(r)en bultzadak",

+ 4
- 4
app/javascript/mastodon/locales/fa.json View File

@ -79,7 +79,7 @@
"column_header.show_settings": "نمایش تنظیمات",
"column_header.unpin": "رهاکردن",
"column_subheading.settings": "تنظیمات",
"community.column_settings.local_only": "تنها محلّی",
"community.column_settings.local_only": "تنها بومی",
"community.column_settings.media_only": "فقط رسانه",
"community.column_settings.remote_only": "تنها دوردست",
"compose_form.direct_message_warning": "این بوق تنها به کاربرانی که از آن‌ها نام برده شده فرستاده خواهد شد.",
@ -334,7 +334,7 @@
"privacy.private.long": "ارسال فقط به پی‌گیران",
"privacy.private.short": "خصوصی",
"privacy.public.long": "ارسال به خط‌زمانی عمومی",
"privacy.public.short": "عمومی",
"privacy.public.short": "همگانی",
"privacy.unlisted.long": "ارسال نکردن به خط‌زمانی عمومی",
"privacy.unlisted.short": "فهرست‌نشده",
"refresh": "به‌روزرسانی",
@ -436,12 +436,12 @@
"upload_form.audio_description": "برای ناشنوایان توصیفش کنید",
"upload_form.description": "برای کم‌بینایان توصیفش کنید",
"upload_form.edit": "ویرایش",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "تغییر بندانگشتی",
"upload_form.undo": "حذف",
"upload_form.video_description": "برای کم‌بینایان یا ناشنوایان توصیفش کنید",
"upload_modal.analyzing_picture": "در حال پردازش تصویر…",
"upload_modal.apply": "اعمال",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "گزینش تصویر",
"upload_modal.description_placeholder": "الا یا ایّها الساقی، ادر کأساً و ناولها",
"upload_modal.detect_text": "تشخیص متن درون عکس",
"upload_modal.edit_media": "ویرایش رسانه",

+ 14
- 14
app/javascript/mastodon/locales/fi.json View File

@ -1,12 +1,12 @@
{
"account.account_note_header": "Note",
"account.account_note_header": "Muistiinpanot",
"account.add_or_remove_from_list": "Lisää tai poista listoilta",
"account.badges.bot": "Botti",
"account.badges.group": "Ryhmä",
"account.block": "Estä @{name}",
"account.block_domain": "Piilota kaikki sisältö verkkotunnuksesta {domain}",
"account.blocked": "Estetty",
"account.browse_more_on_origin_server": "Browse more on the original profile",
"account.browse_more_on_origin_server": "Selaile lisää alkuperäisellä palvelimella",
"account.cancel_follow_request": "Peruuta seurauspyyntö",
"account.direct": "Viesti käyttäjälle @{name}",
"account.domain_blocked": "Verkko-osoite piilotettu",
@ -16,7 +16,7 @@
"account.followers": "Seuraajaa",
"account.followers.empty": "Tällä käyttäjällä ei ole vielä seuraajia.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Tämä käyttäjä ei vielä seuraa ketään.",
"account.follows_you": "Seuraa sinua",
"account.hide_reblogs": "Piilota buustaukset käyttäjältä @{name}",
@ -43,7 +43,7 @@
"account.unfollow": "Lakkaa seuraamasta",
"account.unmute": "Poista käyttäjän @{name} mykistys",
"account.unmute_notifications": "Poista mykistys käyttäjän @{name} ilmoituksilta",
"account_note.placeholder": "Click to add a note",
"account_note.placeholder": "Lisää muistiinpano napsauttamalla",
"alert.rate_limited.message": "Yritä uudestaan {retry_time, time, medium} jälkeen.",
"alert.rate_limited.title": "Määrää rajoitettu",
"alert.unexpected.message": "Tapahtui odottamaton virhe.",
@ -79,7 +79,7 @@
"column_header.show_settings": "Näytä asetukset",
"column_header.unpin": "Poista kiinnitys",
"column_subheading.settings": "Asetukset",
"community.column_settings.local_only": "Local only",
"community.column_settings.local_only": "Vain paikalliset",
"community.column_settings.media_only": "Vain media",
"community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "Tämä tuuttaus näkyy vain mainituille käyttäjille.",
@ -172,7 +172,7 @@
"follow_request.authorize": "Valtuuta",
"follow_request.reject": "Hylkää",
"follow_requests.unlocked_explanation": "Vaikka tilisi ei ole lukittu, {domain} ylläpitäjien mielestä haluat tarkistaa näiden tilien seurauspyynnöt manuaalisesti.",
"generic.saved": "Saved",
"generic.saved": "Tallennettu",
"getting_started.developers": "Kehittäjille",
"getting_started.directory": "Profiilihakemisto",
"getting_started.documentation": "Documentaatio",
@ -242,7 +242,7 @@
"keyboard_shortcuts.reply": "vastaa",
"keyboard_shortcuts.requests": "avaa lista seurauspyynnöistä",
"keyboard_shortcuts.search": "siirry hakukenttään",
"keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.spoilers": "näyttääksesi/piilottaaksesi CW kentän",
"keyboard_shortcuts.start": "avaa \"Aloitus\" -sarake",
"keyboard_shortcuts.toggle_hidden": "näytä/piilota sisältövaroituksella merkitty teksti",
"keyboard_shortcuts.toggle_sensitivity": "näytä/piilota media",
@ -420,15 +420,15 @@
"time_remaining.moments": "Hetki jäljellä",
"time_remaining.seconds": "{number, plural, one {# sekunti} other {# sekuntia}} jäljellä",
"timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
"timeline_hint.resources.followers": "Followers",
"timeline_hint.resources.follows": "Follows",
"timeline_hint.resources.statuses": "Older toots",
"timeline_hint.resources.followers": "Seuraajat",
"timeline_hint.resources.follows": "Seuraa",
"timeline_hint.resources.statuses": "Vanhemmat tuuttaukset",
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
"trends.trending_now": "Suosittua nyt",
"ui.beforeunload": "Luonnos häviää, jos poistut Mastodonista.",
"units.short.billion": "{count}B",
"units.short.million": "{count}M",
"units.short.thousand": "{count}K",
"units.short.million": "{count}m",
"units.short.thousand": "{count}k",
"upload_area.title": "Lataa raahaamalla ja pudottamalla tähän",
"upload_button.label": "Lisää mediaa",
"upload_error.limit": "Tiedostolatauksien raja ylitetty.",
@ -436,12 +436,12 @@
"upload_form.audio_description": "Kuvaile kuulovammaisille",
"upload_form.description": "Anna kuvaus näkörajoitteisia varten",
"upload_form.edit": "Muokkaa",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "Vaihda pikkukuva",
"upload_form.undo": "Peru",
"upload_form.video_description": "Kuvaile kuulo- tai näkövammaisille",
"upload_modal.analyzing_picture": "Analysoidaan kuvaa…",
"upload_modal.apply": "Käytä",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "Valitse kuva",
"upload_modal.description_placeholder": "Eräänä jäätävänä ja pimeänä yönä gorilla ratkaisi sudokun kahdessa minuutissa",
"upload_modal.detect_text": "Tunnista teksti kuvasta",
"upload_modal.edit_media": "Muokkaa mediaa",

+ 3
- 3
app/javascript/mastodon/locales/fr.json View File

@ -423,7 +423,7 @@
"timeline_hint.resources.followers": "Les abonnés",
"timeline_hint.resources.follows": "Les abonnements",
"timeline_hint.resources.statuses": "Les anciens pouets",
"trends.counter_by_accounts": "{count, plural, one {{counter} personne} other {{counter} personnes}} en parle·nt",
"trends.counter_by_accounts": "{count, plural, one {{counter} personne en parle} other {{counter} personnes en parlent}}",
"trends.trending_now": "Tendance en ce moment",
"ui.beforeunload": "Votre brouillon sera perdu si vous quittez Mastodon.",
"units.short.billion": "{count}B",
@ -436,12 +436,12 @@
"upload_form.audio_description": "Décrire pour les personnes ayant des difficultés d’audition",
"upload_form.description": "Décrire pour les malvoyant·e·s",
"upload_form.edit": "Modifier",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "Changer la vignette",
"upload_form.undo": "Supprimer",
"upload_form.video_description": "Décrire pour les personnes ayant des problèmes d’audition ou de vision",
"upload_modal.analyzing_picture": "Analyse de l’image en cours…",
"upload_modal.apply": "Appliquer",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "Choisir une image",
"upload_modal.description_placeholder": "Buvez de ce whisky que le patron juge fameux",
"upload_modal.detect_text": "Détecter le texte de l’image",
"upload_modal.edit_media": "Modifier le média",

+ 1
- 1
app/javascript/mastodon/locales/ga.json View File

@ -16,7 +16,7 @@
"account.followers": "Followers",
"account.followers.empty": "No one follows this user yet.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Follows you",
"account.hide_reblogs": "Hide boosts from @{name}",

+ 3
- 3
app/javascript/mastodon/locales/gl.json View File

@ -16,7 +16,7 @@
"account.followers": "Seguidoras",
"account.followers.empty": "Aínda ninguén segue esta usuaria.",
"account.followers_counter": "{count, plural, one {{counter} Seguidora} other {{counter} Seguidoras}}",
"account.following_counter": "{count, plural, one {} other {{counter} Seguindo}}",
"account.following_counter": "{count, plural, other {{counter} Seguindo}}",
"account.follows.empty": "Esta usuaria aínda non segue a ninguén.",
"account.follows_you": "Séguete",
"account.hide_reblogs": "Agochar repeticións de @{name}",
@ -436,12 +436,12 @@
"upload_form.audio_description": "Describir para persoas con problemas auditivos",
"upload_form.description": "Describir para persoas con problemas visuais",
"upload_form.edit": "Editar",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "Cambiar a miniatura",
"upload_form.undo": "Eliminar",
"upload_form.video_description": "Describir para persoas con problemas visuais ou auditivos",
"upload_modal.analyzing_picture": "Estase a analizar a imaxe…",
"upload_modal.apply": "Aplicar",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "Elixir imaxe",
"upload_modal.description_placeholder": "Un raposo veloz brinca sobre o can preguiceiro",
"upload_modal.detect_text": "Detectar texto na imaxe",
"upload_modal.edit_media": "Editar multimedia",

+ 1
- 1
app/javascript/mastodon/locales/he.json View File

@ -16,7 +16,7 @@
"account.followers": "עוקבים",
"account.followers.empty": "אף אחד לא עוקב אחר המשתמש הזה עדיין.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "משתמש זה לא עוקב אחר אף אחד עדיין.",
"account.follows_you": "במעקב אחריך",
"account.hide_reblogs": "להסתיר הידהודים מאת @{name}",

+ 1
- 1
app/javascript/mastodon/locales/hi.json View File

@ -16,7 +16,7 @@
"account.followers": "फॉलोवर",
"account.followers.empty": "कोई भी इस यूज़र् को फ़ॉलो नहीं करता है",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "यह यूज़र् अभी तक किसी को फॉलो नहीं करता है।",
"account.follows_you": "आपको फॉलो करता है",
"account.hide_reblogs": "@{name} के बूस्ट छुपाएं",

+ 1
- 1
app/javascript/mastodon/locales/hr.json View File

@ -16,7 +16,7 @@
"account.followers": "Sljedbenici",
"account.followers.empty": "No one follows this user yet.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "te slijedi",
"account.hide_reblogs": "Hide boosts from @{name}",

+ 3
- 3
app/javascript/mastodon/locales/hu.json View File

@ -16,7 +16,7 @@
"account.followers": "Követő",
"account.followers.empty": "Ezt a felhasználót még senki sem követi.",
"account.followers_counter": "{count, plural, one {{counter} Követő} other {{counter} Követő}}",
"account.following_counter": "{count, plural, one {} other {{counter} Követett}}",
"account.following_counter": "{count, plural, other {{counter} Követett}}",
"account.follows.empty": "Ez a felhasználó még senkit sem követ.",
"account.follows_you": "Követ téged",
"account.hide_reblogs": "@{name} megtolásainak némítása",
@ -436,12 +436,12 @@
"upload_form.audio_description": "Írja le a hallássérültek számára",
"upload_form.description": "Leírás látáskorlátozottak számára",
"upload_form.edit": "Szerkesztés",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "Előnézet megváltoztatása",
"upload_form.undo": "Törlés",
"upload_form.video_description": "Írja le a hallás- vagy látássérültek számára",
"upload_modal.analyzing_picture": "Kép elemzése…",
"upload_modal.apply": "Alkalmaz",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "Kép kiválasztása",
"upload_modal.description_placeholder": "A gyors, barna róka átugrik a lusta kutya fölött",
"upload_modal.detect_text": "Szöveg felismerése a képről",
"upload_modal.edit_media": "Média szerkesztése",

+ 18
- 18
app/javascript/mastodon/locales/hy.json View File

@ -1,12 +1,12 @@
{
"account.account_note_header": "Note",
"account.account_note_header": "Գրառում",
"account.add_or_remove_from_list": "Աւելացնել կամ հեռացնել ցանկերից",
"account.badges.bot": "Բոտ",
"account.badges.group": "Խումբ",
"account.block": "Արգելափակել @{name}֊ին",
"account.block_domain": "Թաքցնել ամէնը հետեւեալ տիրոյթից՝ {domain}",
"account.blocked": "Արգելափակուած է",
"account.browse_more_on_origin_server": "Browse more on the original profile",
"account.browse_more_on_origin_server": "Դիտել ավելին իրական պրոֆիլում",
"account.cancel_follow_request": "չեղարկել հետեւելու հայցը",
"account.direct": "Նամակ գրել @{name} -ին",
"account.domain_blocked": "Տիրոյթը արգելափակուած է",
@ -15,8 +15,8 @@
"account.follow": "Հետեւել",
"account.followers": "Հետեւողներ",
"account.followers.empty": "Այս օգտատիրոջը դեռ ոչ մէկ չի հետեւում։",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.followers_counter": "{count, plural, one {{counter} Հետևորդ} other {{counter} Հետևորդներ}}",
"account.following_counter": "{count, plural, other {{counter} Հետևում են}}",
"account.follows.empty": "Այս օգտատէրը դեռ ոչ մէկի չի հետեւում։",
"account.follows_you": "Հետեւում է քեզ",
"account.hide_reblogs": "Թաքցնել @{name}֊ի տարածածները",
@ -36,14 +36,14 @@
"account.requested": "Հաստատման կարիք ունի։ Սեղմիր՝ հետեւելու հայցը չեղարկելու համար։",
"account.share": "Կիսուել @{name}֊ի էջով",
"account.show_reblogs": "Ցուցադրել @{name}֊ի տարածածները",
"account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
"account.statuses_counter": "{count, plural, one {{counter} Թութ} other {{counter} Թութեր}}",
"account.unblock": "Ապաարգելափակել @{name}֊ին",
"account.unblock_domain": "Ցուցադրել {domain} թաքցուած տիրոյթի գրառումները",
"account.unendorse": "Չցուցադրել անձնական էջում",
"account.unfollow": "Ապահետեւել",
"account.unmute": "Ապալռեցնել @{name}֊ին",
"account.unmute_notifications": "Միացնել ծանուցումները @{name}֊ից",
"account_note.placeholder": "Click to add a note",
"account_note.placeholder": "Սեղմեք գրառելու համար",
"alert.rate_limited.message": "Փորձէք որոշ ժամանակ անց՝ {retry_time, time, medium}։",
"alert.rate_limited.title": "Գործողութիւնների յաճախութիւնը գերազանցում է թոյլատրելին",
"alert.unexpected.message": "Անսպասելի սխալ տեղի ունեցաւ։",
@ -172,7 +172,7 @@
"follow_request.authorize": "Վավերացնել",
"follow_request.reject": "Մերժել",
"follow_requests.unlocked_explanation": "Այս հարցումը ուղարկված է հաշվից, որի համար {domain}-ի անձնակազմը միացրել է ձեռքով ստուգում։",
"generic.saved": "Saved",
"generic.saved": "Պահպանված է",
"getting_started.developers": "Մշակողներ",
"getting_started.directory": "Օգտատէրերի շտեմարան",
"getting_started.documentation": "Փաստաթղթեր",
@ -242,7 +242,7 @@
"keyboard_shortcuts.reply": "պատասխանելու համար",
"keyboard_shortcuts.requests": "հետեւելու հայցերի ցանկը դիտելու համար",
"keyboard_shortcuts.search": "որոնման դաշտին սեւեռվելու համար",
"keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.spoilers": "որպեսզի ցուցադրվի/թաքցվի CW դաշտը",
"keyboard_shortcuts.start": "«սկսել» սիւնակը բացելու համար",
"keyboard_shortcuts.toggle_hidden": "CW֊ի ետեւի տեքստը ցուցադրել֊թաքցնելու համար",
"keyboard_shortcuts.toggle_sensitivity": "մեդիան ցուցադրել֊թաքցնելու համար",
@ -419,16 +419,16 @@
"time_remaining.minutes": "{number, plural, one {# րոպե} other {# րոպե}} անց",
"time_remaining.moments": "Մնացել է մի քանի վարկեան",
"time_remaining.seconds": "{number, plural, one {# վարկեան} other {# վարկեան}} անց",
"timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
"timeline_hint.resources.followers": "Followers",
"timeline_hint.resources.follows": "Follows",
"timeline_hint.resources.statuses": "Older toots",
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
"timeline_hint.remote_resource_not_displayed": "{resource} այլ սպասարկիչներից չեն ցուցադրվել:",
"timeline_hint.resources.followers": "Հետևորդներ",
"timeline_hint.resources.follows": "Հետևել",
"timeline_hint.resources.statuses": "Հին թութեր",
"trends.counter_by_accounts": "{count, plural, one {{counter} մարդ} other {{counter} մարդիկ}} խոսում են",
"trends.trending_now": "Այժմ արդիական",
"ui.beforeunload": "Քո սեւագիրը կկորի, եթե լքես Մաստոդոնը։",
"units.short.billion": "{count}B",
"units.short.million": "{count}M",
"units.short.thousand": "{count}K",
"units.short.billion": "{count}մլրդ",
"units.short.million": "{count}մլն",
"units.short.thousand": "{count}Հազ.",
"upload_area.title": "Քաշիր ու նետիր՝ վերբեռնելու համար",
"upload_button.label": "Ավելացնել մեդիա",
"upload_error.limit": "Ֆայլի վերբեռնման սահմանաչափը գերազանցված է։",
@ -436,12 +436,12 @@
"upload_form.audio_description": "Նկարագրիր ձայնագրութեան բովանդակութիւնը լսողական խնդիրներով անձանց համար",
"upload_form.description": "Նկարագիր՝ տեսողական խնդիրներ ունեցողների համար",
"upload_form.edit": "Խմբագրել",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "Փոխել պատկերակը",
"upload_form.undo": "Հետարկել",
"upload_form.video_description": "Նկարագրիր տեսանիւթը լսողական կամ տեսողական խնդիրներով անձանց համար",
"upload_modal.analyzing_picture": "Լուսանկարի վերլուծում…",
"upload_modal.apply": "Կիրառել",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "Ընտրել նկար",
"upload_modal.description_placeholder": "Բել դղյակի ձախ ժամն օֆ ազգությանը ցպահանջ չճշտած վնաս էր եւ փառք։",
"upload_modal.detect_text": "Հայտնբերել տեքստը նկարից",
"upload_modal.edit_media": "Խմբագրել մեդիան",

+ 1
- 1
app/javascript/mastodon/locales/id.json View File

@ -16,7 +16,7 @@
"account.followers": "Pengikut",
"account.followers.empty": "Tidak ada satupun yang mengkuti pengguna ini saat ini.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Pengguna ini belum mengikuti siapapun.",
"account.follows_you": "Mengikuti anda",
"account.hide_reblogs": "Sembunyikan boosts dari @{name}",

+ 1
- 1
app/javascript/mastodon/locales/io.json View File

@ -16,7 +16,7 @@
"account.followers": "Sequanti",
"account.followers.empty": "No one follows this user yet.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Sequas tu",
"account.hide_reblogs": "Hide boosts from @{name}",

+ 1
- 1
app/javascript/mastodon/locales/is.json View File

@ -16,7 +16,7 @@
"account.followers": "Fylgjendur",
"account.followers.empty": "Ennþá fylgist enginn með þessum notanda.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Þessi notandi fylgist ennþá ekki með neinum.",
"account.follows_you": "Fylgir þér",
"account.hide_reblogs": "Fela endurbirtingar fyrir @{name}",

+ 2
- 2
app/javascript/mastodon/locales/it.json View File

@ -436,12 +436,12 @@
"upload_form.audio_description": "Descrizione per persone con difetti uditivi",
"upload_form.description": "Descrizione per utenti con disabilità visive",
"upload_form.edit": "Modifica",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "Cambia miniatura",
"upload_form.undo": "Cancella",
"upload_form.video_description": "Descrizione per persone con difetti uditivi o visivi",
"upload_modal.analyzing_picture": "Analisi immagine…",
"upload_modal.apply": "Applica",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "Scegli immagine",
"upload_modal.description_placeholder": "Ma la volpe col suo balzo ha raggiunto il quieto Fido",
"upload_modal.detect_text": "Rileva testo dall'immagine",
"upload_modal.edit_media": "Modifica media",

+ 3
- 3
app/javascript/mastodon/locales/ja.json View File

@ -36,7 +36,7 @@
"account.requested": "フォロー承認待ちです。クリックしてキャンセル",
"account.share": "@{name}さんのプロフィールを共有する",
"account.show_reblogs": "@{name}さんからのブーストを表示",
"account.statuses_counter": "{counter} トゥート",
"account.statuses_counter": "{counter} 投稿",
"account.unblock": "@{name}さんのブロックを解除",
"account.unblock_domain": "{domain}のブロックを解除",
"account.unendorse": "プロフィールから外す",
@ -436,12 +436,12 @@
"upload_form.audio_description": "聴取が難しいユーザーへの説明",
"upload_form.description": "閲覧が難しいユーザーへの説明",
"upload_form.edit": "編集",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "サムネイルを変更",
"upload_form.undo": "削除",
"upload_form.video_description": "視聴が難しいユーザーへの説明",
"upload_modal.analyzing_picture": "画像を解析中…",
"upload_modal.apply": "適用",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "画像を選択",
"upload_modal.description_placeholder": "あのイーハトーヴォのすきとおった風",
"upload_modal.detect_text": "画像からテキストを検出",
"upload_modal.edit_media": "メディアを編集",

+ 1
- 1
app/javascript/mastodon/locales/ka.json View File

@ -16,7 +16,7 @@
"account.followers": "მიმდევრები",
"account.followers.empty": "No one follows this user yet.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "მოგყვებათ",
"account.hide_reblogs": "დაიმალოს ბუსტები @{name}-სგან",

+ 13
- 13
app/javascript/mastodon/locales/kab.json View File

@ -6,7 +6,7 @@
"account.block": "Seḥbes @{name}",
"account.block_domain": "Ffer kra i d-yekkan seg {domain}",
"account.blocked": "Yettusewḥel",
"account.browse_more_on_origin_server": "Inig ugar deg umaɣun agejdan",
"account.browse_more_on_origin_server": "Snirem ugar deg umeɣnu aneẓli",
"account.cancel_follow_request": "Sefsex asuter n uḍfar",
"account.direct": "Izen usrid i @{name}",
"account.domain_blocked": "Taɣult yeffren",
@ -15,8 +15,8 @@
"account.follow": "Ḍfer",
"account.followers": "Imeḍfaren",
"account.followers.empty": "Ar tura, ulac yiwen i yeṭṭafaṛen amseqdac-agi.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.followers_counter": "{count, plural, one {{count} n umeḍfar} other {{count} n imeḍfaren}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Ar tura, amseqdac-agi ur yeṭṭafaṛ yiwen.",
"account.follows_you": "Yeṭṭafaṛ-ik",
"account.hide_reblogs": "Ffer ayen i ibeṭṭu @{name}",
@ -43,7 +43,7 @@
"account.unfollow": "Ur ṭṭafaṛ ara",
"account.unmute": "Kkes asgugem ɣef @{name}",
"account.unmute_notifications": "Serreḥ ilɣa sɣur @{name}",
"account_note.placeholder": "Tekki aken ad ternuḍ tazmilt",
"account_note.placeholder": "Ulac iwenniten",
"alert.rate_limited.message": "Ma ulac aɣilif ɛreḍ tikelt-nniḍen akka {retry_time, time, medium}.",
"alert.rate_limited.title": "Aktum s talast",
"alert.unexpected.message": "Yeḍra-d unezri ur netturaǧu ara.",
@ -81,7 +81,7 @@
"column_subheading.settings": "Iɣewwaṛen",
"community.column_settings.local_only": "Adigan kan",
"community.column_settings.media_only": "Allal n teywalt kan",
"community.column_settings.remote_only": "Ubεid kan",
"community.column_settings.remote_only": "Anmeggag kan",
"compose_form.direct_message_warning": "Tajewwaqt-a ad d-tettwasken kan i yimseqdacen i d-yettwabedren.",
"compose_form.direct_message_warning_learn_more": "Issin ugar",
"compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
@ -143,7 +143,7 @@
"emoji_button.objects": "Tiɣawsiwin",
"emoji_button.people": "Medden",
"emoji_button.recent": "Wid yettuseqdacen s waṭas",
"emoji_button.search": "Nadi",
"emoji_button.search": "Nadi...",
"emoji_button.search_results": "Igemmaḍ n unadi",
"emoji_button.symbols": "Izamulen",
"emoji_button.travel": "Imeḍqan d Yinigen",
@ -236,7 +236,7 @@
"keyboard_shortcuts.muted": "akken ad teldiḍ tabdart n yimseqdacen yettwasgugmen",
"keyboard_shortcuts.my_profile": "akken ad d-teldiḍ amaɣnu-ik",
"keyboard_shortcuts.notifications": "akken ad d-teldiḍ ajgu n tilɣa",
"keyboard_shortcuts.open_media": "i taɣwalin yeldin ",
"keyboard_shortcuts.open_media": "i tiɣwalin yeldin",
"keyboard_shortcuts.pinned": "akken ad teldiḍ tabdart n tjewwiqin yettwasentḍen",
"keyboard_shortcuts.profile": "akken ad d-teldiḍ amaɣnu n umeskar",
"keyboard_shortcuts.reply": "i tririt",
@ -295,7 +295,7 @@
"notification.follow": "{name} yeṭṭafaṛ-ik",
"notification.follow_request": "{name} yessuter-d ad k-yeḍfeṛ",
"notification.mention": "{name} yebder-ik-id",
"notification.own_poll": "Your poll has ended",
"notification.own_poll": "Tafrant-ik·im tfuk",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} yebḍa tajewwiqt-ik i tikelt-nniḍen",
"notifications.clear": "Sfeḍ tilɣa",
@ -375,7 +375,7 @@
"status.delete": "Kkes",
"status.detailed_status": "Detailed conversation view",
"status.direct": "Izen usrid i @{name}",
"status.embed": "Yuli",
"status.embed": "Seddu",
"status.favourite": "Rnu ɣer yismenyifen",
"status.filtered": "Yettwasizdeg",
"status.load_more": "Sali ugar",
@ -390,7 +390,7 @@
"status.read_more": "Issin ugar",
"status.reblog": "Bḍu",
"status.reblog_private": "Boost to original audience",
"status.reblogged_by": "{name} boosted",
"status.reblogged_by": "Yebḍa-tt {name}",
"status.reblogs.empty": "Ula yiwen ur yebḍi tajewwiqt-agi ar tura. Ticki yebḍa-tt yiwen, ad d-iban da.",
"status.redraft": "Kkes tɛiwdeḍ tira",
"status.remove_bookmark": "Kkes tacreḍt",
@ -419,7 +419,7 @@
"time_remaining.minutes": "Mazal {number, plural, one {# n tesdat} other {# n tesdatin}}",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "Mazal {number, plural, one {# n tasint} other {# n tsinin}} id yugran",
"timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
"timeline_hint.remote_resource_not_displayed": "{resource} seg yiqeddacen-nniḍen ur d-ttwaskanent ara.",
"timeline_hint.resources.followers": "Imeḍfaṛen",
"timeline_hint.resources.follows": "T·Yeṭafaṛ",
"timeline_hint.resources.statuses": "Tijewwaqin tiqdimin",
@ -436,12 +436,12 @@
"upload_form.audio_description": "Glem-d i yemdanen i yesɛan ugur deg tmesliwt",
"upload_form.description": "Glem-d i yemdaneni yesɛan ugur deg yiẓri",
"upload_form.edit": "Ẓreg",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "Beddel tugna",
"upload_form.undo": "Kkes",
"upload_form.video_description": "Glem-d i yemdanen i yesɛan ugur deg tmesliwt neɣ deg yiẓri",
"upload_modal.analyzing_picture": "Tasleḍt n tugna tetteddu…",
"upload_modal.apply": "Snes",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "Fren tugna",
"upload_modal.description_placeholder": "Aberraɣ arurad ineggez nnig n uqjun amuṭṭis",
"upload_modal.detect_text": "Sefru-d aḍris seg tugna",
"upload_modal.edit_media": "Ẓreg taɣwalt",

+ 1
- 1
app/javascript/mastodon/locales/kk.json View File

@ -16,7 +16,7 @@
"account.followers": "Оқырмандар",
"account.followers.empty": "Әлі ешкім жазылмаған.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Ешкімге жазылмапты.",
"account.follows_you": "Сізге жазылыпты",
"account.hide_reblogs": "@{name} атты қолданушының әрекеттерін жасыру",

+ 1
- 1
app/javascript/mastodon/locales/kn.json View File

@ -16,7 +16,7 @@
"account.followers": "Followers",
"account.followers.empty": "No one follows this user yet.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Follows you",
"account.hide_reblogs": "Hide boosts from @{name}",

+ 4
- 4
app/javascript/mastodon/locales/ko.json View File

@ -1,5 +1,5 @@
{
"account.account_note_header": "@{name} 에 대한 노트",
"account.account_note_header": "노트",
"account.add_or_remove_from_list": "리스트에 추가 혹은 삭제",
"account.badges.bot": "봇",
"account.badges.group": "그룹",
@ -43,7 +43,7 @@
"account.unfollow": "팔로우 해제",
"account.unmute": "뮤트 해제",
"account.unmute_notifications": "@{name}의 알림 뮤트 해제",
"account_note.placeholder": "작성된 댓글이 없음",
"account_note.placeholder": "클릭해서 노트 추가",
"alert.rate_limited.message": "{retry_time, time, medium}에 다시 시도해 주세요.",
"alert.rate_limited.title": "빈도 제한",
"alert.unexpected.message": "예측하지 못한 에러가 발생했습니다.",
@ -436,12 +436,12 @@
"upload_form.audio_description": "청각 장애인을 위한 설명",
"upload_form.description": "시각장애인을 위한 설명",
"upload_form.edit": "편집",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "썸네일 변경",
"upload_form.undo": "삭제",
"upload_form.video_description": "청각, 시각 장애인을 위한 설명",
"upload_modal.analyzing_picture": "이미지 분석 중…",
"upload_modal.apply": "적용",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "이미지 선택",
"upload_modal.description_placeholder": "다람쥐 헌 쳇바퀴 타고파",
"upload_modal.detect_text": "이미지에서 텍스트 추출",
"upload_modal.edit_media": "미디어 편집",

+ 1
- 1
app/javascript/mastodon/locales/ku.json View File

@ -16,7 +16,7 @@
"account.followers": "Followers",
"account.followers.empty": "No one follows this user yet.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Follows you",
"account.hide_reblogs": "Hide boosts from @{name}",

+ 1
- 1
app/javascript/mastodon/locales/lt.json View File

@ -16,7 +16,7 @@
"account.followers": "Followers",
"account.followers.empty": "No one follows this user yet.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Follows you",
"account.hide_reblogs": "Hide boosts from @{name}",

+ 12
- 12
app/javascript/mastodon/locales/lv.json View File

@ -1,13 +1,13 @@
{
"account.account_note_header": "Note",
"account.account_note_header": "Piezīme",
"account.add_or_remove_from_list": "Pievienot vai noņemt no saraksta",
"account.badges.bot": "Bots",
"account.badges.group": "Group",
"account.badges.group": "Grupa",
"account.block": "Bloķēt @{name}",
"account.block_domain": "Slēpt visu no {domain}",
"account.blocked": "Bloķēts",
"account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Cancel follow request",
"account.browse_more_on_origin_server": "Pārlūkot vairāk sākotnējā profilā",
"account.cancel_follow_request": "Atcelt pieprasījumu",
"account.direct": "Privātā ziņa @{name}",
"account.domain_blocked": "Domēns ir paslēpts",
"account.edit_profile": "Labot profilu",
@ -16,11 +16,11 @@
"account.followers": "Sekotāji",
"account.followers.empty": "Šim lietotājam nav sekotāju.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.",
"account.follows_you": "Seko tev",
"account.hide_reblogs": "Paslēpt paceltos ierakstus no lietotāja @{name}",
"account.last_status": "Last active",
"account.last_status": "Pēdējā aktivitāte",
"account.link_verified_on": "Šīs saites piederība ir pārbaudīta {date}",
"account.locked_info": "Šī konta privātuma status ir iestatīts slēgts. Īpašnieks izskatīs un izvēlēsies kas viņam drīkst sekot.",
"account.media": "Mēdiji",
@ -29,7 +29,7 @@
"account.mute": "Apklusināt @{name}",
"account.mute_notifications": "Nerādīt paziņojumus no @{name}",
"account.muted": "Apklusināts",
"account.never_active": "Never",
"account.never_active": "Nekad",
"account.posts": "Ieraksti",
"account.posts_with_replies": "Ieraksti un atbildes",
"account.report": "Ziņot par lietotāju @{name}",
@ -43,7 +43,7 @@
"account.unfollow": "Nesekot",
"account.unmute": "Noņemt apklusinājumu no lietotāja @{name}",
"account.unmute_notifications": "Rādīt paziņojumus no lietotāja @{name}",
"account_note.placeholder": "Click to add a note",
"account_note.placeholder": "Noklikšķiniet, lai pievienotu piezīmi",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "Negaidīta kļūda.",
@ -58,7 +58,7 @@
"bundle_modal_error.message": "Kaut kas nogāja greizi ielādējot šo komponenti.",
"bundle_modal_error.retry": "Mēģini vēlreiz",
"column.blocks": "Bloķētie lietotāji",
"column.bookmarks": "Bookmarks",
"column.bookmarks": "Grāmatzīmes",
"column.community": "Lokālā laika līnija",
"column.direct": "Privātās ziņas",
"column.directory": "Browse profiles",
@ -79,16 +79,16 @@
"column_header.show_settings": "Rādīt iestatījumus",
"column_header.unpin": "Atspraust",
"column_subheading.settings": "Iestatījumi",
"community.column_settings.local_only": "Local only",
"community.column_settings.local_only": "Tikai vietējie",
"community.column_settings.media_only": "Tikai mēdiji",
"community.column_settings.remote_only": "Remote only",
"community.column_settings.remote_only": "Tikai tālvadības",
"compose_form.direct_message_warning": "Šis ziņojums tiks nosūtīts tikai pieminētajiem lietotājiem.",
"compose_form.direct_message_warning_learn_more": "Papildus informācija",
"compose_form.hashtag_warning": "Ziņojumu nebūs iespējams atrast zem haštagiem jo tas nav publisks. Tikai publiskos ziņojumus ir iespējams meklēt pēc tiem.",
"compose_form.lock_disclaimer": "Tavs konts nav {locked}. Ikviens var Tev sekot lai apskatītu tikai sekotājiem paredzētos ziņojumus.",
"compose_form.lock_disclaimer.lock": "slēgts",
"compose_form.placeholder": "Ko vēlies publicēt?",
"compose_form.poll.add_option": "Add a choice",
"compose_form.poll.add_option": "Pievienot izvēli",
"compose_form.poll.duration": "Poll duration",
"compose_form.poll.option_placeholder": "Choice {number}",
"compose_form.poll.remove_option": "Remove this choice",

+ 1
- 1
app/javascript/mastodon/locales/mk.json View File

@ -16,7 +16,7 @@
"account.followers": "Следбеници",
"account.followers.empty": "Никој не го следи овој корисник сеуште.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Корисникот не следи никој сеуште.",
"account.follows_you": "Те следи тебе",
"account.hide_reblogs": "Сокриј буст од @{name}",

+ 21
- 21
app/javascript/mastodon/locales/ml.json View File

@ -1,8 +1,8 @@
{
"account.account_note_header": "Note",
"account.account_note_header": "കുറിപ്പ്",
"account.add_or_remove_from_list": "പട്ടികയിൽ ചേർക്കുകയോ അല്ലെങ്കിൽ മാറ്റുകയോ ചെയ്യുക",
"account.badges.bot": "റോബോട്ട്",
"account.badges.group": "Group",
"account.badges.group": "കൂട്ടം",
"account.block": "@{name} നെ ബ്ലോക്ക് ചെയ്യുക",
"account.block_domain": "{domain} ൽ നിന്നുള്ള എല്ലാം മറയ്കുക",
"account.blocked": "തടഞ്ഞു",
@ -16,7 +16,7 @@
"account.followers": "പിന്തുടരുന്നവർ",
"account.followers.empty": "ഈ ഉപയോക്താവിനെ ആരും ഇതുവരെ പിന്തുടരുന്നില്ല.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "ഈ ഉപയോക്താവ് ആരേയും ഇതുവരെ പിന്തുടരുന്നില്ല.",
"account.follows_you": "നിങ്ങളെ പിന്തുടരുന്നു",
"account.hide_reblogs": "@{name} ബൂസ്റ്റ് ചെയ്തവ മറയ്കുക",
@ -43,12 +43,12 @@
"account.unfollow": "പിന്തുടരുന്നത് നിര്‍ത്തുക",
"account.unmute": "നിശ്ശബ്ദമാക്കുന്നത് നിർത്തുക @{name}",
"account.unmute_notifications": "@{name} യിൽ നിന്നുള്ള അറിയിപ്പുകൾ പ്രസിദ്ധപ്പെടുത്തുക",
"account_note.placeholder": "Click to add a note",
"account_note.placeholder": "കുറിപ്പ് ചേർക്കാൻ ക്ലിക്കുചെയ്യുക",
"alert.rate_limited.message": "{retry_time, time, medium} നു ശേഷം വീണ്ടും ശ്രമിക്കുക.",
"alert.rate_limited.title": "തോത് പരിമിതപ്പെടുത്തിയിരിക്കുന്നു",
"alert.unexpected.message": "അപ്രതീക്ഷിതമായി എന്തോ സംഭവിച്ചു.",
"alert.unexpected.title": "ശ്ശോ!",
"announcement.announcement": "Announcement",
"announcement.announcement": "അറിയിപ്പ്",
"autosuggest_hashtag.per_week": "ആഴ്ച തോറും {count}",
"boost_modal.combo": "അടുത്ത തവണ ഇത് ഒഴിവാക്കുവാൻ {combo} ഞെക്കാവുന്നതാണ്",
"bundle_column_error.body": "ഈ ഘടകം പ്രദശിപ്പിക്കുമ്പോൾ എന്തോ കുഴപ്പം സംഭവിച്ചു.",
@ -58,7 +58,7 @@
"bundle_modal_error.message": "ഈ വെബ്പേജ് പ്രദർശിപ്പിക്കുമ്പോൾ എന്തോ കുഴപ്പം സംഭവിച്ചു.",
"bundle_modal_error.retry": "വീണ്ടും ശ്രമിക്കുക",
"column.blocks": "തടയപ്പെട്ട ഉപയോക്താക്കൾ",
"column.bookmarks": "Bookmarks",
"column.bookmarks": "ബുക്ക്മാർക്കുകൾ",
"column.community": "പ്രാദേശികമായ സമയരേഖ",
"column.direct": "നേരിട്ടുള്ള സന്ദേശങ്ങൾ",
"column.directory": "പ്രൊഫൈലുകൾ മറിച്ചുനോക്കുക",
@ -79,19 +79,19 @@
"column_header.show_settings": "ക്രമീകരണങ്ങൾ കാണിക്കുക",
"column_header.unpin": "ഇളക്കി മാറ്റുക",
"column_subheading.settings": "ക്രമീകരണങ്ങള്‍",
"community.column_settings.local_only": "Local only",
"community.column_settings.local_only": "പ്രാദേശികം മാത്രം",
"community.column_settings.media_only": "മാധ്യമങ്ങൾ മാത്രം",
"community.column_settings.remote_only": "Remote only",
"compose_form.direct_message_warning": "പരാമർശിക്കപ്പെട്ടിരിക്കുന്ന ഉപയോഗ്താക്കൾക്കെ ഈ ടൂട്ട് അയക്കപ്പെടുകയുള്ളു.",
"compose_form.direct_message_warning_learn_more": "കൂടുതൽ പഠിക്കുക",
"compose_form.hashtag_warning": "ഈ ടൂട്ട് പട്ടികയിൽ ഇല്ലാത്തതിനാൽ ഒരു ചർച്ചാവിഷയത്തിന്റെ പട്ടികയിലും പെടുകയില്ല. പരസ്യമായ ടൂട്ടുകൾ മാത്രമേ ചർച്ചാവിഷയം അടിസ്ഥാനമാക്കി തിരയുവാൻ സാധിക്കുകയുള്ളു.",
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
"compose_form.lock_disclaimer.lock": "locked",
"compose_form.lock_disclaimer.lock": "ലോക്കുചെയ്തു",
"compose_form.placeholder": "നിങ്ങളുടെ മനസ്സിൽ എന്താണ്?",
"compose_form.poll.add_option": "Add a choice",
"compose_form.poll.add_option": "ഒരു ചോയ്‌സ് ചേർക്കുക",
"compose_form.poll.duration": "തിരഞ്ഞെടുപ്പിന്റെ സമയദൈർഖ്യം",
"compose_form.poll.option_placeholder": "Choice {number}",
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.poll.option_placeholder": "ചോയ്‌സ് {number}",
"compose_form.poll.remove_option": "ഈ ഡിവൈസ് മാറ്റുക",
"compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
"compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "ടൂട്ട്",
@ -172,7 +172,7 @@
"follow_request.authorize": "ചുമതലപ്പെടുത്തുക",
"follow_request.reject": "നിരസിക്കുക",
"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": "Saved",
"generic.saved": "സംരക്ഷിച്ചു",
"getting_started.developers": "വികസിപ്പിക്കുന്നവർ",
"getting_started.directory": "രൂപരേഖ നാമഗൃഹസൂചി",
"getting_started.documentation": "രേഖാ സമാഹരണം",
@ -193,8 +193,8 @@
"home.column_settings.basic": "അടിസ്ഥാനം",
"home.column_settings.show_reblogs": "ബൂസ്റ്റുകൾ കാണിക്കുക",
"home.column_settings.show_replies": "മറുപടികൾ കാണിക്കുക",
"home.hide_announcements": "Hide announcements",
"home.show_announcements": "Show announcements",
"home.hide_announcements": "പ്രഖ്യാപനങ്ങൾ മറയ്‌ക്കുക",
"home.show_announcements": "പ്രഖ്യാപനങ്ങൾ കാണിക്കുക",
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@ -372,15 +372,15 @@
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted",
"status.copy": "Copy link to status",
"status.delete": "Delete",
"status.detailed_status": "Detailed conversation view",
"status.direct": "Direct message @{name}",
"status.embed": "Embed",
"status.favourite": "Favourite",
"status.delete": "മായ്ക്കുക",
"status.detailed_status": "വിശദമായ സംഭാഷണ കാഴ്‌ച",
"status.direct": "@{name} ന് നേരിട്ട് മെസേജ് അയക്കുക",
"status.embed": "ഉൾച്ചേർക്കുക",
"status.favourite": "പ്രിയപ്പെട്ടത്",
"status.filtered": "Filtered",
"status.load_more": "Load more",
"status.load_more": "കൂടുതൽ ലോഡു ചെയ്യുക",
"status.media_hidden": "Media hidden",
"status.mention": "Mention @{name}",
"status.mention": "@{name} സൂചിപ്പിക്കുക",
"status.more": "More",
"status.mute": "Mute @{name}",
"status.mute_conversation": "Mute conversation",

+ 1
- 1
app/javascript/mastodon/locales/mr.json View File

@ -16,7 +16,7 @@
"account.followers": "अनुयायी",
"account.followers.empty": "ह्या वापरकर्त्याचा आतापर्यंत कोणी अनुयायी नाही.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "हा वापरकर्ता अजूनपर्यंत कोणाचा अनुयायी नाही.",
"account.follows_you": "तुमचा अनुयायी आहे",
"account.hide_reblogs": "@{name} पासून सर्व बूस्ट लपवा",

+ 1
- 1
app/javascript/mastodon/locales/ms.json View File

@ -16,7 +16,7 @@
"account.followers": "Followers",
"account.followers.empty": "No one follows this user yet.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Follows you",
"account.hide_reblogs": "Hide boosts from @{name}",

+ 6
- 6
app/javascript/mastodon/locales/nl.json View File

@ -15,8 +15,8 @@
"account.follow": "Volgen",
"account.followers": "Volgers",
"account.followers.empty": "Niemand volgt nog deze gebruiker.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.followers_counter": "{count, plural, one {{counter} volger} other {{counter} volgers}}",
"account.following_counter": "{count, plural, one {{counter} volgend} other {{counter} volgend}}",
"account.follows.empty": "Deze gebruiker volgt nog niemand.",
"account.follows_you": "Volgt jou",
"account.hide_reblogs": "Verberg boosts van @{name}",
@ -36,7 +36,7 @@
"account.requested": "Wacht op goedkeuring. Klik om het volgverzoek te annuleren",
"account.share": "Profiel van @{name} delen",
"account.show_reblogs": "Toon boosts van @{name}",
"account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
"account.statuses_counter": "{count, plural, one {{counter} toot} other {{counter} toots}}",
"account.unblock": "@{name} deblokkeren",
"account.unblock_domain": "{domain} niet langer verbergen",
"account.unendorse": "Niet op profiel weergeven",
@ -423,7 +423,7 @@
"timeline_hint.resources.followers": "Volgers",
"timeline_hint.resources.follows": "Volgend",
"timeline_hint.resources.statuses": "Oudere toots",
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
"trends.counter_by_accounts": "{count, plural, one {{counter} persoon} other {{counter} personen}} zijn aan het praten",
"trends.trending_now": "Trends",
"ui.beforeunload": "Je concept zal verloren gaan als je Mastodon verlaat.",
"units.short.billion": "{count}B",
@ -436,12 +436,12 @@
"upload_form.audio_description": "Omschrijf dit voor mensen met een auditieve beperking",
"upload_form.description": "Omschrijf dit voor mensen met een visuele beperking",
"upload_form.edit": "Bewerken",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "Miniatuurafbeelding wijzigen",
"upload_form.undo": "Verwijderen",
"upload_form.video_description": "Omschrijf dit voor mensen met een auditieve of visuele beperking",
"upload_modal.analyzing_picture": "Afbeelding analyseren…",
"upload_modal.apply": "Toepassen",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "Kies een afbeelding",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
"upload_modal.detect_text": "Tekst in een afbeelding detecteren",
"upload_modal.edit_media": "Media bewerken",

+ 1
- 1
app/javascript/mastodon/locales/nn.json View File

@ -16,7 +16,7 @@
"account.followers": "Fylgjarar",
"account.followers.empty": "Ingen fylgjer denne brukaren enno.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Denne brukaren fylgjer ikkje nokon enno.",
"account.follows_you": "Fylgjer deg",
"account.hide_reblogs": "Gøym fremhevingar frå @{name}",

+ 1
- 1
app/javascript/mastodon/locales/no.json View File

@ -16,7 +16,7 @@
"account.followers": "Følgere",
"account.followers.empty": "Ingen følger denne brukeren ennå.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Denne brukeren følger ikke noen enda.",
"account.follows_you": "Følger deg",
"account.hide_reblogs": "Skjul fremhevinger fra @{name}",

+ 1
- 1
app/javascript/mastodon/locales/oc.json View File

@ -16,7 +16,7 @@
"account.followers": "Seguidors",
"account.followers.empty": "Degun sèc pas aqueste utilizaire pel moment.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Aqueste utilizaire sèc pas degun pel moment.",
"account.follows_you": "Vos sèc",
"account.hide_reblogs": "Rescondre los partatges de @{name}",

+ 1
- 1
app/javascript/mastodon/locales/pl.json View File

@ -16,7 +16,7 @@
"account.followers": "Śledzący",
"account.followers.empty": "Nikt jeszcze nie śledzi tego użytkownika.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Ten użytkownik nie śledzi jeszcze nikogo.",
"account.follows_you": "Śledzi Cię",
"account.hide_reblogs": "Ukryj podbicia od @{name}",

+ 3
- 3
app/javascript/mastodon/locales/pt-BR.json View File

@ -118,7 +118,7 @@
"confirmations.mute.explanation": "Isso ocultará toots deles e toots mencionando-os, mas ainda permitirá que eles vejam seus toots e te sigam.",
"confirmations.mute.message": "Você tem certeza de que deseja silenciar {name}?",
"confirmations.redraft.confirm": "Excluir e rascunhar",
"confirmations.redraft.message": "Tem certeza que quer excluir este status e re-rascunhá-lo? Favoritos e boots vão ser perdidos, e as respostas ao post original vão ficar órfãs.",
"confirmations.redraft.message": "Você tem certeza de que deseja apagar o toot e usá-lo como rascunho? Boosts e favoritos serão perdidos e as respostas ao toot original ficarão desconectadas.",
"confirmations.reply.confirm": "Responder",
"confirmations.reply.message": "Responder agora sobrescreverá o toot que você está compondo. Deseja continuar?",
"confirmations.unfollow.confirm": "Deixar de seguir",
@ -392,7 +392,7 @@
"status.reblog_private": "Boostar para audiência original",
"status.reblogged_by": "{name} boostou",
"status.reblogs.empty": "Nada aqui. Quando alguém der boost, o autor aparecerá aqui.",
"status.redraft": "Excluir & re-rascunhar",
"status.redraft": "Excluir e rascunhar",
"status.remove_bookmark": "Remover marcador",
"status.reply": "Responder",
"status.replyAll": "Responder a thread",
@ -425,7 +425,7 @@
"timeline_hint.resources.statuses": "Toots mais antigos",
"trends.counter_by_accounts": "{count, plural, one {{counter} pessoa} other {{counter} pessoas}} falando",
"trends.trending_now": "Em alta no momento",
"ui.beforeunload": "Seu rascunho vai ser perdido se você sair do Mastodon.",
"ui.beforeunload": "Seu rascunho será perdido se você sair do Mastodon.",
"units.short.billion": "{count} bi",
"units.short.million": "{count} mi",
"units.short.thousand": "{count} mil",

+ 2
- 2
app/javascript/mastodon/locales/pt-PT.json View File

@ -436,12 +436,12 @@
"upload_form.audio_description": "Descreva para pessoas com diminuição da acuidade auditiva",
"upload_form.description": "Descrição da imagem para pessoas com dificuldades visuais",
"upload_form.edit": "Editar",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "Alterar miniatura",
"upload_form.undo": "Apagar",
"upload_form.video_description": "Descreva para pessoas com diminuição da acuidade auditiva ou visual",
"upload_modal.analyzing_picture": "A analizar imagem…",
"upload_modal.apply": "Aplicar",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "Escolher imagem",
"upload_modal.description_placeholder": "Grave e cabisbaixo, o filho justo zelava pela querida mãe doente",
"upload_modal.detect_text": "Detectar texto na imagem",
"upload_modal.edit_media": "Editar media",

+ 1
- 1
app/javascript/mastodon/locales/ro.json View File

@ -16,7 +16,7 @@
"account.followers": "Urmăritori",
"account.followers.empty": "Acest utilizator nu are încă urmăritori.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Acest utilizator nu urmărește pe nimeni încă.",
"account.follows_you": "Te urmărește",
"account.hide_reblogs": "Ascunde impulsurile de la @{name}",

+ 5
- 5
app/javascript/mastodon/locales/ru.json View File

@ -1,5 +1,5 @@
{
"account.account_note_header": "Ваша заметка для @{name}",
"account.account_note_header": "Заметка",
"account.add_or_remove_from_list": "Управление списками",
"account.badges.bot": "Бот",
"account.badges.group": "Группа",
@ -172,7 +172,7 @@
"follow_request.authorize": "Авторизовать",
"follow_request.reject": "Отказать",
"follow_requests.unlocked_explanation": "Этот запрос отправлен с учётной записи, для которой администрация {domain} включила ручную проверку подписок.",
"generic.saved": "Сохранена",
"generic.saved": "Сохранено",
"getting_started.developers": "Разработчикам",
"getting_started.directory": "Каталог профилей",
"getting_started.documentation": "Документация",
@ -423,7 +423,7 @@
"timeline_hint.resources.followers": "подписчиков",
"timeline_hint.resources.follows": "подписки",
"timeline_hint.resources.statuses": "прошлые посты",
"trends.counter_by_accounts": "{count, plural, one {{counter} человек} many {{counter} человек} other {{counter} человека}}",
"trends.counter_by_accounts": "{count, plural, one {{counter} человек обсуждает} few {{counter} человека обсуждает} many {{counter} человек обсуждают} other {{counter} обсуждают}} ",
"trends.trending_now": "Самое актуальное",
"ui.beforeunload": "Ваш черновик будет утерян, если вы покинете Mastodon.",
"units.short.billion": "{count} млрд",
@ -436,12 +436,12 @@
"upload_form.audio_description": "Опишите аудиофайл для людей с нарушением слуха",
"upload_form.description": "Добавьте описание для людей с нарушениями зрения:",
"upload_form.edit": "Изменить",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "Изменить обложку",
"upload_form.undo": "Отменить",
"upload_form.video_description": "Опишите видео для людей с нарушением слуха или зрения",
"upload_modal.analyzing_picture": "Обработка изображения…",
"upload_modal.apply": "Применить",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "Выбрать изображение",
"upload_modal.description_placeholder": "На дворе трава, на траве дрова",
"upload_modal.detect_text": "Найти текст на картинке",
"upload_modal.edit_media": "Изменить файл",

+ 1
- 1
app/javascript/mastodon/locales/sc.json View File

@ -16,7 +16,7 @@
"account.followers": "Sighiduras",
"account.followers.empty": "Nemos sighit ancora custa persone.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Custa persone non sighit ancora a nemos.",
"account.follows_you": "Ti sighit",
"account.hide_reblogs": "Cua is cumpartziduras de @{name}",

+ 1
- 1
app/javascript/mastodon/locales/sk.json View File

@ -16,7 +16,7 @@
"account.followers": "Sledujúci",
"account.followers.empty": "Tohto používateľa ešte nikto nenásleduje.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Tento používateľ ešte nikoho nenasleduje.",
"account.follows_you": "Nasleduje ťa",
"account.hide_reblogs": "Skry vyzdvihnutia od @{name}",

+ 1
- 1
app/javascript/mastodon/locales/sl.json View File

@ -16,7 +16,7 @@
"account.followers": "Sledilci",
"account.followers.empty": "Nihče ne sledi temu uporabniku.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Ta uporabnik še ne sledi nikomur.",
"account.follows_you": "Sledi tebi",
"account.hide_reblogs": "Skrij spodbude od @{name}",

+ 3
- 3
app/javascript/mastodon/locales/sq.json View File

@ -16,7 +16,7 @@
"account.followers": "Ndjekës",
"account.followers.empty": "Këtë përdorues ende s’e ndjek njeri.",
"account.followers_counter": "{count, plural, one {{counter} Ndjekës} other {{counter} Ndjekës}}",
"account.following_counter": "{count, plural, one {} other {{counter} të Ndjekur}}",
"account.following_counter": "{count, plural, other {{counter} të Ndjekur}}",
"account.follows.empty": "Ky përdorues ende s’ndjek njeri.",
"account.follows_you": "Ju ndjek",
"account.hide_reblogs": "Fshih përforcime nga @{name}",
@ -436,12 +436,12 @@
"upload_form.audio_description": "Përshkruajeni për persona me dëgjim të kufizuar",
"upload_form.description": "Përshkruajeni për persona me probleme shikimi",
"upload_form.edit": "Përpunoni",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "Ndryshoni miniaturën",
"upload_form.undo": "Fshije",
"upload_form.video_description": "Përshkruajeni për persona me dëgjim të kufizuar ose probleme shikimi",
"upload_modal.analyzing_picture": "Po analizohet fotoja…",
"upload_modal.apply": "Aplikoje",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "Zgjidhni figurë",
"upload_modal.description_placeholder": "Deshe Korçën, Korçën të dhamë",
"upload_modal.detect_text": "Pikase tekstin prej fotoje",
"upload_modal.edit_media": "Përpunoni media",

+ 1
- 1
app/javascript/mastodon/locales/sr-Latn.json View File

@ -16,7 +16,7 @@
"account.followers": "Pratioca",
"account.followers.empty": "No one follows this user yet.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Prati Vas",
"account.hide_reblogs": "Sakrij podrške koje daje korisnika @{name}",

+ 1
- 1
app/javascript/mastodon/locales/sr.json View File

@ -16,7 +16,7 @@
"account.followers": "Пратиоци",
"account.followers.empty": "Тренутно нико не прати овог корисника.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Корисник тренутно не прати никога.",
"account.follows_you": "Прати Вас",
"account.hide_reblogs": "Сакриј подршке које даје корисника @{name}",

+ 1
- 1
app/javascript/mastodon/locales/sv.json View File

@ -16,7 +16,7 @@
"account.followers": "Följare",
"account.followers.empty": "Ingen följer denna användare än.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Denna användare följer inte någon än.",
"account.follows_you": "Följer dig",
"account.hide_reblogs": "Dölj knuffar från @{name}",

+ 1
- 1
app/javascript/mastodon/locales/szl.json View File

@ -16,7 +16,7 @@
"account.followers": "Followers",
"account.followers.empty": "No one follows this user yet.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Follows you",
"account.hide_reblogs": "Hide boosts from @{name}",

+ 1
- 1
app/javascript/mastodon/locales/ta.json View File

@ -16,7 +16,7 @@
"account.followers": "பின்தொடர்பவர்கள்",
"account.followers.empty": "இதுவரை யாரும் இந்த பயனரைப் பின்தொடரவில்லை.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "இந்த பயனர் இதுவரை யாரையும் பின்தொடரவில்லை.",
"account.follows_you": "உங்களைப் பின்தொடர்கிறார்",
"account.hide_reblogs": "இருந்து ஊக்கியாக மறை @{name}",

+ 1
- 1
app/javascript/mastodon/locales/tai.json View File

@ -16,7 +16,7 @@
"account.followers": "Followers",
"account.followers.empty": "No one follows this user yet.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Follows you",
"account.hide_reblogs": "Hide boosts from @{name}",

+ 1
- 1
app/javascript/mastodon/locales/te.json View File

@ -16,7 +16,7 @@
"account.followers": "అనుచరులు",
"account.followers.empty": "ఈ వినియోగదారుడిని ఇంకా ఎవరూ అనుసరించడంలేదు.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "ఈ వినియోగదారి ఇంకా ఎవరినీ అనుసరించడంలేదు.",
"account.follows_you": "మిమ్మల్ని అనుసరిస్తున్నారు",
"account.hide_reblogs": "@{name} నుంచి బూస్ట్ లను దాచిపెట్టు",

+ 22
- 22
app/javascript/mastodon/locales/th.json View File

@ -1,12 +1,12 @@
{
"account.account_note_header": "หมายเหตุของคุณสำหรับ @{name}",
"account.account_note_header": "หมายเหตุ",
"account.add_or_remove_from_list": "เพิ่มหรือเอาออกจากรายการ",
"account.badges.bot": "บอต",
"account.badges.group": "กลุ่ม",
"account.block": "ปิดกั้น @{name}",
"account.block_domain": "ปิดกั้นโดเมน {domain}",
"account.blocked": "ปิดกั้นอยู่",
"account.browse_more_on_origin_server": "ดูเพิ่มเติมในโปรไฟล์ต้นฉบับ",
"account.browse_more_on_origin_server": "เรียกดูเพิ่มเติมในโปรไฟล์ดั้งเดิม",
"account.cancel_follow_request": "ยกเลิกคำขอติดตาม",
"account.direct": "ส่งข้อความโดยตรงถึง @{name}",
"account.domain_blocked": "ปิดกั้นโดเมนอยู่",
@ -15,8 +15,8 @@
"account.follow": "ติดตาม",
"account.followers": "ผู้ติดตาม",
"account.followers.empty": "ยังไม่มีใครติดตามผู้ใช้นี้",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.followers_counter": "{count, plural, other {{counter} ผู้ติดตาม}}",
"account.following_counter": "{count, plural, other {{counter} กำลังติดตาม}}",
"account.follows.empty": "ผู้ใช้นี้ยังไม่ได้ติดตามใคร",
"account.follows_you": "ติดตามคุณ",
"account.hide_reblogs": "ซ่อนการดันจาก @{name}",
@ -36,14 +36,14 @@
"account.requested": "กำลังรอการอนุมัติ คลิกเพื่อยกเลิกคำขอติดตาม",
"account.share": "แบ่งปันโปรไฟล์ของ @{name}",
"account.show_reblogs": "แสดงการดันจาก @{name}",
"account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
"account.statuses_counter": "{count, plural, other {{counter} โพสต์}}",
"account.unblock": "เลิกปิดกั้น @{name}",
"account.unblock_domain": "เลิกปิดกั้นโดเมน {domain}",
"account.unendorse": "ไม่แสดงให้เห็นในโปรไฟล์",
"account.unfollow": "เลิกติดตาม",
"account.unmute": "เลิกซ่อน @{name}",
"account.unmute_notifications": "เลิกซ่อนการแจ้งเตือนจาก @{name}",
"account_note.placeholder": "ไม่มีความคิดเห็นที่ระบุไว้",
"account_note.placeholder": "คลิกเพื่อเพิ่มหมายเหตุ",
"alert.rate_limited.message": "โปรดลองใหม่หลังจาก {retry_time, time, medium}",
"alert.rate_limited.title": "มีการจำกัดอัตรา",
"alert.unexpected.message": "เกิดข้อผิดพลาดที่ไม่คาดคิด",
@ -82,14 +82,14 @@
"community.column_settings.local_only": "ในเซิร์ฟเวอร์เท่านั้น",
"community.column_settings.media_only": "สื่อเท่านั้น",
"community.column_settings.remote_only": "ระยะไกลเท่านั้น",
"compose_form.direct_message_warning": "โพสต์นี้จะถูกส่งไปยังผู้ใช้ที่กล่าวถึงเท่านั้น",
"compose_form.direct_message_warning": "จะส่งโพสต์นี้ไปยังผู้ใช้ที่กล่าวถึงเท่านั้น",
"compose_form.direct_message_warning_learn_more": "เรียนรู้เพิ่มเติม",
"compose_form.hashtag_warning": "โพสต์นี้จะไม่ถูกแสดงในแฮชแท็กใด ๆ เนื่องจากไม่อยู่ในรายการ เฉพาะโพสต์สาธารณะเท่านั้นที่สามารถค้นหาโดยแฮชแท็ก",
"compose_form.hashtag_warning": "จะไม่แสดงรายการโพสต์นี้ภายใต้แฮชแท็กใด ๆ เนื่องจากไม่อยู่ในรายการ เฉพาะโพสต์สาธารณะเท่านั้นที่สามารถค้นหาโดยแฮชแท็ก",
"compose_form.lock_disclaimer": "บัญชีของคุณไม่ได้ {locked} ใครก็ตามสามารถติดตามคุณเพื่อดูโพสต์สำหรับผู้ติดตามเท่านั้นของคุณ",
"compose_form.lock_disclaimer.lock": "ล็อคอยู่",
"compose_form.placeholder": "คุณกำลังคิดอะไรอยู่?",
"compose_form.poll.add_option": "เพิ่มตัวเลือก",
"compose_form.poll.duration": "ระยะเวลาโพล",
"compose_form.poll.duration": "ระยะเวลาการสำรวจความคิดเห็น",
"compose_form.poll.option_placeholder": "ตัวเลือก {number}",
"compose_form.poll.remove_option": "เอาตัวเลือกนี้ออก",
"compose_form.poll.switch_to_multiple": "เปลี่ยนการสำรวจความคิดเห็นเป็นอนุญาตหลายตัวเลือก",
@ -202,7 +202,7 @@
"introduction.federation.federated.headline": "ที่ติดต่อกับภายนอก",
"introduction.federation.federated.text": "โพสต์สาธารณะจากเซิร์ฟเวอร์อื่น ๆ ของเฟดิเวิร์สจะปรากฏในเส้นเวลาที่ติดต่อกับภายนอก",
"introduction.federation.home.headline": "หน้าแรก",
"introduction.federation.home.text": "โพสต์จากผู้คนที่คุณติดตามจะปรากฏในฟีดหน้าแรกของคุณ คุณสามารถติดตามใครก็ได้บนเซิร์ฟเวอร์ไหนก็ได้!",
"introduction.federation.home.text": "โพสต์จากผู้คนที่คุณติดตามจะปรากฏในฟีดหน้าแรกของคุณ คุณสามารถติดตามใครก็ตามในเซิร์ฟเวอร์ใดก็ตาม!",
"introduction.federation.local.headline": "ในเซิร์ฟเวอร์",
"introduction.federation.local.text": "โพสต์สาธารณะจากผู้คนในเซิร์ฟเวอร์เดียวกันกับคุณจะปรากฏในเส้นเวลาในเซิร์ฟเวอร์",
"introduction.interactions.action": "เสร็จสิ้นบทช่วยสอน!",
@ -264,7 +264,7 @@
"lists.subheading": "รายการของคุณ",
"load_pending": "{count, plural, other {# รายการใหม่}}",
"loading_indicator.label": "กำลังโหลด...",
"media_gallery.toggle_visible": "ซ่อน {number, plural, other {ภาพ}}",
"media_gallery.toggle_visible": "ซ่อน{number, plural, other {ภาพ}}",
"missing_indicator.label": "ไม่พบ",
"missing_indicator.sublabel": "ไม่พบทรัพยากรนี้",
"mute_modal.hide_notifications": "ซ่อนการแจ้งเตือนจากผู้ใช้นี้?",
@ -348,8 +348,8 @@
"relative_time.today": "วันนี้",
"reply_indicator.cancel": "ยกเลิก",
"report.forward": "ส่งต่อไปยัง {target}",
"report.forward_hint": "บัญชีมาจากเซิร์ฟเวอร์อื่น ต้องการส่งสำเนาของรายงานที่ไม่ระบุตัวตนไปที่เซิร์ฟเวอร์นั้นด้วยหรือไม่?",
"report.hint": "รายงานนี้จะถูกส่งไปยังผู้ควบคุมเซิร์ฟเวอร์ของคุณ คุณสามารถอธิบายเหตุผลที่คุณรายงานบัญชีนี้ด้านล่าง:",
"report.forward_hint": "บัญชีมาจากเซิร์ฟเวอร์อื่น ส่งสำเนาของรายงานที่ไม่ระบุตัวตนไปที่นั่นด้วย?",
"report.hint": "จะส่งรายงานไปยังผู้ควบคุมเซิร์ฟเวอร์ของคุณ คุณสามารถให้คำอธิบายเหตุผลที่คุณรายงานบัญชีนี้ด้านล่าง:",
"report.placeholder": "ความคิดเห็นเพิ่มเติม",
"report.submit": "ส่ง",
"report.target": "กำลังรายงาน {target}",
@ -407,7 +407,7 @@
"status.uncached_media_warning": "ไม่พร้อมใช้งาน",
"status.unmute_conversation": "เลิกซ่อนการสนทนา",
"status.unpin": "ถอนหมุดจากโปรไฟล์",
"suggestions.dismiss": "ปิดข้อเสนอแนะ",
"suggestions.dismiss": "ยกเลิกข้อเสนอแนะ",
"suggestions.header": "คุณอาจสนใจ…",
"tabs_bar.federated_timeline": "ที่ติดต่อกับภายนอก",
"tabs_bar.home": "หน้าแรก",
@ -423,25 +423,25 @@
"timeline_hint.resources.followers": "ผู้ติดตาม",
"timeline_hint.resources.follows": "การติดตาม",
"timeline_hint.resources.statuses": "โพสต์ที่เก่ากว่า",
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
"trends.counter_by_accounts": "{count, plural, other {{counter} คน}}กำลังพูดคุย",
"trends.trending_now": "กำลังนิยม",
"ui.beforeunload": "แบบร่างของคุณจะหายไปหากคุณออกจาก Mastodon",
"units.short.billion": "{count}B",
"units.short.million": "{count}M",
"units.short.thousand": "{count}K",
"units.short.billion": "{count} พันล้าน",
"units.short.million": "{count} ล้าน",
"units.short.thousand": "{count} พัน",
"upload_area.title": "ลากแล้วปล่อยเพื่ออัปโหลด",
"upload_button.label": "เพิ่มไฟล์ภาพ วิดีโอ หรือเสียง",
"upload_button.label": "เพิ่มไฟล์ภาพ, วิดีโอ หรือเสียง",
"upload_error.limit": "เกินขีดจำกัดการอัปโหลดไฟล์",
"upload_error.poll": "ไม่อนุญาตให้อัปโหลดไฟล์พร้อมโพล",
"upload_error.poll": "ไม่อนุญาตให้อัปโหลดไฟล์กับการลงคะแนน",
"upload_form.audio_description": "อธิบายสำหรับผู้สูญเสียการได้ยิน",
"upload_form.description": "อธิบายสำหรับผู้บกพร่องทางการมองเห็น",
"upload_form.edit": "แก้ไข",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "เปลี่ยนภาพขนาดย่อ",
"upload_form.undo": "ลบ",
"upload_form.video_description": "อธิบายสำหรับผู้สูญเสียการได้ยินหรือบกพร่องทางการมองเห็น",
"upload_modal.analyzing_picture": "กำลังวิเคราะห์รูปภาพ…",
"upload_modal.apply": "นำไปใช้",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "เลือกภาพ",
"upload_modal.description_placeholder": "สุนัขจิ้งจอกสีน้ำตาลที่ว่องไวกระโดดข้ามสุนัขขี้เกียจ",
"upload_modal.detect_text": "ตรวจหาข้อความจากรูปภาพ",
"upload_modal.edit_media": "แก้ไขสื่อ",

+ 1
- 1
app/javascript/mastodon/locales/tr.json View File

@ -16,7 +16,7 @@
"account.followers": "Takipçi",
"account.followers.empty": "Henüz kimse bu kullanıcıyı takip etmiyor.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Bu kullanıcı henüz kimseyi takip etmiyor.",
"account.follows_you": "Seni takip ediyor",
"account.hide_reblogs": "@{name} kişisinin yinelemelerini gizle",

+ 1
- 1
app/javascript/mastodon/locales/ug.json View File

@ -16,7 +16,7 @@
"account.followers": "Followers",
"account.followers.empty": "No one follows this user yet.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Follows you",
"account.hide_reblogs": "Hide boosts from @{name}",

+ 1
- 1
app/javascript/mastodon/locales/uk.json View File

@ -16,7 +16,7 @@
"account.followers": "Підписники",
"account.followers.empty": "Ніхто ще не підписався на цього користувача.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "Цей користувач ще ні на кого не підписався.",
"account.follows_you": "Підписаний(-а) на вас",
"account.hide_reblogs": "Сховати передмухи від @{name}",

+ 1
- 1
app/javascript/mastodon/locales/ur.json View File

@ -16,7 +16,7 @@
"account.followers": "پیروکار",
"account.followers.empty": "\"ہنوز اس صارف کی کوئی پیروی نہیں کرتا\".",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "\"یہ صارف ہنوز کسی کی پیروی نہیں کرتا ہے\".",
"account.follows_you": "آپ کا پیروکار ہے",
"account.hide_reblogs": "@{name} سے فروغ چھپائیں",

+ 105
- 105
app/javascript/mastodon/locales/vi.json View File

@ -1,29 +1,29 @@
{
"account.account_note_header": "Ghi chú của bạn cho @{name}",
"account.account_note_header": "Viết nhận xét",
"account.add_or_remove_from_list": "Thêm hoặc Xóa khỏi danh sách",
"account.badges.bot": "Bot",
"account.badges.group": "Nhóm",
"account.block": "Chặn @{name}",
"account.block_domain": "Chặn miền {domain}",
"account.block_domain": "Ẩn mọi thứ từ {domain}",
"account.blocked": "Đã chặn",
"account.browse_more_on_origin_server": "Tìm những tài khoản có liên quan",
"account.cancel_follow_request": "Hủy yêu cầu theo dõi",
"account.direct": "Nhắn tin cho @{name}",
"account.domain_blocked": "Đã chặn miền",
"account.edit_profile": "Chỉnh sửa hồ sơ",
"account.endorse": "Hiển thị trên trang cá nhân",
"account.domain_blocked": "Đã chặn người dùng",
"account.edit_profile": "Chỉnh sửa trang cá nhân",
"account.endorse": "Vinh danh người này",
"account.follow": "Theo dõi",
"account.followers": "Người theo dõi",
"account.followers.empty": "Chưa có người theo dõi.",
"account.followers_counter": "{count, plural, one {{counter} Người mến mộ} other {{counter} Người mến mộ}}",
"account.following_counter": "{count, plural, other {{counter} Đang mến mộ}}",
"account.followers.empty": "Chưa có người theo dõi nào.",
"account.followers_counter": "{count, plural, one {{counter} Người theo dõi} other {{counter} Người theo dõi}}",
"account.following_counter": "{count, plural, one {{counter} Đang theo dõi} other {{counter} Đang theo dõi}}",
"account.follows.empty": "Người dùng này chưa theo dõi ai.",
"account.follows_you": "Đang theo dõi bạn",
"account.hide_reblogs": "Ẩn chia sẻ từ @{name}",
"account.last_status": "Hoạt động gần đây",
"account.last_status": "Hoạt động cuối",
"account.link_verified_on": "Liên kết này đã được xác thực vào {date}",
"account.locked_info": "Người dùng này thiết lập trạng thái ẩn. Họ sẽ tự mình xét duyệt các yêu cầu mến mộ.",
"account.media": "Ảnh & Video",
"account.locked_info": "Người dùng này thiết lập trạng thái ẩn. Họ sẽ tự mình xét duyệt các yêu cầu theo dõi.",
"account.media": "Bộ sưu tập",
"account.mention": "Nhắc đến @{name}",
"account.moved_to": "{name} đã dời sang:",
"account.mute": "Ẩn @{name}",
@ -31,46 +31,46 @@
"account.muted": "Đã ẩn",
"account.never_active": "Chưa có bất cứ hoạt động nào",
"account.posts": "Tút",
"account.posts_with_replies": "Tút và trả lời",
"account.posts_with_replies": "Trả lời",
"account.report": "Báo cáo @{name}",
"account.requested": "Đang chờ chấp thuận. Nhấp vào đây để hủy yêu cầu theo dõi",
"account.share": "Chia sẻ hồ sơ @{name}",
"account.show_reblogs": "Hiện chia sẻ từ @{name}",
"account.statuses_counter": "{count, plural, other {{counter} Tút}}",
"account.unblock": "Bỏ chặn @{name}",
"account.unblock_domain": "Bỏ chặn miền {domain}",
"account.unendorse": "Không hiện trên trang cá nhân",
"account.unfollow": "Ngng theo dõi",
"account.unblock_domain": "Bỏ n {domain}",
"account.unendorse": "Ngưng vinh danh người này",
"account.unfollow": "Ngưng theo dõi",
"account.unmute": "Bỏ ẩn @{name}",
"account.unmute_notifications": "Hiển lại thông báo từ @{name}",
"account_note.placeholder": "Không nói gì thêm",
"account_note.placeholder": "Bạn có điều gì thú vị muốn nói về người này?",
"alert.rate_limited.message": "Vui lòng thử lại sau {retry_time, time, medium}.",
"alert.rate_limited.title": "Vượt giới hạn",
"alert.unexpected.message": "Đã xảy ra lỗi không mong muốn.",
"alert.unexpected.title": "Ốiii!",
"announcement.announcement": "Thông báo",
"autosuggest_hashtag.per_week": "{count} mỗi tuần",
"boost_modal.combo": "Lần sau, bạn có thể nhấn {combo} để bỏ qua",
"boost_modal.combo": "Bạn có thể nhấn {combo} để bỏ qua",
"bundle_column_error.body": "Đã có lỗi xảy ra trong khi tải nội dung này.",
"bundle_column_error.retry": "Thử lại",
"bundle_column_error.title": "Lỗi mạng",
"bundle_column_error.title": "Không có kết nối internet",
"bundle_modal_error.close": "Đóng",
"bundle_modal_error.message": "Đã có lỗi xảy ra trong khi tải nội dung này.",
"bundle_modal_error.retry": "Thử lại",
"column.blocks": "Người dùng đã chặn",
"column.bookmarks": "Tút đã lưu",
"column.community": "Máy chủ của bạn",
"column.direct": "Nhắn tin",
"column.direct": "Tin nhắn của bạn",
"column.directory": "Tìm một ai đó",
"column.domain_blocks": "Máy chủ đã chặn",
"column.favourites": "Tâm đắc",
"column.favourites": "Thích",
"column.follow_requests": "Yêu cầu theo dõi",
"column.home": "Bảng tin",
"column.lists": "Danh sách",
"column.mutes": "Người dùng đã chặn",
"column.mutes": "Người dùng đã n",
"column.notifications": "Thông báo",
"column.pins": "Tút ghim",
"column.public": "Dòng thời gian liên kết",
"column.public": "Mạng liên kết",
"column_back_button.label": "Quay lại",
"column_header.hide_settings": "Ẩn cài đặt",
"column_header.moveLeft_settings": "Dời cột sang bên trái",
@ -79,69 +79,69 @@
"column_header.show_settings": "Hiển thị cài đặt",
"column_header.unpin": "Không ghim",
"column_subheading.settings": "Cài đặt",
"community.column_settings.local_only": "Chỉ miền của bạn",
"community.column_settings.local_only": "Chỉ máy chủ của bạn",
"community.column_settings.media_only": "Chỉ ảnh/video",
"community.column_settings.remote_only": "Chỉ người dùng ở miền khác",
"community.column_settings.remote_only": "Chỉ người dùng ở máy chủ khác",
"compose_form.direct_message_warning": "Tút này sẽ chỉ gửi cho người được nhắc đến.",
"compose_form.direct_message_warning_learn_more": "Tìm hiểu thêm",
"compose_form.hashtag_warning": "Tút này sẽ không xuất hiện công khai khi tìm kiếm theo chủ đề. Chỉ Tút công khai có thể được tìm kiếm theo chủ đề.",
"compose_form.lock_disclaimer": "Tài khoản của bạn không {locked}. Bất cứ ai cũng có thể theo dõi bạn để xem bài viết dành riêng cho người theo dõi của bạn.",
"compose_form.hashtag_warning": "Tút này sẽ không xuất hiện công khai. Chỉ những tút công khai mới có thể được tìm kiếm thông qua hashtag.",
"compose_form.lock_disclaimer": "Tài khoản của bạn không {locked}. Bất cứ ai cũng có thể theo dõi bạn và xem bài viết của bạn dành riêng cho người theo dõi.",
"compose_form.lock_disclaimer.lock": "khóa",
"compose_form.placeholder": "Bạn đang nghĩ gì?",
"compose_form.poll.add_option": "Thêm lựa chọn",
"compose_form.poll.duration": "Thời hạn",
"compose_form.poll.duration": "Hết hạn vào",
"compose_form.poll.option_placeholder": "Lựa chọn {number}",
"compose_form.poll.remove_option": "Xóa lựa chọn này",
"compose_form.poll.switch_to_multiple": "Sửa thăm dò để cho phép nhiều lựa chọn",
"compose_form.poll.switch_to_single": "Sửa thăm dò để cho phép một lựa chọn",
"compose_form.poll.switch_to_multiple": "Có thể chọn nhiều lựa chọn",
"compose_form.poll.switch_to_single": "Chỉ cho phép chọn duy nhất một lựa chọn",
"compose_form.publish": "Tút",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive.hide": "Đánh dấu là nội dung nhạy cảm",
"compose_form.sensitive.hide": "Nội dung nhạy cảm",
"compose_form.sensitive.marked": "Nội dung đã đánh dấu nhạy cảm",
"compose_form.sensitive.unmarked": "Nội dung không đánh dấu nhạy cảm",
"compose_form.spoiler.marked": "Văn bản ẩn sau cảnh báo",
"compose_form.spoiler.marked": "Văn bản bị ẩn",
"compose_form.spoiler.unmarked": "Văn bản không ẩn sau spoil",
"compose_form.spoiler_placeholder": "Viết cảnh báo của bạn ở đây",
"compose_form.spoiler_placeholder": "Viết nội dung ẩn của bạn ở đây",
"confirmation_modal.cancel": "Hủy bỏ",
"confirmations.block.block_and_report": "Chặn & Báo cáo",
"confirmations.block.confirm": "Chặn",
"confirmations.block.message": "Bạn có chắc chắn muốn chặn {name}?",
"confirmations.block.message": "Bạn có thật sự muốn chặn {name}?",
"confirmations.delete.confirm": "Xóa bỏ",
"confirmations.delete.message": "Bạn có chắc chắn muốn xóa tút này?",
"confirmations.delete_list.confirm": "Xóa bỏ",
"confirmations.delete_list.message": "Bạn có chắc chắn muốn xóa vĩnh viễn danh sách này?",
"confirmations.domain_block.confirm": "Ẩn toàn bộ miền",
"confirmations.domain_block.confirm": "Ẩn toàn bộ máy chủ",
"confirmations.domain_block.message": "Bạn có chắc chắn rằng muốn ẩn toàn bộ nội dung từ {domain}? Sẽ hợp lý hơn nếu bạn chỉ chặn hoặc ẩn một vài tài khoản cụ thể. Ẩn toàn bộ nội dung từ máy chủ sẽ khiến bạn không còn thấy nội dung từ máy chủ đó ở bất kỳ nơi nào, kể cả thông báo. Người quan tâm bạn từ máy chủ đó cũng sẽ bị xóa luôn.",
"confirmations.logout.confirm": "Đăng xuất",
"confirmations.logout.message": "Bạn có chắc chắn bạn muốn thoát?",
"confirmations.logout.message": "Bạn có thật sự muốn thoát?",
"confirmations.mute.confirm": "Ẩn",
"confirmations.mute.explanation": "Điều này sẽ khiến tút của người đó và những tút có đề cập đến họ bị ẩn, tuy nhiên vẫn cho phép họ xem bài đăng của bạn và mến mộ bạn.",
"confirmations.mute.explanation": "Điều này sẽ khiến tút của người đó và những tút có đề cập đến họ bị ẩn, tuy nhiên vẫn cho phép họ xem bài đăng của bạn và theo dõi bạn.",
"confirmations.mute.message": "Bạn có chắc chắn muốn ẩn {name}?",
"confirmations.redraft.confirm": "Xóa & viết lại",
"confirmations.redraft.message": "Bạn có chắc chắn muốn xóa tút và viết lại? Điều này sẽ xóa mất những lượt tâm đắc và chia sẻ của tút, cũng như những phản hồi sẽ không còn nội dung gốc.",
"confirmations.redraft.message": "Bạn có chắc chắn muốn xóa tút và viết lại? Điều này sẽ xóa mất những lượt thích và chia sẻ của tút, cũng như những trả lời sẽ không còn nội dung gốc.",
"confirmations.reply.confirm": "Trả lời",
"confirmations.reply.message": "Nội dung bạn đang soạn thảo sẽ bị ghi đè, bạn có tiếp tục?",
"confirmations.unfollow.confirm": "Ngưng theo dõi",
"confirmations.unfollow.message": "Bạn có chắc chắn muốn ngưng theo dõi {name}?",
"conversation.delete": "Xóa tin nhắn này",
"conversation.mark_as_read": "Đánh dấu là đã đọc",
"conversation.open": "Xem tin nhắn",
"conversation.open": "Xem toàn bộ tin nhắn",
"conversation.with": "Với {names}",
"directory.federated": "Từ mạng liên kết",
"directory.local": "Chỉ từ {domain}",
"directory.new_arrivals": "Gia nhập gần đây",
"directory.local": "Từ {domain}",
"directory.new_arrivals": "Mới tham gia",
"directory.recently_active": "Hoạt động gần đây",
"embed.instructions": "Sao chép đoạn mã dưới đây và chèn vào trang web của bạn.",
"embed.preview": "Nó sẽ hiển thị như vầy:",
"emoji_button.activity": "Hoạt động",
"emoji_button.custom": "Riêng",
"emoji_button.custom": "Độc đáo",
"emoji_button.flags": "Cờ",
"emoji_button.food": "Ăn uống",
"emoji_button.label": "Chèn emoji",
"emoji_button.nature": "Thiên nhiên",
"emoji_button.not_found": "Không tìm thấy emoji! (°□°)",
"emoji_button.objects": "Đồ vật",
"emoji_button.people": "Người",
"emoji_button.people": "Mặt cười",
"emoji_button.recent": "Thường dùng",
"emoji_button.search": "Tìm kiếm...",
"emoji_button.search_results": "Kết quả tìm kiếm",
@ -154,24 +154,24 @@
"empty_column.community": "Máy chủ của bạn chưa có tút nào công khai. Bạn hãy thử viết gì đó đi!",
"empty_column.direct": "Bạn chưa có tin nhắn nào. Khi bạn gửi hoặc nhận tin nhắn, nó sẽ hiển thị ở đây.",
"empty_column.domain_blocks": "Chưa ẩn bất kỳ máy chủ nào.",
"empty_column.favourited_statuses": "Bạn chưa tâm đắc tút nào. Hãy thử đi, nó sẽ xuất hiện ở đây.",
"empty_column.favourites": "Chưa có ai tâm đắc tút này.",
"empty_column.follow_requests": "Bạn chưa có yêu cầu theo dõi nào. Khi có yêu cầu mới, nó sẽ xuất hiện ở đây.",
"empty_column.hashtag": "Chưa có bài đăng nào về chủ đề này.",
"empty_column.home": "Chưa có bất cứ gì! Hãy bắt đầu bằng cách tìm kiếm hoặc truy cập {public} để mến mộ những người bạn thích.",
"empty_column.favourited_statuses": "Bạn chưa thích tút nào. Hãy thử đi, nó sẽ xuất hiện ở đây.",
"empty_column.favourites": "Chưa có ai thích tút này.",
"empty_column.follow_requests": "Bạn chưa có yêu cầu theo dõi nào.",
"empty_column.hashtag": "Chưa có bài đăng nào sử dụng hashtag này.",
"empty_column.home": "Chưa có bất cứ gì! Hãy bắt đầu bằng cách tìm kiếm hoặc truy cập {public} để theo dõi những người bạn quan tâm.",
"empty_column.home.public_timeline": "tút công khai",
"empty_column.list": "Chưa có gì trong danh sách. Khi thành viên của danh sách này đăng tút mới, chúng mới xuất hiện ở đây.",
"empty_column.lists": "Bạn không có danh sách nào.",
"empty_column.mutes": "Bạn chưa ẩn người dùng nào.",
"empty_column.notifications": "Bạn chưa có thông báo nào. Hãy thử mến mộ hoặc nhắn tin cho một ai đó mà bạn thích.",
"empty_column.public": "Trống trơn! Bạn hãy viết gì đó hoặc bắt đầu mến mộ người dùng khác",
"empty_column.notifications": "Bạn chưa có thông báo nào. Hãy thử theo dõi hoặc nhắn tin cho một ai đó.",
"empty_column.public": "Trống trơn! Bạn hãy viết gì đó hoặc bắt đầu theo dõi người dùng khác",
"error.unexpected_crash.explanation": "Trang này có thể không hiển thị chính xác do lỗi lập trình Mastodon hoặc vấn đề tương thích trình duyệt.",
"error.unexpected_crash.next_steps": "Hãy thử làm mới trang. Nếu vẫn không được, bạn hãy vào Mastodon bằng một ứng dụng di động hoặc trình duyệt khác.",
"errors.unexpected_crash.copy_stacktrace": "Sao chép stacktrace vào clipboard",
"errors.unexpected_crash.report_issue": "Báo cáo lỗi",
"follow_request.authorize": "Cho phép",
"follow_request.reject": "Từ chối",
"follow_requests.unlocked_explanation": "Mặc dù tài khoản của bạn đang ở chế độ công khai, quản trị viên của {domain} vẫn tin rằng bạn sẽ muốn xem lại yêu cầu mến mộ từ những người khác.",
"follow_requests.unlocked_explanation": "Mặc dù tài khoản của bạn đang ở chế độ công khai, quản trị viên của {domain} vẫn tin rằng bạn sẽ muốn xem lại yêu cầu theo dõi từ những người khác.",
"generic.saved": "Đã lưu",
"getting_started.developers": "Nhà phát triển",
"getting_started.directory": "Danh sách người dùng",
@ -185,31 +185,31 @@
"hashtag.column_header.tag_mode.any": "hoặc {additional}",
"hashtag.column_header.tag_mode.none": "mà không {additional}",
"hashtag.column_settings.select.no_options_message": "Không tìm thấy đề xuất nào",
"hashtag.column_settings.select.placeholder": "Nhập chủ đề…",
"hashtag.column_settings.select.placeholder": "Nhập hashtag…",
"hashtag.column_settings.tag_mode.all": "Toàn bộ",
"hashtag.column_settings.tag_mode.any": "Một phần",
"hashtag.column_settings.tag_mode.none": "Không chọn",
"hashtag.column_settings.tag_toggle": "Bao gồm thêm chủ đề cho cột này",
"home.column_settings.basic": "Cơ bản",
"home.column_settings.show_reblogs": "Hiện t chia sẻ",
"home.column_settings.show_replies": "Hiện phản hồi",
"hashtag.column_settings.tag_toggle": "Bao gồm thêm hashtag cho cột này",
"home.column_settings.basic": "Tùy chỉnh",
"home.column_settings.show_reblogs": "Hiện những lượt chia sẻ",
"home.column_settings.show_replies": "Hiện những tút dạng trả lời",
"home.hide_announcements": "Ẩn thông báo",
"home.show_announcements": "Hiện thông báo",
"intervals.full.days": "{number} days",
"intervals.full.hours": "{number} hours",
"intervals.full.minutes": "{number} minutes",
"intervals.full.days": "{number, plural, other {# ngày}}",
"intervals.full.hours": "{number, plural, other {# giờ}}",
"intervals.full.minutes": "{number, plural, other {# phút}}",
"introduction.federation.action": "Tiếp theo",
"introduction.federation.federated.headline": "Mạng liên kết",
"introduction.federation.federated.text": "Nếu máy chủ của bạn có liên kết với các máy chủ khác, bài đăng công khai từ họ sẽ xuất hiện ở Mạng liên kết.",
"introduction.federation.home.headline": "Bảng tin",
"introduction.federation.home.text": "Bảng tin là nơi hiển thị bài đăng từ những người bạn mến mộ. Bạn có thể mến mộ bất cứ ai trên bất cứ máy chủ nào!",
"introduction.federation.home.text": "Bảng tin là nơi hiển thị bài đăng từ những người bạn theo dõi. Bạn có thể theo dõi bất cứ ai trên bất cứ máy chủ nào!",
"introduction.federation.local.headline": "Máy chủ của bạn",
"introduction.federation.local.text": "Máy chủ của bạn là nơi hiển thị bài đăng công khai từ những người thuộc cùng một máy chủ của bạn.",
"introduction.interactions.action": "Tôi đã hiểu rồi!",
"introduction.interactions.favourite.headline": "Tâm đắc",
"introduction.interactions.favourite.text": "Tâm đắc một tút có nghĩa là bạn thích tút đó và lưu giữ để sau này xem lại.",
"introduction.interactions.favourite.headline": "Thích",
"introduction.interactions.favourite.text": "Thích một tút có nghĩa là bạn tâm đắc nội dung của tút và muốn lưu giữ để sau này xem lại.",
"introduction.interactions.reblog.headline": "Chia sẻ",
"introduction.interactions.reblog.text": "Với tính năng chia sẻ, bạn có thể chia sẻ tút của người khác với những người mến mộ bạn.",
"introduction.interactions.reblog.text": "Với tính năng chia sẻ, bạn có thể chia sẻ tút của người khác cho những người theo dõi bạn.",
"introduction.interactions.reply.headline": "Trả lời",
"introduction.interactions.reply.text": "Bạn có thể trả lời tút của những người khác và tút của bạn, từ đó tạo nên những cuộc hội thoại.",
"introduction.welcome.action": "Bắt đầu nào!",
@ -224,8 +224,8 @@
"keyboard_shortcuts.direct": "mở mục tin nhắn",
"keyboard_shortcuts.down": "di chuyển xuống dưới danh sách",
"keyboard_shortcuts.enter": "viết tút mới",
"keyboard_shortcuts.favourite": "tâm đắc",
"keyboard_shortcuts.favourites": "mở danh sách tâm đắc",
"keyboard_shortcuts.favourite": "thích",
"keyboard_shortcuts.favourites": "mở lượt thích",
"keyboard_shortcuts.federated": "mở mạng liên kết",
"keyboard_shortcuts.heading": "Các phím tắt",
"keyboard_shortcuts.home": "mở bảng tin",
@ -240,7 +240,7 @@
"keyboard_shortcuts.pinned": "mở danh sách tút ghim",
"keyboard_shortcuts.profile": "mở trang cá nhân của người viết tút",
"keyboard_shortcuts.reply": "trả lời",
"keyboard_shortcuts.requests": "mở danh sách yêu cầu mến mộ",
"keyboard_shortcuts.requests": "mở danh sách yêu cầu theo dõi",
"keyboard_shortcuts.search": "mở tìm kiếm",
"keyboard_shortcuts.spoilers": "Hiện/ẩn nội dung nhạy cảm",
"keyboard_shortcuts.start": "mở mục \"Dành cho người mới\"",
@ -260,11 +260,11 @@
"lists.edit.submit": "Thay đổi tiêu đề",
"lists.new.create": "Thêm vào danh sách",
"lists.new.title_placeholder": "Tên danh sách mới",
"lists.search": "Tìm kiếm những người mà bạn mến mộ",
"lists.search": "Tìm kiếm những người mà bạn quan tâm",
"lists.subheading": "Danh sách của bạn",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
"load_pending": "{count, plural, one {# tút} other {# tút}}",
"loading_indicator.label": "Đang tải...",
"media_gallery.toggle_visible": "Ẩn {number, plural, one {image} other {images}}",
"media_gallery.toggle_visible": "Ẩn {number, plural, one {ảnh} other {ảnh}}",
"missing_indicator.label": "Không tìm thấy",
"missing_indicator.sublabel": "Không tìm thấy cái này",
"mute_modal.hide_notifications": "Ẩn thông báo từ người dùng này?",
@ -277,55 +277,55 @@
"navigation_bar.discover": "Cộng đồng",
"navigation_bar.domain_blocks": "Máy chủ đã ẩn",
"navigation_bar.edit_profile": "Chỉnh sửa trang cá nhân",
"navigation_bar.favourites": "Những thứ tâm đắc",
"navigation_bar.favourites": "Lượt thích",
"navigation_bar.filters": "Bộ lọc từ ngữ",
"navigation_bar.follow_requests": "Yêu cầu theo dõi",
"navigation_bar.follows_and_followers": "Đang theo dõi và người theo dõi bạn",
"navigation_bar.follows_and_followers": "Lượt theo dõi",
"navigation_bar.info": "Về máy chủ này",
"navigation_bar.keyboard_shortcuts": "Phím tắt",
"navigation_bar.lists": "Danh sách",
"navigation_bar.logout": "Đăng xuất",
"navigation_bar.mutes": "Người dùng đã chặn",
"navigation_bar.mutes": "Người dùng đã n",
"navigation_bar.personal": "Cá nhân",
"navigation_bar.pins": "Tút ghim",
"navigation_bar.preferences": "Tùy chỉnh",
"navigation_bar.preferences": "Cài đặt",
"navigation_bar.public_timeline": "Dòng thời gian liên kết",
"navigation_bar.security": "Bảo mật",
"notification.favourite": "{name} vừa tâm đắc tút của bạn",
"notification.follow": "{name} đã theo dõi bạn",
"notification.follow_request": "{name} đã yêu cầu theo dõi bạn",
"notification.favourite": "{name} vừa thích tút của bạn",
"notification.follow": "{name} vừa theo dõi bạn",
"notification.follow_request": "{name} vừa yêu cầu theo dõi bạn",
"notification.mention": "{name} nhắc đến bạn",
"notification.own_poll": "Cuộc thăm dò của bạn đã kết thúc",
"notification.poll": "Một cuộc thăm dò mà bạn tham gia đã kết thúc",
"notification.reblog": "{name} chia sẻ tút của bạn",
"notifications.clear": "Xóa thông báo",
"notifications.clear": "Làm trống thông báo",
"notifications.clear_confirmation": "Bạn có chắc chắn muốn xóa vĩnh viễn tất cả thông báo của mình?",
"notifications.column_settings.alert": "Thông báo trên máy tính",
"notifications.column_settings.favourite": "Tâm đắc:",
"notifications.column_settings.favourite": "Lượt thích:",
"notifications.column_settings.filter_bar.advanced": "Hiển thị toàn bộ",
"notifications.column_settings.filter_bar.category": "Lọc nhanh",
"notifications.column_settings.filter_bar.show": "Hiện",
"notifications.column_settings.follow": "Người theo dõi mới:",
"notifications.column_settings.follow_request": "Yêu cầu theo dõi mới:",
"notifications.column_settings.mention": "Nhắc đến:",
"notifications.column_settings.mention": "Đề cập:",
"notifications.column_settings.poll": "Kết quả cuộc thăm dò:",
"notifications.column_settings.push": "Thông báo đẩy",
"notifications.column_settings.reblog": "Chia sẻ:",
"notifications.column_settings.show": "Hiện trong cột",
"notifications.column_settings.sound": "Mở tiếng",
"notifications.column_settings.reblog": "Lượt chia sẻ mới:",
"notifications.column_settings.show": "Thông báo trên thanh menu",
"notifications.column_settings.sound": "Kèm theo tiếng \"bíp\"",
"notifications.filter.all": "Toàn bộ",
"notifications.filter.boosts": "Chia sẻ",
"notifications.filter.favourites": "Tâm đắc",
"notifications.filter.favourites": "Thích",
"notifications.filter.follows": "Đang theo dõi",
"notifications.filter.mentions": "Nhắc đến",
"notifications.filter.mentions": "Lượt nhắc đến",
"notifications.filter.polls": "Kết quả cuộc thăm dò",
"notifications.group": "{count} thông báo",
"poll.closed": "Đóng",
"poll.closed": "Cuộc thăm dò đã kết thúc",
"poll.refresh": "Làm mới",
"poll.total_people": "{count, plural, other {}}",
"poll.total_people": "{count, plural, one {# người bình chọn} other {# người bình chọn}}",
"poll.total_votes": "{count, plural, one {# bình chọn} other {# bình chọn}}",
"poll.vote": "Cuộc thăm dò",
"poll.voted": "Bạn đã bình chọn cho câu trả lời này",
"poll.voted": "Bạn đã bình chọn câu trả lời này",
"poll_button.add_poll": "Tạo thăm dò",
"poll_button.remove_poll": "Hủy thăm dò",
"privacy.change": "Thay đổi quyền riêng tư",
@ -333,17 +333,17 @@
"privacy.direct.short": "Tin nhắn",
"privacy.private.long": "Chỉ dành cho người theo dõi",
"privacy.private.short": "Chỉ người theo dõi",
"privacy.public.long": "Đăng lên các dòng thời gian công cộng",
"privacy.public.long": "Hiện trên bảng tin máy chủ",
"privacy.public.short": "Công khai",
"privacy.unlisted.long": "Không đăng lên các dòng thời gian công cộng",
"privacy.unlisted.long": "Ai cũng có thể xem nhưng không hiện trên bảng tin máy chủ",
"privacy.unlisted.short": "Mở",
"refresh": "Làm mới",
"regeneration_indicator.label": "Đang tải…",
"regeneration_indicator.sublabel": "Bảng tin của bạn đang được cập nhật!",
"relative_time.days": "{number} ngày",
"relative_time.hours": "{number} giờ",
"relative_time.days": "{number}d",
"relative_time.hours": "{number}h",
"relative_time.just_now": "vừa xong",
"relative_time.minutes": "{number}p",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
"relative_time.today": "hôm nay",
"reply_indicator.cancel": "Hủy bỏ",
@ -355,28 +355,28 @@
"report.target": "Báo xấu {target}",
"search.placeholder": "Tìm kiếm",
"search_popout.search_format": "Tìm kiếm nâng cao",
"search_popout.tips.full_text": "Nội dung trả về bao gồm các tút do bạn viết, thích, đã chia sẻ hoặc được nhắc đến. Cũng như địa chỉ người dùng, tên hiển thị lẫn chủ đề.",
"search_popout.tips.hashtag": "chủ đề",
"search_popout.tips.full_text": "Nội dung trả về bao gồm các tút do bạn viết, yêu thích, đã chia sẻ hoặc được nhắc đến. Cũng như địa chỉ người dùng, tên hiển thị lẫn hashtag.",
"search_popout.tips.hashtag": "hashtag",
"search_popout.tips.status": "tút",
"search_popout.tips.text": "Nội dung trả về là địa chỉ người dùng, tên hiển thị và hashtag",
"search_popout.tips.user": "người dùng",
"search_results.accounts": "Người dùng",
"search_results.hashtags": "Chủ đề",
"search_results.hashtags": "Hashtags",
"search_results.statuses": "Tút",
"search_results.statuses_fts_disabled": "Máy chủ của bạn không bật chức năng tìm kiếm tút.",
"search_results.total": "{count, number} {count, plural, one {result} other {results}}",
"search_results.total": "{count, number} {count, plural, one {kết quả} other {kết quả}}",
"status.admin_account": "Mở giao diện quản trị @{name}",
"status.admin_status": "Mở tút này trong giao diện quản trị",
"status.block": "Chặn @{name}",
"status.bookmark": "Lưu",
"status.cancel_reblog_private": "Hủy chia sẻ",
"status.cannot_reblog": "Không thể chia sẻ tút này",
"status.copy": "Sao chép URL tút",
"status.copy": "Sao chép URL",
"status.delete": "Xóa",
"status.detailed_status": "Xem chi tiết thêm",
"status.direct": "Nhắn riêng @{name}",
"status.embed": "Nhúng",
"status.favourite": "Tâm đắc",
"status.favourite": "Thích",
"status.filtered": "Bộ lọc",
"status.load_more": "Xem thêm",
"status.media_hidden": "Ảnh/video đã ẩn",
@ -391,7 +391,7 @@
"status.reblog": "Chia sẻ",
"status.reblog_private": "Chia sẻ với người viết tút gốc",
"status.reblogged_by": "{name} chia sẻ",
"status.reblogs.empty": "Chưa ai chia sẻ Tút này. Nếu có, nó sẽ xuất hiện ở đây.",
"status.reblogs.empty": "Tút này chưa có ai chia sẻ. Nếu có, nó sẽ hiển thị ở đây.",
"status.redraft": "Xóa và viết lại",
"status.remove_bookmark": "Hủy lưu",
"status.reply": "Trả lời",
@ -414,16 +414,16 @@
"tabs_bar.local_timeline": "Máy chủ của bạn",
"tabs_bar.notifications": "Thông báo",
"tabs_bar.search": "Tìm kiếm",
"time_remaining.days": "{number, plural, other {}} left",
"time_remaining.hours": "{number, plural, other {}} left",
"time_remaining.minutes": "{number, plural, other {}} left",
"time_remaining.days": "Kết thúc sau {number, plural, other {# ngày}}",
"time_remaining.hours": "Kết thúc sau {number, plural, other {# giờ}}",
"time_remaining.minutes": "Kết thúc sau {number, plural, other {# phút}}",
"time_remaining.moments": "Còn lại",
"time_remaining.seconds": "{number, plural, other {}} left",
"time_remaining.seconds": "Chỉ còn {number, plural, other {# giây}}",
"timeline_hint.remote_resource_not_displayed": "{resource} từ máy chủ khác sẽ không hiển thị.",
"timeline_hint.resources.followers": "Người theo dõi",
"timeline_hint.resources.follows": "Đang theo dõi",
"timeline_hint.resources.statuses": "Tút cũ hơn",
"trends.counter_by_accounts": "{count, plural, one {{counter} người} other {{counter} người}} đang thảo luận về vấn đề này",
"trends.counter_by_accounts": "{count, plural, one {{counter} người} other {{counter} người}} đang thảo luận",
"trends.trending_now": "Xu hướng",
"ui.beforeunload": "Bản nháp của bạn sẽ bị mất nếu bạn thoát khỏi Mastodon.",
"units.short.billion": "{count}B",
@ -436,12 +436,12 @@
"upload_form.audio_description": "Mô tả cho người thính giác kém",
"upload_form.description": "Mô tả cho người khiếm thị",
"upload_form.edit": "Biên tập",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "Đổi ảnh thumbnail",
"upload_form.undo": "Xóa bỏ",
"upload_form.video_description": "Mô tả cho người có vấn đề về thính giác",
"upload_modal.analyzing_picture": "Phân tích hình ảnh",
"upload_modal.apply": "Áp dụng",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "Chọn hình",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
"upload_modal.detect_text": "Phát hiện văn bản trong hình ảnh",
"upload_modal.edit_media": "Chỉnh sửa ảnh/video",

+ 9
- 9
app/javascript/mastodon/locales/zh-CN.json View File

@ -1,5 +1,5 @@
{
"account.account_note_header": "你对 @{name} 的备注",
"account.account_note_header": "备注",
"account.add_or_remove_from_list": "从列表中添加或删除",
"account.badges.bot": "机器人",
"account.badges.group": "群组",
@ -15,8 +15,8 @@
"account.follow": "关注",
"account.followers": "关注者",
"account.followers.empty": "目前无人关注此用户。",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.followers_counter": "被 {count, plural, one {{counter} 人} other {{counter} 人}}关注",
"account.following_counter": "正在关注 {count, plural, other {{counter} 人}}",
"account.follows.empty": "此用户目前尚未关注任何人。",
"account.follows_you": "关注了你",
"account.hide_reblogs": "隐藏来自 @{name} 的转嘟",
@ -36,14 +36,14 @@
"account.requested": "正在等待对方同意。点击以取消发送关注请求",
"account.share": "分享 @{name} 的个人资料",
"account.show_reblogs": "显示来自 @{name} 的转嘟",
"account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
"account.statuses_counter": "{count, plural, one {{counter} 条} other {{counter} 条}}嘟文",
"account.unblock": "解除屏蔽 @{name}",
"account.unblock_domain": "不再隐藏来自 {domain} 的内容",
"account.unendorse": "不在个人资料中推荐此用户",
"account.unfollow": "取消关注",
"account.unmute": "不再隐藏 @{name}",
"account.unmute_notifications": "不再隐藏来自 @{name} 的通知",
"account_note.placeholder": "没有备注",
"account_note.placeholder": "点击添加备注",
"alert.rate_limited.message": "请在{retry_time, time, medium}后重试。",
"alert.rate_limited.title": "频率受限",
"alert.unexpected.message": "发生了意外错误。",
@ -173,7 +173,7 @@
"follow_request.authorize": "同意",
"follow_request.reject": "拒绝",
"follow_requests.unlocked_explanation": "虽说你没有锁嘟,但是 {domain} 的工作人员觉得你可能想手工审核关注请求。",
"generic.saved": "Saved",
"generic.saved": "已保存",
"getting_started.developers": "开发",
"getting_started.directory": "用户目录",
"getting_started.documentation": "Mastodon文档",
@ -426,7 +426,7 @@
"timeline_hint.resources.followers": "关注者",
"timeline_hint.resources.follows": "关注",
"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} 人} other {{counter} 人}}正在讨论",
"trends.trending_now": "现在流行",
"ui.beforeunload": "如果你现在离开 Mastodon,你的草稿内容将会丢失。",
"units.short.billion": "{count}B",
@ -439,12 +439,12 @@
"upload_form.audio_description": "为听障人士添加文字描述",
"upload_form.description": "为视觉障碍人士添加文字说明",
"upload_form.edit": "编辑",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.thumbnail": "更改缩略图",
"upload_form.undo": "删除",
"upload_form.video_description": "为听障人士和视障人士添加文字描述",
"upload_modal.analyzing_picture": "分析图片…",
"upload_modal.apply": "应用",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "选择图像",
"upload_modal.description_placeholder": "天地玄黄 宇宙洪荒 日月盈仄 辰宿列张",
"upload_modal.detect_text": "从图片中检测文本",
"upload_modal.edit_media": "编辑媒体",

+ 3
- 3
app/javascript/mastodon/locales/zh-HK.json View File

@ -1,5 +1,5 @@
{
"account.account_note_header": "Note",
"account.account_note_header": "備註",
"account.add_or_remove_from_list": "從名單中新增或移除",
"account.badges.bot": "機械人",
"account.badges.group": "群組",
@ -16,7 +16,7 @@
"account.followers": "關注的人",
"account.followers.empty": "尚沒有人關注這位使用者。",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "這位使用者尚未關注任何使用者。",
"account.follows_you": "關注你",
"account.hide_reblogs": "隱藏 @{name} 的轉推",
@ -441,7 +441,7 @@
"upload_form.video_description": "簡單描述給聽障或視障人士",
"upload_modal.analyzing_picture": "正在分析圖片…",
"upload_modal.apply": "套用",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "選擇圖片",
"upload_modal.description_placeholder": "A quick brown fox 跳過那隻懶狗",
"upload_modal.detect_text": "從圖片偵測文字",
"upload_modal.edit_media": "編輯媒體",

+ 4
- 4
app/javascript/mastodon/locales/zh-TW.json View File

@ -1,5 +1,5 @@
{
"account.account_note_header": "Note",
"account.account_note_header": "備註",
"account.add_or_remove_from_list": "從名單中新增或移除",
"account.badges.bot": "機器人",
"account.badges.group": "群組",
@ -16,7 +16,7 @@
"account.followers": "關注者",
"account.followers.empty": "尚沒有人關注這位使用者。",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following_counter": "{count, plural, other {{counter} Following}}",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "這位使用者尚未關注任何使用者。",
"account.follows_you": "關注了你",
"account.hide_reblogs": "隱藏來自 @{name} 的轉推",
@ -129,7 +129,7 @@
"conversation.with": "與 {names}",
"directory.federated": "來自已知聯邦宇宙",
"directory.local": "僅來自 {domain}",
"directory.new_arrivals": "新",
"directory.new_arrivals": "新",
"directory.recently_active": "最近活躍",
"embed.instructions": "要嵌入此嘟文,請將以下程式碼貼進你的網站。",
"embed.preview": "他會顯示成這樣:",
@ -441,7 +441,7 @@
"upload_form.video_description": "簡單描述給聽障或視障人士",
"upload_modal.analyzing_picture": "正在分析圖片…",
"upload_modal.apply": "套用",
"upload_modal.choose_image": "Choose image",
"upload_modal.choose_image": "選擇圖片",
"upload_modal.description_placeholder": "A quick brown fox 跳過那隻懶狗",
"upload_modal.detect_text": "從圖片偵測文字",
"upload_modal.edit_media": "編輯媒體",

+ 0
- 7
app/javascript/styles/mastodon-light/diff.scss View File

@ -767,10 +767,3 @@ html {
.compose-form .compose-form__warning {
box-shadow: none;
}
.audio-player .video-player__controls button,
.audio-player .video-player__time-sep,
.audio-player .video-player__time-current,
.audio-player .video-player__time-total {
color: $primary-text-color;
}

+ 9
- 1
app/javascript/styles/mastodon/boost.scss
File diff suppressed because it is too large
View File


+ 4
- 8
app/javascript/styles/mastodon/components.scss View File

@ -2990,7 +2990,7 @@ a.account__display-name {
}
}
.no-reduce-motion button.icon-button i.fa-retweet {
button.icon-button i.fa-retweet {
background-position: 0 0;
height: 19px;
transition: background-position 0.9s steps(10);
@ -3004,18 +3004,14 @@ a.account__display-name {
}
.no-reduce-motion button.icon-button.active i.fa-retweet {
button.icon-button.active i.fa-retweet {
transition-duration: 0.9s;
background-position: 0 100%;
}
.reduce-motion button.icon-button i.fa-retweet {
color: $action-button-color;
transition: color 100ms ease-in;
}
.reduce-motion button.icon-button i.fa-retweet,
.reduce-motion button.icon-button.active i.fa-retweet {
color: $highlight-text-color;
transition: none;
}
.status-card {

+ 28
- 0
app/lib/activitypub/activity.rb View File

@ -157,6 +157,34 @@ class ActivityPub::Activity
fetch_remote_original_status
end
def dereference_object!
return unless @object.is_a?(String)
return if invalid_origin?(@object)
object = fetch_resource(@object, true, signed_fetch_account)
return unless object.present? && object.is_a?(Hash) && supported_context?(object)
@object = object
end
def signed_fetch_account
first_mentioned_local_account || first_local_follower
end
def first_mentioned_local_account
audience = (as_array(@json['to']) + as_array(@json['cc'])).uniq
local_usernames = audience.select { |uri| ActivityPub::TagManager.instance.local_uri?(uri) }
.map { |uri| ActivityPub::TagManager.instance.uri_to_local_id(uri, :username) }
return if local_usernames.empty?
Account.local.where(username: local_usernames).first
end
def first_local_follower
@account.followers.local.first
end
def follow_request_from_object
@follow_request ||= FollowRequest.find_by(target_account: @account, uri: object_uri) unless object_uri.nil?
end

+ 25
- 14
app/lib/activitypub/activity/announce.rb View File

@ -4,25 +4,32 @@ class ActivityPub::Activity::Announce < ActivityPub::Activity
def perform
return reject_payload! if delete_arrived_first?(@json['id']) || !related_to_local_activity?
original_status = status_from_object
RedisLock.acquire(lock_options) do |lock|
if lock.acquired?
original_status = status_from_object
return reject_payload! if original_status.nil? || !announceable?(original_status)
return reject_payload! if original_status.nil? || !announceable?(original_status)
status = Status.find_by(account: @account, reblog: original_status)
@status = Status.find_by(account: @account, reblog: original_status)
return status unless status.nil?
return @status unless @status.nil?
status = Status.create!(
account: @account,
reblog: original_status,
uri: @json['id'],
created_at: @json['published'],
override_timestamps: @options[:override_timestamps],
visibility: visibility_from_audience
)
@status = Status.create!(
account: @account,
reblog: original_status,
uri: @json['id'],
created_at: @json['published'],
override_timestamps: @options[:override_timestamps],
visibility: visibility_from_audience
)
distribute(status)
status
distribute(@status)
else
raise Mastodon::RaceConditionError
end
end
@status
end
private
@ -54,4 +61,8 @@ class ActivityPub::Activity::Announce < ActivityPub::Activity
def reblog_of_local_status?
status_from_uri(object_uri)&.account&.local?
end
def lock_options
{ redis: Redis.current, key: "announce:#{@object['id']}" }
end
end

+ 6
- 1
app/lib/activitypub/activity/block.rb View File

@ -4,7 +4,12 @@ class ActivityPub::Activity::Block < ActivityPub::Activity
def perform
target_account = account_from_uri(object_uri)
return if target_account.nil? || !target_account.local? || @account.blocking?(target_account)
return if target_account.nil? || !target_account.local?
if @account.blocking?(target_account)
@account.block_relationships.find_by(target_account: target_account).update(uri: @json['id']) if @json['id'].present?
return
end
UnfollowService.new.call(target_account, @account) if target_account.following?(@account)

+ 2
- 0
app/lib/activitypub/activity/create.rb View File

@ -2,6 +2,8 @@
class ActivityPub::Activity::Create < ActivityPub::Activity
def perform
dereference_object!
case @object['type']
when 'EncryptedMessage'
create_encrypted_message

+ 51
- 0
app/lib/activitypub/activity/undo.rb View File

@ -13,11 +13,62 @@ class ActivityPub::Activity::Undo < ActivityPub::Activity
undo_like
when 'Block'
undo_block
when nil
handle_reference
end
end
private
def handle_reference
# Some implementations do not inline the object, and as we don't have a
# global index, we have to guess what object it is.
return if object_uri.nil?
try_undo_announce || try_undo_accept || try_undo_follow || try_undo_like || try_undo_block || delete_later!(object_uri)
end
def try_undo_announce
status = Status.where.not(reblog_of_id: nil).find_by(uri: object_uri, account: @account)
if status.present?
RemoveStatusService.new.call(status)
true
else
false
end
end
def try_undo_accept
# We can't currently handle `Undo Accept` as we don't record `Accept`'s uri
false
end
def try_undo_follow
follow = @account.follow_requests.find_by(uri: object_uri) || @account.active_relationships.find_by(uri: object_uri)
if follow.present?
follow.destroy
true
else
false
end
end
def try_undo_like
# There is an index on accounts, but an account may have *many* favs, so this may be too costly
false
end
def try_undo_block
block = @account.block_relationships.find_by(uri: object_uri)
if block.present?
UnblockService.new.call(@account, block.target_account)
true
else
false
end
end
def undo_announce
return if object_uri.nil?

+ 2
- 0
app/lib/activitypub/activity/update.rb View File

@ -4,6 +4,8 @@ class ActivityPub::Activity::Update < ActivityPub::Activity
SUPPORTED_TYPES = %w(Application Group Organization Person Service).freeze
def perform
dereference_object!
if equals_or_includes_any?(@object['type'], SUPPORTED_TYPES)
update_account
elsif equals_or_includes_any?(@object['type'], %w(Question))

+ 1
- 0
app/lib/exceptions.rb View File

@ -7,6 +7,7 @@ module Mastodon
class HostValidationError < ValidationError; end
class LengthValidationError < ValidationError; end
class DimensionsValidationError < ValidationError; end
class StreamValidationError < ValidationError; end
class RaceConditionError < Error; end
class RateLimitExceededError < Error; end

+ 7
- 1
app/lib/feed_manager.rb View File

@ -124,9 +124,15 @@ class FeedManager
end
def clear_from_timeline(account, target_account)
# Clear from timeline all statuses from or mentionning target_account
timeline_key = key(:home, account.id)
timeline_status_ids = redis.zrange(timeline_key, 0, -1)
target_statuses = Status.where(id: timeline_status_ids, account: target_account)
statuses = Status.where(id: timeline_status_ids).select(:id, :reblog_of_id, :account_id).to_a
reblogged_ids = Status.where(id: statuses.map(&:reblog_of_id).compact, account: target_account).pluck(:id)
with_mentions_ids = Mention.active.where(status_id: statuses.flat_map { |s| [s.id, s.reblog_of_id] }.compact, account: target_account).pluck(:status_id)
target_statuses = statuses.filter do |status|
status.account_id == target_account.id || reblogged_ids.include?(status.reblog_of_id) || with_mentions_ids.include?(status.id) || with_mentions_ids.include?(status.reblog_of_id)
end
target_statuses.each do |status|
unpush_from_home(account, status)

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

Loading…
Cancel
Save