fix ideas
This commit is contained in:
parent
c2647fa22e
commit
8eb1e17692
@ -395,7 +395,7 @@
|
|||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
CODE_SIGN_ENTITLEMENTS = yobble/yobble.entitlements;
|
CODE_SIGN_ENTITLEMENTS = yobble/yobble.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 2;
|
CURRENT_PROJECT_VERSION = 3;
|
||||||
DEVELOPMENT_TEAM = V22H44W47J;
|
DEVELOPMENT_TEAM = V22H44W47J;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
@ -435,7 +435,7 @@
|
|||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
CODE_SIGN_ENTITLEMENTS = yobble/yobble.entitlements;
|
CODE_SIGN_ENTITLEMENTS = yobble/yobble.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 2;
|
CURRENT_PROJECT_VERSION = 3;
|
||||||
DEVELOPMENT_TEAM = V22H44W47J;
|
DEVELOPMENT_TEAM = V22H44W47J;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
|
|||||||
@ -1,443 +1,631 @@
|
|||||||
{
|
{
|
||||||
"sourceLanguage": "ru",
|
"sourceLanguage" : "ru",
|
||||||
"strings": {
|
"strings" : {
|
||||||
"%lld": {},
|
"(не работает) Отправить предложение" : {
|
||||||
"@%@": {
|
|
||||||
"localizations": {
|
},
|
||||||
"en": {
|
"@%@" : {
|
||||||
"stringUnit": {
|
"localizations" : {
|
||||||
"state": "translated",
|
"en" : {
|
||||||
"value": "@%@"
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "@%@"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Chat ID:": {},
|
"%lld" : {
|
||||||
"Companion ID:": {},
|
|
||||||
"DEBUG UPDATE": {
|
},
|
||||||
"localizations": {
|
"🌍" : {
|
||||||
"en": {
|
"localizations" : {
|
||||||
"stringUnit": {
|
"en" : {
|
||||||
"state": "translated",
|
"stringUnit" : {
|
||||||
"value": "DEBUG UPDATE"
|
"state" : "translated",
|
||||||
|
"value" : "🌍"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Chat ID:" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Companion ID:" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"DEBUG UPDATE" : {
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "DEBUG UPDATE"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ru": {
|
"ru" : {
|
||||||
"stringUnit": {
|
"stringUnit" : {
|
||||||
"state": "translated",
|
"state" : "translated",
|
||||||
"value": "DEBUG UPDATE"
|
"value" : "DEBUG UPDATE"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Fun Fest": {
|
"Fun Fest" : {
|
||||||
"comment": "Fun Fest",
|
"comment" : "Fun Fest",
|
||||||
"localizations": {
|
"localizations" : {
|
||||||
"en": {
|
"en" : {
|
||||||
"stringUnit": {
|
"stringUnit" : {
|
||||||
"state": "translated",
|
"state" : "translated",
|
||||||
"value": "Fun Fest"
|
"value" : "Fun Fest"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Hello, world!": {
|
"Hello, world!" : {
|
||||||
"localizations": {
|
"localizations" : {
|
||||||
"en": {
|
"en" : {
|
||||||
"stringUnit": {
|
"stringUnit" : {
|
||||||
"state": "translated",
|
"state" : "translated",
|
||||||
"value": "Hello, world!"
|
"value" : "Hello, world!"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"OK": {
|
"OK" : {
|
||||||
"localizations": {
|
"localizations" : {
|
||||||
"en": {
|
"en" : {
|
||||||
"stringUnit": {
|
"stringUnit" : {
|
||||||
"state": "translated",
|
"state" : "translated",
|
||||||
"value": "OK"
|
"value" : "OK"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Push-уведомления": {},
|
"profile_down_text_1" : {
|
||||||
"Yobble": {
|
|
||||||
"localizations": {
|
},
|
||||||
"en": {
|
"profile_down_text_2" : {
|
||||||
"stringUnit": {
|
|
||||||
"state": "translated",
|
},
|
||||||
"value": "Yobble"
|
"profile_down_text_3" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Push-уведомления" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Yobble" : {
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Yobble"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"profile_down_text_1": {},
|
"Активные сессии" : {
|
||||||
"profile_down_text_2": {},
|
|
||||||
"profile_down_text_3": {},
|
},
|
||||||
"Активные сессии": {},
|
"Без звука (скоро)" : {
|
||||||
"Без звука (скоро)": {},
|
|
||||||
"Безопасность": {},
|
},
|
||||||
"Ваше предложение": {},
|
"Безопасность" : {
|
||||||
"Вложение": {},
|
|
||||||
"Войти": {
|
},
|
||||||
"localizations": {
|
"Ваше предложение" : {
|
||||||
"en": {
|
|
||||||
"stringUnit": {
|
},
|
||||||
"state": "translated",
|
"Вложение" : {
|
||||||
"value": "Log in"
|
|
||||||
|
},
|
||||||
|
"Войти" : {
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Log in"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Вы": {},
|
"Вы" : {
|
||||||
"Вы предложили: %@": {},
|
|
||||||
"Выйти из аккаунта": {},
|
|
||||||
"Где найти сохранённые черновики?": {
|
|
||||||
"comment": "FAQ question: drafts"
|
|
||||||
},
|
},
|
||||||
"Данные": {},
|
"Вы предложили: %@" : {
|
||||||
"Двухфакторная аутентификация": {},
|
|
||||||
"Добавить друзей": {
|
},
|
||||||
"comment": "Add friends",
|
"Выйти из аккаунта" : {
|
||||||
"localizations": {
|
|
||||||
"en": {
|
},
|
||||||
"stringUnit": {
|
"Где найти сохранённые черновики?" : {
|
||||||
"state": "translated",
|
"comment" : "FAQ question: drafts"
|
||||||
"value": "Add friends"
|
},
|
||||||
|
"Данные" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Двухфакторная аутентификация" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Добавить друзей" : {
|
||||||
|
"comment" : "Add friends",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Add friends"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Другое": {},
|
"Другое" : {
|
||||||
"Заглушка: Push-уведомления": {},
|
|
||||||
"Заглушка: Активные сессии": {},
|
},
|
||||||
"Заглушка: Двухфакторная аутентификация": {},
|
"Заглушка: Push-уведомления" : {
|
||||||
"Заглушка: Другие настройки": {},
|
|
||||||
"Заглушка: Обратная связь": {},
|
},
|
||||||
"Заглушка: Сменить пароль": {},
|
"Заглушка: Активные сессии" : {
|
||||||
"Заглушка: Хранилище данных": {},
|
|
||||||
"Загружаем чаты…": {},
|
},
|
||||||
"Загрузка...": {
|
"Заглушка: Двухфакторная аутентификация" : {
|
||||||
"localizations": {
|
|
||||||
"en": {
|
},
|
||||||
"stringUnit": {
|
"Заглушка: Другие настройки" : {
|
||||||
"state": "translated",
|
|
||||||
"value": "Loading..."
|
},
|
||||||
|
"Заглушка: Обратная связь" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Заглушка: Сменить пароль" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Заглушка: Хранилище данных" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Загружаем чаты…" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Загрузка..." : {
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Loading..."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Заказы": {
|
"Заказы" : {
|
||||||
"comment": "Orders",
|
"comment" : "Orders",
|
||||||
"localizations": {
|
"localizations" : {
|
||||||
"en": {
|
"en" : {
|
||||||
"stringUnit": {
|
"stringUnit" : {
|
||||||
"state": "translated",
|
"state" : "translated",
|
||||||
"value": "Orders"
|
"value" : "Orders"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Закрепить (скоро)": {},
|
"Закрепить (скоро)" : {
|
||||||
"Закрыть": {
|
|
||||||
"comment": "Закрыть",
|
},
|
||||||
"localizations": {
|
"Закрыть" : {
|
||||||
"en": {
|
"comment" : "Закрыть",
|
||||||
"stringUnit": {
|
"localizations" : {
|
||||||
"state": "translated",
|
"en" : {
|
||||||
"value": "Close"
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Close"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Зарегистрироваться": {
|
"Зарегистрироваться" : {
|
||||||
"comment": "Зарегистрироваться",
|
"comment" : "Зарегистрироваться",
|
||||||
"localizations": {
|
"localizations" : {
|
||||||
"en": {
|
"en" : {
|
||||||
"stringUnit": {
|
"stringUnit" : {
|
||||||
"state": "translated",
|
"state" : "translated",
|
||||||
"value": "Register"
|
"value" : "Register"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Здесь не будут чаты": {},
|
"Здесь не будут чаты" : {
|
||||||
"Идеи": {},
|
|
||||||
"Избранные сообщения": {},
|
},
|
||||||
"Инвайт-код (необязательно)": {
|
"Идеи" : {
|
||||||
"comment": "Инвайт-код",
|
|
||||||
"localizations": {
|
},
|
||||||
"en": {
|
"Избранные сообщения" : {
|
||||||
"stringUnit": {
|
|
||||||
"state": "translated",
|
},
|
||||||
"value": "Invite code (optional)"
|
"Инвайт-код (необязательно)" : {
|
||||||
|
"comment" : "Инвайт-код",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Invite code (optional)"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"История": {
|
"История" : {
|
||||||
"comment": "History",
|
"comment" : "History",
|
||||||
"localizations": {
|
"localizations" : {
|
||||||
"en": {
|
"en" : {
|
||||||
"stringUnit": {
|
"stringUnit" : {
|
||||||
"state": "translated",
|
"state" : "translated",
|
||||||
"value": "History"
|
"value" : "History"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Как сбросить пароль?": {
|
"Как сбросить пароль?" : {
|
||||||
"comment": "FAQ question: reset password"
|
"comment" : "FAQ question: reset password"
|
||||||
},
|
},
|
||||||
"Как связаться с поддержкой?": {
|
"Как связаться с поддержкой?" : {
|
||||||
"comment": "FAQ question: support"
|
"comment" : "FAQ question: support"
|
||||||
},
|
},
|
||||||
"Какая вкладка вам нужна?": {},
|
"Какая вкладка вам нужна?" : {
|
||||||
"Корзина": {
|
|
||||||
"comment": "Cart",
|
},
|
||||||
"localizations": {
|
"Корзина" : {
|
||||||
"en": {
|
"comment" : "Cart",
|
||||||
"stringUnit": {
|
"localizations" : {
|
||||||
"state": "translated",
|
"en" : {
|
||||||
"value": "Cart"
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Cart"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Кошелёк": {
|
"Кошелёк" : {
|
||||||
"comment": "Wallet",
|
"comment" : "Wallet",
|
||||||
"localizations": {
|
"localizations" : {
|
||||||
"en": {
|
"en" : {
|
||||||
"stringUnit": {
|
"stringUnit" : {
|
||||||
"state": "translated",
|
"state" : "translated",
|
||||||
"value": "Wallet"
|
"value" : "Wallet"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Лента": {},
|
"Лента" : {
|
||||||
"Лицо": {},
|
|
||||||
"Логин": {
|
},
|
||||||
"comment": "Логин",
|
"Лицо" : {
|
||||||
"localizations": {
|
|
||||||
"en": {
|
},
|
||||||
"stringUnit": {
|
"Логин" : {
|
||||||
"state": "translated",
|
"comment" : "Логин",
|
||||||
"value": "Login"
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Login"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Логин должен быть от 3 до 32 символов (английские буквы, цифры, _)": {
|
"Логин должен быть от 3 до 32 символов (английские буквы, цифры, _)" : {
|
||||||
"comment": "Логин должен быть от 3 до 32 символов (английские буквы, цифры, _)",
|
"comment" : "Логин должен быть от 3 до 32 символов (английские буквы, цифры, _)",
|
||||||
"localizations": {
|
"localizations" : {
|
||||||
"en": {
|
"en" : {
|
||||||
"stringUnit": {
|
"stringUnit" : {
|
||||||
"state": "translated",
|
"state" : "translated",
|
||||||
"value": "Username must be 3 to 32 characters (letters, digits, or _)"
|
"value" : "Username must be 3 to 32 characters (letters, digits, or _)"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Логин уже занят.": {},
|
"Логин уже занят." : {
|
||||||
"Мини-приложения": {
|
|
||||||
"comment": "Applets",
|
},
|
||||||
"localizations": {
|
"Мини-приложения" : {
|
||||||
"en": {
|
"comment" : "Applets",
|
||||||
"stringUnit": {
|
"localizations" : {
|
||||||
"state": "translated",
|
"en" : {
|
||||||
"value": "Applets"
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Applets"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Мои загрузки": {
|
"Мои загрузки" : {
|
||||||
"comment": "My Downloads",
|
"comment" : "My Downloads",
|
||||||
"localizations": {
|
"localizations" : {
|
||||||
"en": {
|
"en" : {
|
||||||
"stringUnit": {
|
"stringUnit" : {
|
||||||
"state": "translated",
|
"state" : "translated",
|
||||||
"value": "My Downloads"
|
"value" : "My Downloads"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Мои комментарии": {
|
"Мои комментарии" : {
|
||||||
"comment": "My Comments",
|
"comment" : "My Comments",
|
||||||
"localizations": {
|
"localizations" : {
|
||||||
"en": {
|
"en" : {
|
||||||
"stringUnit": {
|
"stringUnit" : {
|
||||||
"state": "translated",
|
"state" : "translated",
|
||||||
"value": "My Comments"
|
"value" : "My Comments"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Мой профиль": {},
|
"Мой профиль" : {
|
||||||
"Мы планируем заменить вкладку. Поделитесь, что бы вы хотели видеть здесь чаще всего.": {},
|
|
||||||
"Напишите нам через форму обратной связи в разделе \"Поддержка\".": {
|
|
||||||
"comment": "FAQ answer: support"
|
|
||||||
},
|
},
|
||||||
"Например: закладки, друзья, активность...": {},
|
"Мы планируем заменить вкладку. Поделитесь, что бы вы хотели видеть здесь чаще всего." : {
|
||||||
"Настройки": {
|
|
||||||
"comment": "Settings",
|
},
|
||||||
"localizations": {
|
"Напишите нам через форму обратной связи в разделе \"Поддержка\"." : {
|
||||||
"en": {
|
"comment" : "FAQ answer: support"
|
||||||
"stringUnit": {
|
},
|
||||||
"state": "translated",
|
"Например: закладки, друзья, активность..." : {
|
||||||
"value": "Settings"
|
|
||||||
|
},
|
||||||
|
"Настройки" : {
|
||||||
|
"comment" : "Settings",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Settings"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Не удалось загрузить список чатов.": {},
|
"Не удалось загрузить список чатов." : {
|
||||||
"Не удалось загрузить чаты.": {},
|
|
||||||
"Не удалось обработать данные чатов.": {},
|
|
||||||
"Не удалось обработать ответ сервера.": {},
|
|
||||||
"Не удалось сериализовать данные запроса.": {},
|
|
||||||
"Неверный запрос (400).": {},
|
|
||||||
"Неверный код приглашения.": {},
|
|
||||||
"Неверный логин": {
|
|
||||||
"comment": "Неверный логин"
|
|
||||||
},
|
},
|
||||||
"Неверный логин или пароль.": {},
|
"Не удалось загрузить чаты." : {
|
||||||
"Неверный пароль": {
|
|
||||||
"comment": "Неверный пароль"
|
|
||||||
},
|
},
|
||||||
"Неизвестная ошибка": {},
|
"Не удалось обработать данные чатов." : {
|
||||||
"Неизвестная ошибка.": {},
|
|
||||||
"Неизвестная ошибка. Попробуйте позже.": {},
|
|
||||||
"Неизвестный": {},
|
|
||||||
"Неизвестный пользователь": {},
|
|
||||||
"Некорректный ответ от сервера.": {},
|
|
||||||
"Нет аккаунта? Регистрация": {
|
|
||||||
"comment": "Регистрация"
|
|
||||||
},
|
},
|
||||||
"Нет сообщений": {},
|
"Не удалось обработать ответ сервера." : {
|
||||||
"О приложении": {},
|
|
||||||
"Обновить": {},
|
|
||||||
"Обратная связь": {},
|
|
||||||
"Описание": {},
|
|
||||||
"Отображаемое имя": {},
|
|
||||||
"Отправить предложение": {},
|
|
||||||
"Отправляем...": {},
|
|
||||||
"Ошибка авторизации": {},
|
|
||||||
"Ошибка при деавторизации.": {},
|
|
||||||
"Ошибка регистрация": {
|
|
||||||
"comment": "Ошибка"
|
|
||||||
},
|
},
|
||||||
"Ошибка сервера (%@).": {},
|
"Не удалось сериализовать данные запроса." : {
|
||||||
"Ошибка сервера: %@": {},
|
|
||||||
"Ошибка сети: %@": {},
|
|
||||||
"Ошибка соединения с сервером.": {},
|
|
||||||
"Пароли не совпадают": {
|
|
||||||
"comment": "Пароли не совпадают"
|
|
||||||
},
|
},
|
||||||
"Пароль": {
|
"Неверный запрос (400)." : {
|
||||||
"comment": "Пароль"
|
|
||||||
},
|
},
|
||||||
"Пароль должен быть от 8 до 128 символов": {
|
"Неверный код приглашения." : {
|
||||||
"comment": "Пароль должен быть от 6 до 32 символов"
|
|
||||||
},
|
},
|
||||||
"Перейдите в раздел \"Настройки > Сменить пароль\" и следуйте инструкциям.": {
|
"Неверный логин" : {
|
||||||
"comment": "FAQ answer: reset password"
|
"comment" : "Неверный логин"
|
||||||
},
|
},
|
||||||
"Повторить": {},
|
"Неверный логин или пароль." : {
|
||||||
"Поддержка": {},
|
|
||||||
"Подтверждение пароля": {
|
|
||||||
"comment": "Подтверждение пароля"
|
|
||||||
},
|
},
|
||||||
"Пока что у вас нет чатов": {},
|
"Неверный пароль" : {
|
||||||
"Помощь": {
|
"comment" : "Неверный пароль"
|
||||||
"comment": "Help Center",
|
},
|
||||||
"localizations": {
|
"Неизвестная ошибка" : {
|
||||||
"en": {
|
|
||||||
"stringUnit": {
|
},
|
||||||
"state": "translated",
|
"Неизвестная ошибка." : {
|
||||||
"value": "Help"
|
|
||||||
|
},
|
||||||
|
"Неизвестная ошибка. Попробуйте позже." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Неизвестный" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Неизвестный пользователь" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Некорректный ответ от сервера." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Нет аккаунта? Регистрация" : {
|
||||||
|
"comment" : "Регистрация"
|
||||||
|
},
|
||||||
|
"Нет сообщений" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"О приложении" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Обновить" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Обратная связь" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Описание" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Отображаемое имя" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Отправляем..." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Ошибка авторизации" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Ошибка при деавторизации." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Ошибка регистрация" : {
|
||||||
|
"comment" : "Ошибка"
|
||||||
|
},
|
||||||
|
"Ошибка сервера (%@)." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Ошибка сервера: %@" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Ошибка сети: %@" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Ошибка соединения с сервером." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Пароли не совпадают" : {
|
||||||
|
"comment" : "Пароли не совпадают"
|
||||||
|
},
|
||||||
|
"Пароль" : {
|
||||||
|
"comment" : "Пароль"
|
||||||
|
},
|
||||||
|
"Пароль должен быть от 8 до 128 символов" : {
|
||||||
|
"comment" : "Пароль должен быть от 6 до 32 символов"
|
||||||
|
},
|
||||||
|
"Перейдите в раздел \"Настройки > Сменить пароль\" и следуйте инструкциям." : {
|
||||||
|
"comment" : "FAQ answer: reset password"
|
||||||
|
},
|
||||||
|
"Повторить" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Поддержка" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Подтверждение пароля" : {
|
||||||
|
"comment" : "Подтверждение пароля"
|
||||||
|
},
|
||||||
|
"Пока что у вас нет чатов" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Помощь" : {
|
||||||
|
"comment" : "Help Center",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Help"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Приглашение достигло лимита использования.": {},
|
"Приглашение достигло лимита использования." : {
|
||||||
"Приглашение истекло.": {},
|
|
||||||
"Приглашение не активно.": {},
|
|
||||||
"Приложение": {},
|
|
||||||
"Применить": {},
|
|
||||||
"Произошла ошибка.": {},
|
|
||||||
"Профиль": {},
|
|
||||||
"Публичная информация": {},
|
|
||||||
"Регистрация": {
|
|
||||||
"comment": "Регистрация"
|
|
||||||
},
|
},
|
||||||
"Регистрация временно недоступна.": {},
|
"Приглашение истекло." : {
|
||||||
"Регистрация выполнена, но вход не удался.": {},
|
|
||||||
"Регистрация запрещена.": {},
|
},
|
||||||
"Регистрация и вход выполнены успешно.": {},
|
"Приглашение не активно." : {
|
||||||
"Редактировать профиль": {},
|
|
||||||
"Сервер не отвечает. Попробуйте позже.": {},
|
},
|
||||||
"Сессия истекла. Войдите снова.": {},
|
"Приложение" : {
|
||||||
"Скан": {
|
|
||||||
"comment": "Scan",
|
},
|
||||||
"localizations": {
|
"Применить" : {
|
||||||
"en": {
|
|
||||||
"stringUnit": {
|
},
|
||||||
"state": "translated",
|
"Произошла ошибка." : {
|
||||||
"value": "Scan"
|
|
||||||
|
},
|
||||||
|
"Профиль" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Публичная информация" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Регистрация" : {
|
||||||
|
"comment" : "Регистрация"
|
||||||
|
},
|
||||||
|
"Регистрация временно недоступна." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Регистрация выполнена, но вход не удался." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Регистрация запрещена." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Регистрация и вход выполнены успешно." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Редактировать профиль" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Сервер не отвечает. Попробуйте позже." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Сессия истекла. Войдите снова." : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Скан" : {
|
||||||
|
"comment" : "Scan",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Scan"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Слишком много запросов.": {},
|
"Слишком много запросов." : {
|
||||||
"Сменить пароль": {},
|
|
||||||
"Сообщение": {},
|
},
|
||||||
"Спасибо!": {},
|
"Сменить пароль" : {
|
||||||
"Тёмная тема": {},
|
|
||||||
"Уведомления": {},
|
},
|
||||||
"Удалить чат (скоро)": {},
|
"Сообщение" : {
|
||||||
"Центр авторов": {
|
|
||||||
"comment": "Creator Center",
|
},
|
||||||
"localizations": {
|
"Спасибо!" : {
|
||||||
"en": {
|
|
||||||
"stringUnit": {
|
},
|
||||||
"state": "translated",
|
"Тёмная тема" : {
|
||||||
"value": "Creator Center"
|
|
||||||
|
},
|
||||||
|
"Уведомления" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Удалить чат (скоро)" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"Центр авторов" : {
|
||||||
|
"comment" : "Creator Center",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Creator Center"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Частые вопросы": {
|
"Частые вопросы" : {
|
||||||
"comment": "FAQ navigation title"
|
"comment" : "FAQ navigation title"
|
||||||
},
|
},
|
||||||
"Чат": {},
|
"Чат" : {
|
||||||
"Чаты": {},
|
|
||||||
"Черновики": {
|
},
|
||||||
"comment": "Drafts",
|
"Чаты" : {
|
||||||
"localizations": {
|
|
||||||
"en": {
|
},
|
||||||
"stringUnit": {
|
"Черновики" : {
|
||||||
"state": "translated",
|
"comment" : "Drafts",
|
||||||
"value": "Drafts"
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Drafts"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Черновики доступны в боковом меню в разделе Drafts.": {
|
"Черновики доступны в боковом меню в разделе Drafts." : {
|
||||||
"comment": "FAQ answer: drafts"
|
"comment" : "FAQ answer: drafts"
|
||||||
},
|
},
|
||||||
"Экран чата в разработке": {},
|
"Экран чата в разработке" : {
|
||||||
"Язык": {},
|
|
||||||
"🌍": {
|
},
|
||||||
"localizations": {
|
"Язык" : {
|
||||||
"en": {
|
|
||||||
"stringUnit": {
|
|
||||||
"state": "translated",
|
|
||||||
"value": "🌍"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": "1.0"
|
"version" : "1.0"
|
||||||
}
|
}
|
||||||
@ -1,10 +1,14 @@
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
#if canImport(UIKit)
|
||||||
|
import UIKit
|
||||||
|
#endif
|
||||||
|
|
||||||
struct FeedbackTab: View {
|
struct FeedbackTab: View {
|
||||||
@State private var suggestion: String = ""
|
@State private var suggestion: String = ""
|
||||||
@State private var submittedSuggestion: String? = nil
|
@State private var submittedSuggestion: String? = nil
|
||||||
@State private var isSubmitting: Bool = false
|
@State private var isSubmitting: Bool = false
|
||||||
@State private var showSubmissionMessage: Bool = false
|
@State private var showSubmissionMessage: Bool = false
|
||||||
|
@FocusState private var isSuggestionFocused: Bool
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
ScrollView {
|
ScrollView {
|
||||||
@ -45,6 +49,7 @@ struct FeedbackTab: View {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
.disableAutocorrection(true)
|
.disableAutocorrection(true)
|
||||||
|
.focused($isSuggestionFocused)
|
||||||
}
|
}
|
||||||
|
|
||||||
Button(action: submitSuggestion) {
|
Button(action: submitSuggestion) {
|
||||||
@ -55,7 +60,7 @@ struct FeedbackTab: View {
|
|||||||
}
|
}
|
||||||
Text(isSubmitting
|
Text(isSubmitting
|
||||||
? NSLocalizedString("Отправляем...", comment: "")
|
? NSLocalizedString("Отправляем...", comment: "")
|
||||||
: NSLocalizedString("Отправить предложение", comment: ""))
|
: NSLocalizedString("(не работает) Отправить предложение", comment: ""))
|
||||||
.fontWeight(.semibold)
|
.fontWeight(.semibold)
|
||||||
}
|
}
|
||||||
.frame(maxWidth: .infinity)
|
.frame(maxWidth: .infinity)
|
||||||
@ -88,6 +93,11 @@ struct FeedbackTab: View {
|
|||||||
.padding(.horizontal, 20)
|
.padding(.horizontal, 20)
|
||||||
.padding(.vertical, 32)
|
.padding(.vertical, 32)
|
||||||
}
|
}
|
||||||
|
.simultaneousGesture(
|
||||||
|
TapGesture().onEnded {
|
||||||
|
dismissKeyboardIfNeeded()
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private var suggestionIsValid: Bool {
|
private var suggestionIsValid: Bool {
|
||||||
@ -98,6 +108,8 @@ struct FeedbackTab: View {
|
|||||||
guard suggestionIsValid else { return }
|
guard suggestionIsValid else { return }
|
||||||
let trimmed = suggestion.trimmingCharacters(in: .whitespacesAndNewlines)
|
let trimmed = suggestion.trimmingCharacters(in: .whitespacesAndNewlines)
|
||||||
|
|
||||||
|
dismissKeyboardIfNeeded()
|
||||||
|
|
||||||
isSubmitting = true
|
isSubmitting = true
|
||||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.7) { // имитируем сетевой вызов
|
DispatchQueue.main.asyncAfter(deadline: .now() + 0.7) { // имитируем сетевой вызов
|
||||||
submittedSuggestion = trimmed
|
submittedSuggestion = trimmed
|
||||||
@ -110,6 +122,17 @@ struct FeedbackTab: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private extension FeedbackTab {
|
||||||
|
func dismissKeyboardIfNeeded() {
|
||||||
|
guard isSuggestionFocused else { return }
|
||||||
|
isSuggestionFocused = false
|
||||||
|
|
||||||
|
#if canImport(UIKit)
|
||||||
|
UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct FeedbackTab_Previews: PreviewProvider {
|
struct FeedbackTab_Previews: PreviewProvider {
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
FeedbackTab()
|
FeedbackTab()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user