GreasyFork 中文

实验性脚本, 尚有内容未翻译完毕。

Stan na 12-06-2014. Zobacz najnowsza wersja.

// ==UserScript==
// @name        GreasyFork 中文
// @namespace   http://jixun.org/
// @description 实验性脚本, 尚有内容未翻译完毕。
// @include     https://greatest.deepsurf.us/*
// @exclude     https://greatest.deepsurf.us/scripts/*/code
// @version     1.0
// @run-at      document-start
// @grant       none
// ==/UserScript==

var lang = {
	// 右上角导航
	'Scripts': '脚本',
	'Forum': '论坛',
	'Help': '帮助',

	// 导航标签
	'Info': '脚本信息',
	'Code': '脚本代码',
	'History': '更新历史',
	'Delete': '删除',
	'Undelete': '取消删除',

	// 脚本信息页
	'Install this script': '安装该脚本',
	'Author': '脚本作者',
	'Daily installs': '今日安装',
	'Total installs': '安装总数',
	'Created': '创建日期',
	'Updated': '更新日期',
	'License': '脚本授权',
	'N/A': '未知',
	'Applies to': '应用于',
	'All sites': '所有站点',

	// 反馈页面
	'No discussions posted yet.': '该脚本尚无讨论贴,',
	'Be the first to discuss this script.': '点我拿下第一贴!',

	// 脚本检索页
	'Sort by:': '排序方式: ',
	'Created date': '创建日期',
	'Updated date': '更新日期',
	'Showing:': '显示: ',
	'All': '所有脚本',
	'(All sites)': '(全部网站)',
	'More...': '更多网站…',
	'← Previous': '← 上一页',
	'Next →': '下一页 →',
	'Post a new script': '提交新脚本',
	'Search': '搜索',

	// 个人账户页
	'Discussions on your scripts': '您的脚本讨论区 ',
	'Control panel': '控制台',
	'Post a script': '提交脚本',
	'Import scripts': '批量导入脚本',
	'Set up a GitHub webhook': '设定 GitHub WebHook (自动更新)',
	'Edit account': '更改账户信息',
	'Sign out': '登出系统',
	'More discussions': '更多讨论贴',
	', last comment by': ',最后评论于 ',
	'by': ' 由 ',

	// 个人账户信息更新页
	'Name': '用户名',
	'Email': '邮件',
	'Profile': '个人信息',
	'Preview': '预览',
	'Password': '密码',
	'(Leave blank if you don\'t want to change it)': '(如果不想更改请留空)',
	'Password confirmation': '密码确认',
	'Current password': '当前密码',
	'(We need your current password to confirm your changes)': '(请输入当前密码确认信息更新)',
	'Update': '更新',
	'Back': '返回',

	// 论坛
	'Categories': '论坛板块',
	'All Categories': '所有板块',
	'Greasy Fork Meta': '站点相关',
	'Script Development': '脚本开发',
	'Script Requests': '脚本请求',
	'Script Discussions': '脚本讨论',
	'Recent Discussions': '近期讨论',
	'Activity': '论坛活动',
	'My Discussions': '我的帖子',
	'My Drafts': '我的草稿',
	'Announcement': '公告',
	'new': ' 个新评论',
	'comments': ' 个回应',
	'comment': ' 个回应',
	'Most recent by': '最后回复于 ',
	'Edit': '编辑',
	'views': ' 次围观',
	'Discussions': '近期讨论',
	'Mark All Viewed': '全部标为已读',
	'About:': '关于:',
	'in': ' 于 ',
	'Leave a Comment': '快来吐槽',
	'Attach a file': '上传附件',
	'Home': '首页',
	'Preview': '预览评论',
	'Save Draft': '储存草稿',
	'Post Comment': '提交评论',
	'Quote': '引用',
	'New Discussion': '发新帖'
}, langRegex = [
	[/Feedback \((\d+)\)/, '反馈 ($1)'],
	[/(\d+) hours? ago/, '$1 小时前'],
	[/(\d+) days? ago/, '$1 天前']
];

// 寻找翻译
var findTranslation = function (origionalContent) {
	// Not string or undefined etc.
	if (!origionalContent) return null;

	var tmpNodeContent    = origionalContent.trim(),
		translatedContent = lang[tmpNodeContent];

	// Empty string.
	if (!tmpNodeContent) return origionalContent;

	// Language string match!
	if (translatedContent) return translatedContent;

	// Check regex match.
	for (var i = langRegex.length; i--; )
		if (langRegex[i][0].test (tmpNodeContent))
			return tmpNodeContent.replace (langRegex[i][0], langRegex[i][1]);

	// Nothing found :/
	return null;
};

addEventListener ('DOMContentLoaded', function () {
	// http://stackoverflow.com/a/2579869/3416493
	var walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null, false),
		node, translatedContent;

	// Loop through text nodes.
	while (node = walker.nextNode())
		if (translatedContent = findTranslation (node.nodeValue))
			node.nodeValue = translatedContent;

	// Loop through inputs.
	var inputs = document.getElementsByTagName ('input');
	for (var i = inputs.length; i--; ) {
		// 搜索框
		if (translatedContent = findTranslation(inputs[i].getAttribute ('placeholder') || ''))
			inputs[i].setAttribute ('placeholder', translatedContent);

		// 提交按钮
		if (translatedContent = findTranslation(inputs[i].value || ''))
			inputs[i].value = translatedContent;
	}
}, false);