@djangocfg/i18n 2.1.227 → 2.1.229
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +3 -1
- package/dist/index.mjs +4 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +6 -0
package/dist/index.d.mts
CHANGED
|
@@ -1041,4 +1041,6 @@ declare function mergeTranslations<T extends Record<string, unknown> = Record<st
|
|
|
1041
1041
|
*/
|
|
1042
1042
|
declare function createTranslations(base: I18nTranslations, ...overrides: PartialTranslations[]): I18nTranslations;
|
|
1043
1043
|
|
|
1044
|
-
export { type DeepPartial, type I18nContextValue, type I18nKeys, I18nProvider, type I18nProviderProps, type I18nTranslationFn, type I18nTranslations, type IntlTranslator, type LocaleCode, type MessageKeys, type NamespaceKeys, type NestedKeyOf, type NestedValueOf, type PartialTranslations, type PathKeys, type TranslationFn, type TranslationKeys, type TypedTranslationFn, createTranslations, en, getT, interpolate, ko, mergeTranslations, ru, useI18n, useLocale, useT, useTranslation, useTypedT };
|
|
1044
|
+
declare const useAppT: () => (key: "ui.select.search" | "ui.select.placeholder" | "ui.select.noResults" | "ui.select.selectAll" | "ui.select.clearAll" | "ui.select.moreItems" | "ui.select.loading" | "ui.pagination.previous" | "ui.pagination.next" | "ui.pagination.first" | "ui.pagination.last" | "ui.pagination.page" | "ui.pagination.of" | "ui.pagination.showing" | "ui.dialog.close" | "ui.dialog.confirm" | "ui.dialog.cancel" | "ui.dialog.ok" | "ui.dialog.yes" | "ui.dialog.no" | "ui.dialog.delete" | "ui.dialog.save" | "ui.dialog.discard" | "ui.dialog.alertTitle" | "ui.dialog.confirmTitle" | "ui.dialog.confirmDelete" | "ui.dialog.promptTitle" | "ui.dialog.promptPlaceholder" | "ui.form.loading" | "ui.form.cancel" | "ui.form.delete" | "ui.form.save" | "ui.form.submit" | "ui.form.edit" | "ui.form.create" | "ui.form.update" | "ui.form.reset" | "ui.form.clear" | "ui.form.saving" | "ui.form.deleting" | "ui.form.required" | "ui.form.optional" | "ui.form.minLength" | "ui.form.maxLength" | "ui.form.invalidEmail" | "ui.form.invalidUrl" | "ui.form.invalidPhone" | "ui.form.passwordMismatch" | "ui.datetime.today" | "ui.datetime.yesterday" | "ui.datetime.tomorrow" | "ui.datetime.now" | "ui.datetime.secondsAgo" | "ui.datetime.minutesAgo" | "ui.datetime.hoursAgo" | "ui.datetime.daysAgo" | "ui.datetime.pickDate" | "ui.datetime.pickTime" | "ui.datetime.pickDateTime" | "ui.datetime.pickDateRange" | "ui.file.upload" | "ui.file.uploading" | "ui.file.dragDrop" | "ui.file.browse" | "ui.file.remove" | "ui.file.maxSize" | "ui.file.invalidType" | "ui.file.tooLarge" | "ui.table.filter" | "ui.table.selectAll" | "ui.table.loading" | "ui.table.showing" | "ui.table.noData" | "ui.table.rowsPerPage" | "ui.table.sortAsc" | "ui.table.sortDesc" | "ui.table.clearFilters" | "ui.table.deselectAll" | "ui.table.selected" | "ui.actions.remove" | "ui.actions.view" | "ui.actions.copy" | "ui.actions.copied" | "ui.actions.copyToClipboard" | "ui.actions.download" | "ui.actions.share" | "ui.actions.refresh" | "ui.actions.retry" | "ui.actions.expand" | "ui.actions.collapse" | "ui.actions.showMore" | "ui.actions.showLess" | "ui.actions.seeAll" | "ui.actions.goBack" | "ui.actions.previousSlide" | "ui.actions.nextSlide" | "ui.phone.searchCountries" | "ui.phone.noCountries" | "ui.navigation.title" | "ui.states.loading" | "ui.states.empty" | "ui.states.error" | "ui.states.success" | "ui.states.warning" | "ui.states.info" | "ui.states.pending" | "ui.states.active" | "ui.states.inactive" | "ui.states.enabled" | "ui.states.disabled" | "ui.errors.generic" | "ui.errors.network" | "ui.errors.timeout" | "ui.errors.notFound" | "ui.errors.unauthorized" | "ui.errors.forbidden" | "ui.errors.serverError" | "ui.errors.validation" | "ui.errors.unknown" | "layouts.push.enableNotifications" | "layouts.push.stayUpdated" | "layouts.push.enable" | "layouts.push.notNow" | "layouts.push.dismiss" | "layouts.search.placeholder" | "layouts.search.noResults" | "layouts.search.recentSearches" | "layouts.search.clearHistory" | "layouts.navigation.menu" | "layouts.navigation.home" | "layouts.navigation.back" | "layouts.navigation.forward" | "layouts.navigation.toggleMobile" | "layouts.navigation.breadcrumb" | "layouts.errors.goBack" | "layouts.errors.error" | "layouts.errors.serverError" | "layouts.errors.somethingWentWrong" | "layouts.errors.tryRefreshing" | "layouts.errors.refreshPage" | "layouts.errors.goHome" | "layouts.errors.needHelp" | "layouts.errors.contactSupport" | "layouts.errors.persistsContact" | "layouts.errors.badRequest" | "layouts.errors.authRequired" | "layouts.errors.accessDenied" | "layouts.errors.pageNotFound" | "layouts.errors.requestTimeout" | "layouts.errors.badGateway" | "layouts.errors.serviceUnavailable" | "layouts.errors.gatewayTimeout" | "layouts.errors.badRequestDesc" | "layouts.errors.authRequiredDesc" | "layouts.errors.accessDeniedDesc" | "layouts.errors.pageNotFoundDesc" | "layouts.errors.requestTimeoutDesc" | "layouts.errors.serverErrorDesc" | "layouts.errors.badGatewayDesc" | "layouts.errors.serviceUnavailableDesc" | "layouts.errors.gatewayTimeoutDesc" | "layouts.errors.unknownErrorDesc" | "layouts.sidebar.expand" | "layouts.sidebar.collapse" | "layouts.sidebar.toggle" | "layouts.profile.settings" | "layouts.profile.account" | "layouts.profile.logout" | "layouts.profile.login" | "layouts.profile.signUp" | "layouts.profile.signOut" | "layouts.profile.userMenu" | "layouts.theme.toggle" | "layouts.theme.light" | "layouts.theme.dark" | "layouts.theme.system" | "layouts.mobile.closeMenu" | "layouts.auth.success.message" | "layouts.auth.authRequired" | "layouts.auth.pleaseSignIn" | "layouts.auth.goToSignIn" | "layouts.auth.identifier.placeholder.phone" | "layouts.auth.identifier.placeholder.email" | "layouts.auth.identifier.title" | "layouts.auth.identifier.subtitle.phone" | "layouts.auth.identifier.subtitle.email" | "layouts.auth.identifier.button" | "layouts.auth.identifier.oauth.github" | "layouts.auth.identifier.channel.phone" | "layouts.auth.identifier.channel.email" | "layouts.auth.otp.title" | "layouts.auth.otp.subtitle" | "layouts.auth.otp.button" | "layouts.auth.otp.resend" | "layouts.auth.otp.changeEmail" | "layouts.auth.otp.changePhone" | "layouts.auth.twoFactor.placeholder.backup" | "layouts.auth.twoFactor.title" | "layouts.auth.twoFactor.toggle.toBackup" | "layouts.auth.twoFactor.toggle.toTotp" | "layouts.auth.twoFactor.subtitle.backup" | "layouts.auth.twoFactor.subtitle.totp" | "layouts.auth.twoFactor.button" | "layouts.auth.setup.loading.title" | "layouts.auth.setup.loading.button" | "layouts.auth.setup.qrCode.title" | "layouts.auth.setup.qrCode.subtitle" | "layouts.auth.setup.qrCode.button" | "layouts.auth.setup.qrCode.manualEntry" | "layouts.auth.setup.qrCode.confirmPrompt" | "layouts.auth.setup.qrCode.skip" | "layouts.auth.setup.complete.copied" | "layouts.auth.setup.complete.title" | "layouts.auth.setup.complete.subtitle" | "layouts.auth.setup.complete.instruction" | "layouts.auth.setup.complete.copyAll" | "layouts.auth.setup.complete.done" | "layouts.auth.terms.terms" | "layouts.auth.terms.agree" | "layouts.auth.terms.and" | "layouts.auth.terms.privacy" | "layouts.auth.divider.or" | "layouts.auth.footer.terms" | "layouts.auth.footer.privacy" | "layouts.auth.footer.support" | "layouts.auth.dev.anyCodeWorks" | "layouts.chat.aiAssistant" | "layouts.chat.defaultTitle" | "layouts.chat.newChat" | "layouts.chat.closeChat" | "layouts.chat.switchToFloating" | "layouts.chat.switchToSidebar" | "layouts.chat.dragToResize" | "layouts.chat.howCanIHelp" | "layouts.pwa.close" | "layouts.pwa.dismiss" | "layouts.pwa.addToHomeScreen" | "layouts.pwa.installApp" | "layouts.pwa.tapToLearnHow" | "layouts.pwa.clickToSeeGuide" | "layouts.pwa.tapToInstall" | "layouts.pwa.installing" | "layouts.pwa.appLogo" | "layouts.pwa.iosTitle" | "layouts.pwa.iosDescription" | "layouts.pwa.iosStep1Title" | "layouts.pwa.iosStep1Desc" | "layouts.pwa.iosStep2Title" | "layouts.pwa.iosStep2Desc" | "layouts.pwa.iosStep3Title" | "layouts.pwa.iosStep3Desc" | "layouts.pwa.gotIt" | "layouts.pwa.desktopTitle" | "layouts.pwa.desktopDescription" | "layouts.pwa.desktopDescSafari" | "layouts.pwa.desktopTip" | "layouts.pwa.desktopFirefoxNote" | "layouts.pwa.chromiumStep1Title" | "layouts.pwa.chromiumStep1Desc" | "layouts.pwa.chromiumStep2Title" | "layouts.pwa.chromiumStep2Desc" | "layouts.pwa.chromiumStep3Title" | "layouts.pwa.chromiumStep3Desc" | "layouts.pwa.firefoxStep1Title" | "layouts.pwa.firefoxStep1Desc" | "layouts.pwa.firefoxStep2Title" | "layouts.pwa.firefoxStep2Desc" | "layouts.pwa.firefoxStep3Title" | "layouts.pwa.firefoxStep3Desc" | "layouts.pwa.safariStep1Title" | "layouts.pwa.safariStep1Desc" | "layouts.pwa.safariStep2Title" | "layouts.pwa.safariStep2Desc" | "layouts.pwa.unknownStep1Title" | "layouts.pwa.unknownStep1Desc" | "layouts.pwa.unknownStep2Title" | "layouts.pwa.unknownStep2Desc" | "layouts.pwa.unknownStep3Title" | "layouts.pwa.unknownStep3Desc" | "layouts.profilePage.actions" | "layouts.profilePage.phone" | "layouts.profilePage.cancel" | "layouts.profilePage.save" | "layouts.profilePage.saving" | "layouts.profilePage.deleting" | "layouts.profilePage.title" | "layouts.profilePage.account" | "layouts.profilePage.signOut" | "layouts.profilePage.email" | "layouts.profilePage.personalInfo" | "layouts.profilePage.work" | "layouts.profilePage.security" | "layouts.profilePage.firstName" | "layouts.profilePage.lastName" | "layouts.profilePage.company" | "layouts.profilePage.position" | "layouts.profilePage.notSet" | "layouts.profilePage.addFirstName" | "layouts.profilePage.addLastName" | "layouts.profilePage.addPhone" | "layouts.profilePage.addCompany" | "layouts.profilePage.addPosition" | "layouts.profilePage.on" | "layouts.profilePage.off" | "layouts.profilePage.deleteAccount" | "layouts.profilePage.twoFactorAuth" | "layouts.profilePage.twoFactorEnabled" | "layouts.profilePage.twoFactorDisabled" | "layouts.profilePage.enable2FA" | "layouts.profilePage.avatar" | "layouts.profilePage.changeAvatar" | "layouts.profilePage.memberSince" | "layouts.profilePage.enterField" | "layouts.profilePage.profileUpdated" | "layouts.profilePage.avatarUpdated" | "layouts.profilePage.failedToUpdate" | "layouts.profilePage.failedToUploadAvatar" | "layouts.profilePage.selectImageFile" | "layouts.profilePage.fileTooLarge" | "layouts.profilePage.notAuthenticated" | "layouts.profilePage.pleaseLogIn" | "layouts.profilePage.deleteAccountTitle" | "layouts.profilePage.deleteAccountDesc" | "layouts.profilePage.typeToConfirm" | "layouts.profilePage.confirmationWord" | "api.errors.requestTimeout" | "api.errors.networkError" | "api.errors.connectionFailed" | "api.errors.serverUnavailable" | "api.errors.invalidResponse" | "api.errors.rateLimited" | "api.logout.confirm" | "api.logout.cancel" | "api.logout.title" | "api.logout.message" | "api.status.connecting" | "api.status.connected" | "api.status.disconnected" | "api.status.reconnecting" | "centrifugo.status.connecting" | "centrifugo.status.connected" | "centrifugo.status.disconnected" | "centrifugo.status.connect" | "centrifugo.status.uptime" | "centrifugo.status.subscriptions" | "centrifugo.status.realtimeUnavailable" | "centrifugo.monitor.title" | "centrifugo.monitor.description" | "centrifugo.monitor.openMonitor" | "centrifugo.monitor.openDebugPanel" | "centrifugo.monitor.widgetTitle" | "centrifugo.tabs.subscriptions" | "centrifugo.tabs.connection" | "centrifugo.tabs.messages" | "centrifugo.subscriptionsList.title" | "centrifugo.subscriptionsList.notConnected" | "centrifugo.subscriptionsList.noActiveSubscriptions" | "centrifugo.feed.title" | "centrifugo.feed.noMessages" | "centrifugo.feed.pausedClickToResume" | "centrifugo.feed.autoScrollOn" | "centrifugo.feed.autoScrollOff" | "centrifugo.feed.viewData" | "centrifugo.filters.clear" | "centrifugo.filters.title" | "centrifugo.filters.active" | "centrifugo.filters.searchMessages" | "centrifugo.filters.level" | "centrifugo.filters.type" | "centrifugo.filters.source" | "centrifugo.filters.autoScrollToLatest" | "centrifugo.debug.title" | "centrifugo.debug.description" | "centrifugo.debug.openDebugPanel" | "centrifugo.debug.tabConnection" | "centrifugo.debug.tabLogs" | "centrifugo.debug.tabSubscriptions" | "tools.form.title" | "tools.upload.cancel" | "tools.upload.uploading" | "tools.upload.dragDrop" | "tools.upload.remove" | "tools.upload.maxSize" | "tools.upload.retry" | "tools.upload.pending" | "tools.upload.dropHere" | "tools.upload.uploaded" | "tools.upload.failed" | "tools.upload.paused" | "tools.code.copyCode" | "tools.code.noContent" | "tools.diagram.title" | "tools.diagram.clickToView" | "tools.image.noImage" | "tools.image.failedToLoad" | "tools.image.zoomIn" | "tools.image.zoomOut" | "tools.image.fitToView" | "tools.image.flipHorizontal" | "tools.image.flipVertical" | "tools.image.rotate" | "tools.image.fullscreen" | "tools.gallery.previous" | "tools.gallery.next" | "tools.gallery.close" | "tools.gallery.download" | "tools.gallery.share" | "tools.gallery.noImages" | "tools.gallery.lightbox" | "tools.video.fullscreen" | "tools.video.play" | "tools.video.unavailable" | "tools.audio.back" | "tools.audio.forward" | "tools.audio.restart" | "tools.audio.volume" | "tools.color.pick" | "tools.openapi.navigation" | "tools.openapi.previous" | "tools.openapi.next" | "tools.openapi.required" | "tools.openapi.optional" | "tools.openapi.description" | "tools.openapi.response" | "tools.openapi.noResponse" | "tools.openapi.searchEndpoints" | "tools.openapi.all" | "tools.openapi.methods" | "tools.openapi.path" | "tools.openapi.bearerToken" | "tools.tour.previous" | "tools.tour.next" | "tools.tour.close" | "tools.tour.skip" | "tools.tour.finish" | "tools.tour.stepOf", params?: Record<string, string | number>) => string;
|
|
1045
|
+
|
|
1046
|
+
export { type DeepPartial, type I18nContextValue, type I18nKeys, I18nProvider, type I18nProviderProps, type I18nTranslationFn, type I18nTranslations, type IntlTranslator, type LocaleCode, type MessageKeys, type NamespaceKeys, type NestedKeyOf, type NestedValueOf, type PartialTranslations, type PathKeys, type TranslationFn, type TranslationKeys, type TypedTranslationFn, createTranslations, en, getT, interpolate, ko, mergeTranslations, ru, useAppT, useI18n, useLocale, useT, useTranslation, useTypedT };
|
package/dist/index.mjs
CHANGED
|
@@ -1934,6 +1934,9 @@ var ko = {
|
|
|
1934
1934
|
}
|
|
1935
1935
|
};
|
|
1936
1936
|
|
|
1937
|
-
|
|
1937
|
+
// src/index.ts
|
|
1938
|
+
var useAppT = () => useTypedT();
|
|
1939
|
+
|
|
1940
|
+
export { I18nProvider, createTranslations, en, getT, interpolate, ko, mergeTranslations, ru, useAppT, useI18n, useLocale, useT, useTranslation, useTypedT };
|
|
1938
1941
|
//# sourceMappingURL=index.mjs.map
|
|
1939
1942
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/locales/en.ts","../src/utils/interpolate.ts","../src/utils/merge.ts","../src/utils/get-value.ts","../src/context.tsx","../src/locales/ru.ts","../src/locales/ko.ts"],"names":["value"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { I18nTranslations } from '../types'\n\n/**\n * English translations (default)\n */\nexport const en: I18nTranslations = {\n ui: {\n select: {\n placeholder: 'Select option...',\n search: 'Search...',\n noResults: 'No results found.',\n selectAll: 'Select all',\n clearAll: 'Clear all',\n moreItems: '+{count} more',\n loading: 'Loading...',\n },\n\n pagination: {\n previous: 'Previous',\n next: 'Next',\n first: 'First',\n last: 'Last',\n page: 'Page {page}',\n of: 'of {total}',\n showing: '{from}-{to} of {total}',\n },\n\n dialog: {\n close: 'Close',\n confirm: 'Confirm',\n cancel: 'Cancel',\n ok: 'OK',\n yes: 'Yes',\n no: 'No',\n delete: 'Delete',\n save: 'Save',\n discard: 'Discard',\n // Alert dialog\n alertTitle: 'Notice',\n // Confirm dialog\n confirmTitle: 'Confirm',\n confirmDelete: 'Are you sure you want to delete this?',\n // Prompt dialog\n promptTitle: 'Input Required',\n promptPlaceholder: 'Enter value...',\n },\n\n form: {\n submit: 'Submit',\n cancel: 'Cancel',\n save: 'Save',\n delete: 'Delete',\n edit: 'Edit',\n create: 'Create',\n update: 'Update',\n reset: 'Reset',\n clear: 'Clear',\n loading: 'Loading...',\n saving: 'Saving...',\n deleting: 'Deleting...',\n required: 'This field is required',\n optional: 'Optional',\n minLength: '{min} characters minimum',\n maxLength: '{max} characters maximum',\n invalidEmail: 'Please enter a valid email address',\n invalidUrl: 'Please enter a valid URL',\n invalidPhone: 'Please enter a valid phone number',\n passwordMismatch: 'Passwords do not match',\n },\n\n datetime: {\n today: 'Today',\n yesterday: 'Yesterday',\n tomorrow: 'Tomorrow',\n now: 'Just now',\n secondsAgo: '{count} seconds ago',\n minutesAgo: '{count} minutes ago',\n hoursAgo: '{count} hours ago',\n daysAgo: '{count} days ago',\n pickDate: 'Pick a date',\n pickTime: 'Pick a time',\n pickDateTime: 'Pick date and time',\n pickDateRange: 'Pick a date range',\n },\n\n file: {\n upload: 'Upload',\n uploading: 'Uploading...',\n dragDrop: 'Drag and drop files here',\n browse: 'Browse files',\n remove: 'Remove',\n maxSize: 'Max size: {size}',\n invalidType: 'Invalid file type',\n tooLarge: 'File is too large',\n },\n\n table: {\n noData: 'No data available',\n loading: 'Loading data...',\n showing: 'Showing {from}-{to} of {total}',\n rowsPerPage: 'Rows per page',\n sortAsc: 'Sort ascending',\n sortDesc: 'Sort descending',\n filter: 'Filter',\n clearFilters: 'Clear filters',\n selectAll: 'Select all',\n deselectAll: 'Deselect all',\n selected: '{count} selected',\n },\n\n actions: {\n view: 'View',\n copy: 'Copy',\n copied: 'Copied!',\n copyToClipboard: 'Copy to clipboard',\n download: 'Download',\n share: 'Share',\n refresh: 'Refresh',\n retry: 'Retry',\n expand: 'Expand',\n collapse: 'Collapse',\n showMore: 'Show more',\n showLess: 'Show less',\n seeAll: 'See all',\n goBack: 'Go back',\n remove: 'Remove',\n previousSlide: 'Previous slide',\n nextSlide: 'Next slide',\n },\n\n phone: {\n searchCountries: 'Search countries...',\n noCountries: 'No countries found',\n },\n\n navigation: {\n title: 'Navigation',\n },\n\n states: {\n loading: 'Loading',\n empty: 'Empty',\n error: 'Error',\n success: 'Success',\n warning: 'Warning',\n info: 'Info',\n pending: 'Pending',\n active: 'Active',\n inactive: 'Inactive',\n enabled: 'Enabled',\n disabled: 'Disabled',\n },\n\n errors: {\n generic: 'Something went wrong',\n network: 'Network error. Please check your connection.',\n timeout: 'Request timed out. Please try again.',\n notFound: 'Not found',\n unauthorized: 'Please sign in to continue',\n forbidden: 'You do not have permission to access this',\n serverError: 'Server error. Please try again later.',\n validation: 'Please check the form for errors',\n unknown: 'An unknown error occurred',\n },\n },\n\n layouts: {\n sidebar: {\n toggle: 'Toggle sidebar',\n collapse: 'Collapse sidebar',\n expand: 'Expand sidebar',\n },\n\n navigation: {\n menu: 'Menu',\n home: 'Home',\n back: 'Back',\n forward: 'Forward',\n toggleMobile: 'Toggle mobile menu',\n breadcrumb: 'Breadcrumb',\n },\n\n profile: {\n settings: 'Settings',\n account: 'Account',\n logout: 'Log out',\n login: 'Log in',\n signUp: 'Sign up',\n signOut: 'Sign Out',\n userMenu: 'User menu',\n },\n\n theme: {\n toggle: 'Toggle theme',\n light: 'Light',\n dark: 'Dark',\n system: 'System',\n },\n\n search: {\n placeholder: 'Search...',\n noResults: 'No results found',\n recentSearches: 'Recent searches',\n clearHistory: 'Clear history',\n },\n\n mobile: {\n closeMenu: 'Close menu',\n },\n\n errors: {\n somethingWentWrong: 'Something went wrong',\n tryRefreshing: \"We're sorry, but something unexpected happened. Please try refreshing the page.\",\n refreshPage: 'Refresh Page',\n goBack: 'Go Back',\n goHome: 'Go Home',\n needHelp: 'Need help?',\n contactSupport: 'Contact support',\n persistsContact: 'If the problem persists, please contact {email}',\n error: 'Error',\n badRequest: 'Bad Request',\n authRequired: 'Authentication Required',\n accessDenied: 'Access Denied',\n pageNotFound: 'Page Not Found',\n requestTimeout: 'Request Timeout',\n serverError: 'Server Error',\n badGateway: 'Bad Gateway',\n serviceUnavailable: 'Service Unavailable',\n gatewayTimeout: 'Gateway Timeout',\n badRequestDesc: 'The request could not be understood. Please check your input and try again.',\n authRequiredDesc: 'You need to sign in to access this page.',\n accessDeniedDesc: \"You don't have permission to access this resource.\",\n pageNotFoundDesc: \"The page you're looking for doesn't exist or has been moved.\",\n requestTimeoutDesc: 'The request took too long to process. Please try again.',\n serverErrorDesc: \"Something went wrong on our end. We're working to fix it.\",\n badGatewayDesc: 'The server received an invalid response. Please try again later.',\n serviceUnavailableDesc: 'The service is temporarily unavailable. Please try again later.',\n gatewayTimeoutDesc: 'The server took too long to respond. Please try again.',\n unknownErrorDesc: 'An unexpected error occurred. Please try again or contact support.',\n },\n\n push: {\n enableNotifications: 'Enable notifications',\n stayUpdated: 'Stay updated with important updates and alerts',\n enable: 'Enable',\n notNow: 'Not now',\n dismiss: 'Dismiss',\n },\n\n auth: {\n authRequired: 'Authentication Required',\n pleaseSignIn: 'Please sign in to continue',\n goToSignIn: 'Go to Sign In',\n\n // Identifier step\n identifier: {\n title: 'Sign in',\n subtitle: {\n email: 'Enter your email to continue',\n phone: 'Enter your phone number to continue',\n },\n placeholder: {\n email: 'email@example.com',\n phone: 'Enter your phone number',\n },\n button: 'Continue',\n oauth: {\n github: 'Continue with GitHub',\n },\n channel: {\n email: 'Email',\n phone: 'Phone',\n },\n },\n\n // OTP step\n otp: {\n title: 'Enter code',\n subtitle: 'We sent a code to',\n button: 'Verify',\n resend: 'Resend code',\n changeEmail: 'Change email',\n changePhone: 'Change phone',\n },\n\n // Two-factor step\n twoFactor: {\n title: 'Two-factor authentication',\n subtitle: {\n totp: 'Enter the 6-digit code from your authenticator',\n backup: 'Enter one of your backup codes',\n },\n placeholder: {\n backup: 'XXXXXXXX',\n },\n button: 'Verify',\n toggle: {\n toBackup: 'Use backup code',\n toTotp: 'Use authenticator app',\n },\n },\n\n // 2FA Setup\n setup: {\n loading: {\n title: 'Setting up...',\n button: 'Loading',\n },\n qrCode: {\n title: 'Set up 2FA',\n subtitle: 'Scan this QR code with your authenticator app',\n manualEntry: \"Can't scan? Enter manually\",\n confirmPrompt: 'Enter the 6-digit code to confirm',\n button: 'Enable 2FA',\n skip: 'Skip for now',\n },\n complete: {\n title: '2FA enabled',\n subtitle: 'Save these backup codes securely',\n instruction: 'Each code can only be used once',\n copyAll: 'Copy all codes',\n copied: 'Copied',\n done: 'Done',\n },\n },\n\n // Success\n success: {\n message: 'Signed in successfully',\n },\n\n // Shared\n terms: {\n agree: 'I agree to the',\n and: 'and',\n terms: 'Terms',\n privacy: 'Privacy Policy',\n },\n divider: {\n or: 'or',\n },\n footer: {\n terms: 'Terms',\n privacy: 'Privacy',\n support: 'Support',\n },\n\n // Dev mode\n dev: {\n anyCodeWorks: 'Dev Mode: Any code works',\n },\n },\n\n chat: {\n aiAssistant: 'AI Assistant',\n defaultTitle: 'AI Chat',\n newChat: 'New chat',\n closeChat: 'Close chat',\n switchToFloating: 'Switch to floating mode',\n switchToSidebar: 'Switch to sidebar mode',\n dragToResize: 'Drag to resize',\n howCanIHelp: 'How can I help?',\n },\n\n pwa: {\n addToHomeScreen: 'Add to Home Screen',\n installApp: 'Install App',\n tapToLearnHow: 'Tap to learn how',\n clickToSeeGuide: 'Click to see desktop guide',\n tapToInstall: 'Tap to install',\n installing: 'Installing...',\n dismiss: 'Dismiss',\n appLogo: 'App logo',\n iosTitle: 'Add to Home Screen',\n iosDescription: 'Install this app on your iPhone for quick access and a better experience',\n iosStep1Title: 'Tap Share',\n iosStep1Desc: 'At the bottom of Safari',\n iosStep2Title: 'Scroll & Tap',\n iosStep2Desc: '\"Add to Home Screen\"',\n iosStep3Title: 'Confirm',\n iosStep3Desc: 'Tap \"Add\" in top-right',\n gotIt: 'Got It',\n desktopTitle: 'Install App on Desktop',\n desktopDescription: 'Install this app on {browser} for quick access from your desktop',\n desktopDescSafari: 'Safari on macOS has limited PWA support. For the best experience, use Chrome, Edge, or Brave.',\n desktopTip: 'You can also right-click the page and look for \"Install\" option in {browser}',\n desktopFirefoxNote: 'Firefox has limited PWA support. Some features may not work as expected.',\n chromiumStep1Title: 'Find Install Icon',\n chromiumStep1Desc: 'Look for install icon in address bar (right side)',\n chromiumStep2Title: 'Click Install',\n chromiumStep2Desc: 'Click the icon and select \"Install\"',\n chromiumStep3Title: 'Confirm',\n chromiumStep3Desc: 'Click \"Install\" in the popup dialog',\n firefoxStep1Title: 'Open Menu',\n firefoxStep1Desc: 'Click the menu button (three lines)',\n firefoxStep2Title: 'Find Install Option',\n firefoxStep2Desc: 'Look for \"Install\" or \"Add to Home Screen\"',\n firefoxStep3Title: 'Confirm',\n firefoxStep3Desc: 'Follow the installation prompts',\n safariStep1Title: 'Limited Support',\n safariStep1Desc: 'Safari on macOS has limited PWA support',\n safariStep2Title: 'Use Chromium Browser',\n safariStep2Desc: 'Consider using Chrome, Edge, or Brave for full PWA experience',\n unknownStep1Title: 'Check Address Bar',\n unknownStep1Desc: 'Look for an install or download icon',\n unknownStep2Title: 'Or Use Menu',\n unknownStep2Desc: 'Check browser menu for install option',\n unknownStep3Title: 'Confirm',\n unknownStep3Desc: 'Follow the installation prompts',\n close: 'Close',\n },\n\n profilePage: {\n title: 'Profile',\n account: 'Account',\n personalInfo: 'Personal Information',\n work: 'Work',\n security: 'Security',\n actions: 'Actions',\n email: 'Email',\n firstName: 'First Name',\n lastName: 'Last Name',\n company: 'Company',\n position: 'Position',\n phone: 'Phone',\n notSet: 'Not set',\n addFirstName: 'Add first name',\n addLastName: 'Add last name',\n addPhone: 'Add phone number',\n addCompany: 'Add company',\n addPosition: 'Add position',\n on: 'On',\n off: 'Off',\n save: 'Save',\n saving: 'Saving...',\n cancel: 'Cancel',\n signOut: 'Sign Out',\n deleteAccount: 'Delete Account',\n deleting: 'Deleting...',\n twoFactorAuth: 'Two-Factor Authentication',\n twoFactorEnabled: 'Two-factor authentication is enabled',\n twoFactorDisabled: 'Add an extra layer of security',\n enable2FA: 'Enable',\n avatar: 'Avatar',\n changeAvatar: 'Change avatar',\n memberSince: 'Member since {date}',\n enterField: 'Enter {field}',\n profileUpdated: 'Profile updated',\n avatarUpdated: 'Avatar updated',\n failedToUpdate: 'Failed to update',\n failedToUploadAvatar: 'Failed to upload avatar',\n selectImageFile: 'Please select an image file',\n fileTooLarge: 'File size must be less than 5MB',\n notAuthenticated: 'Not Authenticated',\n pleaseLogIn: 'Please log in to view your profile.',\n deleteAccountTitle: 'Delete Account',\n deleteAccountDesc: 'This action cannot be undone. Your account will be permanently deleted.',\n typeToConfirm: 'Type {word} to confirm:',\n confirmationWord: 'DELETE',\n },\n },\n\n api: {\n errors: {\n networkError: 'Network error',\n connectionFailed: 'Connection failed',\n requestTimeout: 'Request timed out',\n serverUnavailable: 'Server is unavailable',\n invalidResponse: 'Invalid response from server',\n rateLimited: 'Too many requests. Please wait.',\n },\n status: {\n connecting: 'Connecting...',\n connected: 'Connected',\n disconnected: 'Disconnected',\n reconnecting: 'Reconnecting...',\n },\n logout: {\n title: 'Logout',\n message: 'Are you sure you want to logout?',\n confirm: 'Logout',\n cancel: 'Cancel',\n },\n },\n\n centrifugo: {\n monitor: {\n title: 'Centrifugo Monitor',\n description: 'Real-time WebSocket monitoring and debugging',\n openMonitor: 'Open Centrifugo Monitor',\n openDebugPanel: 'Open Centrifugo Debug Panel',\n widgetTitle: 'WebSocket Monitor',\n },\n tabs: {\n connection: 'Connection',\n messages: 'Messages',\n subscriptions: 'Subscriptions',\n },\n subscriptionsList: {\n title: 'Active Subscriptions',\n notConnected: 'Not connected to Centrifugo',\n noActiveSubscriptions: 'No active subscriptions',\n },\n status: {\n connected: 'Connected',\n disconnected: 'Disconnected',\n connecting: 'Connecting...',\n connect: 'Connect',\n uptime: 'Uptime:',\n subscriptions: 'Subscriptions:',\n realtimeUnavailable: 'Real-time features unavailable',\n },\n feed: {\n title: 'Messages Feed',\n noMessages: 'No messages yet',\n pausedClickToResume: 'Paused - Click play to resume',\n autoScrollOn: 'Auto-scroll: ON',\n autoScrollOff: 'Auto-scroll: OFF',\n viewData: 'View data',\n },\n filters: {\n title: 'Filters',\n active: 'Active',\n clear: 'Clear',\n searchMessages: 'Search messages...',\n level: 'Level:',\n type: 'Type:',\n source: 'Source',\n autoScrollToLatest: 'Auto-scroll to latest',\n },\n debug: {\n title: 'Centrifugo Debug',\n description: 'WebSocket connection status, logs, and subscriptions',\n openDebugPanel: 'Open Centrifugo Debug Panel',\n tabConnection: 'Connection',\n tabLogs: 'Logs',\n tabSubscriptions: 'Subscriptions',\n },\n },\n\n tools: {\n code: {\n copyCode: 'Copy code',\n noContent: 'No content available',\n },\n\n diagram: {\n title: 'Diagram',\n clickToView: 'Click to view fullscreen',\n },\n\n image: {\n noImage: 'No image content',\n failedToLoad: 'Failed to load image',\n zoomIn: 'Zoom in',\n zoomOut: 'Zoom out',\n fitToView: 'Fit to view',\n flipHorizontal: 'Flip horizontal',\n flipVertical: 'Flip vertical',\n rotate: 'Rotate 90°',\n fullscreen: 'Open in fullscreen',\n },\n\n gallery: {\n noImages: 'No images available',\n lightbox: 'Image lightbox',\n previous: 'Previous image',\n next: 'Next image',\n close: 'Close lightbox',\n download: 'Download image',\n share: 'Share image',\n },\n\n video: {\n play: 'Play video',\n fullscreen: 'Fullscreen',\n unavailable: 'Video unavailable',\n },\n\n audio: {\n restart: 'Restart',\n back: 'Back 5 seconds',\n forward: 'Forward 5 seconds',\n volume: 'Volume',\n },\n\n color: {\n pick: 'Pick color',\n },\n\n openapi: {\n response: 'Response',\n noResponse: 'No response body available',\n required: 'Required',\n optional: 'Optional',\n searchEndpoints: 'Search endpoints...',\n all: 'All',\n methods: 'Methods',\n path: 'Path',\n description: 'Description',\n navigation: 'Navigation',\n previous: 'Previous',\n next: 'Next',\n bearerToken: 'Enter Bearer token (optional, uses JWT if empty)',\n },\n\n form: {\n title: 'Form',\n },\n\n tour: {\n next: 'Next',\n previous: 'Back',\n skip: 'Skip',\n finish: 'Finish',\n close: 'Close',\n stepOf: 'Step {current} of {total}',\n },\n\n upload: {\n dragDrop: 'Drag & drop files or click to browse',\n dropHere: 'Drop files here',\n maxSize: 'Max {size}MB per file',\n uploading: 'Uploading...',\n uploaded: 'Uploaded',\n failed: 'Failed',\n retry: 'Retry',\n remove: 'Remove',\n cancel: 'Cancel',\n paused: 'Paused',\n pending: 'Pending',\n },\n },\n}\n","/**\n * Interpolate variables in a translation string\n *\n * @example\n * interpolate(\"Hello, {name}!\", { name: \"World\" })\n * // => \"Hello, World!\"\n *\n * interpolate(\"+{count} more\", { count: 5 })\n * // => \"+5 more\"\n */\nexport function interpolate(\n template: string,\n params?: Record<string, string | number>\n): string {\n if (!params) return template\n\n return template.replace(/\\{(\\w+)\\}/g, (match, key) => {\n if (key in params) {\n return String(params[key])\n }\n return match\n })\n}\n","import type { I18nTranslations, PartialTranslations } from '../types'\n\ntype AnyObject = { [key: string]: unknown }\n\n/**\n * Deep merge two objects\n */\nfunction deepMerge(target: AnyObject, source: AnyObject): AnyObject {\n const result = { ...target }\n\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n const sourceValue = source[key]\n const targetValue = result[key]\n\n if (\n sourceValue !== null &&\n typeof sourceValue === 'object' &&\n !Array.isArray(sourceValue) &&\n targetValue !== null &&\n typeof targetValue === 'object' &&\n !Array.isArray(targetValue)\n ) {\n // Recursively merge objects\n result[key] = deepMerge(\n targetValue as AnyObject,\n sourceValue as AnyObject\n )\n } else if (sourceValue !== undefined) {\n // Override with source value\n result[key] = sourceValue\n }\n }\n }\n\n return result\n}\n\n/**\n * Merge base translations with partial overrides or additional namespaces\n *\n * @example\n * // Override existing keys\n * const customRu = mergeTranslations(ru, {\n * ui: {\n * select: {\n * placeholder: 'Выберите марку авто...'\n * }\n * }\n * })\n *\n * @example\n * // Add app-specific namespace\n * const appTranslations = mergeTranslations(en, {\n * hub: {\n * nav: { home: 'Home' }\n * }\n * })\n */\nexport function mergeTranslations<T extends Record<string, unknown> = Record<string, unknown>>(\n base: I18nTranslations,\n overrides: PartialTranslations | T\n): I18nTranslations & T {\n return deepMerge(\n base as unknown as AnyObject,\n overrides as unknown as AnyObject\n ) as unknown as I18nTranslations & T\n}\n\n/**\n * Create translations from multiple partial sources\n *\n * @example\n * const translations = createTranslations(\n * en, // base\n * uiOverrides, // UI customizations\n * appStrings // App-specific strings\n * )\n */\nexport function createTranslations(\n base: I18nTranslations,\n ...overrides: PartialTranslations[]\n): I18nTranslations {\n return overrides.reduce<I18nTranslations>(\n (acc, override) => mergeTranslations(acc, override),\n base\n )\n}\n","/**\n * Get a nested value from an object using dot notation\n *\n * @example\n * getNestedValue({ ui: { select: { placeholder: 'Select...' } } }, 'ui.select.placeholder')\n * // => 'Select...'\n */\nexport function getNestedValue(\n obj: Record<string, unknown>,\n path: string\n): string | undefined {\n const keys = path.split('.')\n let current: unknown = obj\n\n for (const key of keys) {\n if (current === null || current === undefined) {\n return undefined\n }\n if (typeof current !== 'object') {\n return undefined\n }\n current = (current as Record<string, unknown>)[key]\n }\n\n if (typeof current === 'string') {\n return current\n }\n\n return undefined\n}\n","'use client'\n\nimport * as React from 'react'\n\nimport { en } from './locales/en'\nimport type {\n I18nContextValue,\n I18nProviderProps,\n I18nTranslations,\n LocaleCode,\n} from './types'\nimport { getNestedValue, interpolate, mergeTranslations } from './utils'\n\n/**\n * I18n Context\n */\nconst I18nContext = React.createContext<I18nContextValue | null>(null)\n\n/**\n * Default translations (English)\n */\nconst defaultTranslations: I18nTranslations = en\n\n/**\n * I18n Provider\n *\n * @example\n * // Basic usage with single locale\n * import { I18nProvider, ru } from '@djangocfg/i18n'\n *\n * <I18nProvider locale=\"ru\" translations={ru}>\n * <App />\n * </I18nProvider>\n *\n * @example\n * // With all translations for dynamic switching\n * import { I18nProvider, en, ru, ko } from '@djangocfg/i18n'\n *\n * <I18nProvider\n * locale={currentLocale}\n * allTranslations={{ en, ru, ko }}\n * onLocaleChange={(locale) => setCurrentLocale(locale)}\n * >\n * <App />\n * </I18nProvider>\n *\n * @example\n * // With custom overrides\n * import { I18nProvider, ru, mergeTranslations } from '@djangocfg/i18n'\n *\n * const customRu = mergeTranslations(ru, {\n * ui: { select: { placeholder: 'Выберите марку...' } }\n * })\n *\n * <I18nProvider locale=\"ru\" translations={customRu}>\n * <App />\n * </I18nProvider>\n */\nexport function I18nProvider({\n children,\n locale: initialLocale = 'en',\n translations: initialTranslations,\n allTranslations,\n onLocaleChange,\n}: I18nProviderProps) {\n const [locale, setLocaleState] = React.useState<LocaleCode>(initialLocale)\n\n // Resolve current translations\n const translations = React.useMemo<I18nTranslations>(() => {\n // If allTranslations provided, use it to get translations for current locale\n if (allTranslations && allTranslations[locale]) {\n const localeTranslations = allTranslations[locale]\n // Merge with defaults to fill any missing keys\n return mergeTranslations(defaultTranslations, localeTranslations)\n }\n\n // If single translations provided, use them\n if (initialTranslations) {\n return mergeTranslations(\n defaultTranslations,\n initialTranslations as I18nTranslations\n )\n }\n\n // Fallback to defaults\n return defaultTranslations\n }, [locale, allTranslations, initialTranslations])\n\n // Translation function\n const t = React.useCallback(\n (key: string, params?: Record<string, string | number>): string => {\n const value = getNestedValue(\n translations as unknown as Record<string, unknown>,\n key\n )\n\n if (value === undefined) {\n // Development warning\n if (typeof window !== 'undefined' && window.location.hostname === 'localhost') {\n console.warn(`[i18n] Missing translation key: \"${key}\"`)\n }\n // Return the key as fallback\n return key\n }\n\n return interpolate(value, params)\n },\n [translations]\n )\n\n // Locale change handler\n const setLocale = React.useCallback(\n (newLocale: LocaleCode) => {\n setLocaleState(newLocale)\n onLocaleChange?.(newLocale)\n },\n [onLocaleChange]\n )\n\n // Sync with external locale changes\n React.useEffect(() => {\n if (initialLocale !== locale) {\n setLocaleState(initialLocale)\n }\n }, [initialLocale])\n\n const value = React.useMemo<I18nContextValue>(\n () => ({\n locale,\n translations,\n t,\n setLocale,\n }),\n [locale, translations, t, setLocale]\n )\n\n return <I18nContext.Provider value={value}>{children}</I18nContext.Provider>\n}\n\n/**\n * Hook to access i18n context\n *\n * @example\n * function MyComponent() {\n * const { t, locale, setLocale } = useI18n()\n *\n * return (\n * <div>\n * <p>{t('ui.select.placeholder')}</p>\n * <p>{t('ui.pagination.showing', { from: 1, to: 10, total: 100 })}</p>\n * <button onClick={() => setLocale('ru')}>Switch to Russian</button>\n * </div>\n * )\n * }\n */\nexport function useI18n(): I18nContextValue {\n const context = React.useContext(I18nContext)\n\n if (!context) {\n // Return default implementation if no provider\n // This allows components to work without provider (using English defaults)\n return {\n locale: 'en',\n translations: defaultTranslations,\n t: (key: string, params?: Record<string, string | number>) => {\n const value = getNestedValue(\n defaultTranslations as unknown as Record<string, unknown>,\n key\n )\n if (value === undefined) return key\n return interpolate(value, params)\n },\n setLocale: () => {\n if (typeof window !== 'undefined' && window.location.hostname === 'localhost') {\n console.warn(\n '[i18n] setLocale called but no I18nProvider found. Wrap your app with I18nProvider to enable locale switching.'\n )\n }\n },\n }\n }\n\n return context\n}\n\n/**\n * Hook to get the translation function only\n * Useful when you only need translations without other context values\n *\n * @example\n * function MyComponent() {\n * const t = useTranslation()\n * return <span>{t('ui.form.save')}</span>\n * }\n */\nexport function useTranslation() {\n const { t } = useI18n()\n return t\n}\n\n/**\n * Hook to get current locale\n *\n * @example\n * function MyComponent() {\n * const locale = useLocale()\n * return <span>Current: {locale}</span>\n * }\n */\nexport function useLocale(): LocaleCode {\n const { locale } = useI18n()\n return locale\n}\n\n/**\n * Alias for useTranslation\n * Lightweight hook that just returns the t function\n * Works with or without I18nProvider (falls back to English)\n *\n * @example\n * function MyComponent() {\n * const t = useT()\n * return <span>{t('ui.form.save')}</span>\n * }\n */\nexport const useT = useTranslation\n\n/**\n * Type-safe translation hook\n *\n * Returns a translation function that only accepts valid keys from your translations type.\n * Use this when you want compile-time checking of translation keys.\n *\n * @example\n * ```typescript\n * import { useTypedT } from '@djangocfg/i18n'\n * import type { I18nTranslations } from '@djangocfg/i18n'\n *\n * function MyComponent() {\n * const t = useTypedT<I18nTranslations>()\n * return <span>{t('ui.form.save')}</span> // OK\n * return <span>{t('ui.form.typo')}</span> // Compile error!\n * }\n * ```\n *\n * @example\n * ```typescript\n * // With merged translations (app + extensions)\n * import type { AppTranslations } from '@/i18n/types'\n *\n * function MyComponent() {\n * const t = useTypedT<AppTranslations>()\n * return <span>{t('leads.form.title')}</span> // OK if leads is in AppTranslations\n * }\n * ```\n */\nexport function useTypedT<T extends object>(): (\n key: import('./utils/path-keys').PathKeys<T>,\n params?: Record<string, string | number>\n) => string {\n const { t } = useI18n()\n return t as (\n key: import('./utils/path-keys').PathKeys<T>,\n params?: Record<string, string | number>\n ) => string\n}\n\n/**\n * Get translation without hook (for class components or non-React contexts)\n * Always uses English defaults, no context support\n *\n * @example\n * // In a class component\n * render() {\n * const title = getT('layouts.errors.somethingWentWrong')\n * return <h1>{title}</h1>\n * }\n *\n * @example\n * // With interpolation\n * const message = getT('ui.pagination.showing', { from: 1, to: 10, total: 100 })\n */\nexport function getT(\n key: string,\n params?: Record<string, string | number>\n): string {\n const value = getNestedValue(\n defaultTranslations as unknown as Record<string, unknown>,\n key\n )\n if (value === undefined) return key\n return interpolate(value, params)\n}\n","import type { I18nTranslations } from '../types'\n\n/**\n * Russian translations\n */\nexport const ru: I18nTranslations = {\n ui: {\n select: {\n placeholder: 'Выберите...',\n search: 'Поиск...',\n noResults: 'Ничего не найдено.',\n selectAll: 'Выбрать все',\n clearAll: 'Очистить все',\n moreItems: '+{count} ещё',\n loading: 'Загрузка...',\n },\n\n pagination: {\n previous: 'Назад',\n next: 'Вперёд',\n first: 'В начало',\n last: 'В конец',\n page: 'Страница {page}',\n of: 'из {total}',\n showing: '{from}-{to} из {total}',\n },\n\n dialog: {\n close: 'Закрыть',\n confirm: 'Подтвердить',\n cancel: 'Отмена',\n ok: 'ОК',\n yes: 'Да',\n no: 'Нет',\n delete: 'Удалить',\n save: 'Сохранить',\n discard: 'Отменить',\n // Alert dialog\n alertTitle: 'Уведомление',\n // Confirm dialog\n confirmTitle: 'Подтверждение',\n confirmDelete: 'Вы уверены, что хотите удалить?',\n // Prompt dialog\n promptTitle: 'Введите значение',\n promptPlaceholder: 'Введите...',\n },\n\n form: {\n submit: 'Отправить',\n cancel: 'Отмена',\n save: 'Сохранить',\n delete: 'Удалить',\n edit: 'Редактировать',\n create: 'Создать',\n update: 'Обновить',\n reset: 'Сбросить',\n clear: 'Очистить',\n loading: 'Загрузка...',\n saving: 'Сохранение...',\n deleting: 'Удаление...',\n required: 'Обязательное поле',\n optional: 'Необязательно',\n minLength: 'Минимум {min} символов',\n maxLength: 'Максимум {max} символов',\n invalidEmail: 'Введите корректный email',\n invalidUrl: 'Введите корректный URL',\n invalidPhone: 'Введите корректный номер телефона',\n passwordMismatch: 'Пароли не совпадают',\n },\n\n datetime: {\n today: 'Сегодня',\n yesterday: 'Вчера',\n tomorrow: 'Завтра',\n now: 'Только что',\n secondsAgo: '{count} секунд назад',\n minutesAgo: '{count} минут назад',\n hoursAgo: '{count} часов назад',\n daysAgo: '{count} дней назад',\n pickDate: 'Выберите дату',\n pickTime: 'Выберите время',\n pickDateTime: 'Выберите дату и время',\n pickDateRange: 'Выберите период',\n },\n\n file: {\n upload: 'Загрузить',\n uploading: 'Загрузка...',\n dragDrop: 'Перетащите файлы сюда',\n browse: 'Выбрать файлы',\n remove: 'Удалить',\n maxSize: 'Макс. размер: {size}',\n invalidType: 'Неверный тип файла',\n tooLarge: 'Файл слишком большой',\n },\n\n table: {\n noData: 'Нет данных',\n loading: 'Загрузка данных...',\n showing: 'Показано {from}-{to} из {total}',\n rowsPerPage: 'Строк на странице',\n sortAsc: 'Сортировка по возрастанию',\n sortDesc: 'Сортировка по убыванию',\n filter: 'Фильтр',\n clearFilters: 'Сбросить фильтры',\n selectAll: 'Выбрать все',\n deselectAll: 'Снять выделение',\n selected: 'Выбрано: {count}',\n },\n\n actions: {\n view: 'Просмотр',\n copy: 'Копировать',\n copied: 'Скопировано!',\n copyToClipboard: 'Копировать в буфер',\n download: 'Скачать',\n share: 'Поделиться',\n refresh: 'Обновить',\n retry: 'Повторить',\n expand: 'Развернуть',\n collapse: 'Свернуть',\n showMore: 'Показать больше',\n showLess: 'Показать меньше',\n seeAll: 'Смотреть все',\n goBack: 'Назад',\n remove: 'Удалить',\n previousSlide: 'Предыдущий слайд',\n nextSlide: 'Следующий слайд',\n },\n\n phone: {\n searchCountries: 'Поиск стран...',\n noCountries: 'Страны не найдены',\n },\n\n navigation: {\n title: 'Навигация',\n },\n\n states: {\n loading: 'Загрузка',\n empty: 'Пусто',\n error: 'Ошибка',\n success: 'Успешно',\n warning: 'Предупреждение',\n info: 'Информация',\n pending: 'Ожидание',\n active: 'Активно',\n inactive: 'Неактивно',\n enabled: 'Включено',\n disabled: 'Отключено',\n },\n\n errors: {\n generic: 'Что-то пошло не так',\n network: 'Ошибка сети. Проверьте подключение.',\n timeout: 'Время ожидания истекло. Попробуйте ещё раз.',\n notFound: 'Не найдено',\n unauthorized: 'Войдите в аккаунт для продолжения',\n forbidden: 'У вас нет доступа',\n serverError: 'Ошибка сервера. Попробуйте позже.',\n validation: 'Проверьте правильность заполнения формы',\n unknown: 'Произошла неизвестная ошибка',\n },\n },\n\n layouts: {\n sidebar: {\n toggle: 'Переключить боковую панель',\n collapse: 'Свернуть панель',\n expand: 'Развернуть панель',\n },\n\n navigation: {\n menu: 'Меню',\n home: 'Главная',\n back: 'Назад',\n forward: 'Вперёд',\n toggleMobile: 'Открыть мобильное меню',\n breadcrumb: 'Навигация',\n },\n\n profile: {\n settings: 'Настройки',\n account: 'Аккаунт',\n logout: 'Выйти',\n login: 'Войти',\n signUp: 'Регистрация',\n signOut: 'Выйти',\n userMenu: 'Меню пользователя',\n },\n\n theme: {\n toggle: 'Сменить тему',\n light: 'Светлая',\n dark: 'Тёмная',\n system: 'Системная',\n },\n\n search: {\n placeholder: 'Поиск...',\n noResults: 'Ничего не найдено',\n recentSearches: 'Недавние запросы',\n clearHistory: 'Очистить историю',\n },\n\n mobile: {\n closeMenu: 'Закрыть меню',\n },\n\n errors: {\n somethingWentWrong: 'Что-то пошло не так',\n tryRefreshing: 'Произошла непредвиденная ошибка. Попробуйте обновить страницу.',\n refreshPage: 'Обновить страницу',\n goBack: 'Назад',\n goHome: 'На главную',\n needHelp: 'Нужна помощь?',\n contactSupport: 'Связаться с поддержкой',\n persistsContact: 'Если проблема повторяется, свяжитесь с {email}',\n error: 'Ошибка',\n badRequest: 'Неверный запрос',\n authRequired: 'Требуется авторизация',\n accessDenied: 'Доступ запрещён',\n pageNotFound: 'Страница не найдена',\n requestTimeout: 'Время ожидания истекло',\n serverError: 'Ошибка сервера',\n badGateway: 'Ошибка шлюза',\n serviceUnavailable: 'Сервис недоступен',\n gatewayTimeout: 'Время ожидания шлюза истекло',\n badRequestDesc: 'Запрос не может быть обработан. Проверьте введённые данные и попробуйте снова.',\n authRequiredDesc: 'Для доступа к этой странице необходимо войти в систему.',\n accessDeniedDesc: 'У вас нет прав для доступа к этому ресурсу.',\n pageNotFoundDesc: 'Страница, которую вы ищете, не существует или была перемещена.',\n requestTimeoutDesc: 'Обработка запроса заняла слишком много времени. Попробуйте ещё раз.',\n serverErrorDesc: 'Произошла ошибка на сервере. Мы работаем над её исправлением.',\n badGatewayDesc: 'Сервер получил неверный ответ. Попробуйте позже.',\n serviceUnavailableDesc: 'Сервис временно недоступен. Попробуйте позже.',\n gatewayTimeoutDesc: 'Сервер слишком долго отвечает. Попробуйте ещё раз.',\n unknownErrorDesc: 'Произошла непредвиденная ошибка. Попробуйте снова или свяжитесь с поддержкой.',\n },\n\n push: {\n enableNotifications: 'Включить уведомления',\n stayUpdated: 'Получайте важные обновления и оповещения',\n enable: 'Включить',\n notNow: 'Не сейчас',\n dismiss: 'Закрыть',\n },\n\n auth: {\n authRequired: 'Требуется авторизация',\n pleaseSignIn: 'Пожалуйста, войдите для продолжения',\n goToSignIn: 'Перейти к входу',\n\n // Identifier step\n identifier: {\n title: 'Вход',\n subtitle: {\n email: 'Введите email для продолжения',\n phone: 'Введите номер телефона для продолжения',\n },\n placeholder: {\n email: 'email@example.com',\n phone: 'Введите номер телефона',\n },\n button: 'Продолжить',\n oauth: {\n github: 'Войти через GitHub',\n },\n channel: {\n email: 'Email',\n phone: 'Телефон',\n },\n },\n\n // OTP step\n otp: {\n title: 'Введите код',\n subtitle: 'Мы отправили код на',\n button: 'Подтвердить',\n resend: 'Отправить повторно',\n changeEmail: 'Изменить email',\n changePhone: 'Изменить телефон',\n },\n\n // Two-factor step\n twoFactor: {\n title: 'Двухфакторная аутентификация',\n subtitle: {\n totp: 'Введите 6-значный код из приложения-аутентификатора',\n backup: 'Введите один из резервных кодов',\n },\n placeholder: {\n backup: 'XXXXXXXX',\n },\n button: 'Подтвердить',\n toggle: {\n toBackup: 'Использовать резервный код',\n toTotp: 'Использовать приложение',\n },\n },\n\n // 2FA Setup\n setup: {\n loading: {\n title: 'Настройка...',\n button: 'Загрузка',\n },\n qrCode: {\n title: 'Настройка 2FA',\n subtitle: 'Отсканируйте QR-код приложением-аутентификатором',\n manualEntry: 'Не можете сканировать? Введите вручную',\n confirmPrompt: 'Введите 6-значный код для подтверждения',\n button: 'Включить 2FA',\n skip: 'Пропустить',\n },\n complete: {\n title: '2FA включена',\n subtitle: 'Сохраните резервные коды в безопасном месте',\n instruction: 'Каждый код можно использовать только один раз',\n copyAll: 'Копировать все коды',\n copied: 'Скопировано',\n done: 'Готово',\n },\n },\n\n // Success\n success: {\n message: 'Вход выполнен успешно',\n },\n\n // Shared\n terms: {\n agree: 'Я принимаю',\n and: 'и',\n terms: 'Условия',\n privacy: 'Политику конфиденциальности',\n },\n divider: {\n or: 'или',\n },\n footer: {\n terms: 'Условия',\n privacy: 'Конфиденциальность',\n support: 'Поддержка',\n },\n\n // Dev mode\n dev: {\n anyCodeWorks: 'Режим разработки: подойдёт любой код',\n },\n },\n\n chat: {\n aiAssistant: 'AI Ассистент',\n defaultTitle: 'AI Чат',\n newChat: 'Новый чат',\n closeChat: 'Закрыть чат',\n switchToFloating: 'Плавающий режим',\n switchToSidebar: 'Режим боковой панели',\n dragToResize: 'Потяните для изменения размера',\n howCanIHelp: 'Чем могу помочь?',\n },\n\n pwa: {\n addToHomeScreen: 'На главный экран',\n installApp: 'Установить приложение',\n tapToLearnHow: 'Нажмите, чтобы узнать как',\n clickToSeeGuide: 'Нажмите для инструкции',\n tapToInstall: 'Нажмите для установки',\n installing: 'Установка...',\n dismiss: 'Закрыть',\n appLogo: 'Логотип приложения',\n iosTitle: 'На главный экран',\n iosDescription: 'Установите приложение на iPhone для быстрого доступа',\n iosStep1Title: 'Нажмите «Поделиться»',\n iosStep1Desc: 'Внизу экрана Safari',\n iosStep2Title: 'Найдите опцию',\n iosStep2Desc: '«На экран Домой»',\n iosStep3Title: 'Подтвердите',\n iosStep3Desc: 'Нажмите «Добавить» справа вверху',\n gotIt: 'Понятно',\n desktopTitle: 'Установка на компьютер',\n desktopDescription: 'Установите приложение в {browser} для быстрого доступа',\n desktopDescSafari: 'Safari на macOS имеет ограниченную поддержку PWA. Для лучшего опыта используйте Chrome, Edge или Brave.',\n desktopTip: 'Также можно нажать правой кнопкой на странице и найти опцию «Установить» в {browser}',\n desktopFirefoxNote: 'Firefox имеет ограниченную поддержку PWA. Некоторые функции могут работать некорректно.',\n chromiumStep1Title: 'Найдите значок установки',\n chromiumStep1Desc: 'Ищите значок установки в адресной строке (справа)',\n chromiumStep2Title: 'Нажмите «Установить»',\n chromiumStep2Desc: 'Нажмите на значок и выберите «Установить»',\n chromiumStep3Title: 'Подтвердите',\n chromiumStep3Desc: 'Нажмите «Установить» в диалоговом окне',\n firefoxStep1Title: 'Откройте меню',\n firefoxStep1Desc: 'Нажмите кнопку меню (три линии)',\n firefoxStep2Title: 'Найдите опцию установки',\n firefoxStep2Desc: 'Ищите «Установить» или «На главный экран»',\n firefoxStep3Title: 'Подтвердите',\n firefoxStep3Desc: 'Следуйте инструкциям установки',\n safariStep1Title: 'Ограниченная поддержка',\n safariStep1Desc: 'Safari на macOS имеет ограниченную поддержку PWA',\n safariStep2Title: 'Используйте Chromium браузер',\n safariStep2Desc: 'Рекомендуем Chrome, Edge или Brave для полноценного PWA',\n unknownStep1Title: 'Проверьте адресную строку',\n unknownStep1Desc: 'Ищите значок установки или загрузки',\n unknownStep2Title: 'Или используйте меню',\n unknownStep2Desc: 'Проверьте меню браузера на наличие опции установки',\n unknownStep3Title: 'Подтвердите',\n unknownStep3Desc: 'Следуйте инструкциям установки',\n close: 'Закрыть',\n },\n\n profilePage: {\n title: 'Профиль',\n account: 'Аккаунт',\n personalInfo: 'Личные данные',\n work: 'Работа',\n security: 'Безопасность',\n actions: 'Действия',\n email: 'Email',\n firstName: 'Имя',\n lastName: 'Фамилия',\n company: 'Компания',\n position: 'Должность',\n phone: 'Телефон',\n notSet: 'Не указано',\n addFirstName: 'Добавить имя',\n addLastName: 'Добавить фамилию',\n addPhone: 'Добавить телефон',\n addCompany: 'Добавить компанию',\n addPosition: 'Добавить должность',\n on: 'Вкл',\n off: 'Выкл',\n save: 'Сохранить',\n saving: 'Сохранение...',\n cancel: 'Отмена',\n signOut: 'Выйти',\n deleteAccount: 'Удалить аккаунт',\n deleting: 'Удаление...',\n twoFactorAuth: 'Двухфакторная аутентификация',\n twoFactorEnabled: 'Двухфакторная аутентификация включена',\n twoFactorDisabled: 'Добавьте дополнительный уровень защиты',\n enable2FA: 'Включить',\n avatar: 'Аватар',\n changeAvatar: 'Изменить аватар',\n memberSince: 'Участник с {date}',\n enterField: 'Введите {field}',\n profileUpdated: 'Профиль обновлён',\n avatarUpdated: 'Аватар обновлён',\n failedToUpdate: 'Не удалось обновить',\n failedToUploadAvatar: 'Не удалось загрузить аватар',\n selectImageFile: 'Пожалуйста, выберите изображение',\n fileTooLarge: 'Размер файла должен быть меньше 5МБ',\n notAuthenticated: 'Не авторизован',\n pleaseLogIn: 'Пожалуйста, войдите для просмотра профиля.',\n deleteAccountTitle: 'Удаление аккаунта',\n deleteAccountDesc: 'Это действие необратимо. Ваш аккаунт будет удалён навсегда.',\n typeToConfirm: 'Введите {word} для подтверждения:',\n confirmationWord: 'УДАЛИТЬ',\n },\n },\n\n api: {\n errors: {\n networkError: 'Ошибка сети',\n connectionFailed: 'Не удалось подключиться',\n requestTimeout: 'Время ожидания истекло',\n serverUnavailable: 'Сервер недоступен',\n invalidResponse: 'Неверный ответ сервера',\n rateLimited: 'Слишком много запросов. Подождите.',\n },\n status: {\n connecting: 'Подключение...',\n connected: 'Подключено',\n disconnected: 'Отключено',\n reconnecting: 'Переподключение...',\n },\n logout: {\n title: 'Выход',\n message: 'Вы уверены, что хотите выйти?',\n confirm: 'Выйти',\n cancel: 'Отмена',\n },\n },\n\n centrifugo: {\n monitor: {\n title: 'Монитор Centrifugo',\n description: 'Мониторинг и отладка WebSocket в реальном времени',\n openMonitor: 'Открыть монитор Centrifugo',\n openDebugPanel: 'Открыть панель отладки Centrifugo',\n widgetTitle: 'Монитор WebSocket',\n },\n tabs: {\n connection: 'Соединение',\n messages: 'Сообщения',\n subscriptions: 'Подписки',\n },\n subscriptionsList: {\n title: 'Активные подписки',\n notConnected: 'Нет подключения к Centrifugo',\n noActiveSubscriptions: 'Нет активных подписок',\n },\n status: {\n connected: 'Подключено',\n disconnected: 'Отключено',\n connecting: 'Подключение...',\n connect: 'Подключить',\n uptime: 'Время работы:',\n subscriptions: 'Подписки:',\n realtimeUnavailable: 'Функции реального времени недоступны',\n },\n feed: {\n title: 'Лента сообщений',\n noMessages: 'Нет сообщений',\n pausedClickToResume: 'Приостановлено - нажмите для продолжения',\n autoScrollOn: 'Автопрокрутка: ВКЛ',\n autoScrollOff: 'Автопрокрутка: ВЫКЛ',\n viewData: 'Показать данные',\n },\n filters: {\n title: 'Фильтры',\n active: 'Активно',\n clear: 'Очистить',\n searchMessages: 'Поиск сообщений...',\n level: 'Уровень:',\n type: 'Тип:',\n source: 'Источник',\n autoScrollToLatest: 'Автопрокрутка к последним',\n },\n debug: {\n title: 'Отладка Centrifugo',\n description: 'Статус WebSocket соединения, логи и подписки',\n openDebugPanel: 'Открыть панель отладки Centrifugo',\n tabConnection: 'Соединение',\n tabLogs: 'Логи',\n tabSubscriptions: 'Подписки',\n },\n },\n\n tools: {\n code: {\n copyCode: 'Копировать код',\n noContent: 'Контент недоступен',\n },\n\n diagram: {\n title: 'Диаграмма',\n clickToView: 'Нажмите для просмотра',\n },\n\n image: {\n noImage: 'Изображение отсутствует',\n failedToLoad: 'Не удалось загрузить изображение',\n zoomIn: 'Увеличить',\n zoomOut: 'Уменьшить',\n fitToView: 'По размеру окна',\n flipHorizontal: 'Отразить по горизонтали',\n flipVertical: 'Отразить по вертикали',\n rotate: 'Повернуть на 90°',\n fullscreen: 'На весь экран',\n },\n\n gallery: {\n noImages: 'Нет изображений',\n lightbox: 'Просмотр изображения',\n previous: 'Предыдущее изображение',\n next: 'Следующее изображение',\n close: 'Закрыть просмотр',\n download: 'Скачать изображение',\n share: 'Поделиться изображением',\n },\n\n video: {\n play: 'Воспроизвести видео',\n fullscreen: 'Во весь экран',\n unavailable: 'Видео недоступно',\n },\n\n audio: {\n restart: 'Сначала',\n back: 'Назад 5 секунд',\n forward: 'Вперёд 5 секунд',\n volume: 'Громкость',\n },\n\n color: {\n pick: 'Выбрать цвет',\n },\n\n openapi: {\n response: 'Ответ',\n noResponse: 'Тело ответа отсутствует',\n required: 'Обязательно',\n optional: 'Необязательно',\n searchEndpoints: 'Поиск эндпоинтов...',\n all: 'Все',\n methods: 'Методы',\n path: 'Путь',\n description: 'Описание',\n navigation: 'Навигация',\n previous: 'Назад',\n next: 'Вперёд',\n bearerToken: 'Введите Bearer токен (опционально, использует JWT если пусто)',\n },\n\n form: {\n title: 'Форма',\n },\n\n tour: {\n next: 'Далее',\n previous: 'Назад',\n skip: 'Пропустить',\n finish: 'Готово',\n close: 'Закрыть',\n stepOf: 'Шаг {current} из {total}',\n },\n\n upload: {\n dragDrop: 'Перетащите файлы или нажмите для выбора',\n dropHere: 'Отпустите файлы здесь',\n maxSize: 'Макс. {size}МБ на файл',\n uploading: 'Загрузка...',\n uploaded: 'Загружено',\n failed: 'Ошибка',\n retry: 'Повторить',\n remove: 'Удалить',\n cancel: 'Отмена',\n paused: 'Приостановлено',\n pending: 'Ожидание',\n },\n },\n}\n","import type { I18nTranslations } from '../types'\n\n/**\n * Korean translations\n */\nexport const ko: I18nTranslations = {\n ui: {\n select: {\n placeholder: '선택하세요...',\n search: '검색...',\n noResults: '결과가 없습니다.',\n selectAll: '전체 선택',\n clearAll: '전체 해제',\n moreItems: '+{count}개 더',\n loading: '로딩 중...',\n },\n\n pagination: {\n previous: '이전',\n next: '다음',\n first: '처음',\n last: '마지막',\n page: '{page} 페이지',\n of: '/ {total}',\n showing: '{total}개 중 {from}-{to}',\n },\n\n dialog: {\n close: '닫기',\n confirm: '확인',\n cancel: '취소',\n ok: 'OK',\n yes: '예',\n no: '아니오',\n delete: '삭제',\n save: '저장',\n discard: '버리기',\n alertTitle: '알림',\n confirmTitle: '확인',\n confirmDelete: '정말로 삭제하시겠습니까?',\n promptTitle: '입력 필요',\n promptPlaceholder: '값을 입력하세요...',\n },\n\n form: {\n submit: '제출',\n cancel: '취소',\n save: '저장',\n delete: '삭제',\n edit: '수정',\n create: '생성',\n update: '업데이트',\n reset: '초기화',\n clear: '지우기',\n loading: '로딩 중...',\n saving: '저장 중...',\n deleting: '삭제 중...',\n required: '필수 입력 항목입니다',\n optional: '선택 사항',\n minLength: '최소 {min}자 이상 입력하세요',\n maxLength: '최대 {max}자까지 입력 가능합니다',\n invalidEmail: '올바른 이메일 주소를 입력하세요',\n invalidUrl: '올바른 URL을 입력하세요',\n invalidPhone: '올바른 전화번호를 입력하세요',\n passwordMismatch: '비밀번호가 일치하지 않습니다',\n },\n\n datetime: {\n today: '오늘',\n yesterday: '어제',\n tomorrow: '내일',\n now: '방금 전',\n secondsAgo: '{count}초 전',\n minutesAgo: '{count}분 전',\n hoursAgo: '{count}시간 전',\n daysAgo: '{count}일 전',\n pickDate: '날짜 선택',\n pickTime: '시간 선택',\n pickDateTime: '날짜 및 시간 선택',\n pickDateRange: '기간 선택',\n },\n\n file: {\n upload: '업로드',\n uploading: '업로드 중...',\n dragDrop: '파일을 여기에 드래그하세요',\n browse: '파일 찾기',\n remove: '제거',\n maxSize: '최대 크기: {size}',\n invalidType: '지원하지 않는 파일 형식입니다',\n tooLarge: '파일이 너무 큽니다',\n },\n\n table: {\n noData: '데이터가 없습니다',\n loading: '데이터 로딩 중...',\n showing: '{total}개 중 {from}-{to} 표시',\n rowsPerPage: '페이지당 행 수',\n sortAsc: '오름차순 정렬',\n sortDesc: '내림차순 정렬',\n filter: '필터',\n clearFilters: '필터 초기화',\n selectAll: '전체 선택',\n deselectAll: '선택 해제',\n selected: '{count}개 선택됨',\n },\n\n actions: {\n view: '보기',\n copy: '복사',\n copied: '복사됨!',\n copyToClipboard: '클립보드에 복사',\n download: '다운로드',\n share: '공유',\n refresh: '새로고침',\n retry: '재시도',\n expand: '펼치기',\n collapse: '접기',\n showMore: '더 보기',\n showLess: '간략히',\n seeAll: '전체 보기',\n goBack: '뒤로 가기',\n remove: '제거',\n previousSlide: '이전 슬라이드',\n nextSlide: '다음 슬라이드',\n },\n\n phone: {\n searchCountries: '국가 검색...',\n noCountries: '국가를 찾을 수 없습니다',\n },\n\n navigation: {\n title: '탐색',\n },\n\n states: {\n loading: '로딩 중',\n empty: '비어 있음',\n error: '오류',\n success: '성공',\n warning: '경고',\n info: '정보',\n pending: '대기 중',\n active: '활성',\n inactive: '비활성',\n enabled: '활성화됨',\n disabled: '비활성화됨',\n },\n\n errors: {\n generic: '문제가 발생했습니다',\n network: '네트워크 오류. 연결을 확인하세요.',\n timeout: '요청 시간이 초과되었습니다. 다시 시도하세요.',\n notFound: '찾을 수 없습니다',\n unauthorized: '로그인이 필요합니다',\n forbidden: '접근 권한이 없습니다',\n serverError: '서버 오류. 나중에 다시 시도하세요.',\n validation: '입력 내용을 확인하세요',\n unknown: '알 수 없는 오류가 발생했습니다',\n },\n },\n\n layouts: {\n sidebar: {\n toggle: '사이드바 전환',\n collapse: '사이드바 접기',\n expand: '사이드바 펼치기',\n },\n\n navigation: {\n menu: '메뉴',\n home: '홈',\n back: '뒤로',\n forward: '앞으로',\n toggleMobile: '모바일 메뉴 열기',\n breadcrumb: '탐색 경로',\n },\n\n profile: {\n settings: '설정',\n account: '계정',\n logout: '로그아웃',\n login: '로그인',\n signUp: '회원가입',\n signOut: '로그아웃',\n userMenu: '사용자 메뉴',\n },\n\n theme: {\n toggle: '테마 전환',\n light: '라이트',\n dark: '다크',\n system: '시스템',\n },\n\n search: {\n placeholder: '검색...',\n noResults: '검색 결과가 없습니다',\n recentSearches: '최근 검색어',\n clearHistory: '기록 삭제',\n },\n\n mobile: {\n closeMenu: '메뉴 닫기',\n },\n\n errors: {\n somethingWentWrong: '문제가 발생했습니다',\n tryRefreshing: '예상치 못한 오류가 발생했습니다. 페이지를 새로고침해 보세요.',\n refreshPage: '페이지 새로고침',\n goBack: '뒤로 가기',\n goHome: '홈으로 가기',\n needHelp: '도움이 필요하신가요?',\n contactSupport: '지원팀에 문의',\n persistsContact: '문제가 지속되면 {email}로 문의하세요',\n error: '오류',\n badRequest: '잘못된 요청',\n authRequired: '인증 필요',\n accessDenied: '접근 거부',\n pageNotFound: '페이지를 찾을 수 없음',\n requestTimeout: '요청 시간 초과',\n serverError: '서버 오류',\n badGateway: '잘못된 게이트웨이',\n serviceUnavailable: '서비스 이용 불가',\n gatewayTimeout: '게이트웨이 시간 초과',\n badRequestDesc: '요청을 이해할 수 없습니다. 입력 내용을 확인하고 다시 시도하세요.',\n authRequiredDesc: '이 페이지에 접근하려면 로그인이 필요합니다.',\n accessDeniedDesc: '이 리소스에 접근할 권한이 없습니다.',\n pageNotFoundDesc: '찾으시는 페이지가 존재하지 않거나 이동되었습니다.',\n requestTimeoutDesc: '요청 처리 시간이 너무 오래 걸렸습니다. 다시 시도하세요.',\n serverErrorDesc: '서버에서 문제가 발생했습니다. 수정 작업 중입니다.',\n badGatewayDesc: '서버가 잘못된 응답을 받았습니다. 나중에 다시 시도하세요.',\n serviceUnavailableDesc: '서비스를 일시적으로 사용할 수 없습니다. 나중에 다시 시도하세요.',\n gatewayTimeoutDesc: '서버 응답 시간이 너무 오래 걸렸습니다. 다시 시도하세요.',\n unknownErrorDesc: '예상치 못한 오류가 발생했습니다. 다시 시도하거나 지원팀에 문의하세요.',\n },\n\n push: {\n enableNotifications: '알림 활성화',\n stayUpdated: '중요한 업데이트와 알림을 받아보세요',\n enable: '활성화',\n notNow: '나중에',\n dismiss: '닫기',\n },\n\n auth: {\n authRequired: '인증 필요',\n pleaseSignIn: '계속하려면 로그인하세요',\n goToSignIn: '로그인으로 이동',\n\n // Identifier step\n identifier: {\n title: '로그인',\n subtitle: {\n email: '계속하려면 이메일을 입력하세요',\n phone: '계속하려면 전화번호를 입력하세요',\n },\n placeholder: {\n email: 'email@example.com',\n phone: '전화번호 입력',\n },\n button: '계속',\n oauth: {\n github: 'GitHub로 계속',\n },\n channel: {\n email: '이메일',\n phone: '전화',\n },\n },\n\n // OTP step\n otp: {\n title: '코드 입력',\n subtitle: '코드를 전송했습니다:',\n button: '확인',\n resend: '코드 재전송',\n changeEmail: '이메일 변경',\n changePhone: '전화번호 변경',\n },\n\n // Two-factor step\n twoFactor: {\n title: '2단계 인증',\n subtitle: {\n totp: '인증 앱의 6자리 코드를 입력하세요',\n backup: '백업 코드 중 하나를 입력하세요',\n },\n placeholder: {\n backup: 'XXXXXXXX',\n },\n button: '확인',\n toggle: {\n toBackup: '백업 코드 사용',\n toTotp: '인증 앱 사용',\n },\n },\n\n // 2FA Setup\n setup: {\n loading: {\n title: '설정 중...',\n button: '로딩',\n },\n qrCode: {\n title: '2FA 설정',\n subtitle: '인증 앱으로 QR 코드를 스캔하세요',\n manualEntry: '스캔이 안 되나요? 수동으로 입력하세요',\n confirmPrompt: '확인을 위해 6자리 코드를 입력하세요',\n button: '2FA 활성화',\n skip: '나중에',\n },\n complete: {\n title: '2FA 활성화됨',\n subtitle: '백업 코드를 안전하게 보관하세요',\n instruction: '각 코드는 한 번만 사용할 수 있습니다',\n copyAll: '모든 코드 복사',\n copied: '복사됨',\n done: '완료',\n },\n },\n\n // Success\n success: {\n message: '로그인 성공',\n },\n\n // Shared\n terms: {\n agree: '동의합니다:',\n and: '및',\n terms: '이용약관',\n privacy: '개인정보처리방침',\n },\n divider: {\n or: '또는',\n },\n footer: {\n terms: '이용약관',\n privacy: '개인정보',\n support: '지원',\n },\n\n // Dev mode\n dev: {\n anyCodeWorks: '개발 모드: 아무 코드나 사용 가능',\n },\n },\n\n chat: {\n aiAssistant: 'AI 어시스턴트',\n defaultTitle: 'AI 채팅',\n newChat: '새 채팅',\n closeChat: '채팅 닫기',\n switchToFloating: '플로팅 모드로 전환',\n switchToSidebar: '사이드바 모드로 전환',\n dragToResize: '드래그하여 크기 조절',\n howCanIHelp: '무엇을 도와드릴까요?',\n },\n\n pwa: {\n addToHomeScreen: '홈 화면에 추가',\n installApp: '앱 설치',\n tapToLearnHow: '탭하여 방법 알아보기',\n clickToSeeGuide: '클릭하여 가이드 보기',\n tapToInstall: '탭하여 설치',\n installing: '설치 중...',\n dismiss: '닫기',\n appLogo: '앱 로고',\n iosTitle: '홈 화면에 추가',\n iosDescription: '빠른 접근과 더 나은 경험을 위해 iPhone에 앱을 설치하세요',\n iosStep1Title: '공유 탭',\n iosStep1Desc: 'Safari 하단에서',\n iosStep2Title: '스크롤 & 탭',\n iosStep2Desc: '\"홈 화면에 추가\"',\n iosStep3Title: '확인',\n iosStep3Desc: '오른쪽 상단의 \"추가\" 탭',\n gotIt: '알겠습니다',\n desktopTitle: '데스크톱에 앱 설치',\n desktopDescription: '{browser}에서 빠른 접근을 위해 앱을 설치하세요',\n desktopDescSafari: 'macOS의 Safari는 PWA 지원이 제한적입니다. 최상의 경험을 위해 Chrome, Edge 또는 Brave를 사용하세요.',\n desktopTip: '{browser}에서 페이지를 우클릭하여 \"설치\" 옵션을 찾을 수도 있습니다',\n desktopFirefoxNote: 'Firefox는 PWA 지원이 제한적입니다. 일부 기능이 예상대로 작동하지 않을 수 있습니다.',\n chromiumStep1Title: '설치 아이콘 찾기',\n chromiumStep1Desc: '주소 표시줄 오른쪽의 설치 아이콘을 찾으세요',\n chromiumStep2Title: '설치 클릭',\n chromiumStep2Desc: '아이콘을 클릭하고 \"설치\"를 선택하세요',\n chromiumStep3Title: '확인',\n chromiumStep3Desc: '팝업 대화상자에서 \"설치\"를 클릭하세요',\n firefoxStep1Title: '메뉴 열기',\n firefoxStep1Desc: '메뉴 버튼(세 줄)을 클릭하세요',\n firefoxStep2Title: '설치 옵션 찾기',\n firefoxStep2Desc: '\"설치\" 또는 \"홈 화면에 추가\"를 찾으세요',\n firefoxStep3Title: '확인',\n firefoxStep3Desc: '설치 안내를 따르세요',\n safariStep1Title: '제한된 지원',\n safariStep1Desc: 'macOS의 Safari는 PWA 지원이 제한적입니다',\n safariStep2Title: 'Chromium 브라우저 사용',\n safariStep2Desc: '완전한 PWA 경험을 위해 Chrome, Edge 또는 Brave를 사용하세요',\n unknownStep1Title: '주소 표시줄 확인',\n unknownStep1Desc: '설치 또는 다운로드 아이콘을 찾으세요',\n unknownStep2Title: '또는 메뉴 사용',\n unknownStep2Desc: '브라우저 메뉴에서 설치 옵션을 확인하세요',\n unknownStep3Title: '확인',\n unknownStep3Desc: '설치 안내를 따르세요',\n close: '닫기',\n },\n\n profilePage: {\n title: '프로필',\n account: '계정',\n personalInfo: '개인 정보',\n work: '직장',\n security: '보안',\n actions: '작업',\n email: '이메일',\n firstName: '이름',\n lastName: '성',\n company: '회사',\n position: '직책',\n phone: '전화번호',\n notSet: '설정 안 됨',\n addFirstName: '이름 추가',\n addLastName: '성 추가',\n addPhone: '전화번호 추가',\n addCompany: '회사 추가',\n addPosition: '직책 추가',\n on: '켜짐',\n off: '꺼짐',\n save: '저장',\n saving: '저장 중...',\n cancel: '취소',\n signOut: '로그아웃',\n deleteAccount: '계정 삭제',\n deleting: '삭제 중...',\n twoFactorAuth: '2단계 인증',\n twoFactorEnabled: '2단계 인증이 활성화되었습니다',\n twoFactorDisabled: '추가 보안 계층 추가',\n enable2FA: '활성화',\n avatar: '아바타',\n changeAvatar: '아바타 변경',\n memberSince: '{date}부터 회원',\n enterField: '{field} 입력',\n profileUpdated: '프로필이 업데이트되었습니다',\n avatarUpdated: '아바타가 업데이트되었습니다',\n failedToUpdate: '업데이트 실패',\n failedToUploadAvatar: '아바타 업로드 실패',\n selectImageFile: '이미지 파일을 선택하세요',\n fileTooLarge: '파일 크기는 5MB 미만이어야 합니다',\n notAuthenticated: '인증되지 않음',\n pleaseLogIn: '프로필을 보려면 로그인하세요.',\n deleteAccountTitle: '계정 삭제',\n deleteAccountDesc: '이 작업은 되돌릴 수 없습니다. 계정이 영구적으로 삭제됩니다.',\n typeToConfirm: '확인하려면 {word}을(를) 입력하세요:',\n confirmationWord: '삭제',\n },\n },\n\n api: {\n errors: {\n networkError: '네트워크 오류',\n connectionFailed: '연결 실패',\n requestTimeout: '요청 시간 초과',\n serverUnavailable: '서버를 사용할 수 없습니다',\n invalidResponse: '잘못된 서버 응답',\n rateLimited: '요청이 너무 많습니다. 잠시 후 다시 시도하세요.',\n },\n status: {\n connecting: '연결 중...',\n connected: '연결됨',\n disconnected: '연결 끊김',\n reconnecting: '재연결 중...',\n },\n logout: {\n title: '로그아웃',\n message: '로그아웃 하시겠습니까?',\n confirm: '로그아웃',\n cancel: '취소',\n },\n },\n\n centrifugo: {\n monitor: {\n title: 'Centrifugo 모니터',\n description: '실시간 WebSocket 모니터링 및 디버깅',\n openMonitor: 'Centrifugo 모니터 열기',\n openDebugPanel: 'Centrifugo 디버그 패널 열기',\n widgetTitle: 'WebSocket 모니터',\n },\n tabs: {\n connection: '연결',\n messages: '메시지',\n subscriptions: '구독',\n },\n subscriptionsList: {\n title: '활성 구독',\n notConnected: 'Centrifugo에 연결되지 않음',\n noActiveSubscriptions: '활성 구독 없음',\n },\n status: {\n connected: '연결됨',\n disconnected: '연결 끊김',\n connecting: '연결 중...',\n connect: '연결',\n uptime: '가동 시간:',\n subscriptions: '구독:',\n realtimeUnavailable: '실시간 기능을 사용할 수 없습니다',\n },\n feed: {\n title: '메시지 피드',\n noMessages: '메시지 없음',\n pausedClickToResume: '일시 중지됨 - 재생하려면 클릭',\n autoScrollOn: '자동 스크롤: 켜짐',\n autoScrollOff: '자동 스크롤: 꺼짐',\n viewData: '데이터 보기',\n },\n filters: {\n title: '필터',\n active: '활성',\n clear: '지우기',\n searchMessages: '메시지 검색...',\n level: '레벨:',\n type: '유형:',\n source: '소스',\n autoScrollToLatest: '최신 항목으로 자동 스크롤',\n },\n debug: {\n title: 'Centrifugo 디버그',\n description: 'WebSocket 연결 상태, 로그 및 구독',\n openDebugPanel: 'Centrifugo 디버그 패널 열기',\n tabConnection: '연결',\n tabLogs: '로그',\n tabSubscriptions: '구독',\n },\n },\n\n tools: {\n code: {\n copyCode: '코드 복사',\n noContent: '콘텐츠 없음',\n },\n\n diagram: {\n title: '다이어그램',\n clickToView: '전체 화면으로 보려면 클릭',\n },\n\n image: {\n noImage: '이미지 없음',\n failedToLoad: '이미지 로드 실패',\n zoomIn: '확대',\n zoomOut: '축소',\n fitToView: '화면에 맞춤',\n flipHorizontal: '좌우 반전',\n flipVertical: '상하 반전',\n rotate: '90° 회전',\n fullscreen: '전체 화면',\n },\n\n gallery: {\n noImages: '이미지가 없습니다',\n lightbox: '이미지 뷰어',\n previous: '이전 이미지',\n next: '다음 이미지',\n close: '뷰어 닫기',\n download: '이미지 다운로드',\n share: '이미지 공유',\n },\n\n video: {\n play: '비디오 재생',\n fullscreen: '전체 화면',\n unavailable: '비디오를 사용할 수 없습니다',\n },\n\n audio: {\n restart: '처음부터',\n back: '5초 뒤로',\n forward: '5초 앞으로',\n volume: '음량',\n },\n\n color: {\n pick: '색상 선택',\n },\n\n openapi: {\n response: '응답',\n noResponse: '응답 본문 없음',\n required: '필수',\n optional: '선택',\n searchEndpoints: '엔드포인트 검색...',\n all: '전체',\n methods: '메서드',\n path: '경로',\n description: '설명',\n navigation: '탐색',\n previous: '이전',\n next: '다음',\n bearerToken: 'Bearer 토큰 입력 (선택사항, 비어있으면 JWT 사용)',\n },\n\n\n tour: {\n next: '다음',\n previous: '이전',\n skip: '건너뛰기',\n finish: '완료',\n close: '닫기',\n stepOf: '{total}단계 중 {current}단계',\n },\n\n upload: {\n dragDrop: '파일을 드래그하거나 클릭하여 선택',\n dropHere: '여기에 파일을 놓으세요',\n maxSize: '파일당 최대 {size}MB',\n uploading: '업로드 중...',\n uploaded: '업로드 완료',\n failed: '실패',\n retry: '재시도',\n remove: '삭제',\n cancel: '취소',\n paused: '일시정지',\n pending: '대기 중',\n },\n form: {\n title: '폼',\n },\n },\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/locales/en.ts","../src/utils/interpolate.ts","../src/utils/merge.ts","../src/utils/get-value.ts","../src/context.tsx","../src/locales/ru.ts","../src/locales/ko.ts","../src/index.ts"],"names":["value"],"mappings":"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","file":"index.mjs","sourcesContent":["import type { I18nTranslations } from '../types'\n\n/**\n * English translations (default)\n */\nexport const en: I18nTranslations = {\n ui: {\n select: {\n placeholder: 'Select option...',\n search: 'Search...',\n noResults: 'No results found.',\n selectAll: 'Select all',\n clearAll: 'Clear all',\n moreItems: '+{count} more',\n loading: 'Loading...',\n },\n\n pagination: {\n previous: 'Previous',\n next: 'Next',\n first: 'First',\n last: 'Last',\n page: 'Page {page}',\n of: 'of {total}',\n showing: '{from}-{to} of {total}',\n },\n\n dialog: {\n close: 'Close',\n confirm: 'Confirm',\n cancel: 'Cancel',\n ok: 'OK',\n yes: 'Yes',\n no: 'No',\n delete: 'Delete',\n save: 'Save',\n discard: 'Discard',\n // Alert dialog\n alertTitle: 'Notice',\n // Confirm dialog\n confirmTitle: 'Confirm',\n confirmDelete: 'Are you sure you want to delete this?',\n // Prompt dialog\n promptTitle: 'Input Required',\n promptPlaceholder: 'Enter value...',\n },\n\n form: {\n submit: 'Submit',\n cancel: 'Cancel',\n save: 'Save',\n delete: 'Delete',\n edit: 'Edit',\n create: 'Create',\n update: 'Update',\n reset: 'Reset',\n clear: 'Clear',\n loading: 'Loading...',\n saving: 'Saving...',\n deleting: 'Deleting...',\n required: 'This field is required',\n optional: 'Optional',\n minLength: '{min} characters minimum',\n maxLength: '{max} characters maximum',\n invalidEmail: 'Please enter a valid email address',\n invalidUrl: 'Please enter a valid URL',\n invalidPhone: 'Please enter a valid phone number',\n passwordMismatch: 'Passwords do not match',\n },\n\n datetime: {\n today: 'Today',\n yesterday: 'Yesterday',\n tomorrow: 'Tomorrow',\n now: 'Just now',\n secondsAgo: '{count} seconds ago',\n minutesAgo: '{count} minutes ago',\n hoursAgo: '{count} hours ago',\n daysAgo: '{count} days ago',\n pickDate: 'Pick a date',\n pickTime: 'Pick a time',\n pickDateTime: 'Pick date and time',\n pickDateRange: 'Pick a date range',\n },\n\n file: {\n upload: 'Upload',\n uploading: 'Uploading...',\n dragDrop: 'Drag and drop files here',\n browse: 'Browse files',\n remove: 'Remove',\n maxSize: 'Max size: {size}',\n invalidType: 'Invalid file type',\n tooLarge: 'File is too large',\n },\n\n table: {\n noData: 'No data available',\n loading: 'Loading data...',\n showing: 'Showing {from}-{to} of {total}',\n rowsPerPage: 'Rows per page',\n sortAsc: 'Sort ascending',\n sortDesc: 'Sort descending',\n filter: 'Filter',\n clearFilters: 'Clear filters',\n selectAll: 'Select all',\n deselectAll: 'Deselect all',\n selected: '{count} selected',\n },\n\n actions: {\n view: 'View',\n copy: 'Copy',\n copied: 'Copied!',\n copyToClipboard: 'Copy to clipboard',\n download: 'Download',\n share: 'Share',\n refresh: 'Refresh',\n retry: 'Retry',\n expand: 'Expand',\n collapse: 'Collapse',\n showMore: 'Show more',\n showLess: 'Show less',\n seeAll: 'See all',\n goBack: 'Go back',\n remove: 'Remove',\n previousSlide: 'Previous slide',\n nextSlide: 'Next slide',\n },\n\n phone: {\n searchCountries: 'Search countries...',\n noCountries: 'No countries found',\n },\n\n navigation: {\n title: 'Navigation',\n },\n\n states: {\n loading: 'Loading',\n empty: 'Empty',\n error: 'Error',\n success: 'Success',\n warning: 'Warning',\n info: 'Info',\n pending: 'Pending',\n active: 'Active',\n inactive: 'Inactive',\n enabled: 'Enabled',\n disabled: 'Disabled',\n },\n\n errors: {\n generic: 'Something went wrong',\n network: 'Network error. Please check your connection.',\n timeout: 'Request timed out. Please try again.',\n notFound: 'Not found',\n unauthorized: 'Please sign in to continue',\n forbidden: 'You do not have permission to access this',\n serverError: 'Server error. Please try again later.',\n validation: 'Please check the form for errors',\n unknown: 'An unknown error occurred',\n },\n },\n\n layouts: {\n sidebar: {\n toggle: 'Toggle sidebar',\n collapse: 'Collapse sidebar',\n expand: 'Expand sidebar',\n },\n\n navigation: {\n menu: 'Menu',\n home: 'Home',\n back: 'Back',\n forward: 'Forward',\n toggleMobile: 'Toggle mobile menu',\n breadcrumb: 'Breadcrumb',\n },\n\n profile: {\n settings: 'Settings',\n account: 'Account',\n logout: 'Log out',\n login: 'Log in',\n signUp: 'Sign up',\n signOut: 'Sign Out',\n userMenu: 'User menu',\n },\n\n theme: {\n toggle: 'Toggle theme',\n light: 'Light',\n dark: 'Dark',\n system: 'System',\n },\n\n search: {\n placeholder: 'Search...',\n noResults: 'No results found',\n recentSearches: 'Recent searches',\n clearHistory: 'Clear history',\n },\n\n mobile: {\n closeMenu: 'Close menu',\n },\n\n errors: {\n somethingWentWrong: 'Something went wrong',\n tryRefreshing: \"We're sorry, but something unexpected happened. Please try refreshing the page.\",\n refreshPage: 'Refresh Page',\n goBack: 'Go Back',\n goHome: 'Go Home',\n needHelp: 'Need help?',\n contactSupport: 'Contact support',\n persistsContact: 'If the problem persists, please contact {email}',\n error: 'Error',\n badRequest: 'Bad Request',\n authRequired: 'Authentication Required',\n accessDenied: 'Access Denied',\n pageNotFound: 'Page Not Found',\n requestTimeout: 'Request Timeout',\n serverError: 'Server Error',\n badGateway: 'Bad Gateway',\n serviceUnavailable: 'Service Unavailable',\n gatewayTimeout: 'Gateway Timeout',\n badRequestDesc: 'The request could not be understood. Please check your input and try again.',\n authRequiredDesc: 'You need to sign in to access this page.',\n accessDeniedDesc: \"You don't have permission to access this resource.\",\n pageNotFoundDesc: \"The page you're looking for doesn't exist or has been moved.\",\n requestTimeoutDesc: 'The request took too long to process. Please try again.',\n serverErrorDesc: \"Something went wrong on our end. We're working to fix it.\",\n badGatewayDesc: 'The server received an invalid response. Please try again later.',\n serviceUnavailableDesc: 'The service is temporarily unavailable. Please try again later.',\n gatewayTimeoutDesc: 'The server took too long to respond. Please try again.',\n unknownErrorDesc: 'An unexpected error occurred. Please try again or contact support.',\n },\n\n push: {\n enableNotifications: 'Enable notifications',\n stayUpdated: 'Stay updated with important updates and alerts',\n enable: 'Enable',\n notNow: 'Not now',\n dismiss: 'Dismiss',\n },\n\n auth: {\n authRequired: 'Authentication Required',\n pleaseSignIn: 'Please sign in to continue',\n goToSignIn: 'Go to Sign In',\n\n // Identifier step\n identifier: {\n title: 'Sign in',\n subtitle: {\n email: 'Enter your email to continue',\n phone: 'Enter your phone number to continue',\n },\n placeholder: {\n email: 'email@example.com',\n phone: 'Enter your phone number',\n },\n button: 'Continue',\n oauth: {\n github: 'Continue with GitHub',\n },\n channel: {\n email: 'Email',\n phone: 'Phone',\n },\n },\n\n // OTP step\n otp: {\n title: 'Enter code',\n subtitle: 'We sent a code to',\n button: 'Verify',\n resend: 'Resend code',\n changeEmail: 'Change email',\n changePhone: 'Change phone',\n },\n\n // Two-factor step\n twoFactor: {\n title: 'Two-factor authentication',\n subtitle: {\n totp: 'Enter the 6-digit code from your authenticator',\n backup: 'Enter one of your backup codes',\n },\n placeholder: {\n backup: 'XXXXXXXX',\n },\n button: 'Verify',\n toggle: {\n toBackup: 'Use backup code',\n toTotp: 'Use authenticator app',\n },\n },\n\n // 2FA Setup\n setup: {\n loading: {\n title: 'Setting up...',\n button: 'Loading',\n },\n qrCode: {\n title: 'Set up 2FA',\n subtitle: 'Scan this QR code with your authenticator app',\n manualEntry: \"Can't scan? Enter manually\",\n confirmPrompt: 'Enter the 6-digit code to confirm',\n button: 'Enable 2FA',\n skip: 'Skip for now',\n },\n complete: {\n title: '2FA enabled',\n subtitle: 'Save these backup codes securely',\n instruction: 'Each code can only be used once',\n copyAll: 'Copy all codes',\n copied: 'Copied',\n done: 'Done',\n },\n },\n\n // Success\n success: {\n message: 'Signed in successfully',\n },\n\n // Shared\n terms: {\n agree: 'I agree to the',\n and: 'and',\n terms: 'Terms',\n privacy: 'Privacy Policy',\n },\n divider: {\n or: 'or',\n },\n footer: {\n terms: 'Terms',\n privacy: 'Privacy',\n support: 'Support',\n },\n\n // Dev mode\n dev: {\n anyCodeWorks: 'Dev Mode: Any code works',\n },\n },\n\n chat: {\n aiAssistant: 'AI Assistant',\n defaultTitle: 'AI Chat',\n newChat: 'New chat',\n closeChat: 'Close chat',\n switchToFloating: 'Switch to floating mode',\n switchToSidebar: 'Switch to sidebar mode',\n dragToResize: 'Drag to resize',\n howCanIHelp: 'How can I help?',\n },\n\n pwa: {\n addToHomeScreen: 'Add to Home Screen',\n installApp: 'Install App',\n tapToLearnHow: 'Tap to learn how',\n clickToSeeGuide: 'Click to see desktop guide',\n tapToInstall: 'Tap to install',\n installing: 'Installing...',\n dismiss: 'Dismiss',\n appLogo: 'App logo',\n iosTitle: 'Add to Home Screen',\n iosDescription: 'Install this app on your iPhone for quick access and a better experience',\n iosStep1Title: 'Tap Share',\n iosStep1Desc: 'At the bottom of Safari',\n iosStep2Title: 'Scroll & Tap',\n iosStep2Desc: '\"Add to Home Screen\"',\n iosStep3Title: 'Confirm',\n iosStep3Desc: 'Tap \"Add\" in top-right',\n gotIt: 'Got It',\n desktopTitle: 'Install App on Desktop',\n desktopDescription: 'Install this app on {browser} for quick access from your desktop',\n desktopDescSafari: 'Safari on macOS has limited PWA support. For the best experience, use Chrome, Edge, or Brave.',\n desktopTip: 'You can also right-click the page and look for \"Install\" option in {browser}',\n desktopFirefoxNote: 'Firefox has limited PWA support. Some features may not work as expected.',\n chromiumStep1Title: 'Find Install Icon',\n chromiumStep1Desc: 'Look for install icon in address bar (right side)',\n chromiumStep2Title: 'Click Install',\n chromiumStep2Desc: 'Click the icon and select \"Install\"',\n chromiumStep3Title: 'Confirm',\n chromiumStep3Desc: 'Click \"Install\" in the popup dialog',\n firefoxStep1Title: 'Open Menu',\n firefoxStep1Desc: 'Click the menu button (three lines)',\n firefoxStep2Title: 'Find Install Option',\n firefoxStep2Desc: 'Look for \"Install\" or \"Add to Home Screen\"',\n firefoxStep3Title: 'Confirm',\n firefoxStep3Desc: 'Follow the installation prompts',\n safariStep1Title: 'Limited Support',\n safariStep1Desc: 'Safari on macOS has limited PWA support',\n safariStep2Title: 'Use Chromium Browser',\n safariStep2Desc: 'Consider using Chrome, Edge, or Brave for full PWA experience',\n unknownStep1Title: 'Check Address Bar',\n unknownStep1Desc: 'Look for an install or download icon',\n unknownStep2Title: 'Or Use Menu',\n unknownStep2Desc: 'Check browser menu for install option',\n unknownStep3Title: 'Confirm',\n unknownStep3Desc: 'Follow the installation prompts',\n close: 'Close',\n },\n\n profilePage: {\n title: 'Profile',\n account: 'Account',\n personalInfo: 'Personal Information',\n work: 'Work',\n security: 'Security',\n actions: 'Actions',\n email: 'Email',\n firstName: 'First Name',\n lastName: 'Last Name',\n company: 'Company',\n position: 'Position',\n phone: 'Phone',\n notSet: 'Not set',\n addFirstName: 'Add first name',\n addLastName: 'Add last name',\n addPhone: 'Add phone number',\n addCompany: 'Add company',\n addPosition: 'Add position',\n on: 'On',\n off: 'Off',\n save: 'Save',\n saving: 'Saving...',\n cancel: 'Cancel',\n signOut: 'Sign Out',\n deleteAccount: 'Delete Account',\n deleting: 'Deleting...',\n twoFactorAuth: 'Two-Factor Authentication',\n twoFactorEnabled: 'Two-factor authentication is enabled',\n twoFactorDisabled: 'Add an extra layer of security',\n enable2FA: 'Enable',\n avatar: 'Avatar',\n changeAvatar: 'Change avatar',\n memberSince: 'Member since {date}',\n enterField: 'Enter {field}',\n profileUpdated: 'Profile updated',\n avatarUpdated: 'Avatar updated',\n failedToUpdate: 'Failed to update',\n failedToUploadAvatar: 'Failed to upload avatar',\n selectImageFile: 'Please select an image file',\n fileTooLarge: 'File size must be less than 5MB',\n notAuthenticated: 'Not Authenticated',\n pleaseLogIn: 'Please log in to view your profile.',\n deleteAccountTitle: 'Delete Account',\n deleteAccountDesc: 'This action cannot be undone. Your account will be permanently deleted.',\n typeToConfirm: 'Type {word} to confirm:',\n confirmationWord: 'DELETE',\n },\n },\n\n api: {\n errors: {\n networkError: 'Network error',\n connectionFailed: 'Connection failed',\n requestTimeout: 'Request timed out',\n serverUnavailable: 'Server is unavailable',\n invalidResponse: 'Invalid response from server',\n rateLimited: 'Too many requests. Please wait.',\n },\n status: {\n connecting: 'Connecting...',\n connected: 'Connected',\n disconnected: 'Disconnected',\n reconnecting: 'Reconnecting...',\n },\n logout: {\n title: 'Logout',\n message: 'Are you sure you want to logout?',\n confirm: 'Logout',\n cancel: 'Cancel',\n },\n },\n\n centrifugo: {\n monitor: {\n title: 'Centrifugo Monitor',\n description: 'Real-time WebSocket monitoring and debugging',\n openMonitor: 'Open Centrifugo Monitor',\n openDebugPanel: 'Open Centrifugo Debug Panel',\n widgetTitle: 'WebSocket Monitor',\n },\n tabs: {\n connection: 'Connection',\n messages: 'Messages',\n subscriptions: 'Subscriptions',\n },\n subscriptionsList: {\n title: 'Active Subscriptions',\n notConnected: 'Not connected to Centrifugo',\n noActiveSubscriptions: 'No active subscriptions',\n },\n status: {\n connected: 'Connected',\n disconnected: 'Disconnected',\n connecting: 'Connecting...',\n connect: 'Connect',\n uptime: 'Uptime:',\n subscriptions: 'Subscriptions:',\n realtimeUnavailable: 'Real-time features unavailable',\n },\n feed: {\n title: 'Messages Feed',\n noMessages: 'No messages yet',\n pausedClickToResume: 'Paused - Click play to resume',\n autoScrollOn: 'Auto-scroll: ON',\n autoScrollOff: 'Auto-scroll: OFF',\n viewData: 'View data',\n },\n filters: {\n title: 'Filters',\n active: 'Active',\n clear: 'Clear',\n searchMessages: 'Search messages...',\n level: 'Level:',\n type: 'Type:',\n source: 'Source',\n autoScrollToLatest: 'Auto-scroll to latest',\n },\n debug: {\n title: 'Centrifugo Debug',\n description: 'WebSocket connection status, logs, and subscriptions',\n openDebugPanel: 'Open Centrifugo Debug Panel',\n tabConnection: 'Connection',\n tabLogs: 'Logs',\n tabSubscriptions: 'Subscriptions',\n },\n },\n\n tools: {\n code: {\n copyCode: 'Copy code',\n noContent: 'No content available',\n },\n\n diagram: {\n title: 'Diagram',\n clickToView: 'Click to view fullscreen',\n },\n\n image: {\n noImage: 'No image content',\n failedToLoad: 'Failed to load image',\n zoomIn: 'Zoom in',\n zoomOut: 'Zoom out',\n fitToView: 'Fit to view',\n flipHorizontal: 'Flip horizontal',\n flipVertical: 'Flip vertical',\n rotate: 'Rotate 90°',\n fullscreen: 'Open in fullscreen',\n },\n\n gallery: {\n noImages: 'No images available',\n lightbox: 'Image lightbox',\n previous: 'Previous image',\n next: 'Next image',\n close: 'Close lightbox',\n download: 'Download image',\n share: 'Share image',\n },\n\n video: {\n play: 'Play video',\n fullscreen: 'Fullscreen',\n unavailable: 'Video unavailable',\n },\n\n audio: {\n restart: 'Restart',\n back: 'Back 5 seconds',\n forward: 'Forward 5 seconds',\n volume: 'Volume',\n },\n\n color: {\n pick: 'Pick color',\n },\n\n openapi: {\n response: 'Response',\n noResponse: 'No response body available',\n required: 'Required',\n optional: 'Optional',\n searchEndpoints: 'Search endpoints...',\n all: 'All',\n methods: 'Methods',\n path: 'Path',\n description: 'Description',\n navigation: 'Navigation',\n previous: 'Previous',\n next: 'Next',\n bearerToken: 'Enter Bearer token (optional, uses JWT if empty)',\n },\n\n form: {\n title: 'Form',\n },\n\n tour: {\n next: 'Next',\n previous: 'Back',\n skip: 'Skip',\n finish: 'Finish',\n close: 'Close',\n stepOf: 'Step {current} of {total}',\n },\n\n upload: {\n dragDrop: 'Drag & drop files or click to browse',\n dropHere: 'Drop files here',\n maxSize: 'Max {size}MB per file',\n uploading: 'Uploading...',\n uploaded: 'Uploaded',\n failed: 'Failed',\n retry: 'Retry',\n remove: 'Remove',\n cancel: 'Cancel',\n paused: 'Paused',\n pending: 'Pending',\n },\n },\n}\n","/**\n * Interpolate variables in a translation string\n *\n * @example\n * interpolate(\"Hello, {name}!\", { name: \"World\" })\n * // => \"Hello, World!\"\n *\n * interpolate(\"+{count} more\", { count: 5 })\n * // => \"+5 more\"\n */\nexport function interpolate(\n template: string,\n params?: Record<string, string | number>\n): string {\n if (!params) return template\n\n return template.replace(/\\{(\\w+)\\}/g, (match, key) => {\n if (key in params) {\n return String(params[key])\n }\n return match\n })\n}\n","import type { I18nTranslations, PartialTranslations } from '../types'\n\ntype AnyObject = { [key: string]: unknown }\n\n/**\n * Deep merge two objects\n */\nfunction deepMerge(target: AnyObject, source: AnyObject): AnyObject {\n const result = { ...target }\n\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n const sourceValue = source[key]\n const targetValue = result[key]\n\n if (\n sourceValue !== null &&\n typeof sourceValue === 'object' &&\n !Array.isArray(sourceValue) &&\n targetValue !== null &&\n typeof targetValue === 'object' &&\n !Array.isArray(targetValue)\n ) {\n // Recursively merge objects\n result[key] = deepMerge(\n targetValue as AnyObject,\n sourceValue as AnyObject\n )\n } else if (sourceValue !== undefined) {\n // Override with source value\n result[key] = sourceValue\n }\n }\n }\n\n return result\n}\n\n/**\n * Merge base translations with partial overrides or additional namespaces\n *\n * @example\n * // Override existing keys\n * const customRu = mergeTranslations(ru, {\n * ui: {\n * select: {\n * placeholder: 'Выберите марку авто...'\n * }\n * }\n * })\n *\n * @example\n * // Add app-specific namespace\n * const appTranslations = mergeTranslations(en, {\n * hub: {\n * nav: { home: 'Home' }\n * }\n * })\n */\nexport function mergeTranslations<T extends Record<string, unknown> = Record<string, unknown>>(\n base: I18nTranslations,\n overrides: PartialTranslations | T\n): I18nTranslations & T {\n return deepMerge(\n base as unknown as AnyObject,\n overrides as unknown as AnyObject\n ) as unknown as I18nTranslations & T\n}\n\n/**\n * Create translations from multiple partial sources\n *\n * @example\n * const translations = createTranslations(\n * en, // base\n * uiOverrides, // UI customizations\n * appStrings // App-specific strings\n * )\n */\nexport function createTranslations(\n base: I18nTranslations,\n ...overrides: PartialTranslations[]\n): I18nTranslations {\n return overrides.reduce<I18nTranslations>(\n (acc, override) => mergeTranslations(acc, override),\n base\n )\n}\n","/**\n * Get a nested value from an object using dot notation\n *\n * @example\n * getNestedValue({ ui: { select: { placeholder: 'Select...' } } }, 'ui.select.placeholder')\n * // => 'Select...'\n */\nexport function getNestedValue(\n obj: Record<string, unknown>,\n path: string\n): string | undefined {\n const keys = path.split('.')\n let current: unknown = obj\n\n for (const key of keys) {\n if (current === null || current === undefined) {\n return undefined\n }\n if (typeof current !== 'object') {\n return undefined\n }\n current = (current as Record<string, unknown>)[key]\n }\n\n if (typeof current === 'string') {\n return current\n }\n\n return undefined\n}\n","'use client'\n\nimport * as React from 'react'\n\nimport { en } from './locales/en'\nimport type {\n I18nContextValue,\n I18nProviderProps,\n I18nTranslations,\n LocaleCode,\n} from './types'\nimport { getNestedValue, interpolate, mergeTranslations } from './utils'\n\n/**\n * I18n Context\n */\nconst I18nContext = React.createContext<I18nContextValue | null>(null)\n\n/**\n * Default translations (English)\n */\nconst defaultTranslations: I18nTranslations = en\n\n/**\n * I18n Provider\n *\n * @example\n * // Basic usage with single locale\n * import { I18nProvider, ru } from '@djangocfg/i18n'\n *\n * <I18nProvider locale=\"ru\" translations={ru}>\n * <App />\n * </I18nProvider>\n *\n * @example\n * // With all translations for dynamic switching\n * import { I18nProvider, en, ru, ko } from '@djangocfg/i18n'\n *\n * <I18nProvider\n * locale={currentLocale}\n * allTranslations={{ en, ru, ko }}\n * onLocaleChange={(locale) => setCurrentLocale(locale)}\n * >\n * <App />\n * </I18nProvider>\n *\n * @example\n * // With custom overrides\n * import { I18nProvider, ru, mergeTranslations } from '@djangocfg/i18n'\n *\n * const customRu = mergeTranslations(ru, {\n * ui: { select: { placeholder: 'Выберите марку...' } }\n * })\n *\n * <I18nProvider locale=\"ru\" translations={customRu}>\n * <App />\n * </I18nProvider>\n */\nexport function I18nProvider({\n children,\n locale: initialLocale = 'en',\n translations: initialTranslations,\n allTranslations,\n onLocaleChange,\n}: I18nProviderProps) {\n const [locale, setLocaleState] = React.useState<LocaleCode>(initialLocale)\n\n // Resolve current translations\n const translations = React.useMemo<I18nTranslations>(() => {\n // If allTranslations provided, use it to get translations for current locale\n if (allTranslations && allTranslations[locale]) {\n const localeTranslations = allTranslations[locale]\n // Merge with defaults to fill any missing keys\n return mergeTranslations(defaultTranslations, localeTranslations)\n }\n\n // If single translations provided, use them\n if (initialTranslations) {\n return mergeTranslations(\n defaultTranslations,\n initialTranslations as I18nTranslations\n )\n }\n\n // Fallback to defaults\n return defaultTranslations\n }, [locale, allTranslations, initialTranslations])\n\n // Translation function\n const t = React.useCallback(\n (key: string, params?: Record<string, string | number>): string => {\n const value = getNestedValue(\n translations as unknown as Record<string, unknown>,\n key\n )\n\n if (value === undefined) {\n // Development warning\n if (typeof window !== 'undefined' && window.location.hostname === 'localhost') {\n console.warn(`[i18n] Missing translation key: \"${key}\"`)\n }\n // Return the key as fallback\n return key\n }\n\n return interpolate(value, params)\n },\n [translations]\n )\n\n // Locale change handler\n const setLocale = React.useCallback(\n (newLocale: LocaleCode) => {\n setLocaleState(newLocale)\n onLocaleChange?.(newLocale)\n },\n [onLocaleChange]\n )\n\n // Sync with external locale changes\n React.useEffect(() => {\n if (initialLocale !== locale) {\n setLocaleState(initialLocale)\n }\n }, [initialLocale])\n\n const value = React.useMemo<I18nContextValue>(\n () => ({\n locale,\n translations,\n t,\n setLocale,\n }),\n [locale, translations, t, setLocale]\n )\n\n return <I18nContext.Provider value={value}>{children}</I18nContext.Provider>\n}\n\n/**\n * Hook to access i18n context\n *\n * @example\n * function MyComponent() {\n * const { t, locale, setLocale } = useI18n()\n *\n * return (\n * <div>\n * <p>{t('ui.select.placeholder')}</p>\n * <p>{t('ui.pagination.showing', { from: 1, to: 10, total: 100 })}</p>\n * <button onClick={() => setLocale('ru')}>Switch to Russian</button>\n * </div>\n * )\n * }\n */\nexport function useI18n(): I18nContextValue {\n const context = React.useContext(I18nContext)\n\n if (!context) {\n // Return default implementation if no provider\n // This allows components to work without provider (using English defaults)\n return {\n locale: 'en',\n translations: defaultTranslations,\n t: (key: string, params?: Record<string, string | number>) => {\n const value = getNestedValue(\n defaultTranslations as unknown as Record<string, unknown>,\n key\n )\n if (value === undefined) return key\n return interpolate(value, params)\n },\n setLocale: () => {\n if (typeof window !== 'undefined' && window.location.hostname === 'localhost') {\n console.warn(\n '[i18n] setLocale called but no I18nProvider found. Wrap your app with I18nProvider to enable locale switching.'\n )\n }\n },\n }\n }\n\n return context\n}\n\n/**\n * Hook to get the translation function only\n * Useful when you only need translations without other context values\n *\n * @example\n * function MyComponent() {\n * const t = useTranslation()\n * return <span>{t('ui.form.save')}</span>\n * }\n */\nexport function useTranslation() {\n const { t } = useI18n()\n return t\n}\n\n/**\n * Hook to get current locale\n *\n * @example\n * function MyComponent() {\n * const locale = useLocale()\n * return <span>Current: {locale}</span>\n * }\n */\nexport function useLocale(): LocaleCode {\n const { locale } = useI18n()\n return locale\n}\n\n/**\n * Alias for useTranslation\n * Lightweight hook that just returns the t function\n * Works with or without I18nProvider (falls back to English)\n *\n * @example\n * function MyComponent() {\n * const t = useT()\n * return <span>{t('ui.form.save')}</span>\n * }\n */\nexport const useT = useTranslation\n\n/**\n * Type-safe translation hook\n *\n * Returns a translation function that only accepts valid keys from your translations type.\n * Use this when you want compile-time checking of translation keys.\n *\n * @example\n * ```typescript\n * import { useTypedT } from '@djangocfg/i18n'\n * import type { I18nTranslations } from '@djangocfg/i18n'\n *\n * function MyComponent() {\n * const t = useTypedT<I18nTranslations>()\n * return <span>{t('ui.form.save')}</span> // OK\n * return <span>{t('ui.form.typo')}</span> // Compile error!\n * }\n * ```\n *\n * @example\n * ```typescript\n * // With merged translations (app + extensions)\n * import type { AppTranslations } from '@/i18n/types'\n *\n * function MyComponent() {\n * const t = useTypedT<AppTranslations>()\n * return <span>{t('leads.form.title')}</span> // OK if leads is in AppTranslations\n * }\n * ```\n */\nexport function useTypedT<T extends object>(): (\n key: import('./utils/path-keys').PathKeys<T>,\n params?: Record<string, string | number>\n) => string {\n const { t } = useI18n()\n return t as (\n key: import('./utils/path-keys').PathKeys<T>,\n params?: Record<string, string | number>\n ) => string\n}\n\n/**\n * Get translation without hook (for class components or non-React contexts)\n * Always uses English defaults, no context support\n *\n * @example\n * // In a class component\n * render() {\n * const title = getT('layouts.errors.somethingWentWrong')\n * return <h1>{title}</h1>\n * }\n *\n * @example\n * // With interpolation\n * const message = getT('ui.pagination.showing', { from: 1, to: 10, total: 100 })\n */\nexport function getT(\n key: string,\n params?: Record<string, string | number>\n): string {\n const value = getNestedValue(\n defaultTranslations as unknown as Record<string, unknown>,\n key\n )\n if (value === undefined) return key\n return interpolate(value, params)\n}\n","import type { I18nTranslations } from '../types'\n\n/**\n * Russian translations\n */\nexport const ru: I18nTranslations = {\n ui: {\n select: {\n placeholder: 'Выберите...',\n search: 'Поиск...',\n noResults: 'Ничего не найдено.',\n selectAll: 'Выбрать все',\n clearAll: 'Очистить все',\n moreItems: '+{count} ещё',\n loading: 'Загрузка...',\n },\n\n pagination: {\n previous: 'Назад',\n next: 'Вперёд',\n first: 'В начало',\n last: 'В конец',\n page: 'Страница {page}',\n of: 'из {total}',\n showing: '{from}-{to} из {total}',\n },\n\n dialog: {\n close: 'Закрыть',\n confirm: 'Подтвердить',\n cancel: 'Отмена',\n ok: 'ОК',\n yes: 'Да',\n no: 'Нет',\n delete: 'Удалить',\n save: 'Сохранить',\n discard: 'Отменить',\n // Alert dialog\n alertTitle: 'Уведомление',\n // Confirm dialog\n confirmTitle: 'Подтверждение',\n confirmDelete: 'Вы уверены, что хотите удалить?',\n // Prompt dialog\n promptTitle: 'Введите значение',\n promptPlaceholder: 'Введите...',\n },\n\n form: {\n submit: 'Отправить',\n cancel: 'Отмена',\n save: 'Сохранить',\n delete: 'Удалить',\n edit: 'Редактировать',\n create: 'Создать',\n update: 'Обновить',\n reset: 'Сбросить',\n clear: 'Очистить',\n loading: 'Загрузка...',\n saving: 'Сохранение...',\n deleting: 'Удаление...',\n required: 'Обязательное поле',\n optional: 'Необязательно',\n minLength: 'Минимум {min} символов',\n maxLength: 'Максимум {max} символов',\n invalidEmail: 'Введите корректный email',\n invalidUrl: 'Введите корректный URL',\n invalidPhone: 'Введите корректный номер телефона',\n passwordMismatch: 'Пароли не совпадают',\n },\n\n datetime: {\n today: 'Сегодня',\n yesterday: 'Вчера',\n tomorrow: 'Завтра',\n now: 'Только что',\n secondsAgo: '{count} секунд назад',\n minutesAgo: '{count} минут назад',\n hoursAgo: '{count} часов назад',\n daysAgo: '{count} дней назад',\n pickDate: 'Выберите дату',\n pickTime: 'Выберите время',\n pickDateTime: 'Выберите дату и время',\n pickDateRange: 'Выберите период',\n },\n\n file: {\n upload: 'Загрузить',\n uploading: 'Загрузка...',\n dragDrop: 'Перетащите файлы сюда',\n browse: 'Выбрать файлы',\n remove: 'Удалить',\n maxSize: 'Макс. размер: {size}',\n invalidType: 'Неверный тип файла',\n tooLarge: 'Файл слишком большой',\n },\n\n table: {\n noData: 'Нет данных',\n loading: 'Загрузка данных...',\n showing: 'Показано {from}-{to} из {total}',\n rowsPerPage: 'Строк на странице',\n sortAsc: 'Сортировка по возрастанию',\n sortDesc: 'Сортировка по убыванию',\n filter: 'Фильтр',\n clearFilters: 'Сбросить фильтры',\n selectAll: 'Выбрать все',\n deselectAll: 'Снять выделение',\n selected: 'Выбрано: {count}',\n },\n\n actions: {\n view: 'Просмотр',\n copy: 'Копировать',\n copied: 'Скопировано!',\n copyToClipboard: 'Копировать в буфер',\n download: 'Скачать',\n share: 'Поделиться',\n refresh: 'Обновить',\n retry: 'Повторить',\n expand: 'Развернуть',\n collapse: 'Свернуть',\n showMore: 'Показать больше',\n showLess: 'Показать меньше',\n seeAll: 'Смотреть все',\n goBack: 'Назад',\n remove: 'Удалить',\n previousSlide: 'Предыдущий слайд',\n nextSlide: 'Следующий слайд',\n },\n\n phone: {\n searchCountries: 'Поиск стран...',\n noCountries: 'Страны не найдены',\n },\n\n navigation: {\n title: 'Навигация',\n },\n\n states: {\n loading: 'Загрузка',\n empty: 'Пусто',\n error: 'Ошибка',\n success: 'Успешно',\n warning: 'Предупреждение',\n info: 'Информация',\n pending: 'Ожидание',\n active: 'Активно',\n inactive: 'Неактивно',\n enabled: 'Включено',\n disabled: 'Отключено',\n },\n\n errors: {\n generic: 'Что-то пошло не так',\n network: 'Ошибка сети. Проверьте подключение.',\n timeout: 'Время ожидания истекло. Попробуйте ещё раз.',\n notFound: 'Не найдено',\n unauthorized: 'Войдите в аккаунт для продолжения',\n forbidden: 'У вас нет доступа',\n serverError: 'Ошибка сервера. Попробуйте позже.',\n validation: 'Проверьте правильность заполнения формы',\n unknown: 'Произошла неизвестная ошибка',\n },\n },\n\n layouts: {\n sidebar: {\n toggle: 'Переключить боковую панель',\n collapse: 'Свернуть панель',\n expand: 'Развернуть панель',\n },\n\n navigation: {\n menu: 'Меню',\n home: 'Главная',\n back: 'Назад',\n forward: 'Вперёд',\n toggleMobile: 'Открыть мобильное меню',\n breadcrumb: 'Навигация',\n },\n\n profile: {\n settings: 'Настройки',\n account: 'Аккаунт',\n logout: 'Выйти',\n login: 'Войти',\n signUp: 'Регистрация',\n signOut: 'Выйти',\n userMenu: 'Меню пользователя',\n },\n\n theme: {\n toggle: 'Сменить тему',\n light: 'Светлая',\n dark: 'Тёмная',\n system: 'Системная',\n },\n\n search: {\n placeholder: 'Поиск...',\n noResults: 'Ничего не найдено',\n recentSearches: 'Недавние запросы',\n clearHistory: 'Очистить историю',\n },\n\n mobile: {\n closeMenu: 'Закрыть меню',\n },\n\n errors: {\n somethingWentWrong: 'Что-то пошло не так',\n tryRefreshing: 'Произошла непредвиденная ошибка. Попробуйте обновить страницу.',\n refreshPage: 'Обновить страницу',\n goBack: 'Назад',\n goHome: 'На главную',\n needHelp: 'Нужна помощь?',\n contactSupport: 'Связаться с поддержкой',\n persistsContact: 'Если проблема повторяется, свяжитесь с {email}',\n error: 'Ошибка',\n badRequest: 'Неверный запрос',\n authRequired: 'Требуется авторизация',\n accessDenied: 'Доступ запрещён',\n pageNotFound: 'Страница не найдена',\n requestTimeout: 'Время ожидания истекло',\n serverError: 'Ошибка сервера',\n badGateway: 'Ошибка шлюза',\n serviceUnavailable: 'Сервис недоступен',\n gatewayTimeout: 'Время ожидания шлюза истекло',\n badRequestDesc: 'Запрос не может быть обработан. Проверьте введённые данные и попробуйте снова.',\n authRequiredDesc: 'Для доступа к этой странице необходимо войти в систему.',\n accessDeniedDesc: 'У вас нет прав для доступа к этому ресурсу.',\n pageNotFoundDesc: 'Страница, которую вы ищете, не существует или была перемещена.',\n requestTimeoutDesc: 'Обработка запроса заняла слишком много времени. Попробуйте ещё раз.',\n serverErrorDesc: 'Произошла ошибка на сервере. Мы работаем над её исправлением.',\n badGatewayDesc: 'Сервер получил неверный ответ. Попробуйте позже.',\n serviceUnavailableDesc: 'Сервис временно недоступен. Попробуйте позже.',\n gatewayTimeoutDesc: 'Сервер слишком долго отвечает. Попробуйте ещё раз.',\n unknownErrorDesc: 'Произошла непредвиденная ошибка. Попробуйте снова или свяжитесь с поддержкой.',\n },\n\n push: {\n enableNotifications: 'Включить уведомления',\n stayUpdated: 'Получайте важные обновления и оповещения',\n enable: 'Включить',\n notNow: 'Не сейчас',\n dismiss: 'Закрыть',\n },\n\n auth: {\n authRequired: 'Требуется авторизация',\n pleaseSignIn: 'Пожалуйста, войдите для продолжения',\n goToSignIn: 'Перейти к входу',\n\n // Identifier step\n identifier: {\n title: 'Вход',\n subtitle: {\n email: 'Введите email для продолжения',\n phone: 'Введите номер телефона для продолжения',\n },\n placeholder: {\n email: 'email@example.com',\n phone: 'Введите номер телефона',\n },\n button: 'Продолжить',\n oauth: {\n github: 'Войти через GitHub',\n },\n channel: {\n email: 'Email',\n phone: 'Телефон',\n },\n },\n\n // OTP step\n otp: {\n title: 'Введите код',\n subtitle: 'Мы отправили код на',\n button: 'Подтвердить',\n resend: 'Отправить повторно',\n changeEmail: 'Изменить email',\n changePhone: 'Изменить телефон',\n },\n\n // Two-factor step\n twoFactor: {\n title: 'Двухфакторная аутентификация',\n subtitle: {\n totp: 'Введите 6-значный код из приложения-аутентификатора',\n backup: 'Введите один из резервных кодов',\n },\n placeholder: {\n backup: 'XXXXXXXX',\n },\n button: 'Подтвердить',\n toggle: {\n toBackup: 'Использовать резервный код',\n toTotp: 'Использовать приложение',\n },\n },\n\n // 2FA Setup\n setup: {\n loading: {\n title: 'Настройка...',\n button: 'Загрузка',\n },\n qrCode: {\n title: 'Настройка 2FA',\n subtitle: 'Отсканируйте QR-код приложением-аутентификатором',\n manualEntry: 'Не можете сканировать? Введите вручную',\n confirmPrompt: 'Введите 6-значный код для подтверждения',\n button: 'Включить 2FA',\n skip: 'Пропустить',\n },\n complete: {\n title: '2FA включена',\n subtitle: 'Сохраните резервные коды в безопасном месте',\n instruction: 'Каждый код можно использовать только один раз',\n copyAll: 'Копировать все коды',\n copied: 'Скопировано',\n done: 'Готово',\n },\n },\n\n // Success\n success: {\n message: 'Вход выполнен успешно',\n },\n\n // Shared\n terms: {\n agree: 'Я принимаю',\n and: 'и',\n terms: 'Условия',\n privacy: 'Политику конфиденциальности',\n },\n divider: {\n or: 'или',\n },\n footer: {\n terms: 'Условия',\n privacy: 'Конфиденциальность',\n support: 'Поддержка',\n },\n\n // Dev mode\n dev: {\n anyCodeWorks: 'Режим разработки: подойдёт любой код',\n },\n },\n\n chat: {\n aiAssistant: 'AI Ассистент',\n defaultTitle: 'AI Чат',\n newChat: 'Новый чат',\n closeChat: 'Закрыть чат',\n switchToFloating: 'Плавающий режим',\n switchToSidebar: 'Режим боковой панели',\n dragToResize: 'Потяните для изменения размера',\n howCanIHelp: 'Чем могу помочь?',\n },\n\n pwa: {\n addToHomeScreen: 'На главный экран',\n installApp: 'Установить приложение',\n tapToLearnHow: 'Нажмите, чтобы узнать как',\n clickToSeeGuide: 'Нажмите для инструкции',\n tapToInstall: 'Нажмите для установки',\n installing: 'Установка...',\n dismiss: 'Закрыть',\n appLogo: 'Логотип приложения',\n iosTitle: 'На главный экран',\n iosDescription: 'Установите приложение на iPhone для быстрого доступа',\n iosStep1Title: 'Нажмите «Поделиться»',\n iosStep1Desc: 'Внизу экрана Safari',\n iosStep2Title: 'Найдите опцию',\n iosStep2Desc: '«На экран Домой»',\n iosStep3Title: 'Подтвердите',\n iosStep3Desc: 'Нажмите «Добавить» справа вверху',\n gotIt: 'Понятно',\n desktopTitle: 'Установка на компьютер',\n desktopDescription: 'Установите приложение в {browser} для быстрого доступа',\n desktopDescSafari: 'Safari на macOS имеет ограниченную поддержку PWA. Для лучшего опыта используйте Chrome, Edge или Brave.',\n desktopTip: 'Также можно нажать правой кнопкой на странице и найти опцию «Установить» в {browser}',\n desktopFirefoxNote: 'Firefox имеет ограниченную поддержку PWA. Некоторые функции могут работать некорректно.',\n chromiumStep1Title: 'Найдите значок установки',\n chromiumStep1Desc: 'Ищите значок установки в адресной строке (справа)',\n chromiumStep2Title: 'Нажмите «Установить»',\n chromiumStep2Desc: 'Нажмите на значок и выберите «Установить»',\n chromiumStep3Title: 'Подтвердите',\n chromiumStep3Desc: 'Нажмите «Установить» в диалоговом окне',\n firefoxStep1Title: 'Откройте меню',\n firefoxStep1Desc: 'Нажмите кнопку меню (три линии)',\n firefoxStep2Title: 'Найдите опцию установки',\n firefoxStep2Desc: 'Ищите «Установить» или «На главный экран»',\n firefoxStep3Title: 'Подтвердите',\n firefoxStep3Desc: 'Следуйте инструкциям установки',\n safariStep1Title: 'Ограниченная поддержка',\n safariStep1Desc: 'Safari на macOS имеет ограниченную поддержку PWA',\n safariStep2Title: 'Используйте Chromium браузер',\n safariStep2Desc: 'Рекомендуем Chrome, Edge или Brave для полноценного PWA',\n unknownStep1Title: 'Проверьте адресную строку',\n unknownStep1Desc: 'Ищите значок установки или загрузки',\n unknownStep2Title: 'Или используйте меню',\n unknownStep2Desc: 'Проверьте меню браузера на наличие опции установки',\n unknownStep3Title: 'Подтвердите',\n unknownStep3Desc: 'Следуйте инструкциям установки',\n close: 'Закрыть',\n },\n\n profilePage: {\n title: 'Профиль',\n account: 'Аккаунт',\n personalInfo: 'Личные данные',\n work: 'Работа',\n security: 'Безопасность',\n actions: 'Действия',\n email: 'Email',\n firstName: 'Имя',\n lastName: 'Фамилия',\n company: 'Компания',\n position: 'Должность',\n phone: 'Телефон',\n notSet: 'Не указано',\n addFirstName: 'Добавить имя',\n addLastName: 'Добавить фамилию',\n addPhone: 'Добавить телефон',\n addCompany: 'Добавить компанию',\n addPosition: 'Добавить должность',\n on: 'Вкл',\n off: 'Выкл',\n save: 'Сохранить',\n saving: 'Сохранение...',\n cancel: 'Отмена',\n signOut: 'Выйти',\n deleteAccount: 'Удалить аккаунт',\n deleting: 'Удаление...',\n twoFactorAuth: 'Двухфакторная аутентификация',\n twoFactorEnabled: 'Двухфакторная аутентификация включена',\n twoFactorDisabled: 'Добавьте дополнительный уровень защиты',\n enable2FA: 'Включить',\n avatar: 'Аватар',\n changeAvatar: 'Изменить аватар',\n memberSince: 'Участник с {date}',\n enterField: 'Введите {field}',\n profileUpdated: 'Профиль обновлён',\n avatarUpdated: 'Аватар обновлён',\n failedToUpdate: 'Не удалось обновить',\n failedToUploadAvatar: 'Не удалось загрузить аватар',\n selectImageFile: 'Пожалуйста, выберите изображение',\n fileTooLarge: 'Размер файла должен быть меньше 5МБ',\n notAuthenticated: 'Не авторизован',\n pleaseLogIn: 'Пожалуйста, войдите для просмотра профиля.',\n deleteAccountTitle: 'Удаление аккаунта',\n deleteAccountDesc: 'Это действие необратимо. Ваш аккаунт будет удалён навсегда.',\n typeToConfirm: 'Введите {word} для подтверждения:',\n confirmationWord: 'УДАЛИТЬ',\n },\n },\n\n api: {\n errors: {\n networkError: 'Ошибка сети',\n connectionFailed: 'Не удалось подключиться',\n requestTimeout: 'Время ожидания истекло',\n serverUnavailable: 'Сервер недоступен',\n invalidResponse: 'Неверный ответ сервера',\n rateLimited: 'Слишком много запросов. Подождите.',\n },\n status: {\n connecting: 'Подключение...',\n connected: 'Подключено',\n disconnected: 'Отключено',\n reconnecting: 'Переподключение...',\n },\n logout: {\n title: 'Выход',\n message: 'Вы уверены, что хотите выйти?',\n confirm: 'Выйти',\n cancel: 'Отмена',\n },\n },\n\n centrifugo: {\n monitor: {\n title: 'Монитор Centrifugo',\n description: 'Мониторинг и отладка WebSocket в реальном времени',\n openMonitor: 'Открыть монитор Centrifugo',\n openDebugPanel: 'Открыть панель отладки Centrifugo',\n widgetTitle: 'Монитор WebSocket',\n },\n tabs: {\n connection: 'Соединение',\n messages: 'Сообщения',\n subscriptions: 'Подписки',\n },\n subscriptionsList: {\n title: 'Активные подписки',\n notConnected: 'Нет подключения к Centrifugo',\n noActiveSubscriptions: 'Нет активных подписок',\n },\n status: {\n connected: 'Подключено',\n disconnected: 'Отключено',\n connecting: 'Подключение...',\n connect: 'Подключить',\n uptime: 'Время работы:',\n subscriptions: 'Подписки:',\n realtimeUnavailable: 'Функции реального времени недоступны',\n },\n feed: {\n title: 'Лента сообщений',\n noMessages: 'Нет сообщений',\n pausedClickToResume: 'Приостановлено - нажмите для продолжения',\n autoScrollOn: 'Автопрокрутка: ВКЛ',\n autoScrollOff: 'Автопрокрутка: ВЫКЛ',\n viewData: 'Показать данные',\n },\n filters: {\n title: 'Фильтры',\n active: 'Активно',\n clear: 'Очистить',\n searchMessages: 'Поиск сообщений...',\n level: 'Уровень:',\n type: 'Тип:',\n source: 'Источник',\n autoScrollToLatest: 'Автопрокрутка к последним',\n },\n debug: {\n title: 'Отладка Centrifugo',\n description: 'Статус WebSocket соединения, логи и подписки',\n openDebugPanel: 'Открыть панель отладки Centrifugo',\n tabConnection: 'Соединение',\n tabLogs: 'Логи',\n tabSubscriptions: 'Подписки',\n },\n },\n\n tools: {\n code: {\n copyCode: 'Копировать код',\n noContent: 'Контент недоступен',\n },\n\n diagram: {\n title: 'Диаграмма',\n clickToView: 'Нажмите для просмотра',\n },\n\n image: {\n noImage: 'Изображение отсутствует',\n failedToLoad: 'Не удалось загрузить изображение',\n zoomIn: 'Увеличить',\n zoomOut: 'Уменьшить',\n fitToView: 'По размеру окна',\n flipHorizontal: 'Отразить по горизонтали',\n flipVertical: 'Отразить по вертикали',\n rotate: 'Повернуть на 90°',\n fullscreen: 'На весь экран',\n },\n\n gallery: {\n noImages: 'Нет изображений',\n lightbox: 'Просмотр изображения',\n previous: 'Предыдущее изображение',\n next: 'Следующее изображение',\n close: 'Закрыть просмотр',\n download: 'Скачать изображение',\n share: 'Поделиться изображением',\n },\n\n video: {\n play: 'Воспроизвести видео',\n fullscreen: 'Во весь экран',\n unavailable: 'Видео недоступно',\n },\n\n audio: {\n restart: 'Сначала',\n back: 'Назад 5 секунд',\n forward: 'Вперёд 5 секунд',\n volume: 'Громкость',\n },\n\n color: {\n pick: 'Выбрать цвет',\n },\n\n openapi: {\n response: 'Ответ',\n noResponse: 'Тело ответа отсутствует',\n required: 'Обязательно',\n optional: 'Необязательно',\n searchEndpoints: 'Поиск эндпоинтов...',\n all: 'Все',\n methods: 'Методы',\n path: 'Путь',\n description: 'Описание',\n navigation: 'Навигация',\n previous: 'Назад',\n next: 'Вперёд',\n bearerToken: 'Введите Bearer токен (опционально, использует JWT если пусто)',\n },\n\n form: {\n title: 'Форма',\n },\n\n tour: {\n next: 'Далее',\n previous: 'Назад',\n skip: 'Пропустить',\n finish: 'Готово',\n close: 'Закрыть',\n stepOf: 'Шаг {current} из {total}',\n },\n\n upload: {\n dragDrop: 'Перетащите файлы или нажмите для выбора',\n dropHere: 'Отпустите файлы здесь',\n maxSize: 'Макс. {size}МБ на файл',\n uploading: 'Загрузка...',\n uploaded: 'Загружено',\n failed: 'Ошибка',\n retry: 'Повторить',\n remove: 'Удалить',\n cancel: 'Отмена',\n paused: 'Приостановлено',\n pending: 'Ожидание',\n },\n },\n}\n","import type { I18nTranslations } from '../types'\n\n/**\n * Korean translations\n */\nexport const ko: I18nTranslations = {\n ui: {\n select: {\n placeholder: '선택하세요...',\n search: '검색...',\n noResults: '결과가 없습니다.',\n selectAll: '전체 선택',\n clearAll: '전체 해제',\n moreItems: '+{count}개 더',\n loading: '로딩 중...',\n },\n\n pagination: {\n previous: '이전',\n next: '다음',\n first: '처음',\n last: '마지막',\n page: '{page} 페이지',\n of: '/ {total}',\n showing: '{total}개 중 {from}-{to}',\n },\n\n dialog: {\n close: '닫기',\n confirm: '확인',\n cancel: '취소',\n ok: 'OK',\n yes: '예',\n no: '아니오',\n delete: '삭제',\n save: '저장',\n discard: '버리기',\n alertTitle: '알림',\n confirmTitle: '확인',\n confirmDelete: '정말로 삭제하시겠습니까?',\n promptTitle: '입력 필요',\n promptPlaceholder: '값을 입력하세요...',\n },\n\n form: {\n submit: '제출',\n cancel: '취소',\n save: '저장',\n delete: '삭제',\n edit: '수정',\n create: '생성',\n update: '업데이트',\n reset: '초기화',\n clear: '지우기',\n loading: '로딩 중...',\n saving: '저장 중...',\n deleting: '삭제 중...',\n required: '필수 입력 항목입니다',\n optional: '선택 사항',\n minLength: '최소 {min}자 이상 입력하세요',\n maxLength: '최대 {max}자까지 입력 가능합니다',\n invalidEmail: '올바른 이메일 주소를 입력하세요',\n invalidUrl: '올바른 URL을 입력하세요',\n invalidPhone: '올바른 전화번호를 입력하세요',\n passwordMismatch: '비밀번호가 일치하지 않습니다',\n },\n\n datetime: {\n today: '오늘',\n yesterday: '어제',\n tomorrow: '내일',\n now: '방금 전',\n secondsAgo: '{count}초 전',\n minutesAgo: '{count}분 전',\n hoursAgo: '{count}시간 전',\n daysAgo: '{count}일 전',\n pickDate: '날짜 선택',\n pickTime: '시간 선택',\n pickDateTime: '날짜 및 시간 선택',\n pickDateRange: '기간 선택',\n },\n\n file: {\n upload: '업로드',\n uploading: '업로드 중...',\n dragDrop: '파일을 여기에 드래그하세요',\n browse: '파일 찾기',\n remove: '제거',\n maxSize: '최대 크기: {size}',\n invalidType: '지원하지 않는 파일 형식입니다',\n tooLarge: '파일이 너무 큽니다',\n },\n\n table: {\n noData: '데이터가 없습니다',\n loading: '데이터 로딩 중...',\n showing: '{total}개 중 {from}-{to} 표시',\n rowsPerPage: '페이지당 행 수',\n sortAsc: '오름차순 정렬',\n sortDesc: '내림차순 정렬',\n filter: '필터',\n clearFilters: '필터 초기화',\n selectAll: '전체 선택',\n deselectAll: '선택 해제',\n selected: '{count}개 선택됨',\n },\n\n actions: {\n view: '보기',\n copy: '복사',\n copied: '복사됨!',\n copyToClipboard: '클립보드에 복사',\n download: '다운로드',\n share: '공유',\n refresh: '새로고침',\n retry: '재시도',\n expand: '펼치기',\n collapse: '접기',\n showMore: '더 보기',\n showLess: '간략히',\n seeAll: '전체 보기',\n goBack: '뒤로 가기',\n remove: '제거',\n previousSlide: '이전 슬라이드',\n nextSlide: '다음 슬라이드',\n },\n\n phone: {\n searchCountries: '국가 검색...',\n noCountries: '국가를 찾을 수 없습니다',\n },\n\n navigation: {\n title: '탐색',\n },\n\n states: {\n loading: '로딩 중',\n empty: '비어 있음',\n error: '오류',\n success: '성공',\n warning: '경고',\n info: '정보',\n pending: '대기 중',\n active: '활성',\n inactive: '비활성',\n enabled: '활성화됨',\n disabled: '비활성화됨',\n },\n\n errors: {\n generic: '문제가 발생했습니다',\n network: '네트워크 오류. 연결을 확인하세요.',\n timeout: '요청 시간이 초과되었습니다. 다시 시도하세요.',\n notFound: '찾을 수 없습니다',\n unauthorized: '로그인이 필요합니다',\n forbidden: '접근 권한이 없습니다',\n serverError: '서버 오류. 나중에 다시 시도하세요.',\n validation: '입력 내용을 확인하세요',\n unknown: '알 수 없는 오류가 발생했습니다',\n },\n },\n\n layouts: {\n sidebar: {\n toggle: '사이드바 전환',\n collapse: '사이드바 접기',\n expand: '사이드바 펼치기',\n },\n\n navigation: {\n menu: '메뉴',\n home: '홈',\n back: '뒤로',\n forward: '앞으로',\n toggleMobile: '모바일 메뉴 열기',\n breadcrumb: '탐색 경로',\n },\n\n profile: {\n settings: '설정',\n account: '계정',\n logout: '로그아웃',\n login: '로그인',\n signUp: '회원가입',\n signOut: '로그아웃',\n userMenu: '사용자 메뉴',\n },\n\n theme: {\n toggle: '테마 전환',\n light: '라이트',\n dark: '다크',\n system: '시스템',\n },\n\n search: {\n placeholder: '검색...',\n noResults: '검색 결과가 없습니다',\n recentSearches: '최근 검색어',\n clearHistory: '기록 삭제',\n },\n\n mobile: {\n closeMenu: '메뉴 닫기',\n },\n\n errors: {\n somethingWentWrong: '문제가 발생했습니다',\n tryRefreshing: '예상치 못한 오류가 발생했습니다. 페이지를 새로고침해 보세요.',\n refreshPage: '페이지 새로고침',\n goBack: '뒤로 가기',\n goHome: '홈으로 가기',\n needHelp: '도움이 필요하신가요?',\n contactSupport: '지원팀에 문의',\n persistsContact: '문제가 지속되면 {email}로 문의하세요',\n error: '오류',\n badRequest: '잘못된 요청',\n authRequired: '인증 필요',\n accessDenied: '접근 거부',\n pageNotFound: '페이지를 찾을 수 없음',\n requestTimeout: '요청 시간 초과',\n serverError: '서버 오류',\n badGateway: '잘못된 게이트웨이',\n serviceUnavailable: '서비스 이용 불가',\n gatewayTimeout: '게이트웨이 시간 초과',\n badRequestDesc: '요청을 이해할 수 없습니다. 입력 내용을 확인하고 다시 시도하세요.',\n authRequiredDesc: '이 페이지에 접근하려면 로그인이 필요합니다.',\n accessDeniedDesc: '이 리소스에 접근할 권한이 없습니다.',\n pageNotFoundDesc: '찾으시는 페이지가 존재하지 않거나 이동되었습니다.',\n requestTimeoutDesc: '요청 처리 시간이 너무 오래 걸렸습니다. 다시 시도하세요.',\n serverErrorDesc: '서버에서 문제가 발생했습니다. 수정 작업 중입니다.',\n badGatewayDesc: '서버가 잘못된 응답을 받았습니다. 나중에 다시 시도하세요.',\n serviceUnavailableDesc: '서비스를 일시적으로 사용할 수 없습니다. 나중에 다시 시도하세요.',\n gatewayTimeoutDesc: '서버 응답 시간이 너무 오래 걸렸습니다. 다시 시도하세요.',\n unknownErrorDesc: '예상치 못한 오류가 발생했습니다. 다시 시도하거나 지원팀에 문의하세요.',\n },\n\n push: {\n enableNotifications: '알림 활성화',\n stayUpdated: '중요한 업데이트와 알림을 받아보세요',\n enable: '활성화',\n notNow: '나중에',\n dismiss: '닫기',\n },\n\n auth: {\n authRequired: '인증 필요',\n pleaseSignIn: '계속하려면 로그인하세요',\n goToSignIn: '로그인으로 이동',\n\n // Identifier step\n identifier: {\n title: '로그인',\n subtitle: {\n email: '계속하려면 이메일을 입력하세요',\n phone: '계속하려면 전화번호를 입력하세요',\n },\n placeholder: {\n email: 'email@example.com',\n phone: '전화번호 입력',\n },\n button: '계속',\n oauth: {\n github: 'GitHub로 계속',\n },\n channel: {\n email: '이메일',\n phone: '전화',\n },\n },\n\n // OTP step\n otp: {\n title: '코드 입력',\n subtitle: '코드를 전송했습니다:',\n button: '확인',\n resend: '코드 재전송',\n changeEmail: '이메일 변경',\n changePhone: '전화번호 변경',\n },\n\n // Two-factor step\n twoFactor: {\n title: '2단계 인증',\n subtitle: {\n totp: '인증 앱의 6자리 코드를 입력하세요',\n backup: '백업 코드 중 하나를 입력하세요',\n },\n placeholder: {\n backup: 'XXXXXXXX',\n },\n button: '확인',\n toggle: {\n toBackup: '백업 코드 사용',\n toTotp: '인증 앱 사용',\n },\n },\n\n // 2FA Setup\n setup: {\n loading: {\n title: '설정 중...',\n button: '로딩',\n },\n qrCode: {\n title: '2FA 설정',\n subtitle: '인증 앱으로 QR 코드를 스캔하세요',\n manualEntry: '스캔이 안 되나요? 수동으로 입력하세요',\n confirmPrompt: '확인을 위해 6자리 코드를 입력하세요',\n button: '2FA 활성화',\n skip: '나중에',\n },\n complete: {\n title: '2FA 활성화됨',\n subtitle: '백업 코드를 안전하게 보관하세요',\n instruction: '각 코드는 한 번만 사용할 수 있습니다',\n copyAll: '모든 코드 복사',\n copied: '복사됨',\n done: '완료',\n },\n },\n\n // Success\n success: {\n message: '로그인 성공',\n },\n\n // Shared\n terms: {\n agree: '동의합니다:',\n and: '및',\n terms: '이용약관',\n privacy: '개인정보처리방침',\n },\n divider: {\n or: '또는',\n },\n footer: {\n terms: '이용약관',\n privacy: '개인정보',\n support: '지원',\n },\n\n // Dev mode\n dev: {\n anyCodeWorks: '개발 모드: 아무 코드나 사용 가능',\n },\n },\n\n chat: {\n aiAssistant: 'AI 어시스턴트',\n defaultTitle: 'AI 채팅',\n newChat: '새 채팅',\n closeChat: '채팅 닫기',\n switchToFloating: '플로팅 모드로 전환',\n switchToSidebar: '사이드바 모드로 전환',\n dragToResize: '드래그하여 크기 조절',\n howCanIHelp: '무엇을 도와드릴까요?',\n },\n\n pwa: {\n addToHomeScreen: '홈 화면에 추가',\n installApp: '앱 설치',\n tapToLearnHow: '탭하여 방법 알아보기',\n clickToSeeGuide: '클릭하여 가이드 보기',\n tapToInstall: '탭하여 설치',\n installing: '설치 중...',\n dismiss: '닫기',\n appLogo: '앱 로고',\n iosTitle: '홈 화면에 추가',\n iosDescription: '빠른 접근과 더 나은 경험을 위해 iPhone에 앱을 설치하세요',\n iosStep1Title: '공유 탭',\n iosStep1Desc: 'Safari 하단에서',\n iosStep2Title: '스크롤 & 탭',\n iosStep2Desc: '\"홈 화면에 추가\"',\n iosStep3Title: '확인',\n iosStep3Desc: '오른쪽 상단의 \"추가\" 탭',\n gotIt: '알겠습니다',\n desktopTitle: '데스크톱에 앱 설치',\n desktopDescription: '{browser}에서 빠른 접근을 위해 앱을 설치하세요',\n desktopDescSafari: 'macOS의 Safari는 PWA 지원이 제한적입니다. 최상의 경험을 위해 Chrome, Edge 또는 Brave를 사용하세요.',\n desktopTip: '{browser}에서 페이지를 우클릭하여 \"설치\" 옵션을 찾을 수도 있습니다',\n desktopFirefoxNote: 'Firefox는 PWA 지원이 제한적입니다. 일부 기능이 예상대로 작동하지 않을 수 있습니다.',\n chromiumStep1Title: '설치 아이콘 찾기',\n chromiumStep1Desc: '주소 표시줄 오른쪽의 설치 아이콘을 찾으세요',\n chromiumStep2Title: '설치 클릭',\n chromiumStep2Desc: '아이콘을 클릭하고 \"설치\"를 선택하세요',\n chromiumStep3Title: '확인',\n chromiumStep3Desc: '팝업 대화상자에서 \"설치\"를 클릭하세요',\n firefoxStep1Title: '메뉴 열기',\n firefoxStep1Desc: '메뉴 버튼(세 줄)을 클릭하세요',\n firefoxStep2Title: '설치 옵션 찾기',\n firefoxStep2Desc: '\"설치\" 또는 \"홈 화면에 추가\"를 찾으세요',\n firefoxStep3Title: '확인',\n firefoxStep3Desc: '설치 안내를 따르세요',\n safariStep1Title: '제한된 지원',\n safariStep1Desc: 'macOS의 Safari는 PWA 지원이 제한적입니다',\n safariStep2Title: 'Chromium 브라우저 사용',\n safariStep2Desc: '완전한 PWA 경험을 위해 Chrome, Edge 또는 Brave를 사용하세요',\n unknownStep1Title: '주소 표시줄 확인',\n unknownStep1Desc: '설치 또는 다운로드 아이콘을 찾으세요',\n unknownStep2Title: '또는 메뉴 사용',\n unknownStep2Desc: '브라우저 메뉴에서 설치 옵션을 확인하세요',\n unknownStep3Title: '확인',\n unknownStep3Desc: '설치 안내를 따르세요',\n close: '닫기',\n },\n\n profilePage: {\n title: '프로필',\n account: '계정',\n personalInfo: '개인 정보',\n work: '직장',\n security: '보안',\n actions: '작업',\n email: '이메일',\n firstName: '이름',\n lastName: '성',\n company: '회사',\n position: '직책',\n phone: '전화번호',\n notSet: '설정 안 됨',\n addFirstName: '이름 추가',\n addLastName: '성 추가',\n addPhone: '전화번호 추가',\n addCompany: '회사 추가',\n addPosition: '직책 추가',\n on: '켜짐',\n off: '꺼짐',\n save: '저장',\n saving: '저장 중...',\n cancel: '취소',\n signOut: '로그아웃',\n deleteAccount: '계정 삭제',\n deleting: '삭제 중...',\n twoFactorAuth: '2단계 인증',\n twoFactorEnabled: '2단계 인증이 활성화되었습니다',\n twoFactorDisabled: '추가 보안 계층 추가',\n enable2FA: '활성화',\n avatar: '아바타',\n changeAvatar: '아바타 변경',\n memberSince: '{date}부터 회원',\n enterField: '{field} 입력',\n profileUpdated: '프로필이 업데이트되었습니다',\n avatarUpdated: '아바타가 업데이트되었습니다',\n failedToUpdate: '업데이트 실패',\n failedToUploadAvatar: '아바타 업로드 실패',\n selectImageFile: '이미지 파일을 선택하세요',\n fileTooLarge: '파일 크기는 5MB 미만이어야 합니다',\n notAuthenticated: '인증되지 않음',\n pleaseLogIn: '프로필을 보려면 로그인하세요.',\n deleteAccountTitle: '계정 삭제',\n deleteAccountDesc: '이 작업은 되돌릴 수 없습니다. 계정이 영구적으로 삭제됩니다.',\n typeToConfirm: '확인하려면 {word}을(를) 입력하세요:',\n confirmationWord: '삭제',\n },\n },\n\n api: {\n errors: {\n networkError: '네트워크 오류',\n connectionFailed: '연결 실패',\n requestTimeout: '요청 시간 초과',\n serverUnavailable: '서버를 사용할 수 없습니다',\n invalidResponse: '잘못된 서버 응답',\n rateLimited: '요청이 너무 많습니다. 잠시 후 다시 시도하세요.',\n },\n status: {\n connecting: '연결 중...',\n connected: '연결됨',\n disconnected: '연결 끊김',\n reconnecting: '재연결 중...',\n },\n logout: {\n title: '로그아웃',\n message: '로그아웃 하시겠습니까?',\n confirm: '로그아웃',\n cancel: '취소',\n },\n },\n\n centrifugo: {\n monitor: {\n title: 'Centrifugo 모니터',\n description: '실시간 WebSocket 모니터링 및 디버깅',\n openMonitor: 'Centrifugo 모니터 열기',\n openDebugPanel: 'Centrifugo 디버그 패널 열기',\n widgetTitle: 'WebSocket 모니터',\n },\n tabs: {\n connection: '연결',\n messages: '메시지',\n subscriptions: '구독',\n },\n subscriptionsList: {\n title: '활성 구독',\n notConnected: 'Centrifugo에 연결되지 않음',\n noActiveSubscriptions: '활성 구독 없음',\n },\n status: {\n connected: '연결됨',\n disconnected: '연결 끊김',\n connecting: '연결 중...',\n connect: '연결',\n uptime: '가동 시간:',\n subscriptions: '구독:',\n realtimeUnavailable: '실시간 기능을 사용할 수 없습니다',\n },\n feed: {\n title: '메시지 피드',\n noMessages: '메시지 없음',\n pausedClickToResume: '일시 중지됨 - 재생하려면 클릭',\n autoScrollOn: '자동 스크롤: 켜짐',\n autoScrollOff: '자동 스크롤: 꺼짐',\n viewData: '데이터 보기',\n },\n filters: {\n title: '필터',\n active: '활성',\n clear: '지우기',\n searchMessages: '메시지 검색...',\n level: '레벨:',\n type: '유형:',\n source: '소스',\n autoScrollToLatest: '최신 항목으로 자동 스크롤',\n },\n debug: {\n title: 'Centrifugo 디버그',\n description: 'WebSocket 연결 상태, 로그 및 구독',\n openDebugPanel: 'Centrifugo 디버그 패널 열기',\n tabConnection: '연결',\n tabLogs: '로그',\n tabSubscriptions: '구독',\n },\n },\n\n tools: {\n code: {\n copyCode: '코드 복사',\n noContent: '콘텐츠 없음',\n },\n\n diagram: {\n title: '다이어그램',\n clickToView: '전체 화면으로 보려면 클릭',\n },\n\n image: {\n noImage: '이미지 없음',\n failedToLoad: '이미지 로드 실패',\n zoomIn: '확대',\n zoomOut: '축소',\n fitToView: '화면에 맞춤',\n flipHorizontal: '좌우 반전',\n flipVertical: '상하 반전',\n rotate: '90° 회전',\n fullscreen: '전체 화면',\n },\n\n gallery: {\n noImages: '이미지가 없습니다',\n lightbox: '이미지 뷰어',\n previous: '이전 이미지',\n next: '다음 이미지',\n close: '뷰어 닫기',\n download: '이미지 다운로드',\n share: '이미지 공유',\n },\n\n video: {\n play: '비디오 재생',\n fullscreen: '전체 화면',\n unavailable: '비디오를 사용할 수 없습니다',\n },\n\n audio: {\n restart: '처음부터',\n back: '5초 뒤로',\n forward: '5초 앞으로',\n volume: '음량',\n },\n\n color: {\n pick: '색상 선택',\n },\n\n openapi: {\n response: '응답',\n noResponse: '응답 본문 없음',\n required: '필수',\n optional: '선택',\n searchEndpoints: '엔드포인트 검색...',\n all: '전체',\n methods: '메서드',\n path: '경로',\n description: '설명',\n navigation: '탐색',\n previous: '이전',\n next: '다음',\n bearerToken: 'Bearer 토큰 입력 (선택사항, 비어있으면 JWT 사용)',\n },\n\n\n tour: {\n next: '다음',\n previous: '이전',\n skip: '건너뛰기',\n finish: '완료',\n close: '닫기',\n stepOf: '{total}단계 중 {current}단계',\n },\n\n upload: {\n dragDrop: '파일을 드래그하거나 클릭하여 선택',\n dropHere: '여기에 파일을 놓으세요',\n maxSize: '파일당 최대 {size}MB',\n uploading: '업로드 중...',\n uploaded: '업로드 완료',\n failed: '실패',\n retry: '재시도',\n remove: '삭제',\n cancel: '취소',\n paused: '일시정지',\n pending: '대기 중',\n },\n form: {\n title: '폼',\n },\n },\n}\n","// Context & Hooks\nexport { I18nProvider, useI18n, useTranslation, useLocale, useT, useTypedT, getT } from './context'\n\n// Convenience: pre-typed hook for built-in I18nTranslations — no generic needed\n// Usage: const t = useAppT() instead of const t = useTypedT<I18nTranslations>()\nimport { useTypedT } from './context'\nimport type { I18nTranslations } from './types'\nexport const useAppT = () => useTypedT<I18nTranslations>()\n\n// Types\nexport type {\n I18nTranslations,\n PartialTranslations,\n LocaleCode,\n I18nContextValue,\n I18nProviderProps,\n DeepPartial,\n I18nKeys,\n I18nTranslationFn,\n} from './types'\n\n// Type-safe keys utilities\nexport type {\n PathKeys,\n TranslationFn,\n TypedTranslationFn,\n TranslationKeys,\n NestedKeyOf,\n NestedValueOf,\n NamespaceKeys,\n MessageKeys,\n IntlTranslator,\n} from './utils/path-keys'\n\n// Locales\nexport { en, ru, ko } from './locales'\n\n// Utils\nexport { interpolate, mergeTranslations, createTranslations } from './utils'\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@djangocfg/i18n",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.229",
|
|
4
4
|
"description": "Lightweight i18n library for @djangocfg packages with built-in translations for English, Russian, and Korean",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"i18n",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"consola": "^3.4.2"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
|
77
|
-
"@djangocfg/typescript-config": "^2.1.
|
|
77
|
+
"@djangocfg/typescript-config": "^2.1.229",
|
|
78
78
|
"@types/node": "^25.2.3",
|
|
79
79
|
"@types/react": "^19.1.0",
|
|
80
80
|
"eslint": "^9.37.0",
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
// Context & Hooks
|
|
2
2
|
export { I18nProvider, useI18n, useTranslation, useLocale, useT, useTypedT, getT } from './context'
|
|
3
3
|
|
|
4
|
+
// Convenience: pre-typed hook for built-in I18nTranslations — no generic needed
|
|
5
|
+
// Usage: const t = useAppT() instead of const t = useTypedT<I18nTranslations>()
|
|
6
|
+
import { useTypedT } from './context'
|
|
7
|
+
import type { I18nTranslations } from './types'
|
|
8
|
+
export const useAppT = () => useTypedT<I18nTranslations>()
|
|
9
|
+
|
|
4
10
|
// Types
|
|
5
11
|
export type {
|
|
6
12
|
I18nTranslations,
|