您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
将Civitai网站翻译为简体中文
// ==UserScript== // @name Civitai中文翻译插件 // @namespace https://github.com/ling552/ // @version 0.1.1 // @description 将Civitai网站翻译为简体中文 // @author Ling // @match https://civitai.com/* // @grant none // @license MIT // @run-at document-start // ==/UserScript== (function() { 'use strict'; // 翻译词典 const translations = { // 导航栏 'home': '首页', 'models': '模型', 'images': '图片', 'videos': '视频', 'posts': '帖子', 'articles': '文章', 'bounties': '悬赏', 'challenges': '挑战', 'events': '活动', 'updates': '更新', 'shop': '商店', 'More': '更多', 'Create': '创建', 'Sign In': '登录', 'Pro': '专业版', //更多 'Image': '图片', 'Video': '视频', 'REMIX':'二次创作', 'Modifiers': '修改器', 'period': '周期', 'blur': '模糊', 'Blur': '模糊', 'mature':'成人', 'Select the levels of content you want to see': '选择要查看的内容级别', 'Browsing': '浏览', 'With X or XXX enabled, some content may be hidden.': '启用x或xxx时,可能会隐藏某些内容。', 'Learn': '学习', 'swap': '替换', 'Prompt': '提示词', 'Steps': '步数', 'Seed': '种子', 'Priority': '优先级', 'Aspect Ratio': '比例', 'Square': '方形', 'Sampler': '采样器', 'Fast': '快速', 'Random': '随机', 'Balanced': '平衡', 'High': '高', 'Precise': '精确', 'Workflow': '工作流', 'Claim': '声称', 'View generation queue': '视图生成队列', 'Quantity': '数量', 'Buzzing!': '活跃!', 'Additional Resources': '额外资源', 'No resources selected': '未选择资源', 'Generation Type': '创建类型', 'Reactions': '反应', 'Liked': '喜欢', 'Disliked' :'不喜欢', 'Favorited' :'收藏', 'Remix (with seed)' :'二次创作(带种子)', 'Background Removal' :'去除背景', 'Face fix' :'面部修复', 'Hi-res fix' :'高清修复', 'Upscale' :'放大', 'Variations (img2img)' :'变化(图像到图像)', 'Image To Video' :'图像转视频', 'Open in New Tab' :'在新界面打开', 'Save image to collection' :'保存图片到收藏', 'View Post' :'查看帖子', 'Report image' :'举报图片', 'Hide this image' :'隐藏此图片', 'Hide content from this user' :'隐藏此用户内容', // 模型相关 'Featured Models': '精选模型', 'Explore all models': '浏览所有模型', 'A list of all featured models on the site.': '网站上所有精选模型的列表。', 'Highest Rated': '最高评分', 'Early Access': '抢先体验', 'Filters': '筛选器', 'Checkpoint': '检查点', 'LoRA': 'LoRA', 'base model': '基础模型', 'character': '角色', 'style': '风格', 'concept': '概念', 'clothing': '服装', 'poses': '姿势', 'background': '背景', 'tool': '工具', 'vehicle': '载具', 'buildings': '建筑', 'objects': '物体', 'assets': '素材', 'animal': '动物', 'action': '动作', // 图片相关 'Featured Images': '精选图片', 'Explore all images': '浏览所有图片', 'All sorts of cool pictures created by our community, from simple shapes to detailed landscapes or human faces. A virtual canvas where you can unleash your creativity or get inspired.': '我们社区创建的各种酷图,从简单的形状到详细的风景或人脸。一个虚拟画布,您可以在这里释放创造力或获得灵感。', 'Get Featured': '获得推荐', // 创作者相关 'Top Creators': '顶级创作者', 'View more': '查看更多', 'Creators (Flux)': '创作者 (Flux)', 'Creators (Pony)': '创作者 (Pony)', 'Creators (SDXL)': '创作者 (SDXL)', 'Creators': '创作者', 'New Creators': '新创作者', 'Guardians': '守护者', 'Writers': '作家', 'Comedians': '喜剧演员', 'Master Generators': '大师生成器', 'New Master Generators': '新大师生成器', 'Base Model Creators': '基础模型创作者', 'Style Creators': '风格创作者', 'Clothing Creators': '服装创作者', 'Character Creators': '角色创作者', 'Architecture Creators': '建筑创作者', 'Background Creators': '背景创作者', 'Poses Creators': '姿势创作者', 'Vehicle Creators': '载具创作者', 'Asset Creators': '素材创作者', 'Tool Creators': '工具创作者', // 文章相关 'Featured Articles': '精选文章', 'Explore all articles': '浏览所有文章', 'Find information, guides and tutorials, analysis on particular topics and much more. From the community, for the community.': '查找信息、指南和教程、特定主题的分析等等。来自社区,服务社区。', // 其他功能 'Buzz Beggars Board': 'Buzz求助板', 'Beg or Give': '求助或给予', 'Ran out of Buzz while playing? Or want to be generous? Jump in.': '游戏时Buzz用完了?或者想要慷慨一些?快来参与吧。', 'View auctions': '查看拍卖', 'On Socials': '社交媒体', 'The latest from us and collaborators in the community. Follow us to stay up to date with the latest updates.': '来自我们和社区合作者的最新消息。关注我们以了解最新更新。', 'All': '全部', // 竞赛相关 'The Boomer Bamboozle Contest': 'Boomer困惑大赛', 'is live! Show us your most absurdly believable AI images and videos to win big! Live now until Sept. 30th!': '正在进行中!向我们展示您最荒诞但令人信服的AI图片和视频来赢得大奖!现在开始,截止到9月30日!', 'Read the rules': '阅读规则', // 会员相关 'Become a Member to turn off ads today.': '今天就成为会员来关闭广告。', 'Do It': '立即行动', // 页脚 'Terms of Service': '服务条款', 'Privacy': '隐私', 'Safety': '安全', 'Newsroom': '新闻室', 'API': 'API', 'Status': '状态', 'Education': '教育', 'Careers': '招聘', 'Support': '支持', 'Users': '用户', 'Collections': '收藏', 'Tools': '工具', // 常用动作词 'Download': '下载', 'Upload': '上传', 'Save': '保存', 'Share': '分享', 'Like': '喜欢', 'Follow': '关注', 'Comment': '评论', 'Reply': '回复', 'Edit': '编辑', 'Delete': '删除', 'Report': '举报', 'Search': '搜索', 'Filter': '筛选', 'Sort': '排序', 'Load more': '加载更多', 'Show more': '显示更多', 'Show less': '显示更少', 'View all': '查看全部', // 时间相关 'ago': '前', 'minute': '分钟', 'minutes': '分钟', 'hour': '小时', 'hours': '小时', 'day': '天', 'days': '天', 'week': '周', 'weeks': '周', 'month': '月', 'months': '月', 'year': '年', 'years': '年', // 数量单位 'k': 'k', 'M': 'M', 'B': 'B', // 模型类型和标签 'NSFW': 'NSFW', 'SFW': 'SFW', 'Anime': '动漫', 'Realistic': '写实', 'Fantasy': '奇幻', 'Sci-Fi': '科幻', 'Portrait': '肖像', 'Landscape': '风景', 'Abstract': '抽象', 'Digital Art': '数字艺术', 'Photography': '摄影', '3D': '3D', '2D': '2D' }; // 扩展翻译 const additionalTranslations = { 'Loading': '加载中', 'Error': '错误', 'Success': '成功', 'Warning': '警告', 'Info': '信息', 'Close': '关闭', 'Cancel': '取消', 'Confirm': '确认', 'Yes': '是', 'No': '否', 'OK': '确定', 'Submit': '提交', 'Reset': '重置', 'Clear': '清除', 'Next': '下一个', 'Previous': '上一个', 'First': '第一个', 'Last': '最后一个', 'Page': '页面', 'of': '共', 'Results': '结果', 'No results found': '未找到结果', 'Try again': '重试', 'Refresh': '刷新', 'Settings': '设置', 'Profile': '个人资料', 'Account': '账户', 'Login': '登录', 'Register': '注册', 'Logout': '退出登录', 'Password': '密码', 'Email': '邮箱', 'Username': '用户名', 'Name': '姓名', 'Description': '描述', 'Title': '标题', 'Content': '内容', 'Category': '分类', 'Tag': '标签', 'Tags': '标签', 'Rating': '评分', 'Reviews': '评价', 'Comments': '评论', 'Replies': '回复', 'Votes': '投票', 'Views': '查看', 'Downloads': '下载', 'Favorites': '收藏', 'Bookmarks': '书签', 'History': '历史', 'Notifications': '通知', 'Messages': '消息', 'Inbox': '收件箱', 'Sent': '已发送', 'Draft': '草稿', 'Trash': '垃圾箱', 'Archive': '存档', 'Trending': '热门', 'Popular': '流行', 'Latest': '最新', 'Recent': '最近', 'Featured': '精选', 'Recommended': '推荐', 'Hot': '热门', 'New': '新', 'Top': '顶部', 'Best': '最佳', 'Quality': '质量', 'Size': '大小', 'Format': '格式', 'Resolution': '分辨率', 'Duration': '时长', 'Date': '日期', 'Time': '时间', 'Author': '作者', 'Creator': '创作者', 'Artist': '艺术家', 'Model': '模型', 'Version': '版本', 'Update': '更新', 'Changelog': '更新日志', 'License': '许可证', 'Copyright': '版权', 'Terms': '条款', 'Conditions': '条件', 'Agreement': '协议', 'Policy': '政策', 'Guidelines': '指南', 'Rules': '规则', 'Help': '帮助', 'FAQ': '常见问题', 'Documentation': '文档', 'Tutorial': '教程', 'Guide': '指南', 'Examples': '示例', 'Demo': '演示', 'Preview': '预览', 'Sample': '样本', 'Template': '模板', 'Theme': '主题', 'Layout': '布局', 'Design': '设计', 'Style': '样式', 'Color': '颜色', 'Font': '字体', 'Size': '大小', 'Width': '宽度', 'Height': '高度', 'Margin': '边距', 'Padding': '内边距', 'Border': '边框', 'Background': '背景', 'Foreground': '前景', 'Opacity': '透明度', 'Visibility': '可见性', 'Display': '显示', 'Position': '位置', 'Alignment': '对齐', 'Justify': '对齐', 'Center': '居中', 'Left': '左', 'Right': '右', 'Top': '顶部', 'Bottom': '底部', 'Middle': '中间', 'Start': '开始', 'End': '结束', 'Full': '完整', 'Half': '一半', 'Quarter': '四分之一', 'Third': '三分之一', 'Auto': '自动', 'Manual': '手动', 'Custom': '自定义', 'Default': '默认', 'None': '无', 'All': '全部', 'Any': '任意', 'Other': '其他', 'More': '更多', 'Less': '更少', 'Show': '显示', 'Hide': '隐藏', 'Open': '打开', 'Close': '关闭', 'Expand': '展开', 'Collapse': '折叠', 'Minimize': '最小化', 'Maximize': '最大化', 'Restore': '恢复', 'Toggle': '切换', 'Switch': '切换', 'Change': '更改', 'Modify': '修改', 'Add': '添加', 'Remove': '移除', 'Insert': '插入', 'Append': '追加', 'Prepend': '前置', 'Replace': '替换', 'Move': '移动', 'Copy': '复制', 'Cut': '剪切', 'Paste': '粘贴', 'Duplicate': '复制', 'Clone': '克隆', 'Import': '导入', 'Export': '导出', 'Backup': '备份', 'Restore': '恢复', 'Sync': '同步', 'Connect': '连接', 'Disconnect': '断开连接', 'Online': '在线', 'Offline': '离线', 'Available': '可用', 'Unavailable': '不可用', 'Active': '活跃', 'Inactive': '非活跃', 'Enabled': '启用', 'Disabled': '禁用', 'On': '开启', 'Off': '关闭', 'True': '真', 'False': '假', 'Valid': '有效', 'Invalid': '无效', 'Required': '必需', 'Optional': '可选', 'Empty': '空', 'Full': '满', 'Complete': '完成', 'Incomplete': '未完成', 'Finished': '已完成', 'Unfinished': '未完成', 'Done': '完成', 'Pending': '待处理', 'Processing': '处理中', 'Failed': '失败', 'Cancelled': '已取消', 'Expired': '已过期', 'Deleted': '已删除', 'Archived': '已存档', 'Published': '已发布', 'Unpublished': '未发布', 'Draft': '草稿', 'Private': '私人', 'Public': '公开', 'Shared': '共享', 'Personal': '个人', 'Professional': '专业', 'Business': '商业', 'Enterprise': '企业', 'Free': '免费', 'Premium': '高级', 'Pro': '专业版', 'Basic': '基础', 'Standard': '标准', 'Advanced': '高级', 'Expert': '专家', 'Beginner': '初学者', 'Intermediate': '中级', 'Level': '等级', 'Rank': '排名', 'Score': '分数', 'Points': '积分', 'Credits': '积分', 'Coins': '金币', 'Tokens': '代币', 'Balance': '余额', 'Wallet': '钱包', 'Payment': '支付', 'Purchase': '购买', 'Buy': '购买', 'Sell': '出售', 'Price': '价格', 'Cost': '成本', 'Value': '价值', 'Amount': '数量', 'Total': '总计', 'Subtotal': '小计', 'Tax': '税', 'Discount': '折扣', 'Coupon': '优惠券', 'Promotion': '促销', 'Offer': '优惠', 'Deal': '交易', 'Sale': '销售', 'Special': '特殊', 'Limited': '限制', 'Exclusive': '独家', 'Bonus': '奖金', 'Reward': '奖励', 'Gift': '礼品', 'Prize': '奖品', 'Winner': '获胜者', 'Contest': '竞赛', 'Competition': '比赛', 'Challenge': '挑战', 'Event': '活动', 'Campaign': '活动', 'Program': '计划', 'Project': '项目', 'Task': '任务', 'Job': '工作', 'Mission': '任务', 'Goal': '目标', 'Objective': '目标', 'Purpose': '目的', 'Reason': '原因', 'Cause': '原因', 'Effect': '影响', 'Result': '结果', 'Outcome': '结果', 'Consequence': '后果', 'Impact': '影响', 'Influence': '影响', 'Benefit': '好处', 'Advantage': '优势', 'Disadvantage': '劣势', 'Pros': '优点', 'Cons': '缺点', 'Positive': '正面', 'Negative': '负面', 'Good': '好', 'Bad': '坏', 'Better': '更好', 'Worse': '更差', 'Best': '最好', 'Worst': '最差', 'Excellent': '优秀', 'Great': '很好', 'Amazing': '惊人', 'Awesome': '棒', 'Fantastic': '太棒了', 'Wonderful': '精彩', 'Perfect': '完美', 'Outstanding': '杰出', 'Remarkable': '卓越', 'Impressive': '令人印象深刻', 'Brilliant': '聪明', 'Creative': '创意', 'Innovative': '创新', 'Original': '原创', 'Unique': '独特', 'Special': '特殊', 'Rare': '稀有', 'Common': '常见', 'Popular': '流行', 'Famous': '著名', 'Known': '知名', 'Unknown': '未知', 'Anonymous': '匿名', 'Guest': '访客', 'Member': '会员', 'User': '用户', 'Admin': '管理员', 'Moderator': '版主', 'Staff': '员工', 'Team': '团队', 'Group': '组', 'Community': '社区', 'Organization': '组织', 'Company': '公司', 'Brand': '品牌', 'Product': '产品', 'Service': '服务', 'Feature': '功能', 'Function': '功能', 'Capability': '能力', 'Ability': '能力', 'Skill': '技能', 'Talent': '天赋', 'Experience': '经验', 'Knowledge': '知识', 'Information': '信息', 'Data': '数据', 'Details': '详情', 'Specification': '规格', 'Requirements': '要求', 'Conditions': '条件', 'Criteria': '标准', 'Standards': '标准', 'Quality': '质量', 'Performance': '性能', 'Speed': '速度', 'Efficiency': '效率', 'Accuracy': '准确性', 'Precision': '精确', 'Reliability': '可靠性', 'Stability': '稳定性', 'Security': '安全', 'Privacy': '隐私', 'Protection': '保护', 'Safety': '安全', 'Risk': '风险', 'Danger': '危险', 'Warning': '警告', 'Alert': '警报', 'Notice': '通知', 'Announcement': '公告', 'News': '新闻', 'Update': '更新', 'Upgrade': '升级', 'Improvement': '改进', 'Enhancement': '增强', 'Optimization': '优化', 'Modification': '修改', 'Adjustment': '调整', 'Configuration': '配置', 'Setup': '设置', 'Installation': '安装', 'Download': '下载', 'Upload': '上传', 'Transfer': '传输', 'Share': '分享', 'Send': '发送', 'Receive': '接收', 'Get': '获取', 'Fetch': '获取', 'Retrieve': '检索', 'Access': '访问', 'Enter': '进入', 'Exit': '退出', 'Leave': '离开', 'Return': '返回', 'Back': '返回', 'Forward': '前进', 'Continue': '继续', 'Proceed': '继续', 'Stop': '停止', 'Pause': '暂停', 'Resume': '恢复', 'Restart': '重启', 'Reload': '重新加载', 'Refresh': '刷新', 'Update': '更新', 'Sync': '同步', 'Save': '保存', 'Load': '加载', 'Import': '导入', 'Export': '导出', 'Print': '打印', 'Preview': '预览', 'View': '查看', 'Show': '显示', 'Display': '显示', 'Present': '展示', 'Demonstrate': '演示', 'Explain': '解释', 'Describe': '描述', 'Define': '定义', 'Clarify': '澄清', 'Specify': '指定', 'Indicate': '指示', 'Point': '指向', 'Select': '选择', 'Choose': '选择', 'Pick': '选择', 'Decide': '决定', 'Determine': '确定', 'Set': '设置', 'Adjust': '调整', 'Modify': '修改', 'Change': '更改', 'Alter': '改变', 'Transform': '转换', 'Convert': '转换', 'Translate': '翻译', 'Interpret': '解释', 'Understand': '理解', 'Comprehend': '理解', 'Realize': '实现', 'Recognize': '识别', 'Identify': '识别', 'Locate': '定位', 'Find': '查找', 'Search': '搜索', 'Look': '查看', 'Seek': '寻找', 'Hunt': '搜寻', 'Explore': '探索', 'Discover': '发现', 'Uncover': '揭露', 'Reveal': '揭示', 'Expose': '暴露', 'Show': '显示', 'Hide': '隐藏', 'Conceal': '隐藏', 'Cover': '覆盖', 'Protect': '保护', 'Secure': '保护', 'Guard': '守护', 'Defend': '防御', 'Shield': '保护', 'Block': '阻挡', 'Prevent': '防止', 'Avoid': '避免', 'Escape': '逃避', 'Flee': '逃离', 'Run': '运行', 'Walk': '走', 'Move': '移动', 'Go': '去', 'Come': '来', 'Arrive': '到达', 'Depart': '离开', 'Travel': '旅行', 'Journey': '旅程', 'Trip': '旅行', 'Visit': '访问', 'Stay': '停留', 'Remain': '保持', 'Keep': '保持', 'Maintain': '维护', 'Preserve': '保存', 'Conserve': '保护', 'Protect': '保护', 'Care': '关心', 'Support': '支持', 'Help': '帮助', 'Assist': '协助', 'Aid': '帮助', 'Guide': '指导', 'Lead': '领导', 'Direct': '指导', 'Manage': '管理', 'Control': '控制', 'Handle': '处理', 'Deal': '处理', 'Treat': '处理', 'Process': '处理', 'Execute': '执行', 'Perform': '执行', 'Accomplish': '完成', 'Achieve': '实现', 'Reach': '达到', 'Attain': '获得', 'Obtain': '获得', 'Acquire': '获得', 'Gain': '获得', 'Earn': '赚取', 'Win': '赢得', 'Lose': '失去', 'Miss': '错过', 'Fail': '失败', 'Succeed': '成功', 'Pass': '通过', 'Complete': '完成', 'Finish': '完成', 'End': '结束', 'Conclude': '结束', 'Close': '关闭', 'Shut': '关闭', 'Open': '打开', 'Start': '开始', 'Begin': '开始', 'Commence': '开始', 'Initiate': '启动', 'Launch': '启动', 'Create': '创建', 'Make': '制作', 'Build': '构建', 'Construct': '建造', 'Develop': '开发', 'Design': '设计', 'Plan': '计划', 'Prepare': '准备', 'Ready': '准备', 'Set': '设置', 'Organize': '组织', 'Arrange': '安排', 'Schedule': '安排', 'Book': '预订', 'Reserve': '预留', 'Order': '订购', 'Request': '请求', 'Ask': '询问', 'Question': '问题', 'Answer': '答案', 'Reply': '回复', 'Respond': '回应', 'React': '反应', 'Interact': '交互', 'Communicate': '沟通', 'Talk': '谈话', 'Speak': '说话', 'Say': '说', 'Tell': '告诉', 'Inform': '通知', 'Notify': '通知', 'Alert': '提醒', 'Remind': '提醒', 'Warn': '警告', 'Advise': '建议', 'Suggest': '建议', 'Recommend': '推荐', 'Propose': '提议', 'Offer': '提供', 'Provide': '提供', 'Supply': '提供', 'Deliver': '交付', 'Give': '给予', 'Present': '赠送', 'Grant': '授予', 'Allow': '允许', 'Permit': '允许', 'Enable': '启用', 'Disable': '禁用', 'Activate': '激活', 'Deactivate': '停用', 'Turn on': '开启', 'Turn off': '关闭', 'Switch on': '打开', 'Switch off': '关闭' }; // 站点定制翻译 const siteSpecificTranslations = { // 顶部筛选/排序 'Everyone': '所有人', 'Following': '关注的人', 'Followed': '关注的人', 'Most Reactions': '最多互动', 'Most Reaction': '最多互动', 'Most Comments': '最多评论', 'Most Collected': '最多收藏', 'Most Buzz': '最多 Buzz', // 创建菜单 'Generate': '生图', 'Post Images': '发布图片', 'Post Videos': '发布视频', 'Upload a Model': '上传模型', 'Train a LoRA': '训练 LoRA', 'Write an Article': '写文章', 'Create a Bounty': '创建悬赏', // 侧边菜单 'Your Profile': '你的个人资料', 'Training': '训练', 'My': '我的', 'My Collections': '我的收藏', 'Liked Models': '喜欢的模型', 'Bookmarked Articles': '收藏的文章', 'My Bounties': '我的悬赏', 'Buzz Dashboard': 'Buzz仪表板', 'My Vault': '我的保险库', 'Leaderboard': '排行榜', 'Auctions': '拍卖', 'Knights': '骑士', 'Knights Update': '骑士更新', 'Download Link App': '下载 Link 应用', 'Link App': 'Link 应用', 'Creators You Follow': '你关注的创作者', 'Download History': '下载历史', 'Getting Started': '新手入门', // 导航标签页 'Pro': '专业版', 'Buzz': 'Buzz', 'Sign In': '登录', 'Create': '创建', 'Models': '模型', 'Images': '图片', 'Videos': '视频', 'Articles': '文章', 'Bounties': '悬赏', 'Shop': '商店', 'Contests': '竞赛', // 页面元素 'Contests': '竞赛', 'Contest': '竞赛', 'Competition': '比赛', 'Prize': '奖品', 'Reward': '奖励', 'Winner': '获胜者', 'Entry': '参赛作品', 'Entries': '参赛作品', 'Submission': '投稿', 'Submissions': '投稿', 'Deadline': '截止日期', 'Voting': '投票', 'Results': '结果', // 创建下拉菜单 'Post Image': '发布图片', 'Post Video': '发布视频', 'Write Article': '写文章', 'Upload Model': '上传模型', 'Create Bounty': '创建悬赏', 'Train LoRA': '训练 LoRA', // 分类标签(复数形式补充) 'WOMEN': '女性', 'Women': '女性', 'woman': '女性', 'MEN': '男性', 'Men': '男性', 'man': '男性', 'CLOTHING': '服装', 'Clothing': '服装', 'clothing': '服装', 'ANIME': '动漫', 'Anime': '动漫', 'anime': '动漫', 'OUTDOORS': '户外', 'Outdoors': '户外', 'outdoors': '户外', 'COMICS': '漫画', 'Comics': '漫画', 'comics': '漫画', 'PHOTOGRAPHY': '摄影', 'Photography': '摄影', 'photography': '摄影', 'COSTUME': '服饰', 'Costume': '服饰', 'costume': '服饰', 'SWIMWEAR': '游泳装', 'Swimwear': '游泳装', 'swimwear': '游泳装', 'ARMOR': '盔甲', 'Armor': '盔甲', 'armor': '盔甲', 'TRANSPORTATION': '交通工具', 'Transportation': '交通工具', 'transportation': '交通工具', 'ARCHITECTURE': '建筑', 'Architecture': '建筑', 'architecture': '建筑', 'CITY': '城市', 'City': '城市', 'city': '城市', 'CARTOON': '卡通', 'Cartoon': '卡通', 'cartoon': '卡通', 'CAR': '汽车', 'Car': '汽车', 'car': '汽车', 'FOOD': '食物', 'Food': '食物', 'food': '食物', 'ASTRONOMY': '天文', 'Astronomy': '天文', 'astronomy': '天文', 'MODERN ART': '现代艺术', 'Modern Art': '现代艺术', 'modern art': '现代艺术', 'CAT': '猫', 'Cat': '猫', 'cat': '猫', 'FANTASY': '奇幻', 'Fantasy': '奇幻', 'fantasy': '奇幻', 'NATURE': '自然', 'Nature': '自然', 'nature': '自然', 'PORTRAIT': '肖像', 'Portrait': '肖像', 'portrait': '肖像', 'LANDSCAPE': '风景', 'Landscape': '风景', 'landscape': '风景', // 筛选器相关 'Filters': '筛选器', 'Filter': '筛选', 'Filter by': '筛选依据', 'Sort by': '排序依据', 'Sort': '排序', 'Order': '排序', 'Newest': '最新', 'Oldest': '最早', 'Latest': '最新', 'Recent': '最近', 'Popular': '热门', 'Trending': '趋势', 'Hot': '热门', 'Top': '热门', 'Best': '最佳', 'Highest Rated': '最高评分', 'Most Downloaded': '最多下载', 'Most Liked': '最多点赞', 'Most Commented': '最多评论', 'Most Viewed': '最多查看', // 按钮和操作 'Download': '下载', 'Like': '点赞', 'Unlike': '取消点赞', 'Bookmark': '收藏', 'Unbookmark': '取消收藏', 'Share': '分享', 'Comment': '评论', 'Reply': '回复', 'Report': '举报', 'Flag': '标记', 'Follow': '关注', 'Unfollow': '取消关注', 'Subscribe': '订阅', 'Unsubscribe': '取消订阅', 'Block': '屏蔽', 'Unblock': '取消屏蔽', 'Edit': '编辑', 'Delete': '删除', 'Remove': '移除', 'Add': '添加', 'Upload': '上传', 'Submit': '提交', 'Publish': '发布', 'Draft': '草稿', 'Save': '保存', 'Cancel': '取消', 'Confirm': '确认', 'Apply': '应用', 'Reset': '重置', 'Clear': '清除', // 状态和标签 'Published': '已发布', 'Unpublished': '未发布', 'Draft': '草稿', 'Pending': '待审核', 'Approved': '已批准', 'Rejected': '已拒绝', 'Featured': '精选', 'Sponsored': '赞助', 'Premium': '高级', 'Free': '免费', 'Paid': '付费', 'NSFW': 'NSFW', 'SFW': 'SFW', 'New': '新', 'Updated': '已更新', 'Hot': '热门', 'Trending': '趋势', 'Rising': '上升', // 数量和统计 'views': '查看次数', 'likes': '点赞数', 'downloads': '下载次数', 'comments': '评论数', 'followers': '粉丝数', 'following': '关注数', 'bounties': '悬赏数', 'collections': '收藏数', // 时间相关 'ago': '前', 'minute': '分钟', 'minutes': '分钟', 'hour': '小时', 'hours': '小时', 'day': '天', 'days': '天', 'week': '周', 'weeks': '周', 'month': '月', 'months': '月', 'year': '年', 'years': '年', 'just now': '刚刚', 'recently': '最近', 'today': '今天', 'yesterday': '昨天', 'tomorrow': '明天', // 页面标题和描述 'Home': '首页', 'Browse': '浏览', 'Explore': '探索', 'Discover': '发现', 'Search': '搜索', 'Profile': '个人资料', 'Settings': '设置', 'Dashboard': '仪表板', 'Notifications': '通知', 'Messages': '消息', 'Help': '帮助', 'Support': '支持', 'About': '关于', 'Contact': '联系', 'Terms': '条款', 'Privacy': '隐私', 'Guidelines': '指南', 'Rules': '规则', 'FAQ': '常见问题' }; // 合并所有翻译 const allTranslations = { ...translations, ...siteSpecificTranslations, ...additionalTranslations }; const lowerCaseTranslations = {}; for (const [k, v] of Object.entries(allTranslations)) { lowerCaseTranslations[k.toLowerCase()] = v; } // 追加常见缺失词条(筛选/短语变体/所有格) Object.assign(siteSpecificTranslations, { 'Filters': '筛选器', 'Filter by': '筛选依据', 'Sort by': '排序依据', 'Newest': '最新', 'Oldest': '最早', // 创建菜单变体 'Upload a model': '上传模型', 'Upload model': '上传模型', 'Upload Model': '上传模型', 'Train LoRA': '训练 LoRA', 'Create Bounty': '创建悬赏' }); Object.assign(additionalTranslations, { 'Your': '你的' }); // 同步更新大小写映射 for (const [k, v] of Object.entries(siteSpecificTranslations)) lowerCaseTranslations[k.toLowerCase()] = v; for (const [k, v] of Object.entries(additionalTranslations)) lowerCaseTranslations[k.toLowerCase()] = v; const translationCache = new Map(); function translateText(text) { if (!text || typeof text !== 'string') return text; if (translationCache.has(text)) { return translationCache.get(text); } let translatedText = text; if (allTranslations[text]) { translatedText = allTranslations[text]; } else if (lowerCaseTranslations[text.toLowerCase()]) { translatedText = lowerCaseTranslations[text.toLowerCase()]; } else { const words = text.split(/(\s+)/); let hasTranslation = false; for (let i = 0; i < words.length; i++) { const raw = words[i]; const word = raw.trim(); if (!word) continue; const lc = word.toLowerCase(); const repl = allTranslations[word] || lowerCaseTranslations[lc]; if (repl) { words[i] = raw.replace(word, repl); hasTranslation = true; } } if (hasTranslation) { translatedText = words.join(''); } } translationCache.set(text, translatedText); return translatedText; } function tryTranslateCompoundPhraseForElement(node) { if (!node || node.nodeType !== Node.ELEMENT_NODE) return false; if (node.hasAttribute('data-civi-cn-compound')) return false; // 已处理 const combinedRaw = (node.textContent || '').trim(); if (!combinedRaw) return false; if (combinedRaw.length > 80) return false; if (!/\s/.test(combinedRaw)) return false; const combinedNormalized = combinedRaw.replace(/\s+/g, ' ').trim(); const lookup = (s) => (allTranslations[s] || lowerCaseTranslations[s.toLowerCase()]); let repl = lookup(combinedRaw); if (!repl) repl = lookup(combinedNormalized); if (!repl || repl === combinedRaw) return false; const textNodes = []; const walker = document.createTreeWalker(node, NodeFilter.SHOW_TEXT, null); let current; while ((current = walker.nextNode())) { if ((current.textContent || '').trim() === '') continue; textNodes.push(current); } if (textNodes.length === 0) return false; textNodes[0].textContent = repl; for (let i = 1; i < textNodes.length; i++) { textNodes[i].textContent = ''; } node.setAttribute('data-civi-cn-compound', '1'); return true; } function translateNode(node) { if (node.nodeType === Node.TEXT_NODE) { const originalText = node.textContent.trim(); if (originalText) { const translatedText = translateText(originalText); if (translatedText !== originalText) { node.textContent = translatedText; } } } else if (node.nodeType === Node.ELEMENT_NODE) { const tagName = node.tagName.toLowerCase(); if (['script', 'style', 'noscript', 'code', 'pre'].includes(tagName)) { return; } tryTranslateCompoundPhraseForElement(node); const attributesToTranslate = ['title', 'alt', 'placeholder', 'aria-label']; attributesToTranslate.forEach(attr => { if (node.hasAttribute(attr)) { const originalValue = node.getAttribute(attr); const translatedValue = translateText(originalValue); if (translatedValue !== originalValue) { node.setAttribute(attr, translatedValue); } } }); const childNodes = Array.from(node.childNodes); childNodes.forEach(child => { translateNode(child); }); } } function translatePage() { try { translateNode(document.body); } catch (error) { console.warn('Civitai翻译脚本遇到错误:', error); } } function debounce(func, wait) { let timeout; return function executedFunction(...args) { const later = () => { clearTimeout(timeout); func(...args); }; clearTimeout(timeout); timeout = setTimeout(later, wait); }; } const debouncedTranslate = debounce(translatePage, 500); const observer = new MutationObserver((mutations) => { let shouldTranslate = false; mutations.forEach((mutation) => { if (mutation.type === 'childList') { mutation.addedNodes.forEach((node) => { if (node.nodeType === Node.ELEMENT_NODE || node.nodeType === Node.TEXT_NODE) { shouldTranslate = true; } }); } else if (mutation.type === 'characterData') { shouldTranslate = true; } }); if (shouldTranslate) { debouncedTranslate(); } }); function initializeTranslation() { translatePage(); observer.observe(document.body, { childList: true, subtree: true, characterData: true, attributes: false }); let currentUrl = window.location.href; const checkForUrlChange = () => { if (window.location.href !== currentUrl) { currentUrl = window.location.href; setTimeout(() => { translatePage(); }, 1000); } }; window.addEventListener('popstate', checkForUrlChange); setInterval(checkForUrlChange, 2000); const originalFetch = window.fetch; window.fetch = function(...args) { return originalFetch.apply(this, args).then((response) => { setTimeout(debouncedTranslate, 1000); return response; }); }; console.log('Civitai中文翻译脚本已启动'); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initializeTranslation); } else { initializeTranslation(); } const style = document.createElement('style'); style.textContent = ` /* 防止翻译过程中的闪烁 */ .translating { opacity: 0.8; } `; document.head.appendChild(style); window.addEventListener('beforeunload', () => { observer.disconnect(); }); if (window.location.href.includes('debug=true')) { window.civitaiTranslate = { translatePage, translateText, clearCache: () => translationCache.clear(), cacheSize: () => translationCache.size }; console.log('调试模式:可使用 window.civitaiTranslate 对象进行手动控制'); } })();