mwoffliner 1.17.4 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/README.md +355 -62
  2. package/docs/functional_architecture.md +34 -38
  3. package/extensions/wiktionary_fr.js +18 -17
  4. package/jest.config.cjs +2 -2
  5. package/lib/DOMUtils.js +0 -1
  6. package/lib/DOMUtils.js.map +1 -1
  7. package/lib/Downloader.d.ts +39 -31
  8. package/lib/Downloader.js +418 -349
  9. package/lib/Downloader.js.map +1 -1
  10. package/lib/Dump.d.ts +24 -10
  11. package/lib/Dump.js +95 -50
  12. package/lib/Dump.js.map +1 -1
  13. package/lib/Gadgets.d.ts +2 -1
  14. package/lib/Gadgets.js +7 -5
  15. package/lib/Gadgets.js.map +1 -1
  16. package/lib/Logger.d.ts +6 -6
  17. package/lib/Logger.js +33 -33
  18. package/lib/Logger.js.map +1 -1
  19. package/lib/MediaWiki.d.ts +14 -31
  20. package/lib/MediaWiki.js +119 -172
  21. package/lib/MediaWiki.js.map +1 -1
  22. package/lib/RedisStore.d.ts +3 -3
  23. package/lib/RedisStore.js +21 -23
  24. package/lib/RedisStore.js.map +1 -1
  25. package/lib/S3.js +1 -1
  26. package/lib/S3.js.map +1 -1
  27. package/lib/Templates.d.ts +3 -10
  28. package/lib/Templates.js +5 -14
  29. package/lib/Templates.js.map +1 -1
  30. package/lib/cli.js +7 -6
  31. package/lib/cli.js.map +1 -1
  32. package/lib/config.d.ts +10 -16
  33. package/lib/config.js +33 -55
  34. package/lib/config.js.map +1 -1
  35. package/lib/error.manager.d.ts +2 -2
  36. package/lib/error.manager.js +42 -49
  37. package/lib/error.manager.js.map +1 -1
  38. package/lib/i18n.d.ts +2 -0
  39. package/lib/i18n.js +53 -0
  40. package/lib/i18n.js.map +1 -0
  41. package/lib/mutex.d.ts +2 -1
  42. package/lib/mutex.js +2 -1
  43. package/lib/mutex.js.map +1 -1
  44. package/lib/mwoffliner.lib.js +370 -222
  45. package/lib/mwoffliner.lib.js.map +1 -1
  46. package/lib/parameterList.d.ts +20 -8
  47. package/lib/parameterList.js +30 -18
  48. package/lib/parameterList.js.map +1 -1
  49. package/lib/renderers/abstract.renderer.d.ts +48 -55
  50. package/lib/renderers/abstract.renderer.js +377 -98
  51. package/lib/renderers/abstract.renderer.js.map +1 -1
  52. package/lib/renderers/action-parse.renderer.d.ts +22 -3
  53. package/lib/renderers/action-parse.renderer.js +123 -81
  54. package/lib/renderers/action-parse.renderer.js.map +1 -1
  55. package/lib/renderers/renderer.builder.js +6 -69
  56. package/lib/renderers/renderer.builder.js.map +1 -1
  57. package/lib/renderers/rendering.context.d.ts +2 -3
  58. package/lib/renderers/rendering.context.js +6 -14
  59. package/lib/renderers/rendering.context.js.map +1 -1
  60. package/lib/sanitize-argument.d.ts +7 -4
  61. package/lib/sanitize-argument.js +99 -41
  62. package/lib/sanitize-argument.js.map +1 -1
  63. package/lib/util/FileManager.d.ts +36 -0
  64. package/lib/util/FileManager.js +246 -0
  65. package/lib/util/FileManager.js.map +1 -0
  66. package/lib/util/RedisKvs.js +4 -4
  67. package/lib/util/RedisKvs.js.map +1 -1
  68. package/lib/util/RedisQueue.js +1 -1
  69. package/lib/util/RedisQueue.js.map +1 -1
  70. package/lib/util/builders/url/action-parse.director.d.ts +2 -2
  71. package/lib/util/builders/url/action-parse.director.js +7 -7
  72. package/lib/util/builders/url/action-parse.director.js.map +1 -1
  73. package/lib/util/builders/url/api.director.d.ts +2 -4
  74. package/lib/util/builders/url/api.director.js +10 -17
  75. package/lib/util/builders/url/api.director.js.map +1 -1
  76. package/lib/util/builders/url/base.director.d.ts +0 -4
  77. package/lib/util/builders/url/base.director.js +0 -25
  78. package/lib/util/builders/url/base.director.js.map +1 -1
  79. package/lib/util/builders/url/basic.director.d.ts +1 -1
  80. package/lib/util/builders/url/basic.director.js +1 -1
  81. package/lib/util/builders/url/web.director.d.ts +1 -1
  82. package/lib/util/builders/url/web.director.js +2 -2
  83. package/lib/util/builders/url/web.director.js.map +1 -1
  84. package/lib/util/categories.d.ts +5 -5
  85. package/lib/util/categories.js +175 -174
  86. package/lib/util/categories.js.map +1 -1
  87. package/lib/util/const.d.ts +4 -8
  88. package/lib/util/const.js +9 -17
  89. package/lib/util/const.js.map +1 -1
  90. package/lib/util/customCssJs.d.ts +6 -0
  91. package/lib/util/customCssJs.js +70 -0
  92. package/lib/util/customCssJs.js.map +1 -0
  93. package/lib/util/dump.d.ts +15 -4
  94. package/lib/util/dump.js +282 -86
  95. package/lib/util/dump.js.map +1 -1
  96. package/lib/util/index.d.ts +1 -1
  97. package/lib/util/index.js +1 -1
  98. package/lib/util/index.js.map +1 -1
  99. package/lib/util/metaData.js.map +1 -1
  100. package/lib/util/misc.d.ts +23 -13
  101. package/lib/util/misc.js +90 -59
  102. package/lib/util/misc.js.map +1 -1
  103. package/lib/util/mw-api.d.ts +7 -5
  104. package/lib/util/mw-api.js +167 -221
  105. package/lib/util/mw-api.js.map +1 -1
  106. package/lib/util/pageListMainPage.d.ts +3 -0
  107. package/lib/util/pageListMainPage.js +10 -0
  108. package/lib/util/pageListMainPage.js.map +1 -0
  109. package/lib/util/pages.d.ts +30 -0
  110. package/lib/util/pages.js +146 -0
  111. package/lib/util/pages.js.map +1 -0
  112. package/lib/util/rewriteUrls.d.ts +2 -2
  113. package/lib/util/rewriteUrls.js +33 -31
  114. package/lib/util/rewriteUrls.js.map +1 -1
  115. package/lib/util/savePages.d.ts +8 -0
  116. package/lib/util/savePages.js +182 -0
  117. package/lib/util/savePages.js.map +1 -0
  118. package/lib/version.d.ts +1 -1
  119. package/lib/version.js +1 -1
  120. package/lib/version.js.map +1 -1
  121. package/offliner-definition.json +178 -90
  122. package/package.json +50 -49
  123. package/res/page_list_home.js +20 -0
  124. package/res/{article_not_found.svg → page_not_found.svg} +1 -1
  125. package/res/script.js +30 -45
  126. package/res/style.css +52 -68
  127. package/res/templates/download_error_placeholder.html +7 -8
  128. package/res/templates/javaScript.html +19 -0
  129. package/res/templates/pageFallback.html +9 -7
  130. package/res/templates/pageVector2022.html +9 -7
  131. package/res/templates/pageVectorLegacy.html +9 -7
  132. package/res/templates/{article_list_home.html → page_list_home.html} +1 -2
  133. package/translation/ar.json +21 -21
  134. package/translation/bn.json +1 -1
  135. package/translation/de.json +46 -19
  136. package/translation/en.json +54 -21
  137. package/translation/es.json +17 -19
  138. package/translation/fi.json +23 -3
  139. package/translation/fr.json +57 -21
  140. package/translation/he.json +8 -6
  141. package/translation/ia.json +19 -19
  142. package/translation/id.json +13 -13
  143. package/translation/it.json +13 -8
  144. package/translation/ko.json +55 -3
  145. package/translation/lb.json +5 -2
  146. package/translation/mk.json +5 -5
  147. package/translation/nl.json +57 -22
  148. package/translation/or.json +2 -2
  149. package/translation/pt.json +2 -2
  150. package/translation/qqq.json +55 -22
  151. package/translation/ru.json +2 -2
  152. package/translation/sc.json +2 -2
  153. package/translation/sk.json +62 -0
  154. package/translation/sl.json +54 -21
  155. package/translation/sv.json +20 -19
  156. package/translation/sw.json +45 -2
  157. package/translation/zh-hans.json +56 -22
  158. package/translation/zh-hant.json +26 -19
  159. package/lib/renderers/abstractDesktop.render.d.ts +0 -12
  160. package/lib/renderers/abstractDesktop.render.js +0 -67
  161. package/lib/renderers/abstractDesktop.render.js.map +0 -1
  162. package/lib/renderers/abstractMobile.render.d.ts +0 -12
  163. package/lib/renderers/abstractMobile.render.js +0 -54
  164. package/lib/renderers/abstractMobile.render.js.map +0 -1
  165. package/lib/renderers/rest-api.renderer.d.ts +0 -7
  166. package/lib/renderers/rest-api.renderer.js +0 -68
  167. package/lib/renderers/rest-api.renderer.js.map +0 -1
  168. package/lib/renderers/visual-editor.renderer.d.ts +0 -7
  169. package/lib/renderers/visual-editor.renderer.js +0 -76
  170. package/lib/renderers/visual-editor.renderer.js.map +0 -1
  171. package/lib/renderers/wikimedia-desktop.renderer.d.ts +0 -4
  172. package/lib/renderers/wikimedia-desktop.renderer.js +0 -7
  173. package/lib/renderers/wikimedia-desktop.renderer.js.map +0 -1
  174. package/lib/renderers/wikimedia-mobile.renderer.d.ts +0 -19
  175. package/lib/renderers/wikimedia-mobile.renderer.js +0 -243
  176. package/lib/renderers/wikimedia-mobile.renderer.js.map +0 -1
  177. package/lib/util/articleListMainPage.d.ts +0 -3
  178. package/lib/util/articleListMainPage.js +0 -10
  179. package/lib/util/articleListMainPage.js.map +0 -1
  180. package/lib/util/articles.d.ts +0 -26
  181. package/lib/util/articles.js +0 -102
  182. package/lib/util/articles.js.map +0 -1
  183. package/lib/util/builders/url/desktop.director.d.ts +0 -8
  184. package/lib/util/builders/url/desktop.director.js +0 -15
  185. package/lib/util/builders/url/desktop.director.js.map +0 -1
  186. package/lib/util/builders/url/mobile.director.d.ts +0 -8
  187. package/lib/util/builders/url/mobile.director.js +0 -15
  188. package/lib/util/builders/url/mobile.director.js.map +0 -1
  189. package/lib/util/builders/url/rest-api.director.d.ts +0 -8
  190. package/lib/util/builders/url/rest-api.director.js +0 -18
  191. package/lib/util/builders/url/rest-api.director.js.map +0 -1
  192. package/lib/util/builders/url/visual-editor.director.d.ts +0 -9
  193. package/lib/util/builders/url/visual-editor.director.js +0 -18
  194. package/lib/util/builders/url/visual-editor.director.js.map +0 -1
  195. package/lib/util/saveArticles.d.ts +0 -8
  196. package/lib/util/saveArticles.js +0 -411
  197. package/lib/util/saveArticles.js.map +0 -1
  198. package/res/article_list_home.js +0 -24
  199. package/res/content.parsoid.css +0 -196
  200. package/res/inserted_style.css +0 -45
  201. package/res/templates/categories.html +0 -11
  202. package/res/templates/lead_section_wrapper.html +0 -6
  203. package/res/templates/pageWikimediaDesktop.html +0 -24
  204. package/res/templates/pageWikimediaMobile.html +0 -24
  205. package/res/templates/section_wrapper.html +0 -5
  206. package/res/templates/subcategories.html +0 -23
  207. package/res/templates/subpages.html +0 -17
  208. package/res/templates/subsection_wrapper.html +0 -5
  209. package/res/webpHandler.js +0 -165
  210. package/res/wm_mobile_override_script.js +0 -15
  211. package/res/wm_mobile_override_style.css +0 -20
  212. package/translation/br.json +0 -8
  213. package/translation/dag.json +0 -9
  214. package/translation/es-formal.json +0 -29
  215. package/translation/ha.json +0 -10
  216. package/translation/hi.json +0 -9
  217. package/translation/ig.json +0 -10
  218. package/translation/kaa.json +0 -9
  219. package/translation/nb.json +0 -9
  220. package/translation/nqo.json +0 -8
  221. package/translation/pt-br.json +0 -10
  222. package/translation/ro.json +0 -9
  223. package/translation/scn.json +0 -8
  224. package/translation/sq.json +0 -9
  225. package/translation/te.json +0 -9
  226. package/translation/tn.json +0 -9
  227. package/translation/tr.json +0 -10
package/res/script.js CHANGED
@@ -1,50 +1,35 @@
1
- function importScript() { return 1 } // this is to avoid the error from site.js
2
-
3
- window.onload = function () {
4
-
5
- /* Collapsing of the sections */
6
- $('.mw-ref').on({
7
- click: function (ev) {
8
- var targetId = ev.target.hash || ev.target.parentNode.hash;
9
- var targetEl = document.getElementById(targetId.slice(1));
10
- var refDetails = $(targetEl).closest('details');
11
- refDetails.attr('open', true);
12
- }
13
- });
14
-
15
- /* If small screen size and contains section(s) */
16
- if (window.innerWidth < 720 && $('details')) {
17
-
18
- /* Find the highest level section in window */
19
- const sectionTopLevel = Math.min(...$('details').
20
- map( function() { return $(this).attr('data-level'); }).get());
21
-
22
- /* Collapse all highest level section if more than one */
23
- if ($(`details[data-level=${sectionTopLevel}]`).length !== 1) {
24
- $(`details[data-level=${sectionTopLevel}]`).attr('open', false);
25
- }
1
+ /*
2
+ * Functions for categories pagination
3
+ */
4
+
5
+ document.addEventListener('DOMContentLoaded', () => {
6
+ showHideJs()
7
+ })
8
+
9
+ function showHideJs() {
10
+ for (const item of ['mw-subcategories', 'mw-pages', 'mw-category-media']) {
11
+ const section = document.getElementById(item)
12
+ if (!section) {
13
+ continue
26
14
  }
27
-
28
- /* Add the user-agent to allow dedicated CSS rules (like for KaiOS) */
29
- document.querySelector('body').setAttribute('data-useragent', navigator.userAgent);
15
+ for (const span of section.querySelectorAll('.mwo-no-js')) {
16
+ span.style.display = 'none'
17
+ }
18
+ for (const span of section.querySelectorAll('.mwo-js')) {
19
+ span.style.display = 'block'
20
+ }
21
+ }
30
22
  }
31
23
 
32
- /* WebP Polyfill */
33
- var webpScripts = ['./webpHeroPolyfill.js',
34
- './webpHeroBundle.js',
35
- './webpHandler.js'];
36
- webpScripts = webpScripts.map(function(scriptUrl) {
37
- const articleId = document.getElementById('script-js').dataset.articleId;
24
+ async function displayCategoryPartial(target, partialPath) {
25
+ const response = await fetch(partialPath)
26
+ const html = await response.text()
27
+
28
+ const doc = new DOMParser().parseFromString(html, 'text/html')
29
+ const newContent = doc.getElementById(target)
38
30
 
39
- return (typeof(articleId)) ? '../'.repeat(articleId.split('/').length - 1) + scriptUrl : scriptUrl;
40
- });
41
- var script = document.createElement('script');
42
- script.type = 'text/javascript';
43
- script.src = webpScripts.pop();;
44
- script.onload = function () {
45
- new WebPHandler({
46
- scripts_urls: webpScripts,
47
- on_ready: function (handler) { handler.polyfillDocument(); },
48
- });
31
+ if (newContent) {
32
+ document.getElementById(target).replaceWith(newContent)
33
+ showHideJs()
34
+ }
49
35
  }
50
- document.getElementsByTagName('head')[0].appendChild(script);
package/res/style.css CHANGED
@@ -1,20 +1,27 @@
1
+ /**
2
+ * Hide elements (e.g. category navigation) to show only once JS triggered - if it does
3
+ */
4
+ .mwo-js {
5
+ display: none;
6
+ }
7
+
1
8
  /**
2
9
  * Custom style meant to match the design of mwoffliner mobile version to the mobile version of wikipedia
3
10
  */
4
11
 
5
12
  .mw-body-content {
6
- font-family: 'Helvetica Neue', 'Helvetica', 'Nimbus Sans L', 'Arial', 'Liberation Sans', sans-serif;
7
- font-size: 16px;
8
- line-height: 26px;
13
+ font-family: 'Helvetica Neue', 'Helvetica', 'Nimbus Sans L', 'Arial', 'Liberation Sans', sans-serif;
14
+ font-size: 16px;
15
+ line-height: 26px;
9
16
  }
10
17
 
11
18
  .mw-body-content p {
12
- margin: 0.5em 0 1em 0;
19
+ margin: 0.5em 0 1em 0;
13
20
  }
14
21
 
15
22
  .mw-body h1,
16
23
  .mw-body summary {
17
- outline: none;
24
+ outline: none;
18
25
  }
19
26
 
20
27
  .mw-body h2,
@@ -22,96 +29,73 @@
22
29
  .mw-body h4,
23
30
  .mw-body h5,
24
31
  .mw-body h6 {
25
- padding: 0.5em 0;
32
+ padding: 0.5em 0;
26
33
  }
27
34
 
28
35
  .mw-body h3,
29
36
  .mw-body h2 {
30
- clear: both;
31
- width: 100%;
32
- margin-bottom: 0.5em;
33
- border-bottom: solid 1px #eaecf0;
34
- font-family: 'Linux Libertine', 'Georgia', 'Times', serif;
37
+ clear: both;
38
+ width: 100%;
39
+ margin-bottom: 0.5em;
40
+ border-bottom: solid 1px #eaecf0;
41
+ font-family: 'Linux Libertine', 'Georgia', 'Times', serif;
35
42
  }
36
43
 
37
-
38
44
  .mw-body h3 {
39
- border-bottom: 0px solid #eaecf0;
40
- font-weight: initial;
45
+ border-bottom: 0px solid #eaecf0;
46
+ font-weight: initial;
41
47
  }
42
48
 
43
49
  .mw-body h4 {
44
- border-bottom: 0px solid #eaecf0;
50
+ border-bottom: 0px solid #eaecf0;
45
51
  }
46
52
 
47
- .mw-body h1.article-header {
48
- border-bottom: 1px solid #eaecf0;
53
+ .mw-body h1.page-header {
54
+ border-bottom: 1px solid #eaecf0;
49
55
  }
50
56
 
51
57
  @media (max-width: 720px) {
52
- .content .thumb .thumbinner>.thumbcaption {
53
- flex: 1 1 auto !important;
54
- }
55
- }
56
-
57
- .mwo-catlinks {
58
- border: 1px solid #a2a9b1;
59
- background-color: #f8f9fa;
60
- padding: 5px;
61
- margin-top: 1em;
62
- clear: both;
63
- }
64
-
65
- .mwo-catlinks ul {
66
- display: inline;
67
- margin: 0;
68
- padding: 0;
69
- list-style: none none;
70
- }
71
-
72
- .mwo-catlinks li {
73
- display: inline-block;
74
- line-height: 1.25em;
75
- border-left: 1px solid #a2a9b1;
76
- margin: 0.125em 0;
77
- padding: 0 0.5em;
78
- zoom: 1;
79
- }
80
-
81
- .mwo-catlinks li:first-child {
82
- padding-left: 0.25em;
83
- border-left: 0;
58
+ .content .thumb .thumbinner > .thumbcaption {
59
+ flex: 1 1 auto !important;
60
+ }
84
61
  }
85
62
 
86
63
  .mwo-groups {
87
- -webkit-column-count: 3;
88
- -moz-column-count: 3;
89
- column-count: 3;
90
- -webkit-column-width: 24em;
91
- -moz-column-width: 24em;
92
- column-width: 24em;
64
+ -webkit-column-count: 3;
65
+ -moz-column-count: 3;
66
+ column-count: 3;
67
+ -webkit-column-width: 24em;
68
+ -moz-column-width: 24em;
69
+ column-width: 24em;
93
70
  }
94
71
 
95
72
  .mwo-groups h3 {
96
- line-height: 1.6;
97
- margin-top: 0.3em;
98
- margin-bottom: 0;
99
- padding-bottom: 0;
73
+ line-height: 1.6;
74
+ margin-top: 0.3em;
75
+ margin-bottom: 0;
76
+ padding-bottom: 0;
100
77
  }
101
78
 
102
79
  summary.section-heading {
103
- display: list-item !important;
104
- cursor: pointer;
80
+ display: list-item !important;
81
+ cursor: pointer;
105
82
  }
106
83
 
107
- .section-heading>h1,
108
- .section-heading>h2,
109
- .section-heading>h3,
110
- .section-heading>h4 {
111
- display: inline;
112
- border: none;
84
+ .section-heading > h1,
85
+ .section-heading > h2,
86
+ .section-heading > h3,
87
+ .section-heading > h4 {
88
+ display: inline;
89
+ border: none;
113
90
  }
114
91
 
115
92
  body[data-useragent*='KAIOS'] h1 {
116
- display: none !important;
93
+ display: none !important;
94
+ }
95
+
96
+ .mwo-external-video-card {
97
+ display: block;
98
+ margin: 1em 0;
99
+ border: 1px solid #a2a9b1;
100
+ background-color: #f8f9fa;
117
101
  }
@@ -1,17 +1,14 @@
1
- <!DOCTYPE html>
1
+ <!doctype html>
2
2
  <html>
3
3
  <head>
4
- <meta charset="utf-8">
4
+ <meta charset="utf-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
6
6
  <title></title>
7
7
  <link type="text/css" href="{{ relative_file_path }}download_error_placeholder.css" rel="stylesheet" />
8
8
  </head>
9
9
  <body>
10
10
  <header>
11
- <img src="{{ relative_file_path }}article_not_found.svg"
12
- alt="oops image"
13
- aria-label="oops image"
14
- title="oops image">
11
+ <img src="{{ relative_file_path }}page_not_found.svg" alt="oops image" aria-label="oops image" title="oops image" />
15
12
  </header>
16
13
  <section class="intro">
17
14
  <h1>{{heading}}</h1>
@@ -20,7 +17,9 @@
20
17
  <section class="advice">
21
18
  <p>{{advice_line1}}</p>
22
19
  <p>{{advice_line2}}</p>
23
- {% if display_third_line %}<p>{{advice_line3}}</p>{% endif %}
20
+ {% if display_third_line %}
21
+ <p>{{advice_line3}}</p>
22
+ {% endif %}
24
23
  </section>
25
24
  </body>
26
- </html>
25
+ </html>
@@ -0,0 +1,19 @@
1
+ <script id="mwoffliner-jsConfigVars">
2
+ document.documentElement.classList.replace('client-nojs', 'client-js')
3
+ RLCONF = __PAGE_CONFIGVARS__
4
+ RLSTATE = __PAGE_CSS_STATE__
5
+ RLPAGEMODULES = __PAGE_JS_MODULES__
6
+ ;(RLQ = window.RLQ || []).push(function () {
7
+ mw.config.set(RLCONF)
8
+ mw.loader.state(RLSTATE)
9
+ mw.loader.load(RLPAGEMODULES)
10
+ ;(mw.loader.impl || mw.loader.implement)(function () {
11
+ return [
12
+ 'user.options@12s5i',
13
+ function ($, jQuery, require, module) {
14
+ mw.user.tokens.set({ patrolToken: '+\\', watchToken: '+\\', csrfToken: '+\\' })
15
+ },
16
+ ]
17
+ })
18
+ })
19
+ </script>
@@ -1,22 +1,25 @@
1
1
  <!doctype html>
2
- <html class="__ARTICLE_HTML_CSS_CLASS__" __ARTICLE_LANG_DIR__>
2
+ <html class="__PAGE_HTML_CSS_CLASS__" __PAGE_LANG_DIR__>
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
5
  <title></title>
6
+ __PAGE_JAVASCRIPT__
6
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
8
  <link rel="icon" type="image/png" href="__RELATIVE_FILE_PATH____RES_DIR__/favicon.png" />
8
- __ARTICLE_CANONICAL_LINK__ __ARTICLE_CSS_BEFORE_META__
9
+ __PAGE_CANONICAL_LINK__ __PAGE_CSS_BEFORE_META__ __PAGE_JS_STARTUP__
9
10
  <meta name="ResourceLoaderDynamicStyles" content="" />
10
- __ARTICLE_CSS_AFTER_META__
11
+ __PAGE_CSS_AFTER_META__
11
12
  <link rel="stylesheet" type="text/css" href="__RELATIVE_FILE_PATH____MW_DIR__/site.styles.css" />
12
- <link rel="stylesheet" type="text/css" href="__RELATIVE_FILE_PATH____MW_DIR__/noscript.css" />
13
+ __PAGE_CSS_NOSCRIPT__
13
14
  <link rel="stylesheet" type="text/css" href="__RELATIVE_FILE_PATH____RES_DIR__/footer.css" />
15
+ __MATHJAX_SCRIPTS__ __CUSTOM_CSS__ __CUSTOM_JS__
16
+ <script src="__RELATIVE_FILE_PATH____RES_DIR__/script.js"></script>
14
17
  </head>
15
18
 
16
- <body class="mwoffliner-fallback __ARTICLE_BODY_CSS_CLASS__">
19
+ <body class="mwoffliner-fallback __PAGE_BODY_CSS_CLASS__">
17
20
  <div id="content" class="mw-body" role="main">
18
21
  <a id="top"></a>
19
- <h1 id="firstHeading" class="firstHeading mw-first-heading" __ARTICLE_FIRST_HEADING_STYLE__></h1>
22
+ <h1 id="firstHeading" class="firstHeading mw-first-heading" __PAGE_FIRST_HEADING_STYLE__></h1>
20
23
  <div id="bodyContent">
21
24
  <div id="contentSub">
22
25
  <div id="mw-content-subtitle"></div>
@@ -24,6 +27,5 @@
24
27
  <div id="mw-content-text" class="mw-body-content"></div>
25
28
  </div>
26
29
  </div>
27
- __ARTICLE_CONFIGVARS_LIST__ __ARTICLE_JS_LIST__
28
30
  </body>
29
31
  </html>
@@ -1,25 +1,28 @@
1
1
  <!doctype html>
2
- <html class="__ARTICLE_HTML_CSS_CLASS__" __ARTICLE_LANG_DIR__>
2
+ <html class="__PAGE_HTML_CSS_CLASS__" __PAGE_LANG_DIR__>
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
5
  <title></title>
6
+ __PAGE_JAVASCRIPT__
6
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
8
  <link rel="icon" type="image/png" href="__RELATIVE_FILE_PATH____RES_DIR__/favicon.png" />
8
- __ARTICLE_CANONICAL_LINK__ __ARTICLE_CSS_BEFORE_META__
9
+ __PAGE_CANONICAL_LINK__ __PAGE_CSS_BEFORE_META__ __PAGE_JS_STARTUP__
9
10
  <meta name="ResourceLoaderDynamicStyles" content="" />
10
- __ARTICLE_CSS_AFTER_META__
11
+ __PAGE_CSS_AFTER_META__
11
12
  <link rel="stylesheet" type="text/css" href="__RELATIVE_FILE_PATH____MW_DIR__/site.styles.css" />
12
- <link rel="stylesheet" type="text/css" href="__RELATIVE_FILE_PATH____MW_DIR__/noscript.css" />
13
+ __PAGE_CSS_NOSCRIPT__
13
14
  <link rel="stylesheet" type="text/css" href="__RELATIVE_FILE_PATH____RES_DIR__/footer.css" />
14
15
  <link rel="stylesheet" type="text/css" href="__RELATIVE_FILE_PATH____RES_DIR__/vector-2022.css" />
16
+ __MATHJAX_SCRIPTS__ __CUSTOM_CSS__ __CUSTOM_JS__
17
+ <script src="__RELATIVE_FILE_PATH____RES_DIR__/script.js"></script>
15
18
  </head>
16
- <body class="__ARTICLE_BODY_CSS_CLASS__">
19
+ <body class="__PAGE_BODY_CSS_CLASS__">
17
20
  <div class="mw-page-container">
18
21
  <div class="mw-page-container-inner">
19
22
  <div class="mw-content-container">
20
23
  <main id="content" class="mw-body">
21
24
  <header class="mw-body-header vector-page-titlebar">
22
- <h1 id="firstHeading" class="firstHeading mw-first-heading" __ARTICLE_FIRST_HEADING_STYLE__></h1>
25
+ <h1 id="firstHeading" class="firstHeading mw-first-heading" __PAGE_FIRST_HEADING_STYLE__></h1>
23
26
  </header>
24
27
  <a id="top"></a>
25
28
  <div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
@@ -32,6 +35,5 @@
32
35
  </div>
33
36
  </div>
34
37
  </div>
35
- __ARTICLE_CONFIGVARS_LIST__ __ARTICLE_JS_LIST__
36
38
  </body>
37
39
  </html>
@@ -1,23 +1,26 @@
1
1
  <!doctype html>
2
- <html class="__ARTICLE_HTML_CSS_CLASS__" __ARTICLE_LANG_DIR__>
2
+ <html class="__PAGE_HTML_CSS_CLASS__" __PAGE_LANG_DIR__>
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
5
  <title></title>
6
+ __PAGE_JAVASCRIPT__
6
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
8
  <link rel="icon" type="image/png" href="__RELATIVE_FILE_PATH____RES_DIR__/favicon.png" />
8
- __ARTICLE_CANONICAL_LINK__ __ARTICLE_CSS_BEFORE_META__
9
+ __PAGE_CANONICAL_LINK__ __PAGE_CSS_BEFORE_META__ __PAGE_JS_STARTUP__
9
10
  <meta name="ResourceLoaderDynamicStyles" content="" />
10
- __ARTICLE_CSS_AFTER_META__
11
+ __PAGE_CSS_AFTER_META__
11
12
  <link rel="stylesheet" type="text/css" href="__RELATIVE_FILE_PATH____MW_DIR__/site.styles.css" />
12
- <link rel="stylesheet" type="text/css" href="__RELATIVE_FILE_PATH____MW_DIR__/noscript.css" />
13
+ __PAGE_CSS_NOSCRIPT__
13
14
  <link rel="stylesheet" type="text/css" href="__RELATIVE_FILE_PATH____RES_DIR__/footer.css" />
14
15
  <link rel="stylesheet" type="text/css" href="__RELATIVE_FILE_PATH____RES_DIR__/vector.css" />
16
+ __MATHJAX_SCRIPTS__ __CUSTOM_CSS__ __CUSTOM_JS__
17
+ <script src="__RELATIVE_FILE_PATH____RES_DIR__/script.js"></script>
15
18
  </head>
16
19
 
17
- <body class="__ARTICLE_BODY_CSS_CLASS__">
20
+ <body class="__PAGE_BODY_CSS_CLASS__">
18
21
  <div id="content" class="mw-body" role="main">
19
22
  <a id="top"></a>
20
- <h1 id="firstHeading" class="firstHeading mw-first-heading" __ARTICLE_FIRST_HEADING_STYLE__></h1>
23
+ <h1 id="firstHeading" class="firstHeading mw-first-heading" __PAGE_FIRST_HEADING_STYLE__></h1>
21
24
  <div id="bodyContent" class="vector-body">
22
25
  <div id="contentSub">
23
26
  <div id="mw-content-subtitle"></div>
@@ -25,6 +28,5 @@
25
28
  <div id="mw-content-text" class="mw-body-content"></div>
26
29
  </div>
27
30
  </div>
28
- __ARTICLE_CONFIGVARS_LIST__ __ARTICLE_JS_LIST__
29
31
  </body>
30
32
  </html>
@@ -6,10 +6,9 @@
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <link rel="icon" type="image/png" href="__RELATIVE_FILE_PATH____RES_DIR__/favicon.png" />
8
8
  <script src="./__RES_DIR__/masonry.min.js"></script>
9
- <script src="./__RES_DIR__/script.js"></script>
10
9
  </head>
11
10
 
12
- <body class="article-list-home mw-body-content nojs">
11
+ <body class="page-list-home mw-body-content nojs">
13
12
  <!-- <ul id="list"></ul> -->
14
13
  <!-- <div id="container">
15
14
  <div id="content">
@@ -6,26 +6,26 @@
6
6
  "عبد الإله صديقي"
7
7
  ]
8
8
  },
9
- "DISCLAIMER": "هذه المقالة صادرة عن ${creator}.النص متاح تحت رخصة ${license} مالم يرد خلاف ذلك. قد تُطبَّق شروط إضافية على ملفات الوسائط.",
10
- "LAST_EDITED_ON": "تم التحرير آخر مرة في ${date}",
9
+ "DISCLAIMER": "هذه الصفحة صادرة عن {{creator}}. النص متاح بموجب {{license}} ما لم يُذكر خلاف ذلك. قد تُطبق شروط إضافية على ملفات الوسائط.",
10
+ "LAST_EDITED_ON": "آخر تعديل بتاريخ {{date}}",
11
11
  "LICENSE_UNKNOWN": "رخصة غير معروفة",
12
- "DOWNLOAD_ERRORS_HEADING": "عفواً، لم يتم العثور على المقالة.",
13
- "DOWNLOAD_ERRORS_MESSAGE": "المقالة المطلوبة '${articleTitle}' غير متوفرة داخل هذا ZIM، ولم يكن من الممكن استردادها من ${server}.",
14
- "DOWNLOAD_ERRORS_LINE1_DELETED_ARTICLE": "تم حذف هذه المقالة بعد أن قمنا بتجميع قائمة المقالات التي سيتم استرجاعها ولكن قبل أن نقوم بجلبها لبناء ZIM الذي تتصفحه.",
15
- "DOWNLOAD_ERRORS_LINE1_CLIENT_SIDE_TIMEOUT": "عندما تم إنشاء ZIM الذي تتصفحه، فشل خادم ${server} في تقديم تفاصيل حول هذه المقالة HTML في الوقت المناسب.",
16
- "DOWNLOAD_ERRORS_LINE1_WIKIMEDIA_DESKTOP_API_HTML_500_ERROR": "عندما تم إنشاء ZIM الذي تتصفحه، فشل خادم ${server} في عرض محتوى HTML لهذه المقالة وأعاد خطأ HTTP 500.",
17
- "DOWNLOAD_ERRORS_LINE1_WIKIMEDIA_DESKTOP_API_HTML_504_UPSTREAM_TIMEOUT": "عندما تم إنشاء ZIM الذي تتصفحه، توقف خادم ${server} عن العمل أثناء عرض محتوى HTML لهذه المقالة وأعاد خطأ HTTP 504.",
18
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_UPSTREAM_TIMEOUT": "عندما تم إنشاء ZIM الذي تتصفحه، توقف مؤقتًا برنامج ActionParse API الخاص بخادم ${server} أثناء معالجة هذه المقالة وأعاد خطأ HTTP 504.",
19
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_HTML_503_ERROR": "عند إنشاء ZIM الذي تتصفحه، أثارت واجهة برمجة تطبيقات ActionParse الخاصة بخادم ${server} خطأ HTTP 503 أثناء تقديم تفاصيل حول هذه المقالة HTML.",
20
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_BAD_REVISION_ERROR": "عند إنشاء ZIM الذي تتصفحه، أثارت واجهة برمجة تطبيقات ActionParse الخاصة بخادم ${server} خطأ غير متوقع في معرف المراجعة الخاطئة أثناء تقديم تفاصيل حول هذه المقالة HTML.",
21
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_UNREACHABLE_EXCEPTION_ERROR": "عند إنشاء ZIM الذي تتصفحه، أثارت واجهة برمجة تطبيقات ActionParse لخادم ${server} خطأ استثناء لا يمكن الوصول إليه أثناء تقديم تفاصيل حول هذه المقالة HTML.",
22
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INVARIANT_EXCEPTION_ERROR": "عند إنشاء ZIM الذي تتصفحه، أثارت واجهة برمجة تطبيقات ActionParse الخاصة بخادم ${server} خطأ استثناء ثابتًا أثناء تقديم تفاصيل حول هذه المقالة HTML.",
23
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_PARSOID_RESOURCE_LIMIT_EXCEEDED": "عند إنشاء ZIM الذي تتصفحه، أثارت واجهة برمجة تطبيقات ActionParse الخاصة بخادم ${server} خطأً مرتبطًا بتجاوز حدود موارد Parsoid أثناء تقديم تفاصيل حول هذه المقالة HTML.",
24
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_GENERIC_INTERNAL_API_ERROR": "عند إنشاء ZIM الذي تتصفحه، أثارت واجهة برمجة تطبيقات ActionParse الخاصة بخادم ${server} خطأً داخليًا في واجهة برمجة التطبيقات أثناء تقديم تفاصيل حول هذه المقالة HTML.",
25
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INTERNAL_API_TYPE_ERROR": "عند إنشاء ZIM الذي تتصفحه، أثارت واجهة برمجة تطبيقات ActionParse الخاصة بخادم ${server} خطأً داخليًا في نوع واجهة برمجة التطبيقات أثناء تقديم تفاصيل حول هذه المقالة HTML.",
26
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INVALID_ARGUMENT_EXCEPTION_ERROR": "عند إنشاء ZIM الذي تتصفحه، أثارت واجهة برمجة تطبيقات ActionParse الخاصة بخادم ${server} خطأ استثناء وسيطة أثناء تقديم تفاصيل حول هذه المقالة HTML.",
27
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_TRUNCATED_RESPONSE": "عند إنشاء ZIM الذي تتصفحه، لم تتمكن واجهة برمجة تطبيقات ActionParse لخادم ${server} من تقديم تفاصيل حول هذه المقالة بتنسيق HTML نظرًا لحجمها الكبير. ربما ينبغي تقسيم هذه المقالة إلى عدة مقالات أصغر على خادم ${server}.",
28
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_EMPTY_500_RESPONSE": "عندما تم إنشاء ZIM الذي تتصفحه، فشلت واجهة برمجة تطبيقات ActionParse لخادم ${server} في تقديم تفاصيل حول هذه المقالة HTML التي تعيد استجابة فارغة.",
29
- "DOWNLOAD_ERRORS_LINE2": "تم استبدال المقالة المفقودة بالصفحة النائبة التي تشاهدها حاليًا.",
30
- "DOWNLOAD_ERRORS_LINE3": "نأمل أن يتم حل المشكلة على خادم ${server} وأن تحتوي نسختنا التالية من هذا ZIM على هذه المقالة."
12
+ "DOWNLOAD_ERRORS_HEADING": "عذراً، الصفحة غير موجودة.",
13
+ "DOWNLOAD_ERRORS_MESSAGE": "الصفحة المطلوبة '{{pageTitle}}' غير متوفرة داخل هذا ZIM، ولم يكن من الممكن استردادها من {{server}}.",
14
+ "DOWNLOAD_ERRORS_LINE1_DELETED_PAGE": "تم حذف هذه الصفحة بعد أن قمنا بتجميع قائمة الصفحات المراد استرجاعها ولكن قبل أن نقوم بجلبها لإنشاء ملف ZIM الذي تتصفحه.",
15
+ "DOWNLOAD_ERRORS_LINE1_PERMISSION_DENIED": "الوصول إلى هذه الصفحة مقيد على خادم {{server}}. يتطلب ذلك أذونات خاصة غير متوفرة أثناء عملية استخراج البيانات من ZIM.",
16
+ "DOWNLOAD_ERRORS_LINE1_CATEGORY_LOCKDOWN": "الوصول إلى هذه الصفحة مقيدٌ بتقييد الوصول بناءً على تصنيفات محددة على خادم {{server}}. لا تتوفر أذونات التصنيف المطلوبة أثناء عملية استخراج البيانات من ZIM.",
17
+ "DOWNLOAD_ERRORS_LINE1_CLIENT_SIDE_TIMEOUT": "عندما تم إنشاء ZIM الذي تتصفحه، فشل خادم {{server}} في تقديم تفاصيل حول HTML هذه الصفحة في الوقت المناسب.",
18
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_UPSTREAM_TIMEOUT": "عندما تم إنشاء ZIM الذي تتصفحه، انتهت مهلة واجهة برمجة تطبيقات ActionParse الخاصة بالخادم {{server}} أثناء معالجة هذه الصفحة وأعادت خطأ HTTP 504.",
19
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_HTML_503_ERROR": "عندما تم إنشاء ملف ZIM الذي تتصفحه، أثار خادم {{server}} ActionParse API خطأ HTTP 503 أثناء تقديم تفاصيل حول HTML هذه الصفحة.",
20
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_BAD_REVISION_ERROR": "عندما تم إنشاء ملف ZIM الذي تتصفحه، أثارت واجهة برمجة تطبيقات ActionParse الخاصة بالخادم {{server}} خطأً غير متوقع في معرف المراجعة السيئ أثناء تقديم تفاصيل حول HTML هذه الصفحة.",
21
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_UNREACHABLE_EXCEPTION_ERROR": "عندما تم إنشاء ملف ZIM الذي تتصفحه، أثار خادم {{server}} خطأ استثناء غير قابل للوصول أثناء تقديم تفاصيل حول HTML هذه الصفحة.",
22
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INVARIANT_EXCEPTION_ERROR": "عندما تم إنشاء ملف ZIM الذي تتصفحه، أثار خادم {{server}} خطأ استثناء ثابت أثناء تقديم تفاصيل حول HTML هذه الصفحة.",
23
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_PARSOID_RESOURCE_LIMIT_EXCEEDED": "عند إنشاء ملف ZIM الذي تتصفحه، أثار خادم {{server}} خطأً مرتبطًا بتجاوز حدود موارد Parsoid أثناء تقديم تفاصيل حول HTML هذه الصفحة.",
24
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_GENERIC_INTERNAL_API_ERROR": "عندما تم إنشاء ملف ZIM الذي تتصفحه، أثار خادم {{server}} ActionParse API خطأً داخليًا في واجهة برمجة التطبيقات أثناء تقديم تفاصيل حول HTML هذه الصفحة.",
25
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INTERNAL_API_TYPE_ERROR": "عندما تم إنشاء ZIM الذي تتصفحه، أثار خادم {{server}} ActionParse API خطأً داخليًا في نوع API أثناء تقديم تفاصيل حول HTML هذه الصفحة.",
26
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INVALID_ARGUMENT_EXCEPTION_ERROR": "عندما تم إنشاء ملف ZIM الذي تتصفحه، أثار خادم {{server}} خطأ استثناء في الوسيطة أثناء تقديم تفاصيل حول HTML هذه الصفحة.",
27
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_TRUNCATED_RESPONSE": "عند إنشاء ملف ZIM الذي تتصفحه، فشلت واجهة برمجة تطبيقات ActionParse الخاصة بالخادم {{server}} في توفير تفاصيل حول كود HTML لهذه الصفحة نظرًا لكبر حجمها. يُنصح بتقسيم هذه الصفحة إلى عدة صفحات أصغر على الخادم {{server}}.",
28
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_EMPTY_500_RESPONSE": "عندما تم إنشاء ZIM الذي تتصفحه، فشلت واجهة برمجة تطبيقات ActionParse الخاصة بالخادم {{server}} في تقديم تفاصيل حول HTML هذه الصفحة، مما أدى إلى إرجاع استجابة فارغة.",
29
+ "DOWNLOAD_ERRORS_LINE2": "تم استبدال الصفحة المفقودة بالصفحة البديلة التي تراها حاليًا.",
30
+ "DOWNLOAD_ERRORS_LINE3": "دعونا نأمل أن يتم حل المشكلة على خادم {{server}} وأن يحتوي الإصدار التالي من ZIM على هذه الصفحة."
31
31
  }
@@ -4,5 +4,5 @@
4
4
  "আফতাবুজ্জামান"
5
5
  ]
6
6
  },
7
- "LAST_EDITED_ON": "${date} তারিখে সর্বশেষ সম্পাদিত"
7
+ "LAST_EDITED_ON": "{{date}} তারিখে সর্বশেষ সম্পাদিত"
8
8
  }
@@ -9,26 +9,53 @@
9
9
  "Nortix"
10
10
  ]
11
11
  },
12
- "DISCLAIMER": "Dieser Artikel wurde von ${creator} herausgegeben. Der Text ist unter ${license} verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.",
13
- "LAST_EDITED_ON": "Zuletzt bearbeitet am ${date}",
12
+ "categoryHeaderNumerals": "0–9",
13
+ "categoryFileCount": {
14
+ "one": "Diese Kategorie enthält nur folgende Datei.",
15
+ "other": "Die $t(categoryCurrentPageFileCount, {\"count\": {{curPageCount}} }) in dieser Kategorie, von {{count}} insgesamt."
16
+ },
17
+ "categoryCurrentPageFileCount": {
18
+ "one": "folgende Datei ist",
19
+ "other": "folgenden {{count}} Dateien sind"
20
+ },
21
+ "categoryMediaHeader": "Medien in der Kategorie „{{pageName}}“",
22
+ "categoryPageCount": {
23
+ "one": "Diese Kategorie enthält nur die folgende Seite.",
24
+ "other": "Folgende $t(categoryCurrentPagePageCount, {\"count\": {{curPageCount}} }) in dieser Kategorie, von {{count}} insgesamt."
25
+ },
26
+ "categoryCurrentPagePageCount": {
27
+ "one": "Seite ist",
28
+ "other": "{{count}} Seiten sind"
29
+ },
30
+ "categoryHeader": "Seiten in der Kategorie „{{pageName}}“",
31
+ "categorySubcatCount": {
32
+ "one": "Diese Kategorie enthält nur die folgende Unterkategorie:",
33
+ "other": "Diese Kategorie enthält die $t(categoryCurrentPageSubcatCount, {\"count\": {{curPageCount}} }) ({{count}} insgesamt):"
34
+ },
35
+ "categoryCurrentPageSubcatCount": {
36
+ "one": "folgende Unterkategorie",
37
+ "other": "folgenden {{count}} Unterkategorien"
38
+ },
39
+ "subcategories": "Unterkategorien",
40
+ "categoryEmpty": "<em>Diese Kategorie enthält zurzeit keine Seiten oder Medien.</em>",
41
+ "DISCLAIMER": "Dieser Artikel wurde von {{creator}} herausgegeben. Der Text ist unter {{license}} verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.",
42
+ "LAST_EDITED_ON": "Zuletzt bearbeitet am {{date}}",
14
43
  "LICENSE_UNKNOWN": "einer unbekannten Lizenz",
15
44
  "DOWNLOAD_ERRORS_HEADING": "Hoppla. Artikel nicht gefunden.",
16
- "DOWNLOAD_ERRORS_MESSAGE": "Der angeforderte Artikel „${articleTitle}“ ist in diesem ZIM nicht verfügbar, er konnte nicht von ${server} abgerufen werden.",
17
- "DOWNLOAD_ERRORS_LINE1_DELETED_ARTICLE": "Dieser Artikel wurde gelöscht, nachdem wir die Liste der abzurufenden Artikel zusammengestellt hatten, aber bevor wir ihn zum Erstellen dieser ZIM abgerufen haben.",
18
- "DOWNLOAD_ERRORS_LINE1_CLIENT_SIDE_TIMEOUT": "Als das ZIM, das du durchsuchst, erstellt wurde, konnte der ${server}-Server nicht rechtzeitig Details über diesen HTML-Artikel geben.",
19
- "DOWNLOAD_ERRORS_LINE1_WIKIMEDIA_DESKTOP_API_HTML_500_ERROR": "Beim Erstellen dieser ZIM konnte der Server ${server} den HTML-Inhalt dieses Artikels nicht darstellen und gab einen HTTP 500-Fehler zurück.",
20
- "DOWNLOAD_ERRORS_LINE1_WIKIMEDIA_DESKTOP_API_HTML_504_UPSTREAM_TIMEOUT": "Beim Erstellen dieser ZIM hatte der Server ${server} eine Zeitüberschreitung beim Darstellen des HTML-Inhaltes dieses Artikels und gab einen HTTP 504-Fehler zurück.",
21
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_UPSTREAM_TIMEOUT": "Beim Erstellen dieser ZIM hatte die ActionParse API des Servers ${server} eine Zeitüberschreitung beim Verarbeiten dieses Artikels und gab einen HTTP 504-Fehler zurück.",
22
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_HTML_503_ERROR": "Beim Erstellen dieser ZIM gab die ActionParse API des Servers ${server} einen HTTP 503-Fehler zurück, beim Erhalten von Details über das HTML des Artikels.",
23
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_BAD_REVISION_ERROR": "Beim Erstellen dieser ZIM hatte die ActionParse API des Servers ${server} einen unerwarteten Schlechte Versions-ID Fehler, beim Erhalten von Details über das HTML des Artikels.",
24
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_UNREACHABLE_EXCEPTION_ERROR": "Beim Erstellen dieser ZIM hatte die ActionParse API des Servers ${server} einen nicht erreichbaren Ausnahmefehler, beim Erhalten von Details über das HTML des Artikels.",
25
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INVARIANT_EXCEPTION_ERROR": "Beim Erstellen des von dir durchsuchten ZIM hat die ActionParse-API des Servers ${server} beim Angeben von Details zu diesem Artikel-HTML einen invarianten Ausnahmefehler ausgelöst.",
26
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_PARSOID_RESOURCE_LIMIT_EXCEEDED": "Beim Erstellen dieser ZIM hatte die ActionParse API des Servers ${server} einen Fehler bezüglich überschrittener Parsoid-Ressourcengrenzen, beim Erhalten von Details über das HTML des Artikels.",
27
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_GENERIC_INTERNAL_API_ERROR": "Beim Erstellen dieser ZIM hatte die ActionParse API des Servers ${server} einen internen API-Fehler, beim Erhalten von Details über das HTML des Artikels.",
28
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INTERNAL_API_TYPE_ERROR": "Beim Erstellen des von dir durchsuchten ZIM hat die ActionParse-API des Servers ${server} beim Angeben von Details zu diesem Artikel-HTML einen internen API-Typfehler ausgelöst.",
29
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INVALID_ARGUMENT_EXCEPTION_ERROR": "Als das ZIM, das Sie durchsuchen, erstellt wurde, erhob der Server ${server} ActionParse API einen Argument-Ausnahmerfehler, während er Details über diesen HTML-Artikel gab.",
30
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_TRUNCATED_RESPONSE": "Beim Erstellen dieser ZIM konnte die ActionParse API des Servers ${server} keine Details über das HTML des Artikels geben weil der Artikel viel zu groß ist. Jemand sollte wohl den Artikel auf dem Server ${server} in mehrere kleinere Artikel aufteilen.",
31
- "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_EMPTY_500_RESPONSE": "Beim Erstellen dieser ZIM gab die ActionParse API des Servers ${server} keine Details über das HTML des Artikels, nur eine leere Antwort.",
45
+ "DOWNLOAD_ERRORS_MESSAGE": "Der angeforderte Artikel „{{pageTitle}}“ ist in diesem ZIM nicht verfügbar, er konnte nicht von {{server}} abgerufen werden.",
46
+ "DOWNLOAD_ERRORS_LINE1_DELETED_PAGE": "Dieser Artikel wurde gelöscht, nachdem wir die Liste der abzurufenden Artikel zusammengestellt hatten, aber bevor wir ihn zum Erstellen dieser ZIM abgerufen haben.",
47
+ "DOWNLOAD_ERRORS_LINE1_CLIENT_SIDE_TIMEOUT": "Als das ZIM, das du durchsuchst, erstellt wurde, konnte der {{server}}-Server nicht rechtzeitig Details über diesen HTML-Artikel geben.",
48
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_UPSTREAM_TIMEOUT": "Beim Erstellen dieser ZIM hatte die ActionParse API des Servers {{server}} eine Zeitüberschreitung beim Verarbeiten dieses Artikels und gab einen HTTP 504-Fehler zurück.",
49
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_HTML_503_ERROR": "Beim Erstellen dieser ZIM gab die ActionParse API des Servers {{server}} beim Erhalten von Details über das HTML des Artikels einen HTTP 503-Fehler zurück.",
50
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_BAD_REVISION_ERROR": "Beim Erstellen dieser ZIM hatte die ActionParse API des Servers {{server}} einen unerwarteten Schlechte Versions-ID Fehler, beim Erhalten von Details über das HTML des Artikels.",
51
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_UNREACHABLE_EXCEPTION_ERROR": "Beim Erstellen dieser ZIM hatte die ActionParse API des Servers {{server}} einen nicht erreichbaren Ausnahmefehler, beim Erhalten von Details über das HTML des Artikels.",
52
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INVARIANT_EXCEPTION_ERROR": "Beim Erstellen des von dir durchsuchten ZIM hat die ActionParse-API des Servers {{server}} beim Angeben von Details zu diesem Artikel-HTML einen invarianten Ausnahmefehler ausgelöst.",
53
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_PARSOID_RESOURCE_LIMIT_EXCEEDED": "Beim Erstellen dieser ZIM hatte die ActionParse API des Servers {{server}} einen Fehler bezüglich überschrittener Parsoid-Ressourcengrenzen, beim Erhalten von Details über das HTML des Artikels.",
54
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_GENERIC_INTERNAL_API_ERROR": "Beim Erstellen dieser ZIM hatte die ActionParse API des Servers {{server}} einen internen API-Fehler, beim Erhalten von Details über das HTML des Artikels.",
55
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INTERNAL_API_TYPE_ERROR": "Beim Erstellen des von dir durchsuchten ZIM hat die ActionParse-API des Servers {{server}} beim Angeben von Details zu diesem Artikel-HTML einen internen API-Typfehler ausgelöst.",
56
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_INVALID_ARGUMENT_EXCEPTION_ERROR": "Als das ZIM, das Sie durchsuchen, erstellt wurde, gab der Server {{server}} ActionParse API einen Argument-Ausnahmerfehler zurück, während er Details über diesen HTML-Artikel gab.",
57
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_TRUNCATED_RESPONSE": "Beim Erstellen dieser ZIM konnte die ActionParse API des Servers {{server}} keine Details über das HTML des Artikels geben, weil der Artikel viel zu groß ist. Jemand sollte wohl den Artikel auf dem Server {{server}} in mehrere kleinere Artikel aufteilen.",
58
+ "DOWNLOAD_ERRORS_LINE1_ACTION_PARSE_EMPTY_500_RESPONSE": "Beim Erstellen dieser ZIM gab die ActionParse API des Servers {{server}} keine Details über das HTML des Artikels, nur eine leere Antwort.",
32
59
  "DOWNLOAD_ERRORS_LINE2": "Der fehlende Artikel wurde durch die Platzhalterseite ersetzt, die Sie aktuell sehen.",
33
- "DOWNLOAD_ERRORS_LINE3": "Hoffen wir, dass das Problem auf dem Server ${server} gelöst wird und unsere nächste Version dieser ZIM diesen Artikel enthält."
60
+ "DOWNLOAD_ERRORS_LINE3": "Hoffen wir, dass das Problem auf dem Server {{server}} gelöst wird und unsere nächste Version dieser ZIM diesen Artikel enthält."
34
61
  }