From 0359616c8f9fb1437590a8c224f5e8459738c331 Mon Sep 17 00:00:00 2001 From: cheykrym Date: Wed, 8 Oct 2025 04:42:01 +0300 Subject: [PATCH] add to feedback localization --- yobble.xcodeproj/project.pbxproj | 4 +- yobble/Resources/Localizable.xcstrings | 403 +++++++++++++++++-- yobble/Views/Tab/Settings/FeedbackView.swift | 2 +- 3 files changed, 366 insertions(+), 43 deletions(-) diff --git a/yobble.xcodeproj/project.pbxproj b/yobble.xcodeproj/project.pbxproj index c6e365e..b24a89f 100644 --- a/yobble.xcodeproj/project.pbxproj +++ b/yobble.xcodeproj/project.pbxproj @@ -395,7 +395,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = yobble/yobble.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 5; + CURRENT_PROJECT_VERSION = 6; DEVELOPMENT_TEAM = V22H44W47J; ENABLE_HARDENED_RUNTIME = YES; ENABLE_PREVIEWS = YES; @@ -435,7 +435,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = yobble/yobble.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 5; + CURRENT_PROJECT_VERSION = 6; DEVELOPMENT_TEAM = V22H44W47J; ENABLE_HARDENED_RUNTIME = YES; ENABLE_PREVIEWS = YES; diff --git a/yobble/Resources/Localizable.xcstrings b/yobble/Resources/Localizable.xcstrings index 877c556..3b626e3 100644 --- a/yobble/Resources/Localizable.xcstrings +++ b/yobble/Resources/Localizable.xcstrings @@ -32,7 +32,15 @@ } }, "%d символов" : { - "comment" : "feedback: character count" + "comment" : "feedback: character count", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "%d characters" + } + } + } }, "%lld" : { @@ -204,7 +212,15 @@ } }, "Ваш e-mail" : { - "comment" : "feedback: email placeholder" + "comment" : "feedback: email placeholder", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Your email" + } + } + } }, "Версия:" : { "localizations" : { @@ -290,7 +306,15 @@ } }, "Выберите оценку — это поможет нам понять настроение." : { - "comment" : "feedback: rating hint" + "comment" : "feedback: rating hint", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Select a rating — this helps us understand the vibe." + } + } + } }, "Выйти из аккаунта" : { "localizations" : { @@ -461,7 +485,15 @@ "comment" : "Search placeholder description" }, "Идея" : { - "comment" : "feedback category: idea" + "comment" : "feedback category: idea", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Idea" + } + } + } }, "Избранные сообщения" : { @@ -531,7 +563,15 @@ } }, "Контент" : { - "comment" : "feedback category: content" + "comment" : "feedback category: content", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Content" + } + } + } }, "Конфиденциальность" : { "localizations" : { @@ -697,34 +737,106 @@ } }, "Мы используем адрес только для ответа на ваш запрос." : { - "comment" : "feedback: email hint" + "comment" : "feedback: email hint", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "We’ll only use your email to respond to your request." + } + } + } }, "Мы постараемся всё исправить. Напишите, что смутило." : { - "comment" : "feedback: rating description 2" + "comment" : "feedback: rating description 2", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "We’ll do our best to fix it. Tell us what felt off." + } + } + } }, "Мы свяжемся с вами по адресу %@, как только ответим." : { - "comment" : "feedback: success email" + "comment" : "feedback: success email", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "We’ll contact you at %@ once we reply." + } + } + } }, "Мы читаем каждый отзыв и используем его, чтобы сделать Yobble полезнее для вас." : { - "comment" : "feedback: header subtitle" + "comment" : "feedback: header subtitle", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "We read every piece of feedback and use it to make Yobble better for you." + } + } + } }, "Напишите нам через форму обратной связи в разделе \"Поддержка\"." : { "comment" : "FAQ answer: support" }, "Например: заметил неточную информацию в статье..." : { - "comment" : "feedback placeholder: content" + "comment" : "feedback placeholder: content", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "For example: I noticed inaccurate information in an article…" + } + } + } }, "Например: понравилась новая лента, потому что..." : { - "comment" : "feedback placeholder: praise" + "comment" : "feedback placeholder: praise", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "For example: I liked the new feed because…" + } + } + } }, "Например: приложение вылетает, когда я открываю профиль..." : { - "comment" : "feedback placeholder: bug" + "comment" : "feedback placeholder: bug", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "For example: the app crashes when I open a profile…" + } + } + } }, "Например: хотелось бы видеть подборку по интересам..." : { - "comment" : "feedback placeholder: idea" + "comment" : "feedback placeholder: idea", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "For example: I’d love to see personalized recommendations…" + } + } + } }, "Насколько вам нравится Yobble?" : { - "comment" : "feedback: rating title" + "comment" : "feedback: rating title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "How much do you like Yobble?" + } + } + } }, "Настройки" : { "comment" : "Settings", @@ -950,7 +1062,15 @@ }, "Неплохо, но можно лучше — что добавить?" : { - "comment" : "feedback: rating description 3" + "comment" : "feedback: rating description 3", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Not bad, but it could be better — what would you add?" + } + } + } }, "Нет аккаунта? Регистрация" : { "comment" : "Регистрация", @@ -998,10 +1118,26 @@ } }, "Нужно ли вам ответить?" : { - "comment" : "feedback: contact title" + "comment" : "feedback: contact title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Do you need a response?" + } + } + } }, "О каком контенте идёт речь?" : { - "comment" : "feedback prompt: content" + "comment" : "feedback prompt: content", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "What content are you referring to?" + } + } + } }, "О приложении" : { "localizations" : { @@ -1034,6 +1170,9 @@ } } }, + "Обратная связь (не работает)" : { + "comment" : "feedback: navigation title" + }, "Ограничить таймер автоудаления (максимум)" : { "localizations" : { "en" : { @@ -1048,22 +1187,62 @@ }, "Опишите идею" : { - "comment" : "feedback prompt: idea" + "comment" : "feedback prompt: idea", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Describe your idea" + } + } + } }, "Отображаемое имя" : { }, "Отправить отзыв" : { - "comment" : "feedback: submit button" + "comment" : "feedback: submit button", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Submit Feedback" + } + } + } }, "Отправляем..." : { - "comment" : "feedback: sending state" + "comment" : "feedback: sending state", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Sending..." + } + } + } }, "Оценка %d" : { - "comment" : "feedback: rating accessibility" + "comment" : "feedback: rating accessibility", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rating %d" + } + } + } }, "Оценка: %d из 5" : { - "comment" : "feedback: success rating" + "comment" : "feedback: success rating", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rating: %d out of 5" + } + } + } }, "Ошибка" : { "comment" : "Profile update error title", @@ -1247,10 +1426,26 @@ } }, "Поделитесь идеями, сообщите об ошибке или расскажите, что работает отлично." : { - "comment" : "feedback: info detail" + "comment" : "feedback: info detail", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Share ideas, report a bug, or tell us what works well." + } + } + } }, "Поделитесь, что понравилось" : { - "comment" : "feedback category subtitle: praise" + "comment" : "feedback category subtitle: praise", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Share what you liked" + } + } + } }, "Подтверждение пароля" : { "comment" : "Подтверждение пароля", @@ -1264,7 +1459,15 @@ } }, "Пожалуйста, введите корректный e-mail." : { - "comment" : "feedback: email error" + "comment" : "feedback: email error", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Please enter a valid email." + } + } + } }, "Поиск" : { @@ -1313,7 +1516,15 @@ } }, "Получить ответ от команды" : { - "comment" : "feedback: contact toggle" + "comment" : "feedback: contact toggle", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Get a reply from the team" + } + } + } }, "Пользователь Системы 1" : { "comment" : "Тестовая подмена офф аккаунта", @@ -1342,13 +1553,37 @@ }, "Похвала" : { - "comment" : "feedback category: praise" + "comment" : "feedback category: praise", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Praise" + } + } + } }, "Предложите, что добавить" : { - "comment" : "feedback category subtitle: idea" + "comment" : "feedback category subtitle: idea", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Suggest what to add" + } + } + } }, "Прекрасно! Расскажите, что понравилось больше всего." : { - "comment" : "feedback: rating description 5" + "comment" : "feedback: rating description 5", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Amazing! Tell us what you liked the most." + } + } + } }, "Приватные чаты" : { "localizations" : { @@ -1441,7 +1676,15 @@ } }, "Проблема" : { - "comment" : "feedback category: bug" + "comment" : "feedback category: bug", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bug" + } + } + } }, "Проверьте данные и повторите попытку." : { "localizations" : { @@ -1523,10 +1766,26 @@ } }, "Расскажите о своём опыте" : { - "comment" : "feedback: header title" + "comment" : "feedback: header title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tell us about your experience" + } + } + } }, "Расскажите, что не работает" : { - "comment" : "feedback category subtitle: bug" + "comment" : "feedback category subtitle: bug", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tell us what isn’t working" + } + } + } }, "Регистрация" : { "comment" : "Регистрация", @@ -1713,7 +1972,15 @@ }, "Сообщите о материалах" : { - "comment" : "feedback category subtitle: content" + "comment" : "feedback category subtitle: content", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Report content issues" + } + } + } }, "Сохранить изменения" : { "localizations" : { @@ -1726,10 +1993,26 @@ } }, "Спасибо! Мы получили ваш отзыв" : { - "comment" : "feedback: success title" + "comment" : "feedback: success title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Thank you! We’ve received your feedback" + } + } + } }, "Спасибо! Что поможет нам добраться до пятёрки?" : { - "comment" : "feedback: rating description 4" + "comment" : "feedback: rating description 4", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Thanks! What would get us to a five?" + } + } + } }, "Старый пароль" : { "comment" : "Старый пароль", @@ -1753,7 +2036,15 @@ } }, "Тема: %@" : { - "comment" : "feedback: success category" + "comment" : "feedback: success category", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Category: %@" + } + } + } }, "Тёмная" : { "localizations" : { @@ -1892,16 +2183,48 @@ "comment" : "FAQ answer: drafts" }, "Что вам понравилось?" : { - "comment" : "feedback prompt: praise" + "comment" : "feedback prompt: praise", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "What did you like?" + } + } + } }, "Что вы хотите обсудить?" : { - "comment" : "feedback: category title" + "comment" : "feedback: category title", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "What would you like to talk about?" + } + } + } }, "Что случилось?" : { - "comment" : "feedback prompt: bug" + "comment" : "feedback prompt: bug", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "What happened?" + } + } + } }, "Что-то пошло не так. Расскажите подробности ниже." : { - "comment" : "feedback: rating description 1" + "comment" : "feedback: rating description 1", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Something went wrong. Tell us more below." + } + } + } }, "Экран чата в разработке" : { diff --git a/yobble/Views/Tab/Settings/FeedbackView.swift b/yobble/Views/Tab/Settings/FeedbackView.swift index 540a26a..e2abc1e 100644 --- a/yobble/Views/Tab/Settings/FeedbackView.swift +++ b/yobble/Views/Tab/Settings/FeedbackView.swift @@ -56,7 +56,7 @@ struct FeedbackView: View { .padding(.horizontal, 20) } .background(Color(.systemGroupedBackground).ignoresSafeArea()) - .navigationTitle(NSLocalizedString("Обратная связь", comment: "feedback: navigation title")) + .navigationTitle(NSLocalizedString("Обратная связь (не работает)", comment: "feedback: navigation title")) .navigationBarTitleDisplayMode(.inline) .simultaneousGesture( TapGesture().onEnded {