Customize UI strings and add language support to the social.plus UIKit
The social.plus UIKit ships with built-in English strings and a localization API that lets you add any language — or override individual strings — without forking the UIKit. English is the only built-in language. Any key missing from a custom locale bundle automatically resolves to its English value — no errors are thrown and no code changes are needed.
Option A — Bundle-based .lproj files (recommended)
Provide translations via standard iOS .lproj directories in your app bundle. The UIKit checks Bundle.main for AmityLocalizable.strings before falling back to its framework bundle — no code changes needed.
MyApp/└── Resources/ ├── en.lproj/AmityLocalizable.strings ← English overrides (optional) └── ja.lproj/AmityLocalizable.strings ← Japanese translations
iOS automatically selects the correct .lproj folder based on the device language. This approach follows the standard iOS localization pattern and is well-suited for teams where translation stakeholders are non-technical — they only need to edit .strings files without touching application code.Use the English reference file AmityLocalizable.strings as the source of truth for all available keys.
Generate translations with AI: Download the English .strings file linked above and paste it into an AI assistant (ChatGPT, Claude, Copilot) with the prompt: “Translate all values to [language]. Keep all keys, format specifiers (%@, %d, %s), and file format unchanged.” This is a fast way to get a complete draft — have a native speaker review the output before shipping.
Provide a [String: String] dictionary of translated keys and register it with each provider at runtime.
1
Create a locale bundle
Create a dictionary with the translated keys. You only need to include keys you’re translating — missing keys fall back to the built-in English values automatically.
Provide translations using standard Android resource directories in your app module. Since Android merges resources at build time, app-level strings override library-level strings automatically — no fork required.Add values-<language-code>/strings.xml files in your app module with the same amity_* resource names used by the UIKit:
app/src/main/res/├── values/strings.xml ← your app's default strings (unchanged)└── values-ja/strings.xml ← Japanese translations for UIKit keys
Android automatically selects the correct values-<lang>/ folder based on the device language. This approach follows the standard Android localization pattern and is well-suited for teams where translation stakeholders are non-technical — they only need to edit XML files without touching application code.For the full key list, refer to the English default strings.xml files in the Android UIKit open source repository:
You can also refer to the comprehensive LOCALIZATION_GUIDE.md in the repository for detailed instructions and examples.
Generate translations with AI: Download the English strings.xml files linked above and paste them into an AI assistant (ChatGPT, Claude, Copilot) with the prompt: “Translate all values to [language]. Keep all keys, format specifiers (%s, %d, %1$s), and XML format unchanged.” This is a fast way to get a complete draft — have a native speaker review the output before shipping.
Provide a Map<String, String> of translated keys and register it with the provider at runtime.
1
Initialize the providers
Call both providers in your Application.onCreate():
class MyApplication : Application() { override fun onCreate() { super.onCreate() DefaultAmitySocialStringProvider.initialize(this) DefaultAmityCommonStringProvider.initialize(this) }}
2
Create a locale bundle
Create a Kotlin object (or a plain Map<String, String>) with the translated keys. You only need to include keys you’re translating — missing keys fall back to the English strings.xml values automatically.
object MyJapaneseStrings { val social: Map<String, String> = mapOf( "amity_social_button_comments" to "コメント", "amity_social_button_delete_comment" to "コメントを削除", "amity_social_button_edit_comment" to "コメントを編集", ) val common: Map<String, String> = mapOf( "amity_common_button_cancel" to "キャンセル", "amity_common_button_done" to "完了", )}
3
Register the locale bundle
Call setLocale() on both providers — typically in Application.onCreate() after initialization, or in response to a user language-switch action:
To replace specific strings without changing the whole language, use setOverrides(). Overrides merge on top of any active locale.
DefaultAmitySocialStringProvider.setOverrides(mapOf( "amity_social_button_comments" to "Replies", "amity_social_modal_dialog_generic_error" to "Something went wrong. Please try again.",))DefaultAmityCommonStringProvider.setOverrides(mapOf( "amity_common_button_cancel" to "Dismiss",))
Social keys start with amity_social_; common keys start with amity_common_. When calling provider methods, use the correct provider for each key prefix.
Create a flat JSON file with the keys you want to translate. You only need to include keys you’re translating — missing keys automatically fall back to English.
The UIKit checks navigator.language — exact match first (e.g. "ja"), then language-prefix match (e.g. "ja-JP" → "ja"). Falls back to English if no match is found.
3
Verify coverage
Compare your translation file against en.json to identify missing keys. Any untranslated key silently falls back to English — no errors are thrown.
Generate translations with AI: Download the en.json file linked above and paste it into an AI assistant (ChatGPT, Claude, Copilot) with the prompt: “Translate all values to [language]. Keep all keys, format specifiers (%s, %d), and JSON format unchanged.” This is a fast way to get a complete draft — have a native speaker review the output before shipping.
Requires @amityco/react-native-social-uikitv4.3.1 or later. Only Chat UIKit strings go through this API; Social UIKit screens don’t. In v4.3.0 the package has no localization API — strings can only be changed by forking the UIKit.
Create a flat JSON file with the keys you want to translate. You only need to include keys you’re translating — missing keys automatically fall back to English.
Pass the bundle via localeMap on AmityUiKitProvider so the UIKit picks it from the device language:
import { AmityUiKitProvider } from '@amityco/react-native-social-uikit';import jaLocale from './locales/ja.json';<AmityUiKitProvider localization={{ localeMap: { ja: jaLocale, }, }}> <App /></AmityUiKitProvider>
The UIKit checks the device language — exact match first (e.g. "ja"), then language-prefix match (e.g. "ja-JP" → "ja"). Falls back to English if no match is found.
3
Verify coverage
Compare your translation file against en.json to identify missing keys. Any untranslated key silently falls back to English — no errors are thrown.
Generate translations with AI: Download the en.json file linked above and paste it into an AI assistant (ChatGPT, Claude, Copilot) with the prompt: “Translate all values to [language]. Keep all keys, format specifiers (%s, %d), and JSON format unchanged.” This is a fast way to get a complete draft — have a native speaker review the output before shipping.
English by default: English is the only built-in language. Without a localeMap, the UIKit doesn’t detect the device language and renders in English for every user.
useLocale controls the active locale. useString consumes strings and automatically re-renders all consumers when the locale changes. Both must be used inside AmityUiKitProvider.
import { Button, Text } from 'react-native';import { useLocale, useString } from '@amityco/react-native-social-uikit';import jaLocale from './locales/ja.json';function LanguageSwitcher() { const { setLocaleBundle, clearLocaleBundle } = useLocale(); return ( <> <Button title="日本語" onPress={() => setLocaleBundle(jaLocale)} /> <Button title="English" onPress={() => clearLocaleBundle()} /> </> );}// Any child component — automatically re-renders on locale changefunction ArchiveLabel() { const label = useString('amity_chat_archive'); return <Text>{label}</Text>;}
Version alignment: New UIKit releases may introduce new localization keys for new UI components or features. When upgrading, re-generate your translation files from the open source reference file that matches your UIKit version to ensure no keys are missing. Untranslated keys fall back to English silently, but keeping your translation files up to date ensures a fully localized experience.
config.json text overrides are deprecated for string customization. If you previously used config.json to override UI strings (e.g. button labels, error messages), you should migrate those overrides to the localization API described above — even if you don’t plan to add new languages.Existing config.json text overrides are still resolved gracefully for now, but this auto-resolution may be removed in a future release. New UI components and features will only support string customization through the localization system.config.json remains available for other configuration such as theme and UI element visibility — only string/text overrides are being deprecated.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"social.plus","description":"social.plus is a feature-rich SDK for building chat, communities, feeds, live video, and social experiences. Comprehensive documentation for the SDK, UIKit, and platform APIs.","colors":{"primary":"#3b41ec","light":"#6366f1","dark":"#3b41ec"},"logo":{"light":"https://mintcdn.com/social-b97141fb-auto-generate-llmstxt/5Nu8zIBxdzFlyN60/logo/light.svg?fit=max\u0026auto=format\u0026n=5Nu8zIBxdzFlyN60\u0026q=85\u0026s=d70ebb4697c1c68a517f8d2b1285380b","dark":"https://mintcdn.com/social-b97141fb-auto-generate-llmstxt/5Nu8zIBxdzFlyN60/logo/dark.svg?fit=max\u0026auto=format\u0026n=5Nu8zIBxdzFlyN60\u0026q=85\u0026s=9dcd11df21f29f9735969df59b3e2ffe"},"favicon":"https://mintcdn.com/social-b97141fb-auto-generate-llmstxt/HK8-O4u_NqMeCf6h/favicon.svg?fit=max\u0026auto=format\u0026n=HK8-O4u_NqMeCf6h\u0026q=85\u0026s=999025267802abd23424eecffd7059d4","navbar":{"primary":{"type":"button","label":"Talk to Sales","href":"https://www.social.plus/contact/contact-sales"}},"footer":{"socials":{"github":"https://github.com/Amityco","linkedin":"https://www.linkedin.com/company/socialpluscorp"}},"integrations":{"ga4":{"measurementId":"G-SVLMXB68RR"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"social-b97141fb-auto-generate-llmstxt","hasAudioNarration":false,"actualSubdomain":"social-b97141fb-auto-generate-llmstxt","customDomains":[],"gitSource":{"type":"github","owner":"amityco","repo":"social-plus-docs","deployBranch":"auto/generate-llmstxt","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"}},"buildId":"6af3fdbc5c6c81a2325e6971:success","clientVersion":"0.0.4102","preview":{"mainDeploymentId":"68243ed0c5d684616acac618","changedFiles":[],"mainDeployment":{"subdomain":"social-b97141fb","customDomains":["learn.social.plus"],"basePath":""}},"searchFilterCounts":[{"language":"default","tag":"API","count":593},{"language":"default","tag":"SDK","count":184},{"language":"default","tag":"Webhook event","count":101},{"language":"default","tag":"Realtime event","count":94},{"language":"default","tag":"Social","count":83},{"language":"default","tag":"Analytics \u0026 Moderation","count":58},{"language":"default","tag":"Content Management","count":44},{"language":"default","tag":"UIKit","count":41},{"language":"default","tag":"Chat","count":40},{"language":"default","tag":"Fundamentals","count":40}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"preview":{"mainDeploymentId":"68243ed0c5d684616acac618","changedFiles":[],"mainDeployment":{"subdomain":"social-b97141fb","customDomains":["learn.social.plus"],"basePath":""}},"editorBaseUrl":"https://app.mintlify.com/social-b97141fb/social-b97141fb/editor/auto%2Fgenerate-llmstxt/~","googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"/* latin-ext */\n@font-face {\n font-family: 'Figtree';\n font-style: italic;\n font-weight: 300;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xmu-HUzqDCFdgfMm4GNAa5o_ik.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Figtree';\n font-style: italic;\n font-weight: 300;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xmu-HUzqDCFdgfMm4GND65o.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Figtree';\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xmu-HUzqDCFdgfMm4GNAa5o_ik.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Figtree';\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xmu-HUzqDCFdgfMm4GND65o.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Figtree';\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xmu-HUzqDCFdgfMm4GNAa5o_ik.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Figtree';\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xmu-HUzqDCFdgfMm4GND65o.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Figtree';\n font-style: italic;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xmu-HUzqDCFdgfMm4GNAa5o_ik.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Figtree';\n font-style: italic;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xmu-HUzqDCFdgfMm4GND65o.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Figtree';\n font-style: italic;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xmu-HUzqDCFdgfMm4GNAa5o_ik.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Figtree';\n font-style: italic;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xmu-HUzqDCFdgfMm4GND65o.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Figtree';\n font-style: italic;\n font-weight: 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xmu-HUzqDCFdgfMm4GNAa5o_ik.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Figtree';\n font-style: italic;\n font-weight: 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xmu-HUzqDCFdgfMm4GND65o.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Figtree';\n font-style: italic;\n font-weight: 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xmu-HUzqDCFdgfMm4GNAa5o_ik.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Figtree';\n font-style: italic;\n font-weight: 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xmu-HUzqDCFdgfMm4GND65o.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Figtree';\n font-style: normal;\n font-weight: 300;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xms-HUzqDCFdgfMm4q9DbZs.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Figtree';\n font-style: normal;\n font-weight: 300;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xms-HUzqDCFdgfMm4S9DQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Figtree';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xms-HUzqDCFdgfMm4q9DbZs.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Figtree';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xms-HUzqDCFdgfMm4S9DQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Figtree';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xms-HUzqDCFdgfMm4q9DbZs.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Figtree';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xms-HUzqDCFdgfMm4S9DQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Figtree';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xms-HUzqDCFdgfMm4q9DbZs.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Figtree';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xms-HUzqDCFdgfMm4S9DQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Figtree';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xms-HUzqDCFdgfMm4q9DbZs.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Figtree';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xms-HUzqDCFdgfMm4S9DQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Figtree';\n font-style: normal;\n font-weight: 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xms-HUzqDCFdgfMm4q9DbZs.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Figtree';\n font-style: normal;\n font-weight: 800;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xms-HUzqDCFdgfMm4S9DQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Figtree';\n font-style: normal;\n font-weight: 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xms-HUzqDCFdgfMm4q9DbZs.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Figtree';\n font-style: normal;\n font-weight: 900;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/figtree/v9/_Xms-HUzqDCFdgfMm4S9DQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n:root{--hero-bg-primary: #ffffff;--hero-bg-secondary: rgba(59, 65, 236, 0.05);--hero-bg-gradient: radial-gradient(50% 50% at 50% 50%, rgba(59, 65, 236, 0.08) 39.4%, rgba(255, 255, 255, 0) 100%);--hero-text-primary: #1a1a2e;--hero-text-secondary: rgba(60, 60, 70, 0.8);--hero-line-color: rgba(0, 0, 0, 0.08);--hero-line-accent: rgba(0, 0, 0, 0.06);--search-bg: rgba(255, 255, 255, 0.8);--search-border: rgba(160, 160, 165, 0.3);--search-text: #1a1a2e;--search-placeholder: rgba(0, 0, 0, 0.6);--search-hover-bg: rgba(59, 65, 236, 0.1);--search-hover-border: rgba(59, 65, 236, 0.3);--card-bg: rgba(255, 255, 255, 0.8);--card-border: rgba(160, 160, 165, 0.3);--card-hover-bg: rgba(255, 255, 255, 0.95);--card-text: #1a1a2e;--card-text-secondary: rgba(60, 60, 70, 0.8)}.announcement-banner{position:relative;width:100%;box-sizing:border-box;margin:0 0 1rem 0;padding:0.65rem 1rem;background:linear-gradient(90deg, rgba(59,65,236,0.12), rgba(99,102,241,0.12));font-size:0.875rem;display:flex;justify-content:center;align-items:center;gap:.5rem;backdrop-filter:blur(6px);z-index:1}.announcement-banner .announcement-lead{font-weight:700;color:#1a1a2e}.announcement-banner .announcement-rest{color:#1f2230}.announcement-banner .announcement-link{color:#1a1a2e;text-decoration:underline;text-underline-offset:2px;font-weight:600}.announcement-banner .announcement-link:hover{text-decoration-thickness:2px}.announcement-banner .announcement-text{text-align:center}.announcement-banner a:hover{text-decoration:none}[data-theme=\"dark\"] .announcement-banner,html[data-theme=\"dark\"] .announcement-banner,.dark .announcement-banner,html.dark .announcement-banner{background:linear-gradient(90deg, rgba(59,65,236,0.22), rgba(99,102,241,0.22))}[data-theme=\"dark\"] .announcement-banner .announcement-lead,html[data-theme=\"dark\"] .announcement-banner .announcement-lead,.dark .announcement-banner .announcement-lead,html.dark .announcement-banner .announcement-lead{color:#ffffff}[data-theme=\"dark\"] .announcement-banner .announcement-rest,html[data-theme=\"dark\"] .announcement-banner .announcement-rest,.dark .announcement-banner .announcement-rest,html.dark .announcement-banner .announcement-rest{color:#f2f3ff}[data-theme=\"dark\"] .announcement-banner,html[data-theme=\"dark\"] .announcement-banner,.dark .announcement-banner,html.dark .announcement-banner{background:linear-gradient(90.08deg, #3B41EC 0%, #222586 100%)}[data-theme=\"dark\"] .announcement-banner .announcement-link,html[data-theme=\"dark\"] .announcement-banner .announcement-link,.dark .announcement-banner .announcement-link,html.dark .announcement-banner .announcement-link{color:#ffffff}[data-theme=\"dark\"] .announcement-banner .announcement-link:hover,html[data-theme=\"dark\"] .announcement-banner .announcement-link:hover,.dark .announcement-banner .announcement-link:hover,html.dark .announcement-banner .announcement-link:hover{text-decoration-thickness:2px}[data-theme=\"dark\"],html[data-theme=\"dark\"],.dark,html.dark{--hero-bg-primary: #0a0a0f;--hero-bg-secondary: rgba(10, 10, 15, 0);--hero-bg-gradient: radial-gradient(50% 50% at 50% 50%, rgba(59, 65, 236, 0.1) 39.4%, rgba(10, 10, 15, 0) 100%);--hero-text-primary: #ffffff;--hero-text-secondary: rgba(160, 160, 165, 1);--hero-line-color: rgba(255, 255, 255, 0.08);--hero-line-accent: rgba(255, 255, 255, 0.06);--search-bg: rgba(10, 10, 15, 0.5);--search-border: rgba(160, 160, 165, 0.5);--search-text: #ffffff;--search-placeholder: rgba(255, 255, 255, 0.6);--search-hover-bg: rgba(255, 255, 255, 0.15);--search-hover-border: rgba(255, 255, 255, 0.3);--card-bg: rgba(10, 10, 15, 0.5);--card-border: rgba(160, 160, 165, 0.5);--card-hover-bg: rgba(20, 20, 25, 0.8);--card-text: #ffffff;--card-text-secondary: rgba(160, 160, 165, 1)}html,body,*{font-family:'Figtree', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif!important}[data-theme=\"dark\"],[data-theme=\"light\"],.mintlify-content,.docs-content,.navigation,.sidebar,.content,.main-content{font-family:'Figtree', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif!important}h1,h2,h3,h4,h5,h6{font-family:'Figtree', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif!important;font-weight:600!important}p,span,div,a,li,td,th{font-family:'Figtree', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif!important;font-weight:400!important}.nav-item,.sidebar-item,button,input,select,textarea{font-family:'Figtree', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif!important}pre,code{font-family:'JetBrains Mono', 'Fira Code', 'Consolas', monospace!important}.card,.card *,.accordion,.accordion *,.tab,.tab *{font-family:'Figtree', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif!important}.hero-section{background:var(--hero-bg-gradient);background-color:var(--hero-bg-primary);min-height:60vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;margin:-2rem -2rem 4rem -2rem;padding:4rem 2rem;transition:background-color 0.3s ease, background 0.3s ease}.hero-section::before{content:'';position:absolute;top:10%;right:-10%;width:40%;height:80%;pointer-events:none;z-index:0;border-left:1px solid var(--hero-line-color);border-top:1px solid var(--hero-line-accent);border-radius:50% 0 0 50%;transform:rotate(-15deg);transition:border-color 0.3s ease}.hero-section::after{content:'';position:absolute;bottom:10%;left:-10%;width:40%;height:80%;pointer-events:none;z-index:0;border-right:1px solid var(--hero-line-color);border-bottom:1px solid var(--hero-line-accent);border-radius:0 50% 50% 0;transform:rotate(-15deg);transition:border-color 0.3s ease}.hero-section .hero-content::before{content:'';position:absolute;top:20%;right:10%;width:30%;height:1px;background:linear-gradient(90deg, transparent, var(--hero-line-color), transparent);transform:rotate(45deg);z-index:0;transition:background 0.3s ease}.hero-section .hero-content::after{content:'';position:absolute;bottom:20%;left:10%;width:30%;height:1px;background:linear-gradient(90deg, transparent, var(--hero-line-color), transparent);transform:rotate(-45deg);z-index:0;transition:background 0.3s ease}.hero-content{text-align:center;z-index:1;position:relative;max-width:64rem;width:100%}.hero-text{margin-top:4rem;margin-bottom:0rem}.hero-title{font-family:'Figtree', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;font-size:3.5rem;font-weight:900;color:var(--hero-text-primary);margin-bottom:1.5rem;line-height:1.1;text-shadow:0 4px 8px rgba(0, 0, 0, 0.3);transition:color 0.3s ease}@media (max-width: 768px){.hero-title{font-size:2.5rem}}.hero-description{font-family:'Figtree', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;font-size:1rem;font-weight:400;color:var(--hero-text-secondary);max-width:42rem;margin:0 auto;line-height:1.6;text-shadow:0 2px 4px rgba(0, 0, 0, 0.2);transition:color 0.3s ease}:root .hero-title,:not([data-theme=\"dark\"]) .hero-title,:not(.dark) .hero-title{text-shadow:0 2px 4px rgba(0, 0, 0, 0.1)}:root .hero-description,:not([data-theme=\"dark\"]) .hero-description,:not(.dark) .hero-description{text-shadow:none}:root .search-icon,:not([data-theme=\"dark\"]) .search-icon,:not(.dark) .search-icon{opacity:0.8}:root .hero-section::before,:root .hero-section::after,:not([data-theme=\"dark\"]) .hero-section::before,:not([data-theme=\"dark\"]) .hero-section::after,:not(.dark) .hero-section::before,:not(.dark) .hero-section::after{opacity:0.6}[data-theme=\"dark\"] .hero-title,html[data-theme=\"dark\"] .hero-title,.dark .hero-title,html.dark .hero-title{text-shadow:0 4px 8px rgba(0, 0, 0, 0.3)}[data-theme=\"dark\"] .hero-description,html[data-theme=\"dark\"] .hero-description,.dark .hero-description,html.dark .hero-description{text-shadow:0 2px 4px rgba(0, 0, 0, 0.2)}*{transition:background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease}:root .cards-section .card:hover h3,:root .cards-section .card:hover h4,:not([data-theme=\"dark\"]) .cards-section .card:hover h3,:not([data-theme=\"dark\"]) .cards-section .card:hover h4,:not(.dark) .cards-section .card:hover h3,:not(.dark) .cards-section .card:hover h4{color:rgba(59, 65, 236, 0.9)!important;text-shadow:none}[data-theme=\"dark\"] .cards-section .card:hover h3,[data-theme=\"dark\"] .cards-section .card:hover h4,html[data-theme=\"dark\"] .cards-section .card:hover h3,html[data-theme=\"dark\"] .cards-section .card:hover h4,.dark .cards-section .card:hover h3,.dark .cards-section .card:hover h4,html.dark .cards-section .card:hover h3,html.dark .cards-section .card:hover h4{color:rgba(99, 102, 241, 1)!important;text-shadow:0 0 12px rgba(99, 102, 241, 0.3)}.search-container{display:flex;justify-content:center;margin-top:1rem}.search-box{display:flex;align-items:center;background:var(--search-bg)!important;border:1px solid var(--search-border)!important;backdrop-filter:blur(10px);border-radius:0.75rem;padding:0.4rem 0.75rem;min-width:20rem;transition:all 0.3s ease;cursor:pointer}.search-box:hover{background:var(--search-hover-bg)!important;border-color:var(--search-hover-border)!important}.search-icon{margin-right:0.75rem;opacity:0.7}.search-input{flex:1;background:transparent;border:none;outline:none;color:var(--search-text);font-size:1rem;cursor:pointer;pointer-events:none;transition:color 0.3s ease}.search-input::placeholder{color:var(--search-placeholder);transition:color 0.3s ease}.search-shortcut{padding:0.2rem 0.5rem;border-radius:0.375rem;font-size:0.75rem;color:var(--search-text);margin-left:0.5rem;opacity:0.8;transition:color 0.3s ease, opacity 0.3s ease}.cards-section{max-width:64rem;margin:0 auto;padding:2rem}.cards-section .card,.hero-section+.cards-section .card{background:var(--card-bg)!important;border:1px solid var(--card-border)!important;text-align:left!important;transition:all 0.3s ease!important}.cards-section .card:hover{background:var(--card-hover-bg)!important;border-color:rgba(59, 65, 236, 0.4)!important;transform:translateY(-4px)!important;box-shadow:0 12px 24px rgba(0, 0, 0, 0.1),\n 0 4px 8px rgba(59, 65, 236, 0.15)!important}.cards-section .card h3,.cards-section .card h4,.cards-section .card p,.cards-section .card div{text-align:left!important;color:var(--card-text)!important;transition:color 0.3s ease!important}.cards-section .card p{color:var(--card-text-secondary)!important}.cards-section .card:hover h3,.cards-section .card:hover h4{color:rgba(59, 65, 236, 1)!important}@media (max-width: 768px){.hero-section{margin:-1rem -1rem 2rem -1rem;padding:3rem 1rem;min-height:50vh}.search-box{min-width:16rem}.cards-section{padding:1rem}}.cards-section .card{transition:all 0.4s cubic-bezier(0.23, 1, 0.32, 1)!important;transform:perspective(1000px) rotateX(0deg) rotateY(0deg) translateZ(0)!important;transform-style:preserve-3d!important;position:relative!important;overflow:hidden!important}.cards-section .card::before{content:'';position:absolute;top:-2px;left:-2px;right:-2px;bottom:-2px;background:linear-gradient(45deg, \n rgba(59, 65, 236, 0.3), \n rgba(99, 102, 241, 0.2), \n rgba(59, 65, 236, 0.1),\n rgba(59, 65, 236, 0.4)\n );background-size:300% 300%;border-radius:inherit;z-index:-1;opacity:0;animation:gradientShift 3s ease infinite;transition:opacity 0.3s ease}@keyframes gradientShift{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}.cards-section .card:hover{transform:perspective(1000px) rotateX(5deg) rotateY(-5deg) translateZ(20px) scale(1.02)!important;border-color:transparent!important;box-shadow:0 25px 50px rgba(0, 0, 0, 0.2),\n 0 0 30px rgba(59, 65, 236, 0.3),\n inset 0 1px 0 rgba(59, 65, 236, 0.1)!important}[data-theme=\"dark\"] .cards-section .card:hover,html[data-theme=\"dark\"] .cards-section .card:hover,.dark .cards-section .card:hover,html.dark .cards-section .card:hover{background:rgba(20, 20, 25, 0.8)!important;box-shadow:0 25px 50px rgba(0, 0, 0, 0.4),\n 0 0 30px rgba(59, 65, 236, 0.3),\n inset 0 1px 0 rgba(255, 255, 255, 0.1)!important}:root .cards-section .card:hover,:not([data-theme=\"dark\"]) .cards-section .card:hover,:not(.dark) .cards-section .card:hover{background:rgba(255, 255, 255, 0.95)!important;box-shadow:0 25px 50px rgba(0, 0, 0, 0.15),\n 0 0 30px rgba(59, 65, 236, 0.2),\n inset 0 1px 0 rgba(59, 65, 236, 0.1)!important}.cards-section .card:hover::before{opacity:1}.search-box{transition:all 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55);position:relative;overflow:visible}.search-box::before{content:'';position:absolute;top:50%;left:50%;width:4px;height:4px;background:rgba(59, 65, 236, 0.8);border-radius:50%;transform:translate(-50%, -50%);opacity:0;transition:all 0.6s ease;box-shadow:0 0 0 0 rgba(59, 65, 236, 0.6),\n 10px -10px 0 0 rgba(99, 102, 241, 0.6),\n -10px 10px 0 0 rgba(139, 92, 246, 0.6),\n 15px 15px 0 0 rgba(59, 65, 236, 0.4),\n -15px -15px 0 0 rgba(99, 102, 241, 0.4)}.search-box:hover{background:var(--search-hover-bg)!important;border-color:rgba(59, 65, 236, 0.7)!important;transform:scale(1.05);box-shadow:0 20px 40px rgba(0, 0, 0, 0.1),\n 0 0 60px rgba(59, 65, 236, 0.4),\n inset 0 1px 0 rgba(59, 65, 236, 0.2)}[data-theme=\"dark\"] .search-box:hover,html[data-theme=\"dark\"] .search-box:hover,.dark .search-box:hover,html.dark .search-box:hover{background:rgba(255, 255, 255, 0.15)!important;border-color:rgba(255, 255, 255, 0.3)!important;box-shadow:0 20px 40px rgba(0, 0, 0, 0.25),\n 0 0 60px rgba(59, 65, 236, 0.4),\n inset 0 1px 0 rgba(255, 255, 255, 0.2)}:root .search-box:hover,:not([data-theme=\"dark\"]) .search-box:hover,:not(.dark) .search-box:hover{background:rgba(59, 65, 236, 0.1)!important;border-color:rgba(59, 65, 236, 0.3)!important;box-shadow:0 20px 40px rgba(0, 0, 0, 0.1),\n 0 0 60px rgba(59, 65, 236, 0.4),\n inset 0 1px 0 rgba(59, 65, 236, 0.2)}.search-box:hover::before{opacity:1;transform:translate(-50%, -50%) scale(1.5)}.search-icon{transition:all 0.5s cubic-bezier(0.34, 1.56, 0.64, 1)}.search-box:hover .search-icon{transform:scale(1.3);opacity:1;filter:drop-shadow(0 0 8px rgba(59, 65, 236, 0.3))}.search-shortcut{transition:all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1)}.search-box:hover .search-shortcut{background:rgba(59, 65, 236, 0.7);transform:scale(1.05);backdrop-filter:blur(12px);box-shadow:0 2px 8px rgba(59, 65, 236, 0.2)}.cards-section .card h3,.cards-section .card h4{transition:all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1)!important;position:relative;z-index:2}.cards-section .card:hover h3,.cards-section .card:hover h4{color:rgba(99, 102, 241, 1)!important;transform:translateY(-2px);text-shadow:0 0 12px rgba(99, 102, 241, 0.3)}.cards-section .card p{transition:all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1)!important;position:relative;z-index:2}.cards-section .card:hover p{transform:translateY(-1px)}.cards-section .card::after{content:'';position:absolute;top:50%;left:50%;width:0;height:0;background:radial-gradient(circle, rgba(59, 65, 236, 0.15) 0%, rgba(255, 255, 255, 0.05) 50%, transparent 70%);border-radius:50%;transform:translate(-50%, -50%);transition:all 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);z-index:1;pointer-events:none}.cards-section .card:active::after{width:250px;height:250px}.cards-section .card:focus-visible{outline:2px solid rgba(59, 65, 236, 0.7);outline-offset:3px;box-shadow:0 0 0 4px rgba(59, 65, 236, 0.15)}.search-box:focus-within{border-color:rgba(59, 65, 236, 0.6)!important;box-shadow:0 0 0 4px rgba(59, 65, 236, 0.15),\n 0 8px 20px rgba(0, 0, 0, 0.15)}.cards-section .card:active::after{width:300px;height:300px}[data-theme=\"dark\"] .hero-section,html[data-theme=\"dark\"] .hero-section,.dark .hero-section,html.dark .hero-section{background:radial-gradient(50% 50% at 50% 50%, rgba(59, 65, 236, 0.1) 39.4%, rgba(10, 10, 15, 0) 100%)!important;background-color:#0a0a0f!important}[data-theme=\"dark\"] .hero-title,html[data-theme=\"dark\"] .hero-title,.dark .hero-title,html.dark .hero-title{color:#ffffff!important}[data-theme=\"dark\"] .hero-description,html[data-theme=\"dark\"] .hero-description,.dark .hero-description,html.dark .hero-description{color:rgba(160, 160, 165, 1)!important}[data-theme=\"dark\"] .search-box,html[data-theme=\"dark\"] .search-box,.dark .search-box,html.dark .search-box{background:rgba(10, 10, 15, 0.5)!important;border:1px solid rgba(160, 160, 165, 0.5)!important}[data-theme=\"dark\"] .search-input,html[data-theme=\"dark\"] .search-input,.dark .search-input,html.dark .search-input{color:#ffffff!important}[data-theme=\"dark\"] .search-input::placeholder,html[data-theme=\"dark\"] .search-input::placeholder,.dark .search-input::placeholder,html.dark .search-input::placeholder{color:rgba(255, 255, 255, 0.6)!important}[data-theme=\"dark\"] .search-shortcut,html[data-theme=\"dark\"] .search-shortcut,.dark .search-shortcut,html.dark .search-shortcut{color:rgba(255, 255, 255, 0.8)!important}[data-theme=\"dark\"] .cards-section .card,html[data-theme=\"dark\"] .cards-section .card,.dark .cards-section .card,html.dark .cards-section .card{background:rgba(10, 10, 15, 0.5)!important;border:1px solid rgba(160, 160, 165, 0.5)!important}[data-theme=\"dark\"] .cards-section .card h3,[data-theme=\"dark\"] .cards-section .card h4,[data-theme=\"dark\"] .cards-section .card p,html[data-theme=\"dark\"] .cards-section .card h3,html[data-theme=\"dark\"] .cards-section .card h4,html[data-theme=\"dark\"] .cards-section .card p,.dark .cards-section .card h3,.dark .cards-section .card h4,.dark .cards-section .card p,html.dark .cards-section .card h3,html.dark .cards-section .card h4,html.dark .cards-section .card p{color:#ffffff!important}[data-theme=\"dark\"] .cards-section .card p,html[data-theme=\"dark\"] .cards-section .card p,.dark .cards-section .card p,html.dark .cards-section .card p{color:rgba(160, 160, 165, 1)!important}[data-theme=\"dark\"] .hero-section::before,[data-theme=\"dark\"] .hero-section::after,html[data-theme=\"dark\"] .hero-section::before,html[data-theme=\"dark\"] .hero-section::after,.dark .hero-section::before,.dark .hero-section::after,html.dark .hero-section::before,html.dark .hero-section::after{border-color:rgba(255, 255, 255, 0.08)!important}[data-theme=\"dark\"] .hero-section::before,html[data-theme=\"dark\"] .hero-section::before,.dark .hero-section::before,html.dark .hero-section::before{border-left-color:rgba(255, 255, 255, 0.08)!important;border-top-color:rgba(255, 255, 255, 0.06)!important}[data-theme=\"dark\"] .hero-section::after,html[data-theme=\"dark\"] .hero-section::after,.dark .hero-section::after,html.dark .hero-section::after{border-right-color:rgba(255, 255, 255, 0.08)!important;border-bottom-color:rgba(255, 255, 255, 0.06)!important}[data-theme=\"dark\"] .hero-section .hero-content::before,[data-theme=\"dark\"] .hero-section .hero-content::after,html[data-theme=\"dark\"] .hero-section .hero-content::before,html[data-theme=\"dark\"] .hero-section .hero-content::after,.dark .hero-section .hero-content::before,.dark .hero-section .hero-content::after,html.dark .hero-section .hero-content::before,html.dark .hero-section .hero-content::after{background:linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent)!important}.hero-section,.hero-section *,.search-container,.search-container *,.cards-section,.cards-section *{font-family:'Figtree', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif!important}.search-input{font-weight:400}.search-shortcut{font-weight:500}.cards-section .card h3,.cards-section .card h4{font-weight:600!important}.cards-section .card p{font-weight:400!important}"}],"page":{"pagePath":"uikit/customization/localization","slug":"/uikit/customization/localization","pageMetadata":{"title":"Localization","description":"Customize UI strings and add language support to the social.plus UIKit","href":"/uikit/customization/localization"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Customize UI strings and add language support to the social.plus UIKit\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,CodeBlock,Heading,Info,Note,Step,Steps,Tab,Tabs,Tip,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`The social.plus UIKit ships with built-in English strings and a localization API that lets you add any language — or override individual strings — without forking the UIKit. English is the only built-in language. Any key missing from a custom locale bundle automatically resolves to its English value — no errors are thrown and no code changes are needed.`}),`\n`,_jsx(Heading,{level:`2`,id:`platform-implementation`,children:`Platform Implementation`}),`\n`,_jsx(_components.p,{children:`Select your platform below for API details and integration code.`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`iOS (Swift)`,id:`ios-swift`,\"data-child-heading-ids\":`[\"how-to-add-a-new-language\",\"option-a-%E2%80%94-bundle-based-lproj-files-recommended\",\"option-b-%E2%80%94-programmatic-via-string-provider-api\",\"option-c-%E2%80%94-override-individual-keys\"]`,children:[_jsx(Heading,{level:`3`,id:`how-to-add-a-new-language`,children:`How to Add a New Language`}),_jsxs(Heading,{level:`4`,id:`option-a-—-bundle-based-lproj-files-recommended`,children:[`Option A — Bundle-based `,_jsx(_components.code,{children:`.lproj`}),` files (recommended)`]}),_jsxs(_components.p,{children:[`Provide translations via standard iOS `,_jsx(_components.code,{children:`.lproj`}),` directories in your app bundle. The UIKit checks `,_jsx(_components.code,{children:`Bundle.main`}),` for `,_jsx(_components.code,{children:`AmityLocalizable.strings`}),` before falling back to its framework bundle — no code changes needed.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`MyApp/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`└── Resources/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ├── en.lproj/AmityLocalizable.strings ← English overrides (optional)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` └── ja.lproj/AmityLocalizable.strings ← Japanese translations`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`/* ja.lproj/AmityLocalizable.strings */`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`\"amity_common_button_cancel\" = \"キャンセル\";`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`\"amity_common_button_delete\" = \"削除\";`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`\"amity_social_button_comments\" = \"コメント\";`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsxs(_components.p,{children:[`iOS automatically selects the correct `,_jsx(_components.code,{children:`.lproj`}),` folder based on the device language. This approach follows the standard iOS localization pattern and is well-suited for teams where translation stakeholders are non-technical — they only need to edit `,_jsx(_components.code,{children:`.strings`}),` files without touching application code.`]}),_jsxs(_components.p,{children:[`Use the English reference file `,_jsx(_components.a,{href:`https://github.com/AmityCo/ASC-UIKit-iOS-OpenSource/blob/main/UpstraUIKit/AmityUIKit4/AmityUIKit4/Core/Localization/en.lproj/AmityLocalizable.strings`,children:_jsx(_components.code,{children:`AmityLocalizable.strings`})}),` as the source of truth for all available keys.`]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Generate translations with AI:`}),` Download the English `,_jsx(_components.code,{children:`.strings`}),` file linked above and paste it into an AI assistant (ChatGPT, Claude, Copilot) with the prompt: `,_jsxs(_components.em,{children:[`“Translate all values to [language]. Keep all keys, format specifiers (`,_jsx(_components.code,{children:`%@`}),`, `,_jsx(_components.code,{children:`%d`}),`, `,_jsx(_components.code,{children:`%s`}),`), and file format unchanged.”`]}),` This is a fast way to get a complete draft — have a native speaker review the output before shipping.`]})}),_jsx(Heading,{level:`4`,id:`option-b-—-programmatic-via-string-provider-api`,children:`Option B — Programmatic via String Provider API`}),_jsxs(_components.p,{children:[`Provide a `,_jsx(_components.code,{children:`[String: String]`}),` dictionary of translated keys and register it with each provider at runtime.`]}),_jsxs(Steps,{children:[_jsxs(Step,{title:`Create a locale bundle`,children:[_jsx(_components.p,{children:`Create a dictionary with the translated keys. You only need to include keys you’re translating — missing keys fall back to the built-in English values automatically.`}),_jsx(CodeBlock,{filename:``,numberOfLines:`16`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`16`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`struct`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` MyJapaneseStrings`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` static`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` social: [`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"amity_social_button_comments\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"コメント\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"amity_social_button_delete_comment\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"コメントを削除\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"amity_social_button_edit_comment\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"コメントを編集\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` static`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` common: [`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"amity_common_button_cancel\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"キャンセル\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"amity_common_button_done\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"完了\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` static`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` chat: [`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"amity_chat_edit_message\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"メッセージを編集\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]}),_jsxs(Step,{title:`Register the locale bundle`,children:[_jsxs(_components.p,{children:[`Call `,_jsx(_components.code,{children:`setLocale`}),` on each provider — typically at app launch or in response to a user language-switch action:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`AmityStringProvider.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`social`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`setLocale`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ja\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`bundle`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: MyJapaneseStrings.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`social`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`AmityStringProvider.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`common`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`setLocale`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ja\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`bundle`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: MyJapaneseStrings.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`common`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`AmityStringProvider.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`chat`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`setLocale`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ja\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`bundle`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: MyJapaneseStrings.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`chat`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),_jsx(_components.p,{children:`To revert to the default English strings:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`AmityStringProvider.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`social`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`deactivateLocale`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`AmityStringProvider.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`common`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`deactivateLocale`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`AmityStringProvider.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`chat`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`deactivateLocale`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`]})})})]})]}),_jsx(Heading,{level:`4`,id:`option-c-—-override-individual-keys`,children:`Option C — Override individual keys`}),_jsxs(_components.p,{children:[`To replace specific strings without changing the whole language, use `,_jsx(_components.code,{children:`setOverrides()`}),`. Overrides merge on top of any active locale.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`AmityStringProvider.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`social`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`setOverrides`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`([`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"amity_social_button_comments\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Replies\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"amity_social_modal_dialog_generic_error\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Something went wrong. Please try again.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`])`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`AmityStringProvider.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`common`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`setOverrides`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`([`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"amity_common_button_cancel\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Dismiss\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`])`})}),`\n`]})})}),_jsx(_components.p,{children:`To clear overrides:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`AmityStringProvider.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`social`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`clearOverrides`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`AmityStringProvider.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`common`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`clearOverrides`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`]})})})]}),_jsxs(Tab,{title:`Android (Kotlin)`,id:`android-kotlin`,\"data-child-heading-ids\":`[\"how-to-add-a-new-language-2\",\"option-a-%E2%80%94-android-resource-files-recommended\",\"option-b-%E2%80%94-locale-bundle-via-string-provider-api\",\"option-c-%E2%80%94-override-individual-keys-2\"]`,children:[_jsx(Heading,{level:`3`,id:`how-to-add-a-new-language-2`,children:`How to Add a New Language`}),_jsx(Heading,{level:`4`,id:`option-a-—-android-resource-files-recommended`,children:`Option A — Android resource files (recommended)`}),_jsxs(_components.p,{children:[`Provide translations using standard Android resource directories in your `,_jsx(_components.strong,{children:`app module`}),`. Since Android merges resources at build time, app-level strings override library-level strings automatically — no fork required.`]}),_jsxs(_components.p,{children:[`Add `,_jsx(_components.code,{children:`values-\u003clanguage-code>/strings.xml`}),` files in your app module with the same `,_jsx(_components.code,{children:`amity_*`}),` resource names used by the UIKit:`]}),_jsx(CodeBlock,{numberOfLines:`4`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`app/src/main/res/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`├── values/strings.xml ← your app's default strings (unchanged)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`└── values-ja/strings.xml ← Japanese translations for UIKit keys`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`xml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`xml`,children:_jsxs(_components.code,{language:`xml`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`\u003c!-- app/src/main/res/values-ja/strings.xml -->`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`resources`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"amity_common_button_cancel\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`キャンセル`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"amity_common_button_delete\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`削除`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"amity_social_button_comments\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`コメント`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`resources`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Android automatically selects the correct `,_jsx(_components.code,{children:`values-\u003clang>/`}),` folder based on the device language. This approach follows the standard Android localization pattern and is well-suited for teams where translation stakeholders are non-technical — they only need to edit XML files without touching application code.`]}),_jsxs(_components.p,{children:[`For the full key list, refer to the English default `,_jsx(_components.code,{children:`strings.xml`}),` files in the `,_jsx(_components.a,{href:`https://github.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource`,children:`Android UIKit open source repository`}),`:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://github.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/blob/main/social-compose/src/main/res/values/strings.xml`,children:_jsx(_components.code,{children:`social-compose/.../values/strings.xml`})}),` (social keys)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://github.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/blob/main/common-compose/src/main/res/values/strings.xml`,children:_jsx(_components.code,{children:`common-compose/.../values/strings.xml`})}),` (common keys)`]}),`\n`]}),_jsxs(_components.p,{children:[`You can also refer to the comprehensive `,_jsx(_components.a,{href:`https://github.com/AmityCo/Amity-Social-Cloud-UIKit-Android-OpenSource/blob/main/LOCALIZATION_GUIDE.md`,children:_jsx(_components.code,{children:`LOCALIZATION_GUIDE.md`})}),` in the repository for detailed instructions and examples.`]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Generate translations with AI:`}),` Download the English `,_jsx(_components.code,{children:`strings.xml`}),` files linked above and paste them into an AI assistant (ChatGPT, Claude, Copilot) with the prompt: `,_jsxs(_components.em,{children:[`“Translate all values to [language]. Keep all keys, format specifiers (`,_jsx(_components.code,{children:`%s`}),`, `,_jsx(_components.code,{children:`%d`}),`, `,_jsx(_components.code,{children:`%1$s`}),`), and XML format unchanged.”`]}),` This is a fast way to get a complete draft — have a native speaker review the output before shipping.`]})}),_jsx(Heading,{level:`4`,id:`option-b-—-locale-bundle-via-string-provider-api`,children:`Option B — Locale bundle via String Provider API`}),_jsxs(_components.p,{children:[`Provide a `,_jsx(_components.code,{children:`Map\u003cString, String>`}),` of translated keys and register it with the provider at runtime.`]}),_jsxs(Steps,{children:[_jsxs(Step,{title:`Initialize the providers`,children:[_jsxs(_components.p,{children:[`Call both providers in your `,_jsx(_components.code,{children:`Application.onCreate()`}),`:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`kotlin`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`kotlin`,children:_jsxs(_components.code,{language:`kotlin`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`class`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` MyApplication`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` : `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`Application`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` override`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` fun`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` onCreate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` super`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`onCreate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` DefaultAmitySocialStringProvider.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`initialize`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`this`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` DefaultAmityCommonStringProvider.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`initialize`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`this`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]}),_jsxs(Step,{title:`Create a locale bundle`,children:[_jsxs(_components.p,{children:[`Create a Kotlin object (or a plain `,_jsx(_components.code,{children:`Map\u003cString, String>`}),`) with the translated keys. You only need to include keys you’re translating — missing keys fall back to the English `,_jsx(_components.code,{children:`strings.xml`}),` values automatically.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`12`,language:`kotlin`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`kotlin`,children:_jsxs(_components.code,{language:`kotlin`,numberOfLines:`12`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`object`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` MyJapaneseStrings`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` val`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` social: `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`Map`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`> `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` mapOf`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"amity_social_button_comments\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` to `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"コメント\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"amity_social_button_delete_comment\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` to `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"コメントを削除\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"amity_social_button_edit_comment\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` to `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"コメントを編集\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` )`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` val`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` common: `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`Map`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`> `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` mapOf`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"amity_common_button_cancel\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` to `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"キャンセル\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"amity_common_button_done\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` to `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"完了\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` )`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]}),_jsxs(Step,{title:`Register the locale bundle`,children:[_jsxs(_components.p,{children:[`Call `,_jsx(_components.code,{children:`setLocale()`}),` on both providers — typically in `,_jsx(_components.code,{children:`Application.onCreate()`}),` after initialization, or in response to a user language-switch action:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`kotlin`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`kotlin`,children:_jsxs(_components.code,{language:`kotlin`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`DefaultAmitySocialStringProvider.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`setLocale`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ja\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, MyJapaneseStrings.social)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`DefaultAmityCommonStringProvider.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`setLocale`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ja\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, MyJapaneseStrings.common)`})]}),`\n`]})})}),_jsx(_components.p,{children:`To revert to the default English resources:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`kotlin`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`kotlin`,children:_jsxs(_components.code,{language:`kotlin`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`DefaultAmitySocialStringProvider.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`getInstance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`().`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`clearLocale`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`DefaultAmityCommonStringProvider.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`getInstance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`().`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`clearLocale`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`]})})})]})]}),_jsx(Heading,{level:`4`,id:`option-c-—-override-individual-keys-2`,children:`Option C — Override individual keys`}),_jsxs(_components.p,{children:[`To replace specific strings without changing the whole language, use `,_jsx(_components.code,{children:`setOverrides()`}),`. Overrides merge on top of any active locale.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`kotlin`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`kotlin`,children:_jsxs(_components.code,{language:`kotlin`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`DefaultAmitySocialStringProvider.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`setOverrides`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`mapOf`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"amity_social_button_comments\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` to `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Replies\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"amity_social_modal_dialog_generic_error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` to `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Something went wrong. Please try again.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`))`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`DefaultAmityCommonStringProvider.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`setOverrides`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`mapOf`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"amity_common_button_cancel\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` to `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Dismiss\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`))`})}),`\n`]})})}),_jsx(_components.p,{children:`To clear overrides:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`kotlin`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`kotlin`,children:_jsxs(_components.code,{language:`kotlin`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`DefaultAmitySocialStringProvider.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`getInstance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`().`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`clearOverrides`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`DefaultAmityCommonStringProvider.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`getInstance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`().`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`clearOverrides`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`]})})}),_jsx(Note,{children:_jsxs(_components.p,{children:[`Social keys start with `,_jsx(_components.code,{children:`amity_social_`}),`; common keys start with `,_jsx(_components.code,{children:`amity_common_`}),`. When calling provider methods, use the correct provider for each key prefix.`]})})]}),_jsxs(Tab,{title:`Web (React)`,id:`web-react`,\"data-child-heading-ids\":`[\"how-to-add-a-new-language-3\",\"other-scenarios\"]`,children:[_jsx(Heading,{level:`3`,id:`how-to-add-a-new-language-3`,children:`How to Add a New Language`}),_jsxs(Steps,{children:[_jsxs(Step,{title:`Create a translation file`,children:[_jsx(_components.p,{children:`Create a flat JSON file with the keys you want to translate. You only need to include keys you’re translating — missing keys automatically fall back to English.`}),_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"amity_common_button_cancel\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"キャンセル\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"amity_common_button_delete\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"削除\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"amity_social_button_block_user\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ユーザーをブロック\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]}),_jsxs(Step,{title:`Register via localeMap`,children:[_jsxs(_components.p,{children:[`Pass the bundle via `,_jsx(_components.code,{children:`localeMap`}),` on `,_jsx(_components.code,{children:`AmityUIKitProvider`}),` so the UIKit auto-detects it from `,_jsx(_components.code,{children:`navigator.language`}),`:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`11`,language:`tsx`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`tsx`,children:_jsxs(_components.code,{language:`tsx`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` jaLocale`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` './locales/ja.json'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#4EC9B0`},children:`AmityUIKitProvider`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` localization`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` localeMap:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` ja:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` jaLocale`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`}`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#4EC9B0`},children:`App`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` />`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#4EC9B0`},children:`AmityUIKitProvider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`The UIKit checks `,_jsx(_components.code,{children:`navigator.language`}),` — exact match first (e.g. `,_jsx(_components.code,{children:`\"ja\"`}),`), then language-prefix match (e.g. `,_jsx(_components.code,{children:`\"ja-JP\"`}),` → `,_jsx(_components.code,{children:`\"ja\"`}),`). Falls back to English if no match is found.`]})]}),_jsxs(Step,{title:`Verify coverage`,children:[_jsxs(_components.p,{children:[`Compare your translation file against `,_jsx(_components.a,{href:`https://github.com/AmityCo/Amity-Social-Cloud-UIKit-Web-OpenSource/blob/master/src/v4/core/localization/defaults/en.json`,children:_jsx(_components.code,{children:`en.json`})}),` to identify missing keys. Any untranslated key silently falls back to English — no errors are thrown.`]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Generate translations with AI:`}),` Download the `,_jsx(_components.code,{children:`en.json`}),` file linked above and paste it into an AI assistant (ChatGPT, Claude, Copilot) with the prompt: `,_jsxs(_components.em,{children:[`“Translate all values to [language]. Keep all keys, format specifiers (`,_jsx(_components.code,{children:`%s`}),`, `,_jsx(_components.code,{children:`%d`}),`), and JSON format unchanged.”`]}),` This is a fast way to get a complete draft — have a native speaker review the output before shipping.`]})})]})]}),_jsx(Heading,{level:`3`,id:`other-scenarios`,children:`Other Scenarios`}),_jsxs(AccordionGroup,{children:[_jsxs(Accordion,{title:`Override specific strings`,id:`override-specific-strings`,children:[_jsxs(_components.p,{children:[`Use the `,_jsx(_components.code,{children:`overrides`}),` prop to replace individual keys without providing a full locale bundle. Overrides merge on top of the active locale.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`tsx`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`tsx`,children:_jsxs(_components.code,{language:`tsx`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#4EC9B0`},children:`AmityUIKitProvider`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` localization`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` overrides:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'amity_common_button_cancel'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Dismiss'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'amity_social_button_delete_post_title'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Remove this post?'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`}`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#4EC9B0`},children:`App`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` />`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#4EC9B0`},children:`AmityUIKitProvider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})})]}),_jsxs(Accordion,{title:`Switch locale at runtime`,id:`switch-locale-at-runtime`,children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`useLocale`}),` controls the active locale. `,_jsx(_components.code,{children:`useString`}),` consumes strings and automatically re-renders all consumers when the locale changes.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`19`,language:`tsx`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`tsx`,children:_jsxs(_components.code,{language:`tsx`,numberOfLines:`19`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`useLocale`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`useString`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@amityco/ui-kit'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` jaLocale`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` './locales/ja.json'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` LanguageSwitcher`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`setLocaleBundle`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`clearLocaleBundle`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` useLocale`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c>`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`button`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` onClick`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` setLocaleBundle`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`jaLocale`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`日本語`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`button`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`button`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` onClick`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` clearLocaleBundle`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`English`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`button`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c/>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` );`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Any child component — automatically re-renders on locale change`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` CancelButton`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` label`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` useString`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'amity_common_button_cancel'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`button`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`label`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`button`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]})]})]}),_jsxs(Tab,{title:`React Native`,id:`react-native`,\"data-child-heading-ids\":`[\"how-to-add-a-new-language-4\",\"other-scenarios-2\"]`,children:[_jsx(Info,{children:_jsxs(_components.p,{children:[`Requires `,_jsx(_components.code,{children:`@amityco/react-native-social-uikit`}),` `,_jsx(_components.strong,{children:`v4.3.1`}),` or later. Only Chat UIKit strings go through this API; Social UIKit screens don’t. In v4.3.0 the package has no localization API — strings can only be changed by `,_jsx(_components.a,{href:`/uikit/getting-started/installation#github-fork-installation`,children:`forking the UIKit`}),`.`]})}),_jsx(Heading,{level:`3`,id:`how-to-add-a-new-language-4`,children:`How to Add a New Language`}),_jsxs(Steps,{children:[_jsxs(Step,{title:`Create a translation file`,children:[_jsx(_components.p,{children:`Create a flat JSON file with the keys you want to translate. You only need to include keys you’re translating — missing keys automatically fall back to English.`}),_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"amity_chat_archive\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"アーカイブ\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"amity_chat_unarchive\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"アーカイブ解除\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"amity_chat_action_block_user\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ユーザーをブロック\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]}),_jsxs(Step,{title:`Register via localeMap`,children:[_jsxs(_components.p,{children:[`Pass the bundle via `,_jsx(_components.code,{children:`localeMap`}),` on `,_jsx(_components.code,{children:`AmityUiKitProvider`}),` so the UIKit picks it from the device language:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`12`,language:`tsx`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`tsx`,children:_jsxs(_components.code,{language:`tsx`,numberOfLines:`12`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`AmityUiKitProvider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@amityco/react-native-social-uikit'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` jaLocale`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` './locales/ja.json'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#4EC9B0`},children:`AmityUiKitProvider`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` localization`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` localeMap:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` ja:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` jaLocale`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`}`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#4EC9B0`},children:`App`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` />`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#4EC9B0`},children:`AmityUiKitProvider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`The UIKit checks the device language — exact match first (e.g. `,_jsx(_components.code,{children:`\"ja\"`}),`), then language-prefix match (e.g. `,_jsx(_components.code,{children:`\"ja-JP\"`}),` → `,_jsx(_components.code,{children:`\"ja\"`}),`). Falls back to English if no match is found.`]})]}),_jsxs(Step,{title:`Verify coverage`,children:[_jsxs(_components.p,{children:[`Compare your translation file against `,_jsx(_components.a,{href:`https://github.com/AmityCo/Amity-Social-UIKit-React-Native-CLI-OpenSource/blob/develop/src/core/localization/defaults/en.json`,children:_jsx(_components.code,{children:`en.json`})}),` to identify missing keys. Any untranslated key silently falls back to English — no errors are thrown.`]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Generate translations with AI:`}),` Download the `,_jsx(_components.code,{children:`en.json`}),` file linked above and paste it into an AI assistant (ChatGPT, Claude, Copilot) with the prompt: `,_jsxs(_components.em,{children:[`“Translate all values to [language]. Keep all keys, format specifiers (`,_jsx(_components.code,{children:`%s`}),`, `,_jsx(_components.code,{children:`%d`}),`), and JSON format unchanged.”`]}),` This is a fast way to get a complete draft — have a native speaker review the output before shipping.`]})})]})]}),_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`English by default:`}),` English is the only built-in language. Without a `,_jsx(_components.code,{children:`localeMap`}),`, the UIKit doesn’t detect the device language and renders in English for every user.`]})}),_jsx(Heading,{level:`3`,id:`other-scenarios-2`,children:`Other Scenarios`}),_jsxs(AccordionGroup,{children:[_jsxs(Accordion,{title:`Use one language for every user`,id:`use-one-language-for-every-user`,children:[_jsxs(_components.p,{children:[`Set `,_jsx(_components.code,{children:`localeBundle`}),` to skip device-language detection and use the same bundle for everyone:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`tsx`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`tsx`,children:_jsxs(_components.code,{language:`tsx`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`AmityUiKitProvider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@amityco/react-native-social-uikit'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` jaLocale`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` './locales/ja.json'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#4EC9B0`},children:`AmityUiKitProvider`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` localization`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{ `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`localeBundle:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` jaLocale`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#4EC9B0`},children:`App`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` />`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#4EC9B0`},children:`AmityUiKitProvider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})})]}),_jsxs(Accordion,{title:`Override specific strings`,id:`override-specific-strings-1`,children:[_jsxs(_components.p,{children:[`Use the `,_jsx(_components.code,{children:`overrides`}),` prop to replace individual keys without providing a full locale bundle. Overrides merge on top of the active locale.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`tsx`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`tsx`,children:_jsxs(_components.code,{language:`tsx`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#4EC9B0`},children:`AmityUiKitProvider`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` localization`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` overrides:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` amity_chat_archive:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Hide chat'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` amity_chat_block_confirm_label:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Block now'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`}`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#4EC9B0`},children:`App`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` />`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#4EC9B0`},children:`AmityUiKitProvider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`})]}),`\n`]})})})]}),_jsxs(Accordion,{title:`Switch locale at runtime`,id:`switch-locale-at-runtime-1`,children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`useLocale`}),` controls the active locale. `,_jsx(_components.code,{children:`useString`}),` consumes strings and automatically re-renders all consumers when the locale changes. Both must be used inside `,_jsx(_components.code,{children:`AmityUiKitProvider`}),`.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`20`,language:`tsx`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`tsx`,children:_jsxs(_components.code,{language:`tsx`,numberOfLines:`20`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Button`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Text`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'react-native'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`useLocale`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`useString`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@amityco/react-native-social-uikit'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` jaLocale`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` './locales/ja.json'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` LanguageSwitcher`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`setLocaleBundle`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`clearLocaleBundle`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` useLocale`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c>`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#4EC9B0`},children:`Button`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` title`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"日本語\"`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` onPress`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` setLocaleBundle`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`jaLocale`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` />`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#4EC9B0`},children:`Button`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` title`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"English\"`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` onPress`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` clearLocaleBundle`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` />`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c/>`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` );`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Any child component — automatically re-renders on locale change`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` ArchiveLabel`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` label`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` useString`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'amity_chat_archive'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#4EC9B0`},children:`Text`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`label`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`\u003c/`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#4EC9B0`},children:`Text`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#808080`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]})]})]})]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Version alignment:`}),` New UIKit releases may introduce new localization keys for new UI components or features. When upgrading, re-generate your translation files from the open source reference file that matches your UIKit version to ensure no keys are missing. Untranslated keys fall back to English silently, but keeping your translation files up to date ensures a fully localized experience.`]})}),`\n`,_jsxs(Heading,{level:`2`,id:`migrating-from-config-json-text-overrides`,children:[`Migrating from `,_jsx(_components.code,{children:`config.json`}),` Text Overrides`]}),`\n`,_jsxs(Warning,{children:[_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[_jsx(_components.code,{children:`config.json`}),` text overrides are deprecated for string customization.`]}),` If you previously used `,_jsx(_components.code,{children:`config.json`}),` to override UI strings (e.g. button labels, error messages), you should migrate those overrides to the localization API described above — even if you don’t plan to add new languages.`]}),_jsxs(_components.p,{children:[`Existing `,_jsx(_components.code,{children:`config.json`}),` text overrides are still resolved gracefully for now, but this auto-resolution `,_jsx(_components.strong,{children:`may be removed in a future release`}),`. New UI components and features will only support string customization through the localization system.`]}),_jsxs(_components.p,{children:[_jsx(_components.code,{children:`config.json`}),` remains available for other configuration such as theme and UI element visibility — only string/text overrides are being deprecated.`]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Localization","description":"Customize UI strings and add language support to the social.plus UIKit","href":"/uikit/customization/localization"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Platform Implementation","slug":"platform-implementation","depth":2,"children":[{"title":"How to Add a New Language","slug":"how-to-add-a-new-language","depth":3,"children":[],"tabId":"ios-swift"},{"title":"Option A — Bundle-based .lproj files (recommended)","slug":"option-a-—-bundle-based-lproj-files-recommended","depth":4,"children":[],"tabId":"ios-swift"},{"title":"Option B — Programmatic via String Provider API","slug":"option-b-—-programmatic-via-string-provider-api","depth":4,"children":[],"tabId":"ios-swift"},{"title":"Option C — Override individual keys","slug":"option-c-—-override-individual-keys","depth":4,"children":[],"tabId":"ios-swift"},{"title":"How to Add a New Language","slug":"how-to-add-a-new-language-2","depth":3,"children":[],"tabId":"android-kotlin"},{"title":"Option A — Android resource files (recommended)","slug":"option-a-—-android-resource-files-recommended","depth":4,"children":[],"tabId":"android-kotlin"},{"title":"Option B — Locale bundle via String Provider API","slug":"option-b-—-locale-bundle-via-string-provider-api","depth":4,"children":[],"tabId":"android-kotlin"},{"title":"Option C — Override individual keys","slug":"option-c-—-override-individual-keys-2","depth":4,"children":[],"tabId":"android-kotlin"},{"title":"How to Add a New Language","slug":"how-to-add-a-new-language-3","depth":3,"children":[],"tabId":"web-react"},{"title":"Other Scenarios","slug":"other-scenarios","depth":3,"children":[],"tabId":"web-react"},{"title":"How to Add a New Language","slug":"how-to-add-a-new-language-4","depth":3,"children":[],"tabId":"react-native"},{"title":"Other Scenarios","slug":"other-scenarios-2","depth":3,"children":[],"tabId":"react-native"}]},{"title":"Migrating from config.json Text Overrides","slug":"migrating-from-config-json-text-overrides","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/social-b97141fb-auto-generate-llmstxt/1df53d02ad88749c/scrollbar.js"],"subdomain":"social-b97141fb-auto-generate-llmstxt","siteName":"social.plus","title":"Localization - social.plus","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-11T05:25:57.647Z","originalFileLocation":"uikit/customization/localization.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Customize UI strings and add language support to the social.plus UIKit\">\u003cmeta data-mint-head name=\"application-name\" content=\"social.plus\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"noindex, nofollow\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/svg+xml\" sizes=\"180x180\" href=\"https://mintcdn.com/social-b97141fb-auto-generate-llmstxt/HK8-O4u_NqMeCf6h/favicon.svg?fit=max\u0026amp;auto=format\u0026amp;n=HK8-O4u_NqMeCf6h\u0026amp;q=85\u0026amp;s=999025267802abd23424eecffd7059d4\">\u003clink data-mint-head rel=\"icon\" type=\"image/svg+xml\" sizes=\"32x32\" href=\"https://mintcdn.com/social-b97141fb-auto-generate-llmstxt/HK8-O4u_NqMeCf6h/favicon.svg?fit=max\u0026amp;auto=format\u0026amp;n=HK8-O4u_NqMeCf6h\u0026amp;q=85\u0026amp;s=999025267802abd23424eecffd7059d4\">\u003clink data-mint-head rel=\"icon\" type=\"image/svg+xml\" sizes=\"16x16\" href=\"https://mintcdn.com/social-b97141fb-auto-generate-llmstxt/HK8-O4u_NqMeCf6h/favicon.svg?fit=max\u0026amp;auto=format\u0026amp;n=HK8-O4u_NqMeCf6h\u0026amp;q=85\u0026amp;s=999025267802abd23424eecffd7059d4\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/svg+xml\" href=\"https://mintcdn.com/social-b97141fb-auto-generate-llmstxt/HK8-O4u_NqMeCf6h/favicon.svg?fit=max\u0026amp;auto=format\u0026amp;n=HK8-O4u_NqMeCf6h\u0026amp;q=85\u0026amp;s=999025267802abd23424eecffd7059d4\">\u003cmeta data-mint-head property=\"og:title\" content=\"Localization - social.plus\">\u003cmeta data-mint-head property=\"og:description\" content=\"Customize UI strings and add language support to the social.plus UIKit\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"social.plus\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://social-b97141fb-auto-generate-llmstxt.mintlify.app/uikit/customization/localization\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://social-b97141fb-auto-generate-llmstxt.mintlify.site/_mintlify/api/og/v2?division=Customization\u0026amp;title=Localization\u0026amp;description=Customize+UI+strings+and+add+language+support+to+the+social.plus+UIKit\u0026amp;theme=f879ce7140df425734e04872\u0026amp;signature=10f254e981b6c90818c3c22b0d368b579bfef1bdc91a20ef7e966a78447e8ed3\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Localization - social.plus\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Customize UI strings and add language support to the social.plus UIKit\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://social-b97141fb-auto-generate-llmstxt.mintlify.site/_mintlify/api/og/v2?division=Customization\u0026amp;title=Localization\u0026amp;description=Customize+UI+strings+and+add+language+support+to+the+social.plus+UIKit\u0026amp;theme=f879ce7140df425734e04872\u0026amp;signature=10f254e981b6c90818c3c22b0d368b579bfef1bdc91a20ef7e966a78447e8ed3\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"https://mintlify.s3.us-west-1.amazonaws.com/social-b97141fb-auto-generate-llmstxt/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"social.plus\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3b41ec\">\u003clink data-mint-head rel=\"canonical\" href=\"https://social-b97141fb-auto-generate-llmstxt.mintlify.app/uikit/customization/localization\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/uikit/customization/localization.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"social.plus\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"social.plus\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/uikit/customization/localization.md","siteName":"social.plus","nav":{"global":null,"tabs":[{"tab":"Welcome","pages":[{"title":"Welcome","href":""}]},{"tab":"SDK","pages":[{"title":"SDK","href":"/social-plus-sdk/overview"}]},{"tab":"UIKit","pages":[{"group":"Powered by","pages":[{"title":"social.plus UIKit","icon":"wand-magic-sparkles","href":"/uikit/overview"}]},{"group":"Getting Started","pages":[{"title":"Quick Start","href":"/uikit/getting-started/overview"},{"title":"Installation","href":"/uikit/getting-started/installation"},{"title":"Authentication \u0026 Setup","href":"/uikit/getting-started/authentication"},{"title":"Visitor Access","href":"/uikit/getting-started/visitor-access"}]},{"group":"Customization","pages":[{"title":"UIKit Customization","href":"/uikit/customization/overview"},{"title":"Dynamic UI","href":"/uikit/customization/dynamic-ui"},{"title":"Set Preferred Theme","href":"/uikit/customization/set-preferred-theme"},{"title":"Component Styling","href":"/uikit/customization/component-styling"},{"title":"Fork \u0026 Extend","description":"Level 3: Advanced customization with complete source code control","href":"/uikit/customization/advanced-customization"},{"title":"Localization","href":"/uikit/customization/localization"}]},{"group":"Components","pages":[{"title":"UIKit Components","description":"50+ pre-built components to build social apps 10x faster. Copy-paste ready code examples.","href":"/uikit/components/overview"},{"group":"Chat Components","pages":[{"title":"Overview","href":"/uikit/components/chat"},{"title":"Search chats \u0026 messages","href":"/uikit/components/chat/search-chat"},{"title":"Recent Chats (Chat List)","href":"/uikit/components/chat/recent-chats"},{"title":"Conversation Chat","href":"/uikit/components/chat/conversation-chat"},{"title":"Group Chat","href":"/uikit/components/chat/group-chat"},{"title":"Live Chat","href":"/uikit/components/chat/live-chat"}]},{"group":"Social Components","pages":[{"title":"Overview","href":"/uikit/components/social/overview"},{"title":"Social Feeds \u0026 Content Discovery","href":"/uikit/components/social/feeds"},{"title":"Content Discovery \u0026 Search","href":"/uikit/components/social/content-discovery"},{"title":"Discovery Widget","href":"/uikit/components/social/discovery-widget"},{"title":"Post Components","href":"/uikit/components/social/posts"},{"title":"Comments \u0026 Reactions","href":"/uikit/components/social/comments-reactions"},{"title":"Communities","href":"/uikit/components/social/communities"},{"title":"Community Management","href":"/uikit/components/social/community-management"},{"title":"Community Membership","href":"/uikit/components/social/community-membership"},{"title":"Users","href":"/uikit/components/social/users"},{"title":"Livestream","href":"/uikit/components/social/livestream"},{"title":"Product Tagging Components","href":"/uikit/components/social/product-tagging"},{"title":"Story","href":"/uikit/components/social/story"},{"title":"Clip","href":"/uikit/components/social/clip"},{"title":"Event","href":"/uikit/components/social/event"},{"title":"Content Moderation","href":"/uikit/components/social/moderation"},{"title":"Content Sharing","href":"/uikit/components/social/sharing"}]}]},{"group":"Release Notes","pages":[{"title":"Android","href":"/uikit/changelogs/android-uikit-changelog"},{"title":"iOS","href":"/uikit/changelogs/ios-uikit-changelog"},{"title":"Web (React)","href":"/uikit/changelogs/web-uikit-changelog"},{"title":"Flutter","href":"/uikit/changelogs/flutter-uikit-changelog"},{"title":"React Native","href":"/uikit/changelogs/react-native-uikit-changelog"}]},{"group":"Support","pages":[{"title":"Developer Forum","href":"/social-plus-sdk/developer-forum"},{"title":"Technical FAQ","href":"/social-plus-sdk/technical-faq"},{"title":"Feature Matrix","sidebarTitle":"Feature Matrix","href":"/feature-matrix"}]}]},{"tab":"Analytics \u0026 Moderation","pages":[{"title":"Analytics \u0026 Moderation","href":"/analytics-and-moderation/overview"}]},{"tab":"API","pages":[{"title":"API","href":"/analytics-and-moderation/social+-apis-and-services/README"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/use-cases/overview"}]},{"tab":"AI","pages":[{"title":"AI","href":"/ai/overview"}]}]},"basePath":"","title":"Localization - social.plus","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":["6d89261695"],"chunks":["preview-widget-BpN4F6Gn.js"]}