diff --git a/src/components/FullscreenImagePreview.vue b/src/components/FullscreenImagePreview.vue index b147a639..6b3366ed 100644 --- a/src/components/FullscreenImagePreview.vue +++ b/src/components/FullscreenImagePreview.vue @@ -103,6 +103,7 @@ import { acquireModalPortalLayer } from '@/lib/modalPortalLayers'; import { storeToRefs } from 'pinia'; import { toast } from 'vue-sonner'; + import { useI18n } from 'vue-i18n'; import Noty from 'noty'; @@ -111,6 +112,7 @@ const galleryStore = useGalleryStore(); const { fullscreenImageDialog } = storeToRefs(galleryStore); + const { t } = useI18n(); const viewerEl = ref(null); const portalLayer = acquireModalPortalLayer(); @@ -286,7 +288,7 @@ async function copyImageToClipboard(url) { if (!url) return; - const msg = toast.info('Downloading image...'); + const msg = toast.info(t('message.image.downloading')); try { const response = await webApiService.execute({ url, method: 'GET' }); if (response.status !== 200 || !String(response.data).startsWith('data:image/png')) { @@ -294,7 +296,7 @@ } const blob = await (await fetch(response.data)).blob(); await navigator.clipboard.write([new ClipboardItem({ 'image/png': blob })]); - toast.success('Image copied to clipboard'); + toast.success(t('message.image.copied_to_clipboard')); } catch (error) { console.error('Error downloading image:', error); new Noty({ type: 'error', text: escapeTag(`Failed to download image. ${url}`) }).show(); @@ -305,7 +307,7 @@ async function downloadAndSaveImage(url, fileName) { if (!url) return; - const msg = toast.info('Downloading image...'); + const msg = toast.info(t('message.image.downloading')); try { const response = await webApiService.execute({ url, method: 'GET' }); if (response.status !== 200 || !String(response.data).startsWith('data:image/png')) { diff --git a/src/components/InstanceActionBar.vue b/src/components/InstanceActionBar.vue index 93872a62..4b8ef0b2 100644 --- a/src/components/InstanceActionBar.vue +++ b/src/components/InstanceActionBar.vue @@ -359,8 +359,8 @@ const closeInstance = (location) => { modalStore .confirm({ - description: 'Continue? X Instance, nobody will be able to join', - title: 'Confirm' + description: t('confirm.close_instance'), + title: t('confirm.title') }) .then(async ({ ok }) => { if (!ok) return; diff --git a/src/components/PresetColorPicker.vue b/src/components/PresetColorPicker.vue index de30a8eb..2a4f0486 100644 --- a/src/components/PresetColorPicker.vue +++ b/src/components/PresetColorPicker.vue @@ -2,6 +2,9 @@ import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'; import { Button } from '@/components/ui/button'; import { computed } from 'vue'; + import { useI18n } from 'vue-i18n'; + + const { t } = useI18n(); const props = defineProps({ modelValue: { type: String, default: '' }, @@ -93,7 +96,9 @@ @input="onInput" />
- +
diff --git a/src/components/dialogs/AvatarDialog/AvatarDialog.vue b/src/components/dialogs/AvatarDialog/AvatarDialog.vue index c636e420..d3641c99 100644 --- a/src/components/dialogs/AvatarDialog/AvatarDialog.vue +++ b/src/components/dialogs/AvatarDialog/AvatarDialog.vue @@ -109,7 +109,7 @@ v-if="avatarDialog.ref.styles?.primary || avatarDialog.ref.styles?.secondary" variant="outline" style="margin-right: 5px; margin-top: 5px" - >Styles + >{{ t('view.favorite.avatars.styles') }} {{ avatarDialog.ref.styles.primary }} @@ -841,7 +841,7 @@ avatarId: D.id }) .then((args) => { - toast.success('Fallback avatar changed'); + toast.success(t('message.avatar.fallback_changed')); return args; }); break; @@ -854,7 +854,7 @@ .then((args) => { // 'AVATAR-MODERATION'; applyAvatarModeration(args.json); - toast.success('Avatar blocked'); + toast.success(t('message.avatar.blocked')); return args; }); break; @@ -883,7 +883,7 @@ }) .then((args) => { applyAvatar(args.json); - toast.success('Avatar updated to public'); + toast.success(t('message.avatar.updated_public')); return args; }); break; @@ -895,7 +895,7 @@ }) .then((args) => { applyAvatar(args.json); - toast.success('Avatar updated to private'); + toast.success(t('message.avatar.updated_private')); return args; }); break; @@ -918,7 +918,7 @@ sortUserDialogAvatars(array); } - toast.success('Avatar deleted'); + toast.success(t('message.avatar.deleted')); D.visible = false; return args; }); @@ -929,7 +929,7 @@ avatarId: D.id }) .then((args) => { - toast.success('Imposter deleted'); + toast.success(t('message.avatar.impostor_deleted')); showAvatarDialog(D.id); return args; }); @@ -940,7 +940,7 @@ avatarId: D.id }) .then((args) => { - toast.success('Imposter queued for creation'); + toast.success(t('message.avatar.impostor_queued')); return args; }); break; @@ -959,7 +959,7 @@ avatarId: D.id }) .then((args) => { - toast.success('Imposter deleted and queued for creation'); + toast.success(t('message.avatar.impostor_regenerated')); return args; }); }); diff --git a/src/components/dialogs/GroupDialog/GroupDialog.vue b/src/components/dialogs/GroupDialog/GroupDialog.vue index eb8f10fb..c0e6401d 100644 --- a/src/components/dialogs/GroupDialog/GroupDialog.vue +++ b/src/components/dialogs/GroupDialog/GroupDialog.vue @@ -1467,8 +1467,8 @@ function confirmDeleteGroupPost(post) { modalStore .confirm({ - description: 'Are you sure you want to delete this post?', - title: 'Confirm' + description: t('confirm.delete_post'), + title: t('confirm.title') }) .then(({ ok }) => { if (!ok) return; @@ -1570,8 +1570,8 @@ function blockGroup(groupId) { modalStore .confirm({ - description: 'Are you sure you want to block this group?', - title: 'Confirm' + description: t('confirm.block_group'), + title: t('confirm.title') }) .then(({ ok }) => { if (!ok) return; @@ -1591,8 +1591,8 @@ function unblockGroup(groupId) { modalStore .confirm({ - description: 'Are you sure you want to unblock this group?', - title: 'Confirm' + description: t('confirm.unblock_group'), + title: t('confirm.title') }) .then(({ ok }) => { if (!ok) return; @@ -1628,9 +1628,9 @@ getGroupDialogGroup(id); } if (args.json.membershipStatus === 'member') { - toast.success('Group joined'); + toast.success(t('message.group.joined')); } else if (args.json.membershipStatus === 'requested') { - toast.success('Group join request sent'); + toast.success(t('message.group.join_request_sent')); } return args; }); diff --git a/src/components/dialogs/UserDialog/UserSummaryHeader.vue b/src/components/dialogs/UserDialog/UserSummaryHeader.vue index 1c0a29a8..ab0e2327 100644 --- a/src/components/dialogs/UserDialog/UserSummaryHeader.vue +++ b/src/components/dialogs/UserDialog/UserSummaryHeader.vue @@ -123,9 +123,11 @@ {{ t('dialog.user.tags.discord') }} - Nuisance + + {{ t('view.settings.appearance.user_colors.trust_levels.nuisance') }} + - Almost Nuisance + {{ t('view.favorite.avatars.almost_nuisance') }} {{ t('dialog.user.tags.vrchat_team') }} diff --git a/src/components/dialogs/WorldDialog/WorldDialog.vue b/src/components/dialogs/WorldDialog/WorldDialog.vue index ec320176..29d1a87e 100644 --- a/src/components/dialogs/WorldDialog/WorldDialog.vue +++ b/src/components/dialogs/WorldDialog/WorldDialog.vue @@ -1062,7 +1062,7 @@ homeLocation: D.id }) .then((args) => { - toast.success('Home world updated'); + toast.success(t('message.world.home_updated')); return args; }); break; @@ -1072,7 +1072,7 @@ homeLocation: '' }) .then((args) => { - toast.success('Home world has been reset'); + toast.success(t('message.world.home_reset')); return args; }); break; @@ -1082,7 +1082,7 @@ worldId: D.id }) .then((args) => { - toast.success('World has been published'); + toast.success(t('message.world.published')); return args; }); break; @@ -1092,7 +1092,7 @@ worldId: D.id }) .then((args) => { - toast.success('World has been unpublished'); + toast.success(t('message.world.unpublished')); return args; }); break; @@ -1105,7 +1105,7 @@ if (args.params.worldId === worldDialog.value.id && worldDialog.value.visible) { worldDialog.value.hasPersistData = false; } - toast.success('Persistent data has been deleted'); + toast.success(t('message.world.persistent_data_deleted')); return args; }); break; @@ -1127,7 +1127,7 @@ const array = Array.from(map.values()); userDialog.value.worlds = array; } - toast.success('World has been deleted'); + toast.success(t('message.world.deleted')); D.visible = false; return args; }); @@ -1365,33 +1365,33 @@ navigator.clipboard .writeText(worldDialog.value.id) .then(() => { - toast.success('World ID copied to clipboard'); + toast.success(t('message.world.id_copied')); }) .catch((err) => { console.error('copy failed:', err); - toast.error('Copy failed'); + toast.error(t('message.copy_failed')); }); } function copyWorldUrl() { navigator.clipboard .writeText(`https://vrchat.com/home/world/${worldDialog.value.id}`) .then(() => { - toast.success('World URL copied to clipboard'); + toast.success(t('message.world.url_copied')); }) .catch((err) => { console.error('copy failed:', err); - toast.error('Copy failed'); + toast.error(t('message.copy_failed')); }); } function copyWorldName() { navigator.clipboard .writeText(worldDialog.value.ref.name) .then(() => { - toast.success('World name copied to clipboard'); + toast.success(t('message.world.name_copied')); }) .catch((err) => { console.error('copy failed:', err); - toast.error('Copy failed'); + toast.error(t('message.copy_failed')); }); } function showWorldAllowedDomainsDialog() { diff --git a/src/localization/en.json b/src/localization/en.json index 0f1ba219..f5c096de 100644 --- a/src/localization/en.json +++ b/src/localization/en.json @@ -134,7 +134,8 @@ "Status": "Status", "Avatar": "Avatar", "Bio": "Bio" - } + }, + "photon_event_logging": "Photon Event Logging" }, "friends_locations": { "online": "Online", @@ -232,7 +233,11 @@ "confirm_delete_description": "Found {count} invalid avatars, delete them?", "delete_summary": "Successfully deleted {removed} invalid avatars", "no_invalid_found": "No invalid avatars found", - "delete_cancelled": "Delete operation cancelled" + "delete_cancelled": "Delete operation cancelled", + "local_history": "Local History", + "no_group_selected": "No Group Selected", + "styles": "Styles", + "almost_nuisance": "Almost Nuisance" }, "edit_mode": "Edit Mode", "copy": "Copy", @@ -2002,6 +2007,19 @@ "decline_type": "Continue? Decline {type}", "delete_type": "Continue? {type}", "command_question": "Continue? {command}", + "clear_group": "Continue? Clear Group", + "delete_group": "Continue? Delete Group {name}", + "delete_post": "Are you sure you want to delete this post?", + "block_group": "Are you sure you want to block this group?", + "unblock_group": "Are you sure you want to unblock this group?", + "leave_group": "Are you sure you want to leave this group?", + "disable_gamelog": "Continue? Disable GameLog", + "restore_backup": "Continue? Restore Backup", + "delete_vrc_registry": "Continue? Delete VRC Registry Settings", + "clear_cache": "Continue? Clear all VRChat cache", + "close_instance": "Continue? Close Instance, nobody will be able to join", + "bulk_unfavorite": "Are you sure you want to unfavorite {count} favorites?\nThis action cannot be undone.", + "bulk_unfavorite_title": "Delete {count} favorites?", "restart_required_title": "Restart Required", "restart_now": "Restart Now", "restart_later": "Later" @@ -2176,6 +2194,11 @@ "error": "Group already exists with the name {name}" } }, + "backup_name": { + "header": "Backup Name", + "description": "Enter a name for the backup", + "input_error": "Name is required" + }, "auto_login_delay": { "header": "Auto-login delay", "description": "Enter delay in seconds (0 to disable, max 10).", @@ -2215,7 +2238,15 @@ "create_failed": "Failed to create instance" }, "avatar": { - "change_moderation_failed": "Failed to change avatar moderation" + "change_moderation_failed": "Failed to change avatar moderation", + "fallback_changed": "Fallback avatar changed", + "blocked": "Avatar blocked", + "updated_public": "Avatar updated to public", + "updated_private": "Avatar updated to private", + "deleted": "Avatar deleted", + "impostor_deleted": "Imposter deleted", + "impostor_queued": "Imposter queued for creation", + "impostor_regenerated": "Imposter deleted and queued for creation" }, "avatar_lookup": { "not_found": "Avatar not found in search providers", @@ -2224,7 +2255,9 @@ "loading": "Searching for avatar using search providers" }, "database": { - "upgrade_complete": "Database upgrade complete" + "upgrade_complete": "Database upgrade complete", + "disk_space": "Please free up some disk space.", + "disk_error": "Please check your disk for errors." }, "file": { "not_image": "File isn't an image", @@ -2232,12 +2265,19 @@ "folder_missing": "Folder doesn't exist" }, "group": { - "load_failed": "Failed to load group" + "load_failed": "Failed to load group", + "joined": "Group joined", + "join_request_sent": "Group join request sent", + "visibility_updated": "Group visibility updated", + "subscription_updated": "Group subscription updated" }, "invite": { "self_sent": "Self invite sent", "sent": "Invite sent", - "message_update_failed": "VRChat API didn't update message, try again" + "message_update_failed": "VRChat API didn't update message, try again", + "message_updated": "Invite message updated", + "response_sent": "Invite response message sent", + "response_photo_sent": "Invite response photo message sent" }, "launch": { "invalid_path": "Invalid path, you must enter VRChat folder or launch.exe" @@ -2252,7 +2292,16 @@ "error": "Upload failed" }, "world": { - "load_failed": "Failed to load world" + "load_failed": "Failed to load world", + "home_updated": "Home world updated", + "home_reset": "Home world has been reset", + "published": "World has been published", + "unpublished": "World has been unpublished", + "persistent_data_deleted": "Persistent data has been deleted", + "deleted": "World has been deleted", + "id_copied": "World ID copied to clipboard", + "url_copied": "World URL copied to clipboard", + "name_copied": "World name copied to clipboard" }, "user": { "moderated": "User moderated", @@ -2270,7 +2319,27 @@ }, "crash": { "vrcx_reload": "VRCX was reloaded for stability" - } + }, + "image": { + "downloading": "Downloading image...", + "copied_to_clipboard": "Image copied to clipboard" + }, + "registry": { + "restored": "VRC registry settings restored", + "deleted": "VRC registry settings deleted", + "restore_failed": "Failed to restore VRC registry settings, check console for full error: {error}", + "invalid_json": "Invalid JSON" + }, + "cache": { + "deleted": "All VRChat cache deleted", + "delete_error": "Error deleting VRChat cache: {error}", + "invalid_config": "Invalid JSON in config.json" + }, + "gamelog": { + "vrchat_must_be_closed": "VRChat needs to be closed before this option can be changed" + }, + "copy_failed": "Copy failed", + "error": "Error" }, "status": { "title": "VRChat Status" @@ -2481,5 +2550,11 @@ "unavailable": "Service may be unavailable due to VRChat internal issues" } } + }, + "accessibility": { + "toggle_sidebar": "Toggle Sidebar", + "back_to_top": "Back to top", + "toggle_password": "Toggle password visibility", + "clear_input": "Clear input" } } diff --git a/src/service/sqlite.js b/src/service/sqlite.js index ab84258d..cb7386f7 100644 --- a/src/service/sqlite.js +++ b/src/service/sqlite.js @@ -1,3 +1,4 @@ +import { i18n } from '../plugin/i18n'; import { openExternalLink } from '../shared/utils'; import { useModalStore } from '../stores'; @@ -23,7 +24,7 @@ class SQLiteService { } if (e.message.includes('database or disk is full')) { modalStore.alert({ - description: 'Please free up some disk space.', + description: i18n.global.t('message.database.disk_space'), title: 'Disk containing database is full' }); } @@ -39,7 +40,7 @@ class SQLiteService { } if (e.message.includes('disk I/O error')) { modalStore.alert({ - description: 'Please check your disk for errors.', + description: i18n.global.t('message.database.disk_error'), title: 'Disk I/O error' }); } diff --git a/src/shared/utils/common.js b/src/shared/utils/common.js index a53b8e6d..04cf660e 100644 --- a/src/shared/utils/common.js +++ b/src/shared/utils/common.js @@ -13,6 +13,7 @@ import { import { escapeTag, replaceBioSymbols } from './base/string'; import { AppDebug } from '../../service/appConfig.js'; import { compareUnityVersion } from './avatar'; +import { i18n } from '../../plugin/i18n'; import { miscRequest } from '../../api'; /** @@ -170,7 +171,7 @@ function copyToClipboard(text, message = 'Copied successfully!') { }) .catch((err) => { console.error('Copy failed:', err); - toast.error('Copy failed!'); + toast.error(i18n.global.t('message.copy_failed')); }); } diff --git a/src/stores/friend.js b/src/stores/friend.js index 75480642..9dba6577 100644 --- a/src/stores/friend.js +++ b/src/stores/friend.js @@ -1641,7 +1641,7 @@ export const useFriendStore = defineStore('Friend', () => { modalStore .confirm({ description: t('confirm.unfriend'), - title: 'Confirm' + title: t('confirm.title') }) .then(async ({ ok }) => { if (!ok) return; diff --git a/src/stores/gameLog.js b/src/stores/gameLog.js index 791e1d50..304beeb8 100644 --- a/src/stores/gameLog.js +++ b/src/stores/gameLog.js @@ -1,6 +1,7 @@ import { reactive, ref, shallowRef, watch } from 'vue'; import { defineStore } from 'pinia'; import { toast } from 'vue-sonner'; +import { useI18n } from 'vue-i18n'; import { useRouter } from 'vue-router'; import dayjs from 'dayjs'; @@ -56,6 +57,7 @@ export const useGameLogStore = defineStore('GameLog', () => { const modalStore = useModalStore(); const router = useRouter(); + const { t } = useI18n(); const state = reactive({ lastLocationAvatarList: new Map() @@ -1420,16 +1422,14 @@ export const useGameLogStore = defineStore('GameLog', () => { async function disableGameLogDialog() { if (gameStore.isGameRunning) { - toast.error( - 'VRChat needs to be closed before this option can be changed' - ); + toast.error(t('message.gamelog.vrchat_must_be_closed')); return; } if (!advancedSettingsStore.gameLogDisabled) { modalStore .confirm({ - description: 'Continue? Disable GameLog', - title: 'Confirm' + description: t('confirm.disable_gamelog'), + title: t('confirm.title') }) .then(({ ok }) => { if (!ok) return; diff --git a/src/stores/group.js b/src/stores/group.js index cbd9d7a2..fe1d99c3 100644 --- a/src/stores/group.js +++ b/src/stores/group.js @@ -583,8 +583,8 @@ export const useGroupStore = defineStore('Group', () => { function leaveGroupPrompt(groupId) { modalStore .confirm({ - description: 'Are you sure you want to leave this group?', - title: 'Confirm' + description: t('confirm.leave_group'), + title: t('confirm.title') }) .then(({ ok }) => { if (!ok) return; @@ -617,7 +617,7 @@ export const useGroupStore = defineStore('Group', () => { }) .then((args) => { handleGroupMemberProps(args); - toast.success('Group visibility updated'); + toast.success(t('message.group.visibility_updated')); return args; }); } @@ -629,7 +629,7 @@ export const useGroupStore = defineStore('Group', () => { }) .then((args) => { handleGroupMemberProps(args); - toast.success('Group subscription updated'); + toast.success(t('message.group.subscription_updated')); return args; }); } diff --git a/src/stores/notification.js b/src/stores/notification.js index 56725fa0..9a547c34 100644 --- a/src/stores/notification.js +++ b/src/stores/notification.js @@ -2531,7 +2531,7 @@ export const useNotificationStore = defineStore('Notification', () => { handleNotificationHide({ params }); notificationRequest.hideNotificationV2(params.notificationId); console.error('Notification response failed', err); - toast.error('Error'); + toast.error(t('message.error')); }); } diff --git a/src/views/Favorites/FavoritesAvatar.vue b/src/views/Favorites/FavoritesAvatar.vue index 6357053d..441c4fb4 100644 --- a/src/views/Favorites/FavoritesAvatar.vue +++ b/src/views/Favorites/FavoritesAvatar.vue @@ -40,7 +40,7 @@
  • - Scale + {{ t('view.friends_locations.scale') }} {{ avatarCardScalePercent }}%
  • - Spacing + {{ t('view.friends_locations.spacing') }} {{ avatarCardSpacingPercent }}% @@ -294,7 +294,7 @@
    - Local History + {{ t('view.favorite.avatars.local_history') }} @@ -318,7 +318,9 @@ ]" @click="handleGroupClick('history', historyGroupKey)">
    - Local History + {{ + t('view.favorite.avatars.local_history') + }} {{ avatarHistory.length }}/100
    @@ -350,7 +352,7 @@ {{ avatarHistory.length }}/100 - No Group Selected + {{ t('view.favorite.avatars.no_group_selected') }}
    {{ t('view.favorite.edit_mode') }} @@ -500,7 +502,7 @@
    @@ -1237,8 +1239,8 @@ function clearFavoriteGroup(ctx) { modalStore .confirm({ - description: 'Continue? Clear Group', - title: 'Confirm' + description: t('confirm.clear_group'), + title: t('confirm.title') }) .then(({ ok }) => { if (ok) { @@ -1279,8 +1281,8 @@ function promptLocalAvatarFavoriteGroupDelete(group) { modalStore .confirm({ - description: `Delete Group? ${group}`, - title: 'Confirm' + description: t('confirm.delete_group', { name: group }), + title: t('confirm.title') }) .then(({ ok }) => { if (ok) { diff --git a/src/views/Favorites/FavoritesFriend.vue b/src/views/Favorites/FavoritesFriend.vue index 10b27725..e38c9d75 100644 --- a/src/views/Favorites/FavoritesFriend.vue +++ b/src/views/Favorites/FavoritesFriend.vue @@ -955,8 +955,8 @@ function clearFavoriteGroup(ctx) { modalStore .confirm({ - description: 'Continue? Clear Group', - title: 'Confirm' + description: t('confirm.clear_group'), + title: t('confirm.title') }) .then(({ ok }) => { if (ok) { @@ -1035,7 +1035,7 @@ favoriteGroupId: args.json.id } }); - toast.success('Group visibility changed'); + toast.success(t('message.group.visibility_updated')); if (menuKey) { handleGroupMenuVisible(menuKey, false); } @@ -1107,8 +1107,8 @@ handleGroupMenuVisible(localGroupMenuKey(group), false); modalStore .confirm({ - description: 'Continue? Delete Group', - title: 'Confirm' + description: t('confirm.delete_group', { name: group }), + title: t('confirm.title') }) .then(({ ok }) => { if (!ok) return; diff --git a/src/views/Favorites/FavoritesWorld.vue b/src/views/Favorites/FavoritesWorld.vue index cded076e..94fd6ee4 100644 --- a/src/views/Favorites/FavoritesWorld.vue +++ b/src/views/Favorites/FavoritesWorld.vue @@ -1137,7 +1137,7 @@ favoriteGroupId: args.json.id } }); - toast.success('Group visibility changed'); + toast.success(t('message.group.visibility_updated')); if (menuKey) { handleGroupMenuVisible(menuKey, false); } @@ -1174,8 +1174,8 @@ function promptLocalWorldFavoriteGroupDelete(group) { modalStore .confirm({ - description: `Delete Group? ${group}`, - title: 'Confirm' + description: t('confirm.delete_group', { name: group }), + title: t('confirm.title') }) .then(({ ok }) => { if (ok) { @@ -1188,8 +1188,8 @@ function clearFavoriteGroup(ctx) { modalStore .confirm({ - description: 'Continue? Clear Group', - title: 'Confirm' + description: t('confirm.clear_group'), + title: t('confirm.title') }) .then(({ ok }) => { if (ok) { diff --git a/src/views/Notifications/dialogs/EditAndSendInviteResponseDialog.vue b/src/views/Notifications/dialogs/EditAndSendInviteResponseDialog.vue index 82432b8b..4bd53aae 100644 --- a/src/views/Notifications/dialogs/EditAndSendInviteResponseDialog.vue +++ b/src/views/Notifications/dialogs/EditAndSendInviteResponseDialog.vue @@ -76,7 +76,7 @@ .editInviteMessage(params, messageType, slot) .catch((err) => { console.error('Invite response message update failed', err); - toast.error('Error'); + toast.error(t('message.error')); }) .then((args) => { if (args.json[slot].message === I.messageSlot.message) { @@ -84,7 +84,7 @@ toast.error(errorMessage); throw new Error(errorMessage); } else { - toast('Invite message updated'); + toast(t('message.invite.message_updated')); } return args; }); @@ -98,13 +98,13 @@ .sendInviteResponsePhoto(params, I.invite.id) .catch((err) => { console.error('Invite response photo failed', err); - toast.error('Error'); + toast.error(t('message.error')); }) .then((args) => { notificationRequest.hideNotification({ notificationId: I.invite.id }); - toast.success('Invite response message sent'); + toast.success(t('message.invite.response_sent')); return args; }) .finally(() => { @@ -115,13 +115,13 @@ .sendInviteResponse(params, I.invite.id) .catch((err) => { console.error('Invite response failed', err); - toast.error('Error'); + toast.error(t('message.error')); }) .then((args) => { notificationRequest.hideNotification({ notificationId: I.invite.id }); - toast.success('Invite response message sent'); + toast.success(t('message.invite.response_sent')); return args; }) .finally(() => { diff --git a/src/views/Notifications/dialogs/SendInviteResponseConfirmDialog.vue b/src/views/Notifications/dialogs/SendInviteResponseConfirmDialog.vue index 3e65e050..67f5bfc3 100644 --- a/src/views/Notifications/dialogs/SendInviteResponseConfirmDialog.vue +++ b/src/views/Notifications/dialogs/SendInviteResponseConfirmDialog.vue @@ -68,7 +68,7 @@ notificationRequest.hideNotification({ notificationId: D.invite.id }); - toast.success('Invite response photo message sent'); + toast.success(t('message.invite.response_photo_sent')); return args; }) .finally(() => { @@ -79,13 +79,13 @@ .sendInviteResponse(params, D.invite.id) .catch((err) => { console.error('Invite response failed', err); - toast.error('Error'); + toast.error(t('message.error')); }) .then((args) => { notificationRequest.hideNotification({ notificationId: D.invite.id }); - toast.success('Invite response message sent'); + toast.success(t('message.invite.response_sent')); return args; }) .finally(() => { diff --git a/src/views/Settings/dialogs/FeedFiltersDialog.vue b/src/views/Settings/dialogs/FeedFiltersDialog.vue index cb782967..42ad79da 100644 --- a/src/views/Settings/dialogs/FeedFiltersDialog.vue +++ b/src/views/Settings/dialogs/FeedFiltersDialog.vue @@ -39,7 +39,9 @@