mirror of
https://github.com/mastodon/mastodon.git
synced 2024-12-12 06:06:22 +01:00
Merge pull request #1482 from ThibG/glitch-soc/merge-upstream
Merge upstream changes
This commit is contained in:
commit
d42e7e01dc
@ -30,7 +30,7 @@ plugins:
|
||||
channel: eslint-7
|
||||
rubocop:
|
||||
enabled: true
|
||||
channel: rubocop-0-92
|
||||
channel: rubocop-1-70
|
||||
sass-lint:
|
||||
enabled: true
|
||||
exclude_patterns:
|
||||
|
590
AUTHORS.md
590
AUTHORS.md
@ -48,12 +48,12 @@ and provided thanks to the work of the following contributors:
|
||||
* [takayamaki](https://github.com/takayamaki)
|
||||
* [masarakki](https://github.com/masarakki)
|
||||
* [ticky](https://github.com/ticky)
|
||||
* [trwnh](https://github.com/trwnh)
|
||||
* [ThisIsMissEm](https://github.com/ThisIsMissEm)
|
||||
* [hinaloe](https://github.com/hinaloe)
|
||||
* [hcmiya](https://github.com/hcmiya)
|
||||
* [stephenburgess8](https://github.com/stephenburgess8)
|
||||
* [Wonderfall](mailto:wonderfall@targaryen.house)
|
||||
* [trwnh](https://github.com/trwnh)
|
||||
* [matteoaquila](https://github.com/matteoaquila)
|
||||
* [yukimochi](https://github.com/yukimochi)
|
||||
* [palindromordnilap](https://github.com/palindromordnilap)
|
||||
@ -705,308 +705,414 @@ 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*)
|
||||
- ᏦᏁᎢᎵᏫ 😷 (KNTRO) (*Spanish, Argentina*)
|
||||
- Sveinn í Felli (sveinki) (*Icelandic*)
|
||||
- qezwan (*Persian, Sorani (Kurdish)*)
|
||||
- Hồ Nhất Duy (kantcer) (*Vietnamese*)
|
||||
- taicv (*Vietnamese*)
|
||||
- ButterflyOfFire (*Arabic; French; Kabyle*)
|
||||
- Duy (*Vietnamese*)
|
||||
- Evert Prants (*Estonian*)
|
||||
- Zoltán Gera (*Hungarian*)
|
||||
- Daniele Lira Mereb (*Portuguese, Brazilian*)
|
||||
- Kristijan Tkalec (*Slovenian*)
|
||||
- stan ionut (*Romanian*)
|
||||
- Ramdziana F Y (*Indonesian*)
|
||||
- Michal Stanke (*Czech*)
|
||||
- Xosé M. (*Galician; Spanish*)
|
||||
- 奈卜拉 (*Chinese Simplified*)
|
||||
- borys_sh (*Ukrainian*)
|
||||
- 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*)
|
||||
- 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*)
|
||||
- tolstoevsky (*Russian*)
|
||||
- Emyn-Russell Nt Nefydd (*Welsh*)
|
||||
- Aditoo17 (*Czech*)
|
||||
- Maya Minatsuki (*Japanese*)
|
||||
- ariasuni (*French; Esperanto*)
|
||||
- Roboron (*Spanish*)
|
||||
- Alessandro Levati (*Italian*)
|
||||
- Diluns (*Occitan*)
|
||||
- regulartranslator (*Portuguese, Brazilian*)
|
||||
- vishnuvaratharajan (*Tamil*)
|
||||
- Marcin Mikołajczak (*Polish*)
|
||||
- Yi-Jyun Pan (*Chinese Traditional*)
|
||||
- Zoltán Gera (gerazo) (*Hungarian*)
|
||||
- ButterflyOfFire (BoFFire) (*French, Arabic, Kabyle*)
|
||||
- adrmzz (*Sardinian*)
|
||||
- Ramdziana F Y (rafeyu) (*Indonesian*)
|
||||
- Evert Prants (IcyDiamond) (*Estonian*)
|
||||
- Daniele Lira Mereb (danilmereb) (*Portuguese, Brazilian*)
|
||||
- Xosé M. (XoseM) (*Spanish, Galician*)
|
||||
- Kristijan Tkalec (lapor) (*Slovenian*)
|
||||
- stan ionut (stanionut12) (*Romanian*)
|
||||
- Besnik_b (*Albanian*)
|
||||
- Emanuel Pina (emanuelpina) (*Portuguese*)
|
||||
- Thai Localization (thl10n) (*Thai*)
|
||||
- 奈卜拉 (nebula_moe) (*Chinese Simplified*)
|
||||
- Jeong Arm (Kjwon15) (*Japanese, Korean, Esperanto*)
|
||||
- Michal Stanke (mstanke) (*Czech*)
|
||||
- Alix Rossi (palindromordnilap) (*French, Corsican*)
|
||||
- spla (*Spanish, Catalan*)
|
||||
- Imre Kristoffer Eilertsen (DandelionSprout) (*Norwegian*)
|
||||
- Jeroen (jeroenpraat) (*Dutch*)
|
||||
- borys_sh (*Ukrainian*)
|
||||
- Miguel Mayol (mitcoes) (*Spanish, Catalan*)
|
||||
- Danial Behzadi (danialbehzadi) (*Persian*)
|
||||
- yeft (*Chinese Traditional, Chinese Traditional, Hong Kong*)
|
||||
- koyu (*German*)
|
||||
- Koala Yeung (yookoala) (*Chinese Traditional, Hong Kong*)
|
||||
- Osoitz (*Basque*)
|
||||
- Peterandre (*Norwegian, Norwegian Nynorsk*)
|
||||
- tzium (*Sardinian*)
|
||||
- Iváns (Ivans_translator) (*Galician*)
|
||||
- Sasha Sorokin (Sasha-Sorokin) (*French, Catalan, Danish, German, Greek, Hungarian, Armenian, Korean, Russian, Albanian, Swedish, Ukrainian, Vietnamese, Galician*)
|
||||
- kamee (*Armenian*)
|
||||
- tolstoevsky (*Russian*)
|
||||
- enolp (*Asturian*)
|
||||
- FédiQuébec (manuelviens) (*French*)
|
||||
- lamnatos (*Greek*)
|
||||
- Maya Minatsuki (mayaeh) (*Japanese*)
|
||||
- Masoud Abkenar (mabkenar) (*Persian*)
|
||||
- Alessandro Levati (Oct326) (*Italian*)
|
||||
- arshat (*Kazakh*)
|
||||
- Roboron (*Spanish*)
|
||||
- ariasuni (*French, Arabic, Czech, German, Greek, Hungarian, Slovenian, Ukrainian, Chinese Simplified, Portuguese, Brazilian, Persian, Norwegian Nynorsk, Esperanto, Breton, Corsican, Sardinian, Kabyle*)
|
||||
- Ali Demirtaş (alidemirtas) (*Turkish*)
|
||||
- Em St Cenydd (cancennau) (*Welsh*)
|
||||
- Marek Ľach (mareklach) (*Polish, Slovak*)
|
||||
- Muha Aliss (muhaaliss) (*Turkish*)
|
||||
- Jurica (ahjk) (*Croatian*)
|
||||
- Aditoo17 (*Czech*)
|
||||
- Diluns (*Occitan*)
|
||||
- gagik_ (*Armenian*)
|
||||
- vishnuvaratharajan (*Tamil*)
|
||||
- Marcin Mikołajczak (mkljczkk) (*Czech, Polish, Russian*)
|
||||
- regulartranslator (*Portuguese, Brazilian*)
|
||||
- Akarshan Biswas (biswasab) (*Bengali, Sanskrit*)
|
||||
- Yi-Jyun Pan (pan93412) (*Chinese Traditional*)
|
||||
- d5Ziif3K (*Ukrainian*)
|
||||
- GiorgioHerbie (*Italian*)
|
||||
- Rafael H L Moretti (Moretti) (*Portuguese, Brazilian*)
|
||||
- Saederup92 (*Danish*)
|
||||
- christalleras (*Norwegian Nynorsk*)
|
||||
- cybergene (cyber-gene) (*Japanese*)
|
||||
- Taloran (*Norwegian Nynorsk*)
|
||||
- ThibG (*French; Icelandic*)
|
||||
- Akarshan Biswas (*Bengali*)
|
||||
- ThibG (*French, Icelandic*)
|
||||
- xatier (*Chinese Traditional*)
|
||||
- otrapersona (*Spanish, Spanish, Mexico*)
|
||||
- atarashiako (*Chinese Simplified*)
|
||||
- 101010 (*Polish*)
|
||||
- 101010 (101010pl) (*Polish*)
|
||||
- silkevicious (*Italian*)
|
||||
- Bertil Hedkvist (*Swedish*)
|
||||
- cybergene (*Japanese*)
|
||||
- Floxu (fredrikdim1) (*Norwegian Nynorsk*)
|
||||
- Bertil Hedkvist (Berrahed) (*Swedish*)
|
||||
- William(ѕ)ⁿ (wmlgr) (*Spanish*)
|
||||
- norayr (*Armenian*)
|
||||
- William(ѕ)ⁿ (*Spanish*)
|
||||
- Tiago Epifânio (*Portuguese*)
|
||||
- Mentor Gashi (*Albanian*)
|
||||
- Jaz-Michael King (*Welsh*)
|
||||
- Tiago Epifânio (tfve) (*Portuguese*)
|
||||
- Ryo (DrRyo) (*Korean*)
|
||||
- Mentor Gashi (mentorgashi.com) (*Albanian*)
|
||||
- Jaz-Michael King (jazmichaelking) (*Welsh*)
|
||||
- carolinagiorno (*Portuguese, Brazilian*)
|
||||
- Roby Thomas (*Malayalam*)
|
||||
- Bharat Kumar (*Hindi*)
|
||||
- Roby Thomas (roby.thomas) (*Malayalam*)
|
||||
- Bharat Kumar (Marwari) (*Hindi*)
|
||||
- ThonyVezbe (*Breton*)
|
||||
- dkdarshan760 (*Sanskrit*)
|
||||
- Tagomago (tagomago) (*French, Spanish*)
|
||||
- tykayn (*French*)
|
||||
- axi (*Finnish*)
|
||||
- Selyan Slimane AMIRI (*Kabyle*)
|
||||
- Selyan Slimane AMIRI (slimane_AMIRI) (*Kabyle*)
|
||||
- Balázs Meskó (mesko.balazs) (*Hungarian*)
|
||||
- taoxvx (*Danish*)
|
||||
- Hrach Mkrtchyan (*Armenian*)
|
||||
- sabri (*Spanish; Spanish, Argentina*)
|
||||
- Dewi (*Breton; French*)
|
||||
- Hrach Mkrtchyan (mhrach87) (*Armenian*)
|
||||
- sabri (thetomatoisavegetable) (*Spanish, Spanish, Argentina*)
|
||||
- Dewi (Unkorneg) (*French, Breton*)
|
||||
- Coelacanthus (*Chinese Simplified*)
|
||||
- syncopams (*Chinese Simplified, Chinese Traditional, Chinese Traditional, Hong Kong*)
|
||||
- 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*)
|
||||
- Gwenn (*Breton*)
|
||||
- Ryo (*Korean*)
|
||||
- Rafael H L Moretti (*Portuguese, Brazilian*)
|
||||
- jaranta (*Finnish*)
|
||||
- gagik_ (*Armenian*)
|
||||
- Felicia (*Swedish*)
|
||||
- Jess Rafn (*Danish*)
|
||||
- Stasiek Michalski (*Polish*)
|
||||
- Sokratis Alichanidis (alichani) (*Greek*)
|
||||
- Mathias B. Vagnes (vagnes) (*Norwegian*)
|
||||
- dashersyed (*Urdu (Pakistan)*)
|
||||
- Acolyte (666noob404) (*Ukrainian*)
|
||||
- Conight Wang (xfddwhh) (*Chinese Simplified*)
|
||||
- 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*)
|
||||
- marzuquccen (*Kabyle*)
|
||||
- BurekzFinezt (*Serbian*)
|
||||
- SHeija (*Finnish*)
|
||||
- Jack R (*Spanish*)
|
||||
- andruhov (*Ukrainian; Russian*)
|
||||
- 森の子リスのミーコの大冒険 (*Japanese*)
|
||||
- るいーね (*Japanese*)
|
||||
- Sam Tux (*Bengali*)
|
||||
- Unmual (*Spanish*)
|
||||
- AW Unad (*Indonesian*)
|
||||
- Cutls (*Japanese*)
|
||||
- Ray (*Spanish*)
|
||||
- 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*)
|
||||
- Damjan Dimitrioski (gnud) (*Macedonian*)
|
||||
- PPNplus (*Thai*)
|
||||
- shioko (*Chinese Simplified*)
|
||||
- v4vachan (*Malayalam*)
|
||||
- Hakim Oubouali (zenata1) (*Standard Moroccan Tamazight*)
|
||||
- Evgeny Petrov (kondra007) (*Russian*)
|
||||
- Gwenn (Belvar) (*Breton*)
|
||||
- StanleyFrew (*French*)
|
||||
- Hayk Khachatryan (brutusromanus123) (*Armenian*)
|
||||
- jaranta (*Finnish*)
|
||||
- Felicia (midsommar) (*Swedish*)
|
||||
- Denys (dector) (*Ukrainian*)
|
||||
- Pukima (pukimaaa) (*German*)
|
||||
- Vanege (*Esperanto*)
|
||||
- Jess Rafn (therealyez) (*Danish*)
|
||||
- strubbl (*German*)
|
||||
- Stasiek Michalski (hellcp) (*Polish*)
|
||||
- dxwc (*Bengali*)
|
||||
- jmontane (*Catalan*)
|
||||
- Liboide (*Spanish*)
|
||||
- Johan Schiff (schyffel) (*Swedish*)
|
||||
- Arunmozhi (tecoholic) (*Tamil*)
|
||||
- kat (katktv) (*Russian, Ukrainian*)
|
||||
- Rikard Linde (rikardlinde) (*Swedish*)
|
||||
- oti4500 (*Hungarian, Ukrainian*)
|
||||
- Laura (selfisekai) (*Polish*)
|
||||
- Rachida S. (ZiriSut) (*Kabyle*)
|
||||
- diazepan (*Spanish, Spanish, Argentina*)
|
||||
- marzuquccen (*Kabyle*)
|
||||
- Juan José Salvador Piedra (JuanjoSalvador) (*Spanish*)
|
||||
- Tigran (tigransimonyan) (*Armenian*)
|
||||
- BurekzFinezt (*Serbian (Cyrillic)*)
|
||||
- SHeija (*Finnish*)
|
||||
- atriix (*Swedish*)
|
||||
- Jack R (isaac.97_WT) (*Spanish*)
|
||||
- antonyho (*Chinese Traditional, Hong Kong*)
|
||||
- andruhov (*Russian, Ukrainian*)
|
||||
- Aryamik Sharma (Aryamik) (*Swedish, Hindi*)
|
||||
- phena109 (*Chinese Traditional, Hong Kong*)
|
||||
- 森の子リスのミーコの大冒険 (Phroneris) (*Japanese*)
|
||||
- るいーね (ruine) (*Japanese*)
|
||||
- ahangarha (*Persian*)
|
||||
- Sam Tux (imahbub) (*Bengali*)
|
||||
- igordrozniak (*Polish*)
|
||||
- Unmual (*Spanish*)
|
||||
- Isaac Huang (caasih) (*Chinese Traditional*)
|
||||
- AW Unad (awcodify) (*Indonesian*)
|
||||
- Allen Zhong (AstroProfundis) (*Chinese Simplified*)
|
||||
- Cutls (cutls) (*Japanese*)
|
||||
- Ray (Ipsumry) (*Spanish*)
|
||||
- Falling Snowdin (tghgg) (*Vietnamese*)
|
||||
- coxde (*Chinese Simplified*)
|
||||
- Rasmus Lindroth (RasmusLindroth) (*Swedish*)
|
||||
- Andrea Lo Iacono (niels0n) (*Italian*)
|
||||
- Kinshuk Sunil (kinshuksunil) (*Hindi*)
|
||||
- Ullas Joseph (ullasjoseph) (*Malayalam*)
|
||||
- Goudarz Jafari (Goudarz) (*Persian*)
|
||||
- Yu-Pai Liu (tedliou) (*Chinese Traditional*)
|
||||
- Amarin Cemthong (acitmaster) (*Thai*)
|
||||
- juanda097 (juanda-097) (*Spanish*)
|
||||
- Anunnakey (*Macedonian*)
|
||||
- fragola (*Italian*)
|
||||
- erikstl (*Esperanto*)
|
||||
- twpenguin (*Chinese Traditional*)
|
||||
- bobchao (*Chinese Traditional*)
|
||||
- Esther (esthermations) (*Portuguese*)
|
||||
- MadeInSteak (*Finnish*)
|
||||
- Heimen Stoffels (*Dutch*)
|
||||
- Rajarshi Guha (*Bengali*)
|
||||
- Andrew (*Romanian*)
|
||||
- Goudarz Jafari (*Persian*)
|
||||
- Heimen Stoffels (vistausss) (*Dutch*)
|
||||
- Rajarshi Guha (rajarshiguha) (*Bengali*)
|
||||
- Andrew (iAndrew3) (*Romanian*)
|
||||
- Gopal Sharma (gopalvirat) (*Hindi*)
|
||||
- arethsu (*Swedish*)
|
||||
- Carlos Solís (*Esperanto*)
|
||||
- Parthan S Ramanujam (*Tamil*)
|
||||
- Ali Demirtaş (*Turkish*)
|
||||
- Kasper Nymand (*Danish*)
|
||||
- TS (*Finnish*)
|
||||
- Tofiq Abdula (Xwla) (*Sorani (Kurdish)*)
|
||||
- Carlos Solís (csolisr) (*Esperanto*)
|
||||
- Parthan S Ramanujam (parthan) (*Tamil*)
|
||||
- Kasper Nymand (KasperNymand) (*Danish*)
|
||||
- TS (morte) (*Finnish*)
|
||||
- subram (*Turkish*)
|
||||
- SensDeViata (*Ukrainian*)
|
||||
- Ptrcmd (ptrcmd) (*Chinese Traditional*)
|
||||
- SergioFMiranda (*Portuguese, Brazilian*)
|
||||
- OctolinGamer (*Portuguese, Brazilian*)
|
||||
- Scvoet (scvoet) (*Chinese Simplified*)
|
||||
- hiroTS (*Chinese Traditional*)
|
||||
- johne32rus23 (*Russian*)
|
||||
- AzureNya (*Chinese Simplified*)
|
||||
- Ram varma (*Tamil*)
|
||||
- 北䑓如法 (*Japanese*)
|
||||
- OctolinGamer (octolingamer) (*Portuguese, Brazilian*)
|
||||
- Ram varma (ram4varma) (*Tamil*)
|
||||
- Hexandcube (hexandcube) (*Polish*)
|
||||
- 北䑓如法 (Nyoho) (*Japanese*)
|
||||
- frumble (*German*)
|
||||
- kekkepikkuni (*Tamil*)
|
||||
- Neo_Chen (NeoChen1024) (*Chinese Traditional*)
|
||||
- oorsutri (*Tamil*)
|
||||
- Nithin V (*Tamil*)
|
||||
- Miro Rauhala (*Finnish*)
|
||||
- Rhys Harrison (rhedders) (*Esperanto*)
|
||||
- Nithin V (Nithin896) (*Tamil*)
|
||||
- Miro Rauhala (mirorauhala) (*Finnish*)
|
||||
- diorama (*Italian*)
|
||||
- Rhys Harrison (*Esperanto*)
|
||||
- Guillaume Turchini (*French*)
|
||||
- Ganesh D (*Marathi*)
|
||||
- AlexKoala (alexkoala) (*Korean*)
|
||||
- Aswin C (officialcjunior) (*Malayalam*)
|
||||
- Guillaume Turchini (orion78fr) (*French*)
|
||||
- Ganesh D (auntgd) (*Marathi*)
|
||||
- dragnucs2 (*Arabic*)
|
||||
- Pedro Henrique (*Portuguese, Brazilian*)
|
||||
- Tejas Harad (*Marathi*)
|
||||
- Vasanthan (*Tamil*)
|
||||
- 硫酸鶏 (*Japanese*)
|
||||
- Ryan Ho (koungho) (*Chinese Traditional*)
|
||||
- Pedro Henrique (exploronauta) (*Portuguese, Brazilian*)
|
||||
- Tejas Harad (h_tejas) (*Marathi*)
|
||||
- Vasanthan (vasanthan) (*Tamil*)
|
||||
- 硫酸鶏 (acid_chicken) (*Japanese*)
|
||||
- clarmin b8 (clarminb8) (*Sorani (Kurdish)*)
|
||||
- manukp (*Malayalam*)
|
||||
- psymyn (*Hebrew*)
|
||||
- earth dweller (*Marathi*)
|
||||
- meijerivoi (*Finnish*)
|
||||
- earth dweller (sanethoughtyt) (*Marathi*)
|
||||
- meijerivoi (toilet) (*Finnish*)
|
||||
- essaar (*Tamil*)
|
||||
- serubeena (*Swedish*)
|
||||
- Karol Kosek (krkkPL) (*Polish*)
|
||||
- Rintan (*Japanese*)
|
||||
- Karol Kosek (*Polish*)
|
||||
- valarivan (*Tamil*)
|
||||
- Sebastián Andil (*Slovak*)
|
||||
- v4vachan (*Malayalam*)
|
||||
- KEINOS (*Japanese*)
|
||||
- Ivan T. (*Chinese Traditional, Hong Kong*)
|
||||
- Hernik (hernik27) (*Czech*)
|
||||
- Sebastián Andil (Selrond) (*Slovak*)
|
||||
- Hinaloe (hinaloe) (*Japanese*)
|
||||
- filippodb (*Italian*)
|
||||
- Balázs Meskó (*Hungarian*)
|
||||
- KEINOS (*Japanese*)
|
||||
- Balázs Meskó (meskobalazs) (*Hungarian*)
|
||||
- Bottle (suryasalem2010) (*Tamil*)
|
||||
- JzshAC (*Chinese Simplified*)
|
||||
- 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*)
|
||||
- Wrya ali (John12) (*Sorani (Kurdish)*)
|
||||
- Khóo (khootiatling) (*Chinese Traditional*)
|
||||
- Steven Tappert (sammy8806) (*German*)
|
||||
- Antillion (antillion99) (*Spanish*)
|
||||
- Pukima (Pukimaa) (*German*)
|
||||
- Reg3xp (*Persian*)
|
||||
- AlexKoala (*Korean*)
|
||||
- hiphipvargas (*Portuguese*)
|
||||
- gowthamanb (*Tamil*)
|
||||
- Ch. (sftblw) (*Korean*)
|
||||
- Jeff Huang (s8321414) (*Chinese Traditional*)
|
||||
- Arttu Ylhävuori (arttu.ylhavuori) (*Finnish*)
|
||||
- tctovsli (*Norwegian Nynorsk*)
|
||||
- Timo Tijhof (Krinkle) (*Dutch*)
|
||||
- Yamagishi Kazutoshi (ykzts) (*Japanese, Icelandic, Sorani (Kurdish)*)
|
||||
- vjasiegd (*Polish*)
|
||||
- SamitiMed (samiti3d) (*Thai*)
|
||||
- Rekan Adl (rekan-adl1) (*Sorani (Kurdish)*)
|
||||
- umelard (*Hebrew*)
|
||||
- Antara2Cinta (Se7enTime) (*Indonesian*)
|
||||
- VSx86 (*Russian*)
|
||||
- Daniel Dimitrov (*Bulgarian*)
|
||||
- mynameismonkey (*Welsh*)
|
||||
- Daniel Dimitrov (danny-dimitrov) (*Bulgarian*)
|
||||
- parnikkapore (*Thai*)
|
||||
- Mo_der Steven (*Chinese Simplified*)
|
||||
- mynameismonkey (*Welsh*)
|
||||
- Sherwan Othman (sherwanothman11) (*Sorani (Kurdish)*)
|
||||
- Yassine Aït-El-Mouden (yaitelmouden) (*Standard Moroccan Tamazight*)
|
||||
- SKELET (*Danish*)
|
||||
- Renato "Lond" Cerqueira (*Portuguese, Brazilian*)
|
||||
- Mo_der Steven (SakuraPuare) (*Chinese Simplified*)
|
||||
- Fei Yang (Fei1Yang) (*Chinese Traditional*)
|
||||
- ALEM FARID (faridatcemlulaqbayli) (*Kabyle*)
|
||||
- enipra (*Armenian*)
|
||||
- musix (*Persian*)
|
||||
- ギャラ (*Chinese Simplified; Japanese*)
|
||||
- ALEM FARID (*Kabyle*)
|
||||
- Renato "Lond" Cerqueira (renatolond) (*Portuguese, Brazilian*)
|
||||
- ギャラ (gyara) (*Japanese, Chinese Simplified*)
|
||||
- Hougo (hougo) (*French*)
|
||||
- ybardapurkar (*Marathi*)
|
||||
- Adrián Lattes (*Spanish*)
|
||||
- Adrián Lattes (haztecaso) (*Spanish*)
|
||||
- TracyJacks (*Chinese Simplified*)
|
||||
- rasheedgm (*Kannada*)
|
||||
- omquylzu (*Latvian*)
|
||||
- Belkacem Mohammed (*Kabyle*)
|
||||
- Navjot Singh (*Hindi*)
|
||||
- Ozai (*German*)
|
||||
- Sahak Petrosyan (*Armenian*)
|
||||
- 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*)
|
||||
- mecqor labi (mecqorlabi) (*Persian*)
|
||||
- Belkacem Mohammed (belkacem77) (*Kabyle*)
|
||||
- Navjot Singh (nspeaks) (*Hindi*)
|
||||
- omquylzu (*Latvian*)
|
||||
- Ozai (*German*)
|
||||
- Sahak Petrosyan (petrosyan) (*Armenian*)
|
||||
- siamano (*Thai, Esperanto*)
|
||||
- Viorel-Cătălin Răpițeanu (rapiteanu) (*Romanian*)
|
||||
- Siddhartha Sarathi Basu (quinoa_biryani) (*Bengali*)
|
||||
- Pachara Chantawong (pachara2202) (*Thai*)
|
||||
- mkljczk (*Polish*)
|
||||
- Skew (noan.perrot) (*French*)
|
||||
- Zijian Zhao (jobs2512821228) (*Chinese Simplified*)
|
||||
- turtle836 (*German*)
|
||||
- Guru Prasath Anandapadmanaban (guruprasath) (*Tamil*)
|
||||
- Lamin (laminne) (*Japanese*)
|
||||
- Marcepanek_ (thekingmarcepan) (*Polish*)
|
||||
- Feruz Oripov (FeruzOripov) (*Russian*)
|
||||
- Yann Aguettaz (yann-a) (*French*)
|
||||
- Mick Onio (xgc.redes) (*Asturian*)
|
||||
- Tianqi Zhang (tina.zhang040609) (*Chinese Simplified*)
|
||||
- Malik Mann (dermalikmann) (*German*)
|
||||
- dadosch (*German*)
|
||||
- r3dsp1 (*Chinese Traditional, Hong Kong*)
|
||||
- Tianqi Zhang (*Chinese Simplified*)
|
||||
- Padraic Calpin (*Slovenian*)
|
||||
- cenegd (*Chinese Simplified*)
|
||||
- padulafacundo (*Spanish*)
|
||||
- hg6 (*Hindi*)
|
||||
- Orlando Murcio (Atos20) (*Spanish, Mexico*)
|
||||
- piupiupiudiu (*Chinese Simplified*)
|
||||
- Hugh Liu (*Chinese Simplified*)
|
||||
- Rakino (*Chinese Simplified*)
|
||||
- Jothipazhani Nagarajan (*Tamil*)
|
||||
- Miquel Sabaté Solà (*Catalan*)
|
||||
- shdy (*German*)
|
||||
- Padraic Calpin (padraic-padraic) (*Slovenian*)
|
||||
- Ильзира Рахматуллина (rahmatullinailzira53) (*Tatar*)
|
||||
- cenegd (*Chinese Simplified*)
|
||||
- Hugh Liu (youloveonlymeh) (*Chinese Simplified*)
|
||||
- Pixelcode (realpixelcode) (*German*)
|
||||
- Yogesh K S (yogi) (*Kannada*)
|
||||
- Rakino (rakino) (*Chinese Simplified*)
|
||||
- Miquel Sabaté Solà (mssola) (*Catalan*)
|
||||
- AmazighNM (*Kabyle*)
|
||||
- Solid Rhino (*Dutch*)
|
||||
- Jothipazhani Nagarajan (jothipazhani.n) (*Tamil*)
|
||||
- Clash Clans (KURD12345) (*Sorani (Kurdish)*)
|
||||
- hallomaurits (*Dutch*)
|
||||
- alnd hezh (alndhezh) (*Sorani (Kurdish)*)
|
||||
- Solid Rhino (SolidRhino) (*Dutch*)
|
||||
- k_taka (peaceroad) (*Japanese*)
|
||||
- Hallo Abdullah (hallo_hamza12) (*Sorani (Kurdish)*)
|
||||
- hussama (*Portuguese, Brazilian*)
|
||||
- shafouz (*Portuguese, Brazilian*)
|
||||
- Tagada (*French*)
|
||||
- Tom_ (*Czech*)
|
||||
- SnDer (*Dutch*)
|
||||
- Sébastien Feugère (smonff) (*French*)
|
||||
- 林水溶 (shuiRong) (*Chinese Simplified*)
|
||||
- eichkat3r (*German*)
|
||||
- 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*)
|
||||
- SnDer (*Dutch*)
|
||||
- PifyZ (*French*)
|
||||
- Tom_ (*Czech*)
|
||||
- Tagada (Tagadda) (*French*)
|
||||
- shafouz (*Portuguese, Brazilian*)
|
||||
- Kahina Mess (K_hina) (*Kabyle*)
|
||||
- Nathaël Noguès (NatNgs) (*French*)
|
||||
- Kk (kishorkumara3) (*Kannada*)
|
||||
- Swati Sani (swatisani) (*Urdu (Pakistan)*)
|
||||
- Shrinivasan T (tshrinivasan) (*Tamil*)
|
||||
- さっかりんにーさん (saccharin23) (*Japanese*)
|
||||
- 夜楓Yoka (Yoka2627) (*Chinese Simplified*)
|
||||
- Daniel M. (daniconil) (*Catalan*)
|
||||
- Vikatakavi (*Kannada*)
|
||||
- prabhjot (*Hindi*)
|
||||
- twpenguin (*Chinese Traditional*)
|
||||
- SusVersiva (*Catalan*)
|
||||
- Tradjincal (tradjincal) (*French*)
|
||||
- pullopen (*Chinese Simplified*)
|
||||
- Robin van der Vliet (RobinvanderVliet) (*Esperanto*)
|
||||
- Zinkokooo (*Basque*)
|
||||
- mmokhi (*Persian*)
|
||||
- Livingston Samuel (livingston) (*Tamil*)
|
||||
- prabhjot (*Hindi*)
|
||||
- sergioaraujo1 (*Portuguese, Brazilian*)
|
||||
- Livingston Samuel (*Tamil*)
|
||||
- CyberAmoeba (pseudoobscura) (*Chinese Simplified*)
|
||||
- tsundoker (*Malayalam*)
|
||||
- skaaarrr (*German*)
|
||||
- 夜楓Yoka (*Chinese Simplified*)
|
||||
- kiwi0 (*Italian*)
|
||||
- Ricardo Colin (rysard) (*Spanish*)
|
||||
- mkljczk (mykylyjczyk) (*Polish*)
|
||||
- Philipp Fischbeck (PFischbeck) (*German*)
|
||||
- fedot (*Russian*)
|
||||
- mkljczk (*Polish*)
|
||||
- igordrozniak (*Polish*)
|
||||
- Ricardo Colin (*Spanish*)
|
||||
- Esther (*Portuguese*)
|
||||
- Paz Galindo (*Spanish*)
|
||||
- Philipp Fischbeck (*German*)
|
||||
- Paz Galindo (paz.almendra.g) (*Spanish*)
|
||||
- GaggiX (*Italian*)
|
||||
- ralozkolya (*Georgian*)
|
||||
- JackXu (*Chinese Simplified*)
|
||||
- Allen Zhong (*Chinese Simplified*)
|
||||
- Zoé Bőle (*German*)
|
||||
- Lukas Fülling (*German*)
|
||||
- Albatroz Jeremias (*Portuguese*)
|
||||
- Samir Tighzert (*Kabyle*)
|
||||
- Nocta (*French*)
|
||||
- Anoop (*Malayalam*)
|
||||
- Zoé Bőle (zoe1337) (*German*)
|
||||
- Lukas Fülling (lfuelling) (*German*)
|
||||
- JackXu (Merman-Jack) (*Chinese Simplified*)
|
||||
- Aymeric (AymBroussier) (*French*)
|
||||
- Anoop (anoopp) (*Malayalam*)
|
||||
- pezcurrel (*Italian*)
|
||||
- Dremski (*Bulgarian*)
|
||||
- Aymeric (*French*)
|
||||
- tamaina (*Japanese*)
|
||||
- Doug (*Portuguese, Brazilian*)
|
||||
- Matias Lavik (*Norwegian Nynorsk*)
|
||||
- Fleva (*Sardinian*)
|
||||
- Xurxo Guerra (xguerrap) (*Galician*)
|
||||
- mashirozx (*Chinese Simplified*)
|
||||
- Albatroz Jeremias (albjeremias) (*Portuguese*)
|
||||
- Samir Tighzert (samir_t7) (*Kabyle*)
|
||||
- Apple (blackteaovo) (*Chinese Simplified*)
|
||||
- Nocta (*French*)
|
||||
- OpenAlgeria (*Arabic*)
|
||||
- koppe-pan (*Japanese*)
|
||||
- Amith Raj Shetty (*Kannada*)
|
||||
- tamaina (*Japanese*)
|
||||
- abidin toumi (Zet24) (*Arabic*)
|
||||
- xpac1985 (xpac) (*German*)
|
||||
- Kaede (kaedech) (*Japanese*)
|
||||
- ÀŘǾŚ PÀŚĦÀÍ (arospashai) (*Sorani (Kurdish)*)
|
||||
- Matias Lavik (matiaslavik) (*Norwegian Nynorsk*)
|
||||
- smedvedev (*Russian*)
|
||||
- Trond Boksasp (*Norwegian*)
|
||||
- mikel (mikelalas) (*Spanish*)
|
||||
- Doug (douglasalvespe) (*Portuguese, Brazilian*)
|
||||
- Trond Boksasp (boksasp) (*Norwegian*)
|
||||
- Fleva (*Sardinian*)
|
||||
- Mohammad Adnan Mahmood (adnanmig) (*Arabic*)
|
||||
- Sais Lakshmanan (Saislakshmanan) (*Tamil*)
|
||||
- Amith Raj Shetty (amithraj1989) (*Kannada*)
|
||||
- random_person (*Spanish*)
|
||||
- Sais Lakshmanan (*Tamil*)
|
||||
- mikel (*Spanish*)
|
||||
- Mohammad Adnan Mahmood (*Arabic*)
|
||||
- djoerd (*Dutch*)
|
||||
- Baban Abdulrahman (baban.abdulrehman) (*Sorani (Kurdish)*)
|
||||
- ebrezhoneg (*Breton*)
|
||||
- dashty (*Sorani (Kurdish)*)
|
||||
- Salh_haji6 (*Sorani (Kurdish)*)
|
||||
- Amir Kurdo (kuraking202) (*Sorani (Kurdish)*)
|
||||
- おさ (osapon) (*Japanese*)
|
||||
- Ranj A Abdulqadir (RanjAhmed) (*Sorani (Kurdish)*)
|
||||
- umonaca (*Chinese Simplified*)
|
||||
- Bartek Fijałkowski (brateq) (*Polish*)
|
||||
- tateisu (*Japanese*)
|
||||
- centumix (*Japanese*)
|
||||
- Jari Ronkainen (ronchaine) (*Finnish*)
|
||||
- Savarín Electrográfico Marmota Intergalactica (herrero.maty) (*Spanish*)
|
||||
- Torsten Högel (torstenhoegel) (*German*)
|
||||
- Abijeet Patro (Abijeet) (*Basque*)
|
||||
- Ács Zoltán (acszoltan111) (*Hungarian*)
|
||||
- Benjamin Cobb (benjamincobb) (*German*)
|
||||
- waweic (*German*)
|
||||
- Aries (orlea) (*Japanese*)
|
||||
- silverscat_3 (SilversCat) (*Japanese*)
|
||||
- kavitha129 (*Tamil*)
|
||||
- dcapillae (*Spanish*)
|
||||
- SamOak (*Portuguese, Brazilian*)
|
||||
- capiscuas (*Spanish*)
|
||||
- NeverMine17 (*Russian*)
|
||||
- Nithya Mary (nithyamary25) (*Tamil*)
|
||||
- t_aus_m (*German*)
|
||||
- dobrado (*Portuguese, Brazilian*)
|
||||
- Hannah (Aniqueper1) (*Chinese Simplified*)
|
||||
- Jiniux (*Italian*)
|
||||
- 于晚霞 (xissshawww) (*Chinese Simplified*)
|
||||
|
16
CHANGELOG.md
16
CHANGELOG.md
@ -3,7 +3,7 @@ Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## Unreleased
|
||||
## [3.3.0] - 2020-12-27
|
||||
### Added
|
||||
|
||||
- **Add hotkeys for audio/video control in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/15158), [Gargron](https://github.com/tootsuite/mastodon/pull/15198))
|
||||
@ -81,11 +81,11 @@ All notable changes to this project will be documented in this file.
|
||||
|
||||
### Changed
|
||||
|
||||
- **Change media modals look in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/15217), [Gargron](https://github.com/tootsuite/mastodon/pull/15221), [Gargron](https://github.com/tootsuite/mastodon/pull/15284), [Gargron](https://github.com/tootsuite/mastodon/pull/15283), [Kjwon15](https://github.com/tootsuite/mastodon/pull/15308), [noellabo](https://github.com/tootsuite/mastodon/pull/15305))
|
||||
- **Change media modals look in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/15217), [Gargron](https://github.com/tootsuite/mastodon/pull/15221), [Gargron](https://github.com/tootsuite/mastodon/pull/15284), [Gargron](https://github.com/tootsuite/mastodon/pull/15283), [Kjwon15](https://github.com/tootsuite/mastodon/pull/15308), [noellabo](https://github.com/tootsuite/mastodon/pull/15305), [ThibG](https://github.com/tootsuite/mastodon/pull/15417))
|
||||
- Background of the overlay matches the color of the image
|
||||
- Action bar to interact with or open the toot from the modal
|
||||
- Change order of announcements in admin UI to be newest-first ([ThibG](https://github.com/tootsuite/mastodon/pull/15091))
|
||||
- **Change account suspensions to be reversible by default** ([Gargron](https://github.com/tootsuite/mastodon/pull/14726), [ThibG](https://github.com/tootsuite/mastodon/pull/15152), [ThibG](https://github.com/tootsuite/mastodon/pull/15106), [ThibG](https://github.com/tootsuite/mastodon/pull/15100), [ThibG](https://github.com/tootsuite/mastodon/pull/15099), [noellabo](https://github.com/tootsuite/mastodon/pull/14855), [ThibG](https://github.com/tootsuite/mastodon/pull/15380))
|
||||
- **Change account suspensions to be reversible by default** ([Gargron](https://github.com/tootsuite/mastodon/pull/14726), [ThibG](https://github.com/tootsuite/mastodon/pull/15152), [ThibG](https://github.com/tootsuite/mastodon/pull/15106), [ThibG](https://github.com/tootsuite/mastodon/pull/15100), [ThibG](https://github.com/tootsuite/mastodon/pull/15099), [noellabo](https://github.com/tootsuite/mastodon/pull/14855), [ThibG](https://github.com/tootsuite/mastodon/pull/15380), [Gargron](https://github.com/tootsuite/mastodon/pull/15420), [Gargron](https://github.com/tootsuite/mastodon/pull/15414))
|
||||
- Suspensions no longer equal deletions
|
||||
- A suspended account can be unsuspended with minimal consequences for 30 days
|
||||
- Immediate deletion of data is still available as an explicit option
|
||||
@ -123,7 +123,7 @@ All notable changes to this project will be documented in this file.
|
||||
### Fixed
|
||||
|
||||
- Fix layout on about page when contact account has a long username ([ThibG](https://github.com/tootsuite/mastodon/pull/15357))
|
||||
- Fix follow limit preventing re-following of a moved account ([Gargron](https://github.com/tootsuite/mastodon/pull/14207))
|
||||
- Fix follow limit preventing re-following of a moved account ([Gargron](https://github.com/tootsuite/mastodon/pull/14207), [ThibG](https://github.com/tootsuite/mastodon/pull/15384))
|
||||
- **Fix deletes not reaching every server that interacted with toot** ([Gargron](https://github.com/tootsuite/mastodon/pull/15200))
|
||||
- Previously, delete of a toot would be primarily sent to the followers of its author, people mentioned in the toot, and people who reblogged the toot
|
||||
- Now, additionally, it is ensured that it is sent to people who replied to it, favourited it, and to the person it replies to even if that person is not mentioned
|
||||
@ -163,7 +163,7 @@ All notable changes to this project will be documented in this file.
|
||||
- Fix inefficiency when fetching bookmarks ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14674))
|
||||
- Fix inefficiency when fetching favourites ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14673))
|
||||
- Fix inefficiency when fetching media-only account timeline ([akihikodaki](https://github.com/tootsuite/mastodon/pull/14675))
|
||||
- Fix inefficieny when deleting accounts ([Gargron](https://github.com/tootsuite/mastodon/pull/15387), [ThibG](https://github.com/tootsuite/mastodon/pull/15409), [ThibG](https://github.com/tootsuite/mastodon/pull/15407), [ThibG](https://github.com/tootsuite/mastodon/pull/15408), [ThibG](https://github.com/tootsuite/mastodon/pull/15402))
|
||||
- Fix inefficieny when deleting accounts ([Gargron](https://github.com/tootsuite/mastodon/pull/15387), [ThibG](https://github.com/tootsuite/mastodon/pull/15409), [ThibG](https://github.com/tootsuite/mastodon/pull/15407), [ThibG](https://github.com/tootsuite/mastodon/pull/15408), [ThibG](https://github.com/tootsuite/mastodon/pull/15402), [ThibG](https://github.com/tootsuite/mastodon/pull/15416), [Gargron](https://github.com/tootsuite/mastodon/pull/15421))
|
||||
- Fix redundant query when processing batch actions on custom emojis ([niwatori24](https://github.com/tootsuite/mastodon/pull/14534))
|
||||
- Fix slow distinct queries where grouped queries are faster ([Gargron](https://github.com/tootsuite/mastodon/pull/15287))
|
||||
- Fix performance on instances list in admin UI ([Gargron](https://github.com/tootsuite/mastodon/pull/15282))
|
||||
@ -387,14 +387,14 @@ All notable changes to this project will be documented in this file.
|
||||
- Only then proceed to start removing their data (slow)
|
||||
- Clear out media attachments in a separate worker (slow)
|
||||
|
||||
## [v3.1.5] - 2020-07-07
|
||||
## [3.1.5] - 2020-07-07
|
||||
### Security
|
||||
|
||||
- Fix media attachment enumeration ([ThibG](https://github.com/tootsuite/mastodon/pull/14254))
|
||||
- Change rate limits for various paths ([Gargron](https://github.com/tootsuite/mastodon/pull/14253))
|
||||
- Fix other sessions not being logged out on password change ([Gargron](https://github.com/tootsuite/mastodon/pull/14252))
|
||||
|
||||
## [v3.1.4] - 2020-05-14
|
||||
## [3.1.4] - 2020-05-14
|
||||
### Added
|
||||
|
||||
- Add `vi` to available locales ([taicv](https://github.com/tootsuite/mastodon/pull/13542))
|
||||
@ -461,7 +461,7 @@ All notable changes to this project will be documented in this file.
|
||||
- For apps that self-register on behalf of every individual user (such as most mobile apps), this is a non-issue
|
||||
- The issue only affects developers of apps who are shared between multiple users, such as server-side apps like cross-posters
|
||||
|
||||
## [v3.1.3] - 2020-04-05
|
||||
## [3.1.3] - 2020-04-05
|
||||
### Added
|
||||
|
||||
- Add ability to filter audit log in admin UI ([Gargron](https://github.com/tootsuite/mastodon/pull/13381))
|
||||
|
30
Gemfile
30
Gemfile
@ -5,7 +5,7 @@ ruby '>= 2.5.0', '< 3.0.0'
|
||||
|
||||
gem 'pkg-config', '~> 1.4'
|
||||
|
||||
gem 'puma', '~> 5.0'
|
||||
gem 'puma', '~> 5.1'
|
||||
gem 'rails', '~> 5.2.4.4'
|
||||
gem 'sprockets', '~> 3.7.2'
|
||||
gem 'thor', '~> 1.0'
|
||||
@ -17,7 +17,7 @@ gem 'makara', '~> 0.4'
|
||||
gem 'pghero', '~> 2.7'
|
||||
gem 'dotenv-rails', '~> 2.7'
|
||||
|
||||
gem 'aws-sdk-s3', '~> 1.85', require: false
|
||||
gem 'aws-sdk-s3', '~> 1.87', require: false
|
||||
gem 'fog-core', '<= 2.1.0'
|
||||
gem 'fog-openstack', '~> 0.3', require: false
|
||||
gem 'paperclip', '~> 6.0'
|
||||
@ -32,7 +32,7 @@ gem 'browser'
|
||||
gem 'charlock_holmes', '~> 0.7.7'
|
||||
gem 'iso-639'
|
||||
gem 'chewy', '~> 5.1'
|
||||
gem 'cld3', '~> 3.3.0'
|
||||
gem 'cld3', '~> 3.4.1'
|
||||
gem 'devise', '~> 4.7'
|
||||
gem 'devise-two-factor', '~> 3.1'
|
||||
|
||||
@ -40,7 +40,7 @@ group :pam_authentication, optional: true do
|
||||
gem 'devise_pam_authenticatable2', '~> 9.2'
|
||||
end
|
||||
|
||||
gem 'net-ldap', '~> 0.16'
|
||||
gem 'net-ldap', '~> 0.17'
|
||||
gem 'omniauth-cas', '~> 2.0'
|
||||
gem 'omniauth-saml', '~> 1.10'
|
||||
gem 'omniauth', '~> 1.9'
|
||||
@ -64,10 +64,10 @@ gem 'kaminari', '~> 1.2'
|
||||
gem 'link_header', '~> 0.0'
|
||||
gem 'mime-types', '~> 3.3.1', require: 'mime/types/columnar'
|
||||
gem 'nilsimsa', git: 'https://github.com/witgo/nilsimsa', ref: 'fd184883048b922b176939f851338d0a4971a532'
|
||||
gem 'nokogiri', '~> 1.10'
|
||||
gem 'nokogiri', '~> 1.11'
|
||||
gem 'nsa', '~> 0.2'
|
||||
gem 'oj', '~> 3.10'
|
||||
gem 'ox', '~> 2.13'
|
||||
gem 'ox', '~> 2.14'
|
||||
gem 'parslet'
|
||||
gem 'parallel', '~> 1.20'
|
||||
gem 'posix-spawn'
|
||||
@ -79,8 +79,8 @@ gem 'rails-i18n', '~> 5.1'
|
||||
gem 'rails-settings-cached', '~> 0.6'
|
||||
gem 'redis', '~> 4.2', require: ['redis', 'redis/connection/hiredis']
|
||||
gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock'
|
||||
gem 'rqrcode', '~> 1.1'
|
||||
gem 'ruby-progressbar', '~> 1.10'
|
||||
gem 'rqrcode', '~> 1.2'
|
||||
gem 'ruby-progressbar', '~> 1.11'
|
||||
gem 'sanitize', '~> 5.2'
|
||||
gem 'scenic', '~> 1.5'
|
||||
gem 'sidekiq', '~> 6.1'
|
||||
@ -92,7 +92,7 @@ gem 'simple_form', '~> 5.0'
|
||||
gem 'sprockets-rails', '~> 3.2', require: 'sprockets/railtie'
|
||||
gem 'stoplight', '~> 2.2.1'
|
||||
gem 'strong_migrations', '~> 0.7'
|
||||
gem 'tty-prompt', '~> 0.22', require: false
|
||||
gem 'tty-prompt', '~> 0.23', require: false
|
||||
gem 'twitter-text', '~> 1.14'
|
||||
gem 'tzinfo-data', '~> 1.2020'
|
||||
gem 'webpacker', '~> 5.2'
|
||||
@ -119,14 +119,14 @@ group :production, :test do
|
||||
end
|
||||
|
||||
group :test do
|
||||
gem 'capybara', '~> 3.33'
|
||||
gem 'capybara', '~> 3.34'
|
||||
gem 'climate_control', '~> 0.2'
|
||||
gem 'faker', '~> 2.14'
|
||||
gem 'faker', '~> 2.15'
|
||||
gem 'microformats', '~> 4.2'
|
||||
gem 'rails-controller-testing', '~> 1.0'
|
||||
gem 'rspec-sidekiq', '~> 3.1'
|
||||
gem 'simplecov', '~> 0.19', require: false
|
||||
gem 'webmock', '~> 3.10'
|
||||
gem 'simplecov', '~> 0.21', require: false
|
||||
gem 'webmock', '~> 3.11'
|
||||
gem 'parallel_tests', '~> 3.4'
|
||||
gem 'rspec_junit_formatter', '~> 0.4'
|
||||
end
|
||||
@ -140,8 +140,8 @@ group :development do
|
||||
gem 'letter_opener', '~> 1.7'
|
||||
gem 'letter_opener_web', '~> 1.4'
|
||||
gem 'memory_profiler'
|
||||
gem 'rubocop', '~> 1.3', require: false
|
||||
gem 'rubocop-rails', '~> 2.8', require: false
|
||||
gem 'rubocop', '~> 1.7', require: false
|
||||
gem 'rubocop-rails', '~> 2.9', require: false
|
||||
gem 'brakeman', '~> 4.10', require: false
|
||||
gem 'bundler-audit', '~> 0.7', require: false
|
||||
|
||||
|
167
Gemfile.lock
167
Gemfile.lock
@ -39,9 +39,9 @@ GEM
|
||||
erubi (~> 1.4)
|
||||
rails-dom-testing (~> 2.0)
|
||||
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
||||
active_model_serializers (0.10.10)
|
||||
actionpack (>= 4.1, < 6.1)
|
||||
activemodel (>= 4.1, < 6.1)
|
||||
active_model_serializers (0.10.12)
|
||||
actionpack (>= 4.1, < 6.2)
|
||||
activemodel (>= 4.1, < 6.2)
|
||||
case_transform (>= 0.2)
|
||||
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
||||
active_record_query_trace (1.8)
|
||||
@ -79,16 +79,16 @@ GEM
|
||||
cocaine (~> 0.5.3)
|
||||
awrence (1.1.1)
|
||||
aws-eventstream (1.1.0)
|
||||
aws-partitions (1.397.0)
|
||||
aws-sdk-core (3.109.3)
|
||||
aws-partitions (1.413.0)
|
||||
aws-sdk-core (3.110.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
aws-partitions (~> 1, >= 1.239.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
jmespath (~> 1.0)
|
||||
aws-sdk-kms (1.39.0)
|
||||
aws-sdk-kms (1.40.0)
|
||||
aws-sdk-core (~> 3, >= 3.109.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-s3 (1.85.0)
|
||||
aws-sdk-s3 (1.87.0)
|
||||
aws-sdk-core (~> 3, >= 3.109.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.1)
|
||||
@ -106,10 +106,10 @@ GEM
|
||||
ffi (~> 1.10.0)
|
||||
bootsnap (1.5.1)
|
||||
msgpack (~> 1.0)
|
||||
brakeman (4.10.0)
|
||||
brakeman (4.10.1)
|
||||
browser (4.2.0)
|
||||
builder (3.2.4)
|
||||
bullet (6.1.0)
|
||||
bullet (6.1.2)
|
||||
activesupport (>= 3.0.0)
|
||||
uniform_notifier (~> 1.11)
|
||||
bundler-audit (0.7.0.1)
|
||||
@ -131,7 +131,7 @@ GEM
|
||||
sshkit (~> 1.3)
|
||||
capistrano-yarn (2.0.2)
|
||||
capistrano (~> 3.0)
|
||||
capybara (3.33.0)
|
||||
capybara (3.34.0)
|
||||
addressable
|
||||
mini_mime (>= 0.1.3)
|
||||
nokogiri (~> 1.8)
|
||||
@ -147,9 +147,9 @@ GEM
|
||||
activesupport (>= 4.0)
|
||||
elasticsearch (>= 2.0.0)
|
||||
elasticsearch-dsl
|
||||
chunky_png (1.3.12)
|
||||
cld3 (3.3.0)
|
||||
ffi (>= 1.1.0, < 1.12.0)
|
||||
chunky_png (1.3.15)
|
||||
cld3 (3.4.1)
|
||||
ffi (>= 1.1.0, < 1.15.0)
|
||||
climate_control (0.2.0)
|
||||
cocaine (0.5.8)
|
||||
climate_control (>= 0.0.3, < 1.0)
|
||||
@ -160,7 +160,8 @@ GEM
|
||||
cose (1.0.0)
|
||||
cbor (~> 0.5.9)
|
||||
openssl-signature_algorithm (~> 0.4.0)
|
||||
crack (0.4.4)
|
||||
crack (0.4.5)
|
||||
rexml
|
||||
crass (1.0.6)
|
||||
css_parser (1.7.1)
|
||||
addressable
|
||||
@ -183,7 +184,7 @@ GEM
|
||||
diff-lcs (1.4.4)
|
||||
discard (1.2.0)
|
||||
activerecord (>= 4.2, < 7)
|
||||
docile (1.3.2)
|
||||
docile (1.3.4)
|
||||
domain_name (0.5.20190701)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
doorkeeper (5.4.0)
|
||||
@ -204,17 +205,17 @@ GEM
|
||||
faraday (~> 1)
|
||||
multi_json
|
||||
encryptor (3.0.0)
|
||||
erubi (1.9.0)
|
||||
erubi (1.10.0)
|
||||
et-orbi (1.2.4)
|
||||
tzinfo
|
||||
excon (0.76.0)
|
||||
fabrication (2.21.1)
|
||||
faker (2.14.0)
|
||||
faker (2.15.1)
|
||||
i18n (>= 1.6, < 2)
|
||||
faraday (1.0.1)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
fast_blank (1.0.0)
|
||||
fastimage (2.2.0)
|
||||
fastimage (2.2.1)
|
||||
ffi (1.10.0)
|
||||
ffi-compiler (1.0.1)
|
||||
ffi (>= 1.0.0)
|
||||
@ -235,7 +236,7 @@ GEM
|
||||
fugit (1.3.9)
|
||||
et-orbi (~> 1.1, >= 1.1.8)
|
||||
raabro (~> 1.3)
|
||||
fuubar (2.5.0)
|
||||
fuubar (2.5.1)
|
||||
rspec-core (~> 3.0)
|
||||
ruby-progressbar (~> 1.4)
|
||||
globalid (0.4.2)
|
||||
@ -273,7 +274,7 @@ GEM
|
||||
rainbow (>= 2.0.0)
|
||||
i18n (1.8.5)
|
||||
concurrent-ruby (~> 1.0)
|
||||
i18n-tasks (0.9.31)
|
||||
i18n-tasks (0.9.33)
|
||||
activesupport (>= 4.0.2)
|
||||
ast (>= 2.1.0)
|
||||
erubi
|
||||
@ -289,14 +290,14 @@ GEM
|
||||
jmespath (1.4.0)
|
||||
json (2.3.1)
|
||||
json-canonicalization (0.2.0)
|
||||
json-ld (3.1.5)
|
||||
json-ld (3.1.7)
|
||||
htmlentities (~> 4.3)
|
||||
json-canonicalization (~> 0.2)
|
||||
link_header (~> 0.0, >= 0.0.8)
|
||||
multi_json (~> 1.14)
|
||||
rack (~> 2.0)
|
||||
rdf (~> 3.1)
|
||||
json-ld-preloaded (3.1.3)
|
||||
json-ld-preloaded (3.1.4)
|
||||
json-ld (~> 3.1)
|
||||
rdf (~> 3.1)
|
||||
jsonapi-renderer (0.2.2)
|
||||
@ -327,7 +328,7 @@ GEM
|
||||
activesupport (>= 4)
|
||||
railties (>= 4)
|
||||
request_store (~> 1.0)
|
||||
loofah (2.7.0)
|
||||
loofah (2.8.0)
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.5.9)
|
||||
mail (2.7.1)
|
||||
@ -338,7 +339,7 @@ GEM
|
||||
mimemagic (~> 0.3.2)
|
||||
mario-redis-lock (1.2.1)
|
||||
redis (>= 3.0.5)
|
||||
memory_profiler (0.9.14)
|
||||
memory_profiler (1.0.0)
|
||||
method_source (1.0.0)
|
||||
microformats (4.2.1)
|
||||
json (~> 2.2)
|
||||
@ -348,18 +349,19 @@ GEM
|
||||
mime-types-data (3.2020.0512)
|
||||
mimemagic (0.3.5)
|
||||
mini_mime (1.0.2)
|
||||
mini_portile2 (2.4.0)
|
||||
mini_portile2 (2.5.0)
|
||||
minitest (5.14.2)
|
||||
msgpack (1.3.3)
|
||||
multi_json (1.15.0)
|
||||
multipart-post (2.1.1)
|
||||
net-ldap (0.16.3)
|
||||
net-ldap (0.17.0)
|
||||
net-scp (3.0.0)
|
||||
net-ssh (>= 2.6.5, < 7.0.0)
|
||||
net-ssh (6.1.0)
|
||||
nio4r (2.5.4)
|
||||
nokogiri (1.10.10)
|
||||
mini_portile2 (~> 2.4.0)
|
||||
nokogiri (1.11.0)
|
||||
mini_portile2 (~> 2.5.0)
|
||||
racc (~> 1.4)
|
||||
nokogumbo (2.0.2)
|
||||
nokogiri (~> 1.8, >= 1.8.4)
|
||||
nsa (0.2.7)
|
||||
@ -367,7 +369,7 @@ GEM
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
sidekiq (>= 3.5)
|
||||
statsd-ruby (~> 1.4, >= 1.4.0)
|
||||
oj (3.10.16)
|
||||
oj (3.10.18)
|
||||
omniauth (1.9.1)
|
||||
hashie (>= 3.4.6)
|
||||
rack (>= 1.6.2, < 3)
|
||||
@ -384,7 +386,7 @@ GEM
|
||||
openssl (2.2.0)
|
||||
openssl-signature_algorithm (0.4.0)
|
||||
orm_adapter (0.5.0)
|
||||
ox (2.13.4)
|
||||
ox (2.14.0)
|
||||
paperclip (6.0.0)
|
||||
activemodel (>= 4.2.0)
|
||||
activesupport (>= 4.2.0)
|
||||
@ -397,13 +399,13 @@ GEM
|
||||
parallel (1.20.1)
|
||||
parallel_tests (3.4.0)
|
||||
parallel
|
||||
parser (2.7.2.0)
|
||||
parser (3.0.0.0)
|
||||
ast (~> 2.4.1)
|
||||
parslet (2.0.0)
|
||||
pastel (0.8.0)
|
||||
tty-color (~> 0.5)
|
||||
pg (1.2.3)
|
||||
pghero (2.7.2)
|
||||
pghero (2.7.3)
|
||||
activerecord (>= 5)
|
||||
pkg-config (1.4.4)
|
||||
pluck_each (0.1.3)
|
||||
@ -427,11 +429,12 @@ GEM
|
||||
pry-rails (0.3.9)
|
||||
pry (>= 0.10.4)
|
||||
public_suffix (4.0.6)
|
||||
puma (5.0.4)
|
||||
puma (5.1.1)
|
||||
nio4r (~> 2.0)
|
||||
pundit (2.1.0)
|
||||
activesupport (>= 3.0.0)
|
||||
raabro (1.3.3)
|
||||
racc (1.5.2)
|
||||
rack (2.2.3)
|
||||
rack-attack (6.3.1)
|
||||
rack (>= 1.0, < 3)
|
||||
@ -475,8 +478,8 @@ GEM
|
||||
rake (>= 0.8.7)
|
||||
thor (>= 0.19.0, < 2.0)
|
||||
rainbow (3.0.0)
|
||||
rake (13.0.1)
|
||||
rdf (3.1.7)
|
||||
rake (13.0.3)
|
||||
rdf (3.1.8)
|
||||
hamster (~> 3.0)
|
||||
link_header (~> 0.0, >= 0.0.8)
|
||||
rdf-normalize (0.4.0)
|
||||
@ -510,48 +513,48 @@ GEM
|
||||
rexml (3.2.4)
|
||||
rotp (2.1.2)
|
||||
rpam2 (4.0.2)
|
||||
rqrcode (1.1.2)
|
||||
rqrcode (1.2.0)
|
||||
chunky_png (~> 1.0)
|
||||
rqrcode_core (~> 0.1)
|
||||
rqrcode_core (0.1.2)
|
||||
rspec-core (3.9.3)
|
||||
rspec-support (~> 3.9.3)
|
||||
rspec-expectations (3.9.2)
|
||||
rqrcode_core (~> 0.2)
|
||||
rqrcode_core (0.2.0)
|
||||
rspec-core (3.10.1)
|
||||
rspec-support (~> 3.10.0)
|
||||
rspec-expectations (3.10.1)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.9.0)
|
||||
rspec-mocks (3.9.1)
|
||||
rspec-support (~> 3.10.0)
|
||||
rspec-mocks (3.10.1)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.9.0)
|
||||
rspec-rails (4.0.1)
|
||||
rspec-support (~> 3.10.0)
|
||||
rspec-rails (4.0.2)
|
||||
actionpack (>= 4.2)
|
||||
activesupport (>= 4.2)
|
||||
railties (>= 4.2)
|
||||
rspec-core (~> 3.9)
|
||||
rspec-expectations (~> 3.9)
|
||||
rspec-mocks (~> 3.9)
|
||||
rspec-support (~> 3.9)
|
||||
rspec-core (~> 3.10)
|
||||
rspec-expectations (~> 3.10)
|
||||
rspec-mocks (~> 3.10)
|
||||
rspec-support (~> 3.10)
|
||||
rspec-sidekiq (3.1.0)
|
||||
rspec-core (~> 3.0, >= 3.0.0)
|
||||
sidekiq (>= 2.4.0)
|
||||
rspec-support (3.9.3)
|
||||
rspec-support (3.10.1)
|
||||
rspec_junit_formatter (0.4.1)
|
||||
rspec-core (>= 2, < 4, != 2.12.0)
|
||||
rubocop (1.3.1)
|
||||
rubocop (1.7.0)
|
||||
parallel (~> 1.10)
|
||||
parser (>= 2.7.1.5)
|
||||
rainbow (>= 2.2.2, < 4.0)
|
||||
regexp_parser (>= 1.8)
|
||||
regexp_parser (>= 1.8, < 3.0)
|
||||
rexml
|
||||
rubocop-ast (>= 1.1.1)
|
||||
rubocop-ast (>= 1.2.0, < 2.0)
|
||||
ruby-progressbar (~> 1.7)
|
||||
unicode-display_width (>= 1.4.0, < 2.0)
|
||||
rubocop-ast (1.1.1)
|
||||
rubocop-ast (1.3.0)
|
||||
parser (>= 2.7.1.5)
|
||||
rubocop-rails (2.8.1)
|
||||
rubocop-rails (2.9.1)
|
||||
activesupport (>= 4.2.0)
|
||||
rack (>= 1.1)
|
||||
rubocop (>= 0.87.0)
|
||||
ruby-progressbar (1.10.1)
|
||||
rubocop (>= 0.90.0, < 2.0)
|
||||
ruby-progressbar (1.11.0)
|
||||
ruby-saml (1.11.0)
|
||||
nokogiri (>= 1.5.10)
|
||||
rufus-scheduler (3.6.0)
|
||||
@ -589,10 +592,12 @@ GEM
|
||||
simple_form (5.0.3)
|
||||
actionpack (>= 5.0)
|
||||
activemodel (>= 5.0)
|
||||
simplecov (0.19.1)
|
||||
simplecov (0.21.0)
|
||||
docile (~> 1.1)
|
||||
simplecov-html (~> 0.11)
|
||||
simplecov_json_formatter (~> 0.1)
|
||||
simplecov-html (0.12.3)
|
||||
simplecov_json_formatter (0.1.2)
|
||||
sprockets (3.7.2)
|
||||
concurrent-ruby (~> 1.0)
|
||||
rack (> 1, < 3)
|
||||
@ -608,10 +613,10 @@ GEM
|
||||
stoplight (2.2.1)
|
||||
streamio-ffmpeg (3.0.2)
|
||||
multi_json (~> 1.8)
|
||||
strong_migrations (0.7.2)
|
||||
strong_migrations (0.7.4)
|
||||
activerecord (>= 5)
|
||||
temple (0.8.2)
|
||||
terminal-table (1.8.0)
|
||||
terminal-table (2.0.0)
|
||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||
terrapin (0.6.0)
|
||||
climate_control (>= 0.0.3, < 1.0)
|
||||
@ -623,21 +628,21 @@ GEM
|
||||
tpm-key_attestation (0.9.0)
|
||||
bindata (~> 2.4)
|
||||
openssl-signature_algorithm (~> 0.4.0)
|
||||
tty-color (0.5.2)
|
||||
tty-color (0.6.0)
|
||||
tty-cursor (0.7.1)
|
||||
tty-prompt (0.22.0)
|
||||
tty-prompt (0.23.0)
|
||||
pastel (~> 0.8)
|
||||
tty-reader (~> 0.8)
|
||||
tty-reader (0.8.0)
|
||||
tty-reader (0.9.0)
|
||||
tty-cursor (~> 0.7)
|
||||
tty-screen (~> 0.8)
|
||||
wisper (~> 2.0)
|
||||
tty-screen (0.8.1)
|
||||
twitter-text (1.14.7)
|
||||
unf (~> 0.1.0)
|
||||
tzinfo (1.2.7)
|
||||
tzinfo (1.2.9)
|
||||
thread_safe (~> 0.1)
|
||||
tzinfo-data (1.2020.4)
|
||||
tzinfo-data (1.2020.6)
|
||||
tzinfo (>= 1.0.0)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
@ -656,7 +661,7 @@ GEM
|
||||
safety_net_attestation (~> 0.4.0)
|
||||
securecompare (~> 1.0)
|
||||
tpm-key_attestation (~> 0.9.0)
|
||||
webmock (3.10.0)
|
||||
webmock (3.11.0)
|
||||
addressable (>= 2.3.6)
|
||||
crack (>= 0.3.2)
|
||||
hashdiff (>= 0.4.0, < 2.0.0)
|
||||
@ -684,7 +689,7 @@ DEPENDENCIES
|
||||
active_record_query_trace (~> 1.8)
|
||||
addressable (~> 2.7)
|
||||
annotate (~> 3.1)
|
||||
aws-sdk-s3 (~> 1.85)
|
||||
aws-sdk-s3 (~> 1.87)
|
||||
better_errors (~> 2.9)
|
||||
binding_of_caller (~> 0.7)
|
||||
blurhash (~> 0.1)
|
||||
@ -697,10 +702,10 @@ DEPENDENCIES
|
||||
capistrano-rails (~> 1.6)
|
||||
capistrano-rbenv (~> 2.2)
|
||||
capistrano-yarn (~> 2.0)
|
||||
capybara (~> 3.33)
|
||||
capybara (~> 3.34)
|
||||
charlock_holmes (~> 0.7.7)
|
||||
chewy (~> 5.1)
|
||||
cld3 (~> 3.3.0)
|
||||
cld3 (~> 3.4.1)
|
||||
climate_control (~> 0.2)
|
||||
color_diff (~> 0.1)
|
||||
concurrent-ruby
|
||||
@ -713,7 +718,7 @@ DEPENDENCIES
|
||||
dotenv-rails (~> 2.7)
|
||||
ed25519 (~> 1.2)
|
||||
fabrication (~> 2.21)
|
||||
faker (~> 2.14)
|
||||
faker (~> 2.15)
|
||||
fast_blank (~> 1.0)
|
||||
fastimage
|
||||
fog-core (<= 2.1.0)
|
||||
@ -741,16 +746,16 @@ DEPENDENCIES
|
||||
memory_profiler
|
||||
microformats (~> 4.2)
|
||||
mime-types (~> 3.3.1)
|
||||
net-ldap (~> 0.16)
|
||||
net-ldap (~> 0.17)
|
||||
nilsimsa!
|
||||
nokogiri (~> 1.10)
|
||||
nokogiri (~> 1.11)
|
||||
nsa (~> 0.2)
|
||||
oj (~> 3.10)
|
||||
omniauth (~> 1.9)
|
||||
omniauth-cas (~> 2.0)
|
||||
omniauth-rails_csrf_protection (~> 0.1)
|
||||
omniauth-saml (~> 1.10)
|
||||
ox (~> 2.13)
|
||||
ox (~> 2.14)
|
||||
paperclip (~> 6.0)
|
||||
paperclip-av-transcoder (~> 0.6)
|
||||
parallel (~> 1.20)
|
||||
@ -765,7 +770,7 @@ DEPENDENCIES
|
||||
private_address_check (~> 0.5)
|
||||
pry-byebug (~> 3.9)
|
||||
pry-rails (~> 0.3)
|
||||
puma (~> 5.0)
|
||||
puma (~> 5.1)
|
||||
pundit (~> 2.1)
|
||||
rack (~> 2.2.3)
|
||||
rack-attack (~> 6.3)
|
||||
@ -779,13 +784,13 @@ DEPENDENCIES
|
||||
redis (~> 4.2)
|
||||
redis-namespace (~> 1.8)
|
||||
redis-rails (~> 5.0)
|
||||
rqrcode (~> 1.1)
|
||||
rqrcode (~> 1.2)
|
||||
rspec-rails (~> 4.0)
|
||||
rspec-sidekiq (~> 3.1)
|
||||
rspec_junit_formatter (~> 0.4)
|
||||
rubocop (~> 1.3)
|
||||
rubocop-rails (~> 2.8)
|
||||
ruby-progressbar (~> 1.10)
|
||||
rubocop (~> 1.7)
|
||||
rubocop-rails (~> 2.9)
|
||||
ruby-progressbar (~> 1.11)
|
||||
sanitize (~> 5.2)
|
||||
scenic (~> 1.5)
|
||||
sidekiq (~> 6.1)
|
||||
@ -794,7 +799,7 @@ DEPENDENCIES
|
||||
sidekiq-unique-jobs (~> 6.0)
|
||||
simple-navigation (~> 4.1)
|
||||
simple_form (~> 5.0)
|
||||
simplecov (~> 0.19)
|
||||
simplecov (~> 0.21)
|
||||
sprockets (~> 3.7.2)
|
||||
sprockets-rails (~> 3.2)
|
||||
stackprof
|
||||
@ -802,11 +807,11 @@ DEPENDENCIES
|
||||
streamio-ffmpeg (~> 3.0)
|
||||
strong_migrations (~> 0.7)
|
||||
thor (~> 1.0)
|
||||
tty-prompt (~> 0.22)
|
||||
tty-prompt (~> 0.23)
|
||||
twitter-text (~> 1.14)
|
||||
tzinfo-data (~> 1.2020)
|
||||
webauthn (~> 3.0.0.alpha1)
|
||||
webmock (~> 3.10)
|
||||
webmock (~> 3.11)
|
||||
webpacker (~> 5.2)
|
||||
webpush
|
||||
xorcist (~> 1.1)
|
||||
|
@ -7,7 +7,7 @@ class Api::V1::Accounts::FeaturedTagsController < Api::BaseController
|
||||
respond_to :json
|
||||
|
||||
def index
|
||||
render json: @featured_tags, each_serializer: REST::AccountFeaturedTagSerializer
|
||||
render json: @featured_tags, each_serializer: REST::FeaturedTagSerializer
|
||||
end
|
||||
|
||||
private
|
||||
|
@ -7,8 +7,12 @@ module Settings
|
||||
|
||||
def destroy
|
||||
if valid_picture?
|
||||
msg = I18n.t('generic.changes_saved_msg') if UpdateAccountService.new.call(@account, { @picture => nil, "#{@picture}_remote_url" => '' })
|
||||
redirect_to settings_profile_path, notice: msg, status: 303
|
||||
if UpdateAccountService.new.call(@account, { @picture => nil, "#{@picture}_remote_url" => '' })
|
||||
ActivityPub::UpdateDistributionWorker.perform_async(@account.id)
|
||||
redirect_to settings_profile_path, notice: I18n.t('generic.changes_saved_msg'), status: 303
|
||||
else
|
||||
redirect_to settings_profile_path
|
||||
end
|
||||
else
|
||||
bad_request
|
||||
end
|
||||
|
@ -10,17 +10,11 @@ export default class Button extends React.PureComponent {
|
||||
disabled: PropTypes.bool,
|
||||
block: PropTypes.bool,
|
||||
secondary: PropTypes.bool,
|
||||
size: PropTypes.number,
|
||||
className: PropTypes.string,
|
||||
title: PropTypes.string,
|
||||
style: PropTypes.object,
|
||||
children: PropTypes.node,
|
||||
};
|
||||
|
||||
static defaultProps = {
|
||||
size: 36,
|
||||
};
|
||||
|
||||
handleClick = (e) => {
|
||||
if (!this.props.disabled) {
|
||||
this.props.onClick(e);
|
||||
@ -44,12 +38,6 @@ export default class Button extends React.PureComponent {
|
||||
disabled: this.props.disabled,
|
||||
onClick: this.handleClick,
|
||||
ref: this.setRef,
|
||||
style: {
|
||||
padding: `0 ${this.props.size / 2.25}px`,
|
||||
height: `${this.props.size}px`,
|
||||
lineHeight: `${this.props.size}px`,
|
||||
...this.props.style,
|
||||
},
|
||||
};
|
||||
|
||||
if (this.props.title) attrs.title = this.props.title;
|
||||
|
@ -159,13 +159,17 @@ class Header extends ImmutablePureComponent {
|
||||
info.push(<span className='relationship-tag'><FormattedMessage id='account.domain_blocked' defaultMessage='Domain blocked' /></span>);
|
||||
}
|
||||
|
||||
if (account.getIn(['relationship', 'requested']) || account.getIn(['relationship', 'following'])) {
|
||||
bellBtn = <IconButton icon='bell-o' size={24} active={account.getIn(['relationship', 'notifying'])} title={intl.formatMessage(account.getIn(['relationship', 'notifying']) ? messages.disableNotifications : messages.enableNotifications, { name: account.get('username') })} onClick={this.props.onNotifyToggle} />;
|
||||
}
|
||||
|
||||
if (me !== account.get('id')) {
|
||||
if (!account.get('relationship')) { // Wait until the relationship is loaded
|
||||
actionBtn = '';
|
||||
} else if (account.getIn(['relationship', 'requested'])) {
|
||||
actionBtn = <Button className='logo-button' text={intl.formatMessage(messages.cancel_follow_request)} title={intl.formatMessage(messages.requested)} onClick={this.props.onFollow} />;
|
||||
actionBtn = <Button className={classNames('logo-button', { 'button--with-bell': bellBtn !== '' })} text={intl.formatMessage(messages.cancel_follow_request)} title={intl.formatMessage(messages.requested)} onClick={this.props.onFollow} />;
|
||||
} else if (!account.getIn(['relationship', 'blocking'])) {
|
||||
actionBtn = <Button className={classNames('logo-button', { 'button--destructive': account.getIn(['relationship', 'following']) })} text={intl.formatMessage(account.getIn(['relationship', 'following']) ? messages.unfollow : messages.follow)} onClick={this.props.onFollow} />;
|
||||
actionBtn = <Button className={classNames('logo-button', { 'button--destructive': account.getIn(['relationship', 'following']), 'button--with-bell': bellBtn !== '' })} text={intl.formatMessage(account.getIn(['relationship', 'following']) ? messages.unfollow : messages.follow)} onClick={this.props.onFollow} />;
|
||||
} else if (account.getIn(['relationship', 'blocking'])) {
|
||||
actionBtn = <Button className='logo-button' text={intl.formatMessage(messages.unblock, { name: account.get('username') })} onClick={this.props.onBlock} />;
|
||||
}
|
||||
@ -173,10 +177,6 @@ class Header extends ImmutablePureComponent {
|
||||
actionBtn = <Button className='logo-button' text={intl.formatMessage(messages.edit_profile)} onClick={this.openEditProfile} />;
|
||||
}
|
||||
|
||||
if (account.getIn(['relationship', 'requested']) || account.getIn(['relationship', 'following'])) {
|
||||
bellBtn = <IconButton icon='bell-o' size={24} active={account.getIn(['relationship', 'notifying'])} title={intl.formatMessage(account.getIn(['relationship', 'notifying']) ? messages.disableNotifications : messages.enableNotifications, { name: account.get('username') })} onClick={this.props.onNotifyToggle} />;
|
||||
}
|
||||
|
||||
if (account.get('moved') && !account.getIn(['relationship', 'following'])) {
|
||||
actionBtn = '';
|
||||
}
|
||||
|
@ -194,7 +194,7 @@ class ListTimeline extends React.PureComponent {
|
||||
</span>
|
||||
<div className='column-settings__row'>
|
||||
{ ['none', 'list', 'followed'].map(policy => (
|
||||
<RadioButton name='order' value={policy} label={intl.formatMessage(messages[policy])} checked={replies_policy === policy} onChange={this.handleRepliesPolicyChange} />
|
||||
<RadioButton name='order' key={policy} value={policy} label={intl.formatMessage(messages[policy])} checked={replies_policy === policy} onChange={this.handleRepliesPolicyChange} />
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -127,7 +127,7 @@ class Video extends React.PureComponent {
|
||||
};
|
||||
|
||||
static defaultProps = {
|
||||
frameRate: 25,
|
||||
frameRate: '25',
|
||||
};
|
||||
|
||||
state = {
|
||||
|
@ -141,6 +141,11 @@
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.layout-multiple-columns &.button--with-bell {
|
||||
font-size: 12px;
|
||||
padding: 0 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.icon-button {
|
||||
@ -923,6 +928,7 @@
|
||||
flex: 0 0 auto;
|
||||
padding: 10px;
|
||||
padding-top: 20px;
|
||||
z-index: 1;
|
||||
|
||||
ul {
|
||||
margin-bottom: 10px;
|
||||
|
@ -446,6 +446,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
.logo-button {
|
||||
padding: 3px 15px;
|
||||
}
|
||||
|
||||
&__image {
|
||||
border-radius: 4px 4px 0 0;
|
||||
overflow: hidden;
|
||||
|
@ -163,6 +163,11 @@ body.rtl {
|
||||
right: 42px;
|
||||
}
|
||||
|
||||
.account__header__tabs__buttons > .icon-button {
|
||||
margin-right: 0;
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.account__avatar-overlay-overlay {
|
||||
right: auto;
|
||||
left: 0;
|
||||
|
@ -79,9 +79,14 @@
|
||||
background: $ui-highlight-color;
|
||||
color: $primary-text-color;
|
||||
text-transform: none;
|
||||
line-height: 36px;
|
||||
line-height: 1.2;
|
||||
height: auto;
|
||||
padding: 3px 15px;
|
||||
min-height: 36px;
|
||||
min-width: 88px;
|
||||
white-space: normal;
|
||||
overflow-wrap: break-word;
|
||||
hyphens: auto;
|
||||
padding: 0 15px;
|
||||
border: 0;
|
||||
|
||||
svg {
|
||||
@ -122,6 +127,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
a.button.logo-button {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.embed,
|
||||
.public-layout {
|
||||
.status__content[data-spoiler=folded] {
|
||||
|
@ -4,13 +4,6 @@ exports[`<Button /> adds class "button-secondary" if props.secondary given 1`] =
|
||||
<button
|
||||
className="button button-secondary"
|
||||
onClick={[Function]}
|
||||
style={
|
||||
Object {
|
||||
"height": "36px",
|
||||
"lineHeight": "36px",
|
||||
"padding": "0 16px",
|
||||
}
|
||||
}
|
||||
/>
|
||||
`;
|
||||
|
||||
@ -18,13 +11,6 @@ exports[`<Button /> renders a button element 1`] = `
|
||||
<button
|
||||
className="button"
|
||||
onClick={[Function]}
|
||||
style={
|
||||
Object {
|
||||
"height": "36px",
|
||||
"lineHeight": "36px",
|
||||
"padding": "0 16px",
|
||||
}
|
||||
}
|
||||
/>
|
||||
`;
|
||||
|
||||
@ -33,13 +19,6 @@ exports[`<Button /> renders a disabled attribute if props.disabled given 1`] = `
|
||||
className="button"
|
||||
disabled={true}
|
||||
onClick={[Function]}
|
||||
style={
|
||||
Object {
|
||||
"height": "36px",
|
||||
"lineHeight": "36px",
|
||||
"padding": "0 16px",
|
||||
}
|
||||
}
|
||||
/>
|
||||
`;
|
||||
|
||||
@ -47,13 +26,6 @@ exports[`<Button /> renders class="button--block" if props.block given 1`] = `
|
||||
<button
|
||||
className="button button--block"
|
||||
onClick={[Function]}
|
||||
style={
|
||||
Object {
|
||||
"height": "36px",
|
||||
"lineHeight": "36px",
|
||||
"padding": "0 16px",
|
||||
}
|
||||
}
|
||||
/>
|
||||
`;
|
||||
|
||||
@ -61,13 +33,6 @@ exports[`<Button /> renders the children 1`] = `
|
||||
<button
|
||||
className="button"
|
||||
onClick={[Function]}
|
||||
style={
|
||||
Object {
|
||||
"height": "36px",
|
||||
"lineHeight": "36px",
|
||||
"padding": "0 16px",
|
||||
}
|
||||
}
|
||||
>
|
||||
<p>
|
||||
children
|
||||
@ -79,13 +44,6 @@ exports[`<Button /> renders the given text 1`] = `
|
||||
<button
|
||||
className="button"
|
||||
onClick={[Function]}
|
||||
style={
|
||||
Object {
|
||||
"height": "36px",
|
||||
"lineHeight": "36px",
|
||||
"padding": "0 16px",
|
||||
}
|
||||
}
|
||||
>
|
||||
foo
|
||||
</button>
|
||||
@ -95,13 +53,6 @@ exports[`<Button /> renders the props.text instead of children 1`] = `
|
||||
<button
|
||||
className="button"
|
||||
onClick={[Function]}
|
||||
style={
|
||||
Object {
|
||||
"height": "36px",
|
||||
"lineHeight": "36px",
|
||||
"padding": "0 16px",
|
||||
}
|
||||
}
|
||||
>
|
||||
foo
|
||||
</button>
|
||||
|
@ -10,17 +10,11 @@ export default class Button extends React.PureComponent {
|
||||
disabled: PropTypes.bool,
|
||||
block: PropTypes.bool,
|
||||
secondary: PropTypes.bool,
|
||||
size: PropTypes.number,
|
||||
className: PropTypes.string,
|
||||
title: PropTypes.string,
|
||||
style: PropTypes.object,
|
||||
children: PropTypes.node,
|
||||
};
|
||||
|
||||
static defaultProps = {
|
||||
size: 36,
|
||||
};
|
||||
|
||||
handleClick = (e) => {
|
||||
if (!this.props.disabled) {
|
||||
this.props.onClick(e);
|
||||
@ -36,13 +30,6 @@ export default class Button extends React.PureComponent {
|
||||
}
|
||||
|
||||
render () {
|
||||
const style = {
|
||||
padding: `0 ${this.props.size / 2.25}px`,
|
||||
height: `${this.props.size}px`,
|
||||
lineHeight: `${this.props.size}px`,
|
||||
...this.props.style,
|
||||
};
|
||||
|
||||
const className = classNames('button', this.props.className, {
|
||||
'button-secondary': this.props.secondary,
|
||||
'button--block': this.props.block,
|
||||
@ -54,7 +41,6 @@ export default class Button extends React.PureComponent {
|
||||
disabled={this.props.disabled}
|
||||
onClick={this.handleClick}
|
||||
ref={this.setRef}
|
||||
style={style}
|
||||
title={this.props.title}
|
||||
>
|
||||
{this.props.text || this.props.children}
|
||||
|
@ -2,7 +2,7 @@ import React, { PureComponent, Fragment } from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
import PropTypes from 'prop-types';
|
||||
import { IntlProvider, addLocaleData } from 'react-intl';
|
||||
import { List as ImmutableList, fromJS } from 'immutable';
|
||||
import { fromJS } from 'immutable';
|
||||
import { getLocale } from 'mastodon/locales';
|
||||
import { getScrollbarWidth } from 'mastodon/utils/scrollbar';
|
||||
import MediaGallery from 'mastodon/components/media_gallery';
|
||||
@ -31,6 +31,7 @@ export default class MediaContainer extends PureComponent {
|
||||
index: null,
|
||||
time: null,
|
||||
backgroundColor: null,
|
||||
options: null,
|
||||
};
|
||||
|
||||
handleOpenMedia = (media, index) => {
|
||||
@ -40,13 +41,15 @@ export default class MediaContainer extends PureComponent {
|
||||
this.setState({ media, index });
|
||||
}
|
||||
|
||||
handleOpenVideo = (video, time) => {
|
||||
const media = ImmutableList([video]);
|
||||
handleOpenVideo = (options) => {
|
||||
const { components } = this.props;
|
||||
const { media } = JSON.parse(components[options.componetIndex].getAttribute('data-props'));
|
||||
const mediaList = fromJS(media);
|
||||
|
||||
document.body.classList.add('with-modals--active');
|
||||
document.documentElement.style.marginRight = `${getScrollbarWidth()}px`;
|
||||
|
||||
this.setState({ media, time });
|
||||
this.setState({ media: mediaList, options });
|
||||
}
|
||||
|
||||
handleCloseMedia = () => {
|
||||
@ -58,6 +61,7 @@ export default class MediaContainer extends PureComponent {
|
||||
index: null,
|
||||
time: null,
|
||||
backgroundColor: null,
|
||||
options: null,
|
||||
});
|
||||
}
|
||||
|
||||
@ -83,6 +87,7 @@ export default class MediaContainer extends PureComponent {
|
||||
...(hashtag ? { hashtag: fromJS(hashtag) } : {}),
|
||||
|
||||
...(componentName === 'Video' ? {
|
||||
componetIndex: i,
|
||||
onOpenVideo: this.handleOpenVideo,
|
||||
} : {
|
||||
onOpenMedia: this.handleOpenMedia,
|
||||
@ -100,7 +105,9 @@ export default class MediaContainer extends PureComponent {
|
||||
<MediaModal
|
||||
media={this.state.media}
|
||||
index={this.state.index || 0}
|
||||
time={this.state.time}
|
||||
currentTime={this.state.options?.startTime}
|
||||
autoPlay={this.state.options?.autoPlay}
|
||||
volume={this.state.options?.defaultVolume}
|
||||
onClose={this.handleCloseMedia}
|
||||
onChangeBackgroundColor={this.setBackgroundColor}
|
||||
/>
|
||||
|
@ -164,13 +164,17 @@ class Header extends ImmutablePureComponent {
|
||||
info.push(<span key='domain_blocked' className='relationship-tag'><FormattedMessage id='account.domain_blocked' defaultMessage='Domain blocked' /></span>);
|
||||
}
|
||||
|
||||
if (account.getIn(['relationship', 'requested']) || account.getIn(['relationship', 'following'])) {
|
||||
bellBtn = <IconButton icon='bell-o' size={24} active={account.getIn(['relationship', 'notifying'])} title={intl.formatMessage(account.getIn(['relationship', 'notifying']) ? messages.disableNotifications : messages.enableNotifications, { name: account.get('username') })} onClick={this.props.onNotifyToggle} />;
|
||||
}
|
||||
|
||||
if (me !== account.get('id')) {
|
||||
if (!account.get('relationship')) { // Wait until the relationship is loaded
|
||||
actionBtn = '';
|
||||
} else if (account.getIn(['relationship', 'requested'])) {
|
||||
actionBtn = <Button className='logo-button' text={intl.formatMessage(messages.cancel_follow_request)} title={intl.formatMessage(messages.requested)} onClick={this.props.onFollow} />;
|
||||
actionBtn = <Button className={classNames('logo-button', { 'button--with-bell': bellBtn !== '' })} text={intl.formatMessage(messages.cancel_follow_request)} title={intl.formatMessage(messages.requested)} onClick={this.props.onFollow} />;
|
||||
} else if (!account.getIn(['relationship', 'blocking'])) {
|
||||
actionBtn = <Button disabled={account.getIn(['relationship', 'blocked_by'])} className={classNames('logo-button', { 'button--destructive': account.getIn(['relationship', 'following']) })} text={intl.formatMessage(account.getIn(['relationship', 'following']) ? messages.unfollow : messages.follow)} onClick={this.props.onFollow} />;
|
||||
actionBtn = <Button disabled={account.getIn(['relationship', 'blocked_by'])} className={classNames('logo-button', { 'button--destructive': account.getIn(['relationship', 'following']), 'button--with-bell': bellBtn !== '' })} text={intl.formatMessage(account.getIn(['relationship', 'following']) ? messages.unfollow : messages.follow)} onClick={this.props.onFollow} />;
|
||||
} else if (account.getIn(['relationship', 'blocking'])) {
|
||||
actionBtn = <Button className='logo-button' text={intl.formatMessage(messages.unblock, { name: account.get('username') })} onClick={this.props.onBlock} />;
|
||||
}
|
||||
@ -178,10 +182,6 @@ class Header extends ImmutablePureComponent {
|
||||
actionBtn = <Button className='logo-button' text={intl.formatMessage(messages.edit_profile)} onClick={this.openEditProfile} />;
|
||||
}
|
||||
|
||||
if (account.getIn(['relationship', 'requested']) || account.getIn(['relationship', 'following'])) {
|
||||
bellBtn = <IconButton icon='bell-o' size={24} active={account.getIn(['relationship', 'notifying'])} title={intl.formatMessage(account.getIn(['relationship', 'notifying']) ? messages.disableNotifications : messages.enableNotifications, { name: account.get('username') })} onClick={this.props.onNotifyToggle} />;
|
||||
}
|
||||
|
||||
if (account.get('moved') && !account.getIn(['relationship', 'following'])) {
|
||||
actionBtn = '';
|
||||
}
|
||||
|
@ -194,7 +194,7 @@ class ListTimeline extends React.PureComponent {
|
||||
</span>
|
||||
<div className='column-settings__row'>
|
||||
{ ['none', 'list', 'followed'].map(policy => (
|
||||
<RadioButton name='order' value={policy} label={intl.formatMessage(messages[policy])} checked={replies_policy === policy} onChange={this.handleRepliesPolicyChange} />
|
||||
<RadioButton name='order' key={policy} value={policy} label={intl.formatMessage(messages[policy])} checked={replies_policy === policy} onChange={this.handleRepliesPolicyChange} />
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -32,6 +32,9 @@ class MediaModal extends ImmutablePureComponent {
|
||||
onClose: PropTypes.func.isRequired,
|
||||
intl: PropTypes.object.isRequired,
|
||||
onChangeBackgroundColor: PropTypes.func.isRequired,
|
||||
currentTime: PropTypes.number,
|
||||
autoPlay: PropTypes.bool,
|
||||
volume: PropTypes.number,
|
||||
};
|
||||
|
||||
static contextTypes = {
|
||||
@ -183,7 +186,7 @@ class MediaModal extends ImmutablePureComponent {
|
||||
/>
|
||||
);
|
||||
} else if (image.get('type') === 'video') {
|
||||
const { time } = this.props;
|
||||
const { currentTime, autoPlay, volume } = this.props;
|
||||
|
||||
return (
|
||||
<Video
|
||||
@ -192,7 +195,10 @@ class MediaModal extends ImmutablePureComponent {
|
||||
src={image.get('url')}
|
||||
width={image.get('width')}
|
||||
height={image.get('height')}
|
||||
currentTime={time || 0}
|
||||
frameRate={image.getIn(['meta', 'original', 'frame_rate'])}
|
||||
currentTime={currentTime || 0}
|
||||
autoPlay={autoPlay || false}
|
||||
volume={volume || 1}
|
||||
onCloseVideo={onClose}
|
||||
detailed
|
||||
alt={image.get('description')}
|
||||
|
@ -121,10 +121,11 @@ class Video extends React.PureComponent {
|
||||
autoPlay: PropTypes.bool,
|
||||
volume: PropTypes.number,
|
||||
muted: PropTypes.bool,
|
||||
componetIndex: PropTypes.number,
|
||||
};
|
||||
|
||||
static defaultProps = {
|
||||
frameRate: 25,
|
||||
frameRate: '25',
|
||||
};
|
||||
|
||||
state = {
|
||||
@ -501,6 +502,7 @@ class Video extends React.PureComponent {
|
||||
startTime: this.video.currentTime,
|
||||
autoPlay: !this.state.paused,
|
||||
defaultVolume: this.state.volume,
|
||||
componetIndex: this.props.componetIndex,
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -17,8 +17,8 @@
|
||||
"account.follow": "Հետեւել",
|
||||
"account.followers": "Հետեւողներ",
|
||||
"account.followers.empty": "Այս օգտատիրոջը դեռ ոչ մէկ չի հետեւում։",
|
||||
"account.followers_counter": "{count, plural, one {{counter} Հետևորդ} other {{counter} Հետևորդներ}}",
|
||||
"account.following_counter": "{count, plural, other {{counter} Հետևում են}}",
|
||||
"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}֊ի տարածածները",
|
||||
@ -45,7 +45,7 @@
|
||||
"account.unfollow": "Ապահետեւել",
|
||||
"account.unmute": "Ապալռեցնել @{name}֊ին",
|
||||
"account.unmute_notifications": "Միացնել ծանուցումները @{name}֊ից",
|
||||
"account_note.placeholder": "Սեղմեք գրառելու համար",
|
||||
"account_note.placeholder": "Սեղմէ՛ք գրառելու համար\n",
|
||||
"alert.rate_limited.message": "Փորձէք որոշ ժամանակ անց՝ {retry_time, time, medium}։",
|
||||
"alert.rate_limited.title": "Գործողութիւնների յաճախութիւնը գերազանցում է թոյլատրելին",
|
||||
"alert.unexpected.message": "Անսպասելի սխալ տեղի ունեցաւ։",
|
||||
@ -57,9 +57,9 @@
|
||||
"bundle_column_error.retry": "Կրկին փորձել",
|
||||
"bundle_column_error.title": "Ցանցային սխալ",
|
||||
"bundle_modal_error.close": "Փակել",
|
||||
"bundle_modal_error.message": "Այս բաղադրիչը բեռնելու ընթացքում ինչ֊որ բան խափանվեց։",
|
||||
"bundle_modal_error.message": "Այս բաղադրիչը բեռնելու ընթացքում ինչ֊որ բան խափանուեց։",
|
||||
"bundle_modal_error.retry": "Կրկին փորձել",
|
||||
"column.blocks": "Արգելափակված օգտատերեր",
|
||||
"column.blocks": "Արգելափակուած օգտատէրեր",
|
||||
"column.bookmarks": "Էջանիշեր",
|
||||
"column.community": "Տեղական հոսք",
|
||||
"column.direct": "Հասցէագրուած հաղորդագրութիւններ",
|
||||
@ -69,27 +69,27 @@
|
||||
"column.follow_requests": "Հետեւելու հայցեր",
|
||||
"column.home": "Հիմնական",
|
||||
"column.lists": "Ցանկեր",
|
||||
"column.mutes": "Լռեցրած օգտատերեր",
|
||||
"column.mutes": "Լռեցրած օգտատէրեր",
|
||||
"column.notifications": "Ծանուցումներ",
|
||||
"column.pins": "Ամրացված թթեր",
|
||||
"column.pins": "Ամրացուած թթեր",
|
||||
"column.public": "Դաշնային հոսք",
|
||||
"column_back_button.label": "Ետ",
|
||||
"column_header.hide_settings": "Թաքցնել կարգավորումները",
|
||||
"column_header.hide_settings": "Թաքցնել կարգաւորումները",
|
||||
"column_header.moveLeft_settings": "Տեղաշարժել սիւնը ձախ",
|
||||
"column_header.moveRight_settings": "Տեղաշարժել սիւնը աջ",
|
||||
"column_header.pin": "Ամրացնել",
|
||||
"column_header.show_settings": "Ցուցադրել կարգավորումները",
|
||||
"column_header.show_settings": "Ցուցադրել կարգաւորումները",
|
||||
"column_header.unpin": "Հանել",
|
||||
"column_subheading.settings": "Կարգավորումներ",
|
||||
"community.column_settings.local_only": "Միայն ներքին",
|
||||
"community.column_settings.media_only": "Media only",
|
||||
"community.column_settings.remote_only": "Միայն հեռակա",
|
||||
"compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
|
||||
"column_subheading.settings": "Կարգաւորումներ",
|
||||
"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_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.placeholder": "Ի՞նչ կայ մտքիդ",
|
||||
"compose_form.poll.add_option": "Աւելացնել տարբերակ",
|
||||
"compose_form.poll.duration": "Հարցման տեւողութիւնը",
|
||||
"compose_form.poll.option_placeholder": "Տարբերակ {number}",
|
||||
@ -111,16 +111,16 @@
|
||||
"confirmations.delete.confirm": "Ջնջել",
|
||||
"confirmations.delete.message": "Վստա՞հ ես, որ ուզում ես ջնջել այս թութը։",
|
||||
"confirmations.delete_list.confirm": "Ջնջել",
|
||||
"confirmations.delete_list.message": "Վստա՞հ ես, որ ուզում ես մշտապես ջնջել այս ցանկը։",
|
||||
"confirmations.delete_list.message": "Վստա՞հ ես, որ ուզում ես մշտապէս ջնջել այս ցանկը։",
|
||||
"confirmations.domain_block.confirm": "Թաքցնել ամբողջ տիրույթը",
|
||||
"confirmations.domain_block.message": "Հաստատ֊հաստա՞տ վստահ ես, որ ուզում ես արգելափակել ամբողջ {domain} տիրույթը։ Սովորաբար մի երկու թիրախավորված արգելափակում կամ լռեցում բավական է ու նախընտրելի։",
|
||||
"confirmations.domain_block.message": "Հաստատ֊հաստա՞տ վստահ ես, որ ուզում ես արգելափակել ամբողջ {domain} տիրոյթը։ Սովորաբար մի երկու թիրախաւորուած արգելափակում կամ լռեցում բաւական է ու նախընտրելի։",
|
||||
"confirmations.logout.confirm": "Ելք",
|
||||
"confirmations.logout.message": "Համոզո՞ւած ես, որ ուզում ես դուրս գալ",
|
||||
"confirmations.mute.confirm": "Լռեցնել",
|
||||
"confirmations.mute.explanation": "Սա թաքցնելու ա իրենց գրառումներն, ինչպէս նաեւ իրենց նշող գրառումներն, բայց իրենք միեւնոյն է կը կարողանան հետեւել ձեզ եւ տեսնել ձեր գրառումները։",
|
||||
"confirmations.mute.message": "Վստա՞հ ես, որ ուզում ես {name}֊ին լռեցնել։",
|
||||
"confirmations.redraft.confirm": "Ջնջել եւ խմբագրել նորից",
|
||||
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
|
||||
"confirmations.redraft.message": "Վստահ ե՞ս, որ ցանկանում ես ջնջել եւ վերախմբագրել այս թութը։ Դու կը կորցնես այս գրառման բոլոր պատասխանները, տարածումները եւ հաւանումները։",
|
||||
"confirmations.reply.confirm": "Պատասխանել",
|
||||
"confirmations.reply.message": "Այս պահին պատասխանելը կը չեղարկի ձեր՝ այս պահին անաւարտ հաղորդագրութիւնը։ Համոզուա՞ծ էք։",
|
||||
"confirmations.unfollow.confirm": "Ապահետեւել",
|
||||
@ -134,67 +134,67 @@
|
||||
"directory.new_arrivals": "Նորեկներ",
|
||||
"directory.recently_active": "Վերջերս ակտիւ",
|
||||
"embed.instructions": "Այս թութը քո կայքում ներդնելու համար կարող ես պատճէնել ներքինանալ կոդը։",
|
||||
"embed.preview": "Ահա, թե ինչ տեսք կունենա այն՝",
|
||||
"embed.preview": "Ահայ, թէ ինչ տեսք կը ունենայ այն՝",
|
||||
"emoji_button.activity": "Զբաղմունքներ",
|
||||
"emoji_button.custom": "Հատուկ",
|
||||
"emoji_button.flags": "Դրոշներ",
|
||||
"emoji_button.custom": "Յատուկ",
|
||||
"emoji_button.flags": "Դրօշներ",
|
||||
"emoji_button.food": "Կերուխում",
|
||||
"emoji_button.label": "Էմոջի ավելացնել",
|
||||
"emoji_button.label": "Էմոջի աւելացնել",
|
||||
"emoji_button.nature": "Բնութիւն",
|
||||
"emoji_button.not_found": "Նման էմոջիներ դեռ չեն հայտնաբերվել։ (╯°□°)╯︵ ┻━┻",
|
||||
"emoji_button.not_found": "Նման էմոջիներ դեռ չեն յայտնաբերուել։ (╯°□°)╯︵ ┻━┻",
|
||||
"emoji_button.objects": "Առարկաներ",
|
||||
"emoji_button.people": "Մարդիկ",
|
||||
"emoji_button.recent": "Հաճախ օգտագործվող",
|
||||
"emoji_button.recent": "Յաճախ օգտագործուող",
|
||||
"emoji_button.search": "Որոնել…",
|
||||
"emoji_button.search_results": "Որոնման արդիւնքներ",
|
||||
"emoji_button.symbols": "Նշաններ",
|
||||
"emoji_button.travel": "Ուղեւորութիւն եւ տեղանքներ",
|
||||
"empty_column.account_suspended": "Account suspended",
|
||||
"empty_column.account_suspended": "Հաշիւը արգելափակուած է",
|
||||
"empty_column.account_timeline": "Այստեղ թթեր չկա՛ն։",
|
||||
"empty_column.account_unavailable": "Անձնական էջը հասանելի չի",
|
||||
"empty_column.blocks": "Դու դեռ ոչ մէկի չես արգելափակել։",
|
||||
"empty_column.bookmarked_statuses": "Դու դեռ չունես որեւէ էջանշւած թութ։ Երբ էջանշես, դրանք կերեւան այստեղ։",
|
||||
"empty_column.community": "Տեղական հոսքը դատա՛րկ է։ Հրապարակային մի բան գրիր շարժիչը խոդ տալու համար։",
|
||||
"empty_column.bookmarked_statuses": "Դու դեռ չունես որեւէ էջանշւած թութ։ Երբ էջանշես, դրանք կը երեւան այստեղ։",
|
||||
"empty_column.community": "Տեղական հոսքը դատարկ է։ Հրապարակային մի բան գրի՛ր շարժիչը գործարկելու համար։",
|
||||
"empty_column.direct": "Դու դեռ չունես ոչ մի հասցէագրուած հաղորդագրութիւն։ Երբ ուղարկես կամ ստանաս որեւէ անձնական նամակ, այն այստեղ կերեւայ։",
|
||||
"empty_column.domain_blocks": "Թաքցուած տիրոյթներ դեռ չկան։",
|
||||
"empty_column.favourited_statuses": "Դու դեռ չունես որեւէ հաւանած թութ։ Երբ հաւանես, դրանք կերեւան այստեղ։",
|
||||
"empty_column.favourites": "Այս թութը ոչ մէկ դեռ չի հաւանել։ Հաւանողները կերեւան այստեղ, երբ նշեն թութը հաւանած։",
|
||||
"empty_column.follow_requests": "Դու դեռ չունես որեւէ հետեւելու յայտ։ Բոլոր նման յայտերը կը յայտնուեն այստեղ։",
|
||||
"empty_column.hashtag": "Այս պիտակով դեռ ոչինչ չկա։",
|
||||
"empty_column.home": "Քո հիմնական հոսքը դատա՛րկ է։ Այցելի՛ր {public}ը կամ օգտվիր որոնումից՝ այլ մարդկանց հանդիպելու համար։",
|
||||
"empty_column.hashtag": "Այս պիտակով դեռ ոչինչ չկայ։",
|
||||
"empty_column.home": "Քո հիմնական հոսքը դատարկ է։ Այցելի՛ր {public}ը կամ օգտուիր որոնումից՝ այլ մարդկանց հանդիպելու համար։",
|
||||
"empty_column.home.public_timeline": "հրապարակային հոսք",
|
||||
"empty_column.list": "Այս ցանկում դեռ ոչինչ չկա։ Երբ ցանկի անդամներից որեւէ մեկը նոր թութ գրի, այն կհայտնվի այստեղ։",
|
||||
"empty_column.lists": "Դուք դեռ չունեք ստեղծած ցանկ։ Ցանկ ստեղծելուն պես այն կհայտնվի այստեղ։",
|
||||
"empty_column.mutes": "Առայժմ ոչ ոքի չեք լռեցրել։",
|
||||
"empty_column.list": "Այս ցանկում դեռ ոչինչ չկայ։ Երբ ցանկի անդամներից որեւէ մեկը նոր թութ գրի, այն կը յայտնուի այստեղ։",
|
||||
"empty_column.lists": "Դուք դեռ չունէք ստեղծած ցանկ։ Ցանկ ստեղծելուն պէս այն կը յայտնուի այստեղ։",
|
||||
"empty_column.mutes": "Առայժմ ոչ ոքի չէք լռեցրել։",
|
||||
"empty_column.notifications": "Ոչ մի ծանուցում դեռ չունես։ Բզիր միւսներին՝ խօսակցութիւնը սկսելու համար։",
|
||||
"empty_column.public": "Այստեղ բան չկա՛յ։ Հրապարակային մի բան գրիր կամ հետեւիր այլ հանգոյցներից էակների՝ այն լցնելու համար։",
|
||||
"error.unexpected_crash.explanation": "Մեր ծրագրակազմում վրիպակի կամ դիտարկչի անհամատեղելիութեան պատճառով այս էջը չի կարող լիարժէք պատկերուել։",
|
||||
"error.unexpected_crash.explanation_addons": "Այս էջի ճիշտ պատկերումը չի ստացում։ Խափանումը հաւանաբար առաջացել է դիտարկիչի յավելվածից կամ առցանց թարգմանիչից։",
|
||||
"error.unexpected_crash.next_steps": "Փորձիր թարմացնել էջը։ Եթե դա չօգնի ապա կարող ես օգտվել Մաստադոնից ուրիշ դիտարկիչով կամ հավելվածով։",
|
||||
"error.unexpected_crash.next_steps": "Փորձիր թարմացնել էջը։ Եթէ դա չօգնի ապա կարող ես օգտուել Մաստադոնից ուրիշ դիտարկիչով կամ յաւելուածով։",
|
||||
"error.unexpected_crash.next_steps_addons": "Փորձիր անջատել յաւելուածները եւ թարմացնել էջը։ Եթե դա չօգնի, կարող ես օգտուել Մաստադոնից այլ դիտարկիչով կամ յաւելուածով։",
|
||||
"errors.unexpected_crash.copy_stacktrace": "Պատճենել սթաքթրեյսը սեղմատախտակին",
|
||||
"errors.unexpected_crash.report_issue": "Զեկուցել խնդրի մասին",
|
||||
"follow_request.authorize": "Վավերացնել",
|
||||
"follow_request.authorize": "Վաւերացնել",
|
||||
"follow_request.reject": "Մերժել",
|
||||
"follow_requests.unlocked_explanation": "Այս հարցումը ուղարկված է հաշվից, որի համար {domain}-ի անձնակազմը միացրել է ձեռքով ստուգում։",
|
||||
"generic.saved": "Պահպանված է",
|
||||
"follow_requests.unlocked_explanation": "Այս հարցումը ուղարկուած է հաշուից, որի համար {domain}-ի անձնակազմը միացրել է ձեռքով ստուգում։",
|
||||
"generic.saved": "Պահպանուած է",
|
||||
"getting_started.developers": "Մշակողներ",
|
||||
"getting_started.directory": "Օգտատէրերի շտեմարան",
|
||||
"getting_started.documentation": "Փաստաթղթեր",
|
||||
"getting_started.heading": "Ինչպես սկսել",
|
||||
"getting_started.heading": "Ինչպէս սկսել",
|
||||
"getting_started.invite": "Հրաւիրել մարդկանց",
|
||||
"getting_started.open_source_notice": "Մաստոդոնը բաց ելատեքստով ծրագրակազմ է։ Կարող ես ներդրում անել կամ վրեպներ զեկուցել ԳիթՀաբում՝ {github}։",
|
||||
"getting_started.open_source_notice": "Մաստոդոնը բաց ելատեքստով ծրագրակազմ է։ Կարող ես ներդրում անել կամ վրէպներ զեկուցել ԳիթՀաբում՝ {github}։",
|
||||
"getting_started.security": "Հաշուի կարգաւորումներ",
|
||||
"getting_started.terms": "Ծառայութեան պայմանները",
|
||||
"hashtag.column_header.tag_mode.all": "եւ {additional}",
|
||||
"hashtag.column_header.tag_mode.any": "կամ {additional}",
|
||||
"hashtag.column_header.tag_mode.none": "առանց {additional}",
|
||||
"hashtag.column_settings.select.no_options_message": "Առաջարկներ չկան",
|
||||
"hashtag.column_settings.select.placeholder": "Ավելացրու հեշթեգեր…",
|
||||
"hashtag.column_settings.select.placeholder": "Աւելացրու պիտկներ…",
|
||||
"hashtag.column_settings.tag_mode.all": "Բոլորը",
|
||||
"hashtag.column_settings.tag_mode.any": "Ցանկացածը",
|
||||
"hashtag.column_settings.tag_mode.none": "Ոչ մեկը",
|
||||
"hashtag.column_settings.tag_toggle": "Include additional tags in this column",
|
||||
"hashtag.column_settings.tag_toggle": "Ներառել լրացուցիչ պիտակները այս սիւնակում ",
|
||||
"home.column_settings.basic": "Հիմնական",
|
||||
"home.column_settings.show_reblogs": "Ցուցադրել տարածածները",
|
||||
"home.column_settings.show_replies": "Ցուցադրել պատասխանները",
|
||||
@ -202,17 +202,17 @@
|
||||
"home.show_announcements": "Ցուցադրել յայտարարութիւնները",
|
||||
"intervals.full.days": "{number, plural, one {# օր} other {# օր}}",
|
||||
"intervals.full.hours": "{number, plural, one {# ժամ} other {# ժամ}}",
|
||||
"intervals.full.minutes": "{number, plural, one {# րոպե} other {# րոպե}}",
|
||||
"introduction.federation.action": "Հաջորդ",
|
||||
"intervals.full.minutes": "{number, plural, one {# րոպէ} other {# րոպէ}}",
|
||||
"introduction.federation.action": "Յաջորդ",
|
||||
"introduction.federation.federated.headline": "Դաշնային",
|
||||
"introduction.federation.federated.text": "Դաշնեզերքի հարեւան հանգոյցների հանրային գրառումները կը յայտնուեն դաշնային հոսքում։",
|
||||
"introduction.federation.home.headline": "Հիմնական",
|
||||
"introduction.federation.home.text": "Այն անձանց թթերը ում հետևում ես, կը յայտնուեն հիմնական հոսքում։ Դու կարող ես հետեւել ցանկացած անձի ցանկացած հանգոյցից։",
|
||||
"introduction.federation.local.headline": "Տեղային",
|
||||
"introduction.federation.local.text": "Տեղական հոսքում կարող ես տեսնել քո հանգոյցի բոլոր հանրային գրառումները։",
|
||||
"introduction.interactions.action": "Finish toot-orial!",
|
||||
"introduction.interactions.action": "Աւարտել թթի դասընթացը",
|
||||
"introduction.interactions.favourite.headline": "Նախընտրելի",
|
||||
"introduction.interactions.favourite.text": "Փոխանցիր հեղինակին որ քեզ դուր է եկել իր թութը հավանելով այն։",
|
||||
"introduction.interactions.favourite.text": "Փոխանցիր հեղինակին որ քեզ դուր է եկել իր թութը հաւանելով այն։",
|
||||
"introduction.interactions.reblog.headline": "Տարածել",
|
||||
"introduction.interactions.reblog.text": "Կիսիր այլ օգտատէրերի թութերը քո հետեւողների հետ տարածելով դրանք քո անձնական էջում։",
|
||||
"introduction.interactions.reply.headline": "Պատասխանել",
|
||||
@ -220,25 +220,25 @@
|
||||
"introduction.welcome.action": "Գնացի՜նք։",
|
||||
"introduction.welcome.headline": "Առաջին քայլեր",
|
||||
"introduction.welcome.text": "Դաշնեզերքը ողջունում է ձեզ։ Շուտով կը կարողանաս ուղարկել նամակներ ու շփուել տարբեր հանգոյցների ընկերներիդ հետ։ Բայց մտապահիր {domain} հանգոյցը, այն իւրայատուկ է, այստեղ է պահւում քո հաշիւը։",
|
||||
"keyboard_shortcuts.back": "ետ նավարկելու համար",
|
||||
"keyboard_shortcuts.blocked": "արգելափակված օգտատերերի ցանկը բացելու համար",
|
||||
"keyboard_shortcuts.back": "ետ նաւարկելու համար",
|
||||
"keyboard_shortcuts.blocked": "արգելափակուած օգտատէրերի ցանկը բացելու համար",
|
||||
"keyboard_shortcuts.boost": "տարածելու համար",
|
||||
"keyboard_shortcuts.column": "սիւներից մէկի վրայ սեւեռուելու համար",
|
||||
"keyboard_shortcuts.compose": "շարադրման տիրույթին սեւեռվելու համար",
|
||||
"keyboard_shortcuts.compose": "շարադրման տիրոյթին սեւեռուելու համար",
|
||||
"keyboard_shortcuts.description": "Նկարագրութիւն",
|
||||
"keyboard_shortcuts.direct": "հասցեագրված գրվածքների հոսքը բացելու համար",
|
||||
"keyboard_shortcuts.down": "ցանկով ներքեւ շարժվելու համար",
|
||||
"keyboard_shortcuts.direct": "հասցէագրուած գրուածքների հոսքը բացելու համար",
|
||||
"keyboard_shortcuts.down": "ցանկով ներքեւ շարժուելու համար",
|
||||
"keyboard_shortcuts.enter": "թութը բացելու համար",
|
||||
"keyboard_shortcuts.favourite": "հավանելու համար",
|
||||
"keyboard_shortcuts.favourite": "հաւանելու համար",
|
||||
"keyboard_shortcuts.favourites": "էջանիշերի ցուցակը բացելու համար",
|
||||
"keyboard_shortcuts.federated": "դաշնային հոսքին անցնելու համար",
|
||||
"keyboard_shortcuts.heading": "Ստեղնաշարի կարճատներ",
|
||||
"keyboard_shortcuts.home": "անձնական հոսքին անցնելու համար",
|
||||
"keyboard_shortcuts.hotkey": "Հատուկ ստեղն",
|
||||
"keyboard_shortcuts.hotkey": "Յատուկ ստեղն",
|
||||
"keyboard_shortcuts.legend": "այս ձեռնարկը ցուցադրելու համար",
|
||||
"keyboard_shortcuts.local": "տեղական հոսքին անցնելու համար",
|
||||
"keyboard_shortcuts.mention": "հեղինակին նշելու համար",
|
||||
"keyboard_shortcuts.muted": "լռեցված օգտատերերի ցանկը բացելու համար",
|
||||
"keyboard_shortcuts.muted": "լռեցուած օգտատէրերի ցանկը բացելու համար",
|
||||
"keyboard_shortcuts.my_profile": "սեփական էջին անցնելու համար",
|
||||
"keyboard_shortcuts.notifications": "ծանուցումների սիւնակը բացելու համար",
|
||||
"keyboard_shortcuts.open_media": "ցուցադրել մեդիան",
|
||||
@ -247,41 +247,41 @@
|
||||
"keyboard_shortcuts.reply": "պատասխանելու համար",
|
||||
"keyboard_shortcuts.requests": "հետեւելու հայցերի ցանկը դիտելու համար",
|
||||
"keyboard_shortcuts.search": "որոնման դաշտին սեւեռվելու համար",
|
||||
"keyboard_shortcuts.spoilers": "որպեսզի ցուցադրվի/թաքցվի CW դաշտը",
|
||||
"keyboard_shortcuts.spoilers": "որպէսզի ցուցադրուի/թաքցուի CW դաշտը",
|
||||
"keyboard_shortcuts.start": "«սկսել» սիւնակը բացելու համար",
|
||||
"keyboard_shortcuts.toggle_hidden": "CW֊ի ետեւի տեքստը ցուցադրել֊թաքցնելու համար",
|
||||
"keyboard_shortcuts.toggle_sensitivity": "մեդիան ցուցադրել֊թաքցնելու համար",
|
||||
"keyboard_shortcuts.toot": "թարմ թութ սկսելու համար",
|
||||
"keyboard_shortcuts.unfocus": "տեքստի/որոնման տիրույթից ապասեւեռվելու համար",
|
||||
"keyboard_shortcuts.up": "ցանկով վերեւ շարժվելու համար",
|
||||
"keyboard_shortcuts.unfocus": "տեքստի/որոնման տիրոյթից ապասեւեռուելու համար",
|
||||
"keyboard_shortcuts.up": "ցանկով վերեւ շարժուելու համար",
|
||||
"lightbox.close": "Փակել",
|
||||
"lightbox.compress": "Compress image view box",
|
||||
"lightbox.expand": "Expand image view box",
|
||||
"lightbox.next": "Հաջորդ",
|
||||
"lightbox.compress": "Փակել պատկերի դիտման պատուհանը",
|
||||
"lightbox.expand": "Բացել պատկերի դիտման պատուհանը",
|
||||
"lightbox.next": "Յաջորդ",
|
||||
"lightbox.previous": "Նախորդ",
|
||||
"lists.account.add": "Ավելացնել ցանկին",
|
||||
"lists.account.add": "Աւելացնել ցանկին",
|
||||
"lists.account.remove": "Հանել ցանկից",
|
||||
"lists.delete": "Ջնջել ցանկը",
|
||||
"lists.edit": "Փոփոխել ցանկը",
|
||||
"lists.edit.submit": "Փոխել վերնագիրը",
|
||||
"lists.new.create": "Ավելացնել ցանկ",
|
||||
"lists.new.create": "Աւելացնել ցանկ",
|
||||
"lists.new.title_placeholder": "Նոր ցանկի վերնագիր",
|
||||
"lists.replies_policy.followed": "Any followed user",
|
||||
"lists.replies_policy.list": "Members of the list",
|
||||
"lists.replies_policy.followed": "Ցանկացած հետեւող օգտատէր",
|
||||
"lists.replies_policy.list": "Ցանկի անդամներ",
|
||||
"lists.replies_policy.none": "Ոչ ոք",
|
||||
"lists.replies_policy.title": "Show replies to:",
|
||||
"lists.search": "Փնտրել քո հետեւած մարդկանց մեջ",
|
||||
"lists.replies_policy.title": "Ցուցադրել պատասխանները՝",
|
||||
"lists.search": "Փնտրել քո հետեւած մարդկանց մէջ",
|
||||
"lists.subheading": "Քո ցանկերը",
|
||||
"load_pending": "{count, plural, one {# նոր նիւթ} other {# նոր նիւթ}}",
|
||||
"loading_indicator.label": "Բեռնվում է…",
|
||||
"loading_indicator.label": "Բեռնւում է…",
|
||||
"media_gallery.toggle_visible": "Ցուցադրել/թաքցնել",
|
||||
"missing_indicator.label": "Չգտնվեց",
|
||||
"missing_indicator.label": "Չգտնուեց",
|
||||
"missing_indicator.sublabel": "Պաշարը չի գտնւում",
|
||||
"mute_modal.duration": "Տևողություն",
|
||||
"mute_modal.duration": "Տեւողութիւն",
|
||||
"mute_modal.hide_notifications": "Թաքցնե՞լ ցանուցումներն այս օգտատիրոջից։",
|
||||
"mute_modal.indefinite": "Անժամկետ",
|
||||
"mute_modal.indefinite": "Անժամկէտ",
|
||||
"navigation_bar.apps": "Դիւրակիր յաւելուածներ",
|
||||
"navigation_bar.blocks": "Արգելափակված օգտատերեր",
|
||||
"navigation_bar.blocks": "Արգելափակուած օգտատէրեր",
|
||||
"navigation_bar.bookmarks": "Էջանիշեր",
|
||||
"navigation_bar.community_timeline": "Տեղական հոսք",
|
||||
"navigation_bar.compose": "Գրել նոր թութ",
|
||||
@ -297,13 +297,13 @@
|
||||
"navigation_bar.keyboard_shortcuts": "Ստեղնաշարի կարճատներ",
|
||||
"navigation_bar.lists": "Ցանկեր",
|
||||
"navigation_bar.logout": "Դուրս գալ",
|
||||
"navigation_bar.mutes": "Լռեցրած օգտատերեր",
|
||||
"navigation_bar.mutes": "Լռեցրած օգտատէրեր",
|
||||
"navigation_bar.personal": "Անձնական",
|
||||
"navigation_bar.pins": "Ամրացված թթեր",
|
||||
"navigation_bar.pins": "Ամրացուած թթեր",
|
||||
"navigation_bar.preferences": "Նախապատուութիւններ",
|
||||
"navigation_bar.public_timeline": "Դաշնային հոսք",
|
||||
"navigation_bar.security": "Անվտանգութիւն",
|
||||
"notification.favourite": "{name} հավանեց թութդ",
|
||||
"notification.favourite": "{name} հաւանեց թութդ",
|
||||
"notification.follow": "{name} սկսեց հետեւել քեզ",
|
||||
"notification.follow_request": "{name} քեզ հետեւելու հայց է ուղարկել",
|
||||
"notification.mention": "{name} նշեց քեզ",
|
||||
@ -333,17 +333,17 @@
|
||||
"notifications.filter.follows": "Հետեւածները",
|
||||
"notifications.filter.mentions": "Նշումները",
|
||||
"notifications.filter.polls": "Հարցման արդիւնքները",
|
||||
"notifications.filter.statuses": "Updates from people you follow",
|
||||
"notifications.filter.statuses": "Թարմացումներ հետեւորդներից",
|
||||
"notifications.grant_permission": "Թոյլատրել։",
|
||||
"notifications.group": "{count} ծանուցում",
|
||||
"notifications.mark_as_read": "Համարել բոլոր ծանուցումները ընթերցած",
|
||||
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
|
||||
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
|
||||
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
|
||||
"notifications.permission_denied": "Աշխատատիրոյթի ծանուցումներն անհասանելի են՝ դիտարկչի նախկինում մերժուած թոյլտուութիւնների հայցման հետեւանքով",
|
||||
"notifications.permission_denied_alert": "Աշխատատիրոյթի ծանուցումները չեն կարող միացուել, քանի որ դիտարկչի թոյլտուութիւնները նախկինում մերժուել են",
|
||||
"notifications.permission_required": "Աշխատատիրոյթի ծանուցումներն անհասանելի են, քանի որ անհրաժեշտ թոյլտուութիւնները բացակայում են։",
|
||||
"notifications_permission_banner.enable": "Միացնել դիտարկչից ծանուցումները",
|
||||
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
|
||||
"notifications_permission_banner.title": "Never miss a thing",
|
||||
"picture_in_picture.restore": "Հետ բերել",
|
||||
"notifications_permission_banner.how_to_control": "Ծանուցումներ ստանալու համար, երբ Մաստոդոնը բաց չէ՝ ակտիւացրու աշխատատիրոյթի ծանուցումները։ Դու կարող ես ճշգրտօրէն վերահսկել թէ ինչպիսի փոխգործակցութիւններ առաջանան աշխատատիրոյթի ծանուցումներից՝ {icon}ի կոճակով՝ այն ակտիւացնելուց յետոյ։",
|
||||
"notifications_permission_banner.title": "Ոչինչ բաց մի թող",
|
||||
"picture_in_picture.restore": "Յետ բերել",
|
||||
"poll.closed": "Փակ",
|
||||
"poll.refresh": "Թարմացնել",
|
||||
"poll.total_people": "{count, plural, one {# հոգի} other {# հոգի}}",
|
||||
@ -353,8 +353,8 @@
|
||||
"poll_button.add_poll": "Աւելացնել հարցում",
|
||||
"poll_button.remove_poll": "Հեռացնել հարցումը",
|
||||
"privacy.change": "Կարգաւորել թթի գաղտնիութիւնը",
|
||||
"privacy.direct.long": "Թթել միայն նշված օգտատերերի համար",
|
||||
"privacy.direct.short": "Հասցեագրված",
|
||||
"privacy.direct.long": "Թթել միայն նշուած օգտատէրերի համար",
|
||||
"privacy.direct.short": "Հասցէագրուած",
|
||||
"privacy.private.long": "Թթել միայն հետեւողների համար",
|
||||
"privacy.private.short": "Միայն հետեւողներին",
|
||||
"privacy.public.long": "Թթել հրապարակային հոսքերում",
|
||||
@ -378,12 +378,12 @@
|
||||
"report.submit": "Ուղարկել",
|
||||
"report.target": "Բողոքել {target}֊ի մասին",
|
||||
"search.placeholder": "Փնտրել",
|
||||
"search_popout.search_format": "Փնտրելու առաջադեմ ձեւ",
|
||||
"search_popout.search_format": "Փնտրելու առաջադէմ ձեւ",
|
||||
"search_popout.tips.full_text": "Պարզ տեքստը վերադարձնում է գրառումներդ, հաւանածներդ, տարածածներդ, որտեղ ես նշուած եղել, ինչպէս նաեւ նման օգտանուններ, անուններ եւ պիտակներ։",
|
||||
"search_popout.tips.hashtag": "պիտակ",
|
||||
"search_popout.tips.status": "թութ",
|
||||
"search_popout.tips.text": "Հասարակ տեքստը կվերադարձնի համընկնող անուններ, օգտանուններ ու պիտակներ",
|
||||
"search_popout.tips.user": "օգտատեր",
|
||||
"search_popout.tips.text": "Հասարակ տեքստը կը վերադարձնի համընկնող անուններ, օգտանուններ ու պիտակներ",
|
||||
"search_popout.tips.user": "օգտատէր",
|
||||
"search_results.accounts": "Մարդիկ",
|
||||
"search_results.hashtags": "Պիտակներ",
|
||||
"search_results.statuses": "Թթեր",
|
||||
@ -394,14 +394,14 @@
|
||||
"status.block": "Արգելափակել @{name}֊ին",
|
||||
"status.bookmark": "Էջանիշ",
|
||||
"status.cancel_reblog_private": "Ապատարածել",
|
||||
"status.cannot_reblog": "Այս թութը չի կարող տարածվել",
|
||||
"status.copy": "Պատճենել գրառման հղումը",
|
||||
"status.cannot_reblog": "Այս թութը չի կարող տարածուել",
|
||||
"status.copy": "Պատճէնել գրառման յղումը",
|
||||
"status.delete": "Ջնջել",
|
||||
"status.detailed_status": "Շղթայի ընդլայնված դիտում",
|
||||
"status.detailed_status": "Շղթայի ընդլայնուած դիտում",
|
||||
"status.direct": "Նամակ գրել {name} -ին",
|
||||
"status.embed": "Ներդնել",
|
||||
"status.favourite": "Հավանել",
|
||||
"status.filtered": "Զտված",
|
||||
"status.favourite": "Հաւանել",
|
||||
"status.filtered": "Զտուած",
|
||||
"status.load_more": "Բեռնել աւելին",
|
||||
"status.media_hidden": "մեդիաբովանդակութիւնը թաքցուած է",
|
||||
"status.mention": "Նշել @{name}֊ին",
|
||||
@ -410,7 +410,7 @@
|
||||
"status.mute_conversation": "Լռեցնել խօսակցութիւնը",
|
||||
"status.open": "Ընդարձակել այս թութը",
|
||||
"status.pin": "Ամրացնել անձնական էջում",
|
||||
"status.pinned": "Ամրացված թութ",
|
||||
"status.pinned": "Ամրացուած թութ",
|
||||
"status.read_more": "Կարդալ աւելին",
|
||||
"status.reblog": "Տարածել",
|
||||
"status.reblog_private": "Տարածել սեփական լսարանին",
|
||||
@ -419,10 +419,10 @@
|
||||
"status.redraft": "Ջնջել եւ վերակազմել",
|
||||
"status.remove_bookmark": "Հեռացնել էջանիշերից",
|
||||
"status.reply": "Պատասխանել",
|
||||
"status.replyAll": "Պատասխանել թելին",
|
||||
"status.replyAll": "Պատասխանել շղթային",
|
||||
"status.report": "Բողոքել @{name}֊ից",
|
||||
"status.sensitive_warning": "Կասկածելի բովանդակութիւն",
|
||||
"status.share": "Կիսվել",
|
||||
"status.share": "Կիսուել",
|
||||
"status.show_less": "Պակաս",
|
||||
"status.show_less_all": "Թաքցնել բոլոր նախազգուշացնումները",
|
||||
"status.show_more": "Աւելին",
|
||||
@ -432,7 +432,7 @@
|
||||
"status.unmute_conversation": "Ապալռեցնել խօսակցութիւնը",
|
||||
"status.unpin": "Հանել անձնական էջից",
|
||||
"suggestions.dismiss": "Անտեսել առաջարկը",
|
||||
"suggestions.header": "Միգուցե քեզ հետաքրքրի…",
|
||||
"suggestions.header": "Միգուցէ քեզ հետաքրքրի…",
|
||||
"tabs_bar.federated_timeline": "Դաշնային",
|
||||
"tabs_bar.home": "Հիմնական",
|
||||
"tabs_bar.local_timeline": "Տեղական",
|
||||
@ -440,41 +440,41 @@
|
||||
"tabs_bar.search": "Փնտրել",
|
||||
"time_remaining.days": "{number, plural, one {մնաց # օր} other {մնաց # օր}}",
|
||||
"time_remaining.hours": "{number, plural, one {# ժամ} other {# ժամ}} անց",
|
||||
"time_remaining.minutes": "{number, plural, one {# րոպե} other {# րոպե}} անց",
|
||||
"time_remaining.minutes": "{number, plural, one {# րոպէ} other {# րոպէ}} անց",
|
||||
"time_remaining.moments": "Մնացել է մի քանի վարկեան",
|
||||
"time_remaining.seconds": "{number, plural, one {# վարկեան} other {# վարկեան}} անց",
|
||||
"timeline_hint.remote_resource_not_displayed": "{resource} այլ սպասարկիչներից չեն ցուցադրվել:",
|
||||
"timeline_hint.resources.followers": "Հետևորդներ",
|
||||
"timeline_hint.resources.follows": "Հետևել",
|
||||
"timeline_hint.resources.follows": "Հետեւել",
|
||||
"timeline_hint.resources.statuses": "Հին թութեր",
|
||||
"trends.counter_by_accounts": "{count, plural, one {{counter} մարդ} other {{counter} մարդիկ}} խօսում են",
|
||||
"trends.trending_now": "Այժմ արդիական",
|
||||
"ui.beforeunload": "Քո սեւագիրը կկորի, եթե լքես Մաստոդոնը։",
|
||||
"ui.beforeunload": "Քո սեւագիրը կը կորի, եթէ լքես Մաստոդոնը։",
|
||||
"units.short.billion": "{count}մլրդ",
|
||||
"units.short.million": "{count}մլն",
|
||||
"units.short.thousand": "{count}Հազ.",
|
||||
"upload_area.title": "Քաշիր ու նետիր՝ վերբեռնելու համար",
|
||||
"upload_button.label": "Ավելացնել մեդիա",
|
||||
"upload_error.limit": "Ֆայլի վերբեռնման սահմանաչափը գերազանցված է։",
|
||||
"upload_button.label": "Աւելացնել մեդիա",
|
||||
"upload_error.limit": "Նիշքի վերբեռնման սահմանաչափը գերազանցուած է։",
|
||||
"upload_error.poll": "Հարցումների հետ նիշք կցել հնարաւոր չէ։",
|
||||
"upload_form.audio_description": "Նկարագրիր ձայնագրութեան բովանդակութիւնը լսողական խնդիրներով անձանց համար",
|
||||
"upload_form.description": "Նկարագիր՝ տեսողական խնդիրներ ունեցողների համար",
|
||||
"upload_form.edit": "Խմբագրել",
|
||||
"upload_form.thumbnail": "Փոխել պատկերակը",
|
||||
"upload_form.undo": "Հետարկել",
|
||||
"upload_form.undo": "Յետարկել",
|
||||
"upload_form.video_description": "Նկարագրիր տեսանիւթը լսողական կամ տեսողական խնդիրներով անձանց համար",
|
||||
"upload_modal.analyzing_picture": "Լուսանկարի վերլուծում…",
|
||||
"upload_modal.apply": "Կիրառել",
|
||||
"upload_modal.choose_image": "Ընտրել նկար",
|
||||
"upload_modal.description_placeholder": "Բել դղյակի ձախ ժամն օֆ ազգությանը ցպահանջ չճշտած վնաս էր եւ փառք։",
|
||||
"upload_modal.detect_text": "Հայտնբերել տեքստը նկարից",
|
||||
"upload_modal.description_placeholder": "Բել դղեակի ձախ ժամն օֆ ազգութեանը ցպահանջ չճշտած վնաս էր եւ փառք։",
|
||||
"upload_modal.detect_text": "Յայտնաբերել տեքստը նկարից",
|
||||
"upload_modal.edit_media": "Խմբագրել մեդիան",
|
||||
"upload_modal.hint": "Սեղմէք եւ տեղաշարժէք նախադիտման շրջանակը՝ որ ընտրէք մանրապատկերում միշտ տեսանելի կէտը։",
|
||||
"upload_modal.preparing_ocr": "Գրաճանաչման նախապատրաստում…",
|
||||
"upload_modal.preview_label": "Նախադիտում ({ratio})",
|
||||
"upload_progress.label": "Վերբեռնվում է…",
|
||||
"video.close": "Փակել տեսագրութիւնը",
|
||||
"video.download": "Ներբեռնել ֆայլը",
|
||||
"video.download": "Ներբեռնել նիշքը",
|
||||
"video.exit_fullscreen": "Անջատել լիաէկրան դիտումը",
|
||||
"video.expand": "Ընդարձակել տեսագրութիւնը",
|
||||
"video.fullscreen": "Լիաէկրան",
|
||||
|
@ -38,7 +38,7 @@
|
||||
"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": "പ്രൊഫൈലിൽ പ്രകടമാക്കാതിരിക്കുക",
|
||||
@ -250,8 +250,8 @@
|
||||
"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": "മീഡിയ കാണിക്കുന്നതിനും/മറയ്ക്കുന്നതിനും",
|
||||
"keyboard_shortcuts.toot": "ഒരു പുതിയ ടൂട്ട് ആരംഭിക്കാൻ",
|
||||
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
|
||||
"keyboard_shortcuts.up": "to move up in the list",
|
||||
"lightbox.close": "അടയ്ക്കുക",
|
||||
@ -269,7 +269,7 @@
|
||||
"lists.replies_policy.followed": "Any followed user",
|
||||
"lists.replies_policy.list": "Members of the list",
|
||||
"lists.replies_policy.none": "ആരുമില്ല",
|
||||
"lists.replies_policy.title": "Show replies to:",
|
||||
"lists.replies_policy.title": "ഇതിനുള്ള മറുപടികൾ കാണിക്കുക:",
|
||||
"lists.search": "Search among people you follow",
|
||||
"lists.subheading": "എന്റെ പട്ടികകൾ",
|
||||
"load_pending": "{count, plural, one {# new item} other {# new items}}",
|
||||
@ -305,14 +305,14 @@
|
||||
"navigation_bar.security": "സുരക്ഷ",
|
||||
"notification.favourite": "{name} favourited your status",
|
||||
"notification.follow": "{name} നിങ്ങളെ പിന്തുടർന്നു",
|
||||
"notification.follow_request": "{name} has requested to follow you",
|
||||
"notification.follow_request": "{name} നിങ്ങളെ പിന്തുടരാൻ അഭ്യർത്ഥിച്ചു",
|
||||
"notification.mention": "{name} mentioned you",
|
||||
"notification.own_poll": "നിങ്ങളുടെ പോൾ അവസാനിച്ചു",
|
||||
"notification.poll": "A poll you have voted in has ended",
|
||||
"notification.reblog": "{name} നിങ്ങളുടെ പോസ്റ്റ് ബൂസ്റ്റ് ചെയ്തു",
|
||||
"notification.status": "{name} ഇപ്പോൾ പോസ്റ്റുചെയ്തു",
|
||||
"notifications.clear": "അറിയിപ്പ് മായ്ക്കുക",
|
||||
"notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
|
||||
"notifications.clear_confirmation": "നിങ്ങളുടെ എല്ലാ അറിയിപ്പുകളും ശാശ്വതമായി മായ്ക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?",
|
||||
"notifications.column_settings.alert": "ഡെസ്ക്ടോപ്പ് അറിയിപ്പുകൾ",
|
||||
"notifications.column_settings.favourite": "പ്രിയപ്പെട്ടവ:",
|
||||
"notifications.column_settings.filter_bar.advanced": "എല്ലാ വിഭാഗങ്ങളും പ്രദർശിപ്പിക്കുക",
|
||||
@ -349,14 +349,14 @@
|
||||
"poll.total_people": "{count, plural, one {# person} other {# people}}",
|
||||
"poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
|
||||
"poll.vote": "വോട്ട് ചെയ്യുക",
|
||||
"poll.voted": "You voted for this answer",
|
||||
"poll.voted": "ഈ ഉത്തരത്തിനായി നിങ്ങൾ വോട്ട് ചെയ്തു",
|
||||
"poll_button.add_poll": "ഒരു പോൾ ചേർക്കുക",
|
||||
"poll_button.remove_poll": "പോൾ നീക്കംചെയ്യുക",
|
||||
"privacy.change": "Adjust status privacy",
|
||||
"privacy.change": "ടൂട്ട് സ്വകാര്യത ക്രമീകരിക്കുക",
|
||||
"privacy.direct.long": "Post to mentioned users only",
|
||||
"privacy.direct.short": "നേരിട്ട്",
|
||||
"privacy.private.long": "Post to followers only",
|
||||
"privacy.private.short": "Followers-only",
|
||||
"privacy.private.short": "പിന്തുടരുന്നവർക്ക് മാത്രം",
|
||||
"privacy.public.long": "Post to public timelines",
|
||||
"privacy.public.short": "Public",
|
||||
"privacy.unlisted.long": "Do not show in public timelines",
|
||||
@ -372,7 +372,7 @@
|
||||
"relative_time.today": "ഇന്ന്",
|
||||
"reply_indicator.cancel": "റദ്ദാക്കുക",
|
||||
"report.forward": "Forward to {target}",
|
||||
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
|
||||
"report.forward_hint": "ഈ അക്കൗണ്ട് മറ്റൊരു സെർവറിൽ നിന്നാണ്. റിപ്പോർട്ടിന്റെ അജ്ഞാത പകർപ്പ് അവിടെ അയയ്ക്കണോ?",
|
||||
"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": "കൂടുതൽ അഭിപ്രായങ്ങൾ",
|
||||
"report.submit": "സമർപ്പിക്കുക",
|
||||
@ -420,14 +420,14 @@
|
||||
"status.remove_bookmark": "ബുക്ക്മാർക്ക് നീക്കംചെയ്യുക",
|
||||
"status.reply": "മറുപടി",
|
||||
"status.replyAll": "Reply to thread",
|
||||
"status.report": "Report @{name}",
|
||||
"status.report": "@{name}--നെ റിപ്പോർട്ട് ചെയ്യുക",
|
||||
"status.sensitive_warning": "Sensitive content",
|
||||
"status.share": "പങ്കിടുക",
|
||||
"status.show_less": "കുറച്ച് കാണിക്കുക",
|
||||
"status.show_less_all": "Show less for all",
|
||||
"status.show_more": "കൂടുതകൽ കാണിക്കുക",
|
||||
"status.show_more_all": "എല്ലാവർക്കുമായി കൂടുതൽ കാണിക്കുക",
|
||||
"status.show_thread": "Show thread",
|
||||
"status.show_thread": "ത്രെഡ് കാണിക്കുക",
|
||||
"status.uncached_media_warning": "ലഭ്യമല്ല",
|
||||
"status.unmute_conversation": "Unmute conversation",
|
||||
"status.unpin": "Unpin from profile",
|
||||
@ -463,24 +463,24 @@
|
||||
"upload_form.thumbnail": "ലഘുചിത്രം മാറ്റുക",
|
||||
"upload_form.undo": "ഇല്ലാതാക്കുക",
|
||||
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
|
||||
"upload_modal.analyzing_picture": "Analyzing picture…",
|
||||
"upload_modal.analyzing_picture": "ചിത്രം വിശകലനം ചെയ്യുന്നു…",
|
||||
"upload_modal.apply": "പ്രയോഗിക്കുക",
|
||||
"upload_modal.choose_image": "ചിത്രം തിരഞ്ഞെടുക്കുക",
|
||||
"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": "മീഡിയ തിരുത്തുക",
|
||||
"upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
|
||||
"upload_modal.preparing_ocr": "Preparing OCR…",
|
||||
"upload_modal.preparing_ocr": "OCR തയ്യാറാക്കുന്നു…",
|
||||
"upload_modal.preview_label": "Preview ({ratio})",
|
||||
"upload_progress.label": "Uploading…",
|
||||
"video.close": "വീഡിയോ അടയ്ക്കുക",
|
||||
"video.download": "ഫയൽ ഡൌൺലോഡ് ചെയ്യുക",
|
||||
"video.exit_fullscreen": "Exit full screen",
|
||||
"video.exit_fullscreen": "പൂർണ്ണ സ്ക്രീനിൽ നിന്ന് പുറത്തുകടക്കുക",
|
||||
"video.expand": "Expand video",
|
||||
"video.fullscreen": "പൂർണ്ണ സ്ക്രീൻ",
|
||||
"video.hide": "വീഡിയോ മറയ്ക്കുക",
|
||||
"video.mute": "Mute sound",
|
||||
"video.pause": "Pause",
|
||||
"video.play": "Play",
|
||||
"video.play": "പ്ലേ",
|
||||
"video.unmute": "Unmute sound"
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"account.account_note_header": "Viết nhận xét",
|
||||
"account.account_note_header": "Ghi chú",
|
||||
"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",
|
||||
@ -425,10 +425,10 @@
|
||||
"status.share": "Chia sẻ",
|
||||
"status.show_less": "Thu gọn",
|
||||
"status.show_less_all": "Thu gọn toàn bộ",
|
||||
"status.show_more": "Mở rộng",
|
||||
"status.show_more": "Xem thêm",
|
||||
"status.show_more_all": "Hiển thị tất cả",
|
||||
"status.show_thread": "Liên quan",
|
||||
"status.uncached_media_warning": "Giới hạn",
|
||||
"status.show_thread": "Toàn bộ chủ đề",
|
||||
"status.uncached_media_warning": "Uncached",
|
||||
"status.unmute_conversation": "Quan tâm",
|
||||
"status.unpin": "Bỏ ghim trên trang cá nhân",
|
||||
"suggestions.dismiss": "Tắt đề xuất",
|
||||
|
@ -154,6 +154,11 @@
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.layout-multiple-columns &.button--with-bell {
|
||||
font-size: 12px;
|
||||
padding: 0 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.column__wrapper {
|
||||
@ -2879,6 +2884,7 @@ a.account__display-name {
|
||||
flex: 0 0 auto;
|
||||
padding: 10px;
|
||||
padding-top: 20px;
|
||||
z-index: 1;
|
||||
|
||||
ul {
|
||||
margin-bottom: 10px;
|
||||
@ -7194,21 +7200,6 @@ noscript {
|
||||
.audio-player {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 415px) {
|
||||
width: 210px;
|
||||
bottom: 10px;
|
||||
right: 10px;
|
||||
|
||||
&__footer {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.video-player,
|
||||
.audio-player {
|
||||
border-radius: 0 0 4px 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.picture-in-picture-placeholder {
|
||||
|
@ -444,6 +444,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
.logo-button {
|
||||
padding: 3px 15px;
|
||||
}
|
||||
|
||||
&__image {
|
||||
border-radius: 4px 4px 0 0;
|
||||
overflow: hidden;
|
||||
|
@ -170,6 +170,11 @@ body.rtl {
|
||||
right: 42px;
|
||||
}
|
||||
|
||||
.account__header__tabs__buttons > .icon-button {
|
||||
margin-right: 0;
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.account__avatar-overlay-overlay {
|
||||
right: auto;
|
||||
left: 0;
|
||||
|
@ -83,9 +83,14 @@
|
||||
background: $ui-highlight-color;
|
||||
color: $primary-text-color;
|
||||
text-transform: none;
|
||||
line-height: 36px;
|
||||
line-height: 1.2;
|
||||
height: auto;
|
||||
padding: 3px 15px;
|
||||
min-height: 36px;
|
||||
min-width: 88px;
|
||||
white-space: normal;
|
||||
overflow-wrap: break-word;
|
||||
hyphens: auto;
|
||||
padding: 0 15px;
|
||||
border: 0;
|
||||
|
||||
svg {
|
||||
@ -126,6 +131,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
a.button.logo-button {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.embed,
|
||||
.public-layout {
|
||||
.status__content[data-spoiler=folded] {
|
||||
|
@ -97,8 +97,8 @@ module AccountInteractions
|
||||
has_many :announcement_mutes, dependent: :destroy
|
||||
end
|
||||
|
||||
def follow!(other_account, reblogs: nil, notify: nil, uri: nil, rate_limit: false)
|
||||
rel = active_relationships.create_with(show_reblogs: reblogs.nil? ? true : reblogs, notify: notify.nil? ? false : notify, uri: uri, rate_limit: rate_limit)
|
||||
def follow!(other_account, reblogs: nil, notify: nil, uri: nil, rate_limit: false, bypass_limit: false)
|
||||
rel = active_relationships.create_with(show_reblogs: reblogs.nil? ? true : reblogs, notify: notify.nil? ? false : notify, uri: uri, rate_limit: rate_limit, bypass_follow_limit: bypass_limit)
|
||||
.find_or_create_by!(target_account: other_account)
|
||||
|
||||
rel.show_reblogs = reblogs unless reblogs.nil?
|
||||
@ -111,8 +111,8 @@ module AccountInteractions
|
||||
rel
|
||||
end
|
||||
|
||||
def request_follow!(other_account, reblogs: nil, notify: nil, uri: nil, rate_limit: false)
|
||||
rel = follow_requests.create_with(show_reblogs: reblogs.nil? ? true : reblogs, notify: notify.nil? ? false : notify, uri: uri, rate_limit: rate_limit)
|
||||
def request_follow!(other_account, reblogs: nil, notify: nil, uri: nil, rate_limit: false, bypass_limit: false)
|
||||
rel = follow_requests.create_with(show_reblogs: reblogs.nil? ? true : reblogs, notify: notify.nil? ? false : notify, uri: uri, rate_limit: rate_limit, bypass_follow_limit: bypass_limit)
|
||||
.find_or_create_by!(target_account: other_account)
|
||||
|
||||
rel.show_reblogs = reblogs unless reblogs.nil?
|
||||
|
17
app/models/concerns/follow_limitable.rb
Normal file
17
app/models/concerns/follow_limitable.rb
Normal file
@ -0,0 +1,17 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module FollowLimitable
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
validates_with FollowLimitValidator, on: :create, unless: :bypass_follow_limit?
|
||||
end
|
||||
|
||||
def bypass_follow_limit=(value)
|
||||
@bypass_follow_limit = value
|
||||
end
|
||||
|
||||
def bypass_follow_limit?
|
||||
@bypass_follow_limit
|
||||
end
|
||||
end
|
@ -17,6 +17,7 @@ class Follow < ApplicationRecord
|
||||
include Paginable
|
||||
include RelationshipCacheable
|
||||
include RateLimitable
|
||||
include FollowLimitable
|
||||
|
||||
rate_limit by: :account, family: :follows
|
||||
|
||||
@ -26,7 +27,6 @@ class Follow < ApplicationRecord
|
||||
has_one :notification, as: :activity, dependent: :destroy
|
||||
|
||||
validates :account_id, uniqueness: { scope: :target_account_id }
|
||||
validates_with FollowLimitValidator, on: :create, if: :rate_limit?
|
||||
|
||||
scope :recent, -> { reorder(id: :desc) }
|
||||
|
||||
|
@ -17,6 +17,7 @@ class FollowRequest < ApplicationRecord
|
||||
include Paginable
|
||||
include RelationshipCacheable
|
||||
include RateLimitable
|
||||
include FollowLimitable
|
||||
|
||||
rate_limit by: :account, family: :follows
|
||||
|
||||
@ -26,7 +27,6 @@ class FollowRequest < ApplicationRecord
|
||||
has_one :notification, as: :activity, dependent: :destroy
|
||||
|
||||
validates :account_id, uniqueness: { scope: :target_account_id }
|
||||
validates_with FollowLimitValidator, on: :create, if: :rate_limit?
|
||||
|
||||
def authorize!
|
||||
account.follow!(target_account, reblogs: show_reblogs, notify: notify, uri: uri)
|
||||
|
@ -1,15 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class REST::AccountFeaturedTagSerializer < ActiveModel::Serializer
|
||||
include RoutingHelper
|
||||
|
||||
attributes :id, :name, :url
|
||||
|
||||
def id
|
||||
object.tag.id.to_s
|
||||
end
|
||||
|
||||
def url
|
||||
short_account_tag_url(object.account, object.tag)
|
||||
end
|
||||
end
|
@ -1,9 +1,15 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class REST::FeaturedTagSerializer < ActiveModel::Serializer
|
||||
attributes :id, :name, :statuses_count, :last_status_at
|
||||
include RoutingHelper
|
||||
|
||||
attributes :id, :name, :url, :statuses_count, :last_status_at
|
||||
|
||||
def id
|
||||
object.id.to_s
|
||||
end
|
||||
|
||||
def url
|
||||
short_account_tag_url(object.account, object.tag)
|
||||
end
|
||||
end
|
||||
|
@ -32,7 +32,7 @@ class BatchedRemoveStatusService < BaseService
|
||||
|
||||
# Since we skipped all callbacks, we also need to manually
|
||||
# deindex the statuses
|
||||
Chewy.strategy.current.update(StatusesIndex, statuses_and_reblogs) if Chewy.enabled?
|
||||
Chewy.strategy.current.update(StatusesIndex::Status, statuses_and_reblogs) if Chewy.enabled?
|
||||
|
||||
return if options[:skip_side_effects]
|
||||
|
||||
|
@ -142,6 +142,7 @@ class DeleteAccountService < BaseService
|
||||
purge_user!
|
||||
purge_profile!
|
||||
purge_statuses!
|
||||
purge_mentions!
|
||||
purge_media_attachments!
|
||||
purge_polls!
|
||||
purge_generated_notifications!
|
||||
@ -159,6 +160,10 @@ class DeleteAccountService < BaseService
|
||||
end
|
||||
end
|
||||
|
||||
def purge_mentions!
|
||||
@account.mentions.reorder(nil).where.not(status_id: reported_status_ids).in_batches.delete_all
|
||||
end
|
||||
|
||||
def purge_media_attachments!
|
||||
@account.media_attachments.reorder(nil).find_each do |media_attachment|
|
||||
next if keep_account_record? && reported_status_ids.include?(media_attachment.status_id)
|
||||
@ -182,7 +187,7 @@ class DeleteAccountService < BaseService
|
||||
@account.favourites.in_batches do |favourites|
|
||||
ids = favourites.pluck(:status_id)
|
||||
StatusStat.where(status_id: ids).update_all('favourites_count = GREATEST(0, favourites_count - 1)')
|
||||
Chewy.strategy.current.update(StatusesIndex, ids) if Chewy.enabled?
|
||||
Chewy.strategy.current.update(StatusesIndex::Status, ids) if Chewy.enabled?
|
||||
# Rails.cache.delete_multi would be better, but we don't have it yet
|
||||
ids.each { |id| Rails.cache.delete("statuses/#{id}") }
|
||||
favourites.delete_all
|
||||
@ -191,7 +196,7 @@ class DeleteAccountService < BaseService
|
||||
|
||||
def purge_bookmarks!
|
||||
@account.bookmarks.in_batches do |bookmarks|
|
||||
Chewy.strategy.current.update(StatusesIndex, bookmarks.pluck(:status_id)) if Chewy.enabled?
|
||||
Chewy.strategy.current.update(StatusesIndex::Status, bookmarks.pluck(:status_id)) if Chewy.enabled?
|
||||
bookmarks.delete_all
|
||||
end
|
||||
end
|
||||
|
@ -11,11 +11,12 @@ class FollowService < BaseService
|
||||
# @option [Boolean] :reblogs Whether or not to show reblogs, defaults to true
|
||||
# @option [Boolean] :notify Whether to create notifications about new posts, defaults to false
|
||||
# @option [Boolean] :bypass_locked
|
||||
# @option [Boolean] :bypass_limit Allow following past the total follow number
|
||||
# @option [Boolean] :with_rate_limit
|
||||
def call(source_account, target_account, options = {})
|
||||
@source_account = source_account
|
||||
@target_account = ResolveAccountService.new.call(target_account, skip_webfinger: true)
|
||||
@options = { bypass_locked: false, with_rate_limit: false }.merge(options)
|
||||
@options = { bypass_locked: false, bypass_limit: false, with_rate_limit: false }.merge(options)
|
||||
|
||||
raise ActiveRecord::RecordNotFound if following_not_possible?
|
||||
raise Mastodon::NotPermittedError if following_not_allowed?
|
||||
@ -54,7 +55,7 @@ class FollowService < BaseService
|
||||
end
|
||||
|
||||
def request_follow!
|
||||
follow_request = @source_account.request_follow!(@target_account, reblogs: @options[:reblogs], notify: @options[:notify], rate_limit: @options[:with_rate_limit])
|
||||
follow_request = @source_account.request_follow!(@target_account, reblogs: @options[:reblogs], notify: @options[:notify], rate_limit: @options[:with_rate_limit], bypass_limit: @options[:bypass_limit])
|
||||
|
||||
if @target_account.local?
|
||||
LocalNotificationWorker.perform_async(@target_account.id, follow_request.id, follow_request.class.name, :follow_request)
|
||||
@ -66,7 +67,7 @@ class FollowService < BaseService
|
||||
end
|
||||
|
||||
def direct_follow!
|
||||
follow = @source_account.follow!(@target_account, reblogs: @options[:reblogs], notify: @options[:notify], rate_limit: @options[:with_rate_limit])
|
||||
follow = @source_account.follow!(@target_account, reblogs: @options[:reblogs], notify: @options[:notify], rate_limit: @options[:with_rate_limit], bypass_limit: @options[:bypass_limit])
|
||||
|
||||
LocalNotificationWorker.perform_async(@target_account.id, follow.id, follow.class.name, :follow)
|
||||
MergeWorker.perform_async(@target_account.id, @source_account.id)
|
||||
|
@ -65,10 +65,16 @@ class SuspendAccountService < BaseService
|
||||
attachment = media_attachment.public_send(attachment_name)
|
||||
styles = [:original] | attachment.styles.keys
|
||||
|
||||
next if attachment.blank?
|
||||
|
||||
styles.each do |style|
|
||||
case Paperclip::Attachment.default_options[:storage]
|
||||
when :s3
|
||||
attachment.s3_object(style).acl.put(acl: 'private')
|
||||
begin
|
||||
attachment.s3_object(style).acl.put(acl: 'private')
|
||||
rescue Aws::S3::Errors::NoSuchKey
|
||||
Rails.logger.warn "Tried to change acl on non-existent key #{attachment.s3_object(style).key}"
|
||||
end
|
||||
when :fog
|
||||
# Not supported
|
||||
when :filesystem
|
||||
|
@ -56,10 +56,16 @@ class UnsuspendAccountService < BaseService
|
||||
attachment = media_attachment.public_send(attachment_name)
|
||||
styles = [:original] | attachment.styles.keys
|
||||
|
||||
next if attachment.blank?
|
||||
|
||||
styles.each do |style|
|
||||
case Paperclip::Attachment.default_options[:storage]
|
||||
when :s3
|
||||
attachment.s3_object(style).acl.put(acl: Paperclip::Attachment.default_options[:s3_permissions])
|
||||
begin
|
||||
attachment.s3_object(style).acl.put(acl: Paperclip::Attachment.default_options[:s3_permissions])
|
||||
rescue Aws::S3::Errors::NoSuchKey
|
||||
Rails.logger.warn "Tried to change acl on non-existent key #{attachment.s3_object(style).key}"
|
||||
end
|
||||
when :fog
|
||||
# Not supported
|
||||
when :filesystem
|
||||
|
@ -14,7 +14,7 @@
|
||||
- unless status.proper.media_attachments.empty?
|
||||
- if status.proper.media_attachments.first.video?
|
||||
- video = status.proper.media_attachments.first
|
||||
= react_component :video, src: video.file.url(:original), preview: video.file.url(:small), blurhash: video.blurhash, sensitive: status.proper.sensitive?, visible: false, width: 610, height: 343, inline: true, alt: video.description
|
||||
= react_component :video, src: video.file.url(:original), preview: video.file.url(:small), frameRate: video.file.meta.dig('original', 'frame_rate'), blurhash: video.blurhash, sensitive: status.proper.sensitive?, visible: false, width: 610, height: 343, inline: true, alt: video.description, media: [ActiveModelSerializers::SerializableResource.new(video, serializer: REST::MediaAttachmentSerializer)].as_json
|
||||
- elsif status.proper.media_attachments.first.audio?
|
||||
- audio = status.proper.media_attachments.first
|
||||
= react_component :audio, src: audio.file.url(:original), height: 110, alt: audio.description, duration: audio.file.meta.dig(:original, :duration)
|
||||
|
@ -10,7 +10,7 @@
|
||||
= render partial: 'layouts/theme', object: @theme
|
||||
|
||||
- if @media_attachment.video?
|
||||
= react_component :video, src: @media_attachment.file.url(:original), preview: @media_attachment.thumbnail.present? ? @media_attachment.thumbnail.url : @media_attachment.file.url(:small), blurhash: @media_attachment.blurhash, width: 670, height: 380, editable: true, detailed: true, inline: true, alt: @media_attachment.description do
|
||||
= react_component :video, src: @media_attachment.file.url(:original), preview: @media_attachment.thumbnail.present? ? @media_attachment.thumbnail.url : @media_attachment.file.url(:small), frameRate: @media_attachment.file.meta.dig('original', 'frame_rate'), blurhash: @media_attachment.blurhash, width: 670, height: 380, editable: true, detailed: true, inline: true, alt: @media_attachment.description, media: [ActiveModelSerializers::SerializableResource.new(@media_attachment, serializer: REST::MediaAttachmentSerializer)].as_json do
|
||||
%video{ controls: 'controls' }
|
||||
%source{ src: @media_attachment.file.url(:original) }
|
||||
- elsif @media_attachment.gifv?
|
||||
|
@ -29,7 +29,7 @@
|
||||
- if !status.media_attachments.empty?
|
||||
- if status.media_attachments.first.video?
|
||||
- video = status.media_attachments.first
|
||||
= react_component :video, src: full_asset_url(video.file.url(:original)), preview: full_asset_url(video.thumbnail.present? ? video.thumbnail.url : video.file.url(:small)), blurhash: video.blurhash, sensitive: sensitized?(status, current_account), width: 670, height: 380, detailed: true, inline: true, alt: video.description do
|
||||
= react_component :video, src: full_asset_url(video.file.url(:original)), preview: full_asset_url(video.thumbnail.present? ? video.thumbnail.url : video.file.url(:small)), frameRate: video.file.meta.dig('original', 'frame_rate'), blurhash: video.blurhash, sensitive: sensitized?(status, current_account), width: 670, height: 380, detailed: true, inline: true, alt: video.description, media: [ActiveModelSerializers::SerializableResource.new(video, serializer: REST::MediaAttachmentSerializer)].as_json do
|
||||
= render partial: 'statuses/attachment_list', locals: { attachments: status.media_attachments }
|
||||
- elsif status.media_attachments.first.audio?
|
||||
- audio = status.media_attachments.first
|
||||
|
@ -38,7 +38,7 @@
|
||||
- if !status.media_attachments.empty?
|
||||
- if status.media_attachments.first.video?
|
||||
- video = status.media_attachments.first
|
||||
= react_component :video, src: full_asset_url(video.file.url(:original)), preview: full_asset_url(video.thumbnail.present? ? video.thumbnail.url : video.file.url(:small)), blurhash: video.blurhash, sensitive: sensitized?(status, current_account), width: 610, height: 343, inline: true, alt: video.description do
|
||||
= react_component :video, src: full_asset_url(video.file.url(:original)), preview: full_asset_url(video.thumbnail.present? ? video.thumbnail.url : video.file.url(:small)), frameRate: video.file.meta.dig('original', 'frame_rate'), blurhash: video.blurhash, sensitive: sensitized?(status, current_account), width: 610, height: 343, inline: true, alt: video.description, media: [ActiveModelSerializers::SerializableResource.new(video, serializer: REST::MediaAttachmentSerializer)].as_json do
|
||||
= render partial: 'statuses/attachment_list', locals: { attachments: status.media_attachments }
|
||||
- elsif status.media_attachments.first.audio?
|
||||
- audio = status.media_attachments.first
|
||||
|
@ -7,7 +7,7 @@ class AuthorizeFollowWorker
|
||||
source_account = Account.find(source_account_id)
|
||||
target_account = Account.find(target_account_id)
|
||||
|
||||
AuthorizeFollowService.new.call(source_account, target_account)
|
||||
AuthorizeFollowService.new.call(source_account, target_account, bypass_limit: true)
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
true
|
||||
end
|
||||
|
@ -15,7 +15,11 @@ class Import::RelationshipWorker
|
||||
|
||||
case relationship
|
||||
when 'follow'
|
||||
FollowService.new.call(from_account, target_account, options)
|
||||
begin
|
||||
FollowService.new.call(from_account, target_account, options)
|
||||
rescue ActiveRecord::RecordInvalid
|
||||
raise if FollowLimitValidator.limit_for_account(from_account) < from_account.following_count
|
||||
end
|
||||
when 'unfollow'
|
||||
UnfollowService.new.call(from_account, target_account)
|
||||
when 'block'
|
||||
|
@ -19,7 +19,7 @@ class RefollowWorker
|
||||
|
||||
# Schedule re-follow
|
||||
begin
|
||||
FollowService.new.call(follower, target_account, reblogs: reblogs, notify: notify)
|
||||
FollowService.new.call(follower, target_account, reblogs: reblogs, notify: notify, bypass_limit: true)
|
||||
rescue Mastodon::NotPermittedError, ActiveRecord::RecordNotFound, Mastodon::UnexpectedResponseError, HTTP::Error, OpenSSL::SSL::SSLError
|
||||
next
|
||||
end
|
||||
|
@ -14,7 +14,7 @@ class UnfollowFollowWorker
|
||||
reblogs = follow&.show_reblogs?
|
||||
notify = follow&.notify?
|
||||
|
||||
FollowService.new.call(follower_account, new_target_account, reblogs: reblogs, notify: notify, bypass_locked: bypass_locked)
|
||||
FollowService.new.call(follower_account, new_target_account, reblogs: reblogs, notify: notify, bypass_locked: bypass_locked, bypass_limit: true)
|
||||
UnfollowService.new.call(follower_account, old_target_account, skip_unmerge: true)
|
||||
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
|
||||
true
|
||||
|
@ -60,6 +60,23 @@ hy:
|
||||
title: 2FA վերականգնման կոդերը փոփոխուել են
|
||||
unlock_instructions:
|
||||
subject: Մաստոդոն․ Ապակողպելու նկարագրութիւնները
|
||||
webauthn_credential:
|
||||
added:
|
||||
explanation: Հետեւեալ անվտանգութեան բանալին է աւելացուել հաշուիդ
|
||||
subject: Մաստոդոն․ Նոր անվտանգութեան բանալի
|
||||
title: Նոր անվտանգութեան բանալի է աւելացուել
|
||||
deleted:
|
||||
explanation: Հետեւեալ անվտանգութեան բանալին քո հաշուից ջնջուել է
|
||||
subject: Մաստոդոն․ Անվտանգութեան բանալին ջնջուել է
|
||||
title: Անվտանգութեան բանալիներիցդ մեկը ջնջուել է
|
||||
webauthn_disabled:
|
||||
explanation: Անվտանգութեան բանալիներով նոյնականացումը քո հաշուից կասեցուել է։ Մուտք գործելն այժմ հնարաւոր է՝ օգտագործելով միայն զուգաւորուած TOTP յաւելուածից գեներացուած կտրօնը։
|
||||
subject: Մաստոդոն․ Նոյնականացումն անվտանգութեան բանալիներով կասեցուած է
|
||||
title: Անվտանգութեան բանալիները կասեցուել են
|
||||
webauthn_enabled:
|
||||
explanation: Անվտանգութեան բանալիով նոյնականացումը քո հաշուի համար միացուած է։ Քո անվտանգութեան բանալին այժմ կարող է օգտագործուել մուտք գործելու համար։
|
||||
subject: Մաստոդոն․ Անվտանգութեան բանալիով նոյնականացումը միացուած է
|
||||
title: Անվտանգութեան բանալիները միացուել են
|
||||
omniauth_callbacks:
|
||||
failure: Նոյնականացնել հնարաւոր չեղաւ %{kind}ից քանի որ %{reason}։
|
||||
success: Յաջողութեամբ նոյնականացուեց %{kind} հաշուից։
|
||||
|
@ -45,6 +45,7 @@ hy:
|
||||
silenced_title: Լռեցուած սպասարկիչներ
|
||||
suspended: Ոչ մի տուեալ այս սպասարկիչներից չի գործարկուում, պահուում կամ փոխանակուում, կատարել որեւէ գործողութիւն կամ հաղորդակցութիւն այս սպասարկիչի օգտատէրերի հետ անհնար է․
|
||||
suspended_title: Կասեցուած սպասարկիչներ
|
||||
unavailable_content_html: Մաստոդոնն ընդհանրապէս թոյլատրում է տեսնել բովանդակութիւնը եւ շփուել այլ դաշնեզերքի այլ հանգոյցների հետ։ Սրանք բացառութիւններն են, որոնք կիրառուել են հէնց այս հանգոյցի համար։
|
||||
user_count_after:
|
||||
one: օգտատեր
|
||||
other: օգտատերեր
|
||||
@ -52,11 +53,14 @@ hy:
|
||||
what_is_mastodon: Ի՞նչ է Մաստոդոնը
|
||||
accounts:
|
||||
choices_html: "%{name}-ի ընտրանի՝"
|
||||
endorsements_hint: Վէբ ինտերֆէյսից կարող ես ցուցադրել մարդկանց, որոնց հետեւում ես, եւ նրանք կը ցուցադրուեն այստեղ։
|
||||
featured_tags_hint: Դու կարող ես ցուցադրել յատուկ պիտակներ, որոնք կը ցուցադրուեն այստեղ։
|
||||
follow: Հետևել
|
||||
followers:
|
||||
one: Հետևորդ
|
||||
other: Հետևորդներ
|
||||
following: Հետևում եք
|
||||
instance_actor_flash: Այս հաշիւը վիրտուալ դերասան է, որը ներկայացնում է հանգոյցը, եւ ոչ որեւէ անհատ օգտատիրոջ։ Այն օգտագործուում է ֆեդերացիայի նպատակներով եւ չպէտք է կասեցուի։
|
||||
joined: Միացել են %{date}
|
||||
last_active: վերջին թութը
|
||||
link_verified_on: Սոյն յղման տիրապետումը ստուգուած է՝ %{date}֊ին
|
||||
@ -67,6 +71,8 @@ hy:
|
||||
nothing_here: Այստեղ բան չկայ
|
||||
people_followed_by: Մարդիկ, որոնց %{name}ը հետեւում է
|
||||
people_who_follow: Մարդիկ, որոնք հետեւում են %{name}ին
|
||||
pin_errors:
|
||||
following: Դու պէտք է հետեւես մարդուն, որին ցանկանում ես խրախուսել
|
||||
posts:
|
||||
one: Թութ
|
||||
other: Թութերից
|
||||
@ -83,6 +89,7 @@ hy:
|
||||
admin:
|
||||
account_actions:
|
||||
action: Կատարել գործողութիւն
|
||||
title: Իրականացնել մոդերատորական գործողութիւններ %{acct}-ի վրայ
|
||||
account_moderation_notes:
|
||||
create: Թողնել նշում
|
||||
created_msg: Մոդերացիոն նոթը բարեյաջող ստեղծուեց
|
||||
@ -92,6 +99,7 @@ hy:
|
||||
add_email_domain_block: Արգելափակել էլ․ փոստի տիրոյթը
|
||||
approve: Ընդունել
|
||||
approve_all: Ընդունել բոլորը
|
||||
approved_msg: Յաջողութեամբ հաստատուեց %{username}֊ի գրանցման յայտը
|
||||
are_you_sure: Վստա՞հ ես
|
||||
avatar: Աւատար
|
||||
by_domain: Դոմէն
|
||||
@ -108,6 +116,7 @@ hy:
|
||||
delete: Ջնջել տվյալները
|
||||
deleted: Ջնջված է
|
||||
demote: Աստիճանազրկել
|
||||
destroyed_msg: "%{username}֊ի տուեալները հերթագրուել է անյապաղ ջնջուողների շարքում"
|
||||
disable: Անջատել
|
||||
disable_two_factor_authentication: Անջատել 2FA
|
||||
disabled: Անջատված է
|
||||
@ -118,10 +127,12 @@ hy:
|
||||
email_status: Էլ․ փոստի կարգավիճակ
|
||||
enable: Միացնել
|
||||
enabled: Միացված է
|
||||
enabled_msg: "%{username}֊ի հաշիւը բարեյաջող ապասառեցուեց"
|
||||
followers: Հետևորդներ
|
||||
follows: Հետևողներ
|
||||
header: Վերնագիր
|
||||
inbox_url: Մուտքային URL
|
||||
invite_request_text: Միանալու պատճառները
|
||||
invited_by: Հրաւիրուել է
|
||||
ip: IP
|
||||
joined: Միացած է
|
||||
@ -133,6 +144,8 @@ hy:
|
||||
login_status: Մուտքի կարգավիճակ
|
||||
media_attachments: Մեդիա կցորդներ
|
||||
memorialize: Դարձնել հիշատակարան
|
||||
memorialized: Յիշեցուած
|
||||
memorialized_msg: Բարեյաջող %{username}֊ը փոխուեց յիշատակի հաշուի
|
||||
moderation:
|
||||
active: Ակտիվ
|
||||
all: Բոլորը
|
||||
@ -143,6 +156,7 @@ hy:
|
||||
moderation_notes: Մոդերացիայի նշումներ
|
||||
most_recent_activity: Վերջին ակտիւութիւնը
|
||||
most_recent_ip: Վերջին IP
|
||||
no_account_selected: Ոչ մի հաշիւ չի փոխուել, ինչպէս նաեւ, ոչ մեկը չի ընտրուել
|
||||
no_limits_imposed: Սահմանափակումներ չկան
|
||||
not_subscribed: Բաժանորդագրուած չէ
|
||||
pending: Սպասում է վերանայման
|
||||
@ -150,11 +164,16 @@ hy:
|
||||
promote: Աջակցել
|
||||
protocol: Հաղորդակարգ
|
||||
public: Հրապարակային
|
||||
push_subscription_expires: PuSH բաժանորդագրութիւնը սպառուում է
|
||||
redownload: Թարմացնել հաշիւը
|
||||
redownloaded_msg: "%{username}֊ի հաշիւը սկզբնաղբիւրից բարեյաջող թարմացուեց"
|
||||
reject: Մերժել
|
||||
reject_all: Մերժել բոլորը
|
||||
rejected_msg: Յաջողութեամբ մերժուեց %{username}֊ի գրանցման յայտը
|
||||
remove_avatar: Հեռացնել աւատարը
|
||||
remove_header: Հեռացնել գլխագիրը
|
||||
removed_avatar_msg: Յաջողութեամբ հեռացուեց %{username}֊ի աւատարը
|
||||
removed_header_msg: Յաջողութեամբ հեռացուեց %{username}֊ի գլխանկարը
|
||||
resend_confirmation:
|
||||
already_confirmed: Օգտատէրն արդէն հաստատուած է
|
||||
send: Հաստատման իմակն ուղարկել կրկին
|
||||
@ -172,6 +191,8 @@ hy:
|
||||
search_same_email_domain: Այլ օգտատէրեր նոյն էլ․ փոստի դոմէյնով
|
||||
search_same_ip: Այլ օգտատէրեր նոյն IP֊ով
|
||||
sensitive: Զգայուն
|
||||
sensitized: նշուեց որպէս դիւրազգաց
|
||||
shared_inbox_url: Ընդհանուր մուտքային URL
|
||||
show:
|
||||
created_reports: Կազմել բողոքներ
|
||||
targeted_reports: Այլոց կողմից բողոքարկուած
|
||||
@ -180,15 +201,22 @@ hy:
|
||||
statuses: Գրառումներ
|
||||
subscribe: Բաժանորդագրուել
|
||||
suspended: Կասեցուած
|
||||
suspension_irreversible: Հաշուի տուեալները անդարձ ջնջուեցին։ Դու կարող ես ապակասեցնել հաշիւը՝ դարձնելով այն կիրառելի, բայց այն չի վերականգնի նախկին տուեալները։
|
||||
suspension_reversible_hint_html: Հաշիւը կասեցուեց, եւ տուեալներն ամբողջապէս կը վերացուի %{date}ին։ Մինչեւ այդ, հաշիւը կարող է վերականգնուել՝ առանց կողմնակի ազդեցութիւնների։ Եթէ ցանկանում ես վերացնել հաշուի տուեալները միանգամից, կարող ես դա անել ներքեւում։
|
||||
time_in_queue: Հերթում է %{time}
|
||||
title: Հաշիւներ
|
||||
unconfirmed_email: Չհաստատուած էլ․ հասցէ
|
||||
undo_sensitized: Ետարկել դիւրազգացութիւնը
|
||||
undo_silenced: Ետարկել լռեցումը
|
||||
undo_suspension: Ետարկել կասեցումը
|
||||
unsilenced_msg: "%{username}֊ի հաշիւը բարեյաջող դարձաւ անսահմանափակ"
|
||||
unsubscribe: Ապաբաժանորդագրուել
|
||||
unsuspended_msg: "%{username}֊ի հաշիւ բարեյաջող ապակասեցուեց։"
|
||||
username: Մուտքանուն
|
||||
view_domain: Տեսնել տիրոյթի ամփոփումը
|
||||
warn: Նախազգուշացում
|
||||
web: Վեբ
|
||||
whitelisted: Թոյլատրել ֆեդերացիայի համար
|
||||
action_logs:
|
||||
action_types:
|
||||
assigned_to_self_report: Բողոքել
|
||||
@ -197,9 +225,13 @@ hy:
|
||||
create_account_warning: Ստեղծել զգուշացում
|
||||
create_announcement: Ստեղծել յայտարարութիւն
|
||||
create_custom_emoji: Ստեղծել սեփական էմոջիները
|
||||
create_domain_allow: Ստեղծել տիրոյթի թոյլտուութիւն
|
||||
create_domain_block: Ստեղծել տիրոյթի արգելափակում
|
||||
create_email_domain_block: Ստեղծել էլ․ հասցէի դոմէյնի արգելափակում
|
||||
create_ip_block: Ստեղծել IP կանոն
|
||||
demote_user: Աստիճանազրկել օգտատիրոջը
|
||||
destroy_announcement: Ջնջել յայտարարութիւնը
|
||||
destroy_custom_emoji: Ջնջել էմոջին
|
||||
destroy_domain_allow: Ջնջել դոմէնի թոյլտուութիւնը
|
||||
destroy_domain_block: Ապաարգելափակել դոմէնը
|
||||
destroy_email_domain_block: Ապաարգելափակել էլ․ հասցէի դոմէնը
|
||||
@ -216,13 +248,16 @@ hy:
|
||||
reopen_report: Վերաբացել բողոքը
|
||||
reset_password_user: Վերականգնել գաղտանաբառը
|
||||
resolve_report: Լուծարել զեկոյցը
|
||||
sensitive_account: Հաշուի մեդիան նշել որպէս դիւրազգաց
|
||||
silence_account: Լռեցնել հաշիւը
|
||||
suspend_account: Կասեցնել հաշիւը
|
||||
unassigned_report: Հանել բողոքը
|
||||
unsensitive_account: Հաշուի մեդիան չնշել որպէս դիւրազգաց
|
||||
unsilence_account: Լսել հաշուին
|
||||
unsuspend_account: Ապակասեցնել հաշիւը
|
||||
update_announcement: Թարմացնել յայտարարութիւնը
|
||||
update_custom_emoji: Թարմացնել սեփական էմոջիները
|
||||
update_domain_block: Թարմացնել տիրոյթի արգելափակումը
|
||||
update_status: Թարմացնել գրառումը
|
||||
actions:
|
||||
assigned_to_self_report: "%{name} բողոքել է %{target} իրենց համար"
|
||||
@ -230,13 +265,23 @@ hy:
|
||||
confirm_user: "%{name} հաստատել է %{target} օգտատիրոջ էլ․ հասցէն"
|
||||
create_account_warning: "%{name} զգուշացրել է %{target}ին"
|
||||
create_announcement: "%{name} ստեղծեց նոր յայտարարութիւն %{target}"
|
||||
create_custom_emoji: "%{name} վերբեռնել է նոր էմոջի՝ %{target}"
|
||||
create_domain_allow: "%{name} թոյլատրել ֆեդերացիան %{target} տիրոյթի հետ"
|
||||
create_domain_block: "%{name} արգելափակեց %{target} տիրոյթը"
|
||||
create_email_domain_block: "%{name} արգելափակեց էլ․ փոստի տիրոյթ %{target}"
|
||||
create_ip_block: "%{name} ստեղծեց կանոն %{target} IP֊ի համար"
|
||||
demote_user: "%{name} աստիճանազրկեց օգտատիրոջ %{target}"
|
||||
destroy_announcement: "%{name} ջնջեց յայտարարութիւն %{target}"
|
||||
destroy_custom_emoji: "%{name} ջնջել է %{target} էմոջին"
|
||||
destroy_domain_allow: "%{name} չթոյլատրեց ֆեդերացիան %{target} տիրոյթի հետ"
|
||||
destroy_domain_block: "%{name} ապաարգելափակեց տիրոյթ %{target}"
|
||||
destroy_email_domain_block: "%{name} ապաարգելափակեց էլ․ փոստի տիրոյթ %{target}"
|
||||
destroy_ip_block: "%{name} ջնջեց կանոնը %{target} IP֊ի համար"
|
||||
destroy_status: "%{name} ջնջեց %{target}ի գրառում"
|
||||
disable_2fa_user: "%{name}ը կասեցրեց 2F պահանջը %{target} օգտատիրոջ համար"
|
||||
disable_custom_emoji: "%{name} ապակտիւացրել է %{target} էմոջին"
|
||||
disable_user: "%{name} անջատել է մուտքը %{target} օգտատիրոջ համար"
|
||||
enable_custom_emoji: "%{name} ակտիվացրել է %{target} էմոջին"
|
||||
enable_user: "%{name} թոյլատրեց մուտք %{target} օգտատիրոջ համար"
|
||||
memorialize_account: "%{name} դարձրեց %{target}ի հաշիւը յիշատակի էջ"
|
||||
promote_user: "%{name} աջակցեց օգտատիրոջը %{target}"
|
||||
@ -244,9 +289,17 @@ hy:
|
||||
reopen_report: "%{name} վերաբացեց բողոք %{target}"
|
||||
reset_password_user: "%{name} վերականգնեց օգտատիրոջ գաղտնաբառը %{target}"
|
||||
resolve_report: "%{name} լուծարեց բողոքը %{target}"
|
||||
sensitive_account: "%{name}ը նշեց %{target}ի մեդիան որպէս զգայուն"
|
||||
silence_account: "%{name} լռեցրեց %{target}ի հաշիւը"
|
||||
suspend_account: "%{name} լռեցրեց %{target}ի հաշիւը"
|
||||
unassigned_report: "%{name} չսահմանուած բողոք %{target}"
|
||||
unsensitive_account: "%{name}ը հեռացրեց %{target}֊ի մեդիայի զգայուն նշումը"
|
||||
unsilence_account: "%{name}֊ը հանեց լռեցումը %{target}֊ի հաշուից"
|
||||
unsuspend_account: "%{name}ը ապակասեցրեց %{target}ի հաշիւը"
|
||||
update_announcement: "%{name}ը թարմացրեց %{target}ի յայտարարութիւնը"
|
||||
update_custom_emoji: "%{name} թարմացրել է %{target} էմոջին"
|
||||
update_domain_block: "%{name}ը թարմացրեց %{target}ի տիրոյթի արգելափակումը"
|
||||
update_status: "%{name}ը թարմացրեց %{target}ի կարգավիճակը"
|
||||
deleted_status: "(ջնջուած գրառում)"
|
||||
empty: Ոչ մի գրառում չկայ։
|
||||
filter_by_action: Զտել ըստ գործողութեան
|
||||
@ -270,35 +323,48 @@ hy:
|
||||
custom_emojis:
|
||||
assign_category: Կցել կատեգորիա
|
||||
by_domain: Տիրոյթ
|
||||
copied_msg: Էմոջիի տեղական օրինակը հաջողութեամբ ստեղծուած է
|
||||
copy: Պատճենել
|
||||
copy_failed_msg: Չյաջողւեց ստեղծել էմոջիի տեղական օրինակ
|
||||
create_new_category: Ստեղծել նոր կատեգորիա
|
||||
created_msg: Էմոջին յաջողութեամբ ստեղծուեց
|
||||
delete: Ջնջել
|
||||
destroyed_msg: Էմոջին յաջողութեամբ ջնջուեց
|
||||
disable: Անջատել
|
||||
disabled: Անջատուած
|
||||
disabled_msg: Յաջողութեամբ կասեցուեց էմոջին
|
||||
emoji: Զմայլիկ
|
||||
enable: Միացնել
|
||||
enabled: Միացուած
|
||||
enabled_msg: Յաջողութեամբ միացուեց էմոջին
|
||||
image_hint: PNG մինչեւ 50KB
|
||||
list: Ցանկ
|
||||
listed: Ցուցակագրուած
|
||||
new:
|
||||
title: Աւելացնել նոր էմոջի
|
||||
not_permitted: Տուեալ գործողութիւնն անելու թոյլտուութիւն չունես
|
||||
overwrite: Վերագրել
|
||||
shortcode: Հապավում
|
||||
shortcode_hint: Ամենաքիչը 2 նիշ, միայն այբբենական նիշեր, թուեր եւ ընդգծիկներ
|
||||
title: Սեփական էմօջիներ
|
||||
uncategorized: Չդասակարգուած
|
||||
unlist: Ապացուցակագրում
|
||||
unlisted: Ծածուկ
|
||||
update_failed_msg: Էմոջին չի կարող թարմացուել
|
||||
updated_msg: Էմոջին թարմացուեց
|
||||
upload: Վերբեռնել
|
||||
dashboard:
|
||||
authorized_fetch_mode: Անվտանգ եղանակ
|
||||
config: Կարգաւորում
|
||||
feature_deletions: Հաշուի հեռացումներ
|
||||
feature_invites: Հրաւէրի յղումներ
|
||||
feature_profile_directory: Օգտատիրոջ մատեան
|
||||
feature_registrations: Գրանցումներ
|
||||
feature_relay: Ֆեդերացիայի շերտ
|
||||
feature_spam_check: Հակա-սպամ
|
||||
feature_timeline_preview: Հոսքի նախադիտում
|
||||
features: Յատկանիշներ
|
||||
hidden_service: Ֆեդերացիա թաքնուած ծառայութիւնների հետ
|
||||
open_reports: բաց բողոքներ
|
||||
pending_tags: պիտակներն սպասում են վերանայման
|
||||
pending_users: օգտատէրերն սպասում են վերանայման
|
||||
@ -316,7 +382,12 @@ hy:
|
||||
whitelist_mode: Սահմանափակ ֆեդերացիայի ռեժիմ
|
||||
domain_allows:
|
||||
add_new: Թոյլատրել ֆեդերացիա տիրոյթի հետ
|
||||
created_msg: Տիրոյթը յաջողութեամբ թոյլատրուեց ֆեդերացուելու
|
||||
undo: Չթոյլատրել ֆեդերացիան տիրոյթի հետ
|
||||
domain_blocks:
|
||||
add_new: Աւելացնել նոր տիրոյթի արգելափակում
|
||||
created_msg: Տիրոյթի արգելափակումն ընթացաւ
|
||||
destroyed_msg: Տիրոյթի արգելափակումը ետարկուեց
|
||||
domain: Տիրոյթ
|
||||
edit: Խմբագրել տիրոյթի արգելափակումը
|
||||
new:
|
||||
@ -336,6 +407,7 @@ hy:
|
||||
silence: լռեցուած
|
||||
suspend: կասեցուած
|
||||
show:
|
||||
title: Ետարկել տիրոյթի արգելափակումը %{domain}ի համար
|
||||
undo: Ետարկել
|
||||
undo: Ետարկել տիրոյթի արգելափակումը
|
||||
view: Տեսնել տիրոյթի արգելափակումը
|
||||
@ -379,6 +451,7 @@ hy:
|
||||
title: Հրաւէրներ
|
||||
ip_blocks:
|
||||
add_new: Ստեղծել կանոն
|
||||
created_msg: Բարեյաջող աւելացուեց նոր IP կանոն
|
||||
delete: Ջնջել
|
||||
expires_in:
|
||||
'1209600': 2 շաբաթ
|
||||
@ -409,6 +482,9 @@ hy:
|
||||
notes:
|
||||
one: "%{count} նոթ"
|
||||
other: "%{count} նոթեր"
|
||||
reports:
|
||||
one: "%{count} զեկոյց"
|
||||
other: "%{count} զեկոյց"
|
||||
action_taken_by: Գործողութիւնը կատարել է
|
||||
are_you_sure: Վստա՞հ ես
|
||||
assign_to_self: Ինձ յանձնարարուած
|
||||
@ -441,6 +517,8 @@ hy:
|
||||
all: Բոլորին
|
||||
disabled: Ոչ մէկին
|
||||
title: Ցուցադրել տիրոյթը արգելափակումները
|
||||
hero:
|
||||
title: Հերոսի պատկեր
|
||||
profile_directory:
|
||||
desc_html: Թոյլատրել օգտատէրերին բացայայտուել
|
||||
title: Միացնել հաշուի մատեանը
|
||||
@ -513,6 +591,7 @@ hy:
|
||||
advanced_web_interface: Սյունակավոր ինտերֆեյս
|
||||
advanced_web_interface_hint: Եթէ ցանկանում ես օգտագործել էկրանիդ ամբողջ լայնքը, ապա ընդլայնուած վեբ ինտերֆեյսով հնարաւոր է էկրանը բաժանել սիւնակների՝ զուգահեռ տեսնելու տարբեր տիպի ինֆորմացիա՝ տեղական հոսքը, ծանուցումները, ֆեդերացված հոսքը, և ցանկացած թվի ցուցակ ու հեշթեգ։
|
||||
animations_and_accessibility: Անիմացիաներ եւ հասանելիութիւն
|
||||
confirmation_dialogs: Հաստատման պատուհաններ
|
||||
discovery: Բացայայտում
|
||||
localization:
|
||||
body: Մաստոդոնը թարգմանուում է կամաւորների կողմից։
|
||||
@ -533,6 +612,8 @@ hy:
|
||||
checkbox_agreement_html: Ես համաձայն եմ <a href="%{rules_path}" target="_blank">սպասարկչի կայանքներին</a> և <a href="%{terms_path}" target="_blank">ծառայությունների պայմաններին</a>
|
||||
checkbox_agreement_without_rules_html: Ես համաձայն եմ <a href="%{terms_path}" target="_blank">ծառայությունների պայմաններին</a>
|
||||
delete_account: Ջնջել հաշիվը
|
||||
description:
|
||||
prefix_sign_up: Գրանցուի՛ր Մաստոդոնում հենց այսօր
|
||||
forgot_password: Մոռացե՞լ ես գաղտնաբառդ
|
||||
login: Մտնել
|
||||
logout: Դուրս գալ
|
||||
@ -664,6 +745,8 @@ hy:
|
||||
status: Հաստատման կարգավիճակ
|
||||
view_proof: Նայել ապացոյցը
|
||||
imports:
|
||||
errors:
|
||||
over_rows_processing_limit: տողերի քանակը աւելին է քան %{count}-ը
|
||||
modes:
|
||||
merge: Միաւորել
|
||||
overwrite: Վերագրել
|
||||
@ -786,6 +869,7 @@ hy:
|
||||
safari: Safari
|
||||
uc_browser: UCBrowser
|
||||
weibo: Weibo
|
||||
description: "%{browser}, %{platform}"
|
||||
ip: IP
|
||||
platforms:
|
||||
adobe_air: Adobe Air
|
||||
@ -830,6 +914,9 @@ hy:
|
||||
image:
|
||||
one: "%{count} նկար"
|
||||
other: "%{count} նկար"
|
||||
video:
|
||||
one: "%{count} վիդեո"
|
||||
other: "%{count} վիդեո"
|
||||
language_detection: Ինքնուրոյն ճանաչել լեզուն
|
||||
open_in_web: Բացել վէբում
|
||||
over_character_limit: "%{max} նիշի սահմանը գերազանցուած է"
|
||||
@ -976,6 +1063,7 @@ hy:
|
||||
welcome:
|
||||
edit_profile_action: Կարգաւորել հաշիւը
|
||||
final_action: Սկսել թթել
|
||||
final_step: 'Սկսիր թթե՛լ։ Անգամ առանց հետեւորդների քո հանրային գրառումներ կարող են երևալ ուրիշների մօտ, օրինակ՝ տեղական հոսում կամ հեշթեգերում։ Թէ ցանկանաս, կարող ես յայտնել քո մասին օգտագործելով #եսնորեկեմ հեշթեգը։'
|
||||
review_preferences_action: Փոփոխել կարգաւորումները
|
||||
subject: Բարի գալուստ Մաստոդոն
|
||||
tip_federated_timeline: Դաշնային հոսքում երևում է ամբողջ Մաստոդոնի ցանցը։ Բայց այն ներառում է միայն այն օգտատերերին որոնց բաժանորդագրուած են ձեր հարևաններ, այդ պատճառով այն կարող է լինել ոչ ամբողջական։
|
||||
@ -994,4 +1082,5 @@ hy:
|
||||
verification: Ստուգում
|
||||
webauthn_credentials:
|
||||
delete: Ջնջել
|
||||
not_enabled: WebAuthn-ը դեռ միացուած չէ
|
||||
registered_on: Գրանցուել է %{date}
|
||||
|
@ -128,7 +128,7 @@ ja:
|
||||
follows: フォロー数
|
||||
header: ヘッダー
|
||||
inbox_url: Inbox URL
|
||||
invite_request_text: 登録理由
|
||||
invite_request_text: 意気込み
|
||||
invited_by: 招待した人
|
||||
ip: IP
|
||||
joined: 登録日
|
||||
@ -398,6 +398,8 @@ ja:
|
||||
silence: サイレンス
|
||||
suspend: 停止
|
||||
title: 新規ドメインブロック
|
||||
obfuscate: ドメイン名を伏せ字にする
|
||||
obfuscate_hint: ドメインブロックのリストを公開している場合、ドメイン名の一部を伏せ字にします
|
||||
private_comment: コメント (非公開)
|
||||
private_comment_hint: このコメントは同じサーバーのモデレーターも閲覧できます。
|
||||
public_comment: コメント (公開)
|
||||
@ -556,6 +558,7 @@ ja:
|
||||
domain_blocks_rationale:
|
||||
title: コメントを表示
|
||||
enable_bootstrap_timeline_accounts:
|
||||
desc_html: 新規ユーザーが設定したアカウントを自動的にフォローして、ホームフィードが空にならないようにする
|
||||
title: 新規ユーザーの自動フォローを有効にする
|
||||
hero:
|
||||
desc_html: フロントページに表示されます。サイズは600x100px以上推奨です。未設定の場合、標準のサムネイルが使用されます
|
||||
@ -582,6 +585,9 @@ ja:
|
||||
min_invite_role:
|
||||
disabled: 誰にも許可しない
|
||||
title: 招待の作成を許可
|
||||
require_invite_text:
|
||||
desc_html: アカウント登録が承認制の場合、「意気込みをお聞かせください」のテキストを必須入力にする
|
||||
title: 新規ユーザー登録時の理由を必須入力にする
|
||||
registrations_mode:
|
||||
modes:
|
||||
approved: 登録には承認が必要
|
||||
@ -909,6 +915,8 @@ ja:
|
||||
status: 認証状態
|
||||
view_proof: 証明を表示
|
||||
imports:
|
||||
errors:
|
||||
over_rows_processing_limit: "%{count} 行以上"
|
||||
modes:
|
||||
merge: 統合
|
||||
merge_long: 現在のレコードを保持したまま新しいものを追加します
|
||||
|
@ -172,7 +172,7 @@ ko:
|
||||
removed_header_msg: 성공적으로 %{username}의 헤더 이미지를 삭제하였습니다
|
||||
resend_confirmation:
|
||||
already_confirmed: 이 사용자는 이미 확인되었습니다
|
||||
send: 다시 확인 이메일
|
||||
send: 확인 메일 다시 보내기
|
||||
success: 확인 이메일이 전송되었습니다!
|
||||
reset: 초기화
|
||||
reset_password: 암호 초기화
|
||||
@ -917,6 +917,8 @@ ko:
|
||||
status: 인증 상태
|
||||
view_proof: 증명 보기
|
||||
imports:
|
||||
errors:
|
||||
over_rows_processing_limit: "%{count}개 이상의 열을 포함합니다"
|
||||
modes:
|
||||
merge: 병합
|
||||
merge_long: 기존 것을 그대로 둔 채 새로 추가
|
||||
|
@ -47,6 +47,7 @@ oc:
|
||||
what_is_mastodon: Qu’es Mastodon ?
|
||||
accounts:
|
||||
choices_html: 'Recomandacions de %{name} :'
|
||||
endorsements_hint: Podètz recomandar personas que seguètz a partir de l’interfàcia web, apreissaràn aquí.
|
||||
featured_tags_hint: Podètz indicar d’etiquetas que mostrarem aquí.
|
||||
follow: Sègre
|
||||
followers:
|
||||
@ -710,8 +711,8 @@ oc:
|
||||
prompt: Confirmatz lo senhal per dire de contunhar
|
||||
date:
|
||||
formats:
|
||||
default: "%e %B de %Y"
|
||||
with_month_name: "%e %B de %Y"
|
||||
default: "%-d %B de %Y"
|
||||
with_month_name: "%-d %B de %Y"
|
||||
datetime:
|
||||
distance_in_words:
|
||||
about_x_hours: "%{count} h"
|
||||
@ -986,13 +987,13 @@ oc:
|
||||
activity: Activitat del compte
|
||||
dormant: Inactiu
|
||||
followers: Seguidors
|
||||
following: Aboanements
|
||||
following: Abonaments
|
||||
invited: Convidat
|
||||
last_active: Darrièra activitat
|
||||
most_recent: Mai recenta
|
||||
moved: Mudat
|
||||
mutual: Mutuala
|
||||
primary: Pirmària
|
||||
primary: Primària
|
||||
relationship: Relacion
|
||||
remove_selected_domains: Levar totes los seguidors dels domenis seleccionats
|
||||
remove_selected_followers: Levar los seguidors seleccionats
|
||||
@ -1225,7 +1226,7 @@ oc:
|
||||
mastodon-light: Mastodon (Clar)
|
||||
time:
|
||||
formats:
|
||||
default: Lo %e %B de %Y a %Ho%M
|
||||
default: Lo %-d %B de %Y a %Ho%M
|
||||
month: "%B de %Y"
|
||||
two_factor_authentication:
|
||||
add: Ajustar
|
||||
|
@ -66,10 +66,16 @@ hy:
|
||||
invite_request:
|
||||
text: Սա կօգնի մեզ ստուգել քո յաւելուածը
|
||||
ip_block:
|
||||
comment: Պայմանական․ Յիշիր ինչու ես աւելացրել այս կանոնը։
|
||||
expires_in: IP հասցէները սահմանափակ են, դրանք երբեմն օգտագործուում են ընդհանուր կամ անցնում ձեռքից ձեռք։ Այդ պատճառով խորհուրդ չի տրւում IP-ների անժամկետ արգելափակումը։
|
||||
ip: Ներմուծէք IPv4 կամ IPv6 հասցէն։ Նաև կարող ես արգելափակել հասցէների միջակայքեր օգտագործելով CIDR սինտաքսը։ Զգոյշ եղիր՝ ինքդ քեզ չարգելափակես։
|
||||
severities:
|
||||
no_access: Արգելափակիր հասանելիութիւնը բոլոր պաշարներին։
|
||||
sign_up_requires_approval: Նոր գրանցումները կը պահանջեն քո հաստատումը
|
||||
severity: Ընտրիր, թէ ինչ կարող է պատահել այս IP֊ից եկող յայտերի հետ
|
||||
sessions:
|
||||
otp: Մուտքագրիր երկքայլ նոյնականացման կոդը, որը գեներացուես ես քո բջջային յաւելուածի օգնութեամբ կամ օգտագործիր այս կոդերից կէկը՝
|
||||
webauthn: Եթէ սա USB է՝ վստահ եղիր տեղադրել այն եւ եթէ անհրաժեշտ է՝ թափահարել։
|
||||
tag:
|
||||
name: Կարող ես միայն փոխել տառերի ձեւը, օրինակ, այն աւելի ընթեռնելի դարձնելու համար
|
||||
user:
|
||||
@ -140,6 +146,7 @@ hy:
|
||||
setting_default_privacy: Հրապարակման գաղտնիութիւն
|
||||
setting_default_sensitive: Միշտ նշել մեդիան որպէս դիւրազգաց
|
||||
setting_delete_modal: Ցուցադրել հաստատման պատուհանը ջնջելուց առաջ
|
||||
setting_disable_swiping: Կասեցնել սահող շարժումները
|
||||
setting_display_media: Ցուցադրել մեդիա
|
||||
setting_display_media_default: Լռելեայն
|
||||
setting_display_media_hide_all: Թաքցնել բոլորը
|
||||
@ -200,4 +207,7 @@ hy:
|
||||
required:
|
||||
mark: "*"
|
||||
text: պարտադիր
|
||||
title:
|
||||
sessions:
|
||||
webauthn: Օգտագործիր անվտանգութեան բանալիները գրանցուելու համար
|
||||
'yes': Այո
|
||||
|
@ -126,6 +126,7 @@ ja:
|
||||
expires_in: 有効期限
|
||||
fields: プロフィール補足情報
|
||||
header: ヘッダー
|
||||
honeypot: "%{label} (入力しない)"
|
||||
inbox_url: リレーサーバーの inbox URL
|
||||
irreversible: 隠すのではなく除外する
|
||||
locale: 言語
|
||||
|
@ -204,7 +204,7 @@ vi:
|
||||
unconfirmed_email: Email chưa được xác thực
|
||||
undo_sensitized: Đánh dấu bình thường
|
||||
undo_silenced: Bỏ ẩn
|
||||
undo_suspension: Ngừng vô hiệu hóa
|
||||
undo_suspension: Bỏ vô hiệu hóa
|
||||
unsilenced_msg: Bỏ ẩn %{username} thành công
|
||||
unsubscribe: Hủy đăng ký
|
||||
unsuspended_msg: Đã kích hoạt lại %{username} thành công
|
||||
@ -215,8 +215,8 @@ vi:
|
||||
whitelisted: Danh sách trắng
|
||||
action_logs:
|
||||
action_types:
|
||||
assigned_to_self_report: Xử lý báo cáo được giao
|
||||
change_email_user: Đổi email cho người dùng
|
||||
assigned_to_self_report: Tự xử lý báo cáo
|
||||
change_email_user: Đổi email
|
||||
confirm_user: Xác nhận người dùng
|
||||
create_account_warning: Gửi cảnh cáo
|
||||
create_announcement: Tạo thông báo
|
||||
@ -228,16 +228,16 @@ vi:
|
||||
demote_user: Xóa chức vụ
|
||||
destroy_announcement: Xóa thông báo
|
||||
destroy_custom_emoji: Xóa Emoji
|
||||
destroy_domain_allow: Gỡ máy chủ cho phép
|
||||
destroy_domain_block: Gỡ máy chủ chặn
|
||||
destroy_email_domain_block: Gỡ email đã chặn
|
||||
destroy_domain_allow: Bỏ máy chủ cho phép
|
||||
destroy_domain_block: Bỏ chặn máy chủ
|
||||
destroy_email_domain_block: Bỏ chặn email
|
||||
destroy_ip_block: Bỏ chặn IP
|
||||
destroy_status: Xóa tút
|
||||
disable_2fa_user: Vô hiệu hóa xác thực hai bước
|
||||
disable_2fa_user: Xóa xác thực hai bước
|
||||
disable_custom_emoji: Vô hiệu hóa Emoji
|
||||
disable_user: Tạm khóa người dùng
|
||||
enable_custom_emoji: Cho phép Emoji
|
||||
enable_user: Mở khóa người dùng
|
||||
enable_user: Mở khóa
|
||||
memorialize_account: Tài khoản tưởng niệm
|
||||
promote_user: Chỉ định chức vụ
|
||||
remove_avatar_user: Xóa ảnh đại diện
|
||||
@ -245,18 +245,18 @@ vi:
|
||||
reset_password_user: Đặt lại mật khẩu
|
||||
resolve_report: Xử lý báo cáo
|
||||
sensitive_account: Đánh dấu nhạy cảm cho tài khoản
|
||||
silence_account: Tài khoản bị ẩn
|
||||
suspend_account: Vô hiệu hóa người dùng
|
||||
silence_account: Ẩn
|
||||
suspend_account: Vô hiệu hóa
|
||||
unassigned_report: Báo cáo chưa xử lý
|
||||
unsensitive_account: Đánh dấu tài khoản là bình thường
|
||||
unsilence_account: Tài khoản bỏ ẩn
|
||||
unsuspend_account: Ngừng vô hiệu hóa
|
||||
unsensitive_account: Đánh dấu bình thường
|
||||
unsilence_account: Bỏ ẩn
|
||||
unsuspend_account: Bỏ vô hiệu hóa
|
||||
update_announcement: Cập nhật thông báo
|
||||
update_custom_emoji: Cập nhật Emoji mới
|
||||
update_domain_block: Cập nhật máy chủ chặn
|
||||
update_status: Cập nhật tút
|
||||
actions:
|
||||
assigned_to_self_report: "%{name} đã xử lý báo cáo được giao %{target}"
|
||||
assigned_to_self_report: "%{name} tự xử lý báo cáo %{target}"
|
||||
change_email_user: "%{name} đã thay đổi địa chỉ email cho %{target}"
|
||||
confirm_user: "%{name} xác nhận địa chỉ email của người dùng %{target}"
|
||||
create_account_warning: "%{name} đã gửi cảnh cáo %{target}"
|
||||
@ -274,9 +274,9 @@ vi:
|
||||
destroy_email_domain_block: "%{name} bỏ chặn tên miền email %{target}"
|
||||
destroy_ip_block: "%{name} bỏ chặn IP %{target}"
|
||||
destroy_status: "%{name} đã xóa tút của %{target}"
|
||||
disable_2fa_user: "%{name} đã vô hiệu hóa xác thực hai yếu tố của %{target}"
|
||||
disable_2fa_user: "%{name} đã vô hiệu hóa xác thực hai bước của %{target}"
|
||||
disable_custom_emoji: "%{name} đã ẩn emoji %{target}"
|
||||
disable_user: "%{name} tạm khóa %{target}"
|
||||
disable_user: "%{name} vô hiệu hóa đăng nhập %{target}"
|
||||
enable_custom_emoji: "%{name} cho phép Emoji %{target}"
|
||||
enable_user: "%{name} mở khóa cho người dùng %{target}"
|
||||
memorialize_account: "%{name} đã biến tài khoản %{target} thành một trang tưởng niệm"
|
||||
@ -605,7 +605,7 @@ vi:
|
||||
title: Mô tả máy chủ
|
||||
site_description_extended:
|
||||
desc_html: Bạn có thể tạo thêm các mục như quy định chung, hướng dẫn và những thứ khác liên quan tới máy chủ của bạn. Dùng thẻ HTML
|
||||
title: Thông tin mở rộng tùy chỉnh
|
||||
title: Thông tin bổ sung
|
||||
site_short_description:
|
||||
desc_html: Hiển thị trong thanh bên và thẻ meta. Mô tả Mastodon là gì và điều gì làm cho máy chủ này trở nên đặc biệt trong một đoạn văn duy nhất.
|
||||
title: Mô tả máy chủ ngắn
|
||||
@ -1212,7 +1212,7 @@ vi:
|
||||
show_more: Đọc thêm
|
||||
show_newer: Mới hơn
|
||||
show_older: Cũ hơn
|
||||
show_thread: Xem thêm
|
||||
show_thread: Toàn bộ chủ đề
|
||||
sign_in_to_participate: Đăng nhập để trả lời chủ đề này
|
||||
title: '%{name}: "%{quote}"'
|
||||
visibilities:
|
||||
|
@ -148,7 +148,7 @@ zh-CN:
|
||||
pending: 待审核
|
||||
silenced: 已隐藏
|
||||
suspended: 已封禁
|
||||
title: 帐户状态
|
||||
title: 管理
|
||||
moderation_notes: 管理员备注
|
||||
most_recent_activity: 最后一次活跃的时间
|
||||
most_recent_ip: 最后一次活跃的 IP 地址
|
||||
|
@ -398,6 +398,8 @@ zh-HK:
|
||||
silence: 自動靜音
|
||||
suspend: 自動刪除
|
||||
title: 新增域名阻隔
|
||||
obfuscate: 混淆域名名稱
|
||||
obfuscate_hint: 如果已經啟用了網域廣告列表限制,在列表部份混淆網域名稱
|
||||
private_comment: 私人留言
|
||||
private_comment_hint: 請提供更多有關此域名限制的資訊以供管理員作內部參考。
|
||||
public_comment: 公開留言
|
||||
@ -556,6 +558,7 @@ zh-HK:
|
||||
domain_blocks_rationale:
|
||||
title: 顯示原因予
|
||||
enable_bootstrap_timeline_accounts:
|
||||
desc_html: 自動為新用戶追隨預設的帳號,為他們的首頁動態增加一點色彩
|
||||
title: 啟用「新使用者預設關注」功能
|
||||
hero:
|
||||
desc_html: 在首頁顯示。推薦最小 600x100px。如果留空,就會默認為服務站縮圖
|
||||
@ -912,6 +915,8 @@ zh-HK:
|
||||
status: 確認狀態
|
||||
view_proof: 查看證明
|
||||
imports:
|
||||
errors:
|
||||
over_rows_processing_limit: 包含超過 %{count} 行
|
||||
modes:
|
||||
merge: 合併
|
||||
merge_long: 留下舊有記錄並添加新的資訊
|
||||
|
@ -2,19 +2,19 @@
|
||||
|
||||
const { basename, dirname, extname, join, resolve } = require('path');
|
||||
const { env } = require('process');
|
||||
const { safeLoad } = require('js-yaml');
|
||||
const { load } = require('js-yaml');
|
||||
const { lstatSync, readFileSync } = require('fs');
|
||||
const glob = require('glob');
|
||||
|
||||
const configPath = resolve('config', 'webpacker.yml');
|
||||
const settings = safeLoad(readFileSync(configPath), 'utf8')[env.RAILS_ENV || env.NODE_ENV];
|
||||
const settings = load(readFileSync(configPath), 'utf8')[env.RAILS_ENV || env.NODE_ENV];
|
||||
const flavourFiles = glob.sync('app/javascript/flavours/*/theme.yml');
|
||||
const skinFiles = glob.sync('app/javascript/skins/*/*');
|
||||
const flavours = {};
|
||||
|
||||
const core = function () {
|
||||
const coreFile = resolve('app', 'javascript', 'core', 'theme.yml');
|
||||
const data = safeLoad(readFileSync(coreFile), 'utf8');
|
||||
const data = load(readFileSync(coreFile), 'utf8');
|
||||
if (!data.pack_directory) {
|
||||
data.pack_directory = dirname(coreFile);
|
||||
}
|
||||
@ -23,7 +23,7 @@ const core = function () {
|
||||
|
||||
for (let i = 0; i < flavourFiles.length; i++) {
|
||||
const flavourFile = flavourFiles[i];
|
||||
const data = safeLoad(readFileSync(flavourFile), 'utf8');
|
||||
const data = load(readFileSync(flavourFile), 'utf8');
|
||||
data.name = basename(dirname(flavourFile));
|
||||
data.skin = {};
|
||||
if (!data.pack_directory) {
|
||||
|
4
dist/nginx.conf
vendored
4
dist/nginx.conf
vendored
@ -73,7 +73,7 @@ server {
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header Proxy "";
|
||||
proxy_pass_header Server;
|
||||
|
||||
@ -98,7 +98,7 @@ server {
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header Proxy "";
|
||||
|
||||
proxy_pass http://streaming;
|
||||
|
@ -384,7 +384,7 @@ module Mastodon
|
||||
end
|
||||
|
||||
processed, = parallelize_with_progress(Account.local.without_suspended) do |account|
|
||||
FollowService.new.call(account, target_account)
|
||||
FollowService.new.call(account, target_account, bypass_limit: true)
|
||||
end
|
||||
|
||||
say("OK, followed target from #{processed} accounts", :green)
|
||||
|
@ -43,7 +43,12 @@ module Mastodon
|
||||
tar.each do |entry|
|
||||
next unless entry.file? && entry.full_name.end_with?('.png')
|
||||
|
||||
shortcode = [options[:prefix], File.basename(entry.full_name, '.*'), options[:suffix]].compact.join
|
||||
filename = File.basename(entry.full_name, '.*')
|
||||
|
||||
# Skip macOS shadow files
|
||||
next if filename.start_with?('._')
|
||||
|
||||
shortcode = [options[:prefix], filename, options[:suffix]].compact.join
|
||||
custom_emoji = CustomEmoji.local.find_by(shortcode: shortcode)
|
||||
|
||||
if custom_emoji && !options[:overwrite]
|
||||
|
@ -17,7 +17,7 @@ module Mastodon
|
||||
end
|
||||
|
||||
def flags
|
||||
'rc3'
|
||||
''
|
||||
end
|
||||
|
||||
def suffix
|
||||
|
54
package.json
54
package.json
@ -60,24 +60,24 @@
|
||||
},
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.12.7",
|
||||
"@babel/core": "^7.12.10",
|
||||
"@babel/plugin-proposal-class-properties": "^7.8.3",
|
||||
"@babel/plugin-proposal-decorators": "^7.12.1",
|
||||
"@babel/plugin-proposal-decorators": "^7.12.12",
|
||||
"@babel/plugin-transform-react-inline-elements": "^7.12.1",
|
||||
"@babel/plugin-transform-runtime": "^7.12.1",
|
||||
"@babel/preset-env": "^7.12.7",
|
||||
"@babel/preset-react": "^7.12.7",
|
||||
"@babel/plugin-transform-runtime": "^7.12.10",
|
||||
"@babel/preset-env": "^7.12.11",
|
||||
"@babel/preset-react": "^7.12.10",
|
||||
"@babel/runtime": "^7.12.5",
|
||||
"@clusterws/cws": "^3.0.0",
|
||||
"@gamestdio/websocket": "^0.3.2",
|
||||
"@github/webauthn-json": "^0.5.7",
|
||||
"@rails/ujs": "^6.0.3",
|
||||
"array-includes": "^3.1.1",
|
||||
"@rails/ujs": "^6.1.0",
|
||||
"array-includes": "^3.1.2",
|
||||
"atrament": "0.2.4",
|
||||
"arrow-key-navigation": "^1.2.0",
|
||||
"autoprefixer": "^9.8.6",
|
||||
"axios": "^0.21.0",
|
||||
"babel-loader": "^8.2.1",
|
||||
"axios": "^0.21.1",
|
||||
"babel-loader": "^8.2.2",
|
||||
"babel-plugin-lodash": "^3.3.4",
|
||||
"babel-plugin-preval": "^5.0.0",
|
||||
"babel-plugin-react-intl": "^6.2.0",
|
||||
@ -85,12 +85,12 @@
|
||||
"babel-runtime": "^6.26.0",
|
||||
"blurhash": "^1.1.3",
|
||||
"classnames": "^2.2.5",
|
||||
"color-blend": "^3.0.0",
|
||||
"color-blend": "^3.0.1",
|
||||
"compression-webpack-plugin": "^6.1.1",
|
||||
"cross-env": "^7.0.2",
|
||||
"cross-env": "^7.0.3",
|
||||
"css-loader": "^5.0.1",
|
||||
"cssnano": "^4.1.10",
|
||||
"detect-passive-events": "^2.0.1",
|
||||
"detect-passive-events": "^2.0.2",
|
||||
"dotenv": "^8.2.0",
|
||||
"emoji-mart": "Gargron/emoji-mart#build",
|
||||
"es6-symbol": "^3.1.3",
|
||||
@ -105,21 +105,21 @@
|
||||
"http-link-header": "^1.0.3",
|
||||
"immutable": "^3.8.2",
|
||||
"imports-loader": "^1.2.0",
|
||||
"intersection-observer": "^0.11.0",
|
||||
"intersection-observer": "^0.12.0",
|
||||
"intl": "^1.2.5",
|
||||
"intl-messageformat": "^2.2.0",
|
||||
"intl-relativeformat": "^6.4.3",
|
||||
"is-nan": "^1.3.0",
|
||||
"js-yaml": "^3.13.1",
|
||||
"is-nan": "^1.3.2",
|
||||
"js-yaml": "^4.0.0",
|
||||
"lodash": "^4.17.19",
|
||||
"mark-loader": "^0.1.6",
|
||||
"marky": "^1.2.1",
|
||||
"mini-css-extract-plugin": "^1.3.1",
|
||||
"mini-css-extract-plugin": "^1.3.3",
|
||||
"mkdirp": "^1.0.4",
|
||||
"npmlog": "^4.1.2",
|
||||
"object-assign": "^4.1.1",
|
||||
"object-fit-images": "^3.2.3",
|
||||
"object.values": "^1.1.1",
|
||||
"object.values": "^1.1.2",
|
||||
"offline-plugin": "^5.0.7",
|
||||
"path-complete-extname": "^1.0.0",
|
||||
"pg": "^6.4.0",
|
||||
@ -137,12 +137,12 @@
|
||||
"react-masonry-infinite": "^1.2.2",
|
||||
"react-motion": "^0.5.2",
|
||||
"react-notification": "^6.8.5",
|
||||
"react-overlays": "^0.9.2",
|
||||
"react-overlays": "^0.9.3",
|
||||
"react-redux": "^7.2.2",
|
||||
"react-redux-loading-bar": "^4.0.8",
|
||||
"react-router-dom": "^4.1.1",
|
||||
"react-router-scroll-4": "^1.0.0-beta.1",
|
||||
"react-select": "^3.1.0",
|
||||
"react-select": "^3.1.1",
|
||||
"react-sparklines": "^1.7.0",
|
||||
"react-swipeable-views": "^0.13.9",
|
||||
"react-textarea-autosize": "^8.3.0",
|
||||
@ -156,7 +156,7 @@
|
||||
"requestidlecallback": "^0.3.0",
|
||||
"reselect": "^4.0.0",
|
||||
"rimraf": "^3.0.2",
|
||||
"sass": "^1.29.0",
|
||||
"sass": "^1.32.0",
|
||||
"sass-loader": "^10.1.0",
|
||||
"stacktrace-js": "^2.0.2",
|
||||
"stringz": "^2.1.0",
|
||||
@ -168,28 +168,28 @@
|
||||
"uuid": "^8.3.1",
|
||||
"webpack": "^4.44.2",
|
||||
"webpack-assets-manifest": "^3.1.1",
|
||||
"webpack-bundle-analyzer": "^4.1.0",
|
||||
"webpack-bundle-analyzer": "^4.3.0",
|
||||
"webpack-cli": "^3.3.12",
|
||||
"webpack-merge": "^5.4.0",
|
||||
"webpack-merge": "^5.7.3",
|
||||
"wicg-inert": "^3.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@testing-library/jest-dom": "^5.11.6",
|
||||
"@testing-library/jest-dom": "^5.11.8",
|
||||
"@testing-library/react": "^11.2.2",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"babel-jest": "^26.6.3",
|
||||
"eslint": "^7.14.0",
|
||||
"eslint": "^7.17.0",
|
||||
"eslint-plugin-import": "~2.22.1",
|
||||
"eslint-plugin-jsx-a11y": "~6.4.1",
|
||||
"eslint-plugin-promise": "~4.2.1",
|
||||
"eslint-plugin-react": "~7.21.5",
|
||||
"eslint-plugin-react": "~7.22.0",
|
||||
"jest": "^26.6.3",
|
||||
"raf": "^3.4.1",
|
||||
"react-intl-translations-manager": "^5.0.3",
|
||||
"react-test-renderer": "^16.14.0",
|
||||
"sass-lint": "^1.13.1",
|
||||
"webpack-dev-server": "^3.11.0",
|
||||
"yargs": "^16.1.1"
|
||||
"webpack-dev-server": "^3.11.1",
|
||||
"yargs": "^16.2.0"
|
||||
},
|
||||
"resolutions": {
|
||||
"kind-of": "^6.0.3"
|
||||
|
@ -23,8 +23,8 @@ describe RefollowWorker do
|
||||
result = subject.perform(account.id)
|
||||
|
||||
expect(result).to be_nil
|
||||
expect(service).to have_received(:call).with(alice, account, reblogs: true, notify: false)
|
||||
expect(service).to have_received(:call).with(bob, account, reblogs: false, notify: false)
|
||||
expect(service).to have_received(:call).with(alice, account, reblogs: true, notify: false, bypass_limit: true)
|
||||
expect(service).to have_received(:call).with(bob, account, reblogs: false, notify: false, bypass_limit: true)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user