ida schmidt 1 week ago
parent
commit
935b4c0761
100 changed files with 924 additions and 1106 deletions
  1. 244
    422
      AUTHORS.md
  2. 33
    0
      CHANGELOG.md
  3. 2
    2
      Gemfile
  4. 18
    15
      Gemfile.lock
  5. 1
    1
      README.md
  6. 1
    0
      app/controllers/api/v1/instances/activity_controller.rb
  7. 1
    0
      app/controllers/api/v1/instances/peers_controller.rb
  8. 1
    0
      app/controllers/api/v1/instances_controller.rb
  9. 10
    4
      app/controllers/api/v1/streaming_controller.rb
  10. 1
    5
      app/controllers/api/v1/timelines/home_controller.rb
  11. 1
    1
      app/javascript/mastodon/actions/timelines.js
  12. 0
    63
      app/javascript/mastodon/components/extended_video_player.js
  13. 75
    0
      app/javascript/mastodon/components/gifv.js
  14. 15
    8
      app/javascript/mastodon/components/missing_indicator.js
  15. 18
    0
      app/javascript/mastodon/components/regeneration_indicator.js
  16. 4
    4
      app/javascript/mastodon/components/status_content.js
  17. 2
    13
      app/javascript/mastodon/components/status_list.js
  18. 1
    0
      app/javascript/mastodon/features/account_timeline/index.js
  19. 1
    1
      app/javascript/mastodon/features/generic_not_found/index.js
  20. 34
    2
      app/javascript/mastodon/features/ui/components/focal_point_modal.js
  21. 2
    4
      app/javascript/mastodon/features/ui/components/media_modal.js
  22. 9
    11
      app/javascript/mastodon/locales/ar.json
  23. 0
    2
      app/javascript/mastodon/locales/ast.json
  24. 1
    3
      app/javascript/mastodon/locales/bg.json
  25. 0
    2
      app/javascript/mastodon/locales/bn.json
  26. 1
    3
      app/javascript/mastodon/locales/br.json
  27. 1
    3
      app/javascript/mastodon/locales/ca.json
  28. 0
    2
      app/javascript/mastodon/locales/co.json
  29. 2
    4
      app/javascript/mastodon/locales/cs.json
  30. 0
    2
      app/javascript/mastodon/locales/cy.json
  31. 4
    6
      app/javascript/mastodon/locales/da.json
  32. 8
    10
      app/javascript/mastodon/locales/de.json
  33. 21
    38
      app/javascript/mastodon/locales/defaultMessages.json
  34. 7
    9
      app/javascript/mastodon/locales/el.json
  35. 0
    2
      app/javascript/mastodon/locales/en.json
  36. 1
    3
      app/javascript/mastodon/locales/eo.json
  37. 5
    7
      app/javascript/mastodon/locales/es-AR.json
  38. 7
    9
      app/javascript/mastodon/locales/es.json
  39. 0
    2
      app/javascript/mastodon/locales/et.json
  40. 17
    19
      app/javascript/mastodon/locales/eu.json
  41. 0
    2
      app/javascript/mastodon/locales/fa.json
  42. 0
    2
      app/javascript/mastodon/locales/fi.json
  43. 12
    14
      app/javascript/mastodon/locales/fr.json
  44. 0
    2
      app/javascript/mastodon/locales/ga.json
  45. 7
    9
      app/javascript/mastodon/locales/gl.json
  46. 0
    2
      app/javascript/mastodon/locales/he.json
  47. 0
    2
      app/javascript/mastodon/locales/hi.json
  48. 0
    2
      app/javascript/mastodon/locales/hr.json
  49. 8
    10
      app/javascript/mastodon/locales/hu.json
  50. 0
    2
      app/javascript/mastodon/locales/hy.json
  51. 40
    42
      app/javascript/mastodon/locales/id.json
  52. 0
    2
      app/javascript/mastodon/locales/io.json
  53. 0
    2
      app/javascript/mastodon/locales/it.json
  54. 1
    3
      app/javascript/mastodon/locales/ja.json
  55. 0
    2
      app/javascript/mastodon/locales/ka.json
  56. 0
    2
      app/javascript/mastodon/locales/kk.json
  57. 0
    2
      app/javascript/mastodon/locales/ko.json
  58. 1
    3
      app/javascript/mastodon/locales/lt.json
  59. 1
    3
      app/javascript/mastodon/locales/lv.json
  60. 1
    3
      app/javascript/mastodon/locales/mk.json
  61. 1
    3
      app/javascript/mastodon/locales/ms.json
  62. 0
    2
      app/javascript/mastodon/locales/nl.json
  63. 120
    122
      app/javascript/mastodon/locales/nn.json
  64. 0
    2
      app/javascript/mastodon/locales/no.json
  65. 3
    5
      app/javascript/mastodon/locales/oc.json
  66. 27
    29
      app/javascript/mastodon/locales/pl.json
  67. 0
    2
      app/javascript/mastodon/locales/pt-BR.json
  68. 0
    2
      app/javascript/mastodon/locales/pt-PT.json
  69. 0
    2
      app/javascript/mastodon/locales/ro.json
  70. 0
    2
      app/javascript/mastodon/locales/ru.json
  71. 2
    4
      app/javascript/mastodon/locales/sk.json
  72. 0
    2
      app/javascript/mastodon/locales/sl.json
  73. 0
    2
      app/javascript/mastodon/locales/sq.json
  74. 0
    2
      app/javascript/mastodon/locales/sr-Latn.json
  75. 0
    2
      app/javascript/mastodon/locales/sr.json
  76. 13
    15
      app/javascript/mastodon/locales/sv.json
  77. 0
    2
      app/javascript/mastodon/locales/ta.json
  78. 0
    2
      app/javascript/mastodon/locales/te.json
  79. 4
    6
      app/javascript/mastodon/locales/th.json
  80. 0
    2
      app/javascript/mastodon/locales/tr.json
  81. 4
    6
      app/javascript/mastodon/locales/uk.json
  82. 0
    2
      app/javascript/mastodon/locales/zh-CN.json
  83. 0
    2
      app/javascript/mastodon/locales/zh-HK.json
  84. 0
    2
      app/javascript/mastodon/locales/zh-TW.json
  85. 12
    21
      app/javascript/styles/mastodon/components.scss
  86. 2
    1
      app/javascript/styles/mastodon/introduction.scss
  87. 78
    28
      app/lib/feed_manager.rb
  88. 2
    7
      app/lib/spam_check.rb
  89. 4
    5
      app/models/account.rb
  90. 12
    0
      app/models/admin/account_action.rb
  91. 1
    1
      app/models/concerns/remotable.rb
  92. 2
    0
      app/models/form/admin_settings.rb
  93. 2
    14
      app/models/home_feed.rb
  94. 3
    0
      app/models/media_attachment.rb
  95. 0
    4
      app/models/status.rb
  96. 2
    1
      app/models/tag.rb
  97. 1
    1
      app/models/trending_tags.rb
  98. 3
    1
      app/services/hashtag_query_service.rb
  99. 6
    7
      app/views/about/show.html.haml
  100. 0
    0
      app/views/admin/custom_emojis/_custom_emoji.html.haml

+ 244
- 422
AUTHORS.md
File diff suppressed because it is too large
View File


+ 33
- 0
CHANGELOG.md View File

@@ -3,6 +3,39 @@ Changelog
3 3
 
4 4
 All notable changes to this project will be documented in this file.
5 5
 
6
+## [3.0.1] - 2019-10-10
7
+### Added
8
+
9
+- Add `tootctl media usage` command ([Gargron](https://github.com/tootsuite/mastodon/pull/12115))
10
+- Add admin setting to auto-approve trending hashtags ([Gargron](https://github.com/tootsuite/mastodon/pull/12122), [Gargron](https://github.com/tootsuite/mastodon/pull/12130))
11
+
12
+### Changed
13
+
14
+- Change `tootctl media refresh` to skip already downloaded attachments ([Gargron](https://github.com/tootsuite/mastodon/pull/12118))
15
+
16
+### Removed
17
+
18
+- Remove auto-silence behaviour from spam check ([Gargron](https://github.com/tootsuite/mastodon/pull/12117))
19
+- Remove HTML `lang` attribute from individual statuses in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/12124))
20
+- Remove fallback to long description on sidebar and meta description ([Gargron](https://github.com/tootsuite/mastodon/pull/12119))
21
+
22
+### Fixed
23
+
24
+- Fix preloaded JSON-LD context for identity not being used ([Gargron](https://github.com/tootsuite/mastodon/pull/12138))
25
+- Fix media editing modal changing dimensions once the image loads ([Gargron](https://github.com/tootsuite/mastodon/pull/12131))
26
+- Fix not showing whether a custom emoji has a local counterpart in admin UI ([Gargron](https://github.com/tootsuite/mastodon/pull/12135))
27
+- Fix attachment not being re-downloaded even if file is not stored ([Gargron](https://github.com/tootsuite/mastodon/pull/12125))
28
+- Fix old migration trying to use new column due to default status scope ([Gargron](https://github.com/tootsuite/mastodon/pull/12095))
29
+- Fix column back button missing for not found accounts ([trwnh](https://github.com/tootsuite/mastodon/pull/12094))
30
+- Fix issues with tootctl's parallelization and progress reporting ([Gargron](https://github.com/tootsuite/mastodon/pull/12093), [Gargron](https://github.com/tootsuite/mastodon/pull/12097))
31
+- Fix existing user records with now-renamed `pt` locale ([Gargron](https://github.com/tootsuite/mastodon/pull/12092))
32
+- Fix hashtag timeline REST API accepting too many hashtags ([Gargron](https://github.com/tootsuite/mastodon/pull/12091))
33
+- Fix `GET /api/v1/instance` REST APIs being unavailable in secure mode ([Gargron](https://github.com/tootsuite/mastodon/pull/12089))
34
+- Fix performance of home feed regeneration and merging ([Gargron](https://github.com/tootsuite/mastodon/pull/12084))
35
+- Fix ffmpeg performance issues due to stdout buffer overflow ([hugogameiro](https://github.com/tootsuite/mastodon/pull/12088))
36
+- Fix S3 adapter retrying failing uploads with exponential backoff ([Gargron](https://github.com/tootsuite/mastodon/pull/12085))
37
+- Fix `tootctl accounts cull` advertising unused option flag ([Kjwon15](https://github.com/tootsuite/mastodon/pull/12074))
38
+
6 39
 ## [3.0.0] - 2019-10-03
7 40
 ### Added
8 41
 

+ 2
- 2
Gemfile View File

@@ -89,7 +89,7 @@ gem 'simple_form', '~> 4.1'
89 89
 gem 'sprockets-rails', '~> 3.2', require: 'sprockets/railtie'
90 90
 gem 'stoplight', '~> 2.1.3'
91 91
 gem 'strong_migrations', '~> 0.4'
92
-gem 'tty-command', '~> 0.8', require: false
92
+gem 'tty-command', '~> 0.9', require: false
93 93
 gem 'tty-prompt', '~> 0.19', require: false
94 94
 gem 'twitter-text', '~> 1.14'
95 95
 gem 'tzinfo-data', '~> 1.2019'
@@ -116,7 +116,7 @@ end
116 116
 group :test do
117 117
   gem 'capybara', '~> 3.29'
118 118
   gem 'climate_control', '~> 0.2'
119
-  gem 'faker', '~> 2.4'
119
+  gem 'faker', '~> 2.5'
120 120
   gem 'microformats', '~> 4.1'
121 121
   gem 'rails-controller-testing', '~> 1.0'
122 122
   gem 'rspec-sidekiq', '~> 3.0'

+ 18
- 15
Gemfile.lock View File

@@ -93,7 +93,7 @@ GEM
93 93
       tzinfo (~> 1.1)
94 94
     addressable (2.7.0)
95 95
       public_suffix (>= 2.0.2, < 5.0)
96
-    airbrussh (1.3.3)
96
+    airbrussh (1.3.4)
97 97
       sshkit (>= 1.6.1, != 1.7.0)
98 98
     annotate (2.7.5)
99 99
       activerecord (>= 3.2, < 7.0)
@@ -142,7 +142,7 @@ GEM
142 142
       bundler (>= 1.2.0, < 3)
143 143
       thor (~> 0.18)
144 144
     byebug (11.0.0)
145
-    capistrano (3.11.1)
145
+    capistrano (3.11.2)
146 146
       airbrussh (>= 1.0.0)
147 147
       i18n
148 148
       rake (>= 10.0.0)
@@ -188,13 +188,14 @@ GEM
188 188
     css_parser (1.7.0)
189 189
       addressable
190 190
     debug_inspector (0.0.3)
191
-    derailed_benchmarks (1.3.6)
191
+    derailed_benchmarks (1.4.0)
192 192
       benchmark-ips (~> 2)
193 193
       get_process_mem (~> 0)
194 194
       heapy (~> 0)
195 195
       memory_profiler (~> 0)
196 196
       rack (>= 1)
197 197
       rake (> 10, < 13)
198
+      ruby-statistics (>= 2.1)
198 199
       thor (~> 0.19)
199 200
     devise (4.7.1)
200 201
       bcrypt (~> 3.0)
@@ -233,13 +234,13 @@ GEM
233 234
       faraday
234 235
       multi_json
235 236
     encryptor (3.0.0)
236
-    equatable (0.5.0)
237
+    equatable (0.6.1)
237 238
     erubi (1.8.0)
238 239
     et-orbi (1.1.6)
239 240
       tzinfo
240 241
     excon (0.62.0)
241 242
     fabrication (2.20.2)
242
-    faker (2.4.0)
243
+    faker (2.5.0)
243 244
       i18n (~> 1.6.0)
244 245
     faraday (0.15.4)
245 246
       multipart-post (>= 1.2, < 3)
@@ -265,7 +266,8 @@ GEM
265 266
     fuubar (2.4.1)
266 267
       rspec-core (~> 3.0)
267 268
       ruby-progressbar (~> 1.4)
268
-    get_process_mem (0.2.3)
269
+    get_process_mem (0.2.4)
270
+      ffi (~> 1.0)
269 271
     globalid (0.4.2)
270 272
       activesupport (>= 4.2.0)
271 273
     goldfinger (2.1.0)
@@ -427,13 +429,13 @@ GEM
427 429
     parser (2.6.4.0)
428 430
       ast (~> 2.4.0)
429 431
     parslet (1.8.2)
430
-    pastel (0.7.2)
431
-      equatable (~> 0.5.0)
432
-      tty-color (~> 0.4.0)
432
+    pastel (0.7.3)
433
+      equatable (~> 0.6)
434
+      tty-color (~> 0.5)
433 435
     pg (1.1.4)
434 436
     pghero (2.3.0)
435 437
       activerecord (>= 5)
436
-    pkg-config (1.3.8)
438
+    pkg-config (1.3.9)
437 439
     premailer (1.11.1)
438 440
       addressable
439 441
       css_parser (>= 1.6.0)
@@ -568,6 +570,7 @@ GEM
568 570
     ruby-progressbar (1.10.1)
569 571
     ruby-saml (1.9.0)
570 572
       nokogiri (>= 1.5.10)
573
+    ruby-statistics (2.1.1)
571 574
     rufus-scheduler (3.5.2)
572 575
       fugit (~> 1.1, >= 1.1.5)
573 576
     safe_yaml (1.0.5)
@@ -626,8 +629,8 @@ GEM
626 629
     thor (0.20.3)
627 630
     thread_safe (0.3.6)
628 631
     tilt (2.0.9)
629
-    tty-color (0.4.3)
630
-    tty-command (0.8.2)
632
+    tty-color (0.5.0)
633
+    tty-command (0.9.0)
631 634
       pastel (~> 0.7.0)
632 635
     tty-cursor (0.7.0)
633 636
     tty-prompt (0.19.0)
@@ -652,7 +655,7 @@ GEM
652 655
     uniform_notifier (1.12.1)
653 656
     warden (1.2.8)
654 657
       rack (>= 2.0.6)
655
-    webmock (3.7.5)
658
+    webmock (3.7.6)
656 659
       addressable (>= 2.3.6)
657 660
       crack (>= 0.3.2)
658 661
       hashdiff (>= 0.4.0, < 2.0.0)
@@ -706,7 +709,7 @@ DEPENDENCIES
706 709
   doorkeeper (~> 5.2)
707 710
   dotenv-rails (~> 2.7)
708 711
   fabrication (~> 2.20)
709
-  faker (~> 2.4)
712
+  faker (~> 2.5)
710 713
   fast_blank (~> 1.0)
711 714
   fastimage
712 715
   fog-core (<= 2.1.0)
@@ -791,7 +794,7 @@ DEPENDENCIES
791 794
   streamio-ffmpeg (~> 3.0)
792 795
   strong_migrations (~> 0.4)
793 796
   thor (~> 0.20)
794
-  tty-command (~> 0.8)
797
+  tty-command (~> 0.9)
795 798
   tty-prompt (~> 0.19)
796 799
   twitter-text (~> 1.14)
797 800
   tzinfo-data (~> 1.2019)

+ 1
- 1
README.md View File

@@ -55,7 +55,7 @@ Private posts, locked accounts, phrase filtering, muting, blocking and all sorts
55 55
 
56 56
 **OAuth2 and a straightforward REST API**
57 57
 
58
-Mastodon acts as an OAuth2 provider so 3rd party apps can use the REST and Streaming APIs, resulting in a rich app ecosystem with a lot of choice!
58
+Mastodon acts as an OAuth2 provider so 3rd party apps can use the REST and Streaming APIs, resulting in a rich app ecosystem with a lot of choices!
59 59
 
60 60
 ## Deployment
61 61
 

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

@@ -4,6 +4,7 @@ class Api::V1::Instances::ActivityController < Api::BaseController
4 4
   before_action :require_enabled_api!
5 5
 
6 6
   skip_before_action :set_cache_headers
7
+  skip_before_action :require_authenticated_user!, unless: :whitelist_mode?
7 8
 
8 9
   respond_to :json
9 10
 

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

@@ -4,6 +4,7 @@ class Api::V1::Instances::PeersController < Api::BaseController
4 4
   before_action :require_enabled_api!
5 5
 
6 6
   skip_before_action :set_cache_headers
7
+  skip_before_action :require_authenticated_user!, unless: :whitelist_mode?
7 8
 
8 9
   respond_to :json
9 10
 

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

@@ -4,6 +4,7 @@ class Api::V1::InstancesController < Api::BaseController
4 4
   respond_to :json
5 5
 
6 6
   skip_before_action :set_cache_headers
7
+  skip_before_action :require_authenticated_user!, unless: :whitelist_mode?
7 8
 
8 9
   def show
9 10
     expires_in 3.minutes, public: true

+ 10
- 4
app/controllers/api/v1/streaming_controller.rb View File

@@ -5,11 +5,17 @@ class Api::V1::StreamingController < Api::BaseController
5 5
 
6 6
   def index
7 7
     if Rails.configuration.x.streaming_api_base_url != request.host
8
-      uri = URI.parse(request.url)
9
-      uri.host = URI.parse(Rails.configuration.x.streaming_api_base_url).host
10
-      redirect_to uri.to_s, status: 301
8
+      redirect_to streaming_api_url, status: 301
11 9
     else
12
-      raise ActiveRecord::RecordNotFound
10
+      not_found
13 11
     end
14 12
   end
13
+
14
+  private
15
+
16
+  def streaming_api_url
17
+    Addressable::URI.parse(request.url).tap do |uri|
18
+      uri.host = Addressable::URI.parse(Rails.configuration.x.streaming_api_base_url).host
19
+    end.to_s
20
+  end
15 21
 end

+ 1
- 5
app/controllers/api/v1/timelines/home_controller.rb View File

@@ -13,7 +13,7 @@ class Api::V1::Timelines::HomeController < Api::BaseController
13 13
     render json: @statuses,
14 14
            each_serializer: REST::StatusSerializer,
15 15
            relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id),
16
-           status: regeneration_in_progress? ? 206 : 200
16
+           status: account_home_feed.regenerating? ? 206 : 200
17 17
   end
18 18
 
19 19
   private
@@ -62,8 +62,4 @@ class Api::V1::Timelines::HomeController < Api::BaseController
62 62
   def pagination_since_id
63 63
     @statuses.first.id
64 64
   end
65
-
66
-  def regeneration_in_progress?
67
-    Redis.current.exists("account:#{current_account.id}:regeneration")
68
-  end
69 65
 end

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

@@ -97,7 +97,7 @@ export function expandTimeline(timelineId, path, params = {}, done = noOp) {
97 97
     api(getState).get(path, { params }).then(response => {
98 98
       const next = getLinks(response).refs.find(link => link.rel === 'next');
99 99
       dispatch(importFetchedStatuses(response.data));
100
-      dispatch(expandTimelineSuccess(timelineId, response.data, next ? next.uri : null, response.code === 206, isLoadingRecent, isLoadingMore, isLoadingRecent && preferPendingItems));
100
+      dispatch(expandTimelineSuccess(timelineId, response.data, next ? next.uri : null, response.status === 206, isLoadingRecent, isLoadingMore, isLoadingRecent && preferPendingItems));
101 101
       done();
102 102
     }).catch(error => {
103 103
       dispatch(expandTimelineFail(timelineId, error, isLoadingMore));

+ 0
- 63
app/javascript/mastodon/components/extended_video_player.js View File

@@ -1,63 +0,0 @@
1
-import React from 'react';
2
-import PropTypes from 'prop-types';
3
-
4
-export default class ExtendedVideoPlayer extends React.PureComponent {
5
-
6
-  static propTypes = {
7
-    src: PropTypes.string.isRequired,
8
-    alt: PropTypes.string,
9
-    width: PropTypes.number,
10
-    height: PropTypes.number,
11
-    time: PropTypes.number,
12
-    controls: PropTypes.bool.isRequired,
13
-    muted: PropTypes.bool.isRequired,
14
-    onClick: PropTypes.func,
15
-  };
16
-
17
-  handleLoadedData = () => {
18
-    if (this.props.time) {
19
-      this.video.currentTime = this.props.time;
20
-    }
21
-  }
22
-
23
-  componentDidMount () {
24
-    this.video.addEventListener('loadeddata', this.handleLoadedData);
25
-  }
26
-
27
-  componentWillUnmount () {
28
-    this.video.removeEventListener('loadeddata', this.handleLoadedData);
29
-  }
30
-
31
-  setRef = (c) => {
32
-    this.video = c;
33
-  }
34
-
35
-  handleClick = e => {
36
-    e.stopPropagation();
37
-    const handler = this.props.onClick;
38
-    if (handler) handler();
39
-  }
40
-
41
-  render () {
42
-    const { src, muted, controls, alt } = this.props;
43
-
44
-    return (
45
-      <div className='extended-video-player'>
46
-        <video
47
-          ref={this.setRef}
48
-          src={src}
49
-          autoPlay
50
-          role='button'
51
-          tabIndex='0'
52
-          aria-label={alt}
53
-          title={alt}
54
-          muted={muted}
55
-          controls={controls}
56
-          loop={!controls}
57
-          onClick={this.handleClick}
58
-        />
59
-      </div>
60
-    );
61
-  }
62
-
63
-}

+ 75
- 0
app/javascript/mastodon/components/gifv.js View File

@@ -0,0 +1,75 @@
1
+import React from 'react';
2
+import PropTypes from 'prop-types';
3
+
4
+export default class GIFV extends React.PureComponent {
5
+
6
+  static propTypes = {
7
+    src: PropTypes.string.isRequired,
8
+    alt: PropTypes.string,
9
+    width: PropTypes.number,
10
+    height: PropTypes.number,
11
+    onClick: PropTypes.func,
12
+  };
13
+
14
+  state = {
15
+    loading: true,
16
+  };
17
+
18
+  handleLoadedData = () => {
19
+    this.setState({ loading: false });
20
+  }
21
+
22
+  componentWillReceiveProps (nextProps) {
23
+    if (nextProps.src !== this.props.src) {
24
+      this.setState({ loading: true });
25
+    }
26
+  }
27
+
28
+  handleClick = e => {
29
+    const { onClick } = this.props;
30
+
31
+    if (onClick) {
32
+      e.stopPropagation();
33
+      onClick();
34
+    }
35
+  }
36
+
37
+  render () {
38
+    const { src, width, height, alt } = this.props;
39
+    const { loading } = this.state;
40
+
41
+    return (
42
+      <div className='gifv' style={{ position: 'relative' }}>
43
+        {loading && (
44
+          <canvas
45
+            width={width}
46
+            height={height}
47
+            role='button'
48
+            tabIndex='0'
49
+            aria-label={alt}
50
+            title={alt}
51
+            onClick={this.handleClick}
52
+          />
53
+        )}
54
+
55
+        <video
56
+          src={src}
57
+          width={width}
58
+          height={height}
59
+          role='button'
60
+          tabIndex='0'
61
+          aria-label={alt}
62
+          title={alt}
63
+          muted
64
+          loop
65
+          autoPlay
66
+          playsInline
67
+          onClick={this.handleClick}
68
+          onLoadedData={this.handleLoadedData}
69
+          style={{ position: loading ? 'absolute' : 'static', top: 0, left: 0 }}
70
+        />
71
+      </div>
72
+    );
73
+  }
74
+
75
+}

+ 15
- 8
app/javascript/mastodon/components/missing_indicator.js View File

@@ -1,17 +1,24 @@
1 1
 import React from 'react';
2
+import PropTypes from 'prop-types';
2 3
 import { FormattedMessage } from 'react-intl';
4
+import illustration from 'mastodon/../images/elephant_ui_disappointed.svg';
5
+import classNames from 'classnames';
3 6
 
4
-const MissingIndicator = () => (
5
-  <div className='regeneration-indicator missing-indicator'>
6
-    <div>
7
-      <div className='regeneration-indicator__figure' />
7
+const MissingIndicator = ({ fullPage }) => (
8
+  <div className={classNames('regeneration-indicator', { 'regeneration-indicator--without-header': fullPage })}>
9
+    <div className='regeneration-indicator__figure'>
10
+      <img src={illustration} alt='' />
11
+    </div>
8 12
 
9
-      <div className='regeneration-indicator__label'>
10
-        <FormattedMessage id='missing_indicator.label' tagName='strong' defaultMessage='Not found' />
11
-        <FormattedMessage id='missing_indicator.sublabel' defaultMessage='This resource could not be found' />
12
-      </div>
13
+    <div className='regeneration-indicator__label'>
14
+      <FormattedMessage id='missing_indicator.label' tagName='strong' defaultMessage='Not found' />
15
+      <FormattedMessage id='missing_indicator.sublabel' defaultMessage='This resource could not be found' />
13 16
     </div>
14 17
   </div>
15 18
 );
16 19
 
20
+MissingIndicator.propTypes = {
21
+  fullPage: PropTypes.bool,
22
+};
23
+
17 24
 export default MissingIndicator;

+ 18
- 0
app/javascript/mastodon/components/regeneration_indicator.js View File

@@ -0,0 +1,18 @@
1
+import React from 'react';
2
+import { FormattedMessage } from 'react-intl';
3
+import illustration from 'mastodon/../images/elephant_ui_working.svg';
4
+
5
+const MissingIndicator = () => (
6
+  <div className='regeneration-indicator'>
7
+    <div className='regeneration-indicator__figure'>
8
+      <img src={illustration} alt='' />
9
+    </div>
10
+
11
+    <div className='regeneration-indicator__label'>
12
+      <FormattedMessage id='regeneration_indicator.label' tagName='strong' defaultMessage='Loading&hellip;' />
13
+      <FormattedMessage id='regeneration_indicator.sublabel' defaultMessage='Your home feed is being prepared!' />
14
+    </div>
15
+  </div>
16
+);
17
+
18
+export default MissingIndicator;

+ 4
- 4
app/javascript/mastodon/components/status_content.js View File

@@ -216,14 +216,14 @@ export default class StatusContent extends React.PureComponent {
216 216
       return (
217 217
         <div className={classNames} ref={this.setRef} tabIndex='0' style={directionStyle} onMouseDown={this.handleMouseDown} onMouseUp={this.handleMouseUp}>
218 218
           <p style={{ marginBottom: hidden && status.get('mentions').isEmpty() ? '0px' : null }}>
219
-            <span dangerouslySetInnerHTML={spoilerContent} lang={status.get('language')} />
219
+            <span dangerouslySetInnerHTML={spoilerContent} />
220 220
             {' '}
221 221
             <button tabIndex='0' className={`status__content__spoiler-link ${hidden ? 'status__content__spoiler-link--show-more' : 'status__content__spoiler-link--show-less'}`} onClick={this.handleSpoilerClick}>{toggleText}</button>
222 222
           </p>
223 223
 
224 224
           {mentionsPlaceholder}
225 225
 
226
-          <div tabIndex={!hidden ? 0 : null} className={`status__content__text ${!hidden ? 'status__content__text--visible' : ''}`} style={directionStyle} dangerouslySetInnerHTML={content} lang={status.get('language')} />
226
+          <div tabIndex={!hidden ? 0 : null} className={`status__content__text ${!hidden ? 'status__content__text--visible' : ''}`} style={directionStyle} dangerouslySetInnerHTML={content} />
227 227
 
228 228
           {!hidden && !!status.get('poll') && <PollContainer pollId={status.get('poll')} />}
229 229
         </div>
@@ -231,7 +231,7 @@ export default class StatusContent extends React.PureComponent {
231 231
     } else if (this.props.onClick) {
232 232
       const output = [
233 233
         <div className={classNames} ref={this.setRef} tabIndex='0' style={directionStyle} onMouseDown={this.handleMouseDown} onMouseUp={this.handleMouseUp} key='status-content'>
234
-          <div className='status__content__text status__content__text--visible' style={directionStyle} dangerouslySetInnerHTML={content} lang={status.get('language')} />
234
+          <div className='status__content__text status__content__text--visible' style={directionStyle} dangerouslySetInnerHTML={content} />
235 235
 
236 236
           {!!status.get('poll') && <PollContainer pollId={status.get('poll')} />}
237 237
         </div>,
@@ -245,7 +245,7 @@ export default class StatusContent extends React.PureComponent {
245 245
     } else {
246 246
       return (
247 247
         <div className={classNames} ref={this.setRef} tabIndex='0' style={directionStyle}>
248
-          <div className='status__content__text status__content__text--visible' style={directionStyle} dangerouslySetInnerHTML={content} lang={status.get('language')} />
248
+          <div className='status__content__text status__content__text--visible' style={directionStyle} dangerouslySetInnerHTML={content} />
249 249
 
250 250
           {!!status.get('poll') && <PollContainer pollId={status.get('poll')} />}
251 251
         </div>

+ 2
- 13
app/javascript/mastodon/components/status_list.js View File

@@ -1,12 +1,12 @@
1 1
 import { debounce } from 'lodash';
2 2
 import React from 'react';
3
-import { FormattedMessage } from 'react-intl';
4 3
 import ImmutablePropTypes from 'react-immutable-proptypes';
5 4
 import PropTypes from 'prop-types';
6 5
 import StatusContainer from '../containers/status_container';
7 6
 import ImmutablePureComponent from 'react-immutable-pure-component';
8 7
 import LoadGap from './load_gap';
9 8
 import ScrollableList from './scrollable_list';
9
+import RegenerationIndicator from 'mastodon/components/regeneration_indicator';
10 10
 
11 11
 export default class StatusList extends ImmutablePureComponent {
12 12
 
@@ -81,18 +81,7 @@ export default class StatusList extends ImmutablePureComponent {
81 81
     const { isLoading, isPartial } = other;
82 82
 
83 83
     if (isPartial) {
84
-      return (
85
-        <div className='regeneration-indicator'>
86
-          <div>
87
-            <div className='regeneration-indicator__figure' />
88
-
89
-            <div className='regeneration-indicator__label'>
90
-              <FormattedMessage id='regeneration_indicator.label' tagName='strong' defaultMessage='Loading&hellip;' />
91
-              <FormattedMessage id='regeneration_indicator.sublabel' defaultMessage='Your home feed is being prepared!' />
92
-            </div>
93
-          </div>
94
-        </div>
95
-      );
84
+      return <RegenerationIndicator />;
96 85
     }
97 86
 
98 87
     let scrollableContent = (isLoading || statusIds.size > 0) ? (

+ 1
- 0
app/javascript/mastodon/features/account_timeline/index.js View File

@@ -83,6 +83,7 @@ class AccountTimeline extends ImmutablePureComponent {
83 83
     if (!isAccount) {
84 84
       return (
85 85
         <Column>
86
+          <ColumnBackButton multiColumn={multiColumn} />
86 87
           <MissingIndicator />
87 88
         </Column>
88 89
       );

+ 1
- 1
app/javascript/mastodon/features/generic_not_found/index.js View File

@@ -4,7 +4,7 @@ import MissingIndicator from '../../components/missing_indicator';
4 4
 
5 5
 const GenericNotFound = () => (
6 6
   <Column>
7
-    <MissingIndicator />
7
+    <MissingIndicator fullPage />
8 8
   </Column>
9 9
 );
10 10
 

+ 34
- 2
app/javascript/mastodon/features/ui/components/focal_point_modal.js View File

@@ -16,6 +16,7 @@ import UploadProgress from 'mastodon/features/compose/components/upload_progress
16 16
 import CharacterCounter from 'mastodon/features/compose/components/character_counter';
17 17
 import { length } from 'stringz';
18 18
 import { Tesseract as fetchTesseract } from 'mastodon/features/ui/util/async-components';
19
+import GIFV from 'mastodon/components/gifv';
19 20
 
20 21
 const messages = defineMessages({
21 22
   close: { id: 'lightbox.close', defaultMessage: 'Close' },
@@ -41,6 +42,36 @@ const removeExtraLineBreaks = str => str.replace(/\n\n/g, '******')
41 42
 
42 43
 const assetHost = process.env.CDN_HOST || '';
43 44
 
45
+class ImageLoader extends React.PureComponent {
46
+
47
+  static propTypes = {
48
+    src: PropTypes.string.isRequired,
49
+    width: PropTypes.number,
50
+    height: PropTypes.number,
51
+  };
52
+
53
+  state = {
54
+    loading: true,
55
+  };
56
+
57
+  componentDidMount() {
58
+    const image = new Image();
59
+    image.addEventListener('load', () => this.setState({ loading: false }));
60
+    image.src = this.props.src;
61
+  }
62
+
63
+  render () {
64
+    const { loading } = this.state;
65
+
66
+    if (loading) {
67
+      return <canvas width={this.props.width} height={this.props.height} />;
68
+    } else {
69
+      return <img {...this.props} alt='' />;
70
+    }
71
+  }
72
+
73
+}
74
+
44 75
 export default @connect(mapStateToProps, mapDispatchToProps)
45 76
 @injectIntl
46 77
 class FocalPointModal extends ImmutablePureComponent {
@@ -60,6 +91,7 @@ class FocalPointModal extends ImmutablePureComponent {
60 91
     description: '',
61 92
     dirty: false,
62 93
     progress: 0,
94
+    loading: true,
63 95
   };
64 96
 
65 97
   componentWillMount () {
@@ -242,8 +274,8 @@ class FocalPointModal extends ImmutablePureComponent {
242 274
           <div className='focal-point-modal__content'>
243 275
             {focals && (
244 276
               <div className={classNames('focal-point', { dragging })} ref={this.setRef} onMouseDown={this.handleMouseDown} onTouchStart={this.handleTouchStart}>
245
-                {media.get('type') === 'image' && <img src={media.get('url')} width={width} height={height} alt='' />}
246
-                {media.get('type') === 'gifv' && <video src={media.get('url')} width={width} height={height} loop muted autoPlay />}
277
+                {media.get('type') === 'image' && <ImageLoader src={media.get('url')} width={width} height={height} alt='' />}
278
+                {media.get('type') === 'gifv' && <GIFV src={media.get('url')} width={width} height={height} />}
247 279
 
248 280
                 <div className='focal-point__preview'>
249 281
                   <strong><FormattedMessage id='upload_modal.preview_label' defaultMessage='Preview ({ratio})' values={{ ratio: '16:9' }} /></strong>

+ 2
- 4
app/javascript/mastodon/features/ui/components/media_modal.js View File

@@ -3,13 +3,13 @@ import ReactSwipeableViews from 'react-swipeable-views';
3 3
 import ImmutablePropTypes from 'react-immutable-proptypes';
4 4
 import PropTypes from 'prop-types';
5 5
 import Video from 'mastodon/features/video';
6
-import ExtendedVideoPlayer from 'mastodon/components/extended_video_player';
7 6
 import classNames from 'classnames';
8 7
 import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
9 8
 import IconButton from 'mastodon/components/icon_button';
10 9
 import ImmutablePureComponent from 'react-immutable-pure-component';
11 10
 import ImageLoader from './image_loader';
12 11
 import Icon from 'mastodon/components/icon';
12
+import GIFV from 'mastodon/components/gifv';
13 13
 
14 14
 const messages = defineMessages({
15 15
   close: { id: 'lightbox.close', defaultMessage: 'Close' },
@@ -169,10 +169,8 @@ class MediaModal extends ImmutablePureComponent {
169 169
         );
170 170
       } else if (image.get('type') === 'gifv') {
171 171
         return (
172
-          <ExtendedVideoPlayer
172
+          <GIFV
173 173
             src={image.get('url')}
174
-            muted
175
-            controls={false}
176 174
             width={width}
177 175
             height={height}
178 176
             key={image.get('preview_url')}

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

@@ -115,7 +115,7 @@
115 115
   "conversation.mark_as_read": "اعتبرها كمقروءة",
116 116
   "conversation.open": "اعرض المحادثة",
117 117
   "conversation.with": "بـ {names}",
118
-  "directory.federated": "From known fediverse",
118
+  "directory.federated": "مِن الفديفرس المعروف",
119 119
   "directory.local": "مِن {domain} فقط",
120 120
   "directory.new_arrivals": "الوافدون الجُدد",
121 121
   "directory.recently_active": "نشط مؤخرا",
@@ -155,7 +155,7 @@
155 155
   "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
156 156
   "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.",
157 157
   "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
158
-  "errors.unexpected_crash.report_issue": "Report issue",
158
+  "errors.unexpected_crash.report_issue": "الإبلاغ عن خلل",
159 159
   "follow_request.authorize": "ترخيص",
160 160
   "follow_request.reject": "رفض",
161 161
   "getting_started.developers": "المُطوِّرون",
@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "الأساسية",
179 179
   "home.column_settings.show_reblogs": "عرض الترقيات",
180 180
   "home.column_settings.show_replies": "اعرض الردود",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# يوم} other {# أيام}}",
183 182
   "intervals.full.hours": "{number, plural, one {# ساعة} other {# ساعات}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# دقيقة} other {# دقائق}}",
@@ -244,7 +243,7 @@
244 243
   "lists.new.title_placeholder": "عنوان القائمة الجديدة",
245 244
   "lists.search": "إبحث في قائمة الحسابات التي تُتابِعها",
246 245
   "lists.subheading": "قوائمك",
247
-  "load_pending": "{count, plural, one {# new item} other {# new items}}",
246
+  "load_pending": "{count, plural, one {# عنصر جديد} other {# عناصر جديدة}}",
248 247
   "loading_indicator.label": "تحميل...",
249 248
   "media_gallery.toggle_visible": "عرض / إخفاء",
250 249
   "missing_indicator.label": "غير موجود",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "التفضيلات",
273 272
   "navigation_bar.public_timeline": "الخيط العام الموحد",
274 273
   "navigation_bar.security": "الأمان",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "أُعجِب {name} بمنشورك",
277 275
   "notification.follow": "{name} يتابعك",
278 276
   "notification.mention": "{name} ذكرك",
@@ -301,10 +299,10 @@
301 299
   "notifications.group": "{count} إشعارات",
302 300
   "poll.closed": "انتهى",
303 301
   "poll.refresh": "تحديث",
304
-  "poll.total_people": "{count, plural, one {# person} other {# people}}",
302
+  "poll.total_people": "{count, plural, one {# شخص} other {# أشخاص}}",
305 303
   "poll.total_votes": "{count, plural, one {# صوت} other {# أصوات}}",
306 304
   "poll.vote": "صَوّت",
307
-  "poll.voted": "You voted for this answer",
305
+  "poll.voted": "لقد صوّتت على هذه الإجابة",
308 306
   "poll_button.add_poll": "إضافة استطلاع للرأي",
309 307
   "poll_button.remove_poll": "إزالة استطلاع الرأي",
310 308
   "privacy.change": "اضبط خصوصية المنشور",
@@ -391,10 +389,10 @@
391 389
   "tabs_bar.notifications": "الإخطارات",
392 390
   "tabs_bar.search": "البحث",
393 391
   "time_remaining.days": "{number, plural, one {# يوم} other {# أيام}} متبقية",
394
-  "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
395
-  "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
392
+  "time_remaining.hours": "{number, plural, one {# ساعة} other {# ساعات}} متبقية",
393
+  "time_remaining.minutes": "{number, plural, one {# دقيقة} other {# دقائق}} متبقية",
396 394
   "time_remaining.moments": "لحظات متبقية",
397
-  "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
395
+  "time_remaining.seconds": "{number, plural, one {# ثانية} other {# ثوانٍ}} متبقية",
398 396
   "trends.count_by_accounts": "{count} {rawCount, plural, one {person} آخرون {people}} يتحدثون",
399 397
   "trends.trending_now": "المتداولة الآن",
400 398
   "ui.beforeunload": "سوف تفقد مسودتك إن تركت ماستدون.",
@@ -408,7 +406,7 @@
408 406
   "upload_modal.analyzing_picture": "جارٍ فحص الصورة…",
409 407
   "upload_modal.apply": "طبّق",
410 408
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
411
-  "upload_modal.detect_text": "Detect text from picture",
409
+  "upload_modal.detect_text": "اكتشف النص مِن الصورة",
412 410
   "upload_modal.edit_media": "تعديل الوسائط",
413 411
   "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.",
414 412
   "upload_modal.preview_label": "معاينة ({ratio})",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Basic",
179 179
   "home.column_settings.show_reblogs": "Amosar toots compartíos",
180 180
   "home.column_settings.show_replies": "Amosar rempuestes",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
183 182
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Preferencies",
273 272
   "navigation_bar.public_timeline": "Llinia temporal federada",
274 273
   "navigation_bar.security": "Seguranza",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} favourited your status",
277 275
   "notification.follow": "{name} siguióte",
278 276
   "notification.mention": "{name} mentóte",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Basic",
179 179
   "home.column_settings.show_reblogs": "Show boosts",
180 180
   "home.column_settings.show_replies": "Show replies",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
183 182
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Предпочитания",
273 272
   "navigation_bar.public_timeline": "Публичен канал",
274 273
   "navigation_bar.security": "Security",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} хареса твоята публикация",
277 275
   "notification.follow": "{name} те последва",
278 276
   "notification.mention": "{name} те спомена",
@@ -412,7 +410,7 @@
412 410
   "upload_modal.edit_media": "Edit media",
413 411
   "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.",
414 412
   "upload_modal.preview_label": "Preview ({ratio})",
415
-  "upload_progress.label": "Uploading...",
413
+  "upload_progress.label": "Uploading",
416 414
   "video.close": "Close video",
417 415
   "video.exit_fullscreen": "Exit full screen",
418 416
   "video.expand": "Expand video",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "সাধারণ",
179 179
   "home.column_settings.show_reblogs": "সমর্থনগুলো দেখান",
180 180
   "home.column_settings.show_replies": "মতামত দেখান",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
183 182
   "intervals.full.hours": "{number, plural, one {# ঘটা} other {# ঘটা}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "পছন্দসমূহ",
273 272
   "navigation_bar.public_timeline": "যুক্তবিশ্বের সময়রেখা",
274 273
   "navigation_bar.security": "নিরাপত্তা",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} আপনার কার্যক্রম পছন্দ করেছেন",
277 275
   "notification.follow": "{name} আপনাকে অনুসরণ করেছেন",
278 276
   "notification.mention": "{name} আপনাকে উল্লেখ করেছেন",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Basic",
179 179
   "home.column_settings.show_reblogs": "Show boosts",
180 180
   "home.column_settings.show_replies": "Show replies",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
183 182
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Preferences",
273 272
   "navigation_bar.public_timeline": "Federated timeline",
274 273
   "navigation_bar.security": "Security",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} favourited your status",
277 275
   "notification.follow": "{name} followed you",
278 276
   "notification.mention": "{name} mentioned you",
@@ -412,7 +410,7 @@
412 410
   "upload_modal.edit_media": "Edit media",
413 411
   "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.",
414 412
   "upload_modal.preview_label": "Preview ({ratio})",
415
-  "upload_progress.label": "Uploading...",
413
+  "upload_progress.label": "Uploading",
416 414
   "video.close": "Close video",
417 415
   "video.exit_fullscreen": "Exit full screen",
418 416
   "video.expand": "Expand video",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Bàsic",
179 179
   "home.column_settings.show_reblogs": "Mostrar impulsos",
180 180
   "home.column_settings.show_replies": "Mostrar respostes",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# dia} other {# dies}}",
183 182
   "intervals.full.hours": "{number, plural, one {# hora} other {# hores}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minut} other {# minuts}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Preferències",
273 272
   "navigation_bar.public_timeline": "Línia de temps federada",
274 273
   "navigation_bar.security": "Seguretat",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} ha afavorit el teu estat",
277 275
   "notification.follow": "{name} et segueix",
278 276
   "notification.mention": "{name} t'ha esmentat",
@@ -395,7 +393,7 @@
395 393
   "time_remaining.minutes": "{number, plural, one {# minut} other {# minuts}} restants",
396 394
   "time_remaining.moments": "Moments restants",
397 395
   "time_remaining.seconds": "{number, plural, one {# segon} other {# segons}} restants",
398
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {gent}} talking",
396
+  "trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {persones}} parlant-hi",
399 397
   "trends.trending_now": "Ara en tendència",
400 398
   "ui.beforeunload": "El teu esborrany es perdrà si surts de Mastodon.",
401 399
   "upload_area.title": "Arrossega i deixa anar per a carregar",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Bàsichi",
179 179
   "home.column_settings.show_reblogs": "Vede e spartere",
180 180
   "home.column_settings.show_replies": "Vede e risposte",
181
-  "home.column_settings.update_live": "Attualizà in tempu reale",
182 181
   "intervals.full.days": "{number, plural, one {# ghjornu} other {# ghjorni}}",
183 182
   "intervals.full.hours": "{number, plural, one {# ora} other {# ore}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minuta} other {# minute}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Preferenze",
273 272
   "navigation_bar.public_timeline": "Linea pubblica glubale",
274 273
   "navigation_bar.security": "Sicurità",
275
-  "notification.and_n_others": "è {count, plural, one {# altru} other {# altri}}",
276 274
   "notification.favourite": "{name} hà aghjuntu u vostru statutu à i so favuriti",
277 275
   "notification.follow": "{name} v'hà seguitatu",
278 276
   "notification.mention": "{name} v'hà mintuvatu",

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

@@ -43,7 +43,7 @@
43 43
   "alert.unexpected.message": "Objevila se neočekávaná chyba.",
44 44
   "alert.unexpected.title": "Jejda!",
45 45
   "autosuggest_hashtag.per_week": "{count} za týden",
46
-  "boost_modal.combo": "Příště můžete pro přeskočení kliknout na {combo}",
46
+  "boost_modal.combo": "Příště můžete pro přeskočení stisknout {combo}",
47 47
   "bundle_column_error.body": "Při načítání tohoto komponentu se něco pokazilo.",
48 48
   "bundle_column_error.retry": "Zkuste to znovu",
49 49
   "bundle_column_error.title": "Chyba sítě",
@@ -164,7 +164,7 @@
164 164
   "getting_started.heading": "Začínáme",
165 165
   "getting_started.invite": "Pozvat lidi",
166 166
   "getting_started.open_source_notice": "Mastodon je otevřený software. Na GitHubu k němu můžete přispět nebo nahlásit chyby: {github}.",
167
-  "getting_started.security": "Zabezpečení",
167
+  "getting_started.security": "Nastavení účtu",
168 168
   "getting_started.terms": "Podmínky používání",
169 169
   "hashtag.column_header.tag_mode.all": "a {additional}",
170 170
   "hashtag.column_header.tag_mode.any": "nebo {additional}",
@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Základní",
179 179
   "home.column_settings.show_reblogs": "Zobrazit boosty",
180 180
   "home.column_settings.show_replies": "Zobrazit odpovědi",
181
-  "home.column_settings.update_live": "Aktualizovat v reálném čase",
182 181
   "intervals.full.days": "{number, plural, one {# den} few {# dny} many {# dne} other {# dní}}",
183 182
   "intervals.full.hours": "{number, plural, one {# hodina} few {# hodiny} many {# hodiny} other {# hodin}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minuta} few {# minuty} many {# minuty} other {# minut}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Předvolby",
273 272
   "navigation_bar.public_timeline": "Federovaná časová osa",
274 273
   "navigation_bar.security": "Zabezpečení",
275
-  "notification.and_n_others": "a {count, plural, one {# další} few {# další} many {# dalších} other {# dalších}}",
276 274
   "notification.favourite": "{name} si oblíbil/a váš toot",
277 275
   "notification.follow": "{name} vás začal/a sledovat",
278 276
   "notification.mention": "{name} vás zmínil/a",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Syml",
179 179
   "home.column_settings.show_reblogs": "Dangos bŵstiau",
180 180
   "home.column_settings.show_replies": "Dangos ymatebion",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# ddydd} other {# o ddyddiau}}",
183 182
   "intervals.full.hours": "{number, plural, one {# awr} other {# o oriau}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# funud} other {# o funudau}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Dewisiadau",
273 272
   "navigation_bar.public_timeline": "Ffrwd y ffederasiwn",
274 273
   "navigation_bar.security": "Diogelwch",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "hoffodd {name} eich tŵt",
277 275
   "notification.follow": "dilynodd {name} chi",
278 276
   "notification.mention": "Soniodd {name} amdanoch chi",

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

@@ -111,10 +111,10 @@
111 111
   "confirmations.reply.message": "Hvis du svarer nu vil du overskrive den besked du er ved at skrive. Er du sikker på, du vil fortsætte?",
112 112
   "confirmations.unfollow.confirm": "Følg ikke længere",
113 113
   "confirmations.unfollow.message": "Er du sikker på, du ikke længere vil følge {name}?",
114
-  "conversation.delete": "Delete conversation",
115
-  "conversation.mark_as_read": "Mark as read",
116
-  "conversation.open": "View conversation",
117
-  "conversation.with": "With {names}",
114
+  "conversation.delete": "Slet samtale",
115
+  "conversation.mark_as_read": "Marker som læst",
116
+  "conversation.open": "Vis samtale",
117
+  "conversation.with": "Med {names}",
118 118
   "directory.federated": "Fra kendt fedivers",
119 119
   "directory.local": "Kun fra {domain}",
120 120
   "directory.new_arrivals": "Nye ankomster",
@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Grundlæggende",
179 179
   "home.column_settings.show_reblogs": "Vis fremhævelser",
180 180
   "home.column_settings.show_replies": "Vis svar",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# dag} other {# dage}}",
183 182
   "intervals.full.hours": "{number, plural, one {# time} other {# timer}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minut} other {# minutter}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Præferencer",
273 272
   "navigation_bar.public_timeline": "Fælles tidslinje",
274 273
   "navigation_bar.security": "Sikkerhed",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} favoriserede din status",
277 275
   "notification.follow": "{name} fulgte dig",
278 276
   "notification.mention": "{name} nævnte dig",

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

@@ -10,7 +10,7 @@
10 10
   "account.edit_profile": "Profil bearbeiten",
11 11
   "account.endorse": "Auf Profil hervorheben",
12 12
   "account.follow": "Folgen",
13
-  "account.followers": "Folger_innen",
13
+  "account.followers": "Folgende",
14 14
   "account.followers.empty": "Diesem Profil folgt noch niemand.",
15 15
   "account.follows": "Folgt",
16 16
   "account.follows.empty": "Dieses Profil folgt noch niemandem.",
@@ -99,7 +99,7 @@
99 99
   "confirmations.delete_list.confirm": "Löschen",
100 100
   "confirmations.delete_list.message": "Bist du dir sicher, dass du diese Liste permanent löschen möchtest?",
101 101
   "confirmations.domain_block.confirm": "Die ganze Domain verbergen",
102
-  "confirmations.domain_block.message": "Bist du dir wirklich sicher, dass du die ganze Domain {domain} blockieren willst? In den meisten Fällen reichen ein paar gezielte Blockierungen oder Stummschaltungen aus. Nach der Blockierung wirst du nichts mehr von dieser Domain in öffentlichen Zeitleisten oder Benachrichtigungen sehen. Deine Folger_innen von dieser Domain werden auch entfernt.",
102
+  "confirmations.domain_block.message": "Bist du dir wirklich sicher, dass du die ganze Domain {domain} blockieren willst? In den meisten Fällen reichen ein paar gezielte Blockierungen oder Stummschaltungen aus. Du wirst den Inhalt von dieser Domain nicht in irgendwelchen öffentlichen Timelines oder den Benachrichtigungen finden. Deine Folgenden von dieser Domain werden entfernt.",
103 103
   "confirmations.logout.confirm": "Abmelden",
104 104
   "confirmations.logout.message": "Bist du sicher, dass du dich abmelden möchtest?",
105 105
   "confirmations.mute.confirm": "Stummschalten",
@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Einfach",
179 179
   "home.column_settings.show_reblogs": "Geteilte Beiträge anzeigen",
180 180
   "home.column_settings.show_replies": "Antworten anzeigen",
181
-  "home.column_settings.update_live": "In Echtzeit aktualisieren",
182 181
   "intervals.full.days": "{number, plural, one {# Tag} other {# Tage}}",
183 182
   "intervals.full.hours": "{number, plural, one {# Stunde} other {# Stunden}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# Minute} other {# Minuten}}",
@@ -191,7 +190,7 @@
191 190
   "introduction.federation.local.text": "Öffentliche Beiträge von Leuten auf demselben Server wie du erscheinen in der lokalen Zeitleiste.",
192 191
   "introduction.interactions.action": "Tutorial beenden!",
193 192
   "introduction.interactions.favourite.headline": "Favorisieren",
194
-  "introduction.interactions.favourite.text": "Du kannst Beitrage für später speichern und ihre Autor_innen wissen lassen, dass sie dir gefallen haben, indem du sie favorisierst.",
193
+  "introduction.interactions.favourite.text": "Du kannst Beitrage für später speichern und ihre Autoren wissen lassen, dass sie dir gefallen haben, indem du sie favorisierst.",
195 194
   "introduction.interactions.reblog.headline": "Teilen",
196 195
   "introduction.interactions.reblog.text": "Du kannst Beiträge anderer mit deinen Followern teilen, indem du sie teilst.",
197 196
   "introduction.interactions.reply.headline": "Antworten",
@@ -261,7 +260,7 @@
261 260
   "navigation_bar.favourites": "Favoriten",
262 261
   "navigation_bar.filters": "Stummgeschaltene Wörter",
263 262
   "navigation_bar.follow_requests": "Folgeanfragen",
264
-  "navigation_bar.follows_and_followers": "Folger_innen und Gefolgte",
263
+  "navigation_bar.follows_and_followers": "Folgende und Gefolgte",
265 264
   "navigation_bar.info": "Über diesen Server",
266 265
   "navigation_bar.keyboard_shortcuts": "Tastenkombinationen",
267 266
   "navigation_bar.lists": "Listen",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Einstellungen",
273 272
   "navigation_bar.public_timeline": "Föderierte Zeitleiste",
274 273
   "navigation_bar.security": "Sicherheit",
275
-  "notification.and_n_others": "und {count, plural, one {# andere Person} other {# andere Personen}}",
276 274
   "notification.favourite": "{name} hat deinen Beitrag favorisiert",
277 275
   "notification.follow": "{name} folgt dir",
278 276
   "notification.mention": "{name} hat dich erwähnt",
@@ -285,7 +283,7 @@
285 283
   "notifications.column_settings.filter_bar.advanced": "Zeige alle Kategorien an",
286 284
   "notifications.column_settings.filter_bar.category": "Schnellfilterleiste",
287 285
   "notifications.column_settings.filter_bar.show": "Anzeigen",
288
-  "notifications.column_settings.follow": "Neue Folger_innen:",
286
+  "notifications.column_settings.follow": "Neue Folgende:",
289 287
   "notifications.column_settings.mention": "Erwähnungen:",
290 288
   "notifications.column_settings.poll": "Ergebnisse von Umfragen:",
291 289
   "notifications.column_settings.push": "Push-Benachrichtigungen",
@@ -295,7 +293,7 @@
295 293
   "notifications.filter.all": "Alle",
296 294
   "notifications.filter.boosts": "Geteilte Beiträge",
297 295
   "notifications.filter.favourites": "Favorisierungen",
298
-  "notifications.filter.follows": "Folger_innen",
296
+  "notifications.filter.follows": "Folgt",
299 297
   "notifications.filter.mentions": "Erwähnungen",
300 298
   "notifications.filter.polls": "Ergebnisse der Umfrage",
301 299
   "notifications.group": "{count} Benachrichtigungen",
@@ -310,8 +308,8 @@
310 308
   "privacy.change": "Sichtbarkeit des Beitrags anpassen",
311 309
   "privacy.direct.long": "Wird an erwähnte Profile gesendet",
312 310
   "privacy.direct.short": "Direktnachricht",
313
-  "privacy.private.long": "Wird nur für deine Folger_innen sichtbar sein",
314
-  "privacy.private.short": "Nur für Folger_innen",
311
+  "privacy.private.long": "Wird nur für deine Folgende sichtbar sein",
312
+  "privacy.private.short": "Nur für Folgende",
315 313
   "privacy.public.long": "Wird in öffentlichen Zeitleisten erscheinen",
316 314
   "privacy.public.short": "Öffentlich",
317 315
   "privacy.unlisted.long": "Wird in öffentlichen Zeitleisten nicht gezeigt",

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

@@ -278,6 +278,19 @@
278 278
     ],
279 279
     "path": "app/javascript/mastodon/components/poll.json"
280 280
   },
281
+  {
282
+    "descriptors": [
283
+      {
284
+        "defaultMessage": "Loading…",
285
+        "id": "regeneration_indicator.label"
286
+      },
287
+      {
288
+        "defaultMessage": "Your home feed is being prepared!",
289
+        "id": "regeneration_indicator.sublabel"
290
+      }
291
+    ],
292
+    "path": "app/javascript/mastodon/components/regeneration_indicator.json"
293
+  },
281 294
   {
282 295
     "descriptors": [
283 296
       {
@@ -445,19 +458,6 @@
445 458
     ],
446 459
     "path": "app/javascript/mastodon/components/status_content.json"
447 460
   },
448
-  {
449
-    "descriptors": [
450
-      {
451
-        "defaultMessage": "Loading…",
452
-        "id": "regeneration_indicator.label"
453
-      },
454
-      {
455
-        "defaultMessage": "Your home feed is being prepared!",
456
-        "id": "regeneration_indicator.sublabel"
457
-      }
458
-    ],
459
-    "path": "app/javascript/mastodon/components/status_list.json"
460
-  },
461 461
   {
462 462
     "descriptors": [
463 463
       {
@@ -1135,15 +1135,6 @@
1135 1135
     ],
1136 1136
     "path": "app/javascript/mastodon/features/compose/components/upload_form.json"
1137 1137
   },
1138
-  {
1139
-    "descriptors": [
1140
-      {
1141
-        "defaultMessage": "Uploading...",
1142
-        "id": "upload_progress.label"
1143
-      }
1144
-    ],
1145
-    "path": "app/javascript/mastodon/features/compose/components/upload_progress.json"
1146
-  },
1147 1138
   {
1148 1139
     "descriptors": [
1149 1140
       {
@@ -1435,6 +1426,10 @@
1435 1426
   },
1436 1427
   {
1437 1428
     "descriptors": [
1429
+      {
1430
+        "defaultMessage": "Refresh",
1431
+        "id": "refresh"
1432
+      },
1438 1433
       {
1439 1434
         "defaultMessage": "No one has favourited this toot yet. When someone does, they will show up here.",
1440 1435
         "id": "empty_column.favourites"
@@ -1483,10 +1478,6 @@
1483 1478
   },
1484 1479
   {
1485 1480
     "descriptors": [
1486
-      {
1487
-        "defaultMessage": "Refresh",
1488
-        "id": "refresh"
1489
-      },
1490 1481
       {
1491 1482
         "defaultMessage": "Profile unavailable",
1492 1483
         "id": "empty_column.account_unavailable"
@@ -1640,6 +1631,10 @@
1640 1631
   },
1641 1632
   {
1642 1633
     "descriptors": [
1634
+      {
1635
+        "defaultMessage": "Basic",
1636
+        "id": "home.column_settings.basic"
1637
+      },
1643 1638
       {
1644 1639
         "defaultMessage": "Show boosts",
1645 1640
         "id": "home.column_settings.show_reblogs"
@@ -2021,14 +2016,6 @@
2021 2016
         "defaultMessage": "Push notifications",
2022 2017
         "id": "notifications.column_settings.push"
2023 2018
       },
2024
-      {
2025
-        "defaultMessage": "Basic",
2026
-        "id": "home.column_settings.basic"
2027
-      },
2028
-      {
2029
-        "defaultMessage": "Update in real-time",
2030
-        "id": "home.column_settings.update_live"
2031
-      },
2032 2019
       {
2033 2020
         "defaultMessage": "Quick filter bar",
2034 2021
         "id": "notifications.column_settings.filter_bar.category"
@@ -2087,10 +2074,6 @@
2087 2074
   },
2088 2075
   {
2089 2076
     "descriptors": [
2090
-      {
2091
-        "defaultMessage": "and {count, plural, one {# other} other {# others}}",
2092
-        "id": "notification.and_n_others"
2093
-      },
2094 2077
       {
2095 2078
         "defaultMessage": "{name} followed you",
2096 2079
         "id": "notification.follow"

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

@@ -103,7 +103,7 @@
103 103
   "confirmations.logout.confirm": "Αποσύνδεση",
104 104
   "confirmations.logout.message": "Σίγουρα θέλεις να αποσυνδεθείς;",
105 105
   "confirmations.mute.confirm": "Αποσιώπηση",
106
-  "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.",
106
+  "confirmations.mute.explanation": "Αυτό θα κρύψει τις δημοσιεύσεις τους και τις δημοσιεύσεις που τους αναφέρουν, αλλά θα συνεχίσουν να μπορούν να βλέπουν τις δημοσιεύσεις σου και να σε ακολουθούν.",
107 107
   "confirmations.mute.message": "Σίγουρα θες να αποσιωπήσεις {name};",
108 108
   "confirmations.redraft.confirm": "Διαγραφή & ξαναγράψιμο",
109 109
   "confirmations.redraft.message": "Σίγουρα θέλεις να σβήσεις αυτή την κατάσταση και να την ξαναγράψεις; Οι αναφορές και τα αγαπημένα της θα χαθούν ενώ οι απαντήσεις προς αυτή θα μείνουν ορφανές.",
@@ -152,10 +152,10 @@
152 152
   "empty_column.mutes": "Δεν έχεις αποσιωπήσει κανένα χρήστη ακόμα.",
153 153
   "empty_column.notifications": "Δεν έχεις ειδοποιήσεις ακόμα. Αλληλεπίδρασε με άλλους χρήστες για να ξεκινήσεις την κουβέντα.",
154 154
   "empty_column.public": "Δεν υπάρχει τίποτα εδώ! Γράψε κάτι δημόσιο, ή ακολούθησε χειροκίνητα χρήστες από άλλους κόμβους για να τη γεμίσεις",
155
-  "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
156
-  "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.",
157
-  "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
158
-  "errors.unexpected_crash.report_issue": "Report issue",
155
+  "error.unexpected_crash.explanation": "Είτε λόγω λάθους στον κώδικά μας ή λόγω ασυμβατότητας με τον browser, η σελίδα δε μπόρεσε να εμφανιστεί σωστά.",
156
+  "error.unexpected_crash.next_steps": "Δοκίμασε να ανανεώσεις τη σελίδα. Αν αυτό δε βοηθήσει, ίσως να μπορέσεις να χρησιμοποιήσεις το Mastodon μέσω διαφορετικού browser ή κάποιας εφαρμογής.",
157
+  "errors.unexpected_crash.copy_stacktrace": "Αντιγραφή μηνυμάτων κώδικα στο πρόχειρο",
158
+  "errors.unexpected_crash.report_issue": "Αναφορά προβλήματος",
159 159
   "follow_request.authorize": "Ενέκρινε",
160 160
   "follow_request.reject": "Απέρριψε",
161 161
   "getting_started.developers": "Ανάπτυξη",
@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Βασικές ρυθμίσεις",
179 179
   "home.column_settings.show_reblogs": "Εμφάνιση προωθήσεων",
180 180
   "home.column_settings.show_replies": "Εμφάνιση απαντήσεων",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# μέρα} other {# μέρες}}",
183 182
   "intervals.full.hours": "{number, plural, one {# ώρα} other {# ώρες}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# λεπτό} other {# λεπτά}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Προτιμήσεις",
273 272
   "navigation_bar.public_timeline": "Ομοσπονδιακή ροή",
274 273
   "navigation_bar.security": "Ασφάλεια",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "Ο/Η {name} σημείωσε ως αγαπημένη την κατάστασή σου",
277 275
   "notification.follow": "Ο/Η {name} σε ακολούθησε",
278 276
   "notification.mention": "Ο/Η {name} σε ανέφερε",
@@ -301,7 +299,7 @@
301 299
   "notifications.group": "{count} ειδοποιήσεις",
302 300
   "poll.closed": "Κλειστή",
303 301
   "poll.refresh": "Ανανέωση",
304
-  "poll.total_people": "{count, plural, one {# person} other {# people}}",
302
+  "poll.total_people": "{count, plural, one {# άτομο} other {# άτομα}}",
305 303
   "poll.total_votes": "{count, plural, one {# ψήφος} other {# ψήφοι}}",
306 304
   "poll.vote": "Ψήφισε",
307 305
   "poll.voted": "Ψηφίσατε αυτήν την απάντηση",
@@ -316,7 +314,7 @@
316 314
   "privacy.public.short": "Δημόσιο",
317 315
   "privacy.unlisted.long": "Μην δημοσιεύσεις στις δημόσιες ροές",
318 316
   "privacy.unlisted.short": "Μη καταχωρημένα",
319
-  "refresh": "Refresh",
317
+  "refresh": "Ανανέωση",
320 318
   "regeneration_indicator.label": "Φορτώνει…",
321 319
   "regeneration_indicator.sublabel": "Η αρχική σου ροή ετοιμάζεται!",
322 320
   "relative_time.days": "{number}η",

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

@@ -179,7 +179,6 @@
179 179
   "home.column_settings.basic": "Basic",
180 180
   "home.column_settings.show_reblogs": "Show boosts",
181 181
   "home.column_settings.show_replies": "Show replies",
182
-  "home.column_settings.update_live": "Update in real-time",
183 182
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
184 183
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
185 184
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -273,7 +272,6 @@
273 272
   "navigation_bar.preferences": "Preferences",
274 273
   "navigation_bar.public_timeline": "Federated timeline",
275 274
   "navigation_bar.security": "Security",
276
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
277 275
   "notification.favourite": "{name} favourited your status",
278 276
   "notification.follow": "{name} followed you",
279 277
   "notification.mention": "{name} mentioned you",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Bazaj agordoj",
179 179
   "home.column_settings.show_reblogs": "Montri diskonigojn",
180 180
   "home.column_settings.show_replies": "Montri respondojn",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# tago} other {# tagoj}}",
183 182
   "intervals.full.hours": "{number, plural, one {# horo} other {# horoj}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutoj}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Preferoj",
273 272
   "navigation_bar.public_timeline": "Fratara tempolinio",
274 273
   "navigation_bar.security": "Sekureco",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} stelumis vian mesaĝon",
277 275
   "notification.follow": "{name} eksekvis vin",
278 276
   "notification.mention": "{name} menciis vin",
@@ -301,7 +299,7 @@
301 299
   "notifications.group": "{count} sciigoj",
302 300
   "poll.closed": "Finita",
303 301
   "poll.refresh": "Aktualigi",
304
-  "poll.total_people": "{count, plural, one {# person} other {# people}}",
302
+  "poll.total_people": "{count, plural, one {# homo} other {# homoj}}",
305 303
   "poll.total_votes": "{count, plural, one {# voĉdono} other {# voĉdonoj}}",
306 304
   "poll.vote": "Voĉdoni",
307 305
   "poll.voted": "Vi elektis por ĉi tiu respondo",

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

@@ -106,7 +106,7 @@
106 106
   "confirmations.mute.explanation": "Esto ocultará mensajes de ellos y mensajes que los mencionen, pero todavía les permitirá ver tus mensajes o seguirte.",
107 107
   "confirmations.mute.message": "¿Estás seguro que querés silenciar a {name}?",
108 108
   "confirmations.redraft.confirm": "Eliminar toot original y editarlo",
109
-  "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.",
109
+  "confirmations.redraft.message": "¿Estás seguro que querés eliminar este estado y volver a editarlo? Se perderán las veces marcadas como favoritos y los retoots, y las respuestas a la publicación original quedarán huérfanas.",
110 110
   "confirmations.reply.confirm": "Responder",
111 111
   "confirmations.reply.message": "Responder ahora sobreescribirá el mensaje que estás redactando actualmente. ¿Estás seguro que querés seguir?",
112 112
   "confirmations.unfollow.confirm": "Dejar de seguir",
@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Básico",
179 179
   "home.column_settings.show_reblogs": "Mostrar retoots",
180 180
   "home.column_settings.show_replies": "Mostrar respuestas",
181
-  "home.column_settings.update_live": "Actualizar en tiempo real",
182 181
   "intervals.full.days": "{number, plural, one {# día} other {# días}}",
183 182
   "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Configuración",
273 272
   "navigation_bar.public_timeline": "Línea temporal federada",
274 273
   "navigation_bar.security": "Seguridad",
275
-  "notification.and_n_others": "y {count, plural, one {otro} other {otros #}}",
276 274
   "notification.favourite": "{name} marcó tu estado como favorito",
277 275
   "notification.follow": "{name} te empezó a seguir",
278 276
   "notification.mention": "{name} te mencionó",
@@ -308,13 +306,13 @@
308 306
   "poll_button.add_poll": "Agregar una encuesta",
309 307
   "poll_button.remove_poll": "Quitar encuesta",
310 308
   "privacy.change": "Configurar privacidad de estado",
311
-  "privacy.direct.long": "Enviar entrada sólo a los usuarios mencionados",
309
+  "privacy.direct.long": "Enviar toot sólo a los usuarios mencionados",
312 310
   "privacy.direct.short": "Directo",
313
-  "privacy.private.long": "Enviar entrada sólo a los seguidores",
311
+  "privacy.private.long": "Enviar toot sólo a los seguidores",
314 312
   "privacy.private.short": "Sólo a seguidores",
315
-  "privacy.public.long": "Enviar entrada a las líneas temporales públicas",
313
+  "privacy.public.long": "Enviar toot a las líneas temporales públicas",
316 314
   "privacy.public.short": "Público",
317
-  "privacy.unlisted.long": "No enviar entrada a las líneas temporales públicas",
315
+  "privacy.unlisted.long": "No enviar toot a las líneas temporales públicas",
318 316
   "privacy.unlisted.short": "No listado",
319 317
   "refresh": "Refrescar",
320 318
   "regeneration_indicator.label": "Cargando…",

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

@@ -103,7 +103,7 @@
103 103
   "confirmations.logout.confirm": "Cerrar sesión",
104 104
   "confirmations.logout.message": "¿Estás seguro de querer cerrar la sesión?",
105 105
   "confirmations.mute.confirm": "Silenciar",
106
-  "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.",
106
+  "confirmations.mute.explanation": "Esto esconderá las publicaciones de ellos y en las que los has mencionado, pero les permitirá ver tus mensajes y seguirte.",
107 107
   "confirmations.mute.message": "¿Estás seguro de que quieres silenciar a {name}?",
108 108
   "confirmations.redraft.confirm": "Borrar y volver a borrador",
109 109
   "confirmations.redraft.message": "Estás seguro de que quieres borrar este estado y volverlo a borrador? Perderás todas las respuestas, impulsos y favoritos asociados a él, y las respuestas a la publicación original quedarán huérfanos.",
@@ -152,10 +152,10 @@
152 152
   "empty_column.mutes": "Aún no has silenciado a ningún usuario.",
153 153
   "empty_column.notifications": "No tienes ninguna notificación aún. Interactúa con otros para empezar una conversación.",
154 154
   "empty_column.public": "¡No hay nada aquí! Escribe algo públicamente, o sigue usuarios de otras instancias manualmente para llenarlo",
155
-  "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
156
-  "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.",
157
-  "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
158
-  "errors.unexpected_crash.report_issue": "Report issue",
155
+  "error.unexpected_crash.explanation": "Debido a un error en nuestro código o a un problema de compatibilidad con el navegador, esta página no se ha podido mostrar correctamente.",
156
+  "error.unexpected_crash.next_steps": "Intenta actualizar la página. Si eso no ayuda, es posible que puedas usar Mastodon a través de otro navegador o aplicación nativa.",
157
+  "errors.unexpected_crash.copy_stacktrace": "Copiar el seguimiento de pila en el portapapeles",
158
+  "errors.unexpected_crash.report_issue": "Informar de un problema/error",
159 159
   "follow_request.authorize": "Autorizar",
160 160
   "follow_request.reject": "Rechazar",
161 161
   "getting_started.developers": "Desarrolladores",
@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Básico",
179 179
   "home.column_settings.show_reblogs": "Mostrar retoots",
180 180
   "home.column_settings.show_replies": "Mostrar respuestas",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# día} other {# días}}",
183 182
   "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Preferencias",
273 272
   "navigation_bar.public_timeline": "Historia federada",
274 273
   "navigation_bar.security": "Seguridad",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} marcó tu estado como favorito",
277 275
   "notification.follow": "{name} te empezó a seguir",
278 276
   "notification.mention": "{name} te ha mencionado",
@@ -304,7 +302,7 @@
304 302
   "poll.total_people": "{count, plural, one {# person} other {# people}}",
305 303
   "poll.total_votes": "{count, plural, one {# voto} other {# votos}}",
306 304
   "poll.vote": "Votar",
307
-  "poll.voted": "You voted for this answer",
305
+  "poll.voted": "Has votado a favor de esta respuesta",
308 306
   "poll_button.add_poll": "Añadir una encuesta",
309 307
   "poll_button.remove_poll": "Eliminar encuesta",
310 308
   "privacy.change": "Ajustar privacidad",
@@ -316,7 +314,7 @@
316 314
   "privacy.public.short": "Público",
317 315
   "privacy.unlisted.long": "No mostrar en la historia federada",
318 316
   "privacy.unlisted.short": "No listado",
319
-  "refresh": "Refresh",
317
+  "refresh": "Actualizar",
320 318
   "regeneration_indicator.label": "Cargando…",
321 319
   "regeneration_indicator.sublabel": "¡Tu historia de inicio se está preparando!",
322 320
   "relative_time.days": "{number}d",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Peamine",
179 179
   "home.column_settings.show_reblogs": "Näita upitusi",
180 180
   "home.column_settings.show_replies": "Näita vastuseid",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# päev} other {# päevad}}",
183 182
   "intervals.full.hours": "{number, plural, one {# tund} other {# tundi}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minut} other {# minutit}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Eelistused",
273 272
   "navigation_bar.public_timeline": "Föderatiivne ajajoon",
274 273
   "navigation_bar.security": "Turvalisus",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} märkis su staatuse lemmikuks",
277 275
   "notification.follow": "{name} jälgib sind",
278 276
   "notification.mention": "{name} mainis sind",

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

@@ -21,13 +21,13 @@
21 21
   "account.locked_info": "Kontu honen pribatutasun egoera blokeatuta gisa ezarri da. Jabeak eskuz erabakitzen du nork jarraitu diezaioken.",
22 22
   "account.media": "Multimedia",
23 23
   "account.mention": "Aipatu @{name}",
24
-  "account.moved_to": "{name} hona lekualdatu da:",
24
+  "account.moved_to": "{name} hona migratu da:",
25 25
   "account.mute": "Mututu @{name}",
26 26
   "account.mute_notifications": "Mututu @{name}(r)en jakinarazpenak",
27 27
   "account.muted": "Mutututa",
28 28
   "account.never_active": "Inoiz ez",
29
-  "account.posts": "Toot",
30
-  "account.posts_with_replies": "Toot eta erantzunak",
29
+  "account.posts": "Tootak",
30
+  "account.posts_with_replies": "Toot-ak eta erantzunak",
31 31
   "account.report": "Salatu @{name}",
32 32
   "account.requested": "Onarpenaren zain. Klikatu jarraitzeko eskaera ezeztatzeko",
33 33
   "account.share": "@{name}(e)ren profila elkarbanatu",
@@ -38,7 +38,7 @@
38 38
   "account.unfollow": "Utzi jarraitzeari",
39 39
   "account.unmute": "Desmututu @{name}",
40 40
   "account.unmute_notifications": "Desmututu @{name}(r)en jakinarazpenak",
41
-  "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
41
+  "alert.rate_limited.message": "Saiatu {retry_time, time, medium} barru.",
42 42
   "alert.rate_limited.title": "Rate limited",
43 43
   "alert.unexpected.message": "Ustekabeko errore bat gertatu da.",
44 44
   "alert.unexpected.title": "Ene!",
@@ -61,7 +61,7 @@
61 61
   "column.lists": "Zerrendak",
62 62
   "column.mutes": "Mutututako erabiltzaileak",
63 63
   "column.notifications": "Jakinarazpenak",
64
-  "column.pins": "Pinned toot",
64
+  "column.pins": "Finkatutako toot-ak",
65 65
   "column.public": "Federatutako denbora-lerroa",
66 66
   "column_back_button.label": "Atzera",
67 67
   "column_header.hide_settings": "Ezkutatu ezarpenak",
@@ -103,7 +103,7 @@
103 103
   "confirmations.logout.confirm": "Amaitu saioa",
104 104
   "confirmations.logout.message": "Ziur saioa amaitu nahi duzula?",
105 105
   "confirmations.mute.confirm": "Mututu",
106
-  "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.",
106
+  "confirmations.mute.explanation": "Honek horko mezuak eta aipamena egiten dietenak ezkutatuko ditu, baina beraiek zure mezuak ikusi ahal izango dituzte eta zuri jarraitu.",
107 107
   "confirmations.mute.message": "Ziur {name} mututu nahi duzula?",
108 108
   "confirmations.redraft.confirm": "Ezabatu eta berridatzi",
109 109
   "confirmations.redraft.message": "Ziur mezu hau ezabatu eta berridatzi nahi duzula? Gogokoak eta bultzadak galduko dira eta jaso dituen erantzunak umezurtz geratuko dira.",
@@ -111,10 +111,10 @@
111 111
   "confirmations.reply.message": "Orain erantzuteak idazten ari zaren mezua gainidatziko du. Ziur jarraitu nahi duzula?",
112 112
   "confirmations.unfollow.confirm": "Utzi jarraitzeari",
113 113
   "confirmations.unfollow.message": "Ziur {name} jarraitzeari utzi nahi diozula?",
114
-  "conversation.delete": "Delete conversation",
115
-  "conversation.mark_as_read": "Mark as read",
116
-  "conversation.open": "View conversation",
117
-  "conversation.with": "With {names}",
114
+  "conversation.delete": "Ezabatu elkarrizketa",
115
+  "conversation.mark_as_read": "Markatu irakurrita bezala",
116
+  "conversation.open": "Ikusi elkarrizketa",
117
+  "conversation.with": "Hauekin: {names}",
118 118
   "directory.federated": "Fedibertso ezagunekoak",
119 119
   "directory.local": "{domain} domeinukoak soilik",
120 120
   "directory.new_arrivals": "Iritsi berriak",
@@ -152,10 +152,10 @@
152 152
   "empty_column.mutes": "Ez duzu erabiltzailerik mututu oraindik.",
153 153
   "empty_column.notifications": "Ez duzu jakinarazpenik oraindik. Jarri besteekin harremanetan elkarrizketa abiatzeko.",
154 154
   "empty_column.public": "Ez dago ezer hemen! Idatzi zerbait publikoki edo jarraitu eskuz beste zerbitzari batzuetako erabiltzaileak hau betetzen joateko",
155
-  "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
156
-  "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.",
155
+  "error.unexpected_crash.explanation": "Gure kodean arazoren bat dela eta, edo nabigatzailearekin bateragarritasun arazoren bat dela eta, orri hau ezin izan da ongi bistaratu.",
156
+  "error.unexpected_crash.next_steps": "Saiatu orria berritzen. Horrek ez badu laguntzen, agian Mastodon erabiltzeko aukera duzu oraindik ere beste nabigatzaile bat edo aplikazio natibo bat erabilita.",
157 157
   "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
158
-  "errors.unexpected_crash.report_issue": "Report issue",
158
+  "errors.unexpected_crash.report_issue": "Eman arazoaren berri",
159 159
   "follow_request.authorize": "Baimendu",
160 160
   "follow_request.reject": "Ukatu",
161 161
   "getting_started.developers": "Garatzaileak",
@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Oinarrizkoa",
179 179
   "home.column_settings.show_reblogs": "Erakutsi bultzadak",
180 180
   "home.column_settings.show_replies": "Erakutsi erantzunak",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {egun #} other {# egun}}",
183 182
   "intervals.full.hours": "{number, plural, one {ordu #} other {# ordu}}",
184 183
   "intervals.full.minutes": "{number, plural, one {minutu #} other {# minutu}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Hobespenak",
273 272
   "navigation_bar.public_timeline": "Federatutako denbora-lerroa",
274 273
   "navigation_bar.security": "Segurtasuna",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name}(e)k zure mezua gogoko du",
277 275
   "notification.follow": "{name}(e)k jarraitzen zaitu",
278 276
   "notification.mention": "{name}(e)k aipatu zaitu",
@@ -301,10 +299,10 @@
301 299
   "notifications.group": "{count} jakinarazpen",
302 300
   "poll.closed": "Itxita",
303 301
   "poll.refresh": "Berritu",
304
-  "poll.total_people": "{count, plural, one {# person} other {# people}}",
302
+  "poll.total_people": "{count, plural, one {pertsona #} other {# pertsona}}",
305 303
   "poll.total_votes": "{count, plural, one {boto #} other {# boto}}",
306 304
   "poll.vote": "Bozkatu",
307
-  "poll.voted": "You voted for this answer",
305
+  "poll.voted": "Erantzun honi eman diozu botoa",
308 306
   "poll_button.add_poll": "Gehitu inkesta bat",
309 307
   "poll_button.remove_poll": "Kendu inkesta",
310 308
   "privacy.change": "Doitu mezuaren pribatutasuna",
@@ -316,7 +314,7 @@
316 314
   "privacy.public.short": "Publikoa",
317 315
   "privacy.unlisted.long": "Do not show in public timelines",
318 316
   "privacy.unlisted.short": "Zerrendatu gabea",
319
-  "refresh": "Refresh",
317
+  "refresh": "Berritu",
320 318
   "regeneration_indicator.label": "Kargatzen…",
321 319
   "regeneration_indicator.sublabel": "Zure hasiera-jarioa prestatzen ari da!",
322 320
   "relative_time.days": "{number}e",
@@ -410,7 +408,7 @@
410 408
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
411 409
   "upload_modal.detect_text": "Antzeman irudiko testua",
412 410
   "upload_modal.edit_media": "Editatu multimedia",
413
-  "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.",
411
+  "upload_modal.hint": "Sakatu eta jaregin aurrebistako zirkulua iruditxoetan beti ikusgai egongo den puntu fokala hautatzeko.",
414 412
   "upload_modal.preview_label": "Aurreikusi({ratio})",
415 413
   "upload_progress.label": "Igotzen...",
416 414
   "video.close": "Itxi bideoa",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "اصلی",
179 179
   "home.column_settings.show_reblogs": "نمایش بازبوق‌ها",
180 180
   "home.column_settings.show_replies": "نمایش پاسخ‌ها",
181
-  "home.column_settings.update_live": "به‌روزرسانی لحظه‌ای",
182 181
   "intervals.full.days": "{number, plural, one {# روز} other {# روز}}",
183 182
   "intervals.full.hours": "{number, plural, one {# ساعت} other {# ساعت}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# دقیقه} other {# دقیقه}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "ترجیحات",
273 272
   "navigation_bar.public_timeline": "نوشته‌های همه‌جا",
274 273
   "navigation_bar.security": "امنیت",
275
-  "notification.and_n_others": "و {count, plural, one {# اعلان دیگر} other {# اعلان دیگر}}",
276 274
   "notification.favourite": "‫{name}‬ نوشتهٔ شما را پسندید",
277 275
   "notification.follow": "‫{name}‬ پیگیر شما شد",
278 276
   "notification.mention": "‫{name}‬ از شما نام برد",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Perusasetukset",
179 179
   "home.column_settings.show_reblogs": "Näytä buustaukset",
180 180
   "home.column_settings.show_replies": "Näytä vastaukset",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "Päivä päiviä",
183 182
   "intervals.full.hours": "Tunti tunteja",
184 183
   "intervals.full.minutes": "Minuuti minuuteja",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Asetukset",
273 272
   "navigation_bar.public_timeline": "Yleinen aikajana",
274 273
   "navigation_bar.security": "Tunnukset",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} tykkäsi tilastasi",
277 275
   "notification.follow": "{name} seurasi sinua",
278 276
   "notification.mention": "{name} mainitsi sinut",

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

@@ -8,7 +8,7 @@
8 8
   "account.direct": "Envoyer un message direct à @{name}",
9 9
   "account.domain_blocked": "Domaine caché",
10 10
   "account.edit_profile": "Modifier le profil",
11
-  "account.endorse": "Mettre en avant sur le profil",
11
+  "account.endorse": "Recommander sur le profil",
12 12
   "account.follow": "Suivre",
13 13
   "account.followers": "Abonné⋅e⋅s",
14 14
   "account.followers.empty": "Personne ne suit cet utilisateur·rice pour l’instant.",
@@ -34,7 +34,7 @@
34 34
   "account.show_reblogs": "Afficher les partages de @{name}",
35 35
   "account.unblock": "Débloquer @{name}",
36 36
   "account.unblock_domain": "Ne plus masquer {domain}",
37
-  "account.unendorse": "Ne pas mettre en avant sur le profil",
37
+  "account.unendorse": "Ne plus recommander sur le profil",
38 38
   "account.unfollow": "Ne plus suivre",
39 39
   "account.unmute": "Ne plus masquer @{name}",
40 40
   "account.unmute_notifications": "Réactiver les notifications de @{name}",
@@ -73,8 +73,8 @@
73 73
   "column_subheading.settings": "Paramètres",
74 74
   "community.column_settings.media_only": "Média uniquement",
75 75
   "compose_form.direct_message_warning": "Ce pouet sera uniquement envoyé aux personnes mentionnées. Cependant, l’administration de votre instance et des instances réceptrices pourront inspecter ce message.",
76
-  "compose_form.direct_message_warning_learn_more": "Plus d'informations",
77
-  "compose_form.hashtag_warning": "Ce pouet ne sera pas listé dans les recherches par mot-clé car sa visibilité est réglée sur \"non listé\". Seuls les pouets avec une visibilité \"publique\" peuvent être recherchés par mot-clé.",
76
+  "compose_form.direct_message_warning_learn_more": "Plus dinformations",
77
+  "compose_form.hashtag_warning": "Ce pouet ne sera pas listé dans les recherches par hashtag car sa visibilité est réglée sur \"non listé\". Seuls les pouets avec une visibilité \"publique\" peuvent être recherchés par hashtag.",
78 78
   "compose_form.lock_disclaimer": "Votre compte n’est pas {locked}. Tout le monde peut vous suivre et voir vos pouets privés.",
79 79
   "compose_form.lock_disclaimer.lock": "verrouillé",
80 80
   "compose_form.placeholder": "Qu’avez-vous en tête ?",
@@ -86,7 +86,7 @@
86 86
   "compose_form.publish_loud": "{publish} !",
87 87
   "compose_form.sensitive.hide": "Marquer le média comme sensible",
88 88
   "compose_form.sensitive.marked": "Média marqué comme sensible",
89
-  "compose_form.sensitive.unmarked": "Le média n'est pas marqué comme sensible",
89
+  "compose_form.sensitive.unmarked": "Le média nest pas marqué comme sensible",
90 90
   "compose_form.spoiler.marked": "Le texte est caché derrière un avertissement",
91 91
   "compose_form.spoiler.unmarked": "Le texte n’est pas caché",
92 92
   "compose_form.spoiler_placeholder": "Écrivez ici votre avertissement",
@@ -108,28 +108,28 @@
108 108
   "confirmations.redraft.confirm": "Effacer et ré-écrire",
109 109
   "confirmations.redraft.message": "Êtes-vous sûr·e de vouloir effacer ce statut pour le ré-écrire ? Ses partages ainsi que ses mises en favori seront perdu·e·s et ses réponses seront orphelines.",
110 110
   "confirmations.reply.confirm": "Répondre",
111
-  "confirmations.reply.message": "Répondre maintenant écrasera le message que vous êtes en train de composer. Voulez-vous vraiment continuer ?",
111
+  "confirmations.reply.message": "Répondre maintenant écrasera le message que vous composez actuellement. Êtes-vous sûr de vouloir continuer ?",
112 112
   "confirmations.unfollow.confirm": "Ne plus suivre",
113 113
   "confirmations.unfollow.message": "Voulez-vous arrêter de suivre {name} ?",
114 114
   "conversation.delete": "Supprimer la conversation",
115 115
   "conversation.mark_as_read": "Marquer comme lu",
116 116
   "conversation.open": "Afficher la conversation",
117 117
   "conversation.with": "Avec {names}",
118
-  "directory.federated": "De la fédiverse connue",
118
+  "directory.federated": "Du fédiverse connu",
119 119
   "directory.local": "De {domain} seulement",
120 120
   "directory.new_arrivals": "Nouveaux arrivants",
121 121
   "directory.recently_active": "Récemment actif",
122 122
   "embed.instructions": "Intégrez ce statut à votre site en copiant le code ci-dessous.",
123 123
   "embed.preview": "Il apparaîtra comme cela :",
124 124
   "emoji_button.activity": "Activités",
125
-  "emoji_button.custom": "Personnalisés",
125
+  "emoji_button.custom": "Personnalisé",
126 126
   "emoji_button.flags": "Drapeaux",
127 127
   "emoji_button.food": "Nourriture & Boisson",
128 128
   "emoji_button.label": "Insérer un émoji",
129 129
   "emoji_button.nature": "Nature",
130 130
   "emoji_button.not_found": "Pas d’émoji !! (╯°□°)╯︵ ┻━┻",
131 131
   "emoji_button.objects": "Objets",
132
-  "emoji_button.people": "Personnages",
132
+  "emoji_button.people": "Personnes",
133 133
   "emoji_button.recent": "Fréquemment utilisés",
134 134
   "emoji_button.search": "Recherche…",
135 135
   "emoji_button.search_results": "Résultats de la recherche",
@@ -149,12 +149,12 @@
149 149
   "empty_column.home.public_timeline": "le fil public",
150 150
   "empty_column.list": "Il n’y a rien dans cette liste pour l’instant. Dès que des personnes de cette liste publieront de nouveaux statuts, ils apparaîtront ici.",
151 151
   "empty_column.lists": "Vous n’avez pas encore de liste. Lorsque vous en créerez une, elle apparaîtra ici.",
152
-  "empty_column.mutes": "Vous n’avez pas encore mis d'utilisateur·rice·s en silence.",
152
+  "empty_column.mutes": "Vous n’avez pas encore mis dutilisateur·rice·s en silence.",
153 153
   "empty_column.notifications": "Vous n’avez pas encore de notification. Interagissez avec d’autres personnes pour débuter la conversation.",
154 154
   "empty_column.public": "Il n’y a rien ici ! Écrivez quelque chose publiquement, ou bien suivez manuellement des personnes d’autres instances pour le remplir",
155 155
   "error.unexpected_crash.explanation": "En raison d’un bug dans notre code ou d’un problème de compatibilité avec le navigateur, cette page n’a pas pu être affichée correctement.",
156 156
   "error.unexpected_crash.next_steps": "Essayez de rafraîchir la page. Si cela n’aide pas, vous pouvez toujours utiliser Mastodon via un autre navigateur ou une application native.",
157
-  "errors.unexpected_crash.copy_stacktrace": "Copier la trace de pile dans le presse-papier",
157
+  "errors.unexpected_crash.copy_stacktrace": "Copier la trace-pile dans le presse-papier",
158 158
   "errors.unexpected_crash.report_issue": "Signaler un bogue",
159 159
   "follow_request.authorize": "Accepter",
160 160
   "follow_request.reject": "Rejeter",
@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Base",
179 179
   "home.column_settings.show_reblogs": "Afficher les partages",
180 180
   "home.column_settings.show_replies": "Afficher les réponses",
181
-  "home.column_settings.update_live": "Mise à jour en temps réel",
182 181
   "intervals.full.days": "{number, plural, one {# jour} other {# jours}}",
183 182
   "intervals.full.hours": "{number, plural, one {# heure} other {# heures}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -244,7 +243,7 @@
244 243
   "lists.new.title_placeholder": "Titre de la nouvelle liste",
245 244
   "lists.search": "Rechercher parmi les gens que vous suivez",
246 245
   "lists.subheading": "Vos listes",
247
-  "load_pending": "{count, plural, one {# nouvel item} other {# nouveaux items}}",
246
+  "load_pending": "{count, plural, one {# nouvel élément} other {# nouveaux éléments}}",
248 247
   "loading_indicator.label": "Chargement…",
249 248
   "media_gallery.toggle_visible": "Modifier la visibilité",
250 249
   "missing_indicator.label": "Non trouvé",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Préférences",
273 272
   "navigation_bar.public_timeline": "Fil public global",
274 273
   "navigation_bar.security": "Sécurité",
275
-  "notification.and_n_others": "et {count, plural, one {# autre} other {# autres}}",
276 274
   "notification.favourite": "{name} a ajouté à ses favoris :",
277 275
   "notification.follow": "{name} vous suit",
278 276
   "notification.mention": "{name} vous a mentionné :",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Basic",
179 179
   "home.column_settings.show_reblogs": "Show boosts",
180 180
   "home.column_settings.show_replies": "Show replies",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
183 182
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Preferences",
273 272
   "navigation_bar.public_timeline": "Federated timeline",
274 273
   "navigation_bar.security": "Security",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} favourited your status",
277 275
   "notification.follow": "{name} followed you",
278 276
   "notification.mention": "{name} mentioned you",

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

@@ -103,7 +103,7 @@
103 103
   "confirmations.logout.confirm": "Desconectar",
104 104
   "confirmations.logout.message": "Seguro que desexa desconectar?",
105 105
   "confirmations.mute.confirm": "Acalar",
106
-  "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.",
106
+  "confirmations.mute.explanation": "Esto ocultará as publicacións delas e as que as mencionen, pero poderán seguir lendo as túas publicacións e seguirte.",
107 107
   "confirmations.mute.message": "Está segura de que quere acalar a {name}?",
108 108
   "confirmations.redraft.confirm": "Eliminar e reescribir",
109 109
   "confirmations.redraft.message": "Está segura de querer eliminar este estado e voltalo a escribir? Perderá réplicas e favoritas, e as respostas ao orixinal quedarán orfas.",
@@ -152,10 +152,10 @@
152 152
   "empty_column.mutes": "Non acalou ningunha usuaria polo de agora.",
153 153
   "empty_column.notifications": "Aínda non ten notificacións. Interactúe con outras para iniciar unha conversa.",
154 154
   "empty_column.public": "Nada por aquí! Escriba algo de xeito público, ou siga manualmente usuarias de outros servidores para ir enchéndoa",
155
-  "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
156
-  "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.",
157
-  "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
158
-  "errors.unexpected_crash.report_issue": "Report issue",
155
+  "error.unexpected_crash.explanation": "Non se mostra correctamente a páxina debido a un fallo no código ou problema de compatibilidade do navegador.",
156
+  "error.unexpected_crash.next_steps": "Intenta actualizar a páxina. Se esto non axuda podes tamén utilizar Mastodon en outro navegador ou app nativa.",
157
+  "errors.unexpected_crash.copy_stacktrace": "Copiar trazas ao portaretallos",
158
+  "errors.unexpected_crash.report_issue": "Informar de problema",
159 159
   "follow_request.authorize": "Autorizar",
160 160
   "follow_request.reject": "Rexeitar",
161 161
   "getting_started.developers": "Desenvolvedoras",
@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Básico",
179 179
   "home.column_settings.show_reblogs": "Mostrar repeticións",
180 180
   "home.column_settings.show_replies": "Mostrar respostas",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural,one {# día} other {# días}}",
183 182
   "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Preferencias",
273 272
   "navigation_bar.public_timeline": "Liña temporal federada",
274 273
   "navigation_bar.security": "Seguridade",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} marcou como favorito o seu estado",
277 275
   "notification.follow": "{name} está a seguila",
278 276
   "notification.mention": "{name} mencionoute",
@@ -301,7 +299,7 @@
301 299
   "notifications.group": "{count} notificacións",
302 300
   "poll.closed": "Pechado",
303 301
   "poll.refresh": "Actualizar",
304
-  "poll.total_people": "{count, plural, one {# person} other {# people}}",
302
+  "poll.total_people": "{count, plural,one {# persoa}other {# persoas}}",
305 303
   "poll.total_votes": "{count, plural, one {# voto} outros {# votos}}",
306 304
   "poll.vote": "Votar",
307 305
   "poll.voted": "Votou por esta opción",
@@ -316,7 +314,7 @@
316 314
   "privacy.public.short": "Pública",
317 315
   "privacy.unlisted.long": "Non publicar en liñas temporais públicas",
318 316
   "privacy.unlisted.short": "Non listada",
319
-  "refresh": "Refresh",
317
+  "refresh": "Actualizar",
320 318
   "regeneration_indicator.label": "Cargando…",
321 319
   "regeneration_indicator.sublabel": "Estase a preparar a súa liña temporal de inicio!",
322 320
   "relative_time.days": "{number}d",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "למתחילים",
179 179
   "home.column_settings.show_reblogs": "הצגת הדהודים",
180 180
   "home.column_settings.show_replies": "הצגת תגובות",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
183 182
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "העדפות",
273 272
   "navigation_bar.public_timeline": "ציר זמן בין-קהילתי",
274 273
   "navigation_bar.security": "Security",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "חצרוצך חובב על ידי {name}",
277 275
   "notification.follow": "{name} במעקב אחרייך",
278 276
   "notification.mention": "אוזכרת על ידי {name}",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Basic",
179 179
   "home.column_settings.show_reblogs": "Show boosts",
180 180
   "home.column_settings.show_replies": "Show replies",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
183 182
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Preferences",
273 272
   "navigation_bar.public_timeline": "Federated timeline",
274 273
   "navigation_bar.security": "Security",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} favourited your status",
277 275
   "notification.follow": "{name} followed you",
278 276
   "notification.mention": "{name} mentioned you",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Osnovno",
179 179
   "home.column_settings.show_reblogs": "Pokaži boostove",
180 180
   "home.column_settings.show_replies": "Pokaži odgovore",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
183 182
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Postavke",
273 272
   "navigation_bar.public_timeline": "Federalni timeline",
274 273
   "navigation_bar.security": "Security",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} je lajkao tvoj status",
277 275
   "notification.follow": "{name} te sada slijedi",
278 276
   "notification.mention": "{name} te je spomenuo",

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

@@ -103,7 +103,7 @@
103 103
   "confirmations.logout.confirm": "Kijelentkezés",
104 104
   "confirmations.logout.message": "Biztosan ki akar jelentkezni?",
105 105
   "confirmations.mute.confirm": "Némítás",
106
-  "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.",
106
+  "confirmations.mute.explanation": "Ez elrejti a tőlük érkező posztokat, valamint az őket megemlítőket, de ők továbbra is láthatják a te posztjaidat és követhetnek is téged.",
107 107
   "confirmations.mute.message": "Biztos, hogy némítani szeretnéd {name}?",
108 108
   "confirmations.redraft.confirm": "Törlés és újraírás",
109 109
   "confirmations.redraft.message": "Biztos, hogy ezt a tülköt szeretnéd törölni és újraírni? Minden megtolást és kedvencnek jelölést elvesztesz, az eredetire adott válaszok pedig elárvulnak.",
@@ -152,10 +152,10 @@
152 152
   "empty_column.mutes": "Még egy felhasználót sem némítottál le.",
153 153
   "empty_column.notifications": "Jelenleg nincsenek értesítéseid. Lépj kapcsolatba másokkal, hogy elindítsd a beszélgetést.",
154 154
   "empty_column.public": "Jelenleg itt nincs semmi! Írj valamit nyilvánosan vagy kövess más szervereken levő felhasználókat, hogy megtöltsd",
155
-  "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
156
-  "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.",
157
-  "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
158
-  "errors.unexpected_crash.report_issue": "Report issue",
155
+  "error.unexpected_crash.explanation": "Egy hiba vagy böngésző inkompatibilitás miatt ez az oldal nem jeleníthető meg rendesen.",
156
+  "error.unexpected_crash.next_steps": "Próbáld frissíteni az oldalt. Ha ez nem segít, egy másik böngészőn vagy appon keresztül még mindig használhatod a Mastodont.",
157
+  "errors.unexpected_crash.copy_stacktrace": "Stacktrace vágólapra másolása",
158
+  "errors.unexpected_crash.report_issue": "Probléma bejelentése",
159 159
   "follow_request.authorize": "Engedélyezés",
160 160
   "follow_request.reject": "Visszautasítás",
161 161
   "getting_started.developers": "Fejlesztőknek",
@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Alapértelmezések",
179 179
   "home.column_settings.show_reblogs": "Megtolások mutatása",
180 180
   "home.column_settings.show_replies": "Válaszok mutatása",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# nap} other {# nap}}",
183 182
   "intervals.full.hours": "{number, plural, one {# óra} other {# óra}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# perc} other {# perc}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Beállítások",
273 272
   "navigation_bar.public_timeline": "Föderációs idővonal",
274 273
   "navigation_bar.security": "Biztonság",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} kedvencnek jelölte egy tülködet",
277 275
   "notification.follow": "{name} követ téged",
278 276
   "notification.mention": "{name} megemlített",
@@ -301,10 +299,10 @@
301 299
   "notifications.group": "{count} értesítés",
302 300
   "poll.closed": "Lezárva",
303 301
   "poll.refresh": "Frissítés",
304
-  "poll.total_people": "{count, plural, one {# person} other {# people}}",
302
+  "poll.total_people": "{count, plural, one {# személy} other {# személy}}",
305 303
   "poll.total_votes": "{count, plural, one {# szavazat} other {# szavazat}}",
306 304
   "poll.vote": "Szavazás",
307
-  "poll.voted": "You voted for this answer",
305
+  "poll.voted": "Erre a válaszra szavaztál",
308 306
   "poll_button.add_poll": "Új szavazás",
309 307
   "poll_button.remove_poll": "Szavazás törlése",
310 308
   "privacy.change": "Tülk láthatóságának módosítása",
@@ -316,7 +314,7 @@
316 314
   "privacy.public.short": "Nyilvános",
317 315
   "privacy.unlisted.long": "Ne mutassuk nyilvános idővonalon",
318 316
   "privacy.unlisted.short": "Listázatlan",
319
-  "refresh": "Refresh",
317
+  "refresh": "Frissítés",
320 318
   "regeneration_indicator.label": "Töltődik…",
321 319
   "regeneration_indicator.sublabel": "A saját idővonalad épp készül!",
322 320
   "relative_time.days": "{number}nap",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Հիմնական",
179 179
   "home.column_settings.show_reblogs": "Ցուցադրել տարածածները",
180 180
   "home.column_settings.show_replies": "Ցուցադրել պատասխանները",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
183 182
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Նախապատվություններ",
273 272
   "navigation_bar.public_timeline": "Դաշնային հոսք",
274 273
   "navigation_bar.security": "Անվտանգություն",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} հավանեց թութդ",
277 275
   "notification.follow": "{name} սկսեց հետեւել քեզ",
278 276
   "notification.mention": "{name} նշեց քեզ",

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

@@ -117,7 +117,7 @@
117 117
   "conversation.with": "Dengan {names}",
118 118
   "directory.federated": "Dari fediverse yang dikenal",
119 119
   "directory.local": "Dari {domain} saja",
120
-  "directory.new_arrivals": "New arrivals",
120
+  "directory.new_arrivals": "Yang baru datang",
121 121
   "directory.recently_active": "Baru-baru ini aktif",
122 122
   "embed.instructions": "Sematkan status ini di website anda dengan menyalin kode di bawah ini.",
123 123
   "embed.preview": "Seperti ini nantinya:",
@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Dasar",
179 179
   "home.column_settings.show_reblogs": "Tampilkan boost",
180 180
   "home.column_settings.show_replies": "Tampilkan balasan",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, other {# hari}}",
183 182
   "intervals.full.hours": "{number, plural, other {# jam}}",
184 183
   "intervals.full.minutes": "{number, plural, other {# menit}}",
@@ -232,75 +231,74 @@
232 231
   "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
233 232
   "keyboard_shortcuts.up": "to move up in the list",
234 233
   "lightbox.close": "Tutup",
235
-  "lightbox.next": "Next",
236
-  "lightbox.previous": "Previous",
237
-  "lightbox.view_context": "View context",
238
-  "lists.account.add": "Add to list",
239
-  "lists.account.remove": "Remove from list",
240
-  "lists.delete": "Delete list",
241
-  "lists.edit": "Edit list",
242
-  "lists.edit.submit": "Change title",
243
-  "lists.new.create": "Add list",
244
-  "lists.new.title_placeholder": "New list title",
245
-  "lists.search": "Search among people you follow",
246
-  "lists.subheading": "Your lists",
234
+  "lightbox.next": "Selanjutnya",
235
+  "lightbox.previous": "Sebelumnya",
236
+  "lightbox.view_context": "Lihat konteks",
237
+  "lists.account.add": "Tambah ke daftar",
238
+  "lists.account.remove": "Hapus dari daftar",
239
+  "lists.delete": "Hapus daftar",
240
+  "lists.edit": "Sunting daftar",
241
+  "lists.edit.submit": "Ubah judul",
242
+  "lists.new.create": "Tambah daftar",
243
+  "lists.new.title_placeholder": "Judul daftar baru",
244
+  "lists.search": "Cari di antara orang yang Anda ikuti",
245
+  "lists.subheading": "Daftar Anda",
247 246
   "load_pending": "{count, plural, one {# new item} other {# new items}}",
248 247
   "loading_indicator.label": "Tunggu sebentar...",
249 248
   "media_gallery.toggle_visible": "Tampil/Sembunyikan",
250 249
   "missing_indicator.label": "Tidak ditemukan",
251
-  "missing_indicator.sublabel": "This resource could not be found",
252
-  "mute_modal.hide_notifications": "Hide notifications from this user?",
253
-  "navigation_bar.apps": "Mobile apps",
250
+  "missing_indicator.sublabel": "Sumber daya tak bisa ditemukan",
251
+  "mute_modal.hide_notifications": "Sembunyikan notifikasi dari pengguna ini?",
252
+  "navigation_bar.apps": "Aplikasi mobile",
254 253
   "navigation_bar.blocks": "Pengguna diblokir",
255 254
   "navigation_bar.community_timeline": "Linimasa lokal",
256
-  "navigation_bar.compose": "Compose new toot",
257
-  "navigation_bar.direct": "Direct messages",
258
-  "navigation_bar.discover": "Discover",
259
-  "navigation_bar.domain_blocks": "Hidden domains",
255
+  "navigation_bar.compose": "Tulis toot baru",
256
+  "navigation_bar.direct": "Pesan langsung",
257
+  "navigation_bar.discover": "Temukan",
258
+  "navigation_bar.domain_blocks": "Domain tersembunyi",
260 259
   "navigation_bar.edit_profile": "Ubah profil",
261 260
   "navigation_bar.favourites": "Favorit",
262
-  "navigation_bar.filters": "Muted words",
261
+  "navigation_bar.filters": "Kata yang dibisukan",
263 262
   "navigation_bar.follow_requests": "Permintaan mengikuti",
264 263
   "navigation_bar.follows_and_followers": "Follows and followers",
265 264
   "navigation_bar.info": "Informasi selengkapnya",
266 265
   "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
267
-  "navigation_bar.lists": "Lists",
266
+  "navigation_bar.lists": "Daftar",
268 267
   "navigation_bar.logout": "Keluar",
269 268
   "navigation_bar.mutes": "Pengguna dibisukan",
270 269
   "navigation_bar.personal": "Personal",
271
-  "navigation_bar.pins": "Pinned toots",
270
+  "navigation_bar.pins": "Toot tersemat",
272 271
   "navigation_bar.preferences": "Pengaturan",
273 272
   "navigation_bar.public_timeline": "Linimasa gabungan",
274
-  "navigation_bar.security": "Security",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
273
+  "navigation_bar.security": "Keamanan",
276 274
   "notification.favourite": "{name} menyukai status anda",
277 275
   "notification.follow": "{name} mengikuti anda",
278
-  "notification.mention": "{name} mentioned you",
279
-  "notification.poll": "A poll you have voted in has ended",
276
+  "notification.mention": "{name} menyebut Anda",
277
+  "notification.poll": "Japat yang Anda ikuti telah berakhir",
280 278
   "notification.reblog": "{name} mem-boost status anda",
281 279
   "notifications.clear": "Hapus notifikasi",
282 280
   "notifications.clear_confirmation": "Apa anda yakin hendak menghapus semua notifikasi anda?",
283 281
   "notifications.column_settings.alert": "Notifikasi desktop",
284 282
   "notifications.column_settings.favourite": "Favorit:",
285
-  "notifications.column_settings.filter_bar.advanced": "Display all categories",
286
-  "notifications.column_settings.filter_bar.category": "Quick filter bar",
287
-  "notifications.column_settings.filter_bar.show": "Show",
283
+  "notifications.column_settings.filter_bar.advanced": "Tampilkan semua kategori",
284
+  "notifications.column_settings.filter_bar.category": "Bilah penyaring cepat",
285
+  "notifications.column_settings.filter_bar.show": "Tampilkan",
288 286
   "notifications.column_settings.follow": "Pengikut baru:",
289 287
   "notifications.column_settings.mention": "Balasan:",
290
-  "notifications.column_settings.poll": "Poll results:",
291
-  "notifications.column_settings.push": "Push notifications",
288
+  "notifications.column_settings.poll": "Hasil japat:",
289
+  "notifications.column_settings.push": "Notifikasi dorong",
292 290
   "notifications.column_settings.reblog": "Boost:",
293 291
   "notifications.column_settings.show": "Tampilkan dalam kolom",
294 292
   "notifications.column_settings.sound": "Mainkan suara",
295
-  "notifications.filter.all": "All",
296
-  "notifications.filter.boosts": "Boosts",
297
-  "notifications.filter.favourites": "Favourites",
298
-  "notifications.filter.follows": "Follows",
299
-  "notifications.filter.mentions": "Mentions",
300
-  "notifications.filter.polls": "Poll results",
301
-  "notifications.group": "{count} notifications",
302
-  "poll.closed": "Closed",
303
-  "poll.refresh": "Refresh",
293
+  "notifications.filter.all": "Semua",
294
+  "notifications.filter.boosts": "Boost",
295
+  "notifications.filter.favourites": "Favorit",
296
+  "notifications.filter.follows": "Diikuti",
297
+  "notifications.filter.mentions": "Sebutan",
298
+  "notifications.filter.polls": "Hasil japat",
299
+  "notifications.group": "{count} notifikasi",
300
+  "poll.closed": "Ditutup",
301
+  "poll.refresh": "Segarkan",
304 302
   "poll.total_people": "{count, plural, one {# person} other {# people}}",
305 303
   "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
306 304
   "poll.vote": "Vote",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Simpla",
179 179
   "home.column_settings.show_reblogs": "Montrar repeti",
180 180
   "home.column_settings.show_replies": "Montrar respondi",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
183 182
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Preferi",
273 272
   "navigation_bar.public_timeline": "Federata tempolineo",
274 273
   "navigation_bar.security": "Security",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} favorizis tua mesajo",
277 275
   "notification.follow": "{name} sequeskis tu",
278 276
   "notification.mention": "{name} mencionis tu",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Semplice",
179 179
   "home.column_settings.show_reblogs": "Mostra post condivisi",
180 180
   "home.column_settings.show_replies": "Mostra risposte",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# giorno} other {# giorni}}",
183 182
   "intervals.full.hours": "{number, plural, one {# ora} other {# ore}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minuto} other {# minuti}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Impostazioni",
273 272
   "navigation_bar.public_timeline": "Timeline federata",
274 273
   "navigation_bar.security": "Sicurezza",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} ha apprezzato il tuo post",
277 275
   "notification.follow": "{name} ha iniziato a seguirti",
278 276
   "notification.mention": "{name} ti ha menzionato",

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

@@ -111,7 +111,7 @@
111 111
   "confirmations.reply.message": "今返信すると現在作成中のメッセージが上書きされます。本当に実行しますか?",
112 112
   "confirmations.unfollow.confirm": "フォロー解除",
113 113
   "confirmations.unfollow.message": "本当に{name}さんのフォローを解除しますか?",
114
-  "conversation.delete": "この会話を削除",
114
+  "conversation.delete": "会話を削除",
115 115
   "conversation.mark_as_read": "既読にする",
116 116
   "conversation.open": "会話を表示",
117 117
   "conversation.with": "{names}",
@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "基本設定",
179 179
   "home.column_settings.show_reblogs": "ブースト表示",
180 180
   "home.column_settings.show_replies": "返信表示",
181
-  "home.column_settings.update_live": "リアルタイム更新",
182 181
   "intervals.full.days": "{number}日",
183 182
   "intervals.full.hours": "{number}時間",
184 183
   "intervals.full.minutes": "{number}分",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "ユーザー設定",
273 272
   "navigation_bar.public_timeline": "連合タイムライン",
274 273
   "navigation_bar.security": "セキュリティ",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name}さんがあなたのトゥートをお気に入りに登録しました",
277 275
   "notification.follow": "{name}さんにフォローされました",
278 276
   "notification.mention": "{name}さんがあなたに返信しました",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "ძირითადი",
179 179
   "home.column_settings.show_reblogs": "ბუსტების ჩვენება",
180 180
   "home.column_settings.show_replies": "პასუხების ჩვენება",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
183 182
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "პრეფერენსიები",
273 272
   "navigation_bar.public_timeline": "ფედერალური თაიმლაინი",
274 273
   "navigation_bar.security": "უსაფრთხოება",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name}-მა თქვენი სტატუსი აქცია ფავორიტად",
277 275
   "notification.follow": "{name} გამოგყვათ",
278 276
   "notification.mention": "{name}-მა გასახელათ",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Негізгі",
179 179
   "home.column_settings.show_reblogs": "Бөлісулерді көрсету",
180 180
   "home.column_settings.show_replies": "Жауаптарды көрсету",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# күн} other {# күн}}",
183 182
   "intervals.full.hours": "{number, plural, one {# сағат} other {# сағат}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Басымдықтар",
273 272
   "navigation_bar.public_timeline": "Жаһандық желі",
274 273
   "navigation_bar.security": "Қауіпсіздік",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} жазбаңызды таңдаулыға қосты",
277 275
   "notification.follow": "{name} сізге жазылды",
278 276
   "notification.mention": "{name} сізді атап өтті",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "기본 설정",
179 179
   "home.column_settings.show_reblogs": "부스트 표시",
180 180
   "home.column_settings.show_replies": "답글 표시",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number} 일",
183 182
   "intervals.full.hours": "{number} 시간",
184 183
   "intervals.full.minutes": "{number} 분",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "사용자 설정",
273 272
   "navigation_bar.public_timeline": "연합 타임라인",
274 273
   "navigation_bar.security": "보안",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name}님이 즐겨찾기 했습니다",
277 275
   "notification.follow": "{name}님이 나를 팔로우 했습니다",
278 276
   "notification.mention": "{name}님이 답글을 보냈습니다",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Basic",
179 179
   "home.column_settings.show_reblogs": "Show boosts",
180 180
   "home.column_settings.show_replies": "Show replies",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
183 182
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Preferences",
273 272
   "navigation_bar.public_timeline": "Federated timeline",
274 273
   "navigation_bar.security": "Security",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} favourited your status",
277 275
   "notification.follow": "{name} followed you",
278 276
   "notification.mention": "{name} mentioned you",
@@ -412,7 +410,7 @@
412 410
   "upload_modal.edit_media": "Edit media",
413 411
   "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.",
414 412
   "upload_modal.preview_label": "Preview ({ratio})",
415
-  "upload_progress.label": "Uploading...",
413
+  "upload_progress.label": "Uploading",
416 414
   "video.close": "Close video",
417 415
   "video.exit_fullscreen": "Exit full screen",
418 416
   "video.expand": "Expand video",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Basic",
179 179
   "home.column_settings.show_reblogs": "Show boosts",
180 180
   "home.column_settings.show_replies": "Show replies",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
183 182
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Preferences",
273 272
   "navigation_bar.public_timeline": "Federated timeline",
274 273
   "navigation_bar.security": "Security",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} favourited your status",
277 275
   "notification.follow": "{name} followed you",
278 276
   "notification.mention": "{name} mentioned you",
@@ -412,7 +410,7 @@
412 410
   "upload_modal.edit_media": "Edit media",
413 411
   "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.",
414 412
   "upload_modal.preview_label": "Preview ({ratio})",
415
-  "upload_progress.label": "Uploading...",
413
+  "upload_progress.label": "Uploading",
416 414
   "video.close": "Close video",
417 415
   "video.exit_fullscreen": "Exit full screen",
418 416
   "video.expand": "Expand video",

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

@@ -178,7 +178,6 @@
178 178
   "home.column_settings.basic": "Basic",
179 179
   "home.column_settings.show_reblogs": "Show boosts",
180 180
   "home.column_settings.show_replies": "Show replies",
181
-  "home.column_settings.update_live": "Update in real-time",
182 181
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
183 182
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
184 183
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -272,7 +271,6 @@
272 271
   "navigation_bar.preferences": "Preferences",
273 272
   "navigation_bar.public_timeline": "Federated timeline",
274 273
   "navigation_bar.security": "Security",
275
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
276 274
   "notification.favourite": "{name} favourited your status",
277 275