// ==UserScript==
// @name ✅ Feedly 阅读器汉化
// @description 实时翻译 Feedly,支持菜单/面板/热门标题统一翻译,自动将发布时间转换为24小时制时间格式。
// @version 1.0
// @match *://*feedly.com/*
// @icon https://feedly.com/favicon.ico
// @namespace https://greasyfork.org/users/18996
// ==/UserScript==
(function () { 'use strict'; const staticTranslateList = new Map([
['Add a custom sharing tool to your Feedly. Feedly will open a popup with this URL. Use ${url}, ${source}, ${title} and ${id} to parametrize the URL with the article info. Example: http://pinboard.in/add?url=${url}&title=${title}', '向您的 Feedly 添加自定义分享工具。Feedly 将打开一个带有此 URL 的弹出窗口。使用 ${url}、${source}、${title} 和 ${id} 来为 URL 参数化文章信息。示例:http://pinboard.in/add?url=${url}&title=${title}'],
['By enabling two-factor authentication, whenever you sign into your account you’ll need to enter your password as well as the 6-digit code generated by your authenticator app.', '启用双重身份验证后,每次登录账户时都需要输入密码和由身份验证器应用生成的6位数验证码。'],
['No worries! Feedly offers a free plan on the web and on mobile that allows you to follow up to 100 feeds and organize them into 3 folders. Happy reading!', '别担心!Feedly 提供网页版和移动版免费计划,允许您订阅最多 100 个源并整理到 3 个文件夹中。祝您阅读愉快!'],
['Append #category #feedly to tweets. This helps us capture how articles spread across social networks and improve discovery in Feedly.', '在推文中附加 #category #feedly 标签。这有助于我们追踪文章在社交网络中的传播并提升 Feedly 的发现能力。'],
['As a long time Feedly Pro user you keep access to this feature even if it is now part of the Pro+ and Enterprise plans', '作为长期的 Feedly Pro 用户,即使该功能现在属于 Pro+ 和 Enterprise 计划,您仍可继续使用此功能。'],
['You can add multiple logins to your Feedly account. This is useful when you want to migrate your account from one login to another.', '您可以为 Feedly 账户添加多个登录方式,这在您需要将账户从一个登录迁移到另一个登录时非常有用。'],
['Control if Feedly shows or hides articles after you have had the chance to mark them as read. You can overwrite it for each feed and board.', '控制 Feedly 在您标记为已读后是否隐藏文章。您可以为每个订阅流和看板单独设置。'],
['Ingest Threat Reports, IoCs, Threat Actors, CVEs, TTPs, and Malware discovered by Feedly into Anomali ThreatStream.', '将 Feedly 中发现的威胁报告、IoC、威胁行为者、CVE、TTP 和恶意软件导入 Anomali ThreatStream'],
['Should Feedly AI highlight entities in your articles? (Inline entities include companies, threat actors, CVEs, TTPs, etc.)', 'Feedly AI 是否应在您的文章中高亮显示实体?(内嵌实体包括公司、威胁行为者、CVE、TTP 等)'],
['What is the URL of the WordPress blog to which you want to be able to save excerpts? example: http://blog.example.com', '您希望保存摘录的 WordPress 博客网址是什么?示例:http://blog.example.com'],
['Once you delete your account, your profile information, feeds, saved articles, and boards will be permanently deleted from Feedly.', '删除账户后,你的个人信息、订阅源、已保存文章和看板将被永久删除。'],
['Feedly is the tool I use to increase my expertise. It keeps me knowledgeable about my product and the whole industry.', 'Feedly 是我用来提升专业知识的工具。它让我了解自己的产品以及整个行业的动态。'],
['Show, at the top and bottom of articles, insights into what topics and business events Feedly AI has associated with the article', '在文章顶部和底部显示 Feedly AI 关联的主题和商业事件洞察'],
['Sorry, we couldn’t find an existing feed for this url and were unable to build one because the site content is unreachable.', '抱歉,未能找到该网址的现有订阅源,且由于网站内容无法访问,无法创建订阅源。'],
['Follow Mastodon feeds or hashtags across different servers, or quickly share articles to your Mastodon account', '关注不同服务器上的 Mastodon 订阅源或标签,或快速将文章分享到您的 Mastodon 账户'],
['Should Feedly show a giant mark as read button at the end of each list to make it easier to mark content as read?', 'Feedly 是否应该在每个列表的底部显示一个大号的‘标为已读’按钮,以方便将内容标记为已读'],
['Show notes at the top of each article? Pick \'No\' if you do not use that feature and want to save some space.', '在每篇文章顶部显示笔记?如果您不使用此功能并希望节省一些空间,请选择“否”。'],
['Leverage the Feedly API to retrieve and ingest the latest articles and IoCs in Microsoft Sentinel.', '利用 Feedly API 获取并导入最新文章与 IoC 到 Microsoft Sentinel'],
['Upgrade to get newsletters delivered to your Feedly so you can declutter your inbox and read distraction-free.', '升级以将新闻通讯发送到您的 Feedly,帮助您清理收件箱,专注阅读。'],
['Should Feedly AI remove near-exact duplicate articles from your feeds? (Part of Feedly Pro+)', 'Feedly AI 是否应从您的订阅源中移除几乎相同的重复文章?(Feedly Pro+ 的一部分)'],
['Ingest IoCs, TTPs, threat actor, malware, and CVE data discovered in Feedly to EclecticIQ', '将 Feedly 中发现的 IoC、TTP、威胁行为者、恶意软件和 CVE 数据导入 EclecticIQ'],
['Using Feedly is the best way to keep on top of all the insights I need to be successful in today’s world.', '在当今世界中,Feedly 是我掌握成功所需洞见的最佳工具。'],
['We use Feedly to monitor the MIT brand and see how professors are being mentioned across the Web.', '我们使用 Feedly 监控 MIT 品牌,了解教授们在网络上的曝光情况。'],
['Ingest IoCs, CVEs, TTPs, threat actors, and malware data with context into ThreatConnect.', '将包含上下文的 IoC、CVE、TTP、威胁行为者和恶意软件数据导入 ThreatConnect'],
['Show sporadic contextual prompts in feeds where Feedly AI can help improve the signal to noise ratio', '在 Feedly AI 能帮助改善信噪比的订阅流中,偶尔显示上下文提示'],
['Should we display the Pro+ upgrade button in the top bar of your Feedly? (Pro users only)', '我们是否应该在您的 Feedly 顶部栏中显示 Pro+ 升级按钮?(仅限 Pro 用户)'],
['It looks like you have been editing an AI Feed. If you leave before saving, your changes will be lost.', '看起来你正在编辑 AI 订阅源,离开前未保存,所做更改将丢失。'],
['Feedly is our curation hive. It is the fastest way to find the best articles across the Web.', 'Feedly 是我们的内容策展中枢,是在网络上快速发现优质文章的最快方式。'],
['Should we automatically mark articles as read as you navigate through them using n/p keyboard shortcuts?', '使用 n/p 键盘快捷键浏览文章时,是否自动标记为已读?'],
['Feedly helps me feel organized and save time when sifting through hundreds of articles every day.', 'Feedly 让我整理有序,并在每天筛选数百篇文章时节省时间。'],
['Should Feedly AI highlight important sentences in your articles? (Pro+ and Enterprise only)', 'Feedly AI 是否应高亮文章中的重要句子?(仅限 Pro+ 和企业版)'],
['I use Feedly to keep in touch with the movers and thinkers in the venture capital industry.', '我使用 Feedly 与风险投资领域的关键人物和思想者保持联系。'],
['Ingest enriched articles from Feedly to generate reports with related objects in OpenCTI', '从 Feedly 导入增强文章,在 OpenCTI 中生成包含相关对象的报告'],
['Ingest enriched articles from Feedly to generate reports with related objects in ThreatQ', '从 Feedly 导入增强文章,在 ThreatQ 中生成包含相关对象的报告'],
['Should Feedly AI group articles related to the same story (Part of Feedly Pro+)', 'Feedly AI 是否应将与同一故事相关的文章分组?(Feedly Pro+ 的一部分)'],
['Example: Monitor trends in 3D printing industry, Discover content to share on LinkedIn, etc.', '示例:监控3D打印行业趋势,发现可分享至LinkedIn的内容等'],
['Ingest enriched articles from Feedly to generate reports with related objects in Cyware', '从 Feedly 导入增强文章,在 Cyware 中生成包含相关对象的报告'],
['All feeds from Feedly\'s database in addition to the ones you follow in your account', '除了你账户中关注的订阅源外,还包括 Feedly 数据库中的所有订阅源'],
['Connect to Reddit to follow searches, communities, and your personal Reddit feed.', '连接到 Reddit 以关注搜索、社区和您的个人 Reddit 订阅源。'],
['Ingest full articles including IoCs with context, MISP Galaxies, and custom tags.', '导入包含上下文、MISP Galaxy 与自定义标签的完整文章与 IoC'],
['You won\'t be charged unless you decide to', '除非您决定'],['upgrade', '升级'],['to Pro+.', '到 Pro+,否则不会产生任何费用。您可以放心永久使用套餐会员服务!'],
['Drag and drop the image above or browse your computer. Recommended: 840px by 250px.', '将图片拖放到上方或浏览您的电脑。推荐尺寸:840 × 250 px'],
['requires an advanced machine learning model that is part of Feedly Threat Intelligence.', '需要 Feedly 威胁情报中包含的高级机器学习模型。'],
['Show a toolbar on images to allow quick saving to Pinterest and Evernote?', '在图片上显示工具栏,以便快速保存到 Pinterest 和 Evernote 吗?'],
['Synthesize articles into customized reports or extract data into tables with Ask AI', '使用 Ask AI 将文章综合成定制报告或提取数据到表格中'],
['Which section should be listed first in the navigation bar? (Business/Enterprise only)', '哪个板块应首先显示在导航栏中?(仅限商务/企业用户)'],
['Automate sharing critical intelligence with Feedly Al and Microsoft Teams', '通过 Feedly AI 和 Microsoft Teams 自动分享关键情报'],
['Should Feedly display a contextual menu when you select some text while reading an article?', '阅读文章时选中文本,是否显示上下文菜单?'],
['Should Feedly show priorities with no unread articles from the left navigation bar?', 'Feedly 是否应显示左侧导航栏中无未读文章的优先级?'],
['What is your Mastodon server URL? Example: https://your.server/', '您的 Mastodon 服务器 URL 是什么?示例:https://your.server/'],
['Find articles in your Feedly and across the web, or investigate threat intel topics', '在 Feedly 和网络上查找文章,或调查威胁情报主题'],
['Search for companies, technologies, or any topic in your Feedly and across the web', '在您的 Feedly 和网络上搜索公司、技术或任何主题'],
['Should clicking mark all as read show a menu with "older than" options?', '点击全部标为已读时是否显示带有“标记早于某个时间点的文章为已读”选项的菜单?'],
['If you need multiple users to access the same content, use Feedly Enterprise.', '如果您需要多个用户访问相同内容,请使用 Feedly 企业版。'],
['Save the most important articles you read around your projects, clients, or interests', '保存您在项目、客户或兴趣相关中阅读的最重要文章'],
['Fetch the content of your AI Feeds and Team Boards as rich STIX 2.1 structures', '以 STIX 2.1 格式提取 AI 订阅源和团队看板内容'],
['Put phrase inside quotes for an exact match. This is particularly useful for names.', '将短语用引号括起来进行精确匹配,尤其适用于人名。'],
['Share the content of your feeds and boards with over 750 other apps and services', '将您的订阅源和看板内容共享到 750 多个应用和服务中'],
['Should Feedly hide feeds with no unread articles from the left navigation bar?', 'Feedly 是否应该隐藏左侧导航栏中无未读文章的订阅流?'],
['Should clicking on the unread count in the navigation bar mark the section as read?', '点击导航栏中的未读计数是否将该部分标记为已读?'],
['Should Feedly automatically mark articles as read when you scroll through them?', 'Feedly 是否应在您滚动浏览文章时自动标记为已读?'],
['Ingest full articles including IoCs, TTPs, threat actors, malware, and more', '导入完整文章,包括 IoC、TTP、威胁行为者、恶意软件等'],
['Should Feedly hide the empty board placeholder from the left navigation bar?', 'Feedly 是否应隐藏左侧导航栏中的空看板占位符?'],
['Show periodic prompts in your feeds to collect feedback about Feedly AI', '定期在订阅流中显示提示以收集关于 Feedly AI 的反馈'],
['Use the intitle: operator to search for a keyword in the title of articles', '使用 intitle: 操作符搜索文章标题中的关键词'],
['Use the minus (-) operator to exclude results which match specific keywords', '使用减号 (-) 操作符排除匹配特定关键词的结果'],
['Personal Boards are your private digital bulletin for saving crucial articles.', '个人看板是您保存重要文章的私人数字公告板'],
['Should Feedly AI remove near-exact duplicate articles from your feeds', 'Feedly AI 是否应从订阅流中移除几乎相同的重复文章'],
['These links will be converted into articles you can read in your Feedly', '这些链接将被转换为您可以在 Feedly 中阅读的文章'],
['Are you sure you want to delete this folder? This operation cannot be undone.', '你确定要删除此文件夹吗?此操作无法撤销。'],
['Backup the content of your boards as PDF and HTML files on dropbox', '将看板内容备份为 PDF 和 HTML 文件至 Dropbox'],
['Are you sure you want to delete this filter? This operation cannot be undone.', '确定要删除此筛选器吗?此操作无法撤销。'],
['Track the companies, topics, and trends you care about with Feedly AI', '使用 Feedly AI 跟踪你关心的公司、话题和趋势'],
['Fine-tune your feeds by hiding mentions of unwanted topics or keywords.', '通过隐藏不想要的话题或关键词来定制你的订阅源。'],
['Track trends, competitors, technologies, or any topic across the web', '在全网追踪趋势、竞争对手、技术,或任何您关心的话题。'],
['Should Feedly include the Integrations link in the left navigation bar?', 'Feedly 是否在左侧导航栏包含集成链接?'],
['Automate sharing critical intelligence with Feedly AI and Slack', '通过 Feedly AI 和 Slack 自动分享关键情报'],
['Special key used to customize Feedly for some experimental features.', '用于定制 Feedly 部分实验功能的特殊密钥。'],
['Track vulnerabilities, threat actors, and emerging threats across the web', '跟踪网络上的漏洞、威胁行为者和新兴威胁'],
["Pick 'No' if you do not use that feature and want to save some space", '如果您不使用此功能且想节省空间,请选择“否”'],
['Inline entities include companies, threat actors, CVEs, TTPs, etc.', '内嵌实体包括公司、威胁行为者、CVE、TTP 等'],
['Display Feedly Team Boards in Microsoft Sharepoint', '在 Microsoft Sharepoint 中显示 Feedly 团队看板'],
['Fetch the content of your Feeds and Boards as rich JSON structures', '以富 JSON 结构提取您的订阅源和看板内容'],
['Searches for the AI Model or keyword in the article title & content', '搜索 AI 模型或文章标题和内容中的关键词'],
['Share the content you discover in Feedly on your social networks', '将您在 Feedly 中发现的内容分享到社交网络'],
['by hiding mentions of unwanted topics or keywords.', '通过隐藏那些不希望出现的特定话题或关键词,来避免它们在内容中显示或传播。'],
['Fetch the content of power search queries as rich JSON structures', '以富 JSON 结构提取高级搜索查询的内容'],
['Should Feedly AI highlight important sentences in your articles', 'Feedly AI 是否应高亮文章中的重要句子'],
['Group your feeds into a private folder by topic, type, or project', '按主题、类型或项目将订阅源归入私人文件夹'],
['Should Feedly AI group articles related to the same story', 'Feedly AI 是否应将相关报道同一事件的文章分组?'],
['Should we display tutorial dots to give information about Feedly?', '是否显示教程提示点来介绍 Feedly?'],
['Which page would you like Feedly to load when you start Feedly?', '启动 Feedly 时希望加载哪个页面?'],
['Reset feed sorting in the left navigation back to alphabetical', '将左侧导航栏的订阅流排序重置为字母顺序'],
['Save insightful articles to boards for reference or sharing', '将有价值的文章保存到收藏板,便于参考或分享'],
['Should Feedly allow images to load from non-secure feeds?', 'Feedly 是否允许从非安全订阅流加载图片?'],
['Sorted based on how many Feedly users follow this feed.', '根据有多少 Feedly 用户关注该订阅源进行排序'],
['Use AND to search for multiple keywords in the same article', '使用 AND 搜索同一文章中的多个关键词'],
['Combine searches by putting "OR" between each search query', '用 "OR" 将多个搜索词连接以组合搜索'],
['Showcase the 3 most popular articles at the top of each page.', '在每页顶部展示 3 篇最热门文章。'],
['Sorted based on how many articles a feed published per week.', '根据订阅源每周发布的文章数量进行排序'],
['Summarize key insights, translate, and run your own actions', '总结关键见解,翻译,并执行您自己的操作'],
['Change the presentation setting of all your feeds and boards.', '更改所有订阅流和看板的展示设置。'],
['Which theme would you like to use for the Feedly website?', '您想为 Feedly 网站使用哪个主题?'],
['Which views should use the right slider to display articles?', '哪些视图应使用右侧滑动条展示文章?'],
['分享到 LinkedIn, Buffer, IFTTT, and Zapier', '分享到 LinkedIn、Buffer、IFTTT 和 Zapier'],
['Improve the relevance of your feeds with Feedly AI', '使用 Feedly AI 提升订阅内容的相关性'],
['If you want to migrate to another service later, you should', '如果你以后想迁移到其他服务,你应该'],
['Searches for the AI Model or keyword in the article title', '搜索文章标题中的 AI 模型或关键词'],
['Follow websites, Reddit, blogs, newsletters, and more', '关注网站、Reddit、博客、通讯等更多内容'],
['Follow a Reddit search, advanced search, or subreddit', '关注 Reddit 搜索、高级搜索或子版块'],
['Organize your saved articles by project, topic, and more.', '按项目、主题等方式整理您保存的文章'],
['Save articles of interest in Microsoft OneNote', '将感兴趣的文章保存到 Microsoft OneNote'],
['Should Feedly AI highlight entities in your articles', 'Feedly AI 是否应在文章中高亮实体?'],
['Easily track and curate search results inside Feedly', '在 Feedly 中轻松跟踪并整理搜索结果'],
['Message added to the articles you tweet in Feedly.', '添加到您在 Feedly 推文中的文章信息。'],
['operator to exclude results which match specific keywords', '操作符排除包含特定关键词的结果'],
['Refine your search based on when an article was published', '根据文章发布时间优化您的搜索'],
['All views and enable preview when window > 1600px', '所有视图,窗口宽度超过1600px时启用预览'],
['Which section should be listed first in the navigation bar', '导航栏中应首先列出哪个部分'],
['Please report this issue to help us improve Feedly', '请报告此问题以帮助我们改进 Feedly'],
['Save articles of interest in Evernote notebooks', '将感兴趣的文章保存到 Evernote 笔记本'],
['Save articles to read later in one convenient place', '将文章保存在一个方便的位置以便稍后阅读'],
['Change the sort setting of all your feeds and boards.', '更改所有订阅流和看板的排序设置。'],
['Should priorities be listed in the left navigation bar?', '是否在左侧导航栏列出优先级?'],
['Sorted based on a balance of popularity and relevance.', '基于热度与相关性的平衡进行排序'],
['Which font size should we use for the body of articles?', '文章正文应使用哪种字体大小?'],
['Find articles in your Feedly and across the web', '在您的 Feedly 和整个网络中查找文章'],
['Track topics, companies, and technologies across the web', '跟踪全网话题、公司和技术'],
['To get a price estimate please contact our sales team', '请联系销售团队获取报价'],
['Should we show the Explore tab on the Today page?', '是否在“今天”页面显示“探索”标签?'],
['The ultimate industry and threat intelligence engine', '终极行业与威胁情报引擎'],
['"Roger Federer" OR "Rafael Nadal"', '"Roger Federer" OR "Rafael Nadal"'],
['Follow X accounts, hashtags, Lists, and searches', '关注 X 账户、标签、列表和搜索内容'],
['No-code tools, connectors, and the Feedly API', '免编码工具、连接器和 Feedly API'],
['保存到 Evernote, Pocket, and OneNote', '保存到 Evernote、Pocket 和 OneNote'],
['No articles in your AI Feed? Tips on how to', '你的 AI 订阅源没有文章?以下是优化建议。'],
['upgrade button in the top bar of your Feedly', '升级按钮,是否在 Feedly 顶部栏显示'],
['Take your reading and sharing to the next level', '将您的阅读与分享提升到新高度'],
['"Roger Federer" AND philanthropy', '"Roger Federer" AND philanthropy'],
['Most trusted sources handpicked by our analysts', '由我们的分析师精心挑选的最可信来源'],
['Synthesize articles or extract data with Ask AI', '使用 AI助手 合成文章或提取数据'],
['Synthesize articles or extract data with Ask AI', '通过 AI助手 合成文章或提取数据'],
['Should Feedly show product feedback surveys?', 'Feedly 是否应显示产品反馈调查?'],
['Track mentions across thousands of news sites', '在成千上万个新闻网站上追踪提到的信息'],
['Tina Roth Eisenberg, swissmiss', 'Tina Roth Eisenberg,swissmiss'],
['Hide Empty Board Placeholder in Left Navigation', '隐藏左侧导航栏中的空看板占位符'],
['to parametrize the URL with the article info', '使用命令来根据文章信息参数化 URL'],
['Which font should we use for the body of articles?', '文章正文应使用哪种字体?'],
['Remove irrelevant articles from your feeds', '用来隐藏您不想看到的内容或过滤垃圾消息'],
['Share to WordPress URL (Pro feature)', '分享到 WordPress URL(Pro 功能)'],
['Add a custom sharing tool to your Feedly', '向您的 Feedly 添加自定义分享工具'],
['All communications will be sent to this address.', '所有通讯将发送到此地址。'],
['Card view, magazine view, and title-only view', '卡片视图、杂志视图和仅标题视图'],
['Feedly will open a popup with this URL', 'Feedly 会使用此 URL 打开弹出窗口'],
['What would you like Feedly AI to mute?', '您希望 Feedly AI 静音哪些内容?'],
['Click on a link to see the matched feed here', '点击链接以在此查看匹配的订阅源'],
['Newly announced Feedly features and guides', '新发布的 Feedly 功能和指南'],
['Stay ahead of the curve with Feedly AI', '通过 Feedly AI 抢占先机'],
['Thank you for your support since 2013!', '感谢您自 2013 年以来的支持!'],
['Batch import feeds from Inoreader Feeds', '从 Inoreader 批量导入订阅源'],
['Easily search across all your favorite sources', '轻松搜索您所有喜爱的来源'],
['Type a threat actor, vulnerability, or topic', '输入威胁行为者、漏洞或主题'],
['Join 100,000+ happy premium users', '加入 100,000+ 位满意的高级用户'],
['You discovered a Threat Intelligence feature!', '您发现了威胁情报功能!'],
['Documentation, community, contact, and more', '文档、社区、联系方式及更多'],
['Follow the news articles listed on this page', '关注此页面列出的新闻文章'],
['Learn how to create your first AI Feed', '学习如何创建您的第一个 AI 订阅源'],
['Which email function would you like to use?', '您想使用哪种电子邮件功能?'],
['Summarize, extract insights, or ask questions', '总结、提取见解或提问'],
['how to create and tune your mute filters', '关于如何创建和调整静音筛选器'],
['Ask AI is not available in Cards View', '卡片视图中无法使用 AI助手 功能'],
['Would you like to make this board public?', '您希望将此看板设为公开吗?'],
['Get new articles up to 10x faster', '获取新文章的速度提高最多 10 倍'],
['Slack & Microsoft Teams', 'Slack 和 Microsoft Teams 集成'],
['Auto-Mark As Read On Keyboard Shortcuts', '使用键盘快捷键自动标为已读'],
['Batch import feeds from an OPML file', '从 OPML 文件批量导入订阅源'],
['Show Empty Priorities in Left Navigation', '在左侧导航显示空优先级'],
['Notes (Pro+ and Enterprise feature)', '笔记(Pro+ 和 企业版功能)'],
['Katherine Kelly, Zendesk', 'Katherine Kelly,Zendesk'],
['Brad Feld, Foundry Group', 'Brad Feld,Foundry Group'],
['download your feeds in OPML format', '下载你的订阅源 (OPML格式)'],
['Show notes at the top of each article', '是否在每篇文章顶部显示笔记'],
['Do you want to save this mute filter?', '您想保存此筛选过滤器吗?'],
['or investigate threat intel topics', '或者深入研究威胁情报相关主题。'],
['Jason Hirschhorn, REDEF', 'Jason Hirschhorn,REDEF'],
['Get Reddit feeds in Feedly', '在 Feedly 获取 Reddit 订阅源'],
['Mark As Read Button In Navigation Bar', '导航栏中的标为已读按钮'],
['Hide Empty Feeds in Left Navigation', '在左侧导航中隐藏空订阅源'],
['How dense should title-only view be?', '仅标题视图应有多密集?'],
['Should keyboard shortcuts be enabled?', '是否启用键盘快捷键?'],
['You are on a lifetime Feedly', '您当前已经是尊贵的永久 Feedly'],
['"Roger Federer" -tennis', '"Roger Federer" -tennis'],
['Feeds where the information comes from', '信息来源的订阅源'],
['Please cancel your premium subscription from', '请在'],
['The insights you need to keep ahead', '您需要的洞察,助您领先'],
['Everything in Pro+, and:', '包含 Pro+ 的所有功能,并新增:'],
['Stephanie Hatch, MIT', 'Stephanie Hatch,麻省理工学院'],
['and emerging threats across the web', '威胁行为者和新兴威胁'],
['Articles you flagged to read later', '您标记为稍后阅读的文章'],
['Feedly AI Satisfaction Prompts', 'Feedly AI 满意度提示'],
['Ask AI is not available in', '此模式下无法使用 AI助手 功能 - '],
['Michael Keithley, CAA', 'Michael Keithley,CAA'],
['Articles with notes or annotations', '带有笔记或注释的文章'],
['Delete My Account and All My Data', '删除我的账户及所有数据'],
['select important passages and click', '选择重要段落并点击'],
['Show Priorities in Left Navigation', '在左侧导航显示优先级'],
['Track vulnerabilities, threat actors', '追踪网络中的漏洞'],
['You can only display 4 services', '您最多只能启用 4 项服务'],
['by topic, website, or RSS link', '按主题、网站或 RSS 链接'],
['Fewer than 100 articles a month', '每月少于 100 篇文章'],
['You can only display 4 service', '您最多只能启用 4 项服务'],
['You discovered a Pro+ feature!', '你发现了 Pro+ 功能!'],
['before deleting your account.', ' 删除账户前取消高级订阅。'],
['Fewer than 100 articles a month', '每月 <100 篇文章'],
['Everything in Pro, and', '包含 Pro 的所有功能,并新增'],
['No matching articles found yet', '\n尚未找到匹配的文章'],
['Custom Sharing (Pro feature)', '自定义分享(Pro 功能)'],
['Deduplication of identical articles', '去重相同文章'],
['Enable two-factor authentication', '启用双重身份验证'],
['Get newsletters in Feedly', '在 Feedly 获取新闻通讯'],
['intitle:"grand slam"', 'intitle:"grand slam"'],
['Need a free plain reader?', '需要免费的简洁阅读器?'],
['Error--Failed to add feed/', '错误 - 添加订阅源失败 '],
['Feedly AI Upgrade Prompts', 'Feedly AI 升级提示'],
['or drag an OPML file here', '或将 OPML 文件拖到此处'],
['Refine to a specific news site', '限定到特定新闻网站'],
['Sorting by: Articles per week', '排序方式:每周文章数'],
['100+ more articles a month', '每月超过 100 篇文章'],
['tutorial on Google News', '关于 Google 新闻的教程'],
['Join Our Slack Community', '加入我们的 Slack 社区'],
['Refresh to see newer stories', '刷新以查看更新的内容'],
['Company, product, or keyword', '公司、产品或关键词'],
['Company, Product, or Keyword', '公司、产品或关键词'],
['Add your first filter', '添加您的第一个 "过滤器" 规则'],
['Favorite, rename, and more', '收藏、重命名等更多操作'],
['Feedly Pro - Lifetime', 'Feedly Pro - 永久版'],
['Follow your favorite websites', '关注您喜欢的网站'],
['per month billed annually', '每月(按年计费)'],
['Auto-Mark As Read On Scroll', '滚动时自动标为已读'],
['Card view and magazine view', '卡片视图和杂志视图'],
['Clustering of related articles', '相关文章聚类'],
['Pro+ and Enterprise only', '仅限 Pro+ 和企业版'],
['An unexpected error occurred', '发生了意外错误'],
['It will be removed from', '它将从此文件夹退订 → '],
['Topic, type, project, etc.', '主题、类型、项目等'],
['Reorganize Selected Feeds', '重新整理所选订阅源'],
['Frutiger NextPro+', 'Frutiger NextPro+'],
['Track articles that mention', '跟踪提到的文章'],
['Trending in photography', '热门趋势:摄影'],
['Up to 7,500 feeds', '最多 7,500 个订阅源'],
["about your subscription", "与订阅相关的任何问题"],
['Follow Us On Twitter', '关注我们的 Twitter'],
['Indicators of Compromise', '入侵指标(IoC)'],
['Part of Feedly Pro+', 'Feedly Pro+ 功能'],
['Priorities I Created Only', '仅我创建的优先级'],
['Google News feeds', 'Google 新闻订阅源'],
['Upgrade and Save 50%', '升级并节省 50%'],
['Team feeds and boards', '团队订阅源与看板'],
['Search Mute Filter name', '搜索静音筛选器名称'],
['Basic keyword match for', '基础关键词匹配对象'],
['Example: forbes.com', '示例:forbes.com'],
['Privacy and Personal data', '隐私与个人数据'],
['Business/Enterprise only', '仅限商务/企业版'],
['Feedly AI Highlights', 'Feedly AI 高亮'],
['Find in Title & Content', '在标题和内容中查找'],
['Invoices are being sent to', '发票将发送至'],
['Mobile Apps and Add-ons', '移动应用与附加组件'],
['Open in website directly', '在网站中直接打开'],
['Trending in education', '热门趋势:教育'],
['Trending in marketing', '热门趋势:营销'],
['Feedly AI Feeds', 'Feedly AI 订阅源'],
['Competitive intelligence', '竞争情报'],
['Inactive for 3+ months', '3 个月以上未激活'],
['Mark All As Read Button', '全部标为已读按钮'],
['Non-Secure Image Fallbacks', '非安全图片'],
['Reset to Alphabetical', '重置为按字母顺序排序'],
['Sorting by: Best Match', '排序方式:最佳匹配'],
['Sorting by: Followers', '排序方式:关注者数量'],
['Two-factor authentication', '双重身份验证'],
['Trending in business', '热门趋势:商业'],
['Trending in startups', '热门趋势:创业'],
['Trending in vimeo', '热门趋势:Vimeo'],
["Please select a folder", "请选择一个文件夹"],
['"Roger Federer"', '"Roger Federer"'],
['Basic keyword match for', '基础关键词匹配'],
['Consumer Behavior Stats', '消费者行为统计'],
['ITC CharterPro+', 'ITC CharterPro+'],
['Trending in culture', '热门趋势:文化'],
['Trending in fashion', '热门趋势:时尚'],
['Trending in finance', '热门趋势:金融'],
['Trending in science', '热门趋势:科学'],
['No matching articles.', '没有匹配的文章。'],
['Add to Personal Feeds', '添加到个人订阅流'],
['more articles a month', '篇以上文章/每月'],
['You are on a lifetime', '您当前已拥有永久'],
['Trending in baking', '热门趋势:烘焙'],
['Trending in beauty', '热门趋势:美妆'],
['Trending in cinema', '热门趋势:电影'],
['Trending in comics', '热门趋势:漫画'],
['Trending in design', '热门趋势:设计'],
['Trending in gaming', '热门趋势:游戏'],
['Trending in travel', '热门趋势:旅游'],
['Notes and highlights', '笔记与高亮'],
['Onboarding & training', '上手培训'],
['No, Keep This Filter', '不,保留此筛选器'],
['Here is a tutorial on', '这里有一份教程'],
['Pro+ Upgrade Button', 'Pro+ 升级按钮'],
['Is this article about', '这篇文章是关于'],
['Create Team Newsletter', '创建团队简报'],
['Critical Vulnerabilities', '关键漏洞'],
['Error: Failed to fetch', '无法获取数据'],
['Full Articles View Only', '仅全文视图'],
['Global Priorities Only', '仅全局优先级'],
['Green Tutorial Dots', '教程提示(绿色点)'],
['Indicators of Compromise', '妥协指标'],
['Most popular + latest', '热门 + 最新'],
['Mundo SansPro+', 'Mundo SansPro+'],
['No, Keep This Folder', '不,保留此文件夹'],
['Reset To Alphabetical', '重置为字母顺序'],
['Hide sponsored ads', '隐藏赞助广告'],
['Request Free Trial', '申请免费试用'],
['Biopharma research', '生物制药研究'],
['Mute filters', '过滤 / 筛选 / 屏蔽关键词'],
['answer your questions', '回答您的问题'],
['Connect to Reddit', '连接到 Reddit'],
['Make this board public', '公开此板块'],
['Mastodon sharing', 'Mastodon 分享'],
['Show muted articles', '显示已过滤的文章'],
['Tactics and Techniques', '手法与技术'],
['Remove from Favorites', '从收藏中移除'],
['All articles unselected', '取消选中'],
['Trending in cars', '热门趋势:汽车'],
['Trending in diy', '热门趋势:DIY'],
['Trending in food', '热门趋势:美食'],
['Trending in news', '热门趋势:新闻'],
['Trending in seo', '热门趋势:SEO'],
['Trending in tech', '热门趋势:科技'],
['Follow newsletters', '订阅电子报'],
['Create newsletters', '创建电子报'],
['Market intelligence', '市场情报'],
['Threat intelligence', '威胁情报'],
['Basic keyword match', '基础关键词匹配'],
['Copied to clipboard', '已复制到剪贴板'],
['before you proceed.', ' 再继续操作。'],
['Blog & Case Studies', '博客与案例研究'],
['Choose OPML File', '选择 OPML 文件'],
['Default Presentation', '默认展示方式'],
['e.g. Design Systems', '例如:设计系统'],
['Learn & Get Support', '学习与获取支持'],
['Leave Without Saving', '不保存并离开'],
['Start with a template', '从模板开始'],
['Save Mute Filter?', '保存筛选过滤器?'],
['All Personal Feeds', '所有个人订阅源'],
['Create AI Feed', '创建智能 AI 订阅流'],
['in Left Navigation', '在左侧导航栏中'],
['Integrations & API', '集成与 API'],
['Native Mail Client', '本地邮件客户端'],
['Pin or Save Images', '固定或保存图片'],
['Preference changed', '偏好设置已更改'],
['Reset Feed Sorting', '重置订阅流排序'],
['Share with teammates', '与朋友共享'],
['Threat Actor Behavior', '威胁行为'],
['Twitter Postfix', 'Twitter 后缀'],
['2,500 feeds', '2,500 个订阅源'],
['5,000 feeds', '5,000 个订阅源'],
['Reload Feedly', '重新加载 Feedly'],
['articles per week', ' 篇文章/每周'],
['DIN NextPro+', 'DIN NextPro+'],
['Follow Newsletters', '关注新闻通讯'],
['Giant Mark As Read', '大号已读按钮'],
['Hide Read Articles', '隐藏已读文章'],
['Mark All as Read', '将所有标记为已读'],
['Merriweather', 'Merriweather'],
['Narrow your search', '缩小搜索范围'],
['OpenDyslexic', 'OpenDyslexic'],
['Organize and more', '整理及更多功能'],
['See Similar Feeds', '查看相似订阅流'],
['See Similar Feeds', '查看相似订阅源'],
['Show Empty Folders', '显示空文件夹'],
['Team vs Personal', '团队 vs 个人'],
['Invoice information', '发票信息'],
['less than a minute', '不到一分钟'],
['Saving and sharing', '保存与分享'],
['article per week', ' 篇文章/每周'],
['articles selected', '篇文章已选中'],
['Create New Folder', '创建新文件夹'],
['Feeds & All Web', '订阅源和所有网络'],
['High Vulnerability', '高风险漏洞'],
['Keyboard Shortcuts', '键盘快捷键'],
['Keyboard shortcuts', '键盘快捷键'],
['over 10 years ago', '超过10年前'],
['Popular + Latest', '热门 + 最新'],
['Pro users only', '仅限 Pro 用户'],
['Threat Intelligence', '威胁情报'],
['Today Explore Tab', '今日探索标签'],
['Pro Lifetime', 'Pro 终身版'],
['Premium support', '高级支持'],
['SSO/SAML', '单点登录 / SAML'],
['Advanced Skills', '高级技能'],
['New Mute Filter', '新建静音筛选器'],
['Manage account', '管理账户\n\n'],
["answer any questions", "回答"],
["In which folder", "选择哪个文件夹"],
['article per month', '每月文章数'],
['article selected', '篇文章已选中'],
['Articles per week', '每周文章数'],
['Board Placeholder', '看板占位符'],
['Customization Key', '自定义密钥'],
['Inactive for 3', '3个月以上未活跃'],
['Malware Families', '恶意软件家族'],
['Read documentation', '阅读文档'],
['Top sources only', '仅限顶级来源'],
['Update Information', '更新信息'],
['Upgrade to follow', '升级以关注'],
['RSS Builder', 'RSS 构建器'],
['API access', 'API 访问权限'],
['Security Vendors', '安全供应商'],
['Personal Folders', '个人文件夹'],
['Add to Favorites', '添加到收藏'],
['Copy to clipboard', '复制链接'],
['Create a Board', '创建一个收藏板'],
['Create new Board', '创建新板块'],
['Create new Board', '创建新看板'],
['Create New Board', '创建新看板'],
['Email Provider', '电子邮件提供商'],
['Google News', 'Google 新闻'],
['Integrations Link', '集成链接'],
['Keep My Account', '保留我的账户'],
['Should we display the', ''],
['System Preference', '系统偏好'],
['Terms & Policy', '服务条款与政策'],
['Threat Assessment', '威胁评估'],
['articles selected', ' 篇文章'],
['Premium fonts', '高级字体'],
['Last 12 Months', '过去12个月'],
['Aug 5, 2013', '2013年8月5日'],
['Billing ZIP Code', '账单邮编'],
['All Your Feeds', '你所有的订阅'],
['Save to Board', '添加到 收藏夹'],
['Follow Sources', '关注信息来源'],
['Report a Problem', '报告问题'],
["As you're reading", '阅读时'],
['All news sites', '所有新闻网站'],
['Already Following', '已关注'],
['AmasisPro+', 'AmasisPro+'],
['Contextual Menu', '上下文菜单'],
['Create a Board', '创建一个看板'],
['Matching Feeds', '匹配的订阅源'],
['No boards found', '未找到看板'],
['Product Feedback', '产品反馈'],
['Skip to Content', '跳转到内容'],
['Stories / month', '每月文章数'],
['the billing page', '账单页面'],
['Your family name', '您的姓氏'],
['YsobelPro+', 'YsobelPro+'],
['Power Search', '高级搜索'],
['Getting started', '开始使用'],
['Custom Range', '自定义时间范围'],
['Billing Country', '账单国家'],
['Threat Research', '威胁研究'],
['Foreign Affairs', '外交事务'],
['Save a URL to', '保存网址到 '],
['Mute Filters', '过滤 / 筛选'],
["We're happy to", "我们很乐意"],
['Add to Folder', '添加到文件夹'],
['All Priorities', '所有优先级'],
['Append Hashtags', '附加标签'],
['Card view only', '仅卡片视图'],
['Contact Support', '联系支持'],
['Custom Sharing', '自定义分享'],
['Detection Rules', '检测规则'],
['Display Density', '显示密度'],
['Drag and drop or', '拖放或'],
['Email address', '电子邮箱地址'],
['Explore Plans', '查看订阅方案'],
['FeedlyAI', 'Feedly 智能助手'],
['Find in Title', '在标题中查找'],
['Inline Entities', '内嵌实体'],
['Invoice history', '消费记录'],
['Magazine only', '仅限杂志视图'],
['Mark as Unread', '标记为未读'],
['Mark as unread', '标记为未读'],
['Organize Feeds', '整理订阅流'],
['Similar Feeds', '相似的订阅源'],
['Tech Innovation', '技术创新'],
['Title-Only View', '标题视图'],
['Your given name', '您的名字'],
['Core Skills', '核心技能'],
['Deduplication', '去重'],
['Summarization', '摘要'],
['Delete filter', '删除筛选器'],
['For how long?', '持续多久?'],
['Last 6 Months', '过去6个月'],
['OPML Import', 'OPML 导入'],
['Your profile', '您的个人资料'],
["Upgrade Button", "升级按钮"],
['Add highlights', '添加高亮'],
['Delete account', '删除账户'],
['Edit Profile', '编辑个人资料'],
['Fine-tune your', '微调您的'],
['First Folder', '第一个文件夹'],
['Follow Content', '关注内容'],
['IowanPro+', 'IowanPro+'],
['Malware Type', '恶意软件类型'],
['Personal First', '个人优先'],
['Reads / month', '每月阅读数'],
['Related Topics', '相关主题'],
['RSS BUILDER', 'RSS 构建器'],
['Threat Actors', '威胁行为者'],
['Visit Homepage', '访问首页'],
['Import OPML', '导入 OPML'],
['Delete Account', '删除账户'],
['Last 30 Days', '过去30天'],
['Cybersecurity', '网络安全'],
['Vulnerabilities', '漏洞'],
['Recently Read', '最近阅读'],
['Board public', '看板已公开'],
['Change layout', '更改布局'],
['Charge Amount', '收费金额'],
['Documentation', '文档资料'],
['Follow Source', '关注来源'],
['Hide sidebar', '隐藏侧边栏'],
['Magazine View', '杂志视图'],
['Manage Feeds', '管理订阅流'],
['Manage feeds', '管理订阅流'],
['More settings', '更多设置'],
['Profile picture', '头像'],
['Share Content', '分享内容'],
['Threat Actor', '威胁行为者'],
['Use the minus', '使用减号'],
['Visit Website', '访问网站'],
['Do you want to', '你想要'],
['Português', '葡萄牙语'],
['Enterprise', '企业版'],
['Move to...', '移动到...'],
['Save Changes', '保存更改'],
['Folder name', '文件夹名称'],
['Pin sidebar', '固定侧边栏'],
['AI Insights', 'AI 洞察'],
['Article View', '文章视图'],
['Default Sort', '默认排序'],
['End of feed', '订阅源结束'],
['Leave page?', '离开页面?'],
['Manage Board', '管理看板'],
['Manage Feed', '管理订阅流'],
['Mark as read', '标为已读'],
['Market Intel', '市场情报'],
['more feeds', '个更多订阅流'],
['More options', '更多选项'],
['Partnerships', '合作关系'],
['Public Board', '公开看板'],
['See Tutorial', '查看教程'],
['See tutorial', '查看教程'],
['Stay on Page', '留在页面'],
['Threat Intel', '威胁情报'],
['Uncategorized', '未分类'],
['Upload image', '上传图片'],
['Italiano', '意大利语'],
['Last 7 Days', '过去7天'],
['Unreachable', '无法访问'],
['Need help?', '需要帮助?'],
['Add sources', '添加来源'],
['#marketing', '#市场营销'],
['#photography', '#摄影'],
['Add article', '添加文章'],
['Competitors', '竞争对手'],
['Cover Image', '封面图片'],
['Enable tool', '启用工具'],
['Font Family', '字体名称'],
['Keep Unread', '保持未读'],
['Light theme', '浅色主题'],
['Most popular', '最热门'],
['Most Popular', '最热门'],
['New Folder', '新建文件夹'],
['Newsletters', '新闻通讯'],
['See Similar', '查看相似'],
['Español', '西班牙语'],
['AI Models', 'AI 模型'],
['Learn More', '了解更多'],
['Read Later', '稍后阅读'],
['Read later', '稍后阅读'],
['Annotated', '已添加注释'],
["Integrations", "集成"],
['#startups', '#创业公司'],
['Best Match', '最佳匹配'],
['Bluesky', 'Bluesky'],
['Board name', '看板名称'],
['Boards', '看板 / 收藏板'],
['Cards View', '卡片视图'],
['Dark theme', '深色主题'],
['Edit Email', '编辑邮箱'],
['Feed name', '订阅源名称'],
['Find board', '查找看板'],
['Personalize', '个性化'],
['Sans Serif', '无衬线体'],
['Team First', '团队优先'],
['Unread only', '仅未读'],
['Français', '法语'],
['$6$12', '$6$12'],
['(Paused)', '(已暂停)'],
['Here\'s a', '这是一个'],
['Need help', '需要帮助'],
['Add Login', '添加登录'],
['All Views', '所有视图'],
['Clear all', '清除所有'],
['Description', '描述'],
['Hide menu', '隐藏菜单'],
['Messaging', '消息传递'],
['Read more', '阅读更多'],
['Show menu', '显示菜单'],
['Start Page', '起始页'],
['Text Size', '字体大小'],
['Use Cases', '使用场景'],
['English', '英语'],
['Deutsch', '德语'],
['Русский', '俄语'],
['Polski', '波兰语'],
['Inactive', '不活跃的'],
['One month', '一个月'],
['Published', '发布于'],
['All Time', '所有时间'],
['Logins', '登录\n\n'],
['Appearance', '外观'],
['#business', '#商业'],
['Add note', '添加笔记'],
['Add Note', '添加笔记'],
['Evernote', '印象笔记'],
['hours ago', '小时前'],
['Innovation', '创新'],
['month ago', '个月前'],
['refine it', '完善它'],
['Support', '支持与帮助'],
['Technology', '技术'],
['to Pro+', '到 Pro'],
['Unfollow', '取消订阅'],
['ZIP Code', '邮政编码'],
['articles', ' 篇文章'],
['Reviewed', '已收藏 '],
['Following', '关注中'],
['Manage', '管理'],
['Pro+', 'Pro+'],
['Topics', '话题'],
['Suggested', '推荐'],
['CISO', '首席信息安全官'],
['Added In', '添加于'],
['#culture', '#文化'],
['#fashion', '#时尚'],
['Escape', 'Esc 键'],
['Example:', '示例:'],
['Favorites', '收藏'],
['Highlight', '高亮'],
['hour ago', '小时前'],
['Malware', '恶意软件'],
['Privacy', '隐私政策'],
['selected', '已选中'],
['years ago', '年前'],
['One week', '一周'],
['#beauty', '#美妆'],
['#comics', '#漫画'],
['#design', '#设计'],
['#gaming', '#游戏'],
['Activity', '活动'],
['Ask AI', 'AI助手'],
['days ago', '天前'],
['Gmail', 'Gmail'],
['Industry', '行业'],
['Logout', '退出登录'],
['Organize', '管理'],
['Popular', '最热门'],
['Settings', '设置'],
['Websites', '网站'],
['year ago', '年前'],
['Personal', '个人'],
['Save', '保存'],
['One day', '一天'],
['Discard', '放弃'],
['General', '通用'],
['Billing', '账单'],
['Active', '已激活'],
['Article', '文章'],
['Country', '国家'],
['day ago', '天前'],
['Explore', '探索'],
['feature', "特权"],
['Folder', '文件夹'],
['Preview', '预览'],
['Refresh', '刷新'],
['Rename', '重命名'],
['Replace', '替换'],
['Results', '结果'],
['Service', '服务'],
['Slider', '滑动条'],
['Sources', '来源'],
['Actions', '操作'],
['日本語', '日语'],
['한국어', '韩语'],
['Resume', '继续'],
['Update', '更新'],
['Refine', '筛选'],
['#cars', '#汽车'],
['#food', '#美食'],
['#news', '#新闻'],
['#seo', '#SEO'],
['#tech', '#科技'],
['Action', '操作'],
['almost', '几乎'],
['Cancel', '取消'],
['Create', '创建'],
['Delete', '删除'],
['Feeds', '订阅流'],
['Filter', '筛选'],
['Follow', '关注'],
['Import', '导入'],
['Latest', '最新'],
['latest', '最新'],
['Oldest', '最早'],
['Remove', '删除'],
['Remove', '移除'],
['Saved', '已保存'],
['Status', '状态'],
['feeds', '订阅源'],
['Muted', '已屏蔽'],
['Search', '搜索'],
['Pause', '暂停'],
['Today', '今天'],
['#diy', '#手工'],
['Board', '面板'],
['Clear', '清除'],
['Close', '关闭'],
['Empty', '空的'],
['IoC', '妥协指标'],
['Notes', '笔记'],
['Theme', '主题'],
['Title', '标题'],
["menu", "菜单"],
['Blog', '博客'],
['Date', '日期'],
['Skip', '跳过'],
['View', '查看'],
['Edit', '编辑'],
['Off', '关闭'],
['All', '所有'],
['AND', '并且'],
['Any', '任意'],
['First', ''],
['NOT', '排除'],
['OR', '或者'],
['Me', '我'],
]);
// --- 正则翻译 ---
const regexTranslations = [
{ pattern: /^Saved by[\u2000-\u206F\uFE00-\uFEFF\uFFF0-\uFFFF\s]*\d+\s*minutes ago$/i, replacement: (m) => `收藏保存于:${m.match(/\d+/)[0]} 分钟前` },
{ pattern: /^Saved by[\u2000-\u206F\uFE00-\uFEFF\uFFF0-\uFFFF\s]*\d+\s*months ago$/i, replacement: (m) => `收藏保存于:${m.match(/\d+/)[0]} 个月前` },
{ pattern: /^Saved by[\u2000-\u206F\uFE00-\uFEFF\uFFF0-\uFFFF\s]*\d+\s*seconds ago$/i, replacement: (m) => `收藏保存于:${m.match(/\d+/)[0]} 秒前` },
{ pattern: /^Saved by[\u2000-\u206F\uFE00-\uFEFF\uFFF0-\uFFFF\s]*\d+\s*hours ago$/i, replacement: (m) => `收藏保存于:${m.match(/\d+/)[0]} 小时前` },
{ pattern: /^Saved by[\u2000-\u206F\uFE00-\uFEFF\uFFF0-\uFFFF\s]*\d+\s*years ago$/i, replacement: (m) => `收藏保存于:${m.match(/\d+/)[0]} 年前` },
{ pattern: /^Saved by[\u2000-\u206F\uFE00-\uFEFF\uFFF0-\uFFFF\s]*\d+\s*days ago$/i, replacement: (m) => `收藏保存于:${m.match(/\d+/)[0]} 天前` },
{ pattern: /^You['’]re using (\d+) of (\d+) Mute Filters$/, replacement: "您正在使用 $1 个,共 $2 个静音过滤器" },
{ pattern: /History of articles you['’]\s*ve read in Feedly/i, replacement: "您在 Feedly 中阅读过的文章历史" },
{ pattern: /^Saved by[\u2000-\u206F\uFE00-\uFEFF\uFFF0-\uFFFF\s]*now$/i, replacement: "收藏保存于:刚刚" },
{ pattern: /^Track news about ([\w\d]+)'s bloq across the Web$/i, replacement: "跟踪Lyc8503博客的新闻" },
{ pattern: /^Tactics and Techniques \(Mitre ATT&CK\)$/i, replacement: "战术与技术(Mitre ATT&CK)" },
{ pattern: /^First\s+(\d+)\s+articles selected$/i, replacement: "已选中前 $1 篇文章" },
{ pattern: /^Basic keyword match for\s+"(.+)"$/i, replacement: '匹配关键词 "$1"'},
{ pattern: /^(Create|Save) your first board$/i, replacement: "创建/保存 您的第一个看板" },
{ pattern: /^Share (to|via) (.+)$/i, replacement: (_, __, p2) => `分享到 ${p2}` },
{ pattern: /^Less than (\d+) article per week$/i, replacement: "每周少于$1篇文章" },
{ pattern: /^You['’]\s*ve selected (\d+) feed$/i, replacement: "已选中 $1 个源" },
{ pattern: /^(\d+)\s+article(s)? selected$/i, replacement: "已选中 $1 篇文章" },
{ pattern: /^You've selected (\d+) feed$/i, replacement: "已选中 $1 个源" },
{ pattern: /^(.+?) has been unmuted\.?$/i, replacement: "$1 已取消静音"},
{ pattern: /^(.+?) has been muted\.?$/i, replacement: "$1 已被静音"},
{ pattern: /^mark as read and hide$/i, replacement: "标记为已读并隐藏" },
{ pattern: /^(\d+)\s+article(s)?$/i, replacement: "$1 篇文章" },
{ pattern: /^Share via email$/i, replacement: "分享到 E-mail" },
{ pattern: /^(\d+)\sminute(s)?$/i, replacement: '$1 分钟' },
{ pattern: /^Save to (.+)$/i, replacement: "保存到 $1" },
{ pattern: /^mark as read$/i, replacement: "标记为已读" },
{ pattern: /^Follower(s)?$/i, replacement: "粉丝" },
{ pattern: /^Add(ed)?$/i, replacement: "添加" },
{ pattern: /'s Feedly/i, replacement: "" },
{ pattern: /^Share$/i, replacement: "分享" },
{ pattern: /^Name$/i, replacement: "名称" },
];
// 正则翻译规则列表
const regexTranslateList = [
// [/^([0-9\.]+)K followers$/, (_, c) => `${parseFloat(c) * 1000} 粉丝`],
// [/^([0-9\.]+) followers$/, (_, c) => `${c} 位粉丝`],
// [/^([0-9\.]+) article[s]? per week$/, (_, c) => `每周发布 ${c} 篇1文章`],
[/^(about |almost |over )?(\d+)\s+(minute|hour|day|month|year)s?\s+ago$/i,
(_, p = '', n, u) => {
const pm = { 'about ': '大约 ', 'almost ': '接近 ', 'over ': '超过 ', '': '' };
const um = { minute: '分钟', hour: '小时', day: '天', month: '个月', year: '年' };
return `${pm[p] ?? ''}${n} ${um[u] ?? u}前`;
}
],
[/unreachable/i, '无法访问'], ];
// ========== 单个Feed 动态数量翻译(粉丝、文章数) ==========
function translateDynamicCounts() {
document.querySelectorAll('span.count-followers').forEach(el => {
const count = el.getAttribute('data-count');
if (count && !el.textContent.includes('粉丝')) {
el.textContent = `粉丝:${count} 位 `;
}
});
document.querySelectorAll('span.count-velocity').forEach(el => {
const count = el.getAttribute('data-count');
if (count && !el.textContent.includes('每周')) {
el.textContent = ` 每周发布:${count} 篇文章`;
}
});
// 扫描其它 span 中的文本内容匹配正则翻译
document.querySelectorAll('span').forEach(el => {
const text = el.textContent.trim();
for (const [pattern, replacer] of regexTranslateList) {
const match = text.match(pattern);
if (match) {
el.textContent = text.replace(pattern, replacer);
break;
}
}
});
}
//所有Feed,已关注 1746 个源 ,其中 129 个失效 ,还有 1465 个无法访问
function translateSourcesSummaryWithTitle() {
const container = document.querySelector('div.SourcesSummary');
if (!container) return;
// 替换非<a>标签的纯文本节点(例如:Following, with, and)
container.childNodes.forEach(node => {
if (node.nodeType === 3) { // 文本节点
let text = node.textContent;
text = text.replace(/\bFollowing\b/i, '您总计关注了');
text = text.replace(/\bwith\b/i, ',其中有');
text = text.replace(/\band\b/i, ',另有');
node.textContent = text;
}
});
// 翻译 <a> 标签内文本和 title 属性
container.querySelectorAll('a').forEach(a => {
// 翻译文本内容
let text = a.textContent;
text = text.replace(/^(\d+)\s+feeds$/i, '$1 个源');
text = text.replace(/^(\d+)\s+inactive$/i, '$1 个已经失效');
text = text.replace(/^(\d+)\s+unreachable$/i, '$1 个无法访问');
a.textContent = text;
// 翻译 title 属性
if (a.hasAttribute('title')) {
let title = a.getAttribute('title');
title = title.replace(/Show all feeds/i, '显示所有源');
title = title.replace(/Show feeds inactive for 3\+ months/i, '显示失效超过3个月的源');
title = title.replace(/Show unreachable feeds/i, '显示无法访问的源');
a.setAttribute('title', title);
}
});
}
// --- 月份映射 ---
const monthMap = {
Jan: '01', Feb: '02', Mar: '03', Apr: '04', May: '05', Jun: '06',
Jul: '07', Aug: '08', Sep: '09', Oct: '10', Nov: '11', Dec: '12'
};
// --- 解析时间格式 ---
function parsePublishedDate(title) {
const regex = /Published:\s*\w+,\s*(\d{1,2})\s+([A-Za-z]{3})\s+(\d{4})\s+(\d{1,2}):(\d{2}):(\d{2})/;
const match = title.match(regex);
if (!match) return null;
let [_, day, monStr, year, hourStr, min, sec] = match;
let hour = parseInt(hourStr, 10);
if (hour === 24) hour = 0;
const yearShort = year.slice(2);
const month = monthMap[monStr] || '01';
return `${yearShort}-${month}-${day.padStart(2, '0')} ${hour.toString().padStart(2, '0')}:${min}:${sec}`;
}
// --- 安全翻译文本节点 ---
function translateTextNode(node) {
if (node.nodeType !== Node.TEXT_NODE) return;
const original = node.nodeValue;
const trimmed = original.trim();
// 强制翻译 - 只要包含关键词就替换(可自行扩展)
if (original.includes('Delete Account')) {
node.nodeValue = original.replace(/Delete Account/g, '删除账户');
return;
}
// 静态词典优先
if (staticTranslateList.has(trimmed)) {
node.nodeValue = original.replace(trimmed, staticTranslateList.get(trimmed));
return;
}
// 正则匹配替换(支持数组元素为{pattern, replacement})
for (const { pattern, replacement } of regexTranslations) {
if (pattern.test(original)) {
node.nodeValue = original.replace(pattern, replacement);
return;
}
}
}
// 遍历节点下所有文本节点并翻译
function walkAndTranslate(node) {
const walker = document.createTreeWalker(node, NodeFilter.SHOW_TEXT, null, false);
let n;
while (n = walker.nextNode()) translateTextNode(n);
}
// --- 泛匹配 div.ui-Label 翻译 ---
function translateUiLabels() {
document.querySelectorAll('div[class*="ui-Label"]').forEach(node => {
const text = node.textContent.trim();
for (const { pattern, replacement } of regexTranslations) {
if (pattern.test(text)) {
node.textContent = text.replace(pattern, replacement);
return;
}
}
});
}
// --- 翻译带 svg 的 li 项 ---
function translateSvgLiText() {
document.querySelectorAll('li').forEach(li => {
if (li.querySelector('svg')) {
li.childNodes.forEach(node => {
if (node.nodeType === Node.TEXT_NODE) {
const text = node.textContent.trim();
if (staticTranslateList.has(text)) {
node.textContent = staticTranslateList.get(text);
}
// 强制替换 Delete Account
if (text.includes('Delete Account')) {
node.textContent = text.replace(/Delete Account/g, '删除账户');
}
}
});
}
});
}
// --- 翻译所有文本节点 ---
function scanAndTranslateTextNodes(root = document.body) {
const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null, false);
let node;
while ((node = walker.nextNode())) {
const originalText = node.nodeValue;
for (const [regex, replacer] of regexTranslateList) {
if (regex.test(originalText)) {
node.nodeValue = originalText.replace(regex, replacer);
break;
}
}
}
}
// --- 翻译占位符 ---
function translatePlaceholders() {
document.querySelectorAll('input[placeholder], textarea[placeholder]').forEach(el => {
const placeholder = el.getAttribute('placeholder');
if (!placeholder) return;
for (const [en, zh] of staticTranslateList.entries()) {
if (placeholder.includes(en)) {
el.setAttribute('placeholder', placeholder.replace(en, zh));
}
}
});
}
// --- 翻译 title 中的 Published 时间 ---
function translatePublishedSpans() {
document.querySelectorAll('span[title]').forEach(span => {
const title = span.getAttribute('title');
if (title && title.includes('Published:')) {
const formatted = parsePublishedDate(title);
if (formatted) {
span.textContent = formatted;
}
}
});
}
// --- 登录提示翻译 ---
function translateLoginInfo() {
document.querySelectorAll('.Header__sub').forEach(node => {
let text = node.textContent;
if (text.replace(/\s+/g, ' ').trim().toLowerCase() === 'logged in using google') {
node.textContent = '使用 Google 登录';
}
});
}
// --- 翻译 H2 ---
function translateH2Tags() {
document.querySelectorAll('h2').forEach(h2 => {
for (const [en, zh] of staticTranslateList.entries()) {
if (h2.textContent.includes(en)) {
h2.textContent = h2.textContent.replace(en, zh);
}
}
});
}
// --- 替换 Required 样式 ---
function replaceRequiredPseudoContent() {
const style = document.createElement('style');
style.textContent = `
.kmYCwH6bqOh0hdpA36Q9::after {
content: "*必填" !important;
}
`;
document.head.appendChild(style);
}
// --- Loading 动态文本翻译 ---
function observeLoadingTexts() {
const observer = new MutationObserver(() => {
document.querySelectorAll('body *').forEach(el => {
el.childNodes.forEach(node => {
if (node.nodeType === 3) {
const txt = node.textContent.trim();
if (/^Loading\.{0,3}$/.test(txt)) node.textContent = '加载中...';
else if (/Loading results/i.test(txt)) node.textContent = txt.replace(/Loading results/i, '结果加载中');
else if (/Loading filters/i.test(txt)) node.textContent = txt.replace(/Loading filters/i, '筛选器加载中');
else if (/Loading articles/i.test(txt)) node.textContent = txt.replace(/Loading articles/i, '文章加载中');
else if (/Loading examples/i.test(txt)) node.textContent = txt.replace(/Loading examples/i, '示例加载中');
}
});
});
});
observer.observe(document.body, { childList: true, subtree: true });
}
// --- 强制替换“Delete Account” ---
function forceTranslateDeleteAccount() {
document.querySelectorAll('*').forEach(el => {
el.childNodes.forEach(node => {
if (node.nodeType === Node.TEXT_NODE && node.nodeValue.includes('Delete Account')) {
node.nodeValue = node.nodeValue.replace(/Delete Account/g, '删除账户');
}
});
});
}
//翻译按钮背景文字
function translateCustomSharingButton() {
const titleMap = {
"Delete": "删除",
"More actions": "更多操作",
"More services": "更多服务",
"Custom Sharing": "自定义分享",
"Export OPML": "导出 OPML 文件",
"Unfollow Feed": "取消订阅",
"Create Team Newsletter": "创建团队通讯",
"Save to WordPress": "保存到 WordPress",
"Close this article and return to the list": "关闭本文并返回列表",
};
for (const [en, cn] of Object.entries(titleMap)) {
document.querySelectorAll(`button[title="${en}"]`).forEach(btn => {
btn.title = cn;
});
}
}
// 限定范围内翻译指定内容(排除文本中包含 "Noto Sans" 的 label)
function translateRadioOptions() {
// 获取所有 class 以 "SidePeek" 开头的元素
const sidePeekElements = document.querySelectorAll('[class^="SidePeek"]');
sidePeekElements.forEach(element => {
const labels = element.querySelectorAll('label');
labels.forEach(label => {
const radioInput = label.querySelector('input[type="radio"]');
if (radioInput) {
let originalText = label.innerHTML;
// 如果文本中包含 "Noto Sans" 则跳过翻译
if (originalText.includes("Noto Sans")) return;
let newText = originalText;
// 翻译 Yes / No
newText = newText.replace(/\bYes\b/g, '是').replace(/\bNo\b/g, '否');
// 翻译 Show / Hide
newText = newText.replace(/\bShow\b/g, '显示').replace(/\bHide\b/g, '隐藏');
// 翻译 Extra Large / Large / Medium / Small
newText = newText.replace(/\bExtra Large\b/g, '特大')
.replace(/\bLarge\b/g, '大')
.replace(/\bMedium\b/g, '中')
.replace(/\bSmall\b/g, '小');
// 翻译 Compact / Cozy / Comfortable
newText = newText.replace(/Compact \(densest\)/g, '紧凑')
.replace(/\bCozy\b/g, '适中')
.replace(/\bComfortable\b/g, '宽松');
// 应用翻译结果
label.innerHTML = newText;
}
});
});
}
//限制范围:文章 - 更多服务 - 隐藏
function translateMenuItemsHide() {
const menuItems = document.querySelectorAll('[role="menuitem"][class*="ShareBar"]');
menuItems.forEach(item => {
item.childNodes.forEach(node => {
if (node.nodeType === Node.TEXT_NODE && node.nodeValue.includes('Hide')) {
node.nodeValue = node.nodeValue.replace(/Hide/g, '隐藏');
}
});
});
}
// --- 主翻译函数 ---
// 递归替换元素内所有文本节点内容
function replaceTextInNode(node, translateFunc) {
node.childNodes.forEach(child => {
if (child.nodeType === Node.TEXT_NODE) {
// 替换文本节点内容
const originalText = child.textContent.trim();
const translatedText = translateFunc(originalText);
if (translatedText && translatedText !== originalText) {
child.textContent = child.textContent.replace(originalText, translatedText);
}
} else if (child.nodeType === Node.ELEMENT_NODE) {
// 递归处理子元素
replaceTextInNode(child, translateFunc);
}
});
}
function translatePage() {
const elementsToTranslate = document.querySelectorAll('.need-translation');
elementsToTranslate.forEach(el => {
replaceTextInNode(el, translateText);
});
translateMenuItemsHide(); //限制范围 文章 - 菜单 - 隐藏
forceTranslateDeleteAccount(); // 强制翻译确保全覆盖
translateRadioOptions(); //限制范围翻译YES或NO等单词
translateSourcesSummaryWithTitle();
translateDynamicCounts(); // 动态数量翻译
walkAndTranslate(document.body);
replaceRequiredPseudoContent();
translateCustomSharingButton();
scanAndTranslateTextNodes();
translatePublishedSpans();
translateDynamicCounts();
translatePlaceholders();
translateLoginInfo();
translateSvgLiText();
translateUiLabels();
translateH2Tags();
}
// --- 页面加载启动 ---
function observeChanges() {
const observer = new MutationObserver(() => {
translatePage(); // 立即触发,无防抖
});
observer.observe(document.body, {
childList: true,
subtree: true
});
}
// ✅ 尽可能早地初始化翻译
function initTranslation() {
translatePage(); // 第一次直接执行翻译
observeLoadingTexts(); // 继续监听异步文字加载
observeChanges(); // 实时监听 DOM
}
// ✅ 保证在 DOM 内容加载完后立即运行(比 window.load 快得多)
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initTranslation);
} else {
initTranslation();
}
})();