mirror of
https://github.com/jackjackbits/bitchat.git
synced 2026-05-05 20:22:31 +00:00
0f7bcf17ff
* Automated update of relay data - Sun Sep 21 06:26:33 UTC 2025
* chore(l10n): add empty string catalogs
* chore(l10n): populate string catalogs from legacy resources
* test(l10n): add catalog guardrail suite
* chore(l10n): remove legacy localization files
* fix: Add localization resources to Package.swift targets
- Add .process("Localization") to bitchat target resources
- Add .process("Localization") to bitchatTests target resources
- Resolves Bundle.module resource loading for localization files
- Enables proper localization testing in Swift Package Manager builds
* feat: Add Korean localization and convert to UTF-8 format
Korean Language Support:
- Add complete Korean (ko) localization with 191 strings from PR #686
- Include all app strings: UI, features, system messages, alerts
- Include all share extension strings: status messages, errors
- Verified 100% translation coverage for Korean locale
UTF-8 Format Conversion:
- Convert 23,047 Unicode escape sequences to readable UTF-8 characters
- Transform \u sequences (e.g. \u0625\u063a\u0644\u0627\u0642) to native text (إغلاق)
- Improve maintainability across all 15 supported locales
- Preserve all existing translations while enhancing readability
Locales supported: en, ar, de, es, fr, he, id, it, ja, ko, ne, pt-BR, ru, uk, zh-Hans
* test: Enhance dynamic localization test framework
Dynamic Test Framework:
- Replace hardcoded locale tests with data-driven approach
- Add testLocalizationExpectedValues() for dynamic locale validation
- Add testConfiguredLocalesCompleteness() for coverage verification
- Tests now read configuration from PrimaryLocalizationKeys.json
Expanded Test Coverage:
- Increase from 14 to 33 key validations (135% increase)
- Add critical UI strings: common actions, app info, security, sharing
- Cover 364 total string validations across 15 locales
- Include Korean validation with native Korean expected values
Test Categories Added:
- Common UI: cancel, close, copy actions
- App Info: encryption, offline features, app name
- Bluetooth: permission and settings alerts
- Security: verification badges and actions
- Share Extension: all status and error messages
- Content Actions: accessibility and user actions
Maintains 100% test success rate across all supported locales.
* fix: Convert plural strings to correct xcstrings format
Three plural strings (content.accessibility.people_count,
location_channels.row_title, location_notes.header) were using
incorrect format causing runtime String(format:) errors.
Migrated from stringUnit.variations structure to proper
substitutions.variations format across all 14 languages.
* refactor(l10n): migrate to native String(localized:) APIs
Remove L10n.string wrapper in favor of Swift's native localization APIs.
Migrate 100+ localization call sites to use String(localized:) and String(localized:defaultValue:) with string interpolation.
- Update catalog to use interpolation syntax (\(var)) instead of format specifiers (%@)
- Migrate simple strings to String(localized:)
- Migrate strings with arguments to String(localized:defaultValue:) with interpolation
- Keep format strings for plural substitutions (String(format:locale:))
- Remove bitchat/Utils/Localization.swift
Net result: -407 insertions, +130 deletions across 15 files
* fix(l10n): correct interpolation to use format strings
Interpolation in String(localized:defaultValue:) doesn't work as expected -
the interpolation happens at the call site before localization lookup.
Convert dynamic strings to use String(format:String(localized:),args) pattern:
- Update catalog entries from \(var) syntax to %@ placeholders
- Wrap String(localized:) calls with String(format:locale:) for dynamic values
- Affects 17 strings across 6 files
This fixes UI showing literal "\(geohash)" text instead of actual values.
* chore(l10n): remove invalid catalog entries
Remove auto-extracted literal strings (@, #, ✔︎, @%@, bitchat/) that were
generated without proper localization structure. These caused test
decoding failures.
* fix(l10n): remove unused auto-extracted format string
Remove '%@/%@' key that was auto-extracted by Xcode but never used.
This key only existed in English causing locale parity test failures
across all 13 other languages.
Fixes locale parity tests - all 8 localization tests now pass with
only expected failures (incomplete translations in some locales).
* fix(l10n): copy format string to all locales for 100% completion
Add %@/%@ format string to all 14 non-English locales. Format strings
are locale-independent so using the same value everywhere is correct.
This brings all locales to 100% completion (189/189 strings) to prevent
Xcode from reporting incomplete translations when building.
* fix(l10n): prevent auto-extraction of UI literals
Use Text(verbatim:) for non-localizable UI elements:
- App branding ("bitchat/")
- Symbols (@, #, ✔︎)
- Dynamic usernames (@username)
- Count ratios (reached/total)
This prevents Xcode from auto-extracting these literals into the
String Catalog when building through Xcode GUI, which was causing
locales to show 96% completion instead of 100%.
* chore(l10n): remove auto-extracted UI literal entries
Delete 5 auto-extracted keys from catalog that are now using Text(verbatim:):
- @, #, ✔︎, %@, %@/%@
These were showing as stale/incomplete in Xcode causing 97% completion.
All locales now at 100% (188/188 strings).
* fix(l10n): prevent AttributedString from extracting @ symbol
Use string interpolation "\\(at)" instead of literal "@" in
AttributedString to prevent Xcode from auto-extracting it to the
String Catalog during build.
This was the last string causing locales to show 99% instead of 100%.
* fix(l10n): add %@ as non-translatable key in all locales
Mark %@ as non-translatable and add to all 15 locales with same value.
This prevents Xcode from showing incomplete translations when it
auto-extracts this format specifier during GUI builds.
All locales remain at 100% (189/189 strings).
* refactor: move Localizable.xcstrings to bitchat root
Move bitchat/Localization/Localizable.xcstrings to bitchat/ (after LaunchScreen)
and remove empty Localization directory.
* fix(test): update catalog path in localization tests
Update test paths from bitchat/Localization/Localizable.xcstrings to
bitchat/Localizable.xcstrings after moving the file.
---------
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: jack <jackjackbits@users.noreply.github.com>
666 lines
21 KiB
Plaintext
666 lines
21 KiB
Plaintext
{
|
|
"sourceLanguage": "en",
|
|
"strings": {
|
|
"share.fallback.shared_link_title": {
|
|
"extractionState": "manual",
|
|
"localizations": {
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "shared Link",
|
|
"comment": "Fallback title when saving a shared link"
|
|
}
|
|
},
|
|
"ar": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "رابط مشترك",
|
|
"comment": "Fallback title when saving a shared link"
|
|
}
|
|
},
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "geteilter link",
|
|
"comment": "Fallback title when saving a shared link"
|
|
}
|
|
},
|
|
"es": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "enlace compartido",
|
|
"comment": "Fallback title when saving a shared link"
|
|
}
|
|
},
|
|
"fr": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "lien partagé",
|
|
"comment": "Fallback title when saving a shared link"
|
|
}
|
|
},
|
|
"he": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "קישור משותף",
|
|
"comment": "Fallback title when saving a shared link"
|
|
}
|
|
},
|
|
"id": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "tautan dibagikan",
|
|
"comment": "Fallback title when saving a shared link"
|
|
}
|
|
},
|
|
"it": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "link condiviso",
|
|
"comment": "Fallback title when saving a shared link"
|
|
}
|
|
},
|
|
"ja": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "共有リンク",
|
|
"comment": "Fallback title when saving a shared link"
|
|
}
|
|
},
|
|
"ne": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "साझा गरिएको लिङ्क",
|
|
"comment": "Fallback title when saving a shared link"
|
|
}
|
|
},
|
|
"pt-BR": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "link compartilhado",
|
|
"comment": "Fallback title when saving a shared link"
|
|
}
|
|
},
|
|
"ru": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "поделился ссылкой",
|
|
"comment": "Fallback title when saving a shared link"
|
|
}
|
|
},
|
|
"uk": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "спільне посилання",
|
|
"comment": "Fallback title when saving a shared link"
|
|
}
|
|
},
|
|
"zh-Hans": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "分享的链接",
|
|
"comment": "Fallback title when saving a shared link"
|
|
}
|
|
},
|
|
"ko": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "공유된 링크",
|
|
"comment": "Fallback title when saving a shared link"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"share.status.failed_to_encode": {
|
|
"extractionState": "manual",
|
|
"localizations": {
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "failed to encode link",
|
|
"comment": "Shown when the share payload cannot be encoded"
|
|
}
|
|
},
|
|
"ar": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "تعذر ترميز الرابط",
|
|
"comment": "Shown when the share payload cannot be encoded"
|
|
}
|
|
},
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "link konnte nicht codiert werden",
|
|
"comment": "Shown when the share payload cannot be encoded"
|
|
}
|
|
},
|
|
"es": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "no se pudo codificar el enlace",
|
|
"comment": "Shown when the share payload cannot be encoded"
|
|
}
|
|
},
|
|
"fr": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "échec de l'encodage du lien",
|
|
"comment": "Shown when the share payload cannot be encoded"
|
|
}
|
|
},
|
|
"he": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "לא ניתן לקודד את הקישור",
|
|
"comment": "Shown when the share payload cannot be encoded"
|
|
}
|
|
},
|
|
"id": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "gagal mengodekan tautan",
|
|
"comment": "Shown when the share payload cannot be encoded"
|
|
}
|
|
},
|
|
"it": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "impossibile codificare il link",
|
|
"comment": "Shown when the share payload cannot be encoded"
|
|
}
|
|
},
|
|
"ja": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "リンクのエンコードに失敗しました",
|
|
"comment": "Shown when the share payload cannot be encoded"
|
|
}
|
|
},
|
|
"ne": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "लिङ्क सङ्केत गर्न सकेन",
|
|
"comment": "Shown when the share payload cannot be encoded"
|
|
}
|
|
},
|
|
"pt-BR": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "falha ao codificar link",
|
|
"comment": "Shown when the share payload cannot be encoded"
|
|
}
|
|
},
|
|
"ru": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "не удалось закодировать ссылку",
|
|
"comment": "Shown when the share payload cannot be encoded"
|
|
}
|
|
},
|
|
"uk": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "не вдалося закодувати посилання",
|
|
"comment": "Shown when the share payload cannot be encoded"
|
|
}
|
|
},
|
|
"zh-Hans": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "无法编码链接",
|
|
"comment": "Shown when the share payload cannot be encoded"
|
|
}
|
|
},
|
|
"ko": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "링크를 인코딩하는 데 실패했습니다",
|
|
"comment": "Shown when the share payload cannot be encoded"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"share.status.no_shareable_content": {
|
|
"extractionState": "manual",
|
|
"localizations": {
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "no shareable content",
|
|
"comment": "Shown when provided content cannot be shared"
|
|
}
|
|
},
|
|
"ar": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "لا محتوى قابلاً للمشاركة",
|
|
"comment": "Shown when provided content cannot be shared"
|
|
}
|
|
},
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "kein teilbarer inhalt",
|
|
"comment": "Shown when provided content cannot be shared"
|
|
}
|
|
},
|
|
"es": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "sin contenido que se pueda compartir",
|
|
"comment": "Shown when provided content cannot be shared"
|
|
}
|
|
},
|
|
"fr": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "aucun contenu partageable",
|
|
"comment": "Shown when provided content cannot be shared"
|
|
}
|
|
},
|
|
"he": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "אין תוכן שניתן לשתף",
|
|
"comment": "Shown when provided content cannot be shared"
|
|
}
|
|
},
|
|
"id": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "tidak ada konten yang bisa dibagikan",
|
|
"comment": "Shown when provided content cannot be shared"
|
|
}
|
|
},
|
|
"it": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "nessun contenuto condivisibile",
|
|
"comment": "Shown when provided content cannot be shared"
|
|
}
|
|
},
|
|
"ja": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "共有可能なコンテンツがありません",
|
|
"comment": "Shown when provided content cannot be shared"
|
|
}
|
|
},
|
|
"ne": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "बाँड्न मिल्ने सामग्री छैन",
|
|
"comment": "Shown when provided content cannot be shared"
|
|
}
|
|
},
|
|
"pt-BR": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "nenhum conteúdo compartilhável",
|
|
"comment": "Shown when provided content cannot be shared"
|
|
}
|
|
},
|
|
"ru": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "нет подходящего контента",
|
|
"comment": "Shown when provided content cannot be shared"
|
|
}
|
|
},
|
|
"uk": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "нема відповідного контенту",
|
|
"comment": "Shown when provided content cannot be shared"
|
|
}
|
|
},
|
|
"zh-Hans": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "没有可分享的素材",
|
|
"comment": "Shown when provided content cannot be shared"
|
|
}
|
|
},
|
|
"ko": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "공유할 수 있는 내용이 없습니다",
|
|
"comment": "Shown when provided content cannot be shared"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"share.status.nothing_to_share": {
|
|
"extractionState": "manual",
|
|
"localizations": {
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "nothing to share",
|
|
"comment": "Shown when the share extension receives no content"
|
|
}
|
|
},
|
|
"ar": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "لا شيء لمشاركته",
|
|
"comment": "Shown when the share extension receives no content"
|
|
}
|
|
},
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "nichts zum teilen",
|
|
"comment": "Shown when the share extension receives no content"
|
|
}
|
|
},
|
|
"es": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "nada que compartir",
|
|
"comment": "Shown when the share extension receives no content"
|
|
}
|
|
},
|
|
"fr": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "rien à partager",
|
|
"comment": "Shown when the share extension receives no content"
|
|
}
|
|
},
|
|
"he": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "אין מה לשתף",
|
|
"comment": "Shown when the share extension receives no content"
|
|
}
|
|
},
|
|
"id": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "tidak ada yang bisa dibagikan",
|
|
"comment": "Shown when the share extension receives no content"
|
|
}
|
|
},
|
|
"it": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "niente da condividere",
|
|
"comment": "Shown when the share extension receives no content"
|
|
}
|
|
},
|
|
"ja": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "共有できるものがありません",
|
|
"comment": "Shown when the share extension receives no content"
|
|
}
|
|
},
|
|
"ne": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "बाँड्ने केही छैन",
|
|
"comment": "Shown when the share extension receives no content"
|
|
}
|
|
},
|
|
"pt-BR": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "nada para compartilhar",
|
|
"comment": "Shown when the share extension receives no content"
|
|
}
|
|
},
|
|
"ru": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "нечем поделиться",
|
|
"comment": "Shown when the share extension receives no content"
|
|
}
|
|
},
|
|
"uk": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "нема чим ділитися",
|
|
"comment": "Shown when the share extension receives no content"
|
|
}
|
|
},
|
|
"zh-Hans": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "没有可分享的内容",
|
|
"comment": "Shown when the share extension receives no content"
|
|
}
|
|
},
|
|
"ko": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "공유할 내용이 없습니다",
|
|
"comment": "Shown when the share extension receives no content"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"share.status.shared_link": {
|
|
"extractionState": "manual",
|
|
"localizations": {
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ shared link to bitchat",
|
|
"comment": "Confirmation after successfully sharing a link"
|
|
}
|
|
},
|
|
"ar": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ تم إرسال الرابط إلى bitchat",
|
|
"comment": "Confirmation after successfully sharing a link"
|
|
}
|
|
},
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ link zu bitchat geteilt",
|
|
"comment": "Confirmation after successfully sharing a link"
|
|
}
|
|
},
|
|
"es": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ enlace compartido con bitchat",
|
|
"comment": "Confirmation after successfully sharing a link"
|
|
}
|
|
},
|
|
"fr": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ lien partagé vers bitchat",
|
|
"comment": "Confirmation after successfully sharing a link"
|
|
}
|
|
},
|
|
"he": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ הקישור נשלח אל bitchat",
|
|
"comment": "Confirmation after successfully sharing a link"
|
|
}
|
|
},
|
|
"id": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ tautan dikirim ke bitchat",
|
|
"comment": "Confirmation after successfully sharing a link"
|
|
}
|
|
},
|
|
"it": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ link inviato a bitchat",
|
|
"comment": "Confirmation after successfully sharing a link"
|
|
}
|
|
},
|
|
"ja": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ bitchatにリンクを共有",
|
|
"comment": "Confirmation after successfully sharing a link"
|
|
}
|
|
},
|
|
"ne": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ bitchat मा लिङ्क पठाइयो",
|
|
"comment": "Confirmation after successfully sharing a link"
|
|
}
|
|
},
|
|
"pt-BR": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ link enviado para bitchat",
|
|
"comment": "Confirmation after successfully sharing a link"
|
|
}
|
|
},
|
|
"ru": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ ссылка отправлена в bitchat",
|
|
"comment": "Confirmation after successfully sharing a link"
|
|
}
|
|
},
|
|
"uk": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ посилання надіслано в bitchat",
|
|
"comment": "Confirmation after successfully sharing a link"
|
|
}
|
|
},
|
|
"zh-Hans": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ 已将链接分享至 bitchat",
|
|
"comment": "Confirmation after successfully sharing a link"
|
|
}
|
|
},
|
|
"ko": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ bitchat으로 링크를 공유했습니다",
|
|
"comment": "Confirmation after successfully sharing a link"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"share.status.shared_text": {
|
|
"extractionState": "manual",
|
|
"localizations": {
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ shared text to bitchat",
|
|
"comment": "Confirmation after successfully sharing text"
|
|
}
|
|
},
|
|
"ar": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ تم إرسال النص إلى bitchat",
|
|
"comment": "Confirmation after successfully sharing text"
|
|
}
|
|
},
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ text zu bitchat geteilt",
|
|
"comment": "Confirmation after successfully sharing text"
|
|
}
|
|
},
|
|
"es": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ texto compartido con bitchat",
|
|
"comment": "Confirmation after successfully sharing text"
|
|
}
|
|
},
|
|
"fr": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ texte partagé vers bitchat",
|
|
"comment": "Confirmation after successfully sharing text"
|
|
}
|
|
},
|
|
"he": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ הטקסט נשלח אל bitchat",
|
|
"comment": "Confirmation after successfully sharing text"
|
|
}
|
|
},
|
|
"id": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ teks dikirim ke bitchat",
|
|
"comment": "Confirmation after successfully sharing text"
|
|
}
|
|
},
|
|
"it": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ testo inviato a bitchat",
|
|
"comment": "Confirmation after successfully sharing text"
|
|
}
|
|
},
|
|
"ja": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ bitchatにテキストを共有",
|
|
"comment": "Confirmation after successfully sharing text"
|
|
}
|
|
},
|
|
"ne": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ bitchat मा पाठ पठाइयो",
|
|
"comment": "Confirmation after successfully sharing text"
|
|
}
|
|
},
|
|
"pt-BR": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ texto enviado para bitchat",
|
|
"comment": "Confirmation after successfully sharing text"
|
|
}
|
|
},
|
|
"ru": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ текст отправлен в bitchat",
|
|
"comment": "Confirmation after successfully sharing text"
|
|
}
|
|
},
|
|
"uk": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ текст надіслано в bitchat",
|
|
"comment": "Confirmation after successfully sharing text"
|
|
}
|
|
},
|
|
"zh-Hans": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ 已将文本分享至 bitchat",
|
|
"comment": "Confirmation after successfully sharing text"
|
|
}
|
|
},
|
|
"ko": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "✓ bitchat으로 텍스트를 공유했습니다",
|
|
"comment": "Confirmation after successfully sharing text"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"version": "1.0"
|
|
} |