mirror of
https://github.com/RSSNext/Folo.git
synced 2026-10-26 10:25:32 +08:00
Readers can step through the entries of a list from the reader instead of scrolling to the end of each entry or going back to the list. - An up/down control floats at the bottom of the reader: liquid glass on iOS 26+, a blur on older iOS and an elevated surface on Android, above the floating player bar while it shows. - Entries swap in place, so the screen pushed from the list keeps its back gesture and the control stays under the thumb. Pulling up past the end does the same instead of replacing the screen with a fade. - The list hands the reader its loaded entries and loads its next page when the reader nears the last one; the next entry's content loads ahead. - The control slides away with the header when "Hide Header While Reading" is on, and while pulling up to the next entry. - Going back shows the entry read last below the list header. FlashList adds viewOffset to the scroll position, so the old +70 hid it. There is no horizontal swipe: on iOS 26 swiping right anywhere in the content goes back. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
925 lines
60 KiB
JSON
925 lines
60 KiB
JSON
{
|
|
"about.appTip": "App Features",
|
|
"about.appTipDescription": "App features introduction and usage guide.",
|
|
"about.appVersion": "App",
|
|
"about.changelog": "Changelog",
|
|
"about.changelogDescription": "See what's new in each version",
|
|
"about.checkForUpdates": "Check for Updates",
|
|
"about.checkingForUpdates": "Checking for updates...",
|
|
"about.copyEnvironment": "Copy environment",
|
|
"about.environmentCopied": "Environment info copied",
|
|
"about.feedbackInfo": "{{appName}} ({{commitSha}}) is open-source and actively developed on GitHub. If you have any feedback or suggestions, please feel free to <OpenIssueLink>open an issue</OpenIssueLink> on our GitHub.",
|
|
"about.iconLibrary": "The icon library used is copyrighted by <IconLibraryLink /> and cannot be redistributed.",
|
|
"about.licenseInfo": "Copyright © {{currentYear}} {{appName}}. All rights reserved.",
|
|
"about.noUpdateAvailable": "You're on the latest version",
|
|
"about.privacyPolicy": "Privacy Policy",
|
|
"about.projectLicense": "{{appName}} is licensed under the GNU Affero General Public License version 3 with additional exceptions.",
|
|
"about.rateFolo": "Rate Folo",
|
|
"about.rateFoloDescription": "Leave a rating to support the product.",
|
|
"about.rendererVersion": "Renderer",
|
|
"about.resources": "Resources & Contributions",
|
|
"about.sendFeedback": "Send Feedback",
|
|
"about.sendFeedbackDescription": "Tell us what you would like improved.",
|
|
"about.socialMedia": "Social Media",
|
|
"about.support": "Support",
|
|
"about.termsOfService": "Terms of Service",
|
|
"about.updateAvailable": "Update available!",
|
|
"about.updateCheckFailed": "Failed to check for updates",
|
|
"about.updateDescription": "Keep your app up to date with the latest features and improvements",
|
|
"actions.actionName": "Action {{number}}",
|
|
"actions.action_card.add": "Add",
|
|
"actions.action_card.all": "All",
|
|
"actions.action_card.and": "And",
|
|
"actions.action_card.block": "Block",
|
|
"actions.action_card.block_rules": "Block Rules",
|
|
"actions.action_card.custom_filters": "Custom Filters",
|
|
"actions.action_card.empty.cta": "Create your first rule",
|
|
"actions.action_card.empty.description": "Create your first action rule to automatically process your feeds.",
|
|
"actions.action_card.empty.start": "Start here!",
|
|
"actions.action_card.empty.title": "No Actions Yet",
|
|
"actions.action_card.enable_readability": "Enable Readability",
|
|
"actions.action_card.feed_options.entry_attachments_duration": "Entry Video Length",
|
|
"actions.action_card.feed_options.entry_author": "Entry Author",
|
|
"actions.action_card.feed_options.entry_content": "Entry Content",
|
|
"actions.action_card.feed_options.entry_media_length": "Entry Media Length",
|
|
"actions.action_card.feed_options.entry_title": "Entry Title",
|
|
"actions.action_card.feed_options.entry_url": "Entry URL",
|
|
"actions.action_card.feed_options.feed_category": "Feed Category",
|
|
"actions.action_card.feed_options.feed_title": "Feed Title",
|
|
"actions.action_card.feed_options.feed_url": "Feed URL",
|
|
"actions.action_card.feed_options.site_url": "Site URL",
|
|
"actions.action_card.feed_options.status": "Status",
|
|
"actions.action_card.feed_options.subscription_view": "Subscription View",
|
|
"actions.action_card.field": "Field",
|
|
"actions.action_card.from": "From",
|
|
"actions.action_card.generate_summary": "Generate Summary Using AI",
|
|
"actions.action_card.invalid_regex": "Invalid regex: {{error}}",
|
|
"actions.action_card.name": "Name",
|
|
"actions.action_card.new_entry_notification": "Notification of New Entry",
|
|
"actions.action_card.no_translation": "No Translation",
|
|
"actions.action_card.operation_options.contains": "Contains",
|
|
"actions.action_card.operation_options.does_not_contain": "Does Not Contain",
|
|
"actions.action_card.operation_options.is_equal_to": "Is Equal to",
|
|
"actions.action_card.operation_options.is_greater_than": "Is Greater Than",
|
|
"actions.action_card.operation_options.is_less_than": "Is Less Than",
|
|
"actions.action_card.operation_options.is_not_equal_to": "Is Not Equal to",
|
|
"actions.action_card.operation_options.matches_regex": "Matches Regex",
|
|
"actions.action_card.operator": "Operator",
|
|
"actions.action_card.or": "Or",
|
|
"actions.action_card.regex_help": "Regex pattern example: (car|bottle|people). Escape special characters when you want to match them literally.",
|
|
"actions.action_card.rewrite_rules": "Rewrite Rules",
|
|
"actions.action_card.select_field": "Select Field",
|
|
"actions.action_card.select_operation": "Select Operation",
|
|
"actions.action_card.settings": "Settings",
|
|
"actions.action_card.silence": "Silence",
|
|
"actions.action_card.source_content": "View Source Content",
|
|
"actions.action_card.star": "Star",
|
|
"actions.action_card.status_options.collected": "Collected",
|
|
"actions.action_card.status_options.read": "Read",
|
|
"actions.action_card.summary.action_count": "{{count}} actions enabled",
|
|
"actions.action_card.summary.active": "Active",
|
|
"actions.action_card.summary.copy": "Copy to Clipboard",
|
|
"actions.action_card.summary.delete": "Delete",
|
|
"actions.action_card.summary.delete_message": "Are you sure you want to delete this rule? This action cannot be undone.",
|
|
"actions.action_card.summary.delete_title": "Delete Rule",
|
|
"actions.action_card.summary.disabled": "Disabled",
|
|
"actions.action_card.summary.empty": "No rules yet",
|
|
"actions.action_card.summary.export": "Export to File",
|
|
"actions.action_card.summary.helper": "Automate your workflow with precise triggers and actions.",
|
|
"actions.action_card.summary.import": "Import",
|
|
"actions.action_card.summary.import_clipboard": "Import from Clipboard",
|
|
"actions.action_card.summary.import_file": "Import from File",
|
|
"actions.action_card.summary.no_actions": "No actions configured yet",
|
|
"actions.action_card.summary.rule_count": "{{count}} rules",
|
|
"actions.action_card.summary.share": "Share",
|
|
"actions.action_card.summary.toggle": "Toggle rule status",
|
|
"actions.action_card.then_do": "Then Do…",
|
|
"actions.action_card.to": "To",
|
|
"actions.action_card.translate_into": "Translate",
|
|
"actions.action_card.value": "Value",
|
|
"actions.action_card.value_placeholder": "Enter value",
|
|
"actions.action_card.webhooks": "Webhooks",
|
|
"actions.action_card.when_feeds_match": "When Feeds Match…",
|
|
"actions.condition": "Condition",
|
|
"actions.conditions": "Conditions",
|
|
"actions.conflict.keep_editing": "Keep Editing",
|
|
"actions.conflict.message": "Your action rules were changed elsewhere, such as on another device, since you started editing. Load the latest rules to discard your changes here, or save yours over them.",
|
|
"actions.conflict.overwrite": "Save Mine Anyway",
|
|
"actions.conflict.reload": "Load Latest Rules",
|
|
"actions.conflict.title": "Rules Changed Elsewhere",
|
|
"actions.edit_condition": "Edit Condition",
|
|
"actions.edit_rewrite_rule": "Edit Rewrite Rule",
|
|
"actions.edit_rule": "Edit Rule",
|
|
"actions.edit_webhook": "Edit Webhook",
|
|
"actions.import_result.invalid_condition": "Invalid rule: missing or invalid condition field",
|
|
"actions.import_result.invalid_name": "Invalid rule: missing or invalid name field",
|
|
"actions.import_result.invalid_result": "Invalid rule: missing or invalid result field",
|
|
"actions.import_result.invalid_structure": "Invalid JSON structure: missing or invalid rules array",
|
|
"actions.import_result.parse_failed": "Failed to parse JSON: {{error}}",
|
|
"actions.import_result.success_one": "Successfully imported {{count}} action rule",
|
|
"actions.import_result.success_other": "Successfully imported {{count}} action rules",
|
|
"actions.import_result.unknown_error": "Unknown error",
|
|
"actions.info": "Actions Are Collections of Rules That You Can Automate to Perform Tasks on Server or Client Side.",
|
|
"actions.load_failed": "Couldn't load your action rules.",
|
|
"actions.navigate.prompt": "You have unsaved action changes. Are you sure you want to leave?",
|
|
"actions.newRule": "New Rule",
|
|
"actions.no_rule": "No rule available",
|
|
"actions.save": "Save",
|
|
"actions.saveSuccess": "🎉 Actions Saved.",
|
|
"actions.save_invalid_regex": "\"{{name}}\" has an invalid regex. Fix it before saving.",
|
|
"actions.saving": "Saving...",
|
|
"actions.share.copy_failed": "Failed to copy action rules to clipboard",
|
|
"actions.share.copy_success": "Action rules copied to clipboard",
|
|
"actions.share.export_failed": "Failed to export action rules",
|
|
"actions.share.export_success": "Action rules exported successfully as {{filename}}",
|
|
"actions.share.import_clipboard_failed": "Failed to import from clipboard",
|
|
"actions.share.import_failed": "Failed to import action rules",
|
|
"actions.share.invalid_clipboard": "Invalid clipboard data",
|
|
"actions.title": "Actions",
|
|
"actions.unknown_condition": "Unknown",
|
|
"appearance.accent_color.colors.blue": "Blue",
|
|
"appearance.accent_color.colors.gray": "Gray",
|
|
"appearance.accent_color.colors.green": "Green",
|
|
"appearance.accent_color.colors.orange": "Orange",
|
|
"appearance.accent_color.colors.pink": "Pink",
|
|
"appearance.accent_color.colors.purple": "Purple",
|
|
"appearance.accent_color.colors.red": "Red",
|
|
"appearance.accent_color.colors.yellow": "Yellow",
|
|
"appearance.accent_color.custom": "Custom color",
|
|
"appearance.accent_color.description": "Choose the accent color for the app interface.",
|
|
"appearance.accent_color.label": "Accent Color",
|
|
"appearance.auto_hide_reader_header.description": "Slide the top bar and the previous and next buttons away when scrolling down, and bring them back when scrolling up.",
|
|
"appearance.auto_hide_reader_header.label": "Hide Header While Reading",
|
|
"appearance.code_highlight_theme.description": "Adjust the code highlight theme.",
|
|
"appearance.code_highlight_theme.label": "Code Highlight Theme",
|
|
"appearance.code_highlighting.title": "Code Highlighting",
|
|
"appearance.common.title": "Common",
|
|
"appearance.content": "Content",
|
|
"appearance.content_display.title": "Content Display",
|
|
"appearance.content_font.default": "Default (UI Font)",
|
|
"appearance.content_font.description": "Adjust the font used for the reading content.",
|
|
"appearance.content_font.label": "Content Font",
|
|
"appearance.content_line_height.description": "Adjust spacing between lines of text in articles.",
|
|
"appearance.content_line_height.label": "Content Line Height",
|
|
"appearance.content_line_height.loose": "Loose",
|
|
"appearance.content_line_height.normal": "Normal",
|
|
"appearance.content_line_height.relaxed": "Relaxed",
|
|
"appearance.content_line_height.snug": "Snug",
|
|
"appearance.content_line_height.tight": "Tight",
|
|
"appearance.custom_css.button": "Edit",
|
|
"appearance.custom_css.description": "Custom CSS style for content.",
|
|
"appearance.custom_css.label": "Custom CSS",
|
|
"appearance.custom_font": "Custom Font",
|
|
"appearance.customization.title": "Customization",
|
|
"appearance.customize_sub_tabs.description": "Customize the subscription tabs to your liking.",
|
|
"appearance.customize_sub_tabs.label": "Customize View Tabs",
|
|
"appearance.customize_toolbar.description": "Customize the entry content toolbar to your liking.",
|
|
"appearance.customize_toolbar.label": "Customize Toolbar",
|
|
"appearance.date_format.description": "Adjust the display date format.",
|
|
"appearance.date_format.label": "Date Format",
|
|
"appearance.font.custom": "Custom",
|
|
"appearance.font.system": "System UI",
|
|
"appearance.font_scaling.content_different.description": "Set independent font size for article content.",
|
|
"appearance.font_scaling.content_different.label": "Use Different Font Size for Content",
|
|
"appearance.font_scaling.content_size.description": "Set the font size for article content.",
|
|
"appearance.font_scaling.content_size.l": "Large",
|
|
"appearance.font_scaling.content_size.label": "Content Font Size",
|
|
"appearance.font_scaling.content_size.m": "Default",
|
|
"appearance.font_scaling.content_size.s": "Small",
|
|
"appearance.font_scaling.content_size.xl": "Larger",
|
|
"appearance.font_scaling.content_size.xs": "Smaller",
|
|
"appearance.font_scaling.scale.description": "Adjust the font size scaling factor.",
|
|
"appearance.font_scaling.scale.label": "Font Scale",
|
|
"appearance.font_scaling.size.l": "Large",
|
|
"appearance.font_scaling.size.m": "Default",
|
|
"appearance.font_scaling.size.s": "Small",
|
|
"appearance.font_scaling.size.xl": "Larger",
|
|
"appearance.font_scaling.size.xs": "Smaller",
|
|
"appearance.font_scaling.system.description": "Follow system accessibility font size settings.",
|
|
"appearance.font_scaling.system.label": "Use System Font Scaling",
|
|
"appearance.font_scaling.title": "Font Scaling",
|
|
"appearance.general": "General",
|
|
"appearance.global_font.default": "Follow System",
|
|
"appearance.global_font_size.description": "Adjust the overall text size.",
|
|
"appearance.global_font_size.label": "Global Font Size",
|
|
"appearance.guess_code_language.description": "Major programming languages that use models to infer unlabeled code blocks.",
|
|
"appearance.guess_code_language.label": "Guess Code Language",
|
|
"appearance.hide_extra_badge.description": "Hide the special badges of the feed in the sidebar, e.g. Boost, Claimed.",
|
|
"appearance.hide_extra_badge.description_mobile": "Hide the special badges of feeds in the subscription list, e.g. Boost, Claimed.",
|
|
"appearance.hide_extra_badge.label": "Hide Special Badges",
|
|
"appearance.hide_recent_reader.description": "Hide the recent readers and view count in the entry.",
|
|
"appearance.hide_recent_reader.label": "Hide Recent Readers & View Counts",
|
|
"appearance.interface_window.title": "Interface & Window",
|
|
"appearance.misc": "Misc",
|
|
"appearance.modal_overlay.description": "Show modal overlay.",
|
|
"appearance.modal_overlay.label": "Show Modal Overlay",
|
|
"appearance.opaque_sidebars.description": "Make the sidebar background transparent.",
|
|
"appearance.opaque_sidebars.label": "Opaque Sidebars",
|
|
"appearance.reader_font.default": "Default",
|
|
"appearance.reader_font.monospace": "Monospace",
|
|
"appearance.reader_font.rounded": "Rounded",
|
|
"appearance.reader_font.serif": "Serif",
|
|
"appearance.reader_render_inline_style.description": "Allows rendering of the inline style of the original HTML.",
|
|
"appearance.reader_render_inline_style.label": "Render Inline Style",
|
|
"appearance.reader_text_color.contrast": "High Contrast",
|
|
"appearance.reader_text_color.default": "Default",
|
|
"appearance.reader_text_color.description": "Adjust the color of the article text.",
|
|
"appearance.reader_text_color.label": "Text Color",
|
|
"appearance.reader_text_color.soft": "Soft",
|
|
"appearance.reader_text_color.warm": "Warm",
|
|
"appearance.reading.description": "Font, line height, text color and immersive reading.",
|
|
"appearance.reading.title": "Reading",
|
|
"appearance.reading_view.title": "Reading View",
|
|
"appearance.reduce_motion.description": "Reducing the motion of elements to improve performance and reduce energy consumption.",
|
|
"appearance.reduce_motion.label": "Reduce Motion",
|
|
"appearance.save": "Save",
|
|
"appearance.subscription_list.title": "Subscription List",
|
|
"appearance.subscriptions": "Subscriptions",
|
|
"appearance.system_integration.title": "System Integration",
|
|
"appearance.text_size.default": "Default",
|
|
"appearance.text_size.label": "Global Text Size",
|
|
"appearance.text_size.large": "Large",
|
|
"appearance.text_size.medium": "Medium",
|
|
"appearance.text_size.smaller": "Smaller",
|
|
"appearance.theme.dark": "Dark",
|
|
"appearance.theme.description": "Adjust the overall theme of the app.",
|
|
"appearance.theme.label": "Theme",
|
|
"appearance.theme.light": "Light",
|
|
"appearance.theme.switch_to": "Switch Theme to {{theme}}",
|
|
"appearance.theme.system": "System",
|
|
"appearance.thumbnail_ratio.description": "The ratio of the thumbnail in the entry list.",
|
|
"appearance.thumbnail_ratio.original": "Original",
|
|
"appearance.thumbnail_ratio.square": "Square",
|
|
"appearance.thumbnail_ratio.title": "Thumbnail Ratio",
|
|
"appearance.title": "Appearance",
|
|
"appearance.typography.title": "Typography",
|
|
"appearance.ui_font.description": "Adjust the font used for the UI elements.",
|
|
"appearance.ui_font.label": "Global Font",
|
|
"appearance.unread_count.badge.app_icon_description": "Show the unread count as a badge on the app icon.",
|
|
"appearance.unread_count.badge.app_icon_label": "Show on App Icon",
|
|
"appearance.unread_count.badge.description": "Show the unread count as a badge in the dock icon.",
|
|
"appearance.unread_count.badge.label": "Show as Badge",
|
|
"appearance.unread_count.label": "Unread Count",
|
|
"appearance.unread_count.sidebar.description": "Display unread counts next to feeds and groups.",
|
|
"appearance.unread_count.sidebar.title": "Show unread count",
|
|
"appearance.unread_count.view_and_subscription.description": "Show the unread count in the view and subscription list.",
|
|
"appearance.unread_count.view_and_subscription.label": "Show in View and Subscription",
|
|
"appearance.use_pointer_cursor.description": "When the mouse hovers over any interactive element, the cursor appears as a hand.",
|
|
"appearance.use_pointer_cursor.label": "Use Hand Cursor",
|
|
"appearance.words.customize": "Customize",
|
|
"cli.agent_prompt": "Agent prompt",
|
|
"cli.command_copied": "Command copied",
|
|
"cli.description": "Run Folo CLI from any terminal with npx using folocli@latest, without a global install. Desktop can sync your current login with one click.",
|
|
"cli.global_install": "Run latest with npx",
|
|
"cli.install": "Sync Desktop Login",
|
|
"cli.install_failed": "Failed to sync desktop login to CLI",
|
|
"cli.install_success": "Desktop login synced to CLI",
|
|
"cli.installed": "Connected",
|
|
"cli.not_available": "npx is not available. Install Node.js and npm first.",
|
|
"cli.not_installed": "Not connected",
|
|
"cli.path": "Config path",
|
|
"cli.prompt_copied": "Prompt copied",
|
|
"cli.require_login": "Sign in to Folo Desktop first to sync your CLI login.",
|
|
"cli.runtime_missing": "Node.js/npm required",
|
|
"cli.runtime_ready": "Node.js/npm ready",
|
|
"cli.status": "Status",
|
|
"cli.title": "Folo CLI",
|
|
"cli.uninstall": "Clear CLI Login",
|
|
"cli.uninstall_failed": "Failed to clear CLI login",
|
|
"cli.uninstall_success": "CLI login cleared",
|
|
"common.give_star": "<HeartIcon />Love our product? <Link>Give us a star on GitHub!</Link>",
|
|
"common.login_required": "Please log in to access this setting.",
|
|
"control.paid_badge.basic_or_higher": "This feature requires a Basic plan or higher to use",
|
|
"control.paid_badge.free_limited": "This feature is limited for free plan",
|
|
"customizeToolbar.more_actions.description": "Will be shown in the dropdown menu.",
|
|
"customizeToolbar.more_actions.title": "More Actions",
|
|
"customizeToolbar.quick_actions.description": "Customize and reorder your frequently used actions.",
|
|
"customizeToolbar.quick_actions.title": "Quick Actions",
|
|
"customizeToolbar.reset_layout": "Reset to Default Layout",
|
|
"customizeToolbar.title": "Customize Toolbar",
|
|
"data_control.app_cache_limit.description": "The maximum size of the app cache. Once the cache reaches this size, the oldest items will be deleted to free up space.",
|
|
"data_control.app_cache_limit.label": "App Cache Limit",
|
|
"data_control.clean_cache.button": "Clean Cache",
|
|
"data_control.clean_cache.cancel": "Cancel",
|
|
"data_control.clean_cache.clear": "Clear",
|
|
"data_control.clean_cache.description": "Clean the app cache to free up space.",
|
|
"data_control.clean_cache.description_web": "Clean the web app service worker cache to free up space.",
|
|
"data_control.clean_cache.success": "Cache cleaned successfully.",
|
|
"data_control.data_sources": "Data Sources",
|
|
"data_control.export_local_database.failed": "Failed to export database",
|
|
"data_control.export_local_database.label": "Export local database",
|
|
"data_control.import_opml.label": "Import subscriptions from OPML",
|
|
"data_control.import_opml.no_file": "No file selected",
|
|
"data_control.import_opml.result": "Import successful: {{successful}} imported, {{conflict}} already subscribed, {{failed}} failed.",
|
|
"data_control.utils": "Utils",
|
|
"discoverFilters.filters": "Filters",
|
|
"discoverFilters.language": "Language",
|
|
"discoverFilters.title": "Discover Filters",
|
|
"feeds.claim": "Claim Feeds",
|
|
"feeds.claimTips": "To claim your feeds and receive tips, right-click on the feed in your subscription list and select Claim.",
|
|
"feeds.filter.all": "All ({{count}})",
|
|
"feeds.filter.rsshub": "RSSHub ({{count}})",
|
|
"feeds.noFeeds": "No claimed feeds",
|
|
"feeds.subscription": "Subscribed Feeds",
|
|
"feeds.tableHeaders.date": "Subscribed Date",
|
|
"feeds.tableHeaders.followers": "Followers",
|
|
"feeds.tableHeaders.name": "Name",
|
|
"feeds.tableHeaders.subscriptionCount": "Subs",
|
|
"feeds.tableHeaders.tipAmount": "Tips",
|
|
"feeds.tableHeaders.updatesPerWeek": "Updates",
|
|
"feeds.tableHeaders.view": "View",
|
|
"feeds.tableRow.errorFallback": "Feed has encountered an error",
|
|
"feeds.tableRow.latestEntryPublished": "Latest Entry Published",
|
|
"feeds.tableRow.subscriptionCount": "Subscription Count",
|
|
"feeds.tableRow.updatesPerWeek": "Updates Per Week",
|
|
"feeds.tableRow.updatesPerWeekValue": "{{value}}/w",
|
|
"feeds.tableSelected.clear": "Clear",
|
|
"feeds.tableSelected.item": "{{count}} item(s) selected",
|
|
"feeds.tableSelected.moveToView.action": "Move to View",
|
|
"feeds.tableSelected.moveToView.confirm": "Are you sure you want to move these feeds to {{view}}?",
|
|
"feeds.tableSelected.moveToView.confirmTitle": "Confirm",
|
|
"feeds.tableSelected.unsubscribe": "Unsubscribe",
|
|
"general.action.summary.description": "Generate a summary of the entry using AI.",
|
|
"general.action.summary.label": "AI Summary",
|
|
"general.action.title": "AI Actions",
|
|
"general.action.translation.description": "Translate the entry into the selected language.",
|
|
"general.action.translation.label": "AI Translation",
|
|
"general.action_language.default": "Default (UI Language)",
|
|
"general.action_language.description": "Choose the language for the AI actions, e.g. AI Summary, AI Translation.",
|
|
"general.action_language.label": "AI Output Language",
|
|
"general.advanced": "Advanced",
|
|
"general.app": "App",
|
|
"general.auto_expand_long_social_media.description": "Automatically expand social media entries containing long text.",
|
|
"general.auto_expand_long_social_media.label": "Expand long social media",
|
|
"general.auto_group.description": "Group feeds from the same website domain together.",
|
|
"general.auto_group.label": "Auto Group feeds by site",
|
|
"general.content": "Content",
|
|
"general.data": "Data",
|
|
"general.dim_read.description": "Dim the color of entries in the timeline that have been read.",
|
|
"general.dim_read.label": "Fade Read Items",
|
|
"general.enhanced.description": "Enabling the enhanced settings offers more customization options, but may also introduce unforeseen issues.",
|
|
"general.enhanced.disabled.tip": "Enhanced settings are disabled, you can enable them in the General settings - Advanced.",
|
|
"general.enhanced.enable.modal.cancel": "Cancel",
|
|
"general.enhanced.enable.modal.confirm": "Enable",
|
|
"general.enhanced.enable.modal.description": "Enabling the enhanced settings offers more customization options, but may also introduce unforeseen issues. Do not enable this unless you know what you are doing.",
|
|
"general.enhanced.enable.modal.title": "Enable Enhanced Settings",
|
|
"general.enhanced.enabled.tip": "Enhanced settings are enabled, you can disable them in the General settings - Advanced.",
|
|
"general.enhanced.label": "Enhanced Settings",
|
|
"general.export.button": "Export",
|
|
"general.export.description": "Export your list of feed subscriptions.",
|
|
"general.export.folder_mode.description": "Decide how you want to organize your export folders.",
|
|
"general.export.folder_mode.label": "Folder Mode",
|
|
"general.export.folder_mode.option.category": "Category",
|
|
"general.export.folder_mode.option.view": "View",
|
|
"general.export.label": "Export Feeds (OPML)",
|
|
"general.export.rsshub_url.description": "Default base URL for RSSHub route, leave it empty to use https://rsshub.app.",
|
|
"general.export.rsshub_url.label": "RSSHub URL",
|
|
"general.export_data.title": "Export Data",
|
|
"general.export_database.button": "Export",
|
|
"general.export_database.description": "Export all your data, including articles (Full Backup).",
|
|
"general.export_database.label": "Export Database",
|
|
"general.group_by_date.description": "Group entries by date.",
|
|
"general.group_by_date.label": "Group by date",
|
|
"general.hide_all_read_subscriptions.description": "While \"Show Unread Only\" is on, hide subscriptions without unread entries in the subscription list.",
|
|
"general.hide_all_read_subscriptions.label": "Hide read",
|
|
"general.hide_private_subscriptions_in_timeline.description": "Hide private subscriptions from your subscriptions list and hide their entries from your timeline (they are always invisible to the public regardless of this setting).",
|
|
"general.hide_private_subscriptions_in_timeline.label": "Hide private",
|
|
"general.language.description": "Choose the display language for the app.",
|
|
"general.language.title": "Language",
|
|
"general.launch_at_login": "Launch at login",
|
|
"general.log_file.button": "Reveal",
|
|
"general.log_file.description": "Reveal the log file in the system.",
|
|
"general.log_file.label": "Log File",
|
|
"general.maintenance.title": "Maintenance",
|
|
"general.mark_as_read.hover.description": "Automatically mark entries as read when hovered.",
|
|
"general.mark_as_read.hover.label": "When hovering over article",
|
|
"general.mark_as_read.render.description": "Mark items like social posts or images as read immediately.",
|
|
"general.mark_as_read.render.label": "Single items when they enter view",
|
|
"general.mark_as_read.scroll.description": "Automatically mark entries as read when scrolled out of the view.",
|
|
"general.mark_as_read.scroll.label": "When scrolling past article",
|
|
"general.mark_as_read.title": "Mark as read",
|
|
"general.minimize_to_tray.description": "Minimize to system tray when closing window.",
|
|
"general.minimize_to_tray.label": "Minimize to tray",
|
|
"general.minimize_to_tray.restart_now": "Restart now",
|
|
"general.minimize_to_tray.restart_to_remove": "The tray icon will be removed after Folo restarts.",
|
|
"general.network": "Network",
|
|
"general.open_links_in_external_app.label": "Open links in external app",
|
|
"general.privacy": "Privacy",
|
|
"general.proxy.description": "Set proxy for network traffic routing, e.g., socks://proxy.example.com:1080.",
|
|
"general.proxy.invalid": "Enter a proxy URL such as http://127.0.0.1:7890 or socks5://127.0.0.1:1080.",
|
|
"general.proxy.label": "Proxy",
|
|
"general.rebuild_database.button": "Rebuild",
|
|
"general.rebuild_database.cancel": "Cancel",
|
|
"general.rebuild_database.description": "If you are experiencing rendering issues, rebuilding the database may solve them.",
|
|
"general.rebuild_database.label": "Rebuild Database",
|
|
"general.rebuild_database.title": "Rebuild Database",
|
|
"general.rebuild_database.warning.line1": "Rebuilding the database will clear all your local data.",
|
|
"general.rebuild_database.warning.line2": "Are you sure you want to continue?",
|
|
"general.send_anonymous_data.description": "By opting to send anonymized telemetry data, you contribute to improving the overall user experience of Folo.",
|
|
"general.send_anonymous_data.label": "Send anonymous data",
|
|
"general.subscription": "Subscription",
|
|
"general.subscriptions": "Subscriptions",
|
|
"general.timeline": "Timeline",
|
|
"general.translation_mode.bilingual": "Bilingual Comparison",
|
|
"general.translation_mode.description": "Choose how the translated text is displayed in the entry list.",
|
|
"general.translation_mode.label": "AI Translation Mode",
|
|
"general.translation_mode.translation-only": "Only the translation",
|
|
"general.tts": "TTS",
|
|
"general.unread_only.description": "Show only unread entries in the timeline. The unread filter button in the timeline header turns this on and off too, and the choice is kept for the next launch.",
|
|
"general.unread_only.label": "Show unread only",
|
|
"general.voices": "Voices",
|
|
"integration.builtin.configured_count": "{{configured}}/{{total}} configured",
|
|
"integration.builtin.search_empty": "No built-in integration found",
|
|
"integration.builtin.title": "Built-in Integration",
|
|
"integration.categories.download_tools": "Download Tools",
|
|
"integration.categories.knowledge_management": "Knowledge Management",
|
|
"integration.categories.media_tools": "Media Tools",
|
|
"integration.categories.reading_services": "Reading Services",
|
|
"integration.cubox.autoMemo.description": "Automatically use Memo mode when text is selected to save to Cubox.",
|
|
"integration.cubox.autoMemo.label": "Auto Memo Mode",
|
|
"integration.cubox.enable.description": "Show 'Save to Cubox' button if available.",
|
|
"integration.cubox.enable.label": "Enable",
|
|
"integration.cubox.title": "Cubox",
|
|
"integration.cubox.token.description": "Please enter the complete Cubox API URL, format: https://cubox.pro/c/api/save/xxxxxxxxx. You can get it here:",
|
|
"integration.cubox.token.label": "Cubox API URL",
|
|
"integration.custom_integrations.actions.delete": "Delete integration",
|
|
"integration.custom_integrations.actions.disable": "Disable integration",
|
|
"integration.custom_integrations.actions.edit": "Edit integration",
|
|
"integration.custom_integrations.actions.enable": "Enable integration",
|
|
"integration.custom_integrations.add.button": "Add New Integration",
|
|
"integration.custom_integrations.create.error": "Failed to create custom integration",
|
|
"integration.custom_integrations.create.success": "Custom integration created successfully",
|
|
"integration.custom_integrations.create.title": "Create Custom Integration",
|
|
"integration.custom_integrations.delete.message": "Are you sure you want to delete \"{{name}}\"? Its URL template and headers will be lost. This action cannot be undone.",
|
|
"integration.custom_integrations.delete.success": "Custom integration deleted successfully",
|
|
"integration.custom_integrations.delete.title": "Delete Custom Integration",
|
|
"integration.custom_integrations.edit.error": "Failed to update custom integration",
|
|
"integration.custom_integrations.edit.success": "Custom integration updated successfully",
|
|
"integration.custom_integrations.edit.title": "Edit Custom Integration",
|
|
"integration.custom_integrations.enable.description": "Allow creating custom sharing integrations with fetch templates supporting various HTTP methods and configurations.",
|
|
"integration.custom_integrations.enable.label": "Enable Custom Integrations",
|
|
"integration.custom_integrations.form.body.description": "Request body for POST/PUT/PATCH methods. Supports placeholders and JSON format.",
|
|
"integration.custom_integrations.form.body.label": "Request Body",
|
|
"integration.custom_integrations.form.body.placeholder": "{\"title\": \"[title]\", \"url\": \"[url]\", \"content\": \"[content_markdown]\"}",
|
|
"integration.custom_integrations.form.headers.add": "Add Header",
|
|
"integration.custom_integrations.form.headers.description": "Add custom headers as key-value pairs. Values support placeholders",
|
|
"integration.custom_integrations.form.headers.key_placeholder": "Header name",
|
|
"integration.custom_integrations.form.headers.label": "Headers",
|
|
"integration.custom_integrations.form.headers.value_placeholder": "Header value",
|
|
"integration.custom_integrations.form.icon.description": "Choose an icon to represent this integration.",
|
|
"integration.custom_integrations.form.icon.label": "Icon",
|
|
"integration.custom_integrations.form.method.description": "Select the HTTP method for the request.",
|
|
"integration.custom_integrations.form.method.label": "HTTP Method",
|
|
"integration.custom_integrations.form.name.label": "Integration Name",
|
|
"integration.custom_integrations.form.name.placeholder": "Enter integration name",
|
|
"integration.custom_integrations.form.scheme.description": "Enter the URL scheme for the external application. Use placeholders like [title], [url], [content_markdown], etc.",
|
|
"integration.custom_integrations.form.scheme.label": "URL Scheme",
|
|
"integration.custom_integrations.form.scheme.placeholder": "e.g., obsidian://new?vault=MyVault&name=[title]&content=[content_markdown]",
|
|
"integration.custom_integrations.form.type.description": "Choose between HTTP API requests or URL scheme redirects to external applications.",
|
|
"integration.custom_integrations.form.type.http": "HTTP Request",
|
|
"integration.custom_integrations.form.type.label": "Integration Type",
|
|
"integration.custom_integrations.form.type.url_scheme": "URL Scheme",
|
|
"integration.custom_integrations.form.url.description": "Use placeholders: [title], [url], [content_html], [summary], [content_markdown].",
|
|
"integration.custom_integrations.form.url.label": "URL",
|
|
"integration.custom_integrations.form.url.placeholder": "https://example.com/api/share",
|
|
"integration.custom_integrations.icons.bookmark": "Bookmark",
|
|
"integration.custom_integrations.icons.document": "Document",
|
|
"integration.custom_integrations.icons.download": "Download",
|
|
"integration.custom_integrations.icons.external_link": "External Link",
|
|
"integration.custom_integrations.icons.link": "Link",
|
|
"integration.custom_integrations.icons.picture": "Picture",
|
|
"integration.custom_integrations.icons.save": "Save",
|
|
"integration.custom_integrations.icons.send": "Send",
|
|
"integration.custom_integrations.icons.share": "Share",
|
|
"integration.custom_integrations.icons.star": "Star",
|
|
"integration.custom_integrations.list.empty.button": "Create First Integration",
|
|
"integration.custom_integrations.list.empty.description": "Create custom sharing integrations with fetch templates to integrate with any service using HTTP requests",
|
|
"integration.custom_integrations.list.empty.title": "No custom integrations yet",
|
|
"integration.custom_integrations.list.title": "Custom Integrations",
|
|
"integration.custom_integrations.modal.description": "Create custom sharing integrations using fetch templates with HTTP methods, URLs, headers, and body. Use placeholders like [title], [url], [content_html], [summary], and [content_markdown].",
|
|
"integration.custom_integrations.placeholders.click_to_copy": "Click to copy",
|
|
"integration.custom_integrations.placeholders.description": "Click on any placeholder to copy it to your clipboard.",
|
|
"integration.custom_integrations.placeholders.example": "Example: {{example}}",
|
|
"integration.custom_integrations.placeholders.fields.author": "Entry author",
|
|
"integration.custom_integrations.placeholders.fields.content_html": "Entry content in HTML format",
|
|
"integration.custom_integrations.placeholders.fields.content_markdown": "Entry content in Markdown format",
|
|
"integration.custom_integrations.placeholders.fields.description": "Entry description",
|
|
"integration.custom_integrations.placeholders.fields.published_at": "Publication date in ISO format",
|
|
"integration.custom_integrations.placeholders.fields.summary": "Entry summary or description",
|
|
"integration.custom_integrations.placeholders.fields.title": "Entry title",
|
|
"integration.custom_integrations.placeholders.fields.url": "Entry URL",
|
|
"integration.custom_integrations.placeholders.help": "Available Placeholders",
|
|
"integration.custom_integrations.preview.action_label": "Action:",
|
|
"integration.custom_integrations.preview.action_open_directly": "Open directly",
|
|
"integration.custom_integrations.preview.action_open_with_params": "Open with parameters",
|
|
"integration.custom_integrations.preview.body": "Request Body",
|
|
"integration.custom_integrations.preview.failed": "Failed to generate preview",
|
|
"integration.custom_integrations.preview.generated_scheme": "Generated URL Scheme",
|
|
"integration.custom_integrations.preview.generating": "Generating preview...",
|
|
"integration.custom_integrations.preview.headers": "Headers",
|
|
"integration.custom_integrations.preview.placeholders": "Available Placeholders",
|
|
"integration.custom_integrations.preview.protocol_info": "Protocol Information",
|
|
"integration.custom_integrations.preview.protocol_label": "Protocol:",
|
|
"integration.custom_integrations.preview.request": "Request",
|
|
"integration.custom_integrations.preview.title": "Preview Request",
|
|
"integration.custom_integrations.preview.url_scheme_behavior_description": "URL schemes will attempt to open the target application with the provided data. Make sure the application is installed and registered for the URL scheme on your system.",
|
|
"integration.custom_integrations.preview.url_scheme_behavior_title": "URL Scheme Behavior",
|
|
"integration.custom_integrations.preview.url_scheme_placeholders": "Available Placeholders for URL Schemes",
|
|
"integration.custom_integrations.preview.url_scheme_title": "Preview URL Scheme",
|
|
"integration.custom_integrations.search_empty": "No custom integration found",
|
|
"integration.custom_integrations.status.disabled": "Disabled",
|
|
"integration.custom_integrations.title": "Custom Integrations",
|
|
"integration.eagle.enable.description": "Display 'Save media to Eagle' button when available.",
|
|
"integration.eagle.enable.label": "Enable",
|
|
"integration.eagle.title": "Eagle",
|
|
"integration.export.button": "Export Settings",
|
|
"integration.export.error": "Failed to export integration settings",
|
|
"integration.export.success": "Integration settings exported successfully",
|
|
"integration.general": "General",
|
|
"integration.import.button": "Import Settings",
|
|
"integration.import.error": "Failed to import integration settings",
|
|
"integration.import.invalid": "Invalid integration settings file",
|
|
"integration.import.success": "Integration settings imported successfully",
|
|
"integration.instapaper.enable.description": "Display 'Save to Instapaper' button when available.",
|
|
"integration.instapaper.enable.label": "Enable",
|
|
"integration.instapaper.password.label": "Instapaper Password",
|
|
"integration.instapaper.title": "Instapaper",
|
|
"integration.instapaper.username.label": "Instapaper Username",
|
|
"integration.obsidian.enable.description": "Display 'Save to Obsidian' button when available.",
|
|
"integration.obsidian.enable.label": "Enable",
|
|
"integration.obsidian.title": "Obsidian",
|
|
"integration.obsidian.vaultPath.change": "Change",
|
|
"integration.obsidian.vaultPath.invalid": "Path not available",
|
|
"integration.obsidian.vaultPath.label": "Obsidian Vault Path",
|
|
"integration.obsidian.vaultPath.reselect": "Reselect",
|
|
"integration.obsidian.vaultPath.select": "Select Folder",
|
|
"integration.outline.collection.description": "The UUID or urlId of the collection where the documents is saved.",
|
|
"integration.outline.collection.label": "Outline Collection",
|
|
"integration.outline.enable.description": "Display 'Save to Outline' button when available.",
|
|
"integration.outline.enable.label": "Enable",
|
|
"integration.outline.endpoint.description": "The URL is 'https://<YOUR_OUTLINE_DOMAIN>/api'.",
|
|
"integration.outline.endpoint.label": "Outline API Base URL",
|
|
"integration.outline.title": "Outline",
|
|
"integration.outline.token.description": "You can get it from your Outline account settings.",
|
|
"integration.outline.token.label": "Outline API Key",
|
|
"integration.qbittorrent.enable.description": "Display 'Download with qBittorrent' button when available.",
|
|
"integration.qbittorrent.enable.label": "Enable",
|
|
"integration.qbittorrent.host.description": "The URL of your qBittorrent WebUI, e.g. http://localhost:8080.",
|
|
"integration.qbittorrent.host.label": "qBittorrent Host",
|
|
"integration.qbittorrent.password.label": "qBittorrent Password",
|
|
"integration.qbittorrent.title": "qBittorrent",
|
|
"integration.qbittorrent.username.label": "qBittorrent Username",
|
|
"integration.readeck.enable.description": "Display 'Save to Readeck' button when available.",
|
|
"integration.readeck.enable.label": "Enable",
|
|
"integration.readeck.endpoint.description": "The URL is 'https://<YOUR_READECK_DOMAIN>'.",
|
|
"integration.readeck.endpoint.label": "Readeck API Base URL",
|
|
"integration.readeck.title": "Readeck",
|
|
"integration.readeck.token.description": "You can get it from your Readeck account settings.",
|
|
"integration.readeck.token.label": "Readeck API Token",
|
|
"integration.readwise.enable.description": "Display 'Save to Readwise' button when available.",
|
|
"integration.readwise.enable.label": "Enable",
|
|
"integration.readwise.title": "Readwise",
|
|
"integration.readwise.token.description": "You can get it here:",
|
|
"integration.readwise.token.label": "Readwise Access Token",
|
|
"integration.save_ai_summary_as_description.label": "Save AI Summary as description",
|
|
"integration.search.label": "Search integrations",
|
|
"integration.search.placeholder": "Search integrations...",
|
|
"integration.status.configured": "Configured",
|
|
"integration.status.enabled": "Enabled",
|
|
"integration.tip": "Tip: Your sensitive data is stored locally and is not uploaded to the server.",
|
|
"integration.title": "Integration",
|
|
"integration.use_browser_fetch.description": "Use browser fetch API for custom integrations instead of Electron's native fetch. Enable for better web compatibility, disable for enhanced security.",
|
|
"integration.use_browser_fetch.label": "Use Browser Fetch",
|
|
"integration.zotero.enable.description": "Show 'Save to Zotero' button if avilable.",
|
|
"integration.zotero.enable.label": "Enable",
|
|
"integration.zotero.title": "Zotero",
|
|
"integration.zotero.token.description": "Zotero API token, you can get it here:",
|
|
"integration.zotero.token.label": "Zotero API Token",
|
|
"integration.zotero.userID.description": "Zotero User ID, You can get it here:",
|
|
"integration.zotero.userID.label": "Zotero User ID",
|
|
"lists.create": "Create New List",
|
|
"lists.created.error": "Failed to create list.",
|
|
"lists.created.success": "List created successfully!",
|
|
"lists.delete.confirm": "Confirm deletion of the list?",
|
|
"lists.delete.error": "Failed to delete list.",
|
|
"lists.delete.success": "List deleted successfully!",
|
|
"lists.delete.warning": "Warning: Once deleted, the list will no longer be available and all content will be permanently deleted and unrecoverable!",
|
|
"lists.description": "Description",
|
|
"lists.edit.error": "Failed to edit list.",
|
|
"lists.edit.label": "Edit",
|
|
"lists.edit.success": "List edited successfully!",
|
|
"lists.feeds.actions": "Actions",
|
|
"lists.feeds.add.error": "Failed to add feed to list.",
|
|
"lists.feeds.add.label": "Add",
|
|
"lists.feeds.add.success": "Feed added to list.",
|
|
"lists.feeds.delete.error": "Failed to remove feed from list.",
|
|
"lists.feeds.delete.success": "Feed removed from list.",
|
|
"lists.feeds.manage": "Manage Feeds",
|
|
"lists.feeds.owner": "Owner",
|
|
"lists.feeds.remove": "Remove from list",
|
|
"lists.feeds.title": "Title",
|
|
"lists.feeds.untitled": "Untitled Feed",
|
|
"lists.image": "Image",
|
|
"lists.info": "Lists are collections of feeds that you can share or sell for others to subscribe to. Subscribers will synchronize and access all feeds in the list.",
|
|
"lists.manage_list": "Manage List",
|
|
"lists.noLists": "No lists",
|
|
"lists.select_feeds": "Select feeds to add to the current list",
|
|
"lists.subscriptions": "Subs",
|
|
"lists.title": "Title",
|
|
"lists.title_required": "Enter a title.",
|
|
"lists.view": "View",
|
|
"notifications.channel": "Channel",
|
|
"notifications.current": "(current client)",
|
|
"notifications.empty.description": "Notification channels will appear here after you enable notifications on this device.",
|
|
"notifications.empty.description_web": "To get notifications in this browser, add an Action with \"{{action}}\", then reload Folo and allow notifications when the browser asks.",
|
|
"notifications.empty.title": "No notification channels",
|
|
"notifications.info": "Folo offers robust and versatile notification features through <ActionsLink>Actions</ActionsLink>. You can customize notification for specific feeds, views, or keywords. Below are your registered notification channels.",
|
|
"notifications.test": "Test Notification",
|
|
"notifications.test_success": "Test notification sent successfully.",
|
|
"plan.canceled_expires": "Canceled - Expires {{date}}",
|
|
"plan.current_plan": "Current Plan",
|
|
"plan.descriptions.basic": "More feeds plus daily AI summaries and translations.",
|
|
"plan.descriptions.free": "Great for beginners.",
|
|
"plan.descriptions.plus": "Unlimited AI features with more feeds and automations.",
|
|
"plan.descriptions.pro": "Highest limits, full AI access, and top performance.",
|
|
"plan.featureValues.AI_MODEL_SELECTION.curated": "Curated models",
|
|
"plan.featureValues.AI_MODEL_SELECTION.high_performance": "All high-end models",
|
|
"plan.featureValues.AI_MODEL_SELECTION.none": "—",
|
|
"plan.features.AI_BRING_YOUR_OWN_KEY": "AI Bring Your Own Key",
|
|
"plan.features.AI_CREDIT": "AI Chat Credits",
|
|
"plan.features.AI_MODEL_SELECTION": "AI Model Selection",
|
|
"plan.features.BOOSTS": "Feed Refresh Acceleration",
|
|
"plan.features.INTEGRATION_SUPPORTED": "Third-Party Integrations",
|
|
"plan.features.MAX_ACTIONS": "Actions",
|
|
"plan.features.MAX_AI_ENTRY_SUMMARY_PER_DAY": "AI Summaries Per Day",
|
|
"plan.features.MAX_AI_ENTRY_TRANSLATION_PER_DAY": "AI Translations Per Day",
|
|
"plan.features.MAX_AI_REQUESTS_PER_DAY": "AI Chats Per Day",
|
|
"plan.features.MAX_AI_REQUESTS_PER_MONTH": "AI Chats Per Month",
|
|
"plan.features.MAX_AI_TASKS": "AI Tasks",
|
|
"plan.features.MAX_AI_TEXT_TO_SPEECH_PER_DAY": "AI Text-to-Speech Per Day",
|
|
"plan.features.MAX_INBOXES": "Inboxes",
|
|
"plan.features.MAX_LISTS": "Lists",
|
|
"plan.features.MAX_RSSHUB_SUBSCRIPTIONS": "RSSHub Subscriptions",
|
|
"plan.features.MAX_SUBSCRIPTIONS": "Feed Subscriptions",
|
|
"plan.features.PRIORITY_SUPPORT": "Priority Support",
|
|
"plan.features.PRIVATE_SUBSCRIPTION": "Private Subscriptions",
|
|
"plan.features.SECURE_IMAGE_PROXY": "Secure Image Proxy",
|
|
"plan.features_heading": "Features",
|
|
"plan.in_trial": "In Trial",
|
|
"plan.manage_subscription": "Manage Subscription",
|
|
"plan.manage_subscription_hint_apple": "Manage: Apple Account > Subscriptions",
|
|
"plan.manage_subscription_hint_other_platform": "This subscription was purchased outside this app. Manage it where you subscribed.",
|
|
"plan.period_month": "month",
|
|
"plan.renews": "Renews {{date}}",
|
|
"plan.switch_plan": "Switch Plan",
|
|
"plan.trial_ends": "Trial ends {{date}}",
|
|
"privacy.privacy": "Privacy",
|
|
"privacy.terms": "Terms",
|
|
"profile.avatar.centerCrop": "Center Crop",
|
|
"profile.avatar.cropInstructions": "Drag the crop area to adjust your avatar",
|
|
"profile.avatar.dropZoneSubtext": "or click to select from your computer",
|
|
"profile.avatar.dropZoneText": "Drag and drop an image here",
|
|
"profile.avatar.fileTooLarge": "File size must be less than {{size}}",
|
|
"profile.avatar.fullImage": "Full Image",
|
|
"profile.avatar.invalidFileType": "Please select a valid image file",
|
|
"profile.avatar.label": "Avatar",
|
|
"profile.avatar.preview": "Preview",
|
|
"profile.avatar.processingError": "Error processing image",
|
|
"profile.avatar.uploadError": "Failed to upload avatar",
|
|
"profile.avatar.uploadSuccess": "Avatar uploaded successfully",
|
|
"profile.avatar.uploadTitle": "Upload Avatar",
|
|
"profile.change_password.email_required": "You need to sign in with email first.",
|
|
"profile.change_password.label": "Change Password",
|
|
"profile.confirm_password.label": "Confirm Password",
|
|
"profile.confirm_password.placeholder": "Enter your new password again",
|
|
"profile.current_password.label": "Current Password",
|
|
"profile.current_password.placeholder": "Enter your current password",
|
|
"profile.delete_account.confirm_description": "Are you sure you want to delete your account?\nThis action is irreversible and may take up to two days to take effect.",
|
|
"profile.delete_account.confirm_title": "Delete account",
|
|
"profile.delete_account.label": "Delete Account",
|
|
"profile.edit_email": "Edit Email",
|
|
"profile.edit_profile": "Edit Profile",
|
|
"profile.email.change": "Change Email",
|
|
"profile.email.change_approval_sent": "We sent a link to your current email. Open it to approve the change, and the new email then gets a link to verify it.",
|
|
"profile.email.change_note": "If you want to change your email, you should verify your new email.",
|
|
"profile.email.change_note_verified": "To change your email, approve the change with the link we send to your current email. The new email then gets a link to verify it.",
|
|
"profile.email.changed_verification_sent": "Email to verify the new email has been sent.",
|
|
"profile.email.label": "Email",
|
|
"profile.email.placeholder": "Enter your email",
|
|
"profile.email.send_verification": "Send Verification Email",
|
|
"profile.email.send_verification_failed": "Failed to send verification email",
|
|
"profile.email.sending_verification": "Sending Verification Email...",
|
|
"profile.email.unverified": "Unverified",
|
|
"profile.email.update_failed": "Failed to update email",
|
|
"profile.email.verification_sent": "Email verification sent",
|
|
"profile.email.verified": "Verified",
|
|
"profile.email.verify_status": "Your email is {{status}}",
|
|
"profile.handle.description": "Your unique identifier.",
|
|
"profile.handle.invalid": "Use only letters, numbers and underscores.",
|
|
"profile.handle.label": "Handle",
|
|
"profile.handle.taken": "This handle is already taken.",
|
|
"profile.link_social.authentication": "Authentication",
|
|
"profile.link_social.link": "Link",
|
|
"profile.link_social.link_failed": "Failed to link account.",
|
|
"profile.link_social.link_provider": "Link {{provider}}",
|
|
"profile.link_social.unlink.action": "Unlink",
|
|
"profile.link_social.unlink.confirm": "Are you sure you want to unlink your account?",
|
|
"profile.link_social.unlink.success": "Social account unlinked.",
|
|
"profile.link_social.unlink.title": "Unlink account",
|
|
"profile.link_social.unlink_provider": "Unlink {{provider}}",
|
|
"profile.name.description": "Your public display name.",
|
|
"profile.name.label": "Display Name",
|
|
"profile.new_password.label": "New Password",
|
|
"profile.new_password.placeholder": "Enter your new password",
|
|
"profile.no_password": "<Link>Reset</Link> your password to set a new one.",
|
|
"profile.password.confirm_to_continue": "Confirm your password to continue",
|
|
"profile.password.label": "Password",
|
|
"profile.profile.bio": "Bio",
|
|
"profile.profile.bio_placeholder": "Tell us about yourself...",
|
|
"profile.profile.social_links": "Social Links",
|
|
"profile.profile.social_links_discord": "Discord ID",
|
|
"profile.profile.social_links_facebook": "Facebook ID",
|
|
"profile.profile.social_links_github": "Github ID",
|
|
"profile.profile.social_links_instagram": "Instagram ID",
|
|
"profile.profile.social_links_twitter": "Twitter ID",
|
|
"profile.profile.social_links_youtube": "Youtube ID",
|
|
"profile.profile.website": "Website",
|
|
"profile.reset_password_mail_sent": "Reset password mail sent.",
|
|
"profile.security": "Security",
|
|
"profile.set_avatar": "Set Avatar",
|
|
"profile.sign_out.confirm_message": "Are you sure you want to sign out?",
|
|
"profile.sign_out.confirm_title": "Confirm sign out",
|
|
"profile.submit": "Submit",
|
|
"profile.title": "Profile Settings",
|
|
"profile.totp_code.enter_to_continue": "Enter your TOTP code to continue",
|
|
"profile.totp_code.init": "Scan the QR code with your TOTP app",
|
|
"profile.totp_code.invalid": "Invalid TOTP code.",
|
|
"profile.totp_code.label": "TOTP Code",
|
|
"profile.totp_code.title": "Enter TOTP Code",
|
|
"profile.two_factor.disable": "Disable 2FA",
|
|
"profile.two_factor.disabled": "Two-factor authentication disabled.",
|
|
"profile.two_factor.enable": "Enable 2FA",
|
|
"profile.two_factor.enable_failed": "Failed to enable 2FA.",
|
|
"profile.two_factor.enable_notice": "You need to enable two-factor authentication to perform this action.",
|
|
"profile.two_factor.enabled": "Two-factor authentication enabled.",
|
|
"profile.two_factor.enter_code": "Please enter the code from your authenticator app.",
|
|
"profile.two_factor.invalid_password": "Invalid password or something went wrong.",
|
|
"profile.two_factor.label": "Two Factor",
|
|
"profile.two_factor.no_password": "You need to <Link>set</Link> a password before enabling 2FA.",
|
|
"profile.two_factor.setup.copy_key": "Copy setup key",
|
|
"profile.two_factor.setup.description": "Scan the QR code above with your authenticator app, then enter the 6-digit code shown in the app.",
|
|
"profile.two_factor.setup.key_copied": "Setup key copied",
|
|
"profile.two_factor.setup.title": "2FA Setup",
|
|
"profile.two_factor.verification_required": "Verification Required",
|
|
"profile.two_factor.verify_failed": "Failed to verify code",
|
|
"profile.two_factor.verify_failed_with_error": "Failed to verify: {{error}}",
|
|
"profile.updateSuccess": "Profile updated.",
|
|
"profile.update_password_failed": "Failed to update password",
|
|
"profile.update_password_success": "Password updated.",
|
|
"reviewPrompt.description": "If Folo has been helpful, leaving a rating really helps. If not, tell us what we can improve.",
|
|
"reviewPrompt.loveIt": "Yes, I like it",
|
|
"reviewPrompt.notReally": "Not really",
|
|
"reviewPrompt.title": "Enjoying Folo?",
|
|
"rsshub.addModal.access_key_label": "Access Key (Optional)",
|
|
"rsshub.addModal.add": "Add",
|
|
"rsshub.addModal.base_url_invalid": "Enter the instance's http(s) address, without a user name, password, query (?) or fragment (#).",
|
|
"rsshub.addModal.base_url_label": "Base URL",
|
|
"rsshub.addModal.description": "To use your own instance in Folo, you must add the following environment variables to it.",
|
|
"rsshub.add_new_instance": "Add New Instance",
|
|
"rsshub.description": "RSSHub is a community-driven open-source RSS network. Folo's built-in dedicated instance fetches the RSSHub feeds you follow first. When it can't fetch a feed, the instance you choose here, your own or a third party's, is used instead.",
|
|
"rsshub.official.description": "Folo Built-in RSSHub",
|
|
"rsshub.official.title": "Folo Official",
|
|
"rsshub.public_instances": "Available Instances",
|
|
"rsshub.table.delete.confirm": "Are you sure you want to delete this instance?",
|
|
"rsshub.table.delete.label": "Delete",
|
|
"rsshub.table.delete.success": "Instance deleted successfully.",
|
|
"rsshub.table.description": "Description",
|
|
"rsshub.table.edit": "Edit",
|
|
"rsshub.table.error": "Error",
|
|
"rsshub.table.fallback": "Fallback",
|
|
"rsshub.table.inuse": "In Use",
|
|
"rsshub.table.limit_label": "Limit:",
|
|
"rsshub.table.limit_reached": "Limit Reached",
|
|
"rsshub.table.official": "Official",
|
|
"rsshub.table.owner": "Owner",
|
|
"rsshub.table.private": "Private",
|
|
"rsshub.table.unavailable": "Unavailable",
|
|
"rsshub.table.unlimited": "Unlimited",
|
|
"rsshub.table.use_as_fallback": "Use as Fallback",
|
|
"rsshub.table.use_only": "Use Only This",
|
|
"rsshub.table.userCount": "User Count",
|
|
"rsshub.table.userLimit": "User Limit",
|
|
"rsshub.table.users_label": "Users:",
|
|
"rsshub.table.yours": "Yours",
|
|
"rsshub.useModal.about": "About this Instance",
|
|
"rsshub.useModal.title": "RSSHub Instance",
|
|
"spotlight.add_rule": "Add rule",
|
|
"spotlight.case_sensitive": "Case sensitive",
|
|
"spotlight.color": "Color",
|
|
"spotlight.description": "Highlight words or patterns with a color in the timeline, in opened entries and in AI summaries. When rules overlap, the one higher in the list wins.",
|
|
"spotlight.description_mobile": "Highlight words or patterns with a color in the timeline and in opened entries. When rules overlap, the one higher in the list wins.",
|
|
"spotlight.empty": "No rules yet.",
|
|
"spotlight.enabled": "Enabled",
|
|
"spotlight.invalid_regex": "Invalid regex: {{error}}",
|
|
"spotlight.keyword": "Keyword",
|
|
"spotlight.move_down": "Move down",
|
|
"spotlight.move_up": "Move up",
|
|
"spotlight.pattern": "Pattern",
|
|
"spotlight.regex": "Regex",
|
|
"spotlight.select_color": "Select highlight color {{color}}",
|
|
"spotlight.select_color_index": "Select highlight color {{index}}",
|
|
"spotlight.type": "Type",
|
|
"subscription.actions.comingSoon": "Coming soon",
|
|
"subscription.actions.google_play_not_connected": "Google Play is not available. Make sure you are signed in to the Play Store, then try again.",
|
|
"subscription.actions.google_play_other_account": "Your subscription belongs to another Google account. Switch to it in Google Play to change your plan.",
|
|
"subscription.actions.google_play_unavailable": "This plan is not available from Google Play right now.",
|
|
"subscription.actions.manage_error": "Something went wrong while opening subscription management.",
|
|
"subscription.actions.purchase_pending": "Your purchase is pending. Folo unlocks your plan once Google Play confirms the payment.",
|
|
"subscription.actions.restore": "Restore Purchases",
|
|
"subscription.actions.restore_error": "Something went wrong while restoring your subscription.",
|
|
"subscription.actions.restore_not_found": "No active Apple subscription was found to restore.",
|
|
"subscription.actions.restore_not_found_google": "No active Google Play subscription was found to restore.",
|
|
"subscription.actions.restore_success": "Subscription restored.",
|
|
"subscription.actions.upgrade": "Upgrade",
|
|
"subscription.actions.upgrade_error": "Something went wrong while starting checkout.",
|
|
"subscription.badge.popular": "Most popular",
|
|
"subscription.billing.monthly": "Monthly",
|
|
"subscription.billing.yearly": "Yearly",
|
|
"subscription.billing.yearly_savings": "Save {{value}}%",
|
|
"subscription.discount.tag": "Save {{value}}%",
|
|
"subscription.feature.included": "Included",
|
|
"subscription.legal.auto_renewal_apple": "Auto-renews until canceled in App Store settings.",
|
|
"subscription.legal.auto_renewal_google": "Auto-renews until canceled in Google Play.",
|
|
"subscription.legal.privacy_policy": "Privacy Policy",
|
|
"subscription.legal.terms_of_service": "Terms of Service",
|
|
"subscription.legal.terms_of_use": "Terms of Use (EULA)",
|
|
"subscription.price.free": "Free",
|
|
"subscription.price.free_trial_days": "{{count}}-day free trial",
|
|
"subscription.price.free_trial_months": "{{count}}-month free trial",
|
|
"subscription.price.per_month": "per month",
|
|
"subscription.price.per_month_billed_yearly": "per month, billed yearly",
|
|
"subscription.price.per_year": "per year",
|
|
"subscription.summary.active": "You have an active subscription.",
|
|
"subscription.summary.current": "{{plan}} plan",
|
|
"subscription.summary.free": "Free plan",
|
|
"subscription.summary.free_description": "Upgrade to unlock more feeds, actions, and AI features.",
|
|
"subscription.summary.title": "Your subscription",
|
|
"subscription.summary.trial_expiring": "Trial ends {{date}} ({{days}} days left)",
|
|
"subscription.unavailable": "Subscriptions are not available right now.",
|
|
"titles.about": "About",
|
|
"titles.account": "Account",
|
|
"titles.actions": "Actions",
|
|
"titles.ai": "AI",
|
|
"titles.appearance": "Appearance",
|
|
"titles.cli": "CLI",
|
|
"titles.data_control": "Data Control",
|
|
"titles.feeds": "Feeds",
|
|
"titles.general": "General",
|
|
"titles.integration": "Integration",
|
|
"titles.lists": "Lists",
|
|
"titles.notifications": "Notifications",
|
|
"titles.plan.long": "Upgrade your plan",
|
|
"titles.plan.short": "Plan",
|
|
"titles.privacy": "Privacy",
|
|
"titles.shortcuts": "Shortcuts",
|
|
"titles.sign_out": "Sign Out",
|
|
"titles.spotlight": "Spotlight",
|
|
"titles.subscription.long": "Manage your subscription",
|
|
"titles.subscription.short": "Subscription",
|
|
"wallet.balance.title": "Your Balance",
|
|
"wallet.balance.withdrawable": "Withdrawable",
|
|
"wallet.balance.withdrawableTooltip": "Withdrawable Power includes both the tips you've received and the Power you've recharged.",
|
|
"wallet.create.button": "Create Wallet",
|
|
"wallet.create.description": "Create a free wallet to receive <PowerIcon /> <strong>Power</strong>, which can be used to reward creators and also get rewarded for your content contributions.",
|
|
"wallet.create.success": "🎉 Wallet created.",
|
|
"wallet.transactions.amount": "Amount",
|
|
"wallet.transactions.date": "Date",
|
|
"wallet.transactions.empty.description": "Tips, purchases, withdrawals, and airdrops will appear here once they happen.",
|
|
"wallet.transactions.empty.title": "No transactions yet",
|
|
"wallet.transactions.from": "From",
|
|
"wallet.transactions.more": "View more through the blockchain explorer.",
|
|
"wallet.transactions.title": "Transactions",
|
|
"wallet.transactions.to": "To",
|
|
"wallet.transactions.tx": "Tx",
|
|
"wallet.transactions.type": "Type",
|
|
"wallet.transactions.types.airdrop": "Airdrop",
|
|
"wallet.transactions.types.all": "All",
|
|
"wallet.transactions.types.burn": "Burn",
|
|
"wallet.transactions.types.mint": "Mint",
|
|
"wallet.transactions.types.purchase": "Purchase",
|
|
"wallet.transactions.types.tip": "Tip",
|
|
"wallet.transactions.types.withdraw": "Withdraw",
|
|
"wallet.transactions.you": "You",
|
|
"wallet.withdraw.addressLabel": "Your Ethereum Address",
|
|
"wallet.withdraw.amountLabel": "Amount",
|
|
"wallet.withdraw.availableBalance": "You have <Balance></Balance> withdrawable Power in your wallet.",
|
|
"wallet.withdraw.button": "Withdraw",
|
|
"wallet.withdraw.error": "Withdrawal failed: {{error}}",
|
|
"wallet.withdraw.gasFeeNotice": "You are responsible for the Ethereum mainnet gas fee. Make sure this wallet address has enough ETH to submit one transaction before withdrawing: {{address}}.",
|
|
"wallet.withdraw.modalTitle": "Withdraw Power",
|
|
"wallet.withdraw.receiveRSS3": "You will receive {{amount}} RSS3",
|
|
"wallet.withdraw.submitButton": "Submit",
|
|
"wallet.withdraw.success": "Withdrawal successful!",
|
|
"wallet.withdraw.toRss3Label": "Withdraw as RSS3"
|
|
}
|