网上的汉化文件下载之后汉化是没问题了但是看log会有点问题,所以参考对照汉化了下,使用源文件,仅对文本进行汉化。
C:\Python\Lib\site-packages\robot\htmldata\rebot
report.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="-1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="Generator" content="">
<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAqAAAAAAAAAAAAAAAAAAAALIAAAD/AAAA4AAAANwAAADcAAAA3AAAANwAAADcAAAA3AAAANwAAADcAAAA4AAAAP8AAACxAAAAAAAAAKYAAAD/AAAAuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/AAAA/wAAAKkAAAD6AAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8AAAD/AAAA+gAAAMMAAAAAAAAAAgAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAADAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAIsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAAAAAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAFAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAADwAAAB8AAAAAAAAAGAAAABcAAAAAAAAAH8AAABKAAAAAAAAAAAAAAAAAAAA2gAAAP8AAAD6AAAAwwAAAAAAAADCAAAA/wAAACkAAADqAAAA4QAAAAAAAAD7AAAA/wAAALAAAAAGAAAAAAAAANoAAAD/AAAA+gAAAMMAAAAAAAAAIwAAAP4AAAD/AAAA/wAAAGAAAAAAAAAAAAAAAMkAAAD/AAAAigAAAAAAAADaAAAA/wAAAPoAAADDAAAAAAAAAAAAAAAIAAAAcAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAA2gAAAP8AAAD7AAAAywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN4AAAD/AAAAqwAAAP8AAACvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALIAAAD/AAAAsgAAAAAAAAC5AAAA/wAAAMoAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMkAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAKwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAArQAAAAAAAAAAwAMAAIABAAAf+AAAP/wAAD/8AAAgBAAAP/wAAD/8AAA//AAAJIwAADHEAAA//AAAP/wAAB/4AACAAQAAwAMAAA==">
<link rel="stylesheet" type="text/css" href="common.css" media="all">
<link rel="stylesheet" type="text/css" href="report.css" media="all">
<link rel="stylesheet" type="text/css" href="print.css" media="print">
<link rel="stylesheet" type="text/css" href="../common/js_disabled.css" media="all">
<link rel="stylesheet" type="text/css" href="../common/doc_formatting.css" media="all">
<script type="text/javascript" src="../lib/jquery.min.js"></script>
<script type="text/javascript" src="../lib/jquery.tmpl.min.js"></script>
<script type="text/javascript" src="../lib/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../lib/jsxcompressor.min.js"></script>
<script type="text/javascript" src="fileloading.js"></script>
<script type="text/javascript" src="model.js"></script>
<script type="text/javascript" src="util.js"></script>
<script type="text/javascript" src="testdata.js"></script>
<script type="text/javascript" src="view.js"></script>
<script type="text/javascript" src="../common/storage.js"></script>
<!-- JS MODEL --><script type="text/javascript" src="../testdata/data.js"></script>
<title></title>
</head>
<body>
<div id="javascript-disabled">
<h1>打开 Robot Framework 报告失败</h1>
<ul>
<li>请验证在您的浏览器设置中 <b>已启用JavaScript.</b></li>
<li>确定您使用的是<b>比较新的浏览器</b>. 推荐使用Firefox 3.5, IE 8, 或者与他版本相当的浏览器以及比它们版本靠后的浏览器ß.</li>
<li>检查在您的浏览器上面是否 <b>JavaScript错误日志</b>的消息. 如果您怀疑这是一个报告的bug请报告技术团队.</li>
</ul>
</div>
<script type="text/javascript">removeJavaScriptDisabledWarning();</script>
<div id="header"></div>
<div id="statistics-container"></div>
<div id="test-details-container"></div>
<script type="text/javascript">
$(document).ready(function () {
try {
var topsuite = window.testdata.suite();
} catch (error) {
addJavaScriptDisabledWarning(error);
return;
}
window.prevLocationHash = '';
setBackground(topsuite);
initLayout(topsuite.name, '测试报告');
storage.init('测试报告');
addSummary(topsuite);
addStatistics();
addDetails();
window.onhashchange = showDetailsByHash;
});
function setBackground(topsuite) {
var color;
if (topsuite.criticalFailed)
color = window.settings.background.fail;
else if (topsuite.totalFailed)
color = window.settings.background.nonCriticalFail;
else
color = window.settings.background.pass;
$('body').css('background-color', color);
}
function addSummary(topsuite) {
var opts = {logURL: window.settings.logURL};
$.tmpl('summaryTableTemplate', topsuite, opts).insertAfter($('#header'));
}
function addDetails() {
addCustomSortersForDetails();
if (window.location.hash)
showDetailsByHash();
else
renderTotalSelector();
}
function addCustomSortersForDetails() {
$.tablesorter.addParser({
id: 'criticality',
type: 'numeric',
is: function(s) {
return false; // do not auto-detect
},
format: function(s) {
return s === 'yes' ? 0 : 1;
}
});
$.tablesorter.addParser({
id: 'times',
type: 'text',
is: function(s) {
return false; // do not auto-detect
},
format: function(s) {
return s.substring(0, 21); // return only start time
}
});
}
function showDetailsByHash() {
// Cannot use window.location.hash because Firefox incorrectly decodes it:
// http://stackoverflow.com/questions/1703552/encoding-of-window-location-hash
var hash = window.location.href.split('#').slice(1).join('#');
if (!hash || hash == window.prevLocationHash)
return;
var parts = hash.split('?');
var name = parts.shift();
var query = parts.join('?');
if (name == 'search') {
var params = util.parseQueryString(query);
searchExecuted(params.suite || '', params.test || '',
params.include || '', params.exclude || '');
return;
}
query = decodeURIComponent(query);
var action = {'totals': totalDetailSelected,
'tags': tagDetailSelected,
'suites': suiteDetailSelected}[name];
if (action)
action(query);
}
function totalDetailSelected(name) {
renderTotalSelector(name);
if (name) {
renderTotalDetails(name);
var title = name == 'Critical' ? 'Critical {Test}s' : 'All {Test}s'
updatePrintSelector(testOrTask(title));
}
scrollToSelector('totals', name);
}
function renderTotalSelector(name) {
var args = {linkTarget: (name) ? 'totals?'+name : 'totals',
totalTabStatus: 'detail-tab-selected'};
renderSelector(args, 'totalDetailsSelectorTemplate', {selected: name});
}
function renderTotalDetails(name) {
var index = (name == 'critical') ? 0 : 1;
var stat = window.testdata.statistics().total[index];
var tests = getTotalTests(name);
stat.totalTime = calculateTotalTime(tests);
$.tmpl('tagOrTotalDetailsTemplate', stat).appendTo('#details-header');
drawTestDetailsTable(tests, true);
}
function updatePrintSelector(name, info) {
if (info)
name += ' (' + info + ')';
$('#print-selector').html(name);
}
function tagDetailSelected(name) {
renderTagSelector(name);
if (name) {
var tag = findTag(name);
if (tag) {
renderTagDetails(tag);
updatePrintSelector(name, tag.info);
}
}
scrollToSelector('tags', name);
}
function findTag(name) {
var tags = window.testdata.statistics().tag;
for (var i = 0, len = tags.length; i < len; i++) {
if (tags[i].label == name)
return tags[i];
}
return null;
}
function renderTagSelector(name) {
var args = {linkTarget: (name) ? 'tags?'+name : 'tags',
tagTabStatus: 'detail-tab-selected'};
var stats = {tags: window.testdata.statistics().tag, selected: name};
renderSelector(args, 'tagDetailsSelectorTemplate', stats);
}
function renderTagDetails(tag) {
var tests = getTestsHavingTag(tag);
tag.totalTime = calculateTotalTime(tests);
$.tmpl('tagOrTotalDetailsTemplate', tag).appendTo('#details-header');
drawTestDetailsTable(tests, true);
}
function suiteDetailSelected(id) {
renderSuit