Merge branch 'develop' into 'remote_follow'

# Conflicts:
#   app/soapbox/features/account/components/header.js
merge-requests/155/head
Sean King 4 years ago
commit c2273ac8de

@ -14,6 +14,7 @@ stages:
- lint - lint
- test - test
- build - build
- deploy
before_script: before_script:
- yarn - yarn
@ -39,6 +40,16 @@ build-production:
paths: paths:
- static - static
docs-deploy:
stage: deploy
image: alpine:latest
before_script:
- apk add curl
script:
- curl -X POST -F"token=$CI_JOB_TOKEN" -F'ref=master' https://gitlab.com/api/v4/projects/15685485/trigger/pipeline
only:
- develop
# Supposed to fail when translations are outdated, instead always passes # Supposed to fail when translations are outdated, instead always passes
# #
# i18n: # i18n:

@ -0,0 +1,55 @@
{
"configs": [
{
"group": ":pleroma",
"key": ":frontend_configurations",
"value": [
{
"tuple": [
":soapbox_fe",
{
"logo": "blob:http://localhost:3036/0cdfa863-6889-4199-b870-4942cedd364f",
"banner": "blob:http://localhost:3036/a835afed-6078-45bd-92b4-7ffd858c3eca",
"brandColor": "#254f92",
"customCss": [
"/instance/static/custom.css"
],
"promoPanel": {
"items": [
{
"icon": "globe",
"text": "blog",
"url": "https://teci.world/blog"
},
{
"icon": "globe",
"text": "book",
"url": "https://teci.world/book"
}
]
},
"extensions": {
"patron": false
},
"defaultSettings": {
"autoPlayGif": false
},
"navlinks": {
"homeFooter": [
{
"title": "about",
"url": "/instance/about/index.html"
},
{
"title": "tos",
"url": "/instance/about/tos.html"
}
]
}
}
]
}
]
}
]
}

File diff suppressed because it is too large Load Diff

@ -261,6 +261,7 @@
"morefollows.following_label": "…and {count} more {count, plural, one {follow} other {follows}} on remote sites.", "morefollows.following_label": "…and {count} more {count, plural, one {follow} other {follows}} on remote sites.",
"mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.hide_notifications": "Hide notifications from this user?",
"navigation_bar.admin_settings": "Admin settings", "navigation_bar.admin_settings": "Admin settings",
"navigation_bar.soapbox_config": "Soapbox config",
"navigation_bar.blocks": "Blocked users", "navigation_bar.blocks": "Blocked users",
"navigation_bar.community_timeline": "Local timeline", "navigation_bar.community_timeline": "Local timeline",
"navigation_bar.compose": "Compose new post", "navigation_bar.compose": "Compose new post",
@ -738,6 +739,7 @@
"morefollows.following_label": "…and {count} more {count, plural, one {follow} other {follows}} on remote sites.", "morefollows.following_label": "…and {count} more {count, plural, one {follow} other {follows}} on remote sites.",
"mute_modal.hide_notifications": "Hide notifications from this user?", "mute_modal.hide_notifications": "Hide notifications from this user?",
"navigation_bar.admin_settings": "Admin settings", "navigation_bar.admin_settings": "Admin settings",
"navigation_bar.soapbox_config": "Soapbox config",
"navigation_bar.blocks": "Blocked users", "navigation_bar.blocks": "Blocked users",
"navigation_bar.community_timeline": "Local timeline", "navigation_bar.community_timeline": "Local timeline",
"navigation_bar.compose": "Compose new post", "navigation_bar.compose": "Compose new post",

@ -0,0 +1,40 @@
{
"logo": "blob:http://localhost:3036/0cdfa863-6889-4199-b870-4942cedd364f",
"banner": "blob:http://localhost:3036/a835afed-6078-45bd-92b4-7ffd858c3eca",
"brandColor": "#254f92",
"customCss": [
"/instance/static/custom.css"
],
"promoPanel": {
"items": [
{
"icon": "globe",
"text": "blog",
"url": "https://teci.world/blog"
},
{
"icon": "globe",
"text": "book",
"url": "https://teci.world/book"
}
]
},
"extensions": {
"patron": false
},
"defaultSettings": {
"autoPlayGif": false
},
"navlinks": {
"homeFooter": [
{
"title": "about",
"url": "/instance/about/index.html"
},
{
"title": "tos",
"url": "/instance/about/tos.html"
}
]
}
}

@ -0,0 +1,35 @@
import api from '../api';
export const ADMIN_CONFIG_UPDATE_REQUEST = 'ADMIN_CONFIG_UPDATE_REQUEST';
export const ADMIN_CONFIG_UPDATE_SUCCESS = 'ADMIN_CONFIG_UPDATE_SUCCESS';
export const ADMIN_CONFIG_UPDATE_FAIL = 'ADMIN_CONFIG_UPDATE_FAIL';
export const ADMIN_REPORTS_FETCH_REQUEST = 'ADMIN_REPORTS_FETCH_REQUEST';
export const ADMIN_REPORTS_FETCH_SUCCESS = 'ADMIN_REPORTS_FETCH_SUCCESS';
export const ADMIN_REPORTS_FETCH_FAIL = 'ADMIN_REPORTS_FETCH_FAIL';
export function updateAdminConfig(params) {
return (dispatch, getState) => {
dispatch({ type: ADMIN_CONFIG_UPDATE_REQUEST });
return api(getState)
.post('/api/pleroma/admin/config', params)
.then(response => {
dispatch({ type: ADMIN_CONFIG_UPDATE_SUCCESS, config: response.data });
}).catch(error => {
dispatch({ type: ADMIN_CONFIG_UPDATE_FAIL, error });
});
};
}
export function fetchReports(params) {
return (dispatch, getState) => {
dispatch({ type: ADMIN_REPORTS_FETCH_REQUEST, params });
return api(getState)
.get('/api/pleroma/admin/reports', { params })
.then(({ data }) => {
dispatch({ type: ADMIN_REPORTS_FETCH_SUCCESS, data, params });
}).catch(error => {
dispatch({ type: ADMIN_REPORTS_FETCH_FAIL, error, params });
});
};
}

@ -154,6 +154,7 @@ export function register(params) {
return (dispatch, getState) => { return (dispatch, getState) => {
const needsConfirmation = getState().getIn(['instance', 'pleroma', 'metadata', 'account_activation_required']); const needsConfirmation = getState().getIn(['instance', 'pleroma', 'metadata', 'account_activation_required']);
const needsApproval = getState().getIn(['instance', 'approval_required']); const needsApproval = getState().getIn(['instance', 'approval_required']);
params.fullname = params.username;
dispatch({ type: AUTH_REGISTER_REQUEST }); dispatch({ type: AUTH_REGISTER_REQUEST });
return dispatch(createAppAndToken()).then(() => { return dispatch(createAppAndToken()).then(() => {
return api(getState, 'app').post('/api/v1/accounts', params); return api(getState, 'app').post('/api/v1/accounts', params);

@ -0,0 +1,152 @@
import api from '../api';
import { getSettings, changeSetting } from 'soapbox/actions/settings';
import { v4 as uuidv4 } from 'uuid';
import { Map as ImmutableMap } from 'immutable';
export const CHATS_FETCH_REQUEST = 'CHATS_FETCH_REQUEST';
export const CHATS_FETCH_SUCCESS = 'CHATS_FETCH_SUCCESS';
export const CHATS_FETCH_FAIL = 'CHATS_FETCH_FAIL';
export const CHAT_MESSAGES_FETCH_REQUEST = 'CHAT_MESSAGES_FETCH_REQUEST';
export const CHAT_MESSAGES_FETCH_SUCCESS = 'CHAT_MESSAGES_FETCH_SUCCESS';
export const CHAT_MESSAGES_FETCH_FAIL = 'CHAT_MESSAGES_FETCH_FAIL';
export const CHAT_MESSAGE_SEND_REQUEST = 'CHAT_MESSAGE_SEND_REQUEST';
export const CHAT_MESSAGE_SEND_SUCCESS = 'CHAT_MESSAGE_SEND_SUCCESS';
export const CHAT_MESSAGE_SEND_FAIL = 'CHAT_MESSAGE_SEND_FAIL';
export const CHAT_FETCH_REQUEST = 'CHAT_FETCH_REQUEST';
export const CHAT_FETCH_SUCCESS = 'CHAT_FETCH_SUCCESS';
export const CHAT_FETCH_FAIL = 'CHAT_FETCH_FAIL';
export const CHAT_READ_REQUEST = 'CHAT_READ_REQUEST';
export const CHAT_READ_SUCCESS = 'CHAT_READ_SUCCESS';
export const CHAT_READ_FAIL = 'CHAT_READ_FAIL';
export function fetchChats() {
return (dispatch, getState) => {
dispatch({ type: CHATS_FETCH_REQUEST });
return api(getState).get('/api/v1/pleroma/chats').then(({ data }) => {
dispatch({ type: CHATS_FETCH_SUCCESS, chats: data });
}).catch(error => {
dispatch({ type: CHATS_FETCH_FAIL, error });
});
};
}
export function fetchChatMessages(chatId) {
return (dispatch, getState) => {
dispatch({ type: CHAT_MESSAGES_FETCH_REQUEST, chatId });
return api(getState).get(`/api/v1/pleroma/chats/${chatId}/messages`).then(({ data }) => {
dispatch({ type: CHAT_MESSAGES_FETCH_SUCCESS, chatId, chatMessages: data });
}).catch(error => {
dispatch({ type: CHAT_MESSAGES_FETCH_FAIL, chatId, error });
});
};
}
export function sendChatMessage(chatId, params) {
return (dispatch, getState) => {
const uuid = uuidv4();
const me = getState().get('me');
dispatch({ type: CHAT_MESSAGE_SEND_REQUEST, chatId, params, uuid, me });
return api(getState).post(`/api/v1/pleroma/chats/${chatId}/messages`, params).then(({ data }) => {
dispatch({ type: CHAT_MESSAGE_SEND_SUCCESS, chatId, chatMessage: data, uuid });
}).catch(error => {
dispatch({ type: CHAT_MESSAGE_SEND_FAIL, chatId, error, uuid });
});
};
}
export function openChat(chatId) {
return (dispatch, getState) => {
const state = getState();
const panes = getSettings(state).getIn(['chats', 'panes']);
const idx = panes.findIndex(pane => pane.get('chat_id') === chatId);
dispatch(markChatRead(chatId));
if (idx > -1) {
return dispatch(changeSetting(['chats', 'panes', idx, 'state'], 'open'));
} else {
const newPane = ImmutableMap({ chat_id: chatId, state: 'open' });
return dispatch(changeSetting(['chats', 'panes'], panes.push(newPane)));
}
};
}
export function closeChat(chatId) {
return (dispatch, getState) => {
const panes = getSettings(getState()).getIn(['chats', 'panes']);
const idx = panes.findIndex(pane => pane.get('chat_id') === chatId);
if (idx > -1) {
return dispatch(changeSetting(['chats', 'panes'], panes.delete(idx)));
} else {
return false;
}
};
}
export function toggleChat(chatId) {
return (dispatch, getState) => {
const panes = getSettings(getState()).getIn(['chats', 'panes']);
const [idx, pane] = panes.findEntry(pane => pane.get('chat_id') === chatId);
if (idx > -1) {
const state = pane.get('state') === 'minimized' ? 'open' : 'minimized';
if (state === 'open') dispatch(markChatRead(chatId));
return dispatch(changeSetting(['chats', 'panes', idx, 'state'], state));
} else {
return false;
}
};
}
export function toggleMainWindow() {
return (dispatch, getState) => {
const main = getSettings(getState()).getIn(['chats', 'mainWindow']);
const state = main === 'minimized' ? 'open' : 'minimized';
return dispatch(changeSetting(['chats', 'mainWindow'], state));
};
}
export function fetchChat(chatId) {
return (dispatch, getState) => {
dispatch({ type: CHAT_FETCH_REQUEST, chatId });
return api(getState).get(`/api/v1/pleroma/chats/${chatId}`).then(({ data }) => {
dispatch({ type: CHAT_FETCH_SUCCESS, chat: data });
}).catch(error => {
dispatch({ type: CHAT_FETCH_FAIL, chatId, error });
});
};
}
export function startChat(accountId) {
return (dispatch, getState) => {
dispatch({ type: CHAT_FETCH_REQUEST, accountId });
return api(getState).post(`/api/v1/pleroma/chats/by-account-id/${accountId}`).then(({ data }) => {
dispatch({ type: CHAT_FETCH_SUCCESS, chat: data });
return data;
}).catch(error => {
dispatch({ type: CHAT_FETCH_FAIL, accountId, error });
});
};
}
export function markChatRead(chatId, lastReadId) {
return (dispatch, getState) => {
const chat = getState().getIn(['chats', chatId]);
if (!lastReadId) lastReadId = chat.get('last_message');
if (chat.get('unread') < 1) return;
if (!lastReadId) return;
dispatch({ type: CHAT_READ_REQUEST, chatId, lastReadId });
api(getState).post(`/api/v1/pleroma/chats/${chatId}/read`, { last_read_id: lastReadId }).then(({ data }) => {
dispatch({ type: CHAT_READ_SUCCESS, chat: data, lastReadId });
}).catch(error => {
dispatch({ type: CHAT_READ_FAIL, chatId, error, lastReadId });
});
};
}

@ -7,12 +7,12 @@ import { useEmoji } from './emojis';
import resizeImage from '../utils/resize_image'; import resizeImage from '../utils/resize_image';
import { importFetchedAccounts } from './importer'; import { importFetchedAccounts } from './importer';
import { updateTimeline, dequeueTimeline } from './timelines'; import { updateTimeline, dequeueTimeline } from './timelines';
import { showAlertForError } from './alerts'; import { showAlert, showAlertForError } from './alerts';
import { showAlert } from './alerts';
import { defineMessages } from 'react-intl'; import { defineMessages } from 'react-intl';
import { openModal, closeModal } from './modal'; import { openModal, closeModal } from './modal';
import { getSettings } from './settings'; import { getSettings } from './settings';
import { getFeatures } from 'soapbox/utils/features'; import { getFeatures } from 'soapbox/utils/features';
import { uploadMedia } from './media';
let cancelFetchComposeSuggestionsAccounts; let cancelFetchComposeSuggestionsAccounts;
@ -239,12 +239,14 @@ export function uploadCompose(files) {
// Account for disparity in size of original image and resized data // Account for disparity in size of original image and resized data
total += file.size - f.size; total += file.size - f.size;
return api(getState).post('/api/v1/media', data, { const onUploadProgress = function({ loaded }) {
onUploadProgress: function({ loaded }){
progress[i] = loaded; progress[i] = loaded;
dispatch(uploadComposeProgress(progress.reduce((a, v) => a + v, 0), total)); dispatch(uploadComposeProgress(progress.reduce((a, v) => a + v, 0), total));
}, };
}).then(({ data }) => dispatch(uploadComposeSuccess(data)));
return dispatch(uploadMedia(data, onUploadProgress))
.then(({ data }) => dispatch(uploadComposeSuccess(data)));
}).catch(error => dispatch(uploadComposeFail(error))); }).catch(error => dispatch(uploadComposeFail(error)));
}; };
}; };

@ -1,5 +1,9 @@
import { getSettings } from '../settings'; import { getSettings } from '../settings';
import { normalizeAccount, normalizeStatus, normalizePoll } from './normalizer'; import {
normalizeAccount,
normalizeStatus,
normalizePoll,
} from './normalizer';
export const ACCOUNT_IMPORT = 'ACCOUNT_IMPORT'; export const ACCOUNT_IMPORT = 'ACCOUNT_IMPORT';
export const ACCOUNTS_IMPORT = 'ACCOUNTS_IMPORT'; export const ACCOUNTS_IMPORT = 'ACCOUNTS_IMPORT';

@ -80,3 +80,13 @@ export function normalizePoll(poll) {
return normalPoll; return normalPoll;
} }
export function normalizeChat(chat, normalOldChat) {
const normalChat = { ...chat };
const { account, last_message: lastMessage } = chat;
if (account) normalChat.account = account.id;
if (lastMessage) normalChat.last_message = lastMessage.id;
return normalChat;
}

@ -0,0 +1,11 @@
import api from '../api';
const noOp = () => {};
export function uploadMedia(data, onUploadProgress = noOp) {
return function(dispatch, getState) {
return api(getState).post('/api/v1/media', data, {
onUploadProgress: onUploadProgress,
});
};
}

@ -13,7 +13,6 @@ import { defineMessages } from 'react-intl';
import { List as ImmutableList } from 'immutable'; import { List as ImmutableList } from 'immutable';
import { unescapeHTML } from '../utils/html'; import { unescapeHTML } from '../utils/html';
import { getFilters, regexFromFilters } from '../selectors'; import { getFilters, regexFromFilters } from '../selectors';
import { fetchMarkers } from './markers';
export const NOTIFICATIONS_UPDATE = 'NOTIFICATIONS_UPDATE'; export const NOTIFICATIONS_UPDATE = 'NOTIFICATIONS_UPDATE';
export const NOTIFICATIONS_UPDATE_NOOP = 'NOTIFICATIONS_UPDATE_NOOP'; export const NOTIFICATIONS_UPDATE_NOOP = 'NOTIFICATIONS_UPDATE_NOOP';
@ -71,6 +70,8 @@ export function updateNotifications(notification, intlMessages, intlLocale) {
export function updateNotificationsQueue(notification, intlMessages, intlLocale, curPath) { export function updateNotificationsQueue(notification, intlMessages, intlLocale, curPath) {
return (dispatch, getState) => { return (dispatch, getState) => {
if (notification.type === 'pleroma:chat_mention') return; // Drop chat notifications, handle them per-chat
const showAlert = getSettings(getState()).getIn(['notifications', 'alerts', notification.type]); const showAlert = getSettings(getState()).getIn(['notifications', 'alerts', notification.type]);
const filters = getFilters(getState(), { contextType: 'notifications' }); const filters = getFilters(getState(), { contextType: 'notifications' });
const playSound = getSettings(getState()).getIn(['notifications', 'sounds', notification.type]); const playSound = getSettings(getState()).getIn(['notifications', 'sounds', notification.type]);
@ -173,7 +174,6 @@ export function expandNotifications({ maxId } = {}, done = noOp) {
params.since_id = notifications.getIn(['items', 0, 'id']); params.since_id = notifications.getIn(['items', 0, 'id']);
} }
dispatch(fetchMarkers(['notifications']));
dispatch(expandNotificationsRequest(isLoadingMore)); dispatch(expandNotificationsRequest(isLoadingMore));
api(getState).get('/api/v1/notifications', { params }).then(response => { api(getState).get('/api/v1/notifications', { params }).then(response => {

@ -0,0 +1,25 @@
import { mapValues } from 'lodash';
export const PRELOAD_IMPORT = 'PRELOAD_IMPORT';
// https://git.pleroma.social/pleroma/pleroma-fe/-/merge_requests/1176/diffs
const decodeUTF8Base64 = (data) => {
const rawData = atob(data);
const array = Uint8Array.from(rawData.split('').map((char) => char.charCodeAt(0)));
const text = new TextDecoder().decode(array);
return text;
};
const decodeData = data =>
mapValues(data, base64string =>
JSON.parse(decodeUTF8Base64(base64string)));
export function preload() {
const element = document.getElementById('initial-results');
const data = element ? JSON.parse(element.textContent) : {};
return {
type: PRELOAD_IMPORT,
data: decodeData(data),
};
}

@ -1,7 +1,7 @@
import { debounce } from 'lodash'; import { debounce } from 'lodash';
import { showAlertForError } from './alerts'; import { showAlertForError } from './alerts';
import { patchMe } from 'soapbox/actions/me'; import { patchMe } from 'soapbox/actions/me';
import { Map as ImmutableMap } from 'immutable'; import { Map as ImmutableMap, List as ImmutableList } from 'immutable';
export const SETTING_CHANGE = 'SETTING_CHANGE'; export const SETTING_CHANGE = 'SETTING_CHANGE';
export const SETTING_SAVE = 'SETTING_SAVE'; export const SETTING_SAVE = 'SETTING_SAVE';
@ -29,6 +29,11 @@ const defaultSettings = ImmutableMap({
dyslexicFont: false, dyslexicFont: false,
demetricator: false, demetricator: false,
chats: ImmutableMap({
panes: ImmutableList(),
mainWindow: 'minimized',
}),
home: ImmutableMap({ home: ImmutableMap({
shows: ImmutableMap({ shows: ImmutableMap({
reblog: true, reblog: true,

@ -1,9 +1,44 @@
import api from '../api'; import api from '../api';
import { Map as ImmutableMap, List as ImmutableList } from 'immutable';
export const SOAPBOX_CONFIG_REQUEST_SUCCESS = 'SOAPBOX_CONFIG_REQUEST_SUCCESS'; export const SOAPBOX_CONFIG_REQUEST_SUCCESS = 'SOAPBOX_CONFIG_REQUEST_SUCCESS';
export const SOAPBOX_CONFIG_REQUEST_FAIL = 'SOAPBOX_CONFIG_REQUEST_FAIL'; export const SOAPBOX_CONFIG_REQUEST_FAIL = 'SOAPBOX_CONFIG_REQUEST_FAIL';
export const defaultConfig = ImmutableMap({
logo: '',
banner: '',
brandColor: '#0482d8', // Azure
customCss: ImmutableList(),
promoPanel: ImmutableMap({
items: ImmutableList(),
}),
extensions: ImmutableMap(),
defaultSettings: ImmutableMap(),
copyright: '♥2020. Copying is an act of love. Please copy and share.',
navlinks: ImmutableMap({
homeFooter: ImmutableList(),
}),
});
export function getSoapboxConfig(state) {
return defaultConfig.mergeDeep(state.get('soapbox'));
}
export function fetchSoapboxConfig() { export function fetchSoapboxConfig() {
return (dispatch, getState) => {
api(getState).get('/api/pleroma/frontend_configurations').then(response => {
if (response.data.soapbox_fe) {
dispatch(importSoapboxConfig(response.data.soapbox_fe));
} else {
dispatch(fetchSoapboxJson());
}
}).catch(error => {
dispatch(fetchSoapboxJson());
});
};
}
export function fetchSoapboxJson() {
return (dispatch, getState) => { return (dispatch, getState) => {
api(getState).get('/instance/soapbox.json').then(response => { api(getState).get('/instance/soapbox.json').then(response => {
dispatch(importSoapboxConfig(response.data)); dispatch(importSoapboxConfig(response.data));
@ -22,7 +57,7 @@ export function importSoapboxConfig(soapboxConfig) {
export function soapboxConfigFail(error) { export function soapboxConfigFail(error) {
if (!error.response) { if (!error.response) {
console.error('soapbox.json parsing error: ' + error); console.error('Unable to obtain soapbox configuration: ' + error);
} }
return { return {
type: SOAPBOX_CONFIG_REQUEST_FAIL, type: SOAPBOX_CONFIG_REQUEST_FAIL,

@ -12,6 +12,8 @@ import { fetchFilters } from './filters';
import { getSettings } from 'soapbox/actions/settings'; import { getSettings } from 'soapbox/actions/settings';
import messages from 'soapbox/locales/messages'; import messages from 'soapbox/locales/messages';
export const STREAMING_CHAT_UPDATE = 'STREAMING_CHAT_UPDATE';
const validLocale = locale => Object.keys(messages).includes(locale); const validLocale = locale => Object.keys(messages).includes(locale);
const getLocale = state => { const getLocale = state => {
@ -52,6 +54,9 @@ export function connectTimelineStream(timelineId, path, pollingRefresh = null, a
case 'filters_changed': case 'filters_changed':
dispatch(fetchFilters()); dispatch(fetchFilters());
break; break;
case 'pleroma:chat_update':
dispatch({ type: STREAMING_CHAT_UPDATE, chat: JSON.parse(data.payload), me: getState().get('me') });
break;
} }
}, },
}; };

@ -4,7 +4,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePropTypes from 'react-immutable-proptypes';
import { changeSetting } from 'soapbox/actions/settings'; import { changeSetting } from 'soapbox/actions/settings';
import { Checkbox } from '../../forms'; import { Checkbox } from 'soapbox/features/forms';
const mapStateToProps = state => ({ const mapStateToProps = state => ({
settings: state.get('settings'), settings: state.get('settings'),

@ -21,7 +21,6 @@ const messages = defineMessages({
followers: { id: 'account.followers', defaultMessage: 'Followers' }, followers: { id: 'account.followers', defaultMessage: 'Followers' },
follows: { id: 'account.follows', defaultMessage: 'Follows' }, follows: { id: 'account.follows', defaultMessage: 'Follows' },
profile: { id: 'account.profile', defaultMessage: 'Profile' }, profile: { id: 'account.profile', defaultMessage: 'Profile' },
messages: { id: 'navigation_bar.messages', defaultMessage: 'Messages' },
preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },
follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' }, follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' },
blocks: { id: 'navigation_bar.blocks', defaultMessage: 'Blocked users' }, blocks: { id: 'navigation_bar.blocks', defaultMessage: 'Blocked users' },
@ -29,6 +28,7 @@ const messages = defineMessages({
mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' }, mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' },
filters: { id: 'navigation_bar.filters', defaultMessage: 'Muted words' }, filters: { id: 'navigation_bar.filters', defaultMessage: 'Muted words' },
admin_settings: { id: 'navigation_bar.admin_settings', defaultMessage: 'Admin settings' }, admin_settings: { id: 'navigation_bar.admin_settings', defaultMessage: 'Admin settings' },
soapbox_config: { id: 'navigation_bar.soapbox_config', defaultMessage: 'Soapbox config' },
security: { id: 'navigation_bar.security', defaultMessage: 'Security' }, security: { id: 'navigation_bar.security', defaultMessage: 'Security' },
logout: { id: 'navigation_bar.logout', defaultMessage: 'Logout' }, logout: { id: 'navigation_bar.logout', defaultMessage: 'Logout' },
lists: { id: 'column.lists', defaultMessage: 'Lists' }, lists: { id: 'column.lists', defaultMessage: 'Lists' },
@ -131,10 +131,6 @@ class SidebarMenu extends ImmutablePureComponent {
<Icon id='user' /> <Icon id='user' />
<span className='sidebar-menu-item__title'>{intl.formatMessage(messages.profile)}</span> <span className='sidebar-menu-item__title'>{intl.formatMessage(messages.profile)}</span>
</NavLink> </NavLink>
<NavLink className='sidebar-menu-item' to={'/messages'} onClick={onClose}>
<Icon id='envelope' />
<span className='sidebar-menu-item__title'>{intl.formatMessage(messages.messages)}</span>
</NavLink>
{donateUrl ? {donateUrl ?
<a className='sidebar-menu-item' href={donateUrl} onClick={onClose}> <a className='sidebar-menu-item' href={donateUrl} onClick={onClose}>
<Icon id='dollar' /> <Icon id='dollar' />
@ -172,10 +168,14 @@ class SidebarMenu extends ImmutablePureComponent {
<Icon id='filter' /> <Icon id='filter' />
<span className='sidebar-menu-item__title'>{intl.formatMessage(messages.filters)}</span> <span className='sidebar-menu-item__title'>{intl.formatMessage(messages.filters)}</span>
</NavLink> </NavLink>
{ isStaff && <a className='sidebar-menu-item' href={'/pleroma/admin/'} target='_blank' onClick={onClose}> { isStaff && <a className='sidebar-menu-item' href='/pleroma/admin' target='_blank' onClick={onClose}>
<Icon id='shield' /> <Icon id='shield' />
<span className='sidebar-menu-item__title'>{intl.formatMessage(messages.admin_settings)}</span> <span className='sidebar-menu-item__title'>{intl.formatMessage(messages.admin_settings)}</span>
</a> } </a> }
{ isStaff && <NavLink className='sidebar-menu-item' to='/soapbox/config' onClick={onClose}>
<Icon id='cog' />
<span className='sidebar-menu-item__title'>{intl.formatMessage(messages.soapbox_config)}</span>
</NavLink> }
<NavLink className='sidebar-menu-item' to='/settings/preferences' onClick={onClose}> <NavLink className='sidebar-menu-item' to='/settings/preferences' onClick={onClose}>
<Icon id='cog' /> <Icon id='cog' />
<span className='sidebar-menu-item__title'>{intl.formatMessage(messages.preferences)}</span> <span className='sidebar-menu-item__title'>{intl.formatMessage(messages.preferences)}</span>

@ -192,15 +192,15 @@ class Status extends ImmutablePureComponent {
}; };
renderLoadingMediaGallery() { renderLoadingMediaGallery() {
return <div className='media_gallery' style={{ height: '110px' }} />; return <div className='media_gallery' style={{ height: '285px' }} />;
} }
renderLoadingVideoPlayer() { renderLoadingVideoPlayer() {
return <div className='media-spoiler-video' style={{ height: '110px' }} />; return <div className='media-spoiler-video' style={{ height: '285px' }} />;
} }
renderLoadingAudioPlayer() { renderLoadingAudioPlayer() {
return <div className='media-spoiler-audio' style={{ height: '110px' }} />; return <div className='media-spoiler-audio' style={{ height: '285px' }} />;
} }
handleOpenVideo = (media, startTime) => { handleOpenVideo = (media, startTime) => {
@ -373,7 +373,7 @@ class Status extends ImmutablePureComponent {
alt={video.get('description')} alt={video.get('description')}
aspectRatio={video.getIn(['meta', 'small', 'aspect'])} aspectRatio={video.getIn(['meta', 'small', 'aspect'])}
width={this.props.cachedMediaWidth} width={this.props.cachedMediaWidth}
height={110} height={285}
inline inline
sensitive={status.get('sensitive')} sensitive={status.get('sensitive')}
onOpenVideo={this.handleOpenVideo} onOpenVideo={this.handleOpenVideo}
@ -409,7 +409,7 @@ class Status extends ImmutablePureComponent {
<Component <Component
media={status.get('media_attachments')} media={status.get('media_attachments')}
sensitive={status.get('sensitive')} sensitive={status.get('sensitive')}
height={110} height={285}
onOpenMedia={this.props.onOpenMedia} onOpenMedia={this.props.onOpenMedia}
cacheWidth={this.props.cacheMediaWidth} cacheWidth={this.props.cacheMediaWidth}
defaultWidth={this.props.cachedMediaWidth} defaultWidth={this.props.cachedMediaWidth}

@ -18,6 +18,7 @@ export default class StatusList extends ImmutablePureComponent {
static propTypes = { static propTypes = {
scrollKey: PropTypes.string.isRequired, scrollKey: PropTypes.string.isRequired,
statusIds: ImmutablePropTypes.list.isRequired, statusIds: ImmutablePropTypes.list.isRequired,
lastStatusId: PropTypes.string,
featuredStatusIds: ImmutablePropTypes.list, featuredStatusIds: ImmutablePropTypes.list,
onLoadMore: PropTypes.func, onLoadMore: PropTypes.func,
isLoading: PropTypes.bool, isLoading: PropTypes.bool,
@ -62,7 +63,8 @@ export default class StatusList extends ImmutablePureComponent {
} }
handleLoadOlder = debounce(() => { handleLoadOlder = debounce(() => {
this.props.onLoadMore(this.props.statusIds.size > 0 ? this.props.statusIds.last() : undefined); const loadMoreID = this.props.lastStatusId ? this.props.lastStatusId : this.props.statusIds.last();
this.props.onLoadMore(loadMoreID);
}, 300, { leading: true }) }, 300, { leading: true })
_selectChild(index, align_top) { _selectChild(index, align_top) {

@ -15,23 +15,27 @@ import UI from '../features/ui';
// import Introduction from '../features/introduction'; // import Introduction from '../features/introduction';
import { fetchCustomEmojis } from '../actions/custom_emojis'; import { fetchCustomEmojis } from '../actions/custom_emojis';
import { hydrateStore } from '../actions/store'; import { hydrateStore } from '../actions/store';
import { IntlProvider } from 'react-intl';
import initialState from '../initial_state'; import initialState from '../initial_state';
import { preload } from '../actions/preload';
import { IntlProvider } from 'react-intl';
import ErrorBoundary from '../components/error_boundary'; import ErrorBoundary from '../components/error_boundary';
import { fetchInstance } from 'soapbox/actions/instance'; import { fetchInstance } from 'soapbox/actions/instance';
import { fetchSoapboxConfig } from 'soapbox/actions/soapbox'; import { fetchSoapboxConfig } from 'soapbox/actions/soapbox';
import { fetchMe } from 'soapbox/actions/me'; import { fetchMe } from 'soapbox/actions/me';
import PublicLayout from 'soapbox/features/public_layout'; import PublicLayout from 'soapbox/features/public_layout';
import { getSettings } from 'soapbox/actions/settings'; import { getSettings } from 'soapbox/actions/settings';
import { getSoapboxConfig } from 'soapbox/actions/soapbox';
import { generateThemeCss } from 'soapbox/utils/theme'; import { generateThemeCss } from 'soapbox/utils/theme';
import messages from 'soapbox/locales/messages'; import messages from 'soapbox/locales/messages';
const validLocale = locale => Object.keys(messages).includes(locale); const validLocale = locale => Object.keys(messages).includes(locale);
export const store = configureStore(); export const store = configureStore();
const hydrateAction = hydrateStore(initialState); const hydrateAction = hydrateStore(initialState);
store.dispatch(hydrateAction); store.dispatch(hydrateAction);
store.dispatch(preload());
store.dispatch(fetchMe()); store.dispatch(fetchMe());
store.dispatch(fetchInstance()); store.dispatch(fetchInstance());
store.dispatch(fetchSoapboxConfig()); store.dispatch(fetchSoapboxConfig());
@ -42,6 +46,7 @@ const mapStateToProps = (state) => {
const account = state.getIn(['accounts', me]); const account = state.getIn(['accounts', me]);
const showIntroduction = account ? state.getIn(['settings', 'introductionVersion'], 0) < INTRODUCTION_VERSION : false; const showIntroduction = account ? state.getIn(['settings', 'introductionVersion'], 0) < INTRODUCTION_VERSION : false;
const settings = getSettings(state); const settings = getSettings(state);
const soapboxConfig = getSoapboxConfig(state);
const locale = settings.get('locale'); const locale = settings.get('locale');
return { return {
@ -52,9 +57,9 @@ const mapStateToProps = (state) => {
dyslexicFont: settings.get('dyslexicFont'), dyslexicFont: settings.get('dyslexicFont'),
demetricator: settings.get('demetricator'), demetricator: settings.get('demetricator'),
locale: validLocale(locale) ? locale : 'en', locale: validLocale(locale) ? locale : 'en',
themeCss: generateThemeCss(state.getIn(['soapbox', 'brandColor'])), themeCss: generateThemeCss(soapboxConfig.get('brandColor')),
themeMode: settings.get('themeMode'), themeMode: settings.get('themeMode'),
customCss: state.getIn(['soapbox', 'customCss']), customCss: soapboxConfig.get('customCss'),
}; };
}; };

@ -5,6 +5,7 @@ import { connect } from 'react-redux';
import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
import Icon from 'soapbox/components/icon';
import Button from 'soapbox/components/button'; import Button from 'soapbox/components/button';
import ImmutablePureComponent from 'react-immutable-pure-component'; import ImmutablePureComponent from 'react-immutable-pure-component';
import { isStaff } from 'soapbox/utils/accounts'; import { isStaff } from 'soapbox/utils/accounts';
@ -226,7 +227,7 @@ class Header extends ImmutablePureComponent {
const deactivated = account.getIn(['pleroma', 'deactivated'], false); const deactivated = account.getIn(['pleroma', 'deactivated'], false);
return ( return (
<div className={classNames('account__header', { inactive: !!account.get('moved') })}> <div className={classNames('account__header', { inactive: !!account.get('moved'), deactivated: deactivated })}>
<div className={classNames('account__header__image', { 'account__header__image--none': headerMissing || deactivated })}> <div className={classNames('account__header__image', { 'account__header__image--none': headerMissing || deactivated })}>
<div className='account__header__info'> <div className='account__header__info'>
{info} {info}
@ -239,10 +240,9 @@ class Header extends ImmutablePureComponent {
<div className='account__header__extra'> <div className='account__header__extra'>
<div className='account__header__avatar'> <div className='account__header__avatar'>
{ !deactivated && <Avatar account={account} size={avatarSize} /> } <Avatar account={account} size={avatarSize} />
</div> </div>
{ !deactivated &&
<div className='account__header__extra__links'> <div className='account__header__extra__links'>
<NavLink isActive={this.isStatusesPageActive} activeClassName='active' to={`/@${account.get('acct')}`} title={intl.formatNumber(account.get('statuses_count'))}> <NavLink isActive={this.isStatusesPageActive} activeClassName='active' to={`/@${account.get('acct')}`} title={intl.formatNumber(account.get('statuses_count'))}>
@ -280,7 +280,6 @@ class Header extends ImmutablePureComponent {
</div> </div>
} }
</div> </div>
}
{ {
isSmallScreen && isSmallScreen &&
@ -289,19 +288,17 @@ class Header extends ImmutablePureComponent {
</div> </div>
} }
{ me && !deactivated && account.get('id') !== me && {
me &&
<div className='account__header__extra__buttons'> <div className='account__header__extra__buttons'>
<ActionButton account={account} /> <ActionButton account={account} />
{(me && account.get('id') !== me) && {account.get('id') !== me && account.getIn(['pleroma', 'accepts_chat_messages'], false) === true &&
<Button className='button button-alternative-2' onClick={this.props.onDirect}> <Button className='button-alternative-2' onClick={this.props.onChat}>
<FormattedMessage <Icon id='comment' />
id='account.message' defaultMessage='Message' values={{ <FormattedMessage id='account.message' defaultMessage='Message' />
name: account.get('acct'),
}}
/>
</Button> </Button>
} }
{ me && <DropdownMenuContainer items={menu} icon='ellipsis-v' size={24} direction='right' /> } <DropdownMenuContainer items={menu} icon='ellipsis-v' size={24} direction='right' />
</div> </div>
} }

@ -19,7 +19,7 @@ export default class Header extends ImmutablePureComponent {
onMute: PropTypes.func.isRequired, onMute: PropTypes.func.isRequired,
onBlockDomain: PropTypes.func.isRequired, onBlockDomain: PropTypes.func.isRequired,
onUnblockDomain: PropTypes.func.isRequired, onUnblockDomain: PropTypes.func.isRequired,
onEndorseToggle: PropTypes.func.isRequired, // onEndorseToggle: PropTypes.func.isRequired,
onAddToList: PropTypes.func.isRequired, onAddToList: PropTypes.func.isRequired,
username: PropTypes.string, username: PropTypes.string,
}; };
@ -72,6 +72,10 @@ export default class Header extends ImmutablePureComponent {
this.props.onUnblockDomain(domain); this.props.onUnblockDomain(domain);
} }
handleChat = () => {
this.props.onChat(this.props.account, this.context.router.history);
}
// handleEndorseToggle = () => { // handleEndorseToggle = () => {
// this.props.onEndorseToggle(this.props.account); // this.props.onEndorseToggle(this.props.account);
// } // }
@ -95,6 +99,7 @@ export default class Header extends ImmutablePureComponent {
onBlock={this.handleBlock} onBlock={this.handleBlock}
onMention={this.handleMention} onMention={this.handleMention}
onDirect={this.handleDirect} onDirect={this.handleDirect}
onChat={this.handleChat}
onReblogToggle={this.handleReblogToggle} onReblogToggle={this.handleReblogToggle}
onReport={this.handleReport} onReport={this.handleReport}
onMute={this.handleMute} onMute={this.handleMute}

@ -22,6 +22,8 @@ import { blockDomain, unblockDomain } from '../../../actions/domain_blocks';
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
import { List as ImmutableList } from 'immutable'; import { List as ImmutableList } from 'immutable';
import { getSettings } from 'soapbox/actions/settings'; import { getSettings } from 'soapbox/actions/settings';
import { startChat, openChat } from 'soapbox/actions/chats';
import { isMobile } from 'soapbox/is_mobile';
const messages = defineMessages({ const messages = defineMessages({
unfollowConfirm: { id: 'confirmations.unfollow.confirm', defaultMessage: 'Unfollow' }, unfollowConfirm: { id: 'confirmations.unfollow.confirm', defaultMessage: 'Unfollow' },
@ -127,12 +129,22 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
dispatch(unblockDomain(domain)); dispatch(unblockDomain(domain));
}, },
onAddToList(account){ onAddToList(account) {
dispatch(openModal('LIST_ADDER', { dispatch(openModal('LIST_ADDER', {
accountId: account.get('id'), accountId: account.get('id'),
})); }));
}, },
onChat(account, router) {
// TODO make this faster
dispatch(startChat(account.get('id'))).then(chat => {
if (isMobile(window.innerWidth)) {
router.push(`/chats/${chat.id}`);
} else {
dispatch(openChat(chat.id));
}
}).catch(() => {});
},
}); });
export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Header)); export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Header));

@ -14,6 +14,7 @@ import { fetchAccountIdentityProofs } from '../../actions/identity_proofs';
import MissingIndicator from 'soapbox/components/missing_indicator'; import MissingIndicator from 'soapbox/components/missing_indicator';
import { NavLink } from 'react-router-dom'; import { NavLink } from 'react-router-dom';
import { fetchPatronAccount } from '../../actions/patron'; import { fetchPatronAccount } from '../../actions/patron';
import { getSoapboxConfig } from 'soapbox/actions/soapbox';
const emptyList = ImmutableList(); const emptyList = ImmutableList();
@ -21,6 +22,7 @@ const mapStateToProps = (state, { params: { username }, withReplies = false }) =
const me = state.get('me'); const me = state.get('me');
const accounts = state.getIn(['accounts']); const accounts = state.getIn(['accounts']);
const accountFetchError = (state.getIn(['accounts', -1, 'username'], '').toLowerCase() === username.toLowerCase()); const accountFetchError = (state.getIn(['accounts', -1, 'username'], '').toLowerCase() === username.toLowerCase());
const soapboxConfig = getSoapboxConfig(state);
let accountId = -1; let accountId = -1;
let accountUsername = username; let accountUsername = username;
@ -50,7 +52,7 @@ const mapStateToProps = (state, { params: { username }, withReplies = false }) =
isLoading: state.getIn(['timelines', `account:${path}`, 'isLoading']), isLoading: state.getIn(['timelines', `account:${path}`, 'isLoading']),
hasMore: state.getIn(['timelines', `account:${path}`, 'hasMore']), hasMore: state.getIn(['timelines', `account:${path}`, 'hasMore']),
me, me,
patronEnabled: state.getIn(['soapbox', 'extensions', 'patron', 'enabled']), patronEnabled: soapboxConfig.getIn(['extensions', 'patron', 'enabled']),
}; };
}; };

@ -0,0 +1,74 @@
import React from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { injectIntl } from 'react-intl';
import ImmutablePureComponent from 'react-immutable-pure-component';
import Avatar from 'soapbox/components/avatar';
import { acctFull } from 'soapbox/utils/accounts';
import { fetchChat } from 'soapbox/actions/chats';
import ChatBox from './components/chat_box';
import Column from 'soapbox/components/column';
import ColumnBackButton from 'soapbox/components/column_back_button';
import { makeGetChat } from 'soapbox/selectors';
const mapStateToProps = (state, { params }) => {
const getChat = makeGetChat();
return {
me: state.get('me'),
chat: getChat(state, { id: params.chatId }),
};
};
export default @connect(mapStateToProps)
@injectIntl
class ChatRoom extends ImmutablePureComponent {
static propTypes = {
dispatch: PropTypes.func.isRequired,
intl: PropTypes.object.isRequired,
chat: ImmutablePropTypes.map,
me: PropTypes.node,
}
handleInputRef = (el) => {
this.inputElem = el;
this.focusInput();
};
focusInput = () => {
if (!this.inputElem) return;
this.inputElem.focus();
}
componentDidMount() {
const { dispatch, params } = this.props;
dispatch(fetchChat(params.chatId));
}
render() {
const { chat } = this.props;
if (!chat) return null;
const account = chat.get('account');
return (
<Column>
<div className='chatroom__back'>
<ColumnBackButton />
<div className='chatroom__header'>
<Avatar account={account} size={18} />
<div className='chatroom__title'>
@{acctFull(account)}
</div>
</div>
</div>
<ChatBox
chatId={chat.get('id')}
onSetInputRef={this.handleInputRef}
/>
</Column>
);
}
}

@ -0,0 +1,49 @@
import React from 'react';
import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types';
import Avatar from '../../../components/avatar';
import DisplayName from '../../../components/display_name';
import ImmutablePureComponent from 'react-immutable-pure-component';
import { shortNumberFormat } from 'soapbox/utils/numbers';
import emojify from 'soapbox/features/emoji/emoji';
export default class Chat extends ImmutablePureComponent {
static propTypes = {
chat: ImmutablePropTypes.map.isRequired,
onClick: PropTypes.func,
};
handleClick = () => {
this.props.onClick(this.props.chat);
}
render() {
const { chat } = this.props;
if (!chat) return null;
const account = chat.get('account');
const unreadCount = chat.get('unread');
const content = chat.getIn(['last_message', 'content']);
const parsedContent = content ? emojify(content) : '';
return (
<div className='account'>
<button className='floating-link' onClick={this.handleClick} />
<div className='account__wrapper'>
<div key={account.get('id')} className='account__display-name'>
<div className='account__avatar-wrapper'>
<Avatar account={account} size={36} />
</div>
<DisplayName account={account} />
<span
className='chat__last-message'
dangerouslySetInnerHTML={{ __html: parsedContent }}
/>
{unreadCount > 0 && <i className='icon-with-badge__badge'>{shortNumberFormat(unreadCount)}</i>}
</div>
</div>
</div>
);
}
}

@ -0,0 +1,108 @@
import React from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { injectIntl, defineMessages } from 'react-intl';
import ImmutablePureComponent from 'react-immutable-pure-component';
import {
fetchChatMessages,
sendChatMessage,
markChatRead,
} from 'soapbox/actions/chats';
import { OrderedSet as ImmutableOrderedSet } from 'immutable';
import ChatMessageList from './chat_message_list';
const messages = defineMessages({
placeholder: { id: 'chat_box.input.placeholder', defaultMessage: 'Send a message…' },
});
const mapStateToProps = (state, { chatId }) => ({
me: state.get('me'),
chat: state.getIn(['chats', chatId]),
chatMessageIds: state.getIn(['chat_message_lists', chatId], ImmutableOrderedSet()),
});
export default @connect(mapStateToProps)
@injectIntl
class ChatBox extends ImmutablePureComponent {
static propTypes = {
dispatch: PropTypes.func.isRequired,
intl: PropTypes.object.isRequired,
chatId: PropTypes.string.isRequired,
chatMessageIds: ImmutablePropTypes.orderedSet,
chat: ImmutablePropTypes.map,
onSetInputRef: PropTypes.func,
me: PropTypes.node,
}
state = {
content: '',
}
handleKeyDown = (e) => {
const { chatId } = this.props;
if (e.key === 'Enter') {
this.props.dispatch(sendChatMessage(chatId, this.state));
this.setState({ content: '' });
e.preventDefault();
}
}
handleContentChange = (e) => {
this.setState({ content: e.target.value });
}
markRead = () => {
const { dispatch, chatId } = this.props;
dispatch(markChatRead(chatId));
}
handleHover = () => {
this.markRead();
}
setInputRef = (el) => {
const { onSetInputRef } = this.props;
this.inputElem = el;
onSetInputRef(el);
};
componentDidMount() {
const { dispatch, chatId } = this.props;
dispatch(fetchChatMessages(chatId));
}
componentDidUpdate(prevProps) {
const markReadConditions = [
() => this.props.chat !== undefined,
() => document.activeElement === this.inputElem,
() => this.props.chat.get('unread') > 0,
];
if (markReadConditions.every(c => c() === true))
this.markRead();
}
render() {
const { chatMessageIds, intl } = this.props;
if (!chatMessageIds) return null;
return (
<div className='chat-box' onMouseOver={this.handleHover}>
<ChatMessageList chatMessageIds={chatMessageIds} />
<div className='chat-box__actions simple_form'>
<textarea
rows={1}
placeholder={intl.formatMessage(messages.placeholder)}
onKeyDown={this.handleKeyDown}
onChange={this.handleContentChange}
value={this.state.content}
ref={this.setInputRef}
/>
</div>
</div>
);
}
}

@ -0,0 +1,71 @@
import React from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import { injectIntl } from 'react-intl';
import ImmutablePureComponent from 'react-immutable-pure-component';
import { fetchChats } from 'soapbox/actions/chats';
import Chat from './chat';
import { makeGetChat } from 'soapbox/selectors';
const chatDateComparator = (chatA, chatB) => {
// Sort most recently updated chats at the top
const a = new Date(chatA.get('updated_at'));
const b = new Date(chatB.get('updated_at'));
if (a === b) return 0;
if (a > b) return -1;
if (a < b) return 1;
return 0;
};
const mapStateToProps = state => {
const getChat = makeGetChat();
const chats = state.get('chats')
.map(chat => getChat(state, chat.toJS()))
.toList()
.sort(chatDateComparator);
return {
chats,
};
};
export default @connect(mapStateToProps)
@injectIntl
class ChatList extends ImmutablePureComponent {
static propTypes = {
dispatch: PropTypes.func.isRequired,
intl: PropTypes.object.isRequired,
onClickChat: PropTypes.func,
emptyMessage: PropTypes.node,
};
componentDidMount() {
this.props.dispatch(fetchChats());
}
render() {
const { chats, emptyMessage } = this.props;
return (
<div className='chat-list'>
<div className='chat-list__content'>
{chats.count() === 0 &&
<div className='empty-column-indicator'>{emptyMessage}</div>
}
{chats.map(chat => (
<div key={chat.get('id')} className='chat-list-item'>
<Chat
chat={chat}
onClick={this.props.onClickChat}
/>
</div>
))}
</div>
</div>
);
}
}

@ -0,0 +1,89 @@
import React from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { injectIntl } from 'react-intl';
import ImmutablePureComponent from 'react-immutable-pure-component';
import { List as ImmutableList } from 'immutable';
import emojify from 'soapbox/features/emoji/emoji';
import classNames from 'classnames';
const mapStateToProps = (state, { chatMessageIds }) => ({
me: state.get('me'),
chatMessages: chatMessageIds.reduce((acc, curr) => {
const chatMessage = state.getIn(['chat_messages', curr]);
return chatMessage ? acc.push(chatMessage) : acc;
}, ImmutableList()).sort(),
});
export default @connect(mapStateToProps)
@injectIntl
class ChatMessageList extends ImmutablePureComponent {
static propTypes = {
dispatch: PropTypes.func.isRequired,
intl: PropTypes.object.isRequired,
chatMessages: ImmutablePropTypes.list,
chatMessageIds: ImmutablePropTypes.orderedSet,
me: PropTypes.node,
}
static defaultProps = {
chatMessages: ImmutableList(),
}
scrollToBottom = () => {
if (!this.messagesEnd) return;
this.messagesEnd.scrollIntoView();
}
setMessageEndRef = (el) => {
this.messagesEnd = el;
this.scrollToBottom();
};
getFormattedTimestamp = (chatMessage) => {
const { intl } = this.props;
return intl.formatDate(
new Date(chatMessage.get('created_at')), {
hour12: false,
year: 'numeric',
month: 'short',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
}
);
};
componentDidUpdate(prevProps) {
if (prevProps.chatMessages !== this.props.chatMessages)
this.scrollToBottom();
}
render() {
const { chatMessages, me } = this.props;
return (
<div className='chat-messages'>
{chatMessages.map(chatMessage => (
<div
className={classNames('chat-message', {
'chat-message--me': chatMessage.get('account_id') === me,
'chat-message--pending': chatMessage.get('pending', false) === true,
})}
key={chatMessage.get('id')}
>
<span
title={this.getFormattedTimestamp(chatMessage)}
className='chat-message__bubble'
dangerouslySetInnerHTML={{ __html: emojify(chatMessage.get('content') || '') }}
/>
</div>
))}
<div style={{ float: 'left', clear: 'both' }} ref={this.setMessageEndRef} />
</div>
);
}
}

@ -0,0 +1,85 @@
import React from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { injectIntl } from 'react-intl';
import ImmutablePureComponent from 'react-immutable-pure-component';
import { getSettings } from 'soapbox/actions/settings';
import ChatList from './chat_list';
import { FormattedMessage } from 'react-intl';
import { makeGetChat } from 'soapbox/selectors';
import { openChat, toggleMainWindow } from 'soapbox/actions/chats';
import ChatWindow from './chat_window';
import { shortNumberFormat } from 'soapbox/utils/numbers';
const addChatsToPanes = (state, panesData) => {
const getChat = makeGetChat();
const newPanes = panesData.get('panes').map(pane => {
const chat = getChat(state, { id: pane.get('chat_id') });
return pane.set('chat', chat);
});
return panesData.set('panes', newPanes);
};
const mapStateToProps = state => {
const panesData = getSettings(state).get('chats');
return {
panesData: addChatsToPanes(state, panesData),
unreadCount: state.get('chats').reduce((acc, curr) => acc + curr.get('unread'), 0),
};
};
export default @connect(mapStateToProps)
@injectIntl
class ChatPanes extends ImmutablePureComponent {
static propTypes = {
dispatch: PropTypes.func.isRequired,
intl: PropTypes.object.isRequired,
panesData: ImmutablePropTypes.map,
}
handleClickChat = (chat) => {
this.props.dispatch(openChat(chat.get('id')));
}
handleMainWindowToggle = () => {
this.props.dispatch(toggleMainWindow());
}
render() {
const { panesData, unreadCount } = this.props;
const panes = panesData.get('panes');
const mainWindow = panesData.get('mainWindow');
const mainWindowPane = (
<div className={`pane pane--main pane--${mainWindow}`}>
<div className='pane__header'>
{unreadCount > 0 && <i className='icon-with-badge__badge'>{shortNumberFormat(unreadCount)}</i>}
<button className='pane__title' onClick={this.handleMainWindowToggle}>
<FormattedMessage id='chat_panels.main_window.title' defaultMessage='Chats' />
</button>
</div>
<div className='pane__content'>
<ChatList
onClickChat={this.handleClickChat}
emptyMessage={<FormattedMessage id='chat_panels.main_window.empty' defaultMessage="No chats found. To start a chat, visit a user's profile." />}
/>
</div>
</div>
);
return (
<div className='chat-panes'>
{mainWindowPane}
{panes.map((pane, i) =>
<ChatWindow idx={i} pane={pane} key={pane.get('chat_id')} />
)}
</div>
);
}
}

@ -0,0 +1,106 @@
import React from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { injectIntl } from 'react-intl';
import { Link } from 'react-router-dom';
import ImmutablePureComponent from 'react-immutable-pure-component';
import Avatar from 'soapbox/components/avatar';
import { acctFull } from 'soapbox/utils/accounts';
import IconButton from 'soapbox/components/icon_button';
import {
closeChat,
toggleChat,
} from 'soapbox/actions/chats';
import ChatBox from './chat_box';
import { shortNumberFormat } from 'soapbox/utils/numbers';
const mapStateToProps = (state, { pane }) => ({
me: state.get('me'),
chat: state.getIn(['chats', pane.get('chat_id')]),
});
export default @connect(mapStateToProps)
@injectIntl
class ChatWindow extends ImmutablePureComponent {
static propTypes = {
dispatch: PropTypes.func.isRequired,
intl: PropTypes.object.isRequired,
pane: ImmutablePropTypes.map.isRequired,
idx: PropTypes.number,
chat: ImmutablePropTypes.map,
me: PropTypes.node,
}
state = {
content: '',
}
handleChatClose = (chatId) => {
return (e) => {
this.props.dispatch(closeChat(chatId));
};
}
handleChatToggle = (chatId) => {
return (e) => {
this.props.dispatch(toggleChat(chatId));
};
}
handleContentChange = (e) => {
this.setState({ content: e.target.value });
}
handleInputRef = (el) => {
this.inputElem = el;
this.focusInput();
};
focusInput = () => {
if (!this.inputElem) return;
this.inputElem.focus();
}
componentDidUpdate(prevProps) {
const oldState = prevProps.pane.get('state');
const newState = this.props.pane.get('state');
if (oldState !== newState && newState === 'open')
this.focusInput();
}
render() {
const { pane, idx, chat } = this.props;
const account = pane.getIn(['chat', 'account']);
if (!chat || !account) return null;
const right = (285 * (idx + 1)) + 20;
const unreadCount = chat.get('unread');
return (
<div className={`pane pane--${pane.get('state')}`} style={{ right: `${right}px` }}>
<div className='pane__header'>
{unreadCount > 0
? <i className='icon-with-badge__badge'>{shortNumberFormat(unreadCount)}</i>
: <Link to={`/@${account.get('acct')}`}><Avatar account={account} size={18} /></Link>
}
<button className='pane__title' onClick={this.handleChatToggle(chat.get('id'))}>
@{acctFull(account)}
</button>
<div className='pane__close'>
<IconButton icon='close' title='Close chat' onClick={this.handleChatClose(chat.get('id'))} />
</div>
</div>
<div className='pane__content'>
<ChatBox
chatId={chat.get('id')}
onSetInputRef={this.handleInputRef}
/>
</div>
</div>
);
}
}

@ -0,0 +1,45 @@
import React from 'react';
import PropTypes from 'prop-types';
import Column from '../../components/column';
import ColumnHeader from '../../components/column_header';
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
import ChatList from './components/chat_list';
const messages = defineMessages({
title: { id: 'column.chats', defaultMessage: 'Chats' },
});
export default @injectIntl
class ChatIndex extends React.PureComponent {
static propTypes = {
intl: PropTypes.object.isRequired,
};
static contextTypes = {
router: PropTypes.object,
};
handleClickChat = (chat) => {
this.context.router.history.push(`/chats/${chat.get('id')}`);
}
render() {
const { intl } = this.props;
return (
<Column label={intl.formatMessage(messages.title)}>
<ColumnHeader
icon='comment'
title={intl.formatMessage(messages.title)}
/>
<ChatList
onClickChat={this.handleClickChat}
emptyMessage={<FormattedMessage id='chat_panels.main_window.empty' defaultMessage="No chats found. To start a chat, visit a user's profile." />}
/>
</Column>
);
}
}

@ -19,6 +19,7 @@ const messages = defineMessages({
mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' }, mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' },
filters: { id: 'navigation_bar.filters', defaultMessage: 'Muted words' }, filters: { id: 'navigation_bar.filters', defaultMessage: 'Muted words' },
admin_settings: { id: 'navigation_bar.admin_settings', defaultMessage: 'Admin settings' }, admin_settings: { id: 'navigation_bar.admin_settings', defaultMessage: 'Admin settings' },
soapbox_config: { id: 'navigation_bar.soapbox_config', defaultMessage: 'Soapbox config' },
security: { id: 'navigation_bar.security', defaultMessage: 'Security' }, security: { id: 'navigation_bar.security', defaultMessage: 'Security' },
logout: { id: 'navigation_bar.logout', defaultMessage: 'Logout' }, logout: { id: 'navigation_bar.logout', defaultMessage: 'Logout' },
keyboard_shortcuts: { id: 'navigation_bar.keyboard_shortcuts', defaultMessage: 'Hotkeys' }, keyboard_shortcuts: { id: 'navigation_bar.keyboard_shortcuts', defaultMessage: 'Hotkeys' },
@ -68,7 +69,6 @@ class ActionBar extends React.PureComponent {
let menu = []; let menu = [];
menu.push({ text: intl.formatMessage(messages.profile), to: `/@${meUsername}` }); menu.push({ text: intl.formatMessage(messages.profile), to: `/@${meUsername}` });
menu.push({ text: intl.formatMessage(messages.messages), to: '/messages' });
menu.push({ text: intl.formatMessage(messages.lists), to: '/lists' }); menu.push({ text: intl.formatMessage(messages.lists), to: '/lists' });
menu.push({ text: intl.formatMessage(messages.bookmarks), to: '/bookmarks' }); menu.push({ text: intl.formatMessage(messages.bookmarks), to: '/bookmarks' });
menu.push(null); menu.push(null);
@ -80,7 +80,8 @@ class ActionBar extends React.PureComponent {
menu.push(null); menu.push(null);
menu.push({ text: intl.formatMessage(messages.keyboard_shortcuts), action: this.handleHotkeyClick }); menu.push({ text: intl.formatMessage(messages.keyboard_shortcuts), action: this.handleHotkeyClick });
if (isStaff) { if (isStaff) {
menu.push({ text: intl.formatMessage(messages.admin_settings), href: '/pleroma/admin/', newTab: true }); menu.push({ text: intl.formatMessage(messages.admin_settings), href: '/pleroma/admin', newTab: true });
menu.push({ text: intl.formatMessage(messages.soapbox_config), to: '/soapbox/config' });
} }
menu.push({ text: intl.formatMessage(messages.preferences), to: '/settings/preferences' }); menu.push({ text: intl.formatMessage(messages.preferences), to: '/settings/preferences' });
menu.push({ text: intl.formatMessage(messages.security), to: '/auth/edit' }); menu.push({ text: intl.formatMessage(messages.security), to: '/auth/edit' });

@ -3,6 +3,10 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import classNames from 'classnames'; import classNames from 'classnames';
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
import { SketchPicker } from 'react-color';
import Overlay from 'react-overlays/lib/Overlay';
import { isMobile } from '../../is_mobile';
import detectPassiveEvents from 'detect-passive-events';
const FormPropTypes = { const FormPropTypes = {
label: PropTypes.oneOfType([ label: PropTypes.oneOfType([
@ -12,6 +16,8 @@ const FormPropTypes = {
]), ]),
}; };
const listenerOptions = detectPassiveEvents.hasSupport ? { passive: true } : false;
export const InputContainer = (props) => { export const InputContainer = (props) => {
const containerClass = classNames('input', { const containerClass = classNames('input', {
'with_label': props.label, 'with_label': props.label,
@ -186,6 +192,98 @@ export class RadioGroup extends ImmutablePureComponent {
} }
export class ColorPicker extends React.PureComponent {
static propTypes = {
style: PropTypes.object,
value: PropTypes.string.isRequired,
onChange: PropTypes.func.isRequired,
onClose: PropTypes.func,
}
handleDocumentClick = e => {
if (this.node && !this.node.contains(e.target)) {
this.props.onClose();
}
}
componentDidMount() {
document.addEventListener('click', this.handleDocumentClick, false);
document.addEventListener('touchend', this.handleDocumentClick, listenerOptions);
}
componentWillUnmount() {
document.removeEventListener('click', this.handleDocumentClick, false);
document.removeEventListener('touchend', this.handleDocumentClick, listenerOptions);
}
setRef = c => {
this.node = c;
}
render() {
const { style, value, onChange } = this.props;
let margin_left_picker = isMobile(window.innerWidth) ? '20px' : '12px';
return (
<div id='SketchPickerContainer' ref={this.setRef} style={{ ...style, marginLeft: margin_left_picker, position: 'absolute', zIndex: 1000 }}>
<SketchPicker color={value} disableAlpha onChange={onChange} />
</div>
);
}
}
export class ColorWithPicker extends ImmutablePureComponent {
static propTypes = {
buttonId: PropTypes.string.isRequired,
label: FormPropTypes.label,
value: PropTypes.string.isRequired,
onChange: PropTypes.func.isRequired,
}
onToggle = (e) => {
if (!e.key || e.key === 'Enter') {
if (this.state.active) {
this.onHidePicker();
} else {
this.onShowPicker(e);
}
}
}
state = {
active: false,
placement: null,
}
onHidePicker = () => {
this.setState({ active: false });
}
onShowPicker = ({ target }) => {
this.setState({ active: true });
this.setState({ placement: isMobile(window.innerWidth) ? 'bottom' : 'right' });
}
render() {
const { buttonId, label, value, onChange } = this.props;
const { active, placement } = this.state;
return (
<div className='label_input__color'>
<label>{label}</label>
<div id={buttonId} className='color-swatch' role='presentation' style={{ background: value }} title={value} value={value} onClick={this.onToggle} />
<Overlay show={active} placement={placement} target={this}>
<ColorPicker value={value} onChange={onChange} onClose={this.onHidePicker} />
</Overlay>
</div>
);
}
}
export class RadioItem extends ImmutablePureComponent { export class RadioItem extends ImmutablePureComponent {
static propTypes = { static propTypes = {
@ -256,3 +354,11 @@ export const FileChooser = props => (
FileChooser.defaultProps = { FileChooser.defaultProps = {
accept: ['image/jpeg', 'image/png', 'image/gif', 'image/webp'], accept: ['image/jpeg', 'image/png', 'image/gif', 'image/webp'],
}; };
export const FileChooserLogo = props => (
<SimpleInput type='file' {...props} />
);
FileChooserLogo.defaultProps = {
accept: ['image/svg', 'image/png'],
};

@ -142,6 +142,33 @@ class Notification extends ImmutablePureComponent {
); );
} }
renderChatMention(notification, link) {
const { intl } = this.props;
return (
<HotKeys handlers={this.getHandlers()}>
<div className='notification notification-chat-mention focusable' tabIndex='0' aria-label={notificationForScreenReader(intl, intl.formatMessage({ id: 'notification.chat_mention', defaultMessage: '{name} sent you a message' }, { name: notification.getIn(['account', 'acct']) }), notification.get('created_at'))}>
<div className='notification__message'>
<div className='notification__favourite-icon-wrapper'>
<Icon id='comment' fixedWidth />
</div>
<span title={notification.get('created_at')}>
<FormattedMessage id='notification.chat_mention' defaultMessage='{name} sent you a message' values={{ name: link }} />
</span>
</div>
</div>
<div className='chat-message'>
<span
className='chat-message__bubble'
dangerouslySetInnerHTML={{ __html: emojify(notification.getIn(['chat_message', 'content'])) }}
/>
</div>
</HotKeys>
);
}
renderEmojiReact(notification, link) { renderEmojiReact(notification, link) {
const { intl } = this.props; const { intl } = this.props;
@ -289,6 +316,8 @@ class Notification extends ImmutablePureComponent {
return this.renderPoll(notification); return this.renderPoll(notification);
case 'pleroma:emoji_reaction': case 'pleroma:emoji_reaction':
return this.renderEmojiReact(notification, link); return this.renderEmojiReact(notification, link);
case 'pleroma:chat_mention':
return this.renderChatMention(notification, link);
} }
return null; return null;

@ -13,7 +13,7 @@ import {
RadioItem, RadioItem,
SelectDropdown, SelectDropdown,
} from 'soapbox/features/forms'; } from 'soapbox/features/forms';
import SettingsCheckbox from './components/settings_checkbox'; import SettingsCheckbox from 'soapbox/components/settings_checkbox';
const languages = { const languages = {
en: 'English', en: 'English',

@ -5,11 +5,16 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
import ImmutablePureComponent from 'react-immutable-pure-component'; import ImmutablePureComponent from 'react-immutable-pure-component';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import { List as ImmutableList } from 'immutable'; import { List as ImmutableList } from 'immutable';
import { getSoapboxConfig } from 'soapbox/actions/soapbox';
const mapStateToProps = (state, props) => ({ const mapStateToProps = (state, props) => {
copyright: state.getIn(['soapbox', 'copyright']), const soapboxConfig = getSoapboxConfig(state);
navlinks: state.getIn(['soapbox', 'navlinks', 'homeFooter'], ImmutableList()),
}); return {
copyright: soapboxConfig.get('copyright'),
navlinks: soapboxConfig.getIn(['navlinks', 'homeFooter'], ImmutableList()),
};
};
export default @connect(mapStateToProps) export default @connect(mapStateToProps)
class Footer extends ImmutablePureComponent { class Footer extends ImmutablePureComponent {

@ -1,10 +1,11 @@
import React from 'react'; import React from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import ImmutablePureComponent from 'react-immutable-pure-component'; import ImmutablePureComponent from 'react-immutable-pure-component';
import { getSoapboxConfig } from 'soapbox/actions/soapbox';
const mapStateToProps = (state, props) => ({ const mapStateToProps = (state, props) => ({
instance: state.get('instance'), instance: state.get('instance'),
soapbox: state.get('soapbox'), soapbox: getSoapboxConfig(state),
}); });
class SiteBanner extends ImmutablePureComponent { class SiteBanner extends ImmutablePureComponent {
@ -15,7 +16,7 @@ class SiteBanner extends ImmutablePureComponent {
imgLogo: (<img alt={instance.get('title')} src={soapbox.get('banner')} />), imgLogo: (<img alt={instance.get('title')} src={soapbox.get('banner')} />),
textLogo: (<h1>{instance.get('title')}</h1>), textLogo: (<h1>{instance.get('title')}</h1>),
}; };
return soapbox.has('banner') ? logos.imgLogo : logos.textLogo; return soapbox.getIn(['banner']) ? logos.imgLogo : logos.textLogo;
} }
} }

@ -1,10 +1,11 @@
import React from 'react'; import React from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import ImmutablePureComponent from 'react-immutable-pure-component'; import ImmutablePureComponent from 'react-immutable-pure-component';
import { getSoapboxConfig } from 'soapbox/actions/soapbox';
const mapStateToProps = (state, props) => ({ const mapStateToProps = (state, props) => ({
instance: state.get('instance'), instance: state.get('instance'),
soapbox: state.get('soapbox'), soapbox: getSoapboxConfig(state),
}); });
class SiteLogo extends ImmutablePureComponent { class SiteLogo extends ImmutablePureComponent {
@ -15,7 +16,7 @@ class SiteLogo extends ImmutablePureComponent {
imgLogo: (<img alt={instance.get('title')} src={soapbox.get('logo')} />), imgLogo: (<img alt={instance.get('title')} src={soapbox.get('logo')} />),
textLogo: (<h1>{instance.get('title')}</h1>), textLogo: (<h1>{instance.get('title')}</h1>),
}; };
return soapbox.has('logo') ? logos.imgLogo : logos.textLogo; return soapbox.getIn(['logo']) ? logos.imgLogo : logos.textLogo;
} }
} }

@ -7,10 +7,11 @@ import Header from './components/header';
import Footer from './components/footer'; import Footer from './components/footer';
import LandingPage from '../landing_page'; import LandingPage from '../landing_page';
import AboutPage from '../about'; import AboutPage from '../about';
import { getSoapboxConfig } from 'soapbox/actions/soapbox';
const mapStateToProps = (state, props) => ({ const mapStateToProps = (state, props) => ({
instance: state.get('instance'), instance: state.get('instance'),
soapbox: state.get('soapbox'), soapbox: getSoapboxConfig(state),
}); });
const wave = ( const wave = (

@ -0,0 +1,365 @@
import React from 'react';
import { connect } from 'react-redux';
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
import ImmutablePureComponent from 'react-immutable-pure-component';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import Column from '../ui/components/column';
import {
SimpleForm,
FieldsGroup,
TextInput,
Checkbox,
FileChooser,
SimpleTextarea,
ColorWithPicker,
FileChooserLogo,
} from 'soapbox/features/forms';
import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable';
import { updateAdminConfig } from 'soapbox/actions/admin';
import Icon from 'soapbox/components/icon';
import { defaultConfig } from 'soapbox/actions/soapbox';
import { uploadMedia } from 'soapbox/actions/media';
const messages = defineMessages({
heading: { id: 'column.soapbox_config', defaultMessage: 'Soapbox config' },
copyrightFooterLabel: { id: 'soapbox_config.copyright_footer.meta_fields.label_placeholder', defaultMessage: 'Copyright footer' },
promoItemIcon: { id: 'soapbox_config.promo_panel.meta_fields.icon_placeholder', defaultMessage: 'Icon' },
promoItemLabel: { id: 'soapbox_config.promo_panel.meta_fields.label_placeholder', defaultMessage: 'Label' },
promoItemURL: { id: 'soapbox_config.promo_panel.meta_fields.url_placeholder', defaultMessage: 'URL' },
homeFooterItemLabel: { id: 'soapbox_config.home_footer.meta_fields.label_placeholder', defaultMessage: 'Label' },
homeFooterItemURL: { id: 'soapbox_config.home_footer.meta_fields.url_placeholder', defaultMessage: 'URL' },
customCssLabel: { id: 'soapbox_config.custom_css.meta_fields.url_placeholder', defaultMessage: 'URL' },
rawJSONLabel: { id: 'soapbox_config.raw_json_label', defaultMessage: 'Raw JSON data' },
rawJSONHint: { id: 'soapbox_config.raw_json_hint', defaultMessage: 'Advanced: Edit the settings data directly.' },
});
const templates = {
promoPanelItem: ImmutableMap({ icon: '', text: '', url: '' }),
footerItem: ImmutableMap({ title: '', url: '' }),
};
const mapStateToProps = state => ({
soapbox: state.get('soapbox'),
});
export default @connect(mapStateToProps)
@injectIntl
class SoapboxConfig extends ImmutablePureComponent {
static propTypes = {
soapbox: ImmutablePropTypes.map.isRequired,
dispatch: PropTypes.func.isRequired,
intl: PropTypes.object.isRequired,
};
state = {
isLoading: false,
soapbox: this.props.soapbox,
rawJSON: JSON.stringify(this.props.soapbox, null, 2),
jsonValid: true,
}
setConfig = (path, value) => {
const { soapbox } = this.state;
const config = soapbox.setIn(path, value);
this.setState({ soapbox: config, jsonValid: true });
};
putConfig = config => {
this.setState({ soapbox: config, jsonValid: true });
};
getParams = () => {
const { soapbox } = this.state;
return {
configs: [{
group: ':pleroma',
key: ':frontend_configurations',
value: [{
tuple: [':soapbox_fe', soapbox.toJS()],
}],
}],
};
}
handleSubmit = (event) => {
const { dispatch } = this.props;
dispatch(updateAdminConfig(this.getParams())).then(() => {
this.setState({ isLoading: false });
}).catch((error) => {
this.setState({ isLoading: false });
});
this.setState({ isLoading: true });
event.preventDefault();
}
handleChange = (path, getValue) => {
return e => {
this.setConfig(path, getValue(e));
};
};
handleFileChange = path => {
return e => {
const data = new FormData();
data.append('file', e.target.files[0]);
this.props.dispatch(uploadMedia(data)).then(({ data }) => {
this.handleChange(path, e => data.url)(e);
}).catch(() => {});
};
};
handleAddItem = (path, template) => {
return e => {
this.setConfig(
path,
this.getSoapboxConfig().getIn(path, ImmutableList()).push(template),
);
};
};
handleDeleteItem = path => {
return e => {
const soapbox = this.state.soapbox.deleteIn(path);
this.setState({ soapbox });
};
};
handleItemChange = (path, key, field, template) => {
return this.handleChange(
path, (e) =>
template
.merge(field)
.set(key, e.target.value)
);
};
handlePromoItemChange = (index, key, field) => {
return this.handleItemChange(
['promoPanel', 'items', index], key, field, templates.promoPanelItem
);
};
handleHomeFooterItemChange = (index, key, field) => {
return this.handleItemChange(
['navlinks', 'homeFooter', index], key, field, templates.footerItem
);
};
handleEditJSON = e => {
this.setState({ rawJSON: e.target.value });
}
getSoapboxConfig = () => {
return defaultConfig.mergeDeep(this.state.soapbox);
}
componentDidUpdate(prevProps, prevState) {
if (prevProps.soapbox !== this.props.soapbox) {
this.putConfig(this.props.soapbox);
}
if (prevState.soapbox !== this.state.soapbox) {
this.setState({ rawJSON: JSON.stringify(this.state.soapbox, null, 2) });
}
if (prevState.rawJSON !== this.state.rawJSON) {
try {
const data = fromJS(JSON.parse(this.state.rawJSON));
this.putConfig(data);
} catch {
this.setState({ jsonValid: false });
}
}
}
render() {
const { intl } = this.props;
const soapbox = this.getSoapboxConfig();
return (
<Column icon='cog' heading={intl.formatMessage(messages.heading)} backBtnSlim>
<SimpleForm onSubmit={this.handleSubmit}>
<fieldset disabled={this.state.isLoading}>
<FieldsGroup>
<div className='fields-row file-picker'>
<div className='fields-row__column fields-row__column-6'>
<img src={soapbox.get('logo')} />
</div>
<div className='fields-row__column fields-group fields-row__column-6'>
<FileChooserLogo
label={<FormattedMessage id='soapbox_config.fields.logo_label' defaultMessage='Logo' />}
name='logo'
hint={<FormattedMessage id='soapbox_config.hints.logo' defaultMessage='SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio' />}
onChange={this.handleFileChange(['logo'])}
/>
</div>
</div>
<div className='fields-row file-picker'>
<div className='fields-row__column fields-row__column-6'>
<img src={soapbox.get('banner')} />
</div>
<div className='fields-row__column fields-group fields-row__column-6'>
<FileChooser
label={<FormattedMessage id='soapbox_config.fields.banner_label' defaultMessage='Banner' />}
name='banner'
hint={<FormattedMessage id='soapbox_config.hints.banner' defaultMessage='PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px' />}
onChange={this.handleFileChange(['banner'])}
/>
</div>
</div>
</FieldsGroup>
<FieldsGroup>
<div className='fields-row__column fields-group'>
<ColorWithPicker
buttonId='brand_color'
label={<FormattedMessage id='soapbox_config.fields.brand_color_label' defaultMessage='Brand color' />}
value={soapbox.get('brandColor')}
onChange={this.handleChange(['brandColor'], (e) => e.hex)}
/>
</div>
</FieldsGroup>
<FieldsGroup>
<Checkbox
label={<FormattedMessage id='soapbox_config.fields.patron_enabled_label' defaultMessage='Patron module' />}
hint={<FormattedMessage id='soapbox_config.hints.patron_enabled' defaultMessage='Enables display of Patron module. Requires installation of Patron module.' />}
name='patron'
checked={soapbox.getIn(['extensions', 'patron', 'enabled'])}
onChange={this.handleChange(
['extensions', 'patron', 'enabled'], (e) => e.checked,
)}
/>
</FieldsGroup>
<FieldsGroup>
<TextInput
name='copyright'
label={intl.formatMessage(messages.copyrightFooterLabel)}
placeholder={intl.formatMessage(messages.copyrightFooterLabel)}
value={soapbox.get('copyright')}
onChange={this.handleChange(['copyright'], (e) => e.target.value)}
/>
</FieldsGroup>
<FieldsGroup>
<div className='fields-row__column fields-group'>
<div className='input with_block_label'>
<label><FormattedMessage id='soapbox_config.fields.promo_panel_fields_label' defaultMessage='Promo panel items' /></label>
<span className='hint'>
<FormattedMessage id='soapbox_config.hints.promo_panel_fields' defaultMessage='You can have custom defined links displayed on the left panel of the timelines page.' />
</span>
<span className='hint'>
<FormattedMessage id='soapbox_config.hints.promo_panel_icons' defaultMessage='{ link }' values={{ link: <a target='_blank' href='https://forkaweso.me/Fork-Awesome/icons/'>Soapbox Icons List</a> }} />
</span>
{
soapbox.getIn(['promoPanel', 'items']).map((field, i) => (
<div className='row' key={i}>
<TextInput
label={intl.formatMessage(messages.promoItemIcon)}
placeholder={intl.formatMessage(messages.promoItemIcon)}
value={field.get('icon')}
onChange={this.handlePromoItemChange(i, 'icon', field)}
/>
<TextInput
label={intl.formatMessage(messages.promoItemLabel)}
placeholder={intl.formatMessage(messages.promoItemLabel)}
value={field.get('text')}
onChange={this.handlePromoItemChange(i, 'text', field)}
/>
<TextInput
label={intl.formatMessage(messages.promoItemURL)}
placeholder={intl.formatMessage(messages.promoItemURL)}
value={field.get('url')}
onChange={this.handlePromoItemChange(i, 'url', field)}
/>
<Icon id='times-circle' onClick={this.handleDeleteItem(['promoPanel', 'items', i])} />
</div>
))
}
<div className='actions'>
<div name='button' type='button' role='presentation' className='btn button button-secondary' onClick={this.handleAddItem(['promoPanel', 'items'], templates.promoPanelItem)}>
<Icon id='plus-circle' />
<FormattedMessage id='soapbox_config.fields.promo_panel.add' defaultMessage='Add new Promo panel item' />
</div>
</div>
</div>
<div className='input with_block_label'>
<label><FormattedMessage id='soapbox_config.fields.home_footer_fields_label' defaultMessage='Home footer items' /></label>
<span className='hint'>
<FormattedMessage id='soapbox_config.hints.home_footer_fields' defaultMessage='You can have custom defined links displayed on the footer of your static pages' />
</span>
{
soapbox.getIn(['navlinks', 'homeFooter']).map((field, i) => (
<div className='row' key={i}>
<TextInput
label={intl.formatMessage(messages.homeFooterItemLabel)}
placeholder={intl.formatMessage(messages.homeFooterItemLabel)}
value={field.get('title')}
onChange={this.handleHomeFooterItemChange(i, 'title', field)}
/>
<TextInput
label={intl.formatMessage(messages.homeFooterItemURL)}
placeholder={intl.formatMessage(messages.homeFooterItemURL)}
value={field.get('url')}
onChange={this.handleHomeFooterItemChange(i, 'url', field)}
/>
<Icon id='times-circle' onClick={this.handleDeleteItem(['navlinks', 'homeFooter', i])} />
</div>
))
}
<div className='actions'>
<div name='button' type='button' role='presentation' className='btn button button-secondary' onClick={this.handleAddItem(['navlinks', 'homeFooter'], templates.footerItem)}>
<Icon id='plus-circle' />
<FormattedMessage id='soapbox_config.fields.home_footer.add' defaultMessage='Add new Home Footer Item' />
</div>
</div>
</div>
</div>
<div className='input with_block_label'>
<label><FormattedMessage id='soapbox_config.fields.custom_css_fields_label' defaultMessage='Custom CSS' /></label>
<span className='hint'>
<FormattedMessage id='soapbox_config.hints.custom_css_fields' defaultMessage='Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`' />
</span>
{
soapbox.get('customCss').map((field, i) => (
<div className='row' key={i}>
<TextInput
label={intl.formatMessage(messages.customCssLabel)}
placeholder={intl.formatMessage(messages.customCssLabel)}
value={field}
onChange={this.handleChange(['customCss', i], (e) => e.target.value)}
/>
<Icon id='times-circle' onClick={this.handleDeleteItem(['customCss', i])} />
</div>
))
}
<div className='actions'>
<div name='button' type='button' role='presentation' className='btn button button-secondary' onClick={this.handleAddItem(['customCss'], '')}>
<Icon id='plus-circle' />
<FormattedMessage id='soapbox_config.fields.custom_css.add' defaultMessage='Add another custom CSS URL' />
</div>
</div>
</div>
</FieldsGroup>
<FieldsGroup>
<div className={this.state.jsonValid ? 'code-editor' : 'code-editor code-editor--invalid'}>
<SimpleTextarea
label={intl.formatMessage(messages.rawJSONLabel)}
hint={intl.formatMessage(messages.rawJSONHint)}
value={this.state.rawJSON}
onChange={this.handleEditJSON}
rows={12}
/>
</div>
</FieldsGroup>
</fieldset>
<div className='actions'>
<button name='button' type='submit' className='btn button button-primary'>
<FormattedMessage id='soapbox_config.save' defaultMessage='Save' />
</button>
</div>
</SimpleForm>
</Column>
);
}
}

@ -0,0 +1,9 @@
import { connect } from 'react-redux';
import IconWithBadge from 'soapbox/components/icon_with_badge';
const mapStateToProps = state => ({
count: state.get('chats').reduce((acc, curr) => acc + curr.get('unread'), 0),
id: 'comment',
});
export default connect(mapStateToProps)(IconWithBadge);

@ -6,7 +6,6 @@ import { injectIntl, defineMessages } from 'react-intl';
const messages = defineMessages({ const messages = defineMessages({
edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit Profile' }, edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit Profile' },
messages: { id: 'navigation_bar.messages', defaultMessage: 'Messages' },
preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' }, preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },
security: { id: 'navigation_bar.security', defaultMessage: 'Security' }, security: { id: 'navigation_bar.security', defaultMessage: 'Security' },
lists: { id: 'column.lists', defaultMessage: 'Lists' }, lists: { id: 'column.lists', defaultMessage: 'Lists' },
@ -35,13 +34,6 @@ class FeaturesPanel extends React.PureComponent {
</NavLink> </NavLink>
</div> </div>
<div className='promo-panel-item'>
<NavLink className='promo-panel-item__btn' to='/messages'>
<Icon id='envelope' className='promo-panel-item__icon' fixedWidth />
{intl.formatMessage(messages.messages)}
</NavLink>
</div>
<div className='promo-panel-item'> <div className='promo-panel-item'>
<NavLink className='promo-panel-item__btn' to='/bookmarks'> <NavLink className='promo-panel-item__btn' to='/bookmarks'>
<Icon id='bookmark' className='promo-panel-item__icon' fixedWidth /> <Icon id='bookmark' className='promo-panel-item__icon' fixedWidth />

@ -73,11 +73,10 @@ class ProfileInfoPanel extends ImmutablePureComponent {
<span dangerouslySetInnerHTML={displayNameHtml} className='profile-info-panel__name-content' /> <span dangerouslySetInnerHTML={displayNameHtml} className='profile-info-panel__name-content' />
{verified && <VerificationBadge />} {verified && <VerificationBadge />}
{badge} {badge}
{ !deactivated && <small>@{acctFull(account)} {lockedIcon}</small> } { <small>@{acctFull(account)} {lockedIcon}</small> }
</h1> </h1>
</div> </div>
{ !deactivated &&
<div className='profile-info-panel-content__badges'> <div className='profile-info-panel-content__badges'>
{isAdmin(account) && <Badge slug='admin' title='Admin' />} {isAdmin(account) && <Badge slug='admin' title='Admin' />}
{isModerator(account) && <Badge slug='moderator' title='Moderator' />} {isModerator(account) && <Badge slug='moderator' title='Moderator' />}
@ -91,17 +90,14 @@ class ProfileInfoPanel extends ImmutablePureComponent {
/> />
</div>} </div>}
</div> </div>
}
{ deactivated &&
<div className='profile-info-panel-content__deactivated'> <div className='profile-info-panel-content__deactivated'>
<FormattedMessage <FormattedMessage
id='account.deactivated_description' defaultMessage='This account has been deactivated.' id='account.deactivated_description' defaultMessage='This account has been deactivated.'
/> />
</div> </div>
}
{ !deactivated && {
(account.get('note').length > 0 && account.get('note') !== '<p></p>') && (account.get('note').length > 0 && account.get('note') !== '<p></p>') &&
<div className='profile-info-panel-content__bio' dangerouslySetInnerHTML={content} /> <div className='profile-info-panel-content__bio' dangerouslySetInnerHTML={content} />
} }

@ -2,9 +2,10 @@ import React from 'react';
import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePropTypes from 'react-immutable-proptypes';
import Icon from 'soapbox/components/icon'; import Icon from 'soapbox/components/icon';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { getSoapboxConfig } from 'soapbox/actions/soapbox';
const mapStateToProps = state => ({ const mapStateToProps = state => ({
promoItems: state.getIn(['soapbox', 'promoPanel', 'items']), promoItems: getSoapboxConfig(state).getIn(['promoPanel', 'items']),
}); });
export default @connect(mapStateToProps) export default @connect(mapStateToProps)

@ -0,0 +1,9 @@
import { connect } from 'react-redux';
import IconWithBadge from 'soapbox/components/icon_with_badge';
const mapStateToProps = state => ({
count: state.getIn(['admin', 'open_report_count']),
id: 'gavel',
});
export default connect(mapStateToProps)(IconWithBadge);

@ -6,6 +6,8 @@ import { FormattedMessage, injectIntl, defineMessages } from 'react-intl';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import classNames from 'classnames'; import classNames from 'classnames';
import NotificationsCounterIcon from './notifications_counter_icon'; import NotificationsCounterIcon from './notifications_counter_icon';
import ReportsCounterIcon from './reports_counter_icon';
import ChatsCounterIcon from './chats_counter_icon';
import SearchContainer from 'soapbox/features/compose/containers/search_container'; import SearchContainer from 'soapbox/features/compose/containers/search_container';
import Avatar from '../../../components/avatar'; import Avatar from '../../../components/avatar';
import ActionBar from 'soapbox/features/compose/components/action_bar'; import ActionBar from 'soapbox/features/compose/components/action_bar';
@ -13,6 +15,8 @@ import { openModal } from '../../../actions/modal';
import { openSidebar } from '../../../actions/sidebar'; import { openSidebar } from '../../../actions/sidebar';
import Icon from '../../../components/icon'; import Icon from '../../../components/icon';
import ThemeToggle from '../../ui/components/theme_toggle'; import ThemeToggle from '../../ui/components/theme_toggle';
import { getSoapboxConfig } from 'soapbox/actions/soapbox';
import { isStaff } from 'soapbox/utils/accounts';
const messages = defineMessages({ const messages = defineMessages({
post: { id: 'tabs_bar.post', defaultMessage: 'Post' }, post: { id: 'tabs_bar.post', defaultMessage: 'Post' },
@ -65,6 +69,22 @@ class TabsBar extends React.PureComponent {
<span><FormattedMessage id='tabs_bar.notifications' defaultMessage='Notifications' /></span> <span><FormattedMessage id='tabs_bar.notifications' defaultMessage='Notifications' /></span>
</NavLink>); </NavLink>);
} }
if (account) {
links.push(
<NavLink key='chats' className='tabs-bar__link tabs-bar__link--chats' to='/chats' data-preview-title-id='column.chats'>
<Icon id='comment' />
<ChatsCounterIcon />
<span><FormattedMessage id='tabs_bar.chats' defaultMessage='Chats' /></span>
</NavLink>);
}
if (account && isStaff(account)) {
links.push(
<a key='reports' className='tabs-bar__link' href='/pleroma/admin/#/reports/index' target='_blank' data-preview-title-id='tabs_bar.reports'>
<Icon id='gavel' />
<ReportsCounterIcon />
<span><FormattedMessage id='tabs_bar.reports' defaultMessage='Reports' /></span>
</a>);
}
links.push( links.push(
<NavLink key='search' className='tabs-bar__link tabs-bar__link--search' to='/search' data-preview-title-id='tabs_bar.search'> <NavLink key='search' className='tabs-bar__link tabs-bar__link--search' to='/search' data-preview-title-id='tabs_bar.search'>
<Icon id='search' /> <Icon id='search' />
@ -133,7 +153,7 @@ const mapStateToProps = state => {
const me = state.get('me'); const me = state.get('me');
return { return {
account: state.getIn(['accounts', me]), account: state.getIn(['accounts', me]),
logo: state.getIn(['soapbox', 'logo']), logo: getSoapboxConfig(state).get('logo'),
}; };
}; };

@ -22,10 +22,12 @@ const makeGetStatusIds = () => createSelector([
}); });
const mapStateToProps = (state, { timelineId }) => { const mapStateToProps = (state, { timelineId }) => {
const lastStatusId = state.getIn(['timelines', timelineId, 'items'], ImmutableList()).last();
const getStatusIds = makeGetStatusIds(); const getStatusIds = makeGetStatusIds();
return { return {
statusIds: getStatusIds(state, { type: timelineId }), statusIds: getStatusIds(state, { type: timelineId }),
lastStatusId: lastStatusId,
isLoading: state.getIn(['timelines', timelineId, 'isLoading'], true), isLoading: state.getIn(['timelines', timelineId, 'isLoading'], true),
isPartial: state.getIn(['timelines', timelineId, 'isPartial'], false), isPartial: state.getIn(['timelines', timelineId, 'isPartial'], false),
hasMore: state.getIn(['timelines', timelineId, 'hasMore']), hasMore: state.getIn(['timelines', timelineId, 'hasMore']),

@ -16,6 +16,7 @@ import { debounce } from 'lodash';
import { uploadCompose, resetCompose } from '../../actions/compose'; import { uploadCompose, resetCompose } from '../../actions/compose';
import { expandHomeTimeline } from '../../actions/timelines'; import { expandHomeTimeline } from '../../actions/timelines';
import { expandNotifications } from '../../actions/notifications'; import { expandNotifications } from '../../actions/notifications';
import { fetchReports } from '../../actions/admin';
import { fetchFilters } from '../../actions/filters'; import { fetchFilters } from '../../actions/filters';
import { clearHeight } from '../../actions/height_cache'; import { clearHeight } from '../../actions/height_cache';
import { openModal } from '../../actions/modal'; import { openModal } from '../../actions/modal';
@ -34,6 +35,8 @@ import SidebarMenu from '../../components/sidebar_menu';
import { connectUserStream } from '../../actions/streaming'; import { connectUserStream } from '../../actions/streaming';
import { Redirect } from 'react-router-dom'; import { Redirect } from 'react-router-dom';
import Icon from 'soapbox/components/icon'; import Icon from 'soapbox/components/icon';
import { isStaff } from 'soapbox/utils/accounts';
import ChatPanes from 'soapbox/features/chats/components/chat_panes';
import { import {
Status, Status,
@ -72,9 +75,12 @@ import {
LoginPage, LoginPage,
Preferences, Preferences,
EditProfile, EditProfile,
SoapboxConfig,
PasswordReset, PasswordReset,
SecurityForm, SecurityForm,
MfaForm, MfaForm,
ChatIndex,
ChatRoom,
} from './util/async-components'; } from './util/async-components';
// Dummy import, to make sure that <Status /> ends up in the application bundle. // Dummy import, to make sure that <Status /> ends up in the application bundle.
@ -88,7 +94,7 @@ const messages = defineMessages({
const mapStateToProps = state => { const mapStateToProps = state => {
const me = state.get('me'); const me = state.get('me');
const meUsername = state.getIn(['accounts', me, 'username']); const account = state.getIn(['accounts', me]);
return { return {
isComposing: state.getIn(['compose', 'is_composing']), isComposing: state.getIn(['compose', 'is_composing']),
@ -98,7 +104,7 @@ const mapStateToProps = state => {
accessToken: state.getIn(['auth', 'user', 'access_token']), accessToken: state.getIn(['auth', 'user', 'access_token']),
streamingUrl: state.getIn(['instance', 'urls', 'streaming_api']), streamingUrl: state.getIn(['instance', 'urls', 'streaming_api']),
me, me,
meUsername, account,
}; };
}; };
@ -152,8 +158,6 @@ const LAYOUT = {
}, },
}; };
const shouldHideFAB = path => path.match(/^\/posts\/|^\/search|^\/getting-started/);
class SwitchingColumnsArea extends React.PureComponent { class SwitchingColumnsArea extends React.PureComponent {
static propTypes = { static propTypes = {
@ -233,6 +237,9 @@ class SwitchingColumnsArea extends React.PureComponent {
<WrappedRoute path='/search' publicRoute page={SearchPage} component={Search} content={children} /> <WrappedRoute path='/search' publicRoute page={SearchPage} component={Search} content={children} />
<WrappedRoute path='/chats' exact layout={LAYOUT.DEFAULT} component={ChatIndex} content={children} />
<WrappedRoute path='/chats/:chatId' layout={LAYOUT.DEFAULT} component={ChatRoom} content={children} />
<WrappedRoute path='/follow_requests' layout={LAYOUT.DEFAULT} component={FollowRequests} content={children} /> <WrappedRoute path='/follow_requests' layout={LAYOUT.DEFAULT} component={FollowRequests} content={children} />
<WrappedRoute path='/blocks' layout={LAYOUT.DEFAULT} component={Blocks} content={children} /> <WrappedRoute path='/blocks' layout={LAYOUT.DEFAULT} component={Blocks} content={children} />
<WrappedRoute path='/domain_blocks' layout={LAYOUT.DEFAULT} component={DomainBlocks} content={children} /> <WrappedRoute path='/domain_blocks' layout={LAYOUT.DEFAULT} component={DomainBlocks} content={children} />
@ -254,6 +261,7 @@ class SwitchingColumnsArea extends React.PureComponent {
<Redirect exact from='/settings' to='/settings/preferences' /> <Redirect exact from='/settings' to='/settings/preferences' />
<WrappedRoute path='/settings/preferences' layout={LAYOUT.DEFAULT} component={Preferences} content={children} /> <WrappedRoute path='/settings/preferences' layout={LAYOUT.DEFAULT} component={Preferences} content={children} />
<WrappedRoute path='/settings/profile' layout={LAYOUT.DEFAULT} component={EditProfile} content={children} /> <WrappedRoute path='/settings/profile' layout={LAYOUT.DEFAULT} component={EditProfile} content={children} />
<WrappedRoute path='/soapbox/config' layout={LAYOUT.DEFAULT} component={SoapboxConfig} content={children} />
<WrappedRoute layout={LAYOUT.EMPTY} component={GenericNotFound} content={children} /> <WrappedRoute layout={LAYOUT.EMPTY} component={GenericNotFound} content={children} />
</Switch> </Switch>
@ -282,11 +290,12 @@ class UI extends React.PureComponent {
dropdownMenuIsOpen: PropTypes.bool, dropdownMenuIsOpen: PropTypes.bool,
me: SoapboxPropTypes.me, me: SoapboxPropTypes.me,
streamingUrl: PropTypes.string, streamingUrl: PropTypes.string,
meUsername: PropTypes.string, account: PropTypes.object,
}; };
state = { state = {
draggingOver: false, draggingOver: false,
mobile: isMobile(window.innerWidth),
}; };
handleBeforeUnload = (e) => { handleBeforeUnload = (e) => {
@ -395,10 +404,17 @@ class UI extends React.PureComponent {
} }
} }
handleResize = debounce(() => {
this.setState({ mobile: isMobile(window.innerWidth) });
}, 500, {
trailing: true,
});
componentDidMount() { componentDidMount() {
const { me } = this.props; const { account } = this.props;
if (!me) return; if (!account) return;
window.addEventListener('beforeunload', this.handleBeforeUnload, false); window.addEventListener('beforeunload', this.handleBeforeUnload, false);
window.addEventListener('resize', this.handleResize, { passive: true });
document.addEventListener('dragenter', this.handleDragEnter, false); document.addEventListener('dragenter', this.handleDragEnter, false);
document.addEventListener('dragover', this.handleDragOver, false); document.addEventListener('dragover', this.handleDragOver, false);
@ -414,10 +430,12 @@ class UI extends React.PureComponent {
window.setTimeout(() => Notification.requestPermission(), 120 * 1000); window.setTimeout(() => Notification.requestPermission(), 120 * 1000);
} }
if (me) { if (account) {
this.props.dispatch(expandHomeTimeline()); this.props.dispatch(expandHomeTimeline());
this.props.dispatch(expandNotifications()); this.props.dispatch(expandNotifications());
// this.props.dispatch(fetchGroups('member')); // this.props.dispatch(fetchGroups('member'));
if (isStaff(account))
this.props.dispatch(fetchReports({ state: 'open' }));
setTimeout(() => this.props.dispatch(fetchFilters()), 500); setTimeout(() => this.props.dispatch(fetchFilters()), 500);
} }
@ -430,6 +448,7 @@ class UI extends React.PureComponent {
componentWillUnmount() { componentWillUnmount() {
window.removeEventListener('beforeunload', this.handleBeforeUnload); window.removeEventListener('beforeunload', this.handleBeforeUnload);
window.removeEventListener('resize', this.handleResize);
document.removeEventListener('dragenter', this.handleDragEnter); document.removeEventListener('dragenter', this.handleDragEnter);
document.removeEventListener('dragover', this.handleDragOver); document.removeEventListener('dragover', this.handleDragOver);
document.removeEventListener('drop', this.handleDrop); document.removeEventListener('drop', this.handleDrop);
@ -520,18 +539,24 @@ class UI extends React.PureComponent {
} }
handleHotkeyGoToFavourites = () => { handleHotkeyGoToFavourites = () => {
const { meUsername } = this.props; const { account } = this.props;
this.context.router.history.push(`/${meUsername}/favorites`); if (!account) return;
this.context.router.history.push(`/${account.get('username')}/favorites`);
} }
handleHotkeyGoToPinned = () => { handleHotkeyGoToPinned = () => {
const { meUsername } = this.props; const { account } = this.props;
this.context.router.history.push(`/${meUsername}/pins`); if (!account) return;
this.context.router.history.push(`/${account.get('username')}/pins`);
} }
handleHotkeyGoToProfile = () => { handleHotkeyGoToProfile = () => {
const { meUsername } = this.props; const { account } = this.props;
this.context.router.history.push(`/${meUsername}`); if (!account) return;
this.context.router.history.push(`/${account.get('username')}`);
} }
handleHotkeyGoToBlocked = () => { handleHotkeyGoToBlocked = () => {
@ -550,9 +575,19 @@ class UI extends React.PureComponent {
this.props.dispatch(openModal('COMPOSE')); this.props.dispatch(openModal('COMPOSE'));
} }
shouldHideFAB = () => {
const path = this.context.router.history.location.pathname;
return path.match(/^\/posts\/|^\/search|^\/getting-started|^\/chats/);
}
isChatRoomLocation = () => {
const path = this.context.router.history.location.pathname;
return path.match(/^\/chats\/(.*)/);
}
render() { render() {
const { streamingUrl } = this.props; const { streamingUrl } = this.props;
const { draggingOver } = this.state; const { draggingOver, mobile } = this.state;
const { intl, children, isComposing, location, dropdownMenuIsOpen, me } = this.props; const { intl, children, isComposing, location, dropdownMenuIsOpen, me } = this.props;
if (me === null || !streamingUrl) return null; if (me === null || !streamingUrl) return null;
@ -575,11 +610,31 @@ class UI extends React.PureComponent {
goToRequests: this.handleHotkeyGoToRequests, goToRequests: this.handleHotkeyGoToRequests,
} : {}; } : {};
const floatingActionButton = shouldHideFAB(this.context.router.history.location.pathname) ? null : <button key='floating-action-button' onClick={this.handleOpenComposeModal} className='floating-action-button' aria-label={intl.formatMessage(messages.publish)}><Icon id='pencil' fixedWidth /></button>; const fabElem = (
<button
key='floating-action-button'
onClick={this.handleOpenComposeModal}
className='floating-action-button'
aria-label={intl.formatMessage(messages.publish)}
>
<Icon id='pencil' fixedWidth />
</button>
);
const floatingActionButton = this.shouldHideFAB() ? null : fabElem;
const classnames = classNames('ui', {
'is-composing': isComposing,
'ui--chatroom': this.isChatRoomLocation(),
});
const style = {
pointerEvents: dropdownMenuIsOpen ? 'none' : null,
};
return ( return (
<HotKeys keyMap={keyMap} handlers={handlers} ref={this.setHotkeysRef} attach={window} focused> <HotKeys keyMap={keyMap} handlers={handlers} ref={this.setHotkeysRef} attach={window} focused>
<div className={classNames('ui', { 'is-composing': isComposing })} ref={this.setRef} style={{ pointerEvents: dropdownMenuIsOpen ? 'none' : null }}> <div className={classnames} ref={this.setRef} style={style}>
<TabsBar /> <TabsBar />
<SwitchingColumnsArea location={location} onLayoutChange={this.handleLayoutChange}> <SwitchingColumnsArea location={location} onLayoutChange={this.handleLayoutChange}>
{children} {children}
@ -592,6 +647,7 @@ class UI extends React.PureComponent {
<ModalContainer /> <ModalContainer />
<UploadArea active={draggingOver} onClose={this.closeUploadModal} /> <UploadArea active={draggingOver} onClose={this.closeUploadModal} />
{me && <SidebarMenu />} {me && <SidebarMenu />}
{me && !mobile && <ChatPanes />}
</div> </div>
</HotKeys> </HotKeys>
); );

@ -182,6 +182,10 @@ export function EditProfile() {
return import(/* webpackChunkName: "features/edit_profile" */'../../edit_profile'); return import(/* webpackChunkName: "features/edit_profile" */'../../edit_profile');
} }
export function SoapboxConfig() {
return import(/* webpackChunkName: "features/soapbox_config" */'../../soapbox_config');
}
export function PasswordReset() { export function PasswordReset() {
return import(/* webpackChunkName: "features/auth_login" */'../../auth_login/components/password_reset'); return import(/* webpackChunkName: "features/auth_login" */'../../auth_login/components/password_reset');
} }
@ -193,3 +197,11 @@ export function SecurityForm() {
export function MfaForm() { export function MfaForm() {
return import(/* webpackChunkName: "features/security/mfa_form" */'../../security/mfa_form'); return import(/* webpackChunkName: "features/security/mfa_form" */'../../security/mfa_form');
} }
export function ChatIndex() {
return import(/* webpackChunkName: "features/chats" */'../../chats');
}
export function ChatRoom() {
return import(/* webpackChunkName: "features/chats/chat_room" */'../../chats/chat_room');
}

@ -4,6 +4,8 @@
"account.block": "حظر @{name}", "account.block": "حظر @{name}",
"account.block_domain": "إخفاء كل شيئ قادم من اسم النطاق {domain}", "account.block_domain": "إخفاء كل شيئ قادم من اسم النطاق {domain}",
"account.blocked": "محظور", "account.blocked": "محظور",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "رسالة خاصة إلى @{name}", "account.direct": "رسالة خاصة إلى @{name}",
"account.domain_blocked": "النطاق مخفي", "account.domain_blocked": "النطاق مخفي",
"account.edit_profile": "تعديل الملف التعريفي", "account.edit_profile": "تعديل الملف التعريفي",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "الخيط العام الموحد", "column.public": "الخيط العام الموحد",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "العودة", "column_back_button.label": "العودة",
"column_header.hide_settings": "إخفاء الإعدادات", "column_header.hide_settings": "إخفاء الإعدادات",
"column_header.show_settings": "عرض الإعدادات", "column_header.show_settings": "عرض الإعدادات",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "عرض / إخفاء", "media_gallery.toggle_visible": "عرض / إخفاء",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "التفضيلات", "navigation_bar.preferences": "التفضيلات",
"navigation_bar.public_timeline": "الخيط العام الموحد", "navigation_bar.public_timeline": "الخيط العام الموحد",
"navigation_bar.security": "الأمان", "navigation_bar.security": "الأمان",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "أُعجِب {name} بمنشورك", "notification.favourite": "أُعجِب {name} بمنشورك",
"notification.follow": "{name} يتابعك", "notification.follow": "{name} يتابعك",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "افتح الواجهة الإدارية لـ @{name}", "status.admin_account": "افتح الواجهة الإدارية لـ @{name}",
"status.admin_status": "افتح هذا المنشور على واجهة الإشراف", "status.admin_status": "افتح هذا المنشور على واجهة الإشراف",
"status.block": "احجب @{name}", "status.block": "احجب @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "الإخطارات", "tabs_bar.notifications": "الإخطارات",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "البحث", "tabs_bar.search": "البحث",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Bloquiar a @{name}", "account.block": "Bloquiar a @{name}",
"account.block_domain": "Anubrir tolo de {domain}", "account.block_domain": "Anubrir tolo de {domain}",
"account.blocked": "Blocked", "account.blocked": "Blocked",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Unviar un mensaxe direutu a @{name}", "account.direct": "Unviar un mensaxe direutu a @{name}",
"account.domain_blocked": "Dominiu anubríu", "account.domain_blocked": "Dominiu anubríu",
"account.edit_profile": "Editar el perfil", "account.edit_profile": "Editar el perfil",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Llinia temporal federada", "column.public": "Llinia temporal federada",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Atrás", "column_back_button.label": "Atrás",
"column_header.hide_settings": "Hide settings", "column_header.hide_settings": "Hide settings",
"column_header.show_settings": "Show settings", "column_header.show_settings": "Show settings",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Toggle visibility", "media_gallery.toggle_visible": "Toggle visibility",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferencies", "navigation_bar.preferences": "Preferencies",
"navigation_bar.public_timeline": "Llinia temporal federada", "navigation_bar.public_timeline": "Llinia temporal federada",
"navigation_bar.security": "Seguranza", "navigation_bar.security": "Seguranza",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} favorited your post", "notification.favourite": "{name} favorited your post",
"notification.follow": "{name} siguióte", "notification.follow": "{name} siguióte",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this post in the moderation interface", "status.admin_status": "Open this post in the moderation interface",
"status.block": "Bloquiar a @{name}", "status.block": "Bloquiar a @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Avisos", "tabs_bar.notifications": "Avisos",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Блокирай", "account.block": "Блокирай",
"account.block_domain": "скрий всичко от {domain}", "account.block_domain": "скрий всичко от {domain}",
"account.blocked": "Блокирани", "account.blocked": "Блокирани",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Direct Message @{name}", "account.direct": "Direct Message @{name}",
"account.domain_blocked": "Скрит домейн", "account.domain_blocked": "Скрит домейн",
"account.edit_profile": "Редактирай профила си", "account.edit_profile": "Редактирай профила си",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Публичен канал", "column.public": "Публичен канал",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Назад", "column_back_button.label": "Назад",
"column_header.hide_settings": "Hide settings", "column_header.hide_settings": "Hide settings",
"column_header.show_settings": "Show settings", "column_header.show_settings": "Show settings",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Toggle visibility", "media_gallery.toggle_visible": "Toggle visibility",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Предпочитания", "navigation_bar.preferences": "Предпочитания",
"navigation_bar.public_timeline": "Публичен канал", "navigation_bar.public_timeline": "Публичен канал",
"navigation_bar.security": "Security", "navigation_bar.security": "Security",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} хареса твоята публикация", "notification.favourite": "{name} хареса твоята публикация",
"notification.follow": "{name} те последва", "notification.follow": "{name} те последва",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this post in the moderation interface", "status.admin_status": "Open this post in the moderation interface",
"status.block": "Block @{name}", "status.block": "Block @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Известия", "tabs_bar.notifications": "Известия",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "@{name} কে বন্ধ করুন", "account.block": "@{name} কে বন্ধ করুন",
"account.block_domain": "{domain} থেকে সব সরিয়ে ফেলুন", "account.block_domain": "{domain} থেকে সব সরিয়ে ফেলুন",
"account.blocked": "বন্ধ করা হয়েছে", "account.blocked": "বন্ধ করা হয়েছে",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "@{name} এর কাছে সরকারি লেখা পাঠাতে", "account.direct": "@{name} এর কাছে সরকারি লেখা পাঠাতে",
"account.domain_blocked": "ওয়েবসাইট সরিয়ে ফেলা হয়েছে", "account.domain_blocked": "ওয়েবসাইট সরিয়ে ফেলা হয়েছে",
"account.edit_profile": "নিজের পাতা সম্পাদনা করতে", "account.edit_profile": "নিজের পাতা সম্পাদনা করতে",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "যুক্ত সময়রেখা", "column.public": "যুক্ত সময়রেখা",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "পেছনে", "column_back_button.label": "পেছনে",
"column_header.hide_settings": "সেটিংগুলো সরান", "column_header.hide_settings": "সেটিংগুলো সরান",
"column_header.show_settings": "সেটিং দেখান", "column_header.show_settings": "সেটিং দেখান",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "দৃশ্যতার অবস্থা বদলান", "media_gallery.toggle_visible": "দৃশ্যতার অবস্থা বদলান",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "পছন্দসমূহ", "navigation_bar.preferences": "পছন্দসমূহ",
"navigation_bar.public_timeline": "যুক্তবিশ্বের সময়রেখা", "navigation_bar.public_timeline": "যুক্তবিশ্বের সময়রেখা",
"navigation_bar.security": "নিরাপত্তা", "navigation_bar.security": "নিরাপত্তা",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} আপনার কার্যক্রম পছন্দ করেছেন", "notification.favourite": "{name} আপনার কার্যক্রম পছন্দ করেছেন",
"notification.follow": "{name} আপনাকে অনুসরণ করেছেন", "notification.follow": "{name} আপনাকে অনুসরণ করেছেন",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "@{name} র জন্য পরিচালনার ইন্টারফেসে ঢুকুন", "status.admin_account": "@{name} র জন্য পরিচালনার ইন্টারফেসে ঢুকুন",
"status.admin_status": "যায় লেখাটি পরিচালনার ইন্টারফেসে খুলুন", "status.admin_status": "যায় লেখাটি পরিচালনার ইন্টারফেসে খুলুন",
"status.block": "@{name}কে বন্ধ করুন", "status.block": "@{name}কে বন্ধ করুন",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "প্রজ্ঞাপনগুলো", "tabs_bar.notifications": "প্রজ্ঞাপনগুলো",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "খুঁজতে", "tabs_bar.search": "খুঁজতে",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Stankañ @{name}", "account.block": "Stankañ @{name}",
"account.block_domain": "Kuzh kement tra a {domain}", "account.block_domain": "Kuzh kement tra a {domain}",
"account.blocked": "Stanket", "account.blocked": "Stanket",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Kas ur c'hemennad da @{name}", "account.direct": "Kas ur c'hemennad da @{name}",
"account.domain_blocked": "Domani kuzhet", "account.domain_blocked": "Domani kuzhet",
"account.edit_profile": "Aozañ ar profil", "account.edit_profile": "Aozañ ar profil",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Federated timeline", "column.public": "Federated timeline",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Back", "column_back_button.label": "Back",
"column_header.hide_settings": "Hide settings", "column_header.hide_settings": "Hide settings",
"column_header.show_settings": "Show settings", "column_header.show_settings": "Show settings",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Toggle visibility", "media_gallery.toggle_visible": "Toggle visibility",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferences", "navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Federated timeline", "navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security", "navigation_bar.security": "Security",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} favorited your post", "notification.favourite": "{name} favorited your post",
"notification.follow": "{name} followed you", "notification.follow": "{name} followed you",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this post in the moderation interface", "status.admin_status": "Open this post in the moderation interface",
"status.block": "Block @{name}", "status.block": "Block @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notifications", "tabs_bar.notifications": "Notifications",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Bloqueja @{name}", "account.block": "Bloqueja @{name}",
"account.block_domain": "Amaga-ho tot de {domain}", "account.block_domain": "Amaga-ho tot de {domain}",
"account.blocked": "Bloquejat", "account.blocked": "Bloquejat",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Missatge directe @{name}", "account.direct": "Missatge directe @{name}",
"account.domain_blocked": "Domini ocult", "account.domain_blocked": "Domini ocult",
"account.edit_profile": "Editar el perfil", "account.edit_profile": "Editar el perfil",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Línia de temps federada", "column.public": "Línia de temps federada",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Enrere", "column_back_button.label": "Enrere",
"column_header.hide_settings": "Amaga la configuració", "column_header.hide_settings": "Amaga la configuració",
"column_header.show_settings": "Mostra la configuració", "column_header.show_settings": "Mostra la configuració",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Alternar visibilitat", "media_gallery.toggle_visible": "Alternar visibilitat",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferències", "navigation_bar.preferences": "Preferències",
"navigation_bar.public_timeline": "Línia de temps federada", "navigation_bar.public_timeline": "Línia de temps federada",
"navigation_bar.security": "Seguretat", "navigation_bar.security": "Seguretat",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} ha afavorit el teu estat", "notification.favourite": "{name} ha afavorit el teu estat",
"notification.follow": "{name} et segueix", "notification.follow": "{name} et segueix",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Obre l'interfície de moderació per a @{name}", "status.admin_account": "Obre l'interfície de moderació per a @{name}",
"status.admin_status": "Obre aquest toot a la interfície de moderació", "status.admin_status": "Obre aquest toot a la interfície de moderació",
"status.block": "Bloqueja @{name}", "status.block": "Bloqueja @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notificacions", "tabs_bar.notifications": "Notificacions",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Cerca", "tabs_bar.search": "Cerca",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Bluccà @{name}", "account.block": "Bluccà @{name}",
"account.block_domain": "Piattà tuttu da {domain}", "account.block_domain": "Piattà tuttu da {domain}",
"account.blocked": "Bluccatu", "account.blocked": "Bluccatu",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Missaghju direttu @{name}", "account.direct": "Missaghju direttu @{name}",
"account.domain_blocked": "Duminiu piattatu", "account.domain_blocked": "Duminiu piattatu",
"account.edit_profile": "Mudificà u prufile", "account.edit_profile": "Mudificà u prufile",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Linea pubblica glubale", "column.public": "Linea pubblica glubale",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Ritornu", "column_back_button.label": "Ritornu",
"column_header.hide_settings": "Piattà i parametri", "column_header.hide_settings": "Piattà i parametri",
"column_header.show_settings": "Mustrà i parametri", "column_header.show_settings": "Mustrà i parametri",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Cambià a visibilità", "media_gallery.toggle_visible": "Cambià a visibilità",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferenze", "navigation_bar.preferences": "Preferenze",
"navigation_bar.public_timeline": "Linea pubblica glubale", "navigation_bar.public_timeline": "Linea pubblica glubale",
"navigation_bar.security": "Sicurità", "navigation_bar.security": "Sicurità",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} hà aghjuntu u vostru statutu à i so favuriti", "notification.favourite": "{name} hà aghjuntu u vostru statutu à i so favuriti",
"notification.follow": "{name} v'hà seguitatu", "notification.follow": "{name} v'hà seguitatu",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Apre l'interfaccia di muderazione per @{name}", "status.admin_account": "Apre l'interfaccia di muderazione per @{name}",
"status.admin_status": "Apre stu statutu in l'interfaccia di muderazione", "status.admin_status": "Apre stu statutu in l'interfaccia di muderazione",
"status.block": "Bluccà @{name}", "status.block": "Bluccà @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Nutificazione", "tabs_bar.notifications": "Nutificazione",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Cercà", "tabs_bar.search": "Cercà",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Zablokovat uživatele @{name}", "account.block": "Zablokovat uživatele @{name}",
"account.block_domain": "Skrýt vše z {domain}", "account.block_domain": "Skrýt vše z {domain}",
"account.blocked": "Blokován/a", "account.blocked": "Blokován/a",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Poslat přímou zprávu uživateli @{name}", "account.direct": "Poslat přímou zprávu uživateli @{name}",
"account.domain_blocked": "Doména skryta", "account.domain_blocked": "Doména skryta",
"account.edit_profile": "Upravit profil", "account.edit_profile": "Upravit profil",
@ -96,6 +98,7 @@
"column.preferences": "Preference", "column.preferences": "Preference",
"column.public": "Federovaná zeď", "column.public": "Federovaná zeď",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Zpět", "column_back_button.label": "Zpět",
"column_header.hide_settings": "Skrýt nastavení", "column_header.hide_settings": "Skrýt nastavení",
"column_header.show_settings": "Zobrazit nastavení", "column_header.show_settings": "Zobrazit nastavení",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Problémy s přihlášením?", "login.reset_password_hint": "Problémy s přihlášením?",
"media_gallery.toggle_visible": "Přepínat viditelnost", "media_gallery.toggle_visible": "Přepínat viditelnost",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Předvolby", "navigation_bar.preferences": "Předvolby",
"navigation_bar.public_timeline": "Federovaná zeď", "navigation_bar.public_timeline": "Federovaná zeď",
"navigation_bar.security": "Zabezpečení", "navigation_bar.security": "Zabezpečení",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reagoval/a na Váš příspěvek", "notification.emoji_react": "{name} reagoval/a na Váš příspěvek",
"notification.favourite": "{name} si oblíbil/a váš příspěvek", "notification.favourite": "{name} si oblíbil/a váš příspěvek",
"notification.follow": "{name} vás začal/a sledovat", "notification.follow": "{name} vás začal/a sledovat",
@ -470,6 +475,33 @@
"security.update_password.success": "Heslo úspěšně změněno.", "security.update_password.success": "Heslo úspěšně změněno.",
"signup_panel.subtitle": "Registrujte se pro diskuzi.", "signup_panel.subtitle": "Registrujte se pro diskuzi.",
"signup_panel.title": "Nový na {site_title}?", "signup_panel.title": "Nový na {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Otevřít moderátorské rozhraní pro uživatele @{name}", "status.admin_account": "Otevřít moderátorské rozhraní pro uživatele @{name}",
"status.admin_status": "Otevřít tento toot v moderátorském rozhraní", "status.admin_status": "Otevřít tento toot v moderátorském rozhraní",
"status.block": "Zablokovat uživatele @{name}", "status.block": "Zablokovat uživatele @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "Zprávy", "tabs_bar.news": "Zprávy",
"tabs_bar.notifications": "Oznámení", "tabs_bar.notifications": "Oznámení",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Hledat", "tabs_bar.search": "Hledat",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Blocio @{name}", "account.block": "Blocio @{name}",
"account.block_domain": "Cuddio popeth rhag {domain}", "account.block_domain": "Cuddio popeth rhag {domain}",
"account.blocked": "Blociwyd", "account.blocked": "Blociwyd",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Neges breifat @{name}", "account.direct": "Neges breifat @{name}",
"account.domain_blocked": "Parth wedi ei guddio", "account.domain_blocked": "Parth wedi ei guddio",
"account.edit_profile": "Golygu proffil", "account.edit_profile": "Golygu proffil",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Ffrwd y ffederasiwn", "column.public": "Ffrwd y ffederasiwn",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Nôl", "column_back_button.label": "Nôl",
"column_header.hide_settings": "Cuddio dewisiadau", "column_header.hide_settings": "Cuddio dewisiadau",
"column_header.show_settings": "Dangos gosodiadau", "column_header.show_settings": "Dangos gosodiadau",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Toglo gwelededd", "media_gallery.toggle_visible": "Toglo gwelededd",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Dewisiadau", "navigation_bar.preferences": "Dewisiadau",
"navigation_bar.public_timeline": "Ffrwd y ffederasiwn", "navigation_bar.public_timeline": "Ffrwd y ffederasiwn",
"navigation_bar.security": "Diogelwch", "navigation_bar.security": "Diogelwch",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "hoffodd {name} eich tŵt", "notification.favourite": "hoffodd {name} eich tŵt",
"notification.follow": "dilynodd {name} chi", "notification.follow": "dilynodd {name} chi",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Agor rhyngwyneb goruwchwylio ar gyfer @{name}", "status.admin_account": "Agor rhyngwyneb goruwchwylio ar gyfer @{name}",
"status.admin_status": "Agor y tŵt yn y rhyngwyneb goruwchwylio", "status.admin_status": "Agor y tŵt yn y rhyngwyneb goruwchwylio",
"status.block": "Blocio @{name}", "status.block": "Blocio @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Hysbysiadau", "tabs_bar.notifications": "Hysbysiadau",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Chwilio", "tabs_bar.search": "Chwilio",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Bloker @{name}", "account.block": "Bloker @{name}",
"account.block_domain": "Skjul alt fra {domain}", "account.block_domain": "Skjul alt fra {domain}",
"account.blocked": "Blokeret", "account.blocked": "Blokeret",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Send en direkte besked til @{name}", "account.direct": "Send en direkte besked til @{name}",
"account.domain_blocked": "Domænet er blevet skjult", "account.domain_blocked": "Domænet er blevet skjult",
"account.edit_profile": "Rediger profil", "account.edit_profile": "Rediger profil",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Fælles tidslinje", "column.public": "Fælles tidslinje",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Tilbage", "column_back_button.label": "Tilbage",
"column_header.hide_settings": "Skjul indstillinger", "column_header.hide_settings": "Skjul indstillinger",
"column_header.show_settings": "Vis indstillinger", "column_header.show_settings": "Vis indstillinger",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Ændre synlighed", "media_gallery.toggle_visible": "Ændre synlighed",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Præferencer", "navigation_bar.preferences": "Præferencer",
"navigation_bar.public_timeline": "Fælles tidslinje", "navigation_bar.public_timeline": "Fælles tidslinje",
"navigation_bar.security": "Sikkerhed", "navigation_bar.security": "Sikkerhed",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} favoriserede din status", "notification.favourite": "{name} favoriserede din status",
"notification.follow": "{name} fulgte dig", "notification.follow": "{name} fulgte dig",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Åben modereringsvisning for @{name}", "status.admin_account": "Åben modereringsvisning for @{name}",
"status.admin_status": "Åben denne status i modereringsvisningen", "status.admin_status": "Åben denne status i modereringsvisningen",
"status.block": "Bloker @{name}", "status.block": "Bloker @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notifikationer", "tabs_bar.notifications": "Notifikationer",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Søg", "tabs_bar.search": "Søg",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "@{name} blockieren", "account.block": "@{name} blockieren",
"account.block_domain": "Alles von {domain} verstecken", "account.block_domain": "Alles von {domain} verstecken",
"account.blocked": "Blockiert", "account.blocked": "Blockiert",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Direktnachricht an @{name}", "account.direct": "Direktnachricht an @{name}",
"account.domain_blocked": "Domain versteckt", "account.domain_blocked": "Domain versteckt",
"account.edit_profile": "Profil bearbeiten", "account.edit_profile": "Profil bearbeiten",
@ -96,6 +98,7 @@
"column.preferences": "Einstellungen", "column.preferences": "Einstellungen",
"column.public": "Föderierte Zeitleiste", "column.public": "Föderierte Zeitleiste",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Zurück", "column_back_button.label": "Zurück",
"column_header.hide_settings": "Einstellungen verbergen", "column_header.hide_settings": "Einstellungen verbergen",
"column_header.show_settings": "Einstellungen anzeigen", "column_header.show_settings": "Einstellungen anzeigen",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Probleme beim Anmelden?", "login.reset_password_hint": "Probleme beim Anmelden?",
"media_gallery.toggle_visible": "Sichtbarkeit umschalten", "media_gallery.toggle_visible": "Sichtbarkeit umschalten",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Einstellungen", "navigation_bar.preferences": "Einstellungen",
"navigation_bar.public_timeline": "Föderierte Zeitleiste", "navigation_bar.public_timeline": "Föderierte Zeitleiste",
"navigation_bar.security": "Sicherheit", "navigation_bar.security": "Sicherheit",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} hat auf deinen Beitrag reagiert", "notification.emoji_react": "{name} hat auf deinen Beitrag reagiert",
"notification.favourite": "{name} hat deinen Beitrag favorisiert", "notification.favourite": "{name} hat deinen Beitrag favorisiert",
"notification.follow": "{name} folgt dir", "notification.follow": "{name} folgt dir",
@ -470,6 +475,33 @@
"security.update_password.success": "Das Passwort wurde erfolgreich geändert.", "security.update_password.success": "Das Passwort wurde erfolgreich geändert.",
"signup_panel.subtitle": "Jetzt anmelden, um mitzureden.", "signup_panel.subtitle": "Jetzt anmelden, um mitzureden.",
"signup_panel.title": "Neu auf {site_title}?", "signup_panel.title": "Neu auf {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Öffne Moderationsoberfläche für @{name}", "status.admin_account": "Öffne Moderationsoberfläche für @{name}",
"status.admin_status": "Öffne Beitrag in der Moderationsoberfläche", "status.admin_status": "Öffne Beitrag in der Moderationsoberfläche",
"status.block": "Blockiere @{name}", "status.block": "Blockiere @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Benachrichtigungen", "tabs_bar.notifications": "Benachrichtigungen",
"tabs_bar.post": "Neuer Beitrag", "tabs_bar.post": "Neuer Beitrag",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Suche", "tabs_bar.search": "Suche",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -353,6 +353,10 @@
"defaultMessage": "Admin settings", "defaultMessage": "Admin settings",
"id": "navigation_bar.admin_settings" "id": "navigation_bar.admin_settings"
}, },
{
"defaultMessage": "Soapbox config",
"id": "navigation_bar.soapbox_config"
},
{ {
"defaultMessage": "Security", "defaultMessage": "Security",
"id": "navigation_bar.security" "id": "navigation_bar.security"
@ -749,6 +753,10 @@
"defaultMessage": "Block @{name}", "defaultMessage": "Block @{name}",
"id": "account.block" "id": "account.block"
}, },
{
"defaultMessage": "Unblock @{name}",
"id": "account.unblock"
},
{ {
"defaultMessage": "Mute @{name}", "defaultMessage": "Mute @{name}",
"id": "account.mute" "id": "account.mute"
@ -1058,6 +1066,10 @@
"defaultMessage": "Admin settings", "defaultMessage": "Admin settings",
"id": "navigation_bar.admin_settings" "id": "navigation_bar.admin_settings"
}, },
{
"defaultMessage": "Soapbox config",
"id": "navigation_bar.soapbox_config"
},
{ {
"defaultMessage": "Security", "defaultMessage": "Security",
"id": "navigation_bar.security" "id": "navigation_bar.security"
@ -2754,6 +2766,123 @@
], ],
"path": "app/soapbox/features/security/mfa_form.json" "path": "app/soapbox/features/security/mfa_form.json"
}, },
{
"descriptors": [
{
"defaultMessage": "Soapbox config",
"id": "column.soapbox_config"
},
{
"defaultMessage": "Copyright footer",
"id": "soapbox_config.copyright_footer.meta_fields.label_placeholder"
},
{
"defaultMessage": "Icon",
"id": "soapbox_config.promo_panel.meta_fields.icon_placeholder"
},
{
"defaultMessage": "Label",
"id": "soapbox_config.promo_panel.meta_fields.label_placeholder"
},
{
"defaultMessage": "URL",
"id": "soapbox_config.promo_panel.meta_fields.url_placeholder"
},
{
"defaultMessage": "Label",
"id": "soapbox_config.home_footer.meta_fields.label_placeholder"
},
{
"defaultMessage": "URL",
"id": "soapbox_config.home_footer.meta_fields.url_placeholder"
},
{
"defaultMessage": "URL",
"id": "soapbox_config.custom_css.meta_fields.url_placeholder"
},
{
"defaultMessage": "Raw JSON data",
"id": "soapbox_config.raw_json_label"
},
{
"defaultMessage": "Advanced: Edit the settings data directly.",
"id": "soapbox_config.raw_json_hint"
},
{
"defaultMessage": "Logo",
"id": "soapbox_config.fields.logo_label"
},
{
"defaultMessage": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"id": "soapbox_config.hints.logo"
},
{
"defaultMessage": "Banner",
"id": "soapbox_config.fields.banner_label"
},
{
"defaultMessage": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"id": "soapbox_config.hints.banner"
},
{
"defaultMessage": "Brand color",
"id": "soapbox_config.fields.brand_color_label"
},
{
"defaultMessage": "Patron module",
"id": "soapbox_config.fields.patron_enabled_label"
},
{
"defaultMessage": "Enables display of Patron module. Requires installation of Patron module.",
"id": "soapbox_config.hints.patron_enabled"
},
{
"defaultMessage": "Promo panel items",
"id": "soapbox_config.fields.promo_panel_fields_label"
},
{
"defaultMessage": "You can have custom defined links displayed on the left panel of the timelines page.",
"id": "soapbox_config.hints.promo_panel_fields"
},
{
"defaultMessage": "{ link }",
"id": "soapbox_config.hints.promo_panel_icons"
},
{
"defaultMessage": "Add new Promo panel item",
"id": "soapbox_config.fields.promo_panel.add"
},
{
"defaultMessage": "Home footer items",
"id": "soapbox_config.fields.home_footer_fields_label"
},
{
"defaultMessage": "You can have custom defined links displayed on the footer of your static pages",
"id": "soapbox_config.hints.home_footer_fields"
},
{
"defaultMessage": "Add new Home Footer Item",
"id": "soapbox_config.fields.home_footer.add"
},
{
"defaultMessage": "Custom CSS",
"id": "soapbox_config.fields.custom_css_fields_label"
},
{
"defaultMessage": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"id": "soapbox_config.hints.custom_css_fields"
},
{
"defaultMessage": "Add another custom CSS URL",
"id": "soapbox_config.fields.custom_css.add"
},
{
"defaultMessage": "Save",
"id": "soapbox_config.save"
}
],
"path": "app/soapbox/features/soapbox_config/index.json"
},
{ {
"descriptors": [ "descriptors": [
{ {
@ -3267,6 +3396,10 @@
"defaultMessage": "This account privacy status is set to locked. The owner manually reviews who can follow them.", "defaultMessage": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
"id": "account.locked_info" "id": "account.locked_info"
}, },
{
"defaultMessage": "Deactivated",
"id": "account.deactivated"
},
{ {
"defaultMessage": "Bot", "defaultMessage": "Bot",
"id": "account.badges.bot" "id": "account.badges.bot"
@ -3274,10 +3407,23 @@
{ {
"defaultMessage": "Member since {date}", "defaultMessage": "Member since {date}",
"id": "account.member_since" "id": "account.member_since"
},
{
"defaultMessage": "This account has been deactivated.",
"id": "account.deactivated_description"
} }
], ],
"path": "app/soapbox/features/ui/components/profile_info_panel.json" "path": "app/soapbox/features/ui/components/profile_info_panel.json"
}, },
{
"descriptors": [
{
"defaultMessage": "Media",
"id": "media_panel.title"
}
],
"path": "app/soapbox/features/ui/components/profile_media_panel.json"
},
{ {
"descriptors": [ "descriptors": [
{ {
@ -3350,6 +3496,10 @@
"defaultMessage": "Notifications", "defaultMessage": "Notifications",
"id": "tabs_bar.notifications" "id": "tabs_bar.notifications"
}, },
{
"defaultMessage": "Reports",
"id": "tabs_bar.reports"
},
{ {
"defaultMessage": "Search", "defaultMessage": "Search",
"id": "tabs_bar.search" "id": "tabs_bar.search"

@ -4,6 +4,8 @@
"account.block": "Αποκλεισμός @{name}", "account.block": "Αποκλεισμός @{name}",
"account.block_domain": "Απόκρυψε τα πάντα από το {domain}", "account.block_domain": "Απόκρυψε τα πάντα από το {domain}",
"account.blocked": "Αποκλεισμένος/η", "account.blocked": "Αποκλεισμένος/η",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Προσωπικό μήνυμα προς @{name}", "account.direct": "Προσωπικό μήνυμα προς @{name}",
"account.domain_blocked": "Κρυμμένος τομέας", "account.domain_blocked": "Κρυμμένος τομέας",
"account.edit_profile": "Επεξεργασία προφίλ", "account.edit_profile": "Επεξεργασία προφίλ",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Ομοσπονδιακή ροή", "column.public": "Ομοσπονδιακή ροή",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Πίσω", "column_back_button.label": "Πίσω",
"column_header.hide_settings": "Απόκρυψη ρυθμίσεων", "column_header.hide_settings": "Απόκρυψη ρυθμίσεων",
"column_header.show_settings": "Εμφάνιση ρυθμίσεων", "column_header.show_settings": "Εμφάνιση ρυθμίσεων",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Εναλλαγή ορατότητας", "media_gallery.toggle_visible": "Εναλλαγή ορατότητας",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Προτιμήσεις", "navigation_bar.preferences": "Προτιμήσεις",
"navigation_bar.public_timeline": "Ομοσπονδιακή ροή", "navigation_bar.public_timeline": "Ομοσπονδιακή ροή",
"navigation_bar.security": "Ασφάλεια", "navigation_bar.security": "Ασφάλεια",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "Ο/Η {name} σημείωσε ως αγαπημένη την κατάστασή σου", "notification.favourite": "Ο/Η {name} σημείωσε ως αγαπημένη την κατάστασή σου",
"notification.follow": "Ο/Η {name} σε ακολούθησε", "notification.follow": "Ο/Η {name} σε ακολούθησε",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Άνοιγμα λειτουργίας διαμεσολάβησης για τον/την @{name}", "status.admin_account": "Άνοιγμα λειτουργίας διαμεσολάβησης για τον/την @{name}",
"status.admin_status": "Άνοιγμα αυτής της δημοσίευσης στη λειτουργία διαμεσολάβησης", "status.admin_status": "Άνοιγμα αυτής της δημοσίευσης στη λειτουργία διαμεσολάβησης",
"status.block": "Αποκλεισμός @{name}", "status.block": "Αποκλεισμός @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Ειδοποιήσεις", "tabs_bar.notifications": "Ειδοποιήσεις",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Αναζήτηση", "tabs_bar.search": "Αναζήτηση",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Block @{name}", "account.block": "Block @{name}",
"account.block_domain": "Hide everything from {domain}", "account.block_domain": "Hide everything from {domain}",
"account.blocked": "Blocked", "account.blocked": "Blocked",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Direct message @{name}", "account.direct": "Direct message @{name}",
"account.domain_blocked": "Domain hidden", "account.domain_blocked": "Domain hidden",
"account.edit_profile": "Edit profile", "account.edit_profile": "Edit profile",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Federated timeline", "column.public": "Federated timeline",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Back", "column_back_button.label": "Back",
"column_header.hide_settings": "Hide settings", "column_header.hide_settings": "Hide settings",
"column_header.show_settings": "Show settings", "column_header.show_settings": "Show settings",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Toggle visibility", "media_gallery.toggle_visible": "Toggle visibility",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferences", "navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Federated timeline", "navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security", "navigation_bar.security": "Security",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} liked your post", "notification.favourite": "{name} liked your post",
"notification.follow": "{name} followed you", "notification.follow": "{name} followed you",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this post in the moderation interface", "status.admin_status": "Open this post in the moderation interface",
"status.block": "Block @{name}", "status.block": "Block @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notifications", "tabs_bar.notifications": "Notifications",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Bloki @{name}", "account.block": "Bloki @{name}",
"account.block_domain": "Kaŝi ĉion de {domain}", "account.block_domain": "Kaŝi ĉion de {domain}",
"account.blocked": "Blokita", "account.blocked": "Blokita",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Rekte mesaĝi @{name}", "account.direct": "Rekte mesaĝi @{name}",
"account.domain_blocked": "Domajno kaŝita", "account.domain_blocked": "Domajno kaŝita",
"account.edit_profile": "Redakti profilon", "account.edit_profile": "Redakti profilon",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Fratara tempolinio", "column.public": "Fratara tempolinio",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Reveni", "column_back_button.label": "Reveni",
"column_header.hide_settings": "Kaŝi agordojn", "column_header.hide_settings": "Kaŝi agordojn",
"column_header.show_settings": "Montri agordojn", "column_header.show_settings": "Montri agordojn",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Baskuligi videblecon", "media_gallery.toggle_visible": "Baskuligi videblecon",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferoj", "navigation_bar.preferences": "Preferoj",
"navigation_bar.public_timeline": "Fratara tempolinio", "navigation_bar.public_timeline": "Fratara tempolinio",
"navigation_bar.security": "Sekureco", "navigation_bar.security": "Sekureco",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} stelumis vian mesaĝon", "notification.favourite": "{name} stelumis vian mesaĝon",
"notification.follow": "{name} eksekvis vin", "notification.follow": "{name} eksekvis vin",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Malfermi la kontrolan interfacon por @{name}", "status.admin_account": "Malfermi la kontrolan interfacon por @{name}",
"status.admin_status": "Malfermi ĉi tiun mesaĝon en la kontrola interfaco", "status.admin_status": "Malfermi ĉi tiun mesaĝon en la kontrola interfaco",
"status.block": "Bloki @{name}", "status.block": "Bloki @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Sciigoj", "tabs_bar.notifications": "Sciigoj",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Serĉi", "tabs_bar.search": "Serĉi",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Bloquear a @{name}", "account.block": "Bloquear a @{name}",
"account.block_domain": "Ocultar todo de {domain}", "account.block_domain": "Ocultar todo de {domain}",
"account.blocked": "Bloqueado", "account.blocked": "Bloqueado",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Mensaje directo a @{name}", "account.direct": "Mensaje directo a @{name}",
"account.domain_blocked": "Dominio oculto", "account.domain_blocked": "Dominio oculto",
"account.edit_profile": "Editar perfil", "account.edit_profile": "Editar perfil",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Línea temporal federada", "column.public": "Línea temporal federada",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Volver", "column_back_button.label": "Volver",
"column_header.hide_settings": "Ocultar configuración", "column_header.hide_settings": "Ocultar configuración",
"column_header.show_settings": "Mostrar configuración", "column_header.show_settings": "Mostrar configuración",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Cambiar visibilidad", "media_gallery.toggle_visible": "Cambiar visibilidad",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Configuración", "navigation_bar.preferences": "Configuración",
"navigation_bar.public_timeline": "Línea temporal federada", "navigation_bar.public_timeline": "Línea temporal federada",
"navigation_bar.security": "Seguridad", "navigation_bar.security": "Seguridad",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} marcó tu estado como favorito", "notification.favourite": "{name} marcó tu estado como favorito",
"notification.follow": "{name} te empezó a seguir", "notification.follow": "{name} te empezó a seguir",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Abrir interface de moderación para @{name}", "status.admin_account": "Abrir interface de moderación para @{name}",
"status.admin_status": "Abrir este estado en la interface de moderación", "status.admin_status": "Abrir este estado en la interface de moderación",
"status.block": "Bloquear a @{name}", "status.block": "Bloquear a @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notificaciones", "tabs_bar.notifications": "Notificaciones",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Buscar", "tabs_bar.search": "Buscar",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Bloquear a @{name}", "account.block": "Bloquear a @{name}",
"account.block_domain": "Ocultar todo de {domain}", "account.block_domain": "Ocultar todo de {domain}",
"account.blocked": "Bloqueado", "account.blocked": "Bloqueado",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Mensaje directo a @{name}", "account.direct": "Mensaje directo a @{name}",
"account.domain_blocked": "Dominio oculto", "account.domain_blocked": "Dominio oculto",
"account.edit_profile": "Editar perfil", "account.edit_profile": "Editar perfil",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Línea de tiempo federada", "column.public": "Línea de tiempo federada",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Atrás", "column_back_button.label": "Atrás",
"column_header.hide_settings": "Ocultar configuración", "column_header.hide_settings": "Ocultar configuración",
"column_header.show_settings": "Mostrar ajustes", "column_header.show_settings": "Mostrar ajustes",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Cambiar visibilidad", "media_gallery.toggle_visible": "Cambiar visibilidad",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferencias", "navigation_bar.preferences": "Preferencias",
"navigation_bar.public_timeline": "Historia federada", "navigation_bar.public_timeline": "Historia federada",
"navigation_bar.security": "Seguridad", "navigation_bar.security": "Seguridad",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} marcó tu estado como favorito", "notification.favourite": "{name} marcó tu estado como favorito",
"notification.follow": "{name} te empezó a seguir", "notification.follow": "{name} te empezó a seguir",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Abrir interfaz de moderación para @{name}", "status.admin_account": "Abrir interfaz de moderación para @{name}",
"status.admin_status": "Abrir este estado en la interfaz de moderación", "status.admin_status": "Abrir este estado en la interfaz de moderación",
"status.block": "Bloquear a @{name}", "status.block": "Bloquear a @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notificaciones", "tabs_bar.notifications": "Notificaciones",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Buscar", "tabs_bar.search": "Buscar",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Blokeeri @{name}", "account.block": "Blokeeri @{name}",
"account.block_domain": "Peida kõik domeenist {domain}", "account.block_domain": "Peida kõik domeenist {domain}",
"account.blocked": "Blokeeritud", "account.blocked": "Blokeeritud",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Otsesõnum @{name}", "account.direct": "Otsesõnum @{name}",
"account.domain_blocked": "Domeen peidetud", "account.domain_blocked": "Domeen peidetud",
"account.edit_profile": "Muuda profiili", "account.edit_profile": "Muuda profiili",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Föderatiivne ajajoon", "column.public": "Föderatiivne ajajoon",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Tagasi", "column_back_button.label": "Tagasi",
"column_header.hide_settings": "Peida sätted", "column_header.hide_settings": "Peida sätted",
"column_header.show_settings": "Näita sätteid", "column_header.show_settings": "Näita sätteid",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Lülita nähtavus", "media_gallery.toggle_visible": "Lülita nähtavus",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Eelistused", "navigation_bar.preferences": "Eelistused",
"navigation_bar.public_timeline": "Föderatiivne ajajoon", "navigation_bar.public_timeline": "Föderatiivne ajajoon",
"navigation_bar.security": "Turvalisus", "navigation_bar.security": "Turvalisus",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} märkis su staatuse lemmikuks", "notification.favourite": "{name} märkis su staatuse lemmikuks",
"notification.follow": "{name} jälgib sind", "notification.follow": "{name} jälgib sind",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Ava moderaatoriliides kasutajale @{name}", "status.admin_account": "Ava moderaatoriliides kasutajale @{name}",
"status.admin_status": "Ava see staatus moderaatoriliites", "status.admin_status": "Ava see staatus moderaatoriliites",
"status.block": "Blokeeri @{name}", "status.block": "Blokeeri @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Teated", "tabs_bar.notifications": "Teated",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Otsi", "tabs_bar.search": "Otsi",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Blokeatu @{name}", "account.block": "Blokeatu @{name}",
"account.block_domain": "Ezkutatu {domain} domeinuko guztia", "account.block_domain": "Ezkutatu {domain} domeinuko guztia",
"account.blocked": "Blokeatuta", "account.blocked": "Blokeatuta",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Mezu zuzena @{name}(r)i", "account.direct": "Mezu zuzena @{name}(r)i",
"account.domain_blocked": "Ezkutatutako domeinua", "account.domain_blocked": "Ezkutatutako domeinua",
"account.edit_profile": "Aldatu profila", "account.edit_profile": "Aldatu profila",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Federatutako denbora-lerroa", "column.public": "Federatutako denbora-lerroa",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Atzera", "column_back_button.label": "Atzera",
"column_header.hide_settings": "Ezkutatu ezarpenak", "column_header.hide_settings": "Ezkutatu ezarpenak",
"column_header.show_settings": "Erakutsi ezarpenak", "column_header.show_settings": "Erakutsi ezarpenak",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Txandakatu ikusgaitasuna", "media_gallery.toggle_visible": "Txandakatu ikusgaitasuna",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Hobespenak", "navigation_bar.preferences": "Hobespenak",
"navigation_bar.public_timeline": "Federatutako denbora-lerroa", "navigation_bar.public_timeline": "Federatutako denbora-lerroa",
"navigation_bar.security": "Segurtasuna", "navigation_bar.security": "Segurtasuna",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name}(e)k zure mezua gogoko du", "notification.favourite": "{name}(e)k zure mezua gogoko du",
"notification.follow": "{name}(e)k jarraitzen zaitu", "notification.follow": "{name}(e)k jarraitzen zaitu",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Ireki @{name} erabiltzailearen moderazio interfazea", "status.admin_account": "Ireki @{name} erabiltzailearen moderazio interfazea",
"status.admin_status": "Ireki mezu hau moderazio interfazean", "status.admin_status": "Ireki mezu hau moderazio interfazean",
"status.block": "Blokeatu @{name}", "status.block": "Blokeatu @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Jakinarazpenak", "tabs_bar.notifications": "Jakinarazpenak",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Bilatu", "tabs_bar.search": "Bilatu",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "مسدودسازی @{name}", "account.block": "مسدودسازی @{name}",
"account.block_domain": "پنهان‌سازی همه چیز از سرور {domain}", "account.block_domain": "پنهان‌سازی همه چیز از سرور {domain}",
"account.blocked": "مسدود شده", "account.blocked": "مسدود شده",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "پیغام خصوصی به @{name}", "account.direct": "پیغام خصوصی به @{name}",
"account.domain_blocked": "دامین پنهان‌شده", "account.domain_blocked": "دامین پنهان‌شده",
"account.edit_profile": "ویرایش نمایه", "account.edit_profile": "ویرایش نمایه",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "نوشته‌های همه‌جا", "column.public": "نوشته‌های همه‌جا",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "بازگشت", "column_back_button.label": "بازگشت",
"column_header.hide_settings": "نهفتن تنظیمات", "column_header.hide_settings": "نهفتن تنظیمات",
"column_header.show_settings": "نمایش تنظیمات", "column_header.show_settings": "نمایش تنظیمات",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "تغییر پیدایی", "media_gallery.toggle_visible": "تغییر پیدایی",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "ترجیحات", "navigation_bar.preferences": "ترجیحات",
"navigation_bar.public_timeline": "نوشته‌های همه‌جا", "navigation_bar.public_timeline": "نوشته‌های همه‌جا",
"navigation_bar.security": "امنیت", "navigation_bar.security": "امنیت",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} نوشتهٔ شما را پسندید", "notification.favourite": "{name} نوشتهٔ شما را پسندید",
"notification.follow": "{name} پیگیر شما شد", "notification.follow": "{name} پیگیر شما شد",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "محیط مدیریت مربوط به @{name} را باز کن", "status.admin_account": "محیط مدیریت مربوط به @{name} را باز کن",
"status.admin_status": "این نوشته را در محیط مدیریت باز کن", "status.admin_status": "این نوشته را در محیط مدیریت باز کن",
"status.block": "مسدودسازی @{name}", "status.block": "مسدودسازی @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "اعلان‌ها", "tabs_bar.notifications": "اعلان‌ها",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "جستجو", "tabs_bar.search": "جستجو",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Estä @{name}", "account.block": "Estä @{name}",
"account.block_domain": "Piilota kaikki sisältö verkkotunnuksesta {domain}", "account.block_domain": "Piilota kaikki sisältö verkkotunnuksesta {domain}",
"account.blocked": "Estetty", "account.blocked": "Estetty",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Viesti käyttäjälle @{name}", "account.direct": "Viesti käyttäjälle @{name}",
"account.domain_blocked": "Verkko-osoite piilotettu", "account.domain_blocked": "Verkko-osoite piilotettu",
"account.edit_profile": "Muokkaa", "account.edit_profile": "Muokkaa",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Yleinen aikajana", "column.public": "Yleinen aikajana",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Takaisin", "column_back_button.label": "Takaisin",
"column_header.hide_settings": "Piilota asetukset", "column_header.hide_settings": "Piilota asetukset",
"column_header.show_settings": "Näytä asetukset", "column_header.show_settings": "Näytä asetukset",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Säädä näkyvyyttä", "media_gallery.toggle_visible": "Säädä näkyvyyttä",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Asetukset", "navigation_bar.preferences": "Asetukset",
"navigation_bar.public_timeline": "Yleinen aikajana", "navigation_bar.public_timeline": "Yleinen aikajana",
"navigation_bar.security": "Tunnukset", "navigation_bar.security": "Tunnukset",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} tykkäsi tilastasi", "notification.favourite": "{name} tykkäsi tilastasi",
"notification.follow": "{name} seurasi sinua", "notification.follow": "{name} seurasi sinua",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Avaa moderaattorinäkymä tilistä @{name}", "status.admin_account": "Avaa moderaattorinäkymä tilistä @{name}",
"status.admin_status": "Avaa tilapäivitys moderaattorinäkymässä", "status.admin_status": "Avaa tilapäivitys moderaattorinäkymässä",
"status.block": "Estä @{name}", "status.block": "Estä @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Ilmoitukset", "tabs_bar.notifications": "Ilmoitukset",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Hae", "tabs_bar.search": "Hae",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Bloquer @{name}", "account.block": "Bloquer @{name}",
"account.block_domain": "Tout masquer venant de {domain}", "account.block_domain": "Tout masquer venant de {domain}",
"account.blocked": "Bloqué", "account.blocked": "Bloqué",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Envoyer un message direct à @{name}", "account.direct": "Envoyer un message direct à @{name}",
"account.domain_blocked": "Domaine caché", "account.domain_blocked": "Domaine caché",
"account.edit_profile": "Modifier le profil", "account.edit_profile": "Modifier le profil",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Fil public global", "column.public": "Fil public global",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Retour", "column_back_button.label": "Retour",
"column_header.hide_settings": "Masquer les paramètres", "column_header.hide_settings": "Masquer les paramètres",
"column_header.show_settings": "Afficher les paramètres", "column_header.show_settings": "Afficher les paramètres",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Modifier la visibilité", "media_gallery.toggle_visible": "Modifier la visibilité",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Préférences", "navigation_bar.preferences": "Préférences",
"navigation_bar.public_timeline": "Fil public global", "navigation_bar.public_timeline": "Fil public global",
"navigation_bar.security": "Sécurité", "navigation_bar.security": "Sécurité",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} a ajouté à ses favoris:", "notification.favourite": "{name} a ajouté à ses favoris:",
"notification.follow": "{name} vous suit", "notification.follow": "{name} vous suit",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Ouvrir linterface de modération pour @{name}", "status.admin_account": "Ouvrir linterface de modération pour @{name}",
"status.admin_status": "Ouvrir ce statut dans linterface de modération", "status.admin_status": "Ouvrir ce statut dans linterface de modération",
"status.block": "Bloquer @{name}", "status.block": "Bloquer @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notifications", "tabs_bar.notifications": "Notifications",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Chercher", "tabs_bar.search": "Chercher",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Block @{name}", "account.block": "Block @{name}",
"account.block_domain": "Hide everything from {domain}", "account.block_domain": "Hide everything from {domain}",
"account.blocked": "Blocked", "account.blocked": "Blocked",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Direct message @{name}", "account.direct": "Direct message @{name}",
"account.domain_blocked": "Domain hidden", "account.domain_blocked": "Domain hidden",
"account.edit_profile": "Edit profile", "account.edit_profile": "Edit profile",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Federated timeline", "column.public": "Federated timeline",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Back", "column_back_button.label": "Back",
"column_header.hide_settings": "Hide settings", "column_header.hide_settings": "Hide settings",
"column_header.show_settings": "Show settings", "column_header.show_settings": "Show settings",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Toggle visibility", "media_gallery.toggle_visible": "Toggle visibility",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferences", "navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Federated timeline", "navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security", "navigation_bar.security": "Security",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} favorited your post", "notification.favourite": "{name} favorited your post",
"notification.follow": "{name} followed you", "notification.follow": "{name} followed you",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this post in the moderation interface", "status.admin_status": "Open this post in the moderation interface",
"status.block": "Block @{name}", "status.block": "Block @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notifications", "tabs_bar.notifications": "Notifications",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Bloquear @{name}", "account.block": "Bloquear @{name}",
"account.block_domain": "Ocultar calquer contido de {domain}", "account.block_domain": "Ocultar calquer contido de {domain}",
"account.blocked": "Bloqueada", "account.blocked": "Bloqueada",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Mensaxe directa @{name}", "account.direct": "Mensaxe directa @{name}",
"account.domain_blocked": "Dominio agochado", "account.domain_blocked": "Dominio agochado",
"account.edit_profile": "Editar perfil", "account.edit_profile": "Editar perfil",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Liña temporal federada", "column.public": "Liña temporal federada",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Atrás", "column_back_button.label": "Atrás",
"column_header.hide_settings": "Agochar axustes", "column_header.hide_settings": "Agochar axustes",
"column_header.show_settings": "Mostras axustes", "column_header.show_settings": "Mostras axustes",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Ocultar", "media_gallery.toggle_visible": "Ocultar",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferencias", "navigation_bar.preferences": "Preferencias",
"navigation_bar.public_timeline": "Liña temporal federada", "navigation_bar.public_timeline": "Liña temporal federada",
"navigation_bar.security": "Seguridade", "navigation_bar.security": "Seguridade",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} marcou como favorito o seu estado", "notification.favourite": "{name} marcou como favorito o seu estado",
"notification.follow": "{name} está a seguila", "notification.follow": "{name} está a seguila",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Abrir interface de moderación para @{name}", "status.admin_account": "Abrir interface de moderación para @{name}",
"status.admin_status": "Abrir este estado na interface de moderación", "status.admin_status": "Abrir este estado na interface de moderación",
"status.block": "Bloquear @{name}", "status.block": "Bloquear @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notificacións", "tabs_bar.notifications": "Notificacións",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Buscar", "tabs_bar.search": "Buscar",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "חסימת @{name}", "account.block": "חסימת @{name}",
"account.block_domain": "להסתיר הכל מהקהילה {domain}", "account.block_domain": "להסתיר הכל מהקהילה {domain}",
"account.blocked": "חסום", "account.blocked": "חסום",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Direct Message @{name}", "account.direct": "Direct Message @{name}",
"account.domain_blocked": "הדומיין חסוי", "account.domain_blocked": "הדומיין חסוי",
"account.edit_profile": "עריכת פרופיל", "account.edit_profile": "עריכת פרופיל",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "בפרהסיה", "column.public": "בפרהסיה",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "חזרה", "column_back_button.label": "חזרה",
"column_header.hide_settings": "הסתרת העדפות", "column_header.hide_settings": "הסתרת העדפות",
"column_header.show_settings": "הצגת העדפות", "column_header.show_settings": "הצגת העדפות",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "נראה בלתי נראה", "media_gallery.toggle_visible": "נראה בלתי נראה",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "העדפות", "navigation_bar.preferences": "העדפות",
"navigation_bar.public_timeline": "ציר זמן בין-קהילתי", "navigation_bar.public_timeline": "ציר זמן בין-קהילתי",
"navigation_bar.security": "Security", "navigation_bar.security": "Security",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "חצרוצך חובב על ידי {name}", "notification.favourite": "חצרוצך חובב על ידי {name}",
"notification.follow": "{name} במעקב אחרייך", "notification.follow": "{name} במעקב אחרייך",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this post in the moderation interface", "status.admin_status": "Open this post in the moderation interface",
"status.block": "Block @{name}", "status.block": "Block @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "התראות", "tabs_bar.notifications": "התראות",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Block @{name}", "account.block": "Block @{name}",
"account.block_domain": "Hide everything from {domain}", "account.block_domain": "Hide everything from {domain}",
"account.blocked": "Blocked", "account.blocked": "Blocked",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Direct message @{name}", "account.direct": "Direct message @{name}",
"account.domain_blocked": "Domain hidden", "account.domain_blocked": "Domain hidden",
"account.edit_profile": "Edit profile", "account.edit_profile": "Edit profile",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Federated timeline", "column.public": "Federated timeline",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Back", "column_back_button.label": "Back",
"column_header.hide_settings": "Hide settings", "column_header.hide_settings": "Hide settings",
"column_header.show_settings": "Show settings", "column_header.show_settings": "Show settings",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Toggle visibility", "media_gallery.toggle_visible": "Toggle visibility",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferences", "navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Federated timeline", "navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security", "navigation_bar.security": "Security",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} favorited your post", "notification.favourite": "{name} favorited your post",
"notification.follow": "{name} followed you", "notification.follow": "{name} followed you",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this post in the moderation interface", "status.admin_status": "Open this post in the moderation interface",
"status.block": "Block @{name}", "status.block": "Block @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notifications", "tabs_bar.notifications": "Notifications",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Blokiraj @{name}", "account.block": "Blokiraj @{name}",
"account.block_domain": "Sakrij sve sa {domain}", "account.block_domain": "Sakrij sve sa {domain}",
"account.blocked": "Blocked", "account.blocked": "Blocked",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Direct Message @{name}", "account.direct": "Direct Message @{name}",
"account.domain_blocked": "Domain hidden", "account.domain_blocked": "Domain hidden",
"account.edit_profile": "Uredi profil", "account.edit_profile": "Uredi profil",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Federalni timeline", "column.public": "Federalni timeline",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Natrag", "column_back_button.label": "Natrag",
"column_header.hide_settings": "Hide settings", "column_header.hide_settings": "Hide settings",
"column_header.show_settings": "Show settings", "column_header.show_settings": "Show settings",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Preklopi vidljivost", "media_gallery.toggle_visible": "Preklopi vidljivost",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Postavke", "navigation_bar.preferences": "Postavke",
"navigation_bar.public_timeline": "Federalni timeline", "navigation_bar.public_timeline": "Federalni timeline",
"navigation_bar.security": "Security", "navigation_bar.security": "Security",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} je lajkao tvoj status", "notification.favourite": "{name} je lajkao tvoj status",
"notification.follow": "{name} te sada slijedi", "notification.follow": "{name} te sada slijedi",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this post in the moderation interface", "status.admin_status": "Open this post in the moderation interface",
"status.block": "Block @{name}", "status.block": "Block @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notifikacije", "tabs_bar.notifications": "Notifikacije",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "@{name} letiltása", "account.block": "@{name} letiltása",
"account.block_domain": "Minden elrejtése innen: {domain}", "account.block_domain": "Minden elrejtése innen: {domain}",
"account.blocked": "Letiltva", "account.blocked": "Letiltva",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Közvetlen üzenet @{name} számára", "account.direct": "Közvetlen üzenet @{name} számára",
"account.domain_blocked": "Rejtett domain", "account.domain_blocked": "Rejtett domain",
"account.edit_profile": "Profil szerkesztése", "account.edit_profile": "Profil szerkesztése",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Nyilvános idővonal", "column.public": "Nyilvános idővonal",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Vissza", "column_back_button.label": "Vissza",
"column_header.hide_settings": "Beállítások elrejtése", "column_header.hide_settings": "Beállítások elrejtése",
"column_header.show_settings": "Beállítások mutatása", "column_header.show_settings": "Beállítások mutatása",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Láthatóság állítása", "media_gallery.toggle_visible": "Láthatóság állítása",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Beállítások", "navigation_bar.preferences": "Beállítások",
"navigation_bar.public_timeline": "Föderációs idővonal", "navigation_bar.public_timeline": "Föderációs idővonal",
"navigation_bar.security": "Biztonság", "navigation_bar.security": "Biztonság",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} kedvencnek jelölte egy tülködet", "notification.favourite": "{name} kedvencnek jelölte egy tülködet",
"notification.follow": "{name} követ téged", "notification.follow": "{name} követ téged",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Moderáció megnyitása @{name} felhasználóhoz", "status.admin_account": "Moderáció megnyitása @{name} felhasználóhoz",
"status.admin_status": "Tülk megnyitása moderációra", "status.admin_status": "Tülk megnyitása moderációra",
"status.block": "@{name} letiltása", "status.block": "@{name} letiltása",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Értesítések", "tabs_bar.notifications": "Értesítések",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Keresés", "tabs_bar.search": "Keresés",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Արգելափակել @{name}֊ին", "account.block": "Արգելափակել @{name}֊ին",
"account.block_domain": "Թաքցնել ամենը հետեւյալ տիրույթից՝ {domain}", "account.block_domain": "Թաքցնել ամենը հետեւյալ տիրույթից՝ {domain}",
"account.blocked": "Blocked", "account.blocked": "Blocked",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Direct Message @{name}", "account.direct": "Direct Message @{name}",
"account.domain_blocked": "Domain hidden", "account.domain_blocked": "Domain hidden",
"account.edit_profile": "Խմբագրել անձնական էջը", "account.edit_profile": "Խմբագրել անձնական էջը",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Դաշնային հոսք", "column.public": "Դաշնային հոսք",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Ետ", "column_back_button.label": "Ետ",
"column_header.hide_settings": "Թաքցնել կարգավորումները", "column_header.hide_settings": "Թաքցնել կարգավորումները",
"column_header.show_settings": "Ցուցադրել կարգավորումները", "column_header.show_settings": "Ցուցադրել կարգավորումները",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Ցուցադրել/թաքցնել", "media_gallery.toggle_visible": "Ցուցադրել/թաքցնել",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Նախապատվություններ", "navigation_bar.preferences": "Նախապատվություններ",
"navigation_bar.public_timeline": "Դաշնային հոսք", "navigation_bar.public_timeline": "Դաշնային հոսք",
"navigation_bar.security": "Անվտանգություն", "navigation_bar.security": "Անվտանգություն",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} հավանեց թութդ", "notification.favourite": "{name} հավանեց թութդ",
"notification.follow": "{name} սկսեց հետեւել քեզ", "notification.follow": "{name} սկսեց հետեւել քեզ",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this post in the moderation interface", "status.admin_status": "Open this post in the moderation interface",
"status.block": "Արգելափակել @{name}֊ին", "status.block": "Արգելափակել @{name}֊ին",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Ծանուցումներ", "tabs_bar.notifications": "Ծանուցումներ",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Փնտրել", "tabs_bar.search": "Փնտրել",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Blokir @{name}", "account.block": "Blokir @{name}",
"account.block_domain": "Sembunyikan segalanya dari {domain}", "account.block_domain": "Sembunyikan segalanya dari {domain}",
"account.blocked": "Terblokir", "account.blocked": "Terblokir",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Direct Message @{name}", "account.direct": "Direct Message @{name}",
"account.domain_blocked": "Domain disembunyikan", "account.domain_blocked": "Domain disembunyikan",
"account.edit_profile": "Ubah profil", "account.edit_profile": "Ubah profil",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Linimasa gabungan", "column.public": "Linimasa gabungan",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Kembali", "column_back_button.label": "Kembali",
"column_header.hide_settings": "Sembunyikan pengaturan", "column_header.hide_settings": "Sembunyikan pengaturan",
"column_header.show_settings": "Tampilkan pengaturan", "column_header.show_settings": "Tampilkan pengaturan",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Tampil/Sembunyikan", "media_gallery.toggle_visible": "Tampil/Sembunyikan",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Pengaturan", "navigation_bar.preferences": "Pengaturan",
"navigation_bar.public_timeline": "Linimasa gabungan", "navigation_bar.public_timeline": "Linimasa gabungan",
"navigation_bar.security": "Keamanan", "navigation_bar.security": "Keamanan",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} menyukai status anda", "notification.favourite": "{name} menyukai status anda",
"notification.follow": "{name} mengikuti anda", "notification.follow": "{name} mengikuti anda",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this post in the moderation interface", "status.admin_status": "Open this post in the moderation interface",
"status.block": "Block @{name}", "status.block": "Block @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notifikasi", "tabs_bar.notifications": "Notifikasi",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Blokusar @{name}", "account.block": "Blokusar @{name}",
"account.block_domain": "Hide everything from {domain}", "account.block_domain": "Hide everything from {domain}",
"account.blocked": "Blocked", "account.blocked": "Blocked",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Direct Message @{name}", "account.direct": "Direct Message @{name}",
"account.domain_blocked": "Domain hidden", "account.domain_blocked": "Domain hidden",
"account.edit_profile": "Modifikar profilo", "account.edit_profile": "Modifikar profilo",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Federata tempolineo", "column.public": "Federata tempolineo",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Retro", "column_back_button.label": "Retro",
"column_header.hide_settings": "Hide settings", "column_header.hide_settings": "Hide settings",
"column_header.show_settings": "Show settings", "column_header.show_settings": "Show settings",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Chanjar videbleso", "media_gallery.toggle_visible": "Chanjar videbleso",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferi", "navigation_bar.preferences": "Preferi",
"navigation_bar.public_timeline": "Federata tempolineo", "navigation_bar.public_timeline": "Federata tempolineo",
"navigation_bar.security": "Security", "navigation_bar.security": "Security",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} favorizis tua mesajo", "notification.favourite": "{name} favorizis tua mesajo",
"notification.follow": "{name} sequeskis tu", "notification.follow": "{name} sequeskis tu",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this post in the moderation interface", "status.admin_status": "Open this post in the moderation interface",
"status.block": "Block @{name}", "status.block": "Block @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Savigi", "tabs_bar.notifications": "Savigi",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Blocca @{name}", "account.block": "Blocca @{name}",
"account.block_domain": "Nascondi tutto da {domain}", "account.block_domain": "Nascondi tutto da {domain}",
"account.blocked": "Bloccato", "account.blocked": "Bloccato",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Invia messaggio privato a @{name}", "account.direct": "Invia messaggio privato a @{name}",
"account.domain_blocked": "Dominio nascosto", "account.domain_blocked": "Dominio nascosto",
"account.edit_profile": "Modifica profilo", "account.edit_profile": "Modifica profilo",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Timeline federata", "column.public": "Timeline federata",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Indietro", "column_back_button.label": "Indietro",
"column_header.hide_settings": "Nascondi impostazioni", "column_header.hide_settings": "Nascondi impostazioni",
"column_header.show_settings": "Mostra impostazioni", "column_header.show_settings": "Mostra impostazioni",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Imposta visibilità", "media_gallery.toggle_visible": "Imposta visibilità",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Impostazioni", "navigation_bar.preferences": "Impostazioni",
"navigation_bar.public_timeline": "Timeline federata", "navigation_bar.public_timeline": "Timeline federata",
"navigation_bar.security": "Sicurezza", "navigation_bar.security": "Sicurezza",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} ha apprezzato il tuo post", "notification.favourite": "{name} ha apprezzato il tuo post",
"notification.follow": "{name} ha iniziato a seguirti", "notification.follow": "{name} ha iniziato a seguirti",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Apri interfaccia di moderazione per @{name}", "status.admin_account": "Apri interfaccia di moderazione per @{name}",
"status.admin_status": "Apri questo status nell'interfaccia di moderazione", "status.admin_status": "Apri questo status nell'interfaccia di moderazione",
"status.block": "Blocca @{name}", "status.block": "Blocca @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notifiche", "tabs_bar.notifications": "Notifiche",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Cerca", "tabs_bar.search": "Cerca",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "@{name}さんをブロック", "account.block": "@{name}さんをブロック",
"account.block_domain": "{domain}全体を非表示", "account.block_domain": "{domain}全体を非表示",
"account.blocked": "ブロック済み", "account.blocked": "ブロック済み",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "@{name}さんにダイレクトメッセージ", "account.direct": "@{name}さんにダイレクトメッセージ",
"account.domain_blocked": "ドメイン非表示中", "account.domain_blocked": "ドメイン非表示中",
"account.edit_profile": "プロフィール編集", "account.edit_profile": "プロフィール編集",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "連合タイムライン", "column.public": "連合タイムライン",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "戻る", "column_back_button.label": "戻る",
"column_header.hide_settings": "設定を隠す", "column_header.hide_settings": "設定を隠す",
"column_header.show_settings": "設定を表示", "column_header.show_settings": "設定を表示",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "表示切り替え", "media_gallery.toggle_visible": "表示切り替え",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "ユーザー設定", "navigation_bar.preferences": "ユーザー設定",
"navigation_bar.public_timeline": "連合タイムライン", "navigation_bar.public_timeline": "連合タイムライン",
"navigation_bar.security": "セキュリティ", "navigation_bar.security": "セキュリティ",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name}さんがあなたのトゥートをお気に入りに登録しました", "notification.favourite": "{name}さんがあなたのトゥートをお気に入りに登録しました",
"notification.follow": "{name}さんにフォローされました", "notification.follow": "{name}さんにフォローされました",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "@{name} のモデレーション画面を開く", "status.admin_account": "@{name} のモデレーション画面を開く",
"status.admin_status": "このトゥートをモデレーション画面で開く", "status.admin_status": "このトゥートをモデレーション画面で開く",
"status.block": "@{name}さんをブロック", "status.block": "@{name}さんをブロック",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "通知", "tabs_bar.notifications": "通知",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "検索", "tabs_bar.search": "検索",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "დაბლოკე @{name}", "account.block": "დაბლოკე @{name}",
"account.block_domain": "დაიმალოს ყველაფერი დომენიდან {domain}", "account.block_domain": "დაიმალოს ყველაფერი დომენიდან {domain}",
"account.blocked": "დაიბლოკა", "account.blocked": "დაიბლოკა",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "პირდაპირი წერილი @{name}-ს", "account.direct": "პირდაპირი წერილი @{name}-ს",
"account.domain_blocked": "დომენი დამალულია", "account.domain_blocked": "დომენი დამალულია",
"account.edit_profile": "პროფილის ცვლილება", "account.edit_profile": "პროფილის ცვლილება",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "ფედერალური თაიმლაინი", "column.public": "ფედერალური თაიმლაინი",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "უკან", "column_back_button.label": "უკან",
"column_header.hide_settings": "პარამეტრების დამალვა", "column_header.hide_settings": "პარამეტრების დამალვა",
"column_header.show_settings": "პარამეტრების ჩვენება", "column_header.show_settings": "პარამეტრების ჩვენება",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "ხილვადობის ჩართვა", "media_gallery.toggle_visible": "ხილვადობის ჩართვა",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "პრეფერენსიები", "navigation_bar.preferences": "პრეფერენსიები",
"navigation_bar.public_timeline": "ფედერალური თაიმლაინი", "navigation_bar.public_timeline": "ფედერალური თაიმლაინი",
"navigation_bar.security": "უსაფრთხოება", "navigation_bar.security": "უსაფრთხოება",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name}-მა თქვენი სტატუსი აქცია ფავორიტად", "notification.favourite": "{name}-მა თქვენი სტატუსი აქცია ფავორიტად",
"notification.follow": "{name} გამოგყვათ", "notification.follow": "{name} გამოგყვათ",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this post in the moderation interface", "status.admin_status": "Open this post in the moderation interface",
"status.block": "დაბლოკე @{name}", "status.block": "დაბლოკე @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "შეტყობინებები", "tabs_bar.notifications": "შეტყობინებები",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "ძებნა", "tabs_bar.search": "ძებნა",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Бұғаттау @{name}", "account.block": "Бұғаттау @{name}",
"account.block_domain": "Домендегі барлығын бұғатта {domain}", "account.block_domain": "Домендегі барлығын бұғатта {domain}",
"account.blocked": "Бұғатталды", "account.blocked": "Бұғатталды",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Жеке хат @{name}", "account.direct": "Жеке хат @{name}",
"account.domain_blocked": "Домен жабық", "account.domain_blocked": "Домен жабық",
"account.edit_profile": "Профильді өңдеу", "account.edit_profile": "Профильді өңдеу",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Жаһандық желі", "column.public": "Жаһандық желі",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Артқа", "column_back_button.label": "Артқа",
"column_header.hide_settings": "Баптауларды жасыр", "column_header.hide_settings": "Баптауларды жасыр",
"column_header.show_settings": "Баптауларды көрсет", "column_header.show_settings": "Баптауларды көрсет",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Көрінуді қосу", "media_gallery.toggle_visible": "Көрінуді қосу",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Басымдықтар", "navigation_bar.preferences": "Басымдықтар",
"navigation_bar.public_timeline": "Жаһандық желі", "navigation_bar.public_timeline": "Жаһандық желі",
"navigation_bar.security": "Қауіпсіздік", "navigation_bar.security": "Қауіпсіздік",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} жазбаңызды таңдаулыға қосты", "notification.favourite": "{name} жазбаңызды таңдаулыға қосты",
"notification.follow": "{name} сізге жазылды", "notification.follow": "{name} сізге жазылды",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "@{name} үшін модерация интерфейсін аш", "status.admin_account": "@{name} үшін модерация интерфейсін аш",
"status.admin_status": "Бұл жазбаны модерация интерфейсінде аш", "status.admin_status": "Бұл жазбаны модерация интерфейсінде аш",
"status.block": "Бұғаттау @{name}", "status.block": "Бұғаттау @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Ескертпелер", "tabs_bar.notifications": "Ескертпелер",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Іздеу", "tabs_bar.search": "Іздеу",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "@{name}을 차단", "account.block": "@{name}을 차단",
"account.block_domain": "{domain} 전체를 숨김", "account.block_domain": "{domain} 전체를 숨김",
"account.blocked": "차단 됨", "account.blocked": "차단 됨",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "@{name}으로부터의 다이렉트 메시지", "account.direct": "@{name}으로부터의 다이렉트 메시지",
"account.domain_blocked": "도메인 숨겨짐", "account.domain_blocked": "도메인 숨겨짐",
"account.edit_profile": "프로필 편집", "account.edit_profile": "프로필 편집",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "연합 타임라인", "column.public": "연합 타임라인",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "돌아가기", "column_back_button.label": "돌아가기",
"column_header.hide_settings": "설정 숨기기", "column_header.hide_settings": "설정 숨기기",
"column_header.show_settings": "설정 보이기", "column_header.show_settings": "설정 보이기",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "표시 전환", "media_gallery.toggle_visible": "표시 전환",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "사용자 설정", "navigation_bar.preferences": "사용자 설정",
"navigation_bar.public_timeline": "연합 타임라인", "navigation_bar.public_timeline": "연합 타임라인",
"navigation_bar.security": "보안", "navigation_bar.security": "보안",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name}님이 즐겨찾기 했습니다", "notification.favourite": "{name}님이 즐겨찾기 했습니다",
"notification.follow": "{name}님이 나를 팔로우 했습니다", "notification.follow": "{name}님이 나를 팔로우 했습니다",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "@{name}에 대한 모더레이션 인터페이스 열기", "status.admin_account": "@{name}에 대한 모더레이션 인터페이스 열기",
"status.admin_status": "모더레이션 인터페이스에서 이 게시물 열기", "status.admin_status": "모더레이션 인터페이스에서 이 게시물 열기",
"status.block": "@{name} 차단", "status.block": "@{name} 차단",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "알림", "tabs_bar.notifications": "알림",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "검색", "tabs_bar.search": "검색",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Block @{name}", "account.block": "Block @{name}",
"account.block_domain": "Hide everything from {domain}", "account.block_domain": "Hide everything from {domain}",
"account.blocked": "Blocked", "account.blocked": "Blocked",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Direct message @{name}", "account.direct": "Direct message @{name}",
"account.domain_blocked": "Domain hidden", "account.domain_blocked": "Domain hidden",
"account.edit_profile": "Edit profile", "account.edit_profile": "Edit profile",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Federated timeline", "column.public": "Federated timeline",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Back", "column_back_button.label": "Back",
"column_header.hide_settings": "Hide settings", "column_header.hide_settings": "Hide settings",
"column_header.show_settings": "Show settings", "column_header.show_settings": "Show settings",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Toggle visibility", "media_gallery.toggle_visible": "Toggle visibility",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferences", "navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Federated timeline", "navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security", "navigation_bar.security": "Security",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} favorited your post", "notification.favourite": "{name} favorited your post",
"notification.follow": "{name} followed you", "notification.follow": "{name} followed you",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this post in the moderation interface", "status.admin_status": "Open this post in the moderation interface",
"status.block": "Block @{name}", "status.block": "Block @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notifications", "tabs_bar.notifications": "Notifications",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Bloķēt @{name}", "account.block": "Bloķēt @{name}",
"account.block_domain": "Slēpt visu no {domain}", "account.block_domain": "Slēpt visu no {domain}",
"account.blocked": "Bloķēts", "account.blocked": "Bloķēts",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Privātā ziņa @{name}", "account.direct": "Privātā ziņa @{name}",
"account.domain_blocked": "Domēns ir paslēpts", "account.domain_blocked": "Domēns ir paslēpts",
"account.edit_profile": "Labot profilu", "account.edit_profile": "Labot profilu",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Federatīvā laika līnija", "column.public": "Federatīvā laika līnija",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Atpakaļ", "column_back_button.label": "Atpakaļ",
"column_header.hide_settings": "Paslēpt iestatījumus", "column_header.hide_settings": "Paslēpt iestatījumus",
"column_header.show_settings": "Rādīt iestatījumus", "column_header.show_settings": "Rādīt iestatījumus",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Toggle visibility", "media_gallery.toggle_visible": "Toggle visibility",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferences", "navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Federated timeline", "navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security", "navigation_bar.security": "Security",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} favorited your post", "notification.favourite": "{name} favorited your post",
"notification.follow": "{name} followed you", "notification.follow": "{name} followed you",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this post in the moderation interface", "status.admin_status": "Open this post in the moderation interface",
"status.block": "Block @{name}", "status.block": "Block @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notifications", "tabs_bar.notifications": "Notifications",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Блокирај @{name}", "account.block": "Блокирај @{name}",
"account.block_domain": "Сокријај се од {domain}", "account.block_domain": "Сокријај се од {domain}",
"account.blocked": "Блокиран", "account.blocked": "Блокиран",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Директна порана @{name}", "account.direct": "Директна порана @{name}",
"account.domain_blocked": "Скриен домен", "account.domain_blocked": "Скриен домен",
"account.edit_profile": "Измени профил", "account.edit_profile": "Измени профил",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Federated timeline", "column.public": "Federated timeline",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Назад", "column_back_button.label": "Назад",
"column_header.hide_settings": "Hide settings", "column_header.hide_settings": "Hide settings",
"column_header.show_settings": "Show settings", "column_header.show_settings": "Show settings",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Toggle visibility", "media_gallery.toggle_visible": "Toggle visibility",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferences", "navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Federated timeline", "navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security", "navigation_bar.security": "Security",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} favorited your post", "notification.favourite": "{name} favorited your post",
"notification.follow": "{name} followed you", "notification.follow": "{name} followed you",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this post in the moderation interface", "status.admin_status": "Open this post in the moderation interface",
"status.block": "Block @{name}", "status.block": "Block @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notifications", "tabs_bar.notifications": "Notifications",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Block @{name}", "account.block": "Block @{name}",
"account.block_domain": "Hide everything from {domain}", "account.block_domain": "Hide everything from {domain}",
"account.blocked": "Blocked", "account.blocked": "Blocked",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Direct message @{name}", "account.direct": "Direct message @{name}",
"account.domain_blocked": "Domain hidden", "account.domain_blocked": "Domain hidden",
"account.edit_profile": "Edit profile", "account.edit_profile": "Edit profile",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Federated timeline", "column.public": "Federated timeline",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Back", "column_back_button.label": "Back",
"column_header.hide_settings": "Hide settings", "column_header.hide_settings": "Hide settings",
"column_header.show_settings": "Show settings", "column_header.show_settings": "Show settings",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Toggle visibility", "media_gallery.toggle_visible": "Toggle visibility",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferences", "navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Federated timeline", "navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.security": "Security", "navigation_bar.security": "Security",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} favorited your post", "notification.favourite": "{name} favorited your post",
"notification.follow": "{name} followed you", "notification.follow": "{name} followed you",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this post in the moderation interface", "status.admin_status": "Open this post in the moderation interface",
"status.block": "Block @{name}", "status.block": "Block @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notifications", "tabs_bar.notifications": "Notifications",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Blokkeer @{name}", "account.block": "Blokkeer @{name}",
"account.block_domain": "Verberg alles van {domain}", "account.block_domain": "Verberg alles van {domain}",
"account.blocked": "Geblokkeerd", "account.blocked": "Geblokkeerd",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Direct Message @{name}", "account.direct": "Direct Message @{name}",
"account.domain_blocked": "Domein verborgen", "account.domain_blocked": "Domein verborgen",
"account.edit_profile": "Profiel bewerken", "account.edit_profile": "Profiel bewerken",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Globale tijdlijn", "column.public": "Globale tijdlijn",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Terug", "column_back_button.label": "Terug",
"column_header.hide_settings": "Instellingen verbergen", "column_header.hide_settings": "Instellingen verbergen",
"column_header.show_settings": "Instellingen tonen", "column_header.show_settings": "Instellingen tonen",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Media wel/niet tonen", "media_gallery.toggle_visible": "Media wel/niet tonen",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Instellingen", "navigation_bar.preferences": "Instellingen",
"navigation_bar.public_timeline": "Globale tijdlijn", "navigation_bar.public_timeline": "Globale tijdlijn",
"navigation_bar.security": "Beveiliging", "navigation_bar.security": "Beveiliging",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} voegde jouw toot als favoriet toe", "notification.favourite": "{name} voegde jouw toot als favoriet toe",
"notification.follow": "{name} volgt jou nu", "notification.follow": "{name} volgt jou nu",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Moderatie-omgeving van @{name} openen", "status.admin_account": "Moderatie-omgeving van @{name} openen",
"status.admin_status": "Deze toot in de moderatie-omgeving openen", "status.admin_status": "Deze toot in de moderatie-omgeving openen",
"status.block": "Blokkeer @{name}", "status.block": "Blokkeer @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Meldingen", "tabs_bar.notifications": "Meldingen",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Zoeken", "tabs_bar.search": "Zoeken",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Blokkér @{name}", "account.block": "Blokkér @{name}",
"account.block_domain": "Gøyme alt innhald for domenet {domain}", "account.block_domain": "Gøyme alt innhald for domenet {domain}",
"account.blocked": "Blokkert", "account.blocked": "Blokkert",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Direkte meld @{name}", "account.direct": "Direkte meld @{name}",
"account.domain_blocked": "Domenet er gøymt", "account.domain_blocked": "Domenet er gøymt",
"account.edit_profile": "Rediger profil", "account.edit_profile": "Rediger profil",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Federert samtid", "column.public": "Federert samtid",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Tilbake", "column_back_button.label": "Tilbake",
"column_header.hide_settings": "Skjul innstillingar", "column_header.hide_settings": "Skjul innstillingar",
"column_header.show_settings": "Vis innstillingar", "column_header.show_settings": "Vis innstillingar",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Toggle visibility", "media_gallery.toggle_visible": "Toggle visibility",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferanser", "navigation_bar.preferences": "Preferanser",
"navigation_bar.public_timeline": "Federert tidslinje", "navigation_bar.public_timeline": "Federert tidslinje",
"navigation_bar.security": "Sikkerheit", "navigation_bar.security": "Sikkerheit",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} likte din status", "notification.favourite": "{name} likte din status",
"notification.follow": "{name} fulgte deg", "notification.follow": "{name} fulgte deg",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this post in the moderation interface", "status.admin_status": "Open this post in the moderation interface",
"status.block": "Block @{name}", "status.block": "Block @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notifications", "tabs_bar.notifications": "Notifications",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Blokkér @{name}", "account.block": "Blokkér @{name}",
"account.block_domain": "Skjul alt fra {domain}", "account.block_domain": "Skjul alt fra {domain}",
"account.blocked": "Blocked", "account.blocked": "Blocked",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Direct Message @{name}", "account.direct": "Direct Message @{name}",
"account.domain_blocked": "Domain hidden", "account.domain_blocked": "Domain hidden",
"account.edit_profile": "Rediger profil", "account.edit_profile": "Rediger profil",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Felles tidslinje", "column.public": "Felles tidslinje",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Tilbake", "column_back_button.label": "Tilbake",
"column_header.hide_settings": "Gjem innstillinger", "column_header.hide_settings": "Gjem innstillinger",
"column_header.show_settings": "Vis innstillinger", "column_header.show_settings": "Vis innstillinger",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Veksle synlighet", "media_gallery.toggle_visible": "Veksle synlighet",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferanser", "navigation_bar.preferences": "Preferanser",
"navigation_bar.public_timeline": "Felles tidslinje", "navigation_bar.public_timeline": "Felles tidslinje",
"navigation_bar.security": "Security", "navigation_bar.security": "Security",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} likte din status", "notification.favourite": "{name} likte din status",
"notification.follow": "{name} fulgte deg", "notification.follow": "{name} fulgte deg",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this post in the moderation interface", "status.admin_status": "Open this post in the moderation interface",
"status.block": "Block @{name}", "status.block": "Block @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Varslinger", "tabs_bar.notifications": "Varslinger",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Blocar @{name}", "account.block": "Blocar @{name}",
"account.block_domain": "Tot amagar del domeni {domain}", "account.block_domain": "Tot amagar del domeni {domain}",
"account.blocked": "Blocat", "account.blocked": "Blocat",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Escriure un MP a @{name}", "account.direct": "Escriure un MP a @{name}",
"account.domain_blocked": "Domeni amagat", "account.domain_blocked": "Domeni amagat",
"account.edit_profile": "Modificar lo perfil", "account.edit_profile": "Modificar lo perfil",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Flux public global", "column.public": "Flux public global",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Tornar", "column_back_button.label": "Tornar",
"column_header.hide_settings": "Amagar los paramètres", "column_header.hide_settings": "Amagar los paramètres",
"column_header.show_settings": "Mostrar los paramètres", "column_header.show_settings": "Mostrar los paramètres",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Modificar la visibilitat", "media_gallery.toggle_visible": "Modificar la visibilitat",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferéncias", "navigation_bar.preferences": "Preferéncias",
"navigation_bar.public_timeline": "Flux public global", "navigation_bar.public_timeline": "Flux public global",
"navigation_bar.security": "Seguretat", "navigation_bar.security": "Seguretat",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} a ajustat a sos favorits", "notification.favourite": "{name} a ajustat a sos favorits",
"notification.follow": "{name} vos sèc", "notification.follow": "{name} vos sèc",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Dobrir linterfàcia de moderacion per @{name}", "status.admin_account": "Dobrir linterfàcia de moderacion per @{name}",
"status.admin_status": "Dobrir aqueste estatut dins linterfàcia de moderacion", "status.admin_status": "Dobrir aqueste estatut dins linterfàcia de moderacion",
"status.block": "Blocar @{name}", "status.block": "Blocar @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notificacions", "tabs_bar.notifications": "Notificacions",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Recèrcas", "tabs_bar.search": "Recèrcas",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Blokuj @{name}", "account.block": "Blokuj @{name}",
"account.block_domain": "Blokuj wszystko z {domain}", "account.block_domain": "Blokuj wszystko z {domain}",
"account.blocked": "Zablokowany(-a)", "account.blocked": "Zablokowany(-a)",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Wyślij wiadomość bezpośrednią do @{name}", "account.direct": "Wyślij wiadomość bezpośrednią do @{name}",
"account.domain_blocked": "Ukryto domenę", "account.domain_blocked": "Ukryto domenę",
"account.edit_profile": "Edytuj profil", "account.edit_profile": "Edytuj profil",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Globalna oś czasu", "column.public": "Globalna oś czasu",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Wróć", "column_back_button.label": "Wróć",
"column_header.hide_settings": "Ukryj ustawienia", "column_header.hide_settings": "Ukryj ustawienia",
"column_header.show_settings": "Pokaż ustawienia", "column_header.show_settings": "Pokaż ustawienia",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Przełącz widoczność", "media_gallery.toggle_visible": "Przełącz widoczność",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferencje", "navigation_bar.preferences": "Preferencje",
"navigation_bar.public_timeline": "Globalna oś czasu", "navigation_bar.public_timeline": "Globalna oś czasu",
"navigation_bar.security": "Bezpieczeństwo", "navigation_bar.security": "Bezpieczeństwo",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} dodał(a) Twój wpis do ulubionych", "notification.favourite": "{name} dodał(a) Twój wpis do ulubionych",
"notification.follow": "{name} zaczął(-ęła) Cię śledzić", "notification.follow": "{name} zaczął(-ęła) Cię śledzić",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Otwórz interfejs moderacyjny dla @{name}", "status.admin_account": "Otwórz interfejs moderacyjny dla @{name}",
"status.admin_status": "Otwórz ten wpis w interfejsie moderacyjnym", "status.admin_status": "Otwórz ten wpis w interfejsie moderacyjnym",
"status.block": "Zablokuj @{name}", "status.block": "Zablokuj @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Powiadomienia", "tabs_bar.notifications": "Powiadomienia",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Szukaj", "tabs_bar.search": "Szukaj",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Bloquear @{name}", "account.block": "Bloquear @{name}",
"account.block_domain": "Esconder tudo de {domain}", "account.block_domain": "Esconder tudo de {domain}",
"account.blocked": "Bloqueado", "account.blocked": "Bloqueado",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Direct Message @{name}", "account.direct": "Direct Message @{name}",
"account.domain_blocked": "Domínio escondido", "account.domain_blocked": "Domínio escondido",
"account.edit_profile": "Editar perfil", "account.edit_profile": "Editar perfil",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Global", "column.public": "Global",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Voltar", "column_back_button.label": "Voltar",
"column_header.hide_settings": "Esconder configurações", "column_header.hide_settings": "Esconder configurações",
"column_header.show_settings": "Mostrar configurações", "column_header.show_settings": "Mostrar configurações",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Esconder/Mostrar", "media_gallery.toggle_visible": "Esconder/Mostrar",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferências", "navigation_bar.preferences": "Preferências",
"navigation_bar.public_timeline": "Global", "navigation_bar.public_timeline": "Global",
"navigation_bar.security": "Segurança", "navigation_bar.security": "Segurança",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} adicionou a sua postagem aos favoritos", "notification.favourite": "{name} adicionou a sua postagem aos favoritos",
"notification.follow": "{name} te seguiu", "notification.follow": "{name} te seguiu",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Abrir interface de moderação para @{name}", "status.admin_account": "Abrir interface de moderação para @{name}",
"status.admin_status": "Abrir esse status na interface de moderação", "status.admin_status": "Abrir esse status na interface de moderação",
"status.block": "Bloquear @{name}", "status.block": "Bloquear @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notificações", "tabs_bar.notifications": "Notificações",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Buscar", "tabs_bar.search": "Buscar",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Bloquear @{name}", "account.block": "Bloquear @{name}",
"account.block_domain": "Esconder tudo do domínio {domain}", "account.block_domain": "Esconder tudo do domínio {domain}",
"account.blocked": "Bloqueado", "account.blocked": "Bloqueado",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Mensagem directa @{name}", "account.direct": "Mensagem directa @{name}",
"account.domain_blocked": "Domínio escondido", "account.domain_blocked": "Domínio escondido",
"account.edit_profile": "Editar perfil", "account.edit_profile": "Editar perfil",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Cronologia federada", "column.public": "Cronologia federada",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Voltar", "column_back_button.label": "Voltar",
"column_header.hide_settings": "Esconder configurações", "column_header.hide_settings": "Esconder configurações",
"column_header.show_settings": "Mostrar configurações", "column_header.show_settings": "Mostrar configurações",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Mostrar/ocultar", "media_gallery.toggle_visible": "Mostrar/ocultar",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferências", "navigation_bar.preferences": "Preferências",
"navigation_bar.public_timeline": "Cronologia federada", "navigation_bar.public_timeline": "Cronologia federada",
"navigation_bar.security": "Segurança", "navigation_bar.security": "Segurança",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} adicionou o teu estado aos favoritos", "notification.favourite": "{name} adicionou o teu estado aos favoritos",
"notification.follow": "{name} começou a seguir-te", "notification.follow": "{name} começou a seguir-te",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Abrir a interface de moderação para @{name}", "status.admin_account": "Abrir a interface de moderação para @{name}",
"status.admin_status": "Abrir esta publicação na interface de moderação", "status.admin_status": "Abrir esta publicação na interface de moderação",
"status.block": "Bloquear @{name}", "status.block": "Bloquear @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notificações", "tabs_bar.notifications": "Notificações",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Pesquisar", "tabs_bar.search": "Pesquisar",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

@ -4,6 +4,8 @@
"account.block": "Blochează @{name}", "account.block": "Blochează @{name}",
"account.block_domain": "Ascunde tot de la {domain}", "account.block_domain": "Ascunde tot de la {domain}",
"account.blocked": "Blocat", "account.blocked": "Blocat",
"account.deactivated": "Deactivated",
"account.deactivated_description": "This account has been deactivated.",
"account.direct": "Mesaj direct @{name}", "account.direct": "Mesaj direct @{name}",
"account.domain_blocked": "Domeniu ascuns", "account.domain_blocked": "Domeniu ascuns",
"account.edit_profile": "Editează profilul", "account.edit_profile": "Editează profilul",
@ -96,6 +98,7 @@
"column.preferences": "Preferences", "column.preferences": "Preferences",
"column.public": "Flux global", "column.public": "Flux global",
"column.security": "Security", "column.security": "Security",
"column.soapbox_config": "Soapbox config",
"column_back_button.label": "Înapoi", "column_back_button.label": "Înapoi",
"column_header.hide_settings": "Ascunde setările", "column_header.hide_settings": "Ascunde setările",
"column_header.show_settings": "Arată setările", "column_header.show_settings": "Arată setările",
@ -297,6 +300,7 @@
"login.otp_log_in.fail": "Invalid code, please try again.", "login.otp_log_in.fail": "Invalid code, please try again.",
"login.reset_password_hint": "Trouble logging in?", "login.reset_password_hint": "Trouble logging in?",
"media_gallery.toggle_visible": "Comutați vizibilitatea", "media_gallery.toggle_visible": "Comutați vizibilitatea",
"media_panel.title": "Media",
"mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:", "mfa.mfa_disable_enter_password": "Enter your current password to disable two-factor auth:",
"mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:", "mfa.mfa_setup_enter_password": "Enter your current password to confirm your identity:",
"mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:", "mfa.mfa_setup_scan_description": "Using your two-factor app, scan this QR code or enter text key:",
@ -338,6 +342,7 @@
"navigation_bar.preferences": "Preferințe", "navigation_bar.preferences": "Preferințe",
"navigation_bar.public_timeline": "Flux global", "navigation_bar.public_timeline": "Flux global",
"navigation_bar.security": "Securitate", "navigation_bar.security": "Securitate",
"navigation_bar.soapbox_config": "Soapbox config",
"notification.emoji_react": "{name} reacted to your post", "notification.emoji_react": "{name} reacted to your post",
"notification.favourite": "{name} a adăugat statusul tău la favorite", "notification.favourite": "{name} a adăugat statusul tău la favorite",
"notification.follow": "{name} te urmărește", "notification.follow": "{name} te urmărește",
@ -470,6 +475,33 @@
"security.update_password.success": "Password successfully updated.", "security.update_password.success": "Password successfully updated.",
"signup_panel.subtitle": "Sign up now to discuss.", "signup_panel.subtitle": "Sign up now to discuss.",
"signup_panel.title": "New to {site_title}?", "signup_panel.title": "New to {site_title}?",
"soapbox_config.copyright_footer.meta_fields.label_placeholder": "Copyright footer",
"soapbox_config.custom_css.meta_fields.url_placeholder": "URL",
"soapbox_config.fields.banner_label": "Banner",
"soapbox_config.fields.brand_color_label": "Brand color",
"soapbox_config.fields.custom_css.add": "Add another custom CSS URL",
"soapbox_config.fields.custom_css_fields_label": "Custom CSS",
"soapbox_config.fields.home_footer.add": "Add new Home Footer Item",
"soapbox_config.fields.home_footer_fields_label": "Home footer items",
"soapbox_config.fields.logo_label": "Logo",
"soapbox_config.fields.patron_enabled_label": "Patron module",
"soapbox_config.fields.promo_panel.add": "Add new Promo panel item",
"soapbox_config.fields.promo_panel_fields_label": "Promo panel items",
"soapbox_config.hints.banner": "PNG, GIF or JPG. At most 2 MB. Will be displayed to 400x400px",
"soapbox_config.hints.custom_css_fields": "Insert a URL to a CSS file like `https://mysite.com/instance/custom.css`, or simply `/instance/custom.css`",
"soapbox_config.hints.home_footer_fields": "You can have custom defined links displayed on the footer of your static pages",
"soapbox_config.hints.logo": "SVG. At most 2 MB. Will be displayed to 50px height, maintaining aspect ratio",
"soapbox_config.hints.patron_enabled": "Enables display of Patron module. Requires installation of Patron module.",
"soapbox_config.hints.promo_panel_fields": "You can have custom defined links displayed on the left panel of the timelines page.",
"soapbox_config.hints.promo_panel_icons": "{ link }",
"soapbox_config.home_footer.meta_fields.label_placeholder": "Label",
"soapbox_config.home_footer.meta_fields.url_placeholder": "URL",
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
"soapbox_config.raw_json_hint": "Advanced: Edit the settings data directly.",
"soapbox_config.raw_json_label": "Raw JSON data",
"soapbox_config.save": "Save",
"status.admin_account": "Open moderation interface for @{name}", "status.admin_account": "Open moderation interface for @{name}",
"status.admin_status": "Open this post in the moderation interface", "status.admin_status": "Open this post in the moderation interface",
"status.block": "Blochează @{name}", "status.block": "Blochează @{name}",
@ -520,6 +552,7 @@
"tabs_bar.news": "News", "tabs_bar.news": "News",
"tabs_bar.notifications": "Notificări", "tabs_bar.notifications": "Notificări",
"tabs_bar.post": "Post", "tabs_bar.post": "Post",
"tabs_bar.reports": "Reports",
"tabs_bar.search": "Căutare", "tabs_bar.search": "Căutare",
"tabs_bar.theme_toggle_dark": "Switch to dark theme", "tabs_bar.theme_toggle_dark": "Switch to dark theme",
"tabs_bar.theme_toggle_light": "Switch to light theme", "tabs_bar.theme_toggle_light": "Switch to light theme",

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

Loading…
Cancel
Save