diff --git a/apps/web/app/locales/en-US.json b/apps/web/app/locales/en-US.json new file mode 100644 index 0000000..0d29fc4 --- /dev/null +++ b/apps/web/app/locales/en-US.json @@ -0,0 +1,239 @@ +{ + "app": { + "i18n": { + "title": "Language", + "select": "Select your language" + }, + "colorMode": { + "title": "Theme", + "select": "Select your theme", + "system": "System", + "light": "Light", + "dark": "Dark", + "switch": { + "system": "Switch to System Theme", + "light": "Switch to Light Mode", + "dark": "Switch to Dark Mode" + } + }, + "footer": { + "copyright": "© {year} Shorter by {author} {version}", + "github": "Github Repository", + "boosty": "Donate with Boosty", + "personal": "Visit Personal Website" + }, + "shortcuts": { + "title": "Shortcuts", + "general": { + "title": "General", + "shortcuts": "Open shortcuts menu", + "createProject": "Create a new project" + }, + "projects": { + "title": "Projects", + "createLink": "Create a new link", + "link": "Open project links", + "analytics": "Open project analytics", + "events": "Open project events", + "settings": "Open project settings" + } + }, + "messages": { + "notImplemented": { + "title": "Oops, nothing here :(", + "message1": "This feature has not yet been implemented. This project is delivered free of charge without subscriptions or payment.", + "message2": "To speed up the development, support the project with donations or by contributing to the code.", + "donate": "Donate with Boosty", + "contribute": "Open GitHub" + } + } + }, + "error": { + "title": "Error", + "message": "An error occurred while processing your request.", + "reload": "Reload Page", + "backHome": "Back to Home", + "codes": { + "400000": "Bad request", + "400001": "Invalid user data", + "400002": "Invalid email or password", + "400003": "Invalid password data for change", + "400004": "Passwords do not match", + "400005": "Invalid account general data", + "400006": "Invalid account delete data", + "401000": "Unauthorized", + "403000": "Forbidden", + "403001": "Access only for unauthorized users", + "403002": "Access only for authorized users", + "403003": "Access only for admin", + "403004": "Registration is disabled", + "403005": "Account deletion is disabled", + "403006": "Email agent credentials error", + "404000": "Not found", + "404001": "User not found", + "409001": "User with this email already exists", + "500000": "Internal server error", + "501000": "Not implemented" + } + }, + "account": { + "title": "Account", + "security": "Security", + "widget": { + "singed": "Signed in as", + "settings": "Settings", + "shortcuts": "Shortcuts", + "signOut": "Sign Out" + }, + "general": { + "title": "General", + "description": "Update your account details.", + "form": { + "name": { + "label": "Name", + "placeholder": "Enter your name" + }, + "email": { + "label": "Email", + "placeholder": "Enter your email" + }, + "action": { + "update": "Update Account", + "updated": "Account updated successfully" + } + } + }, + "delete": { + "title": "Delete Account", + "description": "Permanently delete your account and all associated data.", + "confirm": "Are you sure you want to delete your account? This action is irreversible.", + "form": { + "password": { + "label": "Password", + "placeholder": "Enter your password" + }, + "action": { + "delete": "Delete Account", + "deleted": "Account deleted successfully" + } + } + }, + "appearance": { + "title": "Appearance", + "description": "Customize your experience with these settings.", + "form": { + "theme": { + "label": "Theme" + }, + "i18n": { + "label": "Language" + } + } + }, + "changePassword": { + "title": "Change Password", + "description": "Update your password to keep your account secure.", + "form": { + "currentPassword": { + "label": "Current Password", + "placeholder": "Enter your current password" + }, + "newPassword": { + "label": "New Password", + "placeholder": "Enter your new password" + }, + "confirmPassword": { + "label": "Confirm Password", + "placeholder": "Enter your new password again" + }, + "action": { + "change": "Change Password", + "changed": "Password changed successfully" + } + } + } + }, + "auth": { + "login": { + "title": "Log In", + "description": "Welcome back! 👋 Login to get started!" + }, + "register": { + "title": "Sign Up", + "description": "Join to Our Community with all time access" + }, + "forgot": { + "title": "Forgot Password", + "description": "Enter your email and we’ll send you a code you can use to update your password." + }, + "form": { + "name": { + "label": "Name", + "placeholder": "Enter your name" + }, + "email": { + "label": "Email", + "placeholder": "Enter your email" + }, + "password": { + "label": "Password", + "placeholder": "Enter your password" + }, + "action": { + "login": "Log In", + "register": "Sign Up", + "forgot": "Send Code" + } + }, + "errors": { + "title": "Error", + "credentials": "Invalid email or password", + "unknown": "An error occurred while processing your request" + }, + "links": { + "login": "Already have an account? {link}", + "register": "Don’t have an account? {link}", + "forgot": "Forgot Password?" + } + }, + "projects": { + "title": "Projects", + "selector": { + "viewAll": "View All", + "add": "Add a new project" + }, + "create": { + "title": "Create a new project", + "name": "Project Name", + "action": "Create Project" + }, + "greeting": { + "title": "Create your first project", + "description": "Get started by creating a new project." + }, + "links": { + "title": "Links" + }, + "analytics": { + "title": "Analytics" + }, + "events": { + "title": "Events" + }, + "settings": { + "title": "Settings", + "general": { + "title": "General", + "description": "Update your project details." + }, + "members": { + "title": "Members", + "description": "Manage your project members." + }, + "tags": { + "title": "Tags", + "description": "Manage your project tags." + } + } + } +} diff --git a/apps/web/app/locales/en-US.ts b/apps/web/app/locales/en-US.ts deleted file mode 100644 index 275c9d4..0000000 --- a/apps/web/app/locales/en-US.ts +++ /dev/null @@ -1,239 +0,0 @@ -export default { - app: { - i18n: { - title: 'Language', - select: 'Select your language', - }, - colorMode: { - title: 'Theme', - select: 'Select your theme', - system: 'System', - light: 'Light', - dark: 'Dark', - switch: { - system: 'Switch to System Theme', - light: 'Switch to Light Mode', - dark: 'Switch to Dark Mode', - }, - }, - footer: { - copyright: '© {year} Shorter by {author} {version}', - github: 'Github Repository', - boosty: 'Donate with Boosty', - personal: 'Visit Personal Website', - }, - shortcuts: { - title: 'Shortcuts', - general: { - title: 'General', - shortcuts: 'Open shortcuts menu', - createProject: 'Create a new project', - }, - projects: { - title: 'Projects', - createLink: 'Create a new link', - link: 'Open project links', - analytics: 'Open project analytics', - events: 'Open project events', - settings: 'Open project settings', - }, - }, - messages: { - notImplemented: { - title: 'Oops, nothing here :(', - message1: 'This feature has not yet been implemented. This project is delivered free of charge without subscriptions or payment.', - message2: 'To speed up the development, support the project with donations or by contributing to the code.', - donate: 'Donate with Boosty', - contribute: 'Open GitHub', - }, - }, - }, - error: { - title: 'Error', - message: 'An error occurred while processing your request.', - reload: 'Reload Page', - backHome: 'Back to Home', - codes: { - 400000: 'Bad request', - 400001: 'Invalid user data', - 400002: 'Invalid email or password', - 400003: 'Invalid password data for change', - 400004: 'Passwords do not match', - 400005: 'Invalid account general data', - 400006: 'Invalid account delete data', - 401000: 'Unauthorized', - 403000: 'Forbidden', - 403001: 'Access only for unauthorized users', - 403002: 'Access only for authorized users', - 403003: 'Access only for admin', - 403004: 'Registration is disabled', - 403005: 'Account deletion is disabled', - 403006: 'Email agent credentials error', - 404000: 'Not found', - 404001: 'User not found', - 409001: 'User with this email already exists', - 500000: 'Internal server error', - 501000: 'Not implemented', - }, - }, - account: { - title: 'Account', - security: 'Security', - widget: { - singed: 'Signed in as', - settings: 'Settings', - shortcuts: 'Shortcuts', - signOut: 'Sign Out', - }, - general: { - title: 'General', - description: 'Update your account details.', - form: { - name: { - label: 'Name', - placeholder: 'Enter your name', - }, - email: { - label: 'Email', - placeholder: 'Enter your email', - }, - action: { - update: 'Update Account', - updated: 'Account updated successfully', - }, - }, - }, - delete: { - title: 'Delete Account', - description: 'Permanently delete your account and all associated data.', - confirm: 'Are you sure you want to delete your account? This action is irreversible.', - form: { - password: { - label: 'Password', - placeholder: 'Enter your password', - }, - action: { - delete: 'Delete Account', - deleted: 'Account deleted successfully', - }, - }, - }, - appearance: { - title: 'Appearance', - description: 'Customize your experience with these settings.', - form: { - theme: { - label: 'Theme', - }, - i18n: { - label: 'Language', - }, - }, - }, - changePassword: { - title: 'Change Password', - description: 'Update your password to keep your account secure.', - form: { - currentPassword: { - label: 'Current Password', - placeholder: 'Enter your current password', - }, - newPassword: { - label: 'New Password', - placeholder: 'Enter your new password', - }, - confirmPassword: { - label: 'Confirm Password', - placeholder: 'Enter your new password again', - }, - action: { - change: 'Change Password', - changed: 'Password changed successfully', - }, - }, - }, - }, - auth: { - login: { - title: 'Log In', - description: 'Welcome back! 👋 Login to get started!', - }, - register: { - title: 'Sign Up', - description: 'Join to Our Community with all time access', - }, - forgot: { - title: 'Forgot Password', - description: 'Enter your email and we’ll send you a code you can use to update your password.', - }, - form: { - name: { - label: 'Name', - placeholder: 'Enter your name', - }, - email: { - label: 'Email', - placeholder: 'Enter your email', - }, - password: { - label: 'Password', - placeholder: 'Enter your password', - }, - action: { - login: 'Log In', - register: 'Sign Up', - forgot: 'Send Code', - }, - }, - errors: { - title: 'Error', - credentials: 'Invalid email or password', - unknown: 'An error occurred while processing your request', - }, - links: { - login: 'Already have an account? {link}', - register: 'Don’t have an account? {link}', - forgot: 'Forgot Password?', - }, - }, - projects: { - title: 'Projects', - selector: { - viewAll: 'View All', - add: 'Add a new project', - }, - create: { - title: 'Create a new project', - name: 'Project Name', - action: 'Create Project', - }, - greeting: { - title: 'Create your first project', - description: 'Get started by creating a new project.', - }, - links: { - title: 'Links', - }, - analytics: { - title: 'Analytics', - }, - events: { - title: 'Events', - }, - settings: { - title: 'Settings', - general: { - title: 'General', - description: 'Update your project details.', - }, - members: { - title: 'Members', - description: 'Manage your project members.', - }, - tags: { - title: 'Tags', - description: 'Manage your project tags.', - }, - }, - }, -} diff --git a/apps/web/app/locales/ru-RU.json b/apps/web/app/locales/ru-RU.json new file mode 100644 index 0000000..e96e89a --- /dev/null +++ b/apps/web/app/locales/ru-RU.json @@ -0,0 +1,239 @@ +{ + "app": { + "i18n": { + "title": "Язык", + "select": "Выберите язык интерфейса" + }, + "colorMode": { + "title": "Тема", + "select": "Выберите тему интерфейса", + "system": "Системная", + "light": "Светлая", + "dark": "Темная", + "switch": { + "system": "Переключиться на системную тему", + "light": "Переключиться на светлый режим", + "dark": "Переключиться на темный режим" + } + }, + "footer": { + "copyright": "© {year} Shorter от {author} {version}", + "github": "Github репозиторий", + "boosty": "Донат на Boosty", + "personal": "Перейти на личный сайт" + }, + "shortcuts": { + "title": "Горячие клавиши", + "general": { + "title": "Общее", + "shortcuts": "Открыть меню горячих клавиш", + "createProject": "Создать новый проект" + }, + "projects": { + "title": "Проекты", + "createLink": "Создать новую ссылку", + "link": "Открыть ссылки проекта", + "analytics": "Открыть аналитику проекта", + "events": "Открыть события проекта", + "settings": "Открыть настройки проекта" + } + }, + "messages": { + "notImplemented": { + "title": "Упс, тут ничего нет :(", + "message1": "Эта функция еще не реализована. Этот проект предоставляется бесплатно без подписок или платежей.", + "message2": "Чтобы ускорить разработку, поддержите проект пожертвованиями или внесением вклада в код.", + "donate": "Донат на Boosty", + "contribute": "Открыть GitHub" + } + } + }, + "error": { + "title": "Ошибка", + "message": "Произошла ошибка при обработке вашего запроса.", + "reload": "Перезагрузить", + "backHome": "На главную", + "codes": { + "400000": "Неверный запрос", + "400001": "Неверные данные пользователя", + "400002": "Неверный email или пароль", + "400003": "Неверные данные для смены пароля", + "400004": "Пароли не совпадают", + "400005": "Неверные данные аккаунта", + "400006": "Неверные данные для удаления аккаунта", + "401000": "Не авторизован", + "403000": "Доступ запрещен", + "403001": "Доступ только для неавторизованных пользователей", + "403002": "Доступ только для авторизованных пользователей", + "403003": "Доступ только для администраторов", + "403004": "Регистрация отключена", + "403005": "Удаление аккаунта отключено", + "403006": "Ошибка учетных данных почтового агента", + "404000": "Страница не найдена", + "404001": "Пользователь не найден", + "409001": "Пользователь с таким email уже существует", + "500000": "Внутренняя ошибка сервера", + "501000": "Не реализовано" + } + }, + "account": { + "title": "Аккаунт", + "security": "Безопасность", + "widget": { + "singed": "Вошли как", + "settings": "Настройки", + "shortcuts": "Горячие клавиши", + "signOut": "Выйти" + }, + "general": { + "title": "Общее", + "description": "Обновите данные вашего аккаунта.", + "form": { + "name": { + "label": "Имя", + "placeholder": "Введите ваше имя" + }, + "email": { + "label": "Email", + "placeholder": "Введите ваш email" + }, + "action": { + "update": "Обновить данные", + "updated": "Данные успешно обновлены" + } + } + }, + "delete": { + "title": "Удалить аккаунт", + "description": "Удалите свой аккаунт навсегда. Это действие нельзя отменить.", + "confirm": "Вы уверены, что хотите удалить свой аккаунт? Это действие нельзя отменить.", + "form": { + "password": { + "label": "Пароль", + "placeholder": "Введите ваш пароль" + }, + "action": { + "delete": "Удалить аккаунт", + "deleted": "Ваш аккаунт успешно удален" + } + } + }, + "appearance": { + "title": "Внешний вид", + "description": "Настройте ваш опыт использования с помощью этих настроек.", + "form": { + "theme": { + "label": "Тема" + }, + "i18n": { + "label": "Язык" + } + } + }, + "changePassword": { + "title": "Изменить пароль", + "description": "Обновите свой пароль, чтобы обеспечить безопасность вашего аккаунта.", + "form": { + "currentPassword": { + "label": "Текущий пароль", + "placeholder": "Введите ваш текущий пароль" + }, + "newPassword": { + "label": "Новый пароль", + "placeholder": "Введите ваш новый пароль" + }, + "confirmPassword": { + "label": "Подтвердите пароль", + "placeholder": "Введите ваш новый пароль еще раз" + }, + "action": { + "change": "Изменить пароль", + "changed": "Пароль успешно изменен" + } + } + } + }, + "auth": { + "login": { + "title": "Войти", + "description": "Добро пожаловать обратно 👋 Войдите, чтобы начать!" + }, + "register": { + "title": "Зарегистрироваться", + "description": "Присоединяйтесь к нашей общине с постоянным доступом" + }, + "forgot": { + "title": "Восстановление пароля", + "description": "Введите свой адрес электронной почты, и мы отправим вам код, который вы можете использовать для обновления пароля." + }, + "form": { + "name": { + "label": "Имя", + "placeholder": "Введите ваше имя" + }, + "email": { + "label": "Email", + "placeholder": "Введите ваш email" + }, + "password": { + "label": "Пароль", + "placeholder": "Введите ваш пароль" + }, + "action": { + "login": "Войти", + "register": "Зарегистрироваться", + "forgot": "Отправить код" + } + }, + "errors": { + "title": "Ошибка", + "credentials": "Неверный email или пароль", + "unknown": "Произошла ошибка при обработке вашего запроса" + }, + "links": { + "login": "Уже есть аккаунт? {link}", + "register": "Нет аккаунта? {link}", + "forgot": "Забыли пароль?" + } + }, + "projects": { + "title": "Проекты", + "selector": { + "viewAll": "Просмотреть все", + "add": "Добавить проект" + }, + "create": { + "title": "Создать новый проект", + "name": "Название проекта", + "action": "Создать проект" + }, + "greeting": { + "title": "Создайте свой первый проект", + "description": "Начните с создания нового проекта, чтобы начать использовать Shorter." + }, + "links": { + "title": "Ссылки" + }, + "analytics": { + "title": "Аналитика" + }, + "events": { + "title": "События" + }, + "settings": { + "title": "Настройки", + "general": { + "title": "Общее", + "description": "Обновите данные вашего проекта." + }, + "members": { + "title": "Участники", + "description": "Управляйте участниками вашего проекта." + }, + "tags": { + "title": "Теги", + "description": "Управляйте тегами вашего проекта." + } + } + } +} diff --git a/apps/web/app/locales/ru-RU.ts b/apps/web/app/locales/ru-RU.ts deleted file mode 100644 index e4ae7f7..0000000 --- a/apps/web/app/locales/ru-RU.ts +++ /dev/null @@ -1,239 +0,0 @@ -export default { - app: { - i18n: { - title: 'Язык', - select: 'Выберите язык интерфейса', - }, - colorMode: { - title: 'Тема', - select: 'Выберите тему интерфейса', - system: 'Системная', - light: 'Светлая', - dark: 'Темная', - switch: { - system: 'Переключиться на системную тему', - light: 'Переключиться на светлый режим', - dark: 'Переключиться на темный режим', - }, - }, - footer: { - copyright: '© {year} Shorter от {author} {version}', - github: 'Github репозиторий', - boosty: 'Донат на Boosty', - personal: 'Перейти на личный сайт', - }, - shortcuts: { - title: 'Горячие клавиши', - general: { - title: 'Общее', - shortcuts: 'Открыть меню горячих клавиш', - createProject: 'Создать новый проект', - }, - projects: { - title: 'Проекты', - createLink: 'Создать новую ссылку', - link: 'Открыть ссылки проекта', - analytics: 'Открыть аналитику проекта', - events: 'Открыть события проекта', - settings: 'Открыть настройки проекта', - }, - }, - messages: { - notImplemented: { - title: 'Упс, тут ничего нет :(', - message1: 'Эта функция еще не реализована. Этот проект предоставляется бесплатно без подписок или платежей.', - message2: 'Чтобы ускорить разработку, поддержите проект пожертвованиями или внесением вклада в код.', - donate: 'Донат на Boosty', - contribute: 'Открыть GitHub', - }, - }, - }, - error: { - title: 'Ошибка', - message: 'Произошла ошибка при обработке вашего запроса.', - reload: 'Перезагрузить', - backHome: 'На главную', - codes: { - 400000: 'Неверный запрос', - 400001: 'Неверные данные пользователя', - 400002: 'Неверный email или пароль', - 400003: 'Неверные данные для смены пароля', - 400004: 'Пароли не совпадают', - 400005: 'Неверные данные аккаунта', - 400006: 'Неверные данные для удаления аккаунта', - 401000: 'Не авторизован', - 403000: 'Доступ запрещен', - 403001: 'Доступ только для неавторизованных пользователей', - 403002: 'Доступ только для авторизованных пользователей', - 403003: 'Доступ только для администраторов', - 403004: 'Регистрация отключена', - 403005: 'Удаление аккаунта отключено', - 403006: 'Ошибка учетных данных почтового агента', - 404000: 'Страница не найдена', - 404001: 'Пользователь не найден', - 409001: 'Пользователь с таким email уже существует', - 500000: 'Внутренняя ошибка сервера', - 501000: 'Не реализовано', - }, - }, - account: { - title: 'Аккаунт', - security: 'Безопасность', - widget: { - singed: 'Вошли как', - settings: 'Настройки', - shortcuts: 'Горячие клавиши', - signOut: 'Выйти', - }, - general: { - title: 'Общее', - description: 'Обновите данные вашего аккаунта.', - form: { - name: { - label: 'Имя', - placeholder: 'Введите ваше имя', - }, - email: { - label: 'Email', - placeholder: 'Введите ваш email', - }, - action: { - update: 'Обновить данные', - updated: 'Данные успешно обновлены', - }, - }, - }, - delete: { - title: 'Удалить аккаунт', - description: 'Удалите свой аккаунт навсегда. Это действие нельзя отменить.', - confirm: 'Вы уверены, что хотите удалить свой аккаунт? Это действие нельзя отменить.', - form: { - password: { - label: 'Пароль', - placeholder: 'Введите ваш пароль', - }, - action: { - delete: 'Удалить аккаунт', - deleted: 'Ваш аккаунт успешно удален', - }, - }, - }, - appearance: { - title: 'Внешний вид', - description: 'Настройте ваш опыт использования с помощью этих настроек.', - form: { - theme: { - label: 'Тема', - }, - i18n: { - label: 'Язык', - }, - }, - }, - changePassword: { - title: 'Изменить пароль', - description: 'Обновите свой пароль, чтобы обеспечить безопасность вашего аккаунта.', - form: { - currentPassword: { - label: 'Текущий пароль', - placeholder: 'Введите ваш текущий пароль', - }, - newPassword: { - label: 'Новый пароль', - placeholder: 'Введите ваш новый пароль', - }, - confirmPassword: { - label: 'Подтвердите пароль', - placeholder: 'Введите ваш новый пароль еще раз', - }, - action: { - change: 'Изменить пароль', - changed: 'Пароль успешно изменен', - }, - }, - }, - }, - auth: { - login: { - title: 'Войти', - description: 'Добро пожаловать обратно 👋 Войдите, чтобы начать!', - }, - register: { - title: 'Зарегистрироваться', - description: 'Присоединяйтесь к нашей общине с постоянным доступом', - }, - forgot: { - title: 'Восстановление пароля', - description: 'Введите свой адрес электронной почты, и мы отправим вам код, который вы можете использовать для обновления пароля.', - }, - form: { - name: { - label: 'Имя', - placeholder: 'Введите ваше имя', - }, - email: { - label: 'Email', - placeholder: 'Введите ваш email', - }, - password: { - label: 'Пароль', - placeholder: 'Введите ваш пароль', - }, - action: { - login: 'Войти', - register: 'Зарегистрироваться', - forgot: 'Отправить код', - }, - }, - errors: { - title: 'Ошибка', - credentials: 'Неверный email или пароль', - unknown: 'Произошла ошибка при обработке вашего запроса', - }, - links: { - login: 'Уже есть аккаунт? {link}', - register: 'Нет аккаунта? {link}', - forgot: 'Забыли пароль?', - }, - }, - projects: { - title: 'Проекты', - selector: { - viewAll: 'Просмотреть все', - add: 'Добавить проект', - }, - create: { - title: 'Создать новый проект', - name: 'Название проекта', - action: 'Создать проект', - }, - greeting: { - title: 'Создайте свой первый проект', - description: 'Начните с создания нового проекта, чтобы начать использовать Shorter.', - }, - links: { - title: 'Ссылки', - }, - analytics: { - title: 'Аналитика', - }, - events: { - title: 'События', - }, - settings: { - title: 'Настройки', - general: { - title: 'Общее', - description: 'Обновите данные вашего проекта.', - }, - members: { - title: 'Участники', - description: 'Управляйте участниками вашего проекта.', - }, - tags: { - title: 'Теги', - description: 'Управляйте тегами вашего проекта.', - }, - }, - }, -} diff --git a/apps/web/nuxt.config.ts b/apps/web/nuxt.config.ts index d23226f..cfc0096 100644 --- a/apps/web/nuxt.config.ts +++ b/apps/web/nuxt.config.ts @@ -70,8 +70,8 @@ export default defineNuxtConfig({ alwaysRedirect: true, }, locales: [ - { code: 'en', iso: 'en-US', name: 'English', file: 'en-US.ts' }, - { code: 'ru', iso: 'ru-RU', name: 'Русский', file: 'ru-RU.ts' }, + { code: 'en', iso: 'en-US', name: 'English', file: 'en-US.json' }, + { code: 'ru', iso: 'ru-RU', name: 'Русский', file: 'ru-RU.json' }, ], }, zodI18n: {