|
|
# 多国语言设置修复总结
|
|
|
|
|
|
## 概述
|
|
|
本次修复解决了应用中多个输入组件和Models目录下类使用硬编码中文文本的问题,将所有文本替换为使用本地化字符串系统。
|
|
|
|
|
|
## 修复的组件
|
|
|
|
|
|
### 1. PhoneInputView.swift
|
|
|
**问题**: 使用硬编码中文文本
|
|
|
**修复**:
|
|
|
- 添加了电话相关的本地化键值
|
|
|
- 将所有中文文本替换为 `.localized` 扩展调用
|
|
|
- 支持英文、中文、泰文三种语言
|
|
|
|
|
|
**新增本地化键值**:
|
|
|
- `phone`, `sms`, `phone_number`, `sms_content`
|
|
|
- `enter_phone_number`, `enter_sms_content`
|
|
|
- `phone_placeholder`, `sms_placeholder`
|
|
|
- `format_instructions`, `phone_format_hint`, `sms_format_hint`
|
|
|
|
|
|
### 2. ContactInputView.swift
|
|
|
**问题**: 使用硬编码中文文本
|
|
|
**修复**:
|
|
|
- 添加了联系人相关的本地化键值
|
|
|
- 将所有中文文本替换为 `.localized` 扩展调用
|
|
|
|
|
|
**新增本地化键值**:
|
|
|
- `contact`, `first_name`, `last_name`, `nickname`
|
|
|
- `company`, `job_title`, `address`, `website`, `birthday`, `note`
|
|
|
- `company_name`, `title_name`, `detailed_address`
|
|
|
- `select_birthday`, `note_info`
|
|
|
- `contact_format_hint`
|
|
|
|
|
|
### 3. WiFiInputView.swift
|
|
|
**问题**: 使用硬编码中文文本
|
|
|
**修复**:
|
|
|
- 添加了WiFi相关的本地化键值
|
|
|
- 将所有中文文本替换为 `.localized` 扩展调用
|
|
|
|
|
|
**新增本地化键值**:
|
|
|
- `wifi`, `wifi_password`, `wifi_password_placeholder`
|
|
|
- `encryption_type`, `no_encryption`
|
|
|
|
|
|
### 4. EmailInputView.swift
|
|
|
**问题**: 使用硬编码中文文本
|
|
|
**修复**:
|
|
|
- 添加了邮件相关的本地化键值
|
|
|
- 将所有中文文本替换为 `.localized` 扩展调用
|
|
|
|
|
|
**新增本地化键值**:
|
|
|
- `email_address`, `email_subject`, `email_body`
|
|
|
- `email_cc`, `email_bcc`
|
|
|
- `email_subject_placeholder`, `email_body_placeholder`
|
|
|
- `cc_address`, `bcc_address`
|
|
|
- `cc_email_placeholder`, `bcc_email_placeholder`
|
|
|
- `email_format_hint`
|
|
|
|
|
|
### 5. LocationInputView.swift
|
|
|
**问题**: 使用硬编码中文文本
|
|
|
**修复**:
|
|
|
- 添加了位置相关的本地化键值
|
|
|
- 将所有中文文本替换为 `.localized` 扩展调用
|
|
|
|
|
|
**新增本地化键值**:
|
|
|
- `location`, `location_name`, `location_name_placeholder`
|
|
|
- `latitude`, `longitude`, `latitude_placeholder`, `longitude_placeholder`
|
|
|
- `coordinate_format_help`, `coordinate_format_details`
|
|
|
- `location_format_hint`
|
|
|
|
|
|
### 6. URLInputView.swift
|
|
|
**问题**: 使用硬编码中文文本
|
|
|
**修复**:
|
|
|
- 添加了URL相关的本地化键值
|
|
|
- 将所有中文文本替换为 `.localized` 扩展调用
|
|
|
|
|
|
**新增本地化键值**:
|
|
|
- `url`, `website_url`, `url_placeholder`
|
|
|
- `url_format_hint`, `preview_url`
|
|
|
|
|
|
### 7. TextInputView.swift
|
|
|
**问题**: 使用硬编码中文文本
|
|
|
**修复**:
|
|
|
- 添加了文本输入相关的本地化键值
|
|
|
- 将所有中文文本替换为 `.localized` 扩展调用
|
|
|
|
|
|
**新增本地化键值**:
|
|
|
- `text`, `text_content`, `text_placeholder`
|
|
|
- `max_characters_reached`, `near_character_limit`
|
|
|
- `character_count`
|
|
|
|
|
|
### 8. CalendarInputView.swift
|
|
|
**问题**: 使用硬编码中文文本
|
|
|
**修复**:
|
|
|
- 添加了日历相关的本地化键值
|
|
|
- 将所有中文文本替换为 `.localized` 扩展调用
|
|
|
|
|
|
**新增本地化键值**:
|
|
|
- `calendar`, `event_title`, `event_description`
|
|
|
- `start_time`, `end_time`, `event_location`
|
|
|
- `event_title_placeholder`, `event_description_placeholder`, `event_location_placeholder`
|
|
|
- `time_validation_error`, `time_setting_hint`
|
|
|
- `end_time_must_be_after_start_time`
|
|
|
- `calendar_format_hint`
|
|
|
|
|
|
### 9. SocialInputView.swift
|
|
|
**问题**: 使用硬编码中文文本
|
|
|
**修复**:
|
|
|
- 添加了社交媒体相关的本地化键值
|
|
|
- 将所有中文文本替换为 `.localized` 扩展调用
|
|
|
|
|
|
**新增本地化键值**:
|
|
|
- `social`, `username`, `social_message`
|
|
|
- 各平台的占位符和提示文本
|
|
|
- `artist`, `song_name`, `enter_artist_name`, `enter_song_name`
|
|
|
- 各平台的用户名标签
|
|
|
- `social_format_hint`
|
|
|
|
|
|
### 10. CardView.swift
|
|
|
**问题**: 使用硬编码中文文本
|
|
|
**修复**:
|
|
|
- 添加了卡片组件相关的本地化键值
|
|
|
- 将所有中文文本替换为 `.localized` 扩展调用
|
|
|
|
|
|
**新增本地化键值**:
|
|
|
- `standard_card`, `standard_card_description`
|
|
|
- `compact_card`, `info_card`, `important_reminder`
|
|
|
- `info_card_description`, `learn_more`
|
|
|
- `total_users`, `new_this_month`
|
|
|
|
|
|
### 11. InputHintView.swift
|
|
|
**问题**: 使用硬编码中文文本
|
|
|
**修复**:
|
|
|
- 添加了输入提示相关的本地化键值
|
|
|
- 将所有中文文本替换为 `.localized` 扩展调用
|
|
|
|
|
|
**新增本地化键值**:
|
|
|
- `input_hint`, `info_hint`, `warning_hint`
|
|
|
- `success_hint`, `error_hint`
|
|
|
|
|
|
### 12. DatePickerView.swift
|
|
|
**问题**: 使用硬编码中文文本
|
|
|
**修复**:
|
|
|
- 添加了日期选择器相关的本地化键值
|
|
|
- 将所有中文文本替换为 `.localized` 扩展调用
|
|
|
|
|
|
**新增本地化键值**:
|
|
|
- `select_date`, `select_time`, `select_date_and_time`
|
|
|
|
|
|
### 13. CreateQRCodeView.swift
|
|
|
**问题**: 使用硬编码中文文本
|
|
|
**修复**:
|
|
|
- 添加了创建二维码相关的本地化键值
|
|
|
- 将所有中文文本替换为 `.localized` 扩展调用
|
|
|
|
|
|
**新增本地化键值**:
|
|
|
- `create`, `tip`, `confirm`
|
|
|
- `content_input_area`, `preview_area`
|
|
|
|
|
|
### 14. KeyboardToolbarView.swift
|
|
|
**问题**: 使用硬编码中文文本
|
|
|
**修复**:
|
|
|
- 添加了键盘工具栏相关的本地化键值
|
|
|
- 将所有中文文本替换为 `.localized` 扩展调用
|
|
|
|
|
|
**新增本地化键值**:
|
|
|
- `clear`, `copy`, `paste`, `next`, `previous`
|
|
|
- `simple_toolbar`, `toolbar_with_clear`
|
|
|
- `toolbar_with_copy_paste`, `toolbar_with_navigation`
|
|
|
|
|
|
### 15. FormView.swift
|
|
|
**问题**: 使用硬编码中文文本
|
|
|
**修复**:
|
|
|
- 添加了表单组件相关的本地化键值
|
|
|
- 将所有中文文本替换为 `.localized` 扩展调用
|
|
|
|
|
|
**新增本地化键值**:
|
|
|
- `sample_form`, `basic_info`, `username`
|
|
|
- `enter_username`, `enter_email`
|
|
|
- `actions`, `save`, `cancel`
|
|
|
|
|
|
### 16. HistoryEnums.swift
|
|
|
**问题**: 使用硬编码中文文本
|
|
|
**修复**:
|
|
|
- 添加了历史记录枚举相关的本地化键值
|
|
|
- 将所有中文文本替换为 `.localized` 扩展调用
|
|
|
|
|
|
**新增本地化键值**:
|
|
|
- `scanned`, `manually_created`
|
|
|
- `barcode`, `qr_code`
|
|
|
- `foreground_color`, `background_color`, `dot_type`, `eye_type`
|
|
|
- `custom_logo`
|
|
|
|
|
|
### 17. BarcodeValidator.swift
|
|
|
**问题**: 使用硬编码中文文本
|
|
|
**修复**:
|
|
|
- 添加了条形码验证器相关的本地化键值
|
|
|
- 将所有中文文本替换为 `.localized` 扩展调用
|
|
|
|
|
|
**新增本地化键值**:
|
|
|
- `numbers_0_9`, `ean_13_must_be_13_digits`
|
|
|
- `ean_8_must_be_8_digits`, `upc_e_must_be_8_digits`
|
|
|
- `code_39_characters`, `code_39_only_contains`
|
|
|
- `code_128_characters`, `code_128_only_contains`
|
|
|
- `itf_14_must_be_14_digits`, `itf_14_only_digits`
|
|
|
- `codabar_characters`, `codabar_only_contains`
|
|
|
- `pdf417_characters`, `pdf417_only_contains`
|
|
|
- `data_matrix_characters`, `data_matrix_only_contains`
|
|
|
- `aztec_characters`, `aztec_only_contains`
|
|
|
- `maxi_code_characters`, `maxi_code_only_contains`
|
|
|
|
|
|
### 18. QRCodeStyleModels.swift
|
|
|
**问题**: 使用硬编码中文文本
|
|
|
**修复**:
|
|
|
- 添加了二维码样式模型相关的本地化键值
|
|
|
- 将所有中文文本替换为 `.localized` 扩展调用
|
|
|
|
|
|
**新增本地化键值**:
|
|
|
- 点类型: `square`, `circle`, `rounded_rect`, `squircle`, `diamond`, `hexagon`, `star`, `heart`, `flower`, `gear`, `abstract`, `arrow`, `blob`, `circuit`, `crosshatch`, `curve_pixel`, `diagonal`, `diagonal_stripes`, `donut`, `drip_horizontal`, `drip_vertical`, `flame`, `grid_2x2`, `grid_3x3`, `grid_4x4`, `horizontal`, `koala`, `pointy`, `razor`, `rounded_end_indent`, `rounded_path`, `rounded_triangle`, `sharp`, `shiny`, `spiky_circle`, `stitch`, `vertical`, `vortex`, `wave`, `wex`
|
|
|
- 眼睛类型: `arc`, `bars_horizontal`, `bars_vertical`, `cloud`, `cloud_circle`, `cornered_pixels`, `dot_drag_horizontal`, `dot_drag_vertical`, `edges`, `explode`, `eye`, `fabric_scissors`, `fireball`, `headlight`, `hole_punch`, `leaf`, `peacock`, `pinch`, `pixels`, `rounded_outer`, `rounded_pointing_in`, `rounded_pointing_out`, `shield`, `square_peg`, `surrounding_bars`, `teardrop`, `ufo`, `ufo_rounded`, `use_pixel_shape`
|
|
|
- Logo类型: `scan_me`, `gmail`, `paypal`, `google_playstore`, `spotify`, `telegram`, `whats_app`, `linked_in`, `tik_tok`, `snapchat`, `youtube`, `x`, `pinterest`, `instagram`, `facebook`
|
|
|
|
|
|
### 19. CoreDataManager.swift
|
|
|
**问题**: 使用硬编码中文文本
|
|
|
**修复**:
|
|
|
- 添加了Core Data管理器相关的本地化键值
|
|
|
- 将所有中文文本替换为 `.localized` 扩展调用
|
|
|
|
|
|
**新增本地化键值**:
|
|
|
- `core_data_load_failed`, `architecture_mismatch_detected`
|
|
|
- `core_data_reload_failed`, `core_data_reload_success`
|
|
|
- `core_data_save_success`, `core_data_save_failed`
|
|
|
- `error_details`, `error_domain`
|
|
|
|
|
|
## 语言支持
|
|
|
|
|
|
### 英文 (en.lproj/Localizable.strings)
|
|
|
- 添加了所有新组件的英文翻译
|
|
|
- 保持了原有的英文翻译
|
|
|
|
|
|
### 中文 (zh-Hans.lproj/Localizable.strings)
|
|
|
- 添加了所有新组件的中文翻译
|
|
|
- 保持了原有的中文翻译
|
|
|
|
|
|
### 泰文 (th.lproj/Localizable.strings)
|
|
|
- 添加了所有新组件的泰文翻译
|
|
|
- 保持了原有的泰文翻译
|
|
|
|
|
|
## 技术实现
|
|
|
|
|
|
### 本地化系统
|
|
|
- 使用 `LanguageManager.shared.localizedString(for:)` 方法
|
|
|
- 通过 `.localized` 字符串扩展简化调用
|
|
|
- 支持动态语言切换
|
|
|
|
|
|
### 响应式更新
|
|
|
- 使用 `@ObservedObject` 监听语言变化
|
|
|
- 通过 `refreshTrigger` 强制刷新UI
|
|
|
- 支持实时语言切换
|
|
|
|
|
|
## 测试建议
|
|
|
|
|
|
1. **语言切换测试**
|
|
|
- 在设置中切换不同语言
|
|
|
- 验证所有输入组件和Models的文本是否正确更新
|
|
|
|
|
|
2. **功能测试**
|
|
|
- 测试各个输入组件的功能是否正常
|
|
|
- 验证占位符文本和提示信息是否正确显示
|
|
|
- 测试条形码验证器的错误信息是否正确显示
|
|
|
|
|
|
3. **边界情况测试**
|
|
|
- 测试字符限制提示
|
|
|
- 测试验证错误信息
|
|
|
- 测试格式说明文本
|
|
|
|
|
|
4. **预览测试**
|
|
|
- 测试所有组件的预览是否正确显示本地化文本
|
|
|
- 验证预览中的示例文本是否正确翻译
|
|
|
|
|
|
5. **Models测试**
|
|
|
- 测试历史记录枚举的显示名称
|
|
|
- 测试条形码验证器的错误信息
|
|
|
- 测试二维码样式模型的显示名称
|
|
|
- 测试Core Data管理器的日志信息
|
|
|
|
|
|
## 后续维护
|
|
|
|
|
|
1. **新增组件**
|
|
|
- 新组件必须使用本地化字符串
|
|
|
- 避免使用硬编码文本
|
|
|
|
|
|
2. **文本更新**
|
|
|
- 更新文本时需要在所有语言文件中同步更新
|
|
|
- 保持键值命名的一致性
|
|
|
|
|
|
3. **新语言支持**
|
|
|
- 添加新语言时需要在所有语言文件中添加对应翻译
|
|
|
- 确保所有键值都有对应的翻译
|
|
|
|
|
|
4. **预览维护**
|
|
|
- 预览中的示例文本也应该使用本地化字符串
|
|
|
- 确保预览在不同语言环境下都能正确显示
|
|
|
|
|
|
5. **Models维护**
|
|
|
- 新增枚举值时必须添加对应的本地化键值
|
|
|
- 验证器错误信息必须使用本地化字符串
|
|
|
- 日志信息应该使用本地化字符串
|
|
|
|
|
|
## 总结
|
|
|
|
|
|
本次修复完成了应用中所有输入组件、预览信息和Models目录下类的多语言支持,确保了用户在不同语言环境下都能获得一致的用户体验。通过使用统一的本地化系统,提高了代码的可维护性和扩展性。所有组件包括预览信息、枚举显示名称、验证器错误信息和日志信息都已经完全本地化,支持英文、中文和泰文三种语言。
|