modules/setlanguage.js

  1. /**
  2. * @license
  3. * Licensed under the MIT License.
  4. * http://opensource.org/licenses/mit-license
  5. */
  6. import { jsPDF } from "../jspdf.js";
  7. /**
  8. * jsPDF setLanguage Plugin
  9. *
  10. * @name setLanguage
  11. * @module
  12. */
  13. (function(jsPDFAPI) {
  14. "use strict";
  15. /**
  16. * Add Language Tag to the generated PDF
  17. *
  18. * @name setLanguage
  19. * @function
  20. * @param {string} langCode The Language code as ISO-639-1 (e.g. 'en') or as country language code (e.g. 'en-GB').
  21. * @returns {jsPDF}
  22. * @example
  23. * var doc = new jsPDF()
  24. * doc.text(10, 10, 'This is a test')
  25. * doc.setLanguage("en-US")
  26. * doc.save('english.pdf')
  27. */
  28. jsPDFAPI.setLanguage = function(langCode) {
  29. "use strict";
  30. var langCodes = {
  31. af: "Afrikaans",
  32. sq: "Albanian",
  33. ar: "Arabic (Standard)",
  34. "ar-DZ": "Arabic (Algeria)",
  35. "ar-BH": "Arabic (Bahrain)",
  36. "ar-EG": "Arabic (Egypt)",
  37. "ar-IQ": "Arabic (Iraq)",
  38. "ar-JO": "Arabic (Jordan)",
  39. "ar-KW": "Arabic (Kuwait)",
  40. "ar-LB": "Arabic (Lebanon)",
  41. "ar-LY": "Arabic (Libya)",
  42. "ar-MA": "Arabic (Morocco)",
  43. "ar-OM": "Arabic (Oman)",
  44. "ar-QA": "Arabic (Qatar)",
  45. "ar-SA": "Arabic (Saudi Arabia)",
  46. "ar-SY": "Arabic (Syria)",
  47. "ar-TN": "Arabic (Tunisia)",
  48. "ar-AE": "Arabic (U.A.E.)",
  49. "ar-YE": "Arabic (Yemen)",
  50. an: "Aragonese",
  51. hy: "Armenian",
  52. as: "Assamese",
  53. ast: "Asturian",
  54. az: "Azerbaijani",
  55. eu: "Basque",
  56. be: "Belarusian",
  57. bn: "Bengali",
  58. bs: "Bosnian",
  59. br: "Breton",
  60. bg: "Bulgarian",
  61. my: "Burmese",
  62. ca: "Catalan",
  63. ch: "Chamorro",
  64. ce: "Chechen",
  65. zh: "Chinese",
  66. "zh-HK": "Chinese (Hong Kong)",
  67. "zh-CN": "Chinese (PRC)",
  68. "zh-SG": "Chinese (Singapore)",
  69. "zh-TW": "Chinese (Taiwan)",
  70. cv: "Chuvash",
  71. co: "Corsican",
  72. cr: "Cree",
  73. hr: "Croatian",
  74. cs: "Czech",
  75. da: "Danish",
  76. nl: "Dutch (Standard)",
  77. "nl-BE": "Dutch (Belgian)",
  78. en: "English",
  79. "en-AU": "English (Australia)",
  80. "en-BZ": "English (Belize)",
  81. "en-CA": "English (Canada)",
  82. "en-IE": "English (Ireland)",
  83. "en-JM": "English (Jamaica)",
  84. "en-NZ": "English (New Zealand)",
  85. "en-PH": "English (Philippines)",
  86. "en-ZA": "English (South Africa)",
  87. "en-TT": "English (Trinidad & Tobago)",
  88. "en-GB": "English (United Kingdom)",
  89. "en-US": "English (United States)",
  90. "en-ZW": "English (Zimbabwe)",
  91. eo: "Esperanto",
  92. et: "Estonian",
  93. fo: "Faeroese",
  94. fj: "Fijian",
  95. fi: "Finnish",
  96. fr: "French (Standard)",
  97. "fr-BE": "French (Belgium)",
  98. "fr-CA": "French (Canada)",
  99. "fr-FR": "French (France)",
  100. "fr-LU": "French (Luxembourg)",
  101. "fr-MC": "French (Monaco)",
  102. "fr-CH": "French (Switzerland)",
  103. fy: "Frisian",
  104. fur: "Friulian",
  105. gd: "Gaelic (Scots)",
  106. "gd-IE": "Gaelic (Irish)",
  107. gl: "Galacian",
  108. ka: "Georgian",
  109. de: "German (Standard)",
  110. "de-AT": "German (Austria)",
  111. "de-DE": "German (Germany)",
  112. "de-LI": "German (Liechtenstein)",
  113. "de-LU": "German (Luxembourg)",
  114. "de-CH": "German (Switzerland)",
  115. el: "Greek",
  116. gu: "Gujurati",
  117. ht: "Haitian",
  118. he: "Hebrew",
  119. hi: "Hindi",
  120. hu: "Hungarian",
  121. is: "Icelandic",
  122. id: "Indonesian",
  123. iu: "Inuktitut",
  124. ga: "Irish",
  125. it: "Italian (Standard)",
  126. "it-CH": "Italian (Switzerland)",
  127. ja: "Japanese",
  128. kn: "Kannada",
  129. ks: "Kashmiri",
  130. kk: "Kazakh",
  131. km: "Khmer",
  132. ky: "Kirghiz",
  133. tlh: "Klingon",
  134. ko: "Korean",
  135. "ko-KP": "Korean (North Korea)",
  136. "ko-KR": "Korean (South Korea)",
  137. la: "Latin",
  138. lv: "Latvian",
  139. lt: "Lithuanian",
  140. lb: "Luxembourgish",
  141. mk: "North Macedonia",
  142. ms: "Malay",
  143. ml: "Malayalam",
  144. mt: "Maltese",
  145. mi: "Maori",
  146. mr: "Marathi",
  147. mo: "Moldavian",
  148. nv: "Navajo",
  149. ng: "Ndonga",
  150. ne: "Nepali",
  151. no: "Norwegian",
  152. nb: "Norwegian (Bokmal)",
  153. nn: "Norwegian (Nynorsk)",
  154. oc: "Occitan",
  155. or: "Oriya",
  156. om: "Oromo",
  157. fa: "Persian",
  158. "fa-IR": "Persian/Iran",
  159. pl: "Polish",
  160. pt: "Portuguese",
  161. "pt-BR": "Portuguese (Brazil)",
  162. pa: "Punjabi",
  163. "pa-IN": "Punjabi (India)",
  164. "pa-PK": "Punjabi (Pakistan)",
  165. qu: "Quechua",
  166. rm: "Rhaeto-Romanic",
  167. ro: "Romanian",
  168. "ro-MO": "Romanian (Moldavia)",
  169. ru: "Russian",
  170. "ru-MO": "Russian (Moldavia)",
  171. sz: "Sami (Lappish)",
  172. sg: "Sango",
  173. sa: "Sanskrit",
  174. sc: "Sardinian",
  175. sd: "Sindhi",
  176. si: "Singhalese",
  177. sr: "Serbian",
  178. sk: "Slovak",
  179. sl: "Slovenian",
  180. so: "Somani",
  181. sb: "Sorbian",
  182. es: "Spanish",
  183. "es-AR": "Spanish (Argentina)",
  184. "es-BO": "Spanish (Bolivia)",
  185. "es-CL": "Spanish (Chile)",
  186. "es-CO": "Spanish (Colombia)",
  187. "es-CR": "Spanish (Costa Rica)",
  188. "es-DO": "Spanish (Dominican Republic)",
  189. "es-EC": "Spanish (Ecuador)",
  190. "es-SV": "Spanish (El Salvador)",
  191. "es-GT": "Spanish (Guatemala)",
  192. "es-HN": "Spanish (Honduras)",
  193. "es-MX": "Spanish (Mexico)",
  194. "es-NI": "Spanish (Nicaragua)",
  195. "es-PA": "Spanish (Panama)",
  196. "es-PY": "Spanish (Paraguay)",
  197. "es-PE": "Spanish (Peru)",
  198. "es-PR": "Spanish (Puerto Rico)",
  199. "es-ES": "Spanish (Spain)",
  200. "es-UY": "Spanish (Uruguay)",
  201. "es-VE": "Spanish (Venezuela)",
  202. sx: "Sutu",
  203. sw: "Swahili",
  204. sv: "Swedish",
  205. "sv-FI": "Swedish (Finland)",
  206. "sv-SV": "Swedish (Sweden)",
  207. ta: "Tamil",
  208. tt: "Tatar",
  209. te: "Teluga",
  210. th: "Thai",
  211. tig: "Tigre",
  212. ts: "Tsonga",
  213. tn: "Tswana",
  214. tr: "Turkish",
  215. tk: "Turkmen",
  216. uk: "Ukrainian",
  217. hsb: "Upper Sorbian",
  218. ur: "Urdu",
  219. ve: "Venda",
  220. vi: "Vietnamese",
  221. vo: "Volapuk",
  222. wa: "Walloon",
  223. cy: "Welsh",
  224. xh: "Xhosa",
  225. ji: "Yiddish",
  226. zu: "Zulu"
  227. };
  228. if (this.internal.languageSettings === undefined) {
  229. this.internal.languageSettings = {};
  230. this.internal.languageSettings.isSubscribed = false;
  231. }
  232. if (langCodes[langCode] !== undefined) {
  233. this.internal.languageSettings.languageCode = langCode;
  234. if (this.internal.languageSettings.isSubscribed === false) {
  235. this.internal.events.subscribe("putCatalog", function() {
  236. this.internal.write(
  237. "/Lang (" + this.internal.languageSettings.languageCode + ")"
  238. );
  239. });
  240. this.internal.languageSettings.isSubscribed = true;
  241. }
  242. }
  243. return this;
  244. };
  245. })(jsPDF.API);