mirror of
https://github.com/balzack/databag.git
synced 2025-02-11 19:19:16 +00:00
added more translations
This commit is contained in:
parent
b0fd1a2cd6
commit
67f7caa378
@ -546,3 +546,552 @@ export const sp = {
|
||||
|
||||
notes: 'Notas',
|
||||
}
|
||||
|
||||
export const pt = {
|
||||
code: 'pt',
|
||||
settings: 'Configurações',
|
||||
contacts: 'Contatos',
|
||||
logout: 'Sair',
|
||||
confirmLogout: 'Tem certeza de que deseja sair?',
|
||||
contactsUpdated: 'Seus contatos foram atualizados',
|
||||
disconnected: 'Desconectado do servidor',
|
||||
allDevices: 'Desconectar de todos os dispositivos',
|
||||
ok: 'OK',
|
||||
cancel: 'Cancelar',
|
||||
|
||||
new: 'Novo',
|
||||
newMessage: 'Nova mensagem',
|
||||
topics: 'Tópicos',
|
||||
unsetSealing: 'Chave de segurança não definida',
|
||||
newTopic: 'Novo tópico',
|
||||
|
||||
noContacts: 'Sem contatos',
|
||||
noTopics: 'Sem tópicos',
|
||||
noConnected: 'Nenhum contato conectado',
|
||||
subjectOptional: 'Assunto (opcional)',
|
||||
members: 'Membros',
|
||||
sealedTopic: 'Tópico selado',
|
||||
start: 'Iniciar',
|
||||
|
||||
communication: 'Comunicação para a Web Descentralizada',
|
||||
setupProfile: 'Configurar seu perfil',
|
||||
connectPeople: 'Conectar-se com as pessoas',
|
||||
startConversation: 'Iniciar uma conversa',
|
||||
|
||||
default: 'Padrão',
|
||||
dark: 'Escuro',
|
||||
light: 'Claro',
|
||||
|
||||
operationFailed: 'Operação falhou',
|
||||
tryAgain: 'Por favor, tente novamente.',
|
||||
|
||||
add: 'Adicionar',
|
||||
save: 'Salvar',
|
||||
forget: 'Esquecer',
|
||||
unlock: 'Desbloquear',
|
||||
profile: 'Perfil',
|
||||
application: 'Aplicação',
|
||||
account: 'Conta',
|
||||
name: 'Nome',
|
||||
node: 'Servidor',
|
||||
location: 'Localização',
|
||||
description: 'Descrição',
|
||||
timeFormat: 'Formato de hora',
|
||||
dateFormat: 'Formato de data',
|
||||
theme: 'Tema',
|
||||
language: 'Idioma',
|
||||
timeUs: '12h',
|
||||
timeEu: '24h',
|
||||
dateUs: 'mm/dd',
|
||||
dateEu: 'dd/mm',
|
||||
registry: 'Visível no registro',
|
||||
sealedTopics: 'Tópicos selados',
|
||||
changeLogin: 'Alterar credenciais',
|
||||
selectImage: 'Selecionar',
|
||||
profileImage: 'Imagem do perfil',
|
||||
profileDetails: 'Detalhes do perfil',
|
||||
enableSealed: 'Ativar tópicos selados',
|
||||
password: 'Senha',
|
||||
newPassword: 'Nova senha',
|
||||
confirmPassword: 'Confirmar senha',
|
||||
deleteKey: 'Digite \'excluir\' para deletar a chave',
|
||||
delete: 'excluir',
|
||||
remove: 'Remover',
|
||||
username: 'Nome de usuário',
|
||||
updateProfile: 'Atualizar perfil',
|
||||
|
||||
syncError: 'Erro de sincronização',
|
||||
callTip: 'Ligar para o contato',
|
||||
messageTip: 'Enviar mensagem ao contato',
|
||||
connectedTip: 'Contato conectado',
|
||||
requestedTip: 'Pedido de conexão enviado pelo contato',
|
||||
connectingTip: 'Conexão em andamento',
|
||||
pendingTip: 'Pedido de conexão enviado por um contato desconhecido',
|
||||
confirmedTip: 'Contato desconectado',
|
||||
unsavedTip: 'Contato desconhecido',
|
||||
|
||||
actions: 'Ações',
|
||||
resync: 'Resincronizar',
|
||||
connect: 'Conectar',
|
||||
disconnect: 'Desconectar',
|
||||
disconnectContact: 'Desconectar o contato',
|
||||
deleteContact: 'Excluir contato',
|
||||
saveContact: 'Salvar contato',
|
||||
saveAccept: 'Salvar e aceitar a conexão',
|
||||
saveRequest: 'Salvar e solicitar a conexão',
|
||||
ignoreRequest: 'Ignorar solicitação',
|
||||
acceptConnection: 'Aceitar conexão',
|
||||
requestConnection: 'Solicitar conexão',
|
||||
cancelRequest: 'Cancelar solicitação',
|
||||
resyncContact: 'Resincronizar contato',
|
||||
|
||||
login: 'Entrar',
|
||||
create: 'Criar',
|
||||
createAccount: 'Criar uma conta',
|
||||
accountLogin: 'Login da conta',
|
||||
toCreate: 'As contas são criadas através de um link gerado no painel de administração.',
|
||||
admin: 'Administrador',
|
||||
loginError: 'Erro de login',
|
||||
loginMessage: 'Por favor, confirme seu nome de usuário e senha.',
|
||||
createError: 'Erro ao criar conta',
|
||||
createMessage: 'Por favor, verifique com seu administrador.',
|
||||
adminError: 'Erro de acesso',
|
||||
adminMessage: 'Por favor, confirme sua senha',
|
||||
|
||||
confirmDelete: 'Excluir conta',
|
||||
areSure: 'Tem certeza de que deseja excluir a conta?',
|
||||
|
||||
mb: 'MB',
|
||||
gb: 'GB',
|
||||
copied: 'Copiado',
|
||||
accounts: 'Contas',
|
||||
accessAccount: 'Acessar conta',
|
||||
browserLink: 'Link do navegador',
|
||||
mobileToken: 'Token móvel',
|
||||
createLink: 'Link para criar uma conta',
|
||||
configureServer: 'Configurar servidor',
|
||||
reloadAccounts: 'Recarregar contas',
|
||||
disableAccount: 'Desativar conta',
|
||||
enableAccount: 'Ativar conta',
|
||||
deleteAccount: 'Excluir conta',
|
||||
hostHint: 'domínio:porta/aplicação',
|
||||
federatedHost: 'Host federado',
|
||||
storageLimit: 'Limite de armazenamento (GB) / conta',
|
||||
storageHint: '0 para ilimitado',
|
||||
keyType: 'Tipo de chave',
|
||||
accountCreation: 'Criação de conta pública',
|
||||
enablePush: 'Ativar notificações push',
|
||||
allowUnsealed: 'Permitir tópicos não selados',
|
||||
topicContent: 'Conteúdo do tópico:',
|
||||
enableImage: 'Ativar imagens no tópico',
|
||||
imageHint: 'Permitir a publicação de imagens em tópicos',
|
||||
enableAudio: 'Ativar áudio no tópico',
|
||||
audioHint: 'Permitir a publicação de áudio em tópicos',
|
||||
enableVideo: 'Ativar vídeos no tópico',
|
||||
videoHint: 'Permitir a publicação de vídeos em tópicos',
|
||||
enableWeb: 'Ativar chamadas WebRTC',
|
||||
webHint: 'Permitir chamadas de áudio e vídeo para contatos',
|
||||
serverUrl: 'URL do servidor WebRTC',
|
||||
urlHint: 'turn:ip:port?transport=udp',
|
||||
webUsername: 'Nome de usuário WebRTC',
|
||||
webPassword: 'Senha WebRTC',
|
||||
failedLoad: 'Falha ao carregar',
|
||||
limit: 'Limite',
|
||||
|
||||
deleteMessage: 'Excluir mensagem',
|
||||
messageHint: 'Tem certeza de que deseja excluir a mensagem?',
|
||||
attachImage: 'Anexar imagem',
|
||||
attachVideo: 'Anexar vídeo',
|
||||
attachAudio: 'Anexar áudio',
|
||||
attachFile: 'Anexar arquivo',
|
||||
fontColor: 'Alterar cor da fonte',
|
||||
fontSize: 'Alterar tamanho da fonte',
|
||||
postMessage: 'Publicar mensagem',
|
||||
|
||||
close: 'Fechar',
|
||||
leave: 'Sair',
|
||||
confirmTopic: 'Excluir tópico',
|
||||
sureTopic: 'Tem certeza de que deseja excluir este tópico?',
|
||||
confirmLeave: 'Sair do tópico',
|
||||
sureLeave: 'Tem certeza de que deseja sair deste tópico?',
|
||||
|
||||
details: 'Detalhes',
|
||||
host: 'Anfitrião',
|
||||
guest: 'Convidado',
|
||||
editSubject: 'Editar tópico',
|
||||
editMembership: 'Editar membros do tópico',
|
||||
deleteTopic: 'Excluir tópico',
|
||||
leaveTopic: 'Sair do tópico',
|
||||
|
||||
integrated: 'Integrado',
|
||||
microphone: 'Microfone',
|
||||
camera: 'Câmera',
|
||||
|
||||
notes: 'Notas'
|
||||
}
|
||||
|
||||
export const de = {
|
||||
code: 'de',
|
||||
settings: 'Einstellungen',
|
||||
contacts: 'Kontakte',
|
||||
logout: 'Ausloggen',
|
||||
confirmLogout: 'Sind Sie sicher, dass Sie sich abmelden möchten?',
|
||||
contactsUpdated: 'Ihre Kontakte wurden aktualisiert',
|
||||
disconnected: 'Vom Server getrennt',
|
||||
allDevices: 'Alle Geräte abmelden',
|
||||
ok: 'OK',
|
||||
cancel: 'Abbrechen',
|
||||
|
||||
new: 'Neu',
|
||||
newMessage: 'Neue Nachricht',
|
||||
topics: 'Themen',
|
||||
unsetSealing: 'Sicherheitsschlüssel nicht festgelegt',
|
||||
newTopic: 'Neues Thema',
|
||||
|
||||
noContacts: 'Keine Kontakte',
|
||||
noTopics: 'Keine Themen',
|
||||
noConnected: 'Keine verbundenen Kontakte',
|
||||
subjectOptional: 'Betreff (optional)',
|
||||
members: 'Mitglieder',
|
||||
sealedTopic: 'Versiegeltes Thema',
|
||||
start: 'Starten',
|
||||
|
||||
communication: 'Kommunikation für das dezentrale Web',
|
||||
setupProfile: 'Profil einrichten',
|
||||
connectPeople: 'Mit Menschen verbinden',
|
||||
startConversation: 'Gespräch beginnen',
|
||||
|
||||
default: 'Standard',
|
||||
dark: 'Dunkel',
|
||||
light: 'Hell',
|
||||
|
||||
operationFailed: 'Vorgang fehlgeschlagen',
|
||||
tryAgain: 'Bitte versuchen Sie es erneut.',
|
||||
|
||||
add: 'Hinzufügen',
|
||||
save: 'Speichern',
|
||||
forget: 'Vergessen',
|
||||
unlock: 'Entsperren',
|
||||
profile: 'Profil',
|
||||
application: 'Anwendung',
|
||||
account: 'Konto',
|
||||
name: 'Name',
|
||||
node: 'Server',
|
||||
location: 'Standort',
|
||||
description: 'Beschreibung',
|
||||
timeFormat: 'Zeitformat',
|
||||
dateFormat: 'Datumsformat',
|
||||
theme: 'Thema',
|
||||
language: 'Sprache',
|
||||
timeUs: '12 Stunden',
|
||||
timeEu: '24 Stunden',
|
||||
dateUs: 'MM/TT',
|
||||
dateEu: 'TT/MM',
|
||||
registry: 'Im Register sichtbar',
|
||||
sealedTopics: 'Versiegelte Themen',
|
||||
changeLogin: 'Anmeldeinformationen ändern',
|
||||
selectImage: 'Auswählen',
|
||||
profileImage: 'Profilbild',
|
||||
profileDetails: 'Profildetails',
|
||||
enableSealed: 'Versiegelte Themen aktivieren',
|
||||
password: 'Passwort',
|
||||
newPassword: 'Neues Passwort',
|
||||
confirmPassword: 'Passwort bestätigen',
|
||||
deleteKey: '\'löschen\' eingeben, um den Schlüssel zu löschen',
|
||||
delete: 'löschen',
|
||||
remove: 'Entfernen',
|
||||
username: 'Benutzername',
|
||||
updateProfile: 'Profil aktualisieren',
|
||||
|
||||
syncError: 'Synchronisierungsfehler',
|
||||
callTip: 'Kontakt anrufen',
|
||||
messageTip: 'Nachricht an den Kontakt senden',
|
||||
connectedTip: 'Verbundener Kontakt',
|
||||
requestedTip: 'Verbindungsanfrage vom Kontakt gesendet',
|
||||
connectingTip: 'Verbindungsanfrage läuft',
|
||||
pendingTip: 'Verbindungsanfrage von einem unbekannten Kontakt gesendet',
|
||||
confirmedTip: 'Kontakt getrennt',
|
||||
unsavedTip: 'Unbekannter Kontakt',
|
||||
|
||||
actions: 'Aktionen',
|
||||
resync: 'Neusynchronisieren',
|
||||
connect: 'Verbinden',
|
||||
disconnect: 'Trennen',
|
||||
disconnectContact: 'Kontakt trennen',
|
||||
deleteContact: 'Kontakt löschen',
|
||||
saveContact: 'Kontakt speichern',
|
||||
saveAccept: 'Speichern und Verbindung akzeptieren',
|
||||
saveRequest: 'Speichern und Verbindung anfordern',
|
||||
ignoreRequest: 'Anfrage ignorieren',
|
||||
acceptConnection: 'Verbindung akzeptieren',
|
||||
requestConnection: 'Verbindung anfordern',
|
||||
cancelRequest: 'Anfrage abbrechen',
|
||||
resyncContact: 'Kontakt neu synchronisieren',
|
||||
|
||||
login: 'Einloggen',
|
||||
create: 'Erstellen',
|
||||
createAccount: 'Konto erstellen',
|
||||
accountLogin: 'Kontoanmeldung',
|
||||
toCreate: 'Konten werden über einen Link erstellt, der im Administrations-Dashboard generiert wird.',
|
||||
admin: 'Administrator',
|
||||
loginError: 'Anmeldefehler',
|
||||
loginMessage: 'Bitte bestätigen Sie Ihren Benutzernamen und Ihr Passwort.',
|
||||
createError: 'Fehler beim Erstellen des Kontos',
|
||||
createMessage: 'Bitte überprüfen Sie bei Ihrem Administrator nach.',
|
||||
adminError: 'Zugriffsfehler',
|
||||
adminMessage: 'Bitte bestätigen Sie Ihr Passwort',
|
||||
|
||||
confirmDelete: 'Konto löschen',
|
||||
areSure: 'Sind Sie sicher, dass Sie das Konto löschen möchten?',
|
||||
|
||||
mb: 'MB',
|
||||
gb: 'GB',
|
||||
copied: 'Kopiert',
|
||||
accounts: 'Konten',
|
||||
accessAccount: 'Kontozugriff',
|
||||
browserLink: 'Browser-Link',
|
||||
mobileToken: 'Mobilcode',
|
||||
createLink: 'Link zum Erstellen eines Kontos',
|
||||
configureServer: 'Server konfigurieren',
|
||||
reloadAccounts: 'Konten neu laden',
|
||||
disableAccount: 'Konto deaktivieren',
|
||||
enableAccount: 'Konto aktivieren',
|
||||
deleteAccount: 'Konto löschen',
|
||||
hostHint: 'Domäne:Port/Anwendung',
|
||||
federatedHost: 'Föderierter Host',
|
||||
storageLimit: 'Speicherbegrenzung (GB) / Konto',
|
||||
storageHint: '0 für unbegrenzt',
|
||||
keyType: 'Schlüsseltyp',
|
||||
accountCreation: 'Öffentliche Kontenerstellung',
|
||||
enablePush: 'Push-Benachrichtigungen aktivieren',
|
||||
allowUnsealed: 'Nicht versiegelte Themen zulassen',
|
||||
topicContent: 'Themeninhalt:',
|
||||
enableImage: 'Bilder im Thema aktivieren',
|
||||
imageHint: 'Veröffentlichung von Bildern in Themen ermöglichen',
|
||||
enableAudio: 'Audio im Thema aktivieren',
|
||||
audioHint: 'Veröffentlichung von Audio in Themen ermöglichen',
|
||||
enableVideo: 'Videos im Thema aktivieren',
|
||||
videoHint: 'Veröffentlichung von Videos in Themen ermöglichen',
|
||||
enableWeb: 'WebRTC-Anrufe aktivieren',
|
||||
webHint: 'Audio- und Videoanrufe an Kontakte zulassen',
|
||||
serverUrl: 'URL des WebRTC-Servers',
|
||||
urlHint: 'turn:ip:port?transport=udp',
|
||||
webUsername: 'WebRTC-Benutzername',
|
||||
webPassword: 'WebRTC-Passwort',
|
||||
failedLoad: 'Laden fehlgeschlagen',
|
||||
limit: 'Limit',
|
||||
|
||||
deleteMessage: 'Nachricht löschen',
|
||||
messageHint: 'Sind Sie sicher, dass Sie die Nachricht löschen möchten?',
|
||||
attachImage: 'Bild anhängen',
|
||||
attachVideo: 'Video anhängen',
|
||||
attachAudio: 'Audio anhängen',
|
||||
attachFile: 'Datei anhängen',
|
||||
fontColor: 'Schriftfarbe ändern',
|
||||
fontSize: 'Schriftgröße ändern',
|
||||
postMessage: 'Nachricht veröffentlichen',
|
||||
|
||||
close: 'Schließen',
|
||||
leave: 'Verlassen',
|
||||
confirmTopic: 'Thema löschen',
|
||||
sureTopic: 'Sind Sie sicher, dass Sie dieses Thema löschen möchten?',
|
||||
confirmLeave: 'Thema verlassen',
|
||||
sureLeave: 'Sind Sie sicher, dass Sie dieses Thema verlassen möchten?',
|
||||
|
||||
details: 'Details',
|
||||
host: 'Host',
|
||||
guest: 'Gast',
|
||||
editSubject: 'Thema bearbeiten',
|
||||
editMembership: 'Mitgliedschaft im Thema bearbeiten',
|
||||
deleteTopic: 'Thema löschen',
|
||||
leaveTopic: 'Thema verlassen',
|
||||
|
||||
integrated: 'Integriert',
|
||||
microphone: 'Mikrofon',
|
||||
camera: 'Kamera',
|
||||
|
||||
notes: 'Notizen'
|
||||
}
|
||||
|
||||
export const ru = {
|
||||
code: 'ru',
|
||||
settings: 'Настройки',
|
||||
contacts: 'Контакты',
|
||||
logout: 'Выйти',
|
||||
confirmLogout: 'Вы уверены, что хотите выйти?',
|
||||
contactsUpdated: 'Ваши контакты обновлены',
|
||||
disconnected: 'Отключено от сервера',
|
||||
allDevices: 'Выйти со всех устройств',
|
||||
ok: 'OK',
|
||||
cancel: 'Отмена',
|
||||
|
||||
new: 'Новый',
|
||||
newMessage: 'Новое сообщение',
|
||||
topics: 'Темы',
|
||||
unsetSealing: 'Ключ безопасности не установлен',
|
||||
newTopic: 'Новая тема',
|
||||
|
||||
noContacts: 'Нет контактов',
|
||||
noTopics: 'Нет тем',
|
||||
noConnected: 'Нет подключенных контактов',
|
||||
subjectOptional: 'Тема (необязательно)',
|
||||
members: 'Участники',
|
||||
sealedTopic: 'Запечатанная тема',
|
||||
start: 'Начать',
|
||||
|
||||
communication: 'Коммуникация для децентрализованной сети',
|
||||
setupProfile: 'Настройка профиля',
|
||||
connectPeople: 'Подключиться к людям',
|
||||
startConversation: 'Начать разговор',
|
||||
|
||||
default: 'По умолчанию',
|
||||
dark: 'Темная',
|
||||
light: 'Светлая',
|
||||
|
||||
operationFailed: 'Операция не удалась',
|
||||
tryAgain: 'Пожалуйста, попробуйте снова.',
|
||||
|
||||
add: 'Добавить',
|
||||
save: 'Сохранить',
|
||||
forget: 'Забыть',
|
||||
unlock: 'Разблокировать',
|
||||
profile: 'Профиль',
|
||||
application: 'Приложение',
|
||||
account: 'Аккаунт',
|
||||
name: 'Имя',
|
||||
node: 'Сервер',
|
||||
location: 'Местоположение',
|
||||
description: 'Описание',
|
||||
timeFormat: 'Формат времени',
|
||||
dateFormat: 'Формат даты',
|
||||
theme: 'Тема',
|
||||
language: 'Язык',
|
||||
timeUs: '12 часов',
|
||||
timeEu: '24 часа',
|
||||
dateUs: 'ММ/ДД',
|
||||
dateEu: 'ДД/ММ',
|
||||
registry: 'Видимо в реестре',
|
||||
sealedTopics: 'Запечатанные темы',
|
||||
changeLogin: 'Изменить логин',
|
||||
selectImage: 'Выбрать',
|
||||
profileImage: 'Изображение профиля',
|
||||
profileDetails: 'Детали профиля',
|
||||
enableSealed: 'Включить запечатанные темы',
|
||||
password: 'Пароль',
|
||||
newPassword: 'Новый пароль',
|
||||
confirmPassword: 'Подтвердите пароль',
|
||||
deleteKey: 'Введите \'удалить\', чтобы удалить ключ',
|
||||
delete: 'удалить',
|
||||
remove: 'Удалить',
|
||||
username: 'Имя пользователя',
|
||||
updateProfile: 'Обновить профиль',
|
||||
|
||||
syncError: 'Ошибка синхронизации',
|
||||
callTip: 'Позвонить контакту',
|
||||
messageTip: 'Отправить сообщение контакту',
|
||||
connectedTip: 'Подключенный контакт',
|
||||
requestedTip: 'Запрос на подключение отправлен контактом',
|
||||
connectingTip: 'Запрос на подключение выполняется',
|
||||
pendingTip: 'Запрос на подключение отправлен неизвестным контактом',
|
||||
confirmedTip: 'Контакт отключен',
|
||||
unsavedTip: 'Неизвестный контакт',
|
||||
|
||||
actions: 'Действия',
|
||||
resync: 'Пересинхронизация',
|
||||
connect: 'Подключиться',
|
||||
disconnect: 'Отключиться',
|
||||
disconnectContact: 'Отключить контакт',
|
||||
deleteContact: 'Удалить контакт',
|
||||
saveContact: 'Сохранить контакт',
|
||||
saveAccept: 'Сохранить и принять подключение',
|
||||
saveRequest: 'Сохранить и запросить подключение',
|
||||
ignoreRequest: 'Игнорировать запрос',
|
||||
acceptConnection: 'Принять подключение',
|
||||
requestConnection: 'Запросить подключение',
|
||||
cancelRequest: 'Отменить запрос',
|
||||
resyncContact: 'Пересинхронизировать контакт',
|
||||
|
||||
login: 'Войти',
|
||||
create: 'Создать',
|
||||
createAccount: 'Создать аккаунт',
|
||||
accountLogin: 'Вход в аккаунт',
|
||||
toCreate: 'Учетные записи создаются через ссылку, сгенерированную в панели администратора.',
|
||||
admin: 'Администратор',
|
||||
loginError: 'Ошибка входа',
|
||||
loginMessage: 'Пожалуйста, подтвердите свое имя пользователя и пароль.',
|
||||
createError: 'Ошибка создания учетной записи',
|
||||
createMessage: 'Пожалуйста, проверьте с вашим администратором.',
|
||||
adminError: 'Ошибка доступа',
|
||||
adminMessage: 'Пожалуйста, подтвердите ваш пароль',
|
||||
|
||||
confirmDelete: 'Удаление аккаунта',
|
||||
areSure: 'Вы уверены, что хотите удалить аккаунт?',
|
||||
|
||||
mb: 'МБ',
|
||||
gb: 'ГБ',
|
||||
copied: 'Скопировано',
|
||||
accounts: 'Аккаунты',
|
||||
accessAccount: 'Доступ к аккаунту',
|
||||
browserLink: 'Ссылка на браузер',
|
||||
mobileToken: 'Мобильный токен',
|
||||
createLink: 'Создать ссылку на аккаунт',
|
||||
configureServer: 'Настроить сервер',
|
||||
reloadAccounts: 'Перезагрузить аккаунты',
|
||||
disableAccount: 'От ключить аккаунт',
|
||||
enableAccount: 'Включить аккаунт',
|
||||
deleteAccount: 'Удалить аккаунт',
|
||||
hostHint: 'домен:порт/приложение',
|
||||
federatedHost: 'Федеративный хост',
|
||||
storageLimit: 'Лимит хранения (ГБ) / аккаунт',
|
||||
storageHint: '0 для неограниченного',
|
||||
keyType: 'Тип ключа',
|
||||
accountCreation: 'Создание открытого аккаунта',
|
||||
enablePush: 'Включить уведомления Push',
|
||||
allowUnsealed: 'Разрешить незапечатанные темы',
|
||||
topicContent: 'Содержимое темы:',
|
||||
enableImage: 'Включить изображения тем',
|
||||
imageHint: 'Разрешить публикацию изображений в темах',
|
||||
enableAudio: 'Включить аудио тем',
|
||||
audioHint: 'Разрешить публикацию аудио в темах',
|
||||
enableVideo: 'Включить видео тем',
|
||||
videoHint: 'Разрешить публикацию видео в темах',
|
||||
enableWeb: 'Включить WebRTC-звонки',
|
||||
webHint: 'Разрешить аудио- и видеозвонки контактам',
|
||||
serverUrl: 'URL сервера WebRTC',
|
||||
urlHint: 'turn:ip:port?transport=udp',
|
||||
webUsername: 'Имя пользователя WebRTC',
|
||||
webPassword: 'Пароль WebRTC',
|
||||
failedLoad: 'Загрузка не удалась',
|
||||
limit: 'Лимит',
|
||||
|
||||
deleteMessage: 'Удаление сообщения',
|
||||
messageHint: 'Вы уверены, что хотите удалить сообщение?',
|
||||
attachImage: 'Прикрепить изображение',
|
||||
attachVideo: 'Прикрепить видео',
|
||||
attachAudio: 'Прикрепить аудио',
|
||||
attachFile: 'Прикрепить файл',
|
||||
fontColor: 'Изменить цвет текста',
|
||||
fontSize: 'Изменить размер текста',
|
||||
postMessage: 'Опубликовать сообщение',
|
||||
|
||||
close: 'Закрыть',
|
||||
leave: 'Покинуть',
|
||||
confirmTopic: 'Удаление темы',
|
||||
sureTopic: 'Вы уверены, что хотите удалить эту тему?',
|
||||
confirmLeave: 'Покинуть тему',
|
||||
sureLeave: 'Вы уверены, что хотите покинуть эту тему?',
|
||||
|
||||
details: 'Детали',
|
||||
host: 'Хост',
|
||||
guest: 'Гость',
|
||||
editSubject: 'Редактировать тему',
|
||||
editMembership: 'Редактировать участников темы',
|
||||
deleteTopic: 'Удалить тему',
|
||||
leaveTopic: 'Покинуть тему',
|
||||
|
||||
integrated: 'Интегрированный',
|
||||
microphone: 'Микрофон',
|
||||
camera: 'Камера',
|
||||
|
||||
notes: 'Заметки'
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { useEffect, useState } from 'react';
|
||||
import { LightTheme, DarkTheme } from 'constants/Colors';
|
||||
import { en, fr, sp } from 'constants/Strings';
|
||||
import { en, fr, sp, pt, de, ru } from 'constants/Strings';
|
||||
|
||||
export function useSettingsContext() {
|
||||
|
||||
@ -8,12 +8,12 @@ export function useSettingsContext() {
|
||||
display: null,
|
||||
width: null,
|
||||
height: null,
|
||||
themes: [{ value: null, label: 'Default' }, { value: 'dark', label: 'Dark' }, { value: 'light', label: 'Light' }],
|
||||
themes: [{ value: 'dark', label: 'Dark' }, { value: 'light', label: 'Light' }],
|
||||
theme: null,
|
||||
scheme: null,
|
||||
colors: {},
|
||||
menuStyle: {},
|
||||
languages: [{ value: null, label: 'Default' }, { value: 'en', label: 'English' }, { value: 'fr', label: 'Français' }, { value: 'sp', label: 'Español' }],
|
||||
languages: [{ value: 'en', label: 'English' }, { value: 'fr', label: 'Français' }, { value: 'sp', label: 'Español' }, { value: 'pt', label: 'Português' }, { value: 'de', label: 'Deutsch' }, { value: 'ru', label: 'Русский' }],
|
||||
language: null,
|
||||
strings: en,
|
||||
dateFormat: 'mm/dd',
|
||||
@ -120,24 +120,42 @@ export function useSettingsContext() {
|
||||
|
||||
const language = localStorage.getItem('language');
|
||||
if (language && language.startsWith('fr')) {
|
||||
updateState({ language: 'fr', strings: fr, themes: [{ value: null, label: fr.default }, { value: 'dark', label: fr.dark }, { value: 'light', label: fr.light }]});
|
||||
updateState({ language: 'fr', strings: fr, themes: [{ value: 'dark', label: fr.dark }, { value: 'light', label: fr.light }]});
|
||||
}
|
||||
else if (language && language.startsWith('sp')) {
|
||||
updateState({ language: 'sp', strings: sp, themes: [{ value: null, label: sp.default }, { value: 'dark', label: sp.dark }, { value: 'light', label: sp.light }]});
|
||||
updateState({ language: 'sp', strings: sp, themes: [{ value: 'dark', label: sp.dark }, { value: 'light', label: sp.light }]});
|
||||
}
|
||||
else if (language && language.startsWith('en')) {
|
||||
updateState({ language: 'en', strings: en, themes: [{ value: null, label: en.default }, { value: 'dark', label: en.dark }, { value: 'light', label: en.light }]});
|
||||
updateState({ language: 'en', strings: en, themes: [{ value: 'dark', label: en.dark }, { value: 'light', label: en.light }]});
|
||||
}
|
||||
else if (language && language.startsWith('pt')) {
|
||||
updateState({ language: 'pt', strings: pt, themes: [{ value: 'dark', label: pt.dark }, { value: 'light', label: pt.light }]});
|
||||
}
|
||||
else if (language && language.startsWith('de')) {
|
||||
updateState({ language: 'de', strings: de, themes: [{ value: 'dark', label: de.dark }, { value: 'light', label: de.light }]});
|
||||
}
|
||||
else if (language && language.startsWith('ru')) {
|
||||
updateState({ language: 'ru', strings: ru, themes: [{ value: 'dark', label: ru.dark }, { value: 'light', label: ru.light }]});
|
||||
}
|
||||
else {
|
||||
const browser = navigator.language;
|
||||
if (browser && browser.startsWith('fr')) {
|
||||
updateState({ language: null, strings: fr, themes: [{ value: null, label: fr.default }, { value: 'dark', label: fr.dark }, { value: 'light', label: fr.light }]});
|
||||
updateState({ language: null, strings: fr, themes: [{ value: 'dark', label: fr.dark }, { value: 'light', label: fr.light }]});
|
||||
}
|
||||
else if (browser && browser.startsWith('sp')) {
|
||||
updateState({ language: null, strings: sp, themes: [{ value: null, label: sp.default }, { value: 'dark', label: sp.dark }, { value: 'light', label: sp.light }]});
|
||||
updateState({ language: null, strings: sp, themes: [{ value: 'dark', label: sp.dark }, { value: 'light', label: sp.light }]});
|
||||
}
|
||||
else if (browser && browser.startsWith('pt')) {
|
||||
updateState({ language: null, strings: pt, themes: [{ value: 'dark', label: pt.dark }, { value: 'light', label: pt.light }]});
|
||||
}
|
||||
else if (browser && browser.startsWith('de')) {
|
||||
updateState({ language: null, strings: de, themes: [{ value: 'dark', label: de.dark }, { value: 'light', label: de.light }]});
|
||||
}
|
||||
else if (browser && browser.startsWith('ru')) {
|
||||
updateState({ language: null, strings: ru, themes: [{ value: 'dark', label: ru.dark }, { value: 'light', label: ru.light }]});
|
||||
}
|
||||
else {
|
||||
updateState({ language: null, strings: en, themes: [{ value: null, label: en.default }, { value: 'dark', label: en.dark }, { value: 'light', label: en.light }]});
|
||||
updateState({ language: null, strings: en, themes: [{ value: 'dark', label: en.dark }, { value: 'light', label: en.light }]});
|
||||
}
|
||||
}
|
||||
|
||||
@ -175,27 +193,48 @@ export function useSettingsContext() {
|
||||
setLanguage: (code: string) => {
|
||||
if (code && code.startsWith('fr')) {
|
||||
localStorage.setItem('language', 'fr');
|
||||
updateState({ language: 'fr', strings: fr, themes: [{ value: null, label: fr.default }, { value: 'dark', label: fr.dark }, { value: 'light', label: fr.light }]});
|
||||
updateState({ language: 'fr', strings: fr, themes: [{ value: 'dark', label: fr.dark }, { value: 'light', label: fr.light }]});
|
||||
}
|
||||
else if (code && code.startsWith('sp')) {
|
||||
localStorage.setItem('language', 'sp');
|
||||
updateState({ language: 'sp', strings: sp, themes: [{ value: null, label: sp.default }, { value: 'dark', label: sp.dark }, { value: 'light', label: sp.light }]});
|
||||
updateState({ language: 'sp', strings: sp, themes: [{ value: 'dark', label: sp.dark }, { value: 'light', label: sp.light }]});
|
||||
}
|
||||
else if (code && code.startsWith('en')) {
|
||||
localStorage.setItem('language', 'en');
|
||||
updateState({ language: 'en', strings: en, themes: [{ value: null, label: fr.default }, { value: 'dark', label: en.dark }, { value: 'light', label: en.light }]});
|
||||
updateState({ language: 'en', strings: en, themes: [{ value: 'dark', label: en.dark }, { value: 'light', label: en.light }]});
|
||||
}
|
||||
else if (code && code.startsWith('pt')) {
|
||||
localStorage.setItem('language', 'pt');
|
||||
updateState({ language: 'pt', strings: pt, themes: [{ value: 'dark', label: pt.dark }, { value: 'light', label: pt.light }]});
|
||||
}
|
||||
else if (code && code.startsWith('de')) {
|
||||
localStorage.setItem('language', 'de');
|
||||
updateState({ language: 'de', strings: de, themes: [{ value: 'dark', label: de.dark }, { value: 'light', label: de.light }]});
|
||||
}
|
||||
else if (code && code.startsWith('ru')) {
|
||||
localStorage.setItem('language', 'ru');
|
||||
updateState({ language: 'ru', strings: ru, themes: [{ value: 'dark', label: ru.dark }, { value: 'light', label: ru.light }]});
|
||||
}
|
||||
else {
|
||||
localStorage.removeItem('language');
|
||||
const browser = navigator.language;
|
||||
if (browser && browser.startsWith('fr')) {
|
||||
updateState({ language: null, strings: fr, themes: [{ value: null, label: fr.default }, { value: 'dark', label: fr.dark }, { value: 'light', label: fr.light }]});
|
||||
updateState({ language: null, strings: fr, themes: [{ value: 'dark', label: fr.dark }, { value: 'light', label: fr.light }]});
|
||||
}
|
||||
if (browser && browser.startsWith('sp')) {
|
||||
updateState({ language: null, strings: sp, themes: [{ value: null, label: sp.default }, { value: 'dark', label: sp.dark }, { value: 'light', label: sp.light }]});
|
||||
else if (browser && browser.startsWith('sp')) {
|
||||
updateState({ language: null, strings: sp, themes: [{ value: 'dark', label: sp.dark }, { value: 'light', label: sp.light }]});
|
||||
}
|
||||
else if (browser && browser.startsWith('pt')) {
|
||||
updateState({ language: null, strings: pt, themes: [{ value: 'dark', label: pt.dark }, { value: 'light', label: pt.light }]});
|
||||
}
|
||||
else if (browser && browser.startsWith('de')) {
|
||||
updateState({ language: null, strings: de, themes: [{ value: 'dark', label: de.dark }, { value: 'light', label: de.light }]});
|
||||
}
|
||||
else if (browser && browser.startsWith('ru')) {
|
||||
updateState({ language: null, strings: ru, themes: [{ value: 'dark', label: ru.dark }, { value: 'light', label: ru.light }]});
|
||||
}
|
||||
else {
|
||||
updateState({ language: null, strings: en, themes: [{ value: null, label: en.default }, { value: 'dark', label: en.dark }, { value: 'light', label: en.light }]});
|
||||
updateState({ language: null, strings: en, themes: [{ value: 'dark', label: en.dark }, { value: 'light', label: en.light }]});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -1,10 +1,10 @@
|
||||
import { useRef, useCallback } from 'react';
|
||||
import { Modal, Input, Button, Switch } from 'antd';
|
||||
import { Modal, Input, Button } from 'antd';
|
||||
import { ProfileWrapper, ProfileDetailsWrapper, ProfileImageWrapper } from './Profile.styled';
|
||||
import { useProfile } from './useProfile.hook';
|
||||
import { Logo } from 'logo/Logo';
|
||||
import { AccountAccess } from './accountAccess/AccountAccess';
|
||||
import { LogoutOutlined, CloseOutlined, EditOutlined, BookOutlined, EnvironmentOutlined } from '@ant-design/icons';
|
||||
import { CloseOutlined, EditOutlined, BookOutlined, EnvironmentOutlined } from '@ant-design/icons';
|
||||
import Cropper from 'react-easy-crop';
|
||||
|
||||
export function Profile({ closeProfile }) {
|
||||
@ -12,7 +12,6 @@ export function Profile({ closeProfile }) {
|
||||
const [ modal, modalContext ] = Modal.useModal();
|
||||
const { state, actions } = useProfile();
|
||||
const imageFile = useRef(null);
|
||||
const all = useRef(false);
|
||||
|
||||
const selected = (e) => {
|
||||
var reader = new FileReader();
|
||||
|
@ -131,7 +131,7 @@ export function AccountAccess() {
|
||||
size="small"
|
||||
value={state.theme}
|
||||
onChange={actions.setTheme}
|
||||
options={state.themes}
|
||||
options={[ { value: null, label: state.strings.default }, ...state.themes ]}
|
||||
/>
|
||||
</div>
|
||||
<div className="option">
|
||||
@ -142,7 +142,7 @@ export function AccountAccess() {
|
||||
size="small"
|
||||
value={state.language}
|
||||
onChange={actions.setLanguage}
|
||||
options={state.languages}
|
||||
options={[ { value: null, label: state.strings.default }, ...state.languages ]}
|
||||
/>
|
||||
</div>
|
||||
<div className="option">
|
||||
@ -153,7 +153,7 @@ export function AccountAccess() {
|
||||
size="small"
|
||||
value={state.audioId}
|
||||
onChange={actions.setAudio}
|
||||
options={[ { value: null, label: 'Default' }, ...state.audioInputs ]}
|
||||
options={[ { value: null, label: state.strings.default }, ...state.audioInputs ]}
|
||||
/>
|
||||
</div>
|
||||
<div className="option">
|
||||
@ -164,7 +164,7 @@ export function AccountAccess() {
|
||||
size="small"
|
||||
value={state.videoId}
|
||||
onChange={actions.setVideo}
|
||||
options={[ { value: null, label: 'Default' }, ...state.videoInputs ]}
|
||||
options={[ { value: null, label: state.strings.default }, ...state.videoInputs ]}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -2,7 +2,6 @@ import { useRef, useState, useEffect, useContext } from 'react';
|
||||
import { AccountContext } from 'context/AccountContext';
|
||||
import { ProfileContext } from 'context/ProfileContext';
|
||||
import { SettingsContext } from 'context/SettingsContext';
|
||||
import { RingContext } from 'context/RingContext';
|
||||
import { generateSeal, unlockSeal, updateSeal } from 'context/sealUtil';
|
||||
import { getUsername } from 'api/getUsername';
|
||||
export function useAccountAccess() {
|
||||
@ -48,7 +47,6 @@ export function useAccountAccess() {
|
||||
const profile = useContext(ProfileContext);
|
||||
const account = useContext(AccountContext);
|
||||
const settings = useContext(SettingsContext);
|
||||
const ring = useContext(RingContext);
|
||||
const debounce = useRef(null);
|
||||
|
||||
const updateState = (value) => {
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { Button, Modal, Tooltip } from 'antd';
|
||||
import { DetailsWrapper, ModalFooter } from './Details.styled';
|
||||
import { DetailsWrapper } from './Details.styled';
|
||||
import { CloseOutlined } from '@ant-design/icons';
|
||||
import { useDetails } from './useDetails.hook';
|
||||
import { Logo } from 'logo/Logo';
|
||||
@ -114,19 +114,6 @@ export function Details({ closeDetails, closeConversation, openContact }) {
|
||||
}
|
||||
};
|
||||
|
||||
const editSubjectFooter = (
|
||||
<ModalFooter>
|
||||
<Button key="back" onClick={actions.clearEditSubject}>Cancel</Button>
|
||||
<Button key="save" type="primary" onClick={saveSubject} loading={state.busy}>Save</Button>
|
||||
</ModalFooter>
|
||||
);
|
||||
|
||||
const editMembersFooter = (
|
||||
<ModalFooter>
|
||||
<Button key="back" onClick={actions.clearEditMembers}>Done</Button>
|
||||
</ModalFooter>
|
||||
);
|
||||
|
||||
return (
|
||||
<DetailsWrapper>
|
||||
{ modalContext }
|
||||
|
@ -1,5 +1,4 @@
|
||||
import styled from 'styled-components';
|
||||
import { Colors } from 'constants/Colors';
|
||||
|
||||
export const DetailsWrapper = styled.div`
|
||||
height: 100%;
|
||||
@ -168,10 +167,3 @@ export const DetailsWrapper = styled.div`
|
||||
}
|
||||
`
|
||||
|
||||
export const ModalFooter = styled.div`
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
`
|
||||
|
@ -1,5 +1,4 @@
|
||||
import styled from 'styled-components';
|
||||
import { Colors } from 'constants/Colors';
|
||||
|
||||
export const EditMembersWrapper = styled.div`
|
||||
display: flex;
|
||||
|
Loading…
Reference in New Issue
Block a user