Greasy Fork is available in English.

Dotabuff Match Link

Match ID on match pages will launch Dota2 to watch that match.

// ==UserScript==
// @name          Dotabuff Match Link
// @namespace     http://greasyfork.org/users/2240-doodles
// @author        Doodles
// @version       2
// @description   Match ID on match pages will launch Dota2 to watch that match.
// @include       *://*dotabuff.com/matches/*
// @include       *://*dotabuff.com/players/*
// @grant         none
// @updateVersion 2
// ==/UserScript==
if (document.URL.split('/matches/').length == 2) {
	var titleElement = document.getElementsByClassName('header-content-title')[0].getElementsByTagName('h1')[0];
	var matchID = document.URL.split('/matches/')[1].split('/')[0].split('?')[0];
	titleElement.innerHTML = 'Match <a title="Watch Match in Dota 2 Client" style="color:#92bb35;text-shadow: 1px 1px 1px #000000;" href="dota2://matchid=' + matchID + '">' + matchID + '</a><small>Overview</small>';
} else if (document.URL.split('/players/').length == 2) {
	var titleElement = document.getElementsByClassName('header-content-title')[0].getElementsByTagName('h1')[0];
	var playerId = document.URL.split('/players/')[1].split('/')[0].split('?')[0];
	playerId = '7656119' + (parseInt(playerId) +  7960265728).toString();
	var titleText = titleElement.innerHTML.split('<small>')[0];
	titleElement.innerHTML = '<a title="Steam Profile" style="color:#92bb35;text-shadow: 1px 1px 1px #000000;" href="http://steamcommunity.com/profiles/' + playerId + '">' + titleText + '</a><small>Overview</small>';
}