Files
DIYgodandClaude Opus 5.5 9603533ed4 fix(i18n): translate hard-coded UI strings and complete every locale
Move the hard-coded English left in the desktop renderer, the Electron
main process, the mobile app and the shared packages to i18next, with
en, zh-CN, zh-TW, ja and fr-FR translations. SSR share pages are
unchanged.

- Fill every namespace in every language, delete keys no code reads
  (server error codes stay) and update translations left behind by
  later English changes.
- Stop HTML-escaping interpolated values in the desktop renderer.
  React already escapes text, so names with & or quotes showed entities.
- Render error boundary fallbacks as components so they can use hooks.
- Localize zod validation messages with the app language.
- Throw ClipboardError from the clipboard helpers and show translated
  toasts. formatEstimatedMins takes a formatter so callers localize the
  units.
- Use one glossary term per concept in ja, fr-FR and zh-TW.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 16:50:23 +08:00

78 lines
5.5 KiB
JSON

{
"category.entry": "Entry",
"category.entry_render": "Entry Render",
"category.global": "Global",
"category.integration": "Integration",
"category.layout": "Layout",
"category.list": "List",
"category.settings": "Settings",
"category.subscription": "Subscription",
"category.timeline": "Timeline",
"command.entry.next_entry.description": "Switch to the next entry based on the current timeline.",
"command.entry.next_entry.title": "Next Entry",
"command.entry.previous_entry.description": "Switch to the previous entry based on the current timeline.",
"command.entry.previous_entry.title": "Previous Entry",
"command.entry.scroll_down.description": "Scroll down in the entry render.",
"command.entry.scroll_down.title": "Scroll Down",
"command.entry.scroll_up.description": "Scroll up in the entry render.",
"command.entry.scroll_up.title": "Scroll Up",
"command.global.quick_add.description": "Open quick add panel to follow a new feed or others.",
"command.global.quick_add.title": "Quick Add",
"command.global.quick_search.description": "Open the quick search panel.",
"command.global.quick_search.title": "Quick Search",
"command.global.show_shortcuts.description": "Show the shortcuts guideline modal.",
"command.global.show_shortcuts.title": "Show Shortcuts",
"command.global.toggle_ai_chat.description": "Toggle the AI chat panel.",
"command.global.toggle_ai_chat.title": "AI Chat",
"command.global.toggle_corner_play.description": "Play/Pause playing status(If there is currently playing audio in the background).",
"command.global.toggle_corner_play.title": "Toggle Corner Play",
"command.layout.focus_to_entry_render.title": "Focus to Entry Render",
"command.layout.focus_to_subscription.title": "Focus to Subscription",
"command.layout.focus_to_timeline.title": "Focus to Timeline",
"command.layout.toggle_subscription_column.description": "Show/Hide the subscription column in the layout.",
"command.layout.toggle_subscription_column.title": "Toggle Subscription Column",
"command.subscription.mark_all_as_read.title": "Mark All as Read",
"command.subscription.next_subscription.description": "Next Subscription",
"command.subscription.next_subscription.title": "Next Subscription",
"command.subscription.open_in_browser.title": "Open in Browser",
"command.subscription.open_in_tab.title": "Open in Tab",
"command.subscription.open_site_in_browser.title": "Open Site in Browser",
"command.subscription.previous_subscription.description": "Previous Subscription",
"command.subscription.previous_subscription.title": "Previous Subscription",
"command.subscription.switch_tab_to_article.description": "Switch to the article tab in the subscription view.",
"command.subscription.switch_tab_to_article.title": "Switch to Article Tab",
"command.subscription.switch_tab_to_audio.description": "Switch to the audio tab in the subscription view.",
"command.subscription.switch_tab_to_audio.title": "Switch to Audio Tab",
"command.subscription.switch_tab_to_next.description": "Switch to the next tab in the subscription view.",
"command.subscription.switch_tab_to_next.title": "Switch to Next Tab",
"command.subscription.switch_tab_to_notification.description": "Switch to the notification tab in the subscription view.",
"command.subscription.switch_tab_to_notification.title": "Switch to Notification Tab",
"command.subscription.switch_tab_to_picture.description": "Switch to the picture tab in the subscription view.",
"command.subscription.switch_tab_to_picture.title": "Switch to Picture Tab",
"command.subscription.switch_tab_to_previous.description": "Switch to the previous tab in the subscription view.",
"command.subscription.switch_tab_to_previous.title": "Switch to Previous Tab",
"command.subscription.switch_tab_to_social.description": "Switch to the social tab in the subscription view.",
"command.subscription.switch_tab_to_social.title": "Switch to Social Tab",
"command.subscription.switch_tab_to_video.description": "Switch to the video tab in the subscription view.",
"command.subscription.switch_tab_to_video.title": "Switch to Video Tab",
"command.subscription.toggle_folder_collapse.description": "Expand/Collapse the current selected folder in the Subscription view.",
"command.subscription.toggle_folder_collapse.title": "Toggle Folder Collapse",
"command.timeline.refetch.description": "Refetch the current timeline.",
"command.timeline.refetch.title": "Refetch",
"command.timeline.switch_to_next.description": "Switch to the next timeline item.",
"command.timeline.switch_to_next.title": "Switch to Next Timeline",
"command.timeline.switch_to_previous.description": "Switch to the previous timeline item.",
"command.timeline.switch_to_previous.title": "Switch to Previous Timeline",
"command.timeline.toggle_unread_only.description": "Enable/Disable the unread only mode in the timeline.",
"command.timeline.toggle_unread_only.title": "Toggle Unread Only",
"settings.shortcuts.conflict": "Shortcut Conflict",
"settings.shortcuts.conflict_command": "This shortcut conflicts with command:",
"settings.shortcuts.custom": "Custom",
"settings.shortcuts.custom_content": "This shortcut is customized by you",
"settings.shortcuts.description": "Customize the application's shortcuts. Below is a list of some commands that can be customized.",
"settings.shortcuts.press_to_record": "Press keys to record",
"settings.shortcuts.reset": "Reset",
"settings.shortcuts.reset_defaults": "Reset Defaults",
"settings.shortcuts.undo": "Undo"
}