From 0369b453851882476018d444c179284e2932682e Mon Sep 17 00:00:00 2001 From: Oleg Koretsky Date: Thu, 2 Mar 2023 20:41:22 +0200 Subject: [PATCH 1/3] Add Russian (ru) translation --- .../vitorpamplona/amethyst/ui/MainActivity.kt | 1 - .../amethyst/ui/actions/ImageSaver.kt | 11 +- .../amethyst/ui/actions/ImageUploader.kt | 20 +- .../amethyst/ui/actions/NewPostViewModel.kt | 12 +- app/src/main/res/values-ar/strings.xml | 5 - app/src/main/res/values-pt-rBR/strings.xml | 5 - app/src/main/res/values-ru/strings.xml | 174 ++++++++++++++++++ app/src/main/res/values/strings.xml | 5 - 8 files changed, 186 insertions(+), 47 deletions(-) create mode 100644 app/src/main/res/values-ru/strings.xml diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt index 48ac5aee1..3b2b81287 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/MainActivity.kt @@ -21,7 +21,6 @@ import com.vitorpamplona.amethyst.service.relays.Client import com.vitorpamplona.amethyst.ui.screen.AccountScreen import com.vitorpamplona.amethyst.ui.screen.AccountStateViewModel import com.vitorpamplona.amethyst.ui.theme.AmethystTheme -import java.util.Locale class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageSaver.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageSaver.kt index 400d728d7..5e1b20990 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageSaver.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageSaver.kt @@ -9,12 +9,11 @@ import android.os.Environment import android.provider.MediaStore import androidx.annotation.RequiresApi import androidx.core.net.toUri -import java.io.File -import com.vitorpamplona.amethyst.R import okhttp3.* import okio.BufferedSource import okio.IOException import okio.sink +import java.io.File object ImageSaver { @@ -50,7 +49,7 @@ object ImageSaver { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { val contentType = response.header("Content-Type") checkNotNull(contentType) { - context.getString(R.string.can_t_find_out_the_content_type) + "Can't find out the content type" } saveContentQ( @@ -58,7 +57,6 @@ object ImageSaver { contentType = contentType, contentSource = response.body.source(), contentResolver = context.contentResolver, - context = context ) } else { saveContentDefault( @@ -82,7 +80,6 @@ object ImageSaver { contentType: String, contentSource: BufferedSource, contentResolver: ContentResolver, - context: Context ) { val contentValues = ContentValues().apply { put(MediaStore.MediaColumns.DISPLAY_NAME, displayName) @@ -96,13 +93,13 @@ object ImageSaver { val uri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues) checkNotNull(uri) { - context.getString(R.string.can_t_insert_the_new_content) + "Can't insert the new content" } try { val outputStream = contentResolver.openOutputStream(uri) checkNotNull(outputStream) { - context.getString(R.string.can_t_open_the_content_output_stream) + "Can't open the content output stream" } outputStream.use { diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageUploader.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageUploader.kt index c426c3a71..ccb6b49cb 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageUploader.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/ImageUploader.kt @@ -1,23 +1,14 @@ package com.vitorpamplona.amethyst.ui.actions import android.content.ContentResolver -import android.content.Context import android.net.Uri import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper -import java.io.IOException -import java.util.UUID -import okhttp3.Call -import okhttp3.Callback -import okhttp3.MediaType -import com.vitorpamplona.amethyst.R +import okhttp3.* import okhttp3.MediaType.Companion.toMediaType -import okhttp3.MultipartBody -import okhttp3.OkHttpClient -import okhttp3.Request -import okhttp3.RequestBody -import okhttp3.Response import okio.BufferedSink import okio.source +import java.io.IOException +import java.util.* object ImageUploader { fun uploadImage( @@ -25,7 +16,6 @@ object ImageUploader { contentResolver: ContentResolver, onSuccess: (String) -> Unit, onError: (Throwable) -> Unit, - context : Context ) { val contentType = contentResolver.getType(uri) @@ -43,7 +33,7 @@ object ImageUploader { override fun writeTo(sink: BufferedSink) { val imageInputStream = contentResolver.openInputStream(uri) checkNotNull(imageInputStream) { - context.getString(R.string.can_t_open_the_image_input_stream) + "Can't open the image input stream" } imageInputStream.source().use(sink::writeAll) @@ -66,7 +56,7 @@ object ImageUploader { val tree = jacksonObjectMapper().readTree(body.string()) val url = tree?.get("data")?.get("link")?.asText() checkNotNull(url) { - context.getString(R.string.there_must_be_an_uploaded_image_url_in_the_response) + "There must be an uploaded image URL in the response" } onSuccess(url) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostViewModel.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostViewModel.kt index 37a9114a4..de6470d22 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostViewModel.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewPostViewModel.kt @@ -9,12 +9,7 @@ import androidx.compose.ui.text.TextRange import androidx.compose.ui.text.input.TextFieldValue import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.vitorpamplona.amethyst.model.Account -import com.vitorpamplona.amethyst.model.LocalCache -import com.vitorpamplona.amethyst.model.Note -import com.vitorpamplona.amethyst.model.User -import com.vitorpamplona.amethyst.model.parseDirtyWordForKey -import com.vitorpamplona.amethyst.R +import com.vitorpamplona.amethyst.model.* import com.vitorpamplona.amethyst.ui.components.isValidURL import com.vitorpamplona.amethyst.ui.components.noProtocolUrlValidator import kotlinx.coroutines.flow.MutableSharedFlow @@ -134,10 +129,9 @@ class NewPostViewModel: ViewModel() { onError = { isUploadingImage = false viewModelScope.launch { - imageUploadingError.emit(context.getString(R.string.failed_to_upload_the_image)) + imageUploadingError.emit("Failed to upload the image") } - }, - context = context + } ) } diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 829d4df40..4e0578e1b 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -59,11 +59,6 @@ خطأ في تحليل المعاينة لـ %1$s : %2$s معاينة صورة البطاقة لـ %1$s قناة جديدة - لا يمكن معرفة نوع المحتوى - لا يمكن إدراج المحتوى الجديد - لا يمكن فتح دفق إخراج المحتوى - لا يمكن فتح دفق إدخال الصورة - يجب أن يكون هناك عنوان URL للصورة التي تم تحميلها في الاستجابة اسم القناة مجموعتي الرائعة رابط الصورة diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 505558701..b8a45d4c4 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -59,11 +59,6 @@ Erro ao analisar a visualização para %1$s: %2$s Visualize a imagem do cartão para %1$s Novo Canal - Não é possível descobrir o tipo de conteúdo - Não é possível inserir o novo conteúdo - Não é possível abrir o fluxo de saída de conteúdo - Não é possível abrir o fluxo de entrada de imagem - Deve haver um URL de imagem na resposta Nome do Canal Meu grupo Url da foto diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml new file mode 100644 index 000000000..ec443deab --- /dev/null +++ b/app/src/main/res/values-ru/strings.xml @@ -0,0 +1,174 @@ + + Amethyst + Amethyst Debug + Наведите на QR код + Показать QR + Фото профиля + Сканировать QR + Показать + Запись была помечена как неуместная + запись не найдена + Фото канала + Связанное событие не найдено + Не удалось расшифровать сообщение + Фото группы + Откровенное содержание + Спам + Выдача себя за другое лицо + Незаконные действия + Неизвестно + Иконка релея + Неизвестный автор + Скопировать текст + Скопировать ключ пользователя + Скопировать ID записи + Разослать + Блокировать и скрыть пользователя + Сообщить о спаме / мошеничестве + Сообщить о выдаче себя за другое лицо + Сообщить об откровенном содержании + Сообщить о незаконных действиях + Войдите с приватным ключом чтобы ответить + Войдите с приватным ключом чтобы продвигать записи + Войдите с приватным ключом чтобы лайкать записи + Не настроены запы. Нажмите и удерживайте для настройки + Войдите с приватным ключом чтобы запать + Запы + Просмотры + Продвинуть + Цитировать + Новая сумма в sat + Добавить + "в ответ " + " и " + "в канале " + Баннер профиля + " Подписок" + " Подписчиков" + Профиль + Фильтры безопасности + Выйти + Больше + Lightning инвойс + Оплатить + Lightning чаевые + Заметка для получателя + Большое спасибо! + Сумма в sat + Отправить + "Не переводить с " + "Не удалось создать предпросмотр для %1$s : %2$s" + "Предпросмотр для %1$s" + Новый канал + Название канала + Моя новая группа + URL фотографии + Описание + "О нас.. " + Что нового? + Опубликовать + Сохранить + Создать + Отменить + Не удалось загрузить фото + Адрес релея + Записи + Ошибки + Домашняя лента + Лента личных сообщений + Лента чатов + Глобальная лента + Добавить релей + Отображаемое имя + Моё отображаемое имя + Никнейм + Мой никнейм + Обо мне + URL фотографии + URL баннера + URL сайта + LN адрес + LN URL (устаревш.) + Фото сохранено в галерею + Не удалось сохранить фото + Загрузить\nфото + Загрузка… + Пользователь не усталовил Lightning адрес для получения чаевых + "ответить.. " + Копирует ID записи для отправки + Скопировать ID канала (записи) + Редактирует метаданные канала + Войти + Известные + Новые запросы + Заблокированные пользователи + Новые треды + Обсуждения + Записи + Ответы + "Подписок" + "Жалоб" + Больше опций + " Релеев" + Сайт + Lightning адрес + Копирует Nsec ID (ваш пароль) для резервного копирования + Скопировать приватный ключ + Копирует публичный ключ для отправки + Скопировать публичный ключ (NPub) + Отправить сообщение + Редактирует метаданные пользователя + Подписаться + Разблокировать + Скопировать ID пользователя + Разблокировать пользователя + "npub, hex, никнейм " + Очистить + Логотип приложения + nsec / npub / приватный ключ в hex + Показать пароль + Скрыть пароль + Некорректный ключ + "Я принимаю " + условия использования + Нужно принять условия использования + Нужно ввести ключ + Войти + Сгенерировать ключ + Загрузка ленты + "Не удалось загрузить ответы: " + Повторить + Лента пуста. + Обновить + создал(а) + с описанием + и фото + сменил(а) название на + описание на + и фото на + Выйти + Отписаться + Канал создан + Информация о канале изменена на + Публичный чат + записей получено + Удалить + Автоматически + переведено с + на + Показать сперва на + + Всегда переводить на + NIP-05 + LNURL... + никогда + сейчас + ч + м + д + Нагота + Брань / Оскорбления + Сообщить об оскорблениях + Сообщить о наготе / порно + других + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 952cd426c..37cb35f12 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -60,11 +60,6 @@ "Error parsing preview for %1$s : %2$s" "Preview Card Image for %1$s" New Channel - Can\'t find out the content type - Can\'t insert the new content - Can\'t open the content output stream - Can\'t open the image input stream - There must be an uploaded image URL in the response Channel Name My Awesome Group Picture Url From 3cd37b8658e04941a5fc8d30cafa43f414298cd2 Mon Sep 17 00:00:00 2001 From: Oleg Koretsky Date: Thu, 2 Mar 2023 23:28:31 +0200 Subject: [PATCH 2/3] Add Ukrainian (uk) translation --- app/src/main/res/values-uk/strings.xml | 174 +++++++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 app/src/main/res/values-uk/strings.xml diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml new file mode 100644 index 000000000..9d587f90a --- /dev/null +++ b/app/src/main/res/values-uk/strings.xml @@ -0,0 +1,174 @@ + + Amethyst + Amethyst Debug + Наведіть на QR код + Показати QR + Фото профілю + Сканувати QR + Показати + Допис було відмічено як недоречний + допис не знайдено + Фото каналу + Пов\'язану подію не знайдено + Не вдалося розшифрувати повідомлення + Фото групи + Відвертий вміст + Спам + Видача себе за іншу особу + Незаконні дії + Невідомо + Іконка рілею + Невідомий автор + Скопіювати текст + Скопіювати ключ користувача + Скопіювати ID допису + Розіслати + Блокувати та приховати користувача + Повідомити про спам / шахрайство + Повідомити про видачу себе за іншу особу + Повідомити про відвертий вміст + Повідомити про незаконні дії + Увійдіть з приватним ключем щоб відповісти + Увійдіть з приватним ключем щоб просувати дописи + Увійдіть з приватним ключем щоб лайкати дописи + Не налаштовані запи. Натисніть та утримуйте для налаштування + Увійдіть з приватним ключем щоб запати + Запи + Перегляди + Просувати + Цитувати + Нова сума в sat + Додати + "у відповідь " + " та " + "в каналі " + Банер профілю + " Підписок" + " Підписників" + Профіль + Фільтри безпеки + Вийти + Більше + Lightning інвойс + Сплатити + Lightning чайові + Примітка для отримувача + Дуже дякуємо! + Сума в sat + Надіслати + "Не переводити з " + "Не вдалося створити перегляд для %1$s : %2$s" + "Перегляд для %1$s" + Новий канал + Назва каналу + Моя нова група + URL фотографії + Опис + "Про нас.. " + Що нового? + Опублікувати + Зберегти + Створити + Скасувати + Не вдалося завантажити фото + Адреса рілея + Дописи + Помилки + Домашня стрічка + Стрічка персональних повідомлень + Стрічка чатів + Глобальна стрічка + Додати рілей + Видиме ім\'я + Моє видиме ім\'я + Нікнейм + Мій нікнейм + Про мене + URL фотографії + URL банеру + URL сайту + LN адреса + LN URL (застарівш.) + Фото збережено до галереї + Не вдалося зберегти фото + Завантажити\nфото + Завантаження… + Користувач не встановив Lightning адресу для отримання чайових + "відповісти.. " + Копіює ID допису для відправки + Скопіювати ID каналу (допису) + Редагує метадані каналу + Увійти + Відомі + Нові запити + Заблоковані користувачі + Нові треди + Обговорення + Дописи + Відповіді + "Підписок" + "Скарг" + Більше опцій + " Рілеїв" + Сайт + Lightning адреса + Копіює Nsec ID (ваш пароль) для резервного копіювання + Скопіювати приватний ключ + Копіює публічний ключ для відправки + Скопіювати публічний ключ (NPub) + Відправити повідомлення + Редагує метадані користувача + Підписатися + Розблокувати + Скопіювати ID користувача + Розблокувати користувача + "npub, hex, нікнейм " + Очистити + Логотип додатка + nsec / npub / приватний ключ в hex + Показати пароль + Сховати пароль + Некоректний ключ + "Я приймаю " + умови користування + Треба прийняти умови користування + Треба ввести ключ + Увійти + Згенерувати ключ + Завантаження стрічки + "Не вдалося завантажити відповіді: " + Повторити + Стрічка порожня. + Оновити + створив(ла) + з описом + та фото + змінив(ла) назву на + опис на + та фото на + Вийти + Відписатися + Канал створено + Інформацію каналу змінено на + Публічний чат + дописів отримано + Видалити + Автоматично + перекладено з + на + Показати спершу на + + Завжди перекладати на + NIP-05 + LNURL... + ніколи + зараз + год + хв + дн + Нагота + Лайка / Образи + Повідомити про образи + Повідомити про наготу / порно + інших + \ No newline at end of file From 88ceb436ac453fd766b63c6bdcacbbb3b7dbb3e6 Mon Sep 17 00:00:00 2001 From: Oleg Koretsky Date: Thu, 2 Mar 2023 23:30:37 +0200 Subject: [PATCH 3/3] Fix typos --- app/src/main/res/values-ru/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index ec443deab..4f6e36f32 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -24,7 +24,7 @@ Скопировать ID записи Разослать Блокировать и скрыть пользователя - Сообщить о спаме / мошеничестве + Сообщить о спаме / мошенничестве Сообщить о выдаче себя за другое лицо Сообщить об откровенном содержании Сообщить о незаконных действиях @@ -93,7 +93,7 @@ Не удалось сохранить фото Загрузить\nфото Загрузка… - Пользователь не усталовил Lightning адрес для получения чаевых + Пользователь не установил Lightning адрес для получения чаевых "ответить.. " Копирует ID записи для отправки Скопировать ID канала (записи)