Merge commit '15182d1e5e595b21c47b48c5d258f30a0251e753' into glitch-soc/merge-upstream

Conflicts:
- `.rubocop_todo.yml`:
  glitch-soc had extra ignores.
  Removed them.
th-downstream
Claire 1 year ago
commit 4ef66d6538

@ -0,0 +1,19 @@
name: 'Setup Javascript'
description: 'Setup a Javascript environment ready to run the Mastodon code'
inputs:
onlyProduction:
description: Only install production dependencies
default: 'false'
runs:
using: 'composite'
steps:
- name: Set up Node.js
uses: actions/setup-node@v3
with:
cache: yarn
node-version-file: '.nvmrc'
- name: Install all yarn packages
shell: bash
run: yarn --frozen-lockfile ${{ inputs.onlyProduction != 'false' && '--production' || '' }}

@ -0,0 +1,23 @@
name: 'Setup RUby'
description: 'Setup a Ruby environment ready to run the Mastodon code'
inputs:
ruby-version:
description: The Ruby version to install
default: '.ruby-version'
additional-system-dependencies:
description: 'Additional packages to install'
runs:
using: 'composite'
steps:
- name: Install system dependencies
shell: bash
run: |
sudo apt-get update
sudo apt-get install -y libicu-dev libidn11-dev ${{ inputs.additional-system-dependencies }}
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ inputs.ruby-version }}
bundler-cache: true

@ -27,14 +27,8 @@ jobs:
- name: Clone repository
uses: actions/checkout@v4
- name: Install native Ruby dependencies
run: sudo apt-get install -y libicu-dev libidn11-dev
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: .ruby-version
bundler-cache: true
- name: Set up Ruby environment
uses: ./.github/actions/setup-ruby
- name: Run bundler-audit
run: bundle exec bundler-audit

@ -19,25 +19,11 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libicu-dev libidn11-dev
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: .ruby-version
bundler-cache: true
- name: Set up Node.js
uses: actions/setup-node@v3
with:
cache: yarn
node-version-file: '.nvmrc'
- name: Install all yarn packages
run: yarn --frozen-lockfile
- name: Set up Ruby environment
uses: ./.github/actions/setup-ruby
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
- name: Check for missing strings in English JSON
run: |

@ -45,14 +45,8 @@ jobs:
run: sudo chown -R runner:docker .
# This is needed to run the normalize step
- name: Install native Ruby dependencies
run: sudo apt-get install -y libicu-dev libidn11-dev
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: .ruby-version
bundler-cache: true
- name: Set up Ruby environment
uses: ./.github/actions/setup-ruby
- name: Run i18n normalize task
run: bundle exec i18n-tasks normalize

@ -35,14 +35,8 @@ jobs:
- name: Clone repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
with:
cache: yarn
node-version-file: '.nvmrc'
- name: Install all yarn packages
run: yarn --frozen-lockfile
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
- uses: xt0rted/stylelint-problem-matcher@v1

@ -30,16 +30,8 @@ jobs:
- name: Clone repository
uses: actions/checkout@v4
- name: Install native Ruby dependencies
run: |
sudo apt-get update
sudo apt-get install -y libicu-dev libidn11-dev
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: .ruby-version
bundler-cache: true
- name: Set up Ruby environment
uses: ./.github/actions/setup-ruby
- name: Run haml-lint
run: |

@ -39,14 +39,8 @@ jobs:
- name: Clone repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
with:
cache: yarn
node-version-file: '.nvmrc'
- name: Install all yarn packages
run: yarn --frozen-lockfile
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
- name: ESLint
run: yarn lint:js --max-warnings 0

@ -31,14 +31,8 @@ jobs:
- name: Clone repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
with:
cache: yarn
node-version-file: '.nvmrc'
- name: Install all yarn packages
run: yarn --frozen-lockfile
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
- name: Prettier
run: yarn lint:json

@ -31,14 +31,8 @@ jobs:
- name: Clone repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
with:
cache: yarn
node-version-file: '.nvmrc'
- name: Install all yarn packages
run: yarn --frozen-lockfile
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
- name: Prettier
run: yarn lint:md

@ -31,14 +31,8 @@ jobs:
- name: Clone repository
uses: actions/checkout@v4
- name: Install native Ruby dependencies
run: sudo apt-get install -y libicu-dev libidn11-dev
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: .ruby-version
bundler-cache: true
- name: Set up Ruby environment
uses: ./.github/actions/setup-ruby
- name: Set-up RuboCop Problem Matcher
uses: r7kamura/rubocop-problem-matchers-action@v1

@ -33,14 +33,8 @@ jobs:
- name: Clone repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
with:
cache: yarn
node-version-file: '.nvmrc'
- name: Install all yarn packages
run: yarn --frozen-lockfile
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
- name: Prettier
run: yarn lint:yml

@ -35,14 +35,8 @@ jobs:
- name: Clone repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
with:
cache: yarn
node-version-file: '.nvmrc'
- name: Install all yarn packages
run: yarn --frozen-lockfile
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
- name: Jest testing
run: yarn jest --reporters github-actions summary

@ -72,16 +72,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Install native Ruby dependencies
run: |
sudo apt-get update
sudo apt-get install -y libicu-dev libidn11-dev
- name: Set up bundler cache
uses: ruby/setup-ruby@v1
with:
ruby-version: .ruby-version
bundler-cache: true
- name: Set up Ruby environment
uses: ./.github/actions/setup-ruby
- name: Create database
run: './bin/rails db:create'

@ -71,16 +71,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Install native Ruby dependencies
run: |
sudo apt-get update
sudo apt-get install -y libicu-dev libidn11-dev
- name: Set up bundler cache
uses: ruby/setup-ruby@v1
with:
ruby-version: .ruby-version
bundler-cache: true
- name: Set up Ruby environment
uses: ./.github/actions/setup-ruby
- name: Create database
run: './bin/rails db:create'

@ -34,24 +34,14 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
with:
cache: yarn
node-version-file: '.nvmrc'
- name: Install native Ruby dependencies
run: |
sudo apt-get update
sudo apt-get install -y libicu-dev libidn11-dev
- name: Set up Ruby environment
uses: ./.github/actions/setup-ruby
- name: Set up bundler cache
uses: ruby/setup-ruby@v1
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
with:
ruby-version: .ruby-version
bundler-cache: true
onlyProduction: 'true'
- run: yarn --frozen-lockfile --production
- name: Precompile assets
# Previously had set this, but it's not supported
# export NODE_OPTIONS=--openssl-legacy-provider
@ -135,20 +125,11 @@ jobs:
path: './public'
name: ${{ github.sha }}
- name: Update package index
run: sudo apt-get update
- name: Install native Ruby dependencies
run: sudo apt-get install -y libicu-dev libidn11-dev
- name: Install additional system dependencies
run: sudo apt-get install -y ffmpeg imagemagick libpam-dev
- name: Set up bundler cache
uses: ruby/setup-ruby@v1
- name: Set up Ruby environment
uses: ./.github/actions/setup-ruby
with:
ruby-version: ${{ matrix.ruby-version}}
bundler-cache: true
additional-system-dependencies: ffmpeg imagemagick libpam-dev
- name: Load database schema
run: './bin/rails db:create db:schema:load db:seed'
@ -210,28 +191,14 @@ jobs:
path: './public'
name: ${{ github.sha }}
- name: Update package index
run: sudo apt-get update
- name: Set up Node.js
uses: actions/setup-node@v3
with:
cache: yarn
node-version-file: '.nvmrc'
- name: Install native Ruby dependencies
run: sudo apt-get install -y libicu-dev libidn11-dev
- name: Install additional system dependencies
run: sudo apt-get install -y ffmpeg imagemagick
- name: Set up bundler cache
uses: ruby/setup-ruby@v1
- name: Set up Ruby environment
uses: ./.github/actions/setup-ruby
with:
ruby-version: ${{ matrix.ruby-version}}
bundler-cache: true
additional-system-dependencies: ffmpeg imagemagick
- run: yarn --frozen-lockfile
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
- name: Load database schema
run: './bin/rails db:create db:schema:load db:seed'
@ -328,28 +295,14 @@ jobs:
path: './public'
name: ${{ github.sha }}
- name: Update package index
run: sudo apt-get update
- name: Set up Node.js
uses: actions/setup-node@v3
with:
cache: yarn
node-version-file: '.nvmrc'
- name: Install native Ruby dependencies
run: sudo apt-get install -y libicu-dev libidn11-dev
- name: Install additional system dependencies
run: sudo apt-get install -y ffmpeg imagemagick
- name: Set up bundler cache
uses: ruby/setup-ruby@v1
- name: Set up Ruby environment
uses: ./.github/actions/setup-ruby
with:
ruby-version: ${{ matrix.ruby-version}}
bundler-cache: true
additional-system-dependencies: ffmpeg imagemagick
- run: yarn --frozen-lockfile
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
- name: Load database schema
run: './bin/rails db:create db:schema:load db:seed'

@ -1,30 +1,74 @@
# This configuration was generated by
# `haml-lint --auto-gen-config`
# on 2023-10-11 11:31:24 -0400 using Haml-Lint version 0.51.0.
# on 2023-10-23 10:16:00 -0400 using Haml-Lint version 0.51.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: 946
# Offense count: 944
LineLength:
enabled: false
# Offense count: 22
UnnecessaryStringOutput:
enabled: false
exclude:
- 'app/views/accounts/show.html.haml'
- 'app/views/admin/custom_emojis/_custom_emoji.html.haml'
- 'app/views/admin/relays/_relay.html.haml'
- 'app/views/admin/rules/_rule.html.haml'
- 'app/views/admin/statuses/index.html.haml'
- 'app/views/auth/registrations/_session.html.haml'
- 'app/views/disputes/strikes/show.html.haml'
- 'app/views/notification_mailer/_status.html.haml'
- 'app/views/settings/two_factor_authentication_methods/index.html.haml'
- 'app/views/statuses/_detailed_status.html.haml'
- 'app/views/statuses/_poll.html.haml'
- 'app/views/statuses/_simple_status.html.haml'
- 'app/views/user_mailer/suspicious_sign_in.html.haml'
- 'app/views/user_mailer/webauthn_credential_added.html.haml'
- 'app/views/user_mailer/webauthn_credential_deleted.html.haml'
- 'app/views/user_mailer/welcome.html.haml'
# Offense count: 44
# Offense count: 45
RuboCop:
enabled: false
# Offense count: 3
ViewLength:
exclude:
- 'app/views/admin/accounts/_account.html.haml'
- 'app/views/admin/accounts/_buttons.html.haml'
- 'app/views/admin/accounts/_local_account.html.haml'
- 'app/views/admin/accounts/_remote_account.html.haml'
- 'app/views/admin/accounts/index.html.haml'
- 'app/views/admin/accounts/show.html.haml'
- 'app/views/admin/custom_emojis/index.html.haml'
- 'app/views/admin/dashboard/index.html.haml'
- 'app/views/admin/domain_blocks/confirm_suspension.html.haml'
- 'app/views/admin/follow_recommendations/show.html.haml'
- 'app/views/admin/invites/_invite.html.haml'
- 'app/views/admin/invites/index.html.haml'
- 'app/views/admin/ip_blocks/index.html.haml'
- 'app/views/admin/reports/_status.html.haml'
- 'app/views/admin/reports/show.html.haml'
- 'app/views/disputes/strikes/show.html.haml'
- 'app/views/admin/roles/_form.html.haml'
- 'app/views/admin/software_updates/index.html.haml'
- 'app/views/admin/status_edits/_status_edit.html.haml'
- 'app/views/admin/statuses/index.html.haml'
- 'app/views/admin/tags/show.html.haml'
- 'app/views/admin/trends/tags/_tag.html.haml'
- 'app/views/auth/registrations/_session.html.haml'
- 'app/views/auth/registrations/new.html.haml'
- 'app/views/auth/sessions/two_factor.html.haml'
- 'app/views/auth/shared/_progress.html.haml'
- 'app/views/disputes/strikes/_card.html.haml'
- 'app/views/filters/statuses/index.html.haml'
- 'app/views/invites/_invite.html.haml'
- 'app/views/layouts/application.html.haml'
- 'app/views/layouts/error.html.haml'
- 'app/views/statuses/_detailed_status.html.haml'
- 'app/views/statuses/_og_image.html.haml'
- 'app/views/statuses/_simple_status.html.haml'
- 'app/views/statuses_cleanup/show.html.haml'
- 'app/views/user_mailer/warning.html.haml'
# Offense count: 2
IdNames:

@ -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.56.1.
# using RuboCop version 1.57.1.
# 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
@ -217,19 +217,6 @@ Rails/ApplicationController:
Exclude:
- 'app/controllers/health_controller.rb'
# Configuration parameters: Include.
# Include: db/**/*.rb
Rails/CreateTableWithTimestamps:
Exclude:
- 'db/migrate/20170508230434_create_conversation_mutes.rb'
- 'db/migrate/20170823162448_create_status_pins.rb'
- 'db/migrate/20171116161857_create_list_accounts.rb'
- 'db/migrate/20180929222014_create_account_conversations.rb'
- 'db/migrate/20181007025445_create_pghero_space_stats.rb'
- 'db/migrate/20190103124649_create_scheduled_statuses.rb'
- 'db/migrate/20220824233535_create_status_trends.rb'
- 'db/migrate/20221006061337_create_preview_card_trends.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: Severity.
Rails/DuplicateAssociation:
@ -271,7 +258,6 @@ Rails/LexicallyScopedActionFilter:
Exclude:
- 'app/controllers/auth/passwords_controller.rb'
- 'app/controllers/auth/registrations_controller.rb'
- 'app/controllers/auth/sessions_controller.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
Rails/NegateInclude:
@ -287,7 +273,6 @@ Rails/NegateInclude:
- 'app/models/custom_filter.rb'
- 'app/services/activitypub/process_status_update_service.rb'
- 'app/services/fetch_link_card_service.rb'
- 'app/services/search_service.rb'
- 'app/workers/web/push_notification_worker.rb'
- 'lib/paperclip/color_extractor.rb'
@ -307,24 +292,6 @@ Rails/RakeEnvironment:
- 'lib/tasks/repo.rake'
- 'lib/tasks/statistics.rake'
# Configuration parameters: Include.
# Include: db/**/*.rb
Rails/ReversibleMigration:
Exclude:
- 'db/migrate/20160223164502_make_uris_nullable_in_statuses.rb'
- 'db/migrate/20161122163057_remove_unneeded_indexes.rb'
- 'db/migrate/20170205175257_remove_devices.rb'
- 'db/migrate/20170322143850_change_primary_key_to_bigint_on_statuses.rb'
- 'db/migrate/20170520145338_change_language_filter_to_opt_out.rb'
- 'db/migrate/20170609145826_remove_default_language_from_statuses.rb'
- 'db/migrate/20170711225116_fix_null_booleans.rb'
- 'db/migrate/20171129172043_add_index_on_stream_entries.rb'
- 'db/migrate/20171212195226_remove_duplicate_indexes_in_lists.rb'
- 'db/migrate/20171226094803_more_faster_index_on_notifications.rb'
- 'db/migrate/20180106000232_add_index_on_statuses_for_api_v1_accounts_account_id_statuses.rb'
- 'db/migrate/20180617162849_remove_unused_indexes.rb'
- 'db/migrate/20220827195229_change_canonical_email_blocks_nullable.rb'
# Configuration parameters: ForbiddenMethods, AllowedMethods.
# ForbiddenMethods: decrement!, decrement_counter, increment!, increment_counter, insert, insert!, insert_all, insert_all!, toggle!, touch, touch_all, update_all, update_attribute, update_column, update_columns, update_counters, upsert, upsert_all
Rails/SkipsModelValidations:
@ -377,31 +344,6 @@ Rails/SkipsModelValidations:
- 'spec/services/follow_service_spec.rb'
- 'spec/services/update_account_service_spec.rb'
# Configuration parameters: Include.
# Include: db/**/*.rb
Rails/ThreeStateBooleanColumn:
Exclude:
- 'db/migrate/20160325130944_add_admin_to_users.rb'
- 'db/migrate/20161123093447_add_sensitive_to_statuses.rb'
- 'db/migrate/20170123203248_add_reject_media_to_domain_blocks.rb'
- 'db/migrate/20170127165745_add_devise_two_factor_to_users.rb'
- 'db/migrate/20170209184350_add_reply_to_statuses.rb'
- 'db/migrate/20170330163835_create_imports.rb'
- 'db/migrate/20170905165803_add_local_to_statuses.rb'
- 'db/migrate/20171210213213_add_local_only_flag_to_statuses.rb'
- 'db/migrate/20181203021853_add_discoverable_to_accounts.rb'
- 'db/migrate/20190509164208_add_by_moderator_to_tombstone.rb'
- 'db/migrate/20190805123746_add_capabilities_to_tags.rb'
- 'db/migrate/20191212163405_add_hide_collections_to_accounts.rb'
- 'db/migrate/20200309150742_add_forwarded_to_reports.rb'
- 'db/migrate/20210609202149_create_login_activities.rb'
- 'db/migrate/20210621221010_add_skip_sign_in_token_to_users.rb'
- 'db/migrate/20211031031021_create_preview_card_providers.rb'
- 'db/migrate/20211115032527_add_trendable_to_preview_cards.rb'
- 'db/migrate/20220202200743_add_trendable_to_accounts.rb'
- 'db/migrate/20220202200926_add_trendable_to_statuses.rb'
- 'db/migrate/20220303000827_add_ordered_media_attachment_ids_to_status_edits.rb'
# Configuration parameters: Include.
# Include: app/models/**/*.rb
Rails/UniqueValidationWithoutIndex:
@ -465,7 +407,7 @@ Style/CaseEquality:
Exclude:
- 'config/initializers/trusted_proxies.rb'
# This cop supports safe autocorrection (--autocorrect).
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AllowedMethods, AllowedPatterns.
# AllowedMethods: ==, equal?, eql?
Style/ClassEqualityComparison:
@ -673,7 +615,6 @@ Style/RedundantReturn:
Style/SafeNavigation:
Exclude:
- 'app/models/concerns/account_finder_concern.rb'
- 'app/models/status.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.

@ -3,7 +3,7 @@ import { PureComponent } from 'react';
import { assetHost } from 'mastodon/utils/config';
import unicodeMapping from '../features/emoji/emoji_unicode_mapping_light';
import { unicodeMapping } from '../features/emoji/emoji_unicode_mapping_light';
export default class AutosuggestEmoji extends PureComponent {

@ -3,7 +3,11 @@ import React from 'react';
import { Router as OriginalRouter } from 'react-router';
import type { LocationDescriptor, Path } from 'history';
import type {
LocationDescriptor,
LocationDescriptorObject,
Path,
} from 'history';
import { createBrowserHistory } from 'history';
import { layoutFromWindow } from 'mastodon/is_mobile';
@ -20,39 +24,55 @@ const browserHistory = createBrowserHistory<
const originalPush = browserHistory.push.bind(browserHistory);
const originalReplace = browserHistory.replace.bind(browserHistory);
function extractRealPath(path: HistoryPath) {
if (typeof path === 'string') return path;
else return path.pathname;
function normalizePath(
path: HistoryPath,
state?: MastodonLocationState,
): LocationDescriptorObject<MastodonLocationState> {
const location = typeof path === 'string' ? { pathname: path } : { ...path };
if (location.state === undefined && state !== undefined) {
location.state = state;
} else if (
location.state !== undefined &&
state !== undefined &&
process.env.NODE_ENV === 'development'
) {
// eslint-disable-next-line no-console
console.log(
'You should avoid providing a 2nd state argument to push when the 1st argument is a location-like object that already has state; it is ignored',
);
}
if (
layoutFromWindow() === 'multi-column' &&
!location.pathname?.startsWith('/deck')
) {
location.pathname = `/deck${location.pathname}`;
}
return location;
}
browserHistory.push = (path: HistoryPath, state?: MastodonLocationState) => {
state = state ?? {};
state.fromMastodon = true;
const location = normalizePath(path, state);
const realPath = extractRealPath(path);
if (!realPath) return;
location.state = location.state ?? {};
location.state.fromMastodon = true;
if (layoutFromWindow() === 'multi-column' && !realPath.startsWith('/deck')) {
originalPush(`/deck${realPath}`, state);
} else {
originalPush(path, state);
}
originalPush(location);
};
browserHistory.replace = (path: HistoryPath, state?: MastodonLocationState) => {
if (browserHistory.location.state?.fromMastodon) {
state = state ?? {};
state.fromMastodon = true;
}
const location = normalizePath(path, state);
const realPath = extractRealPath(path);
if (!realPath) return;
if (!location.pathname) return;
if (layoutFromWindow() === 'multi-column' && !realPath.startsWith('/deck')) {
originalReplace(`/deck${realPath}`, state);
} else {
originalReplace(path, state);
if (browserHistory.location.state?.fromMastodon) {
location.state = location.state ?? {};
location.state.fromMastodon = true;
}
originalReplace(location);
};
export const Router: React.FC<PropsWithChildren> = ({ children }) => {

@ -4,7 +4,7 @@ import { assetHost } from 'mastodon/utils/config';
import { autoPlayGif } from '../../initial_state';
import unicodeMapping from './emoji_unicode_mapping_light';
import { unicodeMapping } from './emoji_unicode_mapping_light';
const trie = new Trie(Object.keys(unicodeMapping));

@ -13,15 +13,20 @@ export type Search = string;
* This could be a potential area of refactoring or error handling.
* The non-existence of 'skins' property is evident at [this location]{@link app/javascript/mastodon/features/emoji/emoji_compressed.js:121}.
*/
export type Skins = null;
type Skins = null;
export type FilenameData = string[] | string[][];
type Filename = string;
type UnicodeFilename = string;
export type FilenameData = [
filename: Filename,
unicodeFilename?: UnicodeFilename,
][];
export type ShortCodesToEmojiDataKey =
| EmojiData['id']
| BaseEmoji['native']
| keyof NimbleEmojiIndex['emojis'];
export type SearchData = [
type SearchData = [
BaseEmoji['native'],
Emoji['short_names'],
Search,
@ -32,9 +37,9 @@ export type ShortCodesToEmojiData = Record<
ShortCodesToEmojiDataKey,
[FilenameData, SearchData]
>;
export type EmojisWithoutShortCodes = FilenameData[];
type EmojisWithoutShortCodes = FilenameData;
export type EmojiCompressed = [
type EmojiCompressed = [
ShortCodesToEmojiData,
Skins,
Category[],

@ -30,22 +30,13 @@ const emojis: Emojis = {};
// decompress
Object.keys(shortCodesToEmojiData).forEach((shortCode) => {
const [_filenameData, searchData] = shortCodesToEmojiData[shortCode];
const native = searchData[0];
let short_names = searchData[1];
const search = searchData[2];
let unified = searchData[3];
const [native, short_names, search, unified] = searchData;
if (!unified) {
// unified name can be derived from unicodeToUnifiedName
unified = unicodeToUnifiedName(native);
}
if (short_names) short_names = [shortCode].concat(short_names);
emojis[shortCode] = {
native,
search,
short_names,
unified,
short_names: short_names ? [shortCode].concat(short_names) : undefined,
unified: unified ?? unicodeToUnifiedName(native),
};
});

@ -1,37 +0,0 @@
// A mapping of unicode strings to an object containing the filename
// (i.e. the svg filename) and a shortCode intended to be shown
// as a "title" attribute in an HTML element (aka tooltip).
import emojiCompressed from './emoji_compressed';
import { unicodeToFilename } from './unicode_to_filename';
const [
shortCodesToEmojiData,
_skins,
_categories,
_short_names,
emojisWithoutShortCodes,
] = emojiCompressed;
// decompress
const unicodeMapping = {};
function processEmojiMapData(emojiMapData, shortCode) {
let [ native, filename ] = emojiMapData;
if (!filename) {
// filename name can be derived from unicodeToFilename
filename = unicodeToFilename(native);
}
unicodeMapping[native] = {
shortCode: shortCode,
filename: filename,
};
}
Object.keys(shortCodesToEmojiData).forEach((shortCode) => {
let [ filenameData ] = shortCodesToEmojiData[shortCode];
filenameData.forEach(emojiMapData => processEmojiMapData(emojiMapData, shortCode));
});
emojisWithoutShortCodes.forEach(emojiMapData => processEmojiMapData(emojiMapData));
export default unicodeMapping;

@ -0,0 +1,60 @@
// A mapping of unicode strings to an object containing the filename
// (i.e. the svg filename) and a shortCode intended to be shown
// as a "title" attribute in an HTML element (aka tooltip).
import type {
FilenameData,
ShortCodesToEmojiDataKey,
} from './emoji_compressed';
import emojiCompressed from './emoji_compressed';
import { unicodeToFilename } from './unicode_to_filename';
type UnicodeMapping = {
[key in FilenameData[number][0]]: {
shortCode: ShortCodesToEmojiDataKey;
filename: FilenameData[number][number];
};
};
const [
shortCodesToEmojiData,
_skins,
_categories,
_short_names,
emojisWithoutShortCodes,
] = emojiCompressed;
// decompress
const unicodeMapping: UnicodeMapping = {};
function processEmojiMapData(
emojiMapData: FilenameData[number],
shortCode?: ShortCodesToEmojiDataKey,
) {
const [native, _filename] = emojiMapData;
let filename = emojiMapData[1];
if (!filename) {
// filename name can be derived from unicodeToFilename
filename = unicodeToFilename(native);
}
unicodeMapping[native] = {
shortCode,
filename,
};
}
Object.keys(shortCodesToEmojiData).forEach(
(shortCode: ShortCodesToEmojiDataKey) => {
if (shortCode === undefined) return;
const [filenameData, _searchData] = shortCodesToEmojiData[shortCode];
filenameData.forEach((emojiMapData) => {
processEmojiMapData(emojiMapData, shortCode);
});
},
);
emojisWithoutShortCodes.forEach((emojiMapData) => {
processEmojiMapData(emojiMapData);
});
export { unicodeMapping };

@ -18,7 +18,7 @@ import { AnimatedNumber } from 'mastodon/components/animated_number';
import { Icon } from 'mastodon/components/icon';
import { IconButton } from 'mastodon/components/icon_button';
import EmojiPickerDropdown from 'mastodon/features/compose/containers/emoji_picker_dropdown_container';
import unicodeMapping from 'mastodon/features/emoji/emoji_unicode_mapping_light';
import { unicodeMapping } from 'mastodon/features/emoji/emoji_unicode_mapping_light';
import { autoPlayGif, reduceMotion, disableSwiping, mascot } from 'mastodon/initial_state';
import { assetHost } from 'mastodon/utils/config';
import { WithRouterPropTypes } from 'mastodon/utils/react_router';

@ -534,6 +534,7 @@
"reply_indicator.cancel": "Zrušit",
"report.block": "Blokovat",
"report.block_explanation": "Neuvidíte příspěvky tohoto uživatele. On neuvidí vaše příspěvky, ani vás nebude moci sledovat. Pozná, že je blokován.",
"report.categories.legal": "Právní ustanovení",
"report.categories.other": "Ostatní",
"report.categories.spam": "Spam",
"report.categories.violation": "Obsah porušuje jedno nebo více pravidel serveru",
@ -590,6 +591,7 @@
"search_popout.options": "Možnosti hledání",
"search_popout.quick_actions": "Rychlé akce",
"search_popout.recent": "Nedávná vyhledávání",
"search_popout.specific_date": "konkrétní datum",
"search_popout.user": "uživatel",
"search_results.accounts": "Profily",
"search_results.all": "Vše",

@ -590,6 +590,7 @@
"search.quick_action.open_url": "在 Mastodon 中打開網址",
"search.quick_action.status_search": "符合的帖文 {x}",
"search.search_or_paste": "搜尋或貼上網址",
"search_popout.full_text_search_disabled_message": "在 {domain} 上無法使用。",
"search_popout.language_code": "ISO 語言代碼",
"search_popout.options": "搜尋選項",
"search_popout.quick_actions": "快速動作",

@ -662,9 +662,9 @@
"status.share": "分享",
"status.show_filter_reason": "仍要顯示",
"status.show_less": "減少顯示",
"status.show_less_all": "減少顯示這類嘟文",
"status.show_less_all": "隱藏所有內容警告與額外標籤",
"status.show_more": "顯示更多",
"status.show_more_all": "顯示更多這類嘟文",
"status.show_more_all": "顯示所有內容警告與額外標籤",
"status.show_original": "顯示原文",
"status.title.with_attachments": "{user} 嘟了 {attachmentCount, plural, other {{attachmentCount} 個附加檔案}}",
"status.translate": "翻譯",

@ -23,10 +23,7 @@ class AccountAlias < ApplicationRecord
after_create :add_to_account
after_destroy :remove_from_account
def acct=(val)
val = val.to_s.strip
super(val.start_with?('@') ? val[1..] : val)
end
normalizes :acct, with: ->(acct) { acct.strip.delete_prefix('@') }
def pretty_acct
username, domain = acct.split('@', 2)

@ -25,6 +25,8 @@ class AccountMigration < ApplicationRecord
before_validation :set_target_account
before_validation :set_followers_count
normalizes :acct, with: ->(acct) { acct.strip.delete_prefix('@') }
validates :acct, presence: true, domain: { acct: true }
validate :validate_migration_cooldown
validate :validate_target_account
@ -51,10 +53,6 @@ class AccountMigration < ApplicationRecord
created_at + COOLDOWN_PERIOD
end
def acct=(val)
super(val.to_s.strip.gsub(/\A@/, ''))
end
private
def set_target_account

@ -27,7 +27,7 @@ class AccountWarning < ApplicationRecord
suspend: 4_000,
}, _suffix: :action
before_validation :before_validate
normalizes :text, with: ->(text) { text.to_s }, apply_to_nil: true
belongs_to :account, inverse_of: :account_warnings
belongs_to :target_account, class_name: 'Account', inverse_of: :strikes
@ -50,10 +50,4 @@ class AccountWarning < ApplicationRecord
def to_log_human_identifier
target_account.acct
end
private
def before_validate
self.text = '' if text.blank?
end
end

@ -23,7 +23,7 @@ class FeaturedTag < ApplicationRecord
validate :validate_tag_uniqueness, on: :create
validate :validate_featured_tags_limit, on: :create
before_validation :strip_name
normalizes :name, with: ->(name) { name.strip.delete_prefix('#') }
before_create :set_tag
before_create :reset_data
@ -50,10 +50,6 @@ class FeaturedTag < ApplicationRecord
private
def strip_name
self.name = name&.strip&.delete_prefix('#')
end
def set_tag
self.tag = Tag.find_or_create_by_names(name)&.first
end

@ -19,7 +19,8 @@ class Relay < ApplicationRecord
scope :enabled, -> { accepted }
before_validation :strip_url
normalizes :inbox_url, with: ->(inbox_url) { inbox_url.strip }
before_destroy :ensure_disabled
alias enabled? accepted?
@ -76,8 +77,4 @@ class Relay < ApplicationRecord
def ensure_disabled
disable! if enabled?
end
def strip_url
inbox_url&.strip!
end
end

@ -3,7 +3,7 @@
- if self_destruct?
.flash-message.warning
= t('auth.status.self_destruct', domain: ENV['LOCAL_DOMAIN'])
= t('auth.status.self_destruct', domain: ENV.fetch('LOCAL_DOMAIN'))
- else
= render partial: 'status', locals: { user: @user, strikes: @strikes }

@ -3,7 +3,7 @@
.simple_form
%h1.title= t('self_destruct.title')
%p.lead= t('self_destruct.lead_html', domain: ENV['LOCAL_DOMAIN'])
%p.lead= t('self_destruct.lead_html', domain: ENV.fetch('LOCAL_DOMAIN'))
.form-footer
%ul.no-list

@ -556,6 +556,7 @@ cs:
total_reported: Hlášení o nich
total_storage: Mediální přílohy
totals_time_period_hint_html: Níže zobrazené součty zahrnují data za celou dobu.
unknown_instance: Na tomto serveru momentálně neexistuje žádný záznam o této doméně.
invites:
deactivate_all: Deaktivovat vše
filter:

@ -578,6 +578,7 @@ cy:
total_reported: Adroddiadau amdanyn nhw
total_storage: Atodiadau cyfryngau
totals_time_period_hint_html: Mae'r cyfansymiau sy'n cael eu dangos isod yn cynnwys data am y cyfnod cyfan.
unknown_instance: Nid oes cofnod o'r parth hwn ar y gweinydd hwn ar hyn o bryd.
invites:
deactivate_all: Dadweithredu popeth
filter:

@ -534,6 +534,7 @@ da:
total_reported: Anmeldelser om dem
total_storage: Medievedhæftninger
totals_time_period_hint_html: Nedenfor viste totaler omfatter data for alle tidsperioder.
unknown_instance: Der er i pt. ingen post for dette domæne på denne server.
invites:
deactivate_all: Deaktivér alle
filter:

@ -534,6 +534,7 @@ de:
total_reported: Beschwerden über sie
total_storage: Medienanhänge
totals_time_period_hint_html: Die unten angezeigten Summen enthalten Daten für alle Zeiten.
unknown_instance: Auf diesem Server gibt es derzeit keinen Eintrag dieser Domain.
invites:
deactivate_all: Alle deaktivieren
filter:
@ -1101,6 +1102,7 @@ de:
functional: Dein Konto ist voll funktionsfähig.
pending: Die Prüfung deiner Bewerbung steht noch aus. Dies kann einige Zeit in Anspruch nehmen. Sobald deine Bewerbung genehmigt wurde, erhältst du eine E-Mail.
redirecting_to: Dein Konto ist inaktiv, weil es zu %{acct} umgezogen ist.
self_destruct: Da %{domain} den Betrieb einstellen wird, wirst du nur begrenzten Zugriff auf dein Konto haben.
view_strikes: Vorherige Verstöße deines Kontos ansehen
too_fast: Formular zu schnell übermittelt. Bitte versuche es erneut.
use_security_key: Sicherheitsschlüssel verwenden
@ -1570,6 +1572,9 @@ de:
over_daily_limit: Du hast das Limit von %{limit} geplanten Beiträgen für heute erreicht
over_total_limit: Du hast das Limit für geplante Beiträge, das %{limit} beträgt, erreicht
too_soon: Das geplante Datum muss in der Zukunft liegen
self_destruct:
lead_html: Bedauerlicherweise wird <strong>%{domain}</strong> den Betrieb für immer einstellen. Wenn du dort ein Konto angelegt hast, wirst du es nicht weiter verwenden können. Du kannst allerdings eine Sicherung deiner Daten anfordern.
title: Dieser Server wird den Betrieb einstellen
sessions:
activity: Letzte Aktivität
browser: Browser
@ -1769,7 +1774,7 @@ de:
subject: Dein Einspruch vom %{date} wurde abgelehnt
title: Einspruch abgelehnt
backup_ready:
explanation: Du hast eine vollständige Sicherung deines Mastodon-Kontos angefordert. Das Backup kann jetzt heruntergeladen werden!
explanation: Du hast eine vollständige Sicherung deines Mastodon-Kontos angefordert. Die Sicherung kann jetzt heruntergeladen werden!
subject: Dein persönliches Archiv kann heruntergeladen werden
title: Archiv-Download
suspicious_sign_in:

@ -534,6 +534,7 @@ es-AR:
total_reported: Denuncias sobre ellas
total_storage: Adjuntos
totals_time_period_hint_html: Los datos totales mostrados a continuación incluyen datos para todo el tiempo.
unknown_instance: Actualmente no hay ningún registro de este dominio en este servidor.
invites:
deactivate_all: Desactivar todas
filter:
@ -1101,6 +1102,7 @@ es-AR:
functional: Tu cuenta está totalmente operativa.
pending: Tu solicitud está pendiente de revisión por nuestra administración. Eso puede tardar algún tiempo. Si se aprueba tu solicitud, vas a recibir un correo electrónico.
redirecting_to: Tu cuenta se encuentra inactiva porque está siendo redirigida a %{acct}.
self_destruct: Como %{domain} está en proceso de cierre, solo tendrás acceso limitado a tu cuenta.
view_strikes: Ver incumplimientos pasados contra tu cuenta
too_fast: Formulario enviado demasiado rápido, probá de nuevo.
use_security_key: Usar la llave de seguridad
@ -1570,6 +1572,9 @@ es-AR:
over_daily_limit: Superaste el límite de %{limit} mensajes programados para ese día
over_total_limit: Superaste el límite de %{limit} mensajes programados
too_soon: La fecha programada debe estar en el futuro
self_destruct:
lead_html: Desafortunadamente, <strong>%{domain}</strong> va a cerrar permanentemente. Si tenías una cuenta ahí, no podrás continuar usándola, pero aún podés solicitar una copia de tus datos.
title: Este servidor está cerrando
sessions:
activity: Última actividad
browser: Navegador web

@ -534,6 +534,7 @@ es-MX:
total_reported: Informes sobre ellas
total_storage: Archivos multimedia
totals_time_period_hint_html: Los totales mostrados a continuación incluyen datos para todo el tiempo.
unknown_instance: Actualmente no hay registros de este dominio en el servidor.
invites:
deactivate_all: Desactivar todos
filter:
@ -1101,6 +1102,7 @@ es-MX:
functional: Tu cuenta está completamente operativa.
pending: Su solicitud está pendiente de revisión por nuestros administradores. Eso puede tardar algún tiempo. Usted recibirá un correo electrónico si el solicitud sea aprobada.
redirecting_to: Tu cuenta se encuentra inactiva porque está siendo redirigida a %{acct}.
self_destruct: Como %{domain} está cerrando, solo tendrás acceso limitado a tu cuenta.
view_strikes: Ver amonestaciones pasadas contra tu cuenta
too_fast: Formulario enviado demasiado rápido, inténtelo de nuevo.
use_security_key: Usar la clave de seguridad
@ -1570,6 +1572,9 @@ es-MX:
over_daily_limit: Ha superado el límite de %{limit} toots programados para ese día
over_total_limit: Ha superado el límite de %{limit} toots programados
too_soon: La fecha programada debe estar en el futuro
self_destruct:
lead_html: Desafortunadamente, <strong>%{domain}</strong> está cerrando de manera permanente. Si tenías una cuenta ahí, no puedes continuar utilizándolo, pero puedes solicitar un respaldo de tus datos.
title: Este servidor está cerrando
sessions:
activity: Última actividad
browser: Navegador

@ -534,6 +534,7 @@ es:
total_reported: Informes sobre ellas
total_storage: Archivos multimedia
totals_time_period_hint_html: Los totales mostrados a continuación incluyen datos para todo el tiempo.
unknown_instance: Actualmente no hay ningún registro de este dominio en este servidor.
invites:
deactivate_all: Desactivar todos
filter:
@ -1101,6 +1102,7 @@ es:
functional: Tu cuenta está completamente operativa.
pending: Su solicitud está pendiente de revisión por nuestros administradores. Eso puede tardar algún tiempo. Usted recibirá un correo electrónico si el solicitud sea aprobada.
redirecting_to: Tu cuenta se encuentra inactiva porque está siendo redirigida a %{acct}.
self_destruct: Como %{domain} está en proceso de cierre, solo tendrás acceso limitado a tu cuenta.
view_strikes: Ver amonestaciones pasadas contra tu cuenta
too_fast: Formulario enviado demasiado rápido, inténtelo de nuevo.
use_security_key: Usar la clave de seguridad
@ -1570,6 +1572,9 @@ es:
over_daily_limit: Ha superado el límite de %{limit} publicaciones programadas para ese día
over_total_limit: Ha superado el límite de %{limit} publicaciones programadas
too_soon: La fecha programada debe estar en el futuro
self_destruct:
lead_html: Desafortunadamente, <strong>%{domain}</strong> va a cerrar permanentemente. Si tenías una cuenta allí, no podrás continuar usándola, pero aún puedes solicitar una copia de tus datos.
title: Este servidor está cerrando
sessions:
activity: Última actividad
browser: Navegador

@ -536,6 +536,7 @@ eu:
total_reported: Heiei buruzko txostenak
total_storage: Multimedia eranskinak
totals_time_period_hint_html: Behean bistaratutako guztizkoek datu guztiak hartzen dituzte barne.
unknown_instance: Ez dago domeinu honen erregistrorik zerbitzarian orain.
invites:
deactivate_all: Desgaitu guztiak
filter:
@ -1093,6 +1094,7 @@ eu:
functional: Zure kontua guztiz erabilgarri dago.
pending: Zure eskaera gainbegiratzeko dago oraindik. Honek denbora behar lezake. Zure eskaera onartzen bada e-mail bat jasoko duzu.
redirecting_to: Zure kontua ez dago aktibo orain %{acct} kontura birbideratzen duelako.
self_destruct: "%{domain} domeinua itxiko denez, konturako sarbide mugatua soilik izango duzu."
view_strikes: Ikusi zure kontuaren aurkako neurriak
too_fast: Formularioa azkarregi bidali duzu, saiatu berriro.
use_security_key: Erabili segurtasun gakoa
@ -1564,6 +1566,9 @@ eu:
over_daily_limit: 'Egun horretarako programatutako bidalketa kopuruaren muga gainditu duzu: %{limit}'
over_total_limit: 'Programatutako bidalketa kopuruaren muga gainditu duzu: %{limit}'
too_soon: Programatutako data etorkizunean egon behar du
self_destruct:
lead_html: Zoritxarrez, <strong>%{domain}</strong> betirako itxiko da. Kontu bat baduzu bertan, ezin izango duzu erabiltzen jarraitu, baina, oraindik zure datuen babeskopia bat eska dezakezu.
title: Zerbitzari hau ixtear dago
sessions:
activity: Azken jarduera
browser: Nabigatzailea
@ -1733,6 +1738,10 @@ eu:
month: "%Y(e)ko %b"
time: "%H:%M"
with_time_zone: "%Y(e)ko %b %d, %H:%M %Z"
translation:
errors:
quota_exceeded: Zerbitzari osoko itzulpen-zerbitzuaren erabileraren kuota gainditu da.
too_many_requests: Itzulpen-zerbitzurako eskaera gehiegi egon dira berriki.
two_factor_authentication:
add: Gehitu
disable: Desgaitu

@ -534,6 +534,7 @@ fi:
total_reported: Niitä koskevat raportit
total_storage: Medialiitteet
totals_time_period_hint_html: Alla näkyvät yhteenlasketut tiedot sisältävät koko ajan.
unknown_instance: Tällä palvelimella ei ole tällä hetkellä tähän verkkotunnukseen liittyviä tietueita.
invites:
deactivate_all: Poista kaikki käytöstä
filter:
@ -1101,6 +1102,7 @@ fi:
functional: Tilisi on täysin toiminnassa.
pending: Hakemuksesi odottaa henkilökuntamme tarkastusta. Tämä voi kestää jonkin aikaa. Saat sähköpostiviestin, jos hakemuksesi hyväksytään.
redirecting_to: Tilisi ei ole aktiivinen, koska se ohjaa tällä hetkellä tilille %{acct}.
self_destruct: Koska %{domain} sulkeutuu, voit käyttää tiliäsi vain rajoitetusti.
view_strikes: Näytä tiliäsi koskevia aiempia varoituksia
too_fast: Lomake lähetettiin liian nopeasti, yritä uudelleen.
use_security_key: Käytä suojausavainta
@ -1570,6 +1572,9 @@ fi:
over_daily_limit: Olet ylittänyt %{limit} ajoitetun julkaisun rajan tälle päivälle
over_total_limit: Olet ylittänyt %{limit} ajoitetun julkaisun rajan
too_soon: Ajoitetun päiväyksen pitää olla tulevaisuudessa
self_destruct:
lead_html: Valitettavasti <strong>%{domain}</strong> sulkeutuu pysyvästi. Jos sinulla on siellä tili, et voi jatkaa sen käyttöä mutta voit yhä pyytää varmuuskopiota tiedoistasi.
title: Tämä palvelin sulkeutuu
sessions:
activity: Viimeisin toiminta
browser: Selain

@ -534,6 +534,7 @@ fo:
total_reported: Meldingar um tey
total_storage: Viðheftir miðlar
totals_time_period_hint_html: Við í samanteljingunum niðanfyri eru dátur frá byrjan av.
unknown_instance: Í løtuni er hetta navnaøkið ikki skrásett á hesum ambætaranum.
invites:
deactivate_all: Ger allar óvirknar
filter:
@ -1101,6 +1102,7 @@ fo:
functional: Konta tín er fult virkin.
pending: Umsókn tín verður eftirkannað av okkara starvsfeløgum. Tað kann taka eina løtu. Tú móttekur eitt teldubræv, um umsóknin er góðkend.
redirecting_to: Konta tín er óvirkin, tí í løtuni verður hon víðaribeind til %{acct}.
self_destruct: Av tí at %{domain} er í ferð við at lukka, fært tú einans avmarkaða atgongd til tína kontu.
view_strikes: Vís eldri atsóknir móti tíni kontu
too_fast: Oyðublaðið innsent ov skjótt, royn aftur.
use_security_key: Brúka trygdarlykil
@ -1570,6 +1572,9 @@ fo:
over_daily_limit: Tú er komin at markinum, sum er %{limit} skrálagdir postar, í dag
over_total_limit: Tú er komin at markinum, sum er %{limit} skrálagdir postar
too_soon: Ætlanardagfestingin má vera í framtíðini
self_destruct:
lead_html: Tíverri, <strong>%{domain}</strong> er í ferð við at blíva lukkað niður med alla. Um tú hevði eina kontu har, so ber ikki til framhaldandi at brúka hana, men tú kann framvegis biðja um trygdaravrit av tínum dátum.
title: Hesin ambætarin er í ferð við at lukka
sessions:
activity: Seinasta virksemi
browser: Kagi

@ -534,6 +534,7 @@ fr-QC:
total_reported: Signalements à leur sujet
total_storage: Attachements de média
totals_time_period_hint_html: Les totaux affichés ci-dessous incluent des données sans limite de temps.
unknown_instance: Il ny a actuellement aucune trace de ce domaine sur ce serveur.
invites:
deactivate_all: Tout désactiver
filter:
@ -1101,6 +1102,7 @@ fr-QC:
functional: Votre compte est entièrement opérationnel.
pending: Votre demande est en attente d'examen par notre personnel. Cela peut prendre un certain temps. Vous recevrez un courriel si votre demande est approuvée.
redirecting_to: Votre compte est inactif car il est actuellement redirigé vers %{acct}.
self_destruct: Comme %{domain} est en train de fermer, vous naurez quun accès limité à votre compte.
view_strikes: Voir les sanctions précédemment appliquées à votre compte
too_fast: Formulaire envoyé trop rapidement, veuillez réessayer.
use_security_key: Utiliser la clé de sécurité
@ -1570,6 +1572,9 @@ fr-QC:
over_daily_limit: Vous avez dépassé la limite de %{limit} messages planifiés par jour
over_total_limit: Vous avez dépassé la limite de %{limit} messages planifiés
too_soon: La date planifiée doit être dans le futur
self_destruct:
lead_html: Malheureusement, <strong>%{domain}</strong> ferme définitivement. Si vous y aviez un compte, vous ne pourrez pas continuer à lutiliser, mais vous pouvez toujours demander une sauvegarde de vos données.
title: Ce serveur est en cours de fermeture
sessions:
activity: Dernière activité
browser: Navigateur

@ -534,6 +534,7 @@ fr:
total_reported: Signalements à leur sujet
total_storage: Attachements de média
totals_time_period_hint_html: Les totaux affichés ci-dessous incluent des données sans limite de temps.
unknown_instance: Il ny a actuellement aucune trace de ce domaine sur ce serveur.
invites:
deactivate_all: Tout désactiver
filter:
@ -1101,6 +1102,7 @@ fr:
functional: Votre compte est entièrement opérationnel.
pending: Votre demande est en attente d'examen par notre personnel. Cela peut prendre un certain temps. Vous recevrez un courriel si votre demande est approuvée.
redirecting_to: Votre compte est inactif car il est actuellement redirigé vers %{acct}.
self_destruct: Comme %{domain} est en train de fermer, vous naurez quun accès limité à votre compte.
view_strikes: Voir les sanctions précédemment appliquées à votre compte
too_fast: Formulaire envoyé trop rapidement, veuillez réessayer.
use_security_key: Utiliser la clé de sécurité
@ -1570,6 +1572,9 @@ fr:
over_daily_limit: Vous avez dépassé la limite de %{limit} messages planifiés par jour
over_total_limit: Vous avez dépassé la limite de %{limit} messages planifiés
too_soon: La date planifiée doit être dans le futur
self_destruct:
lead_html: Malheureusement, <strong>%{domain}</strong> ferme définitivement. Si vous y aviez un compte, vous ne pourrez pas continuer à lutiliser, mais vous pouvez toujours demander une sauvegarde de vos données.
title: Ce serveur est en cours de fermeture
sessions:
activity: Dernière activité
browser: Navigateur

@ -534,6 +534,7 @@ fy:
total_reported: Rapportaazjes oer harren
total_storage: Mediabylagen
totals_time_period_hint_html: De hjirûnder toande totalen befetsje gegevens sûnt it begjin.
unknown_instance: Der binne op dit stuit gjin gegevens fan dit domein op dizze server.
invites:
deactivate_all: Alles deaktivearje
filter:
@ -1101,6 +1102,7 @@ fy:
functional: Jo account kin folslein brûkt wurde.
pending: Jo oanfraach moat noch beoardiele wurde troch ien fan ús meiwurkers. Dit kin miskien efkes duorje. Jo ûntfangt in e-mailberjocht wanneart jo oanfraach goedkard is.
redirecting_to: Jo account is ynaktyf, omdat it op dit stuit trochferwezen wurdt nei %{acct}.
self_destruct: Omdat %{domain} sluten sil, krije jo mar beheind tagong ta jo account.
view_strikes: Besjoch de earder troch moderatoaren fêststelde skeiningen dyt jo makke hawwe
too_fast: Formulier is te fluch yntsjinne. Probearje it nochris.
use_security_key: Befeiligingskaai brûke
@ -1570,6 +1572,9 @@ fy:
over_daily_limit: Jo binne oer de limyt fan %{limit} yn te plannen berjochten foar hjoed
over_total_limit: Jo binne oer de limyt fan %{limit} yn te plannen berjochten
too_soon: De datum foar it ynplande berjocht moat yn de takomst lizze
self_destruct:
lead_html: Spitigernôch sil <strong>%{domain}</strong> permanint ôfslute. As jo dêr in account hiene, kinne jo dizze net mear brûke, mar jo kinne noch hieltyd in reservekopy fan jo gegevens opfreegje.
title: Deze server sil ôfslute
sessions:
activity: Lêst warber
browser: Browser

@ -534,6 +534,7 @@ hu:
total_reported: Bejelentés róluk
total_storage: Média csatolmány
totals_time_period_hint_html: Az alább mutatott összesítések minden eddigi adatot tartalmaznak.
unknown_instance: Jelenleg nincs rekord erről a domainről ezen a kiszolgálón.
invites:
deactivate_all: Összes deaktiválása
filter:

@ -534,6 +534,7 @@ is:
total_reported: Kærur um þá
total_storage: Myndaviðhengi
totals_time_period_hint_html: Samtölurnar sem birtar eru hér fyrir neðan innihalda gögn frá upphafi.
unknown_instance: Í augnablikinu er engin færsla um þetta lén á þessum netþjóni.
invites:
deactivate_all: Gera allt óvirkt
filter:
@ -1105,6 +1106,7 @@ is:
functional: Notandaaðgangurinn þinn er með fulla virkni.
pending: Umsóknin þín bíður eftir að starfsfólkið okkar fari yfir hana. Það gæti tekið nokkurn tíma. Þú munt fá tölvupóst ef umsóknin er samþykkt.
redirecting_to: Notandaaðgangurinn þinn er óvirkur vegna þess að hann endurbeinist á %{acct}.
self_destruct: Þar sem %{domain} er að hætta starfsemi, muntu aðeins halda takmörkuðum aðgangi að aðgangnum þínum.
view_strikes: Skoða fyrri bönn notandaaðgangsins þíns
too_fast: Innfyllingarform sent inn of hratt, prófaðu aftur.
use_security_key: Nota öryggislykil
@ -1574,6 +1576,9 @@ is:
over_daily_limit: Þú hefur farið fram úr hámarkinu með %{limit} áætlaðar færslur fyrir þennan dag
over_total_limit: Þú hefur farið fram úr hámarkinu með %{limit} áætlaðar færslur
too_soon: Áætluð dagsetning verður að vera í framtíðinni
self_destruct:
lead_html: Því miður, <strong>%{domain}</strong> er að hætta starfsemi endanlega. Ef þú varst með aðgang þar, muntu ekki geta haldið áfram að nota hann, en þú getur áfram beðið um afrit af gögnunum þínum.
title: Þessi netþjónn er að hætta starfsemi
sessions:
activity: Síðasta virkni
browser: Vafri

@ -534,6 +534,7 @@ it:
total_reported: Segnalazioni su di loro
total_storage: Media allegati
totals_time_period_hint_html: I totali sotto visualizzati includono i dati per tutti i tempi.
unknown_instance: Al momento non c'è alcun documento di questo dominio su questo server.
invites:
deactivate_all: Disattiva tutto
filter:
@ -1103,6 +1104,7 @@ it:
functional: Il tuo profilo è completamente operativo.
pending: La tua richiesta è in attesa di esame da parte del nostro staff. Potrebbe richiedere un po' di tempo. Riceverai una e-mail se la richiesta è approvata.
redirecting_to: Il tuo account è inattivo perché attualmente reindirizza a %{acct}.
self_destruct: Poiché %{domain} sta chiudendo, otterrai solo un accesso limitato al tuo account.
view_strikes: Visualizza le sanzioni precedenti prese nei confronti del tuo account
too_fast: Modulo inviato troppo velocemente, riprova.
use_security_key: Usa la chiave di sicurezza
@ -1572,6 +1574,9 @@ it:
over_daily_limit: Hai superato il limite di %{limit} post programmati per questo giorno
over_total_limit: Hai superato il limite di %{limit} post programmati
too_soon: La data di pubblicazione deve essere nel futuro
self_destruct:
lead_html: Sfortunatamente, <strong>%{domain}</strong> sta chiudendo definitivamente. Se hai un account lì, non potrai continuare a usarlo, ma puoi ancora richiedere un backup dei tuoi dati.
title: Questo server sta chiudendo
sessions:
activity: Ultima attività
browser: Browser

@ -523,6 +523,7 @@ ja:
total_reported: 通報合計
total_storage: 添付されたメディア
totals_time_period_hint_html: 以下に表示される合計には、すべての時間のデータが含まれています。
unknown_instance: 今のところ、このドメインについては何も記録されていません。
invites:
deactivate_all: すべて無効化
filter:
@ -1083,6 +1084,7 @@ ja:
functional: アカウントは完全に機能しています。
pending: あなたの申請は現在サーバー管理者による審査待ちです。これにはしばらくかかります。申請が承認されるとメールが届きます。
redirecting_to: アカウントは%{acct}に引っ越し設定されているため非アクティブになっています。
self_destruct: "%{domain} は閉鎖されるため、今後このアカウントでは限られた操作しかできません。"
view_strikes: 過去のストライクを表示
too_fast: フォームの送信が速すぎます。もう一度やり直してください。
use_security_key: セキュリティキーを使用
@ -1544,6 +1546,9 @@ ja:
over_daily_limit: その日予約できる投稿数 %{limit}を超えています
over_total_limit: 予約できる投稿数 %{limit}を超えています
too_soon: より先の時間を指定してください
self_destruct:
lead_html: 残念ながら、<strong>%{domain}</strong> は恒久的に閉鎖されます。ここにお持ちだったアカウントを今後使うことはできませんが、これまでのデータのバックアップを要求することはまだ可能です。
title: このサーバーは閉鎖されます
sessions:
activity: 最後のアクティビティ
browser: ブラウザ

@ -525,6 +525,7 @@ ko:
total_reported: 이들에 대한 신고
total_storage: 미디어 첨부
totals_time_period_hint_html: 아래에 표시된 총계에는 모든 시간에 대한 데이터가 포함됩니다.
unknown_instance: 현재 이곳 서버에서 해당 도메인의 레코드는 없습니다.
invites:
deactivate_all: 전부 비활성화
filter:
@ -1085,6 +1086,7 @@ ko:
functional: 계정이 완벽히 작동합니다.
pending: 당신의 가입 신청은 스태프의 검사를 위해 대기 중입니다. 시간이 조금 걸릴 수 있습니다. 가입 신청이 승인되면 이메일을 받게 됩니다.
redirecting_to: 계정이 %{acct}로 리다이렉트 중이기 때문에 비활성 상태입니다.
self_destruct: "%{domain} 도메인을 폐쇄하며, 계정에는 제한된 접근만 할 수 있습니다."
view_strikes: 내 계정에 대한 과거 중재 기록 보기
too_fast: 너무 빠르게 양식이 제출되었습니다, 다시 시도하세요.
use_security_key: 보안 키 사용
@ -1546,6 +1548,9 @@ ko:
over_daily_limit: 그 날짜에 대한 %{limit}개의 예약 게시물 제한을 초과합니다
over_total_limit: 예약 게시물 제한 %{limit}을 초과합니다
too_soon: 예약 날짜는 미래여야 합니다
self_destruct:
lead_html: 안타깝게도, <strong>%{domain}</strong> 도메인을 영구히 폐쇄합니다. 이곳의 계정을 가졌다면, 이제 이용할 수 없으며, 당분간 백업 데이터를 요청할 수 있습니다.
title: 이곳 서버를 폐쇄
sessions:
activity: 최근 활동
browser: 브라우저

@ -534,6 +534,7 @@ nl:
total_reported: Rapportages over hun
total_storage: Mediabijlagen
totals_time_period_hint_html: De hieronder getoonde totalen bevatten gegevens sinds het begin.
unknown_instance: Er zijn momenteel geen gegevens van dit domein op deze server.
invites:
deactivate_all: Alles deactiveren
filter:
@ -1101,6 +1102,7 @@ nl:
functional: Jouw account kan in diens geheel gebruikt worden.
pending: Jouw aanvraag moet nog worden beoordeeld door een van onze medewerkers. Dit kan misschien eventjes duren. Je ontvangt een e-mail wanneer jouw aanvraag is goedgekeurd.
redirecting_to: Jouw account is inactief omdat het momenteel wordt doorverwezen naar %{acct}.
self_destruct: Omdat %{domain} gaat sluiten, krijgt u slechts beperkt toegang tot uw account.
view_strikes: Bekijk de eerder door moderatoren vastgestelde overtredingen die je hebt gemaakt
too_fast: Formulier is te snel ingediend. Probeer het nogmaals.
use_security_key: Beveiligingssleutel gebruiken
@ -1570,6 +1572,9 @@ nl:
over_daily_limit: Je hebt de limiet van %{limit} in te plannen berichten voor vandaag overschreden
over_total_limit: Je hebt de limiet van %{limit} in te plannen berichten overschreden
too_soon: De datum voor het ingeplande bericht moet in de toekomst liggen
self_destruct:
lead_html: Helaas gaat <strong>%{domain}</strong> permanent afsluiten. Als u daar een account had, kunt u deze niet meer gebruiken, maar u kunt nog steeds een back-up van uw gegevens opvragen.
title: Deze server gaat afsluiten
sessions:
activity: Laatst actief
browser: Webbrowser

@ -556,6 +556,7 @@ pl:
total_reported: Zgłoszenia dotyczące ich
total_storage: Załączniki multimedialne
totals_time_period_hint_html: Poniższe sumy zawierają dane od początku serwera.
unknown_instance: Obecnie ta domena jest nieznana na tym serwerze.
invites:
deactivate_all: Unieważnij wszystkie
filter:
@ -1137,6 +1138,7 @@ pl:
functional: Twoje konto jest w pełni funkcjonalne.
pending: Twoje zgłoszenie czeka na zatwierdzenie przez nas. Może to trochę potrwać. Jeżeli zgłoszenie zostanie przyjęte, otrzymasz wiadomość e-mail.
redirecting_to: Twoje konto jest nieaktywne, ponieważ obecnie przekierowuje je na %{acct}.
self_destruct: "%{domain} jest zamykane, dostęp do konta będzie ograniczony."
view_strikes: Zobacz dawne ostrzeżenia nałożone na twoje konto
too_fast: Zbyt szybko przesłano formularz, spróbuj ponownie.
use_security_key: Użyj klucza bezpieczeństwa
@ -1622,6 +1624,9 @@ pl:
over_daily_limit: Przekroczyłeś(-aś) limit %{limit} zaplanowanych wpisów na ten dzień
over_total_limit: Przekroczyłeś(-aś) limit %{limit} zaplanowanych wpisów
too_soon: Zaplanowana data musi wypadać w przyszłości
self_destruct:
lead_html: Niestety, <strong>%{domain}</strong> jest permanentnie zamykane. Konta z tego serwera nie będą dostępne, ale można jeszcze odzyskać kopię zapasową danych.
title: Ten serwer jest zamykany
sessions:
activity: Ostatnia aktywność
browser: Przeglądarka

@ -1101,6 +1101,7 @@ pt-BR:
functional: Sua conta está totalmente operacional.
pending: Sua solicitação está com revisão pendente por parte de nossa equipe. Você receberá um e-mail se ela for aprovada.
redirecting_to: Sua conta está inativa porque atualmente está redirecionando para %{acct}.
self_destruct: Como %{domain} está se encerrando, você só terá acesso limitado à sua conta.
view_strikes: Veja os avisos anteriores em relação à sua conta
too_fast: O formulário foi enviado muito rapidamente, tente novamente.
use_security_key: Usar chave de segurança
@ -1570,6 +1571,9 @@ pt-BR:
over_daily_limit: Você excedeu o limite de %{limit} publicações agendadas para esse dia
over_total_limit: Você excedeu o limite de %{limit} publicações agendadas
too_soon: A data agendada precisa ser no futuro
self_destruct:
lead_html: Infelizmente, <strong>%{domain}</strong> está se encerrando de forma permanente. Se você tem uma conta lá, não poderá continuar a usá-la, mas ainda pode solicitar uma cópia dos seus dados.
title: Este servidor está sendo fechado
sessions:
activity: Última atividade
browser: Navegador

@ -534,6 +534,7 @@ pt-PT:
total_reported: Denúncias sobre eles
total_storage: Anexos de media
totals_time_period_hint_html: Os totais exibidos abaixo incluem dados referentes ao tempo total.
unknown_instance: Atualmente não há registo deste domínio neste servidor.
invites:
deactivate_all: Desativar todos
filter:
@ -1101,6 +1102,7 @@ pt-PT:
functional: A sua conta está totalmente operacional.
pending: A sua inscrição está pendente de revisão pela nossa equipa. Isso pode demorar algum tempo. Receberá um e-mail se a sua conta for aprovada.
redirecting_to: A sua conta está inativa porque está atualmente a ser redirecionada para %{acct}.
self_destruct: Como %{domain} vai fechar, só terá acesso limitado à sua conta.
view_strikes: Veja as reprimendas anteriores sobre a sua conta
too_fast: Formulário enviado demasiado rapidamente, tente novamente.
use_security_key: Usar chave de segurança
@ -1570,6 +1572,9 @@ pt-PT:
over_daily_limit: Excedeste o limite de %{limit} publicações agendadas para esse dia
over_total_limit: Tu excedeste o limite de %{limit} publicações agendadas
too_soon: A data de agendamento tem de ser futura
self_destruct:
lead_html: Infelizmente, <strong>%{domain}</strong> vai fechar definitivamente. Se lá tinha conta, não pode continuar a usá-la, mas ainda pode pedir uma cópia dos seus dados.
title: Este servidor vai fechar
sessions:
activity: Última atividade
browser: Navegador

@ -116,7 +116,7 @@ zh-TW:
sign_up_requires_approval: 新註冊申請需要先經過您的審核
severity: 請選擇將如何處理來自這個 IP 位址的請求
rule:
text: 說明使用者此伺服器上需遵守的規則或條款。試著維持各項條款簡短而明瞭。
text: 說明使用者此伺服器上需遵守的規則或條款。試著維持各項條款簡短而明瞭。
sessions:
otp: 請輸入產生自您手機 App 的兩階段驗證碼,或輸入其中一個備用驗證碼:
webauthn: 如果它是 USB 安全金鑰的話,請確認已正確插入,如有需要請觸擊。

@ -1,7 +1,7 @@
---
sl:
about:
about_mastodon_html: 'Družbeno omrežje prihodnosti: brez oglasov, brez nadzora korporacij, etično oblikovanje in decentralizacija! Ohranite lastništvo nad svojimi podatki z Mastodonom!'
about_mastodon_html: 'Družbeno omrežje prihodnosti: brez oglasov, brez nadzora korporacij, etično oblikovano in decentralizirano! Ohranite lastništvo nad svojimi podatki z Mastodonom!'
contact_missing: Ni nastavljeno
contact_unavailable: Ni na voljo
hosted_on: Mastodon gostuje na %{domain}

@ -545,6 +545,7 @@ sr-Latn:
total_reported: Prijave vezane za njih
total_storage: Multimedijalni prilozi
totals_time_period_hint_html: Ukupne vrednosti prikazane ispod uključuju podatke za sva vremena.
unknown_instance: Trenutno ne postoji zapis o ovom domenu na ovom serveru.
invites:
deactivate_all: Deaktiviraj sve
filter:
@ -1119,6 +1120,7 @@ sr-Latn:
functional: Vaš nalog je potpuno operativan.
pending: Vaš zahtev je na čekanju za pregled od strane našeg osoblja. Ovo može potrajati neko vreme. Primićete imejl poruku ukoliko Vam zahtev bude odobren.
redirecting_to: Vaš nalog je neaktivan jer preusmerava na %{acct}.
self_destruct: Pošto se %{domain} zatvara, dobićete samo ograničen pristup svom nalogu.
view_strikes: Pogledajte prethodne prestupe upisane na Vaše ime
too_fast: Formular je podnet prebrzo, pokušajte ponovo.
use_security_key: Koristite sigurnosni ključ
@ -1596,6 +1598,9 @@ sr-Latn:
over_daily_limit: Prekoračili ste granicu od %{limit} planiranih objava za danas
over_total_limit: Prekoračili ste granicu od %{limit} planiranih objava
too_soon: Planirani datum mora biti u budućnosti
self_destruct:
lead_html: Nažalost, <strong>%{domain}</strong> se trajno zatvara. Ako ste tamo imali nalog, nećete moći da nastavite da ga koristite, ali i dalje možete da zatražite rezervnu kopiju svojih podataka.
title: Ovaj server se zatvara
sessions:
activity: Poslednja aktivnost
browser: Veb čitač

@ -545,6 +545,7 @@ sr:
total_reported: Пријаве везане за њих
total_storage: Мултимедијални прилози
totals_time_period_hint_html: Укупне вредности приказане испод укључују податке за сва времена.
unknown_instance: Тренутно не постоји запис о овом домену на овом серверу.
invites:
deactivate_all: Деактивирај све
filter:
@ -1119,6 +1120,7 @@ sr:
functional: Ваш налог је потпуно оперативан.
pending: Ваш захтев је на чекању за преглед од стране нашег особља. Ово може потрајати неко време. Примићете имејл поруку уколико Вам захтев буде одобрен.
redirecting_to: Ваш налог је неактиван јер преусмерава на %{acct}.
self_destruct: Пошто се %{domain} затвара, добићете само ограничен приступ свом налогу.
view_strikes: Погледајте претходне преступе уписане на Ваше име
too_fast: Формулар је поднет пребрзо, покушајте поново.
use_security_key: Користите сигурносни кључ
@ -1596,6 +1598,9 @@ sr:
over_daily_limit: Прекорачили сте границу од %{limit} планираних објава за данас
over_total_limit: Прекорачили сте границу од %{limit} планираних објава
too_soon: Планирани датум мора бити у будућности
self_destruct:
lead_html: Нажалост, <strong>%{domain}</strong> се трајно затвара. Ако сте тамо имали налог, нећете моћи да наставите да га користите, али и даље можете да затражите резервну копију својих података.
title: Овај сервер се затвара
sessions:
activity: Последња активност
browser: Веб читач

@ -1101,6 +1101,7 @@ sv:
functional: Ditt konto fungerar som det ska.
pending: Din ansökan inväntar granskning. Detta kan ta tid. Du kommer att få ett e-postmeddelande om din ansökan godkänns.
redirecting_to: Ditt konto är inaktivt eftersom det för närvarande dirigeras om till %{acct}.
self_destruct: Eftersom %{domain} håller på att stängas ned, kommer du endast att ha begränsad tillgång till ditt konto.
view_strikes: Visa tidigare prickar på ditt konto
too_fast: Formuläret har skickats för snabbt, försök igen.
use_security_key: Använd säkerhetsnyckel
@ -1570,6 +1571,8 @@ sv:
over_daily_limit: Du har överskridit dygnsgränsen på %{limit} schemalagda inlägg
over_total_limit: Du har överskridit gränsen på %{limit} schemalagda inlägg
too_soon: Schemaläggningsdatumet måste vara i framtiden
self_destruct:
lead_html: Tyvärr stänger <strong>%{domain}</strong> för gott. Om du hade ett konto där kommer du inte längre kunna använda det, men du kan fortfarande begära en säkerhetskopia av din data.
sessions:
activity: Senaste aktivitet
browser: Webbläsare

@ -523,6 +523,7 @@ th:
total_reported: รายงานเกี่ยวกับเขา
total_storage: ไฟล์แนบสื่อ
totals_time_period_hint_html: ยอดรวมที่แสดงด้านล่างรวมข้อมูลสำหรับเวลาทั้งหมด
unknown_instance: ไม่มีระเบียนของโดเมนนี้ในเซิร์ฟเวอร์นี้ในปัจจุบัน
invites:
deactivate_all: ปิดใช้งานทั้งหมด
filter:
@ -1083,6 +1084,7 @@ th:
functional: บัญชีของคุณทำงานได้อย่างเต็มที่
pending: ใบสมัครของคุณกำลังรอดำเนินการตรวจทานโดยพนักงานของเรา นี่อาจใช้เวลาสักครู่ คุณจะได้รับอีเมลหากมีการอนุมัติใบสมัครของคุณ
redirecting_to: บัญชีของคุณไม่ได้ใช้งานเนื่องจากบัญชีกำลังเปลี่ยนเส้นทางไปยัง %{acct} ในปัจจุบัน
self_destruct: เนื่องจาก %{domain} กำลังปิดตัวลง คุณจะได้รับการเข้าถึงบัญชีของคุณแบบจำกัดเท่านั้น
view_strikes: ดูการดำเนินการที่ผ่านมาต่อบัญชีของคุณ
too_fast: ส่งแบบฟอร์มเร็วเกินไป ลองอีกครั้ง
use_security_key: ใช้กุญแจความปลอดภัย
@ -1544,6 +1546,9 @@ th:
over_daily_limit: คุณมีโพสต์ที่จัดกำหนดการไว้เกินขีดจำกัดที่ %{limit} สำหรับวันนี้แล้ว
over_total_limit: คุณมีโพสต์ที่จัดกำหนดการไว้เกินขีดจำกัดที่ %{limit} แล้ว
too_soon: วันที่จัดกำหนดการต้องอยู่ในอนาคต
self_destruct:
lead_html: น่าเสียดาย <strong>%{domain}</strong> กำลังปิดตัวลงอย่างถาวร หากคุณมีบัญชีที่นั่น คุณจะไม่สามารถใช้บัญชีต่อไปได้ แต่คุณยังสามารถขอข้อมูลสำรองของข้อมูลของคุณ
title: เซิร์ฟเวอร์นี้กำลังปิดตัวลง
sessions:
activity: กิจกรรมล่าสุด
browser: เบราว์เซอร์

@ -534,6 +534,7 @@ tr:
total_reported: Onlar hakkında şikayetler
total_storage: Medya ekleri
totals_time_period_hint_html: Aşağıdaki gösterilen toplamlar, gelmiş geçmiş tüm veriyi içeriyor.
unknown_instance: Bu sunucuda bu alan adının şu an bir kaydı yok.
invites:
deactivate_all: Tümünü devre dışı bırak
filter:

@ -556,6 +556,7 @@ uk:
total_reported: Звітів про них
total_storage: Мультимедійні вкладення
totals_time_period_hint_html: Нижче зображена статистика за все існування сервера.
unknown_instance: Наразі на цьому сервері немає записів цього домену.
invites:
deactivate_all: Деактивувати всі
filter:
@ -1137,6 +1138,7 @@ uk:
functional: Ваш обліковий запис повністю робочий.
pending: Ваша заява очікує на розгляд нашим персоналом. Це може зайняти деякий час. Ви отримаєте електронний лист, якщо ваша заява буде схвалена.
redirecting_to: Ваш обліковий запис наразі неактивний, тому що він перенаправлений до %{acct}.
self_destruct: Оскільки %{domain} закривається, ви отримаєте тільки обмежений доступ до вашого облікового запису.
view_strikes: Переглянути попередні попередження вашому обліковому запису
too_fast: Форму подано занадто швидко, спробуйте ще раз.
use_security_key: Використовувати ключ безпеки
@ -1622,6 +1624,9 @@ uk:
over_daily_limit: Ви перевищили ліміт в %{limit} запланованих дописів на сьогодні
over_total_limit: Ви перевищили ліміт в %{limit} запланованих дописів
too_soon: Запланована дата має бути в майбутньому
self_destruct:
lead_html: На жаль, <strong>%{domain}</strong> остаточно закривається. Якщо у вас є обліковий запис там, ви не зможете продовжити його використання, але ви все ще можете надіслати запит на резервну копію даних.
title: Сервер закривається
sessions:
activity: Остання активність
browser: Браузер

@ -523,6 +523,7 @@ zh-CN:
total_reported: 关于对方的举报
total_storage: 媒体文件
totals_time_period_hint_html: 下方显示的总数来自全部历史数据。
unknown_instance: 本实例目前没有此域名的记录。
invites:
deactivate_all: 撤销所有邀请链接
filter:

@ -523,6 +523,7 @@ zh-HK:
total_reported: 關於他們的舉報
total_storage: 媒體附件
totals_time_period_hint_html: 下面顯示的總數包括所有時間的數據。
unknown_instance: 此伺服器目前沒有這個網域的紀錄。
invites:
deactivate_all: 全部停用
filter:
@ -1083,6 +1084,7 @@ zh-HK:
functional: 你的帳號已完全投入使用。
pending: 管理員正在處理你的申請。可能會需要一點時間處理。我們將會在申請被批準的時候馬上寄電郵給你。
redirecting_to: 你的帳戶因為正在重新定向到 %{acct},所以暫時被停用。
self_destruct: 由於 %{domain} 即將停止服務,你只能有限存取你的帳號。
view_strikes: 查看針對你的帳戶的過往警告
too_fast: 你太快遞交了,請再試一次。
use_security_key: 使用安全密鑰裝置
@ -1544,6 +1546,9 @@ zh-HK:
over_daily_limit: 你已經超越了當天排定發文的限額 (%{limit})
over_total_limit: 你已經超越了排定發文的限額 (%{limit})
too_soon: 不可以改變過去哦,嘟文只可以排定在未來
self_destruct:
lead_html: 很遺憾,<strong>%{domain}</strong> 即將永久停止服務。如果你在該處擁有帳號,你將無法繼續使用它,但你仍然可以要求備份你的數據。
title: 這個伺服器即將停止服務
sessions:
activity: 最近活動
browser: 瀏覽器
@ -1706,6 +1711,7 @@ zh-HK:
default: "%Y年%-m月%d日 %H:%M"
month: "%b %Y"
time: "%H:%M"
with_time_zone: "%b %d, %Y, %H:%M %Z"
translation:
errors:
quota_exceeded: 已超出伺服器範圍的翻譯服務之使用配額。

@ -523,6 +523,7 @@ zh-TW:
total_reported: 關於他們的檢舉報告
total_storage: 多媒體附加檔案
totals_time_period_hint_html: 以下顯示之總和包含所有時間的資料。
unknown_instance: 此伺服器目前沒有這個網域的紀錄。
invites:
deactivate_all: 全部停用
filter:
@ -988,7 +989,7 @@ zh-TW:
created_msg: 成功建立別名。您可以自舊帳號開始轉移。
deleted_msg: 成功移除別名。您將無法再由舊帳號轉移至目前的帳號。
empty: 您目前沒有任何別名。
hint_html: 如果想由其他帳號轉移至此帳號,您可以此處新增別名,稍後系統將容許您將跟隨者由舊帳號轉移至此。此項作業是<strong>無害且可復原的</strong>。 <strong>帳號的遷移程序需要在舊帳號啟動</strong>。
hint_html: 如果想由其他帳號轉移至此帳號,您可以此處新增別名,稍後系統將容許您將跟隨者由舊帳號轉移至此。此項作業是<strong>無害且可復原的</strong>。 <strong>帳號的遷移程序需要在舊帳號啟動</strong>。
remove: 取消連結別名
appearance:
advanced_web_interface: 進階網頁介面
@ -1073,7 +1074,7 @@ zh-TW:
new_confirmation_instructions_sent: 您將於幾分鐘之內收到新的包含確認連結的電子郵件!
title: 請檢查您的收件匣
sign_in:
preamble_html: 請使用您於 <strong>%{domain}</strong> 的帳號密碼登入。若您的帳號託管於其他伺服器,您將無法此登入。
preamble_html: 請使用您於 <strong>%{domain}</strong> 的帳號密碼登入。若您的帳號託管於其他伺服器,您將無法此登入。
title: 登入 %{domain}
sign_up:
manual_review: "%{domain} 上的註冊由我們的管理員進行人工審核。為協助我們處理您的註冊,請寫一些關於您自己的資訊以及您想要在 %{domain} 上註冊帳號的原因。"
@ -1085,6 +1086,7 @@ zh-TW:
functional: "您的帳號可以正常使用了。🎉"
pending: 管管們正在處理您的申請,這可能需要一點時間處理。我們將於申請通過後以電子郵件方式通知您。
redirecting_to: 您的帳號因目前重定向至 %{acct} 而被停用。
self_destruct: 由於 %{domain} 即將停止服務,您只能有限地存取您的帳號。
view_strikes: 檢視針對您帳號過去的警示
too_fast: 送出表單的速度太快跟不上,請稍後再試。
use_security_key: 使用安全金鑰
@ -1294,7 +1296,7 @@ zh-TW:
following_html: 您將要 <strong>跟隨</strong> 自 <strong>%{filename}</strong> 中之 <strong>%{total_items} 個帳號</strong>。
lists_html: 您將自 <strong>%{filename}</strong> 新增 <strong>%{total_items} 個帳號</strong>至您的<strong>列表</strong>。若不存在列表用以新增帳號,則會建立新列表。
muting_html: 您將要 <strong>靜音</strong> 自 <strong>%{filename}</strong> 中之 <strong>%{total_items} 個帳號</strong>。
preface: 可以在此匯入您在其他伺服器所匯出的資料檔,包括跟隨的使用者、封鎖的使用者名單。
preface: 能於此匯入您在其他伺服器所匯出的資料檔,包括跟隨的使用者、封鎖的使用者名單
recent_imports: 最近匯入的
states:
finished: 已完成
@ -1546,6 +1548,9 @@ zh-TW:
over_daily_limit: 您已經超過了本日排定發嘟的限額 (%{limit})
over_total_limit: 您已經超過排程發嘟的限額 (%{limit})
too_soon: 嘟文不可以改變過去哦,只能預定未來 (咦)
self_destruct:
lead_html: 很遺憾,<strong>%{domain}</strong> 即將永久停止服務。如果您於該伺服器擁有帳號,您將無法繼續使用它,但您仍然可以請求您的資料備份。
title: 這個伺服器即將停止服務
sessions:
activity: 最近活動
browser: 瀏覽器

Loading…
Cancel
Save