...
 
Commits (7)
  • Eugen Rochko's avatar
    Fix media editing modal and profile directory in light theme (#12059) · f51f99c3
    Eugen Rochko authored
    Also:
    
    - Fix embed modal in light theme
    - Fix confirmation modal in light theme
    f51f99c3
  • Eugen Rochko's avatar
    Fix issues in RTL layout in web UI (#12060) · 9184522c
    Eugen Rochko authored
    9184522c
  • Eugen Rochko's avatar
    Fix audio attachments opening in video modal from media tab in web UI (#12056) · c9b8ba50
    Eugen Rochko authored
    Fix video attachments having a GIF label in media tab in web UI
    c9b8ba50
  • Eugen Rochko's avatar
    New Crowdin translations (#12047) · 1681319d
    Eugen Rochko authored
    * New translations en.yml (Greek)
    [ci skip]
    
    * New translations en.json (Kazakh)
    [ci skip]
    
    * New translations en.yml (Kazakh)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Kazakh)
    [ci skip]
    
    * New translations en.json (Korean)
    [ci skip]
    
    * New translations en.yml (Korean)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Korean)
    [ci skip]
    
    * New translations en.yml (Norwegian Nynorsk)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Greek)
    [ci skip]
    
    * New translations en.json (Greek)
    [ci skip]
    
    * New translations en.yml (Occitan)
    [ci skip]
    
    * New translations en.json (Finnish)
    [ci skip]
    
    * New translations en.yml (Dutch)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Dutch)
    [ci skip]
    
    * New translations en.json (Esperanto)
    [ci skip]
    
    * New translations en.yml (Esperanto)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Esperanto)
    [ci skip]
    
    * New translations en.json (Estonian)
    [ci skip]
    
    * New translations en.yml (Estonian)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Estonian)
    [ci skip]
    
    * New translations en.yml (Finnish)
    [ci skip]
    
    * New translations doorkeeper.en.yml (German)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Finnish)
    [ci skip]
    
    * New translations en.json (French)
    [ci skip]
    
    * New translations doorkeeper.en.yml (French)
    [ci skip]
    
    * New translations en.json (Galician)
    [ci skip]
    
    * New translations en.yml (Galician)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Galician)
    [ci skip]
    
    * New translations en.json (German)
    [ci skip]
    
    * New translations en.yml (German)
    [ci skip]
    
    * New translations en.json (Occitan)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Occitan)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Danish)
    [ci skip]
    
    * New translations en.yml (Thai)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Swedish)
    [ci skip]
    
    * New translations en.json (Tamil)
    [ci skip]
    
    * New translations en.yml (Tamil)
    [ci skip]
    
    * New translations en.json (Telugu)
    [ci skip]
    
    * New translations en.yml (Telugu)
    [ci skip]
    
    * New translations en.json (Thai)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Thai)
    [ci skip]
    
    * New translations en.json (Swedish)
    [ci skip]
    
    * New translations en.json (Turkish)
    [ci skip]
    
    * New translations en.yml (Turkish)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Turkish)
    [ci skip]
    
    * New translations en.json (Welsh)
    [ci skip]
    
    * New translations en.yml (Welsh)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Welsh)
    [ci skip]
    
    * New translations en.json (Spanish, Argentina)
    [ci skip]
    
    * New translations en.yml (Spanish, Argentina)
    [ci skip]
    
    * New translations en.yml (Swedish)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Spanish)
    [ci skip]
    
    * New translations en.json (Persian)
    [ci skip]
    
    * New translations en.json (Portuguese, Brazilian)
    [ci skip]
    
    * New translations en.yml (Persian)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Persian)
    [ci skip]
    
    * New translations en.json (Polish)
    [ci skip]
    
    * New translations en.yml (Polish)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Polish)
    [ci skip]
    
    * New translations en.json (Portuguese)
    [ci skip]
    
    * New translations en.yml (Portuguese)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Portuguese)
    [ci skip]
    
    * New translations en.yml (Portuguese, Brazilian)
    [ci skip]
    
    * New translations en.yml (Spanish)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Portuguese, Brazilian)
    [ci skip]
    
    * New translations en.json (Romanian)
    [ci skip]
    
    * New translations en.yml (Romanian)
    [ci skip]
    
    * New translations en.json (Slovenian)
    [ci skip]
    
    * New translations en.yml (Slovenian)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Slovenian)
    [ci skip]
    
    * New translations en.json (Spanish)
    [ci skip]
    
    * New translations en.json (Dutch)
    [ci skip]
    
    * New translations en.yml (Danish)
    [ci skip]
    
    * New translations en.yml (Armenian)
    [ci skip]
    
    * New translations en.json (Ido)
    [ci skip]
    
    * New translations en.yml (Ido)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Ido)
    [ci skip]
    
    * New translations en.json (Indonesian)
    [ci skip]
    
    * New translations en.yml (Indonesian)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Indonesian)
    [ci skip]
    
    * New translations en.json (Latvian)
    [ci skip]
    
    * New translations en.yml (Latvian)
    [ci skip]
    
    * New translations en.json (Lithuanian)
    [ci skip]
    
    * New translations en.yml (Hebrew)
    [ci skip]
    
    * New translations en.yml (Lithuanian)
    [ci skip]
    
    * New translations en.json (Malay)
    [ci skip]
    
    * New translations en.yml (Malay)
    [ci skip]
    
    * New translations en.json (Norwegian)
    [ci skip]
    
    * New translations en.yml (Norwegian)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Norwegian)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Hebrew)
    [ci skip]
    
    * New translations en.json (Hebrew)
    [ci skip]
    
    * New translations en.yml (Russian)
    [ci skip]
    
    * New translations en.yml (Bulgarian)
    [ci skip]
    
    * New translations en.json (Asturian)
    [ci skip]
    
    * New translations en.yml (Asturian)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Asturian)
    [ci skip]
    
    * New translations en.json (Breton)
    [ci skip]
    
    * New translations en.yml (Breton)
    [ci skip]
    
    * New translations en.json (Bulgarian)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Bulgarian)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Georgian)
    [ci skip]
    
    * New translations en.json (Chinese Traditional, Hong Kong)
    [ci skip]
    
    * New translations en.yml (Chinese Traditional, Hong Kong)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Chinese Traditional, Hong Kong)
    [ci skip]
    
    * New translations en.json (Croatian)
    [ci skip]
    
    * New translations en.yml (Croatian)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Croatian)
    [ci skip]
    
    * New translations en.json (Georgian)
    [ci skip]
    
    * New translations en.yml (Georgian)
    [ci skip]
    
    * New translations en.json (Russian)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Russian)
    [ci skip]
    
    * New translations en.json (Danish)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Chinese Simplified)
    [ci skip]
    
    * New translations en.json (Bengali)
    [ci skip]
    
    * New translations en.yml (Bengali)
    [ci skip]
    
    * New translations en.json (Catalan)
    [ci skip]
    
    * New translations en.yml (Catalan)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Catalan)
    [ci skip]
    
    * New translations en.json (Chinese Simplified)
    [ci skip]
    
    * New translations en.yml (Chinese Simplified)
    [ci skip]
    
    * New translations en.json (Chinese Traditional)
    [ci skip]
    
    * New translations en.yml (Basque)
    [ci skip]
    
    * New translations en.yml (Chinese Traditional)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Chinese Traditional)
    [ci skip]
    
    * New translations en.json (Corsican)
    [ci skip]
    
    * New translations en.yml (Corsican)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Corsican)
    [ci skip]
    
    * New translations en.json (Czech)
    [ci skip]
    
    * New translations en.yml (Czech)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Czech)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Basque)
    [ci skip]
    
    * New translations en.json (Basque)
    [ci skip]
    
    * New translations en.json (Serbian (Cyrillic))
    [ci skip]
    
    * New translations en.json (Ukrainian)
    [ci skip]
    
    * New translations en.yml (Serbian (Cyrillic))
    [ci skip]
    
    * New translations doorkeeper.en.yml (Serbian (Cyrillic))
    [ci skip]
    
    * New translations en.json (Serbian (Latin))
    [ci skip]
    
    * New translations en.yml (Serbian (Latin))
    [ci skip]
    
    * New translations doorkeeper.en.yml (Serbian (Latin))
    [ci skip]
    
    * New translations en.json (Slovak)
    [ci skip]
    
    * New translations en.yml (Slovak)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Slovak)
    [ci skip]
    
    * New translations en.yml (Ukrainian)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Arabic)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Ukrainian)
    [ci skip]
    
    * New translations en.yml (French)
    [ci skip]
    
    * New translations en.json (Norwegian Nynorsk)
    [ci skip]
    
    * New translations en.json (Arabic)
    [ci skip]
    
    * New translations en.yml (Arabic)
    [ci skip]
    
    * New translations en.json (Albanian)
    [ci skip]
    
    * New translations en.yml (Albanian)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Albanian)
    [ci skip]
    
    * New translations en.json (Japanese)
    [ci skip]
    
    * New translations en.yml (Japanese)
    [ci skip]
    
    * New translations en.json (Russian)
    [ci skip]
    
    * New translations en.json (Esperanto)
    [ci skip]
    
    * New translations en.yml (Esperanto)
    [ci skip]
    
    * New translations en.yml (Japanese)
    [ci skip]
    
    * New translations en.json (Korean)
    [ci skip]
    
    * New translations en.yml (Russian)
    [ci skip]
    
    * New translations en.json (Japanese)
    [ci skip]
    
    * New translations en.yml (Russian)
    [ci skip]
    
    * New translations en.json (Macedonian)
    [ci skip]
    
    * New translations en.yml (Macedonian)
    [ci skip]
    
    * New translations simple_form.en.yml (Macedonian)
    [ci skip]
    
    * New translations activerecord.en.yml (Macedonian)
    [ci skip]
    
    * New translations devise.en.yml (Macedonian)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Macedonian)
    [ci skip]
    
    * New translations en.json (Macedonian)
    [ci skip]
    
    * New translations en.yml (Spanish)
    [ci skip]
    
    * New translations en.json (Macedonian)
    [ci skip]
    
    * New translations en.json (German)
    [ci skip]
    
    * New translations en.yml (Spanish)
    [ci skip]
    
    * New translations en.json (Portuguese, Brazilian)
    [ci skip]
    
    * New translations en.json (German)
    [ci skip]
    
    * New translations en.json (Turkish)
    [ci skip]
    
    * New translations en.yml (Turkish)
    [ci skip]
    
    * New translations en.json (Turkish)
    [ci skip]
    
    * New translations en.yml (Turkish)
    [ci skip]
    
    * New translations en.yml (Turkish)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Swedish)
    [ci skip]
    
    * New translations en.json (Swedish)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Swedish)
    [ci skip]
    
    * New translations en.json (Swedish)
    [ci skip]
    
    * New translations en.json (Swedish)
    [ci skip]
    
    * New translations en.json (Swedish)
    [ci skip]
    
    * New translations en.json (Swedish)
    [ci skip]
    
    * New translations en.yml (Swedish)
    [ci skip]
    
    * New translations activerecord.en.yml (Portuguese, Brazilian)
    [ci skip]
    
    * New translations en.json (Corsican)
    [ci skip]
    
    * New translations en.json (Corsican)
    [ci skip]
    
    * New translations en.json (Japanese)
    [ci skip]
    
    * New translations en.yml (Japanese)
    [ci skip]
    
    * New translations en.json (Indonesian)
    [ci skip]
    
    * New translations en.json (Japanese)
    [ci skip]
    
    * New translations en.yml (Japanese)
    [ci skip]
    
    * New translations en.json (Indonesian)
    [ci skip]
    
    * New translations en.json (Indonesian)
    [ci skip]
    
    * New translations en.json (Indonesian)
    [ci skip]
    
    * New translations en.json (Indonesian)
    [ci skip]
    
    * New translations en.json (Hebrew)
    [ci skip]
    
    * New translations en.json (Hebrew)
    [ci skip]
    
    * New translations simple_form.en.yml (Swedish)
    [ci skip]
    
    * New translations simple_form.en.yml (Swedish)
    [ci skip]
    
    * New translations en.json (Macedonian)
    [ci skip]
    
    * New translations en.json (Catalan)
    [ci skip]
    
    * New translations en.json (Catalan)
    [ci skip]
    
    * New translations en.json (Catalan)
    [ci skip]
    
    * New translations en.yml (Catalan)
    [ci skip]
    
    * New translations devise.en.yml (Catalan)
    [ci skip]
    
    * New translations en.yml (Catalan)
    [ci skip]
    
    * New translations en.yml (Catalan)
    [ci skip]
    
    * New translations en.yml (Catalan)
    [ci skip]
    
    * New translations en.json (Czech)
    [ci skip]
    
    * New translations en.yml (Catalan)
    [ci skip]
    
    * New translations en.yml (Catalan)
    [ci skip]
    
    * New translations en.yml (Catalan)
    [ci skip]
    
    * New translations en.yml (Catalan)
    [ci skip]
    
    * New translations simple_form.en.yml (Catalan)
    [ci skip]
    
    * New translations simple_form.en.yml (Catalan)
    [ci skip]
    
    * New translations en.json (Spanish, Argentina)
    [ci skip]
    
    * New translations en.json (Indonesian)
    [ci skip]
    
    * New translations en.json (Indonesian)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Indonesian)
    [ci skip]
    
    * New translations devise.en.yml (Indonesian)
    [ci skip]
    
    * New translations activerecord.en.yml (Indonesian)
    [ci skip]
    
    * New translations devise.en.yml (Indonesian)
    [ci skip]
    
    * New translations devise.en.yml (Indonesian)
    [ci skip]
    
    * New translations simple_form.en.yml (Indonesian)
    [ci skip]
    
    * New translations devise.en.yml (Indonesian)
    [ci skip]
    
    * New translations simple_form.en.yml (Indonesian)
    [ci skip]
    
    * New translations simple_form.en.yml (Indonesian)
    [ci skip]
    
    * New translations en.json (Finnish)
    [ci skip]
    
    * New translations en.json (Finnish)
    [ci skip]
    
    * New translations en.json (Finnish)
    [ci skip]
    
    * New translations en.json (Finnish)
    [ci skip]
    
    * New translations en.yml (Turkish)
    [ci skip]
    
    * New translations en.json (Finnish)
    [ci skip]
    
    * New translations en.yml (Turkish)
    [ci skip]
    
    * New translations en.json (Finnish)
    [ci skip]
    
    * New translations doorkeeper.en.yml (Greek)
    [ci skip]
    
    * New translations en.yml (Turkish)
    [ci skip]
    
    * New translations en.yml (Turkish)
    [ci skip]
    
    * New translations en.json (Corsican)
    [ci skip]
    
    * New translations simple_form.en.yml (Swedish)
    [ci skip]
    
    * New translations en.yml (Persian)
    [ci skip]
    
    * New translations en.json (Persian)
    [ci skip]
    
    * i18n-tasks normalize
    
    * yarn manage:translations
    1681319d
  • Eugen Rochko's avatar
    fb45f6d9
  • Eugen Rochko's avatar
    Bump version to 3.0.0rc3 (#12063) · bae268b2
    Eugen Rochko authored
    bae268b2
  • Sander Snel's avatar
    0a739970
......@@ -13,7 +13,7 @@ All notable changes to this project will be documented in this file.
- Add profile directory REST API
- Add special alert for throttled requests in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/11677))
- Add confirmation modal when logging out from the web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/11671))
- **Add audio player in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/11644), [Gargron](https://github.com/tootsuite/mastodon/pull/11652), [Gargron](https://github.com/tootsuite/mastodon/pull/11654), [ThibG](https://github.com/tootsuite/mastodon/pull/11629))
- **Add audio player in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/11644), [Gargron](https://github.com/tootsuite/mastodon/pull/11652), [Gargron](https://github.com/tootsuite/mastodon/pull/11654), [ThibG](https://github.com/tootsuite/mastodon/pull/11629), [Gargron](https://github.com/tootsuite/mastodon/pull/12056))
- **Add autosuggestions for hashtags in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/11422), [ThibG](https://github.com/tootsuite/mastodon/pull/11632), [Gargron](https://github.com/tootsuite/mastodon/pull/11764), [Gargron](https://github.com/tootsuite/mastodon/pull/11588), [Gargron](https://github.com/tootsuite/mastodon/pull/11442))
- **Add media editing modal with OCR tool in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/11563), [Gargron](https://github.com/tootsuite/mastodon/pull/11566), [ThibG](https://github.com/tootsuite/mastodon/pull/11575), [ThibG](https://github.com/tootsuite/mastodon/pull/11576), [Gargron](https://github.com/tootsuite/mastodon/pull/11577), [Gargron](https://github.com/tootsuite/mastodon/pull/11573), [Gargron](https://github.com/tootsuite/mastodon/pull/11571))
- Add indicator of unread notifications to window title when web UI is out of focus ([Gargron](https://github.com/tootsuite/mastodon/pull/11560), [Gargron](https://github.com/tootsuite/mastodon/pull/11572))
......@@ -22,6 +22,9 @@ All notable changes to this project will be documented in this file.
- **Add option to disable real-time updates in web UI ("slow mode")** ([Gargron](https://github.com/tootsuite/mastodon/pull/9984), [ykzts](https://github.com/tootsuite/mastodon/pull/11880), [ThibG](https://github.com/tootsuite/mastodon/pull/11883), [Gargron](https://github.com/tootsuite/mastodon/pull/11898), [ThibG](https://github.com/tootsuite/mastodon/pull/11859))
- Add option to disable blurhash previews in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/11188))
- Add native smooth scrolling when supported in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/11207))
- Add scrolling to the search bar on focus in web UI ([Kjwon15](https://github.com/tootsuite/mastodon/pull/12032))
- Add refresh button to list of rebloggers/favouriters in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/12031))
- Add error description and button to copy stack trace to web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/12033))
- Add search and sort functions to hashtag admin UI ([mayaeh](https://github.com/tootsuite/mastodon/pull/11829), [Gargron](https://github.com/tootsuite/mastodon/pull/11897), [mayaeh](https://github.com/tootsuite/mastodon/pull/11875))
- Add setting for default search engine indexing in admin UI ([brortao](https://github.com/tootsuite/mastodon/pull/11804))
- Add account bio to account view in admin UI ([ThibG](https://github.com/tootsuite/mastodon/pull/11473))
......@@ -64,6 +67,7 @@ All notable changes to this project will be documented in this file.
- Add `tootctl media refresh` command ([Gargron](https://github.com/tootsuite/mastodon/pull/11775))
- Add `tootctl cache recount` command ([Gargron](https://github.com/tootsuite/mastodon/pull/11597))
- Add option to exclude suspended domains from `tootctl domains crawl` ([dariusk](https://github.com/tootsuite/mastodon/pull/11454))
- Add parallelization to `tootctl search deploy` ([noellabo](https://github.com/tootsuite/mastodon/pull/12051))
- Add soft delete for statuses for instant deletes through API ([Gargron](https://github.com/tootsuite/mastodon/pull/11623), [Gargron](https://github.com/tootsuite/mastodon/pull/11648))
- Add rails-level JSON caching ([Gargron](https://github.com/tootsuite/mastodon/pull/11333), [Gargron](https://github.com/tootsuite/mastodon/pull/11271))
- **Add request pool to improve delivery performance** ([Gargron](https://github.com/tootsuite/mastodon/pull/10353), [ykzts](https://github.com/tootsuite/mastodon/pull/11756))
......@@ -72,6 +76,13 @@ All notable changes to this project will be documented in this file.
- **Add more accurate hashtag search** ([Gargron](https://github.com/tootsuite/mastodon/pull/11579), [Gargron](https://github.com/tootsuite/mastodon/pull/11427), [Gargron](https://github.com/tootsuite/mastodon/pull/11448))
- **Add more accurate account search** ([Gargron](https://github.com/tootsuite/mastodon/pull/11537), [Gargron](https://github.com/tootsuite/mastodon/pull/11580))
- **Add a spam check** ([Gargron](https://github.com/tootsuite/mastodon/pull/11217), [Gargron](https://github.com/tootsuite/mastodon/pull/11806), [ThibG](https://github.com/tootsuite/mastodon/pull/11296))
- Add new languages ([Gargron](https://github.com/tootsuite/mastodon/pull/12062))
- Breton
- Spanish (Argentina)
- Estonian
- Macedonian
- New Norwegian
- Add NodeInfo endpoint ([Gargron](https://github.com/tootsuite/mastodon/pull/12002), [Gargron](https://github.com/tootsuite/mastodon/pull/12058))
### Changed
......@@ -100,6 +111,8 @@ All notable changes to this project will be documented in this file.
- Change supported Node versions to include v12 ([abcang](https://github.com/tootsuite/mastodon/pull/11706))
- Change Portuguese language from `pt` to `pt-PT` ([Gargron](https://github.com/tootsuite/mastodon/pull/11820))
- Change domain block silence to always require approval on follow ([ThibG](https://github.com/tootsuite/mastodon/pull/11975))
- Change link preview fetcher to not perform a HEAD request first ([Gargron](https://github.com/tootsuite/mastodon/pull/12028))
- Change `tootctl domains purge` to accept multiple domains at once ([Gargron](https://github.com/tootsuite/mastodon/pull/12046))
### Removed
......@@ -176,6 +189,16 @@ All notable changes to this project will be documented in this file.
- Fix http_parser.rb gem not being compiled when no network available ([petabyteboy](https://github.com/tootsuite/mastodon/pull/11444))
- Fix muted text color not applying to all text ([trwnh](https://github.com/tootsuite/mastodon/pull/11996))
- Fix follower/following lists resetting on back-navigation in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/11986))
- Fix n+1 query when approving multiple follow requests ([abcang](https://github.com/tootsuite/mastodon/pull/12004))
- Fix records not being indexed into ElasticSearch sometimes ([Gargron](https://github.com/tootsuite/mastodon/pull/12024))
- Fix needlessly indexing unsearchable statuses into ElasticSearch ([Gargron](https://github.com/tootsuite/mastodon/pull/12041))
- Fix new user bootstrapping crashing when to-be-followed accouns are invalid ([ThibG](https://github.com/tootsuite/mastodon/pull/12037))
- Fix featured hashtag URL being interpreted as media or with_replies ([Gargron](https://github.com/tootsuite/mastodon/pull/12048))
- Fix account counters being overwritten by parallel writes ([Gargron](https://github.com/tootsuite/mastodon/pull/12045))
### Security
- Fix performance of GIF re-encoding and always strip EXIF data from videos ([Gargron](https://github.com/tootsuite/mastodon/pull/12057))
## [2.9.3] - 2019-08-10
### Added
......
......@@ -2,11 +2,11 @@
module SettingsHelper
HUMAN_LOCALES = {
en: 'English',
ar: 'العربية',
ast: 'Asturianu',
bg: 'Български',
bn: 'বাংলা',
br: 'Breton',
ca: 'Català',
co: 'Corsu',
cs: 'Čeština',
......@@ -14,8 +14,11 @@ module SettingsHelper
da: 'Dansk',
de: 'Deutsch',
el: 'Ελληνικά',
en: 'English',
eo: 'Esperanto',
'es-AR': 'Español (Argentina)',
es: 'Español',
et: 'Eesti',
eu: 'Euskara',
fa: 'فارسی',
fi: 'Suomi',
......@@ -36,32 +39,34 @@ module SettingsHelper
ko: '한국어',
lt: 'Lietuvių',
lv: 'Latviešu',
mk: 'Македонски',
ml: 'മലയാളം',
ms: 'Bahasa Melayu',
nl: 'Nederlands',
nn: 'Nynorsk',
no: 'Norsk',
oc: 'Occitan',
pl: 'Polski',
pt: 'Português',
'pt-PT': 'Português (Portugal)',
'pt-BR': 'Português (Brasil)',
'pt-PT': 'Português (Portugal)',
pt: 'Português',
ro: 'Română',
ru: 'Русский',
sk: 'Slovenčina',
sl: 'Slovenščina',
sq: 'Shqip',
sr: 'Српски',
'sr-Latn': 'Srpski (latinica)',
sr: 'Српски',
sv: 'Svenska',
ta: 'தமிழ்',
te: 'తెలుగు',
th: 'ไทย',
tr: 'Türkçe',
uk: 'Українська',
zh: '中文',
'zh-CN': '简体中文',
'zh-HK': '繁體中文(香港)',
'zh-TW': '繁體中文(臺灣)',
zh: '中文',
}.freeze
def human_locale(locale)
......
......@@ -119,6 +119,7 @@ export default class MediaItem extends ImmutablePureComponent {
);
} else if (['gifv', 'video'].indexOf(attachment.get('type')) !== -1) {
const autoPlay = !isIOS() && autoPlayGif;
const label = attachment.get('type') === 'video' ? <Icon id='play' /> : 'GIF';
thumbnail = (
<div className={classNames('media-gallery__gifv', { autoplay: autoPlay })}>
......@@ -135,7 +136,7 @@ export default class MediaItem extends ImmutablePureComponent {
muted
/>
<span className='media-gallery__gifv__label'>GIF</span>
<span className='media-gallery__gifv__label'>{label}</span>
</div>
);
}
......
......@@ -100,8 +100,10 @@ class AccountGallery extends ImmutablePureComponent {
}
handleOpenMedia = attachment => {
if (['video', 'audio'].includes(attachment.get('type'))) {
if (attachment.get('type') === 'video') {
this.props.dispatch(openModal('VIDEO', { media: attachment, status: attachment.get('status') }));
} else if (attachment.get('type') === 'audio') {
this.props.dispatch(openModal('AUDIO', { media: attachment, status: attachment.get('status') }));
} else {
const media = attachment.getIn(['status', 'media_attachments']);
const index = media.findIndex(x => x.get('id') === attachment.get('id'));
......
import React from 'react';
import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types';
import Audio from 'mastodon/features/audio';
import ImmutablePureComponent from 'react-immutable-pure-component';
import { FormattedMessage } from 'react-intl';
import { previewState } from './video_modal';
import classNames from 'classnames';
import Icon from 'mastodon/components/icon';
export default class AudioModal extends ImmutablePureComponent {
static propTypes = {
media: ImmutablePropTypes.map.isRequired,
status: ImmutablePropTypes.map,
onClose: PropTypes.func.isRequired,
};
static contextTypes = {
router: PropTypes.object,
};
componentDidMount () {
if (this.context.router) {
const history = this.context.router.history;
history.push(history.location.pathname, previewState);
this.unlistenHistory = history.listen(() => {
this.props.onClose();
});
}
}
componentWillUnmount () {
if (this.context.router) {
this.unlistenHistory();
if (this.context.router.history.location.state === previewState) {
this.context.router.history.goBack();
}
}
}
handleStatusClick = e => {
if (e.button === 0 && !(e.ctrlKey || e.metaKey)) {
e.preventDefault();
this.context.router.history.push(`/statuses/${this.props.status.get('id')}`);
}
}
render () {
const { media, status } = this.props;
return (
<div className='modal-root__modal audio-modal'>
<div className='audio-modal__container'>
<Audio
src={media.get('url')}
alt={media.get('description')}
duration={media.getIn(['meta', 'original', 'duration'], 0)}
height={135}
preload
/>
</div>
{status && (
<div className={classNames('media-modal__meta')}>
<a href={status.get('url')} onClick={this.handleStatusClick}><Icon id='comments' /> <FormattedMessage id='lightbox.view_context' defaultMessage='View context' /></a>
</div>
)}
</div>
);
}
}
import React from 'react';
import PropTypes from 'prop-types';
import ImmutablePureComponent from 'react-immutable-pure-component';
import { FormattedMessage, injectIntl } from 'react-intl';
import api from '../../../api';
import { defineMessages, FormattedMessage, injectIntl } from 'react-intl';
import api from 'mastodon/api';
import IconButton from 'mastodon/components/icon_button';
const messages = defineMessages({
close: { id: 'lightbox.close', defaultMessage: 'Close' },
});
export default @injectIntl
class EmbedModal extends ImmutablePureComponent {
......@@ -50,13 +55,17 @@ class EmbedModal extends ImmutablePureComponent {
}
render () {
const { intl, onClose } = this.props;
const { oembed } = this.state;
return (
<div className='modal-root__modal embed-modal'>
<h4><FormattedMessage id='status.embed' defaultMessage='Embed' /></h4>
<div className='modal-root__modal report-modal embed-modal'>
<div className='report-modal__target'>
<IconButton className='media-modal__close' title={intl.formatMessage(messages.close)} icon='times' onClick={onClose} size={16} />
<FormattedMessage id='status.embed' defaultMessage='Embed' />
</div>
<div className='embed-modal__container'>
<div className='report-modal__container embed-modal__container' style={{ display: 'block' }}>
<p className='hint'>
<FormattedMessage id='embed.instructions' defaultMessage='Embed this status on your website by copying the code below.' />
</p>
......
......@@ -228,7 +228,7 @@ class MediaModal extends ImmutablePureComponent {
{status && (
<div className={classNames('media-modal__meta', { 'media-modal__meta--shifted': media.size > 1 })}>
<a href={status.get('url')} onClick={this.handleStatusClick}><FormattedMessage id='lightbox.view_context' defaultMessage='View context' /></a>
<a href={status.get('url')} onClick={this.handleStatusClick}><Icon id='comments' /> <FormattedMessage id='lightbox.view_context' defaultMessage='View context' /></a>
</div>
)}
......
......@@ -9,6 +9,7 @@ import ActionsModal from './actions_modal';
import MediaModal from './media_modal';
import VideoModal from './video_modal';
import BoostModal from './boost_modal';
import AudioModal from './audio_modal';
import ConfirmationModal from './confirmation_modal';
import FocalPointModal from './focal_point_modal';
import {
......@@ -23,6 +24,7 @@ import {
const MODAL_COMPONENTS = {
'MEDIA': () => Promise.resolve({ default: MediaModal }),
'VIDEO': () => Promise.resolve({ default: VideoModal }),
'AUDIO': () => Promise.resolve({ default: AudioModal }),
'BOOST': () => Promise.resolve({ default: BoostModal }),
'CONFIRM': () => Promise.resolve({ default: ConfirmationModal }),
'MUTE': MuteModal,
......
......@@ -4,6 +4,8 @@ import PropTypes from 'prop-types';
import Video from 'mastodon/features/video';
import ImmutablePureComponent from 'react-immutable-pure-component';
import { FormattedMessage } from 'react-intl';
import classNames from 'classnames';
import Icon from 'mastodon/components/icon';
export const previewState = 'previewVideoModal';
......@@ -52,22 +54,25 @@ export default class VideoModal extends ImmutablePureComponent {
render () {
const { media, status, time, onClose } = this.props;
const link = status && <a href={status.get('url')} onClick={this.handleStatusClick}><FormattedMessage id='lightbox.view_context' defaultMessage='View context' /></a>;
return (
<div className='modal-root__modal video-modal'>
<div>
<div className='video-modal__container'>
<Video
preview={media.get('preview_url')}
blurhash={media.get('blurhash')}
src={media.get('url')}
startTime={time}
onCloseVideo={onClose}
link={link}
detailed
alt={media.get('description')}
/>
</div>
{status && (
<div className={classNames('media-modal__meta')}>
<a href={status.get('url')} onClick={this.handleStatusClick}><Icon id='comments' /> <FormattedMessage id='lightbox.view_context' defaultMessage='View context' /></a>
</div>
)}
</div>
);
}
......
......@@ -16,7 +16,7 @@
"account.follows.empty": "Aquest usuari encara no segueix a ningú.",
"account.follows_you": "Et segueix",
"account.hide_reblogs": "Amaga els impulsos de @{name}",
"account.last_status": "Last active",
"account.last_status": "Darrer actiu",
"account.link_verified_on": "La propietat d'aquest enllaç es va verificar el dia {date}",
"account.locked_info": "Aquest estat de privadesa del compte està definit com a bloquejat. El propietari revisa manualment qui pot seguir-lo.",
"account.media": "Mèdia",
......@@ -25,7 +25,7 @@
"account.mute": "Silencia @{name}",
"account.mute_notifications": "Notificacions desactivades de @{name}",
"account.muted": "Silenciat",
"account.never_active": "Never",
"account.never_active": "Mai",
"account.posts": "Toots",
"account.posts_with_replies": "Toots i respostes",
"account.report": "Informe @{name}",
......@@ -38,8 +38,8 @@
"account.unfollow": "Deixa de seguir",
"account.unmute": "Treure silenci de @{name}",
"account.unmute_notifications": "Activar notificacions de @{name}",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.rate_limited.message": "Si us plau torna-ho a provar després de {retry_time, time, medium}.",
"alert.rate_limited.title": "Límit de freqüència",
"alert.unexpected.message": "S'ha produït un error inesperat.",
"alert.unexpected.title": "Vaja!",
"autosuggest_hashtag.per_week": "{count} per setmana",
......@@ -53,7 +53,7 @@
"column.blocks": "Usuaris bloquejats",
"column.community": "Línia de temps local",
"column.direct": "Missatges directes",
"column.directory": "Browse profiles",
"column.directory": "Navega els perfils",
"column.domain_blocks": "Dominis ocults",
"column.favourites": "Favorits",
"column.follow_requests": "Peticions per seguir-te",
......@@ -100,10 +100,10 @@
"confirmations.delete_list.message": "Estàs segur que vols suprimir permanentment aquesta llista?",
"confirmations.domain_block.confirm": "Amaga tot el domini",
"confirmations.domain_block.message": "Estàs segur, realment segur que vols bloquejar totalment {domain}? En la majoria dels casos bloquejar o silenciar uns pocs objectius és suficient i preferible. No veuràs contingut d’aquest domini en cap de les línies públiques ni en les notificacions. Els teus seguidors d’aquest domini seran eliminats.",
"confirmations.logout.confirm": "Log out",
"confirmations.logout.message": "Are you sure you want to log out?",
"confirmations.logout.confirm": "Tancar sessió",
"confirmations.logout.message": "Segur que vols tancar la sessió?",
"confirmations.mute.confirm": "Silencia",
"confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
"confirmations.mute.explanation": "Això amagarà les seves publicacions i les que els mencionen però encara els permetrà veure les teves i seguir-te.",
"confirmations.mute.message": "Estàs segur que vols silenciar {name}?",
"confirmations.redraft.confirm": "Esborrar i refer",
"confirmations.redraft.message": "Estàs segur que vols esborrar aquest toot i tornar a redactar-lo? Perderàs totes els impulsos i favorits, i les respostes al toot original es quedaran orfes.",
......@@ -111,14 +111,14 @@
"confirmations.reply.message": "Responen ara es sobreescriurà el missatge que estàs editant. Estàs segur que vols continuar?",
"confirmations.unfollow.confirm": "Deixa de seguir",
"confirmations.unfollow.message": "Estàs segur que vols deixar de seguir {name}?",
"conversation.delete": "Delete conversation",
"conversation.mark_as_read": "Mark as read",
"conversation.open": "View conversation",
"conversation.with": "With {names}",
"directory.federated": "From known fediverse",
"directory.local": "From {domain} only",
"directory.new_arrivals": "New arrivals",
"directory.recently_active": "Recently active",
"conversation.delete": "Elimina la conversa",
"conversation.mark_as_read": "Marca com a llegida",
"conversation.open": "Veure conversa",
"conversation.with": "Amb {names}",
"directory.federated": "Del fedivers conegut",
"directory.local": "Només de {domain}",
"directory.new_arrivals": "Arribades noves",
"directory.recently_active": "Recentment actius",
"embed.instructions": "Incrusta aquest toot al lloc web copiant el codi a continuació.",
"embed.preview": "Aquí tenim quin aspecte tindrá:",
"emoji_button.activity": "Activitat",
......@@ -152,10 +152,10 @@
"empty_column.mutes": "Encara no has silenciat cap usuari.",
"empty_column.notifications": "Encara no tens notificacions. Interactua amb altres per iniciar la conversa.",
"empty_column.public": "No hi ha res aquí! Escriu públicament alguna cosa o manualment segueix usuaris d'altres servidors per omplir-ho",
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
"error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"error.unexpected_crash.explanation": "A causa d'un bug en el nostre codi o un problema de compatibilitat del navegador, aquesta pàgina no podria ser mostrada correctament.",
"error.unexpected_crash.next_steps": "Prova recarregant la pàgina. Si això no ajuda encara pots ser capaç d'utilitzar Mastodont a través d'un navegador diferent o app nativa.",
"errors.unexpected_crash.copy_stacktrace": "Còpia stacktrace al porta-retalls",
"errors.unexpected_crash.report_issue": "Informa d'un problema",
"follow_request.authorize": "Autoritzar",
"follow_request.reject": "Rebutjar",
"getting_started.developers": "Desenvolupadors",
......@@ -301,10 +301,10 @@
"notifications.group": "{count} notificacions",
"poll.closed": "Finalitzada",
"poll.refresh": "Actualitza",
"poll.total_people": "{count, plural, one {# person} other {# people}}",
"poll.total_people": "{count, plural, one {# persona} other {# persones}}",
"poll.total_votes": "{count, plural, one {# vot} other {# vots}}",
"poll.vote": "Vota",
"poll.voted": "You voted for this answer",
"poll.voted": "Vas votar per aquesta resposta",
"poll_button.add_poll": "Afegeix una enquesta",
"poll_button.remove_poll": "Elimina l'enquesta",
"privacy.change": "Ajusta l'estat de privacitat",
......@@ -316,7 +316,7 @@
"privacy.public.short": "Públic",
"privacy.unlisted.long": "No publicar en línies de temps públiques",
"privacy.unlisted.short": "No llistat",
"refresh": "Refresh",
"refresh": "Actualitza",
"regeneration_indicator.label": "Carregant…",
"regeneration_indicator.sublabel": "S'està preparant la línia de temps Inici!",
"relative_time.days": "fa {number} dies",
......@@ -380,7 +380,7 @@
"status.show_more": "Mostra més",
"status.show_more_all": "Mostra més per a tot",
"status.show_thread": "Mostra el fil",
"status.uncached_media_warning": "Not available",
"status.uncached_media_warning": "No està disponible",
"status.unmute_conversation": "Activar conversació",
"status.unpin": "Deslliga del perfil",
"suggestions.dismiss": "Descartar suggeriment",
......@@ -396,7 +396,7 @@
"time_remaining.moments": "Moments restants",
"time_remaining.seconds": "{number, plural, one {# segon} other {# segons}} restants",
"trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {gent}} talking",
"trends.trending_now": "Trending now",
"trends.trending_now": "Ara en tendència",
"ui.beforeunload": "El teu esborrany es perdrà si surts de quey.",
"upload_area.title": "Arrossega i deixa anar per a carregar",
"upload_button.label": "Afegir multimèdia (JPEG, PNG, GIF, WebM, MP4, MOV)",
......
......@@ -152,10 +152,10 @@
"empty_column.mutes": "Per avà ùn avete manc'un utilizatore piattatu.",
"empty_column.notifications": "Ùn avete ancu nisuna nutificazione. Interact with others to start the conversation.",
"empty_column.public": "Ùn c'hè nunda quì! Scrivete qualcosa in pubblicu o seguitate utilizatori d'altri servori per empie a linea pubblica",
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
"error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"error.unexpected_crash.explanation": "In ragione d'un bug indè u nostru codice o un prublemu di cumpatibilità cù quessu navigatore, sta pagina ùn hè micca pussuta esse affissata currettamente.",
"error.unexpected_crash.next_steps": "Pruvate d'attualizà sta pagina. S'ellu persiste u prublemu, pudete forse sempre accede à Mastodon dapoi un'alltru navigatore o applicazione.",
"errors.unexpected_crash.copy_stacktrace": "Cupià stacktrace nant'à u fermacarta",
"errors.unexpected_crash.report_issue": "Palisà prublemu",
"follow_request.authorize": "Auturizà",
"follow_request.reject": "Righjittà",
"getting_started.developers": "Sviluppatori",
......@@ -316,7 +316,7 @@
"privacy.public.short": "Pubblicu",
"privacy.unlisted.long": "Ùn mette micca nant'à e linee pubbliche",
"privacy.unlisted.short": "Micca listatu",
"refresh": "Refresh",
"refresh": "Attualizà",
"regeneration_indicator.label": "Caricamentu…",
"regeneration_indicator.sublabel": "Priparazione di a vostra pagina d'accolta!",
"relative_time.days": "{number}ghj",
......
......@@ -152,10 +152,10 @@
"empty_column.mutes": "Ještě jste neskryl/a žádné uživatele.",
"empty_column.notifications": "Ještě nemáte žádná oznámení. Začněte konverzaci komunikováním s ostatními.",
"empty_column.public": "Tady nic není! Napište něco veřejně, nebo začněte ručně sledovat uživatele z jiných serverů, aby tu něco přibylo",
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
"error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"error.unexpected_crash.explanation": "Kvůli chybě v našem kódu nebo problému s kompatibilitou prohlížeče nemohla být tato stránka načtena správně.",
"error.unexpected_crash.next_steps": "Zkuste obnovit stránku. Pokud to nepomůže, budete možná moci dále používat Mastodon pomocí jiného prohlížeče nebo nativní aplikace.",
"errors.unexpected_crash.copy_stacktrace": "Zkopírovat stacktrace do schránky",
"errors.unexpected_crash.report_issue": "Nahlásit problém",
"follow_request.authorize": "Autorizovat",
"follow_request.reject": "Odmítnout",
"getting_started.developers": "Vývojáři",
......@@ -316,7 +316,7 @@
"privacy.public.short": "Veřejný",
"privacy.unlisted.long": "Neodeslat na veřejné časové osy",
"privacy.unlisted.short": "Neuvedený",
"refresh": "Refresh",
"refresh": "Obnovit",
"regeneration_indicator.label": "Načítám…",
"regeneration_indicator.sublabel": "Váš domovský proud se připravuje!",
"relative_time.days": "{number} d",
......
......@@ -103,7 +103,7 @@
"confirmations.logout.confirm": "Abmelden",
"confirmations.logout.message": "Bist du sicher, dass du dich abmelden möchtest?",
"confirmations.mute.confirm": "Stummschalten",
"confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
"confirmations.mute.explanation": "Dies wird Beiträge von dieser Person und Beiträge, die diese Person erwähnen, ausblenden, aber es wird der Person trotzdem erlauben, deine Beiträge zu sehen und dir zu folgen.",
"confirmations.mute.message": "Bist du dir sicher, dass du {name} stummschalten möchtest?",
"confirmations.redraft.confirm": "Löschen und neu erstellen",
"confirmations.redraft.message": "Bist du dir sicher, dass du diesen Beitrag löschen und neu erstellen möchtest? Favorisierungen, geteilte Beiträge und Antworten werden verloren gehen.",
......@@ -152,10 +152,10 @@
"empty_column.mutes": "Du hast keine Profile stummgeschaltet.",
"empty_column.notifications": "Du hast noch keine Mitteilungen. Interagiere mit anderen, um ins Gespräch zu kommen.",
"empty_column.public": "Hier ist nichts zu sehen! Schreibe etwas öffentlich oder folge Profilen von anderen Servern, um die Zeitleiste aufzufüllen",
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
"error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"error.unexpected_crash.explanation": "Aufgrund eines Fehlers in unserem Code oder einer Browsereinkompatibilität konnte diese Seite nicht korrekt angezeigt werden.",
"error.unexpected_crash.next_steps": "Versuche die Seite zu aktualisieren. Wenn das nicht hilft, kannst du Mastodon über einen anderen Browser oder eine native App verwenden.",
"errors.unexpected_crash.copy_stacktrace": "Fehlerlog in die Zwischenablage kopieren",
"errors.unexpected_crash.report_issue": "Problem melden",
"follow_request.authorize": "Erlauben",
"follow_request.reject": "Ablehnen",
"getting_started.developers": "Entwickler",
......@@ -316,7 +316,7 @@
"privacy.public.short": "Öffentlich",
"privacy.unlisted.long": "Wird in öffentlichen Zeitleisten nicht gezeigt",
"privacy.unlisted.short": "Nicht gelistet",
"refresh": "Refresh",
"refresh": "Aktualisieren",
"regeneration_indicator.label": "Laden…",
"regeneration_indicator.sublabel": "Deine Startseite wird gerade vorbereitet!",
"relative_time.days": "{number}d",
......
......@@ -1135,6 +1135,15 @@
],
"path": "app/javascript/mastodon/features/compose/components/upload_form.json"
},
{
"descriptors": [
{
"defaultMessage": "Uploading...",
"id": "upload_progress.label"
}
],
"path": "app/javascript/mastodon/features/compose/components/upload_progress.json"
},
{
"descriptors": [
{
......@@ -1631,10 +1640,6 @@
},
{
"descriptors": [
{
"defaultMessage": "Basic",
"id": "home.column_settings.basic"
},
{
"defaultMessage": "Show boosts",
"id": "home.column_settings.show_reblogs"
......@@ -2016,6 +2021,14 @@
"defaultMessage": "Push notifications",
"id": "notifications.column_settings.push"
},
{
"defaultMessage": "Basic",
"id": "home.column_settings.basic"
},
{
"defaultMessage": "Update in real-time",
"id": "home.column_settings.update_live"
},
{
"defaultMessage": "Quick filter bar",
"id": "notifications.column_settings.filter_bar.category"
......@@ -2074,6 +2087,10 @@
},
{
"descriptors": [
{
"defaultMessage": "and {count, plural, one {# other} other {# others}}",
"id": "notification.and_n_others"
},
{
"defaultMessage": "{name} followed you",
"id": "notification.follow"
......@@ -2317,6 +2334,15 @@
],
"path": "app/javascript/mastodon/features/status/index.json"
},
{
"descriptors": [
{
"defaultMessage": "View context",
"id": "lightbox.view_context"
}
],
"path": "app/javascript/mastodon/features/ui/components/audio_modal.json"
},
{
"descriptors": [
{
......@@ -2409,6 +2435,10 @@
},
{
"descriptors": [
{
"defaultMessage": "Close",
"id": "lightbox.close"
},
{
"defaultMessage": "Embed",
"id": "status.embed"
......@@ -2752,4 +2782,4 @@
],
"path": "app/javascript/mastodon/features/video/index.json"
}
]
]
\ No newline at end of file
......@@ -178,6 +178,7 @@
"home.column_settings.basic": "Basic",
"home.column_settings.show_reblogs": "Show boosts",
"home.column_settings.show_replies": "Show replies",
"home.column_settings.update_live": "Update in real-time",
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
......@@ -271,6 +272,7 @@
"navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security",
"notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
"notification.favourite": "{name} favourited your status",
"notification.follow": "{name} followed you",
"notification.mention": "{name} mentioned you",
......
......@@ -155,7 +155,7 @@
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
"error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"errors.unexpected_crash.report_issue": "Raporti problemon",
"follow_request.authorize": "Rajtigi",
"follow_request.reject": "Rifuzi",
"getting_started.developers": "Programistoj",
......@@ -304,7 +304,7 @@
"poll.total_people": "{count, plural, one {# person} other {# people}}",
"poll.total_votes": "{count, plural, one {# voĉdono} other {# voĉdonoj}}",
"poll.vote": "Voĉdoni",
"poll.voted": "You voted for this answer",
"poll.voted": "Vi elektis por ĉi tiu respondo",
"poll_button.add_poll": "Aldoni balotenketon",
"poll_button.remove_poll": "Forigi balotenketon",
"privacy.change": "Agordi mesaĝan privatecon",
......@@ -316,7 +316,7 @@
"privacy.public.short": "Publika",
"privacy.unlisted.long": "Ne afiŝi en publikaj tempolinioj",
"privacy.unlisted.short": "Nelistigita",
"refresh": "Refresh",
"refresh": "Refreŝigu",
"regeneration_indicator.label": "Ŝargado…",
"regeneration_indicator.sublabel": "Via hejma fluo pretiĝas!",
"relative_time.days": "{number}t",
......
......@@ -103,7 +103,7 @@
"confirmations.logout.confirm": "Cerrar sesión",
"confirmations.logout.message": "¿Estás seguro que querés cerrar la sesión?",
"confirmations.mute.confirm": "Silenciar",
"confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
"confirmations.mute.explanation": "Esto ocultará mensajes de ellos y mensajes que los mencionen, pero todavía les permitirá ver tus mensajes o seguirte.",
"confirmations.mute.message": "¿Estás seguro que querés silenciar a {name}?",
"confirmations.redraft.confirm": "Eliminar toot original y editarlo",
"confirmations.redraft.message": "¿Estás seguro que querés eliminar este estado y volverlo a editarlo? Se perderán las veces marcadas como favoritos y los retoots, y las respuestas a la publicación original quedarán huérfanas.",
......@@ -152,10 +152,10 @@
"empty_column.mutes": "Todavía no silenciaste a ningún usuario.",
"empty_column.notifications": "Todavía no tenés ninguna notificación. Interactuá con otros para iniciar la conversación.",
"empty_column.public": "¡Naranja! Escribí algo públicamente, o seguí usuarios manualmente de otros servidores para ir llenando esta línea temporal.",
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
"error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"error.unexpected_crash.explanation": "Debido a un error en nuestro código o a un problema de compatibilidad con el navegador web, esta página no se pudo mostrar correctamente.",
"error.unexpected_crash.next_steps": "Intentá recargar la página. Si eso no ayuda, podés usar Mastodon a través de un navegador web diferente o aplicación nativa.",
"errors.unexpected_crash.copy_stacktrace": "Copiar stacktrace al portapapeles",
"errors.unexpected_crash.report_issue": "Informar problema",
"follow_request.authorize": "Autorizar",
"follow_request.reject": "Rechazar",
"getting_started.developers": "Desarrolladores",
......@@ -316,7 +316,7 @@
"privacy.public.short": "Público",
"privacy.unlisted.long": "No enviar entrada a las líneas temporales públicas",
"privacy.unlisted.short": "No listado",
"refresh": "Refresh",
"refresh": "Refrescar",
"regeneration_indicator.label": "Cargando…",
"regeneration_indicator.sublabel": "¡Se está preparando tu línea temporal principal!",
"relative_time.days": "{number}d",
......@@ -405,21 +405,21 @@
"upload_form.description": "Agregar descripción para los usuarios con dificultades visuales",
"upload_form.edit": "Editar",
"upload_form.undo": "Eliminar",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
"upload_modal.detect_text": "Detect text from picture",
"upload_modal.edit_media": "Edit media",
"upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading...",
"video.close": "Close video",
"video.exit_fullscreen": "Exit full screen",
"video.expand": "Expand video",
"video.fullscreen": "Full screen",
"video.hide": "Hide video",
"video.mute": "Mute sound",
"video.pause": "Pause",
"video.play": "Play",
"video.unmute": "Unmute sound"
"upload_modal.analyzing_picture": "Analizando imagen…",
"upload_modal.apply": "Aplicar",
"upload_modal.description_placeholder": "El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja.",
"upload_modal.detect_text": "Detectar texto de la imagen",
"upload_modal.edit_media": "Editar medio",
"upload_modal.hint": "Hacé clic o arrastrá el círculo en la previsualización para elegir el punto focal que siempre estará a la vista en todas las miniaturas.",
"upload_modal.preview_label": "Previsualización ({ratio})",
"upload_progress.label": "Subiendo…",
"video.close": "Cerrar video",
"video.exit_fullscreen": "Salir de pantalla completa",
"video.expand": "Expandir vídeo",
"video.fullscreen": "Pantalla completa",
"video.hide": "Ocultar video",
"video.mute": "Silenciar sonido",
"video.pause": "Pausar",
"video.play": "Reproducir",
"video.unmute": "Dejar de silenciar sonido"
}
......@@ -103,7 +103,7 @@
"confirmations.logout.confirm": "خروج",
"confirmations.logout.message": "آیا مطمئنید که می‌خواهید خارج شوید؟",
"confirmations.mute.confirm": "بی‌صدا کن",
"confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
"confirmations.mute.explanation": "این کار نوشته‌های آن‌ها و نوشته‌هایی را که از آن‌ها نام برده پنهان می‌کند، ولی آن‌ها همچنان اجازه دارند نوشته‌های شما را ببینند و شما را پی بگیرند.",
"confirmations.mute.message": "آیا واقعاً می‌خواهید {name} را بی‌صدا کنید؟",
"confirmations.redraft.confirm": "پاک‌کردن و بازنویسی",
"confirmations.redraft.message": "آیا واقعاً می‌خواهید این نوشته را پاک کنید و آن را از نو بنویسید؟ با این کار بازبوق‌ها و پسندیده‌شدن‌های آن از دست می‌رود و پاسخ‌ها به آن بی‌مرجع می‌شود.",
......@@ -152,10 +152,10 @@
"empty_column.mutes": "شما هنوز هیچ کاربری را بی‌صدا نکرده‌اید.",
"empty_column.notifications": "هنوز هیچ اعلانی ندارید. به نوشته‌های دیگران واکنش نشان دهید تا گفتگو آغاز شود.",
"empty_column.public": "این‌جا هنوز چیزی نیست! خودتان چیزی بنویسید یا کاربران سرورهای دیگر را پی بگیرید تا این‌جا پر شود",
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
"error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"error.unexpected_crash.explanation": "به خاطر اشکالی در کدهای ما یا ناسازگاری با مرورگر شما، این صفحه به درستی نمایش نیافت.",
"error.unexpected_crash.next_steps": "لطفاً صفحه را دوباره باز کنید. اگر آن هم کمکی نکرد، همچنان شاید بتوانید با ماستدون از راه یکی از اپ‌های آن کار کنید.",
"errors.unexpected_crash.copy_stacktrace": "کپی جزئیات اشکال",
"errors.unexpected_crash.report_issue": "گزارش اشکال",
"follow_request.authorize": "اجازه دهید",
"follow_request.reject": "اجازه ندهید",
"getting_started.developers": "برای برنامه‌نویسان",
......@@ -301,7 +301,7 @@
"notifications.group": "{count} اعلان",
"poll.closed": "پایان‌یافته",
"poll.refresh": "به‌روزرسانی",
"poll.total_people": "{count, plural, one {# person} other {# people}}",
"poll.total_people": "{count, plural, one {# نفر} other {# نفر}}",
"poll.total_votes": "{count, plural, one {# رأی} other {# رأی}}",
"poll.vote": "رأی",
"poll.voted": "شما به این گزینه رأی دادید",
......@@ -316,7 +316,7 @@
"privacy.public.short": "عمومی",
"privacy.unlisted.long": "عمومی، ولی فهرست نکن",
"privacy.unlisted.short": "فهرست‌نشده",
"refresh": "Refresh",
"refresh": "به‌روزرسانی",
"regeneration_indicator.label": "در حال باز شدن…",
"regeneration_indicator.sublabel": "این فهرست دارد آماده می‌شود!",
"relative_time.days": "{number} روز",
......
This diff is collapsed.
{
"account.add_or_remove_from_list": "Add or Remove from lists",
"account.badges.bot": "Bot",
"account.add_or_remove_from_list": "הוסף או הסר מהרשימות",
"account.badges.bot": "בוט",
"account.block": "חסימת @{name}",
"account.block_domain": "להסתיר הכל מהקהילה {domain}",
"account.blocked": "Blocked",
"account.cancel_follow_request": "Cancel follow request",
"account.blocked": "חסום",
"account.cancel_follow_request": "בטל בקשת מעקב",
"account.direct": "Direct Message @{name}",
"account.domain_blocked": "Domain hidden",
"account.domain_blocked": "הדומיין חסוי",
"account.edit_profile": "עריכת פרופיל",
"account.endorse": "Feature on profile",
"account.endorse": "הצג בפרופיל",
"account.follow": "מעקב",
"account.followers": "עוקבים",
"account.followers.empty": "No one follows this user yet.",
"account.followers.empty": "אף אחד לא עוקב אחר המשתמש הזה עדיין.",
"account.follows": "נעקבים",
"account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows.empty": "משתמש זה לא עוקב אחר אף אחד עדיין.",
"account.follows_you": "במעקב אחריך",
"account.hide_reblogs": "להסתיר הידהודים מאת @{name}",
"account.last_status": "Last active",
"account.link_verified_on": "Ownership of this link was checked on {date}",
"account.last_status": "פעילות אחרונה",
"account.link_verified_on": "בעלות על הקישור הזה נבדקה לאחרונה ב{date}",
"account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
"account.media": "מדיה",
"account.mention": "אזכור של @{name}",
......
This diff is collapsed.
......@@ -103,7 +103,7 @@
"confirmations.logout.confirm": "ログアウト",
"confirmations.logout.message": "本当にログアウトしますか?",
"confirmations.mute.confirm": "ミュート",
"confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
"confirmations.mute.explanation": "これにより相手のトゥートと返信は見えなくなりますが、引き続きあなたをフォローしトゥートを見ることはできます。",
"confirmations.mute.message": "本当に{name}さんをミュートしますか?",
"confirmations.redraft.confirm": "削除して下書きに戻す",
"confirmations.redraft.message": "本当にこのトゥートを削除して下書きに戻しますか? このトゥートへのお気に入り登録やブーストは失われ、返信は孤立することになります。",
......@@ -152,10 +152,10 @@
"empty_column.mutes": "まだ誰もミュートしていません。",
"empty_column.notifications": "まだ通知がありません。他の人とふれ合って会話を始めましょう。",
"empty_column.public": "ここにはまだ何もありません! 公開で何かを投稿したり、他のサーバーのユーザーをフォローしたりしていっぱいにしましょう",
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
"error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"error.unexpected_crash.explanation": "不具合かブラウザの互換性問題のため、このページを正しく表示できませんでした。",
"error.unexpected_crash.next_steps": "ページの再読み込みをお試しください。それでも解決しない場合、別のアプリかブラウザを使えば使用できる場合もあります。",
"errors.unexpected_crash.copy_stacktrace": "スタックトレースをクリップボードにコピー",
"errors.unexpected_crash.report_issue": "問題を報告",
"follow_request.authorize": "許可",
"follow_request.reject": "拒否",
"getting_started.developers": "開発",
......@@ -163,8 +163,8 @@
"getting_started.documentation": "ドキュメント",
"getting_started.heading": "スタート",
"getting_started.invite": "招待",
"getting_started.open_source_notice": "queyはオープンソースソフトウェアです。誰でもGitLab ( {github} ) から開発に参加したり、問題を報告したりできます。",
"getting_started.security": "セキュリティ",
"getting_started.open_source_notice": "Mastodonはオープンソースソフトウェアです。誰でもGitHub ( {github} ) から開発に参加したり、問題を報告したりできます。",
"getting_started.security": "アカウント設定",
"getting_started.terms": "プライバシーポリシー",
"hashtag.column_header.tag_mode.all": "と {additional}",
"hashtag.column_header.tag_mode.any": "か {additional}",
......@@ -301,10 +301,10 @@
"notifications.group": "{count} 件の通知",
"poll.closed": "終了",
"poll.refresh": "更新",
"poll.total_people": "{count, plural, one {# person} other {# people}}",
"poll.total_people": "{count}人",
"poll.total_votes": "{count}票",
"poll.vote": "投票",
"poll.voted": "You voted for this answer",
"poll.voted": "この項目に投票しました",
"poll_button.add_poll": "アンケートを追加",
"poll_button.remove_poll": "アンケートを削除",
"privacy.change": "公開範囲を変更",
......@@ -316,7 +316,7 @@
"privacy.public.short": "公開",
"privacy.unlisted.long": "公開TLで表示しない",
"privacy.unlisted.short": "未収載",
"refresh": "Refresh",
"refresh": "更新",
"regeneration_indicator.label": "読み込み中…",
"regeneration_indicator.sublabel": "ホームタイムラインは準備中です!",
"relative_time.days": "{number}日前",
......
......@@ -152,10 +152,10 @@
"empty_column.mutes": "아직 아무도 뮤트하지 않았습니다.",
"empty_column.notifications": "아직 알림이 없습니다. 다른 사람과 대화를 시작해 보세요.",
"empty_column.public": "여기엔 아직 아무 것도 없습니다! 공개적으로 무언가 포스팅하거나, 다른 서버의 유저를 팔로우 해서 채워보세요",
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
"error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"error.unexpected_crash.explanation": "버그 혹은 브라우저 호환성 문제로 이 페이지를 올바르게 표시할 수 없습니다.",
"error.unexpected_crash.next_steps": "페이지를 새로고침 해보세요. 그래도 해결되지 않는 경우, 다른 브라우저나 네이티브 앱으로도 마스토돈을 이용하실 수 있습니다.",
"errors.unexpected_crash.copy_stacktrace": "에러 내용을 클립보드에 복사",
"errors.unexpected_crash.report_issue": "문제 신고",
"follow_request.authorize": "허가",
"follow_request.reject": "거부",
"getting_started.developers": "개발자",
......@@ -316,7 +316,7 @@
"privacy.public.short": "공개",
"privacy.unlisted.long": "공개 타임라인에 표시하지 않음",
"privacy.unlisted.short": "타임라인에 비표시",
"refresh": "Refresh",
"refresh": "새로고침",
"regeneration_indicator.label": "불러오는 중…",
"regeneration_indicator.sublabel": "당신의 홈 피드가 준비되는 중입니다!",
"relative_time.days": "{number}일 전",
......
This diff is collapsed.
......@@ -39,7 +39,7 @@
"account.unmute": "Não silenciar @{name}",
"account.unmute_notifications": "Retirar silêncio das notificações vindas de @{name}",
"alert.rate_limited.message": "Por favor tente novamente após {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.rate_limited.title": "Limite de tentativas",
"alert.unexpected.message": "Um erro inesperado ocorreu.",
"alert.unexpected.title": "Eita!",
"autosuggest_hashtag.per_week": "{count} por semana",
......@@ -103,7 +103,7 @@
"confirmations.logout.confirm": "Sair",
"confirmations.logout.message": "Tem certeza que deseja encerrar a sessão?",
"confirmations.mute.confirm": "Silenciar",
"confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
"confirmations.mute.explanation": "Isto irá esconder postagens e postagens que mencionam, mas ainda vai permitir que eles vejam suas publicações e sigam você.",
"confirmations.mute.message": "Você tem certeza de que quer silenciar {name}?",
"confirmations.redraft.confirm": "Apagar & usar como rascunho",
"confirmations.redraft.message": "Você tem certeza que deseja apagar esse status e usá-lo como rascunho? Seus compartilhamentos e favoritos serão perdidos e as respostas ao toot original ficarão desconectadas.",
......@@ -116,7 +116,7 @@
"conversation.open": "Ver conversa",
"conversation.with": "Com {names}",
"directory.federated": "De fediverso conhecido",
"directory.local": "From {domain} only",
"directory.local": "De {domain} apenas",
"directory.new_arrivals": "Acabaram de chegar",
"directory.recently_active": "Reverta esta propriedade para seu valor padrão",
"embed.instructions": "Incorpore esta postagem em seu site copiando o código abaixo.",
......@@ -152,10 +152,10 @@
"empty_column.mutes": "Você ainda não silenciou nenhum usuário.",
"empty_column.notifications": "Você ainda não possui notificações. Interaja com outros usuários para começar a conversar.",
"empty_column.public": "Não há nada aqui! Escreva algo publicamente ou siga manualmente usuários de outras instâncias",
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
"error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"error.unexpected_crash.explanation": "Devido a um bug em nosso código ou a um problema de compatibilidade do navegador, esta página não pode ser exibida corretamente.",
"error.unexpected_crash.next_steps": "Tente atualizar a página. Se isso não ajudar, você ainda pode usar Mastodon através de um navegador diferente ou aplicativo nativo.",
"errors.unexpected_crash.copy_stacktrace": "Copiar stacktrace para a área de transferência",
"errors.unexpected_crash.report_issue": "Reportar problema",
"follow_request.authorize": "Autorizar",
"follow_request.reject": "Rejeitar",
"getting_started.developers": "Desenvolvedores",
......@@ -301,10 +301,10 @@
"notifications.group": "{count} notificações",
"poll.closed": "Fechada",
"poll.refresh": "Atualizar",
"poll.total_people": "{count, plural, one {# person} other {# people}}",
"poll.total_people": "{count, plural, one {# pessoa} other {# pessoas}}",
"poll.total_votes": "{count, plural, one {# voto} other {# votos}}",
"poll.vote": "Votar",
"poll.voted": "You voted for this answer",
"poll.voted": "Você votou nesta resposta",
"poll_button.add_poll": "Adicionar uma enquete",
"poll_button.remove_poll": "Remover enquete",
"privacy.change": "Ajustar a privacidade da mensagem",
......@@ -316,7 +316,7 @@
"privacy.public.short": "Pública",
"privacy.unlisted.long": "Não publicar em feeds públicos",
"privacy.unlisted.short": "Não listada",
"refresh": "Refresh",
"refresh": "Atualizar",
"regeneration_indicator.label": "Carregando…",
"regeneration_indicator.sublabel": "Sua página inicial está sendo preparada!",
"relative_time.days": "{number}d",
......@@ -380,7 +380,7 @@
"status.show_more": "Mostrar mais",
"status.show_more_all": "Mostrar mais para todas as mensagens",
"status.show_thread": "Mostrar sequência",
"status.uncached_media_warning": "Not available",
"status.uncached_media_warning": "Não disponível",
"status.unmute_conversation": "Desativar silêncio desta conversa",
"status.unpin": "Desafixar do perfil",
"suggestions.dismiss": "Ignorar a sugestão",
......@@ -409,9 +409,9 @@
"upload_modal.apply": "Aplicar",
"upload_modal.description_placeholder": "Grave e cabisbaixo, o filho justo zelava pela querida mãe doente",
"upload_modal.detect_text": "Detectar texto da imagem",
"upload_modal.edit_media": "Edit media",
"upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
"upload_modal.preview_label": "Preview ({ratio})",
"upload_modal.edit_media": "Editar mídia",
"upload_modal.hint": "Clique ou arraste o círculo na visualização para escolher o ponto focal que sempre será visto em todas as miniaturas.",
"upload_modal.preview_label": "Prévia ({ratio})",
"upload_progress.label": "Salvando...",
"video.close": "Fechar vídeo",
"video.exit_fullscreen": "Sair da tela cheia",
......
......@@ -16,7 +16,7 @@
"account.follows.empty": "Этот пользователь ни на кого не подписан.",
"account.follows_you": "Подписан(а) на вас",
"account.hide_reblogs": "Скрыть реблоги от @{name}",
"account.last_status": "Last active",
"account.last_status": "Последняя активность",
"account.link_verified_on": "Владение этой ссылкой было проверено {date}",
"account.locked_info": "Это закрытый аккаунт. Его владелец вручную одобряет подписчиков.",
"account.media": "Медиа",
......@@ -25,7 +25,7 @@
"account.mute": "Скрыть @{name}",
"account.mute_notifications": "Скрыть уведомления от @{name}",
"account.muted": "Скрыт",
"account.never_active": "Never",
"account.never_active": "Никогда",
"account.posts": "Посты",
"account.posts_with_replies": "Посты с ответами",
"account.report": "Пожаловаться",
......@@ -38,8 +38,8 @@
"account.unfollow": "Отписаться",
"account.unmute": "Снять глушение",
"account.unmute_notifications": "Показывать уведомления от @{name}",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.rate_limited.message": "Пожалуйста, повторите через {retry_time, time, medium}.",
"alert.rate_limited.title": "Скорость ограничена",
"alert.unexpected.message": "Что-то пошло не так.",
"alert.unexpected.title": "Ой!",
"autosuggest_hashtag.per_week": "{count} / неделю",
......@@ -53,7 +53,7 @@
"column.blocks": "Список блокировки",
"column.community": "Локальная лента",
"column.direct": "Личные сообщения",
"column.directory": "Browse profiles",
"column.directory": "Просмотр профилей",
"column.domain_blocks": "Скрытые домены",
"column.favourites": "Понравившееся",
"column.follow_requests": "Запросы на подписку",
......@@ -100,10 +100,10 @@
"confirmations.delete_list.message": "Вы действительно хотите навсегда удалить этот список?",
"confirmations.domain_block.confirm": "Блокировать весь домен",
"confirmations.domain_block.message": "Вы на самом деле уверены, что хотите блокировать весь {domain}? В большинстве случаев нескольких отдельных блокировок или глушений достаточно.",
"confirmations.logout.confirm": "Log out",
"confirmations.logout.message": "Are you sure you want to log out?",
"confirmations.logout.confirm": "Выйти",
"confirmations.logout.message": "Вы уверены, что хотите выйти?",
"confirmations.mute.confirm": "Заглушить",
"confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
"confirmations.mute.explanation": "Будут скрыты их посты и те, где они упоминаются, но они при этом смогут видеть ваши посты и подписываться на вас.",
"confirmations.mute.message": "Вы уверены, что хотите заглушить {name}?",
"confirmations.redraft.confirm": "Удалить и исправить",
"confirmations.redraft.message": "Вы уверены, что хотите удалить этот статус и превратить в черновик? Вы потеряете все ответы, продвижения и отметки 'нравится' к нему.",
......@@ -111,14 +111,14 @@
"confirmations.reply.message": "При ответе текст набираемого сообщения будет перезаписан. Продолжить?",
"confirmations.unfollow.confirm": "Отписаться",
"confirmations.unfollow.message": "Вы уверены, что хотите отписаться от {name}?",
"conversation.delete": "Delete conversation",
"conversation.mark_as_read": "Mark as read",
"conversation.open": "View conversation",
"conversation.with": "With {names}",
"directory.federated": "From known fediverse",
"directory.local": "From {domain} only",
"directory.new_arrivals": "New arrivals",
"directory.recently_active": "Recently active",
"conversation.delete": "Удалить беседу",
"conversation.mark_as_read": "Пометить прочитанным",
"conversation.open": "Просмотр беседы",
"conversation.with": "С {names}",
"directory.federated": "Со всей федерации",
"directory.local": "Только из {domain}",
"directory.new_arrivals": "Новички",
"directory.recently_active": "Недавно активные",
"embed.instructions": "Встройте этот статус на Вашем сайте, скопировав код внизу.",
"embed.preview": "Так это будет выглядеть:",
"emoji_button.activity": "Занятия",
......@@ -152,10 +152,10 @@
"empty_column.mutes": "Вы ещё никого не скрывали.",
"empty_column.notifications": "У вас пока нет уведомлений. Взаимодействуйте с другими, чтобы завести разговор.",
"empty_column.public": "Здесь ничего нет! Опубликуйте что-нибудь или подпишитесь на пользователей с других узлов, чтобы заполнить ленту.",
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
"error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"error.unexpected_crash.explanation": "Из-за несовместимого браузера или ошибки в нашем коде, эта страница не может быть корректно отображена.",
"error.unexpected_crash.next_steps": "Попробуйте обновить страницу. Если проблема не исчезает, используйте Mastodon из-под другого браузера или приложения.",
"errors.unexpected_crash.copy_stacktrace": "Копировать стектрейс в буфер обмена",
"errors.unexpected_crash.report_issue": "Сообщить о проблеме",
"follow_request.authorize": "Авторизовать",
"follow_request.reject": "Отказать",
"getting_started.developers": "Разработчикам",
......@@ -301,10 +301,10 @@
"notifications.group": "{count} уведомл.",
"poll.closed": "Завершён",
"poll.refresh": "Обновить",
"poll.total_people": "{count, plural, one {# person} other {# people}}",
"poll.total_people": "{count, plural, one {# человек} few {# человека} many {# человек} other {# человек}}",
"poll.total_votes": "{count, plural, one {# голос} few {# голоса} many {# голосов} other {# голосов}}",
"poll.vote": "Голосовать",
"poll.voted": "You voted for this answer",
"poll.voted": "Вы проголосовали за этот вариант",
"poll_button.add_poll": "Добавить опрос",
"poll_button.remove_poll": "Удалить опрос",
"privacy.change": "Изменить видимость статуса",
......@@ -316,7 +316,7 @@
"privacy.public.short": "Публичный",
"privacy.unlisted.long": "Не показывать в лентах",
"privacy.unlisted.short": "Скрытый",
"refresh": "Refresh",
"refresh": "Обновить",
"regeneration_indicator.label": "Загрузка…",
"regeneration_indicator.sublabel": "Ваша домашняя лента готовится!",
"relative_time.days": "{number}д",
......@@ -380,7 +380,7 @@
"status.show_more": "Развернуть",
"status.show_more_all": "Развернуть для всех",
"status.show_thread": "Показать обсуждение",
"status.uncached_media_warning": "Not available",
"status.uncached_media_warning": "Недоступно",
"status.unmute_conversation": "Снять глушение с обсуждения",
"status.unpin": "Открепить от профиля",
"suggestions.dismiss": "Удалить предложение",
......
This diff is collapsed.
......@@ -103,7 +103,7 @@
"confirmations.logout.confirm": "Çıkış Yap",
"confirmations.logout.message": "Çıkış yapmak istediğinize emin misiniz?",
"confirmations.mute.confirm": "Sessize al",
"confirmations.mute.explanation": "Bu onlardan gelen ve onlardan bahseden gönderileri gizleyecek, fakat sizi takip ediyorlarsa gönderilerinizi görmelerine izin verecektir.",
"confirmations.mute.explanation": "Bu onlardan gelen ve onlardan bahseden gönderileri gizleyecek, fakat yine de onların gönderilerinizi görmelerine ve sizi takip etmelerine izin verecektir.",
"confirmations.mute.message": "{name} kullanıcısını sessize almak istiyor musunuz?",
"confirmations.redraft.confirm": "Sil ve yeniden tasarla",
"confirmations.redraft.message": "Bu durumu silip tekrar taslaklaştırmak istediğinizden emin misiniz? Tüm cevapları, boostları ve favorileri kaybedeceksiniz.",
......@@ -152,10 +152,10 @@
"empty_column.mutes": "Henüz hiçbir kullanıcıyı sessize almadınız.",
"empty_column.notifications": "Henüz hiçbir bildiriminiz yok. Diğer insanlarla sobhet edebilmek için etkileşime geçebilirsiniz.",
"empty_column.public": "Burada hiçbir şey yok! Herkese açık bir şeyler yazın veya burayı doldurmak için diğer sunuculardaki kullanıcıları takip edin",
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
"error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"error.unexpected_crash.explanation": "Bizim kodumuzdaki bir hatadan ya da tarayıcı uyumluluk sorunundan dolayı, bu sayfa düzgün görüntülenemedi.",
"error.unexpected_crash.next_steps": "Sayfayı yenilemeyi deneyin. Eğer bu yardımcı olmazsa, Mastodon'u farklı bir tarayıcı ya da yerel uygulama üzerinden kullanabilirsiniz.",
"errors.unexpected_crash.copy_stacktrace": "Yığın izlemeyi (stacktrace) panoya kopyala",
"errors.unexpected_crash.report_issue": "Sorun bildir",
"follow_request.authorize": "Yetkilendir",
"follow_request.reject": "Reddet",
"getting_started.developers": "Geliştiriciler",
......@@ -316,7 +316,7 @@
"privacy.public.short": "Herkese açık",
"privacy.unlisted.long": "Herkese açık zaman tüneline gönderme",
"privacy.unlisted.short": "Listelenmemiş",
"refresh": "Refresh",
"refresh": "Yenile",
"regeneration_indicator.label": "Yükleniyor…",
"regeneration_indicator.sublabel": "Ev akışınız hazırlanıyor!",
"relative_time.days": "{number}g",
......
......@@ -14,15 +14,49 @@ html {
}
}
.status-card__actions button,
.status-card__actions a {
color: rgba($white, 0.8);
&:hover,
&:active,
&:focus {
color: $white;
}
}
// Change default background colors of columns
.column > .scrollable,
.getting-started,
.column-inline-form {
.column-inline-form,
.error-column,
.regeneration-indicator {
background: $white;
border: 1px solid lighten($ui-base-color, 8%);
border-top: 0;
}
.directory__card__img {
background: lighten($ui-base-color, 12%);
}
.filter-form,
.directory__card__bar {
background: $white;
border-bottom: 1px solid lighten($ui-base-color, 8%);
}
.scrollable .directory__list {
width: calc(100% + 2px);
margin-left: -1px;
margin-right: -1px;
}
.directory__card,
.table-of-contents {
border: 1px solid lighten($ui-base-color, 8%);
}
.column-back-button,
.column-header {
background: $white;
......@@ -33,16 +67,16 @@ html {
}
&--slim-button {
border: 0;
top: -49px;
right: 1px;
top: -50px;
right: 0;
}
}
.column-header__back-button,
.column-header__button,
.column-header__button.active,
.account__header__bar {
.account__header__bar,
.directory__card__extra {
background: $white;
}
......@@ -66,6 +100,19 @@ html {
text-decoration: underline;
}
.confirmation-modal__secondary-button,
.confirmation-modal__cancel-button,
.mute-modal__cancel-button,
.block-modal__cancel-button {
color: lighten($ui-base-color, 26%);
&:hover,
&:focus,
&:active {
color: $primary-text-color;
}
}
.column-subheading {
background: darken($ui-base-color, 4%);
border-bottom: 1px solid lighten($ui-base-color, 8%);
......@@ -314,8 +361,19 @@ html {
.report-modal,
.embed-modal,
.error-modal,
.onboarding-modal {
background: $ui-base-color;
.onboarding-modal,
.report-modal__comment .setting-text__wrapper,
.report-modal__comment .setting-text {
background: $white;
border: 1px solid lighten($ui-base-color, 8%);
}
.report-modal__comment {
border-right-color: lighten($ui-base-color, 8%);
}
.report-modal__container {
border-top-color: lighten($ui-base-color, 8%);
}
.column-header__collapsible-inner {
......@@ -324,6 +382,10 @@ html {
border-top: 0;
}
.focal-point__preview strong {
color: $white;
}
.boost-modal__action-bar,
.confirmation-modal__action-bar,
.mute-modal__action-bar,
......@@ -348,9 +410,11 @@ html {
.embed-modal .embed-modal__container .embed-modal__html {
background: $white;
border: 1px solid lighten($ui-base-color, 8%);
&:focus {
background: darken($ui-base-color, 6%);
border-color: lighten($ui-base-color, 12%);
background: $white;
}
}
......
......@@ -8,7 +8,7 @@ $classic-secondary-color: #d9e1e8;
$classic-highlight-color: #2b90d9;
// Differences
$success-green: #3c754d;
$success-green: lighten(#3c754d, 8%);
$base-overlay-background: $white !default;
$valid-value-color: $success-green !default;
......
......@@ -1486,6 +1486,10 @@ a.account__display-name {
color: inherit;
}
.detailed-status .button.logo-button {
margin-bottom: 15px;
}
.detailed-status__display-name {
color: $secondary-text-color;
display: block;
......@@ -4267,10 +4271,13 @@ a.status-card.compact:hover {
z-index: 9999;
}
.video-modal {
.video-modal__container {
max-width: 100vw;
max-height: 100vh;
position: relative;
}
.audio-modal__container {
width: 50vw;
}
.media-modal {
......@@ -4370,6 +4377,7 @@ a.status-card.compact:hover {
}