diff options
| author | 2025-10-06 15:09:01 -0400 | |
|---|---|---|
| committer | 2025-10-06 21:09:01 +0200 | |
| commit | b6f4276c6cc2e5a53f0a4afb1536960427fa995e (patch) | |
| tree | 8ac7062239b9fa4d3cdb1a9d106db6ada1676a77 /app/i18n/zh-cn | |
| parent | aeecba7b30cf04a53fc23f7ed7a8c5ce12cb11a6 (diff) | |
Change regional language codes (#8065)
* Change regional language codes
According to `ISO-639-1` and `ISO-3166-1 alpha-2` recommendations, regional
languages must be written with the language code in lowercase and the region
in uppercase. For instance, we should have `en-US` instead of `en-us`.
Folders have been updated to reflect those recommendations and regional
language codes have been updated in the translation files.
* Update README files
* Fix configuration for typos
* Revert language order in documentation
* Remove unnecessary code
* Change language configuration getter
* Fix phpstan error
* Fix typo
* Add types
* escape regex
* Move language logic to avoid magic or deprecated methods
* Minor fix on regex
Diffstat (limited to 'app/i18n/zh-cn')
| -rw-r--r-- | app/i18n/zh-cn/admin.php | 240 | ||||
| -rw-r--r-- | app/i18n/zh-cn/api.php | 33 | ||||
| -rw-r--r-- | app/i18n/zh-cn/conf.php | 372 | ||||
| -rw-r--r-- | app/i18n/zh-cn/feedback.php | 152 | ||||
| -rw-r--r-- | app/i18n/zh-cn/gen.php | 277 | ||||
| -rw-r--r-- | app/i18n/zh-cn/index.php | 110 | ||||
| -rw-r--r-- | app/i18n/zh-cn/install.php | 128 | ||||
| -rw-r--r-- | app/i18n/zh-cn/sub.php | 307 | ||||
| -rw-r--r-- | app/i18n/zh-cn/user.php | 54 |
9 files changed, 0 insertions, 1673 deletions
diff --git a/app/i18n/zh-cn/admin.php b/app/i18n/zh-cn/admin.php deleted file mode 100644 index 8bf7d5fed..000000000 --- a/app/i18n/zh-cn/admin.php +++ /dev/null @@ -1,240 +0,0 @@ -<?php - -/****************************************************************************** - * Each entry of that file can be associated with a comment to indicate its * - * state. When there is no comment, it means the entry is fully translated. * - * The recognized comments are (comment matching is case-insensitive): * - * + TODO: the entry has never been translated. * - * + DIRTY: the entry has been translated but needs to be updated. * - * + IGNORE: the entry does not need to be translated. * - * When a comment is not recognized, it is discarded. * - ******************************************************************************/ - -return array( - 'auth' => array( - 'allow_anonymous' => '允许匿名阅读默认用户(%s)的文章', - 'allow_anonymous_refresh' => '允许匿名刷新文章', - 'api_enabled' => '允许 <abbr>API</abbr> 访问 <small>(用于手机应用 and sharing user queries)</small>', // DIRTY - 'form' => '网页表单(传统方式, 需要 JavaScript)', - 'http' => 'HTTP (advanced: managed by Web server, OIDC, SSO…)', // TODO - 'none' => '无(危险)', - 'title' => '认证', - 'token' => '主验证 token', - 'token_help' => '允许不验证而访问用户的全部 RSS 输出以及刷新订阅源:', - 'type' => '认证方式', - 'unsafe_autologin' => '允许不安全的自动登陆方式:', - ), - 'check_install' => array( - 'cache' => array( - 'nok' => '请检查 <em>./data/cache</em> 目录权限,HTTP 服务器必须拥有写入权限。', - 'ok' => 'cache 目录权限正常', - ), - 'categories' => array( - 'nok' => 'Category 表配置错误', - 'ok' => 'Category 表正常', - ), - 'connection' => array( - 'nok' => '数据库连接失败', - 'ok' => '数据库连接正常', - ), - 'ctype' => array( - 'nok' => '找不到字符类型检测库(php-ctype)', - 'ok' => '已找到字符类型检测库(ctype)', - ), - 'curl' => array( - 'nok' => '找不到 cURL 库(php-curl 包)', - 'ok' => '已找到 cURL 库', - ), - 'data' => array( - 'nok' => '请检查 <em>./data</em> 目录权限,HTTP 服务器必须拥有写入权限。', - 'ok' => 'data 目录权限正常', - ), - 'database' => '数据库安装', - 'dom' => array( - 'nok' => '找不到用于浏览 DOM 的库(php-xml 包)', - 'ok' => '已找到用于浏览 DOM 的库', - ), - 'entries' => array( - 'nok' => 'Entry 表配置错误', - 'ok' => 'Entry 表配置正常', - ), - 'favicons' => array( - 'nok' => '请检查 <em>./data/favicons</em> 目录权限,HTTP 服务器必须拥有写入权限。', - 'ok' => 'favicons 目录权限正常', - ), - 'feeds' => array( - 'nok' => 'Feed 表配置错误', - 'ok' => 'Feed 表正常', - ), - 'fileinfo' => array( - 'nok' => '找不到 PHP fileinfo 库(php-fileinfo 包)', - 'ok' => '已找到 fileinfo 库', - ), - 'files' => '文件相关', - 'json' => array( - 'nok' => '找不到 JSON 扩展(php-json 包)', - 'ok' => '已找到 JSON 扩展', - ), - 'mbstring' => array( - 'nok' => '找不到推荐用于 Unicode 的 mbstring 库', - 'ok' => '已找到推荐用于 Unicode 的 mbstring 库', - ), - 'pcre' => array( - 'nok' => '找不到正则表达式解析库(php-pcre)', - 'ok' => '已找到正则表达式解析库(PCRE)', - ), - 'pdo' => array( - 'nok' => '找不到 PDO 或其中一种支持的驱动(pdo_mysql、pdo_sqlite、pdo_pgsql)', - 'ok' => '已找到 PDO 和至少一种支持的驱动(pdo_mysql、pdo_sqlite、pdo_pgsql)', - ), - 'php' => array( - '_' => 'PHP 安装', - 'nok' => '你的 PHP 版本为 %s,但 FreshRSS 最低需要 %s', - 'ok' => '你的 PHP 版本为 %s,与 FreshRSS 兼容', - ), - 'tables' => array( - 'nok' => '数据库中缺少一个或多个表', - 'ok' => '数据库中存在正确的表', - ), - 'title' => '环境检查', - 'tokens' => array( - 'nok' => '请检查 <em>./data/tokens</em> 目录权限,HTTP 服务器必须拥有写入权限。', - 'ok' => 'tokens 目录权限正常', - ), - 'users' => array( - 'nok' => '请检查 <em>./data/users</em> 目录权限,HTTP 服务器必须拥有写入权限。', - 'ok' => 'users 目录权限正常', - ), - 'zip' => array( - 'nok' => '找不到 ZIP 扩展(php-zip 包)', - 'ok' => '已找到 ZIP 扩展', - ), - ), - 'extensions' => array( - 'author' => '作者', - 'community' => '可用的社区扩展', - 'description' => '描述', - 'disabled' => '已禁用', - 'empty_list' => '没有已安装的扩展', - 'empty_list_help' => 'Check the logs to determine the reason behind the empty extension list.', // TODO - 'enabled' => '已启用', - 'latest' => '已安装', - 'name' => '名称', - 'no_configure_view' => '此扩展无法配置。', - 'system' => array( - '_' => '系统扩展', - 'no_rights' => '系统扩展(你没有所需权限)', - ), - 'title' => '扩展', - 'update' => '更新可用', - 'user' => '用户扩展', - 'version' => '版本', - ), - 'stats' => array( - '_' => '统计数据', - 'all_feeds' => '所有订阅源', - 'category' => '分类', - 'entry_count' => '文章数', - 'entry_per_category' => '各分类文章数', - 'entry_per_day' => '每日文章数(近三十日)', - 'entry_per_day_of_week' => '一周中(平均:%.2f 条消息)', - 'entry_per_hour' => '各小时(平均:%.2f 条消息)', - 'entry_per_month' => '各月(平均:%.2f 条消息)', - 'entry_repartition' => '文章分布', - 'feed' => '订阅源', - 'feed_per_category' => '各分类订阅源数', - 'idle' => '长期无更新订阅源', - 'main' => '主要统计数据', - 'main_stream' => '首页', - 'no_idle' => '订阅源近期皆有更新!', - 'number_entries' => '%d 篇文章', - 'overview' => 'Overview', // TODO - 'percent_of_total' => '%', - 'repartition' => '文章分布: %s', // DIRTY - 'status_favorites' => '收藏', - 'status_read' => '已读', - 'status_total' => '总计', - 'status_unread' => '未读', - 'title' => '统计', - 'top_feed' => '前十订阅源', - ), - 'system' => array( - '_' => '系统配置', - 'auto-update-url' => '自动更新服务器 URL', - 'base-url' => array( - '_' => '基础 URL', - 'recommendation' => '推荐: <kbd>%s</kbd>', - ), - 'cookie-duration' => array( - 'help' => '单位:秒', - 'number' => '保持登录的时长', - ), - 'force_email_validation' => '强制验证邮箱地址', - 'instance-name' => '实例名称', - 'max-categories' => '各用户分类数限制', - 'max-feeds' => '各用户订阅源数限制', - 'registration' => array( - 'number' => '最大用户数', - 'select' => array( - 'label' => '注册表单', - 'option' => array( - 'noform' => '禁用,无注册表单', - 'nolimit' => '启用,且无账户限制', - 'setaccountsnumber' => '设置用户数的最大值', - ), - ), - 'status' => array( - 'disabled' => '注册表单已禁用', - 'enabled' => '注册表单已启用', - ), - 'title' => '用户注册表单', - ), - 'sensitive-parameter' => '敏感参数。在 <kbd>./data/config.php</kbd> 中手动修改', - 'tos' => array( - 'disabled' => '没有提供', - 'enabled' => '<a href="./?a=tos">已启用</a>', - 'help' => '如何<a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">启用服务条款</a>', - ), - 'websub' => array( - 'help' => '关于 <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>', - ), - ), - 'update' => array( - '_' => '更新系统', - 'apply' => '应用', - 'changelog' => '更新记录', - 'check' => '检查更新', - 'copiedFromURL' => '从 %s 复制 update.php 到 ./data', - 'current_version' => '当前 版本为', - 'last' => '上次检查', - 'loading' => '更新中…', - 'none' => '没有可用更新', - 'releaseChannel' => array( - '_' => '发布通道', - 'edge' => '滚动发布 (“edge”)', - 'latest' => '稳定版本 (“latest”)', - ), - 'title' => '更新系统', - 'viaGit' => '开始通过 git and GitHub.com 更新', - ), - 'user' => array( - 'admin' => '管理员', - 'article_count' => '文章数', - 'back_to_manage' => '← 返回用户列表', - 'create' => '创建新用户', - 'database_size' => '数据库大小', - 'email' => '邮箱地址', - 'enabled' => '已启用', - 'feed_count' => '订阅源数', - 'is_admin' => '管理员', - 'language' => '语言', - 'last_user_activity' => '上次用户活跃', - 'list' => '用户列表', - 'number' => '已有 %d 个用户', - 'numbers' => '已有 %d 个用户', - 'password_form' => '密码<br /><small>(用于网页表单登录方式)</small>', - 'password_format' => '至少 7 个字符', - 'title' => '用户管理', - 'username' => '用户名', - ), -); diff --git a/app/i18n/zh-cn/api.php b/app/i18n/zh-cn/api.php deleted file mode 100644 index 0021dfa98..000000000 --- a/app/i18n/zh-cn/api.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php - -/****************************************************************************** - * Each entry of that file can be associated with a comment to indicate its * - * state. When there is no comment, it means the entry is fully translated. * - * The recognized comments are (comment matching is case-insensitive): * - * + TODO: the entry has never been translated. * - * + DIRTY: the entry has been translated but needs to be updated. * - * + IGNORE: the entry does not need to be translated. * - * When a comment is not recognized, it is discarded. * - ******************************************************************************/ - -return array( - 'information' => array( - 'address' => 'Your API address:', // TODO - 'output' => array( - 'encoding-support' => '⚠️ WARN: no <code>%2F</code> support, some clients might not work!', // TODO - 'invalid-configuration' => '⚠️ WARN: Probable invalid base URL in ./data/config.php', // TODO - 'pass' => '✔️ PASS', // TODO - 'unknown-error' => '❌ ', // TODO - ), - 'test' => array( - 'fever' => 'Fever API configuration test:', // TODO - 'greader' => 'Google Reader API configuration test:', // TODO - ), - 'title' => array( - '_' => 'FreshRSS API endpoints', // TODO - 'extension' => 'API for extensions', // TODO - 'fever' => 'Fever compatible API', // TODO - 'greader' => 'Google Reader compatible API', // TODO - ), - ), -); diff --git a/app/i18n/zh-cn/conf.php b/app/i18n/zh-cn/conf.php deleted file mode 100644 index 1ee9bf404..000000000 --- a/app/i18n/zh-cn/conf.php +++ /dev/null @@ -1,372 +0,0 @@ -<?php - -/****************************************************************************** - * Each entry of that file can be associated with a comment to indicate its * - * state. When there is no comment, it means the entry is fully translated. * - * The recognized comments are (comment matching is case-insensitive): * - * + TODO: the entry has never been translated. * - * + DIRTY: the entry has been translated but needs to be updated. * - * + IGNORE: the entry does not need to be translated. * - * When a comment is not recognized, it is discarded. * - ******************************************************************************/ - -return array( - 'archiving' => array( - '_' => '归档', - 'exception' => '清理例外', - 'help' => '更多可用选项位于各订阅源的设置', - 'keep_favourites' => '永不删除已收藏的文章', - 'keep_labels' => '永不删除打了标签的文章', - 'keep_max' => '每订阅源最多保留的文章数', - 'keep_min_by_feed' => '至少保留的文章数', - 'keep_period' => '文章最多保留', - 'keep_unreads' => '永不删除未读文章', - 'maintenance' => '维护', - 'optimize' => '优化数据库', - 'optimize_help' => '偶尔执行可以减少数据库大小', - 'policy' => '清理策略', - 'policy_warning' => '如果未选择清理策略,则将保留全部文章。', - 'purge_now' => '立即清除', - 'title' => '存档', - 'ttl' => '最小自动刷新间隔', - ), - 'display' => array( - '_' => '显示', - 'darkMode' => array( - '_' => '自动黑暗模式', - 'auto' => '启动', - 'help' => '仅适用于兼容性主题', - 'no' => '关闭', - ), - 'icon' => array( - 'bottom_line' => '底栏', - 'display_authors' => '作者', - 'entry' => '文章图标', - 'publication_date' => '更新日期', - 'related_tags' => '文章标签', - 'sharing' => '分享', - 'summary' => '摘要', - 'top_line' => '顶栏', - ), - 'language' => '语言', - 'notif_html5' => array( - 'seconds' => '秒(0 表示不超时)', - 'timeout' => 'HTML5 通知超时时间', - ), - 'show_nav_buttons' => '显示导航按钮', - 'theme' => array( - '_' => '主题', - 'deprecated' => array( - '_' => '已弃用', - 'description' => '这个主题已经不再被支持并且会在<a href="https://freshrss.github.io/FreshRSS/en/users/05_Configuration.html#theme" target="_blank">将来版本的 FreshRSS</a> 中删除', - ), - ), - 'theme_not_available' => '“%s” 主题不再可用,请选择其他主题。', - 'thumbnail' => array( - 'label' => '缩略图', - 'landscape' => '横向', - 'none' => '无', - 'portrait' => '纵向', - 'square' => '方形', - ), - 'timezone' => '时区', - 'title' => '显示', - 'website' => array( - 'full' => '图标和名称', - 'icon' => '仅图标', - 'label' => '网页显示', - 'name' => '仅名称', - 'none' => '无', - ), - 'width' => array( - 'content' => '内容宽度', - 'large' => '宽', - 'medium' => '中', - 'no_limit' => '无限制', - 'thin' => '窄', - ), - ), - 'logs' => array( - 'loglist' => array( - 'level' => '日志等级', - 'message' => '信息', - 'timestamp' => '时间', - ), - 'pagination' => array( - 'first' => '首页', - 'last' => '末页', - 'next' => '下一页', - 'previous' => '上一页', - ), - ), - 'mark_read_button' => array( - '_' => '“全部标记为已读”按钮', - 'big' => '大', - 'none' => '无', - 'small' => '小', - ), - 'notification_timeout' => array( - 'bad' => array( - 'label' => 'Show warning banner', // TODO - 'seconds' => 'seconds (at least 1)', // TODO - ), - 'good' => array( - 'label' => 'Show acknowledgement banner', // TODO - 'seconds' => 'seconds (0 means not shown)', // TODO - ), - ), - 'privacy' => array( - '_' => 'Privacy', // TODO - 'retrieve_extension_list' => '获取扩展列表', - ), - 'profile' => array( - '_' => '账户管理', - 'api' => array( - '_' => 'API 管理', - 'api_not_set' => 'API密码未设置', - 'api_set' => 'API密码已设置', - 'check_link' => 'Check API status via: <kbd><a href="../api/" target="_blank">%s</a></kbd>', // TODO - 'disabled' => 'The API access is disabled.', // TODO - 'documentation_link' => 'See the <a href="https://freshrss.github.io/FreshRSS/en/users/06_Mobile_access.html#access-via-mobile-app" target="_blank">documentation and list of known apps</a>', // TODO - 'help' => 'See <a href="http://freshrss.github.io/FreshRSS/en/users/06_Mobile_access.html#access-via-mobile-app" target=_blank>documentation</a>', // TODO - ), - 'change_password' => '修改密码', - 'confirm_new_password' => '确认新密码', - 'current_password' => 'Current password<br /><small>(for the Web-form login method)</small>', // TODO - 'delete' => array( - '_' => '账户删除', - 'warn' => '你的帐户以及所有相关数据将被删除。', - ), - 'email' => '邮箱地址', - 'new_password' => '新密码', - 'password_api' => 'API 密码<br /><small>(例如用于手机应用)</small>', - 'password_format' => '至少 7 个字符', - 'title' => '账户', - ), - 'query' => array( - '_' => '自定义查询', - 'deprecated' => '此查询不再有效。相关的分类或订阅源已被删除。', - 'description' => 'Description', // TODO - 'filter' => array( - '_' => '生效的过滤器:', - 'categories' => '按分类显示', - 'feeds' => '按订阅源显示', - 'order' => '按日期排序', - 'search' => '表达式', - 'shareOpml' => '启用相应类别和 feed 的 OPML 分享', - 'shareRss' => '启用 HTML 和 RSS 分享', - 'state' => '状态', - 'tags' => '按标签显示', - 'type' => '类型', - ), - 'get_A' => 'Show all feeds, also those shown in their category', // TODO - 'get_Z' => 'Show all feeds, also archived ones', // TODO - 'get_all' => '显示所有文章', - 'get_all_labels' => '显示所有打了标签的文章', - 'get_category' => '显示分类“%s”', - 'get_favorite' => '显示收藏文章', - 'get_feed' => '显示订阅源“%s”', - 'get_important' => '显示来自“重要的订阅”的文章', - 'get_label' => '显示打了“%s”标签的文章', - 'help' => '参见文档: <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">queries and resharing by HTML / RSS / OPML</a>.', - 'image_url' => 'Image URL', // TODO - 'name' => '名称', - 'no_filter' => '无过滤器', - 'no_queries' => array( - '_' => 'No user queries are saved yet.', // TODO - 'help' => 'See <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">documentation</a>', // TODO - ), - 'number' => '查询 n°%d', - 'order_asc' => '由旧至新显示文章', - 'order_desc' => '由新至旧显示文章', - 'search' => '搜索 “%s”', - 'share' => array( - '_' => '分享您的自定义查询', - 'disabled' => array( - '_' => '已禁用', - 'title' => '分享', - ), - 'greader' => 'Shareable link to the GReader JSON', // TODO - 'help' => '获取此自定义查询的分享链接', - 'html' => 'HTML 页面的分享链接', - 'opml' => '订阅源 OPML 的分享链接', - 'rss' => 'RSS feed 的分享链接', - ), - 'state_0' => '显示所有文章', - 'state_1' => '显示已读文章', - 'state_2' => '显示未读文章', - 'state_3' => '显示所有文章', - 'state_4' => '显示收藏文章', - 'state_5' => '显示已读的收藏文章', - 'state_6' => '显示未读的收藏文章', - 'state_7' => '显示收藏文章', - 'state_8' => '显示未收藏文章', - 'state_9' => '显示已读的未收藏文章', - 'state_10' => '显示未读的未收藏文章', - 'state_11' => '显示未收藏文章', - 'state_12' => '显示所有文章', - 'state_13' => '显示已读文章', - 'state_14' => '显示未读文章', - 'state_15' => '显示所有文章', - 'title' => '自定义查询', - ), - 'reading' => array( - '_' => '阅读', - 'after_onread' => '“全部标记为已读”后', - 'always_show_favorites' => '默认显示收藏夹中所有的文章', - 'apply_to_individual_feed' => 'Applies to feeds individually', // TODO - 'article' => array( - 'authors_date' => array( - '_' => '作者和日期', - 'both' => '页脚与页眉', - 'footer' => '页脚', - 'header' => '页眉', - 'none' => '不显示', - ), - 'feed_name' => array( - 'above_title' => '在标题/标签上方', - 'none' => '不显示', - 'with_authors' => '与作者和日期一行', - ), - 'feed_title' => '订阅源标题', - 'icons' => array( - '_' => '文章图标位置<br /><small>(仅阅读视图)</small>', - 'above_title' => '标题之上', - 'with_authors' => '与作者和日期在同一行', - ), - 'tags' => array( - '_' => '文章标签', - 'both' => '页脚与页眉', - 'footer' => '页脚', - 'header' => '页眉', - 'none' => '不显示', - ), - 'tags_max' => array( - '_' => '标签最多显示个数', - 'help' => '0 表示:显示所有标签且不折叠', - ), - ), - 'articles_per_page' => '每页文章数', - 'auto_load_more' => '在页面底部载入更多文章', - 'auto_remove_article' => '阅读后隐藏文章', - 'confirm_enabled' => '“全部标记为已读”时显示确认对话框', - 'display_articles_unfolded' => '默认展开显示文章', - 'display_categories_unfolded' => '展开的分类', - 'headline' => array( - 'articles' => '文章:打开/关闭', - 'articles_header_footer' => '文章: 页眉/页脚', - 'categories' => '左侧导航栏:分类', - 'mark_as_read' => '标为已读选项', - 'misc' => '其它', - 'view' => '浏览', - ), - 'hide_read_feeds' => '隐藏没有未读文章的分类和订阅源(启用“显示所有文章”后不生效)', - 'img_with_lazyload' => '延迟加载图片', - 'jump_next' => '跳转到下一未读项', - 'mark_updated_article_unread' => '将有更新的文章设为未读', - 'number_divided_when_reader' => '阅读视图中显示一半', - 'read' => array( - 'article_open_on_website' => '在打开原文章后', - 'article_viewed' => '在文章被浏览后', - 'focus' => '被聚焦时(除了重要订阅)', - 'keep_max_n_unread' => '未读最多保留 n 条', - 'scroll' => '在滚动浏览后(除了重要订阅)', - 'upon_gone' => '在被原订阅源被移除后', - 'upon_reception' => '在接收文章后', - 'when' => '何时将文章标记为已读', - 'when_same_title_in_category' => 'if an identical title already exists in the top <i>n</i> newest articles of the category', // TODO - 'when_same_title_in_feed' => '已存在 n 条相同标题文章 (of the feed)', // DIRTY - ), - 'show' => array( - '_' => '文章显示', - 'active_category' => '活跃的分类', - 'adaptive' => '若有未读项就显示未读,否则显示所有文章', - 'all_articles' => '显示所有', - 'all_categories' => '所有分类', - 'no_category' => '无分类', - 'remember_categories' => '记住打开的分类', - 'unread' => '只显示未读', - 'unread_or_favorite' => '显示未读及收藏', - ), - 'show_fav_unread_help' => '同样适用于标签', - 'sides_close_article' => '点击文章文本区域外关闭文章', - 'sort' => array( - '_' => '排列顺序', - 'newer_first' => '由新至旧', - 'older_first' => '由旧至新', - ), - 'star' => array( - 'when' => 'Mark an article as favourite…', // TODO - ), - 'sticky_post' => '打开文章时将其置顶', - 'title' => '阅读', - 'view' => array( - 'default' => '默认视图', - 'global' => '全屏视图', - 'normal' => '普通视图', - 'reader' => '阅读视图', - ), - ), - 'sharing' => array( - '_' => '分享', - 'add' => '添加分享方式', - 'bluesky' => 'Bluesky', // IGNORE - 'deprecated' => '此功能已被废弃并会在未来的 FreshRSS 版本中移除,详情见 <a href="https://freshrss.github.io/FreshRSS/en/users/08_sharing_services.html" title="打开文档获更多信息" target="_blank">说明文档</a>.', - 'diaspora' => 'Diaspora*', // IGNORE - 'email' => 'Email', // IGNORE - 'facebook' => 'Facebook', // IGNORE - 'more_information' => '更多信息', - 'print' => '打印', - 'raindrop' => 'Raindrop.io', // IGNORE - 'remove' => '删除分享方式', - 'shaarli' => 'Shaarli', // IGNORE - 'share_name' => '显示名称', - 'share_url' => '用于分享的 URL', - 'title' => '分享', - 'twitter' => 'Twitter', // IGNORE - 'wallabag' => 'wallabag', // IGNORE - ), - 'shortcut' => array( - '_' => '快捷键', - 'article_action' => '文章操作', - 'auto_share' => '分享', - 'auto_share_help' => '如果有多种分享方式,则会按照它们的序号依次访问。', - 'close_menus' => '关闭菜单', - 'collapse_article' => '折叠文章', - 'first_article' => '打开第一篇文章', - 'focus_search' => '访问搜索框', - 'global_view' => '切换到全屏视图', - 'help' => '显示帮助文档', - 'javascript' => '若要使用快捷键,必须启用 JavaScript', - 'last_article' => '打开最后一篇文章', - 'load_more' => '载入更多文章', - 'mark_favorite' => '加入收藏', - 'mark_read' => '设为已读', - 'navigation' => '浏览', - 'navigation_help' => '组合 <kbd>⇧ Shift</kbd> 键,导航快捷键将应用于订阅源。<br/>组合 <kbd>Alt ⎇</kbd> 键,导航快捷键将应用于分类。', - 'navigation_no_mod_help' => '以下快捷键不支持组合键(Shift 或 Alt)', - 'next_article' => '打开下一篇文章', - 'next_unread_article' => '打开下一篇未读文章', - 'non_standard' => '这些键(<kbd>%s</kbd>)可能不能作为快捷键', - 'normal_view' => '切换到普通视图', - 'other_action' => '其他操作', - 'previous_article' => '打开上一篇文章', - 'reading_view' => '切换到阅读视图', - 'rss_view' => '切换到 RSS 视图', - 'see_on_website' => '在原网站中查看', - 'shift_for_all_read' => '+ <kbd>Alt ⎇</kbd> 键将上方的文章标记为已读<br />+ <kbd>⇧ Shift</kbd> 键将所有文章设为已读', - 'skip_next_article' => '跳转到下一篇文章而不打开', - 'skip_previous_article' => '跳转到上一篇文章而不打开', - 'title' => '快捷键', - 'toggle_media' => '播放/暂停媒体', - 'user_filter' => '显示自定义查询', - 'user_filter_help' => '如果有多个自定义过滤器,则会按照它们的序号依次访问。', - 'views' => '视图', - ), - 'user' => array( - 'articles_and_size' => '%s 篇文章(%s)', - 'current' => '当前用户', - 'is_admin' => '该用户为管理员', - 'users' => '用户', - ), -); diff --git a/app/i18n/zh-cn/feedback.php b/app/i18n/zh-cn/feedback.php deleted file mode 100644 index 3aa767f95..000000000 --- a/app/i18n/zh-cn/feedback.php +++ /dev/null @@ -1,152 +0,0 @@ -<?php - -/****************************************************************************** - * Each entry of that file can be associated with a comment to indicate its * - * state. When there is no comment, it means the entry is fully translated. * - * The recognized comments are (comment matching is case-insensitive): * - * + TODO: the entry has never been translated. * - * + DIRTY: the entry has been translated but needs to be updated. * - * + IGNORE: the entry does not need to be translated. * - * When a comment is not recognized, it is discarded. * - ******************************************************************************/ - -return array( - 'access' => array( - 'denied' => '你无权访问此页面', - 'not_found' => '你寻找的页面不存在', - ), - 'admin' => array( - 'optimization_complete' => '优化完成', - ), - 'api' => array( - 'password' => array( - 'failed' => '你的密码无法修改', - 'updated' => '你的密码已修改', - ), - ), - 'auth' => array( - 'login' => array( - 'invalid' => '用户名或密码无效', - 'success' => '登录成功', - ), - 'logout' => array( - 'success' => '已登出', - ), - ), - 'conf' => array( - 'error' => '保存配置时出错', - 'query_created' => '查询 “%s” 已创建。', - 'shortcuts_updated' => '快捷键已更新', - 'updated' => '配置已更新', - ), - 'extensions' => array( - 'already_enabled' => '%s 已启用', - 'cannot_remove' => '无法删除 %s', - 'disable' => array( - 'ko' => '无法禁用 %s。<a href="%s">检查 FreshRSS 日志</a> 查看详情。', - 'ok' => '%s 现已禁用', - ), - 'enable' => array( - 'ko' => '%s 启用失败。<a href="%s">检查 FreshRSS 日志</a> 查看详情。', - 'ok' => '%s 现已启用', - ), - 'invalid_view_mode' => 'Invalid view mode “%s”! Fall back to “Normal view”.', // TODO - 'no_access' => '你无权访问 %s', - 'not_enabled' => '%s 未启用', - 'not_found' => '%s 不存在', - 'removed' => '%s 已删除', - ), - 'import_export' => array( - 'export_no_zip_extension' => '服务器未启用 ZIP 扩展,请尝试逐个导出文件。', - 'feeds_imported' => '你的订阅源已导入,你可以点击 <i>更新订阅</i> 按钮以完成导入。', - 'feeds_imported_with_errors' => '你的订阅源已导入,但发生错误。你可以点击 <i>更新订阅</i> 按钮以完成导入。', - 'file_cannot_be_uploaded' => '文件未能上传!', - 'no_zip_extension' => '服务器未启用 ZIP 扩展。', - 'zip_error' => '导入 ZIP 文件时出错', // DIRTY - ), - 'profile' => array( - 'error' => '你的帐户无法修改', - 'passwords_dont_match' => 'Passwords don’t match', // TODO - 'updated' => '你的帐户已修改', - ), - 'sub' => array( - 'actualize' => '获取', - 'articles' => array( - 'marked_read' => '文章已标记为已读', - 'marked_unread' => '文章已标记为未读', - ), - 'category' => array( - 'created' => '已创建分类 %s', - 'deleted' => '已删除分类', - 'emptied' => '已清空分类', - 'error' => '更新分类失败', - 'name_exists' => '分类名已存在', - 'no_id' => '你必须指定分类 ID', - 'no_name' => '分类名不能为空', - 'not_delete_default' => '你不能删除默认分类!', - 'not_exist' => '分类不存在!', - 'over_max' => '你已达到分类数上限(%d)', - 'updated' => '已更新分类', - ), - 'feed' => array( - 'actualized' => '已更新 <em>%s</em>', - 'actualizeds' => '已更新订阅源', - 'added' => '订阅源 <em>%s</em> 已添加', - 'already_subscribed' => '你已订阅 <em>%s</em>', - 'cache_cleared' => '<em>%s</em> 缓存已清理', - 'deleted' => '已删除订阅源', - 'error' => '订阅源更新失败', - 'favicon' => array( - 'too_large' => 'Uploaded icon is too large. The maximum file size is <em>%s</em>.', // TODO - 'unsupported_format' => 'Unsupported image file format!', // TODO - ), - 'internal_problem' => '订阅源添加失败,<a href="%s">检查 FreshRSS 日志</a> 查看详情。你可以在 URL 后添加 <code>#force_feed</code> 尝试强制添加。', - 'invalid_url' => 'URL <em>%s</em> 无效', - 'n_actualized' => '已更新 %d 个订阅源', - 'n_entries_deleted' => '已删除 %d 篇文章', - 'no_refresh' => '没有可刷新的订阅源', - 'not_added' => '<em>%s</em> 添加失败', - 'not_found' => '无法找到订阅', - 'over_max' => '你已达到订阅源数上限(%d)', - 'reloaded' => '<em>%s</em> 已重新加载', - 'selector_preview' => array( - 'http_error' => '无法加载网站内容。', - 'no_entries' => '你的订阅中没有任何条目,你至少需要一个条目来创建一个预览。', - 'no_feed' => '网络错误(订阅源不存在)', - 'no_result' => '选择器没有匹配到任何东西,回退显示原始的订阅源文本。', - 'selector_empty' => '选择器是空的,你需要一个来创建预览。', - ), - 'updated' => '已更新订阅源', - ), - 'purge_completed' => '清除完成(已删除 %d 篇文章)', - ), - 'tag' => array( - 'created' => '标签“%s”已创建。', - 'error' => '标签无法被更新!', - 'name_exists' => '标签名已存在。', - 'renamed' => '标签“%s”已被重命名为“%s”。', - 'updated' => '标签已更新。', - ), - 'update' => array( - 'can_apply' => 'FreshRSS 将更新到 <strong>版本 %s</strong>。', - 'error' => '更新出错:%s', - 'file_is_nok' => '请检查 <em>%s</em> 目录权限。HTTP 服务器必须拥有写入权限。', - 'finished' => '更新完成!', - 'none' => '没有可用更新', - 'server_not_found' => '找不到更新服务器。 [%s]', - ), - 'user' => array( - 'created' => array( - '_' => '已创建用户 %s', - 'error' => '创建用户 %s 失败', - ), - 'deleted' => array( - '_' => '已删除用户 %s', - 'error' => '删除用户 %s 失败', - ), - 'updated' => array( - '_' => '已更新用户 %s', - 'error' => '更新用户 %s 失败', - ), - ), -); diff --git a/app/i18n/zh-cn/gen.php b/app/i18n/zh-cn/gen.php deleted file mode 100644 index 71fdc1416..000000000 --- a/app/i18n/zh-cn/gen.php +++ /dev/null @@ -1,277 +0,0 @@ -<?php - -/****************************************************************************** - * Each entry of that file can be associated with a comment to indicate its * - * state. When there is no comment, it means the entry is fully translated. * - * The recognized comments are (comment matching is case-insensitive): * - * + TODO: the entry has never been translated. * - * + DIRTY: the entry has been translated but needs to be updated. * - * + IGNORE: the entry does not need to be translated. * - * When a comment is not recognized, it is discarded. * - ******************************************************************************/ - -return array( - 'action' => array( - 'actualize' => '更新订阅源', - 'add' => '添加', - 'back_to_rss_feeds' => '← 返回订阅源', - 'cancel' => '取消', - 'close' => 'Close', // TODO - 'create' => '创建', - 'delete_all_feeds' => 'Delete all feeds', // TODO - 'delete_errored_feeds' => 'Delete feeds with errors', // TODO - 'delete_muted_feeds' => '删除已暂停的订阅源', - 'demote' => '撤销管理员', - 'disable' => '禁用', - 'download' => 'Download', // TODO - 'empty' => '清空', - 'enable' => '启用', - 'export' => '导出', - 'filter' => '过滤', - 'import' => '导入', - 'load_default_shortcuts' => '加载默认快捷键', - 'manage' => '管理', - 'mark_read' => '标记已读', - 'menu' => array( - 'open' => 'Open menu', // TODO - ), - 'nav_buttons' => array( - 'next' => 'Next article', // TODO - 'prev' => 'Previous article', // TODO - 'up' => 'Go up', // TODO - ), - 'open_url' => '打开链接', - 'promote' => '设为管理员', - 'purge' => '清理', - 'refresh_opml' => '刷新订阅源动态列表', - 'remove' => '删除', - 'rename' => '重命名', - 'see_website' => '网站中查看', - 'submit' => '提交', - 'truncate' => '删除所有文章', - 'update' => '更新', - ), - 'auth' => array( - 'accept_tos' => '我接受 <a href="%s">服务条款</a>', - 'email' => 'Email 地址', - 'keep_logged_in' => '<small>%s</small> 天内保持登录', - 'login' => '登录', - 'logout' => '登出', - 'password' => array( - '_' => '密码', - 'format' => '<small>至少 7 个字符</small>', - ), - 'reauth' => array( - 'header' => 'Reauthentication is required', // TODO - 'tip' => 'You won’t be asked to sign in again for <u>%d minutes</u>', // TODO - 'title' => 'Reauthentication', // TODO - ), - 'registration' => array( - '_' => '新用户', - 'ask' => '创建新用户?', - 'title' => '用户创建', - ), - 'username' => array( - '_' => '用户名', - 'format' => '<small>最多 16 个数字或字母</small>', - ), - ), - 'date' => array( - 'Apr' => '\\四\\月', - 'Aug' => '\\八\\月', - 'Dec' => '\\十\\二\\月', - 'Feb' => '\\二\\月', - 'Jan' => '\\一\\月', - 'Jul' => '\\七\\月', - 'Jun' => '\\六\\月', - 'Mar' => '\\三\\月', - 'May' => '\\五\\月', - 'Nov' => '\\十\\一\\月', - 'Oct' => '\\十\\月', - 'Sep' => '\\九\\月', - 'apr' => '四月', - 'april' => '四月', - 'aug' => '八月', - 'august' => '八月', - 'before_yesterday' => '昨天以前', - 'dec' => '十二月', - 'december' => '十二月', - 'feb' => '二月', - 'february' => '二月', - 'format_date' => 'Y\\年n\\月j\\日', - 'format_date_hour' => 'Y\\年n\\月j\\日 H\\:i', - 'fri' => '周五', - 'jan' => '一月', - 'january' => '一月', - 'jul' => '七月', - 'july' => '七月', - 'jun' => '六月', - 'june' => '六月', - 'last_2_year' => '过去两年', - 'last_3_month' => '最近三个月', - 'last_3_year' => '过去三年', - 'last_5_year' => '过去五年', - 'last_6_month' => '最近六个月', - 'last_month' => '上月', - 'last_week' => '上周', - 'last_year' => '去年', - 'mar' => '三月', - 'march' => '三月', - 'may' => '五月', - 'may_' => '五月', - 'mon' => '周一', - 'month' => '个月', - 'nov' => '十一月', - 'november' => '十一月', - 'oct' => '十月', - 'october' => '十月', - 'sat' => '周六', - 'sep' => '九月', - 'september' => '九月', - 'sun' => '周日', - 'thu' => '周四', - 'today' => '今天', - 'tue' => '周二', - 'wed' => '周三', - 'yesterday' => '昨天', - ), - 'dir' => 'ltr', // IGNORE - 'freshrss' => array( - '_' => 'FreshRSS', // IGNORE - 'about' => '关于 FreshRSS', - ), - 'js' => array( - 'category_empty' => '清空分类', - 'confirm_action' => '你确定要执行此操作吗?这将不可撤销!', - 'confirm_action_feed_cat' => '你确定要执行此操作吗?你将丢失相关的收藏和自定义查询,这将不可撤销!', - 'confirm_exit_slider' => 'Are you sure you want to discard unsaved settings?', // TODO - 'feedback' => array( - 'body_new_articles' => 'FreshRSS 中有 %%d 篇文章等待阅读。', - 'body_unread_articles' => '(未读: %%d)', - 'request_failed' => '请求失败,这可能是因为网络连接问题。', - 'title_new_articles' => 'FreshRSS: 新文章!', - ), - 'labels_empty' => '无标签', - 'new_article' => '发现新文章,点击刷新页面。', - 'should_be_activated' => '必须启用 JavaScript', - 'unsafe_csp_header' => 'The CSP header in use is unsafe and FreshRSS may be vulnerable to XSS attacks. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">See documentation</a>', // TODO - ), - 'lang' => array( - 'cs' => 'Čeština', // IGNORE - 'de' => 'Deutsch', // IGNORE - 'el' => 'Ελληνικά', // IGNORE - 'en' => 'English', // IGNORE - 'en-us' => 'English (United States)', // IGNORE - 'es' => 'Español', // IGNORE - 'fa' => 'فارسی', // IGNORE - 'fi' => 'Suomi', // IGNORE - 'fr' => 'Français', // IGNORE - 'he' => 'עברית', // IGNORE - 'hu' => 'Magyar', // IGNORE - 'id' => 'Bahasa Indonesia', // IGNORE - 'it' => 'Italiano', // IGNORE - 'ja' => '日本語', // IGNORE - 'ko' => '한국어', // IGNORE - 'lv' => 'Latviešu', // IGNORE - 'nl' => 'Nederlands', // IGNORE - 'oc' => 'Occitan', // IGNORE - 'pl' => 'Polski', // IGNORE - 'pt-br' => 'Português (Brasil)', // IGNORE - 'pt-pt' => 'Português (Portugal)', // IGNORE - 'ru' => 'Русский', // IGNORE - 'sk' => 'Slovenčina', // IGNORE - 'tr' => 'Türkçe', // IGNORE - 'uk' => 'Українська', // IGNORE - 'zh-cn' => '简体中文', // IGNORE - 'zh-tw' => '正體中文', // IGNORE - ), - 'menu' => array( - 'about' => '关于', - 'account' => '账户', - 'admin' => '管理', - 'archiving' => '归档', - 'authentication' => '认证', - 'check_install' => '环境检查', - 'configuration' => '配置', - 'display' => '显示', - 'extensions' => '扩展', - 'logs' => '日志', - 'privacy' => 'Privacy', // TODO - 'queries' => '自定义查询', - 'reading' => '阅读', - 'search' => '搜索内容或#文章标签', - 'search_help' => '查阅文档获取支持的 <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">搜索参数</a>', - 'sharing' => '分享', - 'shortcuts' => '快捷键', - 'stats' => '统计', - 'system' => '系统配置', - 'update' => '更新', - 'user_management' => '用户管理', - 'user_profile' => '帐户', - ), - 'period' => array( - 'days' => '天', - 'hours' => '时', - 'months' => '月', - 'weeks' => '周', - 'years' => '年', - ), - 'readme' => array( - 'contribute' => 'contribute', // IGNORE - 'language' => 'Language', // IGNORE - 'translated' => 'Progress', // IGNORE - ), - 'share' => array( - 'Known' => '基于 Known 的站点', - 'archiveIS' => 'archive.is', // IGNORE - 'archiveORG' => 'archive.org', // IGNORE - 'archivePH' => 'archive.ph', // IGNORE - 'bluesky' => 'Bluesky', // IGNORE - 'buffer' => 'Buffer', // IGNORE - 'clipboard' => '剪贴板', - 'diaspora' => 'Diaspora*', // IGNORE - 'email' => 'Email', // IGNORE - 'email-webmail-firefox-fix' => 'Email (webmail - 兼容 Firefox)', - 'facebook' => 'Facebook', // IGNORE - 'gnusocial' => 'GNU social', // IGNORE - 'jdh' => 'Journal du hacker', // IGNORE - 'lemmy' => 'Lemmy', // IGNORE - 'linkding' => 'Linkding', // IGNORE - 'linkedin' => 'LinkedIn', // IGNORE - 'mastodon' => 'Mastodon', // IGNORE - 'movim' => 'Movim', // IGNORE - 'omnivore' => 'Omnivore', // IGNORE - 'pinboard' => 'Pinboard', // IGNORE - 'pinterest' => 'Pinterest', // IGNORE - 'pocket' => 'Pocket', // IGNORE - 'print' => '打印', - 'raindrop' => 'Raindrop.io', // IGNORE - 'reddit' => 'Reddit', // IGNORE - 'shaarli' => 'Shaarli', // IGNORE - 'telegram' => 'Telegram', // IGNORE - 'twitter' => 'Twitter', // IGNORE - 'wallabag' => 'Wallabag v1', // IGNORE - 'wallabagv2' => 'Wallabag v2', // IGNORE - 'web-sharing-api' => '系统分享', - 'whatsapp' => 'Whatsapp', // IGNORE - 'xing' => 'Xing', // IGNORE - ), - 'short' => array( - 'attention' => '警告!', - 'blank_to_disable' => '留空以禁用', - 'by_author' => '作者', - 'by_default' => '默认', - 'damn' => '错误!', - 'default_category' => '未分类', - 'no' => '否', - 'not_applicable' => '不可用', - 'ok' => '正常!', - 'or' => '或', - 'yes' => '是', - ), - 'stream' => array( - 'load_more' => '载入更多文章', - 'mark_all_read' => '全部设为已读', - 'nothing_to_load' => '没有更多文章', - ), -); diff --git a/app/i18n/zh-cn/index.php b/app/i18n/zh-cn/index.php deleted file mode 100644 index 33c9998b0..000000000 --- a/app/i18n/zh-cn/index.php +++ /dev/null @@ -1,110 +0,0 @@ -<?php - -/****************************************************************************** - * Each entry of that file can be associated with a comment to indicate its * - * state. When there is no comment, it means the entry is fully translated. * - * The recognized comments are (comment matching is case-insensitive): * - * + TODO: the entry has never been translated. * - * + DIRTY: the entry has been translated but needs to be updated. * - * + IGNORE: the entry does not need to be translated. * - * When a comment is not recognized, it is discarded. * - ******************************************************************************/ - -return array( - 'about' => array( - '_' => '关于', - 'agpl3' => '<a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL 3</a>', // IGNORE - 'bug_reports' => array( - 'environment_information' => array( - '_' => 'System information', // TODO - 'browser' => 'Browser', // TODO - 'database' => 'Database', // TODO - 'server_software' => 'Server software', // TODO - 'version_curl' => 'cURL version', // TODO - 'version_frss' => 'FreshRSS version', // TODO - 'version_php' => 'PHP version', // TODO - ), - ), - 'bugs_reports' => '报告错误', - 'documentation' => '文档', - 'freshrss_description' => 'FreshRSS 是一个自托管的 RSS 聚合服务。 它不仅轻快易用,并且强大又易于配置。', - 'github' => '<a href="https://github.com/FreshRSS/FreshRSS/issues">GitHub Issues</a>', - 'license' => '授权', - 'project_website' => '项目网站', - 'title' => '关于', - 'version' => '版本', - ), - 'feed' => array( - 'empty' => '没有文章可以显示。', - 'received' => array( - 'before_yesterday' => 'Received before yesterday', // TODO - 'today' => 'Received today', // TODO - 'yesterday' => 'Received yesterday', // TODO - ), - 'rss_of' => '%s 的订阅源', - 'title' => '首页', - 'title_fav' => '收藏', - 'title_global' => '全局视图', - ), - 'log' => array( - '_' => '日志', - 'clear' => '清除日志', - 'empty' => '日志文件为空', - 'title' => '日志', - ), - 'menu' => array( - 'about' => '关于 FreshRSS', - 'before_one_day' => '一天前', - 'before_one_week' => '一周前', - 'bookmark_query' => '收藏当前查询', - 'favorites' => '收藏(%s)', - 'global_view' => '全局视图', - 'important' => '重要的订阅', - 'main_stream' => '首页', - 'mark_all_read' => '全部设为已读', - 'mark_cat_read' => '此分类设为已读', - 'mark_feed_read' => '此订阅源设为已读', - 'mark_selection_unread' => '将筛选结果标记为未读', - 'mylabels' => '我的标签', - 'newer_first' => '由新至旧', - 'non-starred' => '显示未收藏', - 'normal_view' => '普通视图', - 'older_first' => '由旧至新', - 'queries' => '自定义查询', - 'read' => '显示已读', - 'reader_view' => '阅读视图', - 'rss_view' => '订阅源', - 'search_short' => '搜索', - 'sort' => array( - '_' => 'Sorting criteria', // TODO - 'c' => array( - 'name_asc' => 'Category, feed titles A→Z', // TODO - 'name_desc' => 'Category, feed titles Z→A', // TODO - ), - 'date_asc' => 'Publication date 1→9', // TODO - 'date_desc' => 'Publication date 9→1', // TODO - 'f' => array( - 'name_asc' => 'Feed title A→Z', // TODO - 'name_desc' => 'Feed title Z→A', // TODO - ), - 'id_asc' => 'Freshly received last', // TODO - 'id_desc' => 'Freshly received first', // TODO - 'link_asc' => 'Link A→Z', // TODO - 'link_desc' => 'Link Z→A', // TODO - 'rand' => 'Random order', // TODO - 'title_asc' => 'Title A→Z', // TODO - 'title_desc' => 'Title Z→A', // TODO - ), - 'starred' => '显示收藏', - 'stats' => '统计', - 'subscription' => '订阅管理', - 'unread' => '显示未读', - ), - 'share' => '分享', - 'tag' => array( - 'related' => '文章标签', - ), - 'tos' => array( - 'title' => '服务条款', - ), -); diff --git a/app/i18n/zh-cn/install.php b/app/i18n/zh-cn/install.php deleted file mode 100644 index f4c9480e9..000000000 --- a/app/i18n/zh-cn/install.php +++ /dev/null @@ -1,128 +0,0 @@ -<?php - -/****************************************************************************** - * Each entry of that file can be associated with a comment to indicate its * - * state. When there is no comment, it means the entry is fully translated. * - * The recognized comments are (comment matching is case-insensitive): * - * + TODO: the entry has never been translated. * - * + DIRTY: the entry has been translated but needs to be updated. * - * + IGNORE: the entry does not need to be translated. * - * When a comment is not recognized, it is discarded. * - ******************************************************************************/ - -return array( - 'action' => array( - 'finish' => '完成安装', - 'fix_errors_before' => '请在继续下一步前修复错误', - 'keep_install' => '保留当前配置', - 'next_step' => '下一步', - 'reinstall' => '重新安装 FreshRSS', - ), - 'bdd' => array( - '_' => '数据库', - 'conf' => array( - '_' => '数据库配置', - 'ko' => '验证你的数据库信息', - 'ok' => '数据库配置已保存', - ), - 'host' => '主机', - 'password' => '数据库密码', - 'prefix' => '表前缀', - 'type' => '数据库类型', - 'username' => '数据库用户名', - ), - 'check' => array( - '_' => '检查', - 'already_installed' => '我们检测到 FreshRSS 已经安装!', - 'cache' => array( - 'nok' => '请检查 <em>%s</em> 目录权限,HTTP 服务器必须拥有写入权限。', - 'ok' => 'cache 目录权限正常', - ), - 'ctype' => array( - 'nok' => '找不到字符类型检测库(php-ctype)', - 'ok' => '已找到字符类型检测库(ctype)', - ), - 'curl' => array( - 'nok' => '找不到 cURL 库(php-curl 包)', - 'ok' => '已找到 cURL 库', - ), - 'data' => array( - 'nok' => '请检查 <em>%s</em> 目录权限,HTTP 服务器必须拥有写入权限。', - 'ok' => 'data 目录权限正常', - ), - 'dom' => array( - 'nok' => '找不到用于浏览 DOM 的库(php-xml 包)', - 'ok' => '已找到用于浏览 DOM 的库', - ), - 'favicons' => array( - 'nok' => '请检查 <em>./data/favicons</em> 目录权限,HTTP 服务器必须拥有写入权限。', - 'ok' => 'favicons 目录权限正常', - ), - 'fileinfo' => array( - 'nok' => '找不到 PHP fileinfo 库(fileinfo 包)', - 'ok' => '已找到 fileinfo 库', - ), - 'json' => array( - 'nok' => '找不到 JSON 扩展(php-json 包)', - 'ok' => '已找到 JSON 扩展', - ), - 'mbstring' => array( - 'nok' => '找不到推荐用于 Unicode 的 mbstring 库', - 'ok' => '已找到推荐用于 Unicode 的 mbstring 库', - ), - 'pcre' => array( - 'nok' => '找不到正则表达式解析库(php-pcre)', - 'ok' => '已找到正则表达式解析库(PCRE)', - ), - 'pdo' => array( - 'nok' => '找不到 PDO 或其中一种支持的驱动(pdo_mysql、pdo_sqlite、pdo_pgsql)', - 'ok' => '已找到 PDO 和至少一种支持的驱动(pdo_mysql、pdo_sqlite、pdo_pgsql)', - ), - 'php' => array( - 'nok' => '你的 PHP 版本为 %s,但 FreshRSS 最低需要 %s', - 'ok' => '你的 PHP 版本为 %s,与 FreshRSS 兼容', - ), - 'reload' => '再检查一遍', - 'tmp' => array( - 'nok' => '请检查 <em>%s</em> 目录权限,HTTP 服务器必须拥有写入权限。', - 'ok' => '缓存目录权限正常。', - ), - 'unknown_process_username' => '未知', - 'users' => array( - 'nok' => '请检查 <em>%s</em> 目录权限,HTTP 服务器必须拥有写入权限。', - 'ok' => 'users 目录权限正常', - ), - 'xml' => array( - 'nok' => '找不到用于 XML 解析库', - 'ok' => '已找到 XML 解析库', - ), - ), - 'conf' => array( - '_' => '常规配置', - 'ok' => '常规配置已保存', - ), - 'congratulations' => '恭喜!', - 'default_user' => array( - '_' => '默认用户名', - 'max_char' => '最多 16 个数字或字母', - ), - 'fix_errors_before' => '请在继续下一步前修复错误', - 'javascript_is_better' => '启用 JavaScript 会使 FreshRSS 工作得更好', - 'js' => array( - 'confirm_reinstall' => '重新安装 FreshRSS 将会重置之前的配置,你确定要继续吗?', - ), - 'language' => array( - '_' => '语言', - 'choose' => '为 FreshRSS 选择语言', - 'defined' => '语言已指定', - ), - 'missing_applied_migrations' => '出现错误,你需要手动创建一个空文件 <em>%s</em>。', - 'ok' => '安装成功', - 'session' => array( - 'nok' => 'Web 服务器似乎未正确配置 PHP 会话所需的 cookie!', - ), - 'step' => '步骤 %d', - 'steps' => '步骤', - 'this_is_the_end' => '最后一步', - 'title' => '安装 FreshRSS', -); diff --git a/app/i18n/zh-cn/sub.php b/app/i18n/zh-cn/sub.php deleted file mode 100644 index 4769893d5..000000000 --- a/app/i18n/zh-cn/sub.php +++ /dev/null @@ -1,307 +0,0 @@ -<?php - -/****************************************************************************** - * Each entry of that file can be associated with a comment to indicate its * - * state. When there is no comment, it means the entry is fully translated. * - * The recognized comments are (comment matching is case-insensitive): * - * + TODO: the entry has never been translated. * - * + DIRTY: the entry has been translated but needs to be updated. * - * + IGNORE: the entry does not need to be translated. * - * When a comment is not recognized, it is discarded. * - ******************************************************************************/ - -return array( - 'api' => array( - 'documentation' => '复制以下地址,以供外部工具使用', - 'title' => 'API', // IGNORE - ), - 'bookmarklet' => array( - 'documentation' => '拖动此书签到你的书签栏或者右键选择「收藏此链接」,然后在你想要订阅的页面上点击「订阅」按钮。', - 'label' => '订阅', - 'title' => '书签', - ), - 'category' => array( - '_' => '分类', - 'add' => '添加分类', - 'archiving' => '归档', - 'dynamic_opml' => array( - '_' => '动态订阅', - 'help' => '使用 URL 上的 <a href="http://opml.org/" target="_blank">OPML 文件</a> 中的订阅源填充这一分类', - ), - 'empty' => '空分类', - 'expand' => 'Expand category', // TODO - 'information' => '信息', - 'open' => 'Open category', // TODO - 'opml_url' => 'OPML URL', // IGNORE - 'position' => '显示位置', - 'position_help' => '控制分类排列顺序', - 'title' => '标题', - ), - 'feed' => array( - 'accept_cookies' => '接受 Cookies', - 'accept_cookies_help' => '允许订阅源服务器设置 Cookies(仅在请求期间存储在内存中)', - 'add' => '添加订阅源', - 'advanced' => '高级', - 'archiving' => '归档', - 'auth' => array( - 'configuration' => '认证', - 'help' => '用于连接启用 HTTP 认证的订阅源', - 'http' => 'HTTP 认证', - 'password' => 'HTTP 密码', - 'username' => 'HTTP 用户名', - ), - 'change_favicon' => 'Change…', // TODO - 'clear_cache' => '总是清除缓存', - 'content_action' => array( - '_' => '获取原文后的操作', - 'append' => '添加在现有内容后部', - 'prepend' => '添加在现有内容前部', - 'replace' => '替换现有内容', - ), - 'content_retrieval' => 'Content retrieval', // TODO - 'css_cookie' => '获取原文时的 Cookies', - 'css_cookie_help' => '例:<kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', - 'css_help' => '用于获取全文(注意,这将耗费更多时间!)', - 'css_path' => '原文的 CSS 选择器', - 'css_path_filter' => array( - '_' => '需移除元素的 CSS 选择器', - 'help' => '可设置多个 CSS 选择器,例如:<kbd>footer, aside, p[data-sanitized-class~="menu"]</kbd>', - ), - 'description' => '描述', - 'empty' => '此源为空。请确认它是否正常更新。', - 'error' => '此源遇到一些问题。请在确认是否能正常访问后重试。', // DIRTY - 'export-as-opml' => array( - 'download' => '下载', - 'help' => 'XML 文件 (data subset. <a href="https://freshrss.github.io/FreshRSS/en/developers/OPML.html" target="_blank">See documentation</a>)', // DIRTY - 'label' => '导出为 OPML', - ), - 'ext_favicon' => 'Set automatically', // TODO - 'favicon_changed_by_ext' => 'The icon has been set by the <b>%s</b> extension.', // TODO - 'filteractions' => array( - '_' => '过滤动作', - 'help' => '每行写一条过滤规则,过滤规则可见 <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">文档</a>。', - ), - 'http_headers' => 'HTTP Headers', // TODO - 'http_headers_help' => 'Headers are separated by a newline, and the name and value of a header are separated by a colon (e.g: <kbd><code>Accept: application/atom+xml<br />Authorization: Bearer some-token</code></kbd>).', // TODO - 'icon' => 'Icon', // TODO - 'information' => '信息', - 'keep_min' => '至少保存的文章数', - 'kind' => array( - '_' => '订阅源类型', - 'html_json' => array( - '_' => 'HTML + XPath + JSON dot notation (JSON in HTML)', // TODO - 'xpath' => array( - '_' => 'XPath for JSON in HTML', // TODO - 'help' => 'Example: <code>normalize-space(//script[@type="application/json"])</code> (single JSON)<br />or: <code>//script[@type="application/ld+json"]</code> (one JSON object per article)', // TODO - ), - ), - 'html_xpath' => array( - '_' => 'HTML + XPath (Web 抓取)', - 'feed_title' => array( - '_' => '订阅源标题', - 'help' => '如 <code>//title</code> 或是静态字符串如: <code>"My custom feed"</code>', - ), - 'help' => '<dfn><a href="https://www.w3.org/TR/xpath-10/" target="_blank">XPath 1.0</a></dfn> 是为资深用户准备的标准查询语言,FreshRSS 用以实现 Web 抓取.', - 'item' => array( - '_' => '以寻找 <strong>文章</strong><br /><small>(很重要)</small>', - 'help' => '例如 <code>//div[@class="news-item"]</code>', - ), - 'item_author' => array( - '_' => '文章作者', - 'help' => '可以是静态字符串,例如 <code>"Anonymous"</code>', - ), - 'item_categories' => '文章标签', - 'item_content' => array( - '_' => '文章内容', - 'help' => '例如使用 <code>.</code> 将整个对象作为文章内容', - ), - 'item_thumbnail' => array( - '_' => '文章缩略图', - 'help' => '例如 <code>descendant::img/@src</code>', - ), - 'item_timeFormat' => array( - '_' => '自定义日期/时间格式', - 'help' => '可选项, 格式参见 <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> 例如 <code>d-m-Y H:i:s</code>', - ), - 'item_timestamp' => array( - '_' => '文章日期:', - 'help' => '结果将被 <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a> 解析', - ), - 'item_title' => array( - '_' => '文章标题', - 'help' => '注意使用 <a href="https://developer.mozilla.org/docs/Web/XPath/Axes" target="_blank">XPath 轴</a> <code>descendant::</code>,例如 <code>descendant::h2</code>', - ), - 'item_uid' => array( - '_' => '文章唯一 ID', - 'help' => '可选,例如: <code>descendant::div/@data-uri</code>', - ), - 'item_uri' => array( - '_' => '文章链接 (URL)', - 'help' => '例如 <code>descendant::a/@href</code>', - ), - 'relative' => 'XPath(文章):', - 'xpath' => 'XPath 定位:', - ), - 'json_dotnotation' => array( - '_' => 'JSON (点表达式)', - 'feed_title' => array( - '_' => '订阅源标题', - 'help' => '例如: <code>meta.title</code> 或一个静态的字符串: <code>"My custom feed"</code>', - ), - 'help' => 'JSON 点表达式(JSON 路径)在对象之间使用点,在数组中使用中括号 (例如 <code>data.items[0].title</code>)', - 'item' => array( - '_' => '寻找新的 <strong>文章</strong><br /><small>(最重要的参数)</small>', - 'help' => '包含文章数组的 JSON 路径, 例如 <code>$</code> or <code>newsItems</code>', // DIRTY - ), - 'item_author' => '文章作者', - 'item_categories' => '文章标签', - 'item_content' => array( - '_' => '文章内容', - 'help' => '用于找到文章内容的键, 例如 <code>content</code>', - ), - 'item_thumbnail' => array( - '_' => '文章缩略图', - 'help' => '例如: <code>image</code>', - ), - 'item_timeFormat' => array( - '_' => '自定义时间格式', - 'help' => '可选项. 被 <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> 支持的日期格式。例如 <code>d-m-Y H:i:s</code>', - ), - 'item_timestamp' => array( - '_' => '文章时间', - 'help' => '结果会被 <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a> 解析', - ), - 'item_title' => '文章标题', - 'item_uid' => '文章唯一ID', - 'item_uri' => array( - '_' => '文章链接 (URL)', - 'help' => '例如: <code>permalink</code>', - ), - 'json' => 'JSON 路径:', - 'relative' => 'JSON 路径(相对于文章):', - ), - 'jsonfeed' => 'JSON 订阅源', - 'rss' => 'RSS / Atom (默认)', - 'xml_xpath' => 'XML + XPath', // IGNORE - ), - 'maintenance' => array( - 'clear_cache' => '清理缓存', - 'clear_cache_help' => '清除该feed的缓存', - 'reload_articles' => '重载文章', - 'reload_articles_help' => '重载 n 篇文章并抓取内容(若设置了 CSS 选择器)', - 'title' => '维护', - ), - 'max_http_redir' => '最大 HTTP 重定向', - 'max_http_redir_help' => '设置为 0 或留空以禁用,-1 表示无限重定向', - 'method' => array( - '_' => 'HTTP 方式', - ), - 'method_help' => '如果荷载非空且是合法的 JSON,HTTP 请求标头将被自动设为 <code>application/json</code>,否则使用 <code>application/x-www-form-urlencoded</code>', - 'method_postparams' => 'POST 荷载', - 'moved_category_deleted' => '删除分类时,其中的订阅源会自动归类到 <em>%s</em>', - 'mute' => array( - '_' => '暂停', - 'state_is_muted' => 'This feed is muted', // TODO - ), - 'no_selected' => '未选择订阅源', - 'number_entries' => '%d 篇文章', - 'open_feed' => 'Open feed %s', // TODO - 'path_entries_conditions' => 'Conditions for content retrieval', // TODO - 'priority' => array( - '_' => '可见性', - 'category' => '在分类中显示', - 'feed' => 'Show in its feed', // TODO - 'hidden' => '不显示', - 'important' => '在“重要的订阅”中显示', - 'main_stream' => '在首页中显示', - ), - 'proxy' => '获取订阅源时的代理', - 'proxy_help' => '选择协议(例:SOCKS5)和代理地址(例:<kbd>127.0.0.1:1080</kbd> 或者 <kbd>username:password@127.0.0.1:1080</kbd>)', - 'reset_favicon' => 'Reset to default', // TODO - 'selector_preview' => array( - 'show_raw' => '显示源码', - 'show_rendered' => '显示内容', - ), - 'show' => array( - 'all' => '显示所有订阅源', - 'error' => '仅显示有错误的订阅源', - ), - 'showing' => array( - 'error' => '正在显示有错误的订阅源', - ), - 'ssl_verify' => '验证 SSL 证书安全', - 'stats' => '统计', - 'think_to_add' => '你可以添加一些订阅源。', - 'timeout' => '超时时间(秒)', - 'title' => '标题', - 'title_add' => '添加订阅源', - 'ttl' => '最小自动更新间隔', - 'unicityCriteria' => array( - '_' => 'Article unicity criteria', // TODO - 'forced' => '<span title="Block the unicity criteria, even when the feed has duplicate articles">forced</span>', // TODO - 'help' => 'Relevant for invalid feeds.<br />⚠️ Changing the policy will create duplicates.', // TODO - 'id' => 'Standard ID (default)', // TODO - 'link' => 'Link', // TODO - 'sha1:content' => 'Content', // TODO - 'sha1:content_published' => 'Content + Date', // TODO - 'sha1:link_published' => 'Link + Date', // TODO - 'sha1:link_published_title' => 'Link + Date + Title', // TODO - 'sha1:link_published_title_content' => 'Link + Date + Title + Content', // TODO - 'sha1:published' => 'Date', // TODO - 'sha1:title' => 'Title', // TODO - 'sha1:title_published' => 'Title + Date', // TODO - 'sha1:title_published_content' => 'Title + Date + Content', // TODO - ), - 'url' => '源地址', - 'useragent' => '设置用于获取此源的 User Agent', - 'useragent_help' => '例:<kbd>Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0)</kbd>', - 'validator' => '检查订阅源有效性', - 'website' => '网站地址', - 'websub' => 'WebSub 即时通知', - ), - 'import_export' => array( - 'export' => array( - '_' => '导出', - 'sqlite' => 'Download user database as SQLite', // TODO - ), - 'export_labelled' => '导出有标签的文章', - 'export_opml' => '导出订阅源列表(OPML)', - 'export_starred' => '导出你的收藏', - 'feed_list' => '%s 文章列表', - 'file_to_import' => '需要导入的文件 <br />(OPML、JSON 或 ZIP)', - 'file_to_import_no_zip' => '需要导入的文件 <br />(OPML 或 JSON)', - 'import' => '导入', - 'starred_list' => '收藏文章列表', - 'title' => '导入/导出', - ), - 'menu' => array( - 'add' => '添加订阅源或分类', - 'import_export' => '导入/导出', - 'label_management' => '标签管理', - 'stats' => array( - 'idle' => '长期无更新订阅源', - 'main' => '主要统计', - 'repartition' => '文章分布', - ), - 'subscription_management' => '订阅管理', - 'subscription_tools' => '订阅工具', - ), - 'tag' => array( - 'auto_label' => '给新文章打标签', - 'name' => '名称', - 'new_name' => '新名称', - 'old_name' => '旧名称', - ), - 'title' => array( - '_' => '订阅管理', - 'add' => '添加订阅源或分类', - 'add_category' => '添加分类', - 'add_dynamic_opml' => '添加订阅源动态列表', - 'add_feed' => '添加订阅源', - 'add_label' => '打标签', - 'add_opml_category' => 'OPML category name', // TODO - 'delete_label' => '删除标签', - 'feed_management' => '订阅源管理', - 'subscription_tools' => '订阅工具', - ), -); diff --git a/app/i18n/zh-cn/user.php b/app/i18n/zh-cn/user.php deleted file mode 100644 index 1684623d9..000000000 --- a/app/i18n/zh-cn/user.php +++ /dev/null @@ -1,54 +0,0 @@ -<?php - -/****************************************************************************** - * Each entry of that file can be associated with a comment to indicate its * - * state. When there is no comment, it means the entry is fully translated. * - * The recognized comments are (comment matching is case-insensitive): * - * + TODO: the entry has never been translated. * - * + DIRTY: the entry has been translated but needs to be updated. * - * + IGNORE: the entry does not need to be translated. * - * When a comment is not recognized, it is discarded. * - ******************************************************************************/ - -return array( - 'email' => array( - 'feedback' => array( - 'invalid' => '邮箱地址无效', - 'required' => '必须填写邮箱地址', - ), - 'validation' => array( - 'change_email' => '你可以在 <a href="%s">用户管理</a> 中变更你的邮箱地址', - 'email_sent_to' => '我们已通过 <strong>%s</strong> 发送验证邮件给你,请按其中指示来验证邮箱地址。', - 'feedback' => array( - 'email_failed' => '由于服务器配置错误,我们无法向你发送邮件。', - 'email_sent' => '邮件已发送到你的邮箱中', - 'error' => '邮箱地址无法通过验证', - 'ok' => '邮箱地址已成功通过验证', - 'unnecessary' => '该邮箱地址已被验证', - 'wrong_token' => '由于令牌错误,邮箱地址无法通过验证。', - ), - 'need_to' => '你需要先验证邮箱地址才能使用 %s', - 'resend_email' => '重发邮件', - 'title' => '验证邮箱地址', - ), - ), - 'mailer' => array( - 'email_need_validation' => array( - 'body' => '%s,欢迎', - 'title' => '你需要验证你的帐户', - 'welcome' => '你已注册 %s 现在只需点击下方链接通过邮箱验证即可完成注册:', - ), - ), - 'password' => array( - 'invalid' => '无效密码', - ), - 'tos' => array( - 'feedback' => array( - 'invalid' => '你必须接受服务条款才能注册', - ), - ), - 'username' => array( - 'invalid' => '无效用户名', - 'taken' => '已存在此用户名', - ), -); |
