mirror of
https://github.com/glitch-soc/mastodon.git
synced 2025-12-16 01:09:55 +00:00
Compare commits
1 Commits
glitch-soc
...
ClearlyCla
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
efab184980 |
@@ -70,7 +70,7 @@ services:
|
||||
hard: -1
|
||||
|
||||
libretranslate:
|
||||
image: libretranslate/libretranslate:v1.5.3
|
||||
image: libretranslate/libretranslate:v1.5.2
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- lt-data:/home/libretranslate/.local
|
||||
|
||||
11
.eslintrc.js
11
.eslintrc.js
@@ -245,7 +245,7 @@ module.exports = defineConfig({
|
||||
},
|
||||
// Immutable / Redux / data store
|
||||
{
|
||||
pattern: '{immutable,@reduxjs/toolkit,react-redux,react-immutable-proptypes,react-immutable-pure-component}',
|
||||
pattern: '{immutable,react-redux,react-immutable-proptypes,react-immutable-pure-component,reselect}',
|
||||
group: 'external',
|
||||
position: 'before',
|
||||
},
|
||||
@@ -370,14 +370,7 @@ module.exports = defineConfig({
|
||||
'@typescript-eslint/consistent-type-exports': 'error',
|
||||
'@typescript-eslint/consistent-type-imports': 'error',
|
||||
"@typescript-eslint/prefer-nullish-coalescing": ['error', { ignorePrimitives: { boolean: true } }],
|
||||
"@typescript-eslint/no-restricted-imports": [
|
||||
"warn",
|
||||
{
|
||||
"name": "react-redux",
|
||||
"importNames": ["useSelector", "useDispatch"],
|
||||
"message": "Use typed hooks `useAppDispatch` and `useAppSelector` instead."
|
||||
}
|
||||
],
|
||||
|
||||
'jsdoc/require-jsdoc': 'off',
|
||||
|
||||
// Those rules set stricter rules for TS files
|
||||
|
||||
6
.github/workflows/codeql.yml
vendored
6
.github/workflows/codeql.yml
vendored
@@ -31,7 +31,7 @@ jobs:
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v3
|
||||
uses: github/codeql-action/init@v2
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
@@ -44,7 +44,7 @@ jobs:
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v3
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
||||
@@ -57,6 +57,6 @@ jobs:
|
||||
# ./location_of_script_within_repo/buildscript.sh
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v3
|
||||
uses: github/codeql-action/analyze@v2
|
||||
with:
|
||||
category: '/language:${{matrix.language}}'
|
||||
|
||||
@@ -1,13 +1,21 @@
|
||||
# This configuration was generated by
|
||||
# `haml-lint --auto-gen-config`
|
||||
# on 2024-01-09 11:30:07 -0500 using Haml-Lint version 0.53.0.
|
||||
# on 2023-12-15 11:02:19 -0500 using Haml-Lint version 0.52.0.
|
||||
# The point is for the user to remove these configuration records
|
||||
# one by one as the lints are removed from the code base.
|
||||
# Note that changes in the inspected code, or installation of new
|
||||
# versions of Haml-Lint, may require this file to be generated again.
|
||||
|
||||
linters:
|
||||
# Offense count: 1
|
||||
# Offense count: 11
|
||||
LineLength:
|
||||
exclude:
|
||||
- 'app/views/admin/roles/_form.html.haml'
|
||||
- 'app/views/auth/registrations/edit.html.haml'
|
||||
- 'app/views/auth/registrations/new.html.haml'
|
||||
- 'app/views/media/player.html.haml'
|
||||
- 'app/views/settings/applications/_fields.html.haml'
|
||||
- 'app/views/settings/imports/index.html.haml'
|
||||
- 'app/views/settings/preferences/appearance/show.html.haml'
|
||||
- 'app/views/settings/preferences/notifications/show.html.haml'
|
||||
- 'app/views/settings/preferences/other/show.html.haml'
|
||||
|
||||
@@ -74,8 +74,6 @@ app/javascript/styles/mastodon/reset.scss
|
||||
# Ignore the generated AUTHORS.md
|
||||
AUTHORS.md
|
||||
|
||||
!lint-staged.config.js
|
||||
|
||||
# Ignore glitch-soc emoji map file
|
||||
/app/javascript/flavours/glitch/features/emoji/emoji_map.json
|
||||
|
||||
|
||||
11
.rubocop.yml
11
.rubocop.yml
@@ -74,12 +74,14 @@ Metrics/ModuleLength:
|
||||
Metrics/AbcSize:
|
||||
Exclude:
|
||||
- 'lib/mastodon/cli/*.rb'
|
||||
- db/*migrate/**/*
|
||||
|
||||
# Reason: Currently disabled in .rubocop_todo.yml
|
||||
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricscyclomaticcomplexity
|
||||
Metrics/CyclomaticComplexity:
|
||||
Exclude:
|
||||
- lib/mastodon/cli/*.rb
|
||||
- db/*migrate/**/*
|
||||
|
||||
# Reason:
|
||||
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsparameterlists
|
||||
@@ -118,10 +120,15 @@ Rails/UnusedIgnoredColumns:
|
||||
Rails/NegateInclude:
|
||||
Enabled: false
|
||||
|
||||
# Reason: Deprecated cop, will be removed in 3.0, replaced by SpecFilePathFormat
|
||||
# Reason: Some single letter camel case files shouldn't be split
|
||||
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecfilepath
|
||||
RSpec/FilePath:
|
||||
Enabled: false
|
||||
CustomTransform:
|
||||
ActivityPub: activitypub
|
||||
DeepL: deepl
|
||||
FetchOEmbedService: fetch_oembed_service
|
||||
OEmbedController: oembed_controller
|
||||
OStatus: ostatus
|
||||
|
||||
# Reason:
|
||||
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecnamedsubject
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# This configuration was generated by
|
||||
# `rubocop --auto-gen-config --auto-gen-only-exclude --no-exclude-limit --no-offense-counts --no-auto-gen-timestamp`
|
||||
# using RuboCop version 1.59.0.
|
||||
# using RuboCop version 1.57.2.
|
||||
# The point is for the user to remove these configuration records
|
||||
# one by one as the offenses are removed from the code base.
|
||||
# Note that changes in the inspected code, or installation of new
|
||||
@@ -26,7 +26,7 @@ Lint/NonLocalExitFromIterator:
|
||||
|
||||
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes.
|
||||
Metrics/AbcSize:
|
||||
Max: 90
|
||||
Max: 100
|
||||
|
||||
# Configuration parameters: CountBlocks, Max.
|
||||
Metrics/BlockNesting:
|
||||
@@ -45,22 +45,70 @@ Metrics/PerceivedComplexity:
|
||||
RSpec/ExampleLength:
|
||||
Max: 22
|
||||
|
||||
RSpec/LetSetup:
|
||||
Exclude:
|
||||
- 'spec/controllers/api/v1/accounts/statuses_controller_spec.rb'
|
||||
- 'spec/controllers/api/v1/filters_controller_spec.rb'
|
||||
- 'spec/controllers/api/v2/admin/accounts_controller_spec.rb'
|
||||
- 'spec/controllers/api/v2/filters/keywords_controller_spec.rb'
|
||||
- 'spec/controllers/api/v2/filters/statuses_controller_spec.rb'
|
||||
- 'spec/controllers/auth/confirmations_controller_spec.rb'
|
||||
- 'spec/controllers/auth/passwords_controller_spec.rb'
|
||||
- 'spec/controllers/auth/sessions_controller_spec.rb'
|
||||
- 'spec/controllers/follower_accounts_controller_spec.rb'
|
||||
- 'spec/controllers/following_accounts_controller_spec.rb'
|
||||
- 'spec/controllers/oauth/authorized_applications_controller_spec.rb'
|
||||
- 'spec/controllers/oauth/tokens_controller_spec.rb'
|
||||
- 'spec/controllers/settings/imports_controller_spec.rb'
|
||||
- 'spec/lib/activitypub/activity/delete_spec.rb'
|
||||
- 'spec/lib/vacuum/applications_vacuum_spec.rb'
|
||||
- 'spec/lib/vacuum/preview_cards_vacuum_spec.rb'
|
||||
- 'spec/models/account_spec.rb'
|
||||
- 'spec/models/account_statuses_cleanup_policy_spec.rb'
|
||||
- 'spec/models/canonical_email_block_spec.rb'
|
||||
- 'spec/models/status_spec.rb'
|
||||
- 'spec/models/user_spec.rb'
|
||||
- 'spec/services/account_statuses_cleanup_service_spec.rb'
|
||||
- 'spec/services/activitypub/fetch_featured_collection_service_spec.rb'
|
||||
- 'spec/services/activitypub/fetch_remote_status_service_spec.rb'
|
||||
- 'spec/services/activitypub/process_account_service_spec.rb'
|
||||
- 'spec/services/activitypub/process_collection_service_spec.rb'
|
||||
- 'spec/services/batched_remove_status_service_spec.rb'
|
||||
- 'spec/services/block_domain_service_spec.rb'
|
||||
- 'spec/services/bulk_import_service_spec.rb'
|
||||
- 'spec/services/delete_account_service_spec.rb'
|
||||
- 'spec/services/import_service_spec.rb'
|
||||
- 'spec/services/notify_service_spec.rb'
|
||||
- 'spec/services/remove_status_service_spec.rb'
|
||||
- 'spec/services/report_service_spec.rb'
|
||||
- 'spec/services/resolve_account_service_spec.rb'
|
||||
- 'spec/services/suspend_account_service_spec.rb'
|
||||
- 'spec/services/unallow_domain_service_spec.rb'
|
||||
- 'spec/services/unsuspend_account_service_spec.rb'
|
||||
- 'spec/workers/scheduler/user_cleanup_scheduler_spec.rb'
|
||||
|
||||
RSpec/MultipleExpectations:
|
||||
Max: 8
|
||||
|
||||
# Configuration parameters: AllowSubject.
|
||||
RSpec/MultipleMemoizedHelpers:
|
||||
Max: 17
|
||||
Max: 21
|
||||
|
||||
# Configuration parameters: AllowedGroups.
|
||||
RSpec/NestedGroups:
|
||||
Max: 6
|
||||
|
||||
# This cop supports unsafe autocorrection (--autocorrect-all).
|
||||
Rails/ApplicationController:
|
||||
Exclude:
|
||||
- 'app/controllers/health_controller.rb'
|
||||
|
||||
# Configuration parameters: Include.
|
||||
# Include: app/models/**/*.rb
|
||||
Rails/HasAndBelongsToMany:
|
||||
Exclude:
|
||||
- 'app/models/concerns/account/associations.rb'
|
||||
- 'app/models/preview_card.rb'
|
||||
- 'app/models/status.rb'
|
||||
- 'app/models/tag.rb'
|
||||
|
||||
@@ -138,6 +186,7 @@ Rails/WhereExists:
|
||||
Exclude:
|
||||
- 'app/controllers/activitypub/inboxes_controller.rb'
|
||||
- 'app/controllers/admin/email_domain_blocks_controller.rb'
|
||||
- 'app/controllers/auth/registrations_controller.rb'
|
||||
- 'app/lib/activitypub/activity/create.rb'
|
||||
- 'app/lib/delivery_failure_tracker.rb'
|
||||
- 'app/lib/feed_manager.rb'
|
||||
@@ -153,16 +202,24 @@ Rails/WhereExists:
|
||||
- 'app/serializers/rest/announcement_serializer.rb'
|
||||
- 'app/serializers/rest/tag_serializer.rb'
|
||||
- 'app/services/activitypub/fetch_remote_status_service.rb'
|
||||
- 'app/services/app_sign_up_service.rb'
|
||||
- 'app/services/vote_service.rb'
|
||||
- 'app/validators/reaction_validator.rb'
|
||||
- 'app/validators/vote_validator.rb'
|
||||
- 'app/workers/move_worker.rb'
|
||||
- 'db/migrate/20190529143559_preserve_old_layout_for_existing_users.rb'
|
||||
- 'lib/tasks/tests.rake'
|
||||
- 'spec/models/account_spec.rb'
|
||||
- 'spec/services/activitypub/process_collection_service_spec.rb'
|
||||
- 'spec/services/purge_domain_service_spec.rb'
|
||||
- 'spec/services/unallow_domain_service_spec.rb'
|
||||
|
||||
# This cop supports safe autocorrection (--autocorrect).
|
||||
# Configuration parameters: AllowOnConstant, AllowOnSelfClass.
|
||||
Style/CaseEquality:
|
||||
Exclude:
|
||||
- 'config/initializers/trusted_proxies.rb'
|
||||
|
||||
# This cop supports unsafe autocorrection (--autocorrect-all).
|
||||
# Configuration parameters: AllowedMethods, AllowedPatterns.
|
||||
# AllowedMethods: ==, equal?, eql?
|
||||
@@ -190,8 +247,8 @@ Style/FetchEnvVar:
|
||||
- 'config/initializers/devise.rb'
|
||||
- 'config/initializers/paperclip.rb'
|
||||
- 'config/initializers/vapid.rb'
|
||||
- 'lib/mastodon/redis_config.rb'
|
||||
- 'lib/premailer_webpack_strategy.rb'
|
||||
- 'lib/mastodon/redis_config.rb'
|
||||
- 'lib/tasks/repo.rake'
|
||||
- 'spec/features/profile_spec.rb'
|
||||
|
||||
@@ -208,6 +265,7 @@ Style/FormatStringToken:
|
||||
# This cop supports unsafe autocorrection (--autocorrect-all).
|
||||
Style/GlobalStdStream:
|
||||
Exclude:
|
||||
- 'config/boot.rb'
|
||||
- 'config/environments/development.rb'
|
||||
- 'config/environments/production.rb'
|
||||
|
||||
@@ -237,6 +295,8 @@ Style/GuardClause:
|
||||
- 'app/workers/redownload_media_worker.rb'
|
||||
- 'app/workers/remote_account_refresh_worker.rb'
|
||||
- 'config/initializers/devise.rb'
|
||||
- 'db/migrate/20170901141119_truncate_preview_cards.rb'
|
||||
- 'db/post_migrate/20220704024901_migrate_settings_to_user_roles.rb'
|
||||
- 'lib/devise/strategies/two_factor_ldap_authenticatable.rb'
|
||||
- 'lib/devise/strategies/two_factor_pam_authenticatable.rb'
|
||||
- 'lib/mastodon/cli/accounts.rb'
|
||||
@@ -257,6 +317,7 @@ Style/HashAsLastArrayItem:
|
||||
- 'app/models/status.rb'
|
||||
- 'app/services/batched_remove_status_service.rb'
|
||||
- 'app/services/notify_service.rb'
|
||||
- 'db/migrate/20181024224956_migrate_account_conversations.rb'
|
||||
|
||||
# This cop supports unsafe autocorrection (--autocorrect-all).
|
||||
Style/HashTransformValues:
|
||||
@@ -396,8 +457,8 @@ Style/TrailingCommaInHashLiteral:
|
||||
- 'config/environments/test.rb'
|
||||
|
||||
# This cop supports safe autocorrection (--autocorrect).
|
||||
# Configuration parameters: WordRegex.
|
||||
# Configuration parameters: EnforcedStyle, MinSize, WordRegex.
|
||||
# SupportedStyles: percent, brackets
|
||||
Style/WordArray:
|
||||
EnforcedStyle: percent
|
||||
MinSize: 3
|
||||
Exclude:
|
||||
- 'app/helpers/languages_helper.rb'
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
diff --git a/dist/index.js b/dist/index.js
|
||||
index 57e375592d984e9a429bcd9f800fa2d15cd662e4..0c47d96df3608e23adfd77d887a8f72abbd501c0 100644
|
||||
--- a/dist/index.js
|
||||
+++ b/dist/index.js
|
||||
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
||||
});
|
||||
exports.default = void 0;
|
||||
|
||||
-var _crypto = _interopRequireDefault(require("crypto"));
|
||||
+var _createHash = _interopRequireDefault(require("webpack/lib/util/createHash"));
|
||||
|
||||
var _path = _interopRequireDefault(require("path"));
|
||||
|
||||
@@ -227,7 +227,7 @@ class CompressionPlugin {
|
||||
originalAlgorithm: this.options.algorithm,
|
||||
compressionOptions: this.options.compressionOptions,
|
||||
name,
|
||||
- contentHash: _crypto.default.createHash("md4").update(input).digest("hex")
|
||||
+ contentHash: _createHash.default("md4").update(input).digest("hex")
|
||||
};
|
||||
} else {
|
||||
cacheData.name = (0, _serializeJavascript.default)({
|
||||
@@ -103,7 +103,6 @@ RUN \
|
||||
procps \
|
||||
tini \
|
||||
tzdata \
|
||||
wget \
|
||||
; \
|
||||
# Patch Ruby to use jemalloc
|
||||
patchelf --add-needed libjemalloc.so.2 /usr/local/bin/ruby; \
|
||||
|
||||
9
Gemfile
9
Gemfile
@@ -39,15 +39,15 @@ end
|
||||
|
||||
gem 'net-ldap', '~> 0.18'
|
||||
|
||||
# TODO: Point back at released omniauth-cas gem when new version is released
|
||||
gem 'omniauth-cas', github: 'dlindahl/omniauth-cas', ref: '9d9d3a91b316c55d49ab6e621977f2067010c5bf'
|
||||
# TODO: Point back at released omniauth-cas gem when PR merged
|
||||
# https://github.com/dlindahl/omniauth-cas/pull/68
|
||||
gem 'omniauth-cas', github: 'stanhu/omniauth-cas', ref: '4211e6d05941b4a981f9a36b49ec166cecd0e271'
|
||||
gem 'omniauth-saml', '~> 2.0'
|
||||
gem 'omniauth_openid_connect', '~> 0.6.1'
|
||||
gem 'omniauth', '~> 2.0'
|
||||
gem 'omniauth-rails_csrf_protection', '~> 1.0'
|
||||
|
||||
gem 'color_diff', '~> 0.1'
|
||||
gem 'csv', '~> 3.2'
|
||||
gem 'discard', '~> 1.2'
|
||||
gem 'doorkeeper', '~> 5.6'
|
||||
gem 'ed25519', '~> 1.3'
|
||||
@@ -75,6 +75,7 @@ gem 'premailer-rails'
|
||||
gem 'rack-attack', '~> 6.6'
|
||||
gem 'rack-cors', '~> 2.0', require: 'rack/cors'
|
||||
gem 'rails-i18n', '~> 7.0'
|
||||
gem 'rails-settings-cached', '~> 0.6', git: 'https://github.com/mastodon/rails-settings-cached.git', branch: 'v0.6.6-aliases-true'
|
||||
gem 'redcarpet', '~> 3.6'
|
||||
gem 'redis', '~> 4.5', require: ['redis', 'redis/connection/hiredis']
|
||||
gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock'
|
||||
@@ -89,7 +90,7 @@ gem 'sidekiq-bulk', '~> 0.2.0'
|
||||
gem 'simple-navigation', '~> 4.4'
|
||||
gem 'simple_form', '~> 5.2'
|
||||
gem 'stoplight', '~> 3.0.1'
|
||||
gem 'strong_migrations', '1.7.0'
|
||||
gem 'strong_migrations', '1.6.4'
|
||||
gem 'tty-prompt', '~> 0.23', require: false
|
||||
gem 'twitter-text', '~> 3.1.0'
|
||||
gem 'tzinfo-data', '~> 1.2023'
|
||||
|
||||
114
Gemfile.lock
114
Gemfile.lock
@@ -7,16 +7,6 @@ GIT
|
||||
hkdf (~> 0.2)
|
||||
jwt (~> 2.0)
|
||||
|
||||
GIT
|
||||
remote: https://github.com/dlindahl/omniauth-cas.git
|
||||
revision: 9d9d3a91b316c55d49ab6e621977f2067010c5bf
|
||||
ref: 9d9d3a91b316c55d49ab6e621977f2067010c5bf
|
||||
specs:
|
||||
omniauth-cas (3.0.0)
|
||||
addressable (~> 2.8)
|
||||
nokogiri (~> 1.12)
|
||||
omniauth (~> 2.1)
|
||||
|
||||
GIT
|
||||
remote: https://github.com/jhawthorn/nsa.git
|
||||
revision: e020fcc3a54d993ab45b7194d89ab720296c111b
|
||||
@@ -28,6 +18,24 @@ GIT
|
||||
sidekiq (>= 3.5)
|
||||
statsd-ruby (~> 1.4, >= 1.4.0)
|
||||
|
||||
GIT
|
||||
remote: https://github.com/mastodon/rails-settings-cached.git
|
||||
revision: 86328ef0bd04ce21cc0504ff5e334591e8c2ccab
|
||||
branch: v0.6.6-aliases-true
|
||||
specs:
|
||||
rails-settings-cached (0.6.6)
|
||||
rails (>= 4.2.0)
|
||||
|
||||
GIT
|
||||
remote: https://github.com/stanhu/omniauth-cas.git
|
||||
revision: 4211e6d05941b4a981f9a36b49ec166cecd0e271
|
||||
ref: 4211e6d05941b4a981f9a36b49ec166cecd0e271
|
||||
specs:
|
||||
omniauth-cas (2.0.0)
|
||||
addressable (~> 2.3)
|
||||
nokogiri (~> 1.5)
|
||||
omniauth (>= 1.2, < 3)
|
||||
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
@@ -123,20 +131,20 @@ GEM
|
||||
attr_required (1.0.1)
|
||||
awrence (1.2.1)
|
||||
aws-eventstream (1.3.0)
|
||||
aws-partitions (1.873.0)
|
||||
aws-sdk-core (3.190.1)
|
||||
aws-eventstream (~> 1, >= 1.3.0)
|
||||
aws-partitions (1.857.0)
|
||||
aws-sdk-core (3.188.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
aws-partitions (~> 1, >= 1.651.0)
|
||||
aws-sigv4 (~> 1.8)
|
||||
aws-sigv4 (~> 1.5)
|
||||
jmespath (~> 1, >= 1.6.1)
|
||||
aws-sdk-kms (1.75.0)
|
||||
aws-sdk-kms (1.73.0)
|
||||
aws-sdk-core (~> 3, >= 3.188.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-s3 (1.142.0)
|
||||
aws-sdk-core (~> 3, >= 3.189.0)
|
||||
aws-sdk-s3 (1.140.0)
|
||||
aws-sdk-core (~> 3, >= 3.188.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.8)
|
||||
aws-sigv4 (1.8.0)
|
||||
aws-sigv4 (~> 1.6)
|
||||
aws-sigv4 (1.7.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
azure-storage-blob (2.0.3)
|
||||
azure-storage-common (~> 2.0)
|
||||
@@ -167,8 +175,7 @@ GEM
|
||||
blurhash (0.1.7)
|
||||
bootsnap (1.17.0)
|
||||
msgpack (~> 1.2)
|
||||
brakeman (6.1.1)
|
||||
racc
|
||||
brakeman (6.1.0)
|
||||
browser (5.3.1)
|
||||
brpoplpush-redis_script (0.1.3)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.5)
|
||||
@@ -208,13 +215,12 @@ GEM
|
||||
crass (1.0.6)
|
||||
css_parser (1.14.0)
|
||||
addressable
|
||||
csv (3.2.8)
|
||||
database_cleaner-active_record (2.1.0)
|
||||
activerecord (>= 5.a)
|
||||
database_cleaner-core (~> 2.0.0)
|
||||
database_cleaner-core (2.0.1)
|
||||
date (3.3.4)
|
||||
debug (1.9.1)
|
||||
debug (1.9.0)
|
||||
irb (~> 1.10)
|
||||
reline (>= 0.3.8)
|
||||
debug_inspector (1.1.0)
|
||||
@@ -265,7 +271,7 @@ GEM
|
||||
erubi (1.12.0)
|
||||
et-orbi (1.2.7)
|
||||
tzinfo
|
||||
excon (0.109.0)
|
||||
excon (0.104.0)
|
||||
fabrication (2.31.0)
|
||||
faker (3.2.2)
|
||||
i18n (>= 1.8.11, < 2)
|
||||
@@ -295,12 +301,12 @@ GEM
|
||||
faraday_middleware (1.2.0)
|
||||
faraday (~> 1.0)
|
||||
fast_blank (1.0.1)
|
||||
fastimage (2.3.0)
|
||||
fastimage (2.2.7)
|
||||
ffi (1.15.5)
|
||||
ffi-compiler (1.0.1)
|
||||
ffi (>= 1.0.0)
|
||||
rake
|
||||
fog-core (2.4.0)
|
||||
fog-core (2.3.0)
|
||||
builder
|
||||
excon (~> 0.71)
|
||||
formatador (>= 0.2, < 2.0)
|
||||
@@ -329,8 +335,8 @@ GEM
|
||||
activesupport (>= 5.1)
|
||||
haml (>= 4.0.6)
|
||||
railties (>= 5.1)
|
||||
haml_lint (0.53.0)
|
||||
haml (>= 5.0)
|
||||
haml_lint (0.52.0)
|
||||
haml (>= 4.0)
|
||||
parallel (~> 1.10)
|
||||
rainbow
|
||||
rubocop (>= 1.0)
|
||||
@@ -370,10 +376,10 @@ GEM
|
||||
rainbow (>= 2.2.2, < 4.0)
|
||||
terminal-table (>= 1.5.1)
|
||||
idn-ruby (0.1.5)
|
||||
io-console (0.7.1)
|
||||
irb (1.11.1)
|
||||
io-console (0.6.0)
|
||||
irb (1.10.1)
|
||||
rdoc
|
||||
reline (>= 0.4.2)
|
||||
reline (>= 0.3.8)
|
||||
jmespath (1.6.2)
|
||||
json (2.7.1)
|
||||
json-canonicalization (1.0.0)
|
||||
@@ -450,9 +456,9 @@ GEM
|
||||
azure-storage-blob (~> 2.0.1)
|
||||
hashie (~> 5.0)
|
||||
memory_profiler (1.0.1)
|
||||
mime-types (3.5.2)
|
||||
mime-types (3.5.1)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2023.1205)
|
||||
mime-types-data (3.2023.1003)
|
||||
mini_mime (1.1.5)
|
||||
mini_portile2 (2.8.5)
|
||||
minitest (5.20.0)
|
||||
@@ -460,14 +466,14 @@ GEM
|
||||
multi_json (1.15.0)
|
||||
multipart-post (2.3.0)
|
||||
mutex_m (0.2.0)
|
||||
net-http (0.4.1)
|
||||
net-http (0.4.0)
|
||||
uri
|
||||
net-http-persistent (4.0.2)
|
||||
connection_pool (~> 2.2)
|
||||
net-imap (0.4.4)
|
||||
date
|
||||
net-protocol
|
||||
net-ldap (0.19.0)
|
||||
net-ldap (0.18.0)
|
||||
net-pop (0.1.2)
|
||||
net-protocol
|
||||
net-protocol (0.2.2)
|
||||
@@ -475,7 +481,7 @@ GEM
|
||||
net-smtp (0.4.0)
|
||||
net-protocol
|
||||
nio4r (2.5.9)
|
||||
nokogiri (1.16.2)
|
||||
nokogiri (1.15.5)
|
||||
mini_portile2 (~> 2.8.2)
|
||||
racc (~> 1.4)
|
||||
oj (3.16.3)
|
||||
@@ -504,7 +510,7 @@ GEM
|
||||
validate_email
|
||||
validate_url
|
||||
webfinger (~> 1.2)
|
||||
openssl (3.2.0)
|
||||
openssl (3.1.0)
|
||||
openssl-signature_algorithm (1.3.0)
|
||||
openssl (> 2.0)
|
||||
orm_adapter (0.5.0)
|
||||
@@ -516,7 +522,7 @@ GEM
|
||||
parslet (2.0.0)
|
||||
pastel (0.8.0)
|
||||
tty-color (~> 0.5)
|
||||
pg (1.5.5)
|
||||
pg (1.5.4)
|
||||
pghero (3.4.0)
|
||||
activerecord (>= 6)
|
||||
posix-spawn (0.3.15)
|
||||
@@ -534,10 +540,10 @@ GEM
|
||||
activesupport (>= 7.0.0)
|
||||
rack
|
||||
railties (>= 7.0.0)
|
||||
psych (5.1.2)
|
||||
psych (5.1.1.1)
|
||||
stringio
|
||||
public_suffix (5.0.4)
|
||||
puma (6.4.2)
|
||||
puma (6.4.0)
|
||||
nio4r (~> 2.0)
|
||||
pundit (2.3.1)
|
||||
activesupport (>= 3.0.0)
|
||||
@@ -608,7 +614,7 @@ GEM
|
||||
link_header (~> 0.0, >= 0.0.8)
|
||||
rdf-normalize (0.6.1)
|
||||
rdf (~> 3.2)
|
||||
rdoc (6.6.2)
|
||||
rdoc (6.6.1)
|
||||
psych (>= 4.0.0)
|
||||
redcarpet (3.6.0)
|
||||
redis (4.8.1)
|
||||
@@ -617,7 +623,7 @@ GEM
|
||||
redlock (1.3.2)
|
||||
redis (>= 3.0.0, < 6.0)
|
||||
regexp_parser (2.8.3)
|
||||
reline (0.4.2)
|
||||
reline (0.4.1)
|
||||
io-console (~> 0.5)
|
||||
request_store (1.5.1)
|
||||
rack (>= 1.4)
|
||||
@@ -669,23 +675,23 @@ GEM
|
||||
unicode-display_width (>= 2.4.0, < 3.0)
|
||||
rubocop-ast (1.30.0)
|
||||
parser (>= 3.2.1.0)
|
||||
rubocop-capybara (2.20.0)
|
||||
rubocop-capybara (2.19.0)
|
||||
rubocop (~> 1.41)
|
||||
rubocop-factory_bot (2.25.0)
|
||||
rubocop-factory_bot (2.24.0)
|
||||
rubocop (~> 1.33)
|
||||
rubocop-performance (1.20.2)
|
||||
rubocop-performance (1.20.0)
|
||||
rubocop (>= 1.48.1, < 2.0)
|
||||
rubocop-ast (>= 1.30.0, < 2.0)
|
||||
rubocop-rails (2.23.1)
|
||||
rubocop-rails (2.23.0)
|
||||
activesupport (>= 4.2.0)
|
||||
rack (>= 1.1)
|
||||
rubocop (>= 1.33.0, < 2.0)
|
||||
rubocop-ast (>= 1.30.0, < 2.0)
|
||||
rubocop-rspec (2.26.1)
|
||||
rubocop-rspec (2.25.0)
|
||||
rubocop (~> 1.40)
|
||||
rubocop-capybara (~> 2.17)
|
||||
rubocop-factory_bot (~> 2.22)
|
||||
ruby-prof (1.7.0)
|
||||
ruby-prof (1.6.3)
|
||||
ruby-progressbar (1.13.0)
|
||||
ruby-saml (1.15.0)
|
||||
nokogiri (>= 1.13.10)
|
||||
@@ -717,7 +723,7 @@ GEM
|
||||
rufus-scheduler (~> 3.2)
|
||||
sidekiq (>= 6, < 8)
|
||||
tilt (>= 1.4.0)
|
||||
sidekiq-unique-jobs (7.1.33)
|
||||
sidekiq-unique-jobs (7.1.30)
|
||||
brpoplpush-redis_script (> 0.1.1, <= 2.0.0)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.5)
|
||||
redis (< 5.0)
|
||||
@@ -741,7 +747,7 @@ GEM
|
||||
stoplight (3.0.2)
|
||||
redlock (~> 1.0)
|
||||
stringio (3.1.0)
|
||||
strong_migrations (1.7.0)
|
||||
strong_migrations (1.6.4)
|
||||
activerecord (>= 5.2)
|
||||
swd (1.3.0)
|
||||
activesupport (>= 3)
|
||||
@@ -776,7 +782,7 @@ GEM
|
||||
unf (~> 0.1.0)
|
||||
tzinfo (2.0.6)
|
||||
concurrent-ruby (~> 1.0)
|
||||
tzinfo-data (1.2023.4)
|
||||
tzinfo-data (1.2023.3)
|
||||
tzinfo (>= 1.0.0)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
@@ -791,7 +797,7 @@ GEM
|
||||
public_suffix
|
||||
warden (1.2.9)
|
||||
rack (>= 2.0.9)
|
||||
webauthn (3.1.0)
|
||||
webauthn (3.0.0)
|
||||
android_key_attestation (~> 0.3.0)
|
||||
awrence (~> 1.1)
|
||||
bindata (~> 2.4)
|
||||
@@ -846,7 +852,6 @@ DEPENDENCIES
|
||||
color_diff (~> 0.1)
|
||||
concurrent-ruby
|
||||
connection_pool
|
||||
csv (~> 3.2)
|
||||
database_cleaner-active_record
|
||||
debug (~> 1.8)
|
||||
devise (~> 4.9)
|
||||
@@ -916,6 +921,7 @@ DEPENDENCIES
|
||||
rails (~> 7.1.1)
|
||||
rails-controller-testing (~> 1.0)
|
||||
rails-i18n (~> 7.0)
|
||||
rails-settings-cached (~> 0.6)!
|
||||
rdf-normalize (~> 0.5)
|
||||
redcarpet (~> 3.6)
|
||||
redis (~> 4.5)
|
||||
@@ -945,7 +951,7 @@ DEPENDENCIES
|
||||
simplecov-lcov (~> 0.8)
|
||||
stackprof
|
||||
stoplight (~> 3.0.1)
|
||||
strong_migrations (= 1.7.0)
|
||||
strong_migrations (= 1.6.4)
|
||||
test-prof
|
||||
thor (~> 1.2)
|
||||
tty-prompt (~> 0.23)
|
||||
|
||||
12
SECURITY.md
12
SECURITY.md
@@ -13,8 +13,10 @@ A "vulnerability in Mastodon" is a vulnerability in the code distributed through
|
||||
|
||||
## Supported Versions
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | --------- |
|
||||
| 4.2.x | Yes |
|
||||
| 4.1.x | Yes |
|
||||
| < 4.1 | No |
|
||||
| Version | Supported |
|
||||
| ------- | ---------------- |
|
||||
| 4.2.x | Yes |
|
||||
| 4.1.x | Yes |
|
||||
| 4.0.x | No |
|
||||
| 3.5.x | Until 2023-12-31 |
|
||||
| < 3.5 | No |
|
||||
|
||||
@@ -40,7 +40,7 @@ module Admin
|
||||
(@email_domain_block.other_domains || []).uniq.each do |domain|
|
||||
next if EmailDomainBlock.where(domain: domain).exists?
|
||||
|
||||
other_email_domain_block = EmailDomainBlock.create!(domain: domain, allow_with_approval: @email_domain_block.allow_with_approval, parent: @email_domain_block)
|
||||
other_email_domain_block = EmailDomainBlock.create!(domain: domain, parent: @email_domain_block)
|
||||
log_action :create, other_email_domain_block
|
||||
end
|
||||
end
|
||||
@@ -65,7 +65,7 @@ module Admin
|
||||
end
|
||||
|
||||
def resource_params
|
||||
params.require(:email_domain_block).permit(:domain, :allow_with_approval, other_domains: [])
|
||||
params.require(:email_domain_block).permit(:domain, other_domains: [])
|
||||
end
|
||||
|
||||
def form_email_domain_block_batch_params
|
||||
|
||||
@@ -68,7 +68,7 @@ module Admin
|
||||
|
||||
def export_data
|
||||
CSV.generate(headers: export_headers, write_headers: true) do |content|
|
||||
DomainBlock.with_limitations.order(id: :asc).each do |instance|
|
||||
DomainBlock.with_limitations.each do |instance|
|
||||
content << [instance.domain, instance.severity, instance.reject_media, instance.reject_reports, instance.public_comment, instance.obfuscate]
|
||||
end
|
||||
end
|
||||
|
||||
@@ -8,7 +8,7 @@ module Admin
|
||||
authorize :follow_recommendation, :show?
|
||||
|
||||
@form = Form::AccountBatch.new
|
||||
@accounts = filtered_follow_recommendations.page(params[:page])
|
||||
@accounts = filtered_follow_recommendations
|
||||
end
|
||||
|
||||
def update
|
||||
|
||||
@@ -55,7 +55,7 @@ class Api::V1::Admin::EmailDomainBlocksController < Api::BaseController
|
||||
end
|
||||
|
||||
def resource_params
|
||||
params.permit(:domain, :allow_with_approval)
|
||||
params.permit(:domain)
|
||||
end
|
||||
|
||||
def insert_pagination_headers
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
class Api::V1::StreamingController < Api::BaseController
|
||||
def index
|
||||
if same_host?
|
||||
if Rails.configuration.x.streaming_api_base_url == request.host
|
||||
not_found
|
||||
else
|
||||
redirect_to streaming_api_url, status: 301, allow_other_host: true
|
||||
@@ -11,16 +11,9 @@ class Api::V1::StreamingController < Api::BaseController
|
||||
|
||||
private
|
||||
|
||||
def same_host?
|
||||
base_url = Addressable::URI.parse(Rails.configuration.x.streaming_api_base_url)
|
||||
request.host == base_url.host && request.port == (base_url.port || 80)
|
||||
end
|
||||
|
||||
def streaming_api_url
|
||||
Addressable::URI.parse(request.url).tap do |uri|
|
||||
base_url = Addressable::URI.parse(Rails.configuration.x.streaming_api_base_url)
|
||||
uri.host = base_url.host
|
||||
uri.port = base_url.port
|
||||
uri.host = Addressable::URI.parse(Rails.configuration.x.streaming_api_base_url).host
|
||||
end.to_s
|
||||
end
|
||||
end
|
||||
|
||||
@@ -3,23 +3,22 @@
|
||||
class Api::V1::SuggestionsController < Api::BaseController
|
||||
include Authorization
|
||||
|
||||
before_action -> { doorkeeper_authorize! :read, :'read:accounts' }, only: :index
|
||||
before_action -> { doorkeeper_authorize! :write, :'write:accounts' }, except: :index
|
||||
before_action -> { doorkeeper_authorize! :read }
|
||||
before_action :require_user!
|
||||
before_action :set_suggestions
|
||||
|
||||
def index
|
||||
render json: @suggestions.get(limit_param(DEFAULT_ACCOUNTS_LIMIT), params[:offset].to_i).map(&:account), each_serializer: REST::AccountSerializer
|
||||
suggestions = suggestions_source.get(current_account, limit: limit_param(DEFAULT_ACCOUNTS_LIMIT))
|
||||
render json: suggestions.map(&:account), each_serializer: REST::AccountSerializer
|
||||
end
|
||||
|
||||
def destroy
|
||||
@suggestions.remove(params[:id])
|
||||
suggestions_source.remove(current_account, params[:id])
|
||||
render_empty
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_suggestions
|
||||
@suggestions = AccountSuggestions.new(current_account)
|
||||
def suggestions_source
|
||||
AccountSuggestions::PastInteractionsSource.new
|
||||
end
|
||||
end
|
||||
|
||||
@@ -3,23 +3,17 @@
|
||||
class Api::V2::SuggestionsController < Api::BaseController
|
||||
include Authorization
|
||||
|
||||
before_action -> { doorkeeper_authorize! :read, :'read:accounts' }, only: :index
|
||||
before_action -> { doorkeeper_authorize! :write, :'write:accounts' }, except: :index
|
||||
before_action -> { doorkeeper_authorize! :read }
|
||||
before_action :require_user!
|
||||
before_action :set_suggestions
|
||||
|
||||
def index
|
||||
render json: @suggestions.get(limit_param(DEFAULT_ACCOUNTS_LIMIT), params[:offset].to_i), each_serializer: REST::SuggestionSerializer
|
||||
end
|
||||
|
||||
def destroy
|
||||
@suggestions.remove(params[:id])
|
||||
render_empty
|
||||
render json: @suggestions, each_serializer: REST::SuggestionSerializer
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_suggestions
|
||||
@suggestions = AccountSuggestions.new(current_account)
|
||||
@suggestions = AccountSuggestions.get(current_account, limit_param(DEFAULT_ACCOUNTS_LIMIT))
|
||||
end
|
||||
end
|
||||
|
||||
@@ -7,7 +7,7 @@ class Auth::OmniauthCallbacksController < Devise::OmniauthCallbacksController
|
||||
def self.provides_callback_for(provider)
|
||||
define_method provider do
|
||||
@provider = provider
|
||||
@user = User.find_for_omniauth(request.env['omniauth.auth'], current_user)
|
||||
@user = User.find_for_oauth(request.env['omniauth.auth'], current_user)
|
||||
|
||||
if @user.persisted?
|
||||
record_login_activity
|
||||
@@ -17,9 +17,6 @@ class Auth::OmniauthCallbacksController < Devise::OmniauthCallbacksController
|
||||
session["devise.#{provider}_data"] = request.env['omniauth.auth']
|
||||
redirect_to new_user_registration_url
|
||||
end
|
||||
rescue ActiveRecord::RecordInvalid
|
||||
flash[:alert] = I18n.t('devise.failure.omniauth_user_creation_failure') if is_navigational_format?
|
||||
redirect_to new_user_session_url
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -3,6 +3,150 @@
|
||||
module CacheConcern
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
module ActiveRecordCoder
|
||||
EMPTY_HASH = {}.freeze
|
||||
|
||||
class << self
|
||||
def dump(record)
|
||||
instances = InstanceTracker.new
|
||||
serialized_associations = serialize_associations(record, instances)
|
||||
serialized_records = instances.map { |r| serialize_record(r) }
|
||||
[serialized_associations, *serialized_records]
|
||||
end
|
||||
|
||||
def load(payload)
|
||||
instances = InstanceTracker.new
|
||||
serialized_associations, *serialized_records = payload
|
||||
serialized_records.each { |attrs| instances.push(deserialize_record(*attrs)) }
|
||||
deserialize_associations(serialized_associations, instances)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# Records without associations, or which have already been visited before,
|
||||
# are serialized by their id alone.
|
||||
#
|
||||
# Records with associations are serialized as a two-element array including
|
||||
# their id and the record's association cache.
|
||||
#
|
||||
def serialize_associations(record, instances)
|
||||
return unless record
|
||||
|
||||
if (id = instances.lookup(record))
|
||||
payload = id
|
||||
else
|
||||
payload = instances.push(record)
|
||||
|
||||
cached_associations = record.class.reflect_on_all_associations.select do |reflection|
|
||||
record.association_cached?(reflection.name)
|
||||
end
|
||||
|
||||
unless cached_associations.empty?
|
||||
serialized_associations = cached_associations.map do |reflection|
|
||||
association = record.association(reflection.name)
|
||||
|
||||
serialized_target = if reflection.collection?
|
||||
association.target.map { |target_record| serialize_associations(target_record, instances) }
|
||||
else
|
||||
serialize_associations(association.target, instances)
|
||||
end
|
||||
|
||||
[reflection.name, serialized_target]
|
||||
end
|
||||
|
||||
payload = [payload, serialized_associations]
|
||||
end
|
||||
end
|
||||
|
||||
payload
|
||||
end
|
||||
|
||||
def deserialize_associations(payload, instances)
|
||||
return unless payload
|
||||
|
||||
id, associations = payload
|
||||
record = instances.fetch(id)
|
||||
|
||||
associations&.each do |name, serialized_target|
|
||||
begin
|
||||
association = record.association(name)
|
||||
rescue ActiveRecord::AssociationNotFoundError
|
||||
raise AssociationMissingError, "undefined association: #{name}"
|
||||
end
|
||||
|
||||
target = if association.reflection.collection?
|
||||
serialized_target.map! { |serialized_record| deserialize_associations(serialized_record, instances) }
|
||||
else
|
||||
deserialize_associations(serialized_target, instances)
|
||||
end
|
||||
|
||||
association.target = target
|
||||
end
|
||||
|
||||
record
|
||||
end
|
||||
|
||||
def serialize_record(record)
|
||||
arguments = [record.class.name, attributes_for_database(record)]
|
||||
arguments << true if record.new_record?
|
||||
arguments
|
||||
end
|
||||
|
||||
def attributes_for_database(record)
|
||||
attributes = record.attributes_for_database
|
||||
attributes.transform_values! { |attr| attr.is_a?(::ActiveModel::Type::Binary::Data) ? attr.to_s : attr }
|
||||
attributes
|
||||
end
|
||||
|
||||
def deserialize_record(class_name, attributes_from_database, new_record = false) # rubocop:disable Style/OptionalBooleanParameter
|
||||
begin
|
||||
klass = Object.const_get(class_name)
|
||||
rescue NameError
|
||||
raise ClassMissingError, "undefined class: #{class_name}"
|
||||
end
|
||||
|
||||
# Ideally we'd like to call `klass.instantiate`, however it doesn't allow to pass
|
||||
# wether the record was persisted or not.
|
||||
attributes = klass.attributes_builder.build_from_database(attributes_from_database, EMPTY_HASH)
|
||||
klass.allocate.init_with_attributes(attributes, new_record)
|
||||
end
|
||||
end
|
||||
|
||||
class Error < StandardError
|
||||
end
|
||||
|
||||
class ClassMissingError < Error
|
||||
end
|
||||
|
||||
class AssociationMissingError < Error
|
||||
end
|
||||
|
||||
class InstanceTracker
|
||||
def initialize
|
||||
@instances = []
|
||||
@ids = {}.compare_by_identity
|
||||
end
|
||||
|
||||
def map(&block)
|
||||
@instances.map(&block)
|
||||
end
|
||||
|
||||
def fetch(...)
|
||||
@instances.fetch(...)
|
||||
end
|
||||
|
||||
def push(instance)
|
||||
id = @ids[instance] = @instances.size
|
||||
@instances << instance
|
||||
id
|
||||
end
|
||||
|
||||
def lookup(instance)
|
||||
@ids[instance]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class_methods do
|
||||
def vary_by(value, **kwargs)
|
||||
before_action(**kwargs) do |controller|
|
||||
@@ -52,7 +196,11 @@ module CacheConcern
|
||||
raw = raw.cache_ids.to_a if raw.is_a?(ActiveRecord::Relation)
|
||||
return [] if raw.empty?
|
||||
|
||||
cached_keys_with_value = Rails.cache.read_multi(*raw).transform_keys(&:id)
|
||||
cached_keys_with_value = begin
|
||||
Rails.cache.read_multi(*raw).transform_keys(&:id).transform_values { |r| ActiveRecordCoder.load(r) }
|
||||
rescue ActiveRecordCoder::Error
|
||||
{} # The serialization format may have changed, let's pretend it's a cache miss.
|
||||
end
|
||||
|
||||
uncached_ids = raw.map(&:id) - cached_keys_with_value.keys
|
||||
|
||||
@@ -60,7 +208,10 @@ module CacheConcern
|
||||
|
||||
unless uncached_ids.empty?
|
||||
uncached = klass.where(id: uncached_ids).with_includes.index_by(&:id)
|
||||
Rails.cache.write_multi(uncached.values.to_h { |i| [i, i] })
|
||||
|
||||
uncached.each_value do |item|
|
||||
Rails.cache.write(item, ActiveRecordCoder.dump(item))
|
||||
end
|
||||
end
|
||||
|
||||
raw.filter_map { |item| cached_keys_with_value[item.id] || uncached[item.id] }
|
||||
|
||||
@@ -91,23 +91,14 @@ module SignatureVerification
|
||||
raise SignatureVerificationError, "Public key not found for key #{signature_params['keyId']}" if actor.nil?
|
||||
|
||||
signature = Base64.decode64(signature_params['signature'])
|
||||
compare_signed_string = build_signed_string(include_query_string: true)
|
||||
compare_signed_string = build_signed_string
|
||||
|
||||
return actor unless verify_signature(actor, signature, compare_signed_string).nil?
|
||||
|
||||
# Compatibility quirk with older Mastodon versions
|
||||
compare_signed_string = build_signed_string(include_query_string: false)
|
||||
return actor unless verify_signature(actor, signature, compare_signed_string).nil?
|
||||
|
||||
actor = stoplight_wrap_request { actor_refresh_key!(actor) }
|
||||
|
||||
raise SignatureVerificationError, "Could not refresh public key #{signature_params['keyId']}" if actor.nil?
|
||||
|
||||
compare_signed_string = build_signed_string(include_query_string: true)
|
||||
return actor unless verify_signature(actor, signature, compare_signed_string).nil?
|
||||
|
||||
# Compatibility quirk with older Mastodon versions
|
||||
compare_signed_string = build_signed_string(include_query_string: false)
|
||||
return actor unless verify_signature(actor, signature, compare_signed_string).nil?
|
||||
|
||||
fail_with! "Verification failed for #{actor.to_log_human_identifier} #{actor.uri} using rsa-sha256 (RSASSA-PKCS1-v1_5 with SHA-256)", signed_string: compare_signed_string, signature: signature_params['signature']
|
||||
@@ -189,18 +180,11 @@ module SignatureVerification
|
||||
nil
|
||||
end
|
||||
|
||||
def build_signed_string(include_query_string: true)
|
||||
def build_signed_string
|
||||
signed_headers.map do |signed_header|
|
||||
case signed_header
|
||||
when Request::REQUEST_TARGET
|
||||
if include_query_string
|
||||
"#{Request::REQUEST_TARGET}: #{request.method.downcase} #{request.original_fullpath}"
|
||||
else
|
||||
# Current versions of Mastodon incorrectly omit the query string from the (request-target) pseudo-header.
|
||||
# Therefore, temporarily support such incorrect signatures for compatibility.
|
||||
# TODO: remove eventually some time after release of the fixed version
|
||||
"#{Request::REQUEST_TARGET}: #{request.method.downcase} #{request.path}"
|
||||
end
|
||||
"#{Request::REQUEST_TARGET}: #{request.method.downcase} #{request.path}"
|
||||
when '(created)'
|
||||
raise SignatureVerificationError, 'Invalid pseudo-header (created) for rsa-sha256' unless signature_algorithm == 'hs2019'
|
||||
raise SignatureVerificationError, 'Pseudo-header (created) used but corresponding argument missing' if signature_params['created'].blank?
|
||||
@@ -266,7 +250,7 @@ module SignatureVerification
|
||||
stoplight_wrap_request { ResolveAccountService.new.call(key_id.delete_prefix('acct:'), suppress_errors: false) }
|
||||
elsif !ActivityPub::TagManager.instance.local_uri?(key_id)
|
||||
account = ActivityPub::TagManager.instance.uri_to_actor(key_id)
|
||||
account ||= stoplight_wrap_request { ActivityPub::FetchRemoteKeyService.new.call(key_id, suppress_errors: false) }
|
||||
account ||= stoplight_wrap_request { ActivityPub::FetchRemoteKeyService.new.call(key_id, id: false, suppress_errors: false) }
|
||||
account
|
||||
end
|
||||
rescue Mastodon::PrivateNetworkAddressError => e
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class HealthController < ActionController::Base # rubocop:disable Rails/ApplicationController
|
||||
class HealthController < ActionController::Base
|
||||
def show
|
||||
render plain: 'OK'
|
||||
end
|
||||
|
||||
@@ -21,7 +21,7 @@ module WellKnown
|
||||
username = username_from_resource
|
||||
|
||||
@account = begin
|
||||
if username == Rails.configuration.x.local_domain || username == Rails.configuration.x.web_domain
|
||||
if username == Rails.configuration.x.local_domain
|
||||
Account.representative
|
||||
else
|
||||
Account.find_local!(username)
|
||||
|
||||
@@ -4,60 +4,4 @@ module Admin::SettingsHelper
|
||||
def captcha_available?
|
||||
ENV['HCAPTCHA_SECRET_KEY'].present? && ENV['HCAPTCHA_SITE_KEY'].present?
|
||||
end
|
||||
|
||||
def login_activity_title(activity)
|
||||
t(
|
||||
"login_activities.#{login_activity_key(activity)}",
|
||||
method: login_activity_method(activity),
|
||||
ip: login_activity_ip(activity),
|
||||
browser: login_activity_browser(activity)
|
||||
)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def login_activity_key(activity)
|
||||
activity.success? ? 'successful_sign_in_html' : 'failed_sign_in_html'
|
||||
end
|
||||
|
||||
def login_activity_method(activity)
|
||||
content_tag(
|
||||
:span,
|
||||
login_activity_method_string(activity),
|
||||
class: 'target'
|
||||
)
|
||||
end
|
||||
|
||||
def login_activity_ip(activity)
|
||||
content_tag(
|
||||
:span,
|
||||
activity.ip,
|
||||
class: 'target'
|
||||
)
|
||||
end
|
||||
|
||||
def login_activity_browser(activity)
|
||||
content_tag(
|
||||
:span,
|
||||
login_activity_browser_description(activity),
|
||||
class: 'target',
|
||||
title: activity.user_agent
|
||||
)
|
||||
end
|
||||
|
||||
def login_activity_method_string(activity)
|
||||
if activity.omniauth?
|
||||
t("auth.providers.#{activity.provider}")
|
||||
else
|
||||
t("login_activities.authentication_methods.#{activity.authentication_method}")
|
||||
end
|
||||
end
|
||||
|
||||
def login_activity_browser_description(activity)
|
||||
t(
|
||||
'sessions.description',
|
||||
browser: t(activity.browser, scope: 'sessions.browsers', default: activity.browser.to_s),
|
||||
platform: t(activity.platform, scope: 'sessions.platforms', default: activity.platform.to_s)
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -155,8 +155,8 @@ module JsonLdHelper
|
||||
end
|
||||
end
|
||||
|
||||
def fetch_resource(uri, id_is_known, on_behalf_of = nil)
|
||||
unless id_is_known
|
||||
def fetch_resource(uri, id, on_behalf_of = nil)
|
||||
unless id
|
||||
json = fetch_resource_without_id_validation(uri, on_behalf_of)
|
||||
|
||||
return if !json.is_a?(Hash) || unsupported_uri_scheme?(json['id'])
|
||||
@@ -174,19 +174,7 @@ module JsonLdHelper
|
||||
build_request(uri, on_behalf_of).perform do |response|
|
||||
raise Mastodon::UnexpectedResponseError, response unless response_successful?(response) || response_error_unsalvageable?(response) || !raise_on_temporary_error
|
||||
|
||||
body_to_json(response.body_with_limit) if response.code == 200 && valid_activitypub_content_type?(response)
|
||||
end
|
||||
end
|
||||
|
||||
def valid_activitypub_content_type?(response)
|
||||
return true if response.mime_type == 'application/activity+json'
|
||||
|
||||
# When the mime type is `application/ld+json`, we need to check the profile,
|
||||
# but `http.rb` does not parse it for us.
|
||||
return false unless response.mime_type == 'application/ld+json'
|
||||
|
||||
response.headers[HTTP::Headers::CONTENT_TYPE]&.split(';')&.map(&:strip)&.any? do |str|
|
||||
str.start_with?('profile="') && str[9...-1].split.include?('https://www.w3.org/ns/activitystreams')
|
||||
body_to_json(response.body_with_limit) if response.code == 200
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -224,7 +224,7 @@ module LanguagesHelper
|
||||
'en-GB': 'English (British)',
|
||||
'es-AR': 'Español (Argentina)',
|
||||
'es-MX': 'Español (México)',
|
||||
'fr-CA': 'Français (Canadien)',
|
||||
'fr-QC': 'Français (Canadien)',
|
||||
'pt-BR': 'Português (Brasil)',
|
||||
'pt-PT': 'Português (Portugal)',
|
||||
'sr-Latn': 'Srpski (latinica)',
|
||||
|
||||
@@ -9,19 +9,6 @@ module SettingsHelper
|
||||
LanguagesHelper.sorted_locale_keys(I18n.available_locales)
|
||||
end
|
||||
|
||||
def featured_tags_hint(recently_used_tags)
|
||||
safe_join(
|
||||
[
|
||||
t('simple_form.hints.featured_tag.name'),
|
||||
safe_join(
|
||||
links_for_featured_tags(recently_used_tags),
|
||||
', '
|
||||
),
|
||||
],
|
||||
' '
|
||||
)
|
||||
end
|
||||
|
||||
def session_device_icon(session)
|
||||
device = session.detection.device
|
||||
|
||||
@@ -41,18 +28,4 @@ module SettingsHelper
|
||||
safe_join([image_tag(account.avatar.url, width: 15, height: 15, alt: '', class: 'avatar'), content_tag(:span, account.acct, class: 'username')], ' ')
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def links_for_featured_tags(tags)
|
||||
tags.map { |tag| post_link_to_featured_tag(tag) }
|
||||
end
|
||||
|
||||
def post_link_to_featured_tag(tag)
|
||||
link_to(
|
||||
"##{tag.display_name}",
|
||||
settings_featured_tags_path(featured_tag: { name: tag.name }),
|
||||
method: :post
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
|
||||
import { ReactComponent as GroupsIcon } from '@material-symbols/svg-600/outlined/group.svg';
|
||||
import { ReactComponent as PersonIcon } from '@material-symbols/svg-600/outlined/person.svg';
|
||||
import { ReactComponent as SmartToyIcon } from '@material-symbols/svg-600/outlined/smart_toy.svg';
|
||||
|
||||
|
||||
export const Badge = ({ icon, label, domain }) => (
|
||||
<div className='account-role'>
|
||||
{icon}
|
||||
{label}
|
||||
{domain && <span className='account-role__domain'>{domain}</span>}
|
||||
</div>
|
||||
);
|
||||
|
||||
Badge.propTypes = {
|
||||
icon: PropTypes.node,
|
||||
label: PropTypes.node,
|
||||
domain: PropTypes.node,
|
||||
};
|
||||
|
||||
Badge.defaultProps = {
|
||||
icon: <PersonIcon />,
|
||||
};
|
||||
|
||||
export const GroupBadge = () => (
|
||||
<Badge icon={<GroupsIcon />} label={<FormattedMessage id='account.badges.group' defaultMessage='Group' />} />
|
||||
);
|
||||
|
||||
export const AutomatedBadge = () => (
|
||||
<Badge icon={<SmartToyIcon />} label={<FormattedMessage id='account.badges.bot' defaultMessage='Automated' />} />
|
||||
);
|
||||
@@ -15,7 +15,7 @@ export default class MediaAttachments extends ImmutablePureComponent {
|
||||
lang: PropTypes.string,
|
||||
height: PropTypes.number,
|
||||
width: PropTypes.number,
|
||||
visible: PropTypes.bool,
|
||||
revealed: PropTypes.bool,
|
||||
};
|
||||
|
||||
static defaultProps = {
|
||||
@@ -52,7 +52,7 @@ export default class MediaAttachments extends ImmutablePureComponent {
|
||||
};
|
||||
|
||||
render () {
|
||||
const { status, width, height, visible } = this.props;
|
||||
const { status, width, height, revealed } = this.props;
|
||||
const mediaAttachments = status.get('media_attachments');
|
||||
const language = status.getIn(['language', 'translation']) || status.get('language') || this.props.lang;
|
||||
|
||||
@@ -100,7 +100,7 @@ export default class MediaAttachments extends ImmutablePureComponent {
|
||||
height={height}
|
||||
inline
|
||||
sensitive={status.get('sensitive')}
|
||||
visible={visible}
|
||||
revealed={revealed}
|
||||
onOpenVideo={noop}
|
||||
/>
|
||||
)}
|
||||
@@ -115,7 +115,7 @@ export default class MediaAttachments extends ImmutablePureComponent {
|
||||
lang={language}
|
||||
sensitive={status.get('sensitive')}
|
||||
defaultWidth={width}
|
||||
visible={visible}
|
||||
revealed={revealed}
|
||||
height={height}
|
||||
onOpenMedia={noop}
|
||||
/>
|
||||
|
||||
@@ -10,7 +10,6 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
|
||||
import { Avatar } from 'flavours/glitch/components/avatar';
|
||||
import { Badge, AutomatedBadge, GroupBadge } from 'flavours/glitch/components/badge';
|
||||
import { Button } from 'flavours/glitch/components/button';
|
||||
import { Icon } from 'flavours/glitch/components/icon';
|
||||
import { IconButton } from 'flavours/glitch/components/icon_button';
|
||||
@@ -309,17 +308,20 @@ class Header extends ImmutablePureComponent {
|
||||
const acct = isLocal && domain ? `${account.get('acct')}@${domain}` : account.get('acct');
|
||||
const isIndexable = !account.get('noindex');
|
||||
|
||||
const badges = [];
|
||||
let badge;
|
||||
|
||||
if (account.get('bot')) {
|
||||
badges.push(<AutomatedBadge key='bot-badge' />);
|
||||
badge = (<div className='account-role bot'><FormattedMessage id='account.badges.bot' defaultMessage='Automated' /></div>);
|
||||
} else if (account.get('group')) {
|
||||
badges.push(<GroupBadge key='group-badge' />);
|
||||
badge = (<div className='account-role group'><FormattedMessage id='account.badges.group' defaultMessage='Group' /></div>);
|
||||
} else {
|
||||
badge = null;
|
||||
}
|
||||
|
||||
account.get('roles', []).forEach((role) => {
|
||||
badges.push(<Badge key={`role-badge-${role.get('id')}`} label={<span>{role.get('name')}</span>} domain={domain} />);
|
||||
});
|
||||
let role = null;
|
||||
if (account.getIn(['roles', 0])) {
|
||||
role = (<div key='role' className={`account-role user-role-${account.getIn(['roles', 0, 'id'])}`}>{account.getIn(['roles', 0, 'name'])}</div>);
|
||||
}
|
||||
|
||||
return (
|
||||
<div className={classNames('account__header', { inactive: !!account.get('moved') })} onMouseEnter={this.handleMouseEnter} onMouseLeave={this.handleMouseLeave}>
|
||||
@@ -337,6 +339,7 @@ class Header extends ImmutablePureComponent {
|
||||
<div className='account__header__tabs'>
|
||||
<a className='avatar' href={account.get('avatar')} rel='noopener noreferrer' target='_blank' onClick={this.handleAvatarClick}>
|
||||
<Avatar account={suspended || hidden ? undefined : account} size={90} />
|
||||
{role}
|
||||
</a>
|
||||
|
||||
<div className='account__header__tabs__buttons'>
|
||||
@@ -353,19 +356,13 @@ class Header extends ImmutablePureComponent {
|
||||
|
||||
<div className='account__header__tabs__name'>
|
||||
<h1>
|
||||
<span dangerouslySetInnerHTML={displayNameHtml} />
|
||||
<span dangerouslySetInnerHTML={displayNameHtml} /> {badge}
|
||||
<small>
|
||||
<span>@{acct}</span> {lockedIcon}
|
||||
</small>
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
{badges.length > 0 && (
|
||||
<div className='account__header__badges'>
|
||||
{badges}
|
||||
</div>
|
||||
)}
|
||||
|
||||
{signedIn && <AccountNoteContainer account={account} />}
|
||||
|
||||
{!(suspended || hidden) && (
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import { Map as ImmutableMap } from 'immutable';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import { createSelector } from 'reselect';
|
||||
|
||||
import { useEmoji } from '../../../actions/emojis';
|
||||
import { changeSetting } from '../../../actions/settings';
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import { Map as ImmutableMap } from 'immutable';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import { createSelector } from 'reselect';
|
||||
|
||||
import { changeComposeLanguage } from 'flavours/glitch/actions/compose';
|
||||
import { useLanguage } from 'flavours/glitch/actions/languages';
|
||||
|
||||
@@ -14,8 +14,8 @@ const emojiFilenames = (emojis) => {
|
||||
};
|
||||
|
||||
// Emoji requiring extra borders depending on theme
|
||||
const darkEmoji = emojiFilenames(['🎱', '🐜', '⚫', '🖤', '⬛', '◼️', '◾', '◼️', '✒️', '▪️', '💣', '🎳', '📷', '📸', '♣️', '🕶️', '✴️', '🔌', '💂♀️', '📽️', '🍳', '🦍', '💂', '🔪', '🕳️', '🕹️', '🕋', '🖊️', '🖋️', '💂♂️', '🎤', '🎓', '🎥', '🎼', '♠️', '🎩', '🦃', '📼', '📹', '🎮', '🐃', '🏴', '🐞', '🕺', '📱', '📲', '🚲', '🪮', '🐦⬛']);
|
||||
const lightEmoji = emojiFilenames(['👽', '⚾', '🐔', '☁️', '💨', '🕊️', '👀', '🍥', '👻', '🐐', '❕', '❔', '⛸️', '🌩️', '🔊', '🔇', '📃', '🌧️', '🐏', '🍚', '🍙', '🐓', '🐑', '💀', '☠️', '🌨️', '🔉', '🔈', '💬', '💭', '🏐', '🏳️', '⚪', '⬜', '◽', '◻️', '▫️', '🪽', '🪿']);
|
||||
const darkEmoji = emojiFilenames(['🎱', '🐜', '⚫', '🖤', '⬛', '◼️', '◾', '◼️', '✒️', '▪️', '💣', '🎳', '📷', '📸', '♣️', '🕶️', '✴️', '🔌', '💂♀️', '📽️', '🍳', '🦍', '💂', '🔪', '🕳️', '🕹️', '🕋', '🖊️', '🖋️', '💂♂️', '🎤', '🎓', '🎥', '🎼', '♠️', '🎩', '🦃', '📼', '📹', '🎮', '🐃', '🏴', '🐞', '🕺', '📱', '📲', '🚲']);
|
||||
const lightEmoji = emojiFilenames(['👽', '⚾', '🐔', '☁️', '💨', '🕊️', '👀', '🍥', '👻', '🐐', '❕', '❔', '⛸️', '🌩️', '🔊', '🔇', '📃', '🌧️', '🐏', '🍚', '🍙', '🐓', '🐑', '💀', '☠️', '🌨️', '🔉', '🔈', '💬', '💭', '🏐', '🏳️', '⚪', '⬜', '◽', '◻️', '▫️']);
|
||||
|
||||
const emojiFilename = (filename) => {
|
||||
const borderedEmoji = (document.body && document.body.classList.contains('skin-mastodon-light')) ? lightEmoji : darkEmoji;
|
||||
|
||||
@@ -7,10 +7,6 @@
|
||||
// It's designed to be emitted in an array format to take up less space
|
||||
// over the wire.
|
||||
|
||||
// This version comment should be bumped each time the emoji data is changed
|
||||
// to ensure that the prevaled file is regenerated by Babel
|
||||
// version: 2
|
||||
|
||||
const { emojiIndex } = require('emoji-mart');
|
||||
let data = require('emoji-mart/data/all.json');
|
||||
const { uncompress: emojiMartUncompress } = require('emoji-mart/dist/utils/data');
|
||||
@@ -19,6 +15,7 @@ const emojiMap = require('./emoji_map.json');
|
||||
const { unicodeToFilename } = require('./unicode_to_filename');
|
||||
const { unicodeToUnifiedName } = require('./unicode_to_unified_name');
|
||||
|
||||
|
||||
if(data.compressed) {
|
||||
data = emojiMartUncompress(data);
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,7 +1,6 @@
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import { Map as ImmutableMap } from 'immutable';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import { createSelector } from 'reselect';
|
||||
|
||||
import { addReaction, removeReaction, dismissAnnouncement } from 'flavours/glitch/actions/announcements';
|
||||
|
||||
|
||||
@@ -4,11 +4,11 @@ import { defineMessages, injectIntl } from 'react-intl';
|
||||
|
||||
import { Helmet } from 'react-helmet';
|
||||
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import { List as ImmutableList } from 'immutable';
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
import { connect } from 'react-redux';
|
||||
import { createSelector } from 'reselect';
|
||||
|
||||
import { fetchFollowRequests } from 'flavours/glitch/actions/accounts';
|
||||
import { fetchLists } from 'flavours/glitch/actions/lists';
|
||||
|
||||
@@ -6,9 +6,9 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
||||
import classNames from 'classnames';
|
||||
import { Helmet } from 'react-helmet';
|
||||
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import { List as ImmutableList } from 'immutable';
|
||||
import { connect } from 'react-redux';
|
||||
import { createSelector } from 'reselect';
|
||||
|
||||
import { fetchAnnouncements, toggleShowAnnouncements } from 'flavours/glitch/actions/announcements';
|
||||
import { IconWithBadge } from 'flavours/glitch/components/icon_with_badge';
|
||||
|
||||
@@ -2,10 +2,10 @@ import PropTypes from 'prop-types';
|
||||
|
||||
import { injectIntl } from 'react-intl';
|
||||
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
import { connect } from 'react-redux';
|
||||
import { createSelector } from 'reselect';
|
||||
|
||||
import { setupListAdder, resetListAdder } from '../../actions/lists';
|
||||
import NewListForm from '../lists/components/new_list_form';
|
||||
|
||||
@@ -4,10 +4,10 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
||||
|
||||
import { Helmet } from 'react-helmet';
|
||||
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
import { connect } from 'react-redux';
|
||||
import { createSelector } from 'reselect';
|
||||
|
||||
import { fetchLists } from 'flavours/glitch/actions/lists';
|
||||
import ColumnBackButtonSlim from 'flavours/glitch/components/column_back_button_slim';
|
||||
|
||||
@@ -6,10 +6,10 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
||||
import classNames from 'classnames';
|
||||
import { Helmet } from 'react-helmet';
|
||||
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import { List as ImmutableList } from 'immutable';
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import { connect } from 'react-redux';
|
||||
import { createSelector } from 'reselect';
|
||||
|
||||
import { debounce } from 'lodash';
|
||||
|
||||
|
||||
@@ -3,10 +3,10 @@ import { useCallback, useEffect, useRef } from 'react';
|
||||
|
||||
import { useIntl, defineMessages, FormattedMessage } from 'react-intl';
|
||||
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import { OrderedSet, List as ImmutableList } from 'immutable';
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import { shallowEqual } from 'react-redux';
|
||||
import { createSelector } from 'reselect';
|
||||
|
||||
import Toggle from 'react-toggle';
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ class StatusCheckBox extends PureComponent {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<StatusContent status={status} media={<MediaAttachments status={status} visible={false} />} />
|
||||
<StatusContent status={status} media={<MediaAttachments status={status} revealed={false} />} />
|
||||
</div>
|
||||
);
|
||||
|
||||
|
||||
@@ -6,11 +6,11 @@ import classNames from 'classnames';
|
||||
import { Helmet } from 'react-helmet';
|
||||
import { withRouter } from 'react-router-dom';
|
||||
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import Immutable from 'immutable';
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
import { connect } from 'react-redux';
|
||||
import { createSelector } from 'reselect';
|
||||
|
||||
import { HotKeys } from 'react-hotkeys';
|
||||
|
||||
@@ -610,7 +610,7 @@ class Status extends ImmutablePureComponent {
|
||||
this.setState({ isExpanded: value });
|
||||
};
|
||||
|
||||
setContainerRef = c => {
|
||||
setRef = c => {
|
||||
this.node = c;
|
||||
};
|
||||
|
||||
@@ -618,16 +618,12 @@ class Status extends ImmutablePureComponent {
|
||||
this.column = c;
|
||||
};
|
||||
|
||||
setStatusRef = c => {
|
||||
this.statusNode = c;
|
||||
};
|
||||
|
||||
_scrollStatusIntoView () {
|
||||
const { status, multiColumn } = this.props;
|
||||
|
||||
if (status) {
|
||||
requestIdleCallback(() => {
|
||||
this.statusNode?.scrollIntoView(true);
|
||||
window.requestAnimationFrame(() => {
|
||||
this.node?.querySelector('.detailed-status__wrapper')?.scrollIntoView(true);
|
||||
|
||||
// In the single-column interface, `scrollIntoView` will put the post behind the header,
|
||||
// so compensate for that.
|
||||
@@ -665,8 +661,9 @@ class Status extends ImmutablePureComponent {
|
||||
}
|
||||
|
||||
// Scroll to focused post if it is loaded
|
||||
if (this.statusNode) {
|
||||
return [0, this.statusNode.offsetTop];
|
||||
const child = this.node?.querySelector('.detailed-status__wrapper');
|
||||
if (child) {
|
||||
return [0, child.offsetTop];
|
||||
}
|
||||
|
||||
// Do not scroll otherwise, `componentDidUpdate` will take care of that
|
||||
@@ -733,11 +730,11 @@ class Status extends ImmutablePureComponent {
|
||||
/>
|
||||
|
||||
<ScrollContainer scrollKey='thread' shouldUpdateScroll={this.shouldUpdateScroll}>
|
||||
<div className={classNames('scrollable', { fullscreen })} ref={this.setContainerRef}>
|
||||
<div className={classNames('scrollable', { fullscreen })} ref={this.setRef}>
|
||||
{ancestors}
|
||||
|
||||
<HotKeys handlers={handlers}>
|
||||
<div className={classNames('focusable', 'detailed-status__wrapper', `detailed-status__wrapper-${status.get('visibility')}`)} tabIndex={0} aria-label={textForScreenReader(intl, status, false, isExpanded)} ref={this.setStatusRef}>
|
||||
<div className={classNames('focusable', 'detailed-status__wrapper', `detailed-status__wrapper-${status.get('visibility')}`)} tabIndex={0} aria-label={textForScreenReader(intl, status, false, isExpanded)}>
|
||||
<DetailedStatus
|
||||
key={`details-${status.get('id')}`}
|
||||
status={status}
|
||||
|
||||
@@ -2,11 +2,11 @@ import PropTypes from 'prop-types';
|
||||
|
||||
import { defineMessages, FormattedMessage, injectIntl } from 'react-intl';
|
||||
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import { is, List as ImmutableList, Set as ImmutableSet } from 'immutable';
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
import { connect } from 'react-redux';
|
||||
import { createSelector } from 'reselect';
|
||||
|
||||
import { followAccount } from 'flavours/glitch/actions/accounts';
|
||||
import { Button } from 'flavours/glitch/components/button';
|
||||
|
||||
@@ -221,7 +221,7 @@ class FocalPointModal extends ImmutablePureComponent {
|
||||
const worker = createWorker({
|
||||
workerPath: tesseractWorkerPath,
|
||||
corePath: tesseractCorePath,
|
||||
langPath: `${assetHost}/ocr/lang-data`,
|
||||
langPath: `${assetHost}/ocr/lang-data/`,
|
||||
logger: ({ status, progress }) => {
|
||||
if (status === 'recognizing text') {
|
||||
this.setState({ ocrStatus: 'detecting', progress });
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
import { connect } from 'react-redux';
|
||||
import { createSelector } from 'reselect';
|
||||
|
||||
import { fetchLists } from 'flavours/glitch/actions/lists';
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import { Map as ImmutableMap, List as ImmutableList } from 'immutable';
|
||||
import { connect } from 'react-redux';
|
||||
import { createSelector } from 'reselect';
|
||||
|
||||
import { debounce } from 'lodash';
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
{
|
||||
"follow_recommendations.lead": "Plasings van mense wat jy volg, kom chronologies in jou tuisvoer verby. Moenie huiwer nie. Volg na hartelus. As daar mense is wie se plasings jy nie meer wil sien nie, ontvolg hulle net!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Pareixe que no s'ha puesto chenerar garra sucherencia pa tu. Puetz prebar a buscar a chent que talment conoixcas u explorar los hashtags que son en tendencia.",
|
||||
"follow_recommendations.done": "Feito",
|
||||
"follow_recommendations.heading": "Sigue a chent que publique cosetas que te faigan goyo! Aquí tiens qualques sucherencias.",
|
||||
"follow_recommendations.lead": "Las publicacions d'a chent a la quala sigas amaneixerán ordenadas cronolochicament en Inicio. No tiengas miedo de cometer errors, puetz deixar-les de seguir en qualsequier momento con a mesma facilidat!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
{
|
||||
"about.fork_disclaimer": "جلتش-سوك هو برنامج حر مفتوح المصدر متفرع عن ماستدون.",
|
||||
"account.add_account_note": "إضافة ملاحظة لـ @{name}",
|
||||
"account.disclaimer_full": "قد لا تعكِس المعلومات أدناه كامل الملف الشخصي للمستخدِم.",
|
||||
"account.follows": "يتابِع",
|
||||
"account.joined": "إنضم بتاريخ {date}",
|
||||
"account.suspended_disclaimer_full": "تم تعليق هذا المستخدم من قبل المشرف.",
|
||||
"account.view_full_profile": "عرض الملف الشخصي كاملاً",
|
||||
"account_note.cancel": "إلغاء",
|
||||
"account_note.edit": "تعديل",
|
||||
"account_note.glitch_placeholder": "لم يُقدّم أي تعليق",
|
||||
"account_note.save": "حفظ",
|
||||
"advanced_options.icon_title": "خيارات متقدمة",
|
||||
"advanced_options.local-only.long": "لا تنشر في خوادم أخرى",
|
||||
"advanced_options.local-only.short": "المحلي فقط",
|
||||
@@ -39,8 +44,13 @@
|
||||
"confirmations.unfilter.edit_filter": "تعديل عامل التصفية",
|
||||
"content-type.change": "نوع المحتوى",
|
||||
"direct.group_by_conversations": "تجميع حسب المحادثة",
|
||||
"empty_column.follow_recommendations": "يبدو أنه لا يمكن إنشاء أي اقتراحات لك. يمكنك البحث عن أشخاص قد تعرفهم أو استكشاف الوسوم الرائجة.",
|
||||
"endorsed_accounts_editor.endorsed_accounts": "الحسابات المميزة",
|
||||
"favourite_modal.combo": "يُمكنك الضّغط على {combo} لتخطي هذا في المرة المُقبلة",
|
||||
"follow_recommendations.done": "تم",
|
||||
"follow_recommendations.heading": "تابع الأشخاص الذين ترغب في رؤية منشوراتهم! إليك بعض الاقتراحات.",
|
||||
"follow_recommendations.lead": "ستظهر منشورات الأشخاص الذين تُتابعتهم بترتيب تسلسلي زمني على صفحتك الرئيسية. لا تخف إذا ارتكبت أي أخطاء، تستطيع إلغاء متابعة أي شخص في أي وقت تريد!",
|
||||
"getting_started.onboarding": "خذني في جولة",
|
||||
"home.column_settings.advanced": "متقدم",
|
||||
"home.column_settings.filter_regex": "إزالة باستخدام التعبيرات النمطية",
|
||||
"home.settings": "إعدادات العمود",
|
||||
@@ -61,7 +71,23 @@
|
||||
"notification_purge.start": "أدخل وضع تنظيف الإشعارات",
|
||||
"notifications.marked_clear": "مسح الإشعارات المحددة",
|
||||
"notifications.marked_clear_confirmation": "هل أنت متأكد من أنك تريد مسح جميع الإشعارات المحددة نهائياً؟",
|
||||
"onboarding.done": "تم",
|
||||
"onboarding.next": "التالي",
|
||||
"onboarding.page_five.public_timelines": "الجدول الزمني المحلي يظهر المشاركات العامة من الجميع على {domain}. ويظهر الخيط الفيدرالي المنشورات العامة لكل من يتابعهم الأشخاص في {domain}. هذه هي الخيوط الزمنية العامة، وهي طريقة رائعة لاكتشاف أناس جدد.",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_one.handle": "أنت على {domain}، لذا فإن حسابك الكامل هو {handle}",
|
||||
"onboarding.page_one.welcome": "أهلاً بكم في {domain}!",
|
||||
"onboarding.page_six.admin": "مشرف خادمك هو {admin}.",
|
||||
"onboarding.page_six.almost_done": "على وشك الانتهاء...",
|
||||
"onboarding.page_six.appetoot": "نشراً طيباً!",
|
||||
"onboarding.page_six.apps_available": "هناك {apps} متوفرة على iOS و أندرويد و منصات أخرى.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"onboarding.page_six.guidelines": "إرشادات المجتمع",
|
||||
"onboarding.page_six.read_guidelines": "الرجاء قراءة {guidelines} من {domain}!",
|
||||
"onboarding.skip": "تخطي",
|
||||
"settings.close": "إغلاق",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
"settings.preferences": "Preferences",
|
||||
"web_app_crash.settings": "الإعدادات",
|
||||
"web_app_crash.title": "نحن آسفون، لقد حدث خطأ ما في تطبيق ماستدون."
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Paez que nun se puen xenerar suxerencies pa ti. Pues tentar d'usar la busca p'atopar perfiles que pues conocer o esplorar les etiquetes en tendencia.",
|
||||
"follow_recommendations.done": "Fecho",
|
||||
"follow_recommendations.heading": "¡Sigui a perfiles que te prestaría ver nel feed personal! Equí tienes dalgunes suxerencies.",
|
||||
"follow_recommendations.lead": "Los artículos de los perfiles que sigas van apaecer n'orde cronolóxicu nel to feed d'aniciu. ¡Nun tengas mieu d'enquivocate, pues dexar de siguilos con facilidá en cualesquier momentu!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Здаецца, прапаноў для вас няма. Вы можаце паспрабаваць выкарыстаць пошук, каб знайсці людзей, якіх вы можаце ведаць, ці даследаваць папулярныя хэштэгі.",
|
||||
"follow_recommendations.done": "Гатова",
|
||||
"follow_recommendations.heading": "Падпісвайцеся на людзей, допісы якіх вам будуць цікавы! Вось некаторыя рэкамендацыі.",
|
||||
"follow_recommendations.lead": "Допісы людзей, на якіх вы падпісаны, будуць паказаны ў храналагічным парадку на вашай хатняй старонцы. Не бойцеся памыляцца, вы лёгка зможаце адпісацца ў любы момант!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Изглежда, че няма предложения, които може да се породят за вас. Може да опитате да потърсите хора, които познавате или да разгледате налагащи се хаштагове.",
|
||||
"follow_recommendations.done": "Готово",
|
||||
"follow_recommendations.heading": "Следвайте хора, от които харесвате да виждате публикации! Ето някои предложения.",
|
||||
"follow_recommendations.lead": "Публикациите от последваните, ще се показват в хронологичен ред в началния ви инфоканал. Не се страхувайте, че ще сгрешите, по всяко време много лесно може да спрете да ги следвате!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
{
|
||||
"follow_recommendations.done": "সম্পন্ন",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "War a seblant ne c'hall ket bezañ savet erbedadenn ebet evidoc'h. Gallout a rit implijout un enklask evit kavout tud a anavezfec'h pe furchal ar gerioù-klik diouzh ar c'hiz.",
|
||||
"follow_recommendations.done": "Graet",
|
||||
"follow_recommendations.heading": "Heuilhit tud a blijfe deoc'h lenn o zoudoù ! Setu un nebeud erbedadennoù.",
|
||||
"follow_recommendations.lead": "Toudoù gant tud a vez heuliet ganeoc'h a zeuio war wel en urzh kronologel war ho red degemer. Arabat kaout aon ober fazioù, diheuliañ tud a c'hellit ober aes ha forzh pegoulz !",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
{
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Sembla que no s'han pogut generar suggeriments per a tu. Pots provar d'usar la cerca per a trobar persones que vulguis conèixer o explorar les etiquetes en tendència.",
|
||||
"follow_recommendations.done": "Fet",
|
||||
"follow_recommendations.heading": "Segueix a la gent de la que t'agradaria veure els seus tuts! Aquí hi ha algunes recomanacions.",
|
||||
"follow_recommendations.lead": "Els tuts dels usuaris que segueixes es mostraran en ordre cronològic en la teva línia de temps Inici. No tinguis por en cometre errors, pots fàcilment deixar de seguir-los en qualsevol moment!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "پێدەچێت هیچ پێشنیارێک بۆ تۆ دروست نەکرێت. دەتوانیت هەوڵبدەیت گەڕان بەکاربهێنیت بۆ گەڕان بەدوای ئەو کەسانەی کە ڕەنگە بیانناسیت یان بەدوای هاشتاگە ڕەوتەکاندا بگەڕێیت.",
|
||||
"follow_recommendations.done": "تەواو",
|
||||
"follow_recommendations.heading": "شوێن ئەو کەسانە بکەون کە دەتەوێت پۆستەکان ببینیت لە! لێرەدا چەند پێشنیارێک هەیە.",
|
||||
"follow_recommendations.lead": "بابەتەکانی ئەو کەسانەی کە بەدوایدا دەگەڕێیت بە فەرمانی کرۆنۆلۆجی لە خواردنەکانی ماڵەکەت دەردەکەون. مەترسە لە هەڵەکردن، دەتوانیت بە ئاسانی خەڵک هەڵبکەیت هەر کاتێک!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Si pare ch'ùn s'hè micca pussutu generà e ricumandazione per voi. Pudete sempre pruvà d'utilizà a ricerca per truvà ghjente chì cunnuscete, o splurà l'hashtag in tindenza.",
|
||||
"follow_recommendations.done": "Fatta",
|
||||
"follow_recommendations.heading": "Siguitate a ghjente da quelli vulete vede i missaghji! Eccu qualchì ricumandazione.",
|
||||
"follow_recommendations.lead": "I missaghji da a ghjente che voi siguitate figureranu in ordine crunulogicu nant'a vostra pagina d'accolta. Ùn timite micca di fà un sbagliu, pudete sempre disabbunavvi d'un contu à ogni mumentu!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -19,8 +19,13 @@
|
||||
"confirmation_modal.do_not_ask_again": "Příště se už neptat",
|
||||
"content-type.change": "Formát příspěvku",
|
||||
"direct.group_by_conversations": "Seskupit do konverzací",
|
||||
"empty_column.follow_recommendations": "Zdá se, že pro vás nelze vygenerovat žádné návrhy. Můžete zkusit přes vyhledávání nalézt lidi, které znáte, nebo prozkoumat populární hashtagy.",
|
||||
"endorsed_accounts_editor.endorsed_accounts": "Vybrané účty",
|
||||
"favourite_modal.combo": "Příště můžete pro přeskočení stisknout {combo}",
|
||||
"follow_recommendations.done": "Hotovo",
|
||||
"follow_recommendations.heading": "Sledujte lidi, jejichž příspěvky chcete vidět! Tady jsou nějaké návrhy.",
|
||||
"follow_recommendations.lead": "Příspěvky od lidí, které sledujete, se budou objevovat v chronologickém pořadí ve vašem domovském kanálu. Nebojte se, že uděláte chybu, stejně snadno můžete lidi kdykoliv přestat sledovat!",
|
||||
"getting_started.onboarding": "Ukaž mi to tu",
|
||||
"home.column_settings.advanced": "Pokročilé",
|
||||
"home.column_settings.filter_regex": "Filtrovat podle regulárních výrazů",
|
||||
"home.column_settings.show_direct": "Zobrazit přímé zprávy",
|
||||
@@ -40,6 +45,23 @@
|
||||
"notification_purge.start": "Čistící režim",
|
||||
"notifications.marked_clear": "Smazat vybraná oznámení",
|
||||
"notifications.marked_clear_confirmation": "Určitě chcete trvale smazat všechna vybraná oznámení?",
|
||||
"onboarding.done": "Hotovo",
|
||||
"onboarding.next": "Další",
|
||||
"onboarding.page_five.public_timelines": "Místní časová osa zobrazuje veřejné příspěvky všech uživatelů instance {domain}. Federovaná časová osa zobrazí příspěvky od všech, koho uživatelé instance {domain} sledují. Tyto veřejné časové osy jsou skvělý způsob, jak objevit nové lidi.",
|
||||
"onboarding.page_four.home": "Domovská časová osa zobrazuje příspěvky od lidí, které sledujete.",
|
||||
"onboarding.page_four.notifications": "Notifikace se zobrazí, když s vámi někdo interaguje.",
|
||||
"onboarding.page_one.federation": "{domain} je 'instance' Mastodonu. Mastodon je síť nezávislých serverů, které jsou spolu propojené do jedné velké sociální sítě. Těmto serverům říkáme instance.",
|
||||
"onboarding.page_one.handle": "Jste na instanci {domain}, takže celá adresa vašeho profilu je {handle}",
|
||||
"onboarding.page_one.welcome": "Vítá vás {domain}!",
|
||||
"onboarding.page_six.almost_done": "Skoro hotovo...",
|
||||
"onboarding.page_six.appetoot": "Veselé mastodonění!",
|
||||
"onboarding.page_six.apps_available": "Jsou dostupné {apps} pro iOS, Android i jiné platformy.",
|
||||
"onboarding.page_six.github": "Na serveru {domain} běží Glitchsoc. Glitchsoc je přátelský {fork} programu {Mastodon}, a je kompatibilní s jakoukoliv jinou mastodoní instancí nebo aplikací. Glitchsoc je zcela svobodný a má otevřený zdrojový kód. Na stránce {github} můžete hlásit chyby, žádat o nové funkce, nebo ke kódu vlastnoručně přispět.",
|
||||
"onboarding.page_six.various_app": "mobilní aplikace",
|
||||
"onboarding.page_three.profile": "Upravte si svůj profil a nastavte si profilový obrázek, jméno, a krátký text o sobě. Naleznete tam i další možnosti nastavení.",
|
||||
"onboarding.page_three.search": "Pomocí vyhledávací lišty můžete hledat lidi nebo hashtagy. Pokud hledáte někoho z jiné instance, musíte použít celou adresu jeho profilu.",
|
||||
"onboarding.page_two.compose": "Příspěvky se píší v levém sloupci. Pomocí ikon pod příspěvkem k němu můžete připojit obrázky, změnit úroveň soukromí nebo přidat varování o obsahu.",
|
||||
"onboarding.skip": "Přeskočit",
|
||||
"settings.always_show_spoilers_field": "Vždy zobrazit pole pro varování o obsahu",
|
||||
"settings.auto_collapse": "Automaticky sbalit",
|
||||
"settings.auto_collapse_all": "Všechno",
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
{
|
||||
"about.fork_disclaimer": "Mae Glitch-Soc yn feddalwedd di-dal a ffynhonnell agored wedi'i fforchio o Mastodon.",
|
||||
"account.add_account_note": "Ychwanegu nodyn ar @{name}",
|
||||
"account.disclaimer_full": "Mae'n bosib nad yw'r gwybodaeth isod yn rhoi darlun cyfan o broffil y defnyddiwr.",
|
||||
"account.follows": "Yn dilyn",
|
||||
"account.joined": "Ymunodd ar {date}",
|
||||
"account.mute_notifications": "Diffodd hysbysiadau o @{name}",
|
||||
"account.suspended_disclaimer_full": "Mae'r defnyddiwr yma wedi'i atal gan gymedrolwr.",
|
||||
"account.unmute_notifications": "Dad-dawelu hysbysiadau o @{name}",
|
||||
"account.view_full_profile": "Dangos proffil cyfan",
|
||||
"account_note.cancel": "Canslo",
|
||||
"account_note.edit": "Golygu",
|
||||
"account_note.glitch_placeholder": "Dim sylw wedi'i roi",
|
||||
"account_note.save": "Cadw",
|
||||
"advanced_options.icon_title": "Dewisiadau uwch",
|
||||
"advanced_options.local-only.short": "Lleol yn unig",
|
||||
"advanced_options.local-only.tooltip": "Mae'r post yma'n lleol yn unig",
|
||||
@@ -34,6 +41,12 @@
|
||||
"confirmations.unfilter.confirm": "Dangos",
|
||||
"confirmations.unfilter.edit_filter": "Golygi hidlydd",
|
||||
"content-type.change": "Math cynnwys",
|
||||
"empty_column.follow_recommendations": "Does dim awgrymiadau yma i chi. Gallwch geisio chwilio am bobl rydych yn eu hadnabod neu edrych drwy hashnodau sy'n trendio.",
|
||||
"follow_recommendations.done": "Wedi gorffen",
|
||||
"follow_recommendations.heading": "Dilynwch y bobl yr hoffech chi weld eu postiadau! Dyma ambell i awgrymiad.",
|
||||
"follow_recommendations.lead": "Bydd postiadau gan bobl rydych chi'n eu dilyn yn ymddangos mewn trefn amser ar eich ffrwd cartref. Peidiwch â bod ofn gwneud camgymeriadau, gallwch chi ddad-ddilyn pobl yr un mor hawdd unrhyw bryd!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -4,10 +4,16 @@
|
||||
"compose.attach.upload": "Upload en fil",
|
||||
"compose_form.poll.multiple_choices": "Tillad flere valg",
|
||||
"confirmations.missing_media_description.message": "Mindst én vedhæftet medie mangler en beskrivelse. Overvej at tilføje en beskrivelse af alle vedhæftede medier af hensyn til personer med nedsat syn, før du publicerer dit indlæg.",
|
||||
"empty_column.follow_recommendations": "Det ser ud til, at der ikke kunne genereres forslag til dig. Du kan prøve med Søg for at lede efter personer, du måske kender, eller udforske hashtags.",
|
||||
"follow_recommendations.done": "Udført",
|
||||
"follow_recommendations.heading": "Følg personer du gerne vil se indlæg fra! Her er nogle forslag.",
|
||||
"follow_recommendations.lead": "Indlæg, fra personer du følger, vil fremgå kronologisk ordnet i dit hjemmefeed. Vær ikke bange for at begå fejl, da du altid og meget nemt kan ændre dit valg!",
|
||||
"home.column_settings.advanced": "Avanceret",
|
||||
"home.column_settings.show_direct": "Vis private omtaler",
|
||||
"navigation_bar.app_settings": "Appindstillinger",
|
||||
"navigation_bar.misc": "Diverse",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.always_show_spoilers_field": "Vis altid feltet til indholdsadvarsel",
|
||||
"settings.auto_collapse_media": "Indlæg med medier",
|
||||
"settings.close": "Luk",
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
{
|
||||
"about.fork_disclaimer": "Glitch-soc ist freie, quelloffene Software geforkt von Mastodon.",
|
||||
"account.add_account_note": "Notiz für @{name} hinzufügen",
|
||||
"account.disclaimer_full": "Die folgenden Informationen könnten das Profil des Nutzers unvollständig wiedergeben.",
|
||||
"account.follows": "Folgt",
|
||||
"account.joined": "Beigetreten am {date}",
|
||||
"account.mute_notifications": "Benachrichtigungen von @{name} stummschalten",
|
||||
"account.suspended_disclaimer_full": "Dieser Nutzer wurde durch einen Moderator gesperrt.",
|
||||
"account.unmute_notifications": "Benachrichtigungen von @{name} nicht mehr stummschalten",
|
||||
"account.view_full_profile": "Vollständiges Profil anzeigen",
|
||||
"account_note.cancel": "Abbrechen",
|
||||
"account_note.edit": "Bearbeiten",
|
||||
"account_note.glitch_placeholder": "Kein Kommentar angegeben",
|
||||
"account_note.save": "Speichern",
|
||||
"advanced_options.icon_title": "Erweiterte Optionen",
|
||||
"advanced_options.local-only.long": "Nicht auf anderen Instanzen posten",
|
||||
"advanced_options.local-only.short": "Nur lokal",
|
||||
@@ -42,9 +49,14 @@
|
||||
"confirmations.unfilter.filters": "Passende{count, plural, one {r} other {}} Filter",
|
||||
"content-type.change": "Inhaltstyp",
|
||||
"direct.group_by_conversations": "Nach Unterhaltung gruppieren",
|
||||
"empty_column.follow_recommendations": "Es sieht so aus, als könnten keine Vorschläge für dich generiert werden. Du kannst versuchen, nach Leuten, die du vielleicht kennst, oder du kannst angesagte Hashtags erkunden.",
|
||||
"endorsed_accounts_editor.endorsed_accounts": "Empfohlene Konten",
|
||||
"favourite_modal.combo": "Mit {combo} wird dieses Fenster beim nächsten Mal nicht mehr angezeigt",
|
||||
"firehose.column_settings.allow_local_only": "Zeige \"nur Lokal\"-Beiträge in \"Alle\"",
|
||||
"follow_recommendations.done": "Fertig",
|
||||
"follow_recommendations.heading": "Folge Leuten, deren Beiträge du sehen möchtest! Hier sind einige Vorschläge.",
|
||||
"follow_recommendations.lead": "Beiträge von Leuten, denen du folgst, werden in chronologischer Reihenfolge auf deiner Startseite angezeigt. Sei unbesorgt, mal Fehler zu begehen. Du kannst Leuten jederzeit ganz einfach wieder entfolgen!",
|
||||
"getting_started.onboarding": "Führe mich herum",
|
||||
"home.column_settings.advanced": "Erweitert",
|
||||
"home.column_settings.filter_regex": "Mit regulären Ausdrücken herausfiltern",
|
||||
"home.column_settings.show_direct": "Direktnachrichten anzeigen",
|
||||
@@ -66,6 +78,26 @@
|
||||
"notification_purge.start": "Benachrichtigungen-Aufräumen-Modus starten",
|
||||
"notifications.marked_clear": "Ausgewählte Benachrichtigungen entfernen",
|
||||
"notifications.marked_clear_confirmation": "Möchtest du wirklich alle auswählten Benachrichtigungen für immer entfernen?",
|
||||
"onboarding.done": "Fertig",
|
||||
"onboarding.next": "Weiter",
|
||||
"onboarding.page_five.public_timelines": "Die lokale Timeline zeigt öffentliche Posts von allen auf {domain}. Die föderierte Timeline zeigt öffentliche Posts von allen, denen Leute auf {domain} folgen. Das sind die öffentlichen Timelines, eine tolle Möglichkeit, neue Leute zu entdecken.",
|
||||
"onboarding.page_four.home": "Die Startseite zeigt Posts von Leuten an, denen du folgst.",
|
||||
"onboarding.page_four.notifications": "Die Benachrichtigungs-Spalte zeigt an, wenn jemand mit dir interagiert.",
|
||||
"onboarding.page_one.federation": "{domain} ist eine \"Instanz\" von Mastodon. Mastodon ist ein Netzwerk aus unabhängigen Servern, die zusammen ein größeres soziales Netzwerk bilden. Diese Server nennen wir Instanzen.",
|
||||
"onboarding.page_one.handle": "Du bist auf {domain}, also ist dein vollständiger Nutzername {handle}",
|
||||
"onboarding.page_one.welcome": "Willkommen auf {domain}!",
|
||||
"onboarding.page_six.admin": "Dein Instanz-Admin ist {admin}.",
|
||||
"onboarding.page_six.almost_done": "Fast geschafft...",
|
||||
"onboarding.page_six.appetoot": "Bon Appetoot!",
|
||||
"onboarding.page_six.apps_available": "Es gibt {apps} für iOS, Android und andere Plattformen.",
|
||||
"onboarding.page_six.github": "{domain} läuft auf glitch-soc. glitch-soc ist ein freundlicher {fork} von {Mastodon}, und ist mit jeder Mastodon-App oder -Instanz kompatibel. glitch-soc ist komplett frei und quelloffen. Auf {github} kannst du Fehler melden, Features anfragen oder Code beitragen.",
|
||||
"onboarding.page_six.guidelines": "Community-Richtlinien",
|
||||
"onboarding.page_six.read_guidelines": "Bitte lies die {guidelines} von {domain}!",
|
||||
"onboarding.page_six.various_app": "mobile Apps",
|
||||
"onboarding.page_three.profile": "Bearbeite dein Profil, um deinen Avatar, \"Über mich\" und den Anzeigenamen zu ändern. Dort findest du auch andere Einstellungen.",
|
||||
"onboarding.page_three.search": "Benutze die Suchleiste, um Leute zu finden und Hashtags anzusehen, wie etwa {illustration} und {introductions}. Um nach einer Person zu suchen, die nicht auf dieser Instanz ist, benutze deren vollständigen Nutzername.",
|
||||
"onboarding.page_two.compose": "Schreibe Posts in der Verfassen-Spalte. Mit den Symbolen unten kannst du Bilder hochladen, Privatsphäre-Einstellungen ändern, und Inhaltswarnungen hinzufügen.",
|
||||
"onboarding.skip": "Überspringen",
|
||||
"settings.always_show_spoilers_field": "Das Inhaltswarnungs-Feld immer aktivieren",
|
||||
"settings.auto_collapse": "Automatisches Einklappen",
|
||||
"settings.auto_collapse_all": "Alles",
|
||||
@@ -154,5 +186,15 @@
|
||||
"status.is_poll": "Dieser Toot ist eine Umfrage",
|
||||
"status.local_only": "Nur auf deiner Instanz sichtbar",
|
||||
"status.sensitive_toggle": "Zum Anzeigen klicken",
|
||||
"status.uncollapse": "Ausklappen"
|
||||
"status.uncollapse": "Ausklappen",
|
||||
"web_app_crash.change_your_settings": "Deine {settings} ändern",
|
||||
"web_app_crash.content": "Du kannst folgende Dinge ausprobieren:",
|
||||
"web_app_crash.debug_info": "Debug-Informationen",
|
||||
"web_app_crash.disable_addons": "Browser-Add-ons oder eingebaute Übersetzungswerkzeuge deaktivieren",
|
||||
"web_app_crash.issue_tracker": "Issue-Tracker",
|
||||
"web_app_crash.reload": "neu laden",
|
||||
"web_app_crash.reload_page": "Die Seite {reload}",
|
||||
"web_app_crash.report_issue": "Einen Fehler im {issuetracker} melden",
|
||||
"web_app_crash.settings": "Einstellungen",
|
||||
"web_app_crash.title": "Es tut uns leid, aber mit der Mastodon-App ist etwas schiefgelaufen."
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Φαίνεται ότι δεν υπάρχει καμία πρόταση για σένα. Μπορείς να κάνεις μια αναζήτηση για άτομα που μπορεί να γνωρίζεις ή να εξερευνήσεις ετικέτες σε τάση.",
|
||||
"follow_recommendations.done": "Έγινε",
|
||||
"follow_recommendations.heading": "Ακολουθήστε άτομα από τα οποία θα θέλατε να βλέπετε δημοσιεύσεις! Ορίστε μερικές προτάσεις.",
|
||||
"follow_recommendations.lead": "Οι αναρτήσεις των ατόμων που ακολουθείτε θα εμφανίζονται με χρονολογική σειρά στη ροή σας. Μη φοβάστε να κάνετε λάθη, καθώς μπορείτε πολύ εύκολα να σταματήσετε να ακολουθείτε άλλα άτομα οποιαδήποτε στιγμή!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
{
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
{
|
||||
"about.fork_disclaimer": "Glitch-soc estas libera malfermitkoda programo forkigita el Mastodon.",
|
||||
"account.add_account_note": "Aldoni noton por @{name}",
|
||||
"account.disclaimer_full": "Subaj informoj povas nekomplete prezenti la profilon de la uzanto.",
|
||||
"account.follows": "Sekvatoj",
|
||||
"account.joined": "Kuniĝis {date}",
|
||||
"account.suspended_disclaimer_full": "Ĉi tiu uzanto estis suspendita de moderiganto.",
|
||||
"account.view_full_profile": "Vidi plenan profilon",
|
||||
"account_note.cancel": "Nuligi",
|
||||
"account_note.edit": "Redakti",
|
||||
"account_note.glitch_placeholder": "Neniu komento provizita",
|
||||
"account_note.save": "Konservi",
|
||||
"advanced_options.icon_title": "Pliaj opcioj",
|
||||
"advanced_options.local-only.long": "Ne afiŝi al aliaj instancoj",
|
||||
"advanced_options.local-only.short": "Nur loka",
|
||||
@@ -41,6 +46,10 @@
|
||||
"confirmations.unfilter.edit_filter": "Redakti filtrilon",
|
||||
"confirmations.unfilter.filters": "{count, plural, one {# filtrilo} other {# filtriloj}} kongruas",
|
||||
"content-type.change": "Tipo de enhavo",
|
||||
"empty_column.follow_recommendations": "Ŝajnas, ke neniuj sugestoj povis esti generitaj por vi. Vi povas provi uzi serĉon por serĉi homojn, kiujn vi eble konas, aŭ esplori tendencajn kradvortojn.",
|
||||
"follow_recommendations.done": "Farita",
|
||||
"follow_recommendations.heading": "Sekvi la personojn kies mesaĝojn vi volas vidi! Jen iom da sugestoj.",
|
||||
"follow_recommendations.lead": "La mesaĝoj de personoj, kiujn vi sekvas, aperos laŭ kronologia ordo en via hejma templinio. Ne timu erari, vi povas ĉesi sekvi facile iam ajn!",
|
||||
"home.column_settings.filter_regex": "Filtri per regulaj esprimoj",
|
||||
"navigation_bar.keyboard_shortcuts": "Fulmoklavoj",
|
||||
"notification_purge.btn_all": "Selekti ĉiujn",
|
||||
@@ -48,6 +57,19 @@
|
||||
"notification_purge.btn_invert": "Inverti selekton",
|
||||
"notification_purge.btn_none": "Elekti neniun",
|
||||
"notifications.marked_clear": "Forigi selektajn sciigojn",
|
||||
"onboarding.next": "Sekva",
|
||||
"onboarding.page_one.federation": "{domain} estas \"instanco\" de Mastodon. Mastodon estas reto de sendependaj serviloj, ke kuniĝas por fari unu pli grandan socian reton. Ni nomas tiujn servilojn \"instancoj\".",
|
||||
"onboarding.page_one.handle": "Vi estas en {domain}, tial via plena uzantnomo estas {handle}",
|
||||
"onboarding.page_one.welcome": "Bonvenon al {domain}!",
|
||||
"onboarding.page_six.admin": "La administranto de via instanco estas {admin}.",
|
||||
"onboarding.page_six.almost_done": "Preskaŭ finita…",
|
||||
"onboarding.page_six.apps_available": "Estas {apps} disponeblaj por iOS, Android kaj aliaj sistemoj.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"onboarding.page_six.guidelines": "komunumajn regulojn",
|
||||
"onboarding.page_six.read_guidelines": "Bonvolu legi la {guidelines} de {domain}!",
|
||||
"onboarding.page_six.various_app": "poŝtelefonaj aplikaĵoj",
|
||||
"onboarding.page_three.profile": "Redakti vian profilon por ŝanĝi vian profilbildon, biografion kaj montro-nomon. Vi povas ankaŭ trovi aliajn agordojn tie.",
|
||||
"onboarding.skip": "Preterlasi",
|
||||
"settings.auto_collapse_all": "Ĉiuj",
|
||||
"settings.auto_collapse_lengthy": "Longaj afiŝoj",
|
||||
"settings.auto_collapse_media": "Afiŝoj kun aŭdovidaĵoj",
|
||||
@@ -70,5 +92,9 @@
|
||||
"settings.status_icons_media": "Indikilo de aŭdovidaĵojn kaj balotenketo",
|
||||
"settings.status_icons_reply": "Indikilo de respondoj",
|
||||
"settings.status_icons_visibility": "Indikilo de privateco de afiŝo",
|
||||
"status.local_only": "Videbla nur el via instanco"
|
||||
"status.local_only": "Videbla nur el via instanco",
|
||||
"web_app_crash.change_your_settings": "Ŝanĝi viajn {settings}",
|
||||
"web_app_crash.reload": "Reŝarĝi",
|
||||
"web_app_crash.reload_page": "{reload} la nunan paĝon",
|
||||
"web_app_crash.settings": "agordojn"
|
||||
}
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
{
|
||||
"about.fork_disclaimer": "Glitch-soc es software gratuito, de código abierto, bifurcado de Mastodon.",
|
||||
"account.add_account_note": "Añadir nota para @{name}",
|
||||
"account.disclaimer_full": "La información aquí presentada puede reflejar de manera incompleta el perfil del usuario.",
|
||||
"account.follows": "Sigue",
|
||||
"account.joined": "Unido el {date}",
|
||||
"account.mute_notifications": "Silenciar notificaciones de @{name}",
|
||||
"account.suspended_disclaimer_full": "Este usuario ha sido suspendido por un moderador.",
|
||||
"account.unmute_notifications": "Dejar de silenciar notificaciones de @{name}",
|
||||
"account.view_full_profile": "Ver perfil completo",
|
||||
"account_note.cancel": "Cancelar",
|
||||
"account_note.edit": "Editar",
|
||||
"account_note.glitch_placeholder": "No se proporcionó comentario alguno",
|
||||
"account_note.save": "Guardar",
|
||||
"advanced_options.icon_title": "Opciones avanzadas",
|
||||
"advanced_options.local-only.long": "No publicar a otras instancias",
|
||||
"advanced_options.local-only.short": "Local",
|
||||
@@ -42,9 +49,14 @@
|
||||
"confirmations.unfilter.filters": "Coincidencia con {count, plural, one {filtro} other {filtros}}",
|
||||
"content-type.change": "Tipo de contenido",
|
||||
"direct.group_by_conversations": "Agrupar por conversación",
|
||||
"empty_column.follow_recommendations": "Parece que no se pudieron generar sugerencias para vos. Podés intentar buscar gente que conozcas o explorar las tendencias de las etiquetas.",
|
||||
"endorsed_accounts_editor.endorsed_accounts": "Cuentas destacadas",
|
||||
"favourite_modal.combo": "Puedes presionar {combo} para omitir esto la próxima vez",
|
||||
"firehose.column_settings.allow_local_only": "Mostrar sólo mensajes locales en \"Todos\"",
|
||||
"follow_recommendations.done": "Listo",
|
||||
"follow_recommendations.heading": "¡Seguí cuentas cuyos mensajes te gustaría ver! Acá tenés algunas sugerencias.",
|
||||
"follow_recommendations.lead": "Los mensajes de las cuentas que seguís aparecerán en orden cronológico en la columna \"Inicio\". No tengás miedo de meter la pata, ¡podés dejar de seguir cuentas fácilmente en cualquier momento!",
|
||||
"getting_started.onboarding": "Paseo inicial",
|
||||
"home.column_settings.advanced": "Avanzado",
|
||||
"home.column_settings.filter_regex": "Filtrar por expresiones regulares",
|
||||
"home.column_settings.show_direct": "Mostrar mensajes directos",
|
||||
@@ -66,6 +78,26 @@
|
||||
"notification_purge.start": "Entrar en modo de limpieza de notificaciones",
|
||||
"notifications.marked_clear": "Limpiar notificaciones seleccionadas",
|
||||
"notifications.marked_clear_confirmation": "¿Deseas borrar permanentemente todas las notificaciones seleccionadas?",
|
||||
"onboarding.done": "Hecho",
|
||||
"onboarding.next": "Siguiente",
|
||||
"onboarding.page_five.public_timelines": "La línea de tiempo local muestra mensajes públicos de todos en {domain}. La línea de tiempo federada muestra mensajes públicos de todos aquellos que en {domain} siguen a otros servidores. Estas son las líneas cronológicas públicas, una gran manera de descubrir gente nueva.",
|
||||
"onboarding.page_four.home": "La línea de tiempo principal muestra los mensajes de la gente que sigues.",
|
||||
"onboarding.page_four.notifications": "La columna de notificaciones muestra cuando alguien interactúa contigo.",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_one.handle": "Estás en {domain}, así que tu alias completo es {handle}",
|
||||
"onboarding.page_one.welcome": "¡Bienvenidx a {domain}!",
|
||||
"onboarding.page_six.admin": "El administrador de tu instancia es {admin}.",
|
||||
"onboarding.page_six.almost_done": "Casi listo...",
|
||||
"onboarding.page_six.appetoot": "¡A tootear!",
|
||||
"onboarding.page_six.apps_available": "Hay {apps} disponibles para iOS, Android y otras plataformas.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"onboarding.page_six.guidelines": "normas de la comunidad",
|
||||
"onboarding.page_six.read_guidelines": "¡Por favor lee las {guidelines} de {domain}!",
|
||||
"onboarding.page_six.various_app": "aplicaciones para móviles",
|
||||
"onboarding.page_three.profile": "Edita tu perfil para cambiar tu avatar, biografía y nombre para mostrar. Ahí, también encontrarás otras preferencias.",
|
||||
"onboarding.page_three.search": "Usa la barra de búsqueda para encontrar gente y mirar las etiquetas (hashtags), como {illustration} y {introductions}. Para buscar a una persona que no esté en esta instancia, utiliza su alias completo.",
|
||||
"onboarding.page_two.compose": "Escribe mensajes desde la columna de composición. Puedes subir imágenes, cambiar la configuración de privacidad y añadir advertencias de contenido con los iconos de abajo.",
|
||||
"onboarding.skip": "Saltar",
|
||||
"settings.always_show_spoilers_field": "Siempre mostrar el campo de advertencia de contenido",
|
||||
"settings.auto_collapse": "Colapsar automáticamente",
|
||||
"settings.auto_collapse_all": "Todo",
|
||||
@@ -155,5 +187,14 @@
|
||||
"status.local_only": "Sólo visible para tu instancia",
|
||||
"status.sensitive_toggle": "Haga clic para ver",
|
||||
"status.uncollapse": "Descolapsar",
|
||||
"suggestions.dismiss": "Descartar sugerencia"
|
||||
"web_app_crash.change_your_settings": "Cambiar las {settings}",
|
||||
"web_app_crash.content": "Puedes probar lo siguiente:",
|
||||
"web_app_crash.debug_info": "Información de depuración",
|
||||
"web_app_crash.disable_addons": "Desactivar complementos del navegador o herramientas de traducción integradas",
|
||||
"web_app_crash.issue_tracker": "rastreador de problemas",
|
||||
"web_app_crash.reload": "Recargar",
|
||||
"web_app_crash.reload_page": "{reload} la página actual",
|
||||
"web_app_crash.report_issue": "Reportar un bug en el {issuetracker}",
|
||||
"web_app_crash.settings": "configuraciones",
|
||||
"web_app_crash.title": "Lo sentimos, pero algo salió mal con la app de Mastodon."
|
||||
}
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
{
|
||||
"about.fork_disclaimer": "Glitch-soc es software gratuito, de código abierto, bifurcado de Mastodon.",
|
||||
"account.add_account_note": "Añadir nota para @{name}",
|
||||
"account.disclaimer_full": "La información aquí presentada puede reflejar de manera incompleta el perfil del usuario.",
|
||||
"account.follows": "Seguir",
|
||||
"account.joined": "Unido {date}",
|
||||
"account.mute_notifications": "Silenciar notificaciones de @{name}",
|
||||
"account.suspended_disclaimer_full": "Este usuario ha sido suspendido por un moderador.",
|
||||
"account.unmute_notifications": "Dejar de silenciar notificaciones de @{name}",
|
||||
"account.view_full_profile": "Ver perfil completo",
|
||||
"account_note.cancel": "Cancelar",
|
||||
"account_note.edit": "Editar",
|
||||
"account_note.glitch_placeholder": "No se proporcionó comentario alguno",
|
||||
"account_note.save": "Guardar",
|
||||
"advanced_options.icon_title": "Opciones avanzadas",
|
||||
"advanced_options.local-only.long": "No publicar a otras instancias",
|
||||
"advanced_options.local-only.short": "Local",
|
||||
@@ -42,9 +49,14 @@
|
||||
"confirmations.unfilter.filters": "Coincidencia con {count, plural, one {filtro} other {filtros}}",
|
||||
"content-type.change": "Tipo de contenido",
|
||||
"direct.group_by_conversations": "Agrupar por conversación",
|
||||
"empty_column.follow_recommendations": "Parece que no se ha podido generar ninguna sugerencia para ti. Puedes probar a buscar a gente que quizá conozcas o explorar los hashtags que están en tendencia.",
|
||||
"endorsed_accounts_editor.endorsed_accounts": "Cuentas destacadas",
|
||||
"favourite_modal.combo": "Puedes presionar {combo} para omitir esto la próxima vez",
|
||||
"firehose.column_settings.allow_local_only": "Mostrar mensajes solo-locales en \"Todo\"",
|
||||
"follow_recommendations.done": "Hecho",
|
||||
"follow_recommendations.heading": "¡Sigue a gente que publique cosas que te gusten! Aquí tienes algunas sugerencias.",
|
||||
"follow_recommendations.lead": "Las publicaciones de la gente a la que sigas aparecerán ordenadas cronológicamente en Inicio. No tengas miedo de cometer errores, ¡puedes dejarles de seguir en cualquier momento con la misma facilidad!",
|
||||
"getting_started.onboarding": "Paseo inicial",
|
||||
"home.column_settings.advanced": "Avanzado",
|
||||
"home.column_settings.filter_regex": "Filtrar por expresiones regulares",
|
||||
"home.column_settings.show_direct": "Mostrar mensajes directos",
|
||||
@@ -66,6 +78,26 @@
|
||||
"notification_purge.start": "Entrar en modo de limpieza de notificaciones",
|
||||
"notifications.marked_clear": "Limpiar notificaciones seleccionadas",
|
||||
"notifications.marked_clear_confirmation": "¿Deseas borrar permanentemente todas las notificaciones seleccionadas?",
|
||||
"onboarding.done": "Hecho",
|
||||
"onboarding.next": "Siguiente",
|
||||
"onboarding.page_five.public_timelines": "La línea de tiempo local muestra mensajes públicos de todos en {domain}. La línea de tiempo federada muestra mensajes públicos de todos aquellos que en {domain} siguen a otros servidores. Estas son las líneas cronológicas públicas, una gran manera de descubrir gente nueva.",
|
||||
"onboarding.page_four.home": "La línea de tiempo principal muestra los mensajes de la gente que sigues.",
|
||||
"onboarding.page_four.notifications": "La columna de notificaciones muestra cuando alguien interactúa contigo.",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_one.handle": "Estás en {domain}, así que tu alias completo es {handle}",
|
||||
"onboarding.page_one.welcome": "¡Bienvenidx a {domain}!",
|
||||
"onboarding.page_six.admin": "El administrador de tu instancia es {admin}.",
|
||||
"onboarding.page_six.almost_done": "Casi listo...",
|
||||
"onboarding.page_six.appetoot": "¡A tootear!",
|
||||
"onboarding.page_six.apps_available": "Hay {apps} disponibles para iOS, Android y otras plataformas.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"onboarding.page_six.guidelines": "normas de la comunidad",
|
||||
"onboarding.page_six.read_guidelines": "¡Por favor lee las {guidelines} de {domain}!",
|
||||
"onboarding.page_six.various_app": "aplicaciones para móviles",
|
||||
"onboarding.page_three.profile": "Edita tu perfil para cambiar tu avatar, biografía y nombre para mostrar. Ahí, también encontrarás otras preferencias.",
|
||||
"onboarding.page_three.search": "Usa la barra de búsqueda para encontrar gente y mirar las etiquetas (hashtags), como {illustration} y {introductions}. Para buscar a una persona que no esté en esta instancia, utiliza su alias completo.",
|
||||
"onboarding.page_two.compose": "Escribe mensajes desde la columna de composición. Puedes subir imágenes, cambiar la configuración de privacidad y añadir advertencias de contenido con los iconos de abajo.",
|
||||
"onboarding.skip": "Saltar",
|
||||
"settings.always_show_spoilers_field": "Siempre mostrar el campo de advertencia de contenido",
|
||||
"settings.auto_collapse": "Colapsar automáticamente",
|
||||
"settings.auto_collapse_all": "Todo",
|
||||
@@ -154,5 +186,15 @@
|
||||
"status.is_poll": "Esta publicación es una encuesta",
|
||||
"status.local_only": "Sólo visible para tu instancia",
|
||||
"status.sensitive_toggle": "Haga clic para ver",
|
||||
"status.uncollapse": "Descolapsar"
|
||||
"status.uncollapse": "Descolapsar",
|
||||
"web_app_crash.change_your_settings": "Cambiar las {settings}",
|
||||
"web_app_crash.content": "Puedes probar lo siguiente:",
|
||||
"web_app_crash.debug_info": "Información de depuración",
|
||||
"web_app_crash.disable_addons": "Desactivar complementos del navegador o herramientas de traducción integradas",
|
||||
"web_app_crash.issue_tracker": "rastreador de problemas",
|
||||
"web_app_crash.reload": "Recargar",
|
||||
"web_app_crash.reload_page": "{reload} la página actual",
|
||||
"web_app_crash.report_issue": "Reportar un bug en el {issuetracker}",
|
||||
"web_app_crash.settings": "configuraciones",
|
||||
"web_app_crash.title": "Lo sentimos, pero algo salió mal con la app de Mastodon."
|
||||
}
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
{
|
||||
"about.fork_disclaimer": "Glitch-soc es software gratuito, de código abierto, bifurcado de Mastodon.",
|
||||
"account.add_account_note": "Añadir nota para @{name}",
|
||||
"account.disclaimer_full": "La información que figura a continuación puede reflejar el perfil de la cuenta de forma incompleta.",
|
||||
"account.follows": "Sigue",
|
||||
"account.joined": "Se unió el {date}",
|
||||
"account.mute_notifications": "Silenciar notificaciones de @{name}",
|
||||
"account.suspended_disclaimer_full": "Este usuario ha sido suspendido por un moderador.",
|
||||
"account.unmute_notifications": "Dejar de silenciar notificaciones de @{name}",
|
||||
"account.view_full_profile": "Ver perfil completo",
|
||||
"account_note.cancel": "Cancelar",
|
||||
"account_note.edit": "Editar",
|
||||
"account_note.glitch_placeholder": "No se proporcionó comentario alguno",
|
||||
"account_note.save": "Guardar",
|
||||
"advanced_options.icon_title": "Opciones avanzadas",
|
||||
"advanced_options.local-only.long": "No publicar a otras instancias",
|
||||
"advanced_options.local-only.short": "Sólo local",
|
||||
@@ -42,9 +49,14 @@
|
||||
"confirmations.unfilter.filters": "Coincidiendo {count, plural, one {filtro} other {filtros}}",
|
||||
"content-type.change": "Tipo de contenido",
|
||||
"direct.group_by_conversations": "Agrupar por conversación",
|
||||
"empty_column.follow_recommendations": "Parece que no se ha podido generar ninguna sugerencia para ti. Puedes probar a buscar a gente que quizá conozcas o explorar los hashtags que están en tendencia.",
|
||||
"endorsed_accounts_editor.endorsed_accounts": "Cuentas destacadas",
|
||||
"favourite_modal.combo": "Puedes presionar {combo} para omitir esto la próxima vez",
|
||||
"firehose.column_settings.allow_local_only": "Mostrar mensajes solo-locales en \"Todo\"",
|
||||
"follow_recommendations.done": "Hecho",
|
||||
"follow_recommendations.heading": "¡Sigue a gente que publique cosas que te gusten! Aquí tienes algunas sugerencias.",
|
||||
"follow_recommendations.lead": "Las publicaciones de la gente a la que sigas aparecerán ordenadas cronológicamente en Inicio. No tengas miedo de cometer errores, ¡puedes dejarles de seguir en cualquier momento con la misma facilidad!",
|
||||
"getting_started.onboarding": "Paseo inicial",
|
||||
"home.column_settings.advanced": "Avanzado",
|
||||
"home.column_settings.filter_regex": "Filtrar por expresiones regulares",
|
||||
"home.column_settings.show_direct": "Mostrar mensajes directos",
|
||||
@@ -66,6 +78,26 @@
|
||||
"notification_purge.start": "Entrar en modo de limpieza de notificaciones",
|
||||
"notifications.marked_clear": "Limpiar las notificaciones seleccionadas",
|
||||
"notifications.marked_clear_confirmation": "¿Estás seguro de borrar permanentemente todas las notificaciones seleccionadas?",
|
||||
"onboarding.done": "Hecho",
|
||||
"onboarding.next": "Siguiente",
|
||||
"onboarding.page_five.public_timelines": "La línea de tiempo local muestra mensajes públicos de todos en {domain}. La línea de tiempo federada muestra mensajes públicos de todos aquellos que en {domain} siguen a otros servidores. Estas son las líneas cronológicas públicas, una gran manera de descubrir gente nueva.",
|
||||
"onboarding.page_four.home": "La línea de tiempo principal muestra los mensajes de la gente que sigues.",
|
||||
"onboarding.page_four.notifications": "La columna de notificaciones muestra cuando alguien interactúa contigo.",
|
||||
"onboarding.page_one.federation": "{domain} es una \"instancia\" de Mastodon. Mastodon es una red de servidores independientes uniéndose para crear una red social más grande. A estos servidores los llamamos instancias.",
|
||||
"onboarding.page_one.handle": "Estás en {domain}, así que tu alias completo es {handle}",
|
||||
"onboarding.page_one.welcome": "¡Bienvenido a {domain}!",
|
||||
"onboarding.page_six.admin": "El administrador de tu instancia es {admin}.",
|
||||
"onboarding.page_six.almost_done": "Casi listo...",
|
||||
"onboarding.page_six.appetoot": "¡A tootear!",
|
||||
"onboarding.page_six.apps_available": "Hay {apps} disponibles para iOS, Android y otras plataformas.",
|
||||
"onboarding.page_six.github": "{domain} usa Glitchsoc. Glitchsoc es una bifurcación {fork} amigable de {Mastodon}, y es compatible con cualquier instancia o aplicación de Mastodon. Glitchsoc es completamente gratuito y de código abierto. Puedes reportar errores, solicitar funciones o contribuir al código en {github}.",
|
||||
"onboarding.page_six.guidelines": "normas de la comunidad",
|
||||
"onboarding.page_six.read_guidelines": "¡Por favor lee las {guidelines} de {domain}!",
|
||||
"onboarding.page_six.various_app": "aplicaciones para móviles",
|
||||
"onboarding.page_three.profile": "Edita tu perfil para cambiar tu avatar, biografía y nombre para mostrar. Ahí, también encontrarás otras preferencias.",
|
||||
"onboarding.page_three.search": "Usa la barra de búsqueda para encontrar gente y mirar las etiquetas (hashtags), como {illustration} y {introductions}. Para buscar a una persona que no esté en esta instancia, utiliza su alias completo.",
|
||||
"onboarding.page_two.compose": "Escribe mensajes desde la columna de composición. Puedes subir imágenes, cambiar la configuración de privacidad y añadir advertencias de contenido con los iconos de abajo.",
|
||||
"onboarding.skip": "Saltar",
|
||||
"settings.always_show_spoilers_field": "Siempre mostrar el campo de advertencia de contenido",
|
||||
"settings.auto_collapse": "Colapsar automáticamente",
|
||||
"settings.auto_collapse_all": "Todo",
|
||||
@@ -154,5 +186,15 @@
|
||||
"status.is_poll": "Esta publicación es una encuesta",
|
||||
"status.local_only": "Sólo visible para tu instancia",
|
||||
"status.sensitive_toggle": "Haga clic para ver",
|
||||
"status.uncollapse": "Descolapsar"
|
||||
"status.uncollapse": "Descolapsar",
|
||||
"web_app_crash.change_your_settings": "Cambiar las {settings}",
|
||||
"web_app_crash.content": "Puedes probar lo siguiente:",
|
||||
"web_app_crash.debug_info": "Información de depuración",
|
||||
"web_app_crash.disable_addons": "Desactivar complementos del navegador o herramientas de traducción integradas",
|
||||
"web_app_crash.issue_tracker": "rastreador de problemas",
|
||||
"web_app_crash.reload": "Recargar",
|
||||
"web_app_crash.reload_page": "{reload} la página actual",
|
||||
"web_app_crash.report_issue": "Reportar un bug en el {issuetracker}",
|
||||
"web_app_crash.settings": "configuraciones",
|
||||
"web_app_crash.title": "Lo sentimos, pero algo salió mal con la app de Mastodon."
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Tundub, et sinu jaoks ei ole võimalik soovitusi luua. Proovi kasutada otsingut, et leida tuttavaid inimesi, või sirvi populaarseid silte.",
|
||||
"follow_recommendations.done": "Valmis",
|
||||
"follow_recommendations.heading": "Jälgi inimesi, kelle postitusi tahaksid näha! Mõned soovitused on siin.",
|
||||
"follow_recommendations.lead": "Postitused inimestelt, keda jälgid, ilmuvad ajalises järjestuses kodu ajajoonel. Ära karda eksida, alati saab inimeste jälgimist ka lõpetada!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Dirudienez ezin izan da zuretzako proposamenik sortu. Bilaketa erabili dezakezu ezagutzen duzun jendea aurkitzeko edo traolen joerak arakatu.",
|
||||
"follow_recommendations.done": "Egina",
|
||||
"follow_recommendations.heading": "Jarraitu jendea beren bidalketak ikusteko! Hemen dituzu iradokizun batzuk.",
|
||||
"follow_recommendations.lead": "Jarraitzen duzun jendearen bidalketak ordena kronologikoan agertuko dira zure hasierako jarioan. Ez izan akatsak egiteko beldurrik, jendea jarraitzeari uztea erraza da!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
{
|
||||
"about.fork_disclaimer": "Glitch-Goc یک نرمافزار آزاد است که از Mastodon انشعاب گرفته است.",
|
||||
"account.add_account_note": "افزودن یادداشت برای @{name}",
|
||||
"account.disclaimer_full": "اطلاعات زیر ممکن است نمایه کاربر را کامل منعکس نکند.",
|
||||
"account.joined": "در {date} پیوست",
|
||||
"account.view_full_profile": "مشاهده کامل نمایه",
|
||||
"account_note.cancel": "لغو",
|
||||
"account_note.edit": "ویرایش",
|
||||
"account_note.save": "ذخیره",
|
||||
"advanced_options.icon_title": "گزینههای پیشرفته",
|
||||
"advanced_options.local-only.short": "فقط محلی",
|
||||
"advanced_options.local-only.tooltip": "این فرسته فقط محلی است",
|
||||
@@ -16,13 +20,22 @@
|
||||
"confirmations.unfilter.confirm": "نمایش",
|
||||
"confirmations.unfilter.edit_filter": "ویرایش پالایه",
|
||||
"content-type.change": "نوع محتوا",
|
||||
"empty_column.follow_recommendations": "به نظر نمیتوان هیچ پیشنهادی برایتان ایجاد کرد. میتوانید برای یافتن افرادی که ممکن است بشناسید از جستوجو یا کاوش برچسبهای داغ استفاده کنید.",
|
||||
"endorsed_accounts_editor.endorsed_accounts": "حسابهای پیشنهاد شده",
|
||||
"follow_recommendations.done": "انجام شد",
|
||||
"follow_recommendations.heading": "افرادی را که میخواهید فرستههایشان را ببینید پیگیری کنید! اینها تعدادی پیشنهاد هستند.",
|
||||
"follow_recommendations.lead": "فرستههای افرادی که دنبال میکنید به ترتیب زمانی در خوراک خانهتان نشان داده خواهد شد. از اشتباه کردن نترسید. میتوانید به همین سادگی در هر زمانی از دنبال کردن افراد دست بکشید!",
|
||||
"home.column_settings.advanced": "پیشرفته",
|
||||
"navigation_bar.app_settings": "تنظیمات کاره",
|
||||
"navigation_bar.featured_users": "کاربران پیشنهاد شده",
|
||||
"navigation_bar.keyboard_shortcuts": "میانبرهای صفحهکلید",
|
||||
"notification.markForDeletion": "علامتگذاری برای حذف",
|
||||
"notification_purge.btn_all": "انتخاب همه",
|
||||
"onboarding.done": "انجام شد",
|
||||
"onboarding.page_one.federation": "{domain} یک \"نمونه\" از ماستودون است. ماستودون شبکه ای از کارسازهای مستقل است که برای ایجاد یک شبکه اجتماعی بزرگتر به هم می پیوندند. ما این کارسازها را نمونه می نامیم.",
|
||||
"onboarding.page_one.welcome": "به {domain} خوش آمدید!",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"onboarding.page_six.various_app": "کارههای موبایل",
|
||||
"settings.auto_collapse_reblogs": "تقویتها",
|
||||
"settings.auto_collapse_replies": "پاسخها",
|
||||
"settings.close": "بستن",
|
||||
@@ -36,5 +49,9 @@
|
||||
"settings.status_icons": "نقشکهای توت",
|
||||
"status.in_reply_to": "این توت یک پاسخ است",
|
||||
"status.is_poll": "این توت یک نظرسنجی است",
|
||||
"status.sensitive_toggle": "برای مشاهده کلیک کنید"
|
||||
"status.sensitive_toggle": "برای مشاهده کلیک کنید",
|
||||
"web_app_crash.debug_info": "اطلاعات اشکالزدایی",
|
||||
"web_app_crash.reload": "نوسازی",
|
||||
"web_app_crash.settings": "تنظیمات",
|
||||
"web_app_crash.title": "متأسفیم، اما مشکلی در کاره ماستودون رخ داد."
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Näyttää siltä, että sinulle ei voi luoda ehdotuksia. Voit yrittää etsiä ihmisiä, jotka saatat tuntea tai tutkia trendaavia aihetunnisteita.",
|
||||
"follow_recommendations.done": "Valmis",
|
||||
"follow_recommendations.heading": "Seuraa ihmisiä, joilta haluat nähdä viestejä! Tässä on muutamia ehdotuksia.",
|
||||
"follow_recommendations.lead": "Seuraamiesi julkaisut näkyvät aikajärjestyksessä kotisyötteessä. Älä pelkää seurata vahingossa, voit lopettaa seuraamisen yhtä helposti!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Tað sær út sum, at eingi uppskot kundu fáast fram til tín. Tú kanst royna at brúka leiting fyri at finna fólk, sum tú kanska kennir, ella at kanna frámerki, sum eru vælumtókt í løtuni.",
|
||||
"follow_recommendations.done": "Liðugt",
|
||||
"follow_recommendations.heading": "Fylg fólki, sum tú hevur hug at síggja postar frá! Her eru nøkur boð.",
|
||||
"follow_recommendations.lead": "Postar frá fólki, sum tú fylgir, verða vístir í tíðarrøð á heimarásini hjá tær. Ver ikki bangin fyri at gera feilir; tú kanst gevast at fylgja fólki eins lættliga nær sum helst!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
{
|
||||
"about.fork_disclaimer": "Glitch-soc est un logiciel gratuit et open source, fork de Mastodon.",
|
||||
"account.add_account_note": "Ajouter une note pour @{name}",
|
||||
"account.disclaimer_full": "Les informations ci-dessous peuvent être incomplètes.",
|
||||
"account.follows": "Abonnements",
|
||||
"account.joined": "Ici depuis {date}",
|
||||
"account.mute_notifications": "Masquer les notifications de @{name}",
|
||||
"account.suspended_disclaimer_full": "Cet utilisateur a été suspendu par un modérateur.",
|
||||
"account.unmute_notifications": "Ne plus masquer les notifications de @{name}",
|
||||
"account.view_full_profile": "Voir le profil complet",
|
||||
"account_note.cancel": "Annuler",
|
||||
"account_note.edit": "Éditer",
|
||||
"account_note.glitch_placeholder": "Aucun commentaire fourni",
|
||||
"account_note.save": "Sauvegarder",
|
||||
"advanced_options.icon_title": "Options avancées",
|
||||
"advanced_options.local-only.long": "Ne pas envoyer aux autres instances",
|
||||
"advanced_options.local-only.short": "Uniquement en local",
|
||||
@@ -42,9 +49,14 @@
|
||||
"confirmations.unfilter.filters": "Correspondance avec {count, plural, one {un filtre} other {plusieurs filtres}}",
|
||||
"content-type.change": "Type de contenu",
|
||||
"direct.group_by_conversations": "Grouper par conversation",
|
||||
"empty_column.follow_recommendations": "Il semble qu’aucune suggestion n’ait pu être générée pour vous. Vous pouvez essayer d’utiliser la recherche pour découvrir des personnes que vous pourriez connaître ou explorer les hashtags populaires.",
|
||||
"endorsed_accounts_editor.endorsed_accounts": "Comptes mis en avant",
|
||||
"favourite_modal.combo": "Vous pouvez appuyer sur {combo} pour passer ceci la prochaine fois",
|
||||
"firehose.column_settings.allow_local_only": "Afficher les messages locaux dans \"Tous\"",
|
||||
"follow_recommendations.done": "Terminé",
|
||||
"follow_recommendations.heading": "Suivez les personnes dont vous aimeriez voir les publications! Voici quelques suggestions.",
|
||||
"follow_recommendations.lead": "Les publication de personnes que vous suivez apparaîtront par ordre chronologique sur votre fil d'accueil. N'ayez pas peur de faire des erreurs, vous pouvez arrêter de suivre les gens aussi facilement n'importe quand!",
|
||||
"getting_started.onboarding": "Montre-moi les alentours",
|
||||
"home.column_settings.advanced": "Avancé",
|
||||
"home.column_settings.filter_regex": "Filtrer par expression régulière",
|
||||
"home.column_settings.show_direct": "Afficher les MPs",
|
||||
@@ -66,6 +78,26 @@
|
||||
"notification_purge.start": "Activer le mode de nettoyage des notifications",
|
||||
"notifications.marked_clear": "Effacer les notifications sélectionnées",
|
||||
"notifications.marked_clear_confirmation": "Voulez-vous vraiment effacer de manière permanente toutes les notifications sélectionnées ?",
|
||||
"onboarding.done": "Terminé",
|
||||
"onboarding.next": "Suivant",
|
||||
"onboarding.page_five.public_timelines": "Le fil local affiche les posts publics de tout le monde sur {domain}. Le fil global affiche les posts publics de tous les comptes que les personnes de {domain} suivent. Ce sont les fils publics, une façon formidable de découvrir de nouvelles personnes.",
|
||||
"onboarding.page_four.home": "L'accueil affiche les posts des personnes que vous suivez.",
|
||||
"onboarding.page_four.notifications": "La colonne de notifications vous montre lorsque quelqu'un interagit avec vous.",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_one.handle": "Vous êtes sur {domain}, donc votre nom d'utilisateur complet est {handle}",
|
||||
"onboarding.page_one.welcome": "Bievenue sur {domain} !",
|
||||
"onboarding.page_six.admin": "Votre admin d’instance est {admin}.",
|
||||
"onboarding.page_six.almost_done": "C'est bientôt fini...",
|
||||
"onboarding.page_six.appetoot": "Bon appétoot !",
|
||||
"onboarding.page_six.apps_available": "Il y a des {apps} disponibles pour iOS, Android et d'autres plateformes.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"onboarding.page_six.guidelines": "règles de la communauté",
|
||||
"onboarding.page_six.read_guidelines": "Veuillez lire les {guidelines} de {domain} !",
|
||||
"onboarding.page_six.various_app": "applications mobiles",
|
||||
"onboarding.page_three.profile": "Modifiez votre profil pour changer votre avatar, biographie et nom public. Ici, vous trouverez également d'autres options.",
|
||||
"onboarding.page_three.search": "Utilisez la barre de recherche pour trouver des personnes et regarder les hashtags comme {illustration} et {introductions}. Pour chercher une personne n'étant pas sur cette instance, utilisez son nom d'utilisateur complet.",
|
||||
"onboarding.page_two.compose": "Écrivez des posts depuis la colonne de rédaction. Vous pouvez téléverser des images, changer la confidentialité et ajouter des avertissements de contenu avec les boutons ci-dessous.",
|
||||
"onboarding.skip": "Passer",
|
||||
"settings.always_show_spoilers_field": "Toujours activer le champ de rédaction de l'avertissement de contenu",
|
||||
"settings.auto_collapse": "Repliage automatique",
|
||||
"settings.auto_collapse_all": "Tout",
|
||||
@@ -154,5 +186,15 @@
|
||||
"status.is_poll": "Ce post est un sondage",
|
||||
"status.local_only": "Visible uniquement depuis votre instance",
|
||||
"status.sensitive_toggle": "Cliquer pour voir",
|
||||
"status.uncollapse": "Déplier"
|
||||
"status.uncollapse": "Déplier",
|
||||
"web_app_crash.change_your_settings": "Changez vos {settings}",
|
||||
"web_app_crash.content": "Voici les différentes options qui s'offrent à vous :",
|
||||
"web_app_crash.debug_info": "Informations de débogage",
|
||||
"web_app_crash.disable_addons": "Désactivez les extensions de votre navigateur, ainsi que les outils de traduction intégrés",
|
||||
"web_app_crash.issue_tracker": "traqueur d'erreurs",
|
||||
"web_app_crash.reload": "Rafraichir",
|
||||
"web_app_crash.reload_page": "{reload} la page actuelle",
|
||||
"web_app_crash.report_issue": "Signalez un bug dans le {issuetracker}",
|
||||
"web_app_crash.settings": "paramètres",
|
||||
"web_app_crash.title": "Nous sommes navrés, mais quelque chose s'est mal passé dans l'application Mastodon."
|
||||
}
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
{
|
||||
"about.fork_disclaimer": "Glitch-soc est un logiciel gratuit et open source, fork de Mastodon.",
|
||||
"account.add_account_note": "Ajouter une note pour @{name}",
|
||||
"account.disclaimer_full": "Les informations ci-dessous peuvent être incomplètes.",
|
||||
"account.follows": "Abonnements",
|
||||
"account.joined": "Ici depuis {date}",
|
||||
"account.mute_notifications": "Masquer les notifications de @{name}",
|
||||
"account.suspended_disclaimer_full": "Cet utilisateur a été suspendu par un modérateur.",
|
||||
"account.unmute_notifications": "Ne plus masquer les notifications de @{name}",
|
||||
"account.view_full_profile": "Voir le profil complet",
|
||||
"account_note.cancel": "Annuler",
|
||||
"account_note.edit": "Éditer",
|
||||
"account_note.glitch_placeholder": "Aucun commentaire fourni",
|
||||
"account_note.save": "Sauvegarder",
|
||||
"advanced_options.icon_title": "Options avancées",
|
||||
"advanced_options.local-only.long": "Ne pas envoyer aux autres instances",
|
||||
"advanced_options.local-only.short": "Uniquement en local",
|
||||
@@ -42,9 +49,14 @@
|
||||
"confirmations.unfilter.filters": "Correspondance avec {count, plural, one {un filtre} other {plusieurs filtres}}",
|
||||
"content-type.change": "Type de contenu",
|
||||
"direct.group_by_conversations": "Grouper par conversation",
|
||||
"empty_column.follow_recommendations": "Il semble qu’aucune suggestion n’ait pu être générée pour vous. Vous pouvez essayer d’utiliser la recherche pour découvrir des personnes que vous pourriez connaître ou explorer les hashtags tendance.",
|
||||
"endorsed_accounts_editor.endorsed_accounts": "Comptes mis en avant",
|
||||
"favourite_modal.combo": "Vous pouvez appuyer sur {combo} pour passer ceci la prochaine fois",
|
||||
"firehose.column_settings.allow_local_only": "Afficher les messages locaux dans \"Tous\"",
|
||||
"follow_recommendations.done": "Terminé",
|
||||
"follow_recommendations.heading": "Suivez les personnes dont vous aimeriez voir les messages ! Voici quelques suggestions.",
|
||||
"follow_recommendations.lead": "Les messages des personnes que vous suivez apparaîtront par ordre chronologique sur votre fil d'accueil. Ne craignez pas de faire des erreurs, vous pouvez arrêter de suivre les gens aussi facilement à tout moment !",
|
||||
"getting_started.onboarding": "Montre-moi les alentours",
|
||||
"home.column_settings.advanced": "Avancé",
|
||||
"home.column_settings.filter_regex": "Filtrer par expression régulière",
|
||||
"home.column_settings.show_direct": "Afficher les MPs",
|
||||
@@ -66,6 +78,26 @@
|
||||
"notification_purge.start": "Activer le mode de nettoyage des notifications",
|
||||
"notifications.marked_clear": "Effacer les notifications sélectionnées",
|
||||
"notifications.marked_clear_confirmation": "Voulez-vous vraiment effacer de manière permanente toutes les notifications sélectionnées ?",
|
||||
"onboarding.done": "Terminé",
|
||||
"onboarding.next": "Suivant",
|
||||
"onboarding.page_five.public_timelines": "Le fil local affiche les posts publics de tout le monde sur {domain}. Le fil global affiche les posts publics de tous les comptes que les personnes de {domain} suivent. Ce sont les fils publics, une façon formidable de découvrir de nouvelles personnes.",
|
||||
"onboarding.page_four.home": "L'accueil affiche les posts des personnes que vous suivez.",
|
||||
"onboarding.page_four.notifications": "La colonne de notifications vous montre lorsque quelqu'un interagit avec vous.",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_one.handle": "Vous êtes sur {domain}, donc votre nom d'utilisateur complet est {handle}",
|
||||
"onboarding.page_one.welcome": "Bievenue sur {domain} !",
|
||||
"onboarding.page_six.admin": "Votre admin d’instance est {admin}.",
|
||||
"onboarding.page_six.almost_done": "C'est bientôt fini...",
|
||||
"onboarding.page_six.appetoot": "Bon appétoot !",
|
||||
"onboarding.page_six.apps_available": "Il y a des {apps} disponibles pour iOS, Android et d'autres plateformes.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"onboarding.page_six.guidelines": "règles de la communauté",
|
||||
"onboarding.page_six.read_guidelines": "Veuillez lire les {guidelines} de {domain} !",
|
||||
"onboarding.page_six.various_app": "applications mobiles",
|
||||
"onboarding.page_three.profile": "Modifiez votre profil pour changer votre avatar, biographie et nom public. Ici, vous trouverez également d'autres options.",
|
||||
"onboarding.page_three.search": "Utilisez la barre de recherche pour trouver des personnes et regarder les hashtags comme {illustration} et {introductions}. Pour chercher une personne n'étant pas sur cette instance, utilisez son nom d'utilisateur complet.",
|
||||
"onboarding.page_two.compose": "Écrivez des posts depuis la colonne de rédaction. Vous pouvez téléverser des images, changer la confidentialité et ajouter des avertissements de contenu avec les boutons ci-dessous.",
|
||||
"onboarding.skip": "Passer",
|
||||
"settings.always_show_spoilers_field": "Toujours activer le champ de rédaction de l'avertissement de contenu",
|
||||
"settings.auto_collapse": "Repliage automatique",
|
||||
"settings.auto_collapse_all": "Tout",
|
||||
@@ -154,5 +186,15 @@
|
||||
"status.is_poll": "Ce post est un sondage",
|
||||
"status.local_only": "Visible uniquement depuis votre instance",
|
||||
"status.sensitive_toggle": "Cliquer pour voir",
|
||||
"status.uncollapse": "Déplier"
|
||||
"status.uncollapse": "Déplier",
|
||||
"web_app_crash.change_your_settings": "Changez vos {settings}",
|
||||
"web_app_crash.content": "Voici les différentes options qui s'offrent à vous :",
|
||||
"web_app_crash.debug_info": "Informations de débogage",
|
||||
"web_app_crash.disable_addons": "Désactivez les extensions de votre navigateur, ainsi que les outils de traduction intégrés",
|
||||
"web_app_crash.issue_tracker": "traqueur d'erreurs",
|
||||
"web_app_crash.reload": "Rafraichir",
|
||||
"web_app_crash.reload_page": "{reload} la page actuelle",
|
||||
"web_app_crash.report_issue": "Signalez un bug dans le {issuetracker}",
|
||||
"web_app_crash.settings": "paramètres",
|
||||
"web_app_crash.title": "Nous sommes navrés, mais quelque chose s'est mal passé dans l'application Mastodon."
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "It liket der op dat der gjin oanrekommandaasjes foar jo oanmakke wurde kinne. Jo kinne probearje te sykjen nei minsken dy’t jo miskien kinne, sykje op hashtags, de lokale en globale tiidlinen besjen of de brûkersgids trochblêdzje.",
|
||||
"follow_recommendations.done": "Klear",
|
||||
"follow_recommendations.heading": "Folgje minsken dêr’t jo graach berjochten fan sjen wolle! Hjir binne wat suggestjes.",
|
||||
"follow_recommendations.lead": "Berjochten fan minsken dy’t jo folgje sille yn gronologyske folchoarder op jo starttiidline ferskine. Wês net bang om hjiryn flaters te meitsjen, want jo kinne minsken op elk momint krekt sa ienfâldich ûntfolgje!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Is cosúil nár fhéadfaí moltaí a ghineadh. D'fhéadfá cuardach a úsáid le teacht ar dhaoine a bhfuil aithne agat orthu, nó iniúchadh ar haischlibeanna atá ag treochtáil a dhéanamh.",
|
||||
"follow_recommendations.done": "Déanta",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Chan urrainn dhuinn dad a mholadh dhut. Cleachd gleus an luirg feuch an lorg thu daoine air a bheil thu eòlach no rùraich na tagaichean-hais a tha a’ treandadh.",
|
||||
"follow_recommendations.done": "Deiseil",
|
||||
"follow_recommendations.heading": "Lean daoine ma tha thu airson na postaichean aca fhaicinn! Seo moladh no dà dhut.",
|
||||
"follow_recommendations.lead": "Nochdaidh na postaichean aig na daoine a leanas tu a-rèir an ama nad dhachaigh. Bi dàna on as urrainn dhut sgur de dhaoine a leantainn cuideachd uair sam bith!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Semella que non temos suxestións para ti. Podes utilizar a busca para atopar persoas que coñezas ou explorar os cancelos en voga.",
|
||||
"follow_recommendations.done": "Feito",
|
||||
"follow_recommendations.heading": "Segue a persoas das que queiras ler publicacións! Aqui tes unhas suxestións.",
|
||||
"follow_recommendations.lead": "As publicacións das persoas que segues aparecerán na túa cronoloxía de inicio ordenadas temporalmente. Non teñas medo a equivocarte, podes deixar de seguirlas igual de fácil en calquera momento!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "נראה שלא ניתן לייצר המלצות עבורך. נסה/י להשתמש בחיפוש כדי למצוא אנשים מוכרים או לבדוק את הנושאים החמים.",
|
||||
"follow_recommendations.done": "בוצע",
|
||||
"follow_recommendations.heading": "עקב/י אחרי אנשים שתרצה/י לראות את הודעותיהם! הנה כמה הצעות.",
|
||||
"follow_recommendations.lead": "הודעות מאנשים במעקב יופיעו בסדר כרונולוגי בפיד הבית. אל תחששו מטעויות, אפשר להסיר מעקב באותה הקלות ובכל זמן!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,11 +1,22 @@
|
||||
{
|
||||
"about.fork_disclaimer": "ग्लिच-सोक एक मुफ्त और ओपन सोर्स सॉफ़्टवेर है जो मैस्टोडॉन से फोर्क किया गया है",
|
||||
"account.add_account_note": "@{name} के लिए कोई नोट लिखें",
|
||||
"account.follows": "फ़ॉलोज़",
|
||||
"account.joined": "ज़ोईन करने की {date}",
|
||||
"account.suspended_disclaimer_full": "यह यूज़र एक मॉडरेटर द्वारा सस्पेंड कर दिया गया है",
|
||||
"account.view_full_profile": "पूरी प्रोफ़ाइल देखें",
|
||||
"account_note.cancel": "कैन्सल",
|
||||
"account_note.edit": "एडिट या सम्पादन करें",
|
||||
"account_note.glitch_placeholder": "कोई कॉमेंट नहीं दिया गया है",
|
||||
"account_note.save": "सेव",
|
||||
"advanced_options.icon_title": "एडवांस्ड ऑप्शन्स",
|
||||
"advanced_options.local-only.long": "दूसरे इंस्टेंसों में पोस्ट ना करें",
|
||||
"empty_column.follow_recommendations": "ऐसा लगता है कि आपके लिए कोई सुझाव जेनरेट नहीं किया जा सका. आप उन लोगों को खोजने के लिए सर्च का उपयोग करने का प्रयास कर सकते हैं जिन्हें आप जानते हैं या ट्रेंडिंग हैशटैग का पता लगा सकते हैं।",
|
||||
"follow_recommendations.done": "पूर्ण",
|
||||
"follow_recommendations.heading": "उन लोगों का अनुसरण करें जिनकी पोस्ट आप देखना चाहते हैं! यहाँ कुछ सुझाव हैं।",
|
||||
"follow_recommendations.lead": "आपके द्वारा फ़ॉलो किए जाने वाले लोगों के पोस्ट आपके होम फ़ीड पर कालानुक्रमिक क्रम में दिखाई देंगे। गलतियाँ करने से न डरें, आप किसी भी समय लोगों को उतनी ही आसानी से अनफ़ॉलो कर सकते हैं!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Čini se da se ne postoje sugestije generirane za tebe. Možeš pokušati koristiti pretragu kako bi pronašao osobe koje poznaš ili istraži popularne hashtagove.",
|
||||
"follow_recommendations.done": "Učinjeno",
|
||||
"follow_recommendations.heading": "Zaprati osobe čije objave želiš vidjeti! Evo nekoliko prijedloga.",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Úgy tűnik, neked nem tudunk javaslatokat adni. Próbáld a keresést használni olyanok megtalálására, akiket ismerhetsz, vagy fedezd fel a felkapott hastageket.",
|
||||
"follow_recommendations.done": "Kész",
|
||||
"follow_recommendations.heading": "Kövesd azokat, akiknek a bejegyzéseit látni szeretnéd! Itt van néhány javaslat.",
|
||||
"follow_recommendations.lead": "Az általad követettek bejegyzései a saját idővonaladon fognak megjelenni időrendi sorrendben. Ne félj attól, hogy hibázol! A követést bármikor, ugyanilyen könnyen visszavonhatod!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Կարծես քեզ համար ոչ մի առաջարկ չի գեներացուել։ Օգտագործիր որոնման դաշտը մարդկանց փնտրելու համար կամ բացայայտիր յայտնի պիտակներով։",
|
||||
"follow_recommendations.done": "Աւարտուած է",
|
||||
"follow_recommendations.heading": "Հետեւիր այն մարդկանց, որոնց գրառումները կը ցանկանաս տեսնել։ Ահա մի քանի առաջարկ։",
|
||||
"follow_recommendations.lead": "Քո հոսքում, ժամանակագրական դասաւորութեամբ կը տեսնես այն մարդկանց գրառումները, որոնց հետեւում ես։ Մի վախեցիր սխալուել, դու միշտ կարող ես հեշտութեամբ ապահետեւել մարդկանց։",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Sepertinya tak ada saran yang dibuat untuk Anda. Anda dapat mencoba menggunakan pencarian untuk menemukan orang yang Anda ketahui atau menjelajahi tagar yang sedang tren.",
|
||||
"follow_recommendations.done": "Selesai",
|
||||
"follow_recommendations.heading": "Ikuti orang yang ingin Anda lihat kirimannya! Ini ada beberapa saran.",
|
||||
"follow_recommendations.lead": "Kiriman dari orang yang Anda ikuti akan tampil berdasar waktu di beranda Anda. Jangan takut membuat kesalahan, Anda dapat berhenti mengikuti mereka dengan mudah kapan saja!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
{
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Semblas tale nula sugestato povas facesar por vu. Vu povas probar trovar personi quon vu forsan konocas o exploras tendenca hashtagi.",
|
||||
"follow_recommendations.done": "Fina",
|
||||
"follow_recommendations.heading": "Sequez personi quo igas posti quon vu volas vidar! Hike esas ula sugestati.",
|
||||
"follow_recommendations.lead": "Posti de personi quon vu sequas kronologiale montresos en vua hemniuzeto. Ne timas igar erori, vu povas desequar personi tam same facila irgatempe!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Það lítur út fyrir að ekki hafi verið hægt að útbúa neinar tillögur fyrir þig. Þú getur reynt að leita að fólki sem þú gætir þekkt eða skoðað myllumerki sem eru í umræðunni.",
|
||||
"follow_recommendations.done": "Lokið",
|
||||
"follow_recommendations.heading": "Fylgstu með fólki sem þú vilt sjá færslur frá! Hér eru nokkrar tillögur.",
|
||||
"follow_recommendations.lead": "Færslur frá fólki sem þú fylgist með eru birtar í tímaröð á heimastreyminu þínu. Þú þarft ekki að hræðast mistök, það er jafn auðvelt að hætta að fylgjast með fólki hvenær sem er!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Sembra che non sia stato possibile generare alcun suggerimento per te. Puoi provare a utilizzare la ricerca per cercare persone che potresti conoscere, o a esplorare gli hashtag in tendenza.",
|
||||
"follow_recommendations.done": "Fatto",
|
||||
"follow_recommendations.heading": "Segui le persone di cui vorresti vedere i post! Ecco alcuni suggerimenti.",
|
||||
"follow_recommendations.lead": "I post dalle persone che segui appariranno in ordine cronologico sul feed della tua home. Non preoccuparti di fare errori, è altrettanto facile smettere di seguire le persone, in qualsiasi momento!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,10 +1,17 @@
|
||||
{
|
||||
"about.fork_disclaimer": "Glitch-socはMastodonからフォークされたフリーなオープンソースソフトウェアです。",
|
||||
"account.add_account_note": "@{name}のメモを追加",
|
||||
"account.disclaimer_full": "このユーザー情報は不正確な可能性があります。",
|
||||
"account.follows": "フォロー",
|
||||
"account.joined": "{date} に登録",
|
||||
"account.mute_notifications": "@{name}さんからの通知を受け取らない",
|
||||
"account.suspended_disclaimer_full": "このユーザーはモデレータにより停止されました。",
|
||||
"account.unmute_notifications": "@{name}さんからの通知を受け取る",
|
||||
"account.view_full_profile": "正確な情報を見る",
|
||||
"account_note.cancel": "キャンセル",
|
||||
"account_note.edit": "編集",
|
||||
"account_note.glitch_placeholder": "メモがありません",
|
||||
"account_note.save": "保存",
|
||||
"advanced_options.icon_title": "高度な設定",
|
||||
"advanced_options.local-only.long": "他のインスタンスには投稿されません",
|
||||
"advanced_options.local-only.short": "ローカル限定",
|
||||
@@ -41,8 +48,13 @@
|
||||
"confirmations.unfilter.filters": "適用されたフィルター",
|
||||
"content-type.change": "コンテンツ形式を変更",
|
||||
"direct.group_by_conversations": "会話でグループ化",
|
||||
"empty_column.follow_recommendations": "おすすめを生成できませんでした。検索を使って知り合いを探したり、トレンドハッシュタグを見てみましょう。",
|
||||
"endorsed_accounts_editor.endorsed_accounts": "紹介しているユーザー",
|
||||
"favourite_modal.combo": "次からは {combo} を押せば、これをスキップできます。",
|
||||
"follow_recommendations.done": "完了",
|
||||
"follow_recommendations.heading": "投稿を見たい人をフォローしてください!ここにおすすめがあります。",
|
||||
"follow_recommendations.lead": "あなたがフォローしている人の投稿は、ホームフィードに時系列で表示されます。いつでも簡単に解除できるので、気軽にフォローしてみてください!",
|
||||
"getting_started.onboarding": "解説を表示",
|
||||
"home.column_settings.advanced": "高度",
|
||||
"home.column_settings.filter_regex": "正規表現でフィルター",
|
||||
"home.column_settings.show_direct": "DMを表示",
|
||||
@@ -64,6 +76,9 @@
|
||||
"notification_purge.start": "通知整理モードに入る",
|
||||
"notifications.marked_clear": "選択した通知を削除する",
|
||||
"notifications.marked_clear_confirmation": "削除した全ての通知を完全に削除してもよろしいですか?",
|
||||
"onboarding.page_one.federation": "{domain}はMastodonのインスタンスです。Mastodonとは、独立したサーバが連携して作るソーシャルネットワークです。これらのサーバーをインスタンスと呼びます。",
|
||||
"onboarding.page_one.welcome": "{domain}へようこそ!",
|
||||
"onboarding.page_six.github": "{domain}はGlitchsocを使用しています。Glitchsocは{Mastodon}のフレンドリーな{fork}で、どんなMastodonアプリやインスタンスとも互換性があります。Glitchsocは完全に無料で、オープンソースです。{github}でバグ報告や機能要望あるいは貢獻をすることが可能です。",
|
||||
"settings.always_show_spoilers_field": "常にコンテンツワーニング設定を表示する(指定がない場合は通常投稿)",
|
||||
"settings.auto_collapse": "自動折りたたみ",
|
||||
"settings.auto_collapse_all": "すべて",
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
{
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
{
|
||||
"follow_recommendations.done": "Immed",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
{
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
{
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
{
|
||||
"about.fork_disclaimer": "글리치는 마스토돈에서 포크한 자유 오픈소스 소프트웨어입니다.",
|
||||
"account.add_account_note": "@{name} 님에 대한 메모 추가",
|
||||
"account.disclaimer_full": "아래에 있는 정보들은 사용자의 프로필을 완벽하게 나타내지 못하고 있을 수도 있습니다.",
|
||||
"account.follows": "팔로우",
|
||||
"account.joined": "{date}에 가입함",
|
||||
"account.suspended_disclaimer_full": "이 사용자는 중재자에 의해 정지되었습니다.",
|
||||
"account.view_full_profile": "전체 프로필 보기",
|
||||
"account_note.cancel": "취소",
|
||||
"account_note.edit": "편집",
|
||||
"account_note.glitch_placeholder": "코멘트가 없습니다",
|
||||
"account_note.save": "저장",
|
||||
"advanced_options.icon_title": "고급 옵션",
|
||||
"advanced_options.local-only.long": "다른 서버에 게시하지 않기",
|
||||
"advanced_options.local-only.short": "로컬 전용",
|
||||
@@ -42,8 +47,13 @@
|
||||
"confirmations.unfilter.filters": "적용된 {count, plural, one {필터} other {필터들}}",
|
||||
"content-type.change": "콘텐트 타입",
|
||||
"direct.group_by_conversations": "대화별로 묶기",
|
||||
"empty_column.follow_recommendations": "당신을 위한 제안이 생성될 수 없는 것 같습니다. 알 수도 있는 사람을 검색하거나 유행하는 해시태그를 둘러볼 수 있습니다.",
|
||||
"endorsed_accounts_editor.endorsed_accounts": "추천하는 계정들",
|
||||
"favourite_modal.combo": "다음엔 {combo}를 눌러 건너뛸 수 있습니다",
|
||||
"follow_recommendations.done": "완료",
|
||||
"follow_recommendations.heading": "게시물을 받아 볼 사람을 팔로우하세요! 여기 몇몇 추천이 있습니다.",
|
||||
"follow_recommendations.lead": "당신이 팔로우 하는 사람들의 게시물이 시간순으로 정렬되어 당신의 홈 피드에 표시될 것입니다. 실수를 두려워 하지 마세요, 언제든지 쉽게 팔로우 취소를 할 수 있습니다!",
|
||||
"getting_started.onboarding": "둘러보기",
|
||||
"home.column_settings.advanced": "고급",
|
||||
"home.column_settings.filter_regex": "정규표현식으로 필터",
|
||||
"home.column_settings.show_direct": "DM 보여주기",
|
||||
@@ -65,6 +75,26 @@
|
||||
"notification_purge.start": "알림 삭제모드로 들어가기",
|
||||
"notifications.marked_clear": "선택된 알림 모두 삭제",
|
||||
"notifications.marked_clear_confirmation": "정말로 선택된 알림들을 영구적으로 삭제할까요?",
|
||||
"onboarding.done": "완료",
|
||||
"onboarding.next": "다음",
|
||||
"onboarding.page_five.public_timelines": "로컬 타임라인은 {domain}에 있는 모든 사람의 공개글을 보여줍니다. 연합 타임라인은 {domain}에 있는 사람들이 팔로우 하는 모든 사람의 공개글을 보여줍니다. 이것들은 공개 타임라인이라고 불리며, 새로운 사람들을 발견할 수 있는 좋은 방법입니다.",
|
||||
"onboarding.page_four.home": "홈 타임라인은 당신이 팔로우 한 사람들의 글을 보여줍니다.",
|
||||
"onboarding.page_four.notifications": "알림 컬럼은 누군가가 당신과 상호작용한 것들을 보여줍니다.",
|
||||
"onboarding.page_one.federation": "{domain}은 마스토돈의 '인스턴스'입니다. 마스토돈은 하나의 거대한 소셜 네트워크를 만들기 위해 참여한 서버들의 네트워크입니다. 우린 이 서버들을 인스턴스라고 부릅니다.",
|
||||
"onboarding.page_one.handle": "당신은 {domain}에 속해 있으며, 전체 핸들은 {handle} 입니다.",
|
||||
"onboarding.page_one.welcome": "{domain}에 오신 것을 환영합니다!",
|
||||
"onboarding.page_six.admin": "우리 서버의 관리자는 {admin} 님입니다.",
|
||||
"onboarding.page_six.almost_done": "거의 다 되었습니다…",
|
||||
"onboarding.page_six.appetoot": "본 아페툿!",
|
||||
"onboarding.page_six.apps_available": "iOS, 안드로이드, 그리고 다른 플랫폼들을 위한 {apps}이 존재합니다.",
|
||||
"onboarding.page_six.github": "{domain}은 글리치를 통해 구동 됩니다. 글리치는 {Mastodon}의 {fork}입니다, 그리고 어떤 마스토돈 인스턴스나 앱과도 호환 됩니다. 글리치는 완전한 자유 오픈소스입니다. {github}에서 버그를 리포팅 하거나, 기능을 제안하거나, 코드를 기여할 수 있습니다.",
|
||||
"onboarding.page_six.guidelines": "커뮤니티 가이드라인",
|
||||
"onboarding.page_six.read_guidelines": "{domain}의 {guidelines}을 읽어주세요!",
|
||||
"onboarding.page_six.various_app": "모바일 앱",
|
||||
"onboarding.page_three.profile": "프로필을 수정해 아바타, 바이오, 표시되는 이름을 설정하세요. 거기에서 다른 설정들도 찾을 수 있습니다.",
|
||||
"onboarding.page_three.search": "검색창을 사용해 사람들과 해시태그를 찾아보세요. 예를 들면 {illustration}이라든지 {introcustions} 같은 것으로요. 이 인스턴스에 있지 않은 사람을 찾으려면, 전체 핸들을 사용하세요.",
|
||||
"onboarding.page_two.compose": "작성 컬럼에서 게시물을 작성하세요. 그림을 업로드 할 수 있고, 공개설정을 바꿀 수도 있으며, 아래 아이콘을 통해 열람주의 텍스트를 설정할 수 있습니다.",
|
||||
"onboarding.skip": "건너뛰기",
|
||||
"settings.always_show_spoilers_field": "열람주의 항목을 언제나 활성화",
|
||||
"settings.auto_collapse": "자동으로 접기",
|
||||
"settings.auto_collapse_all": "모두",
|
||||
@@ -105,7 +135,7 @@
|
||||
"settings.media_fullwidth": "최대폭 미디어 미리보기",
|
||||
"settings.media_letterbox": "레터박스 미디어",
|
||||
"settings.media_letterbox_hint": "확대하고 자르는 대신 축소하고 레터박스에 넣어 이미지를 보여줍니다",
|
||||
"settings.media_reveal_behind_cw": "열람주의로 가려진 미디어를 기본으로 펼쳐 두기",
|
||||
"settings.media_reveal_behind_cw": "열람주의로 가려진 미디어를 기본으로 펼쳐 둡니다",
|
||||
"settings.notifications.favicon_badge": "읽지 않은 알림 파비콘 배지",
|
||||
"settings.notifications.favicon_badge.hint": "읽지 않은 알림 배지를 파비콘에 추가합니다",
|
||||
"settings.notifications.tab_badge": "읽지 않은 알림 배지",
|
||||
@@ -153,5 +183,15 @@
|
||||
"status.is_poll": "이 글은 설문입니다",
|
||||
"status.local_only": "당신의 서버에서만 보입니다",
|
||||
"status.sensitive_toggle": "클릭해서 보기",
|
||||
"status.uncollapse": "펼치기"
|
||||
"status.uncollapse": "펼치기",
|
||||
"web_app_crash.change_your_settings": "{settings}을 바꾸세요",
|
||||
"web_app_crash.content": "이것들을 시도해 볼 수 있습니다:",
|
||||
"web_app_crash.debug_info": "디버그 정보",
|
||||
"web_app_crash.disable_addons": "브라우저 애드온이나 기본 번역 도구를 비활성화 합니다",
|
||||
"web_app_crash.issue_tracker": "이슈 트래커",
|
||||
"web_app_crash.reload": "새로고침",
|
||||
"web_app_crash.reload_page": "이 페이지를 {reload}",
|
||||
"web_app_crash.report_issue": "{issuetracker}에 버그 제보",
|
||||
"web_app_crash.settings": "설정",
|
||||
"web_app_crash.title": "죄송합니다, 하지만 마스토돈 앱이 뭔가 잘못되었습니다."
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
{
|
||||
"empty_column.follow_recommendations": "Wusa dixuye ku ji bo we tu pêşniyar nehatine çêkirin. Hûn dikarin lêgerînê bikarbînin da ku li kesên ku hûn nas dikin bigerin an hashtagên trendî bigerin.",
|
||||
"follow_recommendations.done": "Qediya",
|
||||
"follow_recommendations.heading": "Mirovên ku tu dixwazî ji wan peyaman bibînî bişopîne! Hin pêşnîyar li vir in.",
|
||||
"follow_recommendations.lead": "Li gorî rêza kronolojîkî peyamên mirovên ku tu dişopînî dê demnameya te de xûya bike. Ji xeletiyan netirse, bi awayekî hêsan her wextî tu dikarî dev ji şopandinê berdî!",
|
||||
"onboarding.page_one.federation": "{domain} is an \"instance\" of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.",
|
||||
"onboarding.page_six.github": "{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.",
|
||||
"settings.content_warnings": "Content warnings",
|
||||
"settings.preferences": "Preferences"
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user