From 9f731da5be1084633acbff63e35ecfae9c7e35b3 Mon Sep 17 00:00:00 2001 From: Kieran Date: Sun, 24 Sep 2023 12:36:51 +0000 Subject: [PATCH] chore: Update translations --- packages/app/src/Feed/LoginFeed.ts | 18 ++++- packages/app/src/Hooks/useModeration.tsx | 2 +- packages/app/src/Login/Functions.ts | 2 +- packages/app/src/Login/LoginSession.ts | 2 +- packages/app/src/Login/MultiAccountStore.ts | 2 +- .../app/src/Pages/settings/Moderation.tsx | 80 +++++++++++-------- packages/app/src/translations/de_DE.json | 8 +- packages/app/src/translations/ru_RU.json | 60 +++++++------- packages/system/src/event-publisher.ts | 2 +- packages/system/src/index.ts | 2 +- 10 files changed, 101 insertions(+), 77 deletions(-) diff --git a/packages/app/src/Feed/LoginFeed.ts b/packages/app/src/Feed/LoginFeed.ts index 38719aef..6de39538 100644 --- a/packages/app/src/Feed/LoginFeed.ts +++ b/packages/app/src/Feed/LoginFeed.ts @@ -8,7 +8,18 @@ import useEventPublisher from "Hooks/useEventPublisher"; import { getMutedKeys } from "Feed/MuteList"; import useModeration from "Hooks/useModeration"; import useLogin from "Hooks/useLogin"; -import { SnortAppData, addSubscription, setAppData, setBlocked, setBookmarked, setFollows, setMuted, setPinned, setRelays, setTags } from "Login"; +import { + SnortAppData, + addSubscription, + setAppData, + setBlocked, + setBookmarked, + setFollows, + setMuted, + setPinned, + setRelays, + setTags, +} from "Login"; import { SnortPubKey } from "Const"; import { SubscriptionEvent } from "Subscription"; import useRelaysFeedFollows from "./RelaysFeedFollows"; @@ -101,12 +112,11 @@ export default function useLoginFeed() { ).then(a => addSubscription(login, ...a.filter(a => a !== undefined).map(unwrap))); const appData = getNewest(loginFeed.data.filter(a => a.kind === EventKind.AppData)); - if(appData) { + if (appData) { publisher.decryptGeneric(appData.content, appData.pubkey).then(d => { setAppData(login, JSON.parse(d) as SnortAppData, appData.created_at * 1000); - }) + }); } - } }, [loginFeed, publisher]); diff --git a/packages/app/src/Hooks/useModeration.tsx b/packages/app/src/Hooks/useModeration.tsx index d07dc355..36b767ed 100644 --- a/packages/app/src/Hooks/useModeration.tsx +++ b/packages/app/src/Hooks/useModeration.tsx @@ -76,6 +76,6 @@ export default function useModeration() { unblock, isBlocked, isMutedWord, - isEventMuted + isEventMuted, }; } diff --git a/packages/app/src/Login/Functions.ts b/packages/app/src/Login/Functions.ts index 6cf14f10..5413a77c 100644 --- a/packages/app/src/Login/Functions.ts +++ b/packages/app/src/Login/Functions.ts @@ -158,7 +158,7 @@ export function setBookmarked(state: LoginSession, bookmarked: Array, ts } export function setAppData(state: LoginSession, data: SnortAppData, ts: number) { - if(state.appData.timestamp >= ts) { + if (state.appData.timestamp >= ts) { return; } state.appData.item = data; diff --git a/packages/app/src/Login/LoginSession.ts b/packages/app/src/Login/LoginSession.ts index de469ab9..3550d375 100644 --- a/packages/app/src/Login/LoginSession.ts +++ b/packages/app/src/Login/LoginSession.ts @@ -19,7 +19,7 @@ export enum LoginSessionType { } export interface SnortAppData { - mutedWords: Array + mutedWords: Array; } export interface LoginSession { diff --git a/packages/app/src/Login/MultiAccountStore.ts b/packages/app/src/Login/MultiAccountStore.ts index 0d355e47..0e0e149e 100644 --- a/packages/app/src/Login/MultiAccountStore.ts +++ b/packages/app/src/Login/MultiAccountStore.ts @@ -48,7 +48,7 @@ const LoggedOut = { subscriptions: [], appData: { item: { - mutedWords: [] + mutedWords: [], }, timestamp: 0, }, diff --git a/packages/app/src/Pages/settings/Moderation.tsx b/packages/app/src/Pages/settings/Moderation.tsx index 0e3b5713..c48cb92f 100644 --- a/packages/app/src/Pages/settings/Moderation.tsx +++ b/packages/app/src/Pages/settings/Moderation.tsx @@ -6,39 +6,53 @@ import { useState } from "react"; import { FormattedMessage } from "react-intl"; export function ModerationSettings() { - const login = useLogin(); - const [muteWord, setMuteWord] = useState(""); + const login = useLogin(); + const [muteWord, setMuteWord] = useState(""); - function addMutedWord() { - login.appData ??= { - item: { - mutedWords: [] - }, - timestamp: 0 - }; - setAppData(login, { - ...login.appData.item, - mutedWords: appendDedupe(login.appData.item.mutedWords, [muteWord]) - }, unixNowMs()); - setMuteWord(""); - } - return <> -

- -

-
-
- setMuteWord(e.target.value)} /> - -
- {login.appData.item.mutedWords.map(v =>
-
{v}
- -
)} + function addMutedWord() { + login.appData ??= { + item: { + mutedWords: [], + }, + timestamp: 0, + }; + setAppData( + login, + { + ...login.appData.item, + mutedWords: appendDedupe(login.appData.item.mutedWords, [muteWord]), + }, + unixNowMs(), + ); + setMuteWord(""); + } + return ( + <> +

+ +

+
+
+ setMuteWord(e.target.value)} + /> +
+ {login.appData.item.mutedWords.map(v => ( +
+
{v}
+ +
+ ))} +
-} \ No newline at end of file + ); +} diff --git a/packages/app/src/translations/de_DE.json b/packages/app/src/translations/de_DE.json index f1907710..cc736527 100644 --- a/packages/app/src/translations/de_DE.json +++ b/packages/app/src/translations/de_DE.json @@ -150,7 +150,7 @@ "GUlSVG": "Beanspruche deine enthaltene Snort Nostr-Adresse", "Gcn9NQ": "Magnet Link", "GspYR7": "{n} Gefällt nicht", - "Gxcr08": "Broadcast Event", + "Gxcr08": "Event verbreiten", "H+vHiz": "Hex-Schlüssel...", "H0JBH6": "Abmelden", "H6/kLh": "Bestellung bezahlt!", @@ -186,7 +186,7 @@ "KoFlZg": "Mint-URL eingeben", "KtsyO0": "PIN eingeben", "LF5kYT": "Weitere Verbindungen", - "LR1XjT": "Pin too short", + "LR1XjT": "PIN zu kurz", "LXxsbk": "Anonym", "LgbKvU": "Kommentar", "Lu5/Bj": "In Zapstr öffnen", @@ -437,12 +437,12 @@ "vOKedj": "{n,plural,one {}=1{& {n} anderer} other{& {n} andere}}", "vZ4quW": "NIP-05 ist eine DNS-basierte Verifizierungsspezifikation, die dabei hilft, dich als echten Benutzer zu validieren.", "vhlWFg": "Umfrageoptionen", - "vlbWtt": "Erhalte eine kostenlos", + "vlbWtt": "Eine kostenlos erhalten", "vrTOHJ": "{amount} sats", "vxwnbh": "Maß an Arbeit, die auf alle veröffentlichte Events angewendet werden soll", "wEQDC6": "Anpassen", "wLtRCF": "Dein Schlüssel", - "wSZR47": "Submit", + "wSZR47": "Absenden", "wWLwvh": "Anon", "wYSD2L": "Nostr-Adresse", "wih7iJ": "Name ist blockiert", diff --git a/packages/app/src/translations/ru_RU.json b/packages/app/src/translations/ru_RU.json index f6bfcc37..1c2548e2 100644 --- a/packages/app/src/translations/ru_RU.json +++ b/packages/app/src/translations/ru_RU.json @@ -1,27 +1,27 @@ { "+D82kt": "Вы уверены, что хотите сделать репост: {id}", - "+PzQ9Y": "Payout Now", - "+Vxixo": "Secret Group Chat", + "+PzQ9Y": "Выплатить сейчас", + "+Vxixo": "Секретный групповой чат", "+aZY2h": "Тип запа", - "+tShPg": "following", + "+tShPg": "подписки", "+vA//S": "Логины", "+vIQlC": "Пожалуйста, обязательно сохраните следующий пароль, чтобы в будущем управлять своим хэндлом", "+vVZ/G": "Подключиться", - "+xliwN": "{name} reposted", + "+xliwN": "{name} сделал репост", "/4tOwT": "Пропустить", "/JE/X+": "Поддержка аккаунта", "/PCavi": "Публичный", "/RD0e2": "Nostr использует технологию цифровой подписи для создания защищенных от несанкционированного доступа заметок, которые можно безопасно копировать на множество релеев, обеспечивая резервное хранение Вашего контента.", - "/Xf4UW": "Send anonymous usage metrics", + "/Xf4UW": "Отправлять показатели анонимного использования", "/d6vEc": "Упростить поиск и распространение вашего профиля в Nostr", "/n5KSF": "{n} мс", - "00LcfG": "Load more", + "00LcfG": "Загрузить больше", "08zn6O": "Экспортировать ключи", "0Azlrb": "Управление", "0BUTMv": "Поиск...", "0jOEtS": "Неверный LNURL", "0mch2Y": "имя содержит запрещенные символы", - "0uoY11": "Show Status", + "0uoY11": "Показать статус", "0yO7wF": "{n} секунд", "1A7TZk": "Что такое Snort и как он работает?", "1Mo59U": "Вы уверены, что хотите удалить эту заметку из закладок?", @@ -37,7 +37,7 @@ "2a2YiP": "{n} Закладок", "2k0Cv+": "Дизлайки ({n})", "2ukA4d": "{n} часов", - "3KNMbJ": "Articles", + "3KNMbJ": "Статьи", "3Rx6Qo": "Продвинутые", "3cc4Ct": "Светлый", "3gOsZq": "Переводчики", @@ -46,7 +46,7 @@ "3tVy+Z": "{n} Подписчиков", "3xCwbZ": "ИЛИ", "3yk8fB": "Кошелек", - "40VR6s": "Nostr Connect", + "40VR6s": "Подключение Nostr", "450Fty": "Ничьи", "47FYwb": "Отменить", "4IPzdn": "Основные разработчики", @@ -61,14 +61,14 @@ "5oTnfy": "Приобрести хэндл", "5rOdPG": "После того как Вы настроили расширение для управления ключами и сгенерировали ключ, Вы можете последовать нашему гиду для новичков, чтобы настроить свой профиль и найти интересных людей, заслуживающих подписки на Nostr.", "5u6iEc": "Перевести на Pubkey", - "5vMmmR": "Usernames are not unique on Nostr. The nostr address is your unique human-readable address that is unique to you upon registration.", + "5vMmmR": "Имя пользователя не является уникальным на Nostr. Nostr адрес - это ваш уникальный человеко читаемый адрес, который уникален для вас при регистрации.", "5ykRmX": "Отправить зап", "6/SF6e": "

{n}

Cashu sats", - "6/hB3S": "Watch Replay", + "6/hB3S": "Смотреть повтор", "65BmHb": "Не удалось загрузить изображение через {host}, нажмите здесь, чтобы загрузить напрямую", - "6OSOXl": "Reason: {reason}", + "6OSOXl": "Причина: {reason}", "6Yfvvp": "Получите адрес", - "6bgpn+": "Not all clients support this, you may still receive some zaps as if zap splits was not configured", + "6bgpn+": "Не все клиенты поддерживают это, вы все равно можете получить некоторые запы, как если бы запределение не было настроено", "6ewQqw": "Лайки ({n})", "6uMqL1": "Не оплачено", "7+Domh": "Заметки", @@ -76,13 +76,13 @@ "7hp70g": "NIP-05", "8/vBbP": "Репосты ({n})", "89q5wc": "Подтверждать репосты", - "8Kboo2": "Scan this QR code with your signer app to get started", + "8Kboo2": "Отсканируйте этот QR код с вашим приложением для регистрации, чтобы начать", "8QDesP": "Запнуть {n} сат", - "8Rkoyb": "Recipient", - "8Y6bZQ": "Invalid zap split: {input}", + "8Rkoyb": "Получатель", + "8Y6bZQ": "Неверный zap сплит: {input}", "8g2vyB": "имя слишком длинное", "8v1NN+": "Фраза для сопряжения", - "8xNnhi": "Nostr Extension", + "8xNnhi": "Расширение Nostr", "9+Ddtu": "Далее", "9HU8vw": "Ответить", "9SvQep": "Подписан(а) на {n}", @@ -91,7 +91,7 @@ "9pMqYs": "Nostr адрес", "9wO4wJ": "Лайтнинг-инвойс", "ADmfQT": "Ветка", - "AGNz71": "Zap All {n} sats", + "AGNz71": "Зап Все {n} sats", "ASRK0S": "Этот автор был заглушен", "Adk34V": "Настройте свой профиль", "Ai8VHU": "Снятие ограничения срока хранения ваших заметок на релее Snort", @@ -108,7 +108,7 @@ "BcGMo+": "Заметки содержат текст; наиболее популярное применение этих заметок - передача сообщений \"подобно твиттеру\".", "C5xzTC": "Premium", "C81/uG": "Выход", - "C8HhVE": "Suggested Follows", + "C8HhVE": "Предложенные подписки", "CHTbO3": "Не удалось загрузить инвойс", "CVWeJ6": "Популярные профили", "CmZ9ls": "{n} заглушен", @@ -120,12 +120,12 @@ "DZzCem": "Показать последние {n} заметки", "DcL8P+": "Саппортер", "Dh3hbq": "Авто Зап", - "Dn82AL": "Live", + "Dn82AL": "Прямой эфир", "DtYelJ": "Перевод", "E8a4yq": "Подпишитесь на популярные аккаунты", - "ELbg9p": "Data Providers", + "ELbg9p": "Данные провайдера", "EPYwm7": "Ваш приватный ключ - это Ваш пароль. Если Вы потеряете этот ключ, вы потеряете доступ к своей учетной записи! Скопируйте и сохраните его в надежном месте. Восстановить приватный ключ невозможно.", - "EQKRE4": "Show badges on profile pages", + "EQKRE4": "Показывать значки на страницах профиля", "EWyQH5": "Глобальная лента", "Ebl/B2": "Перевести на {lang}", "EcZF24": "Кастомные релеи", @@ -135,9 +135,9 @@ "F+B3x1": "Мы также сотрудничаем с nostrplebs.com, чтобы предоставить Вам больше возможностей", "F3l7xL": "Добавить аккаунт", "FDguSC": "{n} Запов", - "FMfjrl": "Show status messages on profile pages", + "FMfjrl": "Показывать статусные сообщения на страницах профиля", "FS3b54": "Готово!", - "FSYL8G": "Trending Users", + "FSYL8G": "Трендовые пользователи", "FdhSU2": "Получить сейчас", "FfYsOb": "Произошла ошибка!", "FmXUJg": "подписан(а) на Вас", @@ -145,24 +145,24 @@ "G1BGCg": "Выберите кошелек", "GFOoEE": "Соль", "GL8aXW": "Закладки ({n})", - "GQPtfk": "Join Stream", - "GSye7T": "Lightning Address", + "GQPtfk": "Присоединиться к стриму", + "GSye7T": "Lightning Адрес", "GUlSVG": "Получите Nostr адрес от Snort", "Gcn9NQ": "Magnet-ссылка", "GspYR7": "{n} Дизлайк", - "Gxcr08": "Broadcast Event", + "Gxcr08": "Трансляция события", "H+vHiz": "Hex ключа..", "H0JBH6": "Выйти", "H6/kLh": "Заказ оплачен!", "HAlOn1": "Имя", "HFls6j": "имя будет доступно позже", "HOzFdo": "Заглушен", - "HWbkEK": "Clear cache and reload", + "HWbkEK": "Очистить кэш и перезагрузить", "HbefNb": "Открыть кошелек", - "HhcAVH": "You don't follow this person, click here to load media from {link}, or update your preferences to always load media from everybody.", + "HhcAVH": "Вы не подписаны на этого человека, нажмите здесь, чтобы загрузить медиа из {link}, или обновите ваши предпочтения чтобы всегда загружать медиа от всех.", "IDjHJ6": "Спасибо, что выбрали Snort, пожалуйста, поддержите проект, если это возможно.", "IEwZvs": "Вы уверены, что хотите открепить эту заметку?", - "IKKHqV": "Follows", + "IKKHqV": "Подписки", "INSqIz": "Имя пользователя в Twitter...", "IUZC+0": "Это означает, что никто не может изменить созданные Вами заметки, и каждый может легко убедиться, что увиденные ими заметки созданы Вами.", "Ig9/a1": "Sent {n} sats to {name}", diff --git a/packages/system/src/event-publisher.ts b/packages/system/src/event-publisher.ts index 4c0743d3..d4bbb1fa 100644 --- a/packages/system/src/event-publisher.ts +++ b/packages/system/src/event-publisher.ts @@ -277,7 +277,7 @@ export class EventPublisher { */ async decryptGeneric(content: string, from: string) { const pl = decodeEncryptionPayload(content); - switch(pl.v) { + switch (pl.v) { case MessageEncryptorVersion.Nip4: { const nip4Payload = `${base64.encode(pl.ciphertext)}?iv=${base64.encode(pl.nonce)}`; return await this.#signer.nip4Decrypt(nip4Payload, from); diff --git a/packages/system/src/index.ts b/packages/system/src/index.ts index 38d69c33..ea9ff561 100644 --- a/packages/system/src/index.ts +++ b/packages/system/src/index.ts @@ -158,4 +158,4 @@ export function decodeEncryptionPayload(p: string) { export function encodeEncryptionPayload(p: MessageEncryptorPayload) { return base64.encode(new Uint8Array([p.v, ...p.nonce, ...p.ciphertext])); -} \ No newline at end of file +}