Merge commit 'fcf012c6026418b6c76bff173eec944e0c25913f' into glitch-soc/merge-upstream

Conflicts:
- `vite.config.mts`:
  Upstream changed a line adjacent to one glitch-soc modified due to its theming system.
  Adapted upstream's change.
- `yarn.lock`:
  Upstream updated a dependency next to one glitch-soc added.
  Updated the dependency as upstream did.
This commit is contained in:
Claire 2026-05-19 20:40:57 +02:00
commit 0c80bf0e82
128 changed files with 972 additions and 2186 deletions

View File

@ -1,6 +1,6 @@
defaults defaults
> 0.2% > 0.2% and not ios < 15.6
firefox >= 78 firefox >= 91
ios >= 15.6 ios >= 15.6
not dead not dead
not OperaMini all not OperaMini all

View File

@ -35,7 +35,7 @@ jobs:
# Initializes the CodeQL tools for scanning. # Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@e46ed2cbd01164d986452f91f178727624ae40d7 # v4 uses: github/codeql-action/init@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4
with: with:
languages: ${{ matrix.language }} languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file. # If you wish to specify custom queries, you can do so here or in a config file.
@ -48,7 +48,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java). # 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) # If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild - name: Autobuild
uses: github/codeql-action/autobuild@e46ed2cbd01164d986452f91f178727624ae40d7 # v4 uses: github/codeql-action/autobuild@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4
# Command-line programs to run using the OS shell. # 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 # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
@ -61,6 +61,6 @@ jobs:
# ./location_of_script_within_repo/buildscript.sh # ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@e46ed2cbd01164d986452f91f178727624ae40d7 # v4 uses: github/codeql-action/analyze@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4
with: with:
category: '/language:${{matrix.language}}' category: '/language:${{matrix.language}}'

View File

@ -53,7 +53,7 @@ jobs:
# Create or update the pull request # Create or update the pull request
- name: Create Pull Request - name: Create Pull Request
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8 uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8
with: with:
commit-message: 'New Crowdin translations' commit-message: 'New Crowdin translations'
title: 'New Crowdin Translations (automated)' title: 'New Crowdin Translations (automated)'

View File

@ -13,7 +13,6 @@ on:
- '**/*.css' - '**/*.css'
- '**/*.scss' - '**/*.scss'
- '.github/workflows/lint-css.yml' - '.github/workflows/lint-css.yml'
- '.github/stylelint-matcher.json'
pull_request: pull_request:
paths: paths:
@ -24,7 +23,6 @@ on:
- '**/*.css' - '**/*.css'
- '**/*.scss' - '**/*.scss'
- '.github/workflows/lint-css.yml' - '.github/workflows/lint-css.yml'
- '.github/stylelint-matcher.json'
jobs: jobs:
lint: lint:

View File

@ -6,7 +6,6 @@ on:
- 'main' - 'main'
- 'stable-*' - 'stable-*'
paths: paths:
- '.github/workflows/haml-lint-problem-matcher.json'
- '.github/workflows/lint-haml.yml' - '.github/workflows/lint-haml.yml'
- '.haml-lint*.yml' - '.haml-lint*.yml'
- '.rubocop*.yml' - '.rubocop*.yml'
@ -16,7 +15,6 @@ on:
pull_request: pull_request:
paths: paths:
- '.github/workflows/haml-lint-problem-matcher.json'
- '.github/workflows/lint-haml.yml' - '.github/workflows/lint-haml.yml'
- '.haml-lint*.yml' - '.haml-lint*.yml'
- '.rubocop*.yml' - '.rubocop*.yml'

View File

@ -10,7 +10,6 @@ on:
- '.rubocop*.yml' - '.rubocop*.yml'
- '.ruby-version' - '.ruby-version'
- 'bin/rubocop' - 'bin/rubocop'
- 'config/brakeman.ignore'
- '**/*.rb' - '**/*.rb'
- '**/*.rake' - '**/*.rake'
- '.github/workflows/lint-ruby.yml' - '.github/workflows/lint-ruby.yml'
@ -21,7 +20,6 @@ on:
- '.rubocop*.yml' - '.rubocop*.yml'
- '.ruby-version' - '.ruby-version'
- 'bin/rubocop' - 'bin/rubocop'
- 'config/brakeman.ignore'
- '**/*.rb' - '**/*.rb'
- '**/*.rake' - '**/*.rake'
- '.github/workflows/lint-ruby.yml' - '.github/workflows/lint-ruby.yml'

View File

@ -102,10 +102,10 @@ gem 'rdf-normalize', '~> 0.5'
gem 'prometheus_exporter', '~> 2.2', require: false gem 'prometheus_exporter', '~> 2.2', require: false
gem 'opentelemetry-api', '~> 1.9.0' gem 'opentelemetry-api', '~> 1.10.0'
group :opentelemetry do group :opentelemetry do
gem 'opentelemetry-exporter-otlp', '~> 0.33.0', require: false gem 'opentelemetry-exporter-otlp', '~> 0.34.0', require: false
gem 'opentelemetry-instrumentation-active_job', '~> 0.12.0', require: false gem 'opentelemetry-instrumentation-active_job', '~> 0.12.0', require: false
gem 'opentelemetry-instrumentation-active_model_serializers', '~> 0.25.0', require: false gem 'opentelemetry-instrumentation-active_model_serializers', '~> 0.25.0', require: false
gem 'opentelemetry-instrumentation-concurrent_ruby', '~> 0.25.0', require: false gem 'opentelemetry-instrumentation-concurrent_ruby', '~> 0.25.0', require: false

View File

@ -507,11 +507,11 @@ GEM
openssl (4.0.1) openssl (4.0.1)
openssl-signature_algorithm (1.3.0) openssl-signature_algorithm (1.3.0)
openssl (> 2.0) openssl (> 2.0)
opentelemetry-api (1.9.0) opentelemetry-api (1.10.0)
logger logger
opentelemetry-common (0.24.0) opentelemetry-common (0.25.0)
opentelemetry-api (~> 1.0) opentelemetry-api (~> 1.0)
opentelemetry-exporter-otlp (0.33.0) opentelemetry-exporter-otlp (0.34.0)
google-protobuf (>= 3.18) google-protobuf (>= 3.18)
googleapis-common-protos-types (~> 1.3) googleapis-common-protos-types (~> 1.3)
opentelemetry-api (~> 1.1) opentelemetry-api (~> 1.1)
@ -574,19 +574,19 @@ GEM
opentelemetry-instrumentation-base (~> 0.25) opentelemetry-instrumentation-base (~> 0.25)
opentelemetry-instrumentation-sidekiq (0.29.0) opentelemetry-instrumentation-sidekiq (0.29.0)
opentelemetry-instrumentation-base (~> 0.25) opentelemetry-instrumentation-base (~> 0.25)
opentelemetry-registry (0.5.0) opentelemetry-registry (0.6.0)
opentelemetry-api (~> 1.1) opentelemetry-api (~> 1.1)
opentelemetry-sdk (1.11.0) opentelemetry-sdk (1.12.0)
logger logger
opentelemetry-api (~> 1.1) opentelemetry-api (~> 1.1)
opentelemetry-common (~> 0.20) opentelemetry-common (~> 0.20)
opentelemetry-registry (~> 0.2) opentelemetry-registry (~> 0.2)
opentelemetry-semantic_conventions opentelemetry-semantic_conventions
opentelemetry-semantic_conventions (1.37.0) opentelemetry-semantic_conventions (1.37.1)
opentelemetry-api (~> 1.0) opentelemetry-api (~> 1.0)
orm_adapter (0.5.0) orm_adapter (0.5.0)
ostruct (0.6.3) ostruct (0.6.3)
ox (2.14.25) ox (2.14.26)
bigdecimal (>= 3.0) bigdecimal (>= 3.0)
parallel (1.28.0) parallel (1.28.0)
parser (3.3.11.1) parser (3.3.11.1)
@ -1020,8 +1020,8 @@ DEPENDENCIES
omniauth-rails_csrf_protection (~> 2.0) omniauth-rails_csrf_protection (~> 2.0)
omniauth-saml (~> 2.0) omniauth-saml (~> 2.0)
omniauth_openid_connect (~> 0.8.0) omniauth_openid_connect (~> 0.8.0)
opentelemetry-api (~> 1.9.0) opentelemetry-api (~> 1.10.0)
opentelemetry-exporter-otlp (~> 0.33.0) opentelemetry-exporter-otlp (~> 0.34.0)
opentelemetry-instrumentation-active_job (~> 0.12.0) opentelemetry-instrumentation-active_job (~> 0.12.0)
opentelemetry-instrumentation-active_model_serializers (~> 0.25.0) opentelemetry-instrumentation-active_model_serializers (~> 0.25.0)
opentelemetry-instrumentation-concurrent_ruby (~> 0.25.0) opentelemetry-instrumentation-concurrent_ruby (~> 0.25.0)

View File

@ -0,0 +1,67 @@
# frozen_string_literal: true
class Api::V1::Statuses::ContextsController < Api::BaseController
include Authorization
include AsyncRefreshesConcern
before_action -> { authorize_if_got_token! :read, :'read:statuses' }
before_action :set_status
# This API was originally unlimited, pagination cannot be introduced without
# breaking backwards-compatibility. Arbitrarily high number to cover most
# conversations as quasi-unlimited, it would be too much work to render more
# than this anyway
CONTEXT_LIMIT = 4_096
# This remains expensive and we don't want to show everything to logged-out users
ANCESTORS_LIMIT = 40
DESCENDANTS_LIMIT = 60
DESCENDANTS_DEPTH_LIMIT = 20
def show
cache_if_unauthenticated!
ancestors_limit = CONTEXT_LIMIT
descendants_limit = CONTEXT_LIMIT
descendants_depth_limit = nil
if current_account.nil?
ancestors_limit = ANCESTORS_LIMIT
descendants_limit = DESCENDANTS_LIMIT
descendants_depth_limit = DESCENDANTS_DEPTH_LIMIT
end
ancestors_results = @status.in_reply_to_id.nil? ? [] : @status.ancestors(ancestors_limit, current_account)
descendants_results = @status.descendants(descendants_limit, current_account, descendants_depth_limit)
loaded_ancestors = preload_collection(ancestors_results, Status)
loaded_descendants = preload_collection(descendants_results, Status)
@context = Context.new(ancestors: loaded_ancestors, descendants: loaded_descendants)
statuses = [@status] + @context.ancestors + @context.descendants
refresh_key = "context:#{@status.id}:refresh"
async_refresh = AsyncRefresh.new(refresh_key)
if async_refresh.running?
add_async_refresh_header(async_refresh)
elsif !current_account.nil? && @status.should_fetch_replies?
add_async_refresh_header(AsyncRefresh.create(refresh_key, count_results: true))
WorkerBatch.new.within do |batch|
batch.connect(refresh_key, threshold: 1.0)
ActivityPub::FetchAllRepliesWorker.perform_async(@status.id, { 'batch_id' => batch.id })
end
end
render json: @context, serializer: REST::ContextSerializer, relationships: StatusRelationshipsPresenter.new(statuses, current_user&.account_id)
end
private
def set_status
@status = Status.find(params[:status_id])
authorize @status, :show?
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
not_found
end
end

View File

@ -2,14 +2,13 @@
class Api::V1::StatusesController < Api::BaseController class Api::V1::StatusesController < Api::BaseController
include Authorization include Authorization
include AsyncRefreshesConcern
include Api::InteractionPoliciesConcern include Api::InteractionPoliciesConcern
before_action -> { authorize_if_got_token! :read, :'read:statuses' }, except: [:create, :update, :destroy] before_action -> { authorize_if_got_token! :read, :'read:statuses' }, except: [:create, :update, :destroy]
before_action -> { doorkeeper_authorize! :write, :'write:statuses' }, only: [:create, :update, :destroy] before_action -> { doorkeeper_authorize! :write, :'write:statuses' }, only: [:create, :update, :destroy]
before_action :require_user!, except: [:index, :show, :context] before_action :require_user!, except: [:index, :show]
before_action :set_statuses, only: [:index] before_action :set_statuses, only: [:index]
before_action :set_status, only: [:show, :context] before_action :set_status, only: [:show]
before_action :set_thread, only: [:create] before_action :set_thread, only: [:create]
before_action :set_quoted_status, only: [:create] before_action :set_quoted_status, only: [:create]
before_action :check_statuses_limit, only: [:index] before_action :check_statuses_limit, only: [:index]
@ -17,17 +16,6 @@ class Api::V1::StatusesController < Api::BaseController
override_rate_limit_headers :create, family: :statuses override_rate_limit_headers :create, family: :statuses
override_rate_limit_headers :update, family: :statuses override_rate_limit_headers :update, family: :statuses
# This API was originally unlimited, pagination cannot be introduced without
# breaking backwards-compatibility. Arbitrarily high number to cover most
# conversations as quasi-unlimited, it would be too much work to render more
# than this anyway
CONTEXT_LIMIT = 4_096
# This remains expensive and we don't want to show everything to logged-out users
ANCESTORS_LIMIT = 40
DESCENDANTS_LIMIT = 60
DESCENDANTS_DEPTH_LIMIT = 20
def index def index
@statuses = preload_collection(@statuses, Status) @statuses = preload_collection(@statuses, Status)
render json: @statuses, each_serializer: REST::StatusSerializer render json: @statuses, each_serializer: REST::StatusSerializer
@ -39,44 +27,6 @@ class Api::V1::StatusesController < Api::BaseController
render json: @status, serializer: REST::StatusSerializer render json: @status, serializer: REST::StatusSerializer
end end
def context
cache_if_unauthenticated!
ancestors_limit = CONTEXT_LIMIT
descendants_limit = CONTEXT_LIMIT
descendants_depth_limit = nil
if current_account.nil?
ancestors_limit = ANCESTORS_LIMIT
descendants_limit = DESCENDANTS_LIMIT
descendants_depth_limit = DESCENDANTS_DEPTH_LIMIT
end
ancestors_results = @status.in_reply_to_id.nil? ? [] : @status.ancestors(ancestors_limit, current_account)
descendants_results = @status.descendants(descendants_limit, current_account, descendants_depth_limit)
loaded_ancestors = preload_collection(ancestors_results, Status)
loaded_descendants = preload_collection(descendants_results, Status)
@context = Context.new(ancestors: loaded_ancestors, descendants: loaded_descendants)
statuses = [@status] + @context.ancestors + @context.descendants
refresh_key = "context:#{@status.id}:refresh"
async_refresh = AsyncRefresh.new(refresh_key)
if async_refresh.running?
add_async_refresh_header(async_refresh)
elsif !current_account.nil? && @status.should_fetch_replies?
add_async_refresh_header(AsyncRefresh.create(refresh_key, count_results: true))
WorkerBatch.new.within do |batch|
batch.connect(refresh_key, threshold: 1.0)
ActivityPub::FetchAllRepliesWorker.perform_async(@status.id, { 'batch_id' => batch.id })
end
end
render json: @context, serializer: REST::ContextSerializer, relationships: StatusRelationshipsPresenter.new(statuses, current_user&.account_id)
end
def create def create
@status = PostStatusService.new.call( @status = PostStatusService.new.call(
current_user.account, current_user.account,

View File

@ -3,7 +3,7 @@
class CustomCssController < ActionController::Base # rubocop:disable Rails/ApplicationController class CustomCssController < ActionController::Base # rubocop:disable Rails/ApplicationController
def show def show
expires_in 1.month, public: true expires_in 1.month, public: true
render content_type: 'text/css' render content_type: :css
end end
private private

View File

@ -223,7 +223,14 @@ module LanguagesHelper
'zh-YUE': ['Cantonese', '廣東話'].freeze, 'zh-YUE': ['Cantonese', '廣東話'].freeze,
}.freeze }.freeze
SUPPORTED_LOCALES = {}.merge(ISO_639_1).merge(ISO_639_1_REGIONAL).merge(ISO_639_3).freeze # Since nan is not translated but nan-TW is translated,
# to enable the ISO-639-3 language-code with the regional variant but no
# official name, we use a specific hash for nan-TW
ISO_639_3_REGIONAL = {
'nan-TW': ['Hokkien (Taiwan)', '臺語 (Hô-ló話)'].freeze,
}.freeze
SUPPORTED_LOCALES = {}.merge(ISO_639_1).merge(ISO_639_1_REGIONAL).merge(ISO_639_3).merge(ISO_639_3_REGIONAL).freeze
# For ISO-639-1 and ISO-639-3 language codes, we have their official # For ISO-639-1 and ISO-639-3 language codes, we have their official
# names, but for some translations, we need the names of the # names, but for some translations, we need the names of the
@ -233,7 +240,6 @@ module LanguagesHelper
'es-AR': 'Español (Argentina)', 'es-AR': 'Español (Argentina)',
'es-MX': 'Español (México)', 'es-MX': 'Español (México)',
'fr-CA': 'Français (Canadien)', 'fr-CA': 'Français (Canadien)',
'nan-TW': '臺語 (Hô-ló話)',
'pt-BR': 'Português (Brasil)', 'pt-BR': 'Português (Brasil)',
'pt-PT': 'Português (Portugal)', 'pt-PT': 'Português (Portugal)',
'sr-Latn': 'Srpski (latinica)', 'sr-Latn': 'Srpski (latinica)',

View File

@ -7,7 +7,7 @@ import api from 'mastodon/api';
import { browserHistory } from 'mastodon/components/router'; import { browserHistory } from 'mastodon/components/router';
import { countableText } from 'mastodon/features/compose/util/counter'; import { countableText } from 'mastodon/features/compose/util/counter';
import { tagHistory } from 'mastodon/settings'; import { tagHistory } from 'mastodon/settings';
import { fetchCustomEmojiData } from '@/mastodon/features/emoji/picker'; import { emojiMartSearch } from '@/mastodon/features/emoji/picker';
import { showAlert, showAlertForError } from './alerts'; import { showAlert, showAlertForError } from './alerts';
import { useEmoji } from './emojis'; import { useEmoji } from './emojis';
@ -593,9 +593,9 @@ const fetchComposeSuggestionsAccounts = throttle((dispatch, token) => {
}, 200, { leading: true, trailing: true }); }, 200, { leading: true, trailing: true });
const fetchComposeSuggestionsEmojis = async (dispatch, token) => { const fetchComposeSuggestionsEmojis = async (dispatch, token) => {
const custom = await fetchCustomEmojiData(); // Right now we are hard-coding the locale to English since the picker search only supports English.
const { search } = await import('@/mastodon/features/emoji/emoji_mart_search_light'); // Once we replace the legacy picker we can remove this and use the actual locale of the user.
const results = search(token.replace(':', ''), { maxResults: 5, custom }); const results = await emojiMartSearch(token, 'en', 5);
dispatch(readyComposeSuggestionsEmojis(token, results)); dispatch(readyComposeSuggestionsEmojis(token, results));
}; };

View File

@ -317,9 +317,10 @@ function useColumnWrap() {
if (element) { if (element) {
listRef.current = element; listRef.current = element;
observer.observe(element); observer.observe(element);
handleRecalculate();
} }
}, },
[observer], [handleRecalculate, observer],
); );
return { wrapperRef: wrapperRefCallback }; return { wrapperRef: wrapperRefCallback };

View File

@ -1,22 +1,20 @@
import type { FC } from 'react'; import type { FC } from 'react';
import { useCustomEmojis } from '@/mastodon/hooks/useCustomEmojis';
import { Emoji } from './emoji'; import { Emoji } from './emoji';
interface LegacyEmoji { interface LegacyEmoji {
colons: string; id: string;
custom?: boolean; custom?: boolean;
native?: string; native?: string;
imageUrl?: string; imageUrl?: string;
} }
export const AutosuggestEmoji: FC<{ emoji: LegacyEmoji }> = ({ emoji }) => { export const AutosuggestEmoji: FC<{ emoji: LegacyEmoji }> = ({ emoji }) => {
const emojis = useCustomEmojis(); const colons = `:${emoji.id}:`;
return ( return (
<div className='autosuggest-emoji'> <div className='autosuggest-emoji'>
<Emoji code={emoji.native ?? emoji.colons} customEmoji={emojis} /> <Emoji code={emoji.native ?? colons} />
<div className='autosuggest-emoji__name'>{emoji.colons}</div> <div className='autosuggest-emoji__name'>{colons}</div>
</div> </div>
); );
}; };

View File

@ -11,6 +11,7 @@ import AutosuggestAccountContainer from '../features/compose/containers/autosugg
import { AutosuggestEmoji } from './autosuggest_emoji'; import { AutosuggestEmoji } from './autosuggest_emoji';
import { AutosuggestHashtag } from './autosuggest_hashtag'; import { AutosuggestHashtag } from './autosuggest_hashtag';
import { LocalCustomEmojiProvider } from './emoji/context';
const textAtCursorMatchesToken = (str, caretPosition, searchTokens) => { const textAtCursorMatchesToken = (str, caretPosition, searchTokens) => {
let word; let word;
@ -219,15 +220,17 @@ export default class AutosuggestInput extends ImmutablePureComponent {
spellCheck={spellCheck} spellCheck={spellCheck}
/> />
<Overlay show={!(suggestionsHidden || suggestions.isEmpty())} offset={[0, 0]} placement='bottom' target={this.input} popperConfig={{ strategy: 'fixed' }}> <LocalCustomEmojiProvider>
{({ props }) => ( <Overlay show={!(suggestionsHidden || suggestions.isEmpty())} offset={[0, 0]} placement='bottom' target={this.input} popperConfig={{ strategy: 'fixed' }}>
<div {...props}> {({ props }) => (
<div className='autosuggest-textarea__suggestions' style={{ width: this.input?.clientWidth }}> <div {...props}>
{suggestions.map(this.renderSuggestion)} <div className='autosuggest-textarea__suggestions' style={{ width: this.input?.clientWidth }}>
{suggestions.map(this.renderSuggestion)}
</div>
</div> </div>
</div> )}
)} </Overlay>
</Overlay> </LocalCustomEmojiProvider>
</div> </div>
); );
} }

View File

@ -12,6 +12,7 @@ import AutosuggestAccountContainer from '../features/compose/containers/autosugg
import { AutosuggestEmoji } from './autosuggest_emoji'; import { AutosuggestEmoji } from './autosuggest_emoji';
import { AutosuggestHashtag } from './autosuggest_hashtag'; import { AutosuggestHashtag } from './autosuggest_hashtag';
import { LocalCustomEmojiProvider } from './emoji/context';
const textAtCursorMatchesToken = (str, caretPosition) => { const textAtCursorMatchesToken = (str, caretPosition) => {
let word; let word;
@ -218,15 +219,17 @@ const AutosuggestTextarea = forwardRef(({
lang={lang} lang={lang}
/> />
<Overlay show={!(suggestionsHidden || suggestions.isEmpty())} offset={[0, 0]} placement='bottom' target={textareaRef} popperConfig={{ strategy: 'fixed' }}> <LocalCustomEmojiProvider>
{({ props }) => ( <Overlay show={!(suggestionsHidden || suggestions.isEmpty())} offset={[0, 0]} placement='bottom' target={textareaRef} popperConfig={{ strategy: 'fixed' }}>
<div {...props}> {({ props }) => (
<div className='autosuggest-textarea__suggestions' style={{ width: textareaRef.current?.clientWidth }}> <div {...props}>
{suggestions.map(renderSuggestion)} <div className='autosuggest-textarea__suggestions' style={{ width: textareaRef.current?.clientWidth }}>
{suggestions.map(renderSuggestion)}
</div>
</div> </div>
</div> )}
)} </Overlay>
</Overlay> </LocalCustomEmojiProvider>
</div> </div>
); );
}); });

View File

@ -1,4 +1,9 @@
import type { MouseEventHandler, PropsWithChildren } from 'react'; import type {
FC,
MouseEventHandler,
PropsWithChildren,
ReactNode,
} from 'react';
import { import {
createContext, createContext,
useCallback, useCallback,
@ -8,6 +13,7 @@ import {
} from 'react'; } from 'react';
import { cleanExtraEmojis } from '@/mastodon/features/emoji/normalize'; import { cleanExtraEmojis } from '@/mastodon/features/emoji/normalize';
import { useCustomEmojis } from '@/mastodon/hooks/useCustomEmojis';
import { autoPlayGif } from '@/mastodon/initial_state'; import { autoPlayGif } from '@/mastodon/initial_state';
import { polymorphicForwardRef } from '@/types/polymorphic'; import { polymorphicForwardRef } from '@/types/polymorphic';
import type { import type {
@ -103,3 +109,10 @@ export const CustomEmojiProvider = ({
</CustomEmojiContext.Provider> </CustomEmojiContext.Provider>
); );
}; };
export const LocalCustomEmojiProvider: FC<{ children: ReactNode }> = ({
children,
}) => {
const emojis = useCustomEmojis();
return <CustomEmojiProvider emojis={emojis}>{children}</CustomEmojiProvider>;
};

View File

@ -19,7 +19,6 @@ import {
stringToEmojiState, stringToEmojiState,
tokenizeText, tokenizeText,
} from '@/mastodon/features/emoji/render'; } from '@/mastodon/features/emoji/render';
import type { ExtraCustomEmojiMap } from '@/mastodon/features/emoji/types';
import { AnimateEmojiContext, CustomEmojiContext } from './context'; import { AnimateEmojiContext, CustomEmojiContext } from './context';
@ -27,19 +26,14 @@ interface EmojiProps {
code: string; code: string;
showFallback?: boolean; showFallback?: boolean;
showLoading?: boolean; showLoading?: boolean;
customEmoji?: ExtraCustomEmojiMap | null;
} }
export const Emoji: FC<EmojiProps> = ({ export const Emoji: FC<EmojiProps> = ({
code, code,
showFallback = true, showFallback = true,
showLoading = true, showLoading = true,
customEmoji: customEmojiOverride,
}) => { }) => {
let customEmoji = useContext(CustomEmojiContext); const customEmoji = useContext(CustomEmojiContext);
if (customEmojiOverride) {
customEmoji = customEmojiOverride;
}
// First, set the emoji state based on the input code. // First, set the emoji state based on the input code.
const [state, setState] = useState(() => const [state, setState] = useState(() =>

View File

@ -566,7 +566,7 @@ class Status extends ImmutablePureComponent {
/> />
); );
} }
} else if (status.get('tagged_collections').size) { } else if (status.get('tagged_collections').size && !status.get('quote')) {
const firstLinkedCollection = status.get('tagged_collections').first(); const firstLinkedCollection = status.get('tagged_collections').first();
if (firstLinkedCollection) { if (firstLinkedCollection) {
media = ( media = (

View File

@ -25,6 +25,7 @@ export function usePinnedStatusIds({
tagged, tagged,
pinned: true, pinned: true,
replies: true, replies: true,
boosts: true,
}); });
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();

View File

@ -1,177 +0,0 @@
import { emojiIndex } from 'emoji-mart';
import { pick } from 'lodash';
import { search } from '../emoji_mart_search_light';
const trimEmojis = emoji => pick(emoji, ['id', 'unified', 'native', 'custom']);
describe('emoji_index', () => {
it('should give same result for emoji_index_light and emoji-mart', () => {
const expected = [
{
id: 'pineapple',
unified: '1f34d',
native: '🍍',
},
];
expect(search('pineapple').map(trimEmojis)).toEqual(expected);
expect(emojiIndex.search('pineapple').map(trimEmojis)).toEqual(expected);
});
it('orders search results correctly', () => {
const expected = [
{
id: 'apple',
unified: '1f34e',
native: '🍎',
},
{
id: 'pineapple',
unified: '1f34d',
native: '🍍',
},
{
id: 'green_apple',
unified: '1f34f',
native: '🍏',
},
{
id: 'iphone',
unified: '1f4f1',
native: '📱',
},
];
expect(search('apple').map(trimEmojis)).toEqual(expected);
expect(emojiIndex.search('apple').map(trimEmojis)).toEqual(expected);
});
it('can include/exclude categories', () => {
expect(search('flag', { include: ['people'] })).toEqual([]);
expect(emojiIndex.search('flag', { include: ['people'] })).toEqual([]);
});
it('(different behavior from emoji-mart) do not erases custom emoji if not passed again', () => {
const custom = [
{
id: 'mastodon',
name: 'mastodon',
short_names: ['mastodon'],
text: '',
emoticons: [],
keywords: ['mastodon'],
imageUrl: 'http://example.com',
custom: true,
},
];
search('', { custom });
emojiIndex.search('', { custom });
const expected = [];
const lightExpected = [
{
id: 'mastodon',
custom: true,
},
];
expect(search('masto').map(trimEmojis)).toEqual(lightExpected);
expect(emojiIndex.search('masto').map(trimEmojis)).toEqual(expected);
});
it('(different behavior from emoji-mart) erases custom emoji if another is passed', () => {
const custom = [
{
id: 'mastodon',
name: 'mastodon',
short_names: ['mastodon'],
text: '',
emoticons: [],
keywords: ['mastodon'],
imageUrl: 'http://example.com',
custom: true,
},
];
search('', { custom });
emojiIndex.search('', { custom });
const expected = [];
expect(search('masto', { custom: [] }).map(trimEmojis)).toEqual(expected);
expect(emojiIndex.search('masto').map(trimEmojis)).toEqual(expected);
});
it('handles custom emoji', () => {
const custom = [
{
id: 'mastodon',
name: 'mastodon',
short_names: ['mastodon'],
text: '',
emoticons: [],
keywords: ['mastodon'],
imageUrl: 'http://example.com',
custom: true,
},
];
search('', { custom });
emojiIndex.search('', { custom });
const expected = [
{
id: 'mastodon',
custom: true,
},
];
expect(search('masto', { custom }).map(trimEmojis)).toEqual(expected);
expect(emojiIndex.search('masto', { custom }).map(trimEmojis)).toEqual(expected);
});
it('should filter only emojis we care about, exclude pineapple', () => {
const emojisToShowFilter = emoji => emoji.unified !== '1F34D';
expect(search('apple', { emojisToShowFilter }).map((obj) => obj.id))
.not.toContain('pineapple');
expect(emojiIndex.search('apple', { emojisToShowFilter }).map((obj) => obj.id))
.not.toContain('pineapple');
});
it('does an emoji whose unified name is irregular', () => {
const expected = [
{
'id': 'water_polo',
'unified': '1f93d',
'native': '🤽',
},
{
'id': 'man-playing-water-polo',
'unified': '1f93d-200d-2642-fe0f',
'native': '🤽‍♂️',
},
{
'id': 'woman-playing-water-polo',
'unified': '1f93d-200d-2640-fe0f',
'native': '🤽‍♀️',
},
];
expect(search('polo').map(trimEmojis)).toEqual(expected);
expect(emojiIndex.search('polo').map(trimEmojis)).toEqual(expected);
});
it('can search for thinking_face', () => {
const expected = [
{
id: 'thinking_face',
unified: '1f914',
native: '🤔',
},
];
expect(search('thinking_fac').map(trimEmojis)).toEqual(expected);
expect(emojiIndex.search('thinking_fac').map(trimEmojis)).toEqual(expected);
});
it('can search for woman-facepalming', () => {
const expected = [
{
id: 'woman-facepalming',
unified: '1f926-200d-2640-fe0f',
native: '🤦‍♀️',
},
];
expect(search('woman-facep').map(trimEmojis)).toEqual(expected);
expect(emojiIndex.search('woman-facep').map(trimEmojis)).toEqual(expected);
});
});

View File

@ -46,6 +46,8 @@ const loadDB = (() => {
return loadPromise; return loadPromise;
})(); })();
type ScoreMap = Map<string, AnyEmojiData & { score: number }>;
export async function search({ export async function search({
query, query,
locale: localeString, locale: localeString,
@ -75,7 +77,7 @@ export async function search({
// Create an array of emoji results // Create an array of emoji results
const db = await loadDB(); const db = await loadDB();
const resultArrays: Map<string, AnyEmojiData>[] = []; const resultArrays: ScoreMap[] = [];
for (let i = 0; i < queryTokens.length; i++) { for (let i = 0; i < queryTokens.length; i++) {
const token = queryTokens[i]; const token = queryTokens[i];
if (!token) continue; if (!token) continue;
@ -90,14 +92,21 @@ export async function search({
db.getAllFromIndex(locale, 'tokens', range), db.getAllFromIndex(locale, 'tokens', range),
db.getAllFromIndex('custom', 'tokens', range), db.getAllFromIndex('custom', 'tokens', range),
]); ]);
const resultMap = new Map<string, AnyEmojiData>([ const resultMap: ScoreMap = new Map();
...unicodeResults.map( for (const emoji of unicodeResults) {
(emoji) => [emoji.hexcode, emoji] as [string, AnyEmojiData], const score = getScoreForEmoji(emoji, token);
), if (score === null) {
...customResults.map( continue;
(emoji) => [emoji.shortcode, emoji] as [string, AnyEmojiData], }
), resultMap.set(emoji.hexcode, { ...emoji, score });
]); }
for (const emoji of customResults) {
const score = getScoreForEmoji(emoji, token);
if (score === null) {
continue;
}
resultMap.set(emoji.shortcode, { ...emoji, score });
}
log('found %d results for token "%s"', resultMap.size, token); log('found %d results for token "%s"', resultMap.size, token);
resultArrays.push(resultMap); resultArrays.push(resultMap);
} }
@ -106,7 +115,7 @@ export async function search({
const results = Array.from( const results = Array.from(
resultArrays resultArrays
.reduce((prev, curr) => { .reduce((prev, curr) => {
const intersection = new Map<string, AnyEmojiData>(); const intersection: ScoreMap = new Map();
for (const [code, emoji] of prev) { for (const [code, emoji] of prev) {
if (curr.has(code)) { if (curr.has(code)) {
intersection.set(code, emoji); intersection.set(code, emoji);
@ -115,33 +124,7 @@ export async function search({
return intersection; return intersection;
}) })
.values(), .values(),
); ).toSorted((a, b) => a.score - b.score);
results.sort((a, b) => {
// Checks if a or b has the last token exactly, or only a prefix.
const aHasToken = a.tokens.includes(lastToken);
const bHasToken = b.tokens.includes(lastToken);
if (aHasToken && !bHasToken) {
return -1;
} else if (!aHasToken && bHasToken) {
return 1;
}
// If one is a custom emoji, prioritize it over Unicode emojis.
if ('category' in a) {
return -1;
} else if ('category' in b) {
return 1;
}
// If both are Unicode emojis, prioritize by order.
if ('order' in a && 'order' in b) {
return (a.order ?? 0) - (b.order ?? 0); // If these are both Unicode emojis, sort by order.
}
// ¯\_(ツ)_/¯
return 0;
});
const time = performance.measure('emoji-search-end', 'emoji-search-start'); const time = performance.measure('emoji-search-end', 'emoji-search-start');
log( log(
@ -157,6 +140,24 @@ export async function search({
return results; return results;
} }
function getScoreForEmoji(emoji: AnyEmojiData, query: string) {
const id = 'shortcode' in emoji ? emoji.shortcode : emoji.label;
if (id === query) {
return 0;
}
let index = 1;
for (const token of [id, emoji.tokens]) {
const tokenIndex = token.indexOf(query);
if (tokenIndex !== -1) {
return index + tokenIndex / token.length;
}
index++;
}
return null;
}
export async function putEmojiData(emojis: CompactEmoji[], locale: Locale) { export async function putEmojiData(emojis: CompactEmoji[], locale: Locale) {
loadedLocales.add(locale); loadedLocales.add(locale);
const db = await loadDB(); const db = await loadDB();
@ -252,6 +253,12 @@ export async function loadEmojiByHexcode(
return skinHexcodeToEmoji(hexcode, skinResult); return skinHexcodeToEmoji(hexcode, skinResult);
} }
export async function loadAllUnicodeEmojis(localeString: string) {
const locale = await toLoadedLocale(localeString);
const db = await loadDB();
return db.getAll(locale);
}
export async function loadCustomEmojiByShortcode(shortcode: string) { export async function loadCustomEmojiByShortcode(shortcode: string) {
const db = await loadDB(); const db = await loadDB();
return db.get('custom', shortcode); return db.get('custom', shortcode);
@ -285,6 +292,11 @@ export async function loadLegacyShortcodesByShortcode(shortcode: string) {
); );
} }
export async function loadAllShortcodes() {
const db = await loadDB();
return db.getAll('shortcodes');
}
// Private functions // Private functions
async function syncLocales(db: Database) { async function syncLocales(db: Database) {

View File

@ -1,57 +0,0 @@
import type { BaseEmoji, EmojiData, NimbleEmojiIndex } from 'emoji-mart';
import type { Category, Data, Emoji } from 'emoji-mart/dist-es/utils/data';
/*
* The 'search' property, although not defined in the [`Emoji`]{@link node_modules/@types/emoji-mart/dist-es/utils/data.d.ts#Emoji} type,
* is used in the application.
* This could be due to an oversight by the library maintainer.
* The `search` property is defined and used [here]{@link node_modules/emoji-mart/dist/utils/data.js#uncompress}.
*/
export type Search = string;
/*
* The 'skins' property does not exist in the application data.
* 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}.
*/
type Skins = null;
type Filename = string;
type UnicodeFilename = string;
export type FilenameData = [
filename: Filename,
unicodeFilename?: UnicodeFilename,
][];
export type ShortCodesToEmojiDataKey =
| EmojiData['id']
| BaseEmoji['native']
| keyof NimbleEmojiIndex['emojis'];
type SearchData = [
BaseEmoji['native'],
Emoji['short_names'],
Search,
Emoji['unified'],
];
export type ShortCodesToEmojiData = Record<
ShortCodesToEmojiDataKey,
[FilenameData, SearchData]
>;
type EmojisWithoutShortCodes = FilenameData;
type EmojiCompressed = [
ShortCodesToEmojiData,
Skins,
Category[],
Data['aliases'],
EmojisWithoutShortCodes,
];
/*
* `emoji_compressed.js` uses `babel-plugin-preval`, which makes it difficult to convert to TypeScript.
* As a temporary solution, we are allowing a default export here to apply the TypeScript type `EmojiCompressed` to the JS file export.
* - {@link app/javascript/mastodon/features/emoji/emoji_compressed.js}
*/
declare const emojiCompressed: EmojiCompressed;
export default emojiCompressed; // eslint-disable-line import/no-default-export

View File

@ -1,138 +0,0 @@
// @preval
// http://www.unicode.org/Public/emoji/5.0/emoji-test.txt
// This file contains the compressed version of the emoji data from
// both emoji_map.json and from emoji-mart's emojiIndex and data objects.
// 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: 4
import { NimbleEmojiIndex } from 'emoji-mart';
import { uncompress as emojiMartUncompress } from 'emoji-mart/dist/utils/data';
import data from './emoji_data.json';
import emojiMap from './emoji_map.json';
import { unicodeToFilename, unicodeToUnifiedName } from './unicode_utils';
emojiMartUncompress(data);
const emojiMartData = data;
const emojiIndex = new NimbleEmojiIndex(emojiMartData);
const excluded = ['®', '©', '™'];
const skinTones = ['🏻', '🏼', '🏽', '🏾', '🏿'];
const shortcodeMap = {};
const shortCodesToEmojiData = {};
const emojisWithoutShortCodes = [];
Object.keys(emojiIndex.emojis).forEach((key) => {
let emoji = emojiIndex.emojis[key];
// Emojis with skin tone modifiers are stored like this
if (Object.hasOwn(emoji, '1')) {
emoji = emoji['1'];
}
shortcodeMap[emoji.native] = emoji.id;
});
const stripModifiers = (unicode) => {
skinTones.forEach((tone) => {
unicode = unicode.replace(tone, '');
});
return unicode;
};
Object.keys(emojiMap).forEach((key) => {
if (excluded.includes(key)) {
delete emojiMap[key];
return;
}
const normalizedKey = stripModifiers(key);
let shortcode = shortcodeMap[normalizedKey];
if (!shortcode) {
shortcode = shortcodeMap[normalizedKey + '\uFE0F'];
}
const filename = emojiMap[key];
const filenameData = [key];
if (unicodeToFilename(key) !== filename) {
// filename can't be derived using unicodeToFilename
filenameData.push(filename);
}
if (typeof shortcode === 'undefined') {
emojisWithoutShortCodes.push(filenameData);
} else {
if (!Array.isArray(shortCodesToEmojiData[shortcode])) {
shortCodesToEmojiData[shortcode] = [[]];
}
shortCodesToEmojiData[shortcode][0].push(filenameData);
}
});
Object.keys(emojiIndex.emojis).forEach((key) => {
let emoji = emojiIndex.emojis[key];
// Emojis with skin tone modifiers are stored like this
if (Object.hasOwn(emoji, '1')) {
emoji = emoji['1'];
}
const { native } = emoji;
let { short_names, search, unified } = emojiMartData.emojis[key];
if (short_names[0] !== key) {
throw new Error(
'The compressor expects the first short_code to be the ' +
'key. It may need to be rewritten if the emoji change such that this ' +
'is no longer the case.',
);
}
short_names = short_names.slice(1); // first short name can be inferred from the key
const searchData = [native, short_names, search];
if (unicodeToUnifiedName(native) !== unified) {
// unified name can't be derived from unicodeToUnifiedName
searchData.push(unified);
}
if (!Array.isArray(shortCodesToEmojiData[key])) {
shortCodesToEmojiData[key] = [[]];
}
shortCodesToEmojiData[key].push(searchData);
});
// JSON.parse/stringify is to emulate what @preval is doing and avoid any
// inconsistent behavior in dev mode
export default JSON.parse(
JSON.stringify([
shortCodesToEmojiData,
/*
* The property `skins` is not found in the current context.
* This could potentially lead to issues when interacting with modules or data structures
* that expect the presence of `skins` property.
* Currently, no definitions or references to `skins` property can be found in:
* - {@link node_modules/emoji-mart/dist/utils/data.js}
* - {@link node_modules/emoji-mart/data/all.json}
* - {@link app/javascript/mastodon/features/emoji/emoji_compressed.d.ts#Skins}
* Future refactorings or updates should consider adding definitions or handling for `skins` property.
*/
emojiMartData.skins,
emojiMartData.categories,
emojiMartData.aliases,
emojisWithoutShortCodes,
]),
);

File diff suppressed because one or more lines are too long

View File

@ -1,50 +0,0 @@
// The output of this module is designed to mimic emoji-mart's
// "data" object, such that we can use it for a light version of emoji-mart's
// emojiIndex.search functionality.
import type { BaseEmoji } from 'emoji-mart';
import type { Emoji } from 'emoji-mart/dist-es/utils/data';
import emojiCompressed from 'virtual:mastodon-emoji-compressed';
import type {
Search,
ShortCodesToEmojiData,
} from 'virtual:mastodon-emoji-compressed';
import { unicodeToUnifiedName } from './unicode_utils';
type Emojis = Record<
NonNullable<keyof ShortCodesToEmojiData>,
{
native: BaseEmoji['native'];
search: Search;
short_names: Emoji['short_names'];
unified: Emoji['unified'];
}
>;
const [
shortCodesToEmojiData,
_skins,
categories,
short_names,
_emojisWithoutShortCodes,
] = emojiCompressed;
const emojis: Emojis = {};
// decompress
Object.keys(shortCodesToEmojiData).forEach((shortCode) => {
const emojiData = shortCodesToEmojiData[shortCode];
if (!emojiData) return;
const [_filenameData, searchData] = emojiData;
const [native, short_names, search, unified] = searchData;
emojis[shortCode] = {
native,
search,
short_names: short_names ? [shortCode].concat(short_names) : undefined,
unified: unified ?? unicodeToUnifiedName(native),
};
});
export { emojis, categories, short_names };

View File

@ -1,185 +0,0 @@
// This code is largely borrowed from:
// https://github.com/missive/emoji-mart/blob/5f2ffcc/src/utils/emoji-index.js
import { emojis, categories } from './emoji_mart_data_light';
import { getData, getSanitizedData, uniq, intersect } from './emoji_utils';
let originalPool = {};
let index = {};
let emojisList = {};
let emoticonsList = {};
let customEmojisList = [];
for (let emoji in emojis) {
let emojiData = emojis[emoji];
let { short_names, emoticons } = emojiData;
let id = short_names[0];
if (emoticons) {
emoticons.forEach(emoticon => {
if (emoticonsList[emoticon]) {
return;
}
emoticonsList[emoticon] = id;
});
}
emojisList[id] = getSanitizedData(id);
originalPool[id] = emojiData;
}
function clearCustomEmojis(pool) {
customEmojisList.forEach((emoji) => {
let emojiId = emoji.id || emoji.short_names[0];
delete pool[emojiId];
delete emojisList[emojiId];
});
}
function addCustomToPool(custom, pool) {
if (customEmojisList.length) clearCustomEmojis(pool);
custom.forEach((emoji) => {
let emojiId = emoji.id || emoji.short_names[0];
if (emojiId && !pool[emojiId]) {
pool[emojiId] = getData(emoji);
emojisList[emojiId] = getSanitizedData(emoji);
}
});
customEmojisList = custom;
index = {};
}
function search(value, { emojisToShowFilter, maxResults, include, exclude, custom } = {}) {
if (custom !== undefined) {
if (customEmojisList !== custom)
addCustomToPool(custom, originalPool);
} else {
custom = [];
}
maxResults = maxResults || 75;
include = include || [];
exclude = exclude || [];
let results = null,
pool = originalPool;
if (value.length) {
if (value === '-' || value === '-1') {
return [emojisList['-1']];
}
let values = value.toLowerCase().split(/[\s|,\-_]+/),
allResults = [];
if (values.length > 2) {
values = [values[0], values[1]];
}
if (include.length || exclude.length) {
pool = {};
categories.forEach(category => {
let isIncluded = include && include.length ? include.indexOf(category.name.toLowerCase()) > -1 : true;
let isExcluded = exclude && exclude.length ? exclude.indexOf(category.name.toLowerCase()) > -1 : false;
if (!isIncluded || isExcluded) {
return;
}
category.emojis.forEach(emojiId => pool[emojiId] = emojis[emojiId]);
});
if (custom.length) {
let customIsIncluded = include && include.length ? include.indexOf('custom') > -1 : true;
let customIsExcluded = exclude && exclude.length ? exclude.indexOf('custom') > -1 : false;
if (customIsIncluded && !customIsExcluded) {
addCustomToPool(custom, pool);
}
}
}
const searchValue = (value) => {
let aPool = pool,
aIndex = index,
length = 0;
for (let charIndex = 0; charIndex < value.length; charIndex++) {
const char = value[charIndex];
length++;
aIndex[char] = aIndex[char] || {};
aIndex = aIndex[char];
if (!aIndex.results) {
let scores = {};
aIndex.results = [];
aIndex.pool = {};
for (let id in aPool) {
let emoji = aPool[id],
{ search } = emoji,
sub = value.slice(0, length),
subIndex = search.indexOf(sub);
if (subIndex !== -1) {
let score = subIndex + 1;
if (sub === id) score = 0;
aIndex.results.push(emojisList[id]);
aIndex.pool[id] = emoji;
scores[id] = score;
}
}
aIndex.results.sort((a, b) => {
let aScore = scores[a.id],
bScore = scores[b.id];
return aScore - bScore;
});
}
aPool = aIndex.pool;
}
return aIndex.results;
};
if (values.length > 1) {
results = searchValue(value);
} else {
results = [];
}
allResults = values.map(searchValue).filter(a => a);
if (allResults.length > 1) {
allResults = intersect.apply(null, allResults);
} else if (allResults.length) {
allResults = allResults[0];
}
results = uniq(results.concat(allResults));
}
if (results) {
if (emojisToShowFilter) {
results = results.filter((result) => emojisToShowFilter(emojis[result.id]));
}
if (results && results.length > maxResults) {
results = results.slice(0, maxResults);
}
}
return results;
}
export { search };

View File

@ -1,217 +0,0 @@
// This code is largely borrowed from:
// https://github.com/missive/emoji-mart/blob/5f2ffcc/src/utils/index.js
import * as data from './emoji_mart_data_light';
const buildSearch = (data) => {
const search = [];
let addToSearch = (strings, split) => {
if (!strings) {
return;
}
(Array.isArray(strings) ? strings : [strings]).forEach((string) => {
(split ? string.split(/[-|_|\s]+/) : [string]).forEach((s) => {
s = s.toLowerCase();
if (search.indexOf(s) === -1) {
search.push(s);
}
});
});
};
addToSearch(data.short_names, true);
addToSearch(data.name, true);
addToSearch(data.keywords, false);
addToSearch(data.emoticons, false);
return search.join(',');
};
const _String = String;
const stringFromCodePoint = _String.fromCodePoint || function () {
let MAX_SIZE = 0x4000;
let codeUnits = [];
let highSurrogate;
let lowSurrogate;
let index = -1;
let length = arguments.length;
if (!length) {
return '';
}
let result = '';
while (++index < length) {
let codePoint = Number(arguments[index]);
if (
!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`
codePoint < 0 || // not a valid Unicode code point
codePoint > 0x10FFFF || // not a valid Unicode code point
Math.floor(codePoint) !== codePoint // not an integer
) {
throw RangeError('Invalid code point: ' + codePoint);
}
if (codePoint <= 0xFFFF) { // BMP code point
codeUnits.push(codePoint);
} else { // Astral code point; split in surrogate halves
// http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
codePoint -= 0x10000;
highSurrogate = (codePoint >> 10) + 0xD800;
lowSurrogate = (codePoint % 0x400) + 0xDC00;
codeUnits.push(highSurrogate, lowSurrogate);
}
if (index + 1 === length || codeUnits.length > MAX_SIZE) {
result += String.fromCharCode.apply(null, codeUnits);
codeUnits.length = 0;
}
}
return result;
};
const _JSON = JSON;
const COLONS_REGEX = /^(?::([^:]+):)(?::skin-tone-(\d):)?$/;
const SKINS = [
'1F3FA', '1F3FB', '1F3FC',
'1F3FD', '1F3FE', '1F3FF',
];
function unifiedToNative(unified) {
let unicodes = unified.split('-'),
codePoints = unicodes.map((u) => `0x${u}`);
return stringFromCodePoint.apply(null, codePoints);
}
function sanitize(emoji) {
let { name, short_names, skin_tone, skin_variations, emoticons, unified, custom, imageUrl } = emoji,
id = emoji.id || short_names[0],
colons = `:${id}:`;
if (custom) {
return {
id,
name,
colons,
emoticons,
custom,
imageUrl,
};
}
if (skin_tone) {
colons += `:skin-tone-${skin_tone}:`;
}
return {
id,
name,
colons,
emoticons,
unified: unified.toLowerCase(),
skin: skin_tone || (skin_variations ? 1 : null),
native: unifiedToNative(unified),
};
}
function getSanitizedData() {
return sanitize(getData(...arguments));
}
function getData(emoji, skin, set) {
let emojiData = {};
if (typeof emoji === 'string') {
let matches = emoji.match(COLONS_REGEX);
if (matches) {
emoji = matches[1];
if (matches[2]) {
skin = parseInt(matches[2]);
}
}
if (Object.hasOwn(data.short_names, emoji)) {
emoji = data.short_names[emoji];
}
if (Object.hasOwn(data.emojis, emoji)) {
emojiData = data.emojis[emoji];
}
} else if (emoji.id) {
if (Object.hasOwn(data.short_names, emoji.id)) {
emoji.id = data.short_names[emoji.id];
}
if (Object.hasOwn(data.emojis, emoji.id)) {
emojiData = data.emojis[emoji.id];
skin = skin || emoji.skin;
}
}
if (!Object.keys(emojiData).length) {
emojiData = emoji;
emojiData.custom = true;
if (!emojiData.search) {
emojiData.search = buildSearch(emoji);
}
}
emojiData.emoticons = emojiData.emoticons || [];
emojiData.variations = emojiData.variations || [];
if (emojiData.skin_variations && skin > 1 && set) {
emojiData = JSON.parse(_JSON.stringify(emojiData));
let skinKey = SKINS[skin - 1],
variationData = emojiData.skin_variations[skinKey];
if (!variationData.variations && emojiData.variations) {
delete emojiData.variations;
}
if (variationData[`has_img_${set}`]) {
emojiData.skin_tone = skin;
for (let k in variationData) {
let v = variationData[k];
emojiData[k] = v;
}
}
}
if (emojiData.variations && emojiData.variations.length) {
emojiData = JSON.parse(_JSON.stringify(emojiData));
emojiData.unified = emojiData.variations.shift();
}
return emojiData;
}
function uniq(arr) {
return arr.reduce((acc, item) => {
if (acc.indexOf(item) === -1) {
acc.push(item);
}
return acc;
}, []);
}
function intersect(a, b) {
const uniqA = uniq(a);
const uniqB = uniq(b);
return uniqA.filter(item => uniqB.indexOf(item) >= 0);
}
export {
getData,
getSanitizedData,
uniq,
intersect,
};

View File

@ -75,6 +75,36 @@ export async function fetchCustomEmojiData() {
return customEmojis; return customEmojis;
} }
type LegacyEmoji =
| { id: string; custom?: false; native: string }
| {
id: string;
custom: true;
};
// Replicates the old legacy search function.
export async function emojiMartSearch(
token: string,
locale: string,
limit = 5,
): Promise<LegacyEmoji[]> {
const query = token.replace(':', '').toLowerCase().trim();
if (!query.length) {
return [];
}
const { search } = await import('./database');
const results = await search({ query, locale, limit });
return results.map((emoji) =>
'shortcode' in emoji
? { id: emoji.shortcode, custom: true }
: {
id: emoji.label.replaceAll(' ', '_').toLowerCase(),
native: emoji.unicode,
},
);
}
export function usePickerEmojis() { export function usePickerEmojis() {
const [, setLoaded] = useState(customEmojis !== null); const [, setLoaded] = useState(customEmojis !== null);

View File

@ -1,9 +1,12 @@
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import type { ExtraCustomEmojiMap } from '../features/emoji/types'; import type { ExtraCustomEmojiMap } from '../features/emoji/types';
import { emojiLogger } from '../features/emoji/utils';
let emojis: ExtraCustomEmojiMap | null = null; let emojis: ExtraCustomEmojiMap | null = null;
const log = emojiLogger('useCustomEmojis');
export function useCustomEmojis() { export function useCustomEmojis() {
const [, setLoaded] = useState(emojis !== null); const [, setLoaded] = useState(emojis !== null);
useEffect(() => { useEffect(() => {
@ -21,6 +24,7 @@ async function loadEmojisIntoCache() {
const { loadAllCustomEmoji } = await import('../features/emoji/database'); const { loadAllCustomEmoji } = await import('../features/emoji/database');
const emojisRaw = await loadAllCustomEmoji(); const emojisRaw = await loadAllCustomEmoji();
if (emojisRaw === null) { if (emojisRaw === null) {
log('Custom emojis not loaded yet');
return; return;
} }
@ -32,4 +36,5 @@ async function loadEmojisIntoCache() {
static_url: emoji.static_url, static_url: emoji.static_url,
}; };
} }
log('Loaded %d custom emojis into cache', Object.keys(emojis).length);
} }

View File

@ -394,7 +394,6 @@
"collections.detail.loading": "Загружаецца калекцыя…", "collections.detail.loading": "Загружаецца калекцыя…",
"collections.detail.revoke_inclusion": "Прыбраць сябе", "collections.detail.revoke_inclusion": "Прыбраць сябе",
"collections.detail.sensitive_content": "Адчувальнае змесціва", "collections.detail.sensitive_content": "Адчувальнае змесціва",
"collections.detail.sensitive_note": "У гэтай калекцыі прысутнічаюць уліковыя запісы і кантэнт, змесціва якіх можа падацца адчувальным для некаторых карыстальнікаў.",
"collections.detail.share": "Падзяліцца гэтай калекцыяй", "collections.detail.share": "Падзяліцца гэтай калекцыяй",
"collections.detail.you_are_in_this_collection": "Вас уключылі ў гэтую калекцыю", "collections.detail.you_are_in_this_collection": "Вас уключылі ў гэтую калекцыю",
"collections.edit_details": "Рэдагаваць падрабязнасці", "collections.edit_details": "Рэдагаваць падрабязнасці",

View File

@ -327,11 +327,15 @@
"annual_report.summary.share_on_mastodon": "Rhannwch ar Mastodon", "annual_report.summary.share_on_mastodon": "Rhannwch ar Mastodon",
"attachments_list.unprocessed": "(heb eu prosesu)", "attachments_list.unprocessed": "(heb eu prosesu)",
"audio.hide": "Cuddio sain", "audio.hide": "Cuddio sain",
"block_modal.no_collections": "Does dim modd i'r un ohonoch ychwanegu'ch gilydd at gasgliadau. Byddwch yn cael eich tynnu'n awtomatig o gasgliadau presennol eich gilydd, os yw'n berthnasol.",
"block_modal.remote_users_caveat": "Byddwn yn gofyn i'r gweinydd {domain} barchu eich penderfyniad. Fodd bynnag, nid yw cydymffurfiad wedi'i warantu gan y gall rhai gweinyddwyr drin rhwystrau mewn ffyrdd gwahanol. Mae'n bosibl y bydd postiadau cyhoeddus yn dal i fod yn weladwy i ddefnyddwyr nad ydynt wedi mewngofnodi.", "block_modal.remote_users_caveat": "Byddwn yn gofyn i'r gweinydd {domain} barchu eich penderfyniad. Fodd bynnag, nid yw cydymffurfiad wedi'i warantu gan y gall rhai gweinyddwyr drin rhwystrau mewn ffyrdd gwahanol. Mae'n bosibl y bydd postiadau cyhoeddus yn dal i fod yn weladwy i ddefnyddwyr nad ydynt wedi mewngofnodi.",
"block_modal.show_less": "Dangos llai", "block_modal.show_less": "Dangos llai",
"block_modal.show_more": "Dangos rhagor", "block_modal.show_more": "Dangos rhagor",
"block_modal.they_cant_mention": "Gallwch chi ddim sôn am, dilyn, na dyfynnu eich gilydd.",
"block_modal.they_cant_see_posts": "Byddan nhw ddim yn gallu gweld eich cynnwys a fyddwch chi ddim yn gweld eu cynnwys nhw.",
"block_modal.they_will_know": "Gallan nhw weld eu bod wedi'u rhwystro.", "block_modal.they_will_know": "Gallan nhw weld eu bod wedi'u rhwystro.",
"block_modal.title": "Blocio defnyddiwr?", "block_modal.title": "Blocio defnyddiwr?",
"block_modal.you_wont_see_mentions": "Fyddwch chi ddim yn gweld postiadau gan eraill sy'n eu crybwyll.",
"boost_modal.combo": "Mae modd pwyso {combo} er mwyn hepgor hyn tro nesa", "boost_modal.combo": "Mae modd pwyso {combo} er mwyn hepgor hyn tro nesa",
"boost_modal.reblog": "Hybu postiad?", "boost_modal.reblog": "Hybu postiad?",
"boost_modal.undo_reblog": "Dad-hybu postiad?", "boost_modal.undo_reblog": "Dad-hybu postiad?",
@ -390,7 +394,7 @@
"collections.detail.loading": "Yn llwytho casgliad…", "collections.detail.loading": "Yn llwytho casgliad…",
"collections.detail.revoke_inclusion": "Tynnu fi", "collections.detail.revoke_inclusion": "Tynnu fi",
"collections.detail.sensitive_content": "Cynnwys sensitif", "collections.detail.sensitive_content": "Cynnwys sensitif",
"collections.detail.sensitive_note": "Mae'r casgliad hwn yn cynnwys cyfrifon a chynnwys a allai fod yn sensitif i rai defnyddwyr.", "collections.detail.sensitive_note": "Efallai na fydd y disgrifiad a'r cyfrifon yn addas i bob darllenydd.",
"collections.detail.share": "Rhannu'r casgliad hwn", "collections.detail.share": "Rhannu'r casgliad hwn",
"collections.detail.you_are_in_this_collection": "Rydych chi wedi'ch cynnwys yn y casgliad hwn", "collections.detail.you_are_in_this_collection": "Rydych chi wedi'ch cynnwys yn y casgliad hwn",
"collections.edit_details": "Golygu manylion", "collections.edit_details": "Golygu manylion",
@ -421,6 +425,11 @@
"collections.search_accounts_max_reached": "Rydych chi wedi ychwanegu'r nifer mwyaf o gyfrifon", "collections.search_accounts_max_reached": "Rydych chi wedi ychwanegu'r nifer mwyaf o gyfrifon",
"collections.sensitive": "Sensitif", "collections.sensitive": "Sensitif",
"collections.share_short": "Rhannu", "collections.share_short": "Rhannu",
"collections.sort_alphabetical": "Yn nhrefn yr Wyddor",
"collections.sort_by": "Trefnu yn ôl:",
"collections.sort_date_added": "Dyddiad ychwanegu",
"collections.sort_last_active": "Yn weithgar ddiwethaf",
"collections.sort_most_followers": "Mwyaf o ddilynwyr",
"collections.suggestions.can_not_add": "Dim modd ei ychwanegu", "collections.suggestions.can_not_add": "Dim modd ei ychwanegu",
"collections.suggestions.can_not_add_desc": "Efallai bod y cyfrifon hyn wedi dewis peidio â chael eu darganfod, neu efallai eu bod ar weinydd nad yw'n cefnogi casgliadau.", "collections.suggestions.can_not_add_desc": "Efallai bod y cyfrifon hyn wedi dewis peidio â chael eu darganfod, neu efallai eu bod ar weinydd nad yw'n cefnogi casgliadau.",
"collections.suggestions.must_follow": "Rhaid dilyn yn gyntaf", "collections.suggestions.must_follow": "Rhaid dilyn yn gyntaf",
@ -632,6 +641,7 @@
"empty_column.blocks": "Dydych chi heb rwystro unrhyw ddefnyddwyr eto.", "empty_column.blocks": "Dydych chi heb rwystro unrhyw ddefnyddwyr eto.",
"empty_column.bookmarked_statuses": "Does gennych chi ddim unrhyw bostiad wedi'u cadw fel nod tudalen eto. Pan fyddwch yn gosod nod tudalen i un, mi fydd yn ymddangos yma.", "empty_column.bookmarked_statuses": "Does gennych chi ddim unrhyw bostiad wedi'u cadw fel nod tudalen eto. Pan fyddwch yn gosod nod tudalen i un, mi fydd yn ymddangos yma.",
"empty_column.collections.featured_in": "Dydych chi heb gael eich ychwanegu at unrhyw gasgliadau eto.", "empty_column.collections.featured_in": "Dydych chi heb gael eich ychwanegu at unrhyw gasgliadau eto.",
"empty_column.collections.featured_in_undiscoverable": "Er mwyn i bobl eich ychwanegu at gasgliadau, mae angen i chi ganiatáu i chi ymddangos mewn profiadau darganfod o<link> Dewisiadau > Preifatrwydd a chyrhaeddiad</link>",
"empty_column.community": "Mae'r ffrwd lleol yn wag. Beth am ysgrifennu rhywbeth cyhoeddus!", "empty_column.community": "Mae'r ffrwd lleol yn wag. Beth am ysgrifennu rhywbeth cyhoeddus!",
"empty_column.direct": "Does gennych chi unrhyw grybwylliadau preifat eto. Pan fyddwch chi'n anfon neu'n derbyn un, bydd yn ymddangos yma.", "empty_column.direct": "Does gennych chi unrhyw grybwylliadau preifat eto. Pan fyddwch chi'n anfon neu'n derbyn un, bydd yn ymddangos yma.",
"empty_column.disabled_feed": "Mae'r ffrwd hon wedi'i hanalluogi gan weinyddwyr eich gweinydd.", "empty_column.disabled_feed": "Mae'r ffrwd hon wedi'i hanalluogi gan weinyddwyr eich gweinydd.",
@ -777,6 +787,7 @@
"info_button.label": "Cymorth", "info_button.label": "Cymorth",
"info_button.what_is_alt_text": "<h1>Beth yw testun amgen?</h1><p> Mae Testun Amgen yn darparu disgrifiadau delwedd ar gyfer pobl â nam ar eu golwg, cysylltiadau lled band isel, neu'r rhai sy'n ceisio cyd-destun ychwanegol.</p><p> Gallwch wella hygyrchedd a dealltwriaeth i bawb trwy ysgrifennu testun amgen clir, cryno a gwrthrychol.</p><ul><li> Dal elfennau pwysig</li><li> Crynhoi testun mewn delweddau</li><li> Defnyddiwch strwythur brawddegau rheolaidd</li><li> Osgoi gwybodaeth ddiangen</li><li> Canolbwyntio ar dueddiadau a chanfyddiadau allweddol mewn delweddau cymhleth (fel diagramau neu fapiau)</li></ul>", "info_button.what_is_alt_text": "<h1>Beth yw testun amgen?</h1><p> Mae Testun Amgen yn darparu disgrifiadau delwedd ar gyfer pobl â nam ar eu golwg, cysylltiadau lled band isel, neu'r rhai sy'n ceisio cyd-destun ychwanegol.</p><p> Gallwch wella hygyrchedd a dealltwriaeth i bawb trwy ysgrifennu testun amgen clir, cryno a gwrthrychol.</p><ul><li> Dal elfennau pwysig</li><li> Crynhoi testun mewn delweddau</li><li> Defnyddiwch strwythur brawddegau rheolaidd</li><li> Osgoi gwybodaeth ddiangen</li><li> Canolbwyntio ar dueddiadau a chanfyddiadau allweddol mewn delweddau cymhleth (fel diagramau neu fapiau)</li></ul>",
"interaction_modal.action": "I ryngweithio â phostiad {name}, mae angen i chi fewngofnodi i'ch cyfrif ar ba bynnag weinydd Mastodon rydych chi'n ei ddefnyddio.", "interaction_modal.action": "I ryngweithio â phostiad {name}, mae angen i chi fewngofnodi i'ch cyfrif ar ba bynnag weinydd Mastodon rydych chi'n ei ddefnyddio.",
"interaction_modal.action_follow": "I ddilyn {name}, mae angen i chi fewngofnodi i'ch cyfrif ar ba bynnag weinydd Mastodon rydych chi'n ei ddefnyddio.",
"interaction_modal.go": "Mynd", "interaction_modal.go": "Mynd",
"interaction_modal.no_account_yet": "Dim cyfrif eto?", "interaction_modal.no_account_yet": "Dim cyfrif eto?",
"interaction_modal.on_another_server": "Ar weinydd gwahanol", "interaction_modal.on_another_server": "Ar weinydd gwahanol",

View File

@ -394,7 +394,7 @@
"collections.detail.loading": "Indlæser samling…", "collections.detail.loading": "Indlæser samling…",
"collections.detail.revoke_inclusion": "Fjern mig", "collections.detail.revoke_inclusion": "Fjern mig",
"collections.detail.sensitive_content": "Følsomt indhold", "collections.detail.sensitive_content": "Følsomt indhold",
"collections.detail.sensitive_note": "Denne samling indeholder konti og indhold, der kan være følsomt for nogle brugere.", "collections.detail.sensitive_note": "Beskrivelsen og kontiene er muligvis ikke egnet for alle.",
"collections.detail.share": "Del denne samling", "collections.detail.share": "Del denne samling",
"collections.detail.you_are_in_this_collection": "Du er med i denne samling", "collections.detail.you_are_in_this_collection": "Du er med i denne samling",
"collections.edit_details": "Rediger detaljer", "collections.edit_details": "Rediger detaljer",
@ -425,6 +425,11 @@
"collections.search_accounts_max_reached": "Du har tilføjet det maksimale antal konti", "collections.search_accounts_max_reached": "Du har tilføjet det maksimale antal konti",
"collections.sensitive": "Sensitivt", "collections.sensitive": "Sensitivt",
"collections.share_short": "Del", "collections.share_short": "Del",
"collections.sort_alphabetical": "Alfabetisk",
"collections.sort_by": "Sortér efter:",
"collections.sort_date_added": "Dato tilføjet",
"collections.sort_last_active": "Senest aktiv",
"collections.sort_most_followers": "Flest følgere",
"collections.suggestions.can_not_add": "Kan ikke tilføjes", "collections.suggestions.can_not_add": "Kan ikke tilføjes",
"collections.suggestions.can_not_add_desc": "Disse konti kan have fravalgt opdagelse, eller de kan være på en server, der ikke understøtter samlinger.", "collections.suggestions.can_not_add_desc": "Disse konti kan have fravalgt opdagelse, eller de kan være på en server, der ikke understøtter samlinger.",
"collections.suggestions.must_follow": "Skal følge først", "collections.suggestions.must_follow": "Skal følge først",
@ -636,6 +641,7 @@
"empty_column.blocks": "Du har ikke blokeret nogle brugere endnu.", "empty_column.blocks": "Du har ikke blokeret nogle brugere endnu.",
"empty_column.bookmarked_statuses": "Du har ingen bogmærkede indlæg endnu. Når du bogmærker ét, vil det dukke op hér.", "empty_column.bookmarked_statuses": "Du har ingen bogmærkede indlæg endnu. Når du bogmærker ét, vil det dukke op hér.",
"empty_column.collections.featured_in": "Du er ikke blevet tilføjet til nogen samlinger endnu.", "empty_column.collections.featured_in": "Du er ikke blevet tilføjet til nogen samlinger endnu.",
"empty_column.collections.featured_in_undiscoverable": "For at andre kan føje dig til samlinger, skal du give tilladelse til at blive vist i opdagelsesfunktioner under <link>Præferencer > Fortrolighed og rækkevidde</link>",
"empty_column.community": "Den lokale tidslinje er tom. Skriv noget offentligt for at sætte tingene i gang!", "empty_column.community": "Den lokale tidslinje er tom. Skriv noget offentligt for at sætte tingene i gang!",
"empty_column.direct": "Du har ikke nogen private omtaler endnu. Når du sender eller modtager en, vil den blive vist her.", "empty_column.direct": "Du har ikke nogen private omtaler endnu. Når du sender eller modtager en, vil den blive vist her.",
"empty_column.disabled_feed": "Dette feed er blevet deaktiveret af dine serveradministratorer.", "empty_column.disabled_feed": "Dette feed er blevet deaktiveret af dine serveradministratorer.",

View File

@ -394,7 +394,7 @@
"collections.detail.loading": "Sammlung wird geladen …", "collections.detail.loading": "Sammlung wird geladen …",
"collections.detail.revoke_inclusion": "Mich entfernen", "collections.detail.revoke_inclusion": "Mich entfernen",
"collections.detail.sensitive_content": "Inhaltswarnung", "collections.detail.sensitive_content": "Inhaltswarnung",
"collections.detail.sensitive_note": "Diese Sammlung enthält Profile und Inhalte, die manche als anstößig empfinden.", "collections.detail.sensitive_note": "Die Beschreibung und Konten sind möglicherweise nicht für alle geeignet.",
"collections.detail.share": "Sammlung teilen", "collections.detail.share": "Sammlung teilen",
"collections.detail.you_are_in_this_collection": "Du bist ein Teil dieser Sammlung", "collections.detail.you_are_in_this_collection": "Du bist ein Teil dieser Sammlung",
"collections.edit_details": "Details bearbeiten", "collections.edit_details": "Details bearbeiten",
@ -425,6 +425,11 @@
"collections.search_accounts_max_reached": "Du hast die Höchstzahl an Konten hinzugefügt", "collections.search_accounts_max_reached": "Du hast die Höchstzahl an Konten hinzugefügt",
"collections.sensitive": "Inhaltswarnung", "collections.sensitive": "Inhaltswarnung",
"collections.share_short": "Teilen", "collections.share_short": "Teilen",
"collections.sort_alphabetical": "Alphabetisch",
"collections.sort_by": "Sortierung:",
"collections.sort_date_added": "Datum des Hinzufügens",
"collections.sort_last_active": "Neueste Aktivität",
"collections.sort_most_followers": "Followerzahl",
"collections.suggestions.can_not_add": "Kann nicht hinzugefügt werden", "collections.suggestions.can_not_add": "Kann nicht hinzugefügt werden",
"collections.suggestions.can_not_add_desc": "Diese Konten möchten möglicherweise nicht entdeckt werden oder deren Server unterstützt noch keine Sammlungen.", "collections.suggestions.can_not_add_desc": "Diese Konten möchten möglicherweise nicht entdeckt werden oder deren Server unterstützt noch keine Sammlungen.",
"collections.suggestions.must_follow": "Profil muss gefolgt werden", "collections.suggestions.must_follow": "Profil muss gefolgt werden",
@ -636,6 +641,7 @@
"empty_column.blocks": "Du hast bisher keine Profile blockiert.", "empty_column.blocks": "Du hast bisher keine Profile blockiert.",
"empty_column.bookmarked_statuses": "Du hast bisher keine Beiträge als Lesezeichen abgelegt. Sobald du einen Beitrag als Lesezeichen speicherst, wird er hier erscheinen.", "empty_column.bookmarked_statuses": "Du hast bisher keine Beiträge als Lesezeichen abgelegt. Sobald du einen Beitrag als Lesezeichen speicherst, wird er hier erscheinen.",
"empty_column.collections.featured_in": "Du wurdest noch keiner Sammlung hinzugefügt.", "empty_column.collections.featured_in": "Du wurdest noch keiner Sammlung hinzugefügt.",
"empty_column.collections.featured_in_undiscoverable": "Damit du zu Sammlungen hinzugefügt werden kannst, muss „Mich beim Entdecken berücksichtigen“ unter <link>Einstellungen > Datenschutz und Reichweite</link> aktiviert werden",
"empty_column.community": "Die lokale Timeline ist leer. Schreibe einen öffentlichen Beitrag, um den Stein ins Rollen zu bringen!", "empty_column.community": "Die lokale Timeline ist leer. Schreibe einen öffentlichen Beitrag, um den Stein ins Rollen zu bringen!",
"empty_column.direct": "Du hast noch keine privaten Erwähnungen. Sobald du eine sendest oder erhältst, wird sie hier erscheinen.", "empty_column.direct": "Du hast noch keine privaten Erwähnungen. Sobald du eine sendest oder erhältst, wird sie hier erscheinen.",
"empty_column.disabled_feed": "Diesen Feed haben deine Server-Administrator*innen deaktiviert.", "empty_column.disabled_feed": "Diesen Feed haben deine Server-Administrator*innen deaktiviert.",

View File

@ -394,7 +394,7 @@
"collections.detail.loading": "Γίνεται φόρτωση της συλλογής…", "collections.detail.loading": "Γίνεται φόρτωση της συλλογής…",
"collections.detail.revoke_inclusion": "Αφαίρεσε με", "collections.detail.revoke_inclusion": "Αφαίρεσε με",
"collections.detail.sensitive_content": "Ευαίσθητο περιεχόμενο", "collections.detail.sensitive_content": "Ευαίσθητο περιεχόμενο",
"collections.detail.sensitive_note": "Αυτή η συλλογή περιέχει λογαριασμούς και περιεχόμενο που μπορεί να είναι ευαίσθητα σε ορισμένους χρήστες.", "collections.detail.sensitive_note": "Η περιγραφή και οι λογαριασμοί μπορεί να μην είναι κατάλληλα για όλους τους θεατές.",
"collections.detail.share": "Κοινοποιήστε αυτήν τη συλλογή", "collections.detail.share": "Κοινοποιήστε αυτήν τη συλλογή",
"collections.detail.you_are_in_this_collection": "Είστε αναδεδειγμένοι σε αυτήν τη συλλογή", "collections.detail.you_are_in_this_collection": "Είστε αναδεδειγμένοι σε αυτήν τη συλλογή",
"collections.edit_details": "Επεξεργασία λεπτομερειών", "collections.edit_details": "Επεξεργασία λεπτομερειών",
@ -425,6 +425,11 @@
"collections.search_accounts_max_reached": "Έχετε προσθέσει τον μέγιστο αριθμό λογαριασμών", "collections.search_accounts_max_reached": "Έχετε προσθέσει τον μέγιστο αριθμό λογαριασμών",
"collections.sensitive": "Ευαίσθητο", "collections.sensitive": "Ευαίσθητο",
"collections.share_short": "Κοινοποίηση", "collections.share_short": "Κοινοποίηση",
"collections.sort_alphabetical": "Αλφαβητικά",
"collections.sort_by": "Ταξινόμηση κατά:",
"collections.sort_date_added": "Ημερομηνία προσθήκης",
"collections.sort_last_active": "Τελευταία ενεργός",
"collections.sort_most_followers": "Περισσότεροι ακόλουθοι",
"collections.suggestions.can_not_add": "Δεν μπορεί να προστεθεί", "collections.suggestions.can_not_add": "Δεν μπορεί να προστεθεί",
"collections.suggestions.can_not_add_desc": "Αυτοί οι λογαριασμοί μπορεί να έχουν εξαιρεθεί από την ανακάλυψη, ή μπορεί να είναι σε έναν διακομιστή που δεν υποστηρίζει συλλογές.", "collections.suggestions.can_not_add_desc": "Αυτοί οι λογαριασμοί μπορεί να έχουν εξαιρεθεί από την ανακάλυψη, ή μπορεί να είναι σε έναν διακομιστή που δεν υποστηρίζει συλλογές.",
"collections.suggestions.must_follow": "Πρέπει να τον ακολουθήσετε πρώτα", "collections.suggestions.must_follow": "Πρέπει να τον ακολουθήσετε πρώτα",
@ -636,6 +641,7 @@
"empty_column.blocks": "Δεν έχεις αποκλείσει κανέναν χρήστη ακόμη.", "empty_column.blocks": "Δεν έχεις αποκλείσει κανέναν χρήστη ακόμη.",
"empty_column.bookmarked_statuses": "Δεν έχεις καμία ανάρτηση με σελιδοδείκτη ακόμη. Μόλις βάλεις κάποιον, θα εμφανιστεί εδώ.", "empty_column.bookmarked_statuses": "Δεν έχεις καμία ανάρτηση με σελιδοδείκτη ακόμη. Μόλις βάλεις κάποιον, θα εμφανιστεί εδώ.",
"empty_column.collections.featured_in": "Δεν έχετε προστεθεί ακόμη σε καμία συλλογή.", "empty_column.collections.featured_in": "Δεν έχετε προστεθεί ακόμη σε καμία συλλογή.",
"empty_column.collections.featured_in_undiscoverable": "Προκειμένου ο κόσμος να σας προσθέσει σε συλλογές, πρέπει να επιτρέψετε την ανάδειξή σας σε εμπειρίες ανακάλυψης από τις <link>Προτιμήσεις > Ιδιωτικότητα και προσιτότητα</link>",
"empty_column.community": "Η τοπική ροή είναι κενή. Γράψε κάτι δημόσια για να αρχίσει να κυλά η μπάλα!", "empty_column.community": "Η τοπική ροή είναι κενή. Γράψε κάτι δημόσια για να αρχίσει να κυλά η μπάλα!",
"empty_column.direct": "Δεν έχεις καμία ιδιωτική επισήμανση ακόμη. Όταν στείλεις ή λάβεις μία, θα εμφανιστεί εδώ.", "empty_column.direct": "Δεν έχεις καμία ιδιωτική επισήμανση ακόμη. Όταν στείλεις ή λάβεις μία, θα εμφανιστεί εδώ.",
"empty_column.disabled_feed": "Αυτή η ροή έχει απενεργοποιηθεί από τους διαχειριστές του διακομιστή σας.", "empty_column.disabled_feed": "Αυτή η ροή έχει απενεργοποιηθεί από τους διαχειριστές του διακομιστή σας.",

View File

@ -394,7 +394,6 @@
"collections.detail.loading": "Loading collection…", "collections.detail.loading": "Loading collection…",
"collections.detail.revoke_inclusion": "Remove me", "collections.detail.revoke_inclusion": "Remove me",
"collections.detail.sensitive_content": "Sensitive content", "collections.detail.sensitive_content": "Sensitive content",
"collections.detail.sensitive_note": "This collection contains accounts and content that may be sensitive to some users.",
"collections.detail.share": "Share this collection", "collections.detail.share": "Share this collection",
"collections.detail.you_are_in_this_collection": "You're featured in this collection", "collections.detail.you_are_in_this_collection": "You're featured in this collection",
"collections.edit_details": "Edit details", "collections.edit_details": "Edit details",

View File

@ -394,7 +394,7 @@
"collections.detail.loading": "Cargando colección…", "collections.detail.loading": "Cargando colección…",
"collections.detail.revoke_inclusion": "Quitarme", "collections.detail.revoke_inclusion": "Quitarme",
"collections.detail.sensitive_content": "Contenido sensible", "collections.detail.sensitive_content": "Contenido sensible",
"collections.detail.sensitive_note": "Esta colección contiene cuentas y contenido que pueden ser sensibles a algunos usuarios.", "collections.detail.sensitive_note": "La descripción y las cuentas pueden no ser adecuadas para todos los espectadores.",
"collections.detail.share": "Compartir esta colección", "collections.detail.share": "Compartir esta colección",
"collections.detail.you_are_in_this_collection": "Te destacaron en esta colección", "collections.detail.you_are_in_this_collection": "Te destacaron en esta colección",
"collections.edit_details": "Editar detalles", "collections.edit_details": "Editar detalles",
@ -425,6 +425,11 @@
"collections.search_accounts_max_reached": "Agregaste el número máximo de cuentas", "collections.search_accounts_max_reached": "Agregaste el número máximo de cuentas",
"collections.sensitive": "Sensible", "collections.sensitive": "Sensible",
"collections.share_short": "Compartir", "collections.share_short": "Compartir",
"collections.sort_alphabetical": "Alfabéticamente",
"collections.sort_by": "Ordenar por:",
"collections.sort_date_added": "Fecha de agregado",
"collections.sort_last_active": "Última actividad",
"collections.sort_most_followers": "Más seguidores",
"collections.suggestions.can_not_add": "No se puede agregar", "collections.suggestions.can_not_add": "No se puede agregar",
"collections.suggestions.can_not_add_desc": "Estas cuentas pueden haber optado por no ser descubiertas, o podrían estar en un servidor que no soporta colecciones.", "collections.suggestions.can_not_add_desc": "Estas cuentas pueden haber optado por no ser descubiertas, o podrían estar en un servidor que no soporta colecciones.",
"collections.suggestions.must_follow": "Deben seguirse primero", "collections.suggestions.must_follow": "Deben seguirse primero",
@ -636,6 +641,7 @@
"empty_column.blocks": "Todavía no bloqueaste a ningún usuario.", "empty_column.blocks": "Todavía no bloqueaste a ningún usuario.",
"empty_column.bookmarked_statuses": "Todavía no tenés mensajes guardados en \"Marcadores\". Cuando guardés uno en \"Marcadores\", se mostrará acá.", "empty_column.bookmarked_statuses": "Todavía no tenés mensajes guardados en \"Marcadores\". Cuando guardés uno en \"Marcadores\", se mostrará acá.",
"empty_column.collections.featured_in": "Todavía no te agregaron a ninguna colección.", "empty_column.collections.featured_in": "Todavía no te agregaron a ninguna colección.",
"empty_column.collections.featured_in_undiscoverable": "Para que la gente pueda agregarte a colecciones, tenés que permitir que te destacen en las experiencias de descubrimiento en <link>Configuración > Privacidad y alcance</link>",
"empty_column.community": "La línea temporal local está vacía. ¡Escribí algo en modo público para que se empiece a correr la bola!", "empty_column.community": "La línea temporal local está vacía. ¡Escribí algo en modo público para que se empiece a correr la bola!",
"empty_column.direct": "Todavía no tenés ninguna mención privada. Cuando enviés o recibás una, se mostrará acá.", "empty_column.direct": "Todavía no tenés ninguna mención privada. Cuando enviés o recibás una, se mostrará acá.",
"empty_column.disabled_feed": "Esta línea temporal fue deshabilitada por los administradores de tu servidor.", "empty_column.disabled_feed": "Esta línea temporal fue deshabilitada por los administradores de tu servidor.",

View File

@ -394,7 +394,7 @@
"collections.detail.loading": "Cargando colección…", "collections.detail.loading": "Cargando colección…",
"collections.detail.revoke_inclusion": "Excluirme", "collections.detail.revoke_inclusion": "Excluirme",
"collections.detail.sensitive_content": "Contenido sensible", "collections.detail.sensitive_content": "Contenido sensible",
"collections.detail.sensitive_note": "Esta colección contiene cuentas y contenido que pueden resultar sensibles para algunos usuarios.", "collections.detail.sensitive_note": "La descripción y cuentas pueden no ser adecuadas para todas las personas.",
"collections.detail.share": "Compartir esta colección", "collections.detail.share": "Compartir esta colección",
"collections.detail.you_are_in_this_collection": "Apareces en esta colección", "collections.detail.you_are_in_this_collection": "Apareces en esta colección",
"collections.edit_details": "Editar detalles", "collections.edit_details": "Editar detalles",
@ -425,6 +425,11 @@
"collections.search_accounts_max_reached": "Has añadido el número máximo de cuentas", "collections.search_accounts_max_reached": "Has añadido el número máximo de cuentas",
"collections.sensitive": "Sensible", "collections.sensitive": "Sensible",
"collections.share_short": "Compartir", "collections.share_short": "Compartir",
"collections.sort_alphabetical": "Alfabético",
"collections.sort_by": "Orden:",
"collections.sort_date_added": "Añadido a fecha",
"collections.sort_last_active": "Última actividad",
"collections.sort_most_followers": "Más seguidores",
"collections.suggestions.can_not_add": "No puede ser añadida", "collections.suggestions.can_not_add": "No puede ser añadida",
"collections.suggestions.can_not_add_desc": "Es posible que estas cuentas hayan optado por no ser descubiertas, o que se encuentren en un servidor que no soporta colecciones.", "collections.suggestions.can_not_add_desc": "Es posible que estas cuentas hayan optado por no ser descubiertas, o que se encuentren en un servidor que no soporta colecciones.",
"collections.suggestions.must_follow": "Primero tienes que seguirla", "collections.suggestions.must_follow": "Primero tienes que seguirla",
@ -636,6 +641,7 @@
"empty_column.blocks": "Aún no has bloqueado a ningún usuario.", "empty_column.blocks": "Aún no has bloqueado a ningún usuario.",
"empty_column.bookmarked_statuses": "Aún no tienes ninguna publicación guardada como marcador. Cuando guardes una, se mostrará aquí.", "empty_column.bookmarked_statuses": "Aún no tienes ninguna publicación guardada como marcador. Cuando guardes una, se mostrará aquí.",
"empty_column.collections.featured_in": "Aún no te han añadido a ninguna colección.", "empty_column.collections.featured_in": "Aún no te han añadido a ninguna colección.",
"empty_column.collections.featured_in_undiscoverable": "Para que la gente pueda añadirte a colecciones, debes permitir ser destacado en algoritmos de descubrimiento desde <link>Preferencias > Privacidad y alcance</link>",
"empty_column.community": "La cronología local está vacía. ¡Escribe algo públicamente para ponerla en marcha!", "empty_column.community": "La cronología local está vacía. ¡Escribe algo públicamente para ponerla en marcha!",
"empty_column.direct": "Aún no tienes ninguna mención privada. Cuando envíes o recibas una, aparecerá aquí.", "empty_column.direct": "Aún no tienes ninguna mención privada. Cuando envíes o recibas una, aparecerá aquí.",
"empty_column.disabled_feed": "Esta cronología fue desactivada por los administradores de tu servidor.", "empty_column.disabled_feed": "Esta cronología fue desactivada por los administradores de tu servidor.",

View File

@ -394,7 +394,7 @@
"collections.detail.loading": "Cargando colección…", "collections.detail.loading": "Cargando colección…",
"collections.detail.revoke_inclusion": "Sácame de aquí", "collections.detail.revoke_inclusion": "Sácame de aquí",
"collections.detail.sensitive_content": "Contenido sensible", "collections.detail.sensitive_content": "Contenido sensible",
"collections.detail.sensitive_note": "Esta colección contiene cuentas y contenido que puede ser sensible para algunos usuarios.", "collections.detail.sensitive_note": "La descripción y cuentas pueden no ser adecuadas para todas las personas.",
"collections.detail.share": "Compartir esta colección", "collections.detail.share": "Compartir esta colección",
"collections.detail.you_are_in_this_collection": "Apareces en esta colección", "collections.detail.you_are_in_this_collection": "Apareces en esta colección",
"collections.edit_details": "Editar detalles", "collections.edit_details": "Editar detalles",
@ -425,6 +425,11 @@
"collections.search_accounts_max_reached": "Has añadido el número máximo de cuentas", "collections.search_accounts_max_reached": "Has añadido el número máximo de cuentas",
"collections.sensitive": "Sensible", "collections.sensitive": "Sensible",
"collections.share_short": "Compartir", "collections.share_short": "Compartir",
"collections.sort_alphabetical": "Alfabético",
"collections.sort_by": "Orden:",
"collections.sort_date_added": "Añadido a fecha",
"collections.sort_last_active": "Última actividad",
"collections.sort_most_followers": "Más seguidores",
"collections.suggestions.can_not_add": "No puede ser añadida", "collections.suggestions.can_not_add": "No puede ser añadida",
"collections.suggestions.can_not_add_desc": "Estas cuentas pueden haber optado por no ser descubiertas, o podrían estar en un servidor que no soporta colecciones.", "collections.suggestions.can_not_add_desc": "Estas cuentas pueden haber optado por no ser descubiertas, o podrían estar en un servidor que no soporta colecciones.",
"collections.suggestions.must_follow": "Primero tienes que seguirla", "collections.suggestions.must_follow": "Primero tienes que seguirla",
@ -636,6 +641,7 @@
"empty_column.blocks": "Aún no has bloqueado a ningún usuario.", "empty_column.blocks": "Aún no has bloqueado a ningún usuario.",
"empty_column.bookmarked_statuses": "Aún no tienes ninguna publicación guardada como marcador. Cuando guardes una, se mostrará aquí.", "empty_column.bookmarked_statuses": "Aún no tienes ninguna publicación guardada como marcador. Cuando guardes una, se mostrará aquí.",
"empty_column.collections.featured_in": "Aún no te han añadido a ninguna colección.", "empty_column.collections.featured_in": "Aún no te han añadido a ninguna colección.",
"empty_column.collections.featured_in_undiscoverable": "Para que la gente pueda añadirte a colecciones, debes permitir ser destacado en algoritmos de descubrimiento desde <link>Preferencias > Privacidad y alcance</link>",
"empty_column.community": "La línea de tiempo local está vacía. ¡Escribe algo para empezar la fiesta!", "empty_column.community": "La línea de tiempo local está vacía. ¡Escribe algo para empezar la fiesta!",
"empty_column.direct": "Aún no tienes menciones privadas. Cuando envíes o recibas una, aparecerán aquí.", "empty_column.direct": "Aún no tienes menciones privadas. Cuando envíes o recibas una, aparecerán aquí.",
"empty_column.disabled_feed": "Esta cronología ha sido desactivada por los administradores del servidor.", "empty_column.disabled_feed": "Esta cronología ha sido desactivada por los administradores del servidor.",

View File

@ -394,7 +394,7 @@
"collections.detail.loading": "Kogumiku laadimine…", "collections.detail.loading": "Kogumiku laadimine…",
"collections.detail.revoke_inclusion": "Eemalda mind", "collections.detail.revoke_inclusion": "Eemalda mind",
"collections.detail.sensitive_content": "Tundlik sisu", "collections.detail.sensitive_content": "Tundlik sisu",
"collections.detail.sensitive_note": "Selles kogumikus on kontosid ja sisu, mis võib mõne inimese jaoks olla tundlik.", "collections.detail.sensitive_note": "Kirjeldus ja kontod ei pruugi kõigi vaatajate jaoks sobivad olla.",
"collections.detail.share": "Jaga seda kogumikku", "collections.detail.share": "Jaga seda kogumikku",
"collections.detail.you_are_in_this_collection": "Sa oled selles kogumikus esile tõstetud", "collections.detail.you_are_in_this_collection": "Sa oled selles kogumikus esile tõstetud",
"collections.edit_details": "Muuda üksikasju", "collections.edit_details": "Muuda üksikasju",
@ -425,6 +425,11 @@
"collections.search_accounts_max_reached": "Oled lisanud maksimumarv kontosid", "collections.search_accounts_max_reached": "Oled lisanud maksimumarv kontosid",
"collections.sensitive": "Tundlik", "collections.sensitive": "Tundlik",
"collections.share_short": "Jaga", "collections.share_short": "Jaga",
"collections.sort_alphabetical": "Tähestikuline",
"collections.sort_by": "Sortimine:",
"collections.sort_date_added": "Lisamisaeg",
"collections.sort_last_active": "Viimati aktiivne",
"collections.sort_most_followers": "Enim jälgijaid",
"collections.suggestions.can_not_add": "Ei saa lisada", "collections.suggestions.can_not_add": "Ei saa lisada",
"collections.suggestions.can_not_add_desc": "Need kontod võivad olla loobunud avalikustamisest või asuvad serveris, mis ei toeta kogumikke.", "collections.suggestions.can_not_add_desc": "Need kontod võivad olla loobunud avalikustamisest või asuvad serveris, mis ei toeta kogumikke.",
"collections.suggestions.must_follow": "Kõigepealt peab jälgima", "collections.suggestions.must_follow": "Kõigepealt peab jälgima",

View File

@ -394,7 +394,6 @@
"collections.detail.loading": "بار کردن مجموعه…", "collections.detail.loading": "بار کردن مجموعه…",
"collections.detail.revoke_inclusion": "حذفم کن", "collections.detail.revoke_inclusion": "حذفم کن",
"collections.detail.sensitive_content": "محتوای حسّاس", "collections.detail.sensitive_content": "محتوای حسّاس",
"collections.detail.sensitive_note": "این مجموعه شامل حساب‌ها و محتواییست که ممکن است برای برخی کاربران حسّاس باشند.",
"collections.detail.share": "هم‌رسانی این مجموعه", "collections.detail.share": "هم‌رسانی این مجموعه",
"collections.detail.you_are_in_this_collection": "در این مجموعه معرّفی شده‌اید", "collections.detail.you_are_in_this_collection": "در این مجموعه معرّفی شده‌اید",
"collections.edit_details": "ویرایش جزییات", "collections.edit_details": "ویرایش جزییات",

View File

@ -394,7 +394,7 @@
"collections.detail.loading": "Ladataan kokoelmaa…", "collections.detail.loading": "Ladataan kokoelmaa…",
"collections.detail.revoke_inclusion": "Poista minut", "collections.detail.revoke_inclusion": "Poista minut",
"collections.detail.sensitive_content": "Arkaluonteista sisältöä", "collections.detail.sensitive_content": "Arkaluonteista sisältöä",
"collections.detail.sensitive_note": "Tämä kokoelma sisältää tilejä ja sisältöä, jotka saattavat olla arkaluonteisia joillekin käyttäjille.", "collections.detail.sensitive_note": "Kuvaus ja tilit eivät välttämättä sovellu kaikille.",
"collections.detail.share": "Jaa tämä kokoelma", "collections.detail.share": "Jaa tämä kokoelma",
"collections.detail.you_are_in_this_collection": "Esiinnyt tässä kokoelmassa", "collections.detail.you_are_in_this_collection": "Esiinnyt tässä kokoelmassa",
"collections.edit_details": "Muokkaa tietoja", "collections.edit_details": "Muokkaa tietoja",
@ -425,6 +425,11 @@
"collections.search_accounts_max_reached": "Olet lisännyt enimmäismäärän tilejä", "collections.search_accounts_max_reached": "Olet lisännyt enimmäismäärän tilejä",
"collections.sensitive": "Arkaluonteinen", "collections.sensitive": "Arkaluonteinen",
"collections.share_short": "Jaa", "collections.share_short": "Jaa",
"collections.sort_alphabetical": "Aakkosjärjestys",
"collections.sort_by": "Järjestys:",
"collections.sort_date_added": "Lisäyspäivämäärä",
"collections.sort_last_active": "Viimeksi aktiivisena",
"collections.sort_most_followers": "Eniten seuraajia",
"collections.suggestions.can_not_add": "Ei voi lisätä", "collections.suggestions.can_not_add": "Ei voi lisätä",
"collections.suggestions.can_not_add_desc": "Nämä tilit ovat ehkä jättäytyneet löydettävyyden ulkopuolelle, tai ne saattavat olla palvelimella, joka ei tue kokoelmia.", "collections.suggestions.can_not_add_desc": "Nämä tilit ovat ehkä jättäytyneet löydettävyyden ulkopuolelle, tai ne saattavat olla palvelimella, joka ei tue kokoelmia.",
"collections.suggestions.must_follow": "Täytyy ensin seurata", "collections.suggestions.must_follow": "Täytyy ensin seurata",
@ -636,6 +641,7 @@
"empty_column.blocks": "Et ole vielä estänyt käyttäjiä.", "empty_column.blocks": "Et ole vielä estänyt käyttäjiä.",
"empty_column.bookmarked_statuses": "Et ole vielä lisännyt julkaisuja kirjanmerkkeihisi. Kun lisäät yhden, se näkyy tässä.", "empty_column.bookmarked_statuses": "Et ole vielä lisännyt julkaisuja kirjanmerkkeihisi. Kun lisäät yhden, se näkyy tässä.",
"empty_column.collections.featured_in": "Sinua ei ole vielä lisätty mihinkään kokoelmaan.", "empty_column.collections.featured_in": "Sinua ei ole vielä lisätty mihinkään kokoelmaan.",
"empty_column.collections.featured_in_undiscoverable": "Jotta sinut voi lisätä kokoelmiin, esittely löydettävyyskokemuksissa on sallittava kohdassa <link>Asetukset > Yksityisyys ja tavoittavuus</link>",
"empty_column.community": "Paikallinen aikajana on tyhjä. Kirjoita jotain julkista, niin homma lähtee käyntiin!", "empty_column.community": "Paikallinen aikajana on tyhjä. Kirjoita jotain julkista, niin homma lähtee käyntiin!",
"empty_column.direct": "Yksityismainintoja ei vielä ole. Jos lähetät tai sinulle lähetetään sellaisia, näet ne täällä.", "empty_column.direct": "Yksityismainintoja ei vielä ole. Jos lähetät tai sinulle lähetetään sellaisia, näet ne täällä.",
"empty_column.disabled_feed": "Palvelimen ylläpito on poistanut käytöstä tämän syötteen.", "empty_column.disabled_feed": "Palvelimen ylläpito on poistanut käytöstä tämän syötteen.",

View File

@ -394,7 +394,6 @@
"collections.detail.loading": "Chargement de la collection…", "collections.detail.loading": "Chargement de la collection…",
"collections.detail.revoke_inclusion": "Me retirer", "collections.detail.revoke_inclusion": "Me retirer",
"collections.detail.sensitive_content": "Contenu sensible", "collections.detail.sensitive_content": "Contenu sensible",
"collections.detail.sensitive_note": "Cette collection contient des comptes et du contenu qui peut être sensibles.",
"collections.detail.share": "Partager la collection", "collections.detail.share": "Partager la collection",
"collections.detail.you_are_in_this_collection": "Vous faites partie de cette collection", "collections.detail.you_are_in_this_collection": "Vous faites partie de cette collection",
"collections.edit_details": "Modifier les détails", "collections.edit_details": "Modifier les détails",
@ -636,6 +635,7 @@
"empty_column.blocks": "Vous navez bloqué aucun compte pour le moment.", "empty_column.blocks": "Vous navez bloqué aucun compte pour le moment.",
"empty_column.bookmarked_statuses": "Vous n'avez pas de publications parmi vos signets. Lorsque vous en ajouterez une, elle apparaîtra ici.", "empty_column.bookmarked_statuses": "Vous n'avez pas de publications parmi vos signets. Lorsque vous en ajouterez une, elle apparaîtra ici.",
"empty_column.collections.featured_in": "Vous n'avez pas encore été ajouté·e à une collection.", "empty_column.collections.featured_in": "Vous n'avez pas encore été ajouté·e à une collection.",
"empty_column.collections.featured_in_undiscoverable": "Afin que l'on puisse vous ajouter à des collections, vous devez autoriser d'apparaître dans les expériences de découverte depuis <link>Vie privée et visibilité</link>",
"empty_column.community": "Le fil local est vide. Écrivez donc quelque chose pour le remplir!", "empty_column.community": "Le fil local est vide. Écrivez donc quelque chose pour le remplir!",
"empty_column.direct": "Vous n'avez pas encore de mentions privées. Quand vous en envoyez ou en recevez, elles apparaîtront ici.", "empty_column.direct": "Vous n'avez pas encore de mentions privées. Quand vous en envoyez ou en recevez, elles apparaîtront ici.",
"empty_column.disabled_feed": "Ce flux a été désactivé par les administrateur·rice·s de votre serveur.", "empty_column.disabled_feed": "Ce flux a été désactivé par les administrateur·rice·s de votre serveur.",

View File

@ -394,7 +394,6 @@
"collections.detail.loading": "Chargement de la collection…", "collections.detail.loading": "Chargement de la collection…",
"collections.detail.revoke_inclusion": "Me retirer", "collections.detail.revoke_inclusion": "Me retirer",
"collections.detail.sensitive_content": "Contenu sensible", "collections.detail.sensitive_content": "Contenu sensible",
"collections.detail.sensitive_note": "Cette collection contient des comptes et du contenu qui peut être sensibles.",
"collections.detail.share": "Partager la collection", "collections.detail.share": "Partager la collection",
"collections.detail.you_are_in_this_collection": "Vous faites partie de cette collection", "collections.detail.you_are_in_this_collection": "Vous faites partie de cette collection",
"collections.edit_details": "Modifier les détails", "collections.edit_details": "Modifier les détails",
@ -636,6 +635,7 @@
"empty_column.blocks": "Vous navez bloqué aucun compte pour le moment.", "empty_column.blocks": "Vous navez bloqué aucun compte pour le moment.",
"empty_column.bookmarked_statuses": "Vous n'avez pas de message en marque-page. Lorsque vous en ajouterez un, il apparaîtra ici.", "empty_column.bookmarked_statuses": "Vous n'avez pas de message en marque-page. Lorsque vous en ajouterez un, il apparaîtra ici.",
"empty_column.collections.featured_in": "Vous n'avez pas encore été ajouté·e à une collection.", "empty_column.collections.featured_in": "Vous n'avez pas encore été ajouté·e à une collection.",
"empty_column.collections.featured_in_undiscoverable": "Afin que l'on puisse vous ajouter à des collections, vous devez autoriser d'apparaître dans les expériences de découverte depuis <link>Vie privée et visibilité</link>",
"empty_column.community": "Le fil public local est vide. Écrivez donc quelque chose pour le remplir!", "empty_column.community": "Le fil public local est vide. Écrivez donc quelque chose pour le remplir!",
"empty_column.direct": "Vous n'avez pas encore de mentions privées. Quand vous en enverrez ou recevrez, elles apparaîtront ici.", "empty_column.direct": "Vous n'avez pas encore de mentions privées. Quand vous en enverrez ou recevrez, elles apparaîtront ici.",
"empty_column.disabled_feed": "Ce flux a été désactivé par les administrateur·rice·s de votre serveur.", "empty_column.disabled_feed": "Ce flux a été désactivé par les administrateur·rice·s de votre serveur.",

View File

@ -394,7 +394,6 @@
"collections.detail.loading": "Ag lódáil an bhailiúcháin…", "collections.detail.loading": "Ag lódáil an bhailiúcháin…",
"collections.detail.revoke_inclusion": "Bain mé", "collections.detail.revoke_inclusion": "Bain mé",
"collections.detail.sensitive_content": "Ábhar íogair", "collections.detail.sensitive_content": "Ábhar íogair",
"collections.detail.sensitive_note": "Tá cuntais agus ábhar sa bhailiúchán seo a d'fhéadfadh a bheith íogair do roinnt úsáideoirí.",
"collections.detail.share": "Comhroinn an bailiúchán seo", "collections.detail.share": "Comhroinn an bailiúchán seo",
"collections.detail.you_are_in_this_collection": "Tá tú le feiceáil sa bhailiúchán seo", "collections.detail.you_are_in_this_collection": "Tá tú le feiceáil sa bhailiúchán seo",
"collections.edit_details": "Cuir sonraí in eagar", "collections.edit_details": "Cuir sonraí in eagar",

View File

@ -388,7 +388,6 @@
"collections.detail.loading": "A luchdadh a chruinneachaidh…", "collections.detail.loading": "A luchdadh a chruinneachaidh…",
"collections.detail.revoke_inclusion": "Thoir air falbh mi", "collections.detail.revoke_inclusion": "Thoir air falbh mi",
"collections.detail.sensitive_content": "Susbaint fhrionasach", "collections.detail.sensitive_content": "Susbaint fhrionasach",
"collections.detail.sensitive_note": "Tha cunntasan is susbaint sa chruinneachadh seo a dhfhaodadh a bhith frionasach do chuid.",
"collections.detail.share": "Co-roinn an cruinneachadh seo", "collections.detail.share": "Co-roinn an cruinneachadh seo",
"collections.detail.you_are_in_this_collection": "Thathar do bhrosnachadh sa chruinneachadh seo", "collections.detail.you_are_in_this_collection": "Thathar do bhrosnachadh sa chruinneachadh seo",
"collections.edit_details": "Deasaich am fiosrachadh", "collections.edit_details": "Deasaich am fiosrachadh",

View File

@ -394,7 +394,7 @@
"collections.detail.loading": "Cargando colección…", "collections.detail.loading": "Cargando colección…",
"collections.detail.revoke_inclusion": "Quítame de aí", "collections.detail.revoke_inclusion": "Quítame de aí",
"collections.detail.sensitive_content": "Contido sensible", "collections.detail.sensitive_content": "Contido sensible",
"collections.detail.sensitive_note": "Esta colección presenta contas e contido que poderían ser sensibles para algunhas persoas.", "collections.detail.sensitive_note": "A descrición e contas poderían non ser axeitadas para todas as persoas.",
"collections.detail.share": "Compartir esta colección", "collections.detail.share": "Compartir esta colección",
"collections.detail.you_are_in_this_collection": "Engadíronte a esta colección", "collections.detail.you_are_in_this_collection": "Engadíronte a esta colección",
"collections.edit_details": "Editar detalles", "collections.edit_details": "Editar detalles",
@ -636,6 +636,7 @@
"empty_column.blocks": "Aínda non bloqueaches a ningún usuaria.", "empty_column.blocks": "Aínda non bloqueaches a ningún usuaria.",
"empty_column.bookmarked_statuses": "Aínda non marcaches ningunha publicación. Cando o fagas, aparecerán aquí.", "empty_column.bookmarked_statuses": "Aínda non marcaches ningunha publicación. Cando o fagas, aparecerán aquí.",
"empty_column.collections.featured_in": "Non te engadiron a ningunha colección.", "empty_column.collections.featured_in": "Non te engadiron a ningunha colección.",
"empty_column.collections.featured_in_undiscoverable": "Para que outras persoas poidan engadirte ás súas coleccións ter que conceder permiso para descubrimento da conta en <link>Preferencias > Privacidade e alcance</link>",
"empty_column.community": "A cronoloxía local está baleira. Escribe algo de xeito público para espallalo!", "empty_column.community": "A cronoloxía local está baleira. Escribe algo de xeito público para espallalo!",
"empty_column.direct": "Aínda non tes mencións privadas. Cando envíes ou recibas unha, aparecerá aquí.", "empty_column.direct": "Aínda non tes mencións privadas. Cando envíes ou recibas unha, aparecerá aquí.",
"empty_column.disabled_feed": "A administración do teu servidor desactivou esta canle.", "empty_column.disabled_feed": "A administración do teu servidor desactivou esta canle.",

View File

@ -394,7 +394,6 @@
"collections.detail.loading": "טוען אוסף…", "collections.detail.loading": "טוען אוסף…",
"collections.detail.revoke_inclusion": "הסירוני", "collections.detail.revoke_inclusion": "הסירוני",
"collections.detail.sensitive_content": "תוכן רגיש", "collections.detail.sensitive_content": "תוכן רגיש",
"collections.detail.sensitive_note": "האוסף מכיל חשבונות ותכנים שאולי יחשבו רגישים לחלק מהמשתמשים.",
"collections.detail.share": "שיתוף אוסף", "collections.detail.share": "שיתוף אוסף",
"collections.detail.you_are_in_this_collection": "אתם מופיעים באוסף זה", "collections.detail.you_are_in_this_collection": "אתם מופיעים באוסף זה",
"collections.edit_details": "עריכת פרטים", "collections.edit_details": "עריכת פרטים",

View File

@ -394,7 +394,6 @@
"collections.detail.loading": "Gyűjtemény betöltése…", "collections.detail.loading": "Gyűjtemény betöltése…",
"collections.detail.revoke_inclusion": "Saját magam eltávolítása", "collections.detail.revoke_inclusion": "Saját magam eltávolítása",
"collections.detail.sensitive_content": "Kényes tartalom", "collections.detail.sensitive_content": "Kényes tartalom",
"collections.detail.sensitive_note": "Ebben a gyűjteményben egyesek számára érzékeny fiókok és tartalmak vannak.",
"collections.detail.share": "Gyűjtemény megosztása", "collections.detail.share": "Gyűjtemény megosztása",
"collections.detail.you_are_in_this_collection": "Kiemeltek téged ebben a gyűjteményhez", "collections.detail.you_are_in_this_collection": "Kiemeltek téged ebben a gyűjteményhez",
"collections.edit_details": "Részletek szerkesztése", "collections.edit_details": "Részletek szerkesztése",
@ -636,6 +635,7 @@
"empty_column.blocks": "Még senkit sem tiltottál le.", "empty_column.blocks": "Még senkit sem tiltottál le.",
"empty_column.bookmarked_statuses": "Még nincs egyetlen könyvjelzőzött bejegyzésed sem. Ha könyvjelzőzöl egyet, itt fog megjelenni.", "empty_column.bookmarked_statuses": "Még nincs egyetlen könyvjelzőzött bejegyzésed sem. Ha könyvjelzőzöl egyet, itt fog megjelenni.",
"empty_column.collections.featured_in": "Még nem adtak hozzá egyetlen gyűjteményhez sem.", "empty_column.collections.featured_in": "Még nem adtak hozzá egyetlen gyűjteményhez sem.",
"empty_column.collections.featured_in_undiscoverable": "Hogy mások hozzáadhassanak gyűjteményekhez, engedélyezned kell a kiemelést a felfedezési élményekben a <link>Beállítások > Adatvédelem és elérés</link> alatt",
"empty_column.community": "A helyi idővonal üres. Tégy közzé valamit nyilvánosan, hogy elindítsd az eseményeket!", "empty_column.community": "A helyi idővonal üres. Tégy közzé valamit nyilvánosan, hogy elindítsd az eseményeket!",
"empty_column.direct": "Még nincs egy személyes említésed sem. Küldéskor vagy fogadáskor itt fognak megjelenni.", "empty_column.direct": "Még nincs egy személyes említésed sem. Küldéskor vagy fogadáskor itt fognak megjelenni.",
"empty_column.disabled_feed": "A kiszolgálód rendszergazdái letiltották ezt a hírfolyamot.", "empty_column.disabled_feed": "A kiszolgálód rendszergazdái letiltották ezt a hírfolyamot.",

View File

@ -394,7 +394,6 @@
"collections.detail.loading": "Hleð inn safni…", "collections.detail.loading": "Hleð inn safni…",
"collections.detail.revoke_inclusion": "Fjarlægja mig", "collections.detail.revoke_inclusion": "Fjarlægja mig",
"collections.detail.sensitive_content": "Viðkvæmt efni", "collections.detail.sensitive_content": "Viðkvæmt efni",
"collections.detail.sensitive_note": "Þetta safn inniheldur aðganga og efni sem sumir notendur gætu verið viðkvæmir fyrir.",
"collections.detail.share": "Deila þessu safni", "collections.detail.share": "Deila þessu safni",
"collections.detail.you_are_in_this_collection": "Þú kemur fyrir í þessu safni", "collections.detail.you_are_in_this_collection": "Þú kemur fyrir í þessu safni",
"collections.edit_details": "Breyta ítarupplýsingum", "collections.edit_details": "Breyta ítarupplýsingum",

View File

@ -394,7 +394,7 @@
"collections.detail.loading": "Caricamento della collezione…", "collections.detail.loading": "Caricamento della collezione…",
"collections.detail.revoke_inclusion": "Rimuovimi", "collections.detail.revoke_inclusion": "Rimuovimi",
"collections.detail.sensitive_content": "Contenuto sensibile", "collections.detail.sensitive_content": "Contenuto sensibile",
"collections.detail.sensitive_note": "Questa collezione contiene account e contenuto che potrebbero essere sensibili ad alcuni utenti.", "collections.detail.sensitive_note": "La descrizione e gli account potrebbero non essere adatti a tutti i tipi di pubblico.",
"collections.detail.share": "Condividi questa collezione", "collections.detail.share": "Condividi questa collezione",
"collections.detail.you_are_in_this_collection": "Sei presente in questa collezione", "collections.detail.you_are_in_this_collection": "Sei presente in questa collezione",
"collections.edit_details": "Modifica i dettagli", "collections.edit_details": "Modifica i dettagli",
@ -636,6 +636,7 @@
"empty_column.blocks": "Non hai ancora bloccato alcun utente.", "empty_column.blocks": "Non hai ancora bloccato alcun utente.",
"empty_column.bookmarked_statuses": "Non hai ancora salvato nei segnalibri alcun post. Quando lo farai, apparirà qui.", "empty_column.bookmarked_statuses": "Non hai ancora salvato nei segnalibri alcun post. Quando lo farai, apparirà qui.",
"empty_column.collections.featured_in": "Non sei ancora stato/a aggiunto/a ad alcuna collezione.", "empty_column.collections.featured_in": "Non sei ancora stato/a aggiunto/a ad alcuna collezione.",
"empty_column.collections.featured_in_undiscoverable": "Affinché le persone possano aggiungerti alle collezioni, è necessario consentire che il profilo sia visibile nelle esperienze di scoperta tramite <link>Preferenze > Privacy e visibilità</link>",
"empty_column.community": "La cronologia locale è vuota. Scrivi qualcosa pubblicamente per dare inizio alla festa!", "empty_column.community": "La cronologia locale è vuota. Scrivi qualcosa pubblicamente per dare inizio alla festa!",
"empty_column.direct": "Non hai ancora alcuna menzione privata. Quando ne invierai o riceverai una, apparirà qui.", "empty_column.direct": "Non hai ancora alcuna menzione privata. Quando ne invierai o riceverai una, apparirà qui.",
"empty_column.disabled_feed": "Questo feed è stato disabilitato dagli amministratori del tuo server.", "empty_column.disabled_feed": "Questo feed è stato disabilitato dagli amministratori del tuo server.",
@ -905,7 +906,7 @@
"navigation_bar.mutes": "Utenti silenziati", "navigation_bar.mutes": "Utenti silenziati",
"navigation_bar.opened_in_classic_interface": "Post, account e altre pagine specifiche sono aperti per impostazione predefinita nella classica interfaccia web.", "navigation_bar.opened_in_classic_interface": "Post, account e altre pagine specifiche sono aperti per impostazione predefinita nella classica interfaccia web.",
"navigation_bar.preferences": "Preferenze", "navigation_bar.preferences": "Preferenze",
"navigation_bar.privacy_and_reach": "Privacy e copertura", "navigation_bar.privacy_and_reach": "Privacy e visibilità",
"navigation_bar.search": "Cerca", "navigation_bar.search": "Cerca",
"navigation_bar.search_trends": "Cerca / In tendenza", "navigation_bar.search_trends": "Cerca / In tendenza",
"navigation_panel.collapse_followed_tags": "Comprimi il menù degli hashtag seguiti", "navigation_panel.collapse_followed_tags": "Comprimi il menù degli hashtag seguiti",

View File

@ -394,7 +394,6 @@
"collections.detail.loading": "載入收藏……", "collections.detail.loading": "載入收藏……",
"collections.detail.revoke_inclusion": "Kā我suá掉", "collections.detail.revoke_inclusion": "Kā我suá掉",
"collections.detail.sensitive_content": "敏感ê內容", "collections.detail.sensitive_content": "敏感ê內容",
"collections.detail.sensitive_note": "Tsit ê收藏包含對一寡用者敏感ê口座kap內容。",
"collections.detail.share": "分享tsit ê收藏", "collections.detail.share": "分享tsit ê收藏",
"collections.detail.you_are_in_this_collection": "Lí已經hőng加kàu tsit ê收藏", "collections.detail.you_are_in_this_collection": "Lí已經hőng加kàu tsit ê收藏",
"collections.edit_details": "編輯詳細", "collections.edit_details": "編輯詳細",

View File

@ -394,7 +394,7 @@
"collections.detail.loading": "Verzameling laden…", "collections.detail.loading": "Verzameling laden…",
"collections.detail.revoke_inclusion": "Verwijder mij", "collections.detail.revoke_inclusion": "Verwijder mij",
"collections.detail.sensitive_content": "Gevoelige inhoud", "collections.detail.sensitive_content": "Gevoelige inhoud",
"collections.detail.sensitive_note": "Deze verzameling bevat accounts en inhoud die mogelijk gevoelig zijn voor sommige gebruikers.", "collections.detail.sensitive_note": "De omschrijving en accounts zijn mogelijk niet voor iedereen geschikt.",
"collections.detail.share": "Deze verzameling delen", "collections.detail.share": "Deze verzameling delen",
"collections.detail.you_are_in_this_collection": "Je wordt in deze verzameling uitgelicht", "collections.detail.you_are_in_this_collection": "Je wordt in deze verzameling uitgelicht",
"collections.edit_details": "Gegevens bewerken", "collections.edit_details": "Gegevens bewerken",
@ -636,6 +636,7 @@
"empty_column.blocks": "Je hebt nog geen gebruikers geblokkeerd.", "empty_column.blocks": "Je hebt nog geen gebruikers geblokkeerd.",
"empty_column.bookmarked_statuses": "Jij hebt nog geen berichten aan je bladwijzers toegevoegd. Wanneer je er een aan jouw bladwijzers toevoegt, valt deze hier te zien.", "empty_column.bookmarked_statuses": "Jij hebt nog geen berichten aan je bladwijzers toegevoegd. Wanneer je er een aan jouw bladwijzers toevoegt, valt deze hier te zien.",
"empty_column.collections.featured_in": "Je bent aan nog geen enkele verzameling toegevoegd.", "empty_column.collections.featured_in": "Je bent aan nog geen enkele verzameling toegevoegd.",
"empty_column.collections.featured_in_undiscoverable": "Om ervoor te zorgen dat mensen je aan verzamelingen kunnen toevoegen, moet je jouw account en berichten laten uitlichten door Mastodon onder <link>Instellingen > Privacy en bereik</link>",
"empty_column.community": "De lokale tijdlijn is nog leeg. Plaats een openbaar bericht om de spits af te bijten!", "empty_column.community": "De lokale tijdlijn is nog leeg. Plaats een openbaar bericht om de spits af te bijten!",
"empty_column.direct": "Je hebt nog geen privéberichten. Wanneer je er een verstuurt of ontvangt, komen deze hier te staan.", "empty_column.direct": "Je hebt nog geen privéberichten. Wanneer je er een verstuurt of ontvangt, komen deze hier te staan.",
"empty_column.disabled_feed": "Deze tijdlijn is uitgeschakeld door je serverbeheerders.", "empty_column.disabled_feed": "Deze tijdlijn is uitgeschakeld door je serverbeheerders.",

View File

@ -384,7 +384,6 @@
"collections.detail.loading": "Lastar inn samling…", "collections.detail.loading": "Lastar inn samling…",
"collections.detail.revoke_inclusion": "Fjern meg", "collections.detail.revoke_inclusion": "Fjern meg",
"collections.detail.sensitive_content": "Ømtolig innhald", "collections.detail.sensitive_content": "Ømtolig innhald",
"collections.detail.sensitive_note": "Denne samlinga inneheld kontoar og innhald som kan vera ømtolige for nokre menneske.",
"collections.detail.share": "Del denne samlinga", "collections.detail.share": "Del denne samlinga",
"collections.detail.you_are_in_this_collection": "Du er framheva i denne samlinga", "collections.detail.you_are_in_this_collection": "Du er framheva i denne samlinga",
"collections.edit_details": "Rediger detaljar", "collections.edit_details": "Rediger detaljar",

View File

@ -17,7 +17,7 @@
"account.activity": "Atividade", "account.activity": "Atividade",
"account.add_note": "Adicionar nota pessoal", "account.add_note": "Adicionar nota pessoal",
"account.add_or_remove_from_list": "Adicionar ou remover de listas", "account.add_or_remove_from_list": "Adicionar ou remover de listas",
"account.badges.admin": "Administrador", "account.badges.admin": "Admin",
"account.badges.blocked": "Bloqueado", "account.badges.blocked": "Bloqueado",
"account.badges.bot": "Robô", "account.badges.bot": "Robô",
"account.badges.domain_blocked": "Domínio bloqueado", "account.badges.domain_blocked": "Domínio bloqueado",
@ -32,7 +32,7 @@
"account.copy": "Copiar link do perfil", "account.copy": "Copiar link do perfil",
"account.direct": "Mencione em privado @{name}", "account.direct": "Mencione em privado @{name}",
"account.disable_notifications": "Cancelar notificações de @{name}", "account.disable_notifications": "Cancelar notificações de @{name}",
"account.edit_note": "Editar a nota pessoal", "account.edit_note": "Editar nota pessoal",
"account.edit_profile": "Editar perfil", "account.edit_profile": "Editar perfil",
"account.edit_profile_short": "Editar", "account.edit_profile_short": "Editar",
"account.enable_notifications": "Notificar quando @{name} publicar", "account.enable_notifications": "Notificar quando @{name} publicar",
@ -44,13 +44,13 @@
"account.featured.accounts": "Perfis", "account.featured.accounts": "Perfis",
"account.featured.collections": "Coleções", "account.featured.collections": "Coleções",
"account.featured.new_collection": "Nova coleção", "account.featured.new_collection": "Nova coleção",
"account.field_overflow": "Mostrar todo conteúdo", "account.field_overflow": "Exibir conteúdo inteiro",
"account.filters.all": "Todas atividades", "account.filters.all": "Toda atividade",
"account.filters.boosts_toggle": "Mostrar impulsos", "account.filters.boosts_toggle": "Exibir impulsos",
"account.filters.posts_boosts": "Publicações e impulsos", "account.filters.posts_boosts": "Publicações e impulsos",
"account.filters.posts_only": "Publicações", "account.filters.posts_only": "Publicações",
"account.filters.posts_replies": "Publicações e respostas", "account.filters.posts_replies": "Publicações e respostas",
"account.filters.replies_toggle": "Mostrar respostas", "account.filters.replies_toggle": "Exibir respostas",
"account.follow": "Seguir", "account.follow": "Seguir",
"account.follow_back": "Seguir de volta", "account.follow_back": "Seguir de volta",
"account.follow_back_short": "Seguir de volta", "account.follow_back_short": "Seguir de volta",
@ -70,17 +70,17 @@
"account.hide_reblogs": "Ocultar impulsos de @{name}", "account.hide_reblogs": "Ocultar impulsos de @{name}",
"account.in_memoriam": "In Memoriam.", "account.in_memoriam": "In Memoriam.",
"account.join_modal.day": "Dia", "account.join_modal.day": "Dia",
"account.join_modal.me": "Você uniu-se a {server} em", "account.join_modal.me": "Você juntou-se à {server} em",
"account.join_modal.me_anniversary": "Feliz Fediversário! Você uniu-se a {server} em", "account.join_modal.me_anniversary": "Feliz Fediversário! Você juntou-se à {server} em",
"account.join_modal.me_today": o seu primeiro dia em {server}!", "account.join_modal.me_today": seu primeiro dia em {server}!",
"account.join_modal.other": "{name} uniu-se a {server} em", "account.join_modal.other": "{name} juntou-se à {server} em",
"account.join_modal.other_today": "Este é o primeiro dia de {name} em {server}!", "account.join_modal.other_today": "Este é o primeiro dia de {name} em {server}!",
"account.join_modal.share.celebrate": "Compartilhe uma postagem comemorativa", "account.join_modal.share.celebrate": "Compartilhar publicação comemorativa",
"account.join_modal.share.intro": "Compartilhe uma postagem de introdução", "account.join_modal.share.intro": "Compartilhar publicação de introdução",
"account.join_modal.share.welcome": "Compartilhe uma postagem de boas-vindas", "account.join_modal.share.welcome": "Compartilhar publicação de boas-vindas",
"account.join_modal.years": "{number, plural, one {ano} other {anos}}", "account.join_modal.years": "{number, plural, one {ano} other {anos}}",
"account.joined_short": "Entrou", "account.joined_short": "Entrou",
"account.languages": "Mudar idiomas inscritos", "account.languages": "Alterar idiomas inscritos",
"account.last_active": "Última atividade", "account.last_active": "Última atividade",
"account.link_verified_on": "A propriedade deste link foi verificada em {date}", "account.link_verified_on": "A propriedade deste link foi verificada em {date}",
"account.locked_info": "Trancado. Seguir requer aprovação manual do perfil.", "account.locked_info": "Trancado. Seguir requer aprovação manual do perfil.",
@ -91,16 +91,16 @@
"account.menu.block_domain": "Bloquear {domain}", "account.menu.block_domain": "Bloquear {domain}",
"account.menu.copied": "Link da conta copiado para área de transferência", "account.menu.copied": "Link da conta copiado para área de transferência",
"account.menu.copy": "Copiar link", "account.menu.copy": "Copiar link",
"account.menu.direct": "Mencionar em privado", "account.menu.direct": "Mencionar privadamente",
"account.menu.hide_reblogs": "Ocultar impulsos na linha do tempo", "account.menu.hide_reblogs": "Ocultar impulsos na timeline",
"account.menu.mention": "Mencionar", "account.menu.mention": "Mencionar",
"account.menu.mute": "Silenciar conta", "account.menu.mute": "Silenciar conta",
"account.menu.note.description": "Visível apenas para você", "account.menu.note.description": "Visível somente para você",
"account.menu.open_original_page": "Veja em {domain}", "account.menu.open_original_page": "Ver em {domain}",
"account.menu.remove_follower": "Remover seguidor", "account.menu.remove_follower": "Remover seguidor",
"account.menu.report": "Denunciar conta", "account.menu.report": "Denunciar conta",
"account.menu.share": "Compartilhar…", "account.menu.share": "Compartilhar…",
"account.menu.show_reblogs": "Mostrar impulsos na linha do tempo", "account.menu.show_reblogs": "Exibir impulsos na timeline",
"account.menu.unblock": "Desbloquear conta", "account.menu.unblock": "Desbloquear conta",
"account.menu.unblock_domain": "Desbloquear {domain}", "account.menu.unblock_domain": "Desbloquear {domain}",
"account.menu.unmute": "Deixar de silenciar a conta", "account.menu.unmute": "Deixar de silenciar a conta",
@ -112,21 +112,21 @@
"account.mutual": "Vocês se seguem", "account.mutual": "Vocês se seguem",
"account.name.copy": "Copiar usuário", "account.name.copy": "Copiar usuário",
"account.name.help.domain": "{domain} é o servidor que hospeda o perfil e publicações do usuário.", "account.name.help.domain": "{domain} é o servidor que hospeda o perfil e publicações do usuário.",
"account.name.help.domain_self": "{domain} é o seu servidor que hospeda seu perfil e publicações.", "account.name.help.domain_self": "{domain} é o servidor que hospeda seu perfil e suas publicações.",
"account.name.help.footer": "Assim como pode enviar e-mails para pessoas usando diferentes provedores de e-mail, você pode interagir com pessoas em outros servidor do Mastodon, e com qualquer um em outros apps da Fediverse.", "account.name.help.footer": "Assim como você pode enviar e-mails para outras pessoas usando endereços de e-mail diferentes, você pode interagir com usuários em outros servidores do Mastodon, e com qualquer um dos outros aplicativos do Fediverso.",
"account.name.help.header": "Um identificador é como um endereço de endereço eletrônico", "account.name.help.header": "Um nome de usuário é como um e-mail",
"account.name.help.username": "{username} é o nome de usuário da conta neste servidor. Alguém em outro servidor pode ter o mesmo nome de usuário.", "account.name.help.username": "{username} é o usuário desta conta em seu próprio servidor. Alguém do mesmo servidor talvez possua o mesmo usuário.",
"account.name.help.username_self": "{username} é seu nome de usuário neste servidor. Alguém em outro servidor pode ter o mesmo nome de usuário.", "account.name.help.username_self": "{username} é seu usuário neste servidor. Alguém em outro servidor talvez possua o mesmo usuário.",
"account.name_info": "O que isto significa?", "account.name_info": "O que isso quer dizer?",
"account.no_bio": "Nenhuma descrição fornecida.", "account.no_bio": "Nenhuma descrição fornecida.",
"account.node_modal.callout": "Notas pessoais são visíveis apenas para você.", "account.node_modal.callout": "Notas pessoais são visíveis somente para você.",
"account.node_modal.edit_title": "Editar a nota pessoal", "account.node_modal.edit_title": "Editar nota pessoal",
"account.node_modal.error_unknown": "Não foi possível salvar a nota", "account.node_modal.error_unknown": "Não foi possível salvar nota",
"account.node_modal.field_label": "Nota Pessoal", "account.node_modal.field_label": "Nota Pessoal",
"account.node_modal.save": "Guardar", "account.node_modal.save": "Salvar",
"account.node_modal.title": "Adicionar nota pessoal", "account.node_modal.title": "Adicionar nota pessoal",
"account.note.edit_button": "Editar", "account.note.edit_button": "Editar",
"account.note.title": "Nota pessoal (visível apenas para você)", "account.note.title": "Nota pessoal (visível só para você)",
"account.open_original_page": "Abrir a página original", "account.open_original_page": "Abrir a página original",
"account.pending": "Pendente", "account.pending": "Pendente",
"account.posts": "Publicações", "account.posts": "Publicações",
@ -137,7 +137,7 @@
"account.show_reblogs": "Mostrar impulsos de @{name}", "account.show_reblogs": "Mostrar impulsos de @{name}",
"account.statuses_counter": "{count, plural, one {{counter} publicação} other {{counter} publicações}}", "account.statuses_counter": "{count, plural, one {{counter} publicação} other {{counter} publicações}}",
"account.timeline.pinned": "Fixado", "account.timeline.pinned": "Fixado",
"account.timeline.pinned.view_all": "Ver todas as publicações fixadas", "account.timeline.pinned.view_all": "Ver publicações fixadas",
"account.unblock": "Desbloquear @{name}", "account.unblock": "Desbloquear @{name}",
"account.unblock_domain": "Desbloquear domínio {domain}", "account.unblock_domain": "Desbloquear domínio {domain}",
"account.unblock_domain_short": "Desbloquear", "account.unblock_domain_short": "Desbloquear",
@ -147,40 +147,40 @@
"account.unmute": "Dessilenciar @{name}", "account.unmute": "Dessilenciar @{name}",
"account.unmute_notifications_short": "Ativar som de notificações", "account.unmute_notifications_short": "Ativar som de notificações",
"account.unmute_short": "Desativar silêncio", "account.unmute_short": "Desativar silêncio",
"account_edit.advanced_settings.bot_hint": "Sinalizar a outros que a conta realiza principalmente ações automatizadas e pode não ser monitoriada", "account_edit.advanced_settings.bot_hint": "Alertar a todos que a conta realiza ações automáticas que talvez não sejam monitoradas",
"account_edit.advanced_settings.bot_label": "Conta automatizada", "account_edit.advanced_settings.bot_label": "Conta automática",
"account_edit.advanced_settings.title": "Configurações avançadas", "account_edit.advanced_settings.title": "Opções avançadas",
"account_edit.bio.add_label": "Adicionar biografia", "account_edit.bio.add_label": "Adicionar biografia",
"account_edit.bio.edit_label": "Editar Biografia", "account_edit.bio.edit_label": "Editar biografia",
"account_edit.bio.placeholder": "Insira uma breve introdução para ajudar as outras pessoas a te identificar.", "account_edit.bio.placeholder": "Escreva uma curta introdução para ajudar os outros a identificarem você.",
"account_edit.bio.title": "Bio", "account_edit.bio.title": "Biografia",
"account_edit.bio_modal.add_title": "Adicionar biografia", "account_edit.bio_modal.add_title": "Adicionar biografia",
"account_edit.bio_modal.edit_title": "Editar biografia", "account_edit.bio_modal.edit_title": "Editar biografia",
"account_edit.column_button": "Feito", "account_edit.column_button": "Concluído",
"account_edit.column_title": "Editar perfil", "account_edit.column_title": "Editar perfil",
"account_edit.custom_fields.add_label": "Acrescentar campo", "account_edit.custom_fields.add_label": "Novo espaço",
"account_edit.custom_fields.edit_label": "Editar campo", "account_edit.custom_fields.edit_label": "Editar espaço",
"account_edit.custom_fields.placeholder": "Insira seus pronomes, links externos ou qualquer coisa que queira compartilhar.", "account_edit.custom_fields.placeholder": "Adicione seus pronomes, links externos ou qualquer coisa que deseja compartilhar.",
"account_edit.custom_fields.reorder_button": "Reordenar campos", "account_edit.custom_fields.reorder_button": "Reordenar espaços",
"account_edit.custom_fields.tip_content": "Você pode facilmente dar credibilidade à sua conta Mastodon verificando os links para os seus sites.", "account_edit.custom_fields.tip_content": "Você pode adicionar credibilidade facilmente a sua conta ao verificar qualquer link para seus sites.",
"account_edit.custom_fields.tip_title": "Dica: Adicionando links verificados", "account_edit.custom_fields.tip_title": "Dica: Adicionando links verificados",
"account_edit.custom_fields.title": "Campos personalizados", "account_edit.custom_fields.title": "Espaços personalizados",
"account_edit.custom_fields.verified_hint": "Como adiciono um link verificado?", "account_edit.custom_fields.verified_hint": "Como adicionar um link verificado?",
"account_edit.display_name.add_label": "Acrescentar nome de exibição", "account_edit.display_name.add_label": "Adicionar nome de exibição",
"account_edit.display_name.edit_label": "Editar nome de exibição", "account_edit.display_name.edit_label": "Editar nome de exibição",
"account_edit.display_name.placeholder": "Seu nome de exibição é a forma com que seu nome aparece em seu perfil e em suas linhas do tempo.", "account_edit.display_name.placeholder": "O nome de exibição é como seu nome aparece em seu perfil e em timelines.",
"account_edit.display_name.title": "Nome de exibição", "account_edit.display_name.title": "Nome de exibição",
"account_edit.featured_hashtags.edit_label": "Acrescentar hashtags", "account_edit.featured_hashtags.edit_label": "Adicionar tags",
"account_edit.featured_hashtags.placeholder": "Ajude outros a identificar e ter acesso rápido a seus tópicos favoritos.", "account_edit.featured_hashtags.placeholder": "Ajude todos a identificarem, e acessarem rapidamente seus tópicos favoritos.",
"account_edit.featured_hashtags.title": "Hashtags em destaque", "account_edit.featured_hashtags.title": "Tags em destaque",
"account_edit.field_actions.delete": "Remover campo", "account_edit.field_actions.delete": "Remover espaço",
"account_edit.field_actions.edit": "Editar campo", "account_edit.field_actions.edit": "Editar espaço",
"account_edit.field_delete_modal.confirm": "Tem certeza que deseja excluir este campo personalizado? Esta ação não pode ser desfeita.", "account_edit.field_delete_modal.confirm": "Deseja mesmo excluir este espaço? Esta ação não pode ser desfeita.",
"account_edit.field_delete_modal.delete_button": "Excluir", "account_edit.field_delete_modal.delete_button": "Excluir",
"account_edit.field_delete_modal.title": "Excluir campo personalizado?", "account_edit.field_delete_modal.title": "Remover espaço?",
"account_edit.field_edit_modal.add_title": "Adicionar campo personalizado", "account_edit.field_edit_modal.add_title": "Adicionar espaço",
"account_edit.field_edit_modal.discard_confirm": "Descartar", "account_edit.field_edit_modal.discard_confirm": "Descartar",
"account_edit.field_edit_modal.discard_message": "Você possui alterações não salvas. Tem certeza de que deseja descartá-las?", "account_edit.field_edit_modal.discard_message": "Você possui alterações não salvas. Deseja mesmo descartá-las?",
"account_edit.field_edit_modal.edit_title": "Editar campo personalizado", "account_edit.field_edit_modal.edit_title": "Editar campo personalizado",
"account_edit.field_edit_modal.length_warning": "Limite de caracteres recomendados ultrapassado. Usuários em telefones podem não conseguir ver o espaço completo.", "account_edit.field_edit_modal.length_warning": "Limite de caracteres recomendados ultrapassado. Usuários em telefones podem não conseguir ver o espaço completo.",
"account_edit.field_edit_modal.link_emoji_warning": "Recomendamos não utilizar emojis personalizados combinados com URLs. Campos personalizados contendo ambos serão exibidos apenas como texto em vez de link, para evitar confusão dos usuários.", "account_edit.field_edit_modal.link_emoji_warning": "Recomendamos não utilizar emojis personalizados combinados com URLs. Campos personalizados contendo ambos serão exibidos apenas como texto em vez de link, para evitar confusão dos usuários.",
@ -394,7 +394,7 @@
"collections.detail.loading": "Carregando coleção…", "collections.detail.loading": "Carregando coleção…",
"collections.detail.revoke_inclusion": "Remover-me", "collections.detail.revoke_inclusion": "Remover-me",
"collections.detail.sensitive_content": "Conteúdo sensível", "collections.detail.sensitive_content": "Conteúdo sensível",
"collections.detail.sensitive_note": "Esta coleção contém contas e conteúdo que podem ser sensíveis a alguns usuários.", "collections.detail.sensitive_note": "A descrição e as contas talvez possam não ser adequadas para todos.",
"collections.detail.share": "Compartilhar esta coleção", "collections.detail.share": "Compartilhar esta coleção",
"collections.detail.you_are_in_this_collection": "Você aparece nesta coleção", "collections.detail.you_are_in_this_collection": "Você aparece nesta coleção",
"collections.edit_details": "Editar detalhes", "collections.edit_details": "Editar detalhes",
@ -425,6 +425,11 @@
"collections.search_accounts_max_reached": "Você acrescentou o número máximo de contas", "collections.search_accounts_max_reached": "Você acrescentou o número máximo de contas",
"collections.sensitive": "Sensível", "collections.sensitive": "Sensível",
"collections.share_short": "Compartilhar", "collections.share_short": "Compartilhar",
"collections.sort_alphabetical": "Alfabética",
"collections.sort_by": "Ordenar por:",
"collections.sort_date_added": "Data adicionada",
"collections.sort_last_active": "Última atividade",
"collections.sort_most_followers": "Mais seguidores",
"collections.suggestions.can_not_add": "Não pôde ser adicionado", "collections.suggestions.can_not_add": "Não pôde ser adicionado",
"collections.suggestions.can_not_add_desc": "Estas contas podem ter optado para não serem exibidas na página de descobrir, ou podem estar em um servidor que não suporta coleções.", "collections.suggestions.can_not_add_desc": "Estas contas podem ter optado para não serem exibidas na página de descobrir, ou podem estar em um servidor que não suporta coleções.",
"collections.suggestions.must_follow": "Você deve seguir primeiro", "collections.suggestions.must_follow": "Você deve seguir primeiro",
@ -636,6 +641,7 @@
"empty_column.blocks": "Nada aqui.", "empty_column.blocks": "Nada aqui.",
"empty_column.bookmarked_statuses": "Nada aqui. Quando você salvar uma publicação, ela aparecerá aqui.", "empty_column.bookmarked_statuses": "Nada aqui. Quando você salvar uma publicação, ela aparecerá aqui.",
"empty_column.collections.featured_in": "Você ainda não foi adicionado a nenhuma coleção.", "empty_column.collections.featured_in": "Você ainda não foi adicionado a nenhuma coleção.",
"empty_column.collections.featured_in_undiscoverable": "Para as pessoas adicionarem você às coleções, você precisa permitir destaque de experiências de descoberta através de <link>Preferências > Privacidade e alcance</link>",
"empty_column.community": "A linha local está vazia. Publique algo para começar!", "empty_column.community": "A linha local está vazia. Publique algo para começar!",
"empty_column.direct": "Você ainda não tem mensagens privadas. Quando você enviar ou receber uma, será exibida aqui.", "empty_column.direct": "Você ainda não tem mensagens privadas. Quando você enviar ou receber uma, será exibida aqui.",
"empty_column.disabled_feed": "Este feed foi desativado pelos administradores de seu servidor.", "empty_column.disabled_feed": "Este feed foi desativado pelos administradores de seu servidor.",

View File

@ -373,7 +373,6 @@
"collections.detail.loading": "A carregar a coleção…", "collections.detail.loading": "A carregar a coleção…",
"collections.detail.revoke_inclusion": "Remover-me", "collections.detail.revoke_inclusion": "Remover-me",
"collections.detail.sensitive_content": "Conteúdo sensível", "collections.detail.sensitive_content": "Conteúdo sensível",
"collections.detail.sensitive_note": "Esta coleção contém contas e conteúdos que podem ser sensíveis para alguns utilizadores.",
"collections.detail.share": "Partilhar esta coleção", "collections.detail.share": "Partilhar esta coleção",
"collections.detail.you_are_in_this_collection": "Está em destaque nesta coleção", "collections.detail.you_are_in_this_collection": "Está em destaque nesta coleção",
"collections.edit_details": "Editar detalhes", "collections.edit_details": "Editar detalhes",

View File

@ -389,7 +389,7 @@
"collections.detail.loading": "Po ngarkohet koleksion…", "collections.detail.loading": "Po ngarkohet koleksion…",
"collections.detail.revoke_inclusion": "Hiqmëni", "collections.detail.revoke_inclusion": "Hiqmëni",
"collections.detail.sensitive_content": "Lëndë rezervat", "collections.detail.sensitive_content": "Lëndë rezervat",
"collections.detail.sensitive_note": "Ky koleksion përmban llogari dhe lëndë që mund të jetë me spec për disa përdorues.", "collections.detail.sensitive_note": "Përshkrimi dhe llogaritë mund të mos jenë të përshtatshme për krejt parësit.",
"collections.detail.share": "Ndajeni këtë koleksion me të tjerë", "collections.detail.share": "Ndajeni këtë koleksion me të tjerë",
"collections.detail.you_are_in_this_collection": "Shfaqeni te ky koleksion", "collections.detail.you_are_in_this_collection": "Shfaqeni te ky koleksion",
"collections.edit_details": "Përpunoni hollësi", "collections.edit_details": "Përpunoni hollësi",
@ -420,6 +420,11 @@
"collections.search_accounts_max_reached": "Keni shtuar numrin maksimum të llogarive", "collections.search_accounts_max_reached": "Keni shtuar numrin maksimum të llogarive",
"collections.sensitive": "Rezervat", "collections.sensitive": "Rezervat",
"collections.share_short": "Ndajeni me të tjerë", "collections.share_short": "Ndajeni me të tjerë",
"collections.sort_alphabetical": "Alfabetit",
"collections.sort_by": "Renditi sipas:",
"collections.sort_date_added": "Datës së shtimit",
"collections.sort_last_active": "Aktiv së fundi më",
"collections.sort_most_followers": "Shumicës së ndjekësve",
"collections.suggestions.can_not_add": "Smund të shtohet", "collections.suggestions.can_not_add": "Smund të shtohet",
"collections.suggestions.can_not_add_desc": "Këto llogari kanë zgjedhur të lihen jashtë zbulimi, ose mund të gjenden në një shërbyes që smbulon koleksione.", "collections.suggestions.can_not_add_desc": "Këto llogari kanë zgjedhur të lihen jashtë zbulimi, ose mund të gjenden në një shërbyes që smbulon koleksione.",
"collections.suggestions.must_follow": "Duhet të ndjekin së pari", "collections.suggestions.must_follow": "Duhet të ndjekin së pari",
@ -631,6 +636,7 @@
"empty_column.blocks": "Skeni bllokuar ende ndonjë përdorues.", "empty_column.blocks": "Skeni bllokuar ende ndonjë përdorues.",
"empty_column.bookmarked_statuses": "Skeni faqeruajtur ende ndonjë mesazh. Kur faqeruani një të tillë, ai do të shfaqet këtu.", "empty_column.bookmarked_statuses": "Skeni faqeruajtur ende ndonjë mesazh. Kur faqeruani një të tillë, ai do të shfaqet këtu.",
"empty_column.collections.featured_in": "Sjeni shtuar ende te ndonjë koleksion.", "empty_column.collections.featured_in": "Sjeni shtuar ende te ndonjë koleksion.",
"empty_column.collections.featured_in_undiscoverable": "Që njerëzit tju shtojnë te koleksione, lypset të lejoni shfaqjen si i zgjedhur në raste zbulimi, që nga <link>Parapëlqime > Privatësi dhe shtrirje</link>",
"empty_column.community": "Rrjedha kohore vendore është e zbrazët. Shkruani diçka publikisht që ti hyhet valles!", "empty_column.community": "Rrjedha kohore vendore është e zbrazët. Shkruani diçka publikisht që ti hyhet valles!",
"empty_column.direct": "Skeni ende ndonjë përmendje private. Kur dërgoni ose merrni një të tillë, do të shfaqet këtu.", "empty_column.direct": "Skeni ende ndonjë përmendje private. Kur dërgoni ose merrni një të tillë, do të shfaqet këtu.",
"empty_column.disabled_feed": "Kjo prurje është çaktivizuar nga përgjegjësit e shërbyesit tuaj.", "empty_column.disabled_feed": "Kjo prurje është çaktivizuar nga përgjegjësit e shërbyesit tuaj.",

View File

@ -394,7 +394,6 @@
"collections.detail.loading": "Laddar samling…", "collections.detail.loading": "Laddar samling…",
"collections.detail.revoke_inclusion": "Ta bort mig", "collections.detail.revoke_inclusion": "Ta bort mig",
"collections.detail.sensitive_content": "Känsligt innehåll", "collections.detail.sensitive_content": "Känsligt innehåll",
"collections.detail.sensitive_note": "Denna samling innehåller konton och innehåll som kan vara känsliga för vissa användare.",
"collections.detail.share": "Dela denna samling", "collections.detail.share": "Dela denna samling",
"collections.detail.you_are_in_this_collection": "Du är med i denna samling", "collections.detail.you_are_in_this_collection": "Du är med i denna samling",
"collections.edit_details": "Redigera detaljer", "collections.edit_details": "Redigera detaljer",
@ -425,6 +424,10 @@
"collections.search_accounts_max_reached": "Du har lagt till maximalt antal konton", "collections.search_accounts_max_reached": "Du har lagt till maximalt antal konton",
"collections.sensitive": "Känsligt", "collections.sensitive": "Känsligt",
"collections.share_short": "Dela", "collections.share_short": "Dela",
"collections.sort_alphabetical": "Alfabetiskt",
"collections.sort_by": "Sortera efter:",
"collections.sort_last_active": "Senast aktiv",
"collections.sort_most_followers": "Flest följare",
"collections.suggestions.can_not_add": "Kan inte läggas till", "collections.suggestions.can_not_add": "Kan inte läggas till",
"collections.suggestions.can_not_add_desc": "Dessa konton kan ha valt bort upptäckt, eller kan de vara på en server som inte stöder samlingar.", "collections.suggestions.can_not_add_desc": "Dessa konton kan ha valt bort upptäckt, eller kan de vara på en server som inte stöder samlingar.",
"collections.suggestions.must_follow": "Måste följa först", "collections.suggestions.must_follow": "Måste följa först",

View File

@ -394,7 +394,7 @@
"collections.detail.loading": "Koleksiyon yükleniyor…", "collections.detail.loading": "Koleksiyon yükleniyor…",
"collections.detail.revoke_inclusion": "Beni çıkar", "collections.detail.revoke_inclusion": "Beni çıkar",
"collections.detail.sensitive_content": "Hassas içerik", "collections.detail.sensitive_content": "Hassas içerik",
"collections.detail.sensitive_note": "Bu koleksiyon bazı kullanıcılar için hassas olabilecek hesap ve içerik içerebilir.", "collections.detail.sensitive_note": "Bu ıklama ve hesaplar her izleyiciye uygun olmayabilir.",
"collections.detail.share": "Bu koleksiyonu paylaş", "collections.detail.share": "Bu koleksiyonu paylaş",
"collections.detail.you_are_in_this_collection": "Bu koleksiyonda öne çıkanlardasınız", "collections.detail.you_are_in_this_collection": "Bu koleksiyonda öne çıkanlardasınız",
"collections.edit_details": "Ayrıntıları düzenle", "collections.edit_details": "Ayrıntıları düzenle",
@ -425,6 +425,11 @@
"collections.search_accounts_max_reached": "Maksimum hesabı eklediniz", "collections.search_accounts_max_reached": "Maksimum hesabı eklediniz",
"collections.sensitive": "Hassas", "collections.sensitive": "Hassas",
"collections.share_short": "Paylaş", "collections.share_short": "Paylaş",
"collections.sort_alphabetical": "Alfabetik",
"collections.sort_by": "Sıralama:",
"collections.sort_date_added": "Ekleme tarihi",
"collections.sort_last_active": "Son etkinlik",
"collections.sort_most_followers": "En fazla takipçi",
"collections.suggestions.can_not_add": "Eklenemez", "collections.suggestions.can_not_add": "Eklenemez",
"collections.suggestions.can_not_add_desc": "Bu hesaplar, keşfedilmek istemiyor veya koleksiyonları desteklemeyen bir sunucuda yer alıyor olabilirler.", "collections.suggestions.can_not_add_desc": "Bu hesaplar, keşfedilmek istemiyor veya koleksiyonları desteklemeyen bir sunucuda yer alıyor olabilirler.",
"collections.suggestions.must_follow": "İlk önce takip etmelisiniz", "collections.suggestions.must_follow": "İlk önce takip etmelisiniz",
@ -636,6 +641,7 @@
"empty_column.blocks": "Henüz herhangi bir kullanıcıyı engellemedin.", "empty_column.blocks": "Henüz herhangi bir kullanıcıyı engellemedin.",
"empty_column.bookmarked_statuses": "Henüz yer imine eklediğin toot yok. Bir tanesi yer imine eklendiğinde burada görünür.", "empty_column.bookmarked_statuses": "Henüz yer imine eklediğin toot yok. Bir tanesi yer imine eklendiğinde burada görünür.",
"empty_column.collections.featured_in": "Henüz herhangi bir koleksiyona eklenmediniz.", "empty_column.collections.featured_in": "Henüz herhangi bir koleksiyona eklenmediniz.",
"empty_column.collections.featured_in_undiscoverable": "Kullanıcıların sizi koleksiyonlarına ekleyebilmesi için, <link>Tercihler > Gizlilik ve erişim</link> bölümünden keşif deneyimlerinde öne çıkarılmaya izin vermeniz gerekir",
"empty_column.community": "Yerel zaman çizelgesi boş. Daha fazla eğlence için herkese açık bir gönderi paylaşın!", "empty_column.community": "Yerel zaman çizelgesi boş. Daha fazla eğlence için herkese açık bir gönderi paylaşın!",
"empty_column.direct": "Henüz doğrudan değinmeniz yok. Bir tane gönderdiğinizde veya aldığınızda burada listelenecek.", "empty_column.direct": "Henüz doğrudan değinmeniz yok. Bir tane gönderdiğinizde veya aldığınızda burada listelenecek.",
"empty_column.disabled_feed": "Bu akış sunucu yöneticileri tarafından devre dışı bırakılmıştır.", "empty_column.disabled_feed": "Bu akış sunucu yöneticileri tarafından devre dışı bırakılmıştır.",

View File

@ -394,7 +394,7 @@
"collections.detail.loading": "Đang tải gói khởi đầu…", "collections.detail.loading": "Đang tải gói khởi đầu…",
"collections.detail.revoke_inclusion": "Xóa tôi", "collections.detail.revoke_inclusion": "Xóa tôi",
"collections.detail.sensitive_content": "Nội dung nhạy cảm", "collections.detail.sensitive_content": "Nội dung nhạy cảm",
"collections.detail.sensitive_note": "Gói khởi đầu này chứa các tài khoản và nội dung có thể nhạy cảm đối với một số người.", "collections.detail.sensitive_note": "Phần mô tả và nội dung có thể không phù hợp với tất cả người xem.",
"collections.detail.share": "Chia sẻ gói khởi đầu này", "collections.detail.share": "Chia sẻ gói khởi đầu này",
"collections.detail.you_are_in_this_collection": "Bạn đã được thêm vào gói khởi đầu này", "collections.detail.you_are_in_this_collection": "Bạn đã được thêm vào gói khởi đầu này",
"collections.edit_details": "Sửa chi tiết", "collections.edit_details": "Sửa chi tiết",
@ -425,6 +425,11 @@
"collections.search_accounts_max_reached": "Bạn đã đạt đến số lượng tài khoản tối đa", "collections.search_accounts_max_reached": "Bạn đã đạt đến số lượng tài khoản tối đa",
"collections.sensitive": "Nhạy cảm", "collections.sensitive": "Nhạy cảm",
"collections.share_short": "Chia sẻ", "collections.share_short": "Chia sẻ",
"collections.sort_alphabetical": "Bảng chữ cái",
"collections.sort_by": "Sắp xếp theo:",
"collections.sort_date_added": "Ngày thêm",
"collections.sort_last_active": "Hoạt động lần cuối",
"collections.sort_most_followers": "Nhiều người theo dõi nhất",
"collections.suggestions.can_not_add": "Không thể thêm", "collections.suggestions.can_not_add": "Không thể thêm",
"collections.suggestions.can_not_add_desc": "Những tài khoản này không muốn khám phá, hoặc họ ở trên máy chủ chưa hỗ trợ gói khởi đầu.", "collections.suggestions.can_not_add_desc": "Những tài khoản này không muốn khám phá, hoặc họ ở trên máy chủ chưa hỗ trợ gói khởi đầu.",
"collections.suggestions.must_follow": "Cần theo dõi trước", "collections.suggestions.must_follow": "Cần theo dõi trước",

View File

@ -394,7 +394,7 @@
"collections.detail.loading": "正在加载收藏列表…", "collections.detail.loading": "正在加载收藏列表…",
"collections.detail.revoke_inclusion": "移除我", "collections.detail.revoke_inclusion": "移除我",
"collections.detail.sensitive_content": "敏感内容", "collections.detail.sensitive_content": "敏感内容",
"collections.detail.sensitive_note": "此收藏列表可能包含某些对部分用户而言为敏感内容的账号或内容。", "collections.detail.sensitive_note": "列表说明及其中的账号可能不适合所有人查看。",
"collections.detail.share": "分享此收藏列表", "collections.detail.share": "分享此收藏列表",
"collections.detail.you_are_in_this_collection": "你被添加到了此收藏列表", "collections.detail.you_are_in_this_collection": "你被添加到了此收藏列表",
"collections.edit_details": "编辑详情", "collections.edit_details": "编辑详情",
@ -425,6 +425,11 @@
"collections.search_accounts_max_reached": "你添加的账号数量已达上限", "collections.search_accounts_max_reached": "你添加的账号数量已达上限",
"collections.sensitive": "敏感内容", "collections.sensitive": "敏感内容",
"collections.share_short": "分享", "collections.share_short": "分享",
"collections.sort_alphabetical": "按字母顺序",
"collections.sort_by": "排序方式:",
"collections.sort_date_added": "按添加日期",
"collections.sort_last_active": "按最后活跃顺序",
"collections.sort_most_followers": "按关注者最多",
"collections.suggestions.can_not_add": "无法添加", "collections.suggestions.can_not_add": "无法添加",
"collections.suggestions.can_not_add_desc": "这些账号可能已主动选择不可被发现,或是他们所在的服务器尚不支持收藏列表。", "collections.suggestions.can_not_add_desc": "这些账号可能已主动选择不可被发现,或是他们所在的服务器尚不支持收藏列表。",
"collections.suggestions.must_follow": "必须先关注", "collections.suggestions.must_follow": "必须先关注",
@ -636,6 +641,7 @@
"empty_column.blocks": "你还未屏蔽任何用户。", "empty_column.blocks": "你还未屏蔽任何用户。",
"empty_column.bookmarked_statuses": "你还没有给任何嘟文添加书签。添加书签后的嘟文会显示在这里。", "empty_column.bookmarked_statuses": "你还没有给任何嘟文添加书签。添加书签后的嘟文会显示在这里。",
"empty_column.collections.featured_in": "你还没有被添加到收藏列表过。", "empty_column.collections.featured_in": "你还没有被添加到收藏列表过。",
"empty_column.collections.featured_in_undiscoverable": "如果想让其他人将你添加到收藏列表,请前往<link>偏好设置 > 隐私与可达性</link>在发现功能中允许推荐",
"empty_column.community": "本站时间线还没有内容,写点什么并公开发布,让它活跃起来吧!", "empty_column.community": "本站时间线还没有内容,写点什么并公开发布,让它活跃起来吧!",
"empty_column.direct": "你还未使用过私下提及。当你发出或者收到私下提及时,它将显示在此。", "empty_column.direct": "你还未使用过私下提及。当你发出或者收到私下提及时,它将显示在此。",
"empty_column.disabled_feed": "此动态已被你的服务器管理员禁用。", "empty_column.disabled_feed": "此动态已被你的服务器管理员禁用。",

View File

@ -394,7 +394,7 @@
"collections.detail.loading": "讀取收藏名單中...", "collections.detail.loading": "讀取收藏名單中...",
"collections.detail.revoke_inclusion": "移除我", "collections.detail.revoke_inclusion": "移除我",
"collections.detail.sensitive_content": "敏感內容", "collections.detail.sensitive_content": "敏感內容",
"collections.detail.sensitive_note": "此收藏名單可能包含對某些使用者敏感之帳號或內容。", "collections.detail.sensitive_note": "內容說明與帳號也許不適合所有瀏覽者。",
"collections.detail.share": "分享此收藏名單", "collections.detail.share": "分享此收藏名單",
"collections.detail.you_are_in_this_collection": "您已被加入至此收藏名單", "collections.detail.you_are_in_this_collection": "您已被加入至此收藏名單",
"collections.edit_details": "編輯詳細資料", "collections.edit_details": "編輯詳細資料",
@ -425,6 +425,11 @@
"collections.search_accounts_max_reached": "您新增之帳號數已達上限", "collections.search_accounts_max_reached": "您新增之帳號數已達上限",
"collections.sensitive": "敏感內容", "collections.sensitive": "敏感內容",
"collections.share_short": "分享", "collections.share_short": "分享",
"collections.sort_alphabetical": "按字母順序",
"collections.sort_by": "排序依據:",
"collections.sort_date_added": "新增日期",
"collections.sort_last_active": "最後上線",
"collections.sort_most_followers": "最多跟隨者",
"collections.suggestions.can_not_add": "無法被新增", "collections.suggestions.can_not_add": "無法被新增",
"collections.suggestions.can_not_add_desc": "這些帳號可能選擇退出探索功能,或他們所在之伺服器未支援收藏名單。", "collections.suggestions.can_not_add_desc": "這些帳號可能選擇退出探索功能,或他們所在之伺服器未支援收藏名單。",
"collections.suggestions.must_follow": "您必須先跟隨", "collections.suggestions.must_follow": "您必須先跟隨",
@ -636,6 +641,7 @@
"empty_column.blocks": "您尚未封鎖任何使用者。", "empty_column.blocks": "您尚未封鎖任何使用者。",
"empty_column.bookmarked_statuses": "您還沒有新增任何書籤。當您新增書籤時,它將於此顯示。", "empty_column.bookmarked_statuses": "您還沒有新增任何書籤。當您新增書籤時,它將於此顯示。",
"empty_column.collections.featured_in": "您尚未被加入至任何收藏名單。", "empty_column.collections.featured_in": "您尚未被加入至任何收藏名單。",
"empty_column.collections.featured_in_undiscoverable": "如欲被其他人將您加入至收藏名單,您必須於 <link>偏好設定 > 隱私權與觸及</link> 啟用探索相關功能",
"empty_column.community": "本站時間軸是空的。快公開嘟些文搶頭香啊!", "empty_column.community": "本站時間軸是空的。快公開嘟些文搶頭香啊!",
"empty_column.direct": "您還沒有收到任何私訊。當您私訊別人或收到私訊時,它將於此顯示。", "empty_column.direct": "您還沒有收到任何私訊。當您私訊別人或收到私訊時,它將於此顯示。",
"empty_column.disabled_feed": "此內容已被您的伺服器管理員停用。", "empty_column.disabled_feed": "此內容已被您的伺服器管理員停用。",

View File

@ -1,59 +0,0 @@
declare module 'virtual:mastodon-emoji-compressed' {
import type { BaseEmoji, EmojiData, NimbleEmojiIndex } from 'emoji-mart';
import type { Category, Data, Emoji } from 'emoji-mart/dist-es/utils/data';
/*
* The 'search' property, although not defined in the [`Emoji`]{@link node_modules/@types/emoji-mart/dist-es/utils/data.d.ts#Emoji} type,
* is used in the application.
* This could be due to an oversight by the library maintainer.
* The `search` property is defined and used [here]{@link node_modules/emoji-mart/dist/utils/data.js#uncompress}.
*/
export type Search = string;
/*
* The 'skins' property does not exist in the application data.
* 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}.
*/
type Skins = null;
type Filename = string;
type UnicodeFilename = string;
export type FilenameData = [
filename: Filename,
unicodeFilename?: UnicodeFilename,
][];
export type ShortCodesToEmojiDataKey =
| EmojiData['id']
| BaseEmoji['native']
| keyof NimbleEmojiIndex['emojis'];
type SearchData = [
BaseEmoji['native'],
Emoji['short_names'],
Search,
Emoji['unified'],
];
export type ShortCodesToEmojiData = Record<
ShortCodesToEmojiDataKey,
[FilenameData, SearchData]
>;
type EmojisWithoutShortCodes = FilenameData;
type EmojiCompressed = [
ShortCodesToEmojiData,
Skins,
Category[],
Data['aliases'],
EmojisWithoutShortCodes,
Data,
];
/*
* `emoji_compressed.js` uses `babel-plugin-preval`, which makes it difficult to convert to TypeScript.
* As a temporary solution, we are allowing a default export here to apply the TypeScript type `EmojiCompressed` to the JS file export.
* - {@link app/javascript/mastodon/features/emoji/emoji_compressed.js}
*/
declare const emojiCompressed: EmojiCompressed;
export default emojiCompressed; // eslint-disable-line import/no-default-export
}

View File

@ -361,8 +361,15 @@ cy:
updated_msg: Cyhoeddiad wedi'i ddiweddaru'n llwyddiannus! updated_msg: Cyhoeddiad wedi'i ddiweddaru'n llwyddiannus!
collections: collections:
accounts: Cyfrifon accounts: Cyfrifon
back_to_account: Nôl i dudalen y cyfrif
back_to_report: Nôl i dudalen yr adroddiad
batch:
add_to_report: 'Ychwanegu at adroddiad #%{id}'
remove_from_report: Dileu o'r adroddiad
report: Adroddiadau
collection_title: Casgliad gan %{name} collection_title: Casgliad gan %{name}
contents: Cynnwys contents: Cynnwys
no_collection_selected: Heb newid unrhyw gasgliad am nad oedd un wedi'i ddewis
number_of_accounts: number_of_accounts:
few: "%{count} cyfrif" few: "%{count} cyfrif"
many: "%{count} cyfrif" many: "%{count} cyfrif"
@ -371,6 +378,7 @@ cy:
two: "%{count} cyfrif" two: "%{count} cyfrif"
zero: "%{count} cyfrif" zero: "%{count} cyfrif"
open: Agor open: Agor
title: Casgliadau cyfrifon - @%{name}
view_publicly: Gweld yn gyhoeddus view_publicly: Gweld yn gyhoeddus
critical_update_pending: Diweddariad hanfodol ar ei ffordd critical_update_pending: Diweddariad hanfodol ar ei ffordd
custom_emojis: custom_emojis:

View File

@ -349,6 +349,7 @@ da:
back_to_report: Tilbage til anmeldelsesside back_to_report: Tilbage til anmeldelsesside
batch: batch:
add_to_report: 'Føj til anmeldelse #%{id}' add_to_report: 'Føj til anmeldelse #%{id}'
remove_from_report: Fjern fra anmeldelse
report: Anmeldelse report: Anmeldelse
collection_title: Indsamling af %{name} collection_title: Indsamling af %{name}
contents: Indhold contents: Indhold

View File

@ -349,6 +349,7 @@ de:
back_to_report: Zurück zu den Meldungen back_to_report: Zurück zu den Meldungen
batch: batch:
add_to_report: Der Meldung Nr. %{id} hinzufügen add_to_report: Der Meldung Nr. %{id} hinzufügen
remove_from_report: Aus der Meldung entfernen
report: Meldung report: Meldung
collection_title: Sammlung von %{name} collection_title: Sammlung von %{name}
contents: Inhalte contents: Inhalte

View File

@ -349,6 +349,7 @@ el:
back_to_report: Πίσω στη σελίδα αναφοράς back_to_report: Πίσω στη σελίδα αναφοράς
batch: batch:
add_to_report: 'Προσθήκη στην αναφορά #%{id}' add_to_report: 'Προσθήκη στην αναφορά #%{id}'
remove_from_report: Αφαίρεση από την αναφορά
report: Αναφορά report: Αναφορά
collection_title: Συλλογή από %{name} collection_title: Συλλογή από %{name}
contents: Περιεχόμενα contents: Περιεχόμενα

View File

@ -349,6 +349,7 @@ es-AR:
back_to_report: Volver a la página de la denuncia back_to_report: Volver a la página de la denuncia
batch: batch:
add_to_report: Agregar a la denuncia N°%{id} add_to_report: Agregar a la denuncia N°%{id}
remove_from_report: Quitar de la denuncia
report: Denunciar report: Denunciar
collection_title: Colección de %{name} collection_title: Colección de %{name}
contents: Contenidos contents: Contenidos

View File

@ -349,6 +349,7 @@ es-MX:
back_to_report: Volver a la página del informe back_to_report: Volver a la página del informe
batch: batch:
add_to_report: 'Añadir al informe #%{id}' add_to_report: 'Añadir al informe #%{id}'
remove_from_report: Quitar del informe
report: Informe report: Informe
collection_title: Colección de %{name} collection_title: Colección de %{name}
contents: Contenidos contents: Contenidos

View File

@ -349,6 +349,7 @@ es:
back_to_report: Volver a la página del informe back_to_report: Volver a la página del informe
batch: batch:
add_to_report: 'Añadir al informe #%{id}' add_to_report: 'Añadir al informe #%{id}'
remove_from_report: Quitar del informe
report: Informar report: Informar
collection_title: Colección de %{name} collection_title: Colección de %{name}
contents: Contenidos contents: Contenidos
@ -1299,7 +1300,7 @@ es:
animations_and_accessibility: Animaciones y accesibilidad animations_and_accessibility: Animaciones y accesibilidad
boosting_preferences: Preferencias de impulso boosting_preferences: Preferencias de impulso
boosting_preferences_info_html: "<strong>Consejo:</strong> Sin importar los ajustes, pulsar <kbd>Mayus</kbd> al hacer <kbd>clic</kbd> en el icono de %{icon} Impulsar, dará impulso inmediatamente." boosting_preferences_info_html: "<strong>Consejo:</strong> Sin importar los ajustes, pulsar <kbd>Mayus</kbd> al hacer <kbd>clic</kbd> en el icono de %{icon} Impulsar, dará impulso inmediatamente."
discovery: Descubrir discovery: Descubrimiento
localization: localization:
body: Mastodon es traducido con la ayuda de voluntarios. body: Mastodon es traducido con la ayuda de voluntarios.
guide_link: https://es.crowdin.com/project/mastodon guide_link: https://es.crowdin.com/project/mastodon

View File

@ -349,6 +349,7 @@ et:
back_to_report: Tagasi raporti lehele back_to_report: Tagasi raporti lehele
batch: batch:
add_to_report: 'Lisa raportile #%{id}' add_to_report: 'Lisa raportile #%{id}'
remove_from_report: Eemalda raportist
report: Raport report: Raport
collection_title: Kasutaja %{name} kogumikud collection_title: Kasutaja %{name} kogumikud
contents: Sisu contents: Sisu

View File

@ -349,6 +349,7 @@ fi:
back_to_report: Takaisin raporttisivulle back_to_report: Takaisin raporttisivulle
batch: batch:
add_to_report: Lisää raporttiin nro %{id} add_to_report: Lisää raporttiin nro %{id}
remove_from_report: Poista raportista
report: Raportoi report: Raportoi
collection_title: Kokoelma, koonnut %{name} collection_title: Kokoelma, koonnut %{name}
contents: Sisältö contents: Sisältö
@ -499,9 +500,12 @@ fi:
email_subscriptions: email_subscriptions:
accounts: accounts:
account: Tili account: Tili
active: Käytössä
empty: empty:
hint: Millään tilillä ei ole vielä tilaajia. hint: Millään tilillä ei ole vielä tilaajia.
no_lists_yet: Ei vielä listoja no_lists_yet: Ei vielä listoja
inactive: Poissa käytöstä
last_email: Viimeisin sähköpostiviesti
lead: Alla näkyvät tilit, jotka ovat ottaneet ominaisuuden käyttöön ja joilla on tilaajia. lead: Alla näkyvät tilit, jotka ovat ottaneet ominaisuuden käyttöön ja joilla on tilaajia.
status: Tila status: Tila
subscribers: Tilaajia subscribers: Tilaajia
@ -512,21 +516,35 @@ fi:
compliance_settings: compliance_settings:
additional_footer_text: additional_footer_text:
action: Hallitse action: Hallitse
hint: Valinnainen teksti, joka näkyy vain uutiskirjeiden alatunnisteessa
title: Alatunnisteen lisäteksti title: Alatunnisteen lisäteksti
lead: Sähköpostiuutiskirjeitä voidaan pitää markkinointiviesteinä riippuen lainkäyttöalueesta, jossa toimit.
privacy_policy: privacy_policy:
action: Hallitse action: Hallitse
hint: Jokaisen sähköpostiviestin alatunnisteessa on linkki tähän käytäntöön
title: Tietosuojakäytäntö title: Tietosuojakäytäntö
danger_zone: danger_zone:
disable_feature: disable_feature:
action: Poista käytöstä action: Poista käytöstä
hint: Poista ominaisuus käytöstä kaikilta tileiltä hint: Poista ominaisuus käytöstä kaikilta tileiltä
title: Poista ominaisuus käytöstä title: Poista ominaisuus käytöstä
erase_all_data:
action: Hävitä tiedot
hint: Poistaa kaikki sähköpostiosoitteet pysyvästi kaikilta postituslistoilta
title: Hävitä kaikki tiedot
title: Vaaravyöhyke title: Vaaravyöhyke
disabled_msg: Sähköpostitilaukset on poistettu käytöstä onnistuneesti.
index: index:
disabled: disabled:
cannot_be_enabled: Tekninen palveluntarjoajasi ei ole ottanut tätä omainaisuutta käyttöön palvelimellasi.
get_started: Aloita get_started: Aloita
title: Sähköpostiuutiskirjeet
purged_msg: Kaikki sähköpostitilausten tiedot hävitetään.
roles: roles:
accounts: Tilejä
edit_role: Muokkaa roolia edit_role: Muokkaa roolia
empty:
hint: Kenelläkään ei ole oikeutta käyttää tätä ominaisuutta.
manage_roles: Hallitse rooleja manage_roles: Hallitse rooleja
role_name: Roolin nimi role_name: Roolin nimi
title: Roolit title: Roolit
@ -534,6 +552,8 @@ fi:
show: show:
enable_feature: Ota ominaisuus käyttöön enable_feature: Ota ominaisuus käyttöön
important_information: Tärkeää tietoa important_information: Tärkeää tietoa
list:
3_privacy_policy_warning: Palvelimen ylläpito saa pääsyn kerättyihin henkilötietoihin (sähköpostiosoitteisiin). Siksi palvelimen tietosuojakäytäntö ja käyttöehdot on päivitettävä ennen tämän ominaisuuden käyttöä.
export_domain_allows: export_domain_allows:
new: new:
title: Tuo sallittuja verkkotunnuksia title: Tuo sallittuja verkkotunnuksia
@ -839,6 +859,7 @@ fi:
manage_custom_emojis: Hallita mukautettuja emojeita manage_custom_emojis: Hallita mukautettuja emojeita
manage_custom_emojis_description: Sallii käyttäjien hallita palvelimen mukautettuja emojeita manage_custom_emojis_description: Sallii käyttäjien hallita palvelimen mukautettuja emojeita
manage_email_subscriptions: Hallita sähköpostitilauksia manage_email_subscriptions: Hallita sähköpostitilauksia
manage_email_subscriptions_description: Salli käyttäjien, jolla on tämä käyttöoikeus, ottaa sähköpostiuutiskirjeominaisuus käyttöön tilillään
manage_federation: Hallita federointia manage_federation: Hallita federointia
manage_federation_description: Sallii käyttäjien estää tai sallia federointi muiden verkkotunnusten kanssa ja hallita toimitusta manage_federation_description: Sallii käyttäjien estää tai sallia federointi muiden verkkotunnusten kanssa ja hallita toimitusta
manage_invites: Hallita kutsuja manage_invites: Hallita kutsuja
@ -1795,6 +1816,8 @@ fi:
moderation_warning: moderation_warning:
summary_html: Olet sovelluksessa, joka ei tue uusinta Mastodonin versiota. %{link}. summary_html: Olet sovelluksessa, joka ei tue uusinta Mastodonin versiota. %{link}.
title: Olet saanut moderointivaroituksen. title: Olet saanut moderointivaroituksen.
severed_relationships:
title: Menetetty yhteydet palvelimeen %{name}
notification_mailer: notification_mailer:
admin: admin:
report: report:

View File

@ -349,6 +349,7 @@ it:
back_to_report: Torna alla pagina di segnalazione back_to_report: Torna alla pagina di segnalazione
batch: batch:
add_to_report: 'Aggiungi alla segnalazione #%{id}' add_to_report: 'Aggiungi alla segnalazione #%{id}'
remove_from_report: Rimuovi dalla segnalazione
report: Segnala report: Segnala
collection_title: Collezione di %{name} collection_title: Collezione di %{name}
contents: Contenuti contents: Contenuti
@ -749,7 +750,7 @@ it:
mark_as_sensitive_description_html: I contenuti nei post segnalati saranno segnati come sensibili e verrà registrata una sanzione per aiutarti a prendere ulteriori provvedimenti sulle future infrazioni dello stesso account. mark_as_sensitive_description_html: I contenuti nei post segnalati saranno segnati come sensibili e verrà registrata una sanzione per aiutarti a prendere ulteriori provvedimenti sulle future infrazioni dello stesso account.
other_description_html: Vedi altre opzioni per controllare il comportamento dell'account e personalizzare la comunicazione all'account segnalato. other_description_html: Vedi altre opzioni per controllare il comportamento dell'account e personalizzare la comunicazione all'account segnalato.
resolve_description_html: Nessuna azione sarà intrapresa contro l'account segnalato, nessuna sanzione registrata, e la segnalazione sarà chiusa. resolve_description_html: Nessuna azione sarà intrapresa contro l'account segnalato, nessuna sanzione registrata, e la segnalazione sarà chiusa.
silence_description_html: L'account sarà visibile solo a coloro che lo seguono o lo cercano manualmente, limitandone fortemente la raggiungibilità. Può sempre essere annullato. Chiude tutte le segnalazioni contro questo account. silence_description_html: L'account sarà visibile solo a coloro che già lo seguono o lo cercano manualmente, limitandone fortemente la sua visibilità. Può sempre essere annullato. Chiude tutte le segnalazioni contro questo account.
suspend_description_html: L'account e tutti i suoi contenuti saranno inaccessibili ed eventualmente cancellati, e interagire con esso sarà impossibile. Reversibile entro 30 giorni. Chiude tutte le segnalazioni contro questo account. suspend_description_html: L'account e tutti i suoi contenuti saranno inaccessibili ed eventualmente cancellati, e interagire con esso sarà impossibile. Reversibile entro 30 giorni. Chiude tutte le segnalazioni contro questo account.
actions_description_html: Decidi quale azione intraprendere per risolvere questa segnalazione. Se intraprendi un'azione punitiva nei confronti dell'account segnalato, gli verrà inviata una notifica via e-mail, tranne quando è selezionata la categoria <strong>Spam</strong>. actions_description_html: Decidi quale azione intraprendere per risolvere questa segnalazione. Se intraprendi un'azione punitiva nei confronti dell'account segnalato, gli verrà inviata una notifica via e-mail, tranne quando è selezionata la categoria <strong>Spam</strong>.
actions_description_remote_html: Decide quali azioni intraprendere per risolvere la relazione. Questo influenzerà solo come <strong>il tuo</strong> server comunica con questo account remoto e ne gestisce il contenuto. actions_description_remote_html: Decide quali azioni intraprendere per risolvere la relazione. Questo influenzerà solo come <strong>il tuo</strong> server comunica con questo account remoto e ne gestisce il contenuto.
@ -812,7 +813,7 @@ it:
actions: actions:
delete_html: Rimuovi i post offensivi delete_html: Rimuovi i post offensivi
mark_as_sensitive_html: Contrassegna i file multimediali dei post offensivi come sensibili mark_as_sensitive_html: Contrassegna i file multimediali dei post offensivi come sensibili
silence_html: Limita severamente la portata di <strong>@%{acct}</strong> rendendo il suo profilo e il suo contenuto visibili solo a persone che già li seguono o che lo guardano manualmente silence_html: Limita fortemente la visibilità di <strong>@%{acct}</strong> rendendo il suo profilo e i suoi contenuti visibili solo alle persone che già lo seguono o che cercano manualmente il suo profilo
suspend_html: Sospendere <strong>@%{acct}</strong>, rendendo il suo profilo e i suoi contenuti inaccessibili e impossibilitandone l'interazione suspend_html: Sospendere <strong>@%{acct}</strong>, rendendo il suo profilo e i suoi contenuti inaccessibili e impossibilitandone l'interazione
close_report: 'Contrassegna la segnalazione #%{id} come risolta' close_report: 'Contrassegna la segnalazione #%{id} come risolta'
close_reports_html: Contrassegna <strong>tutte</strong> le segnalazioni contro <strong>@%{acct}</strong> come risolte close_reports_html: Contrassegna <strong>tutte</strong> le segnalazioni contro <strong>@%{acct}</strong> come risolte
@ -971,7 +972,7 @@ it:
warning_hint: Ti consigliamo di utilizzare “Approvazione richiesta per la registrazione” a meno che tu non sia sicuro che il tuo team di moderazione possa gestire lo spam e le registrazioni dannose in modo tempestivo. warning_hint: Ti consigliamo di utilizzare “Approvazione richiesta per la registrazione” a meno che tu non sia sicuro che il tuo team di moderazione possa gestire lo spam e le registrazioni dannose in modo tempestivo.
security: security:
authorized_fetch: Richiede l'autenticazione dai server federati authorized_fetch: Richiede l'autenticazione dai server federati
authorized_fetch_hint: La richiesta di autenticazione da server federati consente un'applicazione più rigorosa dei blocchi sia a livello di utente che a livello di server. Tuttavia, ciò comporta una riduzione delle prestazioni, riduce la portata delle tue risposte e potrebbe introdurre problemi di compatibilità con alcuni servizi federati. Inoltre, ciò non impedirà agli attori dedicati di recuperare i tuoi post pubblici e account. authorized_fetch_hint: Richiedere l'autenticazione da server federati consente un'applicazione più rigorosa dei blocchi sia a livello utente che a livello server. Tuttavia, ciò comporta un calo delle prestazioni, riduce la visibilità delle tue risposte e potrebbe causare problemi di compatibilità con alcuni servizi federati. Inoltre, questo non impedirà ad attori dedicati di accedere ai tuoi post e account pubblici.
authorized_fetch_overridden_hint: Al momento non puoi modificare questa impostazione perché è sostituita da una variabile di ambiente. authorized_fetch_overridden_hint: Al momento non puoi modificare questa impostazione perché è sostituita da una variabile di ambiente.
federation_authentication: Applicazione dell'autenticazione della federazione federation_authentication: Applicazione dell'autenticazione della federazione
title: Impostazioni del server title: Impostazioni del server
@ -1923,11 +1924,11 @@ it:
hint_html: "<strong>Personalizza il modo in cui vuoi che il tuo profilo e i tuoi post vengano trovati.</strong> Una varietà di funzionalità in Mastodon possono aiutarti a raggiungere un pubblico più ampio se abilitato. Prenditi un momento per rivedere queste impostazioni per assicurarti che si adattino al tuo caso d'uso." hint_html: "<strong>Personalizza il modo in cui vuoi che il tuo profilo e i tuoi post vengano trovati.</strong> Una varietà di funzionalità in Mastodon possono aiutarti a raggiungere un pubblico più ampio se abilitato. Prenditi un momento per rivedere queste impostazioni per assicurarti che si adattino al tuo caso d'uso."
privacy: Privacy privacy: Privacy
privacy_hint_html: Controlla quanto tu voglia mostrare a beneficio degli altri. Le persone scoprono profili interessanti e app fantastiche sfogliando il seguito di altre persone e vedendo da quali app pubblichino, ma potresti preferire tenerlo nascosto. privacy_hint_html: Controlla quanto tu voglia mostrare a beneficio degli altri. Le persone scoprono profili interessanti e app fantastiche sfogliando il seguito di altre persone e vedendo da quali app pubblichino, ma potresti preferire tenerlo nascosto.
reach: Copertura reach: Visibilità
reach_hint_html: Controlla se vuoi essere scoperto e seguito da nuove persone. Vuoi che i tuoi post vengano visualizzati nella schermata Esplora? Vuoi che altre persone ti vedano tra i loro consigli di utenti da seguire? Vuoi accettare automaticamente tutti i nuovi follower o avere un controllo granulare su ciascuno di essi? reach_hint_html: Controlla se vuoi essere scoperto e seguito da nuove persone. Vuoi che i tuoi post vengano visualizzati nella schermata Esplora? Vuoi che altre persone ti vedano tra i loro consigli di utenti da seguire? Vuoi accettare automaticamente tutti i nuovi follower o avere un controllo granulare su ciascuno di essi?
search: Cerca search: Cerca
search_hint_html: Controlla come vuoi essere trovato. Vuoi che le persone ti trovino in base a ciò che hai postato pubblicamente? Vuoi che le persone al di fuori di Mastodon trovino il tuo profilo durante la ricerca sul web? Si prega di notare che l'esclusione totale da tutti i motori di ricerca non può essere garantita per le informazioni pubbliche. search_hint_html: Controlla come vuoi essere trovato. Vuoi che le persone ti trovino in base a ciò che hai postato pubblicamente? Vuoi che le persone al di fuori di Mastodon trovino il tuo profilo durante la ricerca sul web? Si prega di notare che l'esclusione totale da tutti i motori di ricerca non può essere garantita per le informazioni pubbliche.
title: Privacy e copertura title: Privacy e visibilità
privacy_policy: privacy_policy:
title: Informativa sulla privacy title: Informativa sulla privacy
reactions: reactions:
@ -2107,7 +2108,7 @@ it:
unlisted_long: Nascosto dai risultati di ricerca di Mastodon, dalle tendenze e dalle timeline pubbliche unlisted_long: Nascosto dai risultati di ricerca di Mastodon, dalle tendenze e dalle timeline pubbliche
statuses_cleanup: statuses_cleanup:
enabled: Cancella automaticamente i vecchi post enabled: Cancella automaticamente i vecchi post
enabled_hint: Cancella automaticamente i tuoi post quando diventano più vecchi di una soglia di età specificata, a meno che non corrispondano a una delle eccezioni sotto enabled_hint: Cancella automaticamente i tuoi post una volta raggiunta una soglia di età specificata, a meno che non corrispondano a una delle eccezioni sotto
exceptions: Eccezioni exceptions: Eccezioni
explanation: L'eliminazione automatica viene eseguita con bassa priorità. Potrebbe verificarsi un ritardo tra il raggiungimento della soglia di età e la rimozione. explanation: L'eliminazione automatica viene eseguita con bassa priorità. Potrebbe verificarsi un ritardo tra il raggiungimento della soglia di età e la rimozione.
ignore_favs: Ignora preferiti ignore_favs: Ignora preferiti

View File

@ -349,6 +349,7 @@ nl:
back_to_report: Terug naar de rapportagepagina back_to_report: Terug naar de rapportagepagina
batch: batch:
add_to_report: 'Aan rapportage #%{id} toevoegen' add_to_report: 'Aan rapportage #%{id} toevoegen'
remove_from_report: Uit de rapportage verwijderen
report: Rapportage report: Rapportage
collection_title: Verzameling van %{name} collection_title: Verzameling van %{name}
contents: Inhoud contents: Inhoud
@ -557,10 +558,10 @@ nl:
enable_feature: Functionaliteit inschakelen enable_feature: Functionaliteit inschakelen
important_information: Belangrijke informatie important_information: Belangrijke informatie
list: list:
1_permission_explanation: Wanneer deze functie is ingeschakeld, kunnen klanten met de bijbehorende machtigingen een e-mailverzamelformulier toevoegen aan hun profielen. 1_permission_explanation: Wanneer deze functionaliteit is ingeschakeld, kunnen accounts met de bijbehorende rechten een e-mailaanmeldformulier aan hun profiel toevoegen.
2_feature_explanation: Wanneer bezoekers zich aanmelden op een accountprofielpagina en hun abonnement bevestigen, zullen zij e-mail updates ontvangen wanneer het account nieuwe openbare berichten aanmaakt. 2_feature_explanation: Wanneer bezoekers zich op een accountprofiel aanmelden en hun abonnement bevestigen, zullen zij e-mailupdates ontvangen wanneer het account nieuwe openbare berichten plaatst.
3_privacy_policy_warning: Serverbeheerders hebben toegang tot verzamelde PII (e-mailadressen). Daarom moeten het privacybeleid en de Servicevoorwaarden voor de server worden bijgewerkt voordat deze functie wordt gebruikt. 3_privacy_policy_warning: Serverbeheerders hebben toegang tot verzamelde Persoonlijk Identificeerbare Informatie (e-mailadressen). Daarom moeten voordat deze functioniteit wordt gebruikt het privacybeleid en de gebruiksvoorwaarden voor de server worden bijgewerkt.
4_cost_warning: E-mails kunnen kosten in rekening brengen, afhankelijk van de hosting-installatie. Overleg met uw hostingprovider voordat u deze optie inschakelt, omdat deze het aantal e-mails van uw server drastisch kan verhogen. 4_cost_warning: E-mails kunnen, afhankelijk van de gebruikte hosting, kosten met zich meebrengen. Overleg met je hostingprovider voordat je dit inschakelt, omdat deze functionaliteit het aantal e-mails van je server drastisch kan verhogen.
export_domain_allows: export_domain_allows:
new: new:
title: Toegestane domeinen importeren title: Toegestane domeinen importeren
@ -866,7 +867,7 @@ nl:
manage_custom_emojis: Lokale emoji's beheren manage_custom_emojis: Lokale emoji's beheren
manage_custom_emojis_description: Staat gebruikers toe om lokale emoji's op de server te beheren manage_custom_emojis_description: Staat gebruikers toe om lokale emoji's op de server te beheren
manage_email_subscriptions: E-mailabonnementen beheren manage_email_subscriptions: E-mailabonnementen beheren
manage_email_subscriptions_description: Gebruikers met deze machtiging toestaan om de nieuwsbrieffunctie per e-mail voor hun account in te schakelen manage_email_subscriptions_description: Gebruikers met deze rechten toestaan om e-mailnieuwsbrieven voor hun account in te schakelen
manage_federation: Federatie beheren manage_federation: Federatie beheren
manage_federation_description: Staat gebruikers toe om federatie met andere domeinen te blokkeren of toe te staan en om de bezorging te bepalen manage_federation_description: Staat gebruikers toe om federatie met andere domeinen te blokkeren of toe te staan en om de bezorging te bepalen
manage_invites: Uitnodigingen beheren manage_invites: Uitnodigingen beheren

View File

@ -349,6 +349,7 @@ pt-BR:
back_to_report: Voltar à página de denúncia back_to_report: Voltar à página de denúncia
batch: batch:
add_to_report: 'Adicionar à denúncia #%{id}' add_to_report: 'Adicionar à denúncia #%{id}'
remove_from_report: Remover da denúncia
report: Denunciar report: Denunciar
collection_title: Coleção de %{name} collection_title: Coleção de %{name}
contents: Conteúdo contents: Conteúdo
@ -548,6 +549,19 @@ pt-BR:
empty: empty:
hint: Ninguém ter permissão para usar este recurso. hint: Ninguém ter permissão para usar este recurso.
no_roles_added: Nenhuma função adicionada no_roles_added: Nenhuma função adicionada
lead: As contas com os seguintes cargos podem ativar este recurso em seus perfis.
manage_roles: Gerenciar cargos
role_name: Nome do cargo
title: Cargos
setups:
show:
enable_feature: Ativar recurso
important_information: Informações importantes
list:
1_permission_explanation: Assim que este recurso for ativado, as contas com as permissões designadas podem adicionar um formulário de coleção de e-mails em seus perfis.
2_feature_explanation: Quando os visitantes registrarem no perfil da conta e confirmarem a assinatura, eles receberam atualizações por e-mail caso a conta publique.
3_privacy_policy_warning: Admins do servidor terão acesso aos PII (e-mails) coletados. Como tal, a política de privacidade e termos de serviço do servidor deve ser atualizada antes de usar este recurso.
4_cost_warning: Os e-mails talvez sofram uma taxa dependendo da hospedagem. Entre em contato com o hóspede antes de ativá-lo, já que este recurso talvez aumente drasticamente a quantidade de e-mails enviados ao servidor.
export_domain_allows: export_domain_allows:
new: new:
title: Importar domínios permitidos title: Importar domínios permitidos
@ -853,6 +867,7 @@ pt-BR:
manage_custom_emojis: Gerenciar Emojis Personalizados manage_custom_emojis: Gerenciar Emojis Personalizados
manage_custom_emojis_description: Permite aos usuários gerenciar emojis personalizados no servidor manage_custom_emojis_description: Permite aos usuários gerenciar emojis personalizados no servidor
manage_email_subscriptions: Gerenciar assinaturas do e-mail manage_email_subscriptions: Gerenciar assinaturas do e-mail
manage_email_subscriptions_description: Permitir usuários com esta permissão de ativar o recurso de e-mails de novidades na conta deles
manage_federation: Gerenciar Federação manage_federation: Gerenciar Federação
manage_federation_description: Permite aos usuários bloquear ou permitir federação com outros domínios e controlar a entregabilidade manage_federation_description: Permite aos usuários bloquear ou permitir federação com outros domínios e controlar a entregabilidade
manage_invites: Gerenciar convites manage_invites: Gerenciar convites

View File

@ -3,8 +3,8 @@ el:
simple_form: simple_form:
hints: hints:
account: account:
attribution_domains: Μία ανά γραμμή. Προστατεύει από ψευδείς ιδιότητες. attribution_domains: Μία ανά γραμμή. Προστατεύει από ψευδείς αναφορές συντάκτη.
discoverable: Μπορεί να αναδειχθείτε σε συλλογές που δημιουργήθηκαν από άλλους χρήστες. Εσείς και οι δημόσιες αναρτήσεις σας μπορεί επίσης να προτείνονται στους χρήστες σε άλλες εμπειρίες ανακάλυψης σε όλη το Mastodon. discoverable: Μπορεί να αναδειχθείς σε συλλογές που δημιουργήθηκαν από άλλους χρήστες. Εσύ και οι δημόσιες αναρτήσεις σου μπορεί επίσης να προτείνονται στους χρήστες σε άλλες εμπειρίες ανακάλυψης σε όλο το Mastodon.
display_name: Το πλήρες ή το αστείο σου όνομα. display_name: Το πλήρες ή το αστείο σου όνομα.
fields: Η αρχική σου σελίδα, αντωνυμίες, ηλικία, ό,τι θες. fields: Η αρχική σου σελίδα, αντωνυμίες, ηλικία, ό,τι θες.
indexable: Οι δημόσιες αναρτήσεις σου μπορεί να εμφανιστούν στα αποτελέσματα αναζήτησης στο Mastodon. Άτομα που έχουν αλληλεπιδράσει με τις αναρτήσεις σου μπορεί να είναι σε θέση να τις αναζητήσουν όπως και να 'χει. indexable: Οι δημόσιες αναρτήσεις σου μπορεί να εμφανιστούν στα αποτελέσματα αναζήτησης στο Mastodon. Άτομα που έχουν αλληλεπιδράσει με τις αναρτήσεις σου μπορεί να είναι σε θέση να τις αναζητήσουν όπως και να 'χει.
@ -179,7 +179,7 @@ el:
url: Πού θα σταλούν τα γεγονότα url: Πού θα σταλούν τα γεγονότα
labels: labels:
account: account:
attribution_domains: Ιστοσελίδες που επιτρέπεται να σας αναφέρουν attribution_domains: Ιστοσελίδες που επιτρέπεται να σε αναφέρουν
discoverable: Ανάδειξέ με σε εμπειρίες ανακάλυψης discoverable: Ανάδειξέ με σε εμπειρίες ανακάλυψης
fields: fields:
name: Ετικέτα name: Ετικέτα

View File

@ -92,6 +92,7 @@ fi:
closed_registrations_message: Näkyy, kun rekisteröityminen on suljettu closed_registrations_message: Näkyy, kun rekisteröityminen on suljettu
content_cache_retention_period: Kaikki muiden palvelinten julkaisut (mukaan lukien tehostukset ja vastaukset) poistuvat, kun määritetty määrä päiviä on kulunut, lukuun ottamatta paikallisen käyttäjän vuorovaikutusta näiden julkaisujen kanssa. Tämä sisältää julkaisut, jotka paikallinen käyttäjä on merkinnyt kirjanmerkiksi tai suosikiksi. Myös yksityismaininnat eri palvelinten käyttäjien välillä menetetään, eikä niitä voi palauttaa. Tämä asetus on tarkoitettu käytettäväksi erityistapauksissa ja rikkoo monia käyttäjien odotuksia, kun sitä sovelletaan yleiskäyttöön. content_cache_retention_period: Kaikki muiden palvelinten julkaisut (mukaan lukien tehostukset ja vastaukset) poistuvat, kun määritetty määrä päiviä on kulunut, lukuun ottamatta paikallisen käyttäjän vuorovaikutusta näiden julkaisujen kanssa. Tämä sisältää julkaisut, jotka paikallinen käyttäjä on merkinnyt kirjanmerkiksi tai suosikiksi. Myös yksityismaininnat eri palvelinten käyttäjien välillä menetetään, eikä niitä voi palauttaa. Tämä asetus on tarkoitettu käytettäväksi erityistapauksissa ja rikkoo monia käyttäjien odotuksia, kun sitä sovelletaan yleiskäyttöön.
custom_css: Voit käyttää mukautettuja tyylejä Mastodonin selainversiossa. custom_css: Voit käyttää mukautettuja tyylejä Mastodonin selainversiossa.
email_footer_text: Valinnainen teksti, joka näkyy vain uutiskirjeiden alatunnisteessa.
favicon: WEBP, PNG, GIF tai JPG. Korvaa oletusarvoisen Mastodonin sivustokuvakkeen haluamallasi kuvakkeella. favicon: WEBP, PNG, GIF tai JPG. Korvaa oletusarvoisen Mastodonin sivustokuvakkeen haluamallasi kuvakkeella.
landing_page: Valitsee, minkä sivun uudet kävijät näkevät saapuessaan palvelimellesi. Jos valitset ”Trendit”, trendien tulee olla käytössä Löydettävyys-asetuksissa. Jos valitset ”Paikallinen syöte”, kohta ”Pääsy paikallisia julkaisuja esitteleviin livesyötteisiin” tulee asettaa arvoon ”Kaikki” Löydettävyys-asetuksissa. landing_page: Valitsee, minkä sivun uudet kävijät näkevät saapuessaan palvelimellesi. Jos valitset ”Trendit”, trendien tulee olla käytössä Löydettävyys-asetuksissa. Jos valitset ”Paikallinen syöte”, kohta ”Pääsy paikallisia julkaisuja esitteleviin livesyötteisiin” tulee asettaa arvoon ”Kaikki” Löydettävyys-asetuksissa.
mascot: Korvaa kuvituksen edistyneessä selainkäyttöliittymässä. mascot: Korvaa kuvituksen edistyneessä selainkäyttöliittymässä.
@ -323,6 +324,9 @@ fi:
trendable_by_default: Salli trendit ilman ennakkotarkastusta trendable_by_default: Salli trendit ilman ennakkotarkastusta
trends: Ota trendit käyttöön trends: Ota trendit käyttöön
wrapstodon: Ota Wrapstodon käyttöön wrapstodon: Ota Wrapstodon käyttöön
form_email_subscriptions_confirmation:
agreement_email_volume: Ymmärrän, että tämän ominaisuuden käyttöönotto voi kasvattaa palvelimelta lähetettävän sähköpostin määrää merkittävästi ja että olen yksin vastuussa siitä aiheutuvista kustannuksista.
agreement_privacy_and_terms: Olen päivittänyt tietosuojakäytännön ja käyttöehdot.
interactions: interactions:
must_be_follower: Estä ilmoitukset käyttäjiltä, jotka eivät seuraa sinua must_be_follower: Estä ilmoitukset käyttäjiltä, jotka eivät seuraa sinua
must_be_following: Estä ilmoitukset käyttäjiltä, joita et seuraa must_be_following: Estä ilmoitukset käyttäjiltä, joita et seuraa

View File

@ -325,7 +325,7 @@ nl:
trends: Trends inschakelen trends: Trends inschakelen
wrapstodon: Wrapstodon inschakelen wrapstodon: Wrapstodon inschakelen
form_email_subscriptions_confirmation: form_email_subscriptions_confirmation:
agreement_email_volume: Ik begrijp dat het inschakelen van deze functie de hoeveelheid e-mails die van de server wordt verzonden aanzienlijk kan verhogen en dat ik alleen verantwoordelijk ben voor alle gemaakte kosten. agreement_email_volume: Ik begrijp dat het inschakelen van deze functionaliteit de hoeveelheid e-mails die door de server wordt verzonden aanzienlijk kan verhogen en dat ik alleen verantwoordelijk ben voor alle gemaakte kosten.
agreement_privacy_and_terms: Ik heb het Privacybeleid en de Gebruiksvoorwaarden bijgewerkt. agreement_privacy_and_terms: Ik heb het Privacybeleid en de Gebruiksvoorwaarden bijgewerkt.
interactions: interactions:
must_be_follower: Meldingen van mensen die jou niet volgen blokkeren must_be_follower: Meldingen van mensen die jou niet volgen blokkeren

View File

@ -349,6 +349,7 @@ sq:
back_to_report: Mbrapsht te faqja e raportimit back_to_report: Mbrapsht te faqja e raportimit
batch: batch:
add_to_report: 'Shtoje te raportimi #%{id}' add_to_report: 'Shtoje te raportimi #%{id}'
remove_from_report: Hiqe nga raportimi
report: Raportim report: Raportim
collection_title: Koleksion nga %{name} collection_title: Koleksion nga %{name}
contents: Lëndë contents: Lëndë

View File

@ -345,12 +345,19 @@ sv:
updated_msg: Kungörelsen uppdaterades! updated_msg: Kungörelsen uppdaterades!
collections: collections:
accounts: Konton accounts: Konton
back_to_account: Tillbaka till kontosidan
back_to_report: Tillbaka till rapportsidan
batch:
add_to_report: 'Lägg till i rapport #%{id}'
report: Rapportera
collection_title: Samling av %{name} collection_title: Samling av %{name}
contents: Innehåll contents: Innehåll
no_collection_selected: Inga samlingar ändrades eftersom inga valdes
number_of_accounts: number_of_accounts:
one: 1 konto one: 1 konto
other: "%{count} konton" other: "%{count} konton"
open: Öppna open: Öppna
title: Kontosamlingar - @%{name}
view_publicly: Visa offentligt view_publicly: Visa offentligt
critical_update_pending: Kritisk uppdatering väntar critical_update_pending: Kritisk uppdatering väntar
custom_emojis: custom_emojis:

View File

@ -349,6 +349,7 @@ tr:
back_to_report: Bildirim sayfasına geri dön back_to_report: Bildirim sayfasına geri dön
batch: batch:
add_to_report: "#%{id} raporuna ekle" add_to_report: "#%{id} raporuna ekle"
remove_from_report: Bildirimden kaldır
report: Bildirim report: Bildirim
collection_title: "%{name} koleksiyonu" collection_title: "%{name} koleksiyonu"
contents: İçerikler contents: İçerikler

View File

@ -345,6 +345,7 @@ vi:
back_to_report: Quay lại trang báo cáo back_to_report: Quay lại trang báo cáo
batch: batch:
add_to_report: 'Thêm vào báo cáo #%{id}' add_to_report: 'Thêm vào báo cáo #%{id}'
remove_from_report: Xóa khỏi báo cáo
report: Báo cáo report: Báo cáo
collection_title: Gói khởi đầu bởi %{name} collection_title: Gói khởi đầu bởi %{name}
contents: Nội dung contents: Nội dung

View File

@ -345,6 +345,7 @@ zh-CN:
back_to_report: 返回举报页 back_to_report: 返回举报页
batch: batch:
add_to_report: '添加到举报 #%{id}' add_to_report: '添加到举报 #%{id}'
remove_from_report: 从举报中移除
report: 举报 report: 举报
collection_title: "%{name} 的收藏列表" collection_title: "%{name} 的收藏列表"
contents: 内容 contents: 内容

View File

@ -345,6 +345,7 @@ zh-TW:
back_to_report: 回到檢舉報告頁面 back_to_report: 回到檢舉報告頁面
batch: batch:
add_to_report: '新增至報告 #%{id}' add_to_report: '新增至報告 #%{id}'
remove_from_report: 自檢舉報告中移除
report: 檢舉 report: 檢舉
collection_title: "%{name} 的收藏名單" collection_title: "%{name} 的收藏名單"
contents: 內容 contents: 內容

View File

@ -29,6 +29,7 @@ namespace :api, format: false do
resources :reblogged_by, controller: :reblogged_by_accounts, only: :index resources :reblogged_by, controller: :reblogged_by_accounts, only: :index
resources :favourited_by, controller: :favourited_by_accounts, only: :index resources :favourited_by, controller: :favourited_by_accounts, only: :index
resource :reblog, only: :create resource :reblog, only: :create
resource :context, only: :show
post :unreblog, to: 'reblogs#destroy' post :unreblog, to: 'reblogs#destroy'
resources :quotes, only: :index do resources :quotes, only: :index do
@ -56,10 +57,6 @@ namespace :api, format: false do
post :translate, to: 'translations#create' post :translate, to: 'translations#create'
end end
member do
get :context
end
end end
namespace :timelines do namespace :timelines do

View File

@ -1,26 +0,0 @@
import type { Plugin } from 'vite';
export function MastodonEmojiCompressed(): Plugin {
const virtualModuleId = 'virtual:mastodon-emoji-compressed';
const resolvedVirtualModuleId = '\0' + virtualModuleId;
return {
name: 'mastodon-emoji-compressed',
resolveId(id) {
if (id === virtualModuleId) {
return resolvedVirtualModuleId;
}
return undefined;
},
async load(id) {
if (id === resolvedVirtualModuleId) {
const { default: emojiCompressed } =
await import('../../app/javascript/mastodon/features/emoji/emoji_compressed.mjs');
return `export default ${JSON.stringify(emojiCompressed)};`;
}
return undefined;
},
};
}

View File

@ -64,7 +64,7 @@ namespace :emojis do
codes = [] codes = []
dest = Rails.root.join('app', 'javascript', 'mastodon', 'features', 'emoji', 'emoji_map.json') dest = Rails.root.join('app', 'javascript', 'mastodon', 'features', 'emoji', 'emoji_map.json')
puts "Downloading emojos from source... (#{source})" puts "Downloading emojis from source... (#{source})"
HTTP.get(source).to_s.split("\n").each do |line| HTTP.get(source).to_s.split("\n").each do |line|
next if line.start_with? '#' next if line.start_with? '#'
@ -72,11 +72,13 @@ namespace :emojis do
parts = line.split(';').map(&:strip) parts = line.split(';').map(&:strip)
next if parts.size < 2 next if parts.size < 2
codes << [parts[0], parts[1].start_with?('fully-qualified')] codes << [parts[0], parts[1].split.first]
end end
grouped_codes = codes.reduce([]) do |agg, current| grouped_codes = codes.reduce([]) do |agg, current|
if current[1] qualification = current[1]
if qualification == 'fully-qualified' || qualification == 'component' || agg.empty?
agg << [current[0]] agg << [current[0]]
else else
agg.last << current[0] agg.last << current[0]
@ -100,7 +102,7 @@ namespace :emojis do
map = map.sort { |a, b| a[0].size <=> b[0].size }.to_h map = map.sort { |a, b| a[0].size <=> b[0].size }.to_h
File.write(dest, JSON.dump(map)) File.write(dest, JSON.dump(map))
puts "Wrote emojo to destination! (#{dest})" puts "Wrote emoji to destination! (#{dest})"
end end
desc 'Generate emoji variants with white borders' desc 'Generate emoji variants with white borders'

View File

@ -1,7 +0,0 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-2 -2 40 40" style="background: black;">
<g>
<path d="M24 26.799v-2.566c2-1.348 4.08-3.779 4.703-6.896.186.103.206.17.413.17.991 0 1.709-1.287 1.709-2.873 0-1.562-.823-2.827-1.794-2.865.187-.674.293-1.577.293-2.735C29.324 5.168 26 .527 18.541.527c-6.629 0-10.777 4.641-10.777 8.507 0 1.123.069 2.043.188 2.755-.911.137-1.629 1.352-1.629 2.845 0 1.587.804 2.873 1.796 2.873.206 0 .025-.067.209-.17C8.952 20.453 11 22.885 13 24.232v2.414c-5 .645-12 3.437-12 6.23v1.061C1 35 2.076 35 3.137 35h29.725C33.924 35 35 35 35 33.938v-1.061c0-2.615-6-5.225-11-6.078z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
</g>
<path fill="#269" d="M24 26.799v-2.566c2-1.348 4.08-3.779 4.703-6.896.186.103.206.17.413.17.991 0 1.709-1.287 1.709-2.873 0-1.562-.823-2.827-1.794-2.865.187-.674.293-1.577.293-2.735C29.324 5.168 26 .527 18.541.527c-6.629 0-10.777 4.641-10.777 8.507 0 1.123.069 2.043.188 2.755-.911.137-1.629 1.352-1.629 2.845 0 1.587.804 2.873 1.796 2.873.206 0 .025-.067.209-.17C8.952 20.453 11 22.885 13 24.232v2.414c-5 .645-12 3.437-12 6.23v1.061C1 35 2.076 35 3.137 35h29.725C33.924 35 35 35 35 33.938v-1.061c0-2.615-6-5.225-11-6.078z"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -1,9 +0,0 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-2 -2 40 40" style="background: black;">
<g>
<path d="M29 20.729v-1.963c1-1.03 2.914-2.89 3.391-5.273.142.079.055.13.213.13.758 0 1.256-.983 1.256-2.197 0-1.194-.656-2.161-1.399-2.191.143-.516.212-1.206.212-2.092 0-2.956-2.549-6.505-8.253-6.505-5.068 0-8.244 3.549-8.244 6.505 0 .858.051 1.562.142 2.107-.697.105-1.247 1.033-1.247 2.175 0 1.214.614 2.197 1.373 2.197.157 0-.069-.051.072-.13.477 2.384 2.484 4.243 3.484 5.274v1.847c-4 .492-7 2.628-7 4.765v.81c0 .812.823.812 1.634.812h18.73c.813 0 1.636 0 1.636-.812v-.81c0-2.001-3-3.997-6-4.649z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M17 28.729v-1.963c1-1.03 2.914-2.89 3.391-5.273.142.079.055.13.213.13.758 0 1.256-.983 1.256-2.197 0-1.194-.656-2.161-1.399-2.191.143-.516.212-1.206.212-2.092 0-2.956-2.549-6.505-8.253-6.505-5.069 0-8.244 3.549-8.244 6.505 0 .858.051 1.562.142 2.107-.697.105-1.247 1.033-1.247 2.175 0 1.214.614 2.197 1.373 2.197.157 0-.069-.051.072-.13C4.993 23.876 7 25.735 8 26.766v1.847c-4 .492-7 2.628-7 4.765v.811C1 35 1.823 35 2.634 35h18.73c.813 0 1.636 0 1.636-.812v-.811c0-2-3-3.996-6-4.648z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
</g>
<path fill="#55ACEE" d="M29 20.729v-1.963c1-1.03 2.914-2.89 3.391-5.273.142.079.055.13.213.13.758 0 1.256-.983 1.256-2.197 0-1.194-.656-2.161-1.399-2.191.143-.516.212-1.206.212-2.092 0-2.956-2.549-6.505-8.253-6.505-5.068 0-8.244 3.549-8.244 6.505 0 .858.051 1.562.142 2.107-.697.105-1.247 1.033-1.247 2.175 0 1.214.614 2.197 1.373 2.197.157 0-.069-.051.072-.13.477 2.384 2.484 4.243 3.484 5.274v1.847c-4 .492-7 2.628-7 4.765v.81c0 .812.823.812 1.634.812h18.73c.813 0 1.636 0 1.636-.812v-.81c0-2.001-3-3.997-6-4.649z"/>
<path fill="#269" d="M17 28.729v-1.963c1-1.03 2.914-2.89 3.391-5.273.142.079.055.13.213.13.758 0 1.256-.983 1.256-2.197 0-1.194-.656-2.161-1.399-2.191.143-.516.212-1.206.212-2.092 0-2.956-2.549-6.505-8.253-6.505-5.069 0-8.244 3.549-8.244 6.505 0 .858.051 1.562.142 2.107-.697.105-1.247 1.033-1.247 2.175 0 1.214.614 2.197 1.373 2.197.157 0-.069-.051.072-.13C4.993 23.876 7 25.735 8 26.766v1.847c-4 .492-7 2.628-7 4.765v.811C1 35 1.823 35 2.634 35h18.73c.813 0 1.636 0 1.636-.812v-.811c0-2-3-3.996-6-4.648z"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -1,27 +0,0 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-2 -2 40 40" style="background: black;">
<g>
<path d="M28 36v-2.5c0-3.313-1.687-5.5-5-5.5H13c-3.313 0-5 2.187-5 5.5V36h20z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M27 6c0-3.3-2.7-6-6-6h-6c-3.3 0-6 2.7-6 6v12c0 4.971 4.029 5 9 5s9-.029 9-5V6z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M18 18H9.679s-.016 1.731.01 2.844c.06 2.517.342 5.496 1.539 5.496 1.594 0 3.616-1.549 6.715-1.549 3.099 0 5.166 1.549 6.715 1.549 1.293 0 1.506-1.09 1.542-5.345.008-.846.009-2.995.009-2.995H18z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M24.94 18.883c0-.298-.013-.592-.035-.883H10.983c-.022.291-.035.585-.035.883 0 3.545 1.598 6.483 3.915 7.881v1.749c1.249.907 2.041 1.153 3.124 1.153 1.083 0 1.874-.246 3.124-1.153v-1.799c2.27-1.418 3.829-4.329 3.829-7.831z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M17.944 25.551c-1.368 0-2.084-.676-2.161-.754-.228-.228-.228-.597 0-.824.226-.225.59-.227.819-.006.03.027.47.418 1.342.418.885 0 1.325-.402 1.344-.419.232-.218.599-.211.821.017.221.229.221.589-.003.814-.078.077-.794.754-2.162.754z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M15.17 20.731h-.137c-.358 0-.652-.293-.652-.652v-.858c0-.358.293-.652.652-.652h.137c.358 0 .652.293.652.652v.858c0 .359-.293.652-.652.652zm5.764 0h-.137c-.358 0-.652-.293-.652-.652v-.858c0-.358.293-.652.652-.652h.137c.358 0 .652.293.652.652v.858c0 .359-.293.652-.652.652z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M18.679 22.958h-1.391c-.212 0-.385-.173-.385-.385v-.081c0-.212.173-.385.385-.385h1.391c.212 0 .385.173.385.385v.081c0 .212-.173.385-.385.385z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M13.578 29.492l-4.653.737c-.272.043-.529-.144-.572-.416l-.156-.988c-.043-.272.144-.529.416-.572l4.653-.737c.272-.043.529.144.572.416l.156.988c.043.271-.144.529-.416.572zm8.87 0l4.653.737c.272.043.529-.144.572-.416l.156-.988c.043-.272-.144-.529-.416-.572l-4.653-.737c-.272-.043-.529.144-.572.416l-.156.988c-.043.271.144.529.416.572z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M11.875 18s-.174 9 6.113 9 6.137-9 6.137-9H25s-.307 10-7 10-7-10-7-10h.875z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M17.5 30h1v6h-1z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M21.13 26.971c0 1.459-2.071 2.022-3.13 2.022-1 0-3.13-.563-3.13-2.022 0 0-.574-.117-.574 1.096 0 1.214 1.704 2.778 3.704 2.778 1.956 0 3.704-1.564 3.704-2.778 0-1.213-.574-1.096-.574-1.096z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
</g>
<path fill="#DD2E44" d="M28 36v-2.5c0-3.313-1.687-5.5-5-5.5H13c-3.313 0-5 2.187-5 5.5V36h20z"/>
<path fill="#292F33" d="M27 6c0-3.3-2.7-6-6-6h-6c-3.3 0-6 2.7-6 6v12c0 4.971 4.029 5 9 5s9-.029 9-5V6z"/>
<path fill="#292F33" d="M18 18H9.679s-.016 1.731.01 2.844c.06 2.517.342 5.496 1.539 5.496 1.594 0 3.616-1.549 6.715-1.549 3.099 0 5.166 1.549 6.715 1.549 1.293 0 1.506-1.09 1.542-5.345.008-.846.009-2.995.009-2.995H18z"/>
<path fill="#F7DECE" d="M24.94 18.883c0-.298-.013-.592-.035-.883H10.983c-.022.291-.035.585-.035.883 0 3.545 1.598 6.483 3.915 7.881v1.749c1.249.907 2.041 1.153 3.124 1.153 1.083 0 1.874-.246 3.124-1.153v-1.799c2.27-1.418 3.829-4.329 3.829-7.831z"/>
<path fill="#DF1F32" d="M17.944 25.551c-1.368 0-2.084-.676-2.161-.754-.228-.228-.228-.597 0-.824.226-.225.59-.227.819-.006.03.027.47.418 1.342.418.885 0 1.325-.402 1.344-.419.232-.218.599-.211.821.017.221.229.221.589-.003.814-.078.077-.794.754-2.162.754z"/>
<path fill="#662113" d="M15.17 20.731h-.137c-.358 0-.652-.293-.652-.652v-.858c0-.358.293-.652.652-.652h.137c.358 0 .652.293.652.652v.858c0 .359-.293.652-.652.652zm5.764 0h-.137c-.358 0-.652-.293-.652-.652v-.858c0-.358.293-.652.652-.652h.137c.358 0 .652.293.652.652v.858c0 .359-.293.652-.652.652z"/>
<path fill="#C1694F" d="M18.679 22.958h-1.391c-.212 0-.385-.173-.385-.385v-.081c0-.212.173-.385.385-.385h1.391c.212 0 .385.173.385.385v.081c0 .212-.173.385-.385.385z"/>
<path fill="#292F33" d="M13.578 29.492l-4.653.737c-.272.043-.529-.144-.572-.416l-.156-.988c-.043-.272.144-.529.416-.572l4.653-.737c.272-.043.529.144.572.416l.156.988c.043.271-.144.529-.416.572zm8.87 0l4.653.737c.272.043.529-.144.572-.416l.156-.988c.043-.272-.144-.529-.416-.572l-4.653-.737c-.272-.043-.529.144-.572.416l-.156.988c-.043.271.144.529.416.572z"/>
<path fill="#99AAB5" d="M11.875 18s-.174 9 6.113 9 6.137-9 6.137-9H25s-.307 10-7 10-7-10-7-10h.875z"/>
<path fill="#F5F8FA" d="M17.5 30h1v6h-1z"/>
<path fill="#292F33" d="M21.13 26.971c0 1.459-2.071 2.022-3.13 2.022-1 0-3.13-.563-3.13-2.022 0 0-.574-.117-.574 1.096 0 1.214 1.704 2.778 3.704 2.778 1.956 0 3.704-1.564 3.704-2.778 0-1.213-.574-1.096-.574-1.096z"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -1,27 +0,0 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-2 -2 40 40" style="background: black;">
<g>
<path d="M30 36v-1c0-3.313-1.687-6-5-6H11c-3.313 0-5 2.687-5 6v1h24z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M27 6c0-3.3-2.7-6-6-6h-6c-3.3 0-6 2.7-6 6v12c0 4.971 4.029 5 9 5s9-.029 9-5V6z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M14.626 29.456c1.344.976 2.195 1.194 3.36 1.194s2.016-.218 3.36-1.194v-2.938h-6.721v2.938z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M14.62 27.816c.938 1.059 2.1 1.345 3.364 1.345 1.264 0 2.426-.287 3.364-1.345v-2.691H14.62v2.691z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M25.565 20.08c0-1.116-.565-2.021-1.263-2.021-.064 0-.125.015-.186.03-.009-.03-.016-.06-.026-.089H11.883c-.01.029-.016.059-.026.089-.061-.015-.123-.03-.186-.03-.698 0-1.263.905-1.263 2.021 0 1.025.479 1.863 1.097 1.994.489 3.734 3.201 6.595 6.482 6.595s5.993-2.861 6.482-6.595c.618-.132 1.096-.969 1.096-1.994z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M17.987 26.143c-2.123 0-2.774-.544-2.884-.653-.197-.197-.197-.517 0-.714.191-.191.497-.197.695-.018.04.029.556.376 2.188.376 1.695 0 2.186-.374 2.191-.377.197-.196.506-.187.704.01.197.197.187.527-.011.724-.109.108-.761.652-2.883.652zm.578-3.123h-1.156c-.318 0-.578-.26-.578-.578 0-.318.26-.578.578-.578h1.156c.318 0 .578.26.578.578 0 .318-.261.578-.578.578z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M14.904 20.9c-.424 0-.771-.347-.771-.771v-.771c0-.424.347-.771.771-.771.424 0 .771.347.771.771v.771c-.001.424-.348.771-.771.771zm6.165 0c-.424 0-.771-.347-.771-.771v-.771c0-.424.347-.771.771-.771.424 0 .771.347.771.771v.771c0 .424-.347.771-.771.771z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M12.578 30.461l-4.653.737c-.272.043-.529-.144-.572-.416l-.156-.988c-.043-.272.144-.529.416-.572l4.653-.737c.272-.043.529.144.572.416l.156.988c.043.271-.144.529-.416.572zm10.87 0l4.653.737c.272.043.529-.144.572-.416l.156-.988c.043-.272-.144-.529-.416-.572l-4.653-.737c-.272-.043-.529.144-.572.416l-.156.988c-.043.271.144.529.416.572z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M11.875 18s-.174 9 6.113 9 6.137-9 6.137-9H25s-.307 10-7 10-7-10-7-10h.875z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M17.5 31h1v5h-1z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M21.38 27.816C21.38 29.391 19.144 30 18 30s-3.38-.609-3.38-2.184c0 0-.62-.127-.62 1.184s1.888 3 4 3 4-1.689 4-3-.62-1.184-.62-1.184z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
</g>
<path fill="#DD2E44" d="M30 36v-1c0-3.313-1.687-6-5-6H11c-3.313 0-5 2.687-5 6v1h24z"/>
<path fill="#292F33" d="M27 6c0-3.3-2.7-6-6-6h-6c-3.3 0-6 2.7-6 6v12c0 4.971 4.029 5 9 5s9-.029 9-5V6z"/>
<path fill="#F7DECE" d="M14.626 29.456c1.344.976 2.195 1.194 3.36 1.194s2.016-.218 3.36-1.194v-2.938h-6.721v2.938z"/>
<path fill="#EEC2AD" d="M14.62 27.816c.938 1.059 2.1 1.345 3.364 1.345 1.264 0 2.426-.287 3.364-1.345v-2.691H14.62v2.691z"/>
<path fill="#F7DECE" d="M25.565 20.08c0-1.116-.565-2.021-1.263-2.021-.064 0-.125.015-.186.03-.009-.03-.016-.06-.026-.089H11.883c-.01.029-.016.059-.026.089-.061-.015-.123-.03-.186-.03-.698 0-1.263.905-1.263 2.021 0 1.025.479 1.863 1.097 1.994.489 3.734 3.201 6.595 6.482 6.595s5.993-2.861 6.482-6.595c.618-.132 1.096-.969 1.096-1.994z"/>
<path fill="#C1694F" d="M17.987 26.143c-2.123 0-2.774-.544-2.884-.653-.197-.197-.197-.517 0-.714.191-.191.497-.197.695-.018.04.029.556.376 2.188.376 1.695 0 2.186-.374 2.191-.377.197-.196.506-.187.704.01.197.197.187.527-.011.724-.109.108-.761.652-2.883.652zm.578-3.123h-1.156c-.318 0-.578-.26-.578-.578 0-.318.26-.578.578-.578h1.156c.318 0 .578.26.578.578 0 .318-.261.578-.578.578z"/>
<path fill="#662113" d="M14.904 20.9c-.424 0-.771-.347-.771-.771v-.771c0-.424.347-.771.771-.771.424 0 .771.347.771.771v.771c-.001.424-.348.771-.771.771zm6.165 0c-.424 0-.771-.347-.771-.771v-.771c0-.424.347-.771.771-.771.424 0 .771.347.771.771v.771c0 .424-.347.771-.771.771z"/>
<path fill="#292F33" d="M12.578 30.461l-4.653.737c-.272.043-.529-.144-.572-.416l-.156-.988c-.043-.272.144-.529.416-.572l4.653-.737c.272-.043.529.144.572.416l.156.988c.043.271-.144.529-.416.572zm10.87 0l4.653.737c.272.043.529-.144.572-.416l.156-.988c.043-.272-.144-.529-.416-.572l-4.653-.737c-.272-.043-.529.144-.572.416l-.156.988c-.043.271.144.529.416.572z"/>
<path fill="#99AAB5" d="M11.875 18s-.174 9 6.113 9 6.137-9 6.137-9H25s-.307 10-7 10-7-10-7-10h.875z"/>
<path fill="#F5F8FA" d="M17.5 31h1v5h-1z"/>
<path fill="#292F33" d="M21.38 27.816C21.38 29.391 19.144 30 18 30s-3.38-.609-3.38-2.184c0 0-.62-.127-.62 1.184s1.888 3 4 3 4-1.689 4-3-.62-1.184-.62-1.184z"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -1,31 +0,0 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-2 -2 40 40" style="background: black;">
<g>
<path d="M29.192 36v-1c0-3.314-2.686-6-6-6H11.808c-2.761 0-5 2.239-5 5v2h22.384z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M9 18c0 4.971 4.029 5 9 5s9-.029 9-5c0-.153-4.563-.998-9-1-4.562-.002-9 .843-9 1z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M14.587 29.169l3.414 1.493 3.415-1.493v-3.415h-6.829z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M14.587 27.558c1.038 1.173 2.011 1.467 3.411 1.467 1.399 0 2.379-.295 3.418-1.467v-3.414h-6.829v3.414z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M20.76 9.97c-1.476-.478-4.95-.347-5.818.782-2.258.043-4.907 2.084-5.254 4.776-.344 2.665.422 3.902.695 5.905.309 2.27 1.585 2.996 2.605 3.3 1.468 1.939 3.028 1.856 5.648 1.856 5.116 0 7.553-3.423 7.769-9.238.13-3.517-1.934-6.18-5.645-7.381z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M23.686 17.6c-.495-.685-1.129-1.237-2.518-1.433.521.239 1.02 1.064 1.086 1.52.065.456.13.825-.282.369-1.653-1.827-3.452-1.107-5.236-2.223-1.246-.779-1.625-1.641-1.625-1.641s-.152 1.151-2.041 2.323c-.548.34-1.201 1.097-1.563 2.214-.261.803-.18 1.52-.18 2.744 0 3.574 2.945 6.578 6.578 6.578s6.578-3.031 6.578-6.578c0-2.223-.233-3.092-.797-3.873z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M18.636 23.3h-1.462c-.202 0-.365-.163-.365-.365s.163-.365.365-.365h1.462c.202 0 .365.163.365.365s-.163.365-.365.365z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M14.981 20.742c-.404 0-.731-.327-.731-.731v-.731c0-.404.327-.731.731-.731.404 0 .731.327.731.731v.731c0 .403-.327.731-.731.731zm5.848 0c-.404 0-.731-.327-.731-.731v-.731c0-.404.327-.731.731-.731s.731.327.731.731v.731c-.001.403-.328.731-.731.731z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M18.001 26.352c-2.112 0-2.76-.541-2.869-.65-.196-.196-.196-.514 0-.711.19-.19.495-.195.692-.018.04.028.553.374 2.177.374 1.687 0 2.175-.372 2.179-.376.196-.195.504-.186.7.011.196.196.186.523-.011.72-.107.109-.756.65-2.868.65" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M27 18V6c0-3.3-2.7-6-6-6h-6c-3.3 0-6 2.7-6 6v12h18zM12.943 30.461l-4.34.737c-.253.043-.493-.144-.533-.416l-.146-.988c-.04-.272.134-.529.388-.572l4.34-.737c.253-.043.493.144.534.416l.146.988c.039.271-.135.529-.389.572zm10.138 0l4.34.737c.253.043.493-.144.534-.416l.146-.988c.04-.272-.134-.529-.388-.572l-4.34-.737c-.253-.043-.493.144-.534.416l-.146.988c-.04.271.135.529.388.572z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M11.875 18s-.174 9.414 6.113 9.414S24.125 18 24.125 18H25s-.307 10.461-7 10.461S11 18 11 18h.875z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M17.5 31h1v5h-1z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M21.38 27.816C21.38 29.391 19.144 30 18 30s-3.38-.609-3.38-2.184c0 0-.62-.127-.62 1.184s1.888 3 4 3 4-1.689 4-3-.62-1.184-.62-1.184z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
</g>
<path fill="#DD2E44" d="M29.192 36v-1c0-3.314-2.686-6-6-6H11.808c-2.761 0-5 2.239-5 5v2h22.384z"/>
<path fill="#292F33" d="M9 18c0 4.971 4.029 5 9 5s9-.029 9-5c0-.153-4.563-.998-9-1-4.562-.002-9 .843-9 1z"/>
<path fill="#F7DECE" d="M14.587 29.169l3.414 1.493 3.415-1.493v-3.415h-6.829z"/>
<path fill="#EEC2AD" d="M14.587 27.558c1.038 1.173 2.011 1.467 3.411 1.467 1.399 0 2.379-.295 3.418-1.467v-3.414h-6.829v3.414z"/>
<path fill="#292F33" d="M20.76 9.97c-1.476-.478-4.95-.347-5.818.782-2.258.043-4.907 2.084-5.254 4.776-.344 2.665.422 3.902.695 5.905.309 2.27 1.585 2.996 2.605 3.3 1.468 1.939 3.028 1.856 5.648 1.856 5.116 0 7.553-3.423 7.769-9.238.13-3.517-1.934-6.18-5.645-7.381z"/>
<path fill="#F7DECE" d="M23.686 17.6c-.495-.685-1.129-1.237-2.518-1.433.521.239 1.02 1.064 1.086 1.52.065.456.13.825-.282.369-1.653-1.827-3.452-1.107-5.236-2.223-1.246-.779-1.625-1.641-1.625-1.641s-.152 1.151-2.041 2.323c-.548.34-1.201 1.097-1.563 2.214-.261.803-.18 1.52-.18 2.744 0 3.574 2.945 6.578 6.578 6.578s6.578-3.031 6.578-6.578c0-2.223-.233-3.092-.797-3.873z"/>
<path fill="#C1694F" d="M18.636 23.3h-1.462c-.202 0-.365-.163-.365-.365s.163-.365.365-.365h1.462c.202 0 .365.163.365.365s-.163.365-.365.365z"/>
<path fill="#662113" d="M14.981 20.742c-.404 0-.731-.327-.731-.731v-.731c0-.404.327-.731.731-.731.404 0 .731.327.731.731v.731c0 .403-.327.731-.731.731zm5.848 0c-.404 0-.731-.327-.731-.731v-.731c0-.404.327-.731.731-.731s.731.327.731.731v.731c-.001.403-.328.731-.731.731z"/>
<path fill="#C1694F" d="M18.001 26.352c-2.112 0-2.76-.541-2.869-.65-.196-.196-.196-.514 0-.711.19-.19.495-.195.692-.018.04.028.553.374 2.177.374 1.687 0 2.175-.372 2.179-.376.196-.195.504-.186.7.011.196.196.186.523-.011.72-.107.109-.756.65-2.868.65"/>
<path fill="#292F33" d="M27 18V6c0-3.3-2.7-6-6-6h-6c-3.3 0-6 2.7-6 6v12h18zM12.943 30.461l-4.34.737c-.253.043-.493-.144-.533-.416l-.146-.988c-.04-.272.134-.529.388-.572l4.34-.737c.253-.043.493.144.534.416l.146.988c.039.271-.135.529-.389.572zm10.138 0l4.34.737c.253.043.493-.144.534-.416l.146-.988c.04-.272-.134-.529-.388-.572l-4.34-.737c-.253-.043-.493.144-.534.416l-.146.988c-.04.271.135.529.388.572z"/>
<path fill="#99AAB5" d="M11.875 18s-.174 9.414 6.113 9.414S24.125 18 24.125 18H25s-.307 10.461-7 10.461S11 18 11 18h.875z"/>
<path fill="#F5F8FA" d="M17.5 31h1v5h-1z"/>
<path fill="#292F33" d="M21.38 27.816C21.38 29.391 19.144 30 18 30s-3.38-.609-3.38-2.184c0 0-.62-.127-.62 1.184s1.888 3 4 3 4-1.689 4-3-.62-1.184-.62-1.184z"/>
</svg>

Before

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -1,27 +0,0 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-2 -2 40 40" style="background: black;">
<g>
<path d="M28 36v-2.5c0-3.313-1.687-5.5-5-5.5H13c-3.313 0-5 2.187-5 5.5V36h20z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M27 6c0-3.3-2.7-6-6-6h-6c-3.3 0-6 2.7-6 6v12c0 4.971 4.029 5 9 5s9-.029 9-5V6z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M18 18H9.679s-.016 1.731.01 2.844c.06 2.517.342 5.496 1.539 5.496 1.594 0 3.616-1.549 6.715-1.549 3.099 0 5.166 1.549 6.715 1.549 1.293 0 1.506-1.09 1.542-5.345.008-.846.009-2.995.009-2.995H18z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M24.94 18.883c0-.298-.013-.592-.035-.883H10.983c-.022.291-.035.585-.035.883 0 3.545 1.598 6.483 3.915 7.881v1.749c1.249.907 2.041 1.153 3.124 1.153 1.083 0 1.874-.246 3.124-1.153v-1.799c2.27-1.418 3.829-4.329 3.829-7.831z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M17.944 25.551c-1.368 0-2.084-.676-2.161-.754-.228-.228-.228-.597 0-.824.226-.225.59-.227.819-.006.03.027.47.418 1.342.418.885 0 1.325-.402 1.344-.419.232-.218.599-.211.821.017.221.229.221.589-.003.814-.078.077-.794.754-2.162.754z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M15.17 20.731h-.137c-.358 0-.652-.293-.652-.652v-.858c0-.358.293-.652.652-.652h.137c.358 0 .652.293.652.652v.858c0 .359-.293.652-.652.652zm5.764 0h-.137c-.358 0-.652-.293-.652-.652v-.858c0-.358.293-.652.652-.652h.137c.358 0 .652.293.652.652v.858c0 .359-.293.652-.652.652z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M18.679 22.958h-1.391c-.212 0-.385-.173-.385-.385v-.081c0-.212.173-.385.385-.385h1.391c.212 0 .385.173.385.385v.081c0 .212-.173.385-.385.385z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M13.578 29.492l-4.653.737c-.272.043-.529-.144-.572-.416l-.156-.988c-.043-.272.144-.529.416-.572l4.653-.737c.272-.043.529.144.572.416l.156.988c.043.271-.144.529-.416.572zm8.87 0l4.653.737c.272.043.529-.144.572-.416l.156-.988c.043-.272-.144-.529-.416-.572l-4.653-.737c-.272-.043-.529.144-.572.416l-.156.988c-.043.271.144.529.416.572z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M11.875 18s-.174 9 6.113 9 6.137-9 6.137-9H25s-.307 10-7 10-7-10-7-10h.875z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M17.5 30h1v6h-1z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M21.13 26.971c0 1.459-2.071 2.022-3.13 2.022-1 0-3.13-.563-3.13-2.022 0 0-.574-.117-.574 1.096 0 1.214 1.704 2.778 3.704 2.778 1.956 0 3.704-1.564 3.704-2.778 0-1.213-.574-1.096-.574-1.096z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
</g>
<path fill="#DD2E44" d="M28 36v-2.5c0-3.313-1.687-5.5-5-5.5H13c-3.313 0-5 2.187-5 5.5V36h20z"/>
<path fill="#292F33" d="M27 6c0-3.3-2.7-6-6-6h-6c-3.3 0-6 2.7-6 6v12c0 4.971 4.029 5 9 5s9-.029 9-5V6z"/>
<path fill="#FFE51E" d="M18 18H9.679s-.016 1.731.01 2.844c.06 2.517.342 5.496 1.539 5.496 1.594 0 3.616-1.549 6.715-1.549 3.099 0 5.166 1.549 6.715 1.549 1.293 0 1.506-1.09 1.542-5.345.008-.846.009-2.995.009-2.995H18z"/>
<path fill="#F3D2A2" d="M24.94 18.883c0-.298-.013-.592-.035-.883H10.983c-.022.291-.035.585-.035.883 0 3.545 1.598 6.483 3.915 7.881v1.749c1.249.907 2.041 1.153 3.124 1.153 1.083 0 1.874-.246 3.124-1.153v-1.799c2.27-1.418 3.829-4.329 3.829-7.831z"/>
<path fill="#DF1F32" d="M17.944 25.551c-1.368 0-2.084-.676-2.161-.754-.228-.228-.228-.597 0-.824.226-.225.59-.227.819-.006.03.027.47.418 1.342.418.885 0 1.325-.402 1.344-.419.232-.218.599-.211.821.017.221.229.221.589-.003.814-.078.077-.794.754-2.162.754z"/>
<path fill="#662113" d="M15.17 20.731h-.137c-.358 0-.652-.293-.652-.652v-.858c0-.358.293-.652.652-.652h.137c.358 0 .652.293.652.652v.858c0 .359-.293.652-.652.652zm5.764 0h-.137c-.358 0-.652-.293-.652-.652v-.858c0-.358.293-.652.652-.652h.137c.358 0 .652.293.652.652v.858c0 .359-.293.652-.652.652z"/>
<path fill="#C1694F" d="M18.679 22.958h-1.391c-.212 0-.385-.173-.385-.385v-.081c0-.212.173-.385.385-.385h1.391c.212 0 .385.173.385.385v.081c0 .212-.173.385-.385.385z"/>
<path fill="#292F33" d="M13.578 29.492l-4.653.737c-.272.043-.529-.144-.572-.416l-.156-.988c-.043-.272.144-.529.416-.572l4.653-.737c.272-.043.529.144.572.416l.156.988c.043.271-.144.529-.416.572zm8.87 0l4.653.737c.272.043.529-.144.572-.416l.156-.988c.043-.272-.144-.529-.416-.572l-4.653-.737c-.272-.043-.529.144-.572.416l-.156.988c-.043.271.144.529.416.572z"/>
<path fill="#99AAB5" d="M11.875 18s-.174 9 6.113 9 6.137-9 6.137-9H25s-.307 10-7 10-7-10-7-10h.875z"/>
<path fill="#F5F8FA" d="M17.5 30h1v6h-1z"/>
<path fill="#292F33" d="M21.13 26.971c0 1.459-2.071 2.022-3.13 2.022-1 0-3.13-.563-3.13-2.022 0 0-.574-.117-.574 1.096 0 1.214 1.704 2.778 3.704 2.778 1.956 0 3.704-1.564 3.704-2.778 0-1.213-.574-1.096-.574-1.096z"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -1,27 +0,0 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-2 -2 40 40" style="background: black;">
<g>
<path d="M30 36v-1c0-3.313-1.687-6-5-6H11c-3.313 0-5 2.687-5 6v1h24z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M27 6c0-3.3-2.7-6-6-6h-6c-3.3 0-6 2.7-6 6v12c0 4.971 4.029 5 9 5s9-.029 9-5V6z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M14.626 29.456c1.344.976 2.195 1.194 3.36 1.194s2.016-.218 3.36-1.194v-2.938h-6.721v2.938z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M14.62 27.816c.938 1.059 2.1 1.345 3.364 1.345 1.264 0 2.426-.287 3.364-1.345v-2.691H14.62v2.691z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M25.565 20.08c0-1.116-.565-2.021-1.263-2.021-.064 0-.125.015-.186.03-.009-.03-.016-.06-.026-.089H11.883c-.01.029-.016.059-.026.089-.061-.015-.123-.03-.186-.03-.698 0-1.263.905-1.263 2.021 0 1.025.479 1.863 1.097 1.994.489 3.734 3.201 6.595 6.482 6.595s5.993-2.861 6.482-6.595c.618-.132 1.096-.969 1.096-1.994z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M17.987 26.143c-2.123 0-2.774-.544-2.884-.653-.197-.197-.197-.517 0-.714.191-.191.497-.197.695-.018.04.029.556.376 2.188.376 1.695 0 2.186-.374 2.191-.377.197-.196.506-.187.704.01.197.197.187.527-.011.724-.109.108-.761.652-2.883.652zm.578-3.123h-1.156c-.318 0-.578-.26-.578-.578 0-.318.26-.578.578-.578h1.156c.318 0 .578.26.578.578 0 .318-.261.578-.578.578z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M14.904 20.9c-.424 0-.771-.347-.771-.771v-.771c0-.424.347-.771.771-.771.424 0 .771.347.771.771v.771c-.001.424-.348.771-.771.771zm6.165 0c-.424 0-.771-.347-.771-.771v-.771c0-.424.347-.771.771-.771.424 0 .771.347.771.771v.771c0 .424-.347.771-.771.771z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M12.578 30.461l-4.653.737c-.272.043-.529-.144-.572-.416l-.156-.988c-.043-.272.144-.529.416-.572l4.653-.737c.272-.043.529.144.572.416l.156.988c.043.271-.144.529-.416.572zm10.87 0l4.653.737c.272.043.529-.144.572-.416l.156-.988c.043-.272-.144-.529-.416-.572l-4.653-.737c-.272-.043-.529.144-.572.416l-.156.988c-.043.271.144.529.416.572z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M11.875 18s-.174 9 6.113 9 6.137-9 6.137-9H25s-.307 10-7 10-7-10-7-10h.875z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M17.5 31h1v5h-1z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M21.38 27.816C21.38 29.391 19.144 30 18 30s-3.38-.609-3.38-2.184c0 0-.62-.127-.62 1.184s1.888 3 4 3 4-1.689 4-3-.62-1.184-.62-1.184z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
</g>
<path fill="#DD2E44" d="M30 36v-1c0-3.313-1.687-6-5-6H11c-3.313 0-5 2.687-5 6v1h24z"/>
<path fill="#292F33" d="M27 6c0-3.3-2.7-6-6-6h-6c-3.3 0-6 2.7-6 6v12c0 4.971 4.029 5 9 5s9-.029 9-5V6z"/>
<path fill="#F3D2A2" d="M14.626 29.456c1.344.976 2.195 1.194 3.36 1.194s2.016-.218 3.36-1.194v-2.938h-6.721v2.938z"/>
<path fill="#E2C196" d="M14.62 27.816c.938 1.059 2.1 1.345 3.364 1.345 1.264 0 2.426-.287 3.364-1.345v-2.691H14.62v2.691z"/>
<path fill="#F3D2A2" d="M25.565 20.08c0-1.116-.565-2.021-1.263-2.021-.064 0-.125.015-.186.03-.009-.03-.016-.06-.026-.089H11.883c-.01.029-.016.059-.026.089-.061-.015-.123-.03-.186-.03-.698 0-1.263.905-1.263 2.021 0 1.025.479 1.863 1.097 1.994.489 3.734 3.201 6.595 6.482 6.595s5.993-2.861 6.482-6.595c.618-.132 1.096-.969 1.096-1.994z"/>
<path fill="#C1694F" d="M17.987 26.143c-2.123 0-2.774-.544-2.884-.653-.197-.197-.197-.517 0-.714.191-.191.497-.197.695-.018.04.029.556.376 2.188.376 1.695 0 2.186-.374 2.191-.377.197-.196.506-.187.704.01.197.197.187.527-.011.724-.109.108-.761.652-2.883.652zm.578-3.123h-1.156c-.318 0-.578-.26-.578-.578 0-.318.26-.578.578-.578h1.156c.318 0 .578.26.578.578 0 .318-.261.578-.578.578z"/>
<path fill="#662113" d="M14.904 20.9c-.424 0-.771-.347-.771-.771v-.771c0-.424.347-.771.771-.771.424 0 .771.347.771.771v.771c-.001.424-.348.771-.771.771zm6.165 0c-.424 0-.771-.347-.771-.771v-.771c0-.424.347-.771.771-.771.424 0 .771.347.771.771v.771c0 .424-.347.771-.771.771z"/>
<path fill="#292F33" d="M12.578 30.461l-4.653.737c-.272.043-.529-.144-.572-.416l-.156-.988c-.043-.272.144-.529.416-.572l4.653-.737c.272-.043.529.144.572.416l.156.988c.043.271-.144.529-.416.572zm10.87 0l4.653.737c.272.043.529-.144.572-.416l.156-.988c.043-.272-.144-.529-.416-.572l-4.653-.737c-.272-.043-.529.144-.572.416l-.156.988c-.043.271.144.529.416.572z"/>
<path fill="#99AAB5" d="M11.875 18s-.174 9 6.113 9 6.137-9 6.137-9H25s-.307 10-7 10-7-10-7-10h.875z"/>
<path fill="#F5F8FA" d="M17.5 31h1v5h-1z"/>
<path fill="#292F33" d="M21.38 27.816C21.38 29.391 19.144 30 18 30s-3.38-.609-3.38-2.184c0 0-.62-.127-.62 1.184s1.888 3 4 3 4-1.689 4-3-.62-1.184-.62-1.184z"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -1,31 +0,0 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-2 -2 40 40" style="background: black;">
<g>
<path d="M29.192 36v-1c0-3.314-2.686-6-6-6H11.808c-2.761 0-5 2.239-5 5v2h22.384z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M9 18c0 4.971 4.029 5 9 5s9-.029 9-5c0-.153-4.563-.998-9-1-4.562-.002-9 .843-9 1z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M14.587 29.169l3.414 1.493 3.415-1.493v-3.415h-6.829z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M14.587 27.558c1.038 1.173 2.011 1.467 3.411 1.467 1.399 0 2.379-.295 3.418-1.467v-3.414h-6.829v3.414z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M20.76 9.97c-1.476-.478-4.95-.347-5.818.782-2.258.043-4.907 2.084-5.254 4.776-.344 2.665.422 3.902.695 5.905.309 2.27 1.585 2.996 2.605 3.3 1.468 1.939 3.028 1.856 5.648 1.856 5.116 0 7.553-3.423 7.769-9.238.13-3.517-1.934-6.18-5.645-7.381z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M23.686 17.6c-.495-.685-1.129-1.237-2.518-1.433.521.239 1.02 1.064 1.086 1.52.065.456.13.825-.282.369-1.653-1.827-3.452-1.107-5.236-2.223-1.246-.779-1.625-1.641-1.625-1.641s-.152 1.151-2.041 2.323c-.548.34-1.201 1.097-1.563 2.214-.261.803-.18 1.52-.18 2.744 0 3.574 2.945 6.578 6.578 6.578s6.578-3.031 6.578-6.578c0-2.223-.233-3.092-.797-3.873z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M18.636 23.3h-1.462c-.202 0-.365-.163-.365-.365s.163-.365.365-.365h1.462c.202 0 .365.163.365.365s-.163.365-.365.365z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M14.981 20.742c-.404 0-.731-.327-.731-.731v-.731c0-.404.327-.731.731-.731.404 0 .731.327.731.731v.731c0 .403-.327.731-.731.731zm5.848 0c-.404 0-.731-.327-.731-.731v-.731c0-.404.327-.731.731-.731s.731.327.731.731v.731c-.001.403-.328.731-.731.731z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M18.001 26.352c-2.112 0-2.76-.541-2.869-.65-.196-.196-.196-.514 0-.711.19-.19.495-.195.692-.018.04.028.553.374 2.177.374 1.687 0 2.175-.372 2.179-.376.196-.195.504-.186.7.011.196.196.186.523-.011.72-.107.109-.756.65-2.868.65" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M27 18V6c0-3.3-2.7-6-6-6h-6c-3.3 0-6 2.7-6 6v12h18zM12.943 30.461l-4.34.737c-.253.043-.493-.144-.533-.416l-.146-.988c-.04-.272.134-.529.388-.572l4.34-.737c.253-.043.493.144.534.416l.146.988c.039.271-.135.529-.389.572zm10.138 0l4.34.737c.253.043.493-.144.534-.416l.146-.988c.04-.272-.134-.529-.388-.572l-4.34-.737c-.253-.043-.493.144-.534.416l-.146.988c-.04.271.135.529.388.572z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M11.875 18s-.174 9.414 6.113 9.414S24.125 18 24.125 18H25s-.307 10.461-7 10.461S11 18 11 18h.875z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M17.5 31h1v5h-1z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M21.38 27.816C21.38 29.391 19.144 30 18 30s-3.38-.609-3.38-2.184c0 0-.62-.127-.62 1.184s1.888 3 4 3 4-1.689 4-3-.62-1.184-.62-1.184z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
</g>
<path fill="#DD2E44" d="M29.192 36v-1c0-3.314-2.686-6-6-6H11.808c-2.761 0-5 2.239-5 5v2h22.384z"/>
<path fill="#292F33" d="M9 18c0 4.971 4.029 5 9 5s9-.029 9-5c0-.153-4.563-.998-9-1-4.562-.002-9 .843-9 1z"/>
<path fill="#F3D2A2" d="M14.587 29.169l3.414 1.493 3.415-1.493v-3.415h-6.829z"/>
<path fill="#E2C196" d="M14.587 27.558c1.038 1.173 2.011 1.467 3.411 1.467 1.399 0 2.379-.295 3.418-1.467v-3.414h-6.829v3.414z"/>
<path fill="#FFE51E" d="M20.76 9.97c-1.476-.478-4.95-.347-5.818.782-2.258.043-4.907 2.084-5.254 4.776-.344 2.665.422 3.902.695 5.905.309 2.27 1.585 2.996 2.605 3.3 1.468 1.939 3.028 1.856 5.648 1.856 5.116 0 7.553-3.423 7.769-9.238.13-3.517-1.934-6.18-5.645-7.381z"/>
<path fill="#F3D2A2" d="M23.686 17.6c-.495-.685-1.129-1.237-2.518-1.433.521.239 1.02 1.064 1.086 1.52.065.456.13.825-.282.369-1.653-1.827-3.452-1.107-5.236-2.223-1.246-.779-1.625-1.641-1.625-1.641s-.152 1.151-2.041 2.323c-.548.34-1.201 1.097-1.563 2.214-.261.803-.18 1.52-.18 2.744 0 3.574 2.945 6.578 6.578 6.578s6.578-3.031 6.578-6.578c0-2.223-.233-3.092-.797-3.873z"/>
<path fill="#C1694F" d="M18.636 23.3h-1.462c-.202 0-.365-.163-.365-.365s.163-.365.365-.365h1.462c.202 0 .365.163.365.365s-.163.365-.365.365z"/>
<path fill="#662113" d="M14.981 20.742c-.404 0-.731-.327-.731-.731v-.731c0-.404.327-.731.731-.731.404 0 .731.327.731.731v.731c0 .403-.327.731-.731.731zm5.848 0c-.404 0-.731-.327-.731-.731v-.731c0-.404.327-.731.731-.731s.731.327.731.731v.731c-.001.403-.328.731-.731.731z"/>
<path fill="#C1694F" d="M18.001 26.352c-2.112 0-2.76-.541-2.869-.65-.196-.196-.196-.514 0-.711.19-.19.495-.195.692-.018.04.028.553.374 2.177.374 1.687 0 2.175-.372 2.179-.376.196-.195.504-.186.7.011.196.196.186.523-.011.72-.107.109-.756.65-2.868.65"/>
<path fill="#292F33" d="M27 18V6c0-3.3-2.7-6-6-6h-6c-3.3 0-6 2.7-6 6v12h18zM12.943 30.461l-4.34.737c-.253.043-.493-.144-.533-.416l-.146-.988c-.04-.272.134-.529.388-.572l4.34-.737c.253-.043.493.144.534.416l.146.988c.039.271-.135.529-.389.572zm10.138 0l4.34.737c.253.043.493-.144.534-.416l.146-.988c.04-.272-.134-.529-.388-.572l-4.34-.737c-.253-.043-.493.144-.534.416l-.146.988c-.04.271.135.529.388.572z"/>
<path fill="#99AAB5" d="M11.875 18s-.174 9.414 6.113 9.414S24.125 18 24.125 18H25s-.307 10.461-7 10.461S11 18 11 18h.875z"/>
<path fill="#F5F8FA" d="M17.5 31h1v5h-1z"/>
<path fill="#292F33" d="M21.38 27.816C21.38 29.391 19.144 30 18 30s-3.38-.609-3.38-2.184c0 0-.62-.127-.62 1.184s1.888 3 4 3 4-1.689 4-3-.62-1.184-.62-1.184z"/>
</svg>

Before

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -1,27 +0,0 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-2 -2 40 40" style="background: black;">
<g>
<path d="M28 36v-2.5c0-3.313-1.687-5.5-5-5.5H13c-3.313 0-5 2.187-5 5.5V36h20z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M27 6c0-3.3-2.7-6-6-6h-6c-3.3 0-6 2.7-6 6v12c0 4.971 4.029 5 9 5s9-.029 9-5V6z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M18 18H9.679s-.016 1.731.01 2.844c.06 2.517.342 5.496 1.539 5.496 1.594 0 3.616-1.549 6.715-1.549 3.099 0 5.166 1.549 6.715 1.549 1.293 0 1.506-1.09 1.542-5.345.008-.846.009-2.995.009-2.995H18z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M24.94 18.883c0-.298-.013-.592-.035-.883H10.983c-.022.291-.035.585-.035.883 0 3.545 1.598 6.483 3.915 7.881v1.749c1.249.907 2.041 1.153 3.124 1.153 1.083 0 1.874-.246 3.124-1.153v-1.799c2.27-1.418 3.829-4.329 3.829-7.831z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M17.944 25.551c-1.368 0-2.084-.676-2.161-.754-.228-.228-.228-.597 0-.824.226-.225.59-.227.819-.006.03.027.47.418 1.342.418.885 0 1.325-.402 1.344-.419.232-.218.599-.211.821.017.221.229.221.589-.003.814-.078.077-.794.754-2.162.754z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M15.17 20.731h-.137c-.358 0-.652-.293-.652-.652v-.858c0-.358.293-.652.652-.652h.137c.358 0 .652.293.652.652v.858c0 .359-.293.652-.652.652zm5.764 0h-.137c-.358 0-.652-.293-.652-.652v-.858c0-.358.293-.652.652-.652h.137c.358 0 .652.293.652.652v.858c0 .359-.293.652-.652.652z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M18.679 22.958h-1.391c-.212 0-.385-.173-.385-.385v-.081c0-.212.173-.385.385-.385h1.391c.212 0 .385.173.385.385v.081c0 .212-.173.385-.385.385z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M13.578 29.492l-4.653.737c-.272.043-.529-.144-.572-.416l-.156-.988c-.043-.272.144-.529.416-.572l4.653-.737c.272-.043.529.144.572.416l.156.988c.043.271-.144.529-.416.572zm8.87 0l4.653.737c.272.043.529-.144.572-.416l.156-.988c.043-.272-.144-.529-.416-.572l-4.653-.737c-.272-.043-.529.144-.572.416l-.156.988c-.043.271.144.529.416.572z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M11.875 18s-.174 9 6.113 9 6.137-9 6.137-9H25s-.307 10-7 10-7-10-7-10h.875z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M17.5 30h1v6h-1z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M21.13 26.971c0 1.459-2.071 2.022-3.13 2.022-1 0-3.13-.563-3.13-2.022 0 0-.574-.117-.574 1.096 0 1.214 1.704 2.778 3.704 2.778 1.956 0 3.704-1.564 3.704-2.778 0-1.213-.574-1.096-.574-1.096z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
</g>
<path fill="#DD2E44" d="M28 36v-2.5c0-3.313-1.687-5.5-5-5.5H13c-3.313 0-5 2.187-5 5.5V36h20z"/>
<path fill="#292F33" d="M27 6c0-3.3-2.7-6-6-6h-6c-3.3 0-6 2.7-6 6v12c0 4.971 4.029 5 9 5s9-.029 9-5V6z"/>
<path fill="#963B22" d="M18 18H9.679s-.016 1.731.01 2.844c.06 2.517.342 5.496 1.539 5.496 1.594 0 3.616-1.549 6.715-1.549 3.099 0 5.166 1.549 6.715 1.549 1.293 0 1.506-1.09 1.542-5.345.008-.846.009-2.995.009-2.995H18z"/>
<path fill="#D5AB88" d="M24.94 18.883c0-.298-.013-.592-.035-.883H10.983c-.022.291-.035.585-.035.883 0 3.545 1.598 6.483 3.915 7.881v1.749c1.249.907 2.041 1.153 3.124 1.153 1.083 0 1.874-.246 3.124-1.153v-1.799c2.27-1.418 3.829-4.329 3.829-7.831z"/>
<path fill="#DF1F32" d="M17.944 25.551c-1.368 0-2.084-.676-2.161-.754-.228-.228-.228-.597 0-.824.226-.225.59-.227.819-.006.03.027.47.418 1.342.418.885 0 1.325-.402 1.344-.419.232-.218.599-.211.821.017.221.229.221.589-.003.814-.078.077-.794.754-2.162.754z"/>
<path fill="#662113" d="M15.17 20.731h-.137c-.358 0-.652-.293-.652-.652v-.858c0-.358.293-.652.652-.652h.137c.358 0 .652.293.652.652v.858c0 .359-.293.652-.652.652zm5.764 0h-.137c-.358 0-.652-.293-.652-.652v-.858c0-.358.293-.652.652-.652h.137c.358 0 .652.293.652.652v.858c0 .359-.293.652-.652.652z"/>
<path fill="#C1694F" d="M18.679 22.958h-1.391c-.212 0-.385-.173-.385-.385v-.081c0-.212.173-.385.385-.385h1.391c.212 0 .385.173.385.385v.081c0 .212-.173.385-.385.385z"/>
<path fill="#292F33" d="M13.578 29.492l-4.653.737c-.272.043-.529-.144-.572-.416l-.156-.988c-.043-.272.144-.529.416-.572l4.653-.737c.272-.043.529.144.572.416l.156.988c.043.271-.144.529-.416.572zm8.87 0l4.653.737c.272.043.529-.144.572-.416l.156-.988c.043-.272-.144-.529-.416-.572l-4.653-.737c-.272-.043-.529.144-.572.416l-.156.988c-.043.271.144.529.416.572z"/>
<path fill="#99AAB5" d="M11.875 18s-.174 9 6.113 9 6.137-9 6.137-9H25s-.307 10-7 10-7-10-7-10h.875z"/>
<path fill="#F5F8FA" d="M17.5 30h1v6h-1z"/>
<path fill="#292F33" d="M21.13 26.971c0 1.459-2.071 2.022-3.13 2.022-1 0-3.13-.563-3.13-2.022 0 0-.574-.117-.574 1.096 0 1.214 1.704 2.778 3.704 2.778 1.956 0 3.704-1.564 3.704-2.778 0-1.213-.574-1.096-.574-1.096z"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -1,27 +0,0 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-2 -2 40 40" style="background: black;">
<g>
<path d="M30 36v-1c0-3.313-1.687-6-5-6H11c-3.313 0-5 2.687-5 6v1h24z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M27 6c0-3.3-2.7-6-6-6h-6c-3.3 0-6 2.7-6 6v12c0 4.971 4.029 5 9 5s9-.029 9-5V6z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M14.626 29.456c1.344.976 2.195 1.194 3.36 1.194s2.016-.218 3.36-1.194v-2.938h-6.721v2.938z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M14.62 27.816c.938 1.059 2.1 1.345 3.364 1.345 1.264 0 2.426-.287 3.364-1.345v-2.691H14.62v2.691z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M25.565 20.08c0-1.116-.565-2.021-1.263-2.021-.064 0-.125.015-.186.03-.009-.03-.016-.06-.026-.089H11.883c-.01.029-.016.059-.026.089-.061-.015-.123-.03-.186-.03-.698 0-1.263.905-1.263 2.021 0 1.025.479 1.863 1.097 1.994.489 3.734 3.201 6.595 6.482 6.595s5.993-2.861 6.482-6.595c.618-.132 1.096-.969 1.096-1.994z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M17.987 26.143c-2.123 0-2.774-.544-2.884-.653-.197-.197-.197-.517 0-.714.191-.191.497-.197.695-.018.04.029.556.376 2.188.376 1.695 0 2.186-.374 2.191-.377.197-.196.506-.187.704.01.197.197.187.527-.011.724-.109.108-.761.652-2.883.652zm.578-3.123h-1.156c-.318 0-.578-.26-.578-.578 0-.318.26-.578.578-.578h1.156c.318 0 .578.26.578.578 0 .318-.261.578-.578.578z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M14.904 20.9c-.424 0-.771-.347-.771-.771v-.771c0-.424.347-.771.771-.771.424 0 .771.347.771.771v.771c-.001.424-.348.771-.771.771zm6.165 0c-.424 0-.771-.347-.771-.771v-.771c0-.424.347-.771.771-.771.424 0 .771.347.771.771v.771c0 .424-.347.771-.771.771z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M12.578 30.461l-4.653.737c-.272.043-.529-.144-.572-.416l-.156-.988c-.043-.272.144-.529.416-.572l4.653-.737c.272-.043.529.144.572.416l.156.988c.043.271-.144.529-.416.572zm10.87 0l4.653.737c.272.043.529-.144.572-.416l.156-.988c.043-.272-.144-.529-.416-.572l-4.653-.737c-.272-.043-.529.144-.572.416l-.156.988c-.043.271.144.529.416.572z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M11.875 18s-.174 9 6.113 9 6.137-9 6.137-9H25s-.307 10-7 10-7-10-7-10h.875z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M17.5 31h1v5h-1z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M21.38 27.816C21.38 29.391 19.144 30 18 30s-3.38-.609-3.38-2.184c0 0-.62-.127-.62 1.184s1.888 3 4 3 4-1.689 4-3-.62-1.184-.62-1.184z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
</g>
<path fill="#DD2E44" d="M30 36v-1c0-3.313-1.687-6-5-6H11c-3.313 0-5 2.687-5 6v1h24z"/>
<path fill="#292F33" d="M27 6c0-3.3-2.7-6-6-6h-6c-3.3 0-6 2.7-6 6v12c0 4.971 4.029 5 9 5s9-.029 9-5V6z"/>
<path fill="#D5AB88" d="M14.626 29.456c1.344.976 2.195 1.194 3.36 1.194s2.016-.218 3.36-1.194v-2.938h-6.721v2.938z"/>
<path fill="#CC9B7A" d="M14.62 27.816c.938 1.059 2.1 1.345 3.364 1.345 1.264 0 2.426-.287 3.364-1.345v-2.691H14.62v2.691z"/>
<path fill="#D5AB88" d="M25.565 20.08c0-1.116-.565-2.021-1.263-2.021-.064 0-.125.015-.186.03-.009-.03-.016-.06-.026-.089H11.883c-.01.029-.016.059-.026.089-.061-.015-.123-.03-.186-.03-.698 0-1.263.905-1.263 2.021 0 1.025.479 1.863 1.097 1.994.489 3.734 3.201 6.595 6.482 6.595s5.993-2.861 6.482-6.595c.618-.132 1.096-.969 1.096-1.994z"/>
<path fill="#C1694F" d="M17.987 26.143c-2.123 0-2.774-.544-2.884-.653-.197-.197-.197-.517 0-.714.191-.191.497-.197.695-.018.04.029.556.376 2.188.376 1.695 0 2.186-.374 2.191-.377.197-.196.506-.187.704.01.197.197.187.527-.011.724-.109.108-.761.652-2.883.652zm.578-3.123h-1.156c-.318 0-.578-.26-.578-.578 0-.318.26-.578.578-.578h1.156c.318 0 .578.26.578.578 0 .318-.261.578-.578.578z"/>
<path fill="#662113" d="M14.904 20.9c-.424 0-.771-.347-.771-.771v-.771c0-.424.347-.771.771-.771.424 0 .771.347.771.771v.771c-.001.424-.348.771-.771.771zm6.165 0c-.424 0-.771-.347-.771-.771v-.771c0-.424.347-.771.771-.771.424 0 .771.347.771.771v.771c0 .424-.347.771-.771.771z"/>
<path fill="#292F33" d="M12.578 30.461l-4.653.737c-.272.043-.529-.144-.572-.416l-.156-.988c-.043-.272.144-.529.416-.572l4.653-.737c.272-.043.529.144.572.416l.156.988c.043.271-.144.529-.416.572zm10.87 0l4.653.737c.272.043.529-.144.572-.416l.156-.988c.043-.272-.144-.529-.416-.572l-4.653-.737c-.272-.043-.529.144-.572.416l-.156.988c-.043.271.144.529.416.572z"/>
<path fill="#99AAB5" d="M11.875 18s-.174 9 6.113 9 6.137-9 6.137-9H25s-.307 10-7 10-7-10-7-10h.875z"/>
<path fill="#F5F8FA" d="M17.5 31h1v5h-1z"/>
<path fill="#292F33" d="M21.38 27.816C21.38 29.391 19.144 30 18 30s-3.38-.609-3.38-2.184c0 0-.62-.127-.62 1.184s1.888 3 4 3 4-1.689 4-3-.62-1.184-.62-1.184z"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -1,31 +0,0 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-2 -2 40 40" style="background: black;">
<g>
<path d="M29.192 36v-1c0-3.314-2.686-6-6-6H11.808c-2.761 0-5 2.239-5 5v2h22.384z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M9 18c0 4.971 4.029 5 9 5s9-.029 9-5c0-.153-4.563-.998-9-1-4.562-.002-9 .843-9 1z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M14.587 29.169l3.414 1.493 3.415-1.493v-3.415h-6.829z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M14.587 27.558c1.038 1.173 2.011 1.467 3.411 1.467 1.399 0 2.379-.295 3.418-1.467v-3.414h-6.829v3.414z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M20.76 9.97c-1.476-.478-4.95-.347-5.818.782-2.258.043-4.907 2.084-5.254 4.776-.344 2.665.422 3.902.695 5.905.309 2.27 1.585 2.996 2.605 3.3 1.468 1.939 3.028 1.856 5.648 1.856 5.116 0 7.553-3.423 7.769-9.238.13-3.517-1.934-6.18-5.645-7.381z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M23.686 17.6c-.495-.685-1.129-1.237-2.518-1.433.521.239 1.02 1.064 1.086 1.52.065.456.13.825-.282.369-1.653-1.827-3.452-1.107-5.236-2.223-1.246-.779-1.625-1.641-1.625-1.641s-.152 1.151-2.041 2.323c-.548.34-1.201 1.097-1.563 2.214-.261.803-.18 1.52-.18 2.744 0 3.574 2.945 6.578 6.578 6.578s6.578-3.031 6.578-6.578c0-2.223-.233-3.092-.797-3.873z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M18.636 23.3h-1.462c-.202 0-.365-.163-.365-.365s.163-.365.365-.365h1.462c.202 0 .365.163.365.365s-.163.365-.365.365z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M14.981 20.742c-.404 0-.731-.327-.731-.731v-.731c0-.404.327-.731.731-.731.404 0 .731.327.731.731v.731c0 .403-.327.731-.731.731zm5.848 0c-.404 0-.731-.327-.731-.731v-.731c0-.404.327-.731.731-.731s.731.327.731.731v.731c-.001.403-.328.731-.731.731z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M18.001 26.352c-2.112 0-2.76-.541-2.869-.65-.196-.196-.196-.514 0-.711.19-.19.495-.195.692-.018.04.028.553.374 2.177.374 1.687 0 2.175-.372 2.179-.376.196-.195.504-.186.7.011.196.196.186.523-.011.72-.107.109-.756.65-2.868.65" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M27 18V6c0-3.3-2.7-6-6-6h-6c-3.3 0-6 2.7-6 6v12h18zM12.943 30.461l-4.34.737c-.253.043-.493-.144-.533-.416l-.146-.988c-.04-.272.134-.529.388-.572l4.34-.737c.253-.043.493.144.534.416l.146.988c.039.271-.135.529-.389.572zm10.138 0l4.34.737c.253.043.493-.144.534-.416l.146-.988c.04-.272-.134-.529-.388-.572l-4.34-.737c-.253-.043-.493.144-.534.416l-.146.988c-.04.271.135.529.388.572z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M11.875 18s-.174 9.414 6.113 9.414S24.125 18 24.125 18H25s-.307 10.461-7 10.461S11 18 11 18h.875z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M17.5 31h1v5h-1z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M21.38 27.816C21.38 29.391 19.144 30 18 30s-3.38-.609-3.38-2.184c0 0-.62-.127-.62 1.184s1.888 3 4 3 4-1.689 4-3-.62-1.184-.62-1.184z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
</g>
<path fill="#DD2E44" d="M29.192 36v-1c0-3.314-2.686-6-6-6H11.808c-2.761 0-5 2.239-5 5v2h22.384z"/>
<path fill="#292F33" d="M9 18c0 4.971 4.029 5 9 5s9-.029 9-5c0-.153-4.563-.998-9-1-4.562-.002-9 .843-9 1z"/>
<path fill="#D4AB88" d="M14.587 29.169l3.414 1.493 3.415-1.493v-3.415h-6.829z"/>
<path fill="#CC9B7A" d="M14.587 27.558c1.038 1.173 2.011 1.467 3.411 1.467 1.399 0 2.379-.295 3.418-1.467v-3.414h-6.829v3.414z"/>
<path fill="#963B22" d="M20.76 9.97c-1.476-.478-4.95-.347-5.818.782-2.258.043-4.907 2.084-5.254 4.776-.344 2.665.422 3.902.695 5.905.309 2.27 1.585 2.996 2.605 3.3 1.468 1.939 3.028 1.856 5.648 1.856 5.116 0 7.553-3.423 7.769-9.238.13-3.517-1.934-6.18-5.645-7.381z"/>
<path fill="#D4AB88" d="M23.686 17.6c-.495-.685-1.129-1.237-2.518-1.433.521.239 1.02 1.064 1.086 1.52.065.456.13.825-.282.369-1.653-1.827-3.452-1.107-5.236-2.223-1.246-.779-1.625-1.641-1.625-1.641s-.152 1.151-2.041 2.323c-.548.34-1.201 1.097-1.563 2.214-.261.803-.18 1.52-.18 2.744 0 3.574 2.945 6.578 6.578 6.578s6.578-3.031 6.578-6.578c0-2.223-.233-3.092-.797-3.873z"/>
<path fill="#C1694F" d="M18.636 23.3h-1.462c-.202 0-.365-.163-.365-.365s.163-.365.365-.365h1.462c.202 0 .365.163.365.365s-.163.365-.365.365z"/>
<path fill="#662113" d="M14.981 20.742c-.404 0-.731-.327-.731-.731v-.731c0-.404.327-.731.731-.731.404 0 .731.327.731.731v.731c0 .403-.327.731-.731.731zm5.848 0c-.404 0-.731-.327-.731-.731v-.731c0-.404.327-.731.731-.731s.731.327.731.731v.731c-.001.403-.328.731-.731.731z"/>
<path fill="#C1694F" d="M18.001 26.352c-2.112 0-2.76-.541-2.869-.65-.196-.196-.196-.514 0-.711.19-.19.495-.195.692-.018.04.028.553.374 2.177.374 1.687 0 2.175-.372 2.179-.376.196-.195.504-.186.7.011.196.196.186.523-.011.72-.107.109-.756.65-2.868.65"/>
<path fill="#292F33" d="M27 18V6c0-3.3-2.7-6-6-6h-6c-3.3 0-6 2.7-6 6v12h18zM12.943 30.461l-4.34.737c-.253.043-.493-.144-.533-.416l-.146-.988c-.04-.272.134-.529.388-.572l4.34-.737c.253-.043.493.144.534.416l.146.988c.039.271-.135.529-.389.572zm10.138 0l4.34.737c.253.043.493-.144.534-.416l.146-.988c.04-.272-.134-.529-.388-.572l-4.34-.737c-.253-.043-.493.144-.534.416l-.146.988c-.04.271.135.529.388.572z"/>
<path fill="#99AAB5" d="M11.875 18s-.174 9.414 6.113 9.414S24.125 18 24.125 18H25s-.307 10.461-7 10.461S11 18 11 18h.875z"/>
<path fill="#F5F8FA" d="M17.5 31h1v5h-1z"/>
<path fill="#292F33" d="M21.38 27.816C21.38 29.391 19.144 30 18 30s-3.38-.609-3.38-2.184c0 0-.62-.127-.62 1.184s1.888 3 4 3 4-1.689 4-3-.62-1.184-.62-1.184z"/>
</svg>

Before

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -1,27 +0,0 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-2 -2 40 40" style="background: black;">
<g>
<path d="M28 36v-2.5c0-3.313-1.687-5.5-5-5.5H13c-3.313 0-5 2.187-5 5.5V36h20z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M27 6c0-3.3-2.7-6-6-6h-6c-3.3 0-6 2.7-6 6v12c0 4.971 4.029 5 9 5s9-.029 9-5V6z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M18 18H9.679s-.016 1.731.01 2.844c.06 2.517.342 5.496 1.539 5.496 1.594 0 3.616-1.549 6.715-1.549 3.099 0 5.166 1.549 6.715 1.549 1.293 0 1.506-1.09 1.542-5.345.008-.846.009-2.995.009-2.995H18z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M24.94 18.883c0-.298-.013-.592-.035-.883H10.983c-.022.291-.035.585-.035.883 0 3.545 1.598 6.483 3.915 7.881v1.749c1.249.907 2.041 1.153 3.124 1.153 1.083 0 1.874-.246 3.124-1.153v-1.799c2.27-1.418 3.829-4.329 3.829-7.831z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M17.944 25.551c-1.368 0-2.084-.676-2.161-.754-.228-.228-.228-.597 0-.824.226-.225.59-.227.819-.006.03.027.47.418 1.342.418.885 0 1.325-.402 1.344-.419.232-.218.599-.211.821.017.221.229.221.589-.003.814-.078.077-.794.754-2.162.754z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M15.17 20.731h-.137c-.358 0-.652-.293-.652-.652v-.858c0-.358.293-.652.652-.652h.137c.358 0 .652.293.652.652v.858c0 .359-.293.652-.652.652zm5.764 0h-.137c-.358 0-.652-.293-.652-.652v-.858c0-.358.293-.652.652-.652h.137c.358 0 .652.293.652.652v.858c0 .359-.293.652-.652.652z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M18.679 22.958h-1.391c-.212 0-.385-.173-.385-.385v-.081c0-.212.173-.385.385-.385h1.391c.212 0 .385.173.385.385v.081c0 .212-.173.385-.385.385z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M13.578 29.492l-4.653.737c-.272.043-.529-.144-.572-.416l-.156-.988c-.043-.272.144-.529.416-.572l4.653-.737c.272-.043.529.144.572.416l.156.988c.043.271-.144.529-.416.572zm8.87 0l4.653.737c.272.043.529-.144.572-.416l.156-.988c.043-.272-.144-.529-.416-.572l-4.653-.737c-.272-.043-.529.144-.572.416l-.156.988c-.043.271.144.529.416.572z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M11.875 18s-.174 9 6.113 9 6.137-9 6.137-9H25s-.307 10-7 10-7-10-7-10h.875z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M17.5 30h1v6h-1z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
<path d="M21.13 26.971c0 1.459-2.071 2.022-3.13 2.022-1 0-3.13-.563-3.13-2.022 0 0-.574-.117-.574 1.096 0 1.214 1.704 2.778 3.704 2.778 1.956 0 3.704-1.564 3.704-2.778 0-1.213-.574-1.096-.574-1.096z" stroke="white" stroke-linejoin="round" stroke-width="4px"/>
</g>
<path fill="#DD2E44" d="M28 36v-2.5c0-3.313-1.687-5.5-5-5.5H13c-3.313 0-5 2.187-5 5.5V36h20z"/>
<path fill="#292F33" d="M27 6c0-3.3-2.7-6-6-6h-6c-3.3 0-6 2.7-6 6v12c0 4.971 4.029 5 9 5s9-.029 9-5V6z"/>
<path fill="#60352A" d="M18 18H9.679s-.016 1.731.01 2.844c.06 2.517.342 5.496 1.539 5.496 1.594 0 3.616-1.549 6.715-1.549 3.099 0 5.166 1.549 6.715 1.549 1.293 0 1.506-1.09 1.542-5.345.008-.846.009-2.995.009-2.995H18z"/>
<path fill="#AF7E57" d="M24.94 18.883c0-.298-.013-.592-.035-.883H10.983c-.022.291-.035.585-.035.883 0 3.545 1.598 6.483 3.915 7.881v1.749c1.249.907 2.041 1.153 3.124 1.153 1.083 0 1.874-.246 3.124-1.153v-1.799c2.27-1.418 3.829-4.329 3.829-7.831z"/>
<path fill="#DF1F32" d="M17.944 25.551c-1.368 0-2.084-.676-2.161-.754-.228-.228-.228-.597 0-.824.226-.225.59-.227.819-.006.03.027.47.418 1.342.418.885 0 1.325-.402 1.344-.419.232-.218.599-.211.821.017.221.229.221.589-.003.814-.078.077-.794.754-2.162.754z"/>
<path fill="#60352A" d="M15.17 20.731h-.137c-.358 0-.652-.293-.652-.652v-.858c0-.358.293-.652.652-.652h.137c.358 0 .652.293.652.652v.858c0 .359-.293.652-.652.652zm5.764 0h-.137c-.358 0-.652-.293-.652-.652v-.858c0-.358.293-.652.652-.652h.137c.358 0 .652.293.652.652v.858c0 .359-.293.652-.652.652z"/>
<path fill="#915A34" d="M18.679 22.958h-1.391c-.212 0-.385-.173-.385-.385v-.081c0-.212.173-.385.385-.385h1.391c.212 0 .385.173.385.385v.081c0 .212-.173.385-.385.385z"/>
<path fill="#292F33" d="M13.578 29.492l-4.653.737c-.272.043-.529-.144-.572-.416l-.156-.988c-.043-.272.144-.529.416-.572l4.653-.737c.272-.043.529.144.572.416l.156.988c.043.271-.144.529-.416.572zm8.87 0l4.653.737c.272.043.529-.144.572-.416l.156-.988c.043-.272-.144-.529-.416-.572l-4.653-.737c-.272-.043-.529.144-.572.416l-.156.988c-.043.271.144.529.416.572z"/>
<path fill="#99AAB5" d="M11.875 18s-.174 9 6.113 9 6.137-9 6.137-9H25s-.307 10-7 10-7-10-7-10h.875z"/>
<path fill="#F5F8FA" d="M17.5 30h1v6h-1z"/>
<path fill="#292F33" d="M21.13 26.971c0 1.459-2.071 2.022-3.13 2.022-1 0-3.13-.563-3.13-2.022 0 0-.574-.117-.574 1.096 0 1.214 1.704 2.778 3.704 2.778 1.956 0 3.704-1.564 3.704-2.778 0-1.213-.574-1.096-.574-1.096z"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

Some files were not shown because too many files have changed in this diff Show More