Library for translating AO3 interface

library for translating AO3 interface

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.cn-greasyfork.org/scripts/9168/46123/Library%20for%20translating%20AO3%20interface.js

  1. // ==UserScript==
  2. // @name Library for translating AO3 interface
  3. // @description:en library for scripts
  4. // @namespace cz.sipral.ao3.translate.library
  5. // @version 0.0.0.2
  6. // @grant none
  7. // ==/UserScript==
  8.  
  9. // TODO BUG: in my work "edit tags" isn't button anymore
  10.  
  11. //<--process DropdownMenu Titles -->
  12. function processDropDowns(tr_table) {
  13. var dropdowns = document.getElementsByClassName('dropdown');
  14. for (var i = 0; i < dropdowns.length; i++) {
  15. var anchors = dropdowns[i].getElementsByTagName('a');
  16. for (var j = 0; j < anchors.length; j++) {
  17. anchors[j].textContent = tr_table.translate(anchors[j].textContent);
  18. }
  19. }
  20. }
  21. //<--process Warnings-->
  22.  
  23. function processArchiveWarnings(tr_table) {
  24. var nodes = document.querySelectorAll('span.warnings');
  25. for (var i = 0; i < nodes.length; i++) {
  26. var title_node = nodes[i].getAttributeNode('title');
  27. title_node.textContent = tr_table.translate(title_node.textContent);
  28. var texts = nodes[i].getElementsByClassName('text');
  29. for (var j=0; j<texts.length; j++) {
  30. var node = texts[j];
  31. node.textContent = tr_table.translate(node.textContent);
  32. }
  33. }
  34. var tag_s = document.getElementsByClassName('tag');
  35. for (var i = 0; i < tag_s.length; i++) {
  36. var node = tag_s[i];
  37. node.textContent = tr_table.translate(node.textContent);
  38. }
  39. //filters subnav
  40.  
  41. var category_warning = document.getElementById('tag_category_warning');
  42. var labels = category_warning.getElementsByTagName('label');
  43. for (var i = 0; i < labels.length; i++) {
  44. var node = labels[i];
  45. node.textContent = tr_table.translate(node.textContent);
  46. }
  47. }
  48.  
  49. //<--process blurb -->
  50. function processBlurb(tr_table) {
  51. var nodes= document.getElementsByClassName('work meta group');
  52. for (var i = 0; i < nodes.length; i++) {
  53. var dts = nodes[i].getElementsByTagName('dt');
  54. for(var j=0;j<dts.length;j++) {
  55. var dt = dts[j];
  56. dt.textContent = tr_table.translate(dt.textContent);
  57. }
  58. }
  59. }
  60. //TODO add index blurb
  61.  
  62. //<--OBJECT DATA DEFINITION -->
  63.  
  64. function tranTable(obj)
  65. {
  66. this.length = 0;
  67. this.items = {
  68. };
  69. for (var p in obj) {
  70. if (obj.hasOwnProperty(p)) {
  71. this.items[p] = obj[p];
  72. this.length++;
  73. }
  74. }
  75. this.hasItem = function (key)
  76. {
  77. return this.items.hasOwnProperty(key);
  78. };
  79. this.getItem = function (key) {
  80. return this.hasItem(key) ? this.items[key] : undefined;
  81. };
  82. this.translate = function (text)
  83. {
  84. for (var key in this.items)
  85. {
  86. if (text.search(key) > - 1) {
  87. text = text.replace(new RegExp(key, 'gi'), this.items[key]);
  88. }
  89. }
  90. return text;
  91. };
  92. }