@tilde-nlp/ngx-translate 1.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 (541) hide show
  1. package/README.md +2 -0
  2. package/esm2020/lib/components/shared/extension-dialog/components/index.mjs +2 -0
  3. package/esm2020/lib/components/shared/extension-dialog/components/open-extension-dialog/open-extension-dialog.component.mjs +24 -0
  4. package/esm2020/lib/components/shared/extension-dialog/extension-dialog.component.mjs +133 -0
  5. package/esm2020/lib/components/shared/extension-dialog/extension-dialog.module.mjs +51 -0
  6. package/esm2020/lib/components/shared/extension-dialog/index.mjs +6 -0
  7. package/esm2020/lib/components/shared/extension-dialog/models/enums/file-categories.enum.mjs +9 -0
  8. package/esm2020/lib/components/shared/extension-dialog/models/enums/file-extensions.enum.mjs +35 -0
  9. package/esm2020/lib/components/shared/extension-dialog/models/enums/file-type-icons.enum.mjs +13 -0
  10. package/esm2020/lib/components/shared/extension-dialog/models/enums/file-types.enum.mjs +13 -0
  11. package/esm2020/lib/components/shared/extension-dialog/models/enums/index.mjs +5 -0
  12. package/esm2020/lib/components/shared/extension-dialog/models/index.mjs +3 -0
  13. package/esm2020/lib/components/shared/extension-dialog/models/interfaces/config.mjs +2 -0
  14. package/esm2020/lib/components/shared/extension-dialog/models/interfaces/dialog-data.model.mjs +2 -0
  15. package/esm2020/lib/components/shared/extension-dialog/models/interfaces/index.mjs +3 -0
  16. package/esm2020/lib/components/shared/extension-dialog/services/extension-dialog.service.mjs +22 -0
  17. package/esm2020/lib/components/shared/extension-dialog/services/index.mjs +2 -0
  18. package/esm2020/lib/components/shared/text-to-speech/index.mjs +3 -0
  19. package/esm2020/lib/components/shared/text-to-speech/models/text-to-speech-settings.model.mjs +2 -0
  20. package/esm2020/lib/components/shared/text-to-speech/text-to-speech.component.mjs +62 -0
  21. package/esm2020/lib/components/shared/text-to-speech/text-to-speech.module.mjs +36 -0
  22. package/esm2020/lib/components/shared/vendor-disclaimer/vendor-disclaimer.component.mjs +39 -0
  23. package/esm2020/lib/components/shared/vendor-disclaimer/vendor-disclaimer.module.mjs +28 -0
  24. package/esm2020/lib/factories/file-api-service.factory.mjs +12 -0
  25. package/esm2020/lib/factories/system-service.factory.mjs +12 -0
  26. package/esm2020/lib/factories/text-api-service.factory.mjs +12 -0
  27. package/esm2020/lib/i18n/available-languages.mjs +19 -0
  28. package/esm2020/lib/i18n/de.mjs +378 -0
  29. package/esm2020/lib/i18n/en.mjs +426 -0
  30. package/esm2020/lib/i18n/et.mjs +378 -0
  31. package/esm2020/lib/i18n/fi.mjs +383 -0
  32. package/esm2020/lib/i18n/lt.mjs +378 -0
  33. package/esm2020/lib/i18n/lv.mjs +391 -0
  34. package/esm2020/lib/i18n/models/available-languages.model.mjs +2 -0
  35. package/esm2020/lib/i18n/pl.mjs +378 -0
  36. package/esm2020/lib/i18n/sv.mjs +242 -0
  37. package/esm2020/lib/injection-tokens/file-api-service.token.mjs +2 -0
  38. package/esm2020/lib/injection-tokens/index.mjs +6 -0
  39. package/esm2020/lib/injection-tokens/system-service.token.mjs +2 -0
  40. package/esm2020/lib/injection-tokens/text-api-service.token.mjs +2 -0
  41. package/esm2020/lib/injection-tokens/tld-translate-config.token.mjs +2 -0
  42. package/esm2020/lib/injection-tokens/translation-api-version.token.mjs +2 -0
  43. package/esm2020/lib/modules/material.module.mjs +97 -0
  44. package/esm2020/lib/modules/tld-audio/index.mjs +4 -0
  45. package/esm2020/lib/modules/tld-audio/models/audio-error-case.model.mjs +13 -0
  46. package/esm2020/lib/modules/tld-audio/models/dictate-configurationi.model.mjs +2 -0
  47. package/esm2020/lib/modules/tld-audio/models/index.mjs +3 -0
  48. package/esm2020/lib/modules/tld-audio/models/transcription-update.model.mjs +2 -0
  49. package/esm2020/lib/modules/tld-audio/services/audio-record.service.mjs +116 -0
  50. package/esm2020/lib/modules/tld-audio/services/index.mjs +4 -0
  51. package/esm2020/lib/modules/tld-audio/services/tld-voice-input-api.service.mjs +48 -0
  52. package/esm2020/lib/modules/tld-audio/services/tld-voice-input.service.mjs +60 -0
  53. package/esm2020/lib/modules/tld-audio/tld-audio.module.mjs +41 -0
  54. package/esm2020/lib/modules/tld-audio/tld-dictate/tld-dictate.component.mjs +151 -0
  55. package/esm2020/lib/modules/tld-audio/tld-record/tld-record.component.mjs +87 -0
  56. package/esm2020/lib/modules/tld-common/animations/pulse.animation.mjs +11 -0
  57. package/esm2020/lib/modules/tld-common/components/index.mjs +10 -0
  58. package/esm2020/lib/modules/tld-common/components/open-close-button/open-close-button.component.mjs +41 -0
  59. package/esm2020/lib/modules/tld-common/components/source-and-target-wrapper/source-and-target-wrapper.component.mjs +44 -0
  60. package/esm2020/lib/modules/tld-common/components/tld-file-upload/tld-file-upload.component.mjs +103 -0
  61. package/esm2020/lib/modules/tld-common/components/tld-lang-list/tld-lang-list.component.mjs +193 -0
  62. package/esm2020/lib/modules/tld-common/components/tld-list-menu/tld-list-menu.component.mjs +60 -0
  63. package/esm2020/lib/modules/tld-common/components/tld-loader/tld-loader.component.mjs +12 -0
  64. package/esm2020/lib/modules/tld-common/components/tld-message/tld-message.component.mjs +49 -0
  65. package/esm2020/lib/modules/tld-common/components/tld-translate-achievement/tld-translate-achievement.component.mjs +17 -0
  66. package/esm2020/lib/modules/tld-common/components/translate-button/tld-translate-button.service.mjs +30 -0
  67. package/esm2020/lib/modules/tld-common/components/translate-button/translate-button.component.mjs +59 -0
  68. package/esm2020/lib/modules/tld-common/directives/drag-and-drop.directive.mjs +57 -0
  69. package/esm2020/lib/modules/tld-common/directives/index.mjs +2 -0
  70. package/esm2020/lib/modules/tld-common/index.mjs +2 -0
  71. package/esm2020/lib/modules/tld-common/models/auth-options.model.mjs +2 -0
  72. package/esm2020/lib/modules/tld-common/models/common.mjs +107 -0
  73. package/esm2020/lib/modules/tld-common/models/configs/tld-audio-config.model.mjs +2 -0
  74. package/esm2020/lib/modules/tld-common/models/configs/tld-term-config.model.mjs +2 -0
  75. package/esm2020/lib/modules/tld-common/models/configs/tld-text-to-speech-config.model.mjs +2 -0
  76. package/esm2020/lib/modules/tld-common/models/configs/tld-translate-api-v2-config.model.mjs +2 -0
  77. package/esm2020/lib/modules/tld-common/models/configs/tld-translate-config.model.mjs +2 -0
  78. package/esm2020/lib/modules/tld-common/models/configs/tld-translate-core-config.model.mjs +2 -0
  79. package/esm2020/lib/modules/tld-common/models/configs/tld-translate-file-config.model.mjs +2 -0
  80. package/esm2020/lib/modules/tld-common/models/configs/tld-translate-text-config.model.mjs +2 -0
  81. package/esm2020/lib/modules/tld-common/models/configs/tld-translate-web-config.model.mjs +2 -0
  82. package/esm2020/lib/modules/tld-common/models/core/index.mjs +3 -0
  83. package/esm2020/lib/modules/tld-common/models/core/language-menu-version.enum.mjs +6 -0
  84. package/esm2020/lib/modules/tld-common/models/core/translation-api-version.model.mjs +6 -0
  85. package/esm2020/lib/modules/tld-common/models/errors/error-codes.enum.mjs +27 -0
  86. package/esm2020/lib/modules/tld-common/models/errors/error-codes.type.mjs +2 -0
  87. package/esm2020/lib/modules/tld-common/models/errors/error.model.mjs +2 -0
  88. package/esm2020/lib/modules/tld-common/models/file-upload.model.mjs +10 -0
  89. package/esm2020/lib/modules/tld-common/models/index.mjs +22 -0
  90. package/esm2020/lib/modules/tld-common/models/lang-list-item.model.mjs +2 -0
  91. package/esm2020/lib/modules/tld-common/models/language-with-translation.model.mjs +2 -0
  92. package/esm2020/lib/modules/tld-common/models/message.model.mjs +7 -0
  93. package/esm2020/lib/modules/tld-common/models/selected-language.model.mjs +2 -0
  94. package/esm2020/lib/modules/tld-common/models/services/file-api/download-file-params.model.mjs +2 -0
  95. package/esm2020/lib/modules/tld-common/models/services/file-api/file-api-service.model.mjs +2 -0
  96. package/esm2020/lib/modules/tld-common/models/services/file-api/file-meta.model.mjs +2 -0
  97. package/esm2020/lib/modules/tld-common/models/services/file-api/file-translation-substatus.model.mjs +9 -0
  98. package/esm2020/lib/modules/tld-common/models/services/file-api/get-file-status-params.model.mjs +2 -0
  99. package/esm2020/lib/modules/tld-common/models/services/file-api/get-file-translation-status-response.model.mjs +2 -0
  100. package/esm2020/lib/modules/tld-common/models/services/file-api/remove-file-params.model.mjs +2 -0
  101. package/esm2020/lib/modules/tld-common/models/services/file-api/source-file-preview-response.model.mjs +2 -0
  102. package/esm2020/lib/modules/tld-common/models/services/file-api/start-file-translation-params.model.mjs +2 -0
  103. package/esm2020/lib/modules/tld-common/models/services/file-api/translated-document-preview-params.model.mjs +2 -0
  104. package/esm2020/lib/modules/tld-common/models/services/index.mjs +19 -0
  105. package/esm2020/lib/modules/tld-common/models/services/system/system.model.mjs +2 -0
  106. package/esm2020/lib/modules/tld-common/models/services/system/tld-system-api-service.model.mjs +2 -0
  107. package/esm2020/lib/modules/tld-common/models/services/text-api/check-grammar-response.model.mjs +2 -0
  108. package/esm2020/lib/modules/tld-common/models/services/text-api/tld-translate-text-api-service.model.mjs +2 -0
  109. package/esm2020/lib/modules/tld-common/models/services/text-api/translate-paragraph-request-params.model.mjs +2 -0
  110. package/esm2020/lib/modules/tld-common/models/services/voice-to-text/voice-to-text-job-state.model.mjs +7 -0
  111. package/esm2020/lib/modules/tld-common/models/services/voice-to-text/voice-to-text-job.model.mjs +2 -0
  112. package/esm2020/lib/modules/tld-common/models/services/voice-to-text/voice-to-text-start-job-request-params.model.mjs +2 -0
  113. package/esm2020/lib/modules/tld-common/pipes/index.mjs +2 -0
  114. package/esm2020/lib/modules/tld-common/pipes/translate-domain.pipe.mjs +27 -0
  115. package/esm2020/lib/modules/tld-common/services/icon-service/icon.service.mjs +30 -0
  116. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/excel.icon.mjs +22 -0
  117. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/index.mjs +10 -0
  118. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/interchange.icon.mjs +6 -0
  119. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/office-other.icon.mjs +6 -0
  120. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/other.icon.mjs +6 -0
  121. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/pdf.icon.mjs +12 -0
  122. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/powerpoint.icon.mjs +10 -0
  123. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/scanned.icon.mjs +6 -0
  124. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/web.icon.mjs +6 -0
  125. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/word.icon.mjs +11 -0
  126. package/esm2020/lib/modules/tld-common/services/icon-service/icons.mjs +52 -0
  127. package/esm2020/lib/modules/tld-common/services/index.mjs +5 -0
  128. package/esm2020/lib/modules/tld-common/services/scroll/tld-scroll.service.mjs +43 -0
  129. package/esm2020/lib/modules/tld-common/services/tld-alert.service.mjs +139 -0
  130. package/esm2020/lib/modules/tld-common/services/tld-highlight.service.mjs +25 -0
  131. package/esm2020/lib/modules/tld-common/services/tld-translate-config.service.mjs +226 -0
  132. package/esm2020/lib/modules/tld-common/services/wtw-link-params.service.mjs +33 -0
  133. package/esm2020/lib/modules/tld-common/tld-common.module.mjs +97 -0
  134. package/esm2020/lib/modules/tld-document/download-button/download-button.component.mjs +78 -0
  135. package/esm2020/lib/modules/tld-document/image-conversion-help/image-conversion-help.component.mjs +32 -0
  136. package/esm2020/lib/modules/tld-document/index.mjs +8 -0
  137. package/esm2020/lib/modules/tld-document/models/file-conversion-types.model.mjs +6 -0
  138. package/esm2020/lib/modules/tld-document/models/index.mjs +6 -0
  139. package/esm2020/lib/modules/tld-document/models/start-translation.model.mjs +2 -0
  140. package/esm2020/lib/modules/tld-document/models/translate-file.model.mjs +2 -0
  141. package/esm2020/lib/modules/tld-document/models/translation-statuss.model.mjs +15 -0
  142. package/esm2020/lib/modules/tld-document/models/upload-response.model.mjs +2 -0
  143. package/esm2020/lib/modules/tld-document/pdf-conversion-help/pdf-conversion-help.component.mjs +32 -0
  144. package/esm2020/lib/modules/tld-document/services/api/file-api.service.mjs +166 -0
  145. package/esm2020/lib/modules/tld-document/services/api/models/file-preview-v1-progress-response.model.mjs +2 -0
  146. package/esm2020/lib/modules/tld-document/services/api/models/file-preview-v1-response-body.model.mjs +2 -0
  147. package/esm2020/lib/modules/tld-document/services/api/models/get-file-translation-status-v1-response.model.mjs +2 -0
  148. package/esm2020/lib/modules/tld-document/services/api-v2/file-api-v2.service.mjs +87 -0
  149. package/esm2020/lib/modules/tld-document/services/api-v2/models/file-category-v2.model.mjs +6 -0
  150. package/esm2020/lib/modules/tld-document/services/api-v2/models/file-translation-status-v2-response.model.mjs +2 -0
  151. package/esm2020/lib/modules/tld-document/services/index.mjs +3 -0
  152. package/esm2020/lib/modules/tld-document/services/tld-translate-file.service.mjs +398 -0
  153. package/esm2020/lib/modules/tld-document/tld-document.module.mjs +70 -0
  154. package/esm2020/lib/modules/tld-document/tld-file-translate-base.component.mjs +76 -0
  155. package/esm2020/lib/modules/tld-document/tld-translate-file-multiple/tld-translate-file-multiple.component.mjs +94 -0
  156. package/esm2020/lib/modules/tld-term/index.mjs +7 -0
  157. package/esm2020/lib/modules/tld-term/models/converted-collection-tooltip-key.model.mjs +7 -0
  158. package/esm2020/lib/modules/tld-term/models/converted-collection-type.model.mjs +9 -0
  159. package/esm2020/lib/modules/tld-term/models/index.mjs +7 -0
  160. package/esm2020/lib/modules/tld-term/models/mt-api/tld-mt-term-collection.model.mjs +2 -0
  161. package/esm2020/lib/modules/tld-term/models/mt-collection-status.model.mjs +7 -0
  162. package/esm2020/lib/modules/tld-term/models/term-api/tld-term-collection-languages.model.mjs +2 -0
  163. package/esm2020/lib/modules/tld-term/models/term-api/tld-term-collection.model.mjs +2 -0
  164. package/esm2020/lib/modules/tld-term/models/tld-converted-collection.model.mjs +114 -0
  165. package/esm2020/lib/modules/tld-term/services/index.mjs +4 -0
  166. package/esm2020/lib/modules/tld-term/services/mt-collections-api.service.mjs +33 -0
  167. package/esm2020/lib/modules/tld-term/services/term-api.service.mjs +34 -0
  168. package/esm2020/lib/modules/tld-term/services/tld-term-collections.service.mjs +253 -0
  169. package/esm2020/lib/modules/tld-term/tld-term-collection/tld-term-collection.component.mjs +19 -0
  170. package/esm2020/lib/modules/tld-term/tld-term-collection-list/tld-term-collection-list.component.mjs +99 -0
  171. package/esm2020/lib/modules/tld-term/tld-term-create-collection-dialog/tld-term-create-collection-dialog.component.mjs +47 -0
  172. package/esm2020/lib/modules/tld-term/tld-term-menu/tld-term-menu.component.mjs +36 -0
  173. package/esm2020/lib/modules/tld-term/tld-term-promotion/tld-term-promotion.component.mjs +35 -0
  174. package/esm2020/lib/modules/tld-term/tld-term.module.mjs +67 -0
  175. package/esm2020/lib/modules/tld-text/components/highlight-tree/highlight-tree.component.mjs +109 -0
  176. package/esm2020/lib/modules/tld-text/components/progress-indicator/progress-indicator.component.mjs +35 -0
  177. package/esm2020/lib/modules/tld-text/components/textarea-with-background/textarea-with-background.component.mjs +153 -0
  178. package/esm2020/lib/modules/tld-text/components/tld-dictionary/tld-dictionary.component.mjs +56 -0
  179. package/esm2020/lib/modules/tld-text/components/tld-translate-source/tld-translate-source.component.mjs +60 -0
  180. package/esm2020/lib/modules/tld-text/components/tld-translate-suggest/dialog/suggest-translation.model.mjs +2 -0
  181. package/esm2020/lib/modules/tld-text/components/tld-translate-suggest/dialog/tld-translate-suggest-dialog.component.mjs +92 -0
  182. package/esm2020/lib/modules/tld-text/components/tld-translate-suggest/tld-translate-suggest.component.mjs +60 -0
  183. package/esm2020/lib/modules/tld-text/components/tld-translate-text/tld-translate-text.component.mjs +272 -0
  184. package/esm2020/lib/modules/tld-text/index.mjs +9 -0
  185. package/esm2020/lib/modules/tld-text/models/check-grammar-response-v2.model.mjs +2 -0
  186. package/esm2020/lib/modules/tld-text/models/dictionary.model.mjs +2 -0
  187. package/esm2020/lib/modules/tld-text/models/get-sentence-v1-response.model.mjs +2 -0
  188. package/esm2020/lib/modules/tld-text/models/grammar-check-base.model.mjs +2 -0
  189. package/esm2020/lib/modules/tld-text/models/grammar-check-meta.model.mjs +2 -0
  190. package/esm2020/lib/modules/tld-text/models/grammar-check-replacement.model.mjs +2 -0
  191. package/esm2020/lib/modules/tld-text/models/grammar-correction-v2.model.mjs +2 -0
  192. package/esm2020/lib/modules/tld-text/models/highlight-params.model.mjs +11 -0
  193. package/esm2020/lib/modules/tld-text/models/highlight-tree-type.model.mjs +12 -0
  194. package/esm2020/lib/modules/tld-text/models/highlight-tree.model.mjs +2 -0
  195. package/esm2020/lib/modules/tld-text/models/highlight.model.mjs +2 -0
  196. package/esm2020/lib/modules/tld-text/models/index.mjs +11 -0
  197. package/esm2020/lib/modules/tld-text/models/retranslate-params.model.mjs +2 -0
  198. package/esm2020/lib/modules/tld-text/models/source-text-changed.model.mjs +2 -0
  199. package/esm2020/lib/modules/tld-text/models/translate-paragraph-params.model.mjs +2 -0
  200. package/esm2020/lib/modules/tld-text/models/translate-paragraph-response-v1.model.mjs +2 -0
  201. package/esm2020/lib/modules/tld-text/models/translate-paragraph-response-v2.model.mjs +2 -0
  202. package/esm2020/lib/modules/tld-text/models/translate-paragraph-response.model.mjs +2 -0
  203. package/esm2020/lib/modules/tld-text/models/untranslated-paragraph.model.mjs +2 -0
  204. package/esm2020/lib/modules/tld-text/services/api/tld-translate-text-api.service.mjs +187 -0
  205. package/esm2020/lib/modules/tld-text/services/api-v2/tld-translate-text-api-v2.service.mjs +110 -0
  206. package/esm2020/lib/modules/tld-text/services/index.mjs +2 -0
  207. package/esm2020/lib/modules/tld-text/services/tld-translate-text.service.mjs +380 -0
  208. package/esm2020/lib/modules/tld-text/tld-text.module.mjs +95 -0
  209. package/esm2020/lib/modules/tld-text/utils/index.mjs +2 -0
  210. package/esm2020/lib/modules/tld-text/utils/models/existing-paragraph-info.model.mjs +2 -0
  211. package/esm2020/lib/modules/tld-text/utils/models/index.mjs +2 -0
  212. package/esm2020/lib/modules/tld-text/utils/tld-translate-text.utils.mjs +56 -0
  213. package/esm2020/lib/modules/tld-tooltip/index.mjs +5 -0
  214. package/esm2020/lib/modules/tld-tooltip/models/active-data.model.mjs +2 -0
  215. package/esm2020/lib/modules/tld-tooltip/models/domain.model.mjs +2 -0
  216. package/esm2020/lib/modules/tld-tooltip/models/index.mjs +5 -0
  217. package/esm2020/lib/modules/tld-tooltip/models/switcher-options.model.mjs +2 -0
  218. package/esm2020/lib/modules/tld-tooltip/models/system-metadata-keys.model.mjs +7 -0
  219. package/esm2020/lib/modules/tld-tooltip/models/vendor.model.mjs +2 -0
  220. package/esm2020/lib/modules/tld-tooltip/services/api/models/description.model.mjs +2 -0
  221. package/esm2020/lib/modules/tld-tooltip/services/api/models/language.model.mjs +2 -0
  222. package/esm2020/lib/modules/tld-tooltip/services/api/models/metadata.model.mjs +2 -0
  223. package/esm2020/lib/modules/tld-tooltip/services/api/models/name.model.mjs +2 -0
  224. package/esm2020/lib/modules/tld-tooltip/services/api/models/system.model.mjs +2 -0
  225. package/esm2020/lib/modules/tld-tooltip/services/api/tld-system-api.service.mjs +57 -0
  226. package/esm2020/lib/modules/tld-tooltip/services/api-v2/models/error.model.mjs +2 -0
  227. package/esm2020/lib/modules/tld-tooltip/services/api-v2/models/get-langauge-direction.mjs +2 -0
  228. package/esm2020/lib/modules/tld-tooltip/services/api-v2/models/language-direction.model.mjs +2 -0
  229. package/esm2020/lib/modules/tld-tooltip/services/api-v2/tld-system-api-v2.service.mjs +60 -0
  230. package/esm2020/lib/modules/tld-tooltip/services/index.mjs +2 -0
  231. package/esm2020/lib/modules/tld-tooltip/services/tld-system.service.mjs +302 -0
  232. package/esm2020/lib/modules/tld-tooltip/tld-domain-list/tld-domain-list.component.mjs +69 -0
  233. package/esm2020/lib/modules/tld-tooltip/tld-tooltip.module.mjs +95 -0
  234. package/esm2020/lib/modules/tld-tooltip/tld-translate-switcher/tld-translate-switcher.component.mjs +188 -0
  235. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/dropdown/translation-system-picker-dropdown.component.mjs +179 -0
  236. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/dropdown-body/translation-system-picker-dropdown-body.component.mjs +209 -0
  237. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/filter/translation-system-picker-filter.component.mjs +48 -0
  238. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/index.mjs +8 -0
  239. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/language-list/translation-system-picker-language-list.component.mjs +31 -0
  240. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/models/dropdown-body-config.model.mjs +2 -0
  241. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/models/grouped-language-item.mjs +3 -0
  242. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/models/index.mjs +6 -0
  243. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/models/opened-menu.mjs +7 -0
  244. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/models/translated-language.model.mjs +2 -0
  245. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/models/translated-system.model.mjs +2 -0
  246. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/services/index.mjs +2 -0
  247. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/services/translation-system-picker.service.mjs +58 -0
  248. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/system-list/translation-system-picker-system-list.component.mjs +31 -0
  249. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/system-picker-button/translation-system-picker-button.component.mjs +27 -0
  250. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/translation-system-picker.component.mjs +79 -0
  251. package/esm2020/lib/modules/tld-translate-file/tld-translate-file.component.mjs +65 -0
  252. package/esm2020/lib/modules/tld-web/index.mjs +3 -0
  253. package/esm2020/lib/modules/tld-web/tld-translate-web/tld-translate-web.component.mjs +499 -0
  254. package/esm2020/lib/modules/tld-web/tld-translate-web.service.mjs +16 -0
  255. package/esm2020/lib/modules/tld-web/tld-web.module.mjs +52 -0
  256. package/esm2020/lib/tld-translate-body/tld-translate-body.component.mjs +60 -0
  257. package/esm2020/lib/tld-translate.component.mjs +229 -0
  258. package/esm2020/lib/tld-translate.module.mjs +118 -0
  259. package/esm2020/public-api.mjs +43 -0
  260. package/esm2020/tilde-nlp-ngx-translate.mjs +5 -0
  261. package/fesm2015/tilde-nlp-ngx-translate.mjs +11019 -0
  262. package/fesm2015/tilde-nlp-ngx-translate.mjs.map +1 -0
  263. package/fesm2020/tilde-nlp-ngx-translate.mjs +10912 -0
  264. package/fesm2020/tilde-nlp-ngx-translate.mjs.map +1 -0
  265. package/index.d.ts +5 -0
  266. package/lib/components/shared/extension-dialog/components/index.d.ts +1 -0
  267. package/lib/components/shared/extension-dialog/components/open-extension-dialog/open-extension-dialog.component.d.ts +12 -0
  268. package/lib/components/shared/extension-dialog/extension-dialog.component.d.ts +15 -0
  269. package/lib/components/shared/extension-dialog/extension-dialog.module.d.ts +15 -0
  270. package/lib/components/shared/extension-dialog/index.d.ts +5 -0
  271. package/lib/components/shared/extension-dialog/models/enums/file-categories.enum.d.ts +7 -0
  272. package/lib/components/shared/extension-dialog/models/enums/file-extensions.enum.d.ts +33 -0
  273. package/lib/components/shared/extension-dialog/models/enums/file-type-icons.enum.d.ts +11 -0
  274. package/lib/components/shared/extension-dialog/models/enums/file-types.enum.d.ts +11 -0
  275. package/lib/components/shared/extension-dialog/models/enums/index.d.ts +4 -0
  276. package/lib/components/shared/extension-dialog/models/index.d.ts +2 -0
  277. package/lib/components/shared/extension-dialog/models/interfaces/config.d.ts +18 -0
  278. package/lib/components/shared/extension-dialog/models/interfaces/dialog-data.model.d.ts +3 -0
  279. package/lib/components/shared/extension-dialog/models/interfaces/index.d.ts +2 -0
  280. package/lib/components/shared/extension-dialog/services/extension-dialog.service.d.ts +9 -0
  281. package/lib/components/shared/extension-dialog/services/index.d.ts +1 -0
  282. package/lib/components/shared/text-to-speech/index.d.ts +2 -0
  283. package/lib/components/shared/text-to-speech/models/text-to-speech-settings.model.d.ts +23 -0
  284. package/lib/components/shared/text-to-speech/text-to-speech.component.d.ts +18 -0
  285. package/lib/components/shared/text-to-speech/text-to-speech.module.d.ts +11 -0
  286. package/lib/components/shared/vendor-disclaimer/vendor-disclaimer.component.d.ts +17 -0
  287. package/lib/components/shared/vendor-disclaimer/vendor-disclaimer.module.d.ts +9 -0
  288. package/lib/factories/file-api-service.factory.d.ts +7 -0
  289. package/lib/factories/system-service.factory.d.ts +6 -0
  290. package/lib/factories/text-api-service.factory.d.ts +6 -0
  291. package/lib/i18n/available-languages.d.ts +2 -0
  292. package/lib/i18n/de.d.ts +377 -0
  293. package/lib/i18n/en.d.ts +425 -0
  294. package/lib/i18n/et.d.ts +377 -0
  295. package/lib/i18n/fi.d.ts +382 -0
  296. package/lib/i18n/lt.d.ts +377 -0
  297. package/lib/i18n/lv.d.ts +390 -0
  298. package/lib/i18n/models/available-languages.model.d.ts +10 -0
  299. package/lib/i18n/pl.d.ts +377 -0
  300. package/lib/i18n/sv.d.ts +241 -0
  301. package/lib/injection-tokens/file-api-service.token.d.ts +1 -0
  302. package/lib/injection-tokens/index.d.ts +5 -0
  303. package/lib/injection-tokens/system-service.token.d.ts +1 -0
  304. package/lib/injection-tokens/text-api-service.token.d.ts +1 -0
  305. package/lib/injection-tokens/tld-translate-config.token.d.ts +1 -0
  306. package/lib/injection-tokens/translation-api-version.token.d.ts +1 -0
  307. package/lib/modules/material.module.d.ts +27 -0
  308. package/lib/modules/tld-audio/index.d.ts +3 -0
  309. package/lib/modules/tld-audio/models/audio-error-case.model.d.ts +11 -0
  310. package/lib/modules/tld-audio/models/dictate-configurationi.model.d.ts +6 -0
  311. package/lib/modules/tld-audio/models/index.d.ts +2 -0
  312. package/lib/modules/tld-audio/models/transcription-update.model.d.ts +4 -0
  313. package/lib/modules/tld-audio/services/audio-record.service.d.ts +35 -0
  314. package/lib/modules/tld-audio/services/index.d.ts +3 -0
  315. package/lib/modules/tld-audio/services/tld-voice-input-api.service.d.ts +16 -0
  316. package/lib/modules/tld-audio/services/tld-voice-input.service.d.ts +20 -0
  317. package/lib/modules/tld-audio/tld-audio.module.d.ts +14 -0
  318. package/lib/modules/tld-audio/tld-dictate/tld-dictate.component.d.ts +43 -0
  319. package/lib/modules/tld-audio/tld-record/tld-record.component.d.ts +32 -0
  320. package/lib/modules/tld-common/animations/pulse.animation.d.ts +1 -0
  321. package/lib/modules/tld-common/components/index.d.ts +9 -0
  322. package/lib/modules/tld-common/components/open-close-button/open-close-button.component.d.ts +15 -0
  323. package/lib/modules/tld-common/components/source-and-target-wrapper/source-and-target-wrapper.component.d.ts +19 -0
  324. package/lib/modules/tld-common/components/tld-file-upload/tld-file-upload.component.d.ts +28 -0
  325. package/lib/modules/tld-common/components/tld-lang-list/tld-lang-list.component.d.ts +52 -0
  326. package/lib/modules/tld-common/components/tld-list-menu/tld-list-menu.component.d.ts +24 -0
  327. package/lib/modules/tld-common/components/tld-loader/tld-loader.component.d.ts +5 -0
  328. package/lib/modules/tld-common/components/tld-message/tld-message.component.d.ts +18 -0
  329. package/lib/modules/tld-common/components/tld-translate-achievement/tld-translate-achievement.component.d.ts +6 -0
  330. package/lib/modules/tld-common/components/translate-button/tld-translate-button.service.d.ts +12 -0
  331. package/lib/modules/tld-common/components/translate-button/translate-button.component.d.ts +22 -0
  332. package/lib/modules/tld-common/directives/drag-and-drop.directive.d.ts +14 -0
  333. package/lib/modules/tld-common/directives/index.d.ts +1 -0
  334. package/lib/modules/tld-common/index.d.ts +1 -0
  335. package/lib/modules/tld-common/models/auth-options.model.d.ts +4 -0
  336. package/lib/modules/tld-common/models/common.d.ts +28 -0
  337. package/lib/modules/tld-common/models/configs/tld-audio-config.model.d.ts +22 -0
  338. package/lib/modules/tld-common/models/configs/tld-term-config.model.d.ts +27 -0
  339. package/lib/modules/tld-common/models/configs/tld-text-to-speech-config.model.d.ts +11 -0
  340. package/lib/modules/tld-common/models/configs/tld-translate-api-v2-config.model.d.ts +11 -0
  341. package/lib/modules/tld-common/models/configs/tld-translate-config.model.d.ts +18 -0
  342. package/lib/modules/tld-common/models/configs/tld-translate-core-config.model.d.ts +42 -0
  343. package/lib/modules/tld-common/models/configs/tld-translate-file-config.model.d.ts +25 -0
  344. package/lib/modules/tld-common/models/configs/tld-translate-text-config.model.d.ts +39 -0
  345. package/lib/modules/tld-common/models/configs/tld-translate-web-config.model.d.ts +10 -0
  346. package/lib/modules/tld-common/models/core/index.d.ts +2 -0
  347. package/lib/modules/tld-common/models/core/language-menu-version.enum.d.ts +4 -0
  348. package/lib/modules/tld-common/models/core/translation-api-version.model.d.ts +4 -0
  349. package/lib/modules/tld-common/models/errors/error-codes.enum.d.ts +21 -0
  350. package/lib/modules/tld-common/models/errors/error-codes.type.d.ts +4 -0
  351. package/lib/modules/tld-common/models/errors/error.model.d.ts +3 -0
  352. package/lib/modules/tld-common/models/file-upload.model.d.ts +13 -0
  353. package/lib/modules/tld-common/models/index.d.ts +21 -0
  354. package/lib/modules/tld-common/models/lang-list-item.model.d.ts +6 -0
  355. package/lib/modules/tld-common/models/language-with-translation.model.d.ts +6 -0
  356. package/lib/modules/tld-common/models/message.model.d.ts +11 -0
  357. package/lib/modules/tld-common/models/selected-language.model.d.ts +4 -0
  358. package/lib/modules/tld-common/models/services/file-api/download-file-params.model.d.ts +5 -0
  359. package/lib/modules/tld-common/models/services/file-api/file-api-service.model.d.ts +17 -0
  360. package/lib/modules/tld-common/models/services/file-api/file-meta.model.d.ts +8 -0
  361. package/lib/modules/tld-common/models/services/file-api/file-translation-substatus.model.d.ts +7 -0
  362. package/lib/modules/tld-common/models/services/file-api/get-file-status-params.model.d.ts +6 -0
  363. package/lib/modules/tld-common/models/services/file-api/get-file-translation-status-response.model.d.ts +13 -0
  364. package/lib/modules/tld-common/models/services/file-api/remove-file-params.model.d.ts +4 -0
  365. package/lib/modules/tld-common/models/services/file-api/source-file-preview-response.model.d.ts +8 -0
  366. package/lib/modules/tld-common/models/services/file-api/start-file-translation-params.model.d.ts +6 -0
  367. package/lib/modules/tld-common/models/services/file-api/translated-document-preview-params.model.d.ts +4 -0
  368. package/lib/modules/tld-common/models/services/index.d.ts +18 -0
  369. package/lib/modules/tld-common/models/services/system/system.model.d.ts +17 -0
  370. package/lib/modules/tld-common/models/services/system/tld-system-api-service.model.d.ts +5 -0
  371. package/lib/modules/tld-common/models/services/text-api/check-grammar-response.model.d.ts +6 -0
  372. package/lib/modules/tld-common/models/services/text-api/tld-translate-text-api-service.model.d.ts +26 -0
  373. package/lib/modules/tld-common/models/services/text-api/translate-paragraph-request-params.model.d.ts +6 -0
  374. package/lib/modules/tld-common/models/services/voice-to-text/voice-to-text-job-state.model.d.ts +5 -0
  375. package/lib/modules/tld-common/models/services/voice-to-text/voice-to-text-job.model.d.ts +21 -0
  376. package/lib/modules/tld-common/models/services/voice-to-text/voice-to-text-start-job-request-params.model.d.ts +7 -0
  377. package/lib/modules/tld-common/pipes/index.d.ts +1 -0
  378. package/lib/modules/tld-common/pipes/translate-domain.pipe.d.ts +13 -0
  379. package/lib/modules/tld-common/services/icon-service/icon.service.d.ts +12 -0
  380. package/lib/modules/tld-common/services/icon-service/icons/file-types/excel.icon.d.ts +1 -0
  381. package/lib/modules/tld-common/services/icon-service/icons/file-types/index.d.ts +9 -0
  382. package/lib/modules/tld-common/services/icon-service/icons/file-types/interchange.icon.d.ts +1 -0
  383. package/lib/modules/tld-common/services/icon-service/icons/file-types/office-other.icon.d.ts +1 -0
  384. package/lib/modules/tld-common/services/icon-service/icons/file-types/other.icon.d.ts +1 -0
  385. package/lib/modules/tld-common/services/icon-service/icons/file-types/pdf.icon.d.ts +1 -0
  386. package/lib/modules/tld-common/services/icon-service/icons/file-types/powerpoint.icon.d.ts +1 -0
  387. package/lib/modules/tld-common/services/icon-service/icons/file-types/scanned.icon.d.ts +1 -0
  388. package/lib/modules/tld-common/services/icon-service/icons/file-types/web.icon.d.ts +1 -0
  389. package/lib/modules/tld-common/services/icon-service/icons/file-types/word.icon.d.ts +1 -0
  390. package/lib/modules/tld-common/services/icon-service/icons.d.ts +3 -0
  391. package/lib/modules/tld-common/services/index.d.ts +4 -0
  392. package/lib/modules/tld-common/services/scroll/tld-scroll.service.d.ts +12 -0
  393. package/lib/modules/tld-common/services/tld-alert.service.d.ts +33 -0
  394. package/lib/modules/tld-common/services/tld-highlight.service.d.ts +14 -0
  395. package/lib/modules/tld-common/services/tld-translate-config.service.d.ts +39 -0
  396. package/lib/modules/tld-common/services/wtw-link-params.service.d.ts +13 -0
  397. package/lib/modules/tld-common/tld-common.module.d.ts +23 -0
  398. package/lib/modules/tld-document/download-button/download-button.component.d.ts +30 -0
  399. package/lib/modules/tld-document/image-conversion-help/image-conversion-help.component.d.ts +21 -0
  400. package/lib/modules/tld-document/index.d.ts +7 -0
  401. package/lib/modules/tld-document/models/file-conversion-types.model.d.ts +4 -0
  402. package/lib/modules/tld-document/models/index.d.ts +5 -0
  403. package/lib/modules/tld-document/models/start-translation.model.d.ts +16 -0
  404. package/lib/modules/tld-document/models/translate-file.model.d.ts +33 -0
  405. package/lib/modules/tld-document/models/translation-statuss.model.d.ts +12 -0
  406. package/lib/modules/tld-document/models/upload-response.model.d.ts +8 -0
  407. package/lib/modules/tld-document/pdf-conversion-help/pdf-conversion-help.component.d.ts +21 -0
  408. package/lib/modules/tld-document/services/api/file-api.service.d.ts +26 -0
  409. package/lib/modules/tld-document/services/api/models/file-preview-v1-progress-response.model.d.ts +6 -0
  410. package/lib/modules/tld-document/services/api/models/file-preview-v1-response-body.model.d.ts +8 -0
  411. package/lib/modules/tld-document/services/api/models/get-file-translation-status-v1-response.model.d.ts +11 -0
  412. package/lib/modules/tld-document/services/api-v2/file-api-v2.service.d.ts +22 -0
  413. package/lib/modules/tld-document/services/api-v2/models/file-category-v2.model.d.ts +4 -0
  414. package/lib/modules/tld-document/services/api-v2/models/file-translation-status-v2-response.model.d.ts +20 -0
  415. package/lib/modules/tld-document/services/index.d.ts +2 -0
  416. package/lib/modules/tld-document/services/tld-translate-file.service.d.ts +60 -0
  417. package/lib/modules/tld-document/tld-document.module.d.ts +19 -0
  418. package/lib/modules/tld-document/tld-file-translate-base.component.d.ts +29 -0
  419. package/lib/modules/tld-document/tld-translate-file-multiple/tld-translate-file-multiple.component.d.ts +40 -0
  420. package/lib/modules/tld-term/index.d.ts +6 -0
  421. package/lib/modules/tld-term/models/converted-collection-tooltip-key.model.d.ts +5 -0
  422. package/lib/modules/tld-term/models/converted-collection-type.model.d.ts +7 -0
  423. package/lib/modules/tld-term/models/index.d.ts +6 -0
  424. package/lib/modules/tld-term/models/mt-api/tld-mt-term-collection.model.d.ts +15 -0
  425. package/lib/modules/tld-term/models/mt-collection-status.model.d.ts +5 -0
  426. package/lib/modules/tld-term/models/term-api/tld-term-collection-languages.model.d.ts +11 -0
  427. package/lib/modules/tld-term/models/term-api/tld-term-collection.model.d.ts +46 -0
  428. package/lib/modules/tld-term/models/tld-converted-collection.model.d.ts +43 -0
  429. package/lib/modules/tld-term/services/index.d.ts +3 -0
  430. package/lib/modules/tld-term/services/mt-collections-api.service.d.ts +13 -0
  431. package/lib/modules/tld-term/services/term-api.service.d.ts +15 -0
  432. package/lib/modules/tld-term/services/tld-term-collections.service.d.ts +57 -0
  433. package/lib/modules/tld-term/tld-term-collection/tld-term-collection.component.d.ts +9 -0
  434. package/lib/modules/tld-term/tld-term-collection-list/tld-term-collection-list.component.d.ts +39 -0
  435. package/lib/modules/tld-term/tld-term-create-collection-dialog/tld-term-create-collection-dialog.component.d.ts +20 -0
  436. package/lib/modules/tld-term/tld-term-menu/tld-term-menu.component.d.ts +13 -0
  437. package/lib/modules/tld-term/tld-term-promotion/tld-term-promotion.component.d.ts +17 -0
  438. package/lib/modules/tld-term/tld-term.module.d.ts +22 -0
  439. package/lib/modules/tld-text/components/highlight-tree/highlight-tree.component.d.ts +27 -0
  440. package/lib/modules/tld-text/components/progress-indicator/progress-indicator.component.d.ts +20 -0
  441. package/lib/modules/tld-text/components/textarea-with-background/textarea-with-background.component.d.ts +40 -0
  442. package/lib/modules/tld-text/components/tld-dictionary/tld-dictionary.component.d.ts +24 -0
  443. package/lib/modules/tld-text/components/tld-translate-source/tld-translate-source.component.d.ts +36 -0
  444. package/lib/modules/tld-text/components/tld-translate-suggest/dialog/suggest-translation.model.d.ts +11 -0
  445. package/lib/modules/tld-text/components/tld-translate-suggest/dialog/tld-translate-suggest-dialog.component.d.ts +33 -0
  446. package/lib/modules/tld-text/components/tld-translate-suggest/tld-translate-suggest.component.d.ts +24 -0
  447. package/lib/modules/tld-text/components/tld-translate-text/tld-translate-text.component.d.ts +104 -0
  448. package/lib/modules/tld-text/index.d.ts +8 -0
  449. package/lib/modules/tld-text/models/check-grammar-response-v2.model.d.ts +4 -0
  450. package/lib/modules/tld-text/models/dictionary.model.d.ts +28 -0
  451. package/lib/modules/tld-text/models/get-sentence-v1-response.model.d.ts +5 -0
  452. package/lib/modules/tld-text/models/grammar-check-base.model.d.ts +6 -0
  453. package/lib/modules/tld-text/models/grammar-check-meta.model.d.ts +5 -0
  454. package/lib/modules/tld-text/models/grammar-check-replacement.model.d.ts +5 -0
  455. package/lib/modules/tld-text/models/grammar-correction-v2.model.d.ts +9 -0
  456. package/lib/modules/tld-text/models/highlight-params.model.d.ts +10 -0
  457. package/lib/modules/tld-text/models/highlight-tree-type.model.d.ts +10 -0
  458. package/lib/modules/tld-text/models/highlight-tree.model.d.ts +22 -0
  459. package/lib/modules/tld-text/models/highlight.model.d.ts +10 -0
  460. package/lib/modules/tld-text/models/index.d.ts +10 -0
  461. package/lib/modules/tld-text/models/retranslate-params.model.d.ts +4 -0
  462. package/lib/modules/tld-text/models/source-text-changed.model.d.ts +6 -0
  463. package/lib/modules/tld-text/models/translate-paragraph-params.model.d.ts +6 -0
  464. package/lib/modules/tld-text/models/translate-paragraph-response-v1.model.d.ts +15 -0
  465. package/lib/modules/tld-text/models/translate-paragraph-response-v2.model.d.ts +9 -0
  466. package/lib/modules/tld-text/models/translate-paragraph-response.model.d.ts +7 -0
  467. package/lib/modules/tld-text/models/untranslated-paragraph.model.d.ts +4 -0
  468. package/lib/modules/tld-text/services/api/tld-translate-text-api.service.d.ts +24 -0
  469. package/lib/modules/tld-text/services/api-v2/tld-translate-text-api-v2.service.d.ts +17 -0
  470. package/lib/modules/tld-text/services/index.d.ts +1 -0
  471. package/lib/modules/tld-text/services/tld-translate-text.service.d.ts +104 -0
  472. package/lib/modules/tld-text/tld-text.module.d.ts +27 -0
  473. package/lib/modules/tld-text/utils/index.d.ts +1 -0
  474. package/lib/modules/tld-text/utils/models/existing-paragraph-info.model.d.ts +5 -0
  475. package/lib/modules/tld-text/utils/models/index.d.ts +1 -0
  476. package/lib/modules/tld-text/utils/tld-translate-text.utils.d.ts +9 -0
  477. package/lib/modules/tld-tooltip/index.d.ts +4 -0
  478. package/lib/modules/tld-tooltip/models/active-data.model.d.ts +24 -0
  479. package/lib/modules/tld-tooltip/models/domain.model.d.ts +8 -0
  480. package/lib/modules/tld-tooltip/models/index.d.ts +4 -0
  481. package/lib/modules/tld-tooltip/models/switcher-options.model.d.ts +14 -0
  482. package/lib/modules/tld-tooltip/models/system-metadata-keys.model.d.ts +5 -0
  483. package/lib/modules/tld-tooltip/models/vendor.model.d.ts +4 -0
  484. package/lib/modules/tld-tooltip/services/api/models/description.model.d.ts +4 -0
  485. package/lib/modules/tld-tooltip/services/api/models/language.model.d.ts +5 -0
  486. package/lib/modules/tld-tooltip/services/api/models/metadata.model.d.ts +4 -0
  487. package/lib/modules/tld-tooltip/services/api/models/name.model.d.ts +4 -0
  488. package/lib/modules/tld-tooltip/services/api/models/system.model.d.ts +14 -0
  489. package/lib/modules/tld-tooltip/services/api/tld-system-api.service.d.ts +15 -0
  490. package/lib/modules/tld-tooltip/services/api-v2/models/error.model.d.ts +4 -0
  491. package/lib/modules/tld-tooltip/services/api-v2/models/get-langauge-direction.d.ts +6 -0
  492. package/lib/modules/tld-tooltip/services/api-v2/models/language-direction.model.d.ts +7 -0
  493. package/lib/modules/tld-tooltip/services/api-v2/tld-system-api-v2.service.d.ts +15 -0
  494. package/lib/modules/tld-tooltip/services/index.d.ts +1 -0
  495. package/lib/modules/tld-tooltip/services/tld-system.service.d.ts +57 -0
  496. package/lib/modules/tld-tooltip/tld-domain-list/tld-domain-list.component.d.ts +33 -0
  497. package/lib/modules/tld-tooltip/tld-tooltip.module.d.ts +25 -0
  498. package/lib/modules/tld-tooltip/tld-translate-switcher/tld-translate-switcher.component.d.ts +64 -0
  499. package/lib/modules/tld-tooltip/translation-system-picker/dropdown/translation-system-picker-dropdown.component.d.ts +44 -0
  500. package/lib/modules/tld-tooltip/translation-system-picker/dropdown-body/translation-system-picker-dropdown-body.component.d.ts +65 -0
  501. package/lib/modules/tld-tooltip/translation-system-picker/filter/translation-system-picker-filter.component.d.ts +17 -0
  502. package/lib/modules/tld-tooltip/translation-system-picker/index.d.ts +7 -0
  503. package/lib/modules/tld-tooltip/translation-system-picker/language-list/translation-system-picker-language-list.component.d.ts +14 -0
  504. package/lib/modules/tld-tooltip/translation-system-picker/models/dropdown-body-config.model.d.ts +11 -0
  505. package/lib/modules/tld-tooltip/translation-system-picker/models/grouped-language-item.d.ts +8 -0
  506. package/lib/modules/tld-tooltip/translation-system-picker/models/index.d.ts +5 -0
  507. package/lib/modules/tld-tooltip/translation-system-picker/models/opened-menu.d.ts +5 -0
  508. package/lib/modules/tld-tooltip/translation-system-picker/models/translated-language.model.d.ts +4 -0
  509. package/lib/modules/tld-tooltip/translation-system-picker/models/translated-system.model.d.ts +4 -0
  510. package/lib/modules/tld-tooltip/translation-system-picker/services/index.d.ts +1 -0
  511. package/lib/modules/tld-tooltip/translation-system-picker/services/translation-system-picker.service.d.ts +24 -0
  512. package/lib/modules/tld-tooltip/translation-system-picker/system-list/translation-system-picker-system-list.component.d.ts +13 -0
  513. package/lib/modules/tld-tooltip/translation-system-picker/system-picker-button/translation-system-picker-button.component.d.ts +10 -0
  514. package/lib/modules/tld-tooltip/translation-system-picker/translation-system-picker.component.d.ts +34 -0
  515. package/lib/modules/tld-translate-file/tld-translate-file.component.d.ts +37 -0
  516. package/lib/modules/tld-web/index.d.ts +2 -0
  517. package/lib/modules/tld-web/tld-translate-web/tld-translate-web.component.d.ts +85 -0
  518. package/lib/modules/tld-web/tld-translate-web.service.d.ts +7 -0
  519. package/lib/modules/tld-web/tld-web.module.d.ts +14 -0
  520. package/lib/tld-translate-body/tld-translate-body.component.d.ts +23 -0
  521. package/lib/tld-translate.component.d.ts +65 -0
  522. package/lib/tld-translate.module.d.ts +23 -0
  523. package/package.json +40 -0
  524. package/public-api.d.ts +28 -0
  525. package/src/assets/webcomponent/styles.css +1 -0
  526. package/src/assets/webcomponent/tld-translate.js +3 -0
  527. package/src/assets/webtranslate/page-translate-widget.js +4934 -0
  528. package/src/assets/webtranslate/remove.png +0 -0
  529. package/src/assets/webtranslate/tilde_logo.png +0 -0
  530. package/src/assets/webtranslate/translate-website.js +393 -0
  531. package/src/assets/webtranslate/widget.css +139 -0
  532. package/src/styles/colors.scss +15 -0
  533. package/src/styles/fonts.scss +3 -0
  534. package/src/styles/mixin/border-default.scss +10 -0
  535. package/src/styles/mixin/tld-translate-accent-colors.scss +46 -0
  536. package/src/styles/mixin/tld-translate-colors.scss +7 -0
  537. package/src/styles/mixin/tld-translate-placeholders.scss +5 -0
  538. package/src/styles/mixin/tld-translate-primary-colors.scss +5 -0
  539. package/src/styles/styles.scss +377 -0
  540. package/src/styles/translator-borders.scss +28 -0
  541. package/tilde-nlp-ngx-translate-1.0.0.tgz +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tilde-nlp-ngx-translate.mjs","sources":["../../../projects/tld-translate/src/lib/i18n/de.ts","../../../projects/tld-translate/src/lib/i18n/en.ts","../../../projects/tld-translate/src/lib/i18n/et.ts","../../../projects/tld-translate/src/lib/i18n/fi.ts","../../../projects/tld-translate/src/lib/i18n/lt.ts","../../../projects/tld-translate/src/lib/i18n/lv.ts","../../../projects/tld-translate/src/lib/i18n/pl.ts","../../../projects/tld-translate/src/lib/i18n/sv.ts","../../../projects/tld-translate/src/lib/i18n/available-languages.ts","../../../projects/tld-translate/src/lib/modules/tld-common/services/icon-service/icons/file-types/word.icon.ts","../../../projects/tld-translate/src/lib/modules/tld-common/services/icon-service/icons/file-types/web.icon.ts","../../../projects/tld-translate/src/lib/modules/tld-common/services/icon-service/icons/file-types/scanned.icon.ts","../../../projects/tld-translate/src/lib/modules/tld-common/services/icon-service/icons/file-types/powerpoint.icon.ts","../../../projects/tld-translate/src/lib/modules/tld-common/services/icon-service/icons/file-types/pdf.icon.ts","../../../projects/tld-translate/src/lib/modules/tld-common/services/icon-service/icons/file-types/other.icon.ts","../../../projects/tld-translate/src/lib/modules/tld-common/services/icon-service/icons/file-types/office-other.icon.ts","../../../projects/tld-translate/src/lib/modules/tld-common/services/icon-service/icons/file-types/interchange.icon.ts","../../../projects/tld-translate/src/lib/modules/tld-common/services/icon-service/icons/file-types/excel.icon.ts","../../../projects/tld-translate/src/lib/modules/tld-common/services/icon-service/icons.ts","../../../projects/tld-translate/src/lib/modules/tld-common/services/icon-service/icon.service.ts","../../../projects/tld-translate/src/lib/injection-tokens/file-api-service.token.ts","../../../projects/tld-translate/src/lib/injection-tokens/translation-api-version.token.ts","../../../projects/tld-translate/src/lib/injection-tokens/text-api-service.token.ts","../../../projects/tld-translate/src/lib/injection-tokens/system-service.token.ts","../../../projects/tld-translate/src/lib/injection-tokens/tld-translate-config.token.ts","../../../projects/tld-translate/src/lib/modules/tld-common/models/common.ts","../../../projects/tld-translate/src/lib/modules/tld-common/models/file-upload.model.ts","../../../projects/tld-translate/src/lib/modules/tld-common/models/message.model.ts","../../../projects/tld-translate/src/lib/modules/tld-common/models/core/translation-api-version.model.ts","../../../projects/tld-translate/src/lib/modules/tld-common/models/core/language-menu-version.enum.ts","../../../projects/tld-translate/src/lib/modules/tld-common/models/services/file-api/file-translation-substatus.model.ts","../../../projects/tld-translate/src/lib/modules/tld-common/models/services/voice-to-text/voice-to-text-job-state.model.ts","../../../projects/tld-translate/src/lib/modules/tld-common/models/errors/error-codes.enum.ts","../../../projects/tld-translate/src/lib/modules/tld-common/services/tld-translate-config.service.ts","../../../projects/tld-translate/src/lib/modules/tld-common/services/tld-alert.service.ts","../../../projects/tld-translate/src/lib/modules/tld-common/services/tld-highlight.service.ts","../../../projects/tld-translate/src/lib/modules/tld-common/directives/drag-and-drop.directive.ts","../../../projects/tld-translate/src/lib/modules/tld-common/pipes/translate-domain.pipe.ts","../../../projects/tld-translate/src/lib/modules/tld-common/components/tld-translate-achievement/tld-translate-achievement.component.ts","../../../projects/tld-translate/src/lib/modules/tld-common/components/tld-translate-achievement/tld-translate-achievement.component.html","../../../projects/tld-translate/src/lib/modules/tld-common/components/tld-loader/tld-loader.component.ts","../../../projects/tld-translate/src/lib/modules/tld-common/components/tld-loader/tld-loader.component.html","../../../projects/tld-translate/src/lib/modules/tld-common/components/open-close-button/open-close-button.component.ts","../../../projects/tld-translate/src/lib/modules/tld-common/components/open-close-button/open-close-button.component.html","../../../projects/tld-translate/src/lib/modules/tld-common/components/tld-lang-list/tld-lang-list.component.ts","../../../projects/tld-translate/src/lib/modules/tld-common/components/tld-lang-list/tld-lang-list.component.html","../../../projects/tld-translate/src/lib/modules/tld-common/components/tld-file-upload/tld-file-upload.component.ts","../../../projects/tld-translate/src/lib/modules/tld-common/components/tld-file-upload/tld-file-upload.component.html","../../../projects/tld-translate/src/lib/modules/tld-common/components/tld-message/tld-message.component.ts","../../../projects/tld-translate/src/lib/modules/tld-common/components/tld-message/tld-message.component.html","../../../projects/tld-translate/src/lib/modules/tld-common/animations/pulse.animation.ts","../../../projects/tld-translate/src/lib/modules/tld-common/components/translate-button/tld-translate-button.service.ts","../../../projects/tld-translate/src/lib/modules/tld-common/components/translate-button/translate-button.component.ts","../../../projects/tld-translate/src/lib/modules/tld-common/components/translate-button/translate-button.component.html","../../../projects/tld-translate/src/lib/modules/tld-common/components/tld-list-menu/tld-list-menu.component.ts","../../../projects/tld-translate/src/lib/modules/tld-common/components/tld-list-menu/tld-list-menu.component.html","../../../projects/tld-translate/src/lib/components/shared/text-to-speech/text-to-speech.component.ts","../../../projects/tld-translate/src/lib/components/shared/text-to-speech/text-to-speech.component.html","../../../projects/tld-translate/src/lib/modules/tld-common/components/source-and-target-wrapper/source-and-target-wrapper.component.ts","../../../projects/tld-translate/src/lib/modules/tld-common/components/source-and-target-wrapper/source-and-target-wrapper.component.html","../../../projects/tld-translate/src/lib/components/shared/text-to-speech/text-to-speech.module.ts","../../../projects/tld-translate/src/lib/modules/material.module.ts","../../../projects/tld-translate/src/lib/modules/tld-common/tld-common.module.ts","../../../projects/tld-translate/src/lib/modules/tld-tooltip/services/tld-system.service.ts","../../../projects/tld-translate/src/lib/components/shared/vendor-disclaimer/vendor-disclaimer.component.ts","../../../projects/tld-translate/src/lib/components/shared/vendor-disclaimer/vendor-disclaimer.component.html","../../../projects/tld-translate/src/lib/components/shared/vendor-disclaimer/vendor-disclaimer.module.ts","../../../projects/tld-translate/src/lib/modules/tld-document/models/translation-statuss.model.ts","../../../projects/tld-translate/src/lib/modules/tld-document/models/file-conversion-types.model.ts","../../../projects/tld-translate/src/lib/modules/tld-document/services/tld-translate-file.service.ts","../../../projects/tld-translate/src/lib/modules/tld-document/image-conversion-help/image-conversion-help.component.ts","../../../projects/tld-translate/src/lib/modules/tld-document/image-conversion-help/image-conversion-help.component.html","../../../projects/tld-translate/src/lib/modules/tld-document/pdf-conversion-help/pdf-conversion-help.component.ts","../../../projects/tld-translate/src/lib/modules/tld-document/pdf-conversion-help/pdf-conversion-help.component.html","../../../projects/tld-translate/src/lib/modules/tld-document/tld-file-translate-base.component.ts","../../../projects/tld-translate/src/lib/modules/tld-document/download-button/download-button.component.ts","../../../projects/tld-translate/src/lib/modules/tld-document/download-button/download-button.component.html","../../../projects/tld-translate/src/lib/modules/tld-translate-file/tld-translate-file.component.ts","../../../projects/tld-translate/src/lib/modules/tld-translate-file/tld-translate-file.component.html","../../../projects/tld-translate/src/lib/modules/tld-document/tld-translate-file-multiple/tld-translate-file-multiple.component.ts","../../../projects/tld-translate/src/lib/modules/tld-document/tld-translate-file-multiple/tld-translate-file-multiple.component.html","../../../projects/tld-translate/src/lib/modules/tld-document/tld-document.module.ts","../../../projects/tld-translate/src/lib/modules/tld-term/models/converted-collection-type.model.ts","../../../projects/tld-translate/src/lib/modules/tld-term/models/mt-collection-status.model.ts","../../../projects/tld-translate/src/lib/modules/tld-term/models/converted-collection-tooltip-key.model.ts","../../../projects/tld-translate/src/lib/modules/tld-term/models/tld-converted-collection.model.ts","../../../projects/tld-translate/src/lib/modules/tld-term/services/term-api.service.ts","../../../projects/tld-translate/src/lib/modules/tld-term/services/mt-collections-api.service.ts","../../../projects/tld-translate/src/lib/modules/tld-term/services/tld-term-collections.service.ts","../../../projects/tld-translate/src/lib/modules/tld-document/services/api/file-api.service.ts","../../../projects/tld-translate/src/lib/modules/tld-term/tld-term-create-collection-dialog/tld-term-create-collection-dialog.component.ts","../../../projects/tld-translate/src/lib/modules/tld-term/tld-term-create-collection-dialog/tld-term-create-collection-dialog.component.html","../../../projects/tld-translate/src/lib/modules/tld-term/tld-term-collection-list/tld-term-collection-list.component.ts","../../../projects/tld-translate/src/lib/modules/tld-term/tld-term-collection-list/tld-term-collection-list.component.html","../../../projects/tld-translate/src/lib/modules/tld-common/services/wtw-link-params.service.ts","../../../projects/tld-translate/src/lib/modules/tld-term/tld-term-promotion/tld-term-promotion.component.ts","../../../projects/tld-translate/src/lib/modules/tld-term/tld-term-promotion/tld-term-promotion.component.html","../../../projects/tld-translate/src/lib/modules/tld-term/tld-term-collection/tld-term-collection.component.ts","../../../projects/tld-translate/src/lib/modules/tld-term/tld-term-collection/tld-term-collection.component.html","../../../projects/tld-translate/src/lib/modules/tld-term/tld-term-menu/tld-term-menu.component.ts","../../../projects/tld-translate/src/lib/modules/tld-term/tld-term-menu/tld-term-menu.component.html","../../../projects/tld-translate/src/lib/modules/tld-term/tld-term.module.ts","../../../projects/tld-translate/src/lib/components/shared/extension-dialog/models/enums/file-type-icons.enum.ts","../../../projects/tld-translate/src/lib/components/shared/extension-dialog/models/enums/file-categories.enum.ts","../../../projects/tld-translate/src/lib/components/shared/extension-dialog/models/enums/file-types.enum.ts","../../../projects/tld-translate/src/lib/components/shared/extension-dialog/models/enums/file-extensions.enum.ts","../../../projects/tld-translate/src/lib/components/shared/extension-dialog/extension-dialog.component.ts","../../../projects/tld-translate/src/lib/components/shared/extension-dialog/extension-dialog.component.html","../../../projects/tld-translate/src/lib/components/shared/extension-dialog/services/extension-dialog.service.ts","../../../projects/tld-translate/src/lib/components/shared/extension-dialog/components/open-extension-dialog/open-extension-dialog.component.ts","../../../projects/tld-translate/src/lib/components/shared/extension-dialog/components/open-extension-dialog/open-extension-dialog.component.html","../../../projects/tld-translate/src/lib/components/shared/extension-dialog/extension-dialog.module.ts","../../../projects/tld-translate/src/lib/modules/tld-audio/models/audio-error-case.model.ts","../../../projects/tld-translate/src/lib/modules/tld-audio/tld-dictate/tld-dictate.component.ts","../../../projects/tld-translate/src/lib/modules/tld-audio/tld-dictate/tld-dictate.component.html","../../../projects/tld-translate/src/lib/modules/tld-audio/services/audio-record.service.ts","../../../projects/tld-translate/src/lib/modules/tld-audio/services/tld-voice-input-api.service.ts","../../../projects/tld-translate/src/lib/modules/tld-audio/services/tld-voice-input.service.ts","../../../projects/tld-translate/src/lib/modules/tld-audio/tld-record/tld-record.component.ts","../../../projects/tld-translate/src/lib/modules/tld-audio/tld-record/tld-record.component.html","../../../projects/tld-translate/src/lib/modules/tld-audio/tld-audio.module.ts","../../../projects/tld-translate/src/lib/modules/tld-text/models/highlight-params.model.ts","../../../projects/tld-translate/src/lib/modules/tld-text/models/highlight-tree-type.model.ts","../../../projects/tld-translate/src/lib/modules/tld-text/components/highlight-tree/highlight-tree.component.ts","../../../projects/tld-translate/src/lib/modules/tld-text/components/highlight-tree/highlight-tree.component.html","../../../projects/tld-translate/src/lib/modules/tld-text/components/progress-indicator/progress-indicator.component.ts","../../../projects/tld-translate/src/lib/modules/tld-text/components/progress-indicator/progress-indicator.component.html","../../../projects/tld-translate/src/lib/modules/tld-text/utils/tld-translate-text.utils.ts","../../../projects/tld-translate/src/lib/modules/tld-common/services/scroll/tld-scroll.service.ts","../../../projects/tld-translate/src/lib/modules/tld-text/services/tld-translate-text.service.ts","../../../projects/tld-translate/src/lib/modules/tld-text/components/textarea-with-background/textarea-with-background.component.ts","../../../projects/tld-translate/src/lib/modules/tld-text/components/textarea-with-background/textarea-with-background.component.html","../../../projects/tld-translate/src/lib/modules/tld-text/components/tld-dictionary/tld-dictionary.component.ts","../../../projects/tld-translate/src/lib/modules/tld-text/components/tld-dictionary/tld-dictionary.component.html","../../../projects/tld-translate/src/lib/modules/tld-text/components/tld-translate-source/tld-translate-source.component.ts","../../../projects/tld-translate/src/lib/modules/tld-text/components/tld-translate-source/tld-translate-source.component.html","../../../projects/tld-translate/src/lib/modules/tld-text/components/tld-translate-suggest/dialog/tld-translate-suggest-dialog.component.ts","../../../projects/tld-translate/src/lib/modules/tld-text/components/tld-translate-suggest/dialog/tld-translate-suggest-dialog.component.html","../../../projects/tld-translate/src/lib/modules/tld-text/components/tld-translate-suggest/tld-translate-suggest.component.ts","../../../projects/tld-translate/src/lib/modules/tld-text/components/tld-translate-suggest/tld-translate-suggest.component.html","../../../projects/tld-translate/src/lib/modules/tld-text/components/tld-translate-text/tld-translate-text.component.ts","../../../projects/tld-translate/src/lib/modules/tld-text/components/tld-translate-text/tld-translate-text.component.html","../../../projects/tld-translate/src/lib/modules/tld-text/tld-text.module.ts","../../../projects/tld-translate/src/lib/modules/tld-tooltip/tld-domain-list/tld-domain-list.component.ts","../../../projects/tld-translate/src/lib/modules/tld-tooltip/tld-domain-list/tld-domain-list.component.html","../../../projects/tld-translate/src/lib/modules/tld-tooltip/tld-translate-switcher/tld-translate-switcher.component.ts","../../../projects/tld-translate/src/lib/modules/tld-tooltip/tld-translate-switcher/tld-translate-switcher.component.html","../../../projects/tld-translate/src/lib/modules/tld-tooltip/translation-system-picker/models/opened-menu.ts","../../../projects/tld-translate/src/lib/modules/tld-tooltip/translation-system-picker/services/translation-system-picker.service.ts","../../../projects/tld-translate/src/lib/modules/tld-tooltip/translation-system-picker/translation-system-picker.component.ts","../../../projects/tld-translate/src/lib/modules/tld-tooltip/translation-system-picker/translation-system-picker.component.html","../../../projects/tld-translate/src/lib/modules/tld-tooltip/translation-system-picker/system-picker-button/translation-system-picker-button.component.ts","../../../projects/tld-translate/src/lib/modules/tld-tooltip/translation-system-picker/system-picker-button/translation-system-picker-button.component.html","../../../projects/tld-translate/src/lib/modules/tld-tooltip/translation-system-picker/language-list/translation-system-picker-language-list.component.ts","../../../projects/tld-translate/src/lib/modules/tld-tooltip/translation-system-picker/language-list/translation-system-picker-language-list.component.html","../../../projects/tld-translate/src/lib/modules/tld-tooltip/translation-system-picker/system-list/translation-system-picker-system-list.component.ts","../../../projects/tld-translate/src/lib/modules/tld-tooltip/translation-system-picker/system-list/translation-system-picker-system-list.component.html","../../../projects/tld-translate/src/lib/modules/tld-tooltip/translation-system-picker/dropdown-body/translation-system-picker-dropdown-body.component.ts","../../../projects/tld-translate/src/lib/modules/tld-tooltip/translation-system-picker/dropdown-body/translation-system-picker-dropdown-body.component.html","../../../projects/tld-translate/src/lib/modules/tld-tooltip/translation-system-picker/filter/translation-system-picker-filter.component.ts","../../../projects/tld-translate/src/lib/modules/tld-tooltip/translation-system-picker/filter/translation-system-picker-filter.component.html","../../../projects/tld-translate/src/lib/modules/tld-tooltip/translation-system-picker/dropdown/translation-system-picker-dropdown.component.ts","../../../projects/tld-translate/src/lib/modules/tld-tooltip/translation-system-picker/dropdown/translation-system-picker-dropdown.component.html","../../../projects/tld-translate/src/lib/modules/tld-tooltip/tld-tooltip.module.ts","../../../projects/tld-translate/src/lib/modules/tld-web/tld-translate-web.service.ts","../../../projects/tld-translate/src/lib/modules/tld-web/tld-translate-web/tld-translate-web.component.ts","../../../projects/tld-translate/src/lib/modules/tld-web/tld-translate-web/tld-translate-web.component.html","../../../projects/tld-translate/src/lib/modules/tld-web/tld-web.module.ts","../../../projects/tld-translate/src/lib/tld-translate-body/tld-translate-body.component.ts","../../../projects/tld-translate/src/lib/tld-translate-body/tld-translate-body.component.html","../../../projects/tld-translate/src/lib/tld-translate.component.ts","../../../projects/tld-translate/src/lib/tld-translate.component.html","../../../projects/tld-translate/src/lib/modules/tld-document/services/api-v2/models/file-category-v2.model.ts","../../../projects/tld-translate/src/lib/modules/tld-document/services/api-v2/file-api-v2.service.ts","../../../projects/tld-translate/src/lib/factories/file-api-service.factory.ts","../../../projects/tld-translate/src/lib/modules/tld-tooltip/services/api-v2/tld-system-api-v2.service.ts","../../../projects/tld-translate/src/lib/modules/tld-tooltip/models/system-metadata-keys.model.ts","../../../projects/tld-translate/src/lib/modules/tld-tooltip/services/api/tld-system-api.service.ts","../../../projects/tld-translate/src/lib/factories/system-service.factory.ts","../../../projects/tld-translate/src/lib/modules/tld-text/services/api-v2/tld-translate-text-api-v2.service.ts","../../../projects/tld-translate/src/lib/modules/tld-text/services/api/tld-translate-text-api.service.ts","../../../projects/tld-translate/src/lib/factories/text-api-service.factory.ts","../../../projects/tld-translate/src/lib/tld-translate.module.ts","../../../projects/tld-translate/src/public-api.ts","../../../projects/tld-translate/src/tilde-nlp-ngx-translate.ts"],"sourcesContent":["export const i18n_de = {\r\n \"APP_NAME\": \"Tilde MT\",\r\n \"TLD_TRANSLATE\": {\r\n \"PREPARING_TRANSLATION\": \"Übersetzung beginnt\",\r\n \"SOURCE_TOOLTIP_ONLY_TEXT\": \"Geben Sie den Text ein, den Sie übersetzen möchten.\",\r\n \"SOURCE_TOOLTIP_SENSITIVE_INFO\": \"Verwenden Sie {{appName}} nicht, um geheime oder vertrauliche Informationen oder Texte zu übersetzen, die besondere Kategorien personenbezogener Daten wie Gesundheitsdaten enthalten.\",\r\n \"REGISTERED_FORMATS_LOGGED_IN\": \"Registrierte Benutzer haben Zugriff auf die folgenden Dokumentformate zur Übersetzung: {{formats}}.\",\r\n \"REGISTERED_FORMATS\": \"Registrierte Benutzer haben Zugriff auf die folgenden Dokumentformate zur Übersetzung: {{formats}}. Bitte fordern Sie Ihren Zugang <a class=\\\"accent-color\\\" target=\\\"blank\\\" href=\\\"{{registerLink}}\\\"> hier</a>an.\",\r\n \"SOURCE_FORMATS\": \"Der sichere öffentliche Übersetzungsdienst unterstützt folgende Dokumentformate: {{formats}};\",\r\n \"BEST_NMT\": \"Drei Jahre in Folge stolzer Gewinner des WMT-Wettbewerbs für die beste maschinelle Übersetzungstechnologie.\",\r\n \"BEST_NMT_MORE\": \"Mehr lernen\",\r\n \"CANCEL_TRANSLATION\": \"Abbreche\",\r\n \"FILE_TARGET_PREVIEW_MESSAGE\": \"Dies ist eine Vorschauprobe des übersetzten Dokuments. Bitte laden Sie es herunter, um die vollständige Übersetzung zu erhalten.\",\r\n \"FROM\": \"Von:\",\r\n \"SOURCE_WORD_LIMIT\": \" Der Übersetzungsumfang ist auf {{limit}} Wörter begrenzt.\",\r\n \"SOURCE_TOOLTIP\": \"Geben Sie den Text oder die Webseite ein, die Sie übersetzen möchten.\",\r\n \"TARGET_DESCRIPTION\": \"Eine maschinelle Übersetzung wird ein gutes Verständnis des Ausgangstextes vermitteln, kann aber eine von einem Menschen erstellte Übersetzung nicht ersetzen.\",\r\n \"TO\": \"An:\",\r\n \"SUGGEST_BUTTON\": \"Übersetzung vorschlagen\",\r\n \"SUGGEST_ORIGINAL_LABEL\": \"Originalsatz\",\r\n \"SUGGEST_SUBMIT_BUTTON\": \"Beitragen\",\r\n \"SUGGEST_TRANSLATION_LABEL\": \"Übersetzung\",\r\n \"SUGGEST_USAGE_INFO\": \"Wir werden Ihren Übersetzungsvorschlag verwenden, um die Qualität der maschinellen Übersetzung zu verbessern.\",\r\n \"TEXT_COPIED\": \"Kopierte Übersetzung\",\r\n \"TOOLTIP_ACTION\": \"Übersetzung\",\r\n \"UPLOAD_FILE_BUTTON\": \"Hochladen oder Ziehen einer Datei\",\r\n \"DICTIONARY_EXAMPLES\": \"Beispiele\",\r\n \"DOMAINS_ARIA_LABEL\": \"Domänen\",\r\n \"FILE_DOWNLOAD_SOURCE\": \"Konvertierte PDF-Quelldatei herunterladen\",\r\n \"FILE_TANSLATION_STATUSS_INITIALIZING\": \"Übersetzungsprozess wird initialisiert...\",\r\n \"FILE_TANSLATION_STATUSS_EXTRACTING\": \"Übersetzbarer Inhalt wird extrahiert...\",\r\n \"FILE_TANSLATION_STATUSS_WAITING\": \"Translator wird gestartet...\",\r\n \"FILE_TANSLATION_STATUSS_TRANSLATING\": \"Übersetzung wird durchgeführt...\",\r\n \"FILE_TANSLATION_STATUSS_SAVING\": \"Übersetzung wird gespeichert...\",\r\n \"FILE_TANSLATION_STATUSS_QUEUING\": \"Übersetzung beginnt...\",\r\n \"PDF_DISCLAIMER_LINK\": \"Informationen zur PDF-Konvertierung lesen.\",\r\n \"UPLOAD_FILES_BUTTON\": \"Dateien hochladen oder ziehen\",\r\n \"VENDORS_ARIA_LABEL\": \"Provider\",\r\n \"WORD_TYPE_ADJECTIVE\": \"Adjektiv\",\r\n \"WORD_TYPE_NOUN\": \"Nomen\",\r\n \"WORD_TYPE_VERB\": \"Verb\",\r\n \"WORD_TYPE_ADVERB\": \"Adverb\",\r\n \"WORD_TYPE_CONJUNCTION\": \"Konjunktion\",\r\n \"WORD_TYPE_INTERJECTION\": \"Interjektion\",\r\n \"WORD_TYPE_PRONOUN\": \"Pronomen\",\r\n \"DOWNLOAD_TRANSLATED\": \"Download\",\r\n\t\t\"FILE_DOWNLOAD_SOURCE_IMAGE\": \"Konvertiertes Quellbild herunterladen\",\r\n\t\t\"FILE_DOWNLOAD_SOURCE_IMAGE_HELP\": \"Eine Bildkonvertierung kann zu Formatierungsfehlern oder Textverzerrung führen. Bitte überprüfen Sie die konvertierte Datei und beheben Sie die Fehler, bevor die Datei neu zur Übersetzung hochgeladen wird.\",\r\n\t\t\"FILE_TANSLATION_STATUSS_UPLOADING\": \"Daten werden hochgeladen...\",\r\n\t\t\"FILE_TANSLATION_STATUSS_UPLOADED\": \"Hochgeladen\",\r\n\t\t\"IMAGE_DISCLAIMER_LINK\": \"Informationen zur Bildkonvertierung lesen.\",\r\n\t\t\"DOC_WORD_CNT_LIMIT_MSG_TITLE\": \"Übersetzungslimit\",\r\n\t\t\"DOC_WORD_CNT_LIMIT_MSG\": \"Nur die ersten {{wordCount}} Wörter werden übersetzt. Sie benötigen ein Tilde MT-Abonnement, um Dateien vollständig zu übersetzen. <a href=\\\"{{registerLink}}?{{queryString}}\\\">Beginnen Sie mit einer kostenlosen Testphase.</a>\",\r\n\t\t\"ERROR_NO_SYSTEMS_LOADED_TITLE\": \"Keine Übersetzungs-Engines geladen\",\r\n\t\t\"ERROR_NO_SYSTEMS_LOADED\": \"Fehler beim Laden der Engines für die maschinelle Übersetzung.\",\r\n\t\t\"ERROR_NO_SYSTEMS_LOADED_SUPPORT\": \" Bitte laden Sie die Seite neu oder wenden Sie sich an den <a href=\\\"mailto:{{email}}\\\"><strong>Support</strong></a>.\",\r\n\t\t\"PDF_PAGE_LIMIT_MSG_TITLE\": \"Übersetzungslimit\",\r\n\t\t\"PDF_PAGE_LIMIT_MSG\": \"Nur die erste Seite wird übersetzt. Sie benötigen ein Tilde MT-Abonnement, um PDF-Dateien vollständig zu übersetzen. <a href=\\\"{{registerLink}}?{{queryString}}\\\">Beginnen Sie mit einer kostenlosen Testphase.</a>\",\r\n\t\t\"CLEAR_SOURCE_TOOLTIP\": \"Text löschen\"\r\n },\r\n \"LANGUAGES\": {\r\n\t\t\"AR\": \"Arabisch\",\r\n \"EN\": \"Englisch\",\r\n \"LV\": \"Lettisch\",\r\n \"LT\": \"Litauisch\",\r\n \"FR\": \"Französisch\",\r\n \"RU\": \"Russisch\",\r\n \"ET\": \"Estnisch\",\r\n \"BG\": \"Bulgarisch\",\r\n \"DE\": \"Deutsch\",\r\n \"CS\": \"Tschechisch\",\r\n \"DA\": \"Dänisch\",\r\n \"EL\": \"Griechisch\",\r\n \"ES\": \"Spanisch\",\r\n \"FI\": \"Finnisch\",\r\n \"GA\": \"Irisch\",\r\n \"HR\": \"Kroatisch\",\r\n \"HU\": \"Ungarisch\",\r\n \"IS\": \"Isländisch\",\r\n \"IT\": \"Italienisch\",\r\n \"MT\": \"Maltesisch\",\r\n \"NB\": \"Norwegisch\",\r\n \"NL\": \"Niederländisch\",\r\n \"PT\": \"Portugiesisch\",\r\n \"PL\": \"Polnisch\",\r\n \"RO\": \"Rumänisch\",\r\n \"SK\": \"Slowakisch\",\r\n \"SL\": \"Slowenisch\",\r\n \"SV\": \"Schwedisch\",\r\n \"KA\": \"Georgisch\",\r\n \"BE\": \"Weißrussisch\",\r\n \"MO\": \"Moldawisch\",\r\n \"UK\": \"Ukrainisch\",\r\n \"SR\": \"Serbisch\",\r\n \"ZH\": \"Chinesisch\",\r\n \"JA\": \"Japanisch\",\r\n \"KO\": \"Koreanisch\",\r\n \"TR\": \"Türkisch\"\r\n },\r\n \"MULTIPLE_FILES\": {\r\n \"CLEAR_ALL\": \"Abbrechen\",\r\n \"DOWNLOAD\": \"Download\",\r\n \"STATUSS_INITIALIZING\": \"Initialisierung läuft\",\r\n \"STATUSS_EXTRACTING\": \"Extraktion läuft\",\r\n \"STATUSS_WAITING\": \"Translator wird gestartet\",\r\n \"STATUSS_TRANSLATING\": \"Übersetzung wird durchgeführt\",\r\n \"STATUSS_SAVING\": \"Speichervorgang läuft\",\r\n \"STATUSS_COMPLETED\": \"Abgeschlossen\",\r\n \"STATUSS_ERROR\": \"Fehler\",\r\n \"STATUSS_QUEUING\": \"In Warteschlange\",\r\n \"STATUSS_NOT_STARTED\": \"Hochgeladen\",\r\n \"TITLE_FILE_NAME\": \"Datei\",\r\n \"TITLE_STATUSS\": \"Status\",\r\n \"TRANSLATION_STATUSS_LABEL\": \"Status\",\r\n \"PDF_DISCLAIMER_LINK\": \"Informationen zur PDF-Konvertierung lesen.\",\r\n \"APPEND\": \"Dateien hinzufügen\",\r\n\t\t\"STATUSS_UPLOADING\": \"Daten werden hochgeladen...\",\r\n\t\t\"STATUSS_UPLOADED\": \"Hochgeladen\",\r\n\t\t\"PDF_DISCLAIMER\": \"Eine PDF-Konvertierung kann zu Formatierungsfehlern oder Textverzerrung führen. Wählen Sie nach der Übersetzung aus den Download-Optionen die Option „Konvertierte PDF-Quelldatei herunterladen“, überprüfen Sie die heruntergeladene Datei und beheben Sie die Fehler, bevor die Datei neu zur Übersetzung hochgeladen wird.\",\r\n\t\t\"IMAGE_DISCLAIMER\": \"Eine Bildkonvertierung kann zu Formatierungsfehlern oder Textverzerrung führen.\",\r\n\t\t\"IMAGE_DISCLAIMER_LINK\": \"Informationen zur Bildkonvertierung lesen.\",\r\n\t\t\"SCREEN_READER_ANNOUNCEMENT\": \"{{translated}} von {{total}} Dateien wurden übersetzt.\",\r\n\t\t\"REMOVE_FILE_TOOLTIP\": \"Datei löschen\"\r\n },\r\n \"ERRORS\": {\r\n \"UANUTHORIZED_401\": \"Sie sind nicht berechtigt, die maschinelle Übersetzung zu verwenden.\",\r\n \"UANUTHORIZED_401_SUPPORT\": \" Bitte kontaktieren Sie den <a href=\\\"mailto:{{email}}\\\"><strong> Support</strong></a>.\",\r\n \"E_UNKNOWN_FILE_TYPE\": \"Unbekannter Dateityp.\",\r\n \"E_UNKNOWN_ERROR\": \"Ein unbekannter Fehler ist aufgetreten.\",\r\n \"E_UNAUTHORIZED\": \"Die Übersetzung des Dokuments wurde verweigert.\",\r\n \"E_11\": \"Das tägliche Übersetzungslimit wurde erreicht.\",\r\n \"E_11_SUPPORT\": \" Um das Tageslimit zu erhöhen, wenden Sie sich bitte an den <a href=\\\"mailto:{{email}}\\\"><strong>Support</strong></a>.\",\r\n \"ERROR_DEFAULT_TITLE\": \"Unerwarteter Fehler\",\r\n\t\t\"ERROR_DEFAULT\": \"Ein unerwarteter Fehler ist aufgetreten. Bitte versuchen Sie es erneut.\",\r\n\t\t\"ERROR_DEFAULT_SUPPORT\": \" Falls das Problem weiterhin besteht, wenden Sie sich an den <a href=\\\"mailto:{{email}}\\\"><strong>Support</strong></a>.\",\r\n\t\t\"MAX_CHAR_LENGTH_TITLE\": \"Übersetzungslimit\",\r\n\t\t\"MAX_CHAR_LENGTH\": \"Es werden nur {{maxCharLength}}/{{totalSymbols}} Zeichen übersetzt. Sie benötigen ein Tilde MT-Abonnement für unbegrenzte Textübersetzungen. <a href=\\\"{{registerLink}}?{{queryString}}\\\">Beginnen Sie mit einer kostenlosen Testphase.</a>\",\r\n\t\t\"MAX_NUMBER_OF_FILES_TITLE\": \"Upload-Limit\",\r\n\t\t\"MAX_NUMBER_OF_FILES\": \"Es können nur {{limit}} Dateien auf einmal übersetzt werden.\",\r\n\t\t\"FILE_ALREADY_ADDED_TITLE\": \"Datei wurde bereits hinzugefügt\",\r\n\t\t\"FILE_ALREADY_ADDED\": \"Die Datei „{{fileName}}“ wurde bereits hinzugefügt.\",\r\n\t\t\"UANUTHORIZED_401_TITLE\": \"Nicht autorisiert\",\r\n\t\t\"E_CANNOT_READ_FILE_TITLE\": \"Fehler beim Lesen der Datei\",\r\n\t\t\"E_CANNOT_READ_FILE\": \"Die Datei „{{fileName}}“ ist beschädigt und konnte nicht übersetzt werden. Überprüfen Sie die Datei und versuchen Sie es erneut.\",\r\n\t\t\"E_FAILED_IN_TRANSLATION_TITLE\": \"Übersetzung fehlgeschlagen\",\r\n\t\t\"E_FAILED_IN_TRANSLATION\": \"Beim Übersetzen ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.\",\r\n\t\t\"E_FAILED_IN_TRANSLATION_SUPPORT\": \" Falls das Problem weiterhin besteht, wenden Sie sich an den <a href=\\\"mailto:{{email}}\\\"><strong>Support</strong></a>.\",\r\n\t\t\"E_FORMAT_TRACK_CHANGES_TITLE\": \"Übersetzung fehlgeschlagen, da 'Änderungen verfolgen' aktiviert ist\",\r\n\t\t\"E_FORMAT_TRACK_CHANGES\": \"Bevor Sie Office-Dateien übersetzen können, müssen Sie alle vorhandenen Änderungen annehmen und die Funktion „Änderungen verfolgen“ deaktivieren.\",\r\n\t\t\"E_UNKNOWN_ERROR_TITLE\": \"Unbekannter Fehler\",\r\n\t\t\"E_UNAUTHORIZED_TITLE\": \"Nicht autorisiert\",\r\n\t\t\"COLLECTION_CREATE_TITLE\": \"Fehler bei der Erstellung eines Glossars\",\r\n\t\t\"COLLECTION_CREATE\": \"Fehler bei der Erstellung eines neuen Glossars. Bitte versuchen Sie es erneut.\",\r\n\t\t\"COLLECTION_CREATE_SUPPORT\": \" Falls das Problem weiterhin besteht, wenden Sie sich an den <a href=\\\"mailto:{{email}}\\\"><strong>Support</strong></a>.\",\r\n\t\t\"COLLECTION_IMPORT_TITLE\": \"Fehler beim Anhängen des Glossars\",\r\n\t\t\"COLLECTION_IMPORT\": \"Die Begriffssammlung mit der ID: {{termId}} kann nicht an die Engine für maschinelle Übersetzung angehängt werden. Bitte versuchen Sie es erneut.\",\r\n\t\t\"E_12_TITLE\": \"Limit der Textgröße\",\r\n\t\t\"E_12\": \"Das Limit für die Textgröße wurde erreicht. Senden Sie die Anfrage mit weniger Text.\",\r\n\t\t\"E_12_SUPPORT\": \" Um das Limit für die Textgröße zu erhöhen, wenden Sie sich bitte an den <a href=\\\"mailto:{{email}}\\\"><strong>Support</strong></a>.\",\r\n\t\t\"E_21_TITLE\": \"Engine für maschinelle Übersetzung wird gestartet\",\r\n\t\t\"E_21\": \"Sie werden in wenigen Augenblicken übersetzen können.\",\r\n\t\t\"E_22_TITLE\": \"Engine für maschinelle Übersetzung nicht gefunden\",\r\n\t\t\"E_22\": \"Die Engine für maschinelle Übersetzung wurde nicht gefunden.\",\r\n\t\t\"E_22_SUPPORT\": \" Bitte kontaktieren Sie den <a href=\\\"mailto:{{email}}\\\"><strong> Support</strong></a>.\",\r\n\t\t\"E_23\": \"Die Engine für maschinelle Übersetzung wird nicht gestartet.\",\r\n\t\t\"E_23_SUPPORT\": \" Wenden Sie sich an den <a href=\\\"mailto:{{email}}\\\"><strong>Support</strong></a>.\",\r\n\t\t\"E_41\": \"Unbekannte Termkorpus-ID angegeben. Der Termkorpus muss mit der Engine für maschinelle Übersetzung verknüpft sein.\",\r\n\t\t\"E_504\": \"Die Zeit für die Aktion wurde überschritten.\",\r\n \"FILE_UPLOAD\":{\r\n \"FILE_UPLOAD_EMPTY_TITLE\": \"Die Datei ist leer\",\r\n\t\t\t\"FILE_UPLOAD_EMPTY\": \"Die hochgeladene Datei „{{fileName}}“ ist leer. Wählen Sie eine Datei mit Inhalt.\",\r\n\t\t\t\"FILE_UPLOAD_MAX_SIZE_TITLE\": \"Limit der Dateigröße\",\r\n\t\t\t\"FILE_UPLOAD_MAX_SIZE\": \"Die hochgeladene Datei „{{fileName}}“ ist zu groß. Maximale Größe {{maxSizeMB}} MB\",\r\n\t\t\t\"FILE_UPLOAD_UNSUPPORTED_FORMAT_TITLE\": \"Nicht unterstütztes Dateiformat\",\r\n\t\t\t\"FILE_UPLOAD_UNSUPPORTED_FORMAT\": \"Das Format der hochgeladenen Datei „{{fileName}}“ wird nicht unterstützt. Die Übersetzung folgender Dokumentformate wird unterstützt: {{formats}}.\",\r\n\t\t\t\"FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER_TITLE\": \"Nicht unterstütztes Dateiformat\",\r\n\t\t\t\"FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER\": \"Sie benötigen ein Tilde MT-Abonnement, um die Datei „{{fileName}}“ zu übersetzen. <a href=\\\"{{registerLink}}?{{queryString}}\\\">Beginnen Sie mit einer kostenlosen Testphase.</a>\",\r\n\t\t\t\"E_404_TITLE\": \"Datei nicht gefunden\",\r\n\t\t\t\"E_404\": \"Die angeforderte Datei ist nicht vorhanden\"\r\n },\r\n \"FILE_TRANSLATION_SUBSTATUS\": {\r\n\t\t\t\"BAD_FILE_ERROR_TITLE\": \"Fehler bei der Übersetzung der Datei\",\r\n\t\t\t\"BAD_FILE_ERROR\": \"Die Datei ist beschädigt und konnte nicht übersetzt werden. Überprüfen Sie die Datei und versuchen Sie es erneut.\",\r\n\t\t\t\"NO_TEXT_EXTRACTED_ERROR_TITLE\": \"Fehler beim Extrahieren eines Textes\",\r\n\t\t\t\"NO_TEXT_EXTRACTED_ERROR\": \"Die Datei ist möglicherweise leer. Überprüfen Sie die Datei und versuchen Sie es erneut.\",\r\n\t\t\t\"TRACK_CHANGES_ENABLED_ERROR_TITLE\": \"Übersetzung fehlgeschlagen, da 'Änderungen verfolgen' aktiviert ist\",\r\n\t\t\t\"TRACK_CHANGES_ENABLED_ERROR\": \"Bevor Sie Office-Dateien übersetzen können, müssen Sie alle vorhandenen Änderungen annehmen und die Funktion „Änderungen verfolgen“ deaktivieren.\",\r\n\t\t\t\"UNKNOWN_FILE_TYPE_ERROR_TITLE\": \"Unbekannter Dateityp\",\r\n\t\t\t\"UNKNOWN_FILE_TYPE_ERROR\": \"Dateityp wurde nicht erkannt. Die Dateierweiterung ist möglicherweise falsch oder die Datei ist beschädigt.\"\r\n\t\t},\r\n \"AUDIO\": {\r\n\t\t\t\"NO_SPEECH_TITLE\": \"Keine Sprachdaten\",\r\n\t\t\t\"NO_SPEECH\": \"Ihre Aufnahme wurde beendet. Wir konnten Sie nicht hören.\",\r\n\t\t\t\"MAX_TIME_EXCEEDED_TITLE\": \"Limit für Sprachdaten\",\r\n\t\t\t\"MAX_TIME_EXCEEDED\": \"Ihre Aufnahme wurde beendet. Die Spracheingabe ist auf {{timeString}} beschränkt.\",\r\n\t\t\t\"MIC_NOT_ALLOWED_TITLE\": \"Zugriff auf Mikrofon verweigert\",\r\n\t\t\t\"MIC_NOT_ALLOWED\": \"Sie haben den Zugriff auf das Mikrofon verweigert. Ändern Sie die Berechtigungen in den Einstellungen des Browsers.\",\r\n\t\t\t\"MAX_SIZE_EXCEEDED_TITLE\": \"Limit für Sprachdaten\",\r\n\t\t\t\"MAX_SIZE_EXCEEDED\": \"Ihre Aufnahme wurde beendet und zur Bearbeitung weitergeleitet. Die Spracheingabe ist auf eine Größe von {{maxSizeMB}} MB begrenzt.\",\r\n\t\t\t\"CANT_START_RECORDING_TITLE\": \"Fehler beim Starten der Aufnahme\",\r\n\t\t\t\"CANT_START_RECORDING\": \"Die Aufnahme konnte nicht gestartet werden. Bitte versuchen Sie es erneut.\",\r\n\t\t\t\"NO_TEXT_RECOGNIZED_Title\": \"Keine Sprachdaten erkannt\",\r\n\t\t\t\"NO_TEXT_RECOGNIZED\": \"Es konnten keine Sprachdaten erkannt werden. Überprüfen Sie Ihr Mikrofon und versuchen Sie es erneut.\"\r\n\t\t}\r\n },\r\n \"ARIA_LABELS\": {\r\n \"CLOSE_BUTTON\": \"Löschen\",\r\n \"CLEAR_NOTIFICATION\": \"Alarmmeldung schließen\",\r\n \"CLEAR_SOURCE\": \"Eingegebenen Text löschen\",\r\n \"CLOSE_DIALOG\": \"Dialog schließen\",\r\n \"CLEAR_FILES\": \"Hochgeladene Dateien löschen\",\r\n \"SHOW_EXTENSIONS\": \"Weitere Download-Optionen zeigen\",\r\n \"COPY\": \"In Zwischenablage kopieren\",\r\n\t\t\"OPEN_IN_NEW\": \"In neuer Registerkarte öffnen\",\r\n\t\t\"SWAP_LANGUAGES\": \"Sprachen tauschen\",\r\n\t\t\"OTHER_LANGUAGES_TRIGGER\": \"Andere Sprachen anzeigen\"\r\n },\r\n \"TOOLTIPS\": {\r\n \"COPY\": \"In Zwischenablage kopieren\",\r\n \"SWAP_LANGUAGES\": \"Sprachen tauschen\"\r\n },\r\n \"PDF_CONVERSION\": {\r\n\t\t\"CLOSE\": \"Dialog schließen\",\r\n \"TITLE_1\": \"PDF-Übersetzung\",\r\n \"PARAGRAPH_1_1\": \"Wenn eine .pdf-Datei zur Übersetzung hochgeladen wird, erfolgt zuerst eine Konvertierung in ein übersetzbares Format. Es werden sowohl gescannte als auch native .pdf-Dateien unterstützt. Übersetzungen können in den Formaten .docx, .tmx oder .pdf heruntergeladen werden und behalten ihre grundlegende Formatierung bei. Die Formatierung der übersetzten .docx- und .pdf-Dateien kann leicht vom Original abweichen. \",\r\n \"PARAGRAPH_1_2\": \"Da eine Konvertierung Zeit kostet, sollten Sie zur Beschleunigung des Vorgangs Ihre .pdfs aufteilen und Seiten mit nicht übersetzbaren Informationen daraus entfernen. Faktoren wie Seitenanzahl, Qualität und Textdichte wirken sich auf die Verarbeitungsdauer aus.\",\r\n \"PARAGRAPH_1_3\": \"Zur Verbesserung der Übersetzungsleistung empfehlen wir, das Dokument nach der Konvertierung in der Originalsprache herunterzuladen und Fehler von Hand zu beheben, bevor es neu zur Übersetzung hochgeladen wird.\",\r\n \"IMAGE_ALT_1\": \"Beispiel zum Herunterladen einer Quell-PDF\",\r\n\r\n \"TITLE_2\": \"PDF-Konvertierung\",\r\n \"PARAGRAPH_2_1\": \"Das Dokument wird analysiert und sein Inhalt wird in Bereiche mit Text, Tabellen und Bildern/Hintergrundbildern aufgeteilt. Diese Bereiche werden weiter analysiert, um festzustellen, welche Inhalte als Text erkannt werden sollten.\",\r\n \"PARAGRAPH_2_2\": \"Textdaten werden mit Hilfe von OCR-Verfahren (Optical Character Recognition = Optische Zeichenerkennung) erhalten. Dabei wird jedes Zeichen abhängig on seinen optischen Eigenschaften erkannt und dann zu Wörtern und Sätzen zusammengefügt.\",\r\n \"PARAGRAPH_2_3\": \"Die Erkennung wird unter anderem durch folgende Faktoren beeinflusst:\",\r\n \"LI_1_1\": \"Qualität des eingescannten Dokuments (unscharfer oder deformierter Text, Bildrauschen, Bildauflösung, Kontrast usw.). Für beste Ergebnisse sollten .pdf-Dateien eine Auflösung von mindestens 300 dpi haben sowie klar und rauschfrei sein.\",\r\n \"LI_1_2\": \"Schriftgröße. Größen unter 9 Punkten sind eventuell schlecht erkennbar. \",\r\n \"LI_1_3\": \"Seltene und Originalschriftarten. Weniger gebräuchliche Schriftarten werden eventuell gar nicht oder nur schlecht erkannt.\",\r\n \"LI_1_4\": \"Komplexität von Dokumentstruktur und -formatierung.\",\r\n\r\n \"TITLE_3\": \"Verbesserung der Übersetzungsleistung\",\r\n \"PARAGRAPH_3_1\": \"Der Konvertierungsprozess ist sehr komplex und kann zu verschiedenen Fehlern führen, die auf das eingegebene Dokument zurückzuführen sind. \",\r\n \"PARAGRAPH_3_2\": \"Worauf Sie achten sollten:\",\r\n \"LI_2_1\": \"Falsch erkannte Wörter.\",\r\n \"LI_2_2\": \"Falsche Wortgrenzen.\",\r\n \"LI_2_3\": \"Sätze, die über mehrere Spalten verlaufen, Zeilen oder Seiten, die in mehrere Textobjekte aufgeteilt wurden.\",\r\n \"LI_2_4\": \"Falsch platzierte Fuß- oder Kopfzeilen.\",\r\n \"LI_2_5\": \"Falsche Nummerierung.\",\r\n \"LI_2_6\": \"Tabellen, die als Hintergrundbilder erkannt wurden und deren Zelleninhalte in verschiedenen Textobjekten platziert wurden.\",\r\n \"LI_2_7\": \"Diagramme wurden als Bilder erkannt und enthalten keine Textelemente.\",\r\n \"LI_2_8\": \"Trennzeichen, Ränder oder andere horizontale Linien wurden als durchgestrichener oder unterstrichener Text erkannt.\",\r\n \"LI_2_9\": \"Die Formatierung des Inhaltsverzeichnisses oder ähnlicher Listen wurde zusammengeschoben oder als durchgestrichener oder unterstrichener Text erkannt.\",\r\n\r\n \"PARAGRAPH_4_1\": \"<b>Beachten Sie, dass das Ergebnisdokument nicht alle Details der Originalformatierung behält.</b> Einige Bilder, Tabellen oder Diagramme können verzerrt oder vereinfacht dargestellt werden. Schriftarten im übersetzten Dokument sind nicht dieselben wie im Original, sondern ähnliche Schriften. Es werden eventuell falsche Schriftgrößen erkannt. Spezifische Word-Formatierungen, zum Beispiel Überschriften, Inhaltsverzeichnisse, Kopf- und Fußzeilen, Beschriftungen, Formulare usw., erhalten einen Stil, der dem Original ähnelt, entsprechen diesem aber nicht vollständig. (Das heißt beispielsweise, Titel werden fett und größer dargestellt, sind aber nicht als Überschrift formatiert.)\"\r\n },\r\n \"IMAGE_CONVERSION\": {\r\n\t\t\"TITLE_1\": \"Bildübersetzung\",\r\n\t\t\"PARAGRAPH_1_1\": \"Wenn eine Bilddatei zur Übersetzung hochgeladen wird, erfolgt zuerst eine Konvertierung in ein übersetzbares Format. Übersetzungen können in den Formaten .docx oder .tmx heruntergeladen werden und behalten ihre grundlegende Formatierung bei.\",\r\n\t\t\"PARAGRAPH_1_2\": \"<b>Unterstützte Bildformate:</b> .jpg, .jpeg, .png und .bmp.\",\r\n\t\t\"PARAGRAPH_1_3\": \"Zur Verbesserung der Übersetzungsleistung empfehlen wir, das Dokument nach der Konvertierung in der Originalsprache herunterzuladen und Fehler von Hand zu beheben, bevor es neu zur Übersetzung hochgeladen wird.\",\r\n\t\t\"IMAGE_ALT_1\": \"Beispiel für den Download eines Quellbildes\",\r\n\t\t\"TITLE_2\": \"Bildkonvertierung\",\r\n\t\t\"PARAGRAPH_2_1\": \"Das Bild wird analysiert und sein Inhalt wird in Bereiche mit Text, Tabellen und Bildern/Hintergrundbildern aufgeteilt. Diese Bereiche werden weiter analysiert, um festzustellen, welche Inhalte als Text erkannt werden sollten.\",\r\n\t\t\"PARAGRAPH_2_2\": \"Textdaten werden mit Hilfe von OCR-Verfahren (Optical Character Recognition = Optische Zeichenerkennung) erhalten. Dabei wird jedes Zeichen abhängig von seinen optischen Eigenschaften erkannt und dann zu Wörtern und Sätzen zusammengefügt.\",\r\n\t\t\"PARAGRAPH_2_3\": \"Die Erkennung wird unter anderem durch folgende Faktoren beeinflusst:\",\r\n\t\t\"LI_1_1\": \"Qualität des eingescannten Bildes (unscharfer oder deformierter Text, Bildrauschen, Bildauflösung, Kontrast usw.). Für beste Ergebnisse sollten Bilder eine Auflösung von mindestens 300 dpi haben sowie klar und rauschfrei sein.\",\r\n\t\t\"LI_1_2\": \"Schriftgröße. Größen unter 9 Punkten sind eventuell schlecht erkennbar. \",\r\n\t\t\"LI_1_3\": \"Seltene und Originalschriftarten. Weniger gebräuchliche Schriftarten werden eventuell gar nicht oder nur schlecht erkannt.\",\r\n\t\t\"LI_1_4\": \"Komplexität von Dokumentstruktur und -formatierung.\",\r\n\t\t\"TITLE_3\": \"Verbesserung der Übersetzungsleistung\",\r\n\t\t\"PARAGRAPH_3_1\": \"Der Konvertierungsprozess ist sehr komplex und kann zu verschiedenen Fehlern führen, die auf das eingegebene Dokument zurückzuführen sind. \",\r\n\t\t\"PARAGRAPH_3_2\": \"Worauf Sie achten sollten:\",\r\n\t\t\"LI_2_1\": \"Falsch erkannte Wörter.\",\r\n\t\t\"LI_2_2\": \"Falsche Wortgrenzen.\",\r\n\t\t\"LI_2_3\": \"Sätze, die über mehrere Spalten verlaufen, Zeilen oder Seiten, die in mehrere Textobjekte aufgeteilt wurden.\",\r\n\t\t\"LI_2_4\": \"Falsch platzierte Fuß- oder Kopfzeilen.\",\r\n\t\t\"LI_2_5\": \"Falsche Nummerierung.\",\r\n\t\t\"LI_2_6\": \"Tabellen, die als Hintergrundbilder erkannt wurden und deren Zelleninhalte in verschiedenen Textobjekten platziert wurden.\",\r\n\t\t\"LI_2_7\": \"Diagramme wurden als Bilder erkannt und enthalten keine Textelemente.\",\r\n\t\t\"LI_2_8\": \"Trennzeichen, Ränder oder andere horizontale Linien wurden als durchgestrichener oder unterstrichener Text erkannt.\",\r\n\t\t\"PARAGRAPH_4_1\": \"<b>Beachten Sie, dass das Ergebnisdokument nicht alle Details der Originalformatierung behält.</b> Einige Bilder, Tabellen oder Diagramme können verzerrt oder vereinfacht dargestellt werden. Schriftarten im übersetzten Dokument sind nicht dieselben wie im Original, sondern ähnliche Schriften. Es werden eventuell falsche Schriftgrößen erkannt.\",\r\n\t\t\"CLOSE\": \"Dialog schließen\"\r\n\t},\r\n \"WEBTRANSLATE\": {\r\n \"BACK\": \"Zurück zum Übersetzer\",\r\n \"ADDRESS\": \"Adresse\",\r\n \"LOAD_PAGE\": \"Seite laden\",\r\n \"RESTORE\": \"Wiederherstellen\",\r\n \"CANCEL\": \"Abbrechen\"\r\n },\r\n \"TERM_COLLECTIONS\": {\r\n \"GLOSSARY\": \"Glossar: \",\r\n \"SELECTED_NONE\": \"Keines\",\r\n \"EDIT\": \"Bearbeiten\",\r\n \"CREATE\": \"Neues Glossar\",\r\n \"ENTRY_COUNT\": \"Einträge: {{count}}\",\r\n \"ENTRY_COUNT_WITH_LANGUGAES\": \"Einträge: {{count}} [{{languages}}]\",\r\n \"DEFAULT_COLLECTION_NAME\": \"Meine Begriffssammlung\",\r\n \"SYNC\": \"Synchronisieren\",\r\n \"SYNC_ERROR\": \"Erneut versuchen\",\r\n \"MT_ENTRY_COUNT\": \"Importiert: {{count}}\",\r\n\t\t\"TITLE\": \"Glossare auswählen, bearbeiten und verwalten\",\r\n\t\t\"TITLE_EMPTY\": \"Ein erstes Glossar erstellen\",\r\n\t\t\"TITLE_MOBILE\": \"Glossare auswählen\",\r\n\t\t\"DESCRIPTION_1\": \"Wählen Sie aus, welche Begriffssammlung Sie für dieses Projekt verwenden möchten. \",\r\n\t\t\"DESCRIPTION_2\": \" Sie können neue Sammlungen hinzufügen und bestehende bearbeiten\",\r\n\t\t\"DESCRIPTION_2_MOBILE\": \" Mit der Desktop-Version können Sie neue Sammlungen anlegen oder bestehende bearbeiten.\",\r\n\t\t\"DESCRIPTION_EMPTY\": \"Sie können genau festlegen, wie {{appName}} Wörter und Ausdrücke, die für Ihr Unternehmen oder Ihre Branche spezifisch sind, übersetzen soll, indem Sie sie zu Ihren individuellen Begriffssammlungen hinzufügen.\",\r\n\t\t\"DESCRIPTION_EMPTY_MOBILE\": \"Indem Sie bestimmte Wörter und Ausdrücke, die für Ihr Unternehmen oder Ihre Branche spezifisch sind, zu Ihren individuellen Begriffssammlungen hinzufügen, können Sie genau festlegen, wie {{appName}} diese übersetzen soll.\",\r\n \"PROMOTION\": {\r\n\t\t\t\"TITLE\": \"Glossare anlegen, bearbeiten und verwalten\",\r\n\t\t\t\"DESCRIPTION\": \"Für Tilde MT-Mitglieder sind Glossare verfügbar.\",\r\n\t\t\t\"START_TRIAL\": \"Mit kostenloser Testversion beginnen\",\r\n\t\t\t\"LEARN_MORE\": \"Weitere Informationen über Glossare\"\r\n\t\t},\r\n \"ARIA_LABELS\": {\r\n \"RADIO_GROUP\": \"Begriffssammlung auswählen\",\r\n \"OTHER_COLLECTIONS\": \"Sammlungsmenü öffnen\",\r\n\t\t\t\"MT_ENTRY_COUNT\": \"Anzahl der für die maschinelle Übersetzung verwendeten Einträge\"\r\n },\r\n \"CREATE_DIALOG\": {\r\n \"CANCEL\": \"Abbrechen\",\r\n \"COLLECTION_NAME_LABEL\": \"Name der Begriffssammlung\",\r\n \"CREATE\": \"Erstellen\",\r\n \"DESCRIPTION_1\": \"Nachdem Sie Ihre Begriffssammlung benannt haben, werden Sie zu Tilde Term weitergeleitet, um neue Begriffe hinzuzufügen. Sobald Sie fertig sind, kehren Sie zu Tilde MT zurück, um sie in Ihren Übersetzungsprojekten zu verwenden.\",\r\n \"DESCRIPTION_2\": \"<i>* KI ist nicht perfekt und kann gelegentlich Fehler machen. Ihre einzigartigen Begriffe werden mit 95%iger Genauigkeit korrekt verwendet.</i>\",\r\n \"TITLE\": \"Neues Glossar erstellen\",\r\n \"COLLECTION_NAME_ERROR\": \"Der Titel sollte mindestens {{minLength}} Zeichen und nicht länger als {{maxLength}} Zeichen lang sein.\"\r\n },\r\n \"TOOLTIPS\": {\r\n \"EDIT\": \"Sie werden zum Terminologieportal weitergeleitet, das in einem neuen Tab geöffnet wird\",\r\n \"ENTRY_COUNT\": \"Anzahl der hinzugefügten Einträge in der Begriffssammlung\",\r\n \"IMPORTING\": \"Die Begriffssammlung wird gerade importiert und kann nicht verwendet werden, solange der Import nicht abgeschlossen ist.\",\r\n \"NO_ENTRIES\": \"Begriffssammlung kann nicht verwendet werden, da es keine Begriffe für die Ausgangssprache gibt.\",\r\n \"SYNC\": \"Begriffssammlung aktualisieren\",\r\n \"SYNCING\": \"Die Begriffssammlung wird gerade synchronisiert, und die zuletzt synchronisierte Version der Sammlung wird verwendet.\",\r\n \"ATTACH_TO_SYSTEM_ERROR\": \"Beim Import der Begriffssammlung ist ein Fehler aufgetreten.\"\r\n }\r\n },\r\n \"DOMAINS\": {\r\n \"LAW\": \"Recht\",\r\n \"DYNAMIC_LEARNING\": \"Dynamisches Lernen\",\r\n \"BUSINESS\": \"Wirtschaft\",\r\n \"OPEN_LIST_ARIA_LABEL\": \"Domainliste öffnen\",\r\n\t\t\"TITLE\": \"Domain:\",\r\n\t\t\"GENERAL\": \"Allgemein\",\r\n\t\t\"AUTO\": \"Automatische Erkennung\"\r\n },\r\n \"GRAMMAR_CHECK_MENU\": {\r\n\t\t\"TITLE\": \"Wechsel in Betracht ziehen zu:\"\r\n\t},\r\n\t\"AUDIO\": {\r\n\t\t\"CANCEL\": \"Abbrechen\",\r\n\t\t\"DESCRIBE_STATE_RECORDING\": \"Bitte sprechen Sie, um Sprachdaten aufzunehmen...\",\r\n\t\t\"DESCRIBE_STATE_PROCESSING\": \"Daten werden verarbeitet...\",\r\n\t\t\"MIC_NOT_FOUND\": \"Mikrofon nicht gefunden\",\r\n\t\t\"STOP\": \"Aufnahme beenden\",\r\n\t\t\"START\": \"Gesprochene Sprache übersetzen\",\r\n\t\t\"PUNCTUATION_MESSAGE_TITLE\": \"Zeichensetzung hinzufügen\",\r\n\t\t\"PUNCTUATION_MESSAGE\": \"Bitte fügen Sie dem erkannten Text Satzzeichen hinzu. Lange Texte ohne Zeichensetzung können eine geringere Übersetzungsqualität aufweisen oder nicht übersetzt werden.\"\r\n\t},\r\n\t\"EXTENSION_POPUP\": {\r\n\t\t\"OPEN\": \"Alle unterstützten Formate anzeigen\",\r\n\t\t\"TITLE\": \"Unterstützte Dateiformate\",\r\n\t\t\"DESCRIPTION\": \"UTF-8- oder UTF-16-Kodierung erforderlich, um eine korrekte Dateiübersetzung zu gewährleisten\",\r\n\t\t\"OFFICE\": \"Office\",\r\n\t\t\"SCANNED\": \"Gescannte Dateien\",\r\n\t\t\"INTERCHANGE\": \"Austauschformate\",\r\n\t\t\"WEB\": \"Web\",\r\n\t\t\"OTHER\": \"Sonstiges\"\r\n\t},\r\n\t\"FILE_UPLOAD\": {\r\n\t\t\"UPLOAD\": \"Auswählen\",\r\n\t\t\"DRAG_AND_DROP\": \"oder per Drag &amp; Drop \",\r\n\t\t\"FILE\": \"eine Datei\",\r\n\t\t\"FILES\": \"Dateien\",\r\n\t\t\"LIMITS\": \" ({{visibleExtensions}}. Max. {{maxSizeMB}} MB\"\r\n\t},\r\n \"TEXT_TO_SPEECH\": {\r\n \"PLAY\": \"Anhören\"\r\n }\r\n}\r\n","export const i18n_en = {\r\n \"APP_NAME\": \"Tilde MT\",\r\n \"TLD_TRANSLATE\": {\r\n \"BEST_NMT\": \"Proud winner of the best machine translation technology at WMT Competition for three years in a row.\",\r\n \"BEST_NMT_MORE\": \"Learn more\",\r\n \"CANCEL_TRANSLATION\": \"Cancel\",\r\n \"DICTIONARY_EXAMPLES\": \"examples\",\r\n \"DOWNLOAD_TRANSLATED\": \"Download\",\r\n \"DOMAINS_ARIA_LABEL\": \"Domains\",\r\n \"FILE_DOWNLOAD_SOURCE\": \"Download converted source PDF\",\r\n \"FILE_DOWNLOAD_SOURCE_HELP\": \"PDF conversion may cause formatting errors or text distortion. Please check the converted file and fix the errors before re-uploading the file for translation\",\r\n \"FILE_DOWNLOAD_SOURCE_IMAGE\": \"Download converted source image\",\r\n \"FILE_DOWNLOAD_SOURCE_IMAGE_HELP\": \"Image conversion may cause formatting errors or text distortion. Please check the converted file and fix the errors before re-uploading the file for translation\",\r\n \"FILE_TANSLATION_STATUSS_INITIALIZING\": \"Initializing translation process...\",\r\n \"FILE_TANSLATION_STATUSS_EXTRACTING\": \"Extracting translatable content...\",\r\n \"FILE_TANSLATION_STATUSS_WAITING\": \"Starting translator...\",\r\n \"FILE_TANSLATION_STATUSS_TRANSLATING\": \"Translating...\",\r\n \"FILE_TANSLATION_STATUSS_SAVING\": \"Saving translation...\",\r\n \"FILE_TANSLATION_STATUSS_COMPLETED\": \"\",\r\n \"FILE_TANSLATION_STATUSS_ERROR\": \"\",\r\n \"FILE_TANSLATION_STATUSS_QUEUING\": \"Translation is starting...\",\r\n \"FILE_TANSLATION_STATUSS_UPLOADING\": \"Uploading...\",\r\n \"FILE_TANSLATION_STATUSS_UPLOADED\": \"Uploaded\",\r\n \"FILE_TARGET_PREVIEW_MESSAGE\": \"This is a preview of the translated document, please download to receive a complete translation.\",\r\n \"FROM\": \"From:\",\r\n \"PDF_DISCLAIMER_LINK\": \"See how to fix it\",\r\n \"IMAGE_DISCLAIMER_LINK\": \"Read about image conversion.\",\r\n \"PREPARING_TRANSLATION\": \"Translation is starting\",\r\n \"REGISTERED_FORMATS_LOGGED_IN\": \"Registered users have access to the following document formats translation: {{formats}}.\",\r\n \"REGISTERED_FORMATS\": \"Registered users have access to the following document formats translation: {{formats}}. Request your access <a class=\\\"accent-color\\\" target=\\\"blank\\\" href=\\\"{{registerLink}}\\\">here</a>.\",\r\n \"SOURCE_FORMATS\": \"Secure public translation service supports following document formats: {{formats}};\",\r\n \"SOURCE_WORD_LIMIT\": \" translation amount is limited up to {{limit}} words.\",\r\n \"SOURCE_TOOLTIP\": \"Enter the text or homepage you would like to translate.\",\r\n \"SOURCE_TOOLTIP_ONLY_TEXT\": \"Enter the text you would like to translate.\",\r\n \"SOURCE_TOOLTIP_SENSITIVE_INFO\": \"Do not use {{appName}} to translate confidential or classified information or texts that contain special categories of personal data, such as medical data\",\r\n \"TARGET_DESCRIPTION\": \"Machine translation allows to understand the meaning of a source text, but cannot substitute a human translation.\",\r\n \"TO\": \"To:\",\r\n \"TEXT_COPIED\": \"Translation copied\",\r\n \"SUGGEST_BUTTON\": \"Suggest translation\",\r\n \"SUGGEST_ORIGINAL_LABEL\": \"Original sentence\",\r\n \"SUGGEST_SUBMIT_BUTTON\": \"Contribute\",\r\n \"SUGGEST_TRANSLATION_LABEL\": \"Translation\",\r\n \"SUGGEST_USAGE_INFO\": \"Your anonymized translation suggestion will be used to improve the quality of machine translation.\",\r\n \"TOOLTIP_ACTION\": \"Translate\",\r\n \"VENDORS_ARIA_LABEL\": \"Providers\",\r\n \"WORD_TYPE_ADJECTIVE\": \"adjective\",\r\n \"WORD_TYPE_NOUN\": \"noun\",\r\n \"WORD_TYPE_VERB\": \"verb\",\r\n \"WORD_TYPE_ADVERB\": \"adverb\",\r\n \"WORD_TYPE_CONJUNCTION\": \"conjunction\",\r\n \"WORD_TYPE_INTERJECTION\": \"interjection\",\r\n \"WORD_TYPE_PRONOUN\": \"pronoun\",\r\n \"DOC_WORD_CNT_LIMIT_MSG_TITLE\": \"Translation limit\",\r\n \"DOC_WORD_CNT_LIMIT_MSG\": \"Only the first {{wordCount}} words will be translated. You need a Tilde MT subscription to translate full files. <a href=\\\"{{registerLink}}?{{queryString}}\\\">start with a free trial</a>\",\r\n \"ERROR_NO_SYSTEMS_LOADED_TITLE\": \"No translation engines were loaded\",\r\n \"ERROR_NO_SYSTEMS_LOADED\": \"Failed to load the machine translation engines.\",\r\n \"ERROR_NO_SYSTEMS_LOADED_SUPPORT\": \" Please reload the page or contact <a href=\\\"mailto:{{email}}\\\"><strong> support</strong></a>.\",\r\n \"PDF_PAGE_LIMIT_MSG_TITLE\": \"Translation limit\",\r\n \"PDF_PAGE_LIMIT_MSG\": \"Only the first page will be translated. You need a Tilde MT subscription to translate full PDF files. <a href=\\\"{{registerLink}}?{{queryString}}\\\">start with a free trial</a>\",\r\n \"CLEAR_SOURCE_TOOLTIP\": \"Clear text\"\r\n },\r\n \"MULTIPLE_FILES\": {\r\n \"APPEND\": \"Add files\",\r\n \"CLEAR_ALL\": \"Cancel\",\r\n \"DOWNLOAD\": \"Download\",\r\n \"STATUSS_INITIALIZING\": \"Initializing\",\r\n \"STATUSS_EXTRACTING\": \"Extracting\",\r\n \"STATUSS_WAITING\": \"Starting translator\",\r\n \"STATUSS_TRANSLATING\": \"Translating {{percent}}%\",\r\n \"STATUSS_SAVING\": \"Saving\",\r\n \"STATUSS_COMPLETED\": \"Completed\",\r\n \"STATUSS_ERROR\": \"Error\",\r\n \"STATUSS_QUEUING\": \"Queuing\",\r\n \"STATUSS_NOT_STARTED\": \"Uploaded\",\r\n \"STATUSS_UPLOADING\": \"Uploading...\",\r\n \"STATUSS_UPLOADED\": \"Uploaded\",\r\n \"TITLE_FILE_NAME\": \"File\",\r\n \"TITLE_STATUSS\": \"Status\",\r\n \"TRANSLATION_STATUSS_LABEL\": \"Status\",\r\n \"PDF_DISCLAIMER\": \"PDF documents may have formatting or translation errors.\",\r\n \"PDF_DISCLAIMER_LINK\": \"Read about pdf conversion.\",\r\n \"IMAGE_DISCLAIMER\": \"Image conversion may cause formatting errors or text distortion.\",\r\n \"IMAGE_DISCLAIMER_LINK\": \"Read about image conversion.\",\r\n \"SCREEN_READER_ANNOUNCEMENT\": \"{{translated}} out of {{total}} files are translated.\",\r\n \"REMOVE_FILE_TOOLTIP\": \"Clear file\"\r\n },\r\n \"ERRORS\": {\r\n \"ERROR_DEFAULT_TITLE\": \"Unexpected error\",\r\n \"ERROR_DEFAULT\": \"An unexpected error occurred. Please try again.\",\r\n \"ERROR_DEFAULT_SUPPORT\": \" If the problem continues, contact <a href=\\\"mailto:{{email}}\\\"><strong>support</strong></a>.\",\r\n \"MAX_CHAR_LENGTH_TITLE\": \"Translation limit\",\r\n \"MAX_CHAR_LENGTH\": \"Only {{maxCharLength}}/{{totalSymbols}} characters will be translated. You need a Tilde MT subscription for unlimited text translation. <a href=\\\"{{registerLink}}?{{queryString}}\\\">start with a free trial</a>\",\r\n \"MAX_NUMBER_OF_FILES_TITLE\": \"Upload limit\",\r\n \"MAX_NUMBER_OF_FILES\": \"Only {{limit}} files can be translated at once.\",\r\n \"INCREASE_MAX_NUMBER_OF_FILES_TITLE\": \"Upload limit\",\r\n \"INCREASE_MAX_NUMBER_OF_FILES\": \"Only 1 file can be translated at once. You need a Tilde MT subscription to increase limit. <a href=\\\"{{registerLink}}?{{queryString}}\\\">start with a free trial</a>\",\r\n \"FILE_ALREADY_ADDED_TITLE\": \"File has already been added\",\r\n \"FILE_ALREADY_ADDED\": \"File \\\"{{fileName}}\\\" has already been added.\",\r\n \"UANUTHORIZED_401_TITLE\": \"Unauthorized\",\r\n \"UANUTHORIZED_401\": \"You don't have permission to use machine translation.\",\r\n \"UANUTHORIZED_401_SUPPORT\": \" Please contact <a href=\\\"mailto:{{email}}\\\"><strong> support</strong></a>.\",\r\n \"E_UNKNOWN_FILE_TYPE\": \"Unknown file type.\",\r\n \"E_CANNOT_READ_FILE_TITLE\": \"Unable to read file\",\r\n \"E_CANNOT_READ_FILE\": \"The file \\\"{{fileName}}\\\" is corrupted and couldn't be translated. Check the file and try again.\",\r\n \"E_FAILED_IN_TRANSLATION_TITLE\": \"Translation failed\",\r\n \"E_FAILED_IN_TRANSLATION\": \"Error occurred while translating. Please try again.\",\r\n \"E_FAILED_IN_TRANSLATION_SUPPORT\": \" If the problem continues, contact <a href=\\\"mailto:{{email}}\\\"><strong> support</strong></a>.\",\r\n \"E_FORMAT_TRACK_CHANGES_TITLE\": \"Translation failed, because ‘track changes’ is turned on\",\r\n \"E_FORMAT_TRACK_CHANGES\": \"Changes must first be accepted or ‘track changes’ turned off before translating Office files.\",\r\n \"E_UNKNOWN_ERROR_TITLE\": \"Unknown error\",\r\n \"E_UNKNOWN_ERROR\": \"An unknown error occurred.\",\r\n \"E_UNAUTHORIZED_TITLE\": \"Unauthorized\",\r\n \"E_UNAUTHORIZED\": \"Document translation was denied.\",\r\n \"COLLECTION_CREATE_TITLE\": \"Failed to create a glossary\",\r\n \"COLLECTION_CREATE\": \"Failed to create a new glossary. Please try again.\",\r\n \"COLLECTION_CREATE_SUPPORT\": \" If the problem continues, contact <a href=\\\"mailto:{{email}}\\\"><strong>support</strong></a>.\",\r\n \"COLLECTION_IMPORT_TITLE\": \"Failed to attach the glossary\",\r\n \"COLLECTION_IMPORT\": \"Failed to attach the term collection with ID: {{termId}} to the machine translation engine. Please try again.\",\r\n \"E_11\": \"Daily translation limit has been reached.\",\r\n \"E_11_SUPPORT\": \" To increase the daily limit, please contact <a href=\\\"mailto:{{email}}\\\"><strong>support</strong></a>.\",\r\n \"E_12_TITLE\": \"Text size limit\",\r\n \"E_12\": \"Text size limit reached. Send less text in the request.\",\r\n \"E_12_SUPPORT\": \" To increase the text size limit, please contact <a href=\\\"mailto:{{email}}\\\"><strong>support</strong></a>.\",\r\n \"E_21_TITLE\": \"Machine translation engine is starting\",\r\n \"E_21\": \"You will be able to translate in a few moments.\",\r\n \"E_22_TITLE\": \"Machine translation engine not found\",\r\n \"E_22\": \"Machine translation engine not found.\",\r\n \"E_22_SUPPORT\": \" Please contact <a href=\\\"mailto:{{email}}\\\"><strong>support</strong></a>.\",\r\n \"E_23\": \"Machine translation engine is not started.\",\r\n \"E_23_SUPPORT\": \" Contact <a href=\\\"mailto:{{email}}\\\"><strong>support</strong></a>.\",\r\n \"E_41\": \"Unknown term corpus ID provided. Term corpus must be linked to the machine translation engine\",\r\n \"E_504\": \"Translation has timed out. Try again later.\",\r\n \"E_504_TITLE\": \"Translation timeout\",\r\n \"TRANSLATION_FAILED_TITLE\": \"Translation failed\",\r\n \"TRANSLATION_FAILED\": \"An unexpected error occurred.\",\r\n \"TRANSLATION_FAILED_SUPPORT\": \" If the problem continues, contact <a href=\\\"mailto:{{email}}\\\"><strong>support</strong></a>.\",\r\n \"FILE_TRANSLATION_SUBSTATUS\": {\r\n \"BAD_FILE_ERROR_TITLE\": \"Failed to translate the file\",\r\n \"BAD_FILE_ERROR\": \"The file is corrupted and couldn't be translated. Check the file and try again.\",\r\n \"NO_TEXT_EXTRACTED_ERROR_TITLE\": \"Failed to extract any text\",\r\n \"NO_TEXT_EXTRACTED_ERROR\": \"The file may be empty. Check the file and try again.\",\r\n \"TRACK_CHANGES_ENABLED_ERROR_TITLE\": \"Translation failed, because ‘track changes’ is turned on\",\r\n \"TRACK_CHANGES_ENABLED_ERROR\": \"Changes must first be accepted or ‘track changes’ turned off before translating Office files.\",\r\n \"UNKNOWN_FILE_TYPE_ERROR_TITLE\": \"Unknown file type\",\r\n \"UNKNOWN_FILE_TYPE_ERROR\": \"File type not recognized. The file extension may be incorrect, or the file may be corrupted.\"\r\n },\r\n \"FILE_UPLOAD\": {\r\n \"FILE_UPLOAD_EMPTY_TITLE\": \"The file is empty\",\r\n \"FILE_UPLOAD_EMPTY\": \"The uploaded file \\\"{{fileName}}\\\" is empty. Select a file with content.\",\r\n \"FILE_UPLOAD_MAX_SIZE_TITLE\": \"File size limit\",\r\n \"FILE_UPLOAD_MAX_SIZE\": \"The uploaded file \\\"{{fileName}}\\\" is too big. Maximum size {{maxSizeMB}}MB\",\r\n \"FILE_UPLOAD_UNSUPPORTED_FORMAT_TITLE\": \"Unsupported file format\",\r\n \"FILE_UPLOAD_UNSUPPORTED_FORMAT\": \"The uploaded file \\\"{{fileName}}\\\" format is not supported. Translation is supported for these document formats: {{formats}}.\",\r\n \"FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER_TITLE\": \"Unsupported file format\",\r\n \"FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER\": \"You need Tilde MT subscription to translate \\\"{{fileName}}\\\" file. <a href=\\\"{{registerLink}}?{{queryString}}\\\">start with a free trial</a>\",\r\n \"E_404_TITLE\": \"File not found\",\r\n \"E_404\": \"The requested file doesn't exist\",\r\n \"E_404_REMOVE_TITLE\": \"Failed to delete the file\",\r\n \"E_404_REMOVE\": \"File has already been deleted\"\r\n },\r\n \"AUDIO\": {\r\n \"NO_SPEECH_TITLE\": \"No speech\",\r\n \"NO_SPEECH\": \"Your recording was stopped. We couldn't hear you.\",\r\n \"MAX_TIME_EXCEEDED_TITLE\": \"Speech limit\",\r\n \"MAX_TIME_EXCEEDED\": \"Your recording was stopped. Speech input is limited to {{timeString}}.\",\r\n \"MIC_NOT_ALLOWED_TITLE\": \"Microphone access denied\",\r\n \"MIC_NOT_ALLOWED\": \"You have denied access to the microphone. Change permissions in browser's settings.\",\r\n \"MAX_SIZE_EXCEEDED_TITLE\": \"Speech limit\",\r\n \"MAX_SIZE_EXCEEDED\": \"Your recording was stopped and sent to processing. Speech input is limited to ({{maxSizeMb}}MB) size.\",\r\n \"CANT_START_RECORDING_TITLE\": \"Failed to start recording\",\r\n \"CANT_START_RECORDING\": \"Unable to start recording. Please try again.\",\r\n \"NO_TEXT_RECOGNIZED_Title\": \"No speech recognized\",\r\n \"NO_TEXT_RECOGNIZED\": \"No speech could be recognized. Check your microphone and try again.\"\r\n }\r\n },\r\n \"RATING\": {},\r\n \"LANGUAGES\": {\r\n \"AR\": \"Arabic\",\r\n \"LV\": \"Latvian\",\r\n \"ET\": \"Estonian\",\r\n \"DA\": \"Danish\",\r\n \"FI\": \"Finnish\",\r\n \"IS\": \"Icelandic\",\r\n \"LT\": \"Lithuanian\",\r\n \"NB\": \"Norwegian\",\r\n \"SV\": \"Swedish\",\r\n \"BE\": \"Belorussian\",\r\n \"BG\": \"Bulgarian\",\r\n \"CS\": \"Czech\",\r\n \"HU\": \"Hungarian\",\r\n \"RU\": \"Russian\",\r\n \"MO\": \"Moldavian\",\r\n \"PL\": \"Polish\",\r\n \"SK\": \"Slovak\",\r\n \"UK\": \"Ukrainian\",\r\n \"NL\": \"Dutch\",\r\n \"EN\": \"English\",\r\n \"FR\": \"French\",\r\n \"DE\": \"German\",\r\n \"GA\": \"Irish\",\r\n \"EL\": \"Greek\",\r\n \"IT\": \"Italian\",\r\n \"MT\": \"Maltese\",\r\n \"PT\": \"Portuguese\",\r\n \"SR\": \"Serbian\",\r\n \"SL\": \"Slovenian\",\r\n \"ES\": \"Spanish\",\r\n \"ZH\": \"Chinese\",\r\n \"JA\": \"Japanese\",\r\n \"KO\": \"Korean\",\r\n \"TR\": \"Turkish\",\r\n \"HR\": \"Croatian\",\r\n \"RO\": \"Romanian\"\r\n },\r\n \"ARIA_LABELS\": {\r\n \"CLOSE_BUTTON\": \"Clear\",\r\n \"CLEAR_NOTIFICATION\": \"Close alert\",\r\n \"CLEAR_SOURCE\": \"Clear entered text\",\r\n \"CLOSE_DIALOG\": \"Close dialog\",\r\n \"CLEAR_FILES\": \"Clear uploaded files\",\r\n \"SHOW_EXTENSIONS\": \"Show other download options\",\r\n \"COPY\": \"Copy to clipboard\",\r\n \"OPEN_IN_NEW\": \"Open in new tab\",\r\n \"SWAP_LANGUAGES\": \"Swap languages\",\r\n \"OTHER_LANGUAGES_TRIGGER\": \"Show other languages\"\r\n },\r\n \"TOOLTIPS\": {\r\n \"COPY\": \"Copy to clipboard\",\r\n \"SWAP_LANGUAGES\": \"Swap languages\"\r\n },\r\n \"PDF_CONVERSION\": {\r\n \"TITLE_1\": \"PDF translation\",\r\n \"PARAGRAPH_1_1\": \"When a .pdf file is uploaded for translation it is converted into a translatable format. Both scanned and native .pdfs are supported. Translations can be downloaded in .docx, .tmx or .pdf formats and will retain the basic formatting. Formatting in the translated .docx and .pdf files may slightly differ. \",\r\n \"PARAGRAPH_1_2\": \"As conversion takes time, to speed things up split your .pdfs and delete the pages with no translatable information. Factors like the number of pages, quality and text density affect the processing time.\",\r\n \"PARAGRAPH_1_3\": \"To improve translation performance, we recommend to download the converted document in the original language and fix it manually before re-uploading for translation.\",\r\n \"IMAGE_ALT_1\": \"Source PDF download example\",\r\n\r\n \"TITLE_2\": \"PDF conversion\",\r\n \"PARAGRAPH_2_1\": \"The document is analysed and its content is split in text, table and image/background image areas. They are analysed further to determine which content should be recognized as text.\",\r\n \"PARAGRAPH_2_2\": \"Textual data are acquired by means of OCR or optical character recognition. Every character is recognized depending on its visual characteristics, then assembled into words and sentences.\",\r\n \"PARAGRAPH_2_3\": \"Recognition is affected by many factors, including:\",\r\n \"LI_1_1\": \"Quality of the scanned document (blurred or deformed text, image noise, image resolution, contrast etc.). For the best result, .pdfs should be at least 300 dpi, unskewed and noise free.\",\r\n \"LI_1_2\": \"Font size. Sizes smaller than 9 points might be poorly recognized. \",\r\n \"LI_1_3\": \"Rare and original fonts. Less common fonts may be unrecognizable or perform worse.\",\r\n \"LI_1_4\": \"Complexity of the document structure and formatting.\",\r\n\r\n \"TITLE_3\": \"Improving translation performance\",\r\n \"PARAGRAPH_3_1\": \"The conversion process is very complex and may be affected by various errors resulting from the input document. \",\r\n \"PARAGRAPH_3_2\": \"Issues to look for:\",\r\n \"LI_2_1\": \"Incorrectly recognized words.\",\r\n \"LI_2_2\": \"Incorrect word boundaries.\",\r\n \"LI_2_3\": \"Sentences spanning multiple columns, lines or pages split into different textual objects.\",\r\n \"LI_2_4\": \"Misplaced page footers and headers.\",\r\n \"LI_2_5\": \"Incorrect numbering.\",\r\n \"LI_2_6\": \"Tables recognized as background images with textual content placed into different textual objects.\",\r\n \"LI_2_7\": \"Some diagrams recognized as images without any textual content.\",\r\n \"LI_2_8\": \"Separators, borders or other horizontal lines recognized as strikethrough or underlined text.\",\r\n \"LI_2_9\": \"Formatting of the table of contents or similar lists collapsed or recognized as strikethrough or underlined text.\",\r\n\r\n \"PARAGRAPH_4_1\": \"<b>Note that the resulting document will not retain all details of the original formatting.</b> Some images, tables or diagrams may become distorted or simplified. Fonts in the translated document will not be the same as in the original, but may be similar. Incorrect font size may be recognized. Specific Word formatting like headings, tables of content, headers and footers, labels, forms etc. will be styled to look like the original, but will not match the original completely (e.g. titles will be bold and in larger font, but will not be set to the heading style).\",\r\n\r\n \"CLOSE\": \"Close dialog\"\r\n },\r\n \"IMAGE_CONVERSION\": {\r\n \"TITLE_1\": \"Image translation\",\r\n \"PARAGRAPH_1_1\": \"When an image file is uploaded for translation it is converted into a translatable format. Translations can be downloaded in .docx or .tmx formats and will retain the basic formatting.\",\r\n \"PARAGRAPH_1_2\": \"<b>Supported image formats:</b> .jpg, .jpeg, .png and .bmp.\",\r\n \"PARAGRAPH_1_3\": \"To improve translation performance, we recommend to download the converted document in the original language and fix it manually before re-uploading for translation.\",\r\n \"IMAGE_ALT_1\": \"Source image download example\",\r\n\r\n \"TITLE_2\": \"Image conversion\",\r\n \"PARAGRAPH_2_1\": \"The image is analysed and its content is split in text, table and image/background image areas. They are analysed further to determine which content should be recognized as text.\",\r\n \"PARAGRAPH_2_2\": \"Textual data are acquired by means of OCR or optical character recognition. Every character is recognized depending on its visual characteristics, then assembled into words and sentences.\",\r\n \"PARAGRAPH_2_3\": \"Recognition is affected by many factors, including:\",\r\n \"LI_1_1\": \"Quality of the scanned image (blurred or deformed text, image noise, image resolution, contrast etc.). For the best result, images should be at least 300 dpi, unskewed and noise free.\",\r\n \"LI_1_2\": \"Font size. Sizes smaller than 9 points might be poorly recognized. \",\r\n \"LI_1_3\": \"Rare and original fonts. Less common fonts may be unrecognizable or perform worse.\",\r\n \"LI_1_4\": \"Complexity of the document structure and formatting.\",\r\n\r\n \"TITLE_3\": \"Improving translation performance\",\r\n \"PARAGRAPH_3_1\": \"The conversion process is very complex and may be affected by various errors resulting from the input document. \",\r\n \"PARAGRAPH_3_2\": \"Issues to look for:\",\r\n \"LI_2_1\": \"Incorrectly recognized words.\",\r\n \"LI_2_2\": \"Incorrect word boundaries.\",\r\n \"LI_2_3\": \"Sentences spanning multiple columns, lines or pages split into different textual objects.\",\r\n \"LI_2_4\": \"Misplaced page footers and headers.\",\r\n \"LI_2_5\": \"Incorrect numbering.\",\r\n \"LI_2_6\": \"Tables recognized as background images with textual content placed into different textual objects.\",\r\n \"LI_2_7\": \"Some diagrams recognized as images without any textual content.\",\r\n \"LI_2_8\": \"Separators, borders or other horizontal lines recognized as strikethrough or underlined text.\",\r\n\r\n \"PARAGRAPH_4_1\": \"<b>Note that the resulting document will not retain all details of the original formatting.</b> Some images, tables or diagrams may become distorted or simplified. Fonts in the translated document will not be the same as in the original, but may be similar. Incorrect font size may be recognized.\",\r\n\r\n \"CLOSE\": \"Close dialog\"\r\n },\r\n \"WEBTRANSLATE\": {\r\n \"BACK\": \"Back to Translator\",\r\n \"ADDRESS\": \"Address\",\r\n \"LOAD_PAGE\": \"Load page\",\r\n \"RESTORE\": \"Restore\",\r\n \"CANCEL\": \"Cancel\"\r\n },\r\n \"TERM_COLLECTIONS\": {\r\n \"TITLE\": \"Select, edit and manage glossaries\",\r\n \"TITLE_EMPTY\": \"Create your first glossary\",\r\n \"TITLE_MOBILE\": \"Select glossaries\",\r\n \"DESCRIPTION_1\": \"Select which term collection to use for this project. \",\r\n \"DESCRIPTION_2\": \" You can add new collections and edit existing ones\",\r\n \"DESCRIPTION_2_MOBILE\": \" Use the desktop version to create new collections or edit existing ones.\",\r\n \"GLOSSARY\": \"Glossary: \",\r\n \"SELECTED_NONE\": \"None\",\r\n \"EDIT\": \"Edit\",\r\n \"CREATE\": \"New glossary\",\r\n \"DESCRIPTION_EMPTY\": \"You can set up exactly how you want {{appName}} to translate words and phrases specific to your company or industry by adding them to your unique term collections.\",\r\n \"DESCRIPTION_EMPTY_MOBILE\": \"Use the desktop version to set up exactly how you want Tilde MT to translate words and phrases specific to your company or industry by adding them to your unique term collections.\",\r\n \"ENTRY_COUNT\": \"Entries: {{count}}\",\r\n \"ENTRY_COUNT_WITH_LANGUGAES\": \"Entries: {{count}} [{{languages}}]\",\r\n \"MT_ENTRY_COUNT\": \"Imported: {{count}}\",\r\n \"DEFAULT_COLLECTION_NAME\": \"My term collection\",\r\n \"SYNC\": \"Sync\",\r\n \"SYNC_ERROR\": \"Retry\",\r\n \"ARIA_LABELS\": {\r\n \"RADIO_GROUP\": \"Select a term collection\",\r\n \"OTHER_COLLECTIONS\": \"Open the collection menu\"\r\n },\r\n \"CREATE_DIALOG\": {\r\n \"CANCEL\": \"Cancel\",\r\n \"COLLECTION_NAME_LABEL\": \"Term collection name\",\r\n \"CREATE\": \"Create\",\r\n \"DESCRIPTION_1\": \"After naming your term collection, you will be redirected to Tilde Term to add new terms. After completion, return to Tilde MT to use the new terms in your translation projects.\",\r\n \"DESCRIPTION_2\": \"<i>*AI is not perfect and can make occasional mistakes. Your unique terms will be used correctly with 95% accuracy.</i>\",\r\n \"TITLE\": \"Create a new glossary\",\r\n \"COLLECTION_NAME_ERROR\": \"Title should be at least {{minLength}} symbols long and not longer than {{maxLength}} symbols\"\r\n },\r\n \"TOOLTIPS\": {\r\n \"EDIT\": \"You will be redirected to terminology portal that will be opened in a new tab\",\r\n \"ENTRY_COUNT\": \"Number of entries added to the term collection\",\r\n \"MT_ENTRY_COUNT\": \"Number of entries used for machine translation\",\r\n \"IMPORTING\": \"Import of the term collection in progress, the collection will not be available until it is completed.\",\r\n \"NO_ENTRIES\": \"Term collection cannot be used: no terms in source language\",\r\n \"SYNC\": \"Update the term collection\",\r\n \"SYNCING\": \"Term collection is synced, the latest version of the collection will be used\",\r\n \"ATTACH_TO_SYSTEM_ERROR\": \"An error has occured while importing the term collection\"\r\n },\r\n \"PROMOTION\": {\r\n \"TITLE\": \"Create, edit and manage glossaries\",\r\n \"DESCRIPTION\": \"Glossaries are available for Tilde MT members.\",\r\n \"START_TRIAL\": \"Start with a free trial\",\r\n \"LEARN_MORE\": \"Learn more about glossaries\"\r\n }\r\n },\r\n \"DOMAINS\": {\r\n \"OPEN_LIST_ARIA_LABEL\": \"Open domain list\",\r\n \"TITLE\": \"Domain:\",\r\n \"LAW\": \"Law\",\r\n \"DYNAMIC_LEARNING\": \"Dynamic learning\",\r\n \"BUSINESS\": \"Business\",\r\n \"GENERAL\": \"General\",\r\n \"AUTO\": \"Autodetect\",\r\n \"SPD\": \"EU Formal Language\",\r\n \"GEN\": \"General Text\",\r\n \"ECB\": \"Finance\",\r\n \"ECJ\": \"European Court of Justice\",\r\n \"PUBHEALTH\": \"Public Health\",\r\n \"BUBA\": \"Deutsche Bundesbank\",\r\n \"BERCY\": \"Ministère des Finances\",\r\n \"EUROPEANA\": \"Europeana\",\r\n \"IPO\": \"IP Case Law\",\r\n \"TRIS\": \"Engines built using data from the technical regulation information system\",\r\n \"VK\": \"Valtioneuvoston Kanslia\",\r\n \"BUBA_NMTTEST\": \"Deutsche Bundesbank Test\"\r\n },\r\n \"GRAMMAR_CHECK_MENU\": {\r\n \"TITLE\": \"Consider changing to:\"\r\n },\r\n \"AUDIO\": {\r\n \"CANCEL\": \"Cancel\",\r\n \"DESCRIBE_STATE_RECORDING\": \"Please speak to record...\",\r\n \"DESCRIBE_STATE_PROCESSING\": \"Processing...\",\r\n \"MIC_NOT_FOUND\": \"Microphone not found\",\r\n \"STOP\": \"Stop recording\",\r\n \"START\": \"Translate speech\",\r\n \"PUNCTUATION_MESSAGE_TITLE\": \"Add punctuation\",\r\n \"PUNCTUATION_MESSAGE\": \"Please add punctuation to the recognized text. Long text without punctuation may have lower translation quality or not be translated.\",\r\n },\r\n \"EXTENSION_POPUP\": {\r\n \"OPEN\": \"see all supported formats\",\r\n \"TITLE\": \"Supported file formats\",\r\n \"DESCRIPTION\": \"UTF-8 or UTF-16 coding required to ensure correct file translation\",\r\n \"OFFICE\": \"Office\",\r\n \"SCANNED\": \"Scanned files\",\r\n \"INTERCHANGE\": \"Interchange formats\",\r\n \"WEB\": \"Web\",\r\n \"OTHER\": \"Other\",\r\n },\r\n \"FILE_UPLOAD\": {\r\n \"UPLOAD\": \"Upload\",\r\n \"DRAG_AND_DROP\": \"or drag and drop \",\r\n \"FILE\": \"a file\",\r\n \"FILES\": \"files\",\r\n \"LIMITS\": \" ({{visibleExtensions}}. Max {{maxSizeMB}}MB)\",\r\n \"CLEAR\": \"Clear file\"\r\n },\r\n \"SYSTEM_PICKER\": {\r\n \"SOURCE\": \"Translate from\",\r\n \"TARGET\": \"Translate to\",\r\n \"SEARCH_PLACEHOLDER\": \"Search languages\",\r\n \"RECENT_SYSTEM_TITLE\": \"Recent translation directions\",\r\n \"SELECT_DOMAIN\": \"Select domain\",\r\n \"FILTER_NO_RESULTS\": \"No results\",\r\n \"ALL_LANGUAGES\": \"All languages\",\r\n \"CLEAR_SEARCH\": \"Clear search text\",\r\n \"OPEN_SOURCE_ARIA_LABEL\": \"Select source language\",\r\n \"OPEN_TARGET_ARIA_LABEL\": \"Select target language and domain\"\r\n },\r\n \"TEXT_TRANSLATION_PROGRESS_INDICATOR\": {\r\n \"TITLE\": \"Translation provided by {{provider}}\",\r\n \"TRANSLATING\": \"Translating...\",\r\n \"CLOSE_BUTTON_TOOLTIP\": \"Remove progress bar\",\r\n \"CLOSE_BUTTON_ARIA_LABEL\": \"Remove progress bar\"\r\n },\r\n \"VENDOR_MESSAGE\": {\r\n \"TEXT\": \"Translation provided by {{vendor}}\",\r\n \"ICON_TOOLTIP\": \"Systems offered by {{vendor}} are used by a huge number of users. They may be slow at time due to the heavy work load.\"\r\n },\r\n \"VENDORS\": {\r\n \"ETRANSLATION\": \"eTranslation\"\r\n },\r\n \"TEXT_TO_SPEECH\": {\r\n \"PLAY\": \"Listen\",\r\n \"PAUSE\": \"Pause\"\r\n }\r\n}\r\n","export const i18n_et = {\r\n \"APP_NAME\": \"Tilde MT\",\r\n \"TLD_TRANSLATE\": {\r\n \"DOWNLOAD_TRANSLATED\": \"Laadi alla\",\r\n \"FILE_DOWNLOAD_SOURCE_IMAGE\": \"Laadi alla teisendatud lähtepilt\",\r\n \"FILE_DOWNLOAD_SOURCE_IMAGE_HELP\": \"Pildifaili teisendamine võib põhjustada vormindusvigu või tekstimoonutusi. Enne kui laadite faili tõlkimiseks uuesti üles, kontrollige teisendatud faili ja parandage vead\",\r\n \"FILE_TANSLATION_STATUSS_UPLOADING\": \"Üleslaadimine ...\",\r\n \"FILE_TANSLATION_STATUSS_UPLOADED\": \"Üles laaditud\",\r\n \"IMAGE_DISCLAIMER_LINK\": \"Lugege teavet pildifaili teisendamise kohta.\",\r\n \"DOC_WORD_CNT_LIMIT_MSG_TITLE\": \"Tõlkepiirang\",\r\n \"DOC_WORD_CNT_LIMIT_MSG\": \"Tõlgitakse ainult esimesed {{wordCount}} sõna. Failide tervikuna tõlkimiseks on vaja Tilde MT tellimust. <a href=\\\"{{registerLink}}?{{queryString}}\\\">Alustage tasuta prooviperioodi</a>\",\r\n \"ERROR_NO_SYSTEMS_LOADED_TITLE\": \"Tõlkemootoreid ei laaditud\",\r\n \"ERROR_NO_SYSTEMS_LOADED\": \"Masintõlkemootoreid ei saanud laadida.\",\r\n \"ERROR_NO_SYSTEMS_LOADED_SUPPORT\": \" Laadige leht uuesti või võtke ühendust <a href=\\\"mailto:{{email}}\\\"><strong>kasutajatoega</strong></a>.\",\r\n \"PDF_PAGE_LIMIT_MSG_TITLE\": \"Tõlkepiirang\",\r\n \"PDF_PAGE_LIMIT_MSG\": \"Tõlgitakse ainult esimene lehekülg. PDF-failide tervikuna tõlkimiseks on vaja Tilde MT tellimust. <a href=\\\"{{registerLink}}?{{queryString}}\\\">Alustage tasuta prooviperioodi</a>\",\r\n \"CLEAR_SOURCE_TOOLTIP\": \"Eemalda tekst\",\r\n \"BEST_NMT\": \"Parima masintõlketehnoloogia auhinna uhke võitja WMT võistlusel kolm aastat järjest.\",\r\n \"BEST_NMT_MORE\": \"Lisateave\",\r\n \"CANCEL_TRANSLATION\": \"Loobu\",\r\n \"FILE_TARGET_PREVIEW_MESSAGE\": \"See on tõlgitud dokumendi eelvaatenäidis. Täieliku tõlke saamiseks laadige see alla.\",\r\n \"FROM\": \"Lähtekeel:\",\r\n \"PREPARING_TRANSLATION\": \"Algab dokumendi tõlkimine...\",\r\n \"SOURCE_WORD_LIMIT\": \" tõlkemaht on piiratud {{limit}} sõnaga.\",\r\n \"SOURCE_TOOLTIP\": \"Sisestage tekst või tõlgitav veebileht.\",\r\n \"TARGET_DESCRIPTION\": \"Masintõlge aitab lähteteksti sisust aru saada, kuid ei asenda inimtõlget.\",\r\n \"TRANSLATION_PREPARE\": \"Algab dokumendi tõlkimine...\",\r\n \"TO\": \"Sihtkeel:\",\r\n \"TEXT_COPIED\": \"Tõlge kopeeritud\",\r\n \"SUGGEST_BUTTON\": \"Soovitage tõlget\",\r\n \"SUGGEST_ORIGINAL_LABEL\": \"Algne lause\",\r\n \"SUGGEST_SUBMIT_BUTTON\": \"Andke oma panus\",\r\n \"SUGGEST_TRANSLATION_LABEL\": \"Tõlge\",\r\n \"SUGGEST_USAGE_INFO\": \"Teie tõlkesoovitust kasutatakse masintõlke kvaliteedi parandamiseks.\",\r\n \"TOOLTIP_ACTION\": \"Tõlgi\",\r\n \"UPLOAD_FILE_BUTTON\": \"Faili üleslaadimine või lohistamine\",\r\n \"DICTIONARY_EXAMPLES\": \"näited\",\r\n \"DOMAINS_ARIA_LABEL\": \"Domeenid\",\r\n \"FILE_DOWNLOAD_SOURCE\": \"Laadige alla teisendatud lähte-PDF\",\r\n \"FILE_TANSLATION_STATUSS_INITIALIZING\": \"Tõlkeprotsessi algatamine...\",\r\n \"FILE_TANSLATION_STATUSS_EXTRACTING\": \"Tõlgitava sisu väljavõtmine...\",\r\n \"FILE_TANSLATION_STATUSS_WAITING\": \"Tõlketööriista käivitamine...\",\r\n \"FILE_TANSLATION_STATUSS_TRANSLATING\": \"Tõlkimine...\",\r\n \"FILE_TANSLATION_STATUSS_SAVING\": \"Tõlke salvestamine...\",\r\n \"FILE_TANSLATION_STATUSS_QUEUING\": \"Tõlkimine algab...\",\r\n \"PDF_DISCLAIMER_LINK\": \"Lugege teavet PDF-i teisendamise kohta.\",\r\n \"UPLOAD_FILES_BUTTON\": \"Failide üleslaadimine või lohistamine\",\r\n \"VENDORS_ARIA_LABEL\": \"Teenusepakkujad\",\r\n \"WORD_TYPE_ADJECTIVE\": \"omadussõna\",\r\n \"WORD_TYPE_NOUN\": \"nimisõna\",\r\n \"WORD_TYPE_VERB\": \"tegusõna\",\r\n \"WORD_TYPE_ADVERB\": \"määrsõna\",\r\n \"WORD_TYPE_CONJUNCTION\": \"sidesõna\",\r\n \"WORD_TYPE_INTERJECTION\": \"hüüdsõna\",\r\n \"WORD_TYPE_PRONOUN\": \"asesõna\",\r\n \"SOURCE_TOOLTIP_ONLY_TEXT\": \"Sisestage tekst, mille soovite tõlkida.\",\r\n \"SOURCE_TOOLTIP_SENSITIVE_INFO\": \"Ärge tõlkige rakendusega {{appName}} salastatud teavet või tekste, mis sisaldavad spetsiaalseid isikuandmete kategooriaid (nt terviseandmeid).\",\r\n \"REGISTERED_FORMATS_LOGGED_IN\": \"Registreeritud kasutajatel on juurdepääs järgmiste dokumendivormingutega tõlgetele: {{formats}}.\",\r\n \"REGISTERED_FORMATS\": \"Registreeritud kasutajatel on juurdepääs järgmiste dokumendivormingutega tõlgetele: {{formats}}. Taotlege juurdepääsu <a class=\\\"accent-color\\\" target=\\\"blank\\\" href=\\\"{{registerLink}}\\\">siin</a>.\",\r\n \"SOURCE_FORMATS\": \"Turvaline avalik tõlketeenus toetab järgmisi dokumendivorminguid: {{formats}}.\"\r\n },\r\n \"LANGUAGES\": {\r\n \"AR\": \"Araabia\",\r\n \"LV\": \"Läti\",\r\n \"ET\": \"Eesti\",\r\n \"DA\": \"Taani\",\r\n \"FI\": \"Soome\",\r\n \"IS\": \"Islandi\",\r\n \"LT\": \"Leedu\",\r\n \"NB\": \"Norra\",\r\n \"SV\": \"Rootsi\",\r\n \"BE\": \"Valgevene\",\r\n \"BG\": \"Bulgaaria\",\r\n \"CS\": \"Tšehhi\",\r\n \"HU\": \"Ungari\",\r\n \"RU\": \"Vene\",\r\n \"MO\": \"Moldova\",\r\n \"PL\": \"Poola\",\r\n \"SK\": \"Slovaki\",\r\n \"UK\": \"Ukraina\",\r\n \"NL\": \"Hollandi\",\r\n \"EN\": \"Inglise\",\r\n \"FR\": \"Prantsuse\",\r\n \"DE\": \"Saksa\",\r\n \"GA\": \"Iiri\",\r\n \"EL\": \"Kreeka\",\r\n \"IT\": \"Itaalia\",\r\n \"MT\": \"Malta\",\r\n \"PT\": \"Portugali\",\r\n \"SR\": \"Serbia\",\r\n \"SL\": \"Sloveeni\",\r\n \"ES\": \"Hispaania\",\r\n \"ZH\": \"Hiina\",\r\n \"JA\": \"Jaapani\",\r\n \"KO\": \"Korea\",\r\n \"TR\": \"Türgi\",\r\n \"HR\": \"Horvaatia\",\r\n \"RO\": \"Rumeenia\"\r\n },\r\n \"MULTIPLE_FILES\": {\r\n \"APPEND\": \"Lisa failid\",\r\n \"STATUSS_UPLOADING\": \"Üleslaadimine ...\",\r\n \"STATUSS_UPLOADED\": \"Üles laaditud\",\r\n \"PDF_DISCLAIMER\": \"PDF-faili teisendamine võib põhjustada vormindusvigu või tekstimoonutusi. Pärast tõlkimist valige allalaadimisvalikute hulgast käsk „Laadige alla teisendatud lähte-PDF“, kontrollige allalaaditud faili ja parandage vead, enne kui laadite faili tõlkimiseks uuesti üles.\",\r\n \"IMAGE_DISCLAIMER\": \"Pildifaili teisendamine võib põhjustada vormindusvigu või tekstimoonutusi.\",\r\n \"IMAGE_DISCLAIMER_LINK\": \"Lugege teavet pildifaili teisendamise kohta.\",\r\n \"SCREEN_READER_ANNOUNCEMENT\": \"{{total}} failist on tõlgitud {{translated}} faili.\",\r\n \"REMOVE_FILE_TOOLTIP\": \"Eemalda fail\",\r\n \"CLEAR_ALL\": \"Loobu\",\r\n \"DOWNLOAD\": \"Laadi alla\",\r\n \"STATUSS_INITIALIZING\": \"Algatamine\",\r\n \"STATUSS_EXTRACTING\": \"Väljavõtmine\",\r\n \"STATUSS_WAITING\": \"Tõlketööriista käivitamine\",\r\n \"STATUSS_TRANSLATING\": \"Tõlkimine\",\r\n \"STATUSS_SAVING\": \"Salvestamine\",\r\n \"STATUSS_COMPLETED\": \"Lõpule viidud\",\r\n \"STATUSS_ERROR\": \"Viga\",\r\n \"STATUSS_QUEUING\": \"Järjekorras\",\r\n \"STATUSS_NOT_STARTED\": \"Üles laaditud\",\r\n \"TITLE_FILE_NAME\": \"Fail\",\r\n \"TITLE_STATUSS\": \"Olek\",\r\n \"TRANSLATION_STATUSS_LABEL\": \"Olek\",\r\n \"PDF_DISCLAIMER_LINK\": \"Lugege teavet PDF-i teisendamise kohta.\"\r\n },\r\n \"ERRORS\": {\r\n \"ERROR_DEFAULT_TITLE\": \"Ootamatu tõrge\",\r\n \"ERROR_DEFAULT\": \"Ilmnes ootamatu tõrge. Proovige uuesti.\",\r\n \"ERROR_DEFAULT_SUPPORT\": \" Kui probleem ei lahene, võtke ühendust <a href=\\\"mailto:{{email}}\\\"><strong>kasutajatoega</strong></a>.\",\r\n \"MAX_CHAR_LENGTH_TITLE\": \"Tõlkepiirang\",\r\n \"MAX_CHAR_LENGTH\": \"{{totalSymbols}} märgist tõlgitakse ainult {{maxCharLength}} märki. Teksti piiranguta tõlkimiseks on vaja Tilde MT tellimust. <a href=\\\"{{registerLink}}?{{queryString}}\\\">Alustage tasuta prooviperioodi</a>\",\r\n \"MAX_NUMBER_OF_FILES_TITLE\": \"Üleslaadimispiirang\",\r\n \"MAX_NUMBER_OF_FILES\": \"Korraga saab tõlkida ainult {{limit}} faili.\",\r\n \"FILE_ALREADY_ADDED_TITLE\": \"Fail on juba lisatud\",\r\n \"FILE_ALREADY_ADDED\": \"Fail „{{fileName}}“ on juba lisatud.\",\r\n \"UANUTHORIZED_401_TITLE\": \"Luba puudub\",\r\n \"E_CANNOT_READ_FILE_TITLE\": \"Faili ei saa lugeda\",\r\n \"E_CANNOT_READ_FILE\": \"Fail „{{fileName}}“ on rikutud ja seda ei saanud tõlkida. Kontrollige faili ja proovige uuesti.\",\r\n \"E_FAILED_IN_TRANSLATION_TITLE\": \"Tõlkimine nurjus\",\r\n \"E_FAILED_IN_TRANSLATION\": \"Tõlkimisel ilmnes tõrge. Proovige uuesti.\",\r\n \"E_FAILED_IN_TRANSLATION_SUPPORT\": \" Kui probleem ei lahene, võtke ühendust <a href=\\\"mailto:{{email}}\\\"><strong>kasutajatoega</strong></a>.\",\r\n \"E_FORMAT_TRACK_CHANGES_TITLE\": \"Tõlkimine nurjus, kuna muutuste jälituse funktsioon on sisse lülitatud\",\r\n \"E_FORMAT_TRACK_CHANGES\": \"Enne Office'i failide tõlkimist tuleb muudatused esmalt aktsepteerida või muutuste jälituse funktsioon välja lülitada.\",\r\n \"E_UNKNOWN_ERROR_TITLE\": \"Tundmatu tõrge\",\r\n \"E_UNAUTHORIZED_TITLE\": \"Luba puudub\",\r\n \"COLLECTION_CREATE_TITLE\": \"Sõnastikku ei saanud luua\",\r\n \"COLLECTION_CREATE\": \"Uut sõnastikku ei saanud luua. Proovige uuesti.\",\r\n \"COLLECTION_CREATE_SUPPORT\": \" Kui probleem ei lahene, võtke ühendust <a href=\\\"mailto:{{email}}\\\"><strong>kasutajatoega</strong></a>.\",\r\n \"COLLECTION_IMPORT_TITLE\": \"Sõnastikku ei saanud lisada\",\r\n \"COLLECTION_IMPORT\": \"Terminikogu, mille ID on {{termId}}, ei saanud masintõlkemootorile lisada. Proovige uuesti.\",\r\n \"E_12_TITLE\": \"Tekstimahupiirang\",\r\n \"E_12\": \"Tekstimahulimiit on täis. Saatke taotluses vähem teksti.\",\r\n \"E_12_SUPPORT\": \" Tekstimahulimiidi suurendamiseks võtke ühendust <a href=\\\"mailto:{{email}}\\\"><strong>kasutajatoega</strong></a>.\",\r\n \"E_21_TITLE\": \"Masintõlkemootor käivitub\",\r\n \"E_21\": \"Mõne hetke pärast saate tõlkima hakata.\",\r\n \"E_22_TITLE\": \"Masintõlkemootorit ei leitud\",\r\n \"E_22\": \"Masintõlkemootorit ei leitud.\",\r\n \"E_22_SUPPORT\": \" Võtke ühendust <a href=\\\"mailto:{{email}}\\\"><strong>kasutajatoega</strong></a>.\",\r\n \"E_23\": \"Masintõlkemootor ei käivitunud.\",\r\n \"E_23_SUPPORT\": \" Võtke ühendust <a href=\\\"mailto:{{email}}\\\"><strong>kasutajatoega</strong></a>.\",\r\n \"E_41\": \"Esitatud on tundmatu terminikorpuse ID. Terminikorpus peab olema seotud masintõlkemootoriga\",\r\n \"E_504\": \"Toimingu ajalõpp.\",\r\n \"UANUTHORIZED_401\": \"Teil pole masintõlke kasutamise luba.\",\r\n \"UANUTHORIZED_401_SUPPORT\": \" Võtke ühendust <a href=\\\"mailto:{{email}}\\\"><strong> toega</strong></a>.\",\r\n \"E_UNKNOWN_FILE_TYPE\": \"Tundmatu failitüüp.\",\r\n \"E_UNKNOWN_ERROR\": \"Ilmnes tundmatu tõrge.\",\r\n \"E_UNAUTHORIZED\": \"Dokumendi tõlkimine keelati.\",\r\n \"E_11\": \"Päevane tõlkelimiit on täis.\",\r\n \"E_11_SUPPORT\": \" Päevase limiidi tõstmiseks võtke ühendust <a href=\\\"mailto:{{email}}\\\"><strong>kasutajatoega</strong></a>.\",\r\n \"FILE_UPLOAD\": {\r\n \"FILE_UPLOAD_EMPTY_TITLE\": \"Fail on tühi\",\r\n \"FILE_UPLOAD_EMPTY\": \"Üleslaaditud fail „{{fileName}}“ on tühi. Valige sisuga fail.\",\r\n \"FILE_UPLOAD_MAX_SIZE_TITLE\": \"Failimahupiirang\",\r\n \"FILE_UPLOAD_MAX_SIZE\": \"Üleslaaditud fail „{{fileName}}“ on liiga mahukas. Maksimummaht on {{maxSizeMB}} MB\",\r\n \"FILE_UPLOAD_UNSUPPORTED_FORMAT_TITLE\": \"Toetuseta failivorming\",\r\n \"FILE_UPLOAD_UNSUPPORTED_FORMAT\": \"Üleslaaditud faili „{{fileName}}“ vormingut ei toetata. Tõlkida saab sellistes vormingutes dokumente: {{formats}}.\",\r\n \"FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER_TITLE\": \"Toetuseta failivorming\",\r\n \"FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER\": \"Faili „{{fileName}}“ tõlkimiseks on vaja Tilde MT tellimust. <a href=\\\"{{registerLink}}?{{queryString}}\\\">Alustage tasuta prooviperioodi</a>\",\r\n \"E_404_TITLE\": \"Faili ei leitud\",\r\n \"E_404\": \"Taotletud faili pole olemas\"\r\n },\r\n \"AUDIO\": {\r\n \"NO_SPEECH_TITLE\": \"Kõnet pole kuulda\",\r\n \"NO_SPEECH\": \"Teie salvestus on peatatud. Me ei kuulnud teid.\",\r\n \"MAX_TIME_EXCEEDED_TITLE\": \"Kõnesisestuspiirang\",\r\n \"MAX_TIME_EXCEEDED\": \"Teie salvestus on peatatud. Kõnesisestuslimiit on {{timeString}}.\",\r\n \"MIC_NOT_ALLOWED_TITLE\": \"Juurepääs mikrofonile on keelatud\",\r\n \"MIC_NOT_ALLOWED\": \"Olete keelanud juurdepääsu mikrofonile. Õigusi saate muuta brauseri sätetes.\",\r\n \"MAX_SIZE_EXCEEDED_TITLE\": \"Kõnesisestuspiirang\",\r\n \"MAX_SIZE_EXCEEDED\": \"Salvestus on peatatud ja salvestis on saadetud töötlusse. Kõnesisestuslimiit on {{maxSizeMb}} MB.\",\r\n \"CANT_START_RECORDING_TITLE\": \"Salvestust ei saanud käivitada\",\r\n \"CANT_START_RECORDING\": \"Salvestust ei saa käivitada. Proovige uuesti.\",\r\n \"NO_TEXT_RECOGNIZED_Title\": \"Kõnet ei tuvastatud\",\r\n \"NO_TEXT_RECOGNIZED\": \"Kõnet ei saanud tuvastada. Kontrollige mikrofoni ja proovige uuesti.\"\r\n },\r\n \"FILE_TRANSLATION_SUBSTATUS\": {\r\n \"BAD_FILE_ERROR_TITLE\": \"Faili ei saanud tõlkida\",\r\n \"BAD_FILE_ERROR\": \"Fail on rikutud ja seda ei saanud tõlkida. Kontrollige faili ja proovige uuesti.\",\r\n \"NO_TEXT_EXTRACTED_ERROR_TITLE\": \"Teksti ei saanud ekstraktida\",\r\n \"NO_TEXT_EXTRACTED_ERROR\": \"Fail võib olla tühi. Kontrollige faili ja proovige uuesti.\",\r\n \"TRACK_CHANGES_ENABLED_ERROR_TITLE\": \"Tõlkimine nurjus, kuna muutuste jälituse funktsioon on sisse lülitatud\",\r\n \"TRACK_CHANGES_ENABLED_ERROR\": \"Enne Office'i failide tõlkimist tuleb muudatused esmalt aktsepteerida või muutuste jälituse funktsioon välja lülitada.\",\r\n \"UNKNOWN_FILE_TYPE_ERROR_TITLE\": \"Tundmatu failitüüp\",\r\n \"UNKNOWN_FILE_TYPE_ERROR\": \"Failitüüpi ei tuvastatud. Failinimelaiend võib olla vale või fail võib olla rikutud.\"\r\n }\r\n },\r\n \"ARIA_LABELS\": {\r\n \"COPY\": \"Kopeeri lõikelauale\",\r\n \"OPEN_IN_NEW\": \"Ava uuel vahekaardil\",\r\n \"SWAP_LANGUAGES\": \"Vaheta keeli\",\r\n \"OTHER_LANGUAGES_TRIGGER\": \"Kuva muud keeled\",\r\n \"CLOSE_BUTTON\": \"Eemalda\",\r\n \"CLEAR_NOTIFICATION\": \"Sulge hoiatus\",\r\n \"CLEAR_SOURCE\": \"Eemalda sisestatud tekst\",\r\n \"CLOSE_DIALOG\": \"Sulge dialoog\",\r\n \"CLEAR_FILES\": \"Eemalda üleslaaditud failid\",\r\n \"SHOW_EXTENSIONS\": \"Kuva muud allalaadimisvalikud\"\r\n },\r\n \"TOOLTIPS\": {\r\n \"COPY\": \"Kopeerige lõikelauale\",\r\n \"SWAP_LANGUAGES\": \"Vaheta keeli\"\r\n },\r\n \"PDF_CONVERSION\": {\r\n \"TITLE_1\": \"PDF-i tõlkimine\",\r\n \"PARAGRAPH_1_1\": \"Kui PDF-fail laaditakse tõlkimiseks üles, teisendatakse see tõlgitavasse vormingusse. Toetatud on nii skannitud kui ka kohe PDF-vormingus loodud PDF-failid. Tõlked saab alla laadida DOCX-, TMX- ja PDF-vormingus ning nende põhivormindus säilib. Tõlgitud DOCX- ja PDF-failide vormindus võib veidi erineda. \",\r\n \"PARAGRAPH_1_2\": \"Kuna teisendamine võtab aega, jagage oma PDF-failid teisenduse kiirendamiseks osadeks ja kustutage lehed, kus pole tõlgitavat teavet. Töötlusaega mõjutavad sellised tegurid nagu lehtede arv, kvaliteet ja teksti tihedus.\",\r\n \"PARAGRAPH_1_3\": \"Tõlkimisjõudluse suurendamiseks soovitame teisendatud lähtekeelse dokumendi alla laadida ja vead käsitsi parandada ning seejärel laadida selle uuesti tõlkimiseks üles.\",\r\n \"IMAGE_ALT_1\": \"Lähtekeelse PDF-faili allalaadimise näide\",\r\n\r\n \"TITLE_2\": \"PDF-i teisendamine\",\r\n \"PARAGRAPH_2_1\": \"Dokumenti analüüsitakse ja selle sisu jagatakse teksti-, tabeli- ja pildi-/taustapildialadeks. Neid analüüsitakse edasi, et teha kindlaks, millist sisu tuleks tekstina ära tunda.\",\r\n \"PARAGRAPH_2_2\": \"Tekstiandmed saadakse OCR-i ehk optilise märgituvastuse abil. Iga tähemärk tuvastatakse vastavalt selle visuaalsetele omadustele, seejärel ühendatakse see sõnadeks ja lauseteks.\",\r\n \"PARAGRAPH_2_3\": \"Tuvastamist mõjutavad mitmed tegurid, sealhulgas:\",\r\n \"LI_1_1\": \"Skannitud dokumendi kvaliteet (hägune või moondunud tekst, pildimüra, pildi eraldusvõime, kontrastsus jne). Parima tulemuse saavutamiseks peaksid PDF-failid olema vähemalt 300 dpi eraldusvõimega, mittevildakad ja müravabad.\",\r\n \"LI_1_2\": \"Fondi suurus. Väiksemaid kui 9-punktilisi suurusi võidakse halvasti tuvastada. \",\r\n \"LI_1_3\": \"Haruldased ja algupärased fondid. Vähem levinud fonte võidakse mitte tuvastada või tulemus võib olla kehvem.\",\r\n \"LI_1_4\": \"Dokumendi struktuuri ja vorminduse keerukus.\",\r\n\r\n \"TITLE_3\": \"Tõlkejõudluse suurendamine\",\r\n \"PARAGRAPH_3_1\": \"Teisendusprotsess on väga keeruline ja seda võivad mõjutada erinevad sisenddokumendist tulenevad vead. \",\r\n \"PARAGRAPH_3_2\": \"Järgida tasub järgmisi ilminguid:\",\r\n \"LI_2_1\": \"Valesti tuvastatud sõnad.\",\r\n \"LI_2_2\": \"Valed sõnapiirid.\",\r\n \"LI_2_3\": \"Mitmesse veergu jagatud laused, erinevateks tekstobjektideks jagatud read või leheküljed.\",\r\n \"LI_2_4\": \"Valesti paigutatud lehejalused ja- päised.\",\r\n \"LI_2_5\": \"Vale nummerdus.\",\r\n \"LI_2_6\": \"Taustpiltidena tuvastatud tabelid, mille tekstisisu on paigutatud erinevatesse tekstiobjektidesse.\",\r\n \"LI_2_7\": \"Mõnede diagrammmide tuvastamine piltidena, millel puudub tekstisisu.\",\r\n \"LI_2_8\": \"Eraldajate, ääriste või muude horisontaaljoonte tuvastamine läbikriipsutatud või allajoonitud tekstina.\",\r\n \"LI_2_9\": \"Sisukorra või sarnaste loendite vormindamine ahendatuna või tuvastamine läbikriipsutatud või allajoonitud tekstina.\",\r\n\r\n \"PARAGRAPH_4_1\": \"<b>Pange tähele, et saadavas dokumendis ei säili kõiki algse vorminduse üksikasjad.</b> Mõned pildid, tabelid või diagrammid võivad moonduda või lihtsustuda. Tõlgitud dokumendi fondid erinevad algsest, kuid võivad olla sarnased. Tuvastatud fondisuurus võib olla vale. Spetsiifilist Wordi vormindust (näiteks pealkirjad, sisukorrad, päised ja jalused, sildid, vormid jne) kujutatakse algse välimusega sarnaselt, kuid see ei ühti algsega täielikult (nt pealkirjad on paksus kirjas ja suurema fondiga, kuid ei ole vormindatud pealkirjalaadiga).\",\r\n\r\n \"CLOSE\": \"Sulge dialoog\"\r\n },\r\n \"WEBTRANSLATE\": {\r\n \"BACK\": \"Tagasi tõlketööriista\",\r\n \"ADDRESS\": \"Aadress\",\r\n \"LOAD_PAGE\": \"Laadi leht\",\r\n \"RESTORE\": \"Taasta\",\r\n \"CANCEL\": \"Loobu\"\r\n },\r\n \"TERM_COLLECTIONS\": {\r\n \"MT_ENTRY_COUNT\": \"Imporditud: {{count}}\",\r\n \"TITLE\": \"Sõnastike valimine, redigeerimine ja haldamine\",\r\n \"TITLE_EMPTY\": \"Looge oma esimene sõnastik\",\r\n \"TITLE_MOBILE\": \"Valige sõnastikud\",\r\n \"DESCRIPTION_1\": \"Valige selle projekti jaoks kasutatav terminikogu. \",\r\n \"DESCRIPTION_2\": \" Saate lisada uusi kogusid ja redigeerida olemasolevaid\",\r\n \"DESCRIPTION_2_MOBILE\": \" Töölauaversiooni abil saate luua uusi kogusid või redigeerida olemasolevaid.\",\r\n \"DESCRIPTION_EMPTY\": \"Saate täpselt häälestada, kuidas peaks {{appName}} teie ettevõttele või valdkonnale omaseid sõnu ja fraase tõlkima. Selleks lisage need oma kordumatutesse terminikogudesse.\",\r\n \"DESCRIPTION_EMPTY_MOBILE\": \"Töölauaversiooni kasutades saate täpselt häälestada, kuidas peaks Tilde MT teie ettevõttele või valdkonnale omaseid sõnu ja fraase tõlkima. Selleks lisage need oma kordumatutesse terminikogudesse.\",\r\n \"GLOSSARY\": \"Sõnastik: \",\r\n \"SELECTED_NONE\": \"Puudub\",\r\n \"EDIT\": \"Redigeeri\",\r\n \"CREATE\": \"Uus sõnastik\",\r\n \"ENTRY_COUNT\": \"Kirjeid: {{count}}\",\r\n \"ENTRY_COUNT_WITH_LANGUGAES\": \"Kirjeid: {{count}} [{{languages}}]\",\r\n \"DEFAULT_COLLECTION_NAME\": \"Minu terminikogu\",\r\n \"SYNC\": \"Sünkrooni\",\r\n \"SYNC_ERROR\": \"Proovi uuesti\",\r\n \"PROMOTION\": {\r\n \"TITLE\": \"Sõnastike loomine, redigeerimine ja haldamine\",\r\n \"DESCRIPTION\": \"Sõnastikud on saadaval Tilde MT liikmetele.\",\r\n \"START_TRIAL\": \"Alusta tasuta prooviperioodi\",\r\n \"LEARN_MORE\": \"Lisateave sõnastike kohta\"\r\n },\r\n \"ARIA_LABELS\": {\r\n \"RADIO_GROUP\": \"Valige terminikogu\",\r\n \"OTHER_COLLECTIONS\": \"Ava kogumenüü\"\r\n },\r\n \"CREATE_DIALOG\": {\r\n \"CANCEL\": \"Loobu\",\r\n \"COLLECTION_NAME_LABEL\": \"Terminikogu nimi\",\r\n \"CREATE\": \"Loo\",\r\n \"DESCRIPTION_1\": \"Pärast terminikogu nimetamist suunatakse teid uute terminite lisamiseks ümber keskkonda Tilde Term. Kui olete valmis, naaske Tilde MT-sse ja saate neid tõlkeprojektides kasutada.\",\r\n \"DESCRIPTION_2\": \"<i>* AI ei ole täiuslik ja võib vahel vigu teha. Teie kordumatuid termineid kasutatakse õigesti 95% täpsusega.</i>\",\r\n \"TITLE\": \"Loo uus sõnastik\",\r\n \"COLLECTION_NAME_ERROR\": \"Pealkiri peaks olema vähemalt {{minLength}} sümbolit pikk ja mitte pikem kui {{maxLength}} sümbolit\"\r\n },\r\n \"TOOLTIPS\": {\r\n \"MT_ENTRY_COUNT\": \"Masintõlkes kasutatavate kirjete arv\",\r\n \"EDIT\": \"Teid suunatakse ümber terminoloogiaportaali, mis avatakse uuel vahekaardil\",\r\n \"ENTRY_COUNT\": \"Terminikogusse lisatud kirjete arv\",\r\n \"IMPORTING\": \"Terminikogu imporditakse ja seda ei kasutata, kui importimine veel kestab.\",\r\n \"NO_ENTRIES\": \"Terminikogu ei saa kasutada. Lähtekeeles pole termineid.\",\r\n \"SYNC\": \"Värskenda terminikogu\",\r\n \"SYNCING\": \"Terminikogu sünkroonitakse ja kasutatakse kogu viimast sünkroonitud versiooni\",\r\n \"ATTACH_TO_SYSTEM_ERROR\": \"Terminikogu importimisel ilmnes tõrge\"\r\n }\r\n },\r\n \"DOMAINS\": {\r\n \"OPEN_LIST_ARIA_LABEL\": \"Ava domeeniloend\",\r\n \"TITLE\": \"Domeen:\",\r\n \"GENERAL\": \"Üldine\",\r\n \"AUTO\": \"Automaattuvastus\",\r\n \"LAW\": \"Juura\",\r\n \"DYNAMIC_LEARNING\": \"Dünaamiline õpe\",\r\n \"BUSINESS\": \"Äri\"\r\n },\r\n \"IMAGE_CONVERSION\": {\r\n \"TITLE_1\": \"Pildifaili tõlge\",\r\n \"PARAGRAPH_1_1\": \"Kui pildifail laaditakse tõlkimiseks üles, teisendatakse see tõlgitavasse vormingusse. Tõlked saab alla laadida DOCX- või TMX-vormingus ning nende põhivormindus säilib.\",\r\n \"PARAGRAPH_1_2\": \"<b>Toetatud pildivormingud:</b> .jpg,.jpeg, .png ja .bmp.\",\r\n \"PARAGRAPH_1_3\": \"Tõlkimisjõudluse suurendamiseks soovitame teisendatud lähtekeelse dokumendi alla laadida ja vead käsitsi parandada ning seejärel laadida selle tõlkimiseks uuesti üles.\",\r\n \"IMAGE_ALT_1\": \"Lähtepildi allalaadimise näide\",\r\n \"TITLE_2\": \"Pildifaili teisendamine\",\r\n \"PARAGRAPH_2_1\": \"Pildifaili analüüsitakse ning selle sisu jagatakse teksti-, tabeli- ja pildi-/taustapildialadeks. Neid analüüsitakse edasi, et teha kindlaks, millist sisu tuleks pidada tekstiks.\",\r\n \"PARAGRAPH_2_2\": \"Tekstandmed saadakse OCR-i ehk optilise märgituvastuse abil. Iga tähemärk tuvastatakse selle visuaalsete omaduste järgi, seejärel ühendatakse märgid sõnadeks ja lauseteks.\",\r\n \"PARAGRAPH_2_3\": \"Tuvastamist mõjutavad mitu tegurit, sealhulgas järgmised.\",\r\n \"LI_1_1\": \"Skannitud pildi kvaliteet (hägune või moondunud tekst, pildimüra, pildi eraldusvõime, kontrastsus jne). Parima tulemuse saavutamiseks peaks piltide eraldusvõime olema vähemalt 300 dpi, pildid ei tohiks olla vildakad ega sisaldada pildimüra.\",\r\n \"LI_1_2\": \"Fondi suurus. Väiksemaid kui 9-punktilisi suurusi võidakse halvasti tuvastada. \",\r\n \"LI_1_3\": \"Haruldased ja algupärased fondid. Vähem levinud fonte võidakse mitte tuvastada või tulemus võib olla kehvem.\",\r\n \"LI_1_4\": \"Dokumendi struktuuri ja vorminduse keerukus.\",\r\n \"TITLE_3\": \"Tõlkejõudluse suurendamine\",\r\n \"PARAGRAPH_3_1\": \"Teisendusprotsess on väga keeruline ja seda võivad mõjutada mitmesugused sisenddokumendist tulenevad vead. \",\r\n \"PARAGRAPH_3_2\": \"Tähelepanu tuleks pöörata järgmistele probleemidele.\",\r\n \"LI_2_1\": \"Valesti tuvastatud sõnad.\",\r\n \"LI_2_2\": \"Valed sõnapiirid.\",\r\n \"LI_2_3\": \"Mitmesse veergu ja mitmele reale või leheküljele ulatuvad ning eri tekstobjektideks jagatud laused.\",\r\n \"LI_2_4\": \"Valesti paigutatud leheküljejalused ja -päised.\",\r\n \"LI_2_5\": \"Vale nummerdus.\",\r\n \"LI_2_6\": \"Taustpiltidena tuvastatud tabelid, mille tekstsisu on paigutatud eri tekstobjektidesse.\",\r\n \"LI_2_7\": \"Mõned tekstsisuta piltidena tuvastatud diagrammid.\",\r\n \"LI_2_8\": \"Läbikriipsutatud või allajoonitud tekstina tuvastatud eraldajad, äärised või muud horisontaaljooned.\",\r\n \"PARAGRAPH_4_1\": \"<b>Pange tähele, et tulemdokumendis ei säili kõik algse vorminduse üksikasjad.</b> Mõni pilt, tabel või diagramm võib olla moonutatud või lihtsustatud. Tõlgitud dokumendi fondid on teistsugused kui algdokumendis, kuid need võivad olla sarnased. Tuvastatud fondisuurus võib olla vale.\",\r\n \"CLOSE\": \"Sule dialoog\"\r\n },\r\n \"GRAMMAR_CHECK_MENU\": {\r\n \"TITLE\": \"Kaaluge sellega asendamist:\"\r\n },\r\n \"AUDIO\": {\r\n \"CANCEL\": \"Loobu\",\r\n \"DESCRIBE_STATE_RECORDING\": \"Rääkige salvestamiseks...\",\r\n \"DESCRIBE_STATE_PROCESSING\": \"Töötlemine...\",\r\n \"MIC_NOT_FOUND\": \"Mikrofoni ei leitud\",\r\n \"STOP\": \"Lõpeta salvestus\",\r\n \"START\": \"Tõlgi kõne\",\r\n \"PUNCTUATION_MESSAGE_TITLE\": \"Lisage kirjavahemärgid\",\r\n \"PUNCTUATION_MESSAGE\": \"Lisage tuvastatud tekstile kirjavahemärgid. Kirjavahemärkideta pikal tekstil võib olla kehvem tõlkekvaliteet või seda ei pruugita tõlkida\"\r\n },\r\n \"EXTENSION_POPUP\": {\r\n \"OPEN\": \"kuva kõik toetatud vormingud\",\r\n \"TITLE\": \"Toetatud failivormingud\",\r\n \"DESCRIPTION\": \"Faili õige tõlke tagamiseks on vaja kodeeringut UTF-8 või UTF-16\",\r\n \"OFFICE\": \"Office\",\r\n \"SCANNED\": \"Skannitud failid\",\r\n \"INTERCHANGE\": \"Vahetusvormingud\",\r\n \"WEB\": \"Veeb\",\r\n \"OTHER\": \"Muu\"\r\n },\r\n \"FILE_UPLOAD\": {\r\n \"UPLOAD\": \"Valige\",\r\n \"DRAG_AND_DROP\": \"või pukseerige \",\r\n \"FILE\": \"fail\",\r\n \"FILES\": \"failid\",\r\n \"LIMITS\": \" ({{visibleExtensions}}. Max {{maxSizeMB}}MB)\"\r\n },\r\n \"TEXT_TO_SPEECH\": {\r\n \"PLAY\": \"Kuulake\"\r\n }\r\n}\r\n","\r\nexport const i18n_fi = {\r\n \"APP_NAME\": \"Tilde MT\",\r\n \"TLD_TRANSLATE\": {\r\n \"DOWNLOAD_TRANSLATED\": \"Lataa\",\r\n\t\t\"FILE_DOWNLOAD_SOURCE_IMAGE\": \"Lataa muunnettu lähdekuva\",\r\n\t\t\"FILE_DOWNLOAD_SOURCE_IMAGE_HELP\": \"Kuvan muuntaminen voi aiheuttaa muotoiluvirheitä tai tekstin vääristymistä. Tarkista muunnettu tiedosto ja korjaa virheet, ennen kuin lataat tiedoston uudelleen kääntämistä varten.\",\r\n\t\t\"FILE_TANSLATION_STATUSS_UPLOADING\": \"Ladataan...\",\r\n\t\t\"FILE_TANSLATION_STATUSS_UPLOADED\": \"Ladattu\",\r\n\t\t\"IMAGE_DISCLAIMER_LINK\": \"Lisätietoja kuvan muuntamisesta.\",\r\n\t\t\"DOC_WORD_CNT_LIMIT_MSG_TITLE\": \"Käännösrajoitus\",\r\n\t\t\"DOC_WORD_CNT_LIMIT_MSG\": \"Vain ensimmäiset {{wordCount}} sanaa käännetään. Tarvitset Tilde MT -tilauksen, jos haluat kääntää kokonaisia tiedostoja. <a href=\\\"{{registerLink}}?{{queryString}}\\\">aloita ilmainen kokeilu</a>\",\r\n\t\t\"ERROR_NO_SYSTEMS_LOADED_TITLE\": \"Yhtään käännösohjelmaa ei ladattu\",\r\n\t\t\"ERROR_NO_SYSTEMS_LOADED\": \"Konekäännösohjelmien lataaminen epäonnistui.\",\r\n\t\t\"ERROR_NO_SYSTEMS_LOADED_SUPPORT\": \" Lataa sivu uudelleen tai ota yhteyttä <a href=\\\"mailto:{{email}}\\\"><strong>tukipalveluun</strong></a>.\",\r\n\t\t\"PDF_PAGE_LIMIT_MSG_TITLE\": \"Käännösrajoitus\",\r\n\t\t\"PDF_PAGE_LIMIT_MSG\": \"Vain ensimmäinen sivu käännetään. Tarvitset Tilde MT -tilauksen, jos haluat kääntää kokonaisia PDF-tiedostoja. <a href=\\\"{{registerLink}}?{{queryString}}\\\">aloita ilmainen kokeilu</a>\",\r\n\t\t\"CLEAR_SOURCE_TOOLTIP\": \"Poista teksti\",\r\n \"BEST_NMT\": \"WMT Competition -kilpailun parhaan konekäännösteknologian ylpeä voittaja kolmena peräkkäisenä vuotena.\",\r\n \"BEST_NMT_MORE\": \"Lisätietoja\",\r\n \"CANCEL_TRANSLATION\": \"Peruuta\",\r\n \"DICTIONARY_EXAMPLES\": \"esimerkkejä\",\r\n \"DOMAINS_ARIA_LABEL\": \"Toimialueet\",\r\n \"FILE_DOWNLOAD_SOURCE\": \"Lataa muunnettu lähde-PDF\",\r\n \"FILE_TANSLATION_STATUSS_INITIALIZING\": \"Käännösprosessi alkaa...\",\r\n \"FILE_TANSLATION_STATUSS_EXTRACTING\": \"Puretaan käännettävää sisältöä...\",\r\n \"FILE_TANSLATION_STATUSS_WAITING\": \"Käynnistetään käännin...\",\r\n \"FILE_TANSLATION_STATUSS_TRANSLATING\": \"Käännetään...\",\r\n \"FILE_TANSLATION_STATUSS_SAVING\": \"Tallennetaan käännöstä...\",\r\n \"FILE_TANSLATION_STATUSS_COMPLETED\": \"\",\r\n \"FILE_TANSLATION_STATUSS_ERROR\": \"\",\r\n \"FILE_TANSLATION_STATUSS_QUEUING\": \"Kääntäminen alkaa...\",\r\n \"FILE_TARGET_PREVIEW_MESSAGE\": \"Tämä on käännetyn asiakirjan esikatselunäyte. Lataa, jotta saat kokonaisen käännöksen.\",\r\n \"FROM\": \"Lähtökieli:\",\r\n \"PDF_DISCLAIMER_LINK\": \"Lue pdf-tiedostojen muuntamisesta.\",\r\n \"PREPARING_TRANSLATION\": \"Kääntäminen alkaa\",\r\n \"SOURCE_WORD_LIMIT\": \" käännösten määrä on rajoitettu {{limit}} sanaan.\",\r\n \"SOURCE_TOOLTIP\": \"Lisää tähän käännettävä teksti tai verkkosivun osoite.\",\r\n \"SOURCE_TOOLTIP_SENSITIVE_INFO\": \"Älä käännä {{appName}}-konekäännöspalvelussa salassa pidettävää tai turvallisuusluokiteltua tietoa tai erityisiä henkilötietoja (esim. terveystietoja) sisältäviä tekstejä.\",\r\n \"TARGET_DESCRIPTION\": \"Konekäännös auttaa ymmärtämään tekstin merkityksen, mutta se ei vastaa ammattikääntäjän tekemää käännöstä.\",\r\n \"TO\": \"Kohdekieli:\",\r\n \"TEXT_COPIED\": \"Käännös kopioitu\",\r\n \"SUGGEST_BUTTON\": \"Ehdota käännöstä\",\r\n \"SUGGEST_ORIGINAL_LABEL\": \"Lähtöteksti\",\r\n \"SUGGEST_SUBMIT_BUTTON\": \"Osallistu\",\r\n \"SUGGEST_TRANSLATION_LABEL\": \"Käännös\",\r\n \"SUGGEST_USAGE_INFO\": \"Anonyymiä käännösehdotustasi käytetään konekäännöksen laadun parantamiseen.\",\r\n \"TOOLTIP_ACTION\": \"Käännä\",\r\n \"UPLOAD_FILE_BUTTON\": \"Lataa tai pudota tiedosto\",\r\n \"UPLOAD_FILES_BUTTON\": \"Lataa tai pudota tiedostoja\",\r\n \"VENDORS_ARIA_LABEL\": \"Palveluntarjoajat\",\r\n \"WORD_TYPE_ADJECTIVE\": \"adjektiivi\",\r\n \"WORD_TYPE_NOUN\": \"substantiivi\",\r\n \"WORD_TYPE_VERB\": \"verbi\",\r\n \"WORD_TYPE_ADVERB\": \"adverbi\",\r\n \"WORD_TYPE_CONJUNCTION\": \"konjunktio\",\r\n \"WORD_TYPE_INTERJECTION\": \"interjektio\",\r\n \"WORD_TYPE_PRONOUN\": \"pronomini\",\r\n \"SOURCE_TOOLTIP_ONLY_TEXT\": \"Kirjoita käännettävä teksti.\",\r\n \"REGISTERED_FORMATS_LOGGED_IN\": \"Rekisteröidyillä käyttäjillä on oikeus kääntää seuraavia tiedostomuotoja: {{formats}}.\",\r\n \"REGISTERED_FORMATS\": \"Rekisteröidyillä käyttäjillä on oikeus kääntää seuraavia tiedostomuotoja: {{formats}}. Pyydä käyttöoikeutta <a class=\\\"accent-color\\\" target=\\\"blank\\\" href=\\\"{{registerLink}}\\\">täältä</a>.\",\r\n \"SOURCE_FORMATS\": \"Suojattu julkinen käännöspalvelu tukee seuraavia tiedostomuotoja: {{formats}};\"\r\n },\r\n \"MULTIPLE_FILES\": {\r\n \"APPEND\": \"Lisää tiedostoja\",\r\n\t\t\"STATUSS_UPLOADING\": \"Ladataan...\",\r\n\t\t\"STATUSS_UPLOADED\": \"Ladattu\",\r\n\t\t\"PDF_DISCLAIMER\": \"PDF-tiedoston muuntaminen voi aiheuttaa muotoiluvirheitä tai tekstin vääristymistä. Kun käännös on valmis, valitse latausvaihtoehdoista \\\"Lataa muunnettu lähde-PDF”, tarkista ladattu tiedosto ja korjaa virheet ennen tiedoston lataamista uudelleen käännettäväksi.\",\r\n\t\t\"IMAGE_DISCLAIMER\": \"Kuvan muuntaminen voi aiheuttaa muotoiluvirheitä tai tekstin vääristymistä.\",\r\n\t\t\"IMAGE_DISCLAIMER_LINK\": \"Lisätietoja kuvan muuntamisesta.\",\r\n\t\t\"SCREEN_READER_ANNOUNCEMENT\": \"{{translated}}/{{total}} tiedostosta on käännetty.\",\r\n\t\t\"REMOVE_FILE_TOOLTIP\": \"Poista tiedosto\",\r\n \"CLEAR_ALL\": \"Peruuta\",\r\n \"DOWNLOAD\": \"Lataa\",\r\n \"STATUSS_INITIALIZING\": \"Aloitetaan\",\r\n \"STATUSS_EXTRACTING\": \"Puretaan\",\r\n \"STATUSS_WAITING\": \"Käynnistetään käännin\",\r\n \"STATUSS_TRANSLATING\": \"Käännetään\",\r\n \"STATUSS_SAVING\": \"Tallennetaan\",\r\n \"STATUSS_COMPLETED\": \"Valmis\",\r\n \"STATUSS_ERROR\": \"Virhe\",\r\n \"STATUSS_QUEUING\": \"Jonossa\",\r\n \"STATUSS_NOT_STARTED\": \"Ladattu\",\r\n \"TITLE_FILE_NAME\": \"Tiedosto\",\r\n \"TITLE_STATUSS\": \"Status\",\r\n \"TRANSLATION_STATUSS_LABEL\": \"Status\",\r\n \"PDF_DISCLAIMER_LINK\": \"Lue pdf-tiedostojen muuntamisesta.\"\r\n },\r\n \"ERRORS\": {\r\n \"ERROR_DEFAULT_TITLE\": \"Odottamaton virhe\",\r\n\t\t\"ERROR_DEFAULT\": \"Tapahtui odottamaton virhe. Yritä uudelleen.\",\r\n\t\t\"ERROR_DEFAULT_SUPPORT\": \" Jos ongelma jatkuu, ota yhteyttä <a href=\\\"mailto:{{email}}\\\"><strong>tukipalveluun</strong></a>.\",\r\n\t\t\"MAX_CHAR_LENGTH_TITLE\": \"Käännösrajoitus\",\r\n\t\t\"MAX_CHAR_LENGTH\": \"Vain {{maxCharLength}}/{{totalSymbols}} merkkiä käännetään. Tarvitset Tilde MT -tilauksen, jos haluat kääntää tekstiä ilman merkkirajoituksia. <a href=\\\"{{registerLink}}?{{queryString}}\\\">aloita ilmainen kokeilu</a>\",\r\n\t\t\"MAX_NUMBER_OF_FILES_TITLE\": \"Latausraja\",\r\n\t\t\"MAX_NUMBER_OF_FILES\": \"Vain {{limit}} tiedostoa voidaan kääntää kerralla.\",\r\n\t\t\"FILE_ALREADY_ADDED_TITLE\": \"Tiedosto on jo lisätty\",\r\n\t\t\"FILE_ALREADY_ADDED\": \"Tiedosto \\\"{{fileName}}\\\" on jo lisätty.\",\r\n\t\t\"UANUTHORIZED_401_TITLE\": \"Ei sallittu\",\r\n\t\t\"E_CANNOT_READ_FILE_TITLE\": \"Tiedostoa ei voi lukea\",\r\n\t\t\"E_CANNOT_READ_FILE\": \"Tiedosto \\\"{{fileName}}\\\" on viallinen, eikä sitä voitu kääntää. Tarkista tiedosto ja yritä uudelleen.\",\r\n\t\t\"E_FAILED_IN_TRANSLATION_TITLE\": \"Käännös epäonnistui\",\r\n\t\t\"E_FAILED_IN_TRANSLATION\": \"Käännöksen aikana tapahtui virhe. Yritä uudelleen.\",\r\n\t\t\"E_FAILED_IN_TRANSLATION_SUPPORT\": \" Jos ongelma jatkuu, ota yhteyttä <a href=\\\"mailto:{{email}}\\\"><strong>tukipalveluun</strong></a>.\",\r\n\t\t\"E_FORMAT_TRACK_CHANGES_TITLE\": \"Käännös epäonnistui, koska ”Jäljitä muutokset” on käytössä\",\r\n\t\t\"E_FORMAT_TRACK_CHANGES\": \"Muutokset on ensin hyväksyttävä tai muutosten jäljitys on otettava pois käytöstä ennen Office-tiedostojen kääntämistä.\",\r\n\t\t\"E_UNKNOWN_ERROR_TITLE\": \"Tuntematon virhe\",\r\n\t\t\"E_UNAUTHORIZED_TITLE\": \"Ei sallittu\",\r\n\t\t\"COLLECTION_CREATE_TITLE\": \"Sanaston luominen epäonnistui\",\r\n\t\t\"COLLECTION_CREATE\": \"Uuden sanaston luominen epäonnistui. Yritä uudelleen.\",\r\n\t\t\"COLLECTION_CREATE_SUPPORT\": \" Jos ongelma jatkuu, ota yhteyttä <a href=\\\"mailto:{{email}}\\\"><strong>tukipalveluun</strong></a>.\",\r\n\t\t\"COLLECTION_IMPORT_TITLE\": \"Sanaston liittäminen epäonnistui\",\r\n\t\t\"COLLECTION_IMPORT\": \"Termikokoelman, jonka tunnus on {{termId}}, liittäminen konekäännösohjelmaan epäonnistui. Yritä uudelleen.\",\r\n\t\t\"E_12_TITLE\": \"Tekstin kokorajoitus\",\r\n\t\t\"E_12\": \"Tekstin kokorajoitus saavutettu. Lähetä pyyntö, joka sisältää vähemmän tekstiä.\",\r\n\t\t\"E_12_SUPPORT\": \" Voit suurentaa tekstin kokorajoitusta ottamalla yhteyttä <a href=\\\"mailto:{{email}}\\\"><strong>tukipalveluun</strong></a>.\",\r\n\t\t\"E_21_TITLE\": \"Konekäännösohjelma käynnistyy\",\r\n\t\t\"E_21\": \"Voit kääntää hetken kuluttua.\",\r\n\t\t\"E_22_TITLE\": \"Konekäännösohjelmaa ei löydy\",\r\n\t\t\"E_22\": \"Konekäännösohjelmaa ei löydy.\",\r\n\t\t\"E_22_SUPPORT\": \" Ota yhteyttä <a href=\\\"mailto:{{email}}\\\"><strong>tukeen</strong></a>.\",\r\n\t\t\"E_23\": \"Konekäännösohjelmaa ei ole käynnistetty.\",\r\n\t\t\"E_23_SUPPORT\": \" Ota yhteyttä <a href=\\\"mailto:{{email}}\\\"><strong>tukeen</strong></a>.\",\r\n\t\t\"E_41\": \"Tuntematon termikorpuksen tunniste annettu. Termikorpus on linkitettävä konekäännösohjelmaan\",\r\n\t\t\"E_504\": \"Toiminto on aikakatkaistu.\",\r\n \"UANUTHORIZED_401\": \"Sinulla ei ole oikeutta käyttää konekäännintä.\",\r\n \"UANUTHORIZED_401_SUPPORT\": \" Ota yhteyttä <a href=\\\"mailto:{{email}}\\\"><strong>tukipalveluun</strong></a>.\",\r\n \"E_UNKNOWN_FILE_TYPE\": \"Tuntematon tiedostotyyppi.\",\r\n \"E_UNKNOWN_ERROR\": \"Ilmeni tuntematon virhe.\",\r\n \"E_UNAUTHORIZED\": \"Asiakirjan käännös estettiin.\",\r\n \"E_11\": \"Päivittäinen käännösraja on täyttynyt.\",\r\n \"E_11_SUPPORT\": \" Ota yhteyttä <a href=\\\"mailto:{{email}}\\\"><strong>tukeen</strong></a>, jos haluat nostaa päivittäistä rajaa.\",\r\n \"FILE_TRANSLATION_SUBSTATUS\": {\r\n\t\t\t\"BAD_FILE_ERROR_TITLE\": \"Tiedoston kääntäminen epäonnistui\",\r\n\t\t\t\"BAD_FILE_ERROR\": \"Tiedosto on viallinen, eikä sitä voitu kääntää. Tarkista tiedosto ja yritä uudelleen.\",\r\n\t\t\t\"NO_TEXT_EXTRACTED_ERROR_TITLE\": \"Tekstin purkaminen epäonnistui\",\r\n\t\t\t\"NO_TEXT_EXTRACTED_ERROR\": \"Tiedosto saattaa olla tyhjä. Tarkista tiedosto ja yritä uudelleen.\",\r\n\t\t\t\"TRACK_CHANGES_ENABLED_ERROR_TITLE\": \"Käännös epäonnistui, koska ”Jäljitä muutokset” on käytössä\",\r\n\t\t\t\"TRACK_CHANGES_ENABLED_ERROR\": \"Muutokset on ensin hyväksyttävä tai muutosten jäljitys on otettava pois käytöstä ennen Office-tiedostojen kääntämistä.\",\r\n\t\t\t\"UNKNOWN_FILE_TYPE_ERROR_TITLE\": \"Tuntematon tiedostotyyppi\",\r\n\t\t\t\"UNKNOWN_FILE_TYPE_ERROR\": \"Tiedostotyyppiä ei tunnisteta. Tiedostopääte voi olla virheellinen tai tiedosto voi olla viallinen.\"\r\n\t\t},\r\n \"FILE_UPLOAD\": {\r\n \"FILE_UPLOAD_EMPTY_TITLE\": \"Tiedosto on tyhjä\",\r\n\t\t\t\"FILE_UPLOAD_EMPTY\": \"Ladattu tiedosto \\\"{{fileName}}\\\" on tyhjä. Valitse tiedosto, jossa on sisältöä.\",\r\n\t\t\t\"FILE_UPLOAD_MAX_SIZE_TITLE\": \"Tiedoston kokorajoitus\",\r\n\t\t\t\"FILE_UPLOAD_MAX_SIZE\": \"Ladattu tiedosto \\\"{{fileName}}\\\" on liian suuri. Enimmäiskoko {{maxSizeMB}} Mt\",\r\n\t\t\t\"FILE_UPLOAD_UNSUPPORTED_FORMAT_TITLE\": \"Tiedostomuotoa ei tueta\",\r\n\t\t\t\"FILE_UPLOAD_UNSUPPORTED_FORMAT\": \"Ladatun tiedoston \\\"{{fileName}}\\\" tiedostomuotoa ei tueta. Käännös on tuettu seuraaville asiakirjamuodoille: {{formats}}.\",\r\n\t\t\t\"FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER_TITLE\": \"Tiedostomuotoa ei tueta\",\r\n\t\t\t\"FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER\": \"Tarvitset Tilde MT -tilauksen \\\"{{fileName}}\\\" -tiedoston kääntämiseen. <a href=\\\"{{registerLink}}?{{queryString}}\\\">aloita ilmainen kokeilu</a>\",\r\n\t\t\t\"E_404_TITLE\": \"Tiedostoa ei löytynyt\",\r\n\t\t\t\"E_404\": \"Pyydettyä tiedostoa ei ole olemassa\"\r\n },\r\n \"AUDIO\": {\r\n\t\t\t\"NO_SPEECH_TITLE\": \"Ei puhetta\",\r\n\t\t\t\"NO_SPEECH\": \"Tallennuksesi lopetettiin. Emme kuulleet sinua.\",\r\n\t\t\t\"MAX_TIME_EXCEEDED_TITLE\": \"Puherajoitus\",\r\n\t\t\t\"MAX_TIME_EXCEEDED\": \"Tallennuksesi lopetettiin. Puheensyöttö on rajoitettu aikaan {{timeString}}.\",\r\n\t\t\t\"MIC_NOT_ALLOWED_TITLE\": \"Mikrofonin käyttö estetty\",\r\n\t\t\t\"MIC_NOT_ALLOWED\": \"Olet estänyt mikrofonin käytön. Muuta käyttöoikeuksia selaimen asetuksista.\",\r\n\t\t\t\"MAX_SIZE_EXCEEDED_TITLE\": \"Puherajoitus\",\r\n\t\t\t\"MAX_SIZE_EXCEEDED\": \"Tallennuksesi lopetettiin ja lähetettiin käsiteltäväksi. Puhesyötön enimmäiskoko on {{maxSizeMb}} Mt.\",\r\n\t\t\t\"CANT_START_RECORDING_TITLE\": \"Tallennuksen aloittaminen epäonnistui\",\r\n\t\t\t\"CANT_START_RECORDING\": \"Tallennuksen aloittaminen ei onnistu. Yritä uudelleen.\",\r\n\t\t\t\"NO_TEXT_RECOGNIZED_Title\": \"Puhetta ei tunnistettu\",\r\n\t\t\t\"NO_TEXT_RECOGNIZED\": \"Puhetta ei voitu tunnistaa. Tarkista mikrofonisi ja yritä uudelleen.\"\r\n\t\t}\r\n },\r\n \"RATING\": {},\r\n \"LANGUAGES\": {\r\n \"AR\": \"Arabia\",\r\n \"BE\": \"Valkovenäjä\",\r\n \"BG\": \"Bulgaria\",\r\n \"CS\": \"Tsekki\",\r\n \"DA\": \"Tanska\",\r\n \"DE\": \"Saksa\",\r\n \"EL\": \"Kreikka\",\r\n \"EN\": \"Englanti\",\r\n \"ES\": \"Espanja\",\r\n \"ET\": \"Viro\",\r\n \"FI\": \"Suomi\",\r\n \"FR\": \"Ranska\",\r\n \"GA\": \"Irlanti\",\r\n \"HR\": \"Kroatia\",\r\n \"HU\": \"Unkari\",\r\n \"IS\": \"Islanti\",\r\n \"IT\": \"Italia\",\r\n \"JA\": \"Japani\",\r\n \"KA\": \"Georgia\",\r\n \"KO\": \"Korea\",\r\n \"LT\": \"Liettua\",\r\n \"LV\": \"Latvia\",\r\n \"MO\": \"Moldova\",\r\n \"MT\": \"Malta\",\r\n \"NB\": \"Norja\",\r\n \"NL\": \"Hollanti\",\r\n \"PL\": \"Puola\",\r\n \"PT\": \"Portugali\",\r\n \"RO\": \"Romania\",\r\n \"RU\": \"Venäjä\",\r\n \"SK\": \"Slovakki\",\r\n \"SR\": \"Serbia\",\r\n \"SL\": \"Sloveeni\",\r\n \"SV\": \"Ruotsi\",\r\n \"TR\": \"Turkki\",\r\n \"UK\": \"Ukraina\",\r\n \"ZH\": \"Kiina\"\r\n },\r\n \"ARIA_LABELS\": {\r\n \"COPY\": \"Kopioi leikepöydälle\",\r\n\t\t\"OPEN_IN_NEW\": \"Avaa uudessa välilehdessä\",\r\n\t\t\"SWAP_LANGUAGES\": \"Vaihda kielet\",\r\n\t\t\"OTHER_LANGUAGES_TRIGGER\": \"Näytä muut kielet\",\r\n \"CLOSE_BUTTON\": \"Tyhjennä\",\r\n \"CLEAR_NOTIFICATION\": \"Sulje ilmoitus\",\r\n \"CLEAR_SOURCE\": \"Poista annettu teksti\",\r\n \"CLOSE_DIALOG\": \"Sulje valintaikkuna\",\r\n \"CLEAR_FILES\": \"Poista ladatut tiedostot\",\r\n \"SHOW_EXTENSIONS\": \"Näytä muut latausvalinnat\"\r\n },\r\n \"TOOLTIPS\": {\r\n \"COPY\": \"Kopioi leikepöydälle\",\r\n \"SWAP_LANGUAGES\": \"Vaihda kieltä\"\r\n },\r\n \"PDF_CONVERSION\": {\r\n\t\t\"CLOSE\": \"Sulje valintaikkuna\",\r\n \"TITLE_1\": \"PDF-käännös\",\r\n \"PARAGRAPH_1_1\": \"Kun PDF-tiedosto ladataan käännettäväksi, se muunnetaan käännettävään muotoon. Ohjelma tukee sekä skannattuja (kuvamuotoisia) että alkuperäisiä (esim. Word-asiakirjasta pdf-muotoon tallennettuja) PDF-tiedostoja. Käännetyt asiakirjat voidaan ladata seuraavissa muodoissa: .docx, .tmx tai .pdf. Asiakirjojen perusmuotoilu säilyy. Käännettyjen .docx ja .pdf-tiedostojen muotoilu voi hieman erota toisistaan. \",\r\n \"PARAGRAPH_1_2\": \"Voit nopeuttaa tiedostojen muuntamista jakamalla .pdf-tiedostot osiin ja poistamalla sivut, joissa ei ole käännettävää sisältöä (esim. kuvasivut). Sivujen määrä, laatu ja tekstin tiivis asettelu vaikuttavat käsittelyaikaan.\",\r\n \"PARAGRAPH_1_3\": \"Kääntimen suorituskyvyn parantamiseksi suosittelemme, että Aura-konekäännöspalvelun muuntama pdf ladataan (pudotusvalikon kohta Lataa muunnettu lähde-pdf, ks. kuva alla) ja se korjataan manuaalisesti ennen kuin se ladataan uudelleen käännettäväksi.\",\r\n \"IMAGE_ALT_1\": \"Esimerkki lähde-PDF:n lataamisesta\",\r\n \"TITLE_2\": \"PDF-tiedoston muuntaminen\",\r\n \"PARAGRAPH_2_1\": \"Asiakirja analysoidaan ja sen sisältö jaetaan teksti-, taulukko- ja kuva/taustakuva-alueisiin. Niitä analysoidaan tarkemmin sen määrittämiseksi, mikä osa sisällöstä pitää tunnistaa tekstiksi.\",\r\n \"PARAGRAPH_2_2\": \"Kuvista teksti tunnistetaan optisella merkkien tunnistuksella. Kirjaimet ja numerot tunnistetaan ulkomuodon mukaan ja kootaan sitten sanoiksi ja lauseiksi.\",\r\n \"PARAGRAPH_2_3\": \"Tekstin tunnistukseen vaikuttavat monet tekijät, mm.:\",\r\n \"LI_1_1\": \"Skannatun asiakirjan laatu (epäselvä tai vääristynyt teksti, kuvakohina, kuvaresoluutio, kontrasti jne.). Parhaan tuloksen saavuttamiseksi PDF-tiedoston on oltava vähintään 300 dpi, suoristettu ja kohinaton.\",\r\n \"LI_1_2\": \"Fontin koko. Tekstin tunnistaminen on vaikeampaa, jos fontin koko on alle 9. \",\r\n \"LI_1_3\": \"Harvinaiset ja erikoiset fontit. Harvinaisempia fontteja ei välttämättä tunnisteta.\",\r\n \"LI_1_4\": \"Tiedoston rakenteen ja muotoilun monimutkaisuus.\",\r\n \"TITLE_3\": \"Kääntimen suorituskyvyn parantaminen\",\r\n \"PARAGRAPH_3_1\": \"Muuntamisprosessi on hyvin monimutkainen, ja siihen voivat vaikuttaa erilaiset muunnettavasta asiakirjasta johtuvat virheet. \",\r\n \"PARAGRAPH_3_2\": \"Mahdollisia tekstin tunnistusvirheitä:\",\r\n \"LI_2_1\": \"Sanoja on tunnistettu väärin.\",\r\n \"LI_2_2\": \"Sanarajoja on tunnistettu väärin.\",\r\n \"LI_2_3\": \"Eri riveille, sarakkeisiin tai sivuille ulottuvia lauseita on jaettu eri tekstiobjekteiksi.\",\r\n \"LI_2_4\": \"Sivun ala- ja ylätunnisteita on sijoitettu väärin.\",\r\n \"LI_2_5\": \"Numerointi on virheellistä.\",\r\n \"LI_2_6\": \"Taulukoita tunnistettu tekstiä sisältäviksi taustakuviksi ja niiden tekstisisältö on sijoitettu eri tekstiobjekteihin.\",\r\n \"LI_2_7\": \"Kaavioita on tunnistettu kuviksi joissa ei ole tekstiä.\",\r\n \"LI_2_8\": \"Erottimia, reunaviivoja tai muita vaakaviivoja on tunnistettu yliviivatuksi tai alleviivatuksi tekstiksi.\",\r\n \"LI_2_9\": \"Sisällysluettelo tai vastaavia luetteloita on kutistettu tai ne on tunnistettu yliviivatuksi tai alleviivatuksi tekstiksi.\",\r\n \"PARAGRAPH_4_1\": \"<b>Huomaa, että tuotettu asiakirja ei täysin säilytä alkuperäistä muotoilua.</b> Kuvat, taulukot tai kaaviot voivat vääristyä tai menettää yksityiskohtia. Fontit käännetyssä asiakirjassa eivät välttämättä ole samoja kuin alkuperäisessä tiedostossa. Fontin koko voidaan tunnistaa virheellisesti. Tietyt Word -muotoilut, kuten otsikot, sisällysluettelot, ylä- ja alatunnisteet, merkit, lomakkeet jne., muotoillaan niin, että ne näyttävät alkuperäiseltä, mutta ne eivät täysin vastaa alkuperäistä muotoilua (esimerkiksi otsikot ovat lihavoituja ja suuremmalla fontilla, mutta ne eivät ole Otsikko-tyyliä.).\"\r\n },\r\n \"WEBTRANSLATE\": {\r\n \"BACK\": \"Takaisin konekääntimeen\",\r\n \"ADDRESS\": \"Osoite\",\r\n \"LOAD_PAGE\": \"Lataa sivu\",\r\n \"RESTORE\": \"Palauta\",\r\n \"CANCEL\": \"Peruuta\",\r\n \"ORIGINAL\": \"Alkuperäinen\",\r\n \"CLOSE\": \"Sulje\"\r\n },\r\n \"TERM_COLLECTIONS\": {\r\n \"MT_ENTRY_COUNT\": \"Tuotu: {{count}}\",\r\n\t\t\"TITLE\": \"Valitse, muokkaa ja hallinnoi sanastoja\",\r\n\t\t\"TITLE_EMPTY\": \"Luo ensimmäinen sanasto\",\r\n\t\t\"TITLE_MOBILE\": \"Valitse sanastot\",\r\n\t\t\"DESCRIPTION_1\": \"Valitse tässä projektissa käytettävä termikokoelma. \",\r\n\t\t\"DESCRIPTION_2\": \" Voit lisätä uusia kokoelmia ja muokata olemassa olevia kokoelmia\",\r\n\t\t\"DESCRIPTION_2_MOBILE\": \" Käytä työpöytäversiota uusien kokoelmien luomiseen tai olemassa olevien kokoelmien muokkaamiseen.\",\r\n\t\t\"DESCRIPTION_EMPTY\": \"Voit määrittää tarkasti, miten {{appName}} kääntää yrityksellesi tai toimialallesi ominaisia sanoja ja ilmauksia lisäämällä ne termikokoelmiisi.\",\r\n\t\t\"DESCRIPTION_EMPTY_MOBILE\": \"Työpöytäversiossa voit määrittää, miten haluat Tilde MT:n kääntävän yrityksellesi tai toimialallesi ominaisia sanoja ja lauseita lisäämällä ne termikokoelmiisi.\",\r\n\t\t\"PROMOTION\": {\r\n\t\t\t\"TITLE\": \"Luo, muokkaa ja hallitse sanastoja\",\r\n\t\t\t\"DESCRIPTION\": \"Sanastot ovat Tilde MT:n jäsenien käytettävissä.\",\r\n\t\t\t\"START_TRIAL\": \"Aloita ilmainen kokeilu\",\r\n\t\t\t\"LEARN_MORE\": \"Lisätietoja sanastoista\"\r\n\t\t},\r\n \"GLOSSARY\": \"Sanasto: \",\r\n \"SELECTED_NONE\": \"Ei mitään\",\r\n \"EDIT\": \"Muokkaa\",\r\n \"CREATE\": \"Uusi sanasto\",\r\n \"ENTRY_COUNT\": \"Merkinnät: {{count}}\",\r\n \"ENTRY_COUNT_WITH_LANGUGAES\": \"Merkinnät: {{count}} [{{languages}}]\",\r\n \"DEFAULT_COLLECTION_NAME\": \"Termikokoelmani\",\r\n \"SYNC\": \"Synkronoi\",\r\n \"SYNC_ERROR\": \"Yritä uudelleen\",\r\n \"ARIA_LABELS\": {\r\n \"RADIO_GROUP\": \"Valitse termikokoelma\",\r\n \"OTHER_COLLECTIONS\": \"Avaa kokoelmavalikko\"\r\n },\r\n \"CREATE_DIALOG\": {\r\n \"CANCEL\": \"Peruuta\",\r\n \"COLLECTION_NAME_LABEL\": \"Termikokoelman nimi\",\r\n \"CREATE\": \"Luo\",\r\n \"DESCRIPTION_1\": \"Kun olet nimennyt termikokoelmasi, sinut ohjataan Tilde Termiin lisäämään uusia termejä. Kun olet valmis, palaa Tilde MT:hen, niin voit käyttää termikokoelmia käännösprojekteissasi.\",\r\n \"DESCRIPTION_2\": \"<i>*Tekoäly ei ole täydellinen, ja se voi joskus tehdä virheitä. Yksilöllisiä termejäsi käytetään oikein 95 prosentin tarkkuudella.</i>\",\r\n \"TITLE\": \"Luo uusi sanasto\",\r\n \"COLLECTION_NAME_ERROR\": \"Otsikon tulee olla vähintään {{minLength}} ja enintään {{maxLength}} merkkiä pitkä\"\r\n },\r\n \"TOOLTIPS\": {\r\n\t\t\t\"MT_ENTRY_COUNT\": \"Konekäännökseen käytettyjen merkintöjen määrä\",\r\n \"EDIT\": \"Sinut ohjataan uudelleen termiportaaliin, joka avautuu uudessa välilehdessä\",\r\n \"ENTRY_COUNT\": \"Termikokoelmaan lisättyjen merkintöjen määrä\",\r\n \"IMPORTING\": \"Termikokoelmaa tuodaan. Sitä ei voida käyttää, ennen kuin tuonti on valmis.\",\r\n \"NO_ENTRIES\": \"Termikokoelmaa ei voida käyttää, koska lähdekielellä ei ole termejä\",\r\n \"SYNC\": \"Päivitä termikokoelma\",\r\n \"SYNCING\": \"Termikokoelmaa synkronoidaan. Kokoelman uusinta synkronoitua versiota käytetään\",\r\n \"ATTACH_TO_SYSTEM_ERROR\": \"Virhe termikokoelman tuonnissa\"\r\n }\r\n },\r\n \"DOMAINS\": {\r\n \"OPEN_LIST_ARIA_LABEL\": \"Avaa merkitysalueluettelo\",\r\n\t\t\"TITLE\": \"Merkitysalue:\",\r\n\t\t\"GENERAL\": \"Yleinen\",\r\n\t\t\"AUTO\": \"Automaattinen tunnistaminen\",\r\n \"LAW\": \"Laki\",\r\n \"DYNAMIC_LEARNING\": \"Dynaaminen oppiminen\",\r\n \"BUSINESS\": \"Liiketoiminta\"\r\n },\r\n \"IMAGE_CONVERSION\": {\r\n\t\t\"TITLE_1\": \"Kuvan käännös\",\r\n\t\t\"PARAGRAPH_1_1\": \"Kun kuvatiedosto ladataan käännettäväksi, se muunnetaan käännettävään muotoon. Käännökset voidaan ladata .docx- tai .tmx-muodossa, ja ne säilyttävät perusmuotoilun.\",\r\n\t\t\"PARAGRAPH_1_2\": \"<b>Tuetut kuvamuodot:</b>.jpg, .jpeg, .png ja .bmp.\",\r\n\t\t\"PARAGRAPH_1_3\": \"Jos haluat tehostaa käännösprosessia, suosittelemme, että lataat muunnetun asiakirjan alkuperäisellä kielellä ja korjaat sen manuaalisesti, ennen kuin lataat sen uudelleen kääntämistä varten.\",\r\n\t\t\"IMAGE_ALT_1\": \"Lähdekuvan latausesimerkki\",\r\n\t\t\"TITLE_2\": \"Kuvan muunnos\",\r\n\t\t\"PARAGRAPH_2_1\": \"Kuva analysoidaan ja sen sisältö jaetaan teksti-, taulukko- ja kuva-/taustakuva-alueisiin. Nämä alueet analysoidaan tarkemmin ja määritetään, mikä sisältö tulisi tunnistaa tekstiksi.\",\r\n\t\t\"PARAGRAPH_2_2\": \"Tekstitiedot saadaan OCR-tekstintunnistuksen avulla. Jokainen merkki tunnistetaan sen visuaalisten ominaisuuksien perusteella, minkä jälkeen teksti kootaan sanoiksi ja lauseiksi.\",\r\n\t\t\"PARAGRAPH_2_3\": \"Tunnistukseen vaikuttavat useat tekijät, mukaan lukien:\",\r\n\t\t\"LI_1_1\": \"Skannatun kuvan laatu (epätarkka tai vääristynyt teksti, kuvan kohina, kuvan tarkkuus, kontrasti jne.). Parhaan tuloksen saavuttamiseksi kuvien tulee olla vähintään 300 dpi, vääristymättömiä ja kohinattomia.\",\r\n\t\t\"LI_1_2\": \"Fonttikoko. 9 pistettä pienempien fonttikokojen tunnistamisessa voi olla ongelmia. \",\r\n\t\t\"LI_1_3\": \"Harvinaiset ja erikoiset fontit. Harvinaisempia fontteja ei ehkä tunnisteta, tai ne voivat toimia huonommin.\",\r\n\t\t\"LI_1_4\": \"Asiakirjan rakenteen ja muotoilun monimutkaisuus.\",\r\n\t\t\"TITLE_3\": \"Käännösprosessin tehostaminen\",\r\n\t\t\"PARAGRAPH_3_1\": \"Muuntoprosessi on erittäin monimutkainen, ja erilaiset, lähdetiedostosta johtuvat virheet voivat vaikuttaa siihen. \",\r\n\t\t\"PARAGRAPH_3_2\": \"Tarkistettavia asioita:\",\r\n\t\t\"LI_2_1\": \"Väärin tunnistetut sanat.\",\r\n\t\t\"LI_2_2\": \"Virheelliset sanojen rajat.\",\r\n\t\t\"LI_2_3\": \"Usean sarakkeen, rivin tai sivun pituiset lauseet jaettu erilaisiksi tekstiobjekteiksi.\",\r\n\t\t\"LI_2_4\": \"Väärin sijoitetut ala- ja ylätunnisteet.\",\r\n\t\t\"LI_2_5\": \"Virheellinen numerointi.\",\r\n\t\t\"LI_2_6\": \"Taulukot tunnistettu taustakuviksi ja tekstisisältö sijoitettu eri tekstiobjekteihin.\",\r\n\t\t\"LI_2_7\": \"Jotkin kaaviot tunnistettu kuviksi ilman tekstisisältöä.\",\r\n\t\t\"LI_2_8\": \"Erottimet, reunat tai muut vaakaviivat tunnistettu yli- tai alleviivatuksi tekstiksi.\",\r\n\t\t\"PARAGRAPH_4_1\": \"<b>Huomaa, että kaikki alkuperäisen muotoilun yksityiskohdat eivät säily lopullisessa asiakirjassa.</b> Jotkin kuvat, taulukot tai kaaviot voivat olla vääristyneitä ja yksinkertaistettuja. Käännetyn asiakirjan fontit eivät ole samoja kuin alkuperäisessä tiedostossa, mutta ne voivat olla samankaltaisia. Fonttikoko voi olla virheellinen.\",\r\n\t\t\"CLOSE\": \"Sulje valintaikkuna\"\r\n\t},\r\n \"GRAMMAR_CHECK_MENU\": {\r\n\t\t\"TITLE\": \"Harkitse vaihtamista muotoon:\"\r\n\t},\r\n\t\"AUDIO\": {\r\n\t\t\"CANCEL\": \"Peruuta\",\r\n\t\t\"DESCRIBE_STATE_RECORDING\": \"Ala puhua äänitallennetta...\",\r\n\t\t\"DESCRIBE_STATE_PROCESSING\": \"Käsitellään...\",\r\n\t\t\"MIC_NOT_FOUND\": \"Mikrofonia ei löydy\",\r\n\t\t\"STOP\": \"Lopeta tallennus\",\r\n\t\t\"START\": \"Käännä puhe\",\r\n\t\t\"PUNCTUATION_MESSAGE_TITLE\": \"Lisää välimerkit\",\r\n\t\t\"PUNCTUATION_MESSAGE\": \"Lisää tunnistettuun tekstiin välimerkit. Pitkä teksti ilman välimerkkejä voi heikentää käännöslaatua tai estää kääntämisen\"\r\n\t},\r\n\t\"EXTENSION_POPUP\": {\r\n\t\t\"OPEN\": \"katso kaikki tuetut muodot\",\r\n\t\t\"TITLE\": \"Tuetut tiedostomuodot\",\r\n\t\t\"DESCRIPTION\": \"Tiedoston kääntäminen oikein edellyttää UTF-8- tai UTF-16-koodausta\",\r\n\t\t\"OFFICE\": \"Office\",\r\n\t\t\"SCANNED\": \"Skannatut tiedostot\",\r\n\t\t\"INTERCHANGE\": \"Vaihtomuodot\",\r\n\t\t\"WEB\": \"Verkkosivusto\",\r\n\t\t\"OTHER\": \"Muu\"\r\n\t},\r\n\t\"FILE_UPLOAD\": {\r\n\t\t\"UPLOAD\": \"Valitse\",\r\n\t\t\"DRAG_AND_DROP\": \"tai vedä ja pudota \",\r\n\t\t\"FILE\": \"tiedosto\",\r\n\t\t\"FILES\": \"tiedostot\",\r\n\t\t\"LIMITS\": \" ({{visibleExtensions}}. Enintään {{maxSizeMB}}Mt)\"\r\n\t},\r\n \"TEXT_TO_SPEECH\": {\r\n \"PLAY\": \"Kuuntele\"\r\n }\r\n}\r\n","\r\nexport const i18n_lt = {\r\n \"APP_NAME\": \"Tilde MT\",\r\n \"TLD_TRANSLATE\": {\r\n \"DOWNLOAD_TRANSLATED\": \"Atsisiųsti\",\r\n\t\t\"FILE_DOWNLOAD_SOURCE_IMAGE\": \"Atsisiųsti konvertuotą šaltinio vaizdą\",\r\n\t\t\"FILE_DOWNLOAD_SOURCE_IMAGE_HELP\": \"Konvertuojant vaizdą gali atsirasti formatavimo klaidų arba teksto iškraipymų. Patikrinkite konvertuotą failą ir prieš iš naujo įkeldami failą versti, pataisykite klaidas\",\r\n\t\t\"FILE_TANSLATION_STATUSS_UPLOADING\": \"Įkeliama...\",\r\n\t\t\"FILE_TANSLATION_STATUSS_UPLOADED\": \"Įkelta\",\r\n\t\t\"IMAGE_DISCLAIMER_LINK\": \"Skaitykite apie vaizdų konvertavimą.\",\r\n\t\t\"DOC_WORD_CNT_LIMIT_MSG_TITLE\": \"Vertimo limitas\",\r\n\t\t\"DOC_WORD_CNT_LIMIT_MSG\": \"Bus išversti tik pirmieji {{wordCount}} žodžių. Jei norite versti visą failą, reikia „Tilde MT“ prenumeratos. <a href=\\\"{{registerLink}}?{{queryString}}\\\">Pradėti naudoti nemokamą bandomąją versiją</a>\",\r\n\t\t\"ERROR_NO_SYSTEMS_LOADED_TITLE\": \"Neįkelti jokie vertimo moduliai\",\r\n\t\t\"ERROR_NO_SYSTEMS_LOADED\": \"Nepavyko įkelti mašininio vertimo modulių.\",\r\n\t\t\"ERROR_NO_SYSTEMS_LOADED_SUPPORT\": \" Iš naujo įkelkite puslapį arba kreipkitės į<a href=\\\"mailto:{{email}}\\\"><strong>pagalbos tarnybą</strong></a>.\",\r\n\t\t\"PDF_PAGE_LIMIT_MSG_TITLE\": \"Vertimo limitas\",\r\n\t\t\"PDF_PAGE_LIMIT_MSG\": \"Bus išverstas tik pirmasis puslapis. Jei norite versti visą PDF failą, reikalinga „Tilde MT“ prenumerata. <a href=\\\"{{registerLink}}?{{queryString}}\\\">Pradėti naudoti nemokamą bandomąją versiją</a>\",\r\n\t\t\"CLEAR_SOURCE_TOOLTIP\": \"Valyti tekstą\",\r\n \"FILE_TARGET_PREVIEW_MESSAGE\": \"Tai yra išversto dokumento peržiūros pavyzdys; norėdami gauti visą vertimą, atsisiųskite.\",\r\n \"PREPARING_TRANSLATION\": \"Pradedamas vertimas\",\r\n \"SOURCE_TOOLTIP_ONLY_TEXT\": \"Įveskite tekstą, kurį norite išversti.\",\r\n \"SOURCE_TOOLTIP_SENSITIVE_INFO\": \"Nenaudokite „{{appName}}“ slaptai ar įslaptintai informacijai arba tekstams, kuriuose yra tam tikrų kategorijų asmens duomenų, pvz., sveikatos duomenų, versti\",\r\n \"TEXT_COPIED\": \"Nukopijuotas vertimas\",\r\n \"REGISTERED_FORMATS_LOGGED_IN\": \"Registruotieji vartotojai turi prieigą prie šių dokumentų formatų vertimo: {{formats}}.\",\r\n \"REGISTERED_FORMATS\": \"Registruotieji vartotojai turi prieigą prie šių dokumentų formatų vertimo: {{formats}}. Prašykite savo prieigos <a class=\\\"accent-color\\\" target=\\\"blank\\\" href=\\\"{{registerLink}}\\\">čia</a>.\",\r\n \"SOURCE_FORMATS\": \"Saugi vieša vertimo paslauga palaiko šiuos dokumentų formatus: {{formats}}.\",\r\n \"BEST_NMT\": \"Didžiuojamės tris metus iš eilės tapę nugalėtojais WMP konkurso geriausios mašininio vertimo technologijos srityje.\",\r\n \"BEST_NMT_MORE\": \"Sužinokite daugiau\",\r\n \"CANCEL_TRANSLATION\": \"Atšaukti\",\r\n \"FROM\": \"Nuo:\",\r\n \"SOURCE_WORD_LIMIT\": \" vertimo kiekis ribojamas iki {{limit}} žodžių.\",\r\n \"SOURCE_TOOLTIP\": \"Įveskite tekstą arba svetainę, kurią norėtumėte išversti.\",\r\n \"TARGET_DESCRIPTION\": \"Mašininis vertimas leidžia suprasti šaltinio teksto reikšmę, tačiau negali pakeisti žmogaus atlikto vertimo.\",\r\n \"TO\": \"Iki:\",\r\n \"SUGGEST_BUTTON\": \"Siūlyti vertimą\",\r\n \"SUGGEST_ORIGINAL_LABEL\": \"Originalo sakinys\",\r\n \"SUGGEST_SUBMIT_BUTTON\": \"Siūlyti\",\r\n \"SUGGEST_TRANSLATION_LABEL\": \"Vertimas\",\r\n \"SUGGEST_USAGE_INFO\": \"Jūsų vertimo pasiūlymą naudosime, kad pagerintume mašininio vertimo kokybę.\",\r\n \"TOOLTIP_ACTION\": \"Išversti\",\r\n \"UPLOAD_FILE_BUTTON\": \"Įkelkite arba nuvilkite failą\",\r\n \"DICTIONARY_EXAMPLES\": \"pavyzdžiai\",\r\n \"DOMAINS_ARIA_LABEL\": \"Domenai\",\r\n \"FILE_DOWNLOAD_SOURCE\": \"Atsisiųsti konvertuotą šaltinio PDF\",\r\n \"FILE_TANSLATION_STATUSS_INITIALIZING\": \"Inicijuojamas vertimo procesas...\",\r\n \"FILE_TANSLATION_STATUSS_EXTRACTING\": \"Išgaunamas verčiamas turinys...\",\r\n \"FILE_TANSLATION_STATUSS_WAITING\": \"Paleidžiamas vertėjas...\",\r\n \"FILE_TANSLATION_STATUSS_TRANSLATING\": \"Verčiama...\",\r\n \"FILE_TANSLATION_STATUSS_SAVING\": \"Įrašomas vertimas...\",\r\n \"FILE_TANSLATION_STATUSS_QUEUING\": \"Pradedamas vertimas...\",\r\n \"PDF_DISCLAIMER_LINK\": \"Skaitykite apie pdf konvertavimą.\",\r\n \"UPLOAD_FILES_BUTTON\": \"Įkelti arba nuvilkti failus\",\r\n \"VENDORS_ARIA_LABEL\": \"Teikėjai\",\r\n \"WORD_TYPE_ADJECTIVE\": \"būdvardis\",\r\n \"WORD_TYPE_NOUN\": \"daiktavardis\",\r\n \"WORD_TYPE_VERB\": \"veiksmažodis\",\r\n \"WORD_TYPE_ADVERB\": \"prieveiksmis\",\r\n \"WORD_TYPE_CONJUNCTION\": \"jungtukas\",\r\n \"WORD_TYPE_INTERJECTION\": \"jaustukas\",\r\n \"WORD_TYPE_PRONOUN\": \"įvardis\"\r\n },\r\n \"LANGUAGES\": {\r\n\t\t\"AR\": \"Arabų\",\r\n \"BG\": \"Bulgarų\",\r\n \"HR\": \"Kroatų\",\r\n \"CS\": \"Čekų\",\r\n \"DA\": \"Danų\",\r\n \"NL\": \"Olandų\",\r\n \"EN\": \"Anglų\",\r\n \"ET\": \"Estų\",\r\n \"FI\": \"Suomių\",\r\n \"FR\": \"Prancūzų\",\r\n \"DE\": \"Vokiečių\",\r\n \"EL\": \"Graikų\",\r\n \"HU\": \"Vengrų\",\r\n \"GA\": \"Airių\",\r\n \"IS\": \"Islandų\",\r\n \"IT\": \"Italų\",\r\n \"LV\": \"Latvių\",\r\n \"LT\": \"Lietuvių\",\r\n \"MT\": \"Maltiečių\",\r\n \"NB\": \"Norvegų\",\r\n \"PL\": \"Lenkų\",\r\n \"PT\": \"Portugalų\",\r\n \"RO\": \"Rumunų\",\r\n \"RU\": \"Rusų\",\r\n \"SK\": \"Slovakų\",\r\n \"SL\": \"Slovėnų\",\r\n \"ES\": \"Ispanų\",\r\n \"SV\": \"Švedų\",\r\n \"KA\": \"Gruzinų\",\r\n \"BE\": \"Baltarusių\",\r\n \"MO\": \"Moldavų\",\r\n \"UK\": \"Ukrainiečių\",\r\n \"SR\": \"Serbų\",\r\n \"ZH\": \"Kinų\",\r\n \"JA\": \"Japonų\",\r\n \"KO\": \"Korėjiečių\",\r\n \"TR\": \"Turkų\"\r\n },\r\n \"MULTIPLE_FILES\": {\r\n \"APPEND\": \"Pridėti failus\",\r\n\t\t\"STATUSS_UPLOADING\": \"Įkeliama...\",\r\n\t\t\"STATUSS_UPLOADED\": \"Įkelta\",\r\n\t\t\"PDF_DISCLAIMER\": \"Konvertuojant PDF gali atsirasti formatavimo klaidų arba teksto iškraipymų. Kai bus išversta, atsisiuntimo parinktyse pasirinkite „Atsisiųsti konvertuotą šaltinio PDF“, patikrinkite atsisiųstą failą, pataisykite klaidas ir vėl įkelkite failą versti.\",\r\n\t\t\"IMAGE_DISCLAIMER\": \"Konvertuojant vaizdą gali atsirasti formatavimo klaidų arba teksto iškraipymų.\",\r\n\t\t\"IMAGE_DISCLAIMER_LINK\": \"Skaitykite apie vaizdų konvertavimą.\",\r\n\t\t\"SCREEN_READER_ANNOUNCEMENT\": \"Išversta failų: {{translated}} iš {{total}}.\",\r\n\t\t\"REMOVE_FILE_TOOLTIP\": \"Valyti failą\",\r\n \"CLEAR_ALL\": \"Atšaukti\",\r\n \"DOWNLOAD\": \"Atsisiųsti\",\r\n \"STATUSS_INITIALIZING\": \"Inicijuojama\",\r\n \"STATUSS_EXTRACTING\": \"Išgaunama\",\r\n \"STATUSS_WAITING\": \"Paleidžiamas vertėjas\",\r\n \"STATUSS_TRANSLATING\": \"Verčiama\",\r\n \"STATUSS_SAVING\": \"Įrašoma\",\r\n \"STATUSS_COMPLETED\": \"Baigta\",\r\n \"STATUSS_ERROR\": \"Klaida\",\r\n \"STATUSS_QUEUING\": \"Eilėje\",\r\n \"STATUSS_NOT_STARTED\": \"Nusiųsta\",\r\n \"TITLE_FILE_NAME\": \"Failas\",\r\n \"TITLE_STATUSS\": \"Būsena\",\r\n \"TRANSLATION_STATUSS_LABEL\": \"Būsena\",\r\n \"PDF_DISCLAIMER_LINK\": \"Skaitykite apie pdf konvertavimą.\"\r\n },\r\n \"ERRORS\": {\r\n \"ERROR_DEFAULT_TITLE\": \"Netikėta klaida\",\r\n\t\t\"ERROR_DEFAULT\": \"Įvyko netikėta klaida. Bandykite dar kartą.\",\r\n\t\t\"ERROR_DEFAULT_SUPPORT\": \" Jei problema kartojasi, kreipkitės į <a href=\\\"mailto:{{email}}\\\"><strong>pagalbos tarnybą</strong></a>.\",\r\n\t\t\"MAX_CHAR_LENGTH_TITLE\": \"Vertimo limitas\",\r\n\t\t\"MAX_CHAR_LENGTH\": \"Bus išversta tik {{maxCharLength}}/{{totalSymbols}} ženklų. Jei norite versti tekstą be apribojimų, reikia „Tilde MT“ prenumeratos. <a href=\\\"{{registerLink}}?{{queryString}}\\\">Pradėti naudoti nemokamą bandomąją versiją</a>\",\r\n\t\t\"MAX_NUMBER_OF_FILES_TITLE\": \"Įkėlimo limitas\",\r\n\t\t\"MAX_NUMBER_OF_FILES\": \"Vienu metu galima išversti tik tiek failų: {{limit}}.\",\r\n\t\t\"FILE_ALREADY_ADDED_TITLE\": \"Failas jau pridėtas\",\r\n\t\t\"FILE_ALREADY_ADDED\": \"Failas „{{fileName}}“ jau pridėtas.\",\r\n\t\t\"UANUTHORIZED_401_TITLE\": \"Neįgaliotas\",\r\n\t\t\"E_CANNOT_READ_FILE_TITLE\": \"Nepavyksta perskaityti failo\",\r\n\t\t\"E_CANNOT_READ_FILE\": \"Failas „{{fileName}}“ sugadintas ir jo negalima išversti. Patikrinkite failą ir bandykite dar kartą.\",\r\n\t\t\"E_FAILED_IN_TRANSLATION_TITLE\": \"Išversti nepavyko\",\r\n\t\t\"E_FAILED_IN_TRANSLATION\": \"Verčiant įvyko klaida. Bandykite dar kartą.\",\r\n\t\t\"E_FAILED_IN_TRANSLATION_SUPPORT\": \" Jei problema kartojasi, kreipkitės į <a href=\\\"mailto:{{email}}\\\"><strong> pagalbos tarnybą</strong></a>.\",\r\n\t\t\"E_FORMAT_TRACK_CHANGES_TITLE\": \"Išversti nepavyko, nes įjungtas pakeitimų žymėjimas\",\r\n\t\t\"E_FORMAT_TRACK_CHANGES\": \"Prieš verčiant „Office“ failus, pirmiausia reikia priimti pakeitimus arba išjungti pakeitimų žymėjimą.\",\r\n\t\t\"E_UNKNOWN_ERROR_TITLE\": \"Nežinoma klaida\",\r\n\t\t\"E_UNAUTHORIZED_TITLE\": \"Neįgaliotas\",\r\n\t\t\"COLLECTION_CREATE_TITLE\": \"Nepavyko sukurti žodyno\",\r\n\t\t\"COLLECTION_CREATE\": \"Nepavyko sukurti naujo žodyno. Bandykite dar kartą.\",\r\n\t\t\"COLLECTION_CREATE_SUPPORT\": \" Jei problema kartojasi, kreipkitės į <a href=\\\"mailto:{{email}}\\\"><strong>pagalbos tarnybą</strong></a>.\",\r\n\t\t\"COLLECTION_IMPORT_TITLE\": \"Nepavyko pridėti žodyno\",\r\n\t\t\"COLLECTION_IMPORT\": \"Prie mašininio vertimo modulio nepavyko pridėti terminų rinkinio, kurio ID: {{termId}}. Bandykite dar kartą.\",\r\n\t\t\"E_12_TITLE\": \"Teksto dydžio limitas\",\r\n\t\t\"E_12\": \"Pasiektas teksto dydžio limitas. Užklausoje siųskite mažiau teksto.\",\r\n\t\t\"E_12_SUPPORT\": \" Jei norite padidinti teksto dydžio limitą, kreipkitės į <a href=\\\"mailto:{{email}}\\\"><strong>pagalbos tarnybą</strong></a>.\",\r\n\t\t\"E_21_TITLE\": \"Paleidžiamas mašininio vertimo modulis\",\r\n\t\t\"E_21\": \"Galėsite versti po kelių akimirkų.\",\r\n\t\t\"E_22_TITLE\": \"Nerastas mašininio vertimo modulis\",\r\n\t\t\"E_22\": \"Nerastas mašininio vertimo modulis.\",\r\n\t\t\"E_22_SUPPORT\": \" Susisiekite su <a href=\\\"mailto:{{email}}\\\"><strong>pagalbos tarnyba</strong></a>.\",\r\n\t\t\"E_23\": \"Mašininio vertimo modulis nepaleistas.\",\r\n\t\t\"E_23_SUPPORT\": \" Kreipkitės į <a href=\\\"mailto:{{email}}\\\"><strong>pagalbos tarnybą</strong></a>.\",\r\n\t\t\"E_41\": \"Pateiktas nežinomas terminų tekstyno ID. Terminų tekstynas turi būti susietas su mašininio vertimo moduliu\",\r\n\t\t\"E_504\": \"Baigėsi veiksmui skirtas laikas.\",\r\n \"UANUTHORIZED_401\": \"Neturite teisės naudoti mašininį vertimą.\",\r\n \"UANUTHORIZED_401_SUPPORT\": \" Susisiekite su <a href=\\\"mailto:{{email}}\\\"><strong>palaikymo tarnyba</strong></a>.\",\r\n \"E_UNKNOWN_FILE_TYPE\": \"Nežinomas failo tipas.\",\r\n \"E_UNKNOWN_ERROR\": \"Aptikta nenustatyta klaida.\",\r\n \"E_UNAUTHORIZED\": \"Dokumento vertimas atmestas.\",\r\n \"E_11\": \"Pasiektas dienos vertimo limitas.\",\r\n \"E_11_SUPPORT\": \" Jei norite padidinti dienos limitą, kreipkitės į <a href=\\\"mailto:{{email}}\\\"><strong>palaikymo tarnybą</strong></a>.\",\r\n \"FILE_TRANSLATION_SUBSTATUS\": {\r\n\t\t\t\"BAD_FILE_ERROR_TITLE\": \"Nepavyko išversti failo\",\r\n\t\t\t\"BAD_FILE_ERROR\": \"Failas sugadintas ir jo negalima išversti. Patikrinkite failą ir bandykite dar kartą.\",\r\n\t\t\t\"NO_TEXT_EXTRACTED_ERROR_TITLE\": \"Nepavyko išskleisti jokio teksto\",\r\n\t\t\t\"NO_TEXT_EXTRACTED_ERROR\": \"Failas gali būti tuščias. Patikrinkite failą ir bandykite dar kartą.\",\r\n\t\t\t\"TRACK_CHANGES_ENABLED_ERROR_TITLE\": \"Išversti nepavyko, nes įjungtas pakeitimų žymėjimas\",\r\n\t\t\t\"TRACK_CHANGES_ENABLED_ERROR\": \"Prieš verčiant „Office“ failus, pirmiausia reikia priimti pakeitimus arba išjungti pakeitimų žymėjimą.\",\r\n\t\t\t\"UNKNOWN_FILE_TYPE_ERROR_TITLE\": \"Nežinomas failo tipas\",\r\n\t\t\t\"UNKNOWN_FILE_TYPE_ERROR\": \"Neatpažintas failo tipas. Gali būti, kad failo plėtinys neteisingas arba failas sugadintas.\"\r\n\t\t},\r\n \"FILE_UPLOAD\": {\r\n \"FILE_UPLOAD_EMPTY_TITLE\": \"Failas tuščias\",\r\n\t\t\t\"FILE_UPLOAD_EMPTY\": \"Įkeltas „{{fileName}}“ yra tuščias. Pasirinkite failą, kuriame yra turinio.\",\r\n\t\t\t\"FILE_UPLOAD_MAX_SIZE_TITLE\": \"Failo dydžio limitas\",\r\n\t\t\t\"FILE_UPLOAD_MAX_SIZE\": \"Įkeltas „{{fileName}}“ yra per didelis. Maksimalus dydis yra {{maxSizeMB}} MB\",\r\n\t\t\t\"FILE_UPLOAD_UNSUPPORTED_FORMAT_TITLE\": \"Nepalaikomas failo formatas\",\r\n\t\t\t\"FILE_UPLOAD_UNSUPPORTED_FORMAT\": \"Įkelto failo „{{fileName}}“ formatas nepalaikomas. Galima versti šių formatų dokumentus: {{formatai}}.\",\r\n\t\t\t\"FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER_TITLE\": \"Nepalaikomas failo formatas\",\r\n\t\t\t\"FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER\": \"Jei norite versti failą „{{fileName}}“, reikia „Tilde MT“ prenumeratos. <a href=\\\"{{registerLink}}?{{queryString}}\\\">Pradėti naudoti nemokamą bandomąją versiją</a>\",\r\n\t\t\t\"E_404_TITLE\": \"Failas nerastas\",\r\n\t\t\t\"E_404\": \"Pageidaujamo failo nėra\"\r\n },\r\n \"AUDIO\": {\r\n\t\t\t\"NO_SPEECH_TITLE\": \"Nėra kalbėjimo duomenų\",\r\n\t\t\t\"NO_SPEECH\": \"Jūsų įrašas buvo sustabdytas. Mes jūsų negirdėjome.\",\r\n\t\t\t\"MAX_TIME_EXCEEDED_TITLE\": \"Kalbėjimo limitas\",\r\n\t\t\t\"MAX_TIME_EXCEEDED\": \"Jūsų įrašas buvo sustabdytas. Kalbėjimo įvesties limitas: {{timeString}}.\",\r\n\t\t\t\"MIC_NOT_ALLOWED_TITLE\": \"Prieiga prie mikrofono uždrausta\",\r\n\t\t\t\"MIC_NOT_ALLOWED\": \"Jūs uždraudėte prieigą prie mikrofono. Pakeiskite teises naršyklės parametruose.\",\r\n\t\t\t\"MAX_SIZE_EXCEEDED_TITLE\": \"Kalbėjimo limitas\",\r\n\t\t\t\"MAX_SIZE_EXCEEDED\": \"Jūsų įrašas buvo sustabdytas ir išsiųstas apdoroti. Kalbėjimo įvestis dydžio limitas: ({{maxSizeMb}} MB).\",\r\n\t\t\t\"CANT_START_RECORDING_TITLE\": \"Nepavyko pradėti įrašymo\",\r\n\t\t\t\"CANT_START_RECORDING\": \"Nepavyksta pradėti įrašymo. Bandykite dar kartą.\",\r\n\t\t\t\"NO_TEXT_RECOGNIZED_Title\": \"Neatpažintas kalbėjimas\",\r\n\t\t\t\"NO_TEXT_RECOGNIZED\": \"Nepavyko atpažinti jokio kalbėjimo. Patikrinkite mikrofoną ir bandykite dar kartą.\"\r\n\t\t}\r\n },\r\n \"ARIA_LABELS\": {\r\n \"COPY\": \"Kopijuoti į mainų sritį\",\r\n\t\t\"OPEN_IN_NEW\": \"Atidaryti naujame skirtuke\",\r\n\t\t\"SWAP_LANGUAGES\": \"Sukeisti kalbas\",\r\n\t\t\"OTHER_LANGUAGES_TRIGGER\": \"Rodyti kitas kalbas\",\r\n \"CLOSE_BUTTON\": \"Valyti\",\r\n \"CLEAR_NOTIFICATION\": \"Uždaryti įspėjimą\",\r\n \"CLEAR_SOURCE\": \"Valyti įvestą tekstą\",\r\n \"CLOSE_DIALOG\": \"Uždaryti dialogo langą\",\r\n \"CLEAR_FILES\": \"Valyti nusiųstus failus\",\r\n \"SHOW_EXTENSIONS\": \"Rodyti kitas atsisiuntimo parinktis\"\r\n },\r\n \"TOOLTIPS\": {\r\n \"COPY\": \"Kopijuoti į mainų sritį\",\r\n \"SWAP_LANGUAGES\": \"Sukeisti kalbas\"\r\n },\r\n \"PDF_CONVERSION\": {\r\n \"TITLE_1\": \"PDF vertimas\",\r\n \"PARAGRAPH_1_1\": \"Versti nusiųstas .pdf failas konvertuojamas į verčiamą formatą. Palaikomas ir nuskaitytas, ir savasis .pdf failai. Vertimus galima atsisiųsti .docx, .tmx arba .pdf formatais ir bus išlaikytas pagrindinis formatavimas. Formatavimas išverstuose .docx ir .pdf failuose gali šiek tiek skirtis. \",\r\n \"PARAGRAPH_1_2\": \"Konvertavimas užima laiko, norėdami paspartinti darbą, išskaidykite .pdf failus ir panaikinkite puslapius, kuriuose nėra verčiamos informacijos. Apdorojimo laikui turį įtakos įvairūs veiksniai, pavyzdžiui, puslapių skaičius, teksto kokybė ir tankumas.\",\r\n \"PARAGRAPH_1_3\": \"Norint padidinti vertimo našumą, rekomenduojame atsisiųsti konvertuotą dokumentą originalo kalba ir, prieš pakartotinai nusiunčiant versti, pataisyti jį rankiniu būdu.\",\r\n \"IMAGE_ALT_1\": \"Šaltinio PDF atsisiuntimo pavyzdys\",\r\n\r\n \"TITLE_2\": \"PDF konvertavimas\",\r\n \"PARAGRAPH_2_1\": \"Dokumentas analizuojamas ir jo turinys išskaidomas į teksto, lentelių ir vaizdo / fono sritis. Jos toliau analizuojamos, siekiant nustatyti, kurį turinį reikia atpažinti kaip tekstą.\",\r\n \"PARAGRAPH_2_2\": \"Tekstiniai duomenys gaunami naudojant OCR optinį simbolių atpažinimą. Kiekvienas simbolis atpažįstamas atsižvelgiant į jo vizualines savybes, tada sudėliojami žodžiai ir sakiniai.\",\r\n \"PARAGRAPH_2_3\": \"Atpažinimą veikia daug veiksnių, įskaitant:\",\r\n \"LI_1_1\": \"Nuskaityto dokumento kokybė (neryškus arba deformuotas tekstas, vaizdo triukšmas, vaizdo raiška, kontrastas ir pan.). Siekiant geriausių rezultatų, .pdf failai turi būti mažiausiai 300 dpi, neiškraipyti ir be triukšmo.\",\r\n \"LI_1_2\": \"Šrifto dydis. Mažesnį nei 9 taškų šriftai atpažįstami sunkiai. \",\r\n \"LI_1_3\": \"Reti ir originalūs šriftai. Rečiau naudojami šriftai gali būti neatpažįstami ir atpažįstami prasčiau.\",\r\n \"LI_1_4\": \"Dokumento struktūros ir formatavimo sudėtingumas.\",\r\n\r\n \"TITLE_3\": \"Vertimo našumo didinimas\",\r\n \"PARAGRAPH_3_1\": \"Konvertavimo procesas yra labai sudėtingas ir gali priklausyti nuo įvairių klaidų, atsiradusių dėl įvesties dokumento. \",\r\n \"PARAGRAPH_3_2\": \"Problemos, į kurias reikia atkreipti dėmesį:\",\r\n \"LI_2_1\": \"Netinkamai atpažinti žodžiai.\",\r\n \"LI_2_2\": \"Netinkamo žodžių ribos.\",\r\n \"LI_2_3\": \"Keliuose stulpeliuose, eilutėse arba puslapiuose išsidėstę sakiniai išskaidomi į skirtingus tekstinius objektus.\",\r\n \"LI_2_4\": \"Ne vietoje išdėstytos poraštės ir antraštės.\",\r\n \"LI_2_5\": \"Netinkamas numeravimas.\",\r\n \"LI_2_6\": \"Lentelės atpažįstamos kaip fono vaizdai, o tekstinis turinys išdėstomas skirtinguose tekstiniuose objektuose.\",\r\n \"LI_2_7\": \"Kai kurios diagramos atpažįstamos kaip vaizdai be jokio tekstinio turinio.\",\r\n \"LI_2_8\": \"Skyrikliai, kraštinės ar kitos horizontalios linijos atpažįstamos kaip perbrauktas arba pabrauktas tekstas.\",\r\n \"LI_2_9\": \"Nepavykęs turinio ar panašių sąrašų formatavimas arba atpažinimas kaip perbraukto arba pabraukto teksto.\",\r\n\r\n \"PARAGRAPH_4_1\": \"<b>Atminkite, kad gautame dokumente išliks ne visos originalaus formatavimo detalės.</b> Kai kurie vaizdai, lentelės arba diagramos gali išsikraipyti arba tapti paprastesni. Šriftai išvertame dokumente bus ne tokie patys kaip originale, bet gali būti panašūs. Gali būti netinkamai atpažintas šrifto dydis. Specifinis „Word“ formatavimas, pvz., antraštės, turiniai, antraštės ir poraštės, etiketės, formos ir pan., atrodys panašiai kaip originalios, tačiau ne visiškai atitiks originalias (pvz., pavadinimai bus paryškinti ir didesnio šrifto, bet antraštės stilius nebus nustatytas).\",\r\n\r\n \"CLOSE\": \"Uždaryti dialogo langą\"\r\n },\r\n \"IMAGE_CONVERSION\": {\r\n\t\t\"TITLE_1\": \"Vaizdų vertimas\",\r\n\t\t\"PARAGRAPH_1_1\": \"Versti nusiųstas vaizdo failas konvertuotas į verčiamą formatą. Vertimus galima atsisiųsti .docx arba .tmx formatais, bus išlaikytas pagrindinis formatavimas.\",\r\n\t\t\"PARAGRAPH_1_2\": \"<b>Palaikomi vaizdo formatai:</b> .jpg, .jpeg, .png ir .bmp.\",\r\n\t\t\"PARAGRAPH_1_3\": \"Jei norite padidinti vertimo našumą, rekomenduojame atsisiųsti konvertuotą dokumentą originalo kalba ir, prieš pakartotinai nusiunčiant versti, pataisyti jį rankiniu būdu.\",\r\n\t\t\"IMAGE_ALT_1\": \"Šaltinio vaizdo atsisiuntimo pavyzdys\",\r\n\t\t\"TITLE_2\": \"Vaizdo konvertavimas\",\r\n\t\t\"PARAGRAPH_2_1\": \"Vaizdas analizuojamas ir jo turinys išskaidomas į teksto, lentelių ir vaizdo / fono sritis. Jos toliau analizuojamos, siekiant nustatyti, kokį turinį reikia atpažinti kaip tekstą.\",\r\n\t\t\"PARAGRAPH_2_2\": \"Tekstiniai duomenys gaunami naudojant OCR optinį ženklų atpažinimą. Kiekvienas ženklas atpažįstamas atsižvelgiant į jo vizualines savybes, tada sudėliojami žodžiai ir sakiniai.\",\r\n\t\t\"PARAGRAPH_2_3\": \"Atpažinimui įtakos turi daug veiksnių, įskaitant:\",\r\n\t\t\"LI_1_1\": \"Nuskaityto vaizdo kokybė (neryškus arba deformuotas tekstas, vaizdo triukšmas, vaizdo raiška, kontrastas ir pan.). Geriausi rezultatai gaunami, kai vaizdai yra bent 300 dpi dydžio, neiškraipyti ir be triukšmo.\",\r\n\t\t\"LI_1_2\": \"Šrifto dydis. Mažesni nei 9 punktų šriftai atpažįstami sunkiai. \",\r\n\t\t\"LI_1_3\": \"Reti ir originalūs šriftai. Rečiau naudojami šriftai gali būti neatpažįstami ir atpažįstami prasčiau.\",\r\n\t\t\"LI_1_4\": \"Dokumento struktūros ir formatavimo sudėtingumas.\",\r\n\t\t\"TITLE_3\": \"Vertimo našumo didinimas\",\r\n\t\t\"PARAGRAPH_3_1\": \"Konvertavimo procesas yra labai sudėtingas ir gali priklausyti nuo įvairių klaidų, atsiradusių dėl įvesties dokumento. \",\r\n\t\t\"PARAGRAPH_3_2\": \"Problemos, į kurias reikia atkreipti dėmesį:\",\r\n\t\t\"LI_2_1\": \"Netinkamai atpažinti žodžiai.\",\r\n\t\t\"LI_2_2\": \"Netinkamos žodžių ribos.\",\r\n\t\t\"LI_2_3\": \"Keliuose stulpeliuose, eilutėse arba puslapiuose išsidėstę sakiniai išskaidomi į skirtingus tekstinius objektus.\",\r\n\t\t\"LI_2_4\": \"Ne vietoje išdėstytos poraštės ir antraštės.\",\r\n\t\t\"LI_2_5\": \"Netinkamas numeravimas.\",\r\n\t\t\"LI_2_6\": \"Lentelės atpažįstamos kaip fono vaizdai, o tekstinis turinys išdėstomas skirtinguose tekstiniuose objektuose.\",\r\n\t\t\"LI_2_7\": \"Kai kurios diagramos atpažįstamos kaip vaizdai be jokio tekstinio turinio.\",\r\n\t\t\"LI_2_8\": \"Skyrikliai, kraštinės ar kitos horizontalios linijos atpažįstamos kaip perbrauktasis arba pabrauktasis tekstas.\",\r\n\t\t\"PARAGRAPH_4_1\": \"<b>Atminkite, kad gautame dokumente išliks ne visos originalaus formatavimo ypatybės.</b> Kai kurie vaizdai, lentelės arba diagramos gali išsikraipyti arba tapti paprastesni. Šriftai išvertame dokumente bus ne tokie patys kaip originale, bet gali būti panašūs. Gali būti netinkamai atpažintas šrifto dydis.\",\r\n\t\t\"CLOSE\": \"Uždaryti dialogo langą\"\r\n\t},\r\n \"WEBTRANSLATE\": {\r\n \"BACK\": \"Atgal į vertėją\",\r\n \"ADDRESS\": \"Adresas\",\r\n \"LOAD_PAGE\": \"Įkelti puslapį\",\r\n \"RESTORE\": \"Atkurti\",\r\n \"CANCEL\": \"Atšaukti\"\r\n },\r\n \"TERM_COLLECTIONS\": {\r\n \"MT_ENTRY_COUNT\": \"Importuota: {{count}}\",\r\n\t\t\"TITLE\": \"Pasirinkite, redaguokite ir tvarkykite žodynus\",\r\n\t\t\"TITLE_EMPTY\": \"Sukurkite pirmąjį savo žodyną\",\r\n\t\t\"TITLE_MOBILE\": \"Pasirinkite žodynus\",\r\n\t\t\"DESCRIPTION_1\": \"Pasirinkite, kokį terminų rinkinį naudoti šiam projektui. \",\r\n\t\t\"DESCRIPTION_2\": \" Galite įtraukti naujų rinkinių ir redaguoti esamus\",\r\n\t\t\"DESCRIPTION_2_MOBILE\": \" Naudokite kompiuteriui skirtą versiją, jei norite sukurti naujus rinkinius arba redaguoti esamus.\",\r\n\t\t\"DESCRIPTION_EMPTY\": \"Jei norite tiksliai nustatyti, kaip „{{appName}}“ turėtų išversti jūsų įmonei ar pramonės šakai būdingus žodžius ir frazes, įtraukite juos į unikalius terminų rinkinius.\",\r\n\t\t\"DESCRIPTION_EMPTY_MOBILE\": \"Jei norite tiksliai nustatyti, kaip {{appName}} turėtų išversti jūsų įmonei ar pramonės šakai būdingus žodžius ir frazes, naudodami kompiuteriui skirtą versiją įtraukite juos į unikalius terminų rinkinius.\",\r\n\t\t\"PROMOTION\": {\r\n\t\t\t\"TITLE\": \"Kurkite, redaguokite ir tvarkykite žodynus\",\r\n\t\t\t\"DESCRIPTION\": \"„Tilde MT“ nariai gali naudotis žodynais.\",\r\n\t\t\t\"START_TRIAL\": \"Pradėti naudoti nemokamą bandomąją versiją\",\r\n\t\t\t\"LEARN_MORE\": \"Sužinokite daugiau apie žodynus\"\r\n\t\t},\r\n \"GLOSSARY\": \"Žodynas: \",\r\n \"SELECTED_NONE\": \"Nėra\",\r\n \"EDIT\": \"Redaguoti\",\r\n \"CREATE\": \"Naujas žodynas\",\r\n \"ENTRY_COUNT\": \"Įrašų: {{count}}\",\r\n \"ENTRY_COUNT_WITH_LANGUGAES\": \"Įrašų: {{count}} [{{languages}}]\",\r\n \"DEFAULT_COLLECTION_NAME\": \"Mano terminų rinkinys\",\r\n \"SYNC\": \"Sinchronizuoti\",\r\n \"SYNC_ERROR\": \"Kartoti\",\r\n \"ARIA_LABELS\": {\r\n \"RADIO_GROUP\": \"Pasirinkite terminų rinkinį\",\r\n \"OTHER_COLLECTIONS\": \"Atidaryti rinkinio meniu\"\r\n },\r\n \"CREATE_DIALOG\": {\r\n \"CANCEL\": \"Atšaukti\",\r\n \"COLLECTION_NAME_LABEL\": \"Terminų rinkinio pavadinimas\",\r\n \"CREATE\": \"Kurti\",\r\n \"DESCRIPTION_1\": \"Pavadinę terminų rinkinį, būsite nukreipti į „Tilde Term“, kad įtrauktumėte naujų terminų. Kai baigsite, grįžkite į „Tilde MT“ ir naudokite juos savo vertimo projektuose.\",\r\n \"DESCRIPTION_2\": \"<i>* Dirbtinis intelektas nėra tobulas ir kartais gali klysti. Jūsų unikalūs terminai bus naudojami teisingai 95 % tikslumu.</i>\",\r\n \"TITLE\": \"Kurti naują žodyną\",\r\n \"COLLECTION_NAME_ERROR\": \"Pavadinimas turėtų būti bent tiek simbolių ilgio: {{minLength}} ir ne ilgesnis nei tiek simbolių: {{maxLength}}\"\r\n },\r\n \"TOOLTIPS\": {\r\n\t\t\t\"MT_ENTRY_COUNT\": \"Mašininio vertimo įrašų skaičius\",\r\n \"EDIT\": \"Būsite nukreipti į terminologijos portalą, kuris bus atidarytas naujame skirtuke\",\r\n \"ENTRY_COUNT\": \"Į terminų rinkinį įtrauktų įrašų skaičius\",\r\n \"IMPORTING\": \"Terminų rinkinys importuojamas ir nebus naudojamas, kol nebaigta importuoti.\",\r\n \"NO_ENTRIES\": \"Terminų rinkinio naudoti negalima, nes nėra šaltinio kalbos terminų\",\r\n \"SYNC\": \"Atnaujinti terminų rinkinį\",\r\n \"SYNCING\": \"Terminų rinkinys sinchronizuojamas ir bus naudojama paskutinė sinchronizuota rinkinio versija\",\r\n \"ATTACH_TO_SYSTEM_ERROR\": \"Importuojant terminų rinkinį įvyko klaida\"\r\n }\r\n },\r\n \"DOMAINS\": {\r\n \"OPEN_LIST_ARIA_LABEL\": \"Atidaryti domenų sąrašą\",\r\n\t\t\"TITLE\": \"Domenas:\",\r\n\t\t\"GENERAL\": \"Bendrasis\",\r\n\t\t\"AUTO\": \"Automatinis aptikimas\",\r\n \"LAW\": \"Teisė\",\r\n \"DYNAMIC_LEARNING\": \"Dinaminis mokymasis\",\r\n \"BUSINESS\": \"Verslas\"\r\n },\r\n \"GRAMMAR_CHECK_MENU\": {\r\n\t\t\"TITLE\": \"Apsvarstykite galimybę pakeisti į:\"\r\n\t},\r\n\t\"AUDIO\": {\r\n\t\t\"CANCEL\": \"Atšaukti\",\r\n\t\t\"DESCRIBE_STATE_RECORDING\": \"Kalbėkite, kad įrašytumėte...\",\r\n\t\t\"DESCRIBE_STATE_PROCESSING\": \"Apdorojama...\",\r\n\t\t\"MIC_NOT_FOUND\": \"Mikrofonas nerastas\",\r\n\t\t\"STOP\": \"Stabdyti įrašymą\",\r\n\t\t\"START\": \"Versti kalbėjimą\",\r\n\t\t\"PUNCTUATION_MESSAGE_TITLE\": \"Įtraukti skyrybos ženklus\",\r\n\t\t\"PUNCTUATION_MESSAGE\": \"Atpažintame tekste sudėkite skyrybos ženklus. Ilgo teksto be skyrybos ženklų vertimo kokybė gali būti prastesnė arba jo gali nepavykti išversti\"\r\n\t},\r\n\t\"EXTENSION_POPUP\": {\r\n\t\t\"OPEN\": \"peržiūrėti visus palaikomus formatus\",\r\n\t\t\"TITLE\": \"Palaikomi failų formatai\",\r\n\t\t\"DESCRIPTION\": \"Norint užtikrinti teisingą failo vertimą, koduotė turi būti UTF-8 arba UTF-16\",\r\n\t\t\"OFFICE\": \"„Office“\",\r\n\t\t\"SCANNED\": \"Nuskaityti failai\",\r\n\t\t\"INTERCHANGE\": \"Apsikeitimo formatai\",\r\n\t\t\"WEB\": \"Žiniatinklis\",\r\n\t\t\"OTHER\": \"Kiti\"\r\n\t},\r\n\t\"FILE_UPLOAD\": {\r\n\t\t\"UPLOAD\": \"Pasirinkite\",\r\n\t\t\"DRAG_AND_DROP\": \"arba nuvilkite \",\r\n\t\t\"FILE\": \"failas\",\r\n\t\t\"FILES\": \"failai\",\r\n\t\t\"LIMITS\": \" ({{visibleExtensions}}. Maks. {{maxSizeMB}} MB)\"\r\n\t},\r\n \"TEXT_TO_SPEECH\": {\r\n \"PLAY\": \"Klausyti\"\r\n }\r\n}\r\n","\r\nexport const i18n_lv = {\r\n \"APP_NAME\": \"Tilde MT\",\r\n \"TLD_TRANSLATE\": {\r\n \"DOWNLOAD_TRANSLATED\": \"Lejupielādēt\",\r\n \"FILE_DOWNLOAD_SOURCE_IMAGE\": \"Lejupielādēt pārveidotu avota attēlu\",\r\n \"FILE_DOWNLOAD_SOURCE_IMAGE_HELP\": \"Attēla pārveidošana var radīt formatējuma kļūdas vai teksta kropļojumus. Lūdzu, pārbaudiet pārveidoto failu un labojiet kļūdas, pirms vēlreiz augšupielādējat failu tulkošanai\",\r\n \"FILE_TANSLATION_STATUSS_UPLOADING\": \"Notiek augšupielāde...\",\r\n \"FILE_TANSLATION_STATUSS_UPLOADED\": \"Augšupielādēts\",\r\n \"FILE_TANSLATION_STATUSS_COMPLETED\": \"\",\r\n \"FILE_TANSLATION_STATUSS_ERROR\": \"\",\r\n \"IMAGE_DISCLAIMER_LINK\": \"Lasiet par attēla pārveidošanu.\",\r\n \"DOC_WORD_CNT_LIMIT_MSG_TITLE\": \"Tulkošanas ierobežojums\",\r\n \"DOC_WORD_CNT_LIMIT_MSG\": \"Tiks tulkoti tikai pirmie {{wordCount}} vārdi. Lai tulkotu pilnus failus, nepieciešams Tilde MT abonements. <a href=\\\"{{registerLink}}?{{queryString}}\\\">Sāciet ar bezmaksas izmēģinājumu</a>\",\r\n \"ERROR_NO_SYSTEMS_LOADED_TITLE\": \"Netika ielādēta neviena tulkošanas sistēma\",\r\n \"ERROR_NO_SYSTEMS_LOADED\": \"Neizdevās ielādēt mašīntulkošanas sistēmas.\",\r\n \"ERROR_NO_SYSTEMS_LOADED_SUPPORT\": \" Lūdzu, atkārtoti ielādējiet lapu vai sazinieties ar <a href=\\\"mailto:{{email}}\\\"><strong> atbalsta dienestu</strong></a>.\",\r\n \"PDF_PAGE_LIMIT_MSG_TITLE\": \"Tulkošanas ierobežojums\",\r\n \"PDF_PAGE_LIMIT_MSG\": \"Tiks tulkota tikai pirmā lappuse. Lai tulkotu pilnus PDF failus, nepieciešams Tilde MT abonements. <a href=\\\"{{registerLink}}?{{queryString}}\\\">Sāciet ar bezmaksas izmēģinājumu</a>\",\r\n \"CLEAR_SOURCE_TOOLTIP\": \"Notīrīt tekstu\",\r\n \"PREPARING_TRANSLATION\": \"Tiek sākta tulkošana\",\r\n \"SOURCE_TOOLTIP_ONLY_TEXT\": \"Ievadiet tulkojamo tekstu.\",\r\n \"SOURCE_TOOLTIP_SENSITIVE_INFO\": \"Neizmantojiet programmu {{appName}}, lai tulkotu konfidenciālu vai slepenu informāciju vai tekstus, kuros ir īpašu kategoriju personas dati, piemēram, veselības dati\",\r\n \"REGISTERED_FORMATS_LOGGED_IN\": \"Reģistrētajiem lietotājiem ir piekļuve šādu formātu dokumentu tulkošanai: {{formats}}.\",\r\n \"REGISTERED_FORMATS\": \"Reģistrētajiem lietotājiem ir piekļuve šādu formātu dokumentu tulkošanai: {{formats}}. Pieprasiet piekļuvi <a class=\\\"accent-color\\\" target=\\\"blank\\\" href=\\\"{{registerLink}}\\\">šeit</a>.\",\r\n \"SOURCE_FORMATS\": \"Drošais publiskais tulkošanas pakalpojums atbalsta šādu formātu dokumentus: {{formats}};\",\r\n \"BEST_NMT\": \"Godalga par labāko mašīntulkošanas tehnoloģiju WMT konkursā trīs gadus pēc kārtas.\",\r\n \"BEST_NMT_MORE\": \"Papildinformācija\",\r\n \"CANCEL_TRANSLATION\": \"Atcelt\",\r\n \"DICTIONARY_EXAMPLES\": \"piemēri\",\r\n \"FILE_TARGET_PREVIEW_MESSAGE\": \"Šis ir tulkotā dokumenta priekšskatījuma paraugs. Lūdzu, lejupielādējiet, lai saņemtu pilnu tulkojumu.\",\r\n \"FROM\": \"No:\",\r\n \"SOURCE_WORD_LIMIT\": \" tulkojuma apjoma ierobežojums ir {{limit}} vārdi.\",\r\n \"SOURCE_TOOLTIP\": \"Ievadiet tulkojamo tekstu vai sākumlapas adresi.\",\r\n \"TARGET_DESCRIPTION\": \"Izmantojot mašīntulkošanu, var saprast avota teksta nozīmi, bet tā nevar aizstāt cilvēka veiktu tulkojumu.\",\r\n \"TRANSLATION_PREPARE\": \"Tiek sākta dokumenta tulkošana...\",\r\n \"TO\": \"Uz:\",\r\n \"SUGGEST_BUTTON\": \"Ierosināt tulkojumu\",\r\n \"SUGGEST_ORIGINAL_LABEL\": \"Sākotnējais teikums\",\r\n \"SUGGEST_SUBMIT_BUTTON\": \"Ieteikt\",\r\n \"SUGGEST_TRANSLATION_LABEL\": \"Tulkojums\",\r\n \"SUGGEST_USAGE_INFO\": \"Jūsu tulkojuma ieteikums tiks izmantots tulkošanas kvalitātes uzlabošanai.\",\r\n \"TEXT_COPIED\": \"Tulkojums nokopēts\",\r\n \"TOOLTIP_ACTION\": \"Tulkot\",\r\n \"UPLOAD_FILE_BUTTON\": \"Augšupielādējiet vai velciet failu\",\r\n \"DOMAINS_ARIA_LABEL\": \"Domēni\",\r\n \"FILE_DOWNLOAD_SOURCE\": \"Lejupielādēt pārveidotu avota PDF failu\",\r\n \"FILE_TANSLATION_STATUSS_INITIALIZING\": \"Notiek tulkošanas procesa inicializēšana...\",\r\n \"FILE_TANSLATION_STATUSS_EXTRACTING\": \"Notiek tulkojamā satura izvilkšana...\",\r\n \"FILE_TANSLATION_STATUSS_WAITING\": \"Notiek tulkotāja aktivizēšana...\",\r\n \"FILE_TANSLATION_STATUSS_TRANSLATING\": \"Notiek tulkošana...\",\r\n \"FILE_TANSLATION_STATUSS_SAVING\": \"Notiek tulkojuma saglabāšana...\",\r\n \"FILE_TANSLATION_STATUSS_QUEUING\": \"Tiek sākta tulkošana...\",\r\n \"PDF_DISCLAIMER_LINK\": \"Lasiet par PDF failu pārveidošanu.\",\r\n \"UPLOAD_FILES_BUTTON\": \"Augšupielādējiet vai ievelciet failus\",\r\n \"VENDORS_ARIA_LABEL\": \"Nodrošinātāji\",\r\n \"WORD_TYPE_ADJECTIVE\": \"īpašības vārds\",\r\n \"WORD_TYPE_NOUN\": \"lietvārds\",\r\n \"WORD_TYPE_VERB\": \"darbības vārds\",\r\n \"WORD_TYPE_ADVERB\": \"apstākļa vārds\",\r\n \"WORD_TYPE_CONJUNCTION\": \"saiklis\",\r\n \"WORD_TYPE_INTERJECTION\": \"izsauksmes vārds\",\r\n \"WORD_TYPE_PRONOUN\": \"vietniekvārds\"\r\n },\r\n \"RATING\": {\r\n \"WILL_BE_EVALUATED\": \"\\nTulkotais teksts tiks nosūtīts izvērtēšanai\",\r\n \"VERY_BAD\": \"ļoti slikts\",\r\n \"BAD\": \"slikts\",\r\n \"AVERAGE\": \"vidējs\",\r\n \"GOOD\": \"labs\",\r\n \"VERY_GOOD\": \"ļoti labs\",\r\n \"RATINGS_RECEIVED\": \"Novērtējums ir saņemts. Tulkojums tiks izvērtēts.\",\r\n \"RATING\": \"Vērtējums\",\r\n \"RECEIVED\": \"saņemts\"\r\n },\r\n \"LANGUAGES\": {\r\n \"AR\": \"Arābu\",\r\n \"LV\": \"Latviešu\",\r\n \"ET\": \"Igauņu\",\r\n \"DA\": \"Dāņu\",\r\n \"FI\": \"Somu\",\r\n \"IS\": \"Islandiešu\",\r\n \"LT\": \"Lietuviešu\",\r\n \"NB\": \"Norvēģu\",\r\n \"SV\": \"Zviedru\",\r\n \"BE\": \"Baltkrievu\",\r\n \"BG\": \"Bulgāru\",\r\n \"CS\": \"Čehu\",\r\n \"HU\": \"Ungāru\",\r\n \"RU\": \"Krievu\",\r\n \"MO\": \"Moldāvu\",\r\n \"PL\": \"Poļu\",\r\n \"SK\": \"Slovāku\",\r\n \"UK\": \"Ukraiņu\",\r\n \"NL\": \"Holandiešu\",\r\n \"EN\": \"Angļu\",\r\n \"FR\": \"Franču\",\r\n \"DE\": \"Vācu\",\r\n \"GA\": \"Īru\",\r\n \"EL\": \"Grieķu\",\r\n \"IT\": \"Itāliešu\",\r\n \"MT\": \"Maltiešu\",\r\n \"PT\": \"Portugāļu\",\r\n \"SR\": \"Serbu\",\r\n \"SL\": \"Slovēņu\",\r\n \"ES\": \"Spāņu\",\r\n \"ZH\": \"Ķīniešu\",\r\n \"JA\": \"Japāņu\",\r\n \"KO\": \"Korejiešu\",\r\n \"TR\": \"Turku\",\r\n \"HR\": \"Horvātu\",\r\n \"RO\": \"Rumāņu\"\r\n },\r\n \"MULTIPLE_FILES\": {\r\n \"APPEND\": \"Pievienot failus\",\r\n \"STATUSS_UPLOADING\": \"Notiek augšupielāde...\",\r\n \"STATUSS_UPLOADED\": \"Augšupielādēts\",\r\n \"PDF_DISCLAIMER\": \"PDF faila pārveidošana var radīt formatējuma kļūdas vai teksta kropļojumus. Pēc tulkošanas lejupielāžu opcijās atlasiet opciju “Lejupielādēt pārveidotu avota PDF failu”, pārbaudiet lejupielādēto failu un labojiet kļūdas, pirms vēlreiz augšupielādējat failu tulkošanai.\",\r\n \"IMAGE_DISCLAIMER\": \"Attēla pārvēršana var radīt formatējuma kļūdas vai teksta kropļojumus.\",\r\n \"IMAGE_DISCLAIMER_LINK\": \"Lasiet par attēla pārveidošanu.\",\r\n \"SCREEN_READER_ANNOUNCEMENT\": \"Iztulkoti {{translated}} faili no {{total}}.\",\r\n \"REMOVE_FILE_TOOLTIP\": \"Notīrīt failu\",\r\n \"CLEAR_ALL\": \"Atcelt\",\r\n \"DOWNLOAD\": \"Lejupielādēt\",\r\n \"STATUSS_INITIALIZING\": \"Notiek inicializēšana\",\r\n \"STATUSS_EXTRACTING\": \"Notiek izvilkšana\",\r\n \"STATUSS_WAITING\": \"Notiek tulkotāja aktivizēšana\",\r\n \"STATUSS_TRANSLATING\": \"Notiek tulkošana\",\r\n \"STATUSS_SAVING\": \"Notiek saglabāšana\",\r\n \"STATUSS_COMPLETED\": \"Pabeigts\",\r\n \"STATUSS_ERROR\": \"Kļūda\",\r\n \"STATUSS_QUEUING\": \"Atrodas rindā\",\r\n \"STATUSS_NOT_STARTED\": \"Augšupielādēts\",\r\n \"TITLE_FILE_NAME\": \"Fails\",\r\n \"TITLE_STATUSS\": \"Statuss\",\r\n \"TRANSLATION_STATUSS_LABEL\": \"Statuss\",\r\n \"PDF_DISCLAIMER_LINK\": \"Lasiet par PDF failu pārveidošanu.\"\r\n },\r\n \"ERRORS\": {\r\n \"ERROR_DEFAULT_TITLE\": \"Neparedzēta kļūda\",\r\n \"ERROR_DEFAULT\": \"Radās neparedzēta kļūda. Lūdzu, mēģiniet vēlreiz.\",\r\n \"ERROR_DEFAULT_SUPPORT\": \" Ja problēma joprojām pastāv, sazinieties ar <a href=\\\"mailto:{{email}}\\\"><strong>atbalsta dienestu</strong></a>.\",\r\n \"MAX_CHAR_LENGTH_TITLE\": \"Tulkošanas ierobežojums\",\r\n \"MAX_CHAR_LENGTH\": \"Tiks tulkotas tikai {{maxCharLength}}/{{totalSymbols}} rakstzīmes. Neierobežotai teksta tulkošanai ir nepieciešams Tilde MT abonements. <a href=\\\"{{registerLink}}?{{queryString}}\\\">Sāciet ar bezmaksas izmēģinājumu</a>\",\r\n \"MAX_NUMBER_OF_FILES_TITLE\": \"Augšupielādes ierobežojums\",\r\n \"MAX_NUMBER_OF_FILES\": \"Vienlaikus var tulkot tikai {{limit}} failus.\",\r\n \"FILE_ALREADY_ADDED_TITLE\": \"Fails jau ir pievienots\",\r\n \"FILE_ALREADY_ADDED\": \"Fails “{{fileName}}” jau ir pievienots.\",\r\n \"UANUTHORIZED_401_TITLE\": \"Nav atļaujas\",\r\n \"E_CANNOT_READ_FILE_TITLE\": \"Nevar nolasīt failu\",\r\n \"E_CANNOT_READ_FILE\": \"Fails “{{fileName}}” ir bojāts, un to nevarēja tulkot. Pārbaudiet failu un mēģiniet vēlreiz.\",\r\n \"E_FAILED_IN_TRANSLATION_TITLE\": \"Tulkošana neizdevās\",\r\n \"E_FAILED_IN_TRANSLATION\": \"Tulkojot radās kļūda. Lūdzu, mēģiniet vēlreiz.\",\r\n \"E_FAILED_IN_TRANSLATION_SUPPORT\": \" Ja problēma joprojām pastāv, sazinieties ar <a href=\\\"mailto:{{email}}\\\"><strong>atbalsta dienestu</strong></a>.\",\r\n \"E_FORMAT_TRACK_CHANGES_TITLE\": \"Tulkošana neizdevās, jo ir ieslēgta izmaiņu reģistrēšanas opcija\",\r\n \"E_FORMAT_TRACK_CHANGES\": \"Pirms Office failu tulkošanas vispirms ir jāakceptē izmaiņas vai jāizslēdz izmaiņu reģistrēšanas opcija.\",\r\n \"E_UNKNOWN_ERROR_TITLE\": \"Nezināma kļūda\",\r\n \"E_UNAUTHORIZED_TITLE\": \"Nav atļaujas\",\r\n \"COLLECTION_CREATE_TITLE\": \"Neizdevās izveidot glosāriju\",\r\n \"COLLECTION_CREATE\": \"Neizdevās izveidot jaunu glosāriju. Lūdzu, mēģiniet vēlreiz.\",\r\n \"COLLECTION_CREATE_SUPPORT\": \" Ja problēma joprojām pastāv, sazinieties ar <a href=\\\"mailto:{{email}}\\\"><strong>atbalsta dienestu</strong></a>.\",\r\n \"COLLECTION_IMPORT_TITLE\": \"Neizdevās pievienot glosāriju\",\r\n \"COLLECTION_IMPORT\": \"Mašīntulkošanas sistēmai neizdevās pievienot terminu kolekciju ar ID: {{termId}}. Lūdzu, mēģiniet vēlreiz.\",\r\n \"E_12_TITLE\": \"Teksta lieluma ierobežojums\",\r\n \"E_12\": \"Sasniegts teksta lieluma ierobežojums. Sūtiet mazāk teksta pieprasījumā.\",\r\n \"E_12_SUPPORT\": \" Lai palielinātu teksta lieluma ierobežojumu, sazinieties ar <a href=\\\"mailto:{{email}}\\\"><strong>atbalsta dienestu</strong></a>.\",\r\n \"E_21_TITLE\": \"Tiek startēta mašīntulkošanas sistēma\",\r\n \"E_21\": \"Pēc brīža varēsit sākt tulkošanu.\",\r\n \"E_22_TITLE\": \"Mašīntulkošanas sistēma nav atrasta\",\r\n \"E_22\": \"Mašīntulkošanas sistēma nav atrasta.\",\r\n \"E_22_SUPPORT\": \" Lūdzu, sazinieties ar <a href=\\\"mailto:{{email}}\\\"><strong>atbalsta dienestu</strong></a>.\",\r\n \"E_23\": \"Mašīntulkošanas sistēma nav startēta.\",\r\n \"E_23_SUPPORT\": \" Sazinieties ar <a href=\\\"mailto:{{email}}\\\"><strong>atbalsta dienestu</strong></a>.\",\r\n \"E_41\": \"Norādīts nezināms terminu korpusa ID. Terminu korpusam jābūt saistītam ar mašīntulkošanas programmu\",\r\n \"E_504\": \"Iestājies darbības taimauts.\",\r\n \"UANUTHORIZED_401\": \"Jums nav atļaujas izmantot mašīntulkošanu.\",\r\n \"UANUTHORIZED_401_SUPPORT\": \" Lūdzu, sazinieties ar <a href=\\\"mailto:{{email}}\\\"><strong>atbalsta dienestu</strong></a>.\",\r\n \"E_UNKNOWN_FILE_TYPE\": \"Nezināms faila tips.\",\r\n \"E_UNKNOWN_ERROR\": \"Radās nezināma kļūda.\",\r\n \"E_UNAUTHORIZED\": \"Document translation was denied.\",\r\n \"E_11\": \"Ir sasniegts dienai noteiktais tulkošanas limits.\",\r\n \"E_11_SUPPORT\": \" Lai palielinātu dienai noteikto limitu, lūdzu, sazinieties ar <a href=\\\"mailto:{{email}}\\\"><strong>atbalsta dienestu</strong></a>.\",\r\n \"FILE_UPLOAD\": {\r\n \"FILE_UPLOAD_EMPTY_TITLE\": \"Fails ir tukšs\",\r\n \"FILE_UPLOAD_EMPTY\": \"Augšupielādētais fails “{{fileName}}” ir tukšs. Atlasiet failu ar saturu.\",\r\n \"FILE_UPLOAD_MAX_SIZE_TITLE\": \"Faila lieluma ierobežojums\",\r\n \"FILE_UPLOAD_MAX_SIZE\": \"Augšupielādētais fails {{fileName}} ir pārāk liels. Maksimālais lielums {{maxSizeMB}}MB\",\r\n \"FILE_UPLOAD_UNSUPPORTED_FORMAT_TITLE\": \"Neatbalstīts faila formāts\",\r\n \"FILE_UPLOAD_UNSUPPORTED_FORMAT\": \"Augšupielādētā faila “{{fileName}}” formāts netiek atbalstīts. Tiek atbalstīta šādu formātu dokumentu tulkošana: {{formats}}.\",\r\n \"FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER_TITLE\": \"Neatbalstīts faila formāts\",\r\n \"FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER\": \"Lai tulkotu failu {{fileName}}, ir nepieciešams Tilde MT abonements. <a href=\\\"{{registerLink}}?{{queryString}}\\\">Sāciet ar bezmaksas izmēģinājumu</a>\",\r\n \"E_404_TITLE\": \"Fails nav atrasts\",\r\n \"E_404\": \"Pieprasītais fails nepastāv\"\r\n },\r\n \"FILE_TRANSLATION_SUBSTATUS\": {\r\n \"BAD_FILE_ERROR_TITLE\": \"Neizdevās iztulkot failu\",\r\n \"BAD_FILE_ERROR\": \"Fails ir bojāts, un to nevarēja tulkot. Pārbaudiet failu un mēģiniet vēlreiz.\",\r\n \"NO_TEXT_EXTRACTED_ERROR_TITLE\": \"Neizdevās izvilkt tekstu\",\r\n \"NO_TEXT_EXTRACTED_ERROR\": \"Iespējams, fails ir tukšs. Pārbaudiet failu un mēģiniet vēlreiz.\",\r\n \"TRACK_CHANGES_ENABLED_ERROR_TITLE\": \"Tulkošana neizdevās, jo ir ieslēgta izmaiņu reģistrēšanas opcija\",\r\n \"TRACK_CHANGES_ENABLED_ERROR\": \"Pirms Office failu tulkošanas vispirms ir jāakceptē izmaiņas vai jāizslēdz izmaiņu reģistrēšanas opcija.\",\r\n \"UNKNOWN_FILE_TYPE_ERROR_TITLE\": \"Nezināms faila tips\",\r\n \"UNKNOWN_FILE_TYPE_ERROR\": \"Faila tips nav atpazīts. Iespējams, faila paplašinājums nav pareizs vai fails ir bojāts.\"\r\n },\r\n \"AUDIO\": {\r\n \"NO_SPEECH_TITLE\": \"Nav runas\",\r\n \"NO_SPEECH\": \"Ieraksts tika apturēts. Mēs jūs nedzirdējām.\",\r\n \"MAX_TIME_EXCEEDED_TITLE\": \"Runas ierobežojums\",\r\n \"MAX_TIME_EXCEEDED\": \"Ieraksts tika apturēts. Runas ievade ir ierobežota līdz {{timeString}}.\",\r\n \"MIC_NOT_ALLOWED_TITLE\": \"Liegta piekļuve mikrofonam\",\r\n \"MIC_NOT_ALLOWED\": \"Jūs liedzāt piekļuvi mikrofonam. Mainiet atļaujas pārlūkprogrammas iestatījumos.\",\r\n \"MAX_SIZE_EXCEEDED_TITLE\": \"Runas ierobežojums\",\r\n \"MAX_SIZE_EXCEEDED\": \"Ieraksts tika apturēts un nosūtīts apstrādei. Runas ievade ir ierobežota līdz ({{maxSizeMb}}MB).\",\r\n \"CANT_START_RECORDING_TITLE\": \"Neizdevās sākt ierakstīšanu\",\r\n \"CANT_START_RECORDING\": \"Nevar sākt ierakstīšanu. Lūdzu, mēģiniet vēlreiz.\",\r\n \"NO_TEXT_RECOGNIZED_Title\": \"Runa nav atpazīta\",\r\n \"NO_TEXT_RECOGNIZED\": \"Runu nevarēja atpazīt. Pārbaudiet mikrofonu un mēģiniet vēlreiz.\"\r\n }\r\n },\r\n \"ARIA_LABELS\": {\r\n \"COPY\": \"Kopēt starpliktuvē\",\r\n \"OPEN_IN_NEW\": \"Atvērt jaunā cilnē\",\r\n \"SWAP_LANGUAGES\": \"Pārslēgt valodas\",\r\n \"OTHER_LANGUAGES_TRIGGER\": \"Rādīt citas valodas\",\r\n \"CLOSE_BUTTON\": \"Notīrīt\",\r\n \"CLEAR_NOTIFICATION\": \"Aizvērt brīdinājumu\",\r\n \"CLEAR_SOURCE\": \"Notīrīt ievadīto tekstu\",\r\n \"CLOSE_DIALOG\": \"Aizvērt dialoglodziņu\",\r\n \"CLEAR_FILES\": \"Notīrīt augšupielādētos failus\",\r\n \"SHOW_EXTENSIONS\": \"Rādīt citas lejupielādes iespējas\"\r\n },\r\n \"TOOLTIPS\": {\r\n \"COPY\": \"Kopēt starpliktuvē\",\r\n \"SWAP_LANGUAGES\": \"Pārslēgt valodas\"\r\n },\r\n \"PDF_CONVERSION\": {\r\n \"TITLE_1\": \"PDF failu tulkošana\",\r\n \"PARAGRAPH_1_1\": \"Kad PDF fails tiek augšupielādēts tulkošanai, tas tiek pārveidots tulkojamā formātā. Tiek atbalstīti gan skenēti, gan oriģināli PDF faili. Tulkojumus var lejupielādēt .docx, .tmx vai .pdf formātā, un tajos tiek saglabāts pamata formatējums. Tulkotajos .docx un .pdf failos formatējums var nedaudz atšķirties. \",\r\n \"PARAGRAPH_1_2\": \"Pārveidošanai ir nepieciešams laiks, tāpēc, lai šo procesu paātrinātu, sadaliet .pdf failus un izdzēsiet lapas, kurās nav tulkojamas informācijas. Apstrādes laiku ietekmē tādi faktori kā lapu skaits, kvalitāte un teksta blīvums.\",\r\n \"PARAGRAPH_1_3\": \"Lai uzlabotu tulkošanas veiktspēju, mēs iesakām lejupielādēt pārveidoto dokumentu oriģinālvalodā un manuāli veikt labojumus, bet pēc tam vēlreiz augšupielādēt failu tulkošanai.\",\r\n \"IMAGE_ALT_1\": \"Avota PDF faila lejupielādes piemērs\",\r\n\r\n \"TITLE_2\": \"PDF failu pārveidošana\",\r\n \"PARAGRAPH_2_1\": \"Dokuments tiek analizēts, un tā saturs tiek sadalīts teksta, tabulu un attēlu/fona attēlu zonās. Tās tiek papildus analizētas, lai noteiktu, kurš saturs ir jāatpazīst kā teksts.\",\r\n \"PARAGRAPH_2_2\": \"Tekstuāli dati tiek iegūti, izmantojot OCR jeb optisku rakstzīmju atpazīšanu. Katra rakstzīme tiek atpazīta atkarībā no tās vizuālajām pazīmēm, un pēc tam no rakstzīmēm tiek izveidoti vārdi un teikumi.\",\r\n \"PARAGRAPH_2_3\": \"Atpazīšanu ietekmē dažādi faktori, tostarp šie:\",\r\n \"LI_1_1\": \"Skenētā dokumenta kvalitāte (izplūdis vai deformēts teksts, attēla troksnis, attēla izšķirtspēja, kontrasts u. c.). Optimālam rezultātam PDF failu izšķirtspējai jābūt vismaz 300 dpi, tiem jābūt nesašķiebtiem un bez trokšņiem.\",\r\n \"LI_1_2\": \"Fonta lielums. Rakstzīmēm, kuru lielums ir mazāks par 9 punktiem, atpazīšana var būt apgrūtināta. \",\r\n \"LI_1_3\": \"Reti un oriģināli fonti. Retāk izmantoti fonti var būt neatpazīstami vai arī to atpazīšana var būt apgrūtināta.\",\r\n \"LI_1_4\": \"Dokumenta struktūras un formatējuma sarežģītība.\",\r\n\r\n \"TITLE_3\": \"Tulkošanas veiktspējas uzlabošana\",\r\n \"PARAGRAPH_3_1\": \"Pārveidošanas process ir ļoti sarežģīts, un to var ietekmēt dažādas ievadītā dokumenta kļūdas. \",\r\n \"PARAGRAPH_3_2\": \"Iespējamās problēmas:\",\r\n \"LI_2_1\": \"Nepareizi atpazīti vārdi.\",\r\n \"LI_2_2\": \"Nepareizas vārdu robežas.\",\r\n \"LI_2_3\": \"Teikumi, kas atrodas vairākās kolonnās, rindās vai lapās, tiek sadalīti dažādos teksta objektos.\",\r\n \"LI_2_4\": \"Nepareizi novietotas kājenes un galvenes.\",\r\n \"LI_2_5\": \"Nepareiza numerācija.\",\r\n \"LI_2_6\": \"Tabulas, kas atpazītas kā fona attēli ar tekstuālu saturu, tiek sadalītas dažādos teksta objektos.\",\r\n \"LI_2_7\": \"Dažas diagrammas tiek atpazītas kā attēli bez tekstuāla satura.\",\r\n \"LI_2_8\": \"Atdalītāji, apmales vai citas horizontālas līnijas tiek atpazītas kā pārsvītrots vai pasvītrots teksts.\",\r\n \"LI_2_9\": \"Satura rādītāju vai līdzīgu sarakstu formatējums tiek sakļauts vai atpazīts kā pārsvītrots vai pasvītrots teksts.\",\r\n\r\n \"PARAGRAPH_4_1\": \"<b>Ņemiet vērā, ka iegūtajā dokumentā netiks saglabātas visas oriģinālā formatējuma detaļas.</b> Daži attēli, tabulas vai diagrammas var tikt izkropļotas vai vienkāršotas. Tulkotajā dokumentā fonti nebūs tādi paši kā sākotnējā dokumentā, bet tie var būt līdzīgi. Var tikt atpazīts nepareizs fonta lielums. Noteiktiem programmas Word formatējuma elementiem, piemēram, virsrakstiem, satura rādītājiem, galvenēm un kājenēm, etiķetēm, veidlapām u. c., izskats tiek veidots līdzīgi oriģinālam, bet tie nav tieši tādi kā oriģinālā (piemēram, virsrakstiem tiek lietots treknraksts un lielāks fonts, bet tiem netiek lietots virsraksta stils).\",\r\n\r\n \"CLOSE\": \"Aizvērt dialoglodziņu\"\r\n },\r\n \"IMAGE_CONVERSION\": {\r\n \"TITLE_1\": \"Attēlu tulkošana\",\r\n \"PARAGRAPH_1_1\": \"Kad attēla fails tiek augšupielādēts tulkošanai, tas tiek pārveidots tulkojamā formātā. Tulkojumus var lejupielādēt .docx vai .tmx formātā, un tajos tiek saglabāts pamata formatējums.\",\r\n \"PARAGRAPH_1_2\": \"<b>Atbalstītie attēlu formāti:</b> .jpg, .jpeg, .png un .bmp.\",\r\n \"PARAGRAPH_1_3\": \"Lai uzlabotu tulkošanas sniegumu, mēs iesakām lejupielādēt pāveidoto dokumentu oriģinālvalodā un manuāli veikt labojumus, pirms vēlreiz augšupielādējat failu tulkošanai.\",\r\n \"IMAGE_ALT_1\": \"Avota attēla lejupielādes piemērs\",\r\n \"TITLE_2\": \"Attēla pārvēršana\",\r\n \"PARAGRAPH_2_1\": \"Attēls tiek analizēts, un tā saturs tiek sadalīts teksta, tabulu un attēlu/fona attēlu zonās. Tās tiek papildus analizētas, lai noteiktu, kurš saturs ir jāatpazīst kā teksts.\",\r\n \"PARAGRAPH_2_2\": \"Tekstuāli dati tiek iegūti, izmantojot OCR jeb optisku rakstzīmju atpazīšanu. Katra rakstzīme tiek atpazīta atkarībā no tās vizuālajām pazīmēm, un pēc tam no rakstzīmēm tiek izveidoti vārdi un teikumi.\",\r\n \"PARAGRAPH_2_3\": \"Atpazīšanu ietekmē dažādi faktori, tostarp tālāk norādītie.\",\r\n \"LI_1_1\": \"Skenētā attēla kvalitāte (izplūdis vai deformēts teksts, attēla troksnis, attēla izšķirtspēja, kontrasts u. c.). Optimālam rezultātam attēlu izšķirtspējai jābūt vismaz 300 dpi, tiem jābūt nesašķiebtiem un bez trokšņiem.\",\r\n \"LI_1_2\": \"Fonta lielums. Rakstzīmēm, kuru lielums ir mazāks par 9 punktiem, atpazīšana var būt apgrūtināta. \",\r\n \"LI_1_3\": \"Reti un oriģināli fonti. Retāk izmantoti fonti var nebūt atpazīstami, vai arī to atpazīšana var būt apgrūtināta.\",\r\n \"LI_1_4\": \"Dokumenta struktūras un formatējuma sarežģītība.\",\r\n \"TITLE_3\": \"Tulkošanas snieguma uzlabošana\",\r\n \"PARAGRAPH_3_1\": \"Pārveidošanas process ir ļoti sarežģīts, un to var ietekmēt dažādas ievadītā dokumenta kļūdas. \",\r\n \"PARAGRAPH_3_2\": \"Iespējamās problēmas:\",\r\n \"LI_2_1\": \"Nepareizi atpazīti vārdi.\",\r\n \"LI_2_2\": \"Nepareizas vārdu robežas.\",\r\n \"LI_2_3\": \"Teikumi, kas atrodas vairākās kolonnās, rindās vai lapās, tiek sadalīti dažādos teksta objektos.\",\r\n \"LI_2_4\": \"Nepareizi novietotas kājenes un galvenes.\",\r\n \"LI_2_5\": \"Nepareiza numerācija.\",\r\n \"LI_2_6\": \"Tabulas, kas atpazītas kā fona attēli ar tekstuālu saturu, tiek sadalītas dažādos teksta objektos.\",\r\n \"LI_2_7\": \"Dažas diagrammas tiek atpazītas kā attēli bez tekstuāla satura.\",\r\n \"LI_2_8\": \"Atdalītāji, apmales vai citas horizontālas līnijas tiek atpazītas kā pārsvītrots vai pasvītrots teksts.\",\r\n \"PARAGRAPH_4_1\": \"<b>Ņemiet vērā, ka iegūtajā dokumentā netiks saglabātas visas oriģinālā formatējuma detaļas.</b> Daži attēli, tabulas vai diagrammas var tikt izkropļotas vai vienkāršotas. Tulkotajā dokumentā fonti nebūs tādi paši kā sākotnējā dokumentā, bet tie var būt līdzīgi. Var tikt atpazīts nepareizs fonta lielums.\",\r\n \"CLOSE\": \"Aizvērt dialoglodziņu\"\r\n },\r\n \"WEBTRANSLATE\": {\r\n \"BACK\": \"Atgriezties sadaļā Tulkotājs\",\r\n \"ADDRESS\": \"Adrese\",\r\n \"LOAD_PAGE\": \"Ielādēt lapu\",\r\n \"RESTORE\": \"Atjaunot\",\r\n \"CANCEL\": \"Atcelt\"\r\n },\r\n \"TERM_COLLECTIONS\": {\r\n \"MT_ENTRY_COUNT\": \"Importēts: {{count}}\",\r\n \"TITLE\": \"Glosāriju atlase, rediģēšana un pārvaldība\",\r\n \"TITLE_EMPTY\": \"Sava pirmā glosārija izveide\",\r\n \"TITLE_MOBILE\": \"Glosāriju atlase\",\r\n \"DESCRIPTION_1\": \"Atlasiet, kuru terminu kolekciju izmantot šim projektam. \",\r\n \"DESCRIPTION_2\": \" Varat pievienot jaunas kolekcijas un rediģēt esošās\",\r\n \"DESCRIPTION_2_MOBILE\": \" Izmantojiet darbvirsmas versiju, lai izveidotu jaunas kolekcijas vai rediģētu esošās.\",\r\n \"DESCRIPTION_EMPTY\": \"Varat iestatīt, kā programmai {{appName}} tulkot vārdus un frāzes, kas raksturīgas jūsu uzņēmumam vai nozarei, pievienojot tās unikālajām terminu kolekcijām.\",\r\n \"DESCRIPTION_EMPTY_MOBILE\": \"Izmantojiet darbvirsmas versiju, lai iestatītu, kā programmai Tilde MT tulkot vārdus un frāzes, kas raksturīgas jūsu uzņēmumam vai nozarei, pievienojot tās unikālajām terminu kolekcijām.\",\r\n \"PROMOTION\": {\r\n \"TITLE\": \"Glosāriju izveide, rediģēšana un pārvaldība\",\r\n \"DESCRIPTION\": \"Tilde MT dalībniekiem pieejami glosāriji.\",\r\n \"START_TRIAL\": \"Sākt bezmaksas izmēģinājumu\",\r\n \"LEARN_MORE\": \"Uzziniet vairāk par glosārijiem\"\r\n },\r\n \"GLOSSARY\": \"Glosārijs: \",\r\n \"SELECTED_NONE\": \"Neviens\",\r\n \"EDIT\": \"Rediģēt\",\r\n \"CREATE\": \"Jauns glosārijs\",\r\n \"ENTRY_COUNT\": \"Ieraksti: {{count}}\",\r\n \"ENTRY_COUNT_WITH_LANGUGAES\": \"Ieraksti: {{count}} [{{languages}}]\",\r\n \"DEFAULT_COLLECTION_NAME\": \"Mana terminu kolekcija\",\r\n \"SYNC\": \"Sinhronizēt\",\r\n \"SYNC_ERROR\": \"Mēģināt vēlreiz\",\r\n \"ARIA_LABELS\": {\r\n \"RADIO_GROUP\": \"Atlasīt terminu kolekciju\",\r\n \"OTHER_COLLECTIONS\": \"Atvērt kolekciju izvēlni\"\r\n },\r\n \"CREATE_DIALOG\": {\r\n \"CANCEL\": \"Atcelt\",\r\n \"COLLECTION_NAME_LABEL\": \"Terminu kolekcijas nosaukums\",\r\n \"CREATE\": \"Izveidot\",\r\n \"DESCRIPTION_1\": \"Pēc nosaukuma piešķiršanas terminu kolekcijai tiks atvērts portāls Tilde Term, kur varēsit pievienot jaunus terminus. Pēc tam atgriezieties platformā Tilde MT, lai izmantotu šos terminus savos tulkošanas projektos.\",\r\n \"DESCRIPTION_2\": \"<i>* Mākslīgais intelekts nav nevainojams un reizēm pieļauj kļūdas. Jūsu unikālie termini tiks izmantoti pareizi ar 95% precizitāti.</i>\",\r\n \"TITLE\": \"Jauna glosārija izveide\",\r\n \"COLLECTION_NAME_ERROR\": \"Rakstzīmju skaits virsrakstā nedrīkst būt mazāks par {{minLength}} vai lielāks par {{maxLength}}\"\r\n },\r\n \"TOOLTIPS\": {\r\n \"MT_ENTRY_COUNT\": \"Mašīntulkošanai izmantoto ierakstu skaits\",\r\n \"EDIT\": \"Jūs tiksit novirzīts uz terminoloģijas portālu, kas tiks atvērts jaunā cilnē\",\r\n \"ENTRY_COUNT\": \"Terminu kolekcijā pievienoto ierakstu skaits\",\r\n \"IMPORTING\": \"Terminu kolekcija tiek importēta un netiks izmantota līdz importēšanas beigām.\",\r\n \"NO_ENTRIES\": \"Terminu kolekciju nevar izmantot, jo avotvalodā nav terminu\",\r\n \"SYNC\": \"Atjaunināt terminu kolekciju\",\r\n \"SYNCING\": \"Terminu kolekcija tiek sinhronizēta, un tiks izmantota kolekcijas jaunākā sinhronizētā versija\",\r\n \"ATTACH_TO_SYSTEM_ERROR\": \"Importējot terminu kolekciju, radās kļūda\"\r\n }\r\n },\r\n \"DOMAINS\": {\r\n \"OPEN_LIST_ARIA_LABEL\": \"Atvērt domēnu sarakstu\",\r\n \"TITLE\": \"Domēns:\",\r\n \"GENERAL\": \"Vispārīgi\",\r\n \"AUTO\": \"Automātiskā noteikšana\",\r\n \"LAW\": \"Jurisprudence\",\r\n \"DYNAMIC_LEARNING\": \"Dinamiskā mācīšanās\",\r\n \"BUSINESS\": \"Uzņēmējdarbība\"\r\n },\r\n \"GRAMMAR_CHECK_MENU\": {\r\n \"TITLE\": \"Apsveriet iespēju mainīt uz:\"\r\n },\r\n \"AUDIO\": {\r\n \"CANCEL\": \"Atcelt\",\r\n \"DESCRIBE_STATE_RECORDING\": \"Lūdzu, runājiet, lai ierakstītu...\",\r\n \"DESCRIBE_STATE_PROCESSING\": \"Notiek apstrāde...\",\r\n \"MIC_NOT_FOUND\": \"Mikrofons nav atrasts\",\r\n \"STOP\": \"Pārtraukt ierakstīšanu\",\r\n \"START\": \"Tulkot runu\",\r\n \"PUNCTUATION_MESSAGE_TITLE\": \"Pieturzīmju pievienošana\",\r\n \"PUNCTUATION_MESSAGE\": \"Lūdzu, pievienojiet atpazītajam tekstam pieturzīmes. Garam tekstam bez pieturzīmēm var būt zemāka tulkojuma kvalitāte, vai arī tas var nebūt tulkots\"\r\n },\r\n \"EXTENSION_POPUP\": {\r\n \"OPEN\": \"skatīt visus atbalstītos formātus\",\r\n \"TITLE\": \"Atbalstītie failu formāti\",\r\n \"DESCRIPTION\": \"Nepieciešama UTF-8 vai UTF-16 kodēšana, lai nodrošinātu pareizu failu tulkošanu\",\r\n \"OFFICE\": \"Office\",\r\n \"SCANNED\": \"Skenētie faili\",\r\n \"INTERCHANGE\": \"Apmaiņas formāti\",\r\n \"WEB\": \"Tīmeklis\",\r\n \"OTHER\": \"Cits\"\r\n },\r\n \"FILE_UPLOAD\": {\r\n \"UPLOAD\": \"Atlasiet\",\r\n \"DRAG_AND_DROP\": \"vai velciet un nometiet \",\r\n \"FILE\": \"failu\",\r\n \"FILES\": \"failus\",\r\n \"LIMITS\": \" ({{visibleExtensions}}. Maks. {{maxSizeMB}}MB)\"\r\n },\r\n \"TEXT_TO_SPEECH\": {\r\n \"PLAY\": \"Klausīties\"\r\n }\r\n}\r\n","\r\nexport const i18n_pl = {\r\n \"APP_NAME\": \"Tilde MT\",\r\n \"TLD_TRANSLATE\": {\r\n \"DOWNLOAD_TRANSLATED\": \"Pobierz\",\r\n \"FILE_DOWNLOAD_SOURCE_IMAGE\": \"Pobierz przekonwertowany obraz źródłowy\",\r\n \"FILE_DOWNLOAD_SOURCE_IMAGE_HELP\": \"Konwersja obrazu może powodować błędy formatowania lub zniekształcenia tekstu. Sprawdź skonwertowany plik i popraw błędy przed ponownym wysłaniem pliku do tłumaczenia\",\r\n \"FILE_TANSLATION_STATUSS_UPLOADING\": \"Przesyłanie…\",\r\n \"FILE_TANSLATION_STATUSS_UPLOADED\": \"Przesłano\",\r\n \"IMAGE_DISCLAIMER_LINK\": \"Przeczytaj o konwersji obrazu.\",\r\n \"DOC_WORD_CNT_LIMIT_MSG_TITLE\": \"Limit tłumaczenia\",\r\n \"DOC_WORD_CNT_LIMIT_MSG\": \"Przetłumaczone będą tylko pierwsze {{wordcount}} słów. Do przetłumaczenia pełnych plików potrzebna jest subskrypcja Tilde MT. <a href=\\\"{{registerLink}}?{{queryString}}\\\">na początek skorzystaj z bezpłatnej wersji próbnej</a>\",\r\n \"ERROR_NO_SYSTEMS_LOADED_TITLE\": \"Nie załadowano żadnych silników tłumaczenia\",\r\n \"ERROR_NO_SYSTEMS_LOADED\": \"Nie można załadować silników tłumaczenia maszynowego.\",\r\n \"ERROR_NO_SYSTEMS_LOADED_SUPPORT\": \" Załaduj ponownie stronę lub skontaktuj się z <a href=\\\"mailto:{{email}}\\\"><strong>działem wsparcia</strong></a>.\",\r\n \"PDF_PAGE_LIMIT_MSG_TITLE\": \"Limit tłumaczenia\",\r\n \"PDF_PAGE_LIMIT_MSG\": \"Przetłumaczona zostanie tylko pierwsza strona. Do przetłumaczenia pełnych plików PDF potrzebna jest subskrypcja Tilde MT. <a href=\\\"{{registerLink}}?{{queryString}}\\\">na początek skorzystaj z bezpłatnej wersji próbnej</a>\",\r\n \"CLEAR_SOURCE_TOOLTIP\": \"Usuń tekst\",\r\n \"PREPARING_TRANSLATION\": \"Rozpoczynanie tłumaczenia\",\r\n \"SOURCE_TOOLTIP_ONLY_TEXT\": \"Wprowadź tekst, który chcesz przetłumaczyć.\",\r\n \"SOURCE_TOOLTIP_SENSITIVE_INFO\": \"Nie używaj {{appName}} do tłumaczenia tajnych lub poufnych informacji lub tekstów, które zawierają specjalne kategorie danych osobowych, takich jak dane dotyczące zdrowia.\",\r\n \"REGISTERED_FORMATS_LOGGED_IN\": \"Zarejestrowani użytkownicy mają dostęp do tłumaczenia dokumentów o następujących formatach: {{formats}}.\",\r\n \"REGISTERED_FORMATS\": \"Zarejestrowani użytkownicy mają dostęp do tłumaczenia dokumentów o następujących formatach: {{formats}}. Uzyskaj dostęp <a class=\\\"accent-color\\\" target=\\\"blank\\\" href=\\\"{{registerLink}}\\\">tutaj</a>.\",\r\n \"SOURCE_FORMATS\": \"Bezpieczna publiczna usługa tłumaczeń obsługuje następujące formaty dokumentów: {{formats}};\",\r\n \"BEST_NMT\": \"Dumny zwycięzca w kategorii najlepszej technologii tłumaczenia maszynowego w konkursie WMT przez trzy lata z rzędu.\",\r\n \"BEST_NMT_MORE\": \"Dowiedz się więcej\",\r\n \"CANCEL_TRANSLATION\": \"Anuluj\",\r\n \"FILE_TARGET_PREVIEW_MESSAGE\": \"To jest przykładowy podgląd przetłumaczonego dokumentu. Pobierz, aby uzyskać pełne tłumaczenie.\",\r\n \"FROM\": \"Z:\",\r\n \"SOURCE_WORD_LIMIT\": \" liczba słów tłumaczenia jest ograniczona do {{limit}}.\",\r\n \"SOURCE_TOOLTIP\": \"Wprowadź tekst lub adres strony, którą chcesz przetłumaczyć.\",\r\n \"TARGET_DESCRIPTION\": \"Tłumaczenie maszynowe pozwala na zrozumienie znaczenia tekstu źródłowego, ale nie może zastąpić tłumaczenia wykonanego przez człowieka.\",\r\n \"TO\": \"Na:\",\r\n \"TEXT_COPIED\": \"Tłumaczenie skopiowane\",\r\n \"SUGGEST_BUTTON\": \"Zaproponuj tłumaczenie\",\r\n \"SUGGEST_ORIGINAL_LABEL\": \"Zdanie wejściowe\",\r\n \"SUGGEST_SUBMIT_BUTTON\": \"Miej swój wkład\",\r\n \"SUGGEST_TRANSLATION_LABEL\": \"Tłumaczenie\",\r\n \"SUGGEST_USAGE_INFO\": \"Twoja zanonimizowana sugestia dotycząca tłumaczeń zostanie wykorzystana w celu poprawy jakości tłumaczenia maszynowego.\",\r\n \"TOOLTIP_ACTION\": \"Przetłumacz\",\r\n \"UPLOAD_FILE_BUTTON\": \"Prześlij lub przeciągnij pliki\",\r\n \"DICTIONARY_EXAMPLES\": \"przykłady\",\r\n \"DOMAINS_ARIA_LABEL\": \"Domeny\",\r\n \"FILE_DOWNLOAD_SOURCE\": \"Pobierz przekonwertowany źródłowy plik PDF\",\r\n \"FILE_TANSLATION_STATUSS_INITIALIZING\": \"Inicjalizacja procesu tłumaczenia...\",\r\n \"FILE_TANSLATION_STATUSS_EXTRACTING\": \"Ekstrakcja przetłumaczonej zawartości...\",\r\n \"FILE_TANSLATION_STATUSS_WAITING\": \"Uruchamianie translatora...\",\r\n \"FILE_TANSLATION_STATUSS_TRANSLATING\": \"Tłumaczenie...\",\r\n \"FILE_TANSLATION_STATUSS_SAVING\": \"Zapisywanie tłumaczenia...\",\r\n \"FILE_TANSLATION_STATUSS_QUEUING\": \"Rozpoczynanie tłumaczenia...\",\r\n \"PDF_DISCLAIMER_LINK\": \"Przeczytaj o konwersji plików pdf.\",\r\n \"UPLOAD_FILES_BUTTON\": \"Prześlij lub przeciągnij pliki\",\r\n \"VENDORS_ARIA_LABEL\": \"Dostawcy usług\",\r\n \"WORD_TYPE_ADJECTIVE\": \"przymiotnik\",\r\n \"WORD_TYPE_NOUN\": \"rzeczownik\",\r\n \"WORD_TYPE_VERB\": \"czasownik\",\r\n \"WORD_TYPE_ADVERB\": \"przysłówek\",\r\n \"WORD_TYPE_CONJUNCTION\": \"łącznik\",\r\n \"WORD_TYPE_INTERJECTION\": \"wtrącenie\",\r\n \"WORD_TYPE_PRONOUN\": \"przyimek\"\r\n },\r\n \"LANGUAGES\": {\r\n \"AR\": \"Arabski\",\r\n \"BG\": \"Bułgarski\",\r\n \"HR\": \"Chorwacki\",\r\n \"CS\": \"Czeski\",\r\n \"DA\": \"Duński\",\r\n \"NL\": \"Niderlandzki\",\r\n \"EN\": \"Angielski\",\r\n \"ET\": \"Estoński\",\r\n \"FI\": \"Fiński\",\r\n \"FR\": \"Francuski\",\r\n \"DE\": \"Niemiecki\",\r\n \"EL\": \"Grecki\",\r\n \"HU\": \"Węgierski\",\r\n \"GA\": \"Irlandzki\",\r\n \"IS\": \"Islandzki\",\r\n \"IT\": \"Włoski\",\r\n \"LV\": \"Łotewski\",\r\n \"LT\": \"Litewski\",\r\n \"MT\": \"Maltański\",\r\n \"NB\": \"Norweski\",\r\n \"PL\": \"Polski\",\r\n \"PT\": \"Portugalski\",\r\n \"RO\": \"Rumuński\",\r\n \"RU\": \"Rosyjski\",\r\n \"SK\": \"Słowacki\",\r\n \"SL\": \"Słoweński\",\r\n \"ES\": \"Hiszpański\",\r\n \"SV\": \"Szwedzki\",\r\n \"KA\": \"Gruziński\",\r\n \"BE\": \"Białoruski\",\r\n \"MO\": \"Mołdawski\",\r\n \"UK\": \"Ukraiński\",\r\n \"SR\": \"Serbski\",\r\n \"ZH\": \"Chiński\",\r\n \"JA\": \"Japoński\",\r\n \"KO\": \"Koreański\",\r\n \"TR\": \"Turecki\"\r\n },\r\n \"MULTIPLE_FILES\": {\r\n \"APPEND\": \"Dodaj pliki\",\r\n \"STATUSS_UPLOADING\": \"Przesyłanie…\",\r\n \"STATUSS_UPLOADED\": \"Przesłano\",\r\n \"PDF_DISCLAIMER\": \"Konwersja PDF może powodować błędy formatowania lub zniekształcenia tekstu. Po przetłumaczeniu wybierz „Pobierz przekonwertowany źródłowy plik PDF” z rozwijanego menu, sprawdź pobrany plik i popraw błędy przed ponownym przesłaniem pliku do tłumaczenia.\",\r\n \"IMAGE_DISCLAIMER\": \"Konwersja obrazu może powodować błędy formatowania lub zniekształcenia tekstu.\",\r\n \"IMAGE_DISCLAIMER_LINK\": \"Przeczytaj o konwersji obrazu.\",\r\n \"SCREEN_READER_ANNOUNCEMENT\": \"Przetłumaczono {{translated}} z {{total}} plików.\",\r\n \"REMOVE_FILE_TOOLTIP\": \"Usuń plik\",\r\n \"CLEAR_ALL\": \"Anuluj\",\r\n \"DOWNLOAD\": \"Pobierz\",\r\n \"STATUSS_INITIALIZING\": \"Inicjalizacja\",\r\n \"STATUSS_EXTRACTING\": \"Ekstrakcja\",\r\n \"STATUSS_WAITING\": \"Uruchamianie translatora\",\r\n \"STATUSS_TRANSLATING\": \"Tłumaczenie\",\r\n \"STATUSS_SAVING\": \"Zapisywanie\",\r\n \"STATUSS_COMPLETED\": \"Ukończono\",\r\n \"STATUSS_ERROR\": \"Błąd\",\r\n \"STATUSS_QUEUING\": \"Oczekuje\",\r\n \"STATUSS_NOT_STARTED\": \"Przesłano\",\r\n \"TITLE_FILE_NAME\": \"Plik\",\r\n \"TITLE_STATUSS\": \"Status\",\r\n \"TRANSLATION_STATUSS_LABEL\": \"Status\",\r\n \"PDF_DISCLAIMER_LINK\": \"Przeczytaj o konwersji plików pdf.\"\r\n },\r\n \"ERRORS\": {\r\n \"ERROR_DEFAULT_TITLE\": \"Nieoczekiwany błąd\",\r\n \"ERROR_DEFAULT\": \"Wystąpił nieoczekiwany błąd. Spróbuj ponownie.\",\r\n \"ERROR_DEFAULT_SUPPORT\": \" Jeśli problem będzie się powtarzał, skontaktuj się z <a href=\\\"mailto:{{email}}\\\"><strong>działem wsparcia</strong></a>.\",\r\n \"MAX_CHAR_LENGTH_TITLE\": \"Limit tłumaczenia\",\r\n \"MAX_CHAR_LENGTH\": \"Przetłumaczona zostanie tylko następująca liczba znaków: {{maxCharLength}}/{{totalSymbols}}. Do przetłumaczenia nieograniczonej ilości tekstu potrzebna jest subskrypcja Tilde MT. <a href=\\\"{{registerLink}}?{{queryString}}\\\">na początek skorzystaj z bezpłatnej wersji próbnej</a>\",\r\n \"MAX_NUMBER_OF_FILES_TITLE\": \"Limit przesyłania\",\r\n \"MAX_NUMBER_OF_FILES\": \"Jednocześnie można przetłumaczyć tylko następującą liczbę plików: {{limit}}.\",\r\n \"FILE_ALREADY_ADDED_TITLE\": \"Plik został już dodany\",\r\n \"FILE_ALREADY_ADDED\": \"Plik „{{fileName}}” został już dodany.\",\r\n \"UANUTHORIZED_401_TITLE\": \"Brak pozwolenia\",\r\n \"E_CANNOT_READ_FILE_TITLE\": \"Nie można odczytać pliku\",\r\n \"E_CANNOT_READ_FILE\": \"Plik „{{fileName}}” jest uszkodzony i nie można go przetłumaczyć. Sprawdź plik i spróbuj ponownie.\",\r\n \"E_FAILED_IN_TRANSLATION_TITLE\": \"Tłumaczenie nie powiodło się\",\r\n \"E_FAILED_IN_TRANSLATION\": \"W trakcie tłumaczenia wystąpił błąd. Spróbuj ponownie.\",\r\n \"E_FAILED_IN_TRANSLATION_SUPPORT\": \" Jeśli problem będzie się powtarzał, skontaktuj się z <a href=\\\"mailto:{{email}}\\\"><strong>działem wsparcia</strong></a>.\",\r\n \"E_FORMAT_TRACK_CHANGES_TITLE\": \"Tłumaczenie nie powiodło się, ponieważ włączono „zmiany ścieżki”\",\r\n \"E_FORMAT_TRACK_CHANGES\": \"Przed tłumaczeniem plików pakietu Office należy najpierw zaakceptować zmiany lub wyłączyć opcję „Śledź zmiany”.\",\r\n \"E_UNKNOWN_ERROR_TITLE\": \"Nieznany błąd\",\r\n \"E_UNAUTHORIZED_TITLE\": \"Brak pozwolenia\",\r\n \"COLLECTION_CREATE_TITLE\": \"Nie można utworzyć słownika\",\r\n \"COLLECTION_CREATE\": \"Nie można utworzyć nowego słownika. Spróbuj ponownie.\",\r\n \"COLLECTION_CREATE_SUPPORT\": \" Jeśli problem będzie się powtarzał, skontaktuj się z <a href=\\\"mailto:{{email}}\\\"><strong>działem wsparcia</strong></a>.\",\r\n \"COLLECTION_IMPORT_TITLE\": \"Nie można dołączyć słownika\",\r\n \"COLLECTION_IMPORT\": \"Nie można dołączyć zbioru terminów o identyfikatorze {{termId}} do silnika tłumaczenia maszynowego. Spróbuj ponownie.\",\r\n \"E_12_TITLE\": \"Limit rozmiaru tekstu\",\r\n \"E_12\": \"Osiągnięto limit rozmiaru tekstu. Wyślij mniej tekstu w żądaniu.\",\r\n \"E_12_SUPPORT\": \" Aby zwiększyć limit rozmiaru tekstu, skontaktuj się z <a href=\\\"mailto:{{email}}\\\"><strong>działem wsparcia</strong></a>.\",\r\n \"E_21_TITLE\": \"Uruchamianie silnika tłumaczenia maszynowego\",\r\n \"E_21\": \"Za chwilę będziesz w stanie tłumaczyć.\",\r\n \"E_22_TITLE\": \"Nie znaleziono silnika tłumaczenia maszynowego\",\r\n \"E_22\": \"Nie znaleziono silnika tłumaczenia maszynowego.\",\r\n \"E_22_SUPPORT\": \" Skontaktuj się z <a href=\\\"mailto:{{email}}\\\"><strong>działem wsparcia</strong></a>.\",\r\n \"E_23\": \"Silnik tłumaczenia maszynowego nie został uruchomiony.\",\r\n \"E_23_SUPPORT\": \" Skontaktuj się z <a href=\\\"mailto:{{email}}\\\"><strong>działem wsparcia</strong></a>.\",\r\n \"E_41\": \"Podano nieznane ID korpusu terminów. Korpus terminów musi być połączony z silnikiem tłumaczenia maszynowego\",\r\n \"E_504\": \"Czynność przekroczyła limit czasu.\",\r\n \"UANUTHORIZED_401\": \"Nie masz uprawnień do korzystania z tłumaczenia maszynowego.\",\r\n \"UANUTHORIZED_401_SUPPORT\": \" Skontaktuj się ze<a href=\\\"mailto:{{email}}\\\"><strong> wsparciem</strong></a>.\",\r\n \"E_UNKNOWN_FILE_TYPE\": \"Nieznany typ pliku.\",\r\n \"E_UNKNOWN_ERROR\": \"Wystąpił nieznany błąd.\",\r\n \"E_UNAUTHORIZED\": \"Odmowa tłumaczenia dokumentu.\",\r\n \"E_11\": \"Dzienny limit tłumaczeń został osiągnięty.\",\r\n \"E_11_SUPPORT\": \" Aby zwiększyć dzienny limit, skontaktuj się z <a href=\\\"mailto:{{email}}\\\"><strong>pomocą techniczną</strong></a>.\",\r\n \"FILE_TRANSLATION_SUBSTATUS\": {\r\n \"BAD_FILE_ERROR_TITLE\": \"Nie można przetłumaczyć pliku\",\r\n \"BAD_FILE_ERROR\": \"Plik jest uszkodzony i nie można go przetłumaczyć. Sprawdź plik i spróbuj ponownie.\",\r\n \"NO_TEXT_EXTRACTED_ERROR_TITLE\": \"Nie można wyodrębnić żadnego tekstu\",\r\n \"NO_TEXT_EXTRACTED_ERROR\": \"Plik może być pusty. Sprawdź plik i spróbuj ponownie.\",\r\n \"TRACK_CHANGES_ENABLED_ERROR_TITLE\": \"Tłumaczenie nie powiodło się, ponieważ włączono „zmiany ścieżki”\",\r\n \"TRACK_CHANGES_ENABLED_ERROR\": \"Przed tłumaczeniem plików pakietu Office należy najpierw zaakceptować zmiany lub wyłączyć opcję „Śledź zmiany”.\",\r\n \"UNKNOWN_FILE_TYPE_ERROR_TITLE\": \"Nieznany typ pliku\",\r\n \"UNKNOWN_FILE_TYPE_ERROR\": \"Nie rozpoznano typu pliku. Rozszerzenie pliku może być nieprawidłowe lub plik może być uszkodzony.\"\r\n },\r\n \"FILE_UPLOAD\": {\r\n \"FILE_UPLOAD_EMPTY_TITLE\": \"Plik jest pusty\",\r\n \"FILE_UPLOAD_EMPTY\": \"Przesłany plik „{{fileName}}” jest pusty. Wybierz plik zawierający treść.\",\r\n \"FILE_UPLOAD_MAX_SIZE_TITLE\": \"Limit rozmiaru pliku\",\r\n \"FILE_UPLOAD_MAX_SIZE\": \"Przesłany plik „{{fileName}}” jest za duży. Maksymalny rozmiar to {{maxSizeMB}} MB\",\r\n \"FILE_UPLOAD_UNSUPPORTED_FORMAT_TITLE\": \"Nieobsługiwany format pliku\",\r\n \"FILE_UPLOAD_UNSUPPORTED_FORMAT\": \"Przesłany plik „{{fileName}}” nie jest obsługiwany. Możliwe jest tłumaczenie dokumentów w następujących formatach: {{formats}}.\",\r\n \"FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER_TITLE\": \"Nieobsługiwany format pliku\",\r\n \"FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER\": \"Do przetłumaczenia pliku „{{fileName}}” potrzebna jest subskrypcja Tilde MT. <a href=\\\"{{registerLink}}?{{queryString}}\\\">na początek skorzystaj z bezpłatnej wersji próbnej</a>\",\r\n \"E_404_TITLE\": \"Nie znaleziono pliku\",\r\n \"E_404\": \"Żądany plik nie istnieje\"\r\n },\r\n \"AUDIO\": {\r\n \"NO_SPEECH_TITLE\": \"Brak tekstu mówionego\",\r\n \"NO_SPEECH\": \"Nagranie zostało zatrzymane. Nie słyszeliśmy cię.\",\r\n \"MAX_TIME_EXCEEDED_TITLE\": \"Limit tekstu mówionego\",\r\n \"MAX_TIME_EXCEEDED\": \"Nagranie zostało zatrzymane. Limit tekstu mówionego wynosi {{timeString}}.\",\r\n \"MIC_NOT_ALLOWED_TITLE\": \"Odmowa dostępu do mikrofonu\",\r\n \"MIC_NOT_ALLOWED\": \"Pojawiła się odmowa dostępu do mikrofonu. Zmień uprawnienia w ustawieniach przeglądarki.\",\r\n \"MAX_SIZE_EXCEEDED_TITLE\": \"Limit tekstu mówionego\",\r\n \"MAX_SIZE_EXCEEDED\": \"Nagranie zostało zatrzymane i wysłane do przetwarzania. Limit rozmiaru tekstu mówionego wynosi ({{maxSizeMb}} MB).\",\r\n \"CANT_START_RECORDING_TITLE\": \"Nie można rozpocząć nagrywania\",\r\n \"CANT_START_RECORDING\": \"Nie udało się rozpocząć nagrywania. Spróbuj ponownie.\",\r\n \"NO_TEXT_RECOGNIZED_Title\": \"Nie rozpoznano mowy\",\r\n \"NO_TEXT_RECOGNIZED\": \"Nie można rozpoznać mowy. Sprawdź mikrofon i spróbuj ponownie.\"\r\n }\r\n },\r\n \"ARIA_LABELS\": {\r\n \"CLOSE_BUTTON\": \"Wyczyść\",\r\n \"CLEAR_NOTIFICATION\": \"Zamknij powiadomienie\",\r\n \"CLEAR_SOURCE\": \"Wyczyść wprowadzony tekst\",\r\n \"CLOSE_DIALOG\": \"Zamknij okno dialogowe\",\r\n \"CLEAR_FILES\": \"Wyczyść przesłane pliki\",\r\n \"SHOW_EXTENSIONS\": \"Pokaż inne opcje pobierania\",\r\n \"COPY\": \"Kopiuj do schowka\",\r\n \"OPEN_IN_NEW\": \"Otwórz w nowej karcie\",\r\n \"SWAP_LANGUAGES\": \"Zamień języki\",\r\n \"OTHER_LANGUAGES_TRIGGER\": \"Pokaż inne języki\"\r\n },\r\n \"TOOLTIPS\": {\r\n \"COPY\": \"Kopiuj do schowka\",\r\n \"SWAP_LANGUAGES\": \"Zamień języki\"\r\n },\r\n \"PDF_CONVERSION\": {\r\n \"TITLE_1\": \"Tłumaczenie PDF\",\r\n \"PARAGRAPH_1_1\": \"Kiedy plik .pdf przesyłany do tłumaczenia jest konwertowany na format, który można przetłumaczyć. Obsługiwane są zarówno zeskanowane, jak i natywne pliki .pdf. Tłumaczenia mogą być pobrane w formatach .docx, .tmx lub .pdf i zachowają podstawowe formatowanie. Formatowanie w przetłumaczonych plikach .docx i .pdf może się nieznacznie różnić. \",\r\n \"PARAGRAPH_1_2\": \"Ponieważ konwersja wymaga czasu, aby ją przyspieszyć, podziel swoje pliki .pdf i usuń strony, na których nie ma informacji, które można przetłumaczyć. Na czas przetwarzania wpływają czynniki, takie jak liczba stron, jakość i gęstość tekstu.\",\r\n \"PARAGRAPH_1_3\": \"Aby poprawić wydajność tłumaczenia, zalecamy pobranie przekonwertowanego dokumentu w oryginalnym języku i ręczne poprawienie go przed ponownym przesłaniem do tłumaczenia.\",\r\n \"IMAGE_ALT_1\": \"Przykład pobrania źródłowego pliku PDF\",\r\n\r\n \"TITLE_2\": \"Konwersja PDF\",\r\n \"PARAGRAPH_2_1\": \"Dokument jest analizowany, a jego zawartość dzielona na obszary tekstu, tabeli i obrazu/obrazu tła. Następnie całość jest analizowana w celu określenia, które treści powinny być rozpoznawane jako tekst.\",\r\n \"PARAGRAPH_2_2\": \"Dane tekstowe są pozyskiwane za pomocą OCR, czyli optycznego rozpoznawania znaków. Każdy znak jest rozpoznawany w zależności od jego wizualnej charakterystyki, a następnie składany w słowa i zdania.\",\r\n \"PARAGRAPH_2_3\": \"Na rozpoznawanie ma wpływ wiele czynników, w tym:\",\r\n \"LI_1_1\": \"Jakość zeskanowanego dokumentu (zamazany lub zniekształcony tekst, szumy w obrazie, rozdzielczość obrazu, kontrast itp.) Aby uzyskać najlepszy wynik, pliki .pdf powinny mieć rozdzielczość co najmniej 300 dpi, być symetryczne i pozbawione szumów.\",\r\n \"LI_1_2\": \"Rozmiar czcionki. Rozmiary mniejsze niż 9 punktów mogą być słabo rozpoznawane. \",\r\n \"LI_1_3\": \"Rzadkie i oryginalne czcionki. Mniej popularne czcionki mogą być nierozpoznawalne lub działać gorzej.\",\r\n \"LI_1_4\": \"Złożoność struktury i formatowania dokumentu\",\r\n\r\n \"TITLE_3\": \"Poprawa wydajności tłumaczenia\",\r\n \"PARAGRAPH_3_1\": \"Proces konwersji jest bardzo złożony i mogą na niego wpływać różne błędy wynikające z dokumentu wejściowego. \",\r\n \"PARAGRAPH_3_2\": \"Kwestie, na które należy zwrócić uwagę:\",\r\n \"LI_2_1\": \"Nieprawidłowo rozpoznane słowa.\",\r\n \"LI_2_2\": \"Nieprawidłowe granice wyrazów.\",\r\n \"LI_2_3\": \"Zdania obejmujące wiele kolumn, wierszy lub stron podzielone na różne obiekty tekstowe.\",\r\n \"LI_2_4\": \"Błędnie rozmieszczone stopki i nagłówki stron.\",\r\n \"LI_2_5\": \"Nieprawidłowa numeracja.\",\r\n \"LI_2_6\": \"Tabele rozpoznane jako obrazy tła z zawartością tekstową umieszczoną w różnych obiektach tekstowych.\",\r\n \"LI_2_7\": \"Niektóre wykresy rozpoznane jako obrazy bez zawartości tekstowej.\",\r\n \"LI_2_8\": \"Separatory, obramowania lub inne linie poziome rozpoznawane jako przekreślenie lub podkreślenie tekstu.\",\r\n \"LI_2_9\": \"Formatowanie spisu treści lub podobnych list zawalonych lub rozpoznawanych jako przekreślenie lub podkreślenie tekstu.\",\r\n\r\n \"PARAGRAPH_4_1\": \"<b>Należy pamiętać, że w dokumencie docelowym nie zostaną zachowane wszystkie szczegóły oryginalnego formatowania.</b> Niektóre obrazy, tabele lub diagramy mogą zostać zniekształcone lub uproszczone. Czcionki w przetłumaczonym dokumencie nie będą takie same jak w oryginale, ale mogą być podobne. Rozpoznany może być nieprawidłowy rozmiar czcionki. Specyficzne formatowanie Worda obejmujące działy, spisy treści, nagłówki i stopki, etykiety, formularze itp. będą stylizowane tak, aby wyglądały jak oryginał, ale nie będą całkowicie zgodne z oryginałem (np. tytuły będą pogrubione i zapisane większą czcionką, ale nie będą ustawione jako styl nagłówka).\",\r\n\r\n \"CLOSE\": \"Zamknij okno dialogowe\"\r\n },\r\n \"IMAGE_CONVERSION\": {\r\n \"TITLE_1\": \"Tłumaczenie obrazu\",\r\n \"PARAGRAPH_1_1\": \"Obraz przesyłany do tłumaczenia jest konwertowany na format, który można przetłumaczyć. Tłumaczenia mogą być pobrane w formatach .docx, lub .tmx i zachowają podstawowe formatowanie.\",\r\n \"PARAGRAPH_1_2\": \"<b>Obsługiwane formaty obrazów: </b> jpg,. jpeg,. png i. bmp.\",\r\n \"PARAGRAPH_1_3\": \"Aby poprawić wydajność tłumaczenia, zalecamy pobranie przekonwertowanego dokumentu w oryginalnym języku i ręczne poprawienie go przed ponownym przesłaniem do tłumaczenia.\",\r\n \"IMAGE_ALT_1\": \"Przykład pobierania obrazu źródłowego\",\r\n \"TITLE_2\": \"Konwersja obrazu\",\r\n \"PARAGRAPH_2_1\": \"Obraz jest analizowany, a jego zawartość dzielona na obszary tekstu, tabeli i obrazu/obrazu tła. Następnie całość jest analizowana w celu określenia, które treści powinny być rozpoznawane jako tekst.\",\r\n \"PARAGRAPH_2_2\": \"Dane tekstowe są pozyskiwane za pomocą OCR, czyli optycznego rozpoznawania znaków. Każdy znak jest rozpoznawany w zależności od jego wizualnej charakterystyki, a następnie składany w słowa i zdania.\",\r\n \"PARAGRAPH_2_3\": \"Na rozpoznawanie ma wpływ wiele czynników, w tym:\",\r\n \"LI_1_1\": \"Jakość zeskanowanego obrazu (zamazany lub zniekształcony tekst, szumy w obrazie, rozdzielczość obrazu, kontrast itp.). Aby uzyskać najlepszy wynik, obrazy powinny mieć rozdzielczość co najmniej 300 dpi, być symetryczne i pozbawione szumów.\",\r\n \"LI_1_2\": \"Rozmiar czcionki. Rozmiary mniejsze niż 9 punktów mogą być słabo rozpoznawane. \",\r\n \"LI_1_3\": \"Rzadkie i oryginalne czcionki. Mniej popularne czcionki mogą być nierozpoznawalne lub działać gorzej.\",\r\n \"LI_1_4\": \"Złożoność struktury i formatowania dokumentu.\",\r\n \"TITLE_3\": \"Poprawa wydajności tłumaczenia\",\r\n \"PARAGRAPH_3_1\": \"Proces konwersji jest bardzo złożony i mogą na niego wpływać różne błędy wynikające z dokumentu wejściowego. \",\r\n \"PARAGRAPH_3_2\": \"Kwestie, na które należy zwrócić uwagę:\",\r\n \"LI_2_1\": \"Nieprawidłowo rozpoznane słowa.\",\r\n \"LI_2_2\": \"Nieprawidłowe granice wyrazów.\",\r\n \"LI_2_3\": \"Zdania obejmujące wiele kolumn, wierszy lub stron podzielone na różne obiekty tekstowe.\",\r\n \"LI_2_4\": \"Błędnie rozmieszczone stopki i nagłówki stron.\",\r\n \"LI_2_5\": \"Nieprawidłowa numeracja.\",\r\n \"LI_2_6\": \"Tabele rozpoznane jako obrazy tła z zawartością tekstową umieszczoną w różnych obiektach tekstowych.\",\r\n \"LI_2_7\": \"Niektóre wykresy rozpoznane jako obrazy bez zawartości tekstowej.\",\r\n \"LI_2_8\": \"Separatory, obramowania lub inne linie poziome rozpoznawane jako przekreślenie lub podkreślenie tekstu.\",\r\n \"PARAGRAPH_4_1\": \"<b>Należy pamiętać, że w dokumencie docelowym nie zostaną zachowane wszystkie szczegóły oryginalnego formatowania.</b> Niektóre obrazy, tabele lub diagramy mogą zostać zniekształcone lub uproszczone. Czcionki w przetłumaczonym dokumencie nie będą takie same jak w oryginale, ale mogą być podobne. Rozpoznany może być nieprawidłowy rozmiar czcionki.\",\r\n \"CLOSE\": \"Zamknij okno dialogowe\"\r\n },\r\n \"WEBTRANSLATE\": {\r\n \"BACK\": \"Powrót do translatora\",\r\n \"ADDRESS\": \"Adres\",\r\n \"LOAD_PAGE\": \"Załaduj stronę\",\r\n \"RESTORE\": \"Przywróć\",\r\n \"CANCEL\": \"Anuluj\"\r\n },\r\n \"TERM_COLLECTIONS\": {\r\n \"MT_ENTRY_COUNT\": \"Zaimportowano: {{count}}\",\r\n \"TITLE\": \"Wybieranie, edytowanie i zarządzanie słownikami\",\r\n \"TITLE_EMPTY\": \"Utwórz swój pierwszy słownik\",\r\n \"TITLE_MOBILE\": \"Wybierz słowniki\",\r\n \"DESCRIPTION_1\": \"Wybierz zbiór terminów, która ma być używana w tym projekcie. \",\r\n \"DESCRIPTION_2\": \" Możesz dodać nowe zbiory i edytować istniejące\",\r\n \"DESCRIPTION_2_MOBILE\": \" Użyj wersji komputerowej do tworzenia nowych zbiorów lub edycji istniejących.\",\r\n \"DESCRIPTION_EMPTY\": \"Możesz precyzyjnie skonfigurować sposób, w jaki aplikacja {{appName}} ma przetłumaczyć słowa i frazy specyficzne dla Twojej firmy lub branży, dodając je do unikatowych zbiorów terminów.\",\r\n \"DESCRIPTION_EMPTY_MOBILE\": \"Użyj wersji komputerowej, aby skonfigurować dokładnie sposób, w jaki Tilde MT ma przetłumaczyć słowa i frazy specyficzne dla Twojej firmy lub branży, dodając je do unikatowych zbiorów terminów.\",\r\n \"PROMOTION\": {\r\n \"TITLE\": \"Tworzenie, edytowanie i zarządzanie słownikami\",\r\n \"DESCRIPTION\": \"Członkowie Tilde MT mają dostęp do słowników.\",\r\n \"START_TRIAL\": \"Na początek skorzystaj z bezpłatnego okresu próbnego\",\r\n \"LEARN_MORE\": \"Dowiedz się więcej o słownikach\"\r\n },\r\n \"GLOSSARY\": \"Glosariusz: \",\r\n \"SELECTED_NONE\": \"Brak\",\r\n \"EDIT\": \"Edytuj\",\r\n \"CREATE\": \"Nowy glosariusz\",\r\n \"ENTRY_COUNT\": \"Wpisy: {{count}}\",\r\n \"ENTRY_COUNT_WITH_LANGUGAES\": \"Wpisy: {{count}} [{{languages}}]\",\r\n \"DEFAULT_COLLECTION_NAME\": \"Mój zbiór terminów\",\r\n \"SYNC\": \"Synchronizuj\",\r\n \"SYNC_ERROR\": \"Spróbuj ponownie\",\r\n \"ARIA_LABELS\": {\r\n \"RADIO_GROUP\": \"Wybierz zbiór terminów\",\r\n \"OTHER_COLLECTIONS\": \"Otwórz menu zbioru\"\r\n },\r\n \"CREATE_DIALOG\": {\r\n \"CANCEL\": \"Anuluj\",\r\n \"COLLECTION_NAME_LABEL\": \"Nazwa zbioru terminów\",\r\n \"CREATE\": \"Utwórz\",\r\n \"DESCRIPTION_1\": \"Po nazwaniu swojego zbioru terminów nastąpi przekierowanie do Tilde Term, aby dodać nowe terminy. Po wykonaniu tej czynności wróć do Tilde MT, aby używać ich w swoich projektach tłumaczeniowych.\",\r\n \"DESCRIPTION_2\": \"<i>* SI nie jest idealna i mogą występować błędy. Twoje unikalne terminy będą używane prawidłowo z dokładnością na poziomie 95%.</i>\",\r\n \"TITLE\": \"Utwórz nowy glosariusz\",\r\n \"COLLECTION_NAME_ERROR\": \"Tytuł powinien mieć minimalną liczbę symboli wynoszącą {{minLength}} oraz nie większą niż {{maxLength}}\"\r\n },\r\n \"TOOLTIPS\": {\r\n \"MT_ENTRY_COUNT\": \"Liczba wpisów używanych do tłumaczenia maszynowego\",\r\n \"EDIT\": \"Nastąpi przekierowanie do portalu z terminologią, który otworzy się w nowej zakładce\",\r\n \"ENTRY_COUNT\": \"Liczba wpisów dodana w zbiorze terminów\",\r\n \"IMPORTING\": \"Zbiór terminów jest importowany i do momentu zakończenia importu nie można z niego korzystać.\",\r\n \"NO_ENTRIES\": \"Nie można korzystać ze zbioru terminów, ponieważ dla języka źródłowego nie ma terminów\",\r\n \"SYNC\": \"Zaktualizuj zbiór terminów\",\r\n \"SYNCING\": \"Zbiór terminów jest synchronizowany i zostanie użyta ostatnia zsynchronizowana wersja zbioru\",\r\n \"ATTACH_TO_SYSTEM_ERROR\": \"Wystąpił błąd podczas importowania zbioru terminów\"\r\n }\r\n },\r\n \"DOMAINS\": {\r\n \"OPEN_LIST_ARIA_LABEL\": \"Otwórz listę domen\",\r\n \"TITLE\": \"Domena:\",\r\n \"GENERAL\": \"Ogólne\",\r\n \"AUTO\": \"Automatyczne wykrywanie\",\r\n \"LAW\": \"Prawo\",\r\n \"DYNAMIC_LEARNING\": \"Dynamiczne uczenie się\",\r\n \"BUSINESS\": \"Biznes\"\r\n },\r\n \"GRAMMAR_CHECK_MENU\": {\r\n \"TITLE\": \"Rozważ zmianę na:\"\r\n },\r\n \"AUDIO\": {\r\n \"CANCEL\": \"Anuluj\",\r\n \"DESCRIBE_STATE_RECORDING\": \"Zacznij nagrywać mowę…\",\r\n \"DESCRIBE_STATE_PROCESSING\": \"Trwa przetwarzanie…\",\r\n \"MIC_NOT_FOUND\": \"Nie znaleziono mikrofonu\",\r\n \"STOP\": \"Zatrzymaj nagrywanie\",\r\n \"START\": \"Tłumacz mowę\",\r\n \"PUNCTUATION_MESSAGE_TITLE\": \"Dodaj interpunkcję\",\r\n \"PUNCTUATION_MESSAGE\": \"Dodaj interpunkcję do rozpoznanego tekstu. Długi tekst bez interpunkcji może mieć niższą jakość tłumaczenia lub nie zostać przetłumaczony\"\r\n },\r\n \"EXTENSION_POPUP\": {\r\n \"OPEN\": \"zobacz wszystkie obsługiwane formaty\",\r\n \"TITLE\": \"Obsługiwane formaty plików\",\r\n \"DESCRIPTION\": \"Konieczne jest kodowanie UTF-8 lub UTF-16 w celu zapewnienia prawidłowego tłumaczenia pliku\",\r\n \"OFFICE\": \"Office\",\r\n \"SCANNED\": \"Zeskanowane pliki\",\r\n \"INTERCHANGE\": \"Formaty wymiany\",\r\n \"WEB\": \"Sieć Web\",\r\n \"OTHER\": \"Inne\"\r\n },\r\n \"FILE_UPLOAD\": {\r\n \"UPLOAD\": \"Wybierz\",\r\n \"DRAG_AND_DROP\": \"lub przeciągnij i upuść \",\r\n \"FILE\": \"plik\",\r\n \"FILES\": \"pliki\",\r\n \"LIMITS\": \" ({{visibleExtensions}}. Maks. {{maxSizeMB}} MB)\"\r\n },\r\n \"TEXT_TO_SPEECH\": {\r\n \"PLAY\": \"Słuchaj\"\r\n }\r\n}\r\n","\r\nexport const i18n_sv = {\r\n \"APP_NAME\": \"Tilde MT\",\r\n \"TLD_TRANSLATE\": {\r\n \"PDF_PAGE_LIMIT_MSG\": \"I pdf-filer kommer endast den första sidan att översättas. Översättning av ett helt dokument stöds för registrerade användare, begär åtkomst <a href=\\\"{{registerLink}}\\\">här</a>.\",\r\n \"SOURCE_TOOLTIP_ONLY_TEXT\": \"Skriv in texten du vill översätta.\",\r\n \"REGISTERED_FORMATS_LOGGED_IN\": \"Registrerade användare har tillgång till översättning av följande dokumentformat: {{formats}}.\",\r\n \"REGISTERED_FORMATS\": \"Registrerade användare har tillgång till översättning av följande dokumentformat: {{formats}}. Begär åtkomst <a class=\\\"accent-color\\\" target=\\\"blank\\\" href=\\\"{{registerLink}}\\\">här</a>.\",\r\n \"SOURCE_FORMATS\": \"Säker offentlig översättningstjänst stöder följande dokumentformat: {{formats}};\",\r\n \"BEST_NMT\": \"Stolt vinnare av tävlingen WMT Competition för bästa maskinöversättningsteknik tre år i rad.\",\r\n \"BEST_NMT_MORE\": \"Läs mer\",\r\n \"CANCEL_TRANSLATION\": \"Avbryt\",\r\n \"DICTIONARY_EXAMPLES\": \"exempel\",\r\n \"DOC_WORD_CNT_LIMIT_MSG\": \"Du har överskridit antalet gratis översättningsord ({{wordCount}} ord) Registrera dig som användare för att kunna översätta ett helt dokument. <a href=\\\"{{registerLink}}\\\">Begär användarrättigheter</a>\",\r\n \"DOWNLOAD_TRANSLATED\": \"Ladda ned\",\r\n \"DOMAINS_ARIA_LABEL\": \"Ämnesområden\",\r\n \"ERROR_NO_SYSTEMS_LOADED\": \"Inget system kunde laddas.\",\r\n \"FILE_DOWNLOAD_SOURCE\": \"Ladda ned konverterad källtext\",\r\n \"FILE_TANSLATION_STATUSS_INITIALIZING\": \"Förbereds\",\r\n \"FILE_TANSLATION_STATUSS_EXTRACTING\": \"Extraheras\",\r\n \"FILE_TANSLATION_STATUSS_WAITING\": \"Väntar\",\r\n \"FILE_TANSLATION_STATUSS_TRANSLATING\": \"Översätts\",\r\n \"FILE_TANSLATION_STATUSS_SAVING\": \"Sparas\",\r\n \"FILE_TANSLATION_STATUSS_COMPLETED\": \"Klar\",\r\n \"FILE_TANSLATION_STATUSS_ERROR\": \"Fel\",\r\n \"FILE_TANSLATION_STATUSS_QUEUING\": \"I kö\",\r\n \"FILE_TARGET_PREVIEW_MESSAGE\": \"Detta är en förhandsvisning av det översatta dokumentet. Ladda ned hela översättningen.\",\r\n \"FROM\": \"Från:\",\r\n \"PDF_DISCLAIMER_LINK\": \"Läs om konvertering av pdf-dokument.\",\r\n \"PREPARING_TRANSLATION\": \"Förbereder översättning\",\r\n \"SOURCE_WORD_LIMIT\": \" Översättningsmängden är begränsad till {{limit}} ord.\",\r\n \"SOURCE_TOOLTIP\": \"Fyll i text eller adressen till en webbsida som du vill översätta.\",\r\n \"SOURCE_TOOLTIP_SENSITIVE_INFO\": \"Använd inte {{appName}} för att översätta texter som innehåller sekretessbelagd eller säkerhetsklassificerad information eller särskilda kategorier av personuppgifter (t.ex. hälsouppgifter).\",\r\n \"TARGET_DESCRIPTION\": \"En maskinöversättning kan göra det möjligt att förstå en källtexts innehåll, men den kan inte ersätta en översättning gjord av en människa.\",\r\n \"TO\": \"Till:\",\r\n \"TEXT_COPIED\": \"Översättningen kopierad\",\r\n \"SUGGEST_BUTTON\": \"Föreslå översättning\",\r\n \"SUGGEST_ORIGINAL_LABEL\": \"Ursprunglig mening\",\r\n \"SUGGEST_SUBMIT_BUTTON\": \"Sänd\",\r\n \"SUGGEST_TRANSLATION_LABEL\": \"Översättning\",\r\n \"SUGGEST_USAGE_INFO\": \"Ditt anonyma översättningsförslag används för att förbättra maskinöversättningarnas kvalitet.\",\r\n \"TOOLTIP_ACTION\": \"Översätt\",\r\n \"UPLOAD_FILE_BUTTON\": \"Ladda upp eller dra fil hit\",\r\n \"UPLOAD_FILES_BUTTON\": \"Ladda upp eller dra filer hit\",\r\n \"VENDORS_ARIA_LABEL\": \"Tjänsteleverantörer\",\r\n \"WORD_TYPE_ADJECTIVE\": \"adjektiv\",\r\n \"WORD_TYPE_NOUN\": \"substantiv\",\r\n \"WORD_TYPE_VERB\": \"verb\",\r\n \"WORD_TYPE_ADVERB\": \"adverb\",\r\n \"WORD_TYPE_CONJUNCTION\": \"konjunktion\",\r\n \"WORD_TYPE_INTERJECTION\": \"interjektion\",\r\n \"WORD_TYPE_PRONOUN\": \"pronomen\"\r\n },\r\n \"MULTIPLE_FILES\": {\r\n \"APPEND\": \"Lägg till filer\",\r\n \"CLEAR_ALL\": \"Avbryt\",\r\n \"DOWNLOAD\": \"Ladda ned\",\r\n \"STATUSS_INITIALIZING\": \"Förbereds\",\r\n \"STATUSS_EXTRACTING\": \"Extraheras\",\r\n \"STATUSS_WAITING\": \"Väntar\",\r\n \"STATUSS_TRANSLATING\": \"Översätts\",\r\n \"STATUSS_SAVING\": \"Sparas\",\r\n \"STATUSS_COMPLETED\": \"Klar\",\r\n \"STATUSS_ERROR\": \"Fel\",\r\n \"STATUSS_QUEUING\": \"I kö\",\r\n \"STATUSS_NOT_STARTED\": \"Uppladdad\",\r\n \"TITLE_FILE_NAME\": \"Fil\",\r\n \"TITLE_STATUSS\": \"Status\",\r\n \"TRANSLATION_STATUSS_LABEL\": \"Status\",\r\n \"PDF_DISCLAIMER\": \"Konverteringen av pdf-dokument kan orsaka formateringsfel eller förvrängning av texten. När texten är översatt, välj ”Ladda ned konverterad källtext” i menyn, kontrollera texten och korrigera eventuella fel innan du laddar upp texten på nytt för översättning.\",\r\n \"PDF_DISCLAIMER_LINK\": \"Läs mer om konvertering av pdf-dokument.\",\r\n \"SCREEN_READER_ANNOUNCEMENT\": \"{{translated}} av {{total}} filer har översatts.\"\r\n },\r\n \"ERRORS\": {\r\n \"ERROR_DEFAULT\": \"Ett oväntat fel inträffade. Försök på nytt.\",\r\n \"ERROR_DEFAULT_SUPPORT\": \" Om problemet kvarstår, kontakta <a href=\\\"mailto:{{email}}\\\"><strong>supporten</strong></a>.\",\r\n \"MAX_CHAR_LENGTH\": \"Du har lagt till {{totalSymbols}} tecken, men det högsta tillåtna teckenantalet är {{maxCharLength}}. Din text förkortas.\",\r\n \"FILE_ALREADY_ADDED\": \"En fil med namnet {{fileName}} har redan lagts till.\",\r\n \"UANUTHORIZED_401\": \"Du saknar rättigheter att använda maskinöversättningsverktyget.\",\r\n \"UANUTHORIZED_401_SUPPORT\": \" Kontakta <a href=\\\"mailto:{{email}}\\\"><strong>supporten</strong></a>.\",\r\n \"E_UNKNOWN_FILE_TYPE\": \"Okänt filformat.\",\r\n \"E_CANNOT_READ_FILE\": \"Filen kunde inte läsas. Filen kan vara skadad.\",\r\n \"E_FAILED_IN_TRANSLATION\": \"Det uppstod ett fel under översättningen.\",\r\n \"E_FORMAT_TRACK_CHANGES\": \"Översättningen misslyckades, eftersom spåra ändringar-funktionen var påkopplad. Alla ändringar måste först godkännas.\",\r\n \"E_UNKNOWN_ERROR\": \"Ett okänt fel uppstod.\",\r\n \"E_UNAUTHORIZED\": \"Översättningen av dokumentet hindrades.\",\r\n \"COLLECTION_CREATE\": \"Det gick inte att skapa en ny termbank. Försök igen.\",\r\n \"COLLECTION_CREATE_SUPPORT\": \" Kontakta <a href=\\\"mailto:{{email}}\\\"><strong>support</strong></a> om problemet kvarstår.\",\r\n \"COLLECTION_IMPORT\": \"Det gick inte att bifoga termbanken med id: {{termId}}.\",\r\n \"E_11\": \"Daglig översättningsgräns har nåtts.\",\r\n \"E_11_SUPPORT\": \" För att höja den dagliga gränsen, kontakta <a href=\\\"mailto:{{email}}\\\"><strong>support</strong></a>.\",\r\n \"E_12\": \"Maximal textmängd har uppnåtts. Skicka kortare text i en förfrågan.\",\r\n \"E_12_SUPPORT\": \" Om du vill höja gränsen för textmängden kontaktar du <a href=\\\"mailto:{{email}}\\\"><strong>support</strong></a>.\",\r\n \"E_21\": \"Systemet startar. Du kommer att kunna översätta alldeles strax.\",\r\n \"E_22\": \"Översättningssystem hittades inte.\",\r\n \"E_22_SUPPORT\": \" Kontakta <a href=\\\"mailto:{{email}}\\\"><strong>support</strong></a>.\",\r\n \"E_23\": \"Systemet har inte startats.\",\r\n \"E_23_SUPPORT\": \" Starta systemet för att översätta eller kontakta <a href=\\\"mailto:{{email}}\\\"><strong>support</strong></a>.\",\r\n \"E_41\": \"Okänt termbank-ID har angetts.\",\r\n \"E_41_SUPPORT\": \" Ange det termbank-ID som tillhör systemet eller kontakta <a href=\\\"mailto:{{email}}\\\"><strong>support</strong></a>.\",\r\n \"FILE_UPLOAD\": {\r\n \"FILE_UPLOAD_EMPTY\": \"Filen \\\"{{fileName}}” är tom. Välj en fil som inte är tom.\",\r\n \"FILE_UPLOAD_MAX_SIZE\": \"Filen \\\"{{fileName}}” är för stor. Den maximala filstorleken är {{maxSizeMB}}.\",\r\n \"FILE_UPLOAD_UNSUPPORTED_FORMAT\": \"Filformatet för filen \\\"{{fileName}}” kunde inte identifieras. Översättningsverktyget stöder följande filformat: {{formats}}.\"\r\n }\r\n },\r\n \"RATING\": {},\r\n \"LANGUAGES\": {\r\n \"AR\": \"Arabiska\",\r\n \"BE\": \"Belarusiska\",\r\n \"BG\": \"Bulgariska\",\r\n \"CS\": \"Tjeckiska\",\r\n \"DA\": \"Danska\",\r\n \"DE\": \"Tyska\",\r\n \"EL\": \"Grekiska\",\r\n \"EN\": \"Engelska\",\r\n \"ES\": \"Spanska\",\r\n \"ET\": \"Estniska\",\r\n \"FI\": \"Finska\",\r\n \"FR\": \"Franska\",\r\n \"GA\": \"Iriska\",\r\n \"HR\": \"Kroatiska\",\r\n \"HU\": \"Ungerska\",\r\n \"IS\": \"Isländska\",\r\n \"IT\": \"Italienska\",\r\n \"JA\": \"Japanska\",\r\n \"KA\": \"Georgiska\",\r\n \"KO\": \"Koreanska\",\r\n \"LT\": \"Litauiska\",\r\n \"LV\": \"Lettiska\",\r\n \"MO\": \"Moldaviska\",\r\n \"MT\": \"Maltesiska\",\r\n \"NB\": \"Norska\",\r\n \"NL\": \"Nederländska\",\r\n \"PL\": \"Polska\",\r\n \"PT\": \"Portugisiska\",\r\n \"RO\": \"Rumänska\",\r\n \"RU\": \"Ryska\",\r\n \"SK\": \"Slovakiska\",\r\n \"SR\": \"Serbiska\",\r\n \"SL\": \"Slovenska\",\r\n \"SV\": \"Svenska\",\r\n \"TR\": \"Turkiska\",\r\n \"UK\": \"Ukrainska\",\r\n \"ZH\": \"Kinesiska\"\r\n },\r\n \"ARIA_LABELS\": {\r\n \"CLOSE_BUTTON\": \"Stäng\",\r\n \"CLEAR_NOTIFICATION\": \"Stäng\",\r\n \"CLEAR_SOURCE\": \"Rensa text\",\r\n \"CLOSE_DIALOG\": \"Stäng\",\r\n \"CLEAR_FILES\": \"Rensa filer\",\r\n \"SHOW_EXTENSIONS\": \"Visa andra nedladdningsalternativ\"\r\n },\r\n \"TOOLTIPS\": {\r\n \"COPY\": \"Kopiera till urklipp\",\r\n \"SWAP_LANGUAGES\": \"Byt språkriktning\"\r\n },\r\n \"PDF_CONVERSION\": {\r\n \"TITLE_1\": \"Översättning av pdf-dokument\",\r\n \"PARAGRAPH_1_1\": \"När en pdf-fil laddas upp för att översättas, konverteras den först till ett format som själva översättningsverktyget kan hantera. Både pdf-filer med skannad text och vanliga textdokument sparade i pdf-format kan konverteras. Den färdiga översättningen kan laddas ned i docx-, tmx- eller pdf-format och bevarar grundläggande formatering. Formateringen kan skilja sig lite mellan docx- och pdf-filer. \",\r\n \"PARAGRAPH_1_2\": \"Konverteringen av pdf-filerna går snabbare, om du delar upp filerna i mindre delar och tar bort sidor som inte behöver översättas. Antalet sidor samt textens kvalitet och täthet inverkar på hur lång tid det tar.\",\r\n \"PARAGRAPH_1_3\": \"För att maskinöversättningen ska bli så bra som möjligt rekommenderar vi att du efter konverteringen laddar ned den konverterade källtexten, korrigerar texten manuellt och sedan laddar upp det korrigerade dokumentet för att översättas.\",\r\n \"IMAGE_ALT_1\": \"Exempel på nedladdning av konverterad källtext\",\r\n \"TITLE_2\": \"Konvertering av pdf-fil\",\r\n \"PARAGRAPH_2_1\": \"Dokumentet analyseras och dess innehåll delas upp i text, tabeller och bilder/bakgrundsbild. Dessa analyseras närmare för att bestämma vilken del av innehållet som ska kännas igen som text.\",\r\n \"PARAGRAPH_2_2\": \"Texten läses med hjälp av optisk teckenigenkänning (OCR). Varje tecken känns igen utifrån dess visuella egenskaper, och tecknen sätts sedan samman till ord och meningar.\",\r\n \"PARAGRAPH_2_3\": \"Igenkänningen påverkas av många faktorer, bland annat följande:\",\r\n \"LI_1_1\": \"Ett skannat dokuments kvalitet (otydlig eller deformerad text, brus, resolution, kontrast osv.) För bästa möjliga resultat ska pdf-dokument ha en resolution på minst 300 dpi samt vara raka och brusfria.\",\r\n \"LI_1_2\": \"Teckenstorlek. Igenkänningen fungerar sämre, om teckenstorleken är mindre än 9. \",\r\n \"LI_1_3\": \"Ovanliga och säregna teckensnitt. Med mindre vanliga teckensnitt kan teckenigenkänningen fungera sämre eller inte alls.\",\r\n \"LI_1_4\": \"Hur komplex dokumentets struktur och formatering är.\",\r\n \"TITLE_3\": \"Att notera för bättre översättningsresultat\",\r\n \"PARAGRAPH_3_1\": \"Konverteringsprocessen är mycket komplex, och den kan påverkas av olika slags fel i det ursprungliga dokumentet. \",\r\n \"PARAGRAPH_3_2\": \"Möjliga fel som kan uppkomma under processen:\",\r\n \"LI_2_1\": \"Ord identifieras på ett felaktigt sätt.\",\r\n \"LI_2_2\": \"Gränserna mellan ord blir felaktiga.\",\r\n \"LI_2_3\": \"Meningar sträcker sig över flera kolumner, eller rader och sidor delas upp i olika textobjekt.\",\r\n \"LI_2_4\": \"Sidhuvuden och sidfötter blir felplacerade.\",\r\n \"LI_2_5\": \"Numreringen blir felaktig.\",\r\n \"LI_2_6\": \"Textinnehåll i tabeller som har identifierats som bakgrundsbilder placeras i olika textobjekt.\",\r\n \"LI_2_7\": \"Vissa diagram identifieras som bilder utan textinnehåll.\",\r\n \"LI_2_8\": \"Avgränsare, kanter eller andra vågräta linjer identifieras som överstruken eller understruken text.\",\r\n \"LI_2_9\": \"Innehållsförteckningar eller andra förteckningar krymps ihop eller identifieras som överstruken eller understruken text.\",\r\n \"PARAGRAPH_4_1\": \"<b>Notera att det konverterade dokumentet inte helt och hållet behåller sin ursprungliga formatering.</b> Bilder, tabeller eller figurer kan förvrängas eller förenklas. Teckensnittet i översättningen är inte detsamma som i det ursprungliga dokumentet, men det kan vara likartat. Teckenstorleken kan ändras. Vissa formateringar i Word, såsom rubriker, innehållsförteckningar, sidhuvuden och sidfötter, symboler, blanketter osv. formateras så att de ser ut som i det ursprungliga dokumentet, men inte helt motsvarar den ursprungliga formateringen (till exempel rubriker är skrivna med fet stil och större teckenstorlek, men inte med särskilt rubrikformat).\",\r\n \"CLOSE\": \"Stäng \"\r\n },\r\n \"WEBTRANSLATE\": {\r\n \"BACK\": \"Återgå till maskinöversättaren\",\r\n \"ADDRESS\": \"Adress\",\r\n \"LOAD_PAGE\": \"Ladda sidan\",\r\n \"RESTORE\": \"Återställ\",\r\n \"CANCEL\": \"Avbryt\",\r\n \"ORIGINAL\": \"Original\",\r\n \"CLOSE\": \"Stäng\"\r\n },\r\n \"TERM_COLLECTIONS\": {\r\n \"TITLE\": \"Hantera ordlistor\",\r\n \"TITLE_EMPTY\": \"Skapa ordlistor\",\r\n \"DESCRIPTION_1\": \"Välj vilken termbank som ska användas för detta översättningsprojekt. \",\r\n \"DESCRIPTION_2\": \"Du kan också redigera befintliga termbanker och lägga till nya.\",\r\n \"GLOSSARY\": \"Ordlista: \",\r\n \"SELECTED_NONE\": \"Ingen\",\r\n \"EDIT\": \"Redigera\",\r\n \"CREATE\": \"Ny ordlista\",\r\n \"DESCRIPTION_EMPTY\": \"Du kan skapa unika termbanker för varje domän och projekt för att definiera hur specifika ord och fraser översätts.\",\r\n \"DESCRIPTION_EMPTY_MOBILE\": \"Använd skrivbordsversionen för att skapa unika termbanker för varje domän och projekt för att definiera hur specifika ord och fraser översätts. När du är klar kommer du att kunna använda dem i dina översättningsprojekt.\",\r\n \"ENTRY_COUNT\": \"Poster: {{count}}\",\r\n \"ENTRY_COUNT_WITH_LANGUGAES\": \"Poster: {{count}} [{{languages}}]\",\r\n \"DEFAULT_COLLECTION_NAME\": \"Min termbank\",\r\n \"SYNC\": \"Synkronisera\",\r\n \"SYNC_ERROR\": \"Försök igen\",\r\n \"ARIA_LABELS\": {\r\n \"RADIO_GROUP\": \"Välj termbank\",\r\n \"OTHER_COLLECTIONS\": \"Öppna termbanksmenyn\"\r\n },\r\n \"CREATE_DIALOG\": {\r\n \"CANCEL\": \"Avbryt\",\r\n \"COLLECTION_NAME_LABEL\": \"Termbankens namn\",\r\n \"CREATE\": \"Skapa\",\r\n \"DESCRIPTION_1\": \"Efter att ha namngett din termbank kommer du att omdirigeras till Tilde Term för att lägga till nya termer. När du är klar, återvänd till Tilde MT för att använda dem i dina översättningsprojekt.\",\r\n \"DESCRIPTION_2\": \"<i>*AI är inte perfekt och det kan förekomma enstaka misstag. Dina unika termer kommer att användas korrekt med 95 % noggrannhet.</i>\",\r\n \"TITLE\": \"Skapa ny ordlista\",\r\n \"COLLECTION_NAME_ERROR\": \"Titeln bör vara minst {{minLength}} tecken lång och får inte vara längre än {{maxLength}} tecken\"\r\n },\r\n \"TOOLTIPS\": {\r\n \"EDIT\": \"Du kommer att omdirigeras till terminologiportalen som kommer att öppnas i en ny flik\",\r\n \"ENTRY_COUNT\": \"Antal poster som lagts till i termbanken\",\r\n \"IMPORTING\": \"Termbanken importeras och kommer inte att användas förrän importen är klar.\",\r\n \"NO_ENTRIES\": \"Termbanken kan inte användas eftersom det inte finns några termer för källspråket\",\r\n \"SYNC\": \"Uppdatera termbank\",\r\n \"SYNCING\": \"Termbanken synkroniseras och den senaste synkroniserade versionen av banken kommer att användas\",\r\n \"ATTACH_TO_SYSTEM_ERROR\": \"Det uppstod ett fel vid importering av termbanken\"\r\n }\r\n },\r\n \"DOMAINS\": {\r\n \"LAW\": \"Juridik\",\r\n \"DYNAMIC_LEARNING\": \"Dynamiskt lärande\",\r\n \"BUSINESS\": \"Näringsliv\",\r\n \"GENERAL\": \"Allmänt\"\r\n }\r\n}\r\n","import { i18n_de } from './de';\r\nimport { i18n_en } from './en';\r\nimport { i18n_et } from './et';\r\nimport { i18n_fi } from './fi';\r\nimport { i18n_lt } from './lt';\r\nimport { i18n_lv } from './lv';\r\nimport { IAvailableLanguages } from './models/available-languages.model';\r\nimport { i18n_pl } from './pl';\r\nimport { i18n_sv } from './sv';\r\n\r\nexport const availableLanguages: IAvailableLanguages = {\r\n \"de\": i18n_de,\r\n \"en\": i18n_en,\r\n \"et\": i18n_et,\r\n \"fi\": i18n_fi,\r\n \"lv\": i18n_lv,\r\n \"lt\": i18n_lt,\r\n \"pl\": i18n_pl,\r\n \"sv\": i18n_sv\r\n}\r\n","export const FILE_TYPE_WORD = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M21.128 2.75H7.872C7.3905 2.75 7 3.10796 7 3.54933V6.87637H22V3.54933C22 3.10796 21.6095 2.75 21.128 2.75Z\" fill=\"#2D92D4\"/>\r\n<path d=\"M7 15.1499V18.4508C7 18.8922 7.3905 19.2502 7.8715 19.2502H21.128C21.6095 19.2502 22 18.8922 22 18.4508V15.1499H7Z\" fill=\"#2150A9\"/>\r\n<path d=\"M7 6.87646H22V11.0024H7V6.87646Z\" fill=\"#2D83D4\"/>\r\n<path d=\"M7 11.0024H22V15.1504H7V11.0024Z\" fill=\"#2E70C9\"/>\r\n<path d=\"M11.1595 15.5832H2.8405C2.3765 15.5832 2 15.238 2 14.8127V7.18696C2 6.76163 2.3765 6.4165 2.8405 6.4165H11.1595C11.6235 6.4165 12 6.76163 12 7.18696V14.8127C12 15.238 11.6235 15.5832 11.1595 15.5832Z\" fill=\"#00488D\"/>\r\n<path d=\"M9.20131 8.7085L8.42831 12.0378L7.57181 8.7085H6.47831L5.59481 12.141L4.79831 8.7085H3.82031L4.99231 13.2918H6.16831L7.02481 9.7677L7.88181 13.2918H9.00731L10.1793 8.7085H9.20131Z\" fill=\"white\"/>\r\n</svg>\r\n`;","export const FILE_TYPE_WEB = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M8 15H16V17H8V15ZM8 11H16V13H8V11ZM14 1H6C4.9 1 4 1.9 4 3V19C4 20.1 4.89 21 5.99 21H18C19.1 21 20 20.1 20 19V7L14 1ZM18 19H6V3H13V8H18V19Z\" fill=\"#DF9BA4\"/>\r\n</svg>\r\n`;","export const FILE_TYPE_SCANNED = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M8 15H16V17H8V15ZM8 11H16V13H8V11ZM14 1H6C4.9 1 4 1.9 4 3V19C4 20.1 4.89 21 5.99 21H18C19.1 21 20 20.1 20 19V7L14 1ZM18 19H6V3H13V8H18V19Z\" fill=\"#245A30\"/>\r\n</svg>\r\n`;\r\n","export const FILE_TYPE_POWERPOINT = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M4 11C4 15.5563 8.0295 19.25 13 19.25C17.9705 19.25 22 15.5563 22 11H13H4Z\" fill=\"#DC4C2C\"/>\r\n<path d=\"M13 2.75V11H22C22 6.44371 17.9705 2.75 13 2.75Z\" fill=\"#F7A278\"/>\r\n<path d=\"M13 2.75C8.0295 2.75 4 6.44371 4 11H13V2.75Z\" fill=\"#C06346\"/>\r\n<path d=\"M11.1595 15.5832H2.8405C2.3765 15.5832 2 15.238 2 14.8127V7.18696C2 6.76163 2.3765 6.4165 2.8405 6.4165H11.1595C11.6235 6.4165 12 6.76163 12 7.18696V14.8127C12 15.238 11.6235 15.5832 11.1595 15.5832Z\" fill=\"#9B341F\"/>\r\n<path d=\"M7.3365 8.71387H5V13.2972H6.012V11.6834H7.15C8.088 11.6834 8.8485 10.9863 8.8485 10.1265V10.0999C8.8485 9.33445 8.1715 8.71387 7.3365 8.71387ZM7.785 10.2475C7.785 10.6412 7.4365 10.9606 7.007 10.9606H6.012V9.43666H7.007C7.4365 9.43666 7.785 9.75612 7.785 10.1498V10.2475Z\" fill=\"white\"/>\r\n</svg>\r\n`;","export const FILE_TYPE_PDF = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n<rect x=\"4\" y=\"1\" width=\"16.2822\" height=\"20\" fill=\"url(#pattern0)\"/>\r\n<defs>\r\n<pattern id=\"pattern0\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\r\n<use xlink:href=\"#image0_1791_18185\" transform=\"scale(0.000833333 0.000678426)\"/>\r\n</pattern>\r\n<image id=\"image0_1791_18185\" width=\"1200\" height=\"1474\" xlink:href=\"data:image/png;base64,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ffZ/fq9///6x7LLLxiqrrBKrrrpqrLrqqh9fOgYdoa2tLUaPHh2jR4+OBx988ONf79u3byy33HKx3HLLxfLLLx9rrbVWLLzwwgoGADAHAiwAGs6/d8888cQTERGRy+ViyJAhseaaa8Z6660Xa6+9tnOO6BRTp06Np59+Op5++umPf23xxRePddZZJ9Zdd91Ye+21o2/fvgoFAPAJAiwAGl61Wo2RI0fGyJEj45ZbbolisRirrrpqbLjhhrHlllvGoosuqkh0mnfeeSfeeeeduP322yOXy8Wyyy4ba6+9dmy22WaxyiqrRJIkigQANDwBFgB8QqlUimeeeSaeeeaZuOCCC2K11VaLrbbaKrbcckvnZ9GpqtVqvPrqq/Hqq6/Gb37zmxg4cGBsuummsfnmm8dqq60mzAIAGpYACwA+Q5qm8dxzz8Vzzz0X55xzTmy55Zbxne98J5ZaainFodONGzcubrrpprjpppti0KBBseWWW8Z2220XSy+9tOIAAA0lpwQAMHdKpVLce++98bWvfS2OPfbYePXVVxWFLjN27Ni4/vrr4xvf+Ebsvffecc8990SlUlEYAKAhCLAA4HOqVqvxwAMPxN577x0//elPY9KkSYpCl3rllVfipJNOiq985Stx+eWXx5QpUxQFAKhrAiwAmEdpmsa9994bu+++e9x4441RLpcVhS41ceLEuOKKK+IrX/lKnH766TF+/HhFAQDqkgALAObTRx99FOecc07sv//+8dZbbykIXa6trS1uu+222GWXXeK0006LyZMnKwoAUFcEWADQQV5++eXYe++94/bbb1cMukWpVIrbb789dtlll7jgggti+vTpigIA1AUBFgB0oOnTp8dpp50WJ554YrS1tSkI3bYOr7/++thjjz3i3nvvVRAAoOYJsACgE/zxj3+Mgw8+2KVcdKsJEybET3/60zj44INd3goA1DQBFgB0khdffDH23XffePPNNxWDbvXMM8/Et771rbj++uujWq0qCABQcwRYANCJ3n333TjggANi+PDhikG3am1tjQsuuCAOOOCAGDlypIIAADVFgAUAnWzq1Klx2GGHxUsvvaQYdLvhw4fHPvvs48sGAICaIsACgC4wbdq0OPTQQ+PVV19VDLpdW1tbnHbaafHTn/40WltbFQQAyDwBFgB0kY8++igOP/zwGD16tGKQCffee28ccMAB8fbbbysGAJBpAiwA6EKTJ0+OI444wrcTkhmvvfZa7L333vHII48oBgCQWQIsAOhiY8eOjWOOOSba29sVg0yYNm1aHH300XHDDTcoBgCQSQIsAOgGzz//fJx++ukKQWakaRrnnntuXHDBBYoBAGSOAAsAusndd98dN910k0KQKddff32cfPLJUalUFAMAyAwBFgB0o/POOy9eeuklhSBT7r777vjRj34UbW1tigEAZIIACwC6UblcjpNOOilaW1sVg0x55JFH4qijjnJWGwCQCQIsAOhmo0ePdu4QmfTUU0/FCSecENVqVTEAgG4lwAKADLjlllvi0UcfVQgy58EHH4xf/OIXCgEAdCsBFgBkQJqmccYZZ8T06dMVg8y59dZb46KLLlIIAKDbFJQAgDnZZZddYu211+7Q2yyVSv9z7tO0adOiWq3Ghx9+GB988MGn/j1x4sS6P1B63LhxcdVVV8X3vvc9i47Mufbaa6OlpSW+8Y1vKAYA0OUEWADM0YorrhhbbLFFt44hTdOYOHFijBkzJt59990YM2ZMjB49Op5//vl4//3366bWN954Y+ywww4xdOhQC28u9OrVK44//vgOua22trZob2//n/D0/fffjwkTJsT48ePrap3Nq/PPPz+GDh0aG2ywgcXXzfbdd99YccUVFaKTrLDCCooAkDECLABqQpIkMWDAgBgwYECsscYa//N7b731Vvzzn/+Mv//97/HXv/41Pvzww5qdZ7lcjjPPPDMuuuiiSJJE4+f0RqZQ6LJwtb29PUaPHh2jRo2KkSNHxmuvvRYvvvhiTJ06tWHqXa1W4yc/+Ulcc801scQSS1iA3WiVVVaJDTfcUCEAaJz3fUoAQK0bPHhwDB48OHbYYYcolUrxyCOPxHXXXRevvPJKTc7nmWeeiQcffDA233xzzc2QpqamWG655WK55Zb7n1//d4D65JNPxpNPPhlTpkyp6zp8+OGHccwxx8QVV1wRPXv2tDAAgC7hEHcA6kqxWIwtttgirr322jjttNNiwIABNTmPK664IqrVqobWgH+HpyeffHLce++9cdVVV8U3v/nNWHTRRet2zm+88Uaceuqpmg8AdBkBFgB1a/PNN4+bbroptt1225ob+4gRI+LBBx/UxFp7Y5XLxcorrxyHHXZY3H777XHZZZfFDjvsEM3NzXU31z/96U9xww03aDoA0DXvs5QAgHrWu3fvOOmkk+Koo46KXK62XvauvPJKu7BqWJIksdpqq8UJJ5wQd911Vxx22GE1uyNwdi6++OIYOXKkZgMAnU6ABUBD2H333ePUU0+NpqammhmzXVj1Y8EFF4xvfvObceutt8YxxxwTgwYNqot5tbe3x0knnRSVSkWTAYBOJcACoGFsttlmceaZZ0ahUDvfYfLb3/5W4+pIU1NT7LLLLnHLLbfEkUceGb179675Ob3yyitx7bXXai4A0KkEWAA0lA022CBOOOGEmrmc8IUXXogRI0ZoXJ0pFArxta99LW699dbYcccdI0mSmp7PVVddFa+//rrGAgCdRoAFQMPZZptt4oADDqiZ8d52222aVqdaWlriJz/5SVx88cWx5JJL1uw8SqVSnHTSSVEqlTQVAOgUAiwAGtJ3vvOd2GyzzWpirPfcc0/MmDFD0+rYGmusEdddd11svfXWNTuH119/PW688UbNBAA6hQALgIaUJEkcf/zxMXDgwMyPddq0afHAAw9oWp3r1atXnHLKKXHiiSdGjx49anIOV199dUycOFEzAYAOJ8ACoGH16dMnTjjhhJo4f+j+++/XsAax/fbbx0UXXRQLLbRQzY19+vTpcdlll2kiANDhBFgANLS11147dt1118yP8+9//3tMmzZNwxrEyiuvHNdee20st9xyNTf2P/zhD/HKK69oIgDQoQRYADS8Qw45JPr375/pMZZKpXj00Uc1q4EsssgicfHFF8cqq6xSU+OuVqtx7rnnaiAA0KEEWAA0vN69e8dBBx2U+XE+9NBDmtVg+vTpE+edd16suuqqNTXuZ555Jh5++GENBAA6jAALACJixx13jKWWWirTY3z88cejra1NsxpM796949xzz43ll1++psZ98cUXR7Va1UAAoEMIsAAgInK5XOy9996ZHuP06dPjpZde0qwG1Lt37zjvvPNi8ODBNTPmUaNGxSOPPKJ5AEDHvF9XAgCYaZtttolFF10002N87rnnNKpBtbS0xNlnnx19+/atmTFfc801GgcAdAgBFgD8S6FQiB133DHTY3zhhRc0qoEtueSSceqpp0Y+n6+J8b788svx5JNPahwAMN8EWADwX3bcccfI5bL78vj88887V6jBrb322nHIIYfUzHjtwgIAOoIACwD+y6BBg2L11VfP7PimTZsWI0aM0KgG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ySefzOz4nH8FAMwtARYAQJ16/vnn46OPPsrs+Jx/BQDMLQEWAECduu+++zI9vnXXXVeTAIC5IsACAKhDbW1tcf/992d2fEOHDo3BgwdrFAAwVwRYAAB16JFHHsn05YMbb7yxJgEAc02ABQBQh+65555Mj2+TTTbRJABgrgmwAADqzKRJkzL97YP9+vWLlVdeWaMAgLkmwAIAqDN//OMfo1KpZHZ8G2+8ceRy3oYCAHPPOwcAgDqSpmn84Q9/yPQYnX8FAHxeAiwAgDry1FNPxciRIzM7vt69e8d6662nUQDA5yLAAgCoIzfeeGOmx7fFFltEc3OzRgEAn4sACwCgTowaNSqeeOKJTI9xu+220ygA4HMTYAEA1Imrrroq0jTN7PgWXXTRWH311TUKAPjcBFgAAHXgrbfeigceeCDTY9x22219+yAAME+8gwAAqANXXnllVCqVTI/R5YMAwLwSYAEA1LjXX389/vSnP2V6jCuvvHIMGTJEswCAeSLAAgCoceeff35Uq9VMj3G33XbTKABgngmwAABq2OOPPx5PPvlkpsfYr1+/2HLLLTULAJhnAiwAgBpVKpXiV7/6VebHucsuu0RTU5OGAQDzTIAFAFCjrrvuunjzzTczPcZCoRA777yzZgEA80WABQBQg95666249tprMz/OzTffPAYMGKBhAMB8EWABANSYSqUSJ598crS1tWV+rHvssYeGAQDzTYAFAFBjrrrqqvjnP/+Z+XGutdZaseqqq2oYADDfBFgAADXkueeei6uvvromxnrggQdqGADQIQRYAAA1YuLEiXH88cdHpVLJ/FjXWWedWH311TUNAOgQAiwAgBrQ1tYWRx99dEyYMKEmxmv3FQDQkQRYAAAZV61W46STTooXX3yxJsa7wQYbxBe+8AWNAwA6jAALACDD0jSN0047LR544IGaGG+SJLH//vtrHADQoQRYAAAZlaZpnHPOOXHnnXfWzJi33nrrWGWVVTQPAOhQBSUAAMiearUap59+etxxxx01M+ZevXrFoYceqnkAQIcTYAEAZExbW1ucfPLJcf/999fUuPfbb78YMGCABgIAHU6ABQCQIRMmTIhjjjmmZg5s/7fBgwfHHnvsoYEAQKdwBhYAQEY899xzsc8++9RceBURcfTRR0dTU5MmAgCdwg4sAIBuVi6X44orrohrr702qtVqzY1/q622inXWWUcjAYBOI8ACAOhGr7/+epx22mk1uesqImLhhReOo446SiMBgE4lwAIA6AYzZsyIK6+8Mm644YaoVCo1O49jjz02WlpaNBQA6FQCLACALtTW1ha33XZbXHPNNTF58uSansvOO+8cG264oaYCAJ1OgAUA0AVaW1vj7rvvjmuvvTbGjRtX8/NZcskl47DDDtNYAKBLCLAAADrR2LFj4/e//33ccccd8cEHH9TFnHK5XJxwwgnRq1cvDQYAuoQACwCgg02bNi0efvjheOCBB+Kxxx6ryW8W/CyHHnpofOELX9BoAKDLCLAAADrAu+++G0899VT89a9/jaeffjra2trqcp5bb711fOMb39BwAKBLCbAAAD6n1tbWGDVqVAwfPjz++c9/xnPPPVcX51rNyfLLLx/HHXecBQAAdDkBFgDAJ0yfPj0+/PDDmDJlSowbNy7Gjh0b7733XrzzzjsxYsSIePfdd+vussA5aWlpiTPOOCN69OhhgQAAXU6ABQDUrGnTpsXee+89X7fx0UcfRZqmERHxwQcfxIwZM6JcLivuf8nn83HqqafGoEGDFAMA6BYCLACgZlUqlXjllVcUohMlSRI//vGPY6211lIMAKDb5JQAAIDZOeyww+LLX/6yQgAA3UqABQDALO23336+cRAAyAQBFgAAn7LbbrvFgQceqBAAQCYIsAAA+B/bbrtt/OAHP1AIACAzHOIOAMDHtt9++zj++OMjl/P3nABAdgiwAACIiIg999wzjjzyyEiSRDEAgEwRYAEAEN/61rfie9/7nkIAAJkkwAIAaGBJksQRRxwRX/va1xQDAMgsARYAQIPq1atXnHjiibHpppsqBgCQaQIsAIAGNHDgwPjFL34Ryy+/vGIAAJnn62UAABrM6quvHtdee63wCgCoGXZgAQA0kJ122il++MMfRqHgbSAAUDu8cwEAaAC9e/eOo48+OrbddlvFAABqjgALAKDOrbzyynHSSSfFkksuqRgAQE0SYAEA1Knm5ubYf//945vf/Gbk83kFAQBqlgALAKAOrbnmmvHjH/84Bg8erBgAQM0TYAEA1JFFFlkkDj744Nhuu+0iSRIFAQDqggALAKAOLLDAAvHtb3879txzz2hublYQAKCuCLAAAGpYr169Ytddd4199tkn+vTpoyAAQF0SYAEA1KBFF100dt9999h5552j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\"/>\r\n</defs>\r\n</svg>\r\n`;","export const FILE_TYPE_OTHER = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M8 15H16V17H8V15ZM8 11H16V13H8V11ZM14 1H6C4.9 1 4 1.9 4 3V19C4 20.1 4.89 21 5.99 21H18C19.1 21 20 20.1 20 19V7L14 1ZM18 19H6V3H13V8H18V19Z\" fill=\"#4D7498\"/>\r\n</svg>\r\n`;","export const FILE_TYPE_OFFICE_OTHER = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M8 15H16V17H8V15ZM8 11H16V13H8V11ZM14 1H6C4.9 1 4 1.9 4 3V19C4 20.1 4.89 21 5.99 21H18C19.1 21 20 20.1 20 19V7L14 1ZM18 19H6V3H13V8H18V19Z\" fill=\"#8E80DB\"/>\r\n</svg>\r\n`;","export const FILE_TYPE_INTERCHANGE = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M8 15H16V17H8V15ZM8 11H16V13H8V11ZM14 1H6C4.9 1 4 1.9 4 3V19C4 20.1 4.89 21 5.99 21H18C19.1 21 20 20.1 20 19V7L14 1ZM18 19H6V3H13V8H18V19Z\" fill=\"#B85547\"/>\r\n</svg>\r\n`;","export const FILE_TYPE_EXCEL = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M22 6.875H14V11H22V6.875Z\" fill=\"#21A366\"/>\r\n<path d=\"M22 11H6V18.3333C6 18.8398 6.4475 19.25 7 19.25H21C21.5525 19.25 22 18.8398 22 18.3333V11Z\" fill=\"#185C37\"/>\r\n<path d=\"M22 11H14V15.125H22V11Z\" fill=\"#107C42\"/>\r\n<path d=\"M14 6.875H6V11H14V6.875Z\" fill=\"#3FA071\"/>\r\n<path d=\"M21 2.75H14V6.875H22V3.66667C22 3.16021 21.5525 2.75 21 2.75Z\" fill=\"#33C481\"/>\r\n<path d=\"M7 2.75H14V6.875H6V3.66667C6 3.16021 6.4475 2.75 7 2.75Z\" fill=\"#21A366\"/>\r\n<path opacity=\"0.05\" d=\"M11.1595 5.9585H6V16.9585H11.1595C12.176 16.9585 13 16.2032 13 15.2714V7.64562C13 6.71383 12.176 5.9585 11.1595 5.9585Z\" fill=\"black\"/>\r\n<path opacity=\"0.07\" d=\"M11.1065 16.4999H6V6.11084H11.1065C11.9685 6.11084 12.667 6.75113 12.667 7.5413V15.0694C12.6665 15.8596 11.968 16.4999 11.1065 16.4999Z\" fill=\"black\"/>\r\n<path opacity=\"0.09\" d=\"M11.053 16.0418H6V6.26416H11.053C11.76 6.26416 12.333 6.78941 12.333 7.43749V14.8685C12.3335 15.5165 11.76 16.0418 11.053 16.0418Z\" fill=\"black\"/>\r\n<path d=\"M11 15.5832H3C2.4475 15.5832 2 15.173 2 14.6665V7.33317C2 6.82671 2.4475 6.4165 3 6.4165H11C11.5525 6.4165 12 6.82671 12 7.33317V14.6665C12 15.173 11.5525 15.5832 11 15.5832Z\" fill=\"url(#paint0_linear_1791_17641)\"/>\r\n<path d=\"M4.9032 8.7085H6.09619L7.06419 10.4291L8.08719 8.7085H9.20169L7.66619 11.0002L9.23669 13.2918H8.06119L7.00619 11.4906L5.95569 13.2918H4.7627L6.35919 10.9919L4.9032 8.7085Z\" fill=\"white\"/>\r\n<defs>\r\n<linearGradient id=\"paint0_linear_1791_17641\" x1=\"2.3625\" y1=\"6.7488\" x2=\"10.732\" y2=\"15.8792\" gradientUnits=\"userSpaceOnUse\">\r\n<stop stop-color=\"#18884F\"/>\r\n<stop offset=\"1\" stop-color=\"#0B6731\"/>\r\n</linearGradient>\r\n</defs>\r\n</svg>\r\n`;","export const BEST_MT = `\r\n<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\r\n\t viewBox=\"0 0 50.3 63.7\" style=\"enable-background:new 0 0 50.3 63.7;\" xml:space=\"preserve\">\r\n<g>\r\n\t<path class=\"st0\" d=\"M16,18.2c0.1,0,0.2-0.1,0.3-0.1c0.1-0.1,0.2-0.1,0.2-0.2c0.1-0.1,0.1-0.2,0.1-0.4c0-0.1,0-0.3-0.1-0.4\r\n\t\ts-0.1-0.2-0.2-0.2s-0.2-0.1-0.3-0.1c-0.1,0-0.2,0-0.4,0h-1v1.4h1.1C15.8,18.2,15.9,18.2,16,18.2z\"/>\r\n\t<path class=\"st0\" d=\"M25.1,6.7C16,6.7,8.6,14.2,8.6,23.2c0,9.1,7.4,16.6,16.5,16.6s16.5-7.4,16.5-16.5S34.3,6.7,25.1,6.7z\r\n\t\t M15.6,15.5c0.3,0,0.6,0,0.9,0.1c0.3,0,0.6,0.1,0.8,0.3c0.2,0.1,0.4,0.3,0.6,0.5s0.2,0.5,0.2,0.9s-0.1,0.7-0.3,1\r\n\t\tc-0.2,0.3-0.5,0.4-0.9,0.6c0.2,0,0.4,0.1,0.6,0.2s0.3,0.2,0.5,0.4c0.1,0.1,0.2,0.3,0.3,0.5c0.1,0.2,0.1,0.4,0.1,0.6\r\n\t\tc0,0.4-0.1,0.7-0.2,0.9c-0.2,0.2-0.4,0.4-0.6,0.6c-0.2,0.1-0.5,0.3-0.8,0.3s-0.6,0.1-0.9,0.1h-2.8v-7\r\n\t\tC13.1,15.5,15.6,15.5,15.6,15.5z M19.6,31.2h-2l-3-4.9v4.9h-1.5v-6.9h2.1l2.9,4.8v-4.8h1.5V31.2z M19.6,15.5L19.6,15.5h4.8v1.4\r\n\t\th-3.2v1.3h3v1.4h-3V21h3.3v1.4h-4.9V15.5z M29.6,31.2h-1.5V26l-1.8,5.3h-1.2L23.3,26v5.3h-1.5v-6.9h2.3l1.6,4.5l1.6-4.5h2.3\r\n\t\tC29.6,24.4,29.6,31.2,29.6,31.2z M30.3,21.2c-0.1,0.3-0.3,0.5-0.6,0.7s-0.5,0.3-0.9,0.4s-0.7,0.1-1,0.1c-0.5,0-0.9-0.1-1.3-0.2\r\n\t\ts-0.7-0.4-1.1-0.7l1.1-1.2c0.2,0.2,0.4,0.4,0.6,0.5s0.5,0.2,0.7,0.2c0.1,0,0.2,0,0.4,0s0.2-0.1,0.3-0.1c0.1-0.1,0.2-0.1,0.2-0.2\r\n\t\tc0.1-0.1,0.1-0.2,0.1-0.3c0-0.2-0.1-0.4-0.2-0.5c-0.2-0.1-0.4-0.2-0.6-0.3c-0.2-0.1-0.5-0.2-0.8-0.3c-0.3-0.1-0.5-0.2-0.8-0.3\r\n\t\tc-0.2-0.1-0.4-0.3-0.6-0.6c-0.2-0.2-0.2-0.5-0.2-0.9s0.1-0.7,0.2-1s0.3-0.5,0.6-0.7c0.2-0.2,0.5-0.3,0.8-0.4s0.6-0.1,1-0.1\r\n\t\ts0.8,0.1,1.1,0.2c0.4,0.1,0.7,0.3,1,0.6L29.4,17c-0.1-0.2-0.3-0.3-0.5-0.3c-0.2-0.1-0.4-0.1-0.6-0.1c-0.1,0-0.2,0-0.3,0\r\n\t\tc-0.1,0-0.2,0.1-0.3,0.1c-0.2,0.1-0.2,0.2-0.3,0.3c-0.1,0.1-0.1,0.2-0.1,0.3c0,0.2,0.1,0.4,0.2,0.5c0.2,0.1,0.4,0.2,0.6,0.3\r\n\t\tc0.2,0.1,0.5,0.2,0.8,0.2s0.5,0.2,0.8,0.3c0.2,0.1,0.4,0.3,0.6,0.6c0.2,0.2,0.2,0.6,0.2,1C30.5,20.7,30.4,21,30.3,21.2z M36.6,25.7\r\n\t\th-2v5.6h-1.5v-5.6h-2v-1.3h5.5V25.7z M36.7,16.7h-2v5.6h-1.5v-5.6h-2v-1.3h5.5V16.7z\"/>\r\n\t<path class=\"st0\" d=\"M16.4,21c0.1,0,0.2-0.1,0.3-0.1c0.1,0,0.2-0.1,0.2-0.3c0.1-0.1,0.1-0.2,0.1-0.4s0-0.3-0.1-0.4\r\n\t\ts-0.2-0.2-0.3-0.2c-0.1-0.1-0.3-0.1-0.4-0.1s-0.3,0-0.4,0h-1.2V21H16C16.1,21,16.2,21,16.4,21z\"/>\r\n</g>\r\n<g>\r\n\t<path class=\"st0\" d=\"M9,40.3L0.5,55c-0.2,0.2-0.2,0.5,0,0.7S0.9,56,1.2,56l8.7-1.5l3.9,8c0.1,0.2,0.3,0.4,0.6,0.4\r\n\t\tc0.2,0,0.5-0.1,0.7-0.5l8.8-15.7C18.2,46.4,13,44,9,40.3z\"/>\r\n\t<path class=\"st0\" d=\"M49.8,55.2l-8.6-14.9c-3.9,3.7-9.1,6.1-14.8,6.4l8.9,16c0.1,0.2,0.4,0.3,0.6,0.3c0.2,0,0.5-0.2,0.6-0.2l3.9-8\r\n\t\tl8.7,1.5c0.3,0,0.5-0.1,0.7-0.3C49.9,55.7,49.9,55.5,49.8,55.2z\"/>\r\n\t<path class=\"st0\" d=\"M47.1,23.3c0-12.1-9.9-22-22-22s-22,9.9-22,22s9.9,22,22,22S47.1,35.4,47.1,23.3z M25.1,41.2\r\n\t\tc-9.9,0-17.9-8-17.9-17.9c0-9.9,8.1-17.9,17.9-17.9c9.8,0,17.9,8,17.9,17.9C43,33.2,35,41.2,25.1,41.2z\"/>\r\n</g>\r\n</svg>\r\n`;\r\n\r\nexport const COLLECTIONS_MENU = `\r\n<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\r\n\t viewBox=\"0 0 15.9 20.3\" style=\"enable-background:new 0 0 15.9 20.3;\" xml:space=\"preserve\">\r\n<g id=\"Layer_1_00000122707316528403919840000013038058684751510177_\">\r\n</g>\r\n<g id=\"Layer_2_00000016758538246796687430000000356337115434427298_\">\r\n\t<polygon class=\"st0\" points=\"6.4,5.1 7.6,5.1 7,2.9 \t\"/>\r\n\t<path class=\"st0\" d=\"M15.7,0H3C1.3,0,0,1.3,0,2.9v12.2c0.6-0.5,1.4-0.9,2.3-0.9h13.6v-14C15.9,0.1,15.8,0,15.7,0z M9.1,7.2\r\n\t\tC8.9,7.3,8.8,7.3,8.6,7.3S8.2,7.2,8.2,7.1l-0.3-1H6.2l-0.3,1c0,0.2-0.2,0.2-0.4,0.2c-0.2,0-0.4-0.1-0.6-0.2c-0.2,0-0.3-0.2-0.2-0.4\r\n\t\tl1.5-5C6.3,1.3,6.8,1.3,7,1.3s0.7,0,0.8,0.4l1.5,5C9.4,6.9,9.3,7.1,9.1,7.2z M13.2,13.1h-2.9c-0.6,0-0.9-0.6-0.6-1.1l2.1-3.3h-1.5\r\n\t\tC10,8.7,9.7,8.4,9.7,8c0-0.4,0.3-0.7,0.7-0.7h2.8c0.5,0,0.9,0.6,0.6,1.1l-2.1,3.3h1.6c0.4,0,0.7,0.3,0.7,0.7\r\n\t\tC13.9,12.8,13.6,13.1,13.2,13.1z\"/>\r\n</g>\r\n<path class=\"st0\" d=\"M2.3,15.4c-0.4,0-0.8,0.1-1.1,0.4c-0.7,0.4-1.2,1.1-1.2,2c0,1.1,0.8,2.1,1.9,2.2C2,20,2,20,2.1,20\r\n\tc0.1,0,0.1,0,0.2,0c0,0,0,0,0,0c0,0,0,0,0,0h13.4c0.1,0,0.2-0.1,0.2-0.2v-4.4H2.3z\"/>\r\n</svg>\r\n`;\r\n\r\nexport * from \"./icons/file-types\";","import { Injectable } from '@angular/core';\r\nimport { MatIconRegistry } from '@angular/material/icon';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport * as icons from './icons';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class IconService {\r\n private iconsRegistered: boolean;\r\n constructor(private readonly iconRegistry: MatIconRegistry,\r\n private readonly sanitizer: DomSanitizer) {\r\n }\r\n\r\n //https://material.angular.io/components/icon/examples\r\n registerIcons(){\r\n if(this.iconsRegistered){\r\n return;\r\n }\r\n this.iconsRegistered = true;\r\n for(const key in icons){\r\n this.iconRegistry.addSvgIconLiteral(key.toLowerCase(), this.sanitizer.bypassSecurityTrustHtml(icons[key]));\r\n }\r\n }\r\n}\r\n","export const FILE_API_SERVICE_TOKEN = \"TldTranslateFileApiService\";\r\n","export const TRANSLATION_API_VERSION_TOKEN = \"TranslationApiVersion\";\r\n","export const TEXT_API_SERVICE_TOKEN = \"TldTranslateTextApiService\";\r\n","export const SYSTEM_SERVICE_TOKEN = \"TldSystemApiService\";\r\n","export const TLD_TRANSLATE_CONFIG_TOKEN = \"TldTranslateConfig\";","import { TldTranslateConfigService } from '../services/tld-translate-config.service';\r\n\r\n/**\r\n * Class for storing some common methods or global app constants.\r\n */\r\nexport class Common {\r\n static getCookie(name: string) {\r\n const ca: Array<string> = document.cookie.split(';');\r\n const caLen: number = ca.length;\r\n const cookieName = `${name}=`;\r\n let c: string;\r\n\r\n for (let i = 0; i < caLen; i += 1) {\r\n c = ca[i].replace(/^\\s+/g, '');\r\n if (c.indexOf(cookieName) === 0) {\r\n return c.substring(cookieName.length, c.length);\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n\r\n static getAuthHeaders(config: TldTranslateConfigService) {\r\n const authHeaders = {};\r\n\r\n if (!config?.coreConfig?.apiIsInTheSameDomain) {\r\n // TODO: what is this cookie? Where it's setup?\r\n const websiteAuthCookie = this.getCookie(\"smts\");\r\n if (websiteAuthCookie) {\r\n authHeaders[\"website-auth-cookie\"] = websiteAuthCookie;\r\n }\r\n }\r\n\r\n if (config?.coreConfig?.clientId) {\r\n authHeaders['client-id'] = config.coreConfig.clientId;\r\n }\r\n\r\n authHeaders[\"Content-Type\"] = \"application/json\";\r\n\r\n return authHeaders;\r\n }\r\n\r\n static GetApiV2AuthHeaders(config: TldTranslateConfigService): any {\r\n const authHeaders = {};\r\n if (config?.apiV2Config?.xApiKey) {\r\n authHeaders['x-api-key'] = config.apiV2Config.xApiKey;\r\n }\r\n return authHeaders;\r\n }\r\n\r\n static getFileExtension(fileName: string) {\r\n return fileName.slice(fileName.lastIndexOf(\".\") + 1).toLowerCase();\r\n }\r\n\r\n /**\r\n * Removes special characters so string is not interpretated as html.\r\n * @param text\r\n */\r\n static escapeHtmlString(text: string): string {\r\n // without creating regexp, it is not building library.\r\n // https://stackoverflow.com/questions/57292603/angular7-aot-expression-form-not-supported\r\n return text.replace(new RegExp(\"&\", \"g\"), \"&amp;\")\r\n .replace(new RegExp(\"<\", \"g\"), \"&lt;\")\r\n .replace(new RegExp(\">\", \"g\"), \"&gt;\")\r\n .replace(new RegExp(\"\\\"\", \"g\"), \"&quot;\")\r\n .replace(new RegExp(\"'\", \"g\"), \"&#039;\");\r\n }\r\n\r\n static encodeHtmlString(text: string): string {\r\n return text.replace(new RegExp(\"&amp;\", \"g\"), \"&\")\r\n .replace(new RegExp(\"&lt;\", \"g\"), \"<\")\r\n .replace(new RegExp(\"&gt;\", \"g\"), \">\")\r\n .replace(new RegExp(\"&quot;\", \"g\"), \"\\\"\")\r\n .replace(new RegExp(\"&#039;\", \"g\"), \"'\");\r\n }\r\n /**\r\n * Splits string into paragraphs.\r\n * @param text\r\n */\r\n static splitInParagraphs(text: string): string[] {\r\n return text.split(\"\\n\");\r\n }\r\n\r\n static joinParagraphs(text: string[]): string {\r\n return text.join(\"\\n\");\r\n }\r\n\r\n static toCamelCase(text: string, symbol = \"-\"): string {\r\n let arr = text.split(symbol);\r\n let capital = arr.map((item, index) => index ? item.charAt(0).toUpperCase() + item.slice(1).toLowerCase() : item.toLowerCase());\r\n // ^-- change here.\r\n return capital.join(\"\");\r\n }\r\n\r\n static bytesToMb(bytes: number): number {\r\n return Math.round(bytes / 1048576);\r\n }\r\n\r\n static pascalCaseToEnum(property: string): string {\r\n return property.replace(new RegExp(\"([a-z])([A-Z])\", \"g\"), \"$1_$2\").toUpperCase();\r\n }\r\n\r\n static isTextUrl(text: string): string {\r\n const urlPattern = /\\b((?:https?:(?:\\/{1,3}|[a-z0-9%])|[a-z0-9.\\-]+[.](?:com|net|org|edu|gov|mil|aero|asia|biz|cat|coop|info|int|jobs|mobi|museum|name|post|pro|tel|travel|xxx|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|dd|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|Ja|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)\\/)(?:[^\\s()<>{}\\[\\]]+|\\([^\\s()]*?\\([^\\s()]+\\)[^\\s()]*?\\)|\\([^\\s]+?\\))+(?:\\([^\\s()]*?\\([^\\s()]+\\)[^\\s()]*?\\)|\\([^\\s]+?\\)|[^\\s`!() \\[\\]{};: '\".,<>?«»“”‘’])|(?:[a-z0-9]+(?:[.\\-][a-z0-9]+)*[.](?:com|net|org|edu|gov|mil|aero|asia|biz|cat|coop|info|int|jobs|mobi|museum|name|post|pro|tel|travel|xxx|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|dd|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|Ja|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)\\b\\/?(?!@)))/gi;\r\n const urlMatch = urlPattern.exec(text);\r\n if (urlMatch) {\r\n const url = urlMatch[0];\r\n if (url.length / text.trim().length > 0.8) { // most of the text is url\r\n return url;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n static getWordCount(text: string) {\r\n return text.match(/\\b(\\w+)\\b/g)?.length;\r\n }\r\n\r\n static sortByArray(objectArr: any[], sortByArray: any[], fieldName: string) {\r\n objectArr.sort((a, b) => {\r\n const aPreferredIndex = sortByArray.indexOf(a[fieldName]);\r\n const bPreferredIndex = sortByArray.indexOf(b[fieldName]);\r\n return aPreferredIndex < bPreferredIndex && aPreferredIndex !== -1 ? -1 : 1;\r\n })\r\n }\r\n}\r\n","export interface IFileUploadError {\r\n code: FileUploadErrorTypeEnum;\r\n error: string;\r\n fileName: string;\r\n}\r\n\r\nexport enum FileUploadErrorTypeEnum{\r\n FILE_UPLOAD_UNSUPPORTED_FORMAT = \"FILE_UPLOAD_UNSUPPORTED_FORMAT\",\r\n FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER = \"FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER\",\r\n MAX_SIZE = \"FILE_UPLOAD_MAX_SIZE\",\r\n FILE_EMPTY = \"FILE_UPLOAD_EMPTY\",\r\n E_404 = \"E_404\",\r\n E_404_REMOVE = \"E_404_REMOVE\"\r\n}\r\n","export interface ITldTranslateMessage{\r\n type: TldMessageType;\r\n text: string;\r\n error?: any;\r\n params?: any;\r\n}\r\n\r\nexport enum TldMessageType {\r\n ERROR = \"ERROR\",\r\n SUCCESS = \"SUCCESS\",\r\n WARNING = \"WARNING\"\r\n}\r\n","export enum TranslationApiVersion{\r\n V1,\r\n V2\r\n}","export enum languageMenuVersion{\r\n V1,\r\n V2\r\n}\r\n","export enum FileTranslationSubstatus{\r\n UNSPECIFIED = \"UNSPECIFIED\",\r\n BAD_FILE_ERROR = \"BAD_FILE_ERROR\",\r\n UNKNOWN_FILE_TYPE_ERROR = \"UNKNOWN_FILE_TYPE_ERROR\",\r\n TRACK_CHANGES_ENABLED_ERROR = \"TRACK_CHANGES_ENABLED_ERROR\",\r\n NO_TEXT_EXTRACTED_ERROR = \"NO_TEXT_EXTRACTED_ERROR\"\r\n}","export enum VoiceToTextState{\r\n QUEUED = \"QUEUED\",\r\n COMPLETED = \"COMPLETED\",\r\n IN_PROGRESS = \"IN_PROGRESS\"\r\n}","export enum ErrorCode {\r\n // custom\r\n COLLECTION_IMPORT = \"COLLECTION_IMPORT\",\r\n COLLECTION_CREATE = \"COLLECTION_CREATE\",\r\n NO_FILE_ADDED = \"NO_FILE_ADDED\",\r\n CANT_START_FILE_TRANSLATION = \"CANT_START_FILE_TRANSLATION\",\r\n CANT_START_RECORDING = \"CANT_START_RECORDING\",\r\n TRANSLATION_FAILED = \"TRANSLATION_FAILED\",\r\n\r\n // from file sevice checkTranslationProgress\r\n E_UNKNOWN_FILE_TYPE = \"E_UNKNOWN_FILE_TYPE\",\r\n E_CANNOT_READ_FILE = \"E_CANNOT_READ_FILE\",\r\n E_FAILED_IN_TRANSLATION = \"E_FAILED_IN_TRANSLATION\",\r\n E_FORMAT_TRACK_CHANGES = \"E_FORMAT_TRACK_CHANGES\",\r\n E_UNKNOWN_ERROR = \"E_UNKNOWN_ERROR\",\r\n E_UNAUTHORIZED = \"E_UNAUTHORIZED\",\r\n\r\n // http response codes that should be handeled\r\n \"E_504\" = \"E_504\",\r\n\r\n // errors from https://tilde.com/developers/machine-translation-api\r\n E_11 = \"E_11\",\r\n E_12 = \"E_12\",\r\n E_21 = \"E_21\",\r\n E_22 = \"E_22\",\r\n E_23 = \"E_23\",\r\n E_41 = \"E_41\",\r\n\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport { TRANSLATION_API_VERSION_TOKEN } from '../../../injection-tokens';\r\nimport { TLD_TRANSLATE_CONFIG_TOKEN } from '../../../injection-tokens/tld-translate-config.token';\r\nimport { ITldTextToSpeechConfig, languageMenuVersion } from '../models';\r\nimport { ITldAudioConfig } from '../models/configs/tld-audio-config.model';\r\nimport { ITldTermConfig } from '../models/configs/tld-term-config.model';\r\nimport { ITldTranslateApiV2Config } from '../models/configs/tld-translate-api-v2-config.model';\r\nimport { ITldTranslateConfig } from '../models/configs/tld-translate-config.model';\r\nimport { ITldTranslateCoreConfig } from '../models/configs/tld-translate-core-config.model';\r\nimport { ITldTranslateFileConfig } from '../models/configs/tld-translate-file-config.model';\r\nimport { ITldTranslateTextConfig } from '../models/configs/tld-translate-text-config.model';\r\nimport { ITldTranslateWebsiteConfig } from '../models/configs/tld-translate-web-config.model';\r\nimport { TranslationApiVersion } from '../models/core/translation-api-version.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TldTranslateConfigService {\r\n\r\n constructor(@Inject(TRANSLATION_API_VERSION_TOKEN) private readonly apiVersion: TranslationApiVersion,\r\n @Optional() @Inject(TLD_TRANSLATE_CONFIG_TOKEN) private readonly config: ITldTranslateConfig) {\r\n this.initConfigs();\r\n }\r\n\r\n private _coreConfig: ITldTranslateCoreConfig = { appId: null, clientId: null };\r\n get coreConfig() {\r\n return this._coreConfig;\r\n }\r\n\r\n private _textConfig: ITldTranslateTextConfig = {};\r\n get textConfig() {\r\n return this._textConfig;\r\n }\r\n\r\n private _fileConfig: ITldTranslateFileConfig = {};\r\n get fileConfig() {\r\n return this._fileConfig;\r\n }\r\n\r\n private _webtranslateConfig: ITldTranslateWebsiteConfig = {};\r\n get webtranslateConfig() {\r\n return this._webtranslateConfig;\r\n }\r\n\r\n private _termConfig: ITldTermConfig = {};\r\n get termConfig() {\r\n return this._termConfig;\r\n }\r\n\r\n private _apiV2Config: ITldTranslateApiV2Config = {};\r\n get apiV2Config() {\r\n return this._apiV2Config;\r\n }\r\n\r\n private _audioConfig: ITldAudioConfig = { appId: null, appSecret: null };\r\n get audioConfig() {\r\n return this._audioConfig;\r\n }\r\n\r\n private _textToSpeechConfig: ITldTextToSpeechConfig = {};\r\n get textToSpeechConfig() {\r\n return this._textToSpeechConfig;\r\n }\r\n\r\n initConfigs(configuration?: ITldTranslateConfig) {\r\n const config = configuration ?? this.config ?? {};\r\n\r\n const core = config?.core;\r\n const file = config?.file;\r\n const text = config?.text;\r\n const audio = config?.audio;\r\n const webtranslate = config?.webTranslate;\r\n const termConfig = config?.term;\r\n const apiV2Config = config?.apiV2;\r\n const textToSpeech = config?.textToSpeech;\r\n\r\n this._coreConfig = { appId: core?.appId, clientId: core?.clientId };\r\n this._coreConfig.apiIsInTheSameDomain = core?.apiIsInTheSameDomain || false;\r\n this._coreConfig.appName = core?.appName || \"Tilde MT\";\r\n this._coreConfig.hideAchievement = core?.hideAchievement || false;\r\n this._coreConfig.isAuth = core?.isAuth || false;\r\n this._coreConfig.jwtAuth = core?.jwtAuth || false;\r\n this._coreConfig.translateAppName = core?.translateAppName ?? true;\r\n this._coreConfig.registerLink = core?.registerLink || \"https://tilde.com/products-and-services/machine-translation\";\r\n this._coreConfig.supportEmail = core?.supportEmail || \"mt@tilde.lv\";\r\n this._coreConfig.sourceLanguageOrder = core?.sourceLanguageOrder || {\r\n en: [\"en\", \"lv\", \"ru\", \"lt\", \"et\", \"fi\", \"pl\", \"de\", \"it\", \"bg\", \"hr\"],\r\n lv: [\"en\", \"lv\", \"ru\", \"lt\", \"et\", \"fi\", \"pl\", \"de\", \"it\", \"bg\", \"hr\"],\r\n lt: [\"en\", \"lt\", \"ru\", \"lv\", \"et\", \"fi\", \"pl\", \"de\", \"it\", \"bg\", \"hr\"],\r\n et: [\"en\", \"et\", \"fi\", \"ru\", \"lv\", \"lt\", \"pl\", \"de\", \"it\", \"bg\", \"hr\"],\r\n fi: [\"fi\", \"en\", \"et\", \"ru\", \"lv\", \"lt\", \"pl\", \"de\", \"it\", \"bg\", \"hr\"],\r\n pl: [\"pl\", \"en\", \"de\", \"lv\", \"et\", \"ru\", \"lt\", \"fi\", \"it\", \"bg\", \"hr\"],\r\n de: [\"en\", \"bg\", \"da\", \"et\", \"fi\", \"fr\", \"de\", \"el\", \"ga\", \"is\", \"it\", \"hr\", \"lv\", \"lt\", \"ru\", \"mt\", \"nl\", \"nb\", \"pl\", \"pt\", \"pt-pt\", \"ro\", \"sv\", \"sk\", \"sl\", \"es\", \"cs\", \"hu\"\r\n ]\r\n };\r\n this._coreConfig.targetLanguageOrder = core?.targetLanguageOrder || {\r\n en: [\"en\", \"lv\", \"ru\", \"lt\", \"et\", \"fi\", \"ar\", \"pl\", \"de\", \"bg\", \"hr\", \"es\", \"nb\", \"ro\"],\r\n lv: [\"en\", \"lv\", \"lt\", \"et\", \"ru\", \"fi\", \"ar\", \"pl\", \"de\", \"bg\", \"hr\", \"es\", \"nb\", \"ro\"],\r\n lt: [\"en\", \"lt\", \"lv\", \"et\", \"ru\", \"fi\", \"ar\", \"pl\", \"de\", \"bg\", \"hr\", \"es\", \"nb\", \"ro\"],\r\n et: [\"en\", \"et\", \"lv\", \"lt\", \"ru\", \"fi\", \"ar\", \"pl\", \"de\", \"bg\", \"hr\", \"es\", \"nb\", \"ro\"],\r\n fi: [\"et\", \"fi\", \"en\", \"lv\", \"lt\", \"ru\", \"ar\", \"pl\", \"de\", \"bg\", \"hr\", \"es\", \"nb\", \"ro\"],\r\n pl: [\"en\", \"pl\", \"de\", \"lv\", \"ru\", \"et\", \"fi\", \"lt\", \"ar\", \"bg\", \"hr\", \"es\", \"nb\", \"ro\"],\r\n de: [\"de\", \"en\", \"fr\", \"bg\", \"da\", \"et\", \"fi\", \"el\", \"ga\", \"is\", \"it\", \"hr\", \"lv\", \"lt\", \"ru\", \"mt\", \"nl\", \"nb\", \"pl\", \"pt\", \"pt-pt\", \"ro\", \"sv\", \"sk\", \"sl\", \"es\", \"cs\", \"hu\", \"ar\"]\r\n };\r\n this._coreConfig.hideLangMenuLabels = core?.hideLangMenuLabels || false;\r\n this._coreConfig.showVendors = core?.showVendors || false;\r\n this._coreConfig.unauthorizedRedirectLink = core?.unauthorizedRedirectLink;\r\n this._coreConfig.allowedSystemStatuses = core?.allowedSystemStatuses ?? ['running', 'standby', 'queuingtransl'];\r\n this._coreConfig.maxDisplayedLanguages = core?.maxDisplayedLanguages ?? 3;\r\n this._coreConfig.debug = core?.debug;\r\n this._coreConfig.showDomainsWithLanguageName = core?.showDomainsWithLanguageName || false;\r\n this._coreConfig.showDomains = core?.showDomains ?? true;\r\n this._coreConfig.defaultVendor = core?.defaultVendor ?? \"Tilde\";\r\n this._coreConfig.defaultSystemId = core?.defaultSystemId;\r\n this._coreConfig.showDomainTitle = core?.showDomainTitle;\r\n this._coreConfig.domainSide = core?.domainSide ?? \"trg\";\r\n this._coreConfig.swapIconPosition = core?.swapIconPosition ?? \"src\";\r\n this._coreConfig.languageMenuVersion = core?.languageMenuVersion ?? languageMenuVersion.V1;\r\n this._coreConfig.maxRecentSystemCount = core?.maxRecentSystemCount ?? 4;\r\n this._coreConfig.defaultDomains = core?.defaultDomains ?? [\"GEN\", \"general\"];\r\n this._coreConfig.contactSupport = core?.contactSupport ?? true;\r\n\r\n this._fileConfig.allowedFileTypes = file?.allowedFileTypes || [\".doc\", \".docx\", \".xlsx\", \".pdf\", \".pptx\", \".odt\", \".odp\", \".ods\", \".txt\"];\r\n this._fileConfig.extendedFileTypes = file?.extendedFileTypes\r\n || [\".doc\", \".docx\", \".xlsx\", \".pptx\", \".odt\", \".odp\", \".ods\", \".txt\", \".html\", \".htm\",\r\n \".xhtml\", \".xht\", \".tmx\", \".xlf\", \".xlif\", \".xliff\", \".sdlxliff\", \".sdlxlf\", \".ttx\", \".rtf\",\r\n \".pages\", \".tex\", \".xml\", \".json\", \".sxw\", \".pdf\", \".csv\", \".ttl\", \".srt\", \".png\", \".jpg\", \".jpeg\", \".bmp\"];\r\n this._fileConfig.allowTmxAuth = file?.allowTmxAuth ?? true;\r\n this._fileConfig.allowTmxUnauth = file?.allowTmxUnauth ?? false;\r\n this._fileConfig.fileApiUrl = file?.fileApiUrl || \"https://letsmt.eu/ws/Files/\";\r\n this._fileConfig.fileDownloadTimeouts = file?.fileDownloadTimeouts\r\n || {\r\n \"initializing\": 1000,\r\n \"extracting\": 1000,\r\n \"waiting\": 10000,\r\n \"translating\": 1000,\r\n \"saving\": 1000,\r\n \"completed\": 1000,\r\n \"error\": 1000,\r\n \"queuing\": 1000\r\n };\r\n this._fileConfig.maxSize = file?.maxSize || 30720000;\r\n this._fileConfig.wordLimit = file?.wordLimit ?? 1250;\r\n this._fileConfig.fileUpload = file?.fileUpload ?? true;\r\n this._fileConfig.ocrPageLimit = file?.ocrPageLimit ?? 1;\r\n this._fileConfig.allowPDFSourceDownload = file?.allowPDFSourceDownload ?? true;\r\n this._fileConfig.allowImageSourceDownload = file?.allowImageSourceDownload ?? true;\r\n this._fileConfig.sourceDownloadExtensions = file?.sourceDownloadExtensions || [\"pdf\", \"png\", \"jpg\", \"jpeg\", \"bmp\"];\r\n this._fileConfig.targetDownloadExtensionOrder = file?.targetDownloadExtensionOrder;\r\n this._fileConfig.numberOfFilesAllowed = file?.numberOfFilesAllowed > 0 ? file.numberOfFilesAllowed : 1;\r\n this._fileConfig.showTranslationLimits = file?.showTranslationLimits ?? true;\r\n this._fileConfig.useMultipleFileUpload = file?.useMultipleFileUpload;\r\n this._fileConfig.progressIndicatorTitleVisibleForVendors = file?.progressIndicatorTitleVisibleForVendors ?? [\"ETranslation\"];\r\n\r\n this._textConfig.dictionaryUrl = text?.dictionaryUrl || \"https://letsmt.eu/api/dictionary/GetDictionaryEntry/\";\r\n this._textConfig.maxCharLength = text?.maxCharLength ?? 5000;\r\n this._textConfig.webWidgetRedirectUrlPosfix = text?.webWidgetRedirectUrlPosfix || \"/webtranslate?url=\";\r\n this._textConfig.webWidgetRedirectUrlPrefix = text?.webWidgetRedirectUrlPrefix || \"\";\r\n this._textConfig.useDictionary = text?.useDictionary ?? false;\r\n this._textConfig.showAvailableExtensions = text?.showAvailableExtensions == null ? true : text.showAvailableExtensions;\r\n this._textConfig.showAuthExtensions = text?.showAuthExtensions == null ? true : text.showAuthExtensions;\r\n this._textConfig.autoFocuss = text?.autoFocuss;\r\n this._textConfig.showExtensionsUnauthOnly = text?.showExtensionsUnauthOnly;\r\n this._textConfig.showSensitiveInfoTooltip = text?.showSensitiveInfoTooltip;\r\n this._textConfig.allowWebsiteTranslation = text?.allowWebsiteTranslation ?? true;\r\n this._textConfig.showSuggestions = text?.showSuggestions ?? true;\r\n this._textConfig.autoRedirectToWebTranslate = text?.autoRedirectToWebTranslate ?? false;\r\n this._textConfig.highlight = text?.highlight ?? true;\r\n this._textConfig.checkSourceGrammar = text?.checkSourceGrammar ?? false;\r\n this._textConfig.grammarCheckLanguages = text?.grammarCheckLanguages ?? [];\r\n this._textConfig.showTargetPlaceholder = text?.showTargetPlaceholder;\r\n this._textConfig.showExtensionPopup = text?.showExtensionPopup;\r\n this._textConfig.visibleExtensionCount = text?.visibleExtensionCount ?? 3;\r\n this._textConfig.hideSourceActionsWhenHasTextMobile = text?.hideSourceActionsWhenHasTextMobile ?? true;\r\n this._textConfig.progressIndicatorTimeoutMiliSeconds = text?.progressIndicatorTimeoutMiliSeconds ?? 2000;\r\n this._textConfig.progressIndicatorTitleVisibleForVendors = text?.progressIndicatorTitleVisibleForVendors ?? [\"ETranslation\"];\r\n this._textConfig.progressIndicatorVisible = text?.progressIndicatorVisible ?? false;\r\n\r\n this._audioConfig.audioTextInput = audio?.audioTextInput ?? false;\r\n // Not setting default url because there is no service provided by Tilde and this is not used by default in website project.\r\n this._audioConfig.audioApiUrl = audio?.audioApiUrl;\r\n this._audioConfig.audioMaxSizeBytes = audio?.audioMaxSizeBytes ?? 10000000;\r\n this._audioConfig.sourceLanguages = audio?.sourceLanguages ?? [];\r\n this._audioConfig.dataUpdateTimeFrame = audio?.dataUpdateTimeFrame ?? 5000;\r\n this._audioConfig.maximumRecordTime = audio?.maximumRecordTime ?? 300;\r\n this._audioConfig.dictateApiUrl = audio?.dictateApiUrl ?? \"runa.tilde.lv\";\r\n this._audioConfig.appId = audio?.appId;\r\n this._audioConfig.appSecret = audio?.appSecret;\r\n this._audioConfig.punctuationMessage = audio?.punctuationMessage ?? true;\r\n this._audioConfig.disableAutomaticTranslation = audio?.disableAutomaticTranslation ?? true;\r\n\r\n this._webtranslateConfig.logoLocation = webtranslate?.logoLocation || 'assets/webtranslate/tilde_logo.png';\r\n this._webtranslateConfig.translatePagePath = webtranslate?.translatePagePath;\r\n this._webtranslateConfig.debug = webtranslate?.debug || false;\r\n this._webtranslateConfig.webLangAutodetect = webtranslate?.webLangAutodetect || true;\r\n this._webtranslateConfig.allowSuggestions = webtranslate?.allowSuggestions || false;\r\n this._webtranslateConfig.hidePopup = webtranslate?.hidePopup || false;\r\n this._webtranslateConfig.sandbox = webtranslate?.sandbox ?? \"allow-forms allow-scripts allow-same-origin\";\r\n\r\n this._termConfig.apiUrl = termConfig?.apiUrl || \"https://term.tilde.com\";\r\n this._termConfig.canCreateCollection = termConfig?.canCreateCollection;\r\n this._termConfig.isCollectionsActivated = termConfig?.isCollectionsActivated;\r\n this._termConfig.isTermPortalSupported = termConfig?.isTermPortalSupported ?? false;\r\n this._termConfig.collectionNameMinLength = termConfig?.collectionNameMinLength ?? 8;\r\n this._termConfig.collectionNameMaxLength = termConfig?.collectionNameMaxLength ?? 300;\r\n this._termConfig.refreshTimeoutMs = termConfig?.refreshTimeoutMs ?? 10000;\r\n this._termConfig.refreshTimeoutMsWhenImporting = termConfig?.refreshTimeoutMsWhenImporting ?? 5000;\r\n this._termConfig.freeTrialUrl = termConfig?.freeTrialUrl ?? \"https://tilde.com/products-and-services/machine-translation/pricing/Tilde-MT\";\r\n this._termConfig.learnMoreUrl = termConfig?.learnMoreUrl ?? \"https://www.tilde.com/products-and-services/machine-translation/Tilde-MT-features-glossary\";\r\n\r\n // seperated because following urls have method names added\r\n this._coreConfig.translationServiceUrl = core?.translationServiceUrl || \"https://www.letsmt.eu/ws/service.svc/json/\";\r\n this._textConfig.translationUrl = text?.translationUrl ?? this._coreConfig.translationServiceUrl + \"TranslateEx\";\r\n this._textConfig.updateTranslationUrl = text?.updateTranslationUrl ?? this._coreConfig.translationServiceUrl + \"UpdateTranslation\";\r\n this._coreConfig.systemListUrl = core?.systemListUrl ?? this._coreConfig.translationServiceUrl + \"GetSystemList\";\r\n\r\n this._apiV2Config.xApiKey = apiV2Config?.xApiKey;\r\n this._apiV2Config.mtApiUrl = apiV2Config?.mtApiUrl ?? \"api/translate/\";\r\n this._apiV2Config.systemListUrl = apiV2Config?.systemListUrl ?? this._apiV2Config.mtApiUrl + \"language-directions\";\r\n this._apiV2Config.translationUrl = apiV2Config?.translationUrl ?? this._apiV2Config.mtApiUrl + \"text\";\r\n this._apiV2Config.fileTranslationUrl = apiV2Config?.fileTranslationUrl ?? this._apiV2Config.mtApiUrl + \"file\";\r\n this._apiV2Config.grammarCheckUrl = apiV2Config?.grammarCheckUrl ?? \"https://mt.cs.ut.ee/api/grammar\";\r\n this._apiV2Config.autoDomainDetection = apiV2Config?.autoDomainDetection ?? false;\r\n\r\n this._textToSpeechConfig.languages = textToSpeech?.languages ?? {};\r\n this._textToSpeechConfig.maxCharsInText = textToSpeech?.maxCharsInText ?? 3000;\r\n\r\n this.editPropertiesBasedOnApi();\r\n }\r\n\r\n /**\r\n * To make sure necessary properties are not turned on because in api V2 some features are not implemnented.\r\n */\r\n private editPropertiesBasedOnApi() {\r\n if (this.apiVersion === TranslationApiVersion.V2) {\r\n this.textConfig.showSuggestions = false;\r\n this.textConfig.useDictionary = false;\r\n }\r\n }\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { NotificationMessage, NotificationMessageType } from '@tilde-nlp/ngx-common';\r\nimport { Subject } from 'rxjs';\r\nimport { availableLanguages } from '../../../i18n/available-languages';\r\nimport { TldTranslateConfigService } from './tld-translate-config.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TldAlertService {\r\n\r\n constructor(private readonly config: TldTranslateConfigService) { }\r\n\r\n private messageSubject: Subject<NotificationMessage> = new Subject();\r\n\r\n get defaultParams() {\r\n return {\r\n email: this.config.coreConfig.supportEmail,\r\n registerLink: this.config.coreConfig.registerLink\r\n };\r\n }\r\n\r\n private readonly defaultErrorKey = \"ERROR_DEFAULT\";\r\n private readonly errorKey = \"ERRORS.\";\r\n private readonly numericErrorKeyPrefix = \"E_\";\r\n private readonly errorTranslationSubKeys = [\"FILE_TRANSLATION_SUBSTATUS\", \"FILE_UPLOAD\", \"AUDIO\"];\r\n // if message key has key with this postfix, message should be with title\r\n private readonly titlePostFix = \"_TITLE\";\r\n // if message key has key with this postfix, message should be with support info, it is configured and turned on\r\n private readonly supportPostFix = \"_SUPPORT\";\r\n\r\n defaultError(error?: any) {\r\n\r\n if (error) {\r\n console.error(error);\r\n }\r\n this.error(`${this.errorKey}${this.defaultErrorKey}`, error, this.defaultParams);\r\n }\r\n\r\n getMessages() {\r\n return this.messageSubject.asObservable();\r\n }\r\n\r\n info(text: string, params?: any) {\r\n this.emit(NotificationMessageType.SUCCESS, text, null, params);\r\n }\r\n\r\n error(text: string, error: any, params?: any) {\r\n console.error(error);\r\n this.emit(NotificationMessageType.ERROR, text, error, params);\r\n }\r\n\r\n warning(text: string, params?: any) {\r\n this.emit(NotificationMessageType.WARNING, text, null, params);\r\n }\r\n\r\n unhandeledError(error: any, params?: any) {\r\n if (error) {\r\n const errorKey = this.findErrorKey(error);\r\n\r\n if (errorKey) {\r\n this.error(errorKey, error, params ?? this.defaultParams);\r\n return;\r\n }\r\n }\r\n this.defaultError(error);\r\n }\r\n\r\n findErrorTitleAndLocalizationKey(error: unknown): { title: string, description: string } {\r\n const errorDescriptionKey = this.findErrorKey(error);\r\n let errorTitleKey = null;\r\n\r\n if (errorDescriptionKey) {\r\n errorTitleKey = this.findPostfix(errorDescriptionKey, this.titlePostFix);\r\n }\r\n\r\n return {\r\n description: errorDescriptionKey,\r\n title: errorTitleKey\r\n }\r\n }\r\n\r\n private findErrorKey(error: any) {\r\n if (!error) {\r\n return null;\r\n }\r\n\r\n let errorKey = null;\r\n const errorTranslations = availableLanguages.en.ERRORS;\r\n if (error instanceof HttpErrorResponse && errorTranslations[this.numericErrorKeyPrefix + error.status]) {\r\n errorKey = this.numericErrorKeyPrefix + error.status;\r\n }\r\n else if (errorTranslations[error.ErrorCode]) {\r\n errorKey = error.ErrorCode;\r\n }\r\n else if (errorTranslations[this.numericErrorKeyPrefix + error.ErrorCode]) {\r\n errorKey = this.numericErrorKeyPrefix + error.ErrorCode;\r\n }\r\n else if (errorTranslations[error.error?.ErrorCode]) {\r\n errorKey = error.error?.ErrorCode;\r\n }\r\n else if (errorTranslations[error.error]) {\r\n errorKey = error.error;\r\n }\r\n else if (errorTranslations[this.numericErrorKeyPrefix + error.error?.ErrorCode]) {\r\n errorKey = this.numericErrorKeyPrefix + error.error?.ErrorCode\r\n }\r\n\r\n if (!errorKey) {\r\n for (let i = 0; i < this.errorTranslationSubKeys.length; i++) {\r\n const subKey = this.errorTranslationSubKeys[i];\r\n const element = errorTranslations[subKey];\r\n if (element[error.ErrorCode]) {\r\n errorKey = `${subKey}.${error.ErrorCode}`;\r\n break;\r\n }\r\n }\r\n }\r\n return this.errorKey + (errorKey ?? this.defaultErrorKey);\r\n }\r\n\r\n private emit(type: NotificationMessageType, text: string, error: any, params?: any) {\r\n const message: NotificationMessage = {\r\n body: text,\r\n title: this.findPostfix(text, this.titlePostFix),\r\n type,\r\n localizationParams: { ...this.defaultParams, ...params },\r\n support: this.config.coreConfig.contactSupport ? this.findPostfix(text, this.supportPostFix) : null\r\n };\r\n if (error) {\r\n message.error = error;\r\n }\r\n this.messageSubject.next(message);\r\n }\r\n\r\n private findPostfix(text: string, postfix: string) {\r\n const parts = text.split(\".\");\r\n let localizationObject = availableLanguages.en;\r\n for (let i = 0; i < parts.length; i++) {\r\n if (i > 0) {\r\n localizationObject = localizationObject[parts[i - 1]];\r\n }\r\n if (!localizationObject[parts[i]]) {\r\n return null;\r\n }\r\n }\r\n const keyWithTitle = parts[parts.length - 1] + postfix;\r\n return localizationObject[keyWithTitle] ? text + postfix : null;\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { IHighlightSelectedSentence } from '../../tld-text/models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TldHighlightService {\r\n\r\n constructor() { }\r\n\r\n selectedTargetSentence: IHighlightSelectedSentence;\r\n\r\n private selectedTargetSentence$: Subject<{ previous: IHighlightSelectedSentence, next: IHighlightSelectedSentence}> = new Subject();\r\n\r\n onChangeSelectedTargetSentence() {\r\n return this.selectedTargetSentence$.asObservable();\r\n }\r\n\r\n changeSelectedTargetSentence(sentence: IHighlightSelectedSentence) {\r\n const observableObj = { previous: this.selectedTargetSentence, next: sentence };\r\n this.selectedTargetSentence = sentence;\r\n this.selectedTargetSentence$.next(observableObj);\r\n }\r\n}\r\n","import { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[tldDragAndDrop]'\r\n})\r\nexport class DragAndDropDirective {\r\n\r\n get disabled() { return this.element.nativeElement.disabled }\r\n\r\n @HostBinding('class.tld-file-over') active: boolean;\r\n @Output() fileDropped = new EventEmitter<any>();\r\n\r\n // Dragover listener\r\n @HostListener('dragover', ['$event']) onDragOver(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.active = !this.disabled;\r\n }\r\n\r\n // Dragleave listener\r\n @HostListener('dragleave', ['$event']) public onDragLeave(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.active = false;\r\n }\r\n\r\n // Drop listener\r\n @HostListener('drop', ['$event']) public ondrop(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.active = false;\r\n if(this.disabled){\r\n return;\r\n }\r\n let files = evt.dataTransfer.files;\r\n if (files.length > 0) {\r\n this.fileDropped.emit(files);\r\n }\r\n }\r\n\r\n constructor(private readonly element: ElementRef) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { availableLanguages } from '../../../i18n/available-languages';\r\n\r\n/**\r\n * @deprecated This pipe should not be used. To translate domains - check ngx-common readme about custom MissingTranslationHandler.\r\n */\r\n@Pipe({\r\n name: 'translateDomain'\r\n})\r\nexport class TranslateDomainPipe implements PipeTransform {\r\n constructor(private readonly translate: TranslateService){}\r\n\r\n transform(domainName: string): string {\r\n const autoKey = \"Auto\";\r\n const domainKey = (domainName ?? autoKey).toUpperCase().replace(\" \", \"_\").replace(\"-\", \"_\");\r\n const domainTranslations = availableLanguages[this.translate.currentLang]?.DOMAINS ?? availableLanguages[this.translate.defaultLang]?.DOMAINS;\r\n return domainTranslations?.[domainKey] ?? domainName ?? autoKey;\r\n }\r\n\r\n}\r\n","import { Component } from '@angular/core'\r\n\r\n@Component({\r\n selector: 'tld-translate-achievement',\r\n templateUrl: './tld-translate-achievement.component.html',\r\n styleUrls: ['./tld-translate-achievement.component.scss']\r\n})\r\nexport class TldTranslateAchievementComponent{\r\n link = \"https://tilde.com/news/tilde-machine-translation-technology-announced-worlds-most-accurate-wmt-competition\";\r\n}\r\n","<div>\r\n <div fxLayout=\"row\">\r\n <mat-icon class=\"nmt-icon\" svgIcon=\"best_mt\" color=\"accent\" aria-hidden=\"false\" aria-label=\"\"></mat-icon>\r\n <div fxLayout=\"column\" fxLayoutAlign=\"center start\" class=\"best-mt\">\r\n {{ 'TLD_TRANSLATE.BEST_NMT' | translate }}\r\n <br class=\"d-none d-lg-block\">\r\n <a class=\"achievement-link\" [attr.href]=\"link\"\r\n target=\"_blank\">\r\n {{ 'TLD_TRANSLATE.BEST_NMT_MORE' | translate }}\r\n </a>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'tld-loader',\r\n templateUrl: './tld-loader.component.html',\r\n styleUrls: ['./tld-loader.component.scss']\r\n})\r\nexport class TldLoaderComponent {\r\n}\r\n","\r\n<div class=\"tld-loader accent-color\" fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <div class=\"accent-bg-color tld-loader-element element-1\"></div>\r\n <div class=\"accent-bg-color tld-loader-element element-2\"></div>\r\n <div class=\"accent-bg-color tld-loader-element element-3\"></div>\r\n</div>\r\n","import { Component, Input, ViewChild } from '@angular/core';\r\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\r\n selector: 'tld-open-close-button',\r\n templateUrl: './open-close-button.component.html',\r\n styleUrls: ['./open-close-button.component.scss']\r\n})\r\nexport class TldOpenCloseButtonComponent {\r\n\r\n @ViewChild(MatButton) button: MatButton;\r\n\r\n private _isOpened;\r\n get isOpened() { return this._isOpened; }\r\n @Input() disableFocusOnAction: boolean;\r\n @Input() set isOpened(value: boolean) {\r\n if (this._isOpened && !value && !this.disableFocusOnAction) {\r\n this.focus();\r\n }\r\n this._isOpened = value;\r\n };\r\n @Input() disabled: boolean;\r\n @Input() isIcon: boolean;\r\n @Input() ariaLabelCode: string;\r\n\r\n focus() {\r\n this.button.focus();\r\n }\r\n\r\n}\r\n","<button [disableRipple]=\"true\" [ngClass.lt-md]=\"'open-close-button-tablet'\" mat-button [disabled]=\"disabled\" *ngIf=\"!isIcon\"\r\n [attr.aria-label]=\"ariaLabelCode | translate\">\r\n <span fxLayout=\"row\" fxLayoutAlign=\"center center\">\r\n <span class=\"open-close-button-content\" fxLayoutAlign=\"center center\">\r\n <ng-content></ng-content>\r\n </span>\r\n <span class=\"material-icons\">\r\n {{isOpened?'arrow_drop_up':'arrow_drop_down'}}\r\n </span>\r\n </span>\r\n</button>\r\n<button mat-icon-button [disabled]=\"disabled\" *ngIf=\"isIcon\" fxLayoutAlign=\"center center\"\r\n [attr.aria-label]=\"ariaLabelCode | translate\">\r\n <span class=\"material-icons\">\r\n {{isOpened?'arrow_drop_up':'arrow_drop_down'}}\r\n </span>\r\n</button>\r\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnDestroy, Output, ViewChild } from '@angular/core';\r\nimport { MatMenu } from '@angular/material/menu';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { ILangListItem, ILanguageWithTranslation, ISelectedLanguage } from '../../models';\r\nimport { TldOpenCloseButtonComponent } from '../open-close-button/open-close-button.component';\r\n\r\n@Component({\r\n selector: 'tld-lang-list',\r\n templateUrl: './tld-lang-list.component.html',\r\n styleUrls: ['./tld-lang-list.component.scss']\r\n})\r\nexport class TldLangListComponent implements AfterViewInit, OnDestroy {\r\n //available only after view initialized\r\n @ViewChild(\"wrapper\") wrapper: ElementRef;\r\n @ViewChild(MatMenu) menu: MatMenu;\r\n @ViewChild(TldOpenCloseButtonComponent) openCloseButton: TldOpenCloseButtonComponent;\r\n\r\n //Inputs\r\n @Input() disabled: boolean;\r\n @Input() pxPerLanguage: number = 100;\r\n\r\n @Input() set languages(languageList: ILangListItem[]) {\r\n setTimeout(() => {\r\n this.languageList = languageList || [];\r\n this.recreateLanguageLists();\r\n }, 0)\r\n\r\n };\r\n\r\n /** Id for panel class. For testing purposes. */\r\n @Input() testId: string;\r\n\r\n private _selected: ISelectedLanguage;\r\n @Input() set selected(val: ISelectedLanguage) {\r\n this._selected = val;\r\n this.ensureSelectedIsVisible();\r\n };\r\n get selected() { return this._selected; }\r\n\r\n private _maxDisplayedLanguages: number;\r\n @Input() set maxDisplayedLanguages(val: number) {\r\n if (this._maxDisplayedLanguages === val) {\r\n return;\r\n }\r\n\r\n this._maxDisplayedLanguages = val;\r\n this.recreateLanguageLists();\r\n }\r\n get maxDisplayedLanguages() {\r\n return this._maxDisplayedLanguages;\r\n }\r\n\r\n get firstVisible() {\r\n return this.visibleLanguageList?.[0];\r\n }\r\n @Input() showDomainsWithLanguageName: boolean;\r\n //Outputs\r\n @Output() onLanguageChange: EventEmitter<string> = new EventEmitter<string>();\r\n @Output() onDomainChange: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n //public variables\r\n currentLanguage: string;\r\n menuLanguageList: ILanguageWithTranslation[] = [];\r\n visibleLanguageList: ILanguageWithTranslation[] = [];\r\n\r\n readonly menuTriggerAriaCode = \"ARIA_LABELS.OTHER_LANGUAGES_TRIGGER\";\r\n readonly languageLocalizationKey = \"LANGUAGES\"\r\n readonly languageCodePropertyName = \"code\";\r\n //Private variables and their accessors\r\n //necessary because domain name will show next to language if multiple domains available\r\n private duplicateCodes: string[] = [];\r\n private languageList: ILangListItem[] = [];\r\n\r\n private readonly destroy$ = new Subject();\r\n\r\n constructor(private readonly translate: TranslateService) {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.menu.overlayPanelClass = \"language-menu-overlay\";\r\n this.translate.onLangChange.pipe(\r\n takeUntil(this.destroy$)\r\n ).subscribe((lang) => {\r\n this.currentLanguage = lang.lang;\r\n this.toogleDomainVisibility();\r\n })\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(null)\r\n this.destroy$.complete();\r\n }\r\n\r\n onMenuOpen() {\r\n const panel = document.getElementById(this.menu.panelId);\r\n // disables tilde web translator for lang menu\r\n panel.setAttribute(\"translate\", \"no\");\r\n if (this.testId) {\r\n panel.setAttribute(\"data-test-id\", this.testId);\r\n }\r\n }\r\n\r\n isActive(language: any | ILanguageWithTranslation) {\r\n return this.isEqualWithSelected(language);\r\n }\r\n selectLanguage(language: ILanguageWithTranslation) {\r\n if (this.isEqualWithSelected(language)) {\r\n return;\r\n }\r\n\r\n if (this.showDomainsWithLanguageName) {\r\n this.onDomainChange.emit(language.systemId);\r\n }\r\n else {\r\n this.onLanguageChange.emit(language.code);\r\n }\r\n }\r\n\r\n /**\r\n * Creates visible language list and menu language list that is used in template.\r\n * Uses component variable \"languageList\" which gets passed as input param.\r\n */\r\n private recreateLanguageLists() {\r\n const visibleLanguages: ILanguageWithTranslation[] = [];\r\n const menuLanguages: ILanguageWithTranslation[] = [];\r\n const languageCodes: string[] = [];\r\n this.duplicateCodes = [];\r\n for (var i = 0; i < this.languageList.length; i++) {\r\n const language = this.languageList[i];\r\n if (languageCodes.indexOf(language.lang) >= 0) {\r\n this.duplicateCodes.push(language.lang);\r\n if (!this.showDomainsWithLanguageName) {\r\n continue;\r\n }\r\n }\r\n languageCodes.push(language.lang);\r\n\r\n const languageWithTranslation: ILanguageWithTranslation =\r\n {\r\n code: language.lang,\r\n //will be set later, together with domain translation\r\n showDomain: false,\r\n domain: language.domain,\r\n systemId: language.systemId,\r\n };\r\n\r\n if (visibleLanguages.length < this.maxDisplayedLanguages) {\r\n visibleLanguages.push(languageWithTranslation);\r\n }\r\n if(this.maxDisplayedLanguages===1 || visibleLanguages.length >= this.maxDisplayedLanguages) {\r\n menuLanguages.push(languageWithTranslation);\r\n }\r\n }\r\n this.visibleLanguageList = visibleLanguages;\r\n this.menuLanguageList = menuLanguages;\r\n this.toogleDomainVisibility();\r\n this.ensureSelectedIsVisible();\r\n }\r\n\r\n private ensureSelectedIsVisible() {\r\n // Loop visible languages and if selected is visible, then no reordering necessary.\r\n for (var i = 0; i < this.visibleLanguageList.length; i++) {\r\n const lang = this.visibleLanguageList[i];\r\n if (this.isEqualWithSelected(lang)) {\r\n return;\r\n }\r\n }\r\n\r\n // If selected lang not visible, make it visible from menu languages\r\n for (var i = 0; i < this.menuLanguageList.length; i++) {\r\n const lang = this.menuLanguageList[i];\r\n if (this.isEqualWithSelected(lang)) {\r\n const deletedVisible = this.visibleLanguageList.splice(0, 1, lang)[0];\r\n\r\n // if max visible length === 1, then it is ok that visible lang is also in menu langs. \r\n if (this.maxDisplayedLanguages !== 1) {\r\n this.menuLanguageList.splice(i, 1, deletedVisible);\r\n }\r\n return;\r\n }\r\n }\r\n }\r\n\r\n private isEqualWithSelected(lang: ILanguageWithTranslation) {\r\n return lang && ((!this.showDomainsWithLanguageName && lang.code === this.selected.code)\r\n || (this.showDomainsWithLanguageName && lang.systemId === this.selected.systemId))\r\n }\r\n\r\n private toogleDomainVisibility() {\r\n [...this.visibleLanguageList, ...this.menuLanguageList].forEach(\r\n (language) => {\r\n language.showDomain = this.showDomainsWithLanguageName && this.duplicateCodes.includes(language.code) ? true : false;\r\n });\r\n }\r\n\r\n}\r\n","<div fxLayout=\"row\" class=\"tld-lang-list-wrapper\" fxLayoutAlign=\"start center\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" role=\"list\" class=\"tld-lang-list\"\r\n [ngClass]=\"{'single-element-list': visibleLanguageList.length === 1}\">\r\n <ng-container *ngIf=\"visibleLanguageList.length>1 else singleLanguageList\">\r\n <div role=\"listitem\" *ngFor=\"let language of visibleLanguageList | sortTranslations: languageLocalizationKey:languageCodePropertyName:currentLanguage | async\" class=\"tld-language-list-element\"\r\n [ngClass]=\"{'active accent-color' : isActive(language)}\">\r\n <ng-template [ngTemplateOutlet]=\"languageButton\" [ngTemplateOutletContext]=\"{ language: language }\">\r\n </ng-template>\r\n </div>\r\n <ng-template *ngIf=\"menuLanguageList.length>0\" [ngTemplateOutlet]=\"menuDropDown\" [ngTemplateOutletContext]=\"{ isIcon: true}\"></ng-template>\r\n </ng-container>\r\n </div>\r\n <ng-content></ng-content>\r\n <mat-menu #languageMenu=\"matMenu\" fxLayout=\"column\" class=\"language-menu\">\r\n <ng-container *ngFor=\"let language of menuLanguageList | sortTranslations: languageLocalizationKey:languageCodePropertyName:currentLanguage | async\">\r\n <ng-template [ngTemplateOutlet]=\"languageButton\" [ngTemplateOutletContext]=\"{ language: language }\"></ng-template>\r\n </ng-container>\r\n </mat-menu>\r\n</div>\r\n\r\n<!-- Template for one visible language with menu languages. -->\r\n<ng-template #singleLanguageList>\r\n <ng-container *ngIf=\" menuLanguageList.length > 0 else UnclickableLanguage\">\r\n <ng-template [ngTemplateOutlet]=\"menuDropDown\" [ngTemplateOutletContext]=\"{ isIcon: false}\"></ng-template>\r\n </ng-container>\r\n</ng-template>\r\n<!-- ------------------------ -->\r\n\r\n<!-- Template if only one language is in list and no menu languages. This language needs no cursor or click events.-->\r\n<ng-template #UnclickableLanguage>\r\n <button color=\"primary\" [attr.aria-label]=\"'LANGUAGES.' + (firstVisible.code | uppercase) | translate\" *ngIf=\"firstVisible\" class=\"language-title no-highlight no-action\">\r\n <ng-template [ngTemplateOutlet]=\"languageNameWithDomain\" [ngTemplateOutletContext]=\"{ language: firstVisible}\"></ng-template>\r\n </button>\r\n</ng-template>\r\n<!-- ------------------------ -->\r\n\r\n<!-- templates for language names and other small repeated parts of this component-->\r\n<ng-template #menuDropDown let-isIcon=\"isIcon\">\r\n <tld-open-close-button [isIcon]=\"isIcon\" [ngClass]=\"{'language-title no-highlight' : !isIcon}\" [disabled]=\"disabled\"\r\n #state=\"matMenuTrigger\" (menuOpened)=\"onMenuOpen()\" [matMenuTriggerFor]=\"languageMenu\" [isOpened]=\"state.menuOpen\"\r\n [ariaLabelCode]=\"menuTriggerAriaCode\">\r\n <ng-template *ngIf=\"!isIcon\" [ngTemplateOutlet]=\"languageNameWithDomain\"\r\n [ngTemplateOutletContext]=\"{ language: firstVisible }\">\r\n </ng-template>\r\n </tld-open-close-button>\r\n</ng-template>\r\n\r\n<ng-template #languageButton let-language=\"language\">\r\n <button fxLayoutAlign=\"start center\" [ngClass]=\"{'active accent-color' : isActive(language)}\" mat-menu-item\r\n *ngIf=\"language\" class=\"language-title\" (click)=\"selectLanguage(language)\" [disabled]=\"disabled\"\r\n [attr.aria-label]=\"languageLocalizationKey + '.' + (language.code | uppercase) | translate\">\r\n <span>{{languageLocalizationKey + '.' + (language.code | uppercase) | translate}}</span>&nbsp;\r\n <span class=\"domain\" *ngIf=\"language.showDomain\"> ({{language.domain | translateDomain}})</span>\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #languageNameWithDomain let-language=\"language\">\r\n <span>{{languageLocalizationKey + '.' + (language.code | uppercase) | translate}}</span>\r\n <span fxHide.lt-sm *ngIf=\"language.showDomain\">\r\n <span>&nbsp;(</span>\r\n <span class=\"domain\">{{language.domain | translateDomain}}</span>\r\n <span>)</span>\r\n </span>\r\n</ng-template>\r\n<!-- ------------------------ -->","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { IFileUploadError, FileUploadErrorTypeEnum } from '../../models';\r\n\r\n@Component({\r\n selector: 'tld-file-upload',\r\n templateUrl: './tld-file-upload.component.html',\r\n styleUrls: ['./tld-file-upload.component.scss']\r\n})\r\nexport class TldFileUploadComponent {\r\n\r\n @ViewChild('fileInput') fileInput: ElementRef;\r\n @ViewChild('inputButton', { read: ElementRef }) inputButton: ElementRef;\r\n\r\n @Output() fileChange: EventEmitter<File[]> = new EventEmitter<File[]>();\r\n @Output() onError: EventEmitter<IFileUploadError> = new EventEmitter<IFileUploadError>();\r\n private _accept: string[] = [];\r\n @Input() set accept(val: string[]) {\r\n this._accept = val;\r\n this.allowedExtensions = val ? val.join(\",\") : \"\";\r\n };\r\n get accept() { return this._accept };\r\n @Input() maxSize: number;\r\n @Input() multiple = false;\r\n @Input() filePreviewProgress: number;\r\n @Input() allowEmpty: boolean;\r\n @Input() disabled: boolean;\r\n\r\n /** same as accept but for registered users. It changes error message if extension is supported for registered users. */\r\n @Input() extendedAcceptList: string[];\r\n\r\n allowedExtensions: string;\r\n\r\n handleFileInput(event: any) {\r\n this.validate(event.target.files);\r\n }\r\n\r\n\r\n onFileDrop(files: FileList) {\r\n this.validate(files);\r\n }\r\n\r\n private emit(files: File[]) {\r\n if (files && files.length > 0) {\r\n this.fileChange.emit(files);\r\n }\r\n }\r\n\r\n private emitError(error: IFileUploadError) {\r\n this.onError.emit(error);\r\n }\r\n\r\n private validate(files: FileList) {\r\n //let size = 0;\r\n const validFiles: File[] = [];\r\n for (let i = 0; i < files.length; i++) {\r\n const file = files[i];\r\n if (!this.allowEmpty && file.size == 0) {\r\n this.emitError({ code: FileUploadErrorTypeEnum.FILE_EMPTY, error: \"File is empty\", fileName: file.name });\r\n return;\r\n }\r\n //size += file.size;\r\n const extensionErrorCode = this.getExtensionErrorCode(file.name);\r\n if (extensionErrorCode) {\r\n const error = { code: extensionErrorCode, error: \"Not valid extension.\", fileName: file.name };\r\n this.emitError(error);\r\n }\r\n else if (this.maxSize && file.size > this.maxSize) {\r\n const error = { code: FileUploadErrorTypeEnum.MAX_SIZE, error: \"Maximum allowed file size exceeded.\", fileName: file.name };\r\n this.emitError(error);\r\n }\r\n else{\r\n validFiles.push(file);\r\n }\r\n }\r\n\r\n this.emit(validFiles);\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n\r\n private getExtensionErrorCode(fileName: string): FileUploadErrorTypeEnum {\r\n const extension = fileName.slice(fileName.lastIndexOf('.')).toLowerCase()\r\n if (\r\n this.accept.length == 0 || (this.accept.length == 1 && this.accept[0] == '*') || this.accept.includes(extension)) {\r\n return null;\r\n }\r\n else {\r\n return this.extendedAcceptList?.includes(extension) ? FileUploadErrorTypeEnum.FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER : FileUploadErrorTypeEnum.FILE_UPLOAD_UNSUPPORTED_FORMAT;\r\n }\r\n }\r\n\r\n}\r\n","<div class=\"file-upload\" [ngClass.lt-sm]=\"'file-upload-mobile'\">\r\n <mat-progress-bar class=\"tld-file-upload-progress\" color=\"primary\" [value]=\"filePreviewProgress\"\r\n *ngIf=\"filePreviewProgress\"></mat-progress-bar>\r\n <button tldDragAndDrop #inputButton mat-button (fileDropped)=\"onFileDrop($event)\" [disabled]=\"disabled\" type=\"button\"\r\n (click)=\"fileInput.click()\" class=\"upload-button\">\r\n <ng-content></ng-content>\r\n </button>\r\n</div>\r\n<input #fileInput type=\"file\" (change)=\"handleFileInput($event)\" name=\"files\" class=\"native-file-input\"\r\n [accept]=\"allowedExtensions\" [multiple]=\"multiple\" />","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ITldTranslateMessage } from '../../models';\r\n\r\n@Component({\r\n selector: 'tld-message',\r\n templateUrl: './tld-message.component.html',\r\n styleUrls: ['./tld-message.component.scss']\r\n})\r\nexport class TldMessageComponent implements OnInit {\r\n\r\n constructor() { }\r\n \r\n @Input() message: ITldTranslateMessage;\r\n @Input() contentProjection: boolean;\r\n @Input() hideClose = false;\r\n @Output() onClose: EventEmitter<any> = new EventEmitter();\r\n\r\n get id() {\r\n return this.message?.params?.id || \"\";\r\n }\r\n get closeButtonId() {\r\n return this.message?.params?.closeButtonId || \"\";\r\n }\r\n\r\n className: string;\r\n readonly ClearLabelCode = \"CLEAR_NOTIFICATION\";\r\n\r\n ngOnInit(): void {\r\n if (!this.message) {\r\n return;\r\n }\r\n\r\n this.className = this.message.type.toLowerCase();\r\n }\r\n\r\n close() {\r\n if (this.message?.params?.parentId) {\r\n const parent = document.getElementById(this.message.params.parentId);\r\n if (parent) {\r\n parent.focus();\r\n }\r\n }\r\n\r\n this.onClose.emit();\r\n }\r\n}\r\n","<div fxFlex fxLayout=\"row\" aria-live=\"polite\" class=\"info-message-box {{className}}\" [attr.id]=\"id\" >\r\n <div fxFlex class=\"message-box-text\" *ngIf=\"!contentProjection\" [innerHtml]=\"message.text | translate: message.params\"></div>\r\n <ng-content *ngIf=\"contentProjection\"></ng-content>\r\n <tld-close-button [ariaCode]=\"ClearLabelCode\" *ngIf=\"!hideClose\" (tldClick)=\"close()\" [attr.id]=\"closeButtonId\"></tld-close-button>\r\n</div>\r\n","import { animate, keyframes, state, style, transition, trigger } from \"@angular/animations\";\r\n\r\nexport const pulseAnimation = trigger('pulse', [\r\n state(\"true\", style({})),\r\n state(\"false\", style({})),\r\n transition('false <=> true', animate('1.5s ease', keyframes(\r\n [\r\n style({ offset: 0 }),\r\n style({ boxShadow: '0 0 0 15px rgb(173, 35, 74, 10%)', offset: 0.7 }),\r\n style({ boxShadow: '0 0 0 0', offset: 1 }),\r\n ]\r\n )))\r\n])","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TldTranslateButtonService {\r\n\r\n private onClick = new Subject<any>();\r\n private readonly pulseAnimation = new EventEmitter();\r\n\r\n constructor() { }\r\n\r\n actionButtonClicked() {\r\n this.onClick.next(null)\r\n }\r\n\r\n getActionClick() {\r\n return this.onClick.asObservable();\r\n }\r\n\r\n pulseButton(){\r\n this.pulseAnimation.next(null)\r\n }\r\n\r\n onPulseAnimation(){\r\n return this.pulseAnimation.asObservable();\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { pulseAnimation } from '../../animations/pulse.animation';\r\nimport { TldTranslateButtonService } from './tld-translate-button.service';\r\n\r\n@Component({\r\n selector: 'tld-translate-button',\r\n templateUrl: './translate-button.component.html',\r\n styleUrls: ['./translate-button.component.scss'],\r\n animations: [\r\n pulseAnimation\r\n ]\r\n})\r\nexport class TldTranslateButtonComponent implements OnDestroy, OnInit {\r\n\r\n @Input() disabled: boolean;\r\n @Input() enablePulseAnimation: boolean;\r\n @Output() clicked: EventEmitter<null> = new EventEmitter();\r\n\r\n private pulseCounter;\r\n private readonly maxPulseCount = 3;\r\n\r\n animationState: boolean = false;\r\n private subscription: Subscription;\r\n\r\n constructor(private service: TldTranslateButtonService) { }\r\n\r\n ngOnInit(): void {\r\n this.subscription = this.translateButtonAnimation();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n actionClick() {\r\n this.service.actionButtonClicked();\r\n this.clicked.next(null);\r\n }\r\n\r\n onAnimationEnd() {\r\n this.pulse();\r\n }\r\n\r\n private translateButtonAnimation() {\r\n return this.service.onPulseAnimation()\r\n .subscribe(() => {\r\n if (this.enablePulseAnimation) {\r\n this.pulseCounter = 0;\r\n this.pulse();\r\n }\r\n })\r\n }\r\n\r\n private pulse() {\r\n if (this.pulseCounter < this.maxPulseCount && (this.pulseCounter === 0 || !this.disabled)) {\r\n this.animationState = !this.animationState;\r\n this.pulseCounter += 1;\r\n }\r\n }\r\n}\r\n","<button id=\"tld-translate-button\" [@pulse]=\"animationState\" (@pulse.done)=\"onAnimationEnd()\" class=\"translate-button text-l\" mat-flat-button\r\n color=\"accent\" [disabled]=\"disabled\" (click)=\"actionClick()\">{{'TLD_TRANSLATE.TOOLTIP_ACTION' | translate}}</button>","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { MatMenu } from '@angular/material/menu';\r\n\r\n@Component({\r\n selector: 'tld-list-menu',\r\n templateUrl: './tld-list-menu.component.html',\r\n styleUrls: ['./tld-list-menu.component.scss']\r\n})\r\nexport class TldListMenuComponent {\r\n @ViewChild(MatMenu) menu: MatMenu;\r\n\r\n /** Title key. Should be set if element is not string. */\r\n @Input() titleKey: string;\r\n @Input() list: any[];\r\n\r\n @Input() showContent = true;\r\n\r\n selected: any;\r\n @Input() set selectedValue(value: any) {\r\n for (const el of this.list) {\r\n if ((this.valueKey && value === el[this.valueKey]) || (!this.valueKey && value === el)) {\r\n this.selected = el;\r\n return;\r\n }\r\n }\r\n this.selected = null;\r\n };\r\n @Input() disabled: boolean;\r\n /** Open menu button aria label */\r\n @Input() ariaLabel: string;\r\n /** Which property of object should be emitted when element is selected. By default, object is returned. */\r\n @Input() valueKey: string;\r\n /** For testing purposes. Adds this to attributes for wrapper. */\r\n @Input() testId: string;\r\n @Output() selectionChange: EventEmitter<any> = new EventEmitter();\r\n\r\n select(element: any) {\r\n this.selectionChange.next(this.valueKey ? element?.[this.valueKey] : element);\r\n }\r\n\r\n onMenuOpen() {\r\n if (this.testId) {\r\n const panel = document.getElementById(this.menu.panelId);\r\n panel.setAttribute(\"data-test-id\", this.testId);\r\n }\r\n }\r\n}\r\n","<tld-open-close-button [isOpened]=\"state.menuOpen\" #state=\"matMenuTrigger\" [disabled]=\"disabled\"\r\n\r\n[matMenuTriggerFor]=\"listMenu\" (menuOpened)=\"onMenuOpen()\" [ariaLabelCode]=\"ariaLabel\">\r\n <ng-content *ngIf=\"showContent\"></ng-content>\r\n <ng-container *ngIf=\"!showContent && selected\">\r\n <span>{{(titleKey? selected[titleKey]:selected) | titlecase}}</span>\r\n </ng-container>\r\n</tld-open-close-button>\r\n<mat-menu #listMenu=\"matMenu\" fxLayout=\"column\">\r\n <ng-container *ngFor=\"let element of list\">\r\n <button fxLayoutAlign=\"start center\" mat-menu-item [attr.aria-label]=\"(titleKey? element[titleKey]:element)\"\r\n *ngIf=\"element\" class=\"tld-list-title\" (click)=\"select(element)\" [disabled]=\"disabled\">\r\n {{(titleKey? element[titleKey]:element) | titlecase}}\r\n </button>\r\n </ng-container>\r\n</mat-menu>","import { Component, Input, OnDestroy } from '@angular/core';\r\nimport { TextToSpeechSettings } from './models/text-to-speech-settings.model';\r\n\r\n@Component({\r\n selector: 'tld-text-to-speech',\r\n templateUrl: './text-to-speech.component.html',\r\n styleUrls: ['./text-to-speech.component.scss']\r\n})\r\nexport class TextToSpeechComponent implements OnDestroy {\r\n\r\n get isPaused() {\r\n return this.audio?.paused;\r\n }\r\n private audio: HTMLAudioElement;\r\n\r\n private _settings: TextToSpeechSettings;\r\n get settings() { return this._settings; }\r\n @Input() set settings(value) {\r\n this._settings = value;\r\n this.disposeAudio();\r\n this.audio = new Audio();\r\n }\r\n\r\n constructor() { }\r\n\r\n clicked() {\r\n if (this.isPaused) {\r\n this.play();\r\n }\r\n else {\r\n this.pause();\r\n }\r\n }\r\n\r\n private pause() {\r\n this.audio.pause();\r\n }\r\n\r\n private play() {\r\n if (!this.audio.src) {\r\n this.audio = new Audio();\r\n const trimmedText = (this.settings?.maxCharsInText && this.settings.maxCharsInText < this.settings.text.length) ? this.settings.text.slice(0, this.settings.maxCharsInText) : this.settings.text;\r\n let src = `${this.settings.url}?text=${trimmedText}`;\r\n if (this.settings.voice) {\r\n src += `&voice=${this.settings.voice}`;\r\n }\r\n if (this.settings.langBpc47) {\r\n src += `&lang=${this.settings.langBpc47}`;\r\n }\r\n\r\n this.audio.src = src;\r\n this.audio.load();\r\n }\r\n\r\n this.audio.play();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.disposeAudio();\r\n }\r\n\r\n private disposeAudio() {\r\n if (this.audio) {\r\n this.audio.src = null;\r\n this.audio = null;\r\n }\r\n }\r\n\r\n}\r\n","<button mat-icon-button (click)=\"clicked()\"\r\n [matTooltip]=\"(isPaused? 'TEXT_TO_SPEECH.PLAY':'TEXT_TO_SPEECH.PAUSE')|translate\">\r\n <span class=\"material-icons\">\r\n {{isPaused? \"volume_up\": \"pause\" }}\r\n </span>\r\n</button>\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { CloseButtonComponent } from '@tilde-nlp/ngx-common';\r\nimport { TextToSpeechSettings } from '../../../../components/shared/text-to-speech/models/text-to-speech-settings.model';\r\n\r\n@Component({\r\n selector: 'tld-source-and-target-wrapper',\r\n templateUrl: './source-and-target-wrapper.component.html',\r\n styleUrls: ['./source-and-target-wrapper.component.scss']\r\n})\r\nexport class SourceAndTargetWrapperComponent implements OnInit {\r\n\r\n @ViewChild(\"clearButton\") clearButton: CloseButtonComponent;\r\n\r\n @Input() clearSourceVisible: boolean;\r\n @Input() clearSourceTooltip: string;\r\n @Input() clearDisabled: boolean;\r\n @Input() hideAchievement: boolean;\r\n @Input() textToSpeechSourceSettings: TextToSpeechSettings;\r\n\r\n @Output() onSourceClear = new EventEmitter<any>();\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n clearSource(){\r\n this.onSourceClear.emit();\r\n }\r\n\r\n focusClearButton(){\r\n this.clearButton?.clearButton.focus();\r\n }\r\n}\r\n","<div fxLayout=\"row\" class=\"source-target-wrapper\" fxLayout.lt-md=\"column\">\r\n <div class=\"source-wrapper\" [ngClass.gt-sm]=\"'tld-default-border-right'\" [ngClass.lt-md]=\"'tld-default-border-bottom'\"\r\n fxFlex fxLayout=\"column\">\r\n <div fxLayout=\"column\" class=\"source-wrapper-action-buttons\">\r\n <tld-close-button [tooltip]=\"clearSourceTooltip\" #clearButton (tldClick)=\"clearSource()\"\r\n *ngIf=\"clearSourceVisible\" [disabled]=\"clearDisabled\"></tld-close-button>\r\n <tld-text-to-speech *ngIf=\"textToSpeechSourceSettings\" [settings]=\"textToSpeechSourceSettings\">\r\n </tld-text-to-speech>\r\n </div>\r\n <div class=\"source-container\" fxFlex>\r\n <ng-content select=\"[sourceMain]\"></ng-content>\r\n </div>\r\n <div class=\"source-action-wrapper\">\r\n <ng-content select=\"[sourceActions]\"></ng-content>\r\n </div>\r\n </div>\r\n <div class=\"target-wrapper\" fxLayout=\"column\" fxFlex=\"50\">\r\n <div class=\"target-container\" fxFlex cdkScrollable>\r\n <ng-content select=\"[targetMain]\"></ng-content>\r\n </div>\r\n <div class=\"target-action-wrapper\">\r\n <ng-content select=\"[targetActions]\"></ng-content>\r\n </div>\r\n <tld-translate-achievement *ngIf=\"!hideAchievement\"></tld-translate-achievement>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TextToSpeechComponent } from './text-to-speech.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TextToSpeechComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n TranslateModule,\r\n MatTooltipModule\r\n ],\r\n exports: [\r\n TextToSpeechComponent\r\n ]\r\n})\r\nexport class TextToSpeechModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n@NgModule({\r\n exports: [\r\n MatButtonModule,\r\n MatCardModule,\r\n MatDividerModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatMenuModule,\r\n MatPaginatorModule,\r\n MatProgressBarModule,\r\n MatSortModule,\r\n MatTableModule,\r\n MatTabsModule,\r\n MatToolbarModule,\r\n MatTooltipModule,\r\n MatSelectModule,\r\n MatCheckboxModule,\r\n MatDatepickerModule,\r\n MatRadioModule,\r\n MatDialogModule,\r\n FlexLayoutModule,\r\n MatSnackBarModule,\r\n MatFormFieldModule\r\n ]\r\n})\r\nexport class MaterialModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CloseButtonModule, SortTranslationsModule } from '@tilde-nlp/ngx-common';\r\nimport { TextToSpeechModule } from '../../components/shared/text-to-speech/text-to-speech.module';\r\nimport { MaterialModule } from '../material.module';\r\nimport { TldOpenCloseButtonComponent } from './components/open-close-button/open-close-button.component';\r\nimport { SourceAndTargetWrapperComponent } from './components/source-and-target-wrapper/source-and-target-wrapper.component';\r\nimport { TldFileUploadComponent } from './components/tld-file-upload/tld-file-upload.component';\r\nimport { TldLangListComponent } from './components/tld-lang-list/tld-lang-list.component';\r\nimport { TldListMenuComponent } from './components/tld-list-menu/tld-list-menu.component';\r\nimport { TldLoaderComponent } from './components/tld-loader/tld-loader.component';\r\nimport { TldMessageComponent } from './components/tld-message/tld-message.component';\r\nimport { TldTranslateAchievementComponent } from './components/tld-translate-achievement/tld-translate-achievement.component';\r\nimport { TldTranslateButtonComponent } from './components/translate-button/translate-button.component';\r\nimport { DragAndDropDirective } from './directives/drag-and-drop.directive';\r\nimport { TranslateDomainPipe } from './pipes/translate-domain.pipe';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TldFileUploadComponent,\r\n DragAndDropDirective,\r\n TldTranslateAchievementComponent,\r\n TldLangListComponent,\r\n TldLoaderComponent,\r\n TldMessageComponent,\r\n TldTranslateButtonComponent,\r\n TldOpenCloseButtonComponent,\r\n TranslateDomainPipe,\r\n TldListMenuComponent,\r\n SourceAndTargetWrapperComponent\r\n ],\r\n imports: [\r\n FormsModule,\r\n CommonModule,\r\n MaterialModule,\r\n TranslateModule,\r\n CloseButtonModule,\r\n SortTranslationsModule,\r\n TextToSpeechModule\r\n ],\r\n exports: [\r\n TldFileUploadComponent,\r\n DragAndDropDirective,\r\n TldTranslateAchievementComponent,\r\n TldLangListComponent,\r\n TldLoaderComponent,\r\n TldMessageComponent,\r\n TldTranslateButtonComponent,\r\n TldOpenCloseButtonComponent,\r\n TranslateDomainPipe,\r\n TldListMenuComponent,\r\n SourceAndTargetWrapperComponent,\r\n ]\r\n})\r\nexport class TldCommonModule { }\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\r\nimport { SYSTEM_SERVICE_TOKEN, TRANSLATION_API_VERSION_TOKEN } from '../../../injection-tokens';\r\nimport { Common, ILangListItem, ITldSystemApiService, TranslationApiVersion } from '../../tld-common/models';\r\nimport { System } from '../../tld-common/models/services/system/system.model';\r\nimport { TldTranslateConfigService } from '../../tld-common/services';\r\nimport { IActiveData } from '../models/active-data.model';\r\nimport { IDomain } from '../models/domain.model';\r\nimport { IVendor } from '../models/vendor.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TldSystemService {\r\n noSystemsError = false;\r\n systems: System[] = [];\r\n widgetInitialized = false;\r\n sysList = new ReplaySubject<System[]>(1);\r\n activeDomain: IDomain;\r\n canSwapLanguages: boolean;\r\n\r\n get activeVendor() {\r\n return this.activeSystem.vendor || this.defaultVendor;\r\n }\r\n\r\n get defaultVendor() {\r\n return this.config.coreConfig.defaultVendor;\r\n }\r\n\r\n get defaultDomains() {\r\n return this.config.coreConfig.defaultDomains;\r\n }\r\n\r\n private activeSystem: System;\r\n private domains: IDomain[] = [];\r\n private vendors: IVendor[] = [];\r\n private sourceLanguage: string;\r\n private targetLanguage: string;\r\n private sourceLangList: ILangListItem[] = [];\r\n private targetLangList: ILangListItem[] = [];\r\n\r\n //#region Recent system variables\r\n // Possibly from config\r\n get recentSystemsMaxCount() { return this.config.coreConfig.maxRecentSystemCount; };\r\n private recentSystems: System[] = [];\r\n //#endregion\r\n\r\n private readonly recentSystemKey = \"recentSystems\";\r\n private readonly active: BehaviorSubject<IActiveData> = new BehaviorSubject<IActiveData>(null);\r\n private readonly lastUsedSystemKey: string = \"lastUsedSystem\";\r\n\r\n constructor(private readonly config: TldTranslateConfigService,\r\n @Inject(SYSTEM_SERVICE_TOKEN) private readonly api: ITldSystemApiService,\r\n @Inject(TRANSLATION_API_VERSION_TOKEN) private readonly apiVersion) {\r\n }\r\n\r\n getSystems(): System[] {\r\n return this.systems;\r\n }\r\n\r\n changeLanguage(source: string, target: string) {\r\n const systemId = this.findCorrectSystem(source, target);\r\n this.changeSystem(systemId);\r\n }\r\n\r\n getActiveData() {\r\n return this.active.asObservable();\r\n }\r\n\r\n getActiveSystemObj(): System {\r\n return this.activeSystem;\r\n }\r\n\r\n getActiveVendorsAndDomains() {\r\n if (!this.sourceLanguage || !this.targetLanguage) {\r\n return;\r\n }\r\n const vendors: IVendor[] = [];\r\n const domains: IDomain[] = [];\r\n\r\n for (const system of this.systems) {\r\n if (!(system.sourceLanguage === this.sourceLanguage && system.targetLanguage === this.targetLanguage)) {\r\n continue;\r\n }\r\n const domain: IDomain = {\r\n domain: system.id,\r\n title: system.domain\r\n };\r\n domains.push(domain);\r\n const vendor: IVendor = {\r\n systemId: system.id,\r\n title: system.vendor\r\n }\r\n\r\n if (!vendors.includes(vendor)) {\r\n vendors.push(vendor);\r\n }\r\n\r\n if (domain.domain === this.activeSystem.id) {\r\n this.activeDomain = domain;\r\n }\r\n }\r\n\r\n this.domains = domains;\r\n this.vendors = vendors;\r\n }\r\n\r\n\r\n getLastUsedSystem(): string {\r\n return localStorage.getItem(this.lastUsedSystemKey);\r\n }\r\n\r\n getUniqueLanguages(list: ILangListItem[]): string[] {\r\n if (!list) {\r\n return [];\r\n }\r\n const titles: string[] = [];\r\n\r\n list.forEach((lang) => {\r\n const langTitle = lang.lang;\r\n const ix = titles.indexOf(langTitle);\r\n if (ix == -1) {\r\n titles.push(langTitle);\r\n }\r\n });\r\n\r\n return titles;\r\n }\r\n\r\n init(defaultSystemId: string) {\r\n this.api.getSystemList().subscribe((res: System[]) => {\r\n this.systems = res;\r\n if (res.length == 0) {\r\n this.noSystemsError = true;\r\n }\r\n\r\n if (!this.systemExists(defaultSystemId, this.systems)) {\r\n defaultSystemId = this.systems[0].id;\r\n for (let system of this.systems) {\r\n const vendor = system.vendor;\r\n if (vendor === this.defaultVendor) {\r\n defaultSystemId = system.id;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.createRecentSystemArray();\r\n this.sourceLangList = this.createLangList(this.systems);\r\n this.changeSystem(defaultSystemId);\r\n this.widgetInitialized = true;\r\n this.sysList.next(this.systems);\r\n });\r\n }\r\n\r\n setLastUsedSystem(systemId: string) {\r\n return localStorage.setItem(this.lastUsedSystemKey, systemId);\r\n }\r\n\r\n swapSystemLanguages() {\r\n this.changeLanguage(this.targetLanguage, this.sourceLanguage);\r\n }\r\n\r\n changeSystem(systemId: string, retranslate = true) {\r\n if (this.activeSystem?.id === systemId) {\r\n return;\r\n }\r\n\r\n let selectedSystem: System;\r\n for (const system of this.systems) {\r\n if (system.id === systemId) {\r\n selectedSystem = system;\r\n break;\r\n }\r\n }\r\n this.targetLangList = this.createLangList(this.systems, selectedSystem.sourceLanguage);\r\n this.targetLanguage = selectedSystem.targetLanguage;\r\n this.sourceLanguage = selectedSystem.sourceLanguage;\r\n this.activeSystem = selectedSystem;\r\n this.getActiveVendorsAndDomains();\r\n\r\n this.onActiveSystemChange(retranslate);\r\n\r\n this.setLastUsedSystem(selectedSystem.id);\r\n }\r\n\r\n systemExists(systemId: string, systemList: System[]): boolean {\r\n const systems = systemList ?? this.systems;\r\n for (let system of systems) {\r\n if (system.id === systemId) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n isTerminologySupported(system: System): boolean {\r\n return system.includesTerminology;\r\n }\r\n\r\n changeSourceLanguage(sourceLanguageCode: string) {\r\n if (sourceLanguageCode === this.activeSystem.targetLanguage) {\r\n this.changeLanguage(sourceLanguageCode, this.activeSystem.sourceLanguage);\r\n }\r\n else {\r\n this.changeLanguage(sourceLanguageCode, this.activeSystem.targetLanguage);\r\n }\r\n\r\n }\r\n\r\n changeTargetLanguage(targetLanguageCode: string) {\r\n if (targetLanguageCode === this.activeSystem.sourceLanguage) {\r\n this.changeLanguage(this.activeSystem.targetLanguage, targetLanguageCode);\r\n }\r\n else {\r\n this.changeLanguage(this.activeSystem.sourceLanguage, targetLanguageCode);\r\n }\r\n }\r\n\r\n private createRecentSystemArray() {\r\n let systemIdArray: string[];\r\n const recentSystemArray: System[] = [];\r\n try {\r\n systemIdArray = JSON.parse(localStorage.getItem(this.recentSystemKey) ?? \"[]\");\r\n }\r\n catch {\r\n return;\r\n }\r\n systemIdArray.forEach((id) => {\r\n const existingSystem = this.systems.find(system => system.id === id);\r\n if (existingSystem && !this.recentSystems.includes(existingSystem)) {\r\n recentSystemArray.push(existingSystem);\r\n }\r\n })\r\n this.recentSystems = recentSystemArray;\r\n }\r\n\r\n private addToRecentSystemArray(system: System) {\r\n const existingSystem = this.recentSystems.find(existing => existing.id === system.id);\r\n // if system already in list, put it to first position. If ix 0, no action required since latest system is already first.\r\n if (existingSystem) {\r\n const systemIxInRecentList = this.recentSystems.indexOf(existingSystem);\r\n if (systemIxInRecentList > 0) {\r\n this.recentSystems.splice(systemIxInRecentList, 1);\r\n this.recentSystems.splice(0, 0, system);\r\n }\r\n }\r\n else {\r\n // if list too long, remove last (oldest element)\r\n while (this.recentSystems.length >= this.recentSystemsMaxCount) {\r\n this.recentSystems.pop();\r\n }\r\n\r\n this.recentSystems.splice(0, 0, system);\r\n }\r\n localStorage.setItem(this.recentSystemKey, JSON.stringify(this.recentSystems.map(system => system.id)));\r\n }\r\n\r\n private canSwapSystemLanguages(): boolean {\r\n let langSwapActive = false;\r\n for (const element of this.systems) {\r\n const system = element;\r\n if (system.sourceLanguage == this.targetLanguage && system.targetLanguage == this.sourceLanguage) {\r\n langSwapActive = true;\r\n break;\r\n }\r\n }\r\n this.canSwapLanguages = langSwapActive;\r\n return langSwapActive;\r\n }\r\n\r\n private createLangList(systems: System[], srcLangCode?: string) {\r\n const langListItemArray: ILangListItem[] = [];\r\n systems.forEach((system) => {\r\n if (!srcLangCode || srcLangCode === system.sourceLanguage) {\r\n langListItemArray.push(\r\n {\r\n domain: system.domain,\r\n lang: srcLangCode ? system.targetLanguage : system.sourceLanguage,\r\n systemId: system.id,\r\n vendor: system.vendor\r\n }\r\n );\r\n }\r\n })\r\n return langListItemArray;\r\n }\r\n\r\n private findCorrectSystem(sourceLanguage: string, targetLanguage: string): string {\r\n const systems = this.systems;\r\n\r\n const systemsForLanguagePair = systems.filter(system => system.sourceLanguage === sourceLanguage && targetLanguage === system.targetLanguage);\r\n // Ideally this case should not happen, but it is possible.\r\n if (systemsForLanguagePair.length === 0) {\r\n return this.systems.find(system => system.sourceLanguage === sourceLanguage)?.id;\r\n }\r\n\r\n let systemsWithDefaultVendor = systemsForLanguagePair.filter(system => (system.vendor || this.defaultVendor) === this.defaultVendor);\r\n if (systemsWithDefaultVendor.length === 0) {\r\n systemsWithDefaultVendor = systemsForLanguagePair;\r\n }\r\n\r\n let systemsWithDefaultDomain = systemsWithDefaultVendor.filter(system => this.defaultDomains.includes(system.domain));\r\n if (systemsWithDefaultDomain.length === 0) {\r\n systemsWithDefaultDomain = systemsWithDefaultVendor;\r\n }\r\n Common.sortByArray(systemsWithDefaultDomain, this.defaultDomains, \"domain\");\r\n\r\n\r\n // V2 does not provide any info about statuses\r\n if (this.apiVersion === TranslationApiVersion.V1) {\r\n const preferredStatuses = ['running', 'queuingtransl', 'standby'];\r\n Common.sortByArray(systemsWithDefaultVendor, preferredStatuses, \"status\");\r\n }\r\n\r\n return systemsWithDefaultDomain[0].id;\r\n }\r\n\r\n private onActiveSystemChange(retranslate = true) {\r\n const system: System = this.activeSystem;\r\n this.addToRecentSystemArray(system);\r\n const vendor = this.activeSystem.vendor;\r\n this.active.next({\r\n sourceLang: {\r\n lang: this.sourceLanguage,\r\n domain: system.domain,\r\n vendor: vendor,\r\n systemId: system.id,\r\n },\r\n sourceLangList: this.sourceLangList,\r\n systemId: system.id,\r\n targetLang: {\r\n domain: system.domain,\r\n vendor: vendor,\r\n systemId: system.id,\r\n lang: this.targetLanguage\r\n },\r\n targetLangList: this.targetLangList,\r\n vendors: this.vendors,\r\n domains: { active: this.activeDomain, domains: this.domains },\r\n swapLangActive: this.canSwapSystemLanguages(),\r\n system: system,\r\n retranslate: retranslate,\r\n recentSystems: this.recentSystems\r\n });\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { InlineMessage, InlineMessageIconPosition, InlineMessageType } from '@tilde-nlp/ngx-common';\r\nimport { Subscription } from 'rxjs';\r\nimport { TldSystemService } from '../../../modules/tld-tooltip/services';\r\n\r\n@Component({\r\n selector: 'vendor-disclaimer',\r\n templateUrl: './vendor-disclaimer.component.html',\r\n styleUrls: ['./vendor-disclaimer.component.scss']\r\n})\r\nexport class VendorDisclaimerComponent implements OnInit, OnDestroy {\r\n\r\n readonly vendorMessage: InlineMessage = {\r\n description: \"VENDOR_MESSAGE.TEXT\",\r\n title: null,\r\n localizationParams: null,\r\n type: InlineMessageType.INFO,\r\n iconPosition: InlineMessageIconPosition.END,\r\n iconTooltip: \"VENDOR_MESSAGE.ICON_TOOLTIP\"\r\n };\r\n\r\n private subscription: Subscription;\r\n\r\n constructor(private readonly systemService: TldSystemService,\r\n private readonly translateService: TranslateService) { }\r\n\r\n ngOnInit(): void {\r\n this.subscribeToVendorLocalization();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n private subscribeToVendorLocalization() {\r\n this.subscription = this.translateService.stream(\"VENDORS\").subscribe((data) => {\r\n const vendor = data[this.systemService.activeVendor.toUpperCase()] ?? this.systemService.activeVendor;\r\n this.vendorMessage.localizationParams = { vendor }\r\n })\r\n }\r\n\r\n\r\n\r\n}\r\n","<lib-inline-message class=\"vendor-notification\" [message]=\"vendorMessage\"></lib-inline-message>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { VendorDisclaimerComponent } from './vendor-disclaimer.component';\r\nimport { InlineMessageModule } from '@tilde-nlp/ngx-common';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n VendorDisclaimerComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n InlineMessageModule\r\n ],\r\n exports: [\r\n VendorDisclaimerComponent\r\n ]\r\n})\r\nexport class VendorDisclaimerModule { }\r\n","// same as backend.\r\nexport enum TranslationStatuss {\r\n INITIALIZING = \"INITIALIZING\",\r\n EXTRACTING = \"EXTRACTING\",\r\n WAITING = \"WAITING\",\r\n TRANSLATING = \"TRANSLATING\",\r\n SAVING = \"SAVING\",\r\n COMPLETED = \"COMPLETED\",\r\n ERROR = \"ERROR\",\r\n QUEUING = \"QUEUING\",\r\n UPLOADING = \"UPLOADING\",\r\n UPLOADED = \"UPLOADED\"\r\n}\r\n","export enum FileConversionTypes {\r\n PDF = \"PDF\",\r\n IMAGE = \"IMAGE\"\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { saveAs } from 'file-saver';\r\nimport { InlineMessage, InlineMessageType } from '@tilde-nlp/ngx-common';\r\nimport { Observable, of, Subject, throwError, timer } from 'rxjs';\r\nimport { catchError, mergeMap, retryWhen } from 'rxjs/operators';\r\nimport { FILE_API_SERVICE_TOKEN } from '../../../injection-tokens';\r\nimport { Common, ErrorCode, FileUploadErrorTypeEnum, IDownloadFileParams, IFileApiService, IFileMeta, IFileUploadError, IGetFileStatusParams, IGetFileTranslationStatusResponse, IRemoveFileParams, ISourceFilePreviewResponse, IStartFileTranslationParams, ITldError, ITranslatedDocumentPreviewParams } from '../../tld-common/models';\r\nimport { System } from '../../tld-common/models/services/system/system.model';\r\nimport { TldAlertService, TldTranslateConfigService } from '../../tld-common/services';\r\nimport { IActiveData } from '../../tld-tooltip/models';\r\nimport { TldSystemService } from '../../tld-tooltip/services';\r\nimport { TranslationStatuss } from '../models';\r\nimport { FileConversionTypes } from '../models/file-conversion-types.model';\r\nimport { ITranslationFile } from '../models/translate-file.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TldTranslateFileService {\r\n\r\n translationStarted: boolean;\r\n /** Value to be set to true while loading source preview. At that time, translate button should be disabled. */\r\n get isUploadingFile(): boolean { return this.filesUploading.length > 0; };\r\n translationFiles: ITranslationFile[] = [];\r\n fileNames: string[] = [];\r\n filesAdded: number;\r\n anyPdfFileLoaded: boolean;\r\n anyImageFileLoaded: boolean;\r\n //for multiple file component\r\n translatedCount: number = 0;\r\n multipleFileUploadActive: boolean = false;\r\n\r\n get disableTranslateButton() {\r\n return this.translationStarted || this.isUploadingFile;\r\n }\r\n\r\n private readonly _onFilesUploaded = new Subject<any>();\r\n private activeSystem: System;\r\n // TODO. Configurable?\r\n private readonly _defaultStatusCheckTimeout = 1000;\r\n // 0 is network error, should try again\r\n private readonly _retryErrorCodes = [0];\r\n private readonly _networkErrorMaxRetries = 2;\r\n private readonly _statusTimeouts = {};\r\n private readonly _onClear = new Subject<any>();\r\n private readonly _supportedImageExtensions = [\"png\", \"jpg\", \"jpeg\", \"bmp\"];\r\n private filesUploading: string[] = [];\r\n\r\n constructor(\r\n @Inject(FILE_API_SERVICE_TOKEN) private readonly fileApi: IFileApiService,\r\n private readonly alerts: TldAlertService,\r\n private sanitizer: DomSanitizer,\r\n private config: TldTranslateConfigService,\r\n private readonly tldSystem: TldSystemService) {\r\n this._statusTimeouts[TranslationStatuss.EXTRACTING] = 1000;\r\n this._statusTimeouts[TranslationStatuss.EXTRACTING] = 1000;\r\n this._statusTimeouts[TranslationStatuss.INITIALIZING] = 1000;\r\n this._statusTimeouts[TranslationStatuss.QUEUING] = 1000;\r\n this._statusTimeouts[TranslationStatuss.SAVING] = 1000;\r\n this._statusTimeouts[TranslationStatuss.TRANSLATING] = 1000;\r\n this._statusTimeouts[TranslationStatuss.WAITING] = 10000;\r\n }\r\n\r\n // clears all loaded data\r\n clear() {\r\n const fileArr = this.translationFiles;\r\n fileArr.forEach((file) => {\r\n file.translating = false;\r\n this.remove(file);\r\n });\r\n\r\n this.clearParams();\r\n }\r\n\r\n onClear(): Observable<any> {\r\n return this._onClear.asObservable();\r\n }\r\n\r\n onFilesUploaded(): Observable<any> {\r\n return this._onFilesUploaded.asObservable();\r\n }\r\n\r\n remove(file: ITranslationFile) {\r\n // file.translating needs to be set, so no other get status requests are sent to server.\r\n file.translating = false;\r\n const ix = this.translationFiles.indexOf(file);\r\n if (ix < 0) {\r\n throw \"Can't remove file\";\r\n }\r\n\r\n const params: IRemoveFileParams = {\r\n file: file\r\n };\r\n\r\n this.fileApi.remove(params).pipe(\r\n catchError((error: any) => {\r\n if (error.status === 404) {\r\n this.alerts.unhandeledError({ ErrorCode: FileUploadErrorTypeEnum.E_404_REMOVE });\r\n }\r\n return of();\r\n })\r\n ).subscribe();\r\n\r\n this.translationFiles.splice(ix, 1);\r\n this.fileNames.splice(ix, 1);\r\n\r\n if (this.translationFiles.length == 0) {\r\n this.clear();\r\n }\r\n else {\r\n this.hasAnyImageOrPdf();\r\n }\r\n }\r\n\r\n\r\n\r\n downloadTarget(translationFile: ITranslationFile, fileMeta: IFileMeta) {\r\n if (translationFile.isDownloading) {\r\n return;\r\n }\r\n\r\n translationFile.isDownloading = true;\r\n const downloadParams: IDownloadFileParams = {\r\n id: translationFile.id,\r\n fileMeta: fileMeta\r\n };\r\n this.fileApi.download(downloadParams).subscribe((response) => {\r\n translationFile.isDownloading = false;\r\n saveAs(response, fileMeta ? fileMeta.fileName : translationFile.originalFileName);\r\n }, (error) => {\r\n this.onError(error, translationFile);\r\n });\r\n }\r\n\r\n downloadSource(translationFile: ITranslationFile) {\r\n\r\n if (!translationFile.sourceDownloadAvailable) {\r\n console.error(\"Source download unavailable.\");\r\n return;\r\n }\r\n const convertedFileName = this.convertedSourceFileName(translationFile.originalFileName);\r\n translationFile.isDownloadingSource = true;\r\n const downloadParams: IDownloadFileParams = {\r\n id: translationFile.id,\r\n fileMeta: { fileName: convertedFileName }\r\n };\r\n this.fileApi.download(downloadParams).subscribe((response) => {\r\n translationFile.isDownloadingSource = false;\r\n saveAs(response, convertedFileName);\r\n }, (error) => {\r\n this.onError(error, translationFile);\r\n });\r\n\r\n }\r\n\r\n loadFilePreview(file: File): ITranslationFile {\r\n const filesAllowed = this.config.fileConfig.numberOfFilesAllowed;\r\n const fileName = file.name;\r\n\r\n if (this.translationFiles.length >= filesAllowed) {\r\n const errorCode = \"ERRORS.\" + (filesAllowed > 1 ? \"MAX_NUMBER_OF_FILES\" : \"INCREASE_MAX_NUMBER_OF_FILES\");\r\n this.alerts.error(errorCode, null, { link: this.config.coreConfig.registerLink, limit: filesAllowed });\r\n return null;\r\n }\r\n\r\n if (this.fileNames.includes(fileName)) {\r\n this.alerts.error(\"ERRORS.FILE_ALREADY_ADDED\", null, { fileName: file.name });\r\n return null;\r\n }\r\n\r\n this.filesUploading.push(fileName);\r\n const translationFile: ITranslationFile = {\r\n originalFileName: fileName,\r\n // name: fileName,\r\n originalExtension: Common.getFileExtension(fileName),\r\n translationStatuss: TranslationStatuss.UPLOADING,\r\n file,\r\n messages: []\r\n }\r\n\r\n this.translationFiles.push(translationFile);\r\n this.fileNames.push(fileName);\r\n const isImage = this._supportedImageExtensions.includes(Common.getFileExtension(translationFile.originalFileName));\r\n if (isImage) {\r\n this.anyImageFileLoaded = true;\r\n translationFile.fileType = FileConversionTypes.IMAGE;\r\n }\r\n const isPdf = \"pdf\" === Common.getFileExtension(translationFile.originalFileName);\r\n if (isPdf) {\r\n this.anyPdfFileLoaded = true;\r\n translationFile.fileType = FileConversionTypes.PDF;\r\n }\r\n this.fileApi.sourceFilePreview(translationFile).subscribe((resp) => {\r\n if (resp.isFilePreviewLoaded) {\r\n translationFile.translationStatuss = TranslationStatuss.UPLOADED;\r\n this.fileUploaded(fileName);\r\n this.filePreviewAlerts(isPdf, resp.wordCount);\r\n }\r\n this.onFilePreviewLoad(resp, translationFile);\r\n }, (error) => {\r\n this.remove(translationFile);\r\n this.alerts.unhandeledError(error);\r\n throw error;\r\n });\r\n return translationFile;\r\n }\r\n\r\n translateButtonClick(active: IActiveData) {\r\n this.translationStarted = true;\r\n this.translationFiles.forEach((file) => {\r\n this.startFileTranslation(active, file);\r\n })\r\n }\r\n\r\n startFileTranslation(activeSystem: IActiveData, translationFile: ITranslationFile) {\r\n if (!this.canStartTranslation(translationFile)) {\r\n console.error(\"Could not start file translation!\");\r\n return;\r\n }\r\n this.activeSystem = this.tldSystem.getActiveSystemObj();\r\n translationFile.translationStarted = true;\r\n translationFile.translating = true;\r\n // quite weird. Response can be structure with success and error params and it can also be plain string in success.\r\n const params: IStartFileTranslationParams = {\r\n file: translationFile,\r\n system: activeSystem.system\r\n };\r\n this.fileApi.startTranslation(params).pipe(\r\n catchError((error) => {\r\n this.fileApiError(translationFile, error);\r\n return of(null);\r\n // throw error;\r\n })\r\n ).subscribe((response: string) => {\r\n // something gone wrong\r\n if (!response) {\r\n return;\r\n }\r\n\r\n translationFile.id = response;\r\n translationFile.translationStartedOnServer = true;\r\n\r\n this.checkTranslationProgress(translationFile);\r\n });\r\n }\r\n\r\n convertedSourceFileName(fileName: string): string {\r\n const postFix = \"_converted.docx\";\r\n fileName = fileName.slice(0, fileName.lastIndexOf(\".\"));\r\n const convertedFileName = fileName + postFix;\r\n return convertedFileName;\r\n }\r\n\r\n fileUploadError(error: IFileUploadError) {\r\n const params = {\r\n fileName: error.fileName,\r\n maxSizeMB: Common.bytesToMb(this.config.fileConfig.maxSize),\r\n formats: this.config.fileConfig.allowedFileTypes.join(\", \"),\r\n registerLink: this.config.coreConfig.registerLink\r\n }\r\n this.alerts.error(`ERRORS.FILE_UPLOAD.${error.code}`, null, params);\r\n console.error(error);\r\n }\r\n\r\n // checks all necessary params that are responsible wheter it is allowed to start new translation.\r\n private canStartTranslation(translationFile: ITranslationFile) {\r\n return translationFile.tmpName && !translationFile.translating;\r\n }\r\n\r\n private checkTranslationProgress(translationFile: ITranslationFile) {\r\n const finishedStatus = TranslationStatuss.COMPLETED;\r\n const params: IGetFileStatusParams = {\r\n file: translationFile,\r\n srcLang: this.activeSystem.sourceLanguage,\r\n trgLang: this.activeSystem.targetLanguage\r\n };\r\n this.fileApi.getStatus(params)\r\n .pipe(\r\n // If network error, check again because file has not failed.\r\n // this code needs to be tested, because cant repeat it\r\n retryWhen((observables) => {\r\n return observables.pipe(\r\n mergeMap((error, i) => {\r\n if (i < this._networkErrorMaxRetries && this._retryErrorCodes.includes(error.status)) {\r\n return timer(this._defaultStatusCheckTimeout)\r\n }\r\n return throwError(error);\r\n })\r\n )\r\n })\r\n )\r\n .subscribe(\r\n (response: IGetFileTranslationStatusResponse) => {\r\n if (response.systemId && response.systemId !== this.activeSystem.id) {\r\n this.tldSystem.changeSystem(response.systemId, false);\r\n this.activeSystem = this.tldSystem.getActiveSystemObj();\r\n }\r\n\r\n translationFile.translationStatuss = response.translationStatuss;\r\n translationFile.sourceDownloadAvailable = response.sourceDownloadAvailable;\r\n translationFile.progress = response.progress;\r\n translationFile.availableExtensions = response.extensions;\r\n if (translationFile.translationStatuss == TranslationStatuss.ERROR) {\r\n const error: ITldError = { ErrorCode: response.substatus ?? ErrorCode.E_FAILED_IN_TRANSLATION };\r\n this.fileApiError(translationFile, error);\r\n //throw error;\r\n }\r\n else if (translationFile.translationStatuss === finishedStatus) {\r\n this.translatedCount += 1;\r\n //translationFile.name = response.name;\r\n translationFile.downloadAvailable = true;\r\n\r\n if (!this.multipleFileUploadActive) {\r\n this.translatedDocPreview(translationFile);\r\n }\r\n //translationFile.availableExtensions = this.getExtensionArray(response.translations, translationFile.name);\r\n }\r\n else {\r\n let timeout = this._defaultStatusCheckTimeout;\r\n if (this.config.fileConfig.fileDownloadTimeouts && this.config.fileConfig.fileDownloadTimeouts[translationFile.translationStatuss]) {\r\n timeout = this.config.fileConfig.fileDownloadTimeouts[translationFile.translationStatuss];\r\n }\r\n else if (this._statusTimeouts && this._statusTimeouts[translationFile.translationStatuss]) {\r\n timeout = this._statusTimeouts[translationFile.translationStatuss];\r\n }\r\n\r\n setTimeout(() => {\r\n if (!translationFile.translating) {\r\n return;\r\n }\r\n this.checkTranslationProgress(translationFile)\r\n }, timeout)\r\n }\r\n },\r\n (error) => {\r\n translationFile.translationStatuss = TranslationStatuss.ERROR;\r\n this.onTranslationFileError(translationFile, error);\r\n })\r\n }\r\n\r\n private onFilePreviewLoad(data: ISourceFilePreviewResponse, translationFile: ITranslationFile) {\r\n translationFile.isFilePreviewLoaded = data.isFilePreviewLoaded;\r\n translationFile.tmpName = data.tmpName;\r\n translationFile.sourcePreviewHasHtml = data.sourcePreviewHasHtml;\r\n translationFile.sourcePreview = this.sanitizer.bypassSecurityTrustHtml(data.sourcePreview);\r\n translationFile.filePreviewProgress = data.percentDone;\r\n\r\n }\r\n\r\n private translatedDocPreview(translationFile: ITranslationFile) {\r\n const params: ITranslatedDocumentPreviewParams = {\r\n fileName: translationFile.originalFileName,\r\n translationDocId: translationFile.id\r\n };\r\n this.fileApi.translatedDocumentPreview(params)\r\n .subscribe((response: { success: boolean, error?: string, status: string, preview: string }) => {\r\n translationFile.translating = false;\r\n if (!response.success) {\r\n console.error(response.error);\r\n this.alerts.unhandeledError(response.error);\r\n }\r\n\r\n if (response.preview) {\r\n translationFile.translatedPreview = this.sanitizer.bypassSecurityTrustHtml(response.preview);\r\n }\r\n else {\r\n translationFile.translatedPreview = null;\r\n }\r\n })\r\n }\r\n\r\n private fileApiError(translationFile: ITranslationFile, error: any) {\r\n console.error(error);\r\n translationFile.translating = false;\r\n translationFile.translationStatuss = TranslationStatuss.ERROR;\r\n this.onTranslationFileError(translationFile, error);\r\n }\r\n\r\n private filePreviewAlerts(isPdf: boolean, wordCount: number) {\r\n const maxWordCount = this.config.fileConfig.wordLimit;\r\n const alertParams = {\r\n registerLink: this.config.coreConfig.registerLink,\r\n wordCount: maxWordCount,\r\n appName: this.config.coreConfig.appName\r\n };\r\n if (this.config.fileConfig.showTranslationLimits) {\r\n if (isPdf && this.config.fileConfig.ocrPageLimit) {\r\n this.alerts.warning(\"TLD_TRANSLATE.PDF_PAGE_LIMIT_MSG\", alertParams);\r\n }\r\n if (wordCount && maxWordCount && wordCount > maxWordCount) {\r\n this.alerts.warning(\"TLD_TRANSLATE.DOC_WORD_CNT_LIMIT_MSG\", alertParams);\r\n }\r\n }\r\n }\r\n\r\n private onError(error: any, translationFile: ITranslationFile) {\r\n if (translationFile) {\r\n translationFile.isDownloading = false;\r\n }\r\n\r\n const errorForMessage = error.status === 404 ? { ErrorCode: FileUploadErrorTypeEnum.E_404 } : error;\r\n this.onTranslationFileError(translationFile, errorForMessage);\r\n }\r\n\r\n private fileUploaded(fileName: string) {\r\n const fileIx = this.filesUploading.indexOf(fileName);\r\n if (fileIx >= 0) {\r\n this.filesUploading.splice(fileIx, 1);\r\n }\r\n if (this.filesUploading.length === 0) {\r\n this._onFilesUploaded.next(null)\r\n }\r\n }\r\n\r\n private hasAnyImageOrPdf() {\r\n let anyImage = false;\r\n let anyPdf = false;\r\n for (let i = 0; i < this.translationFiles.length && !(anyPdf && anyImage); i++) {\r\n const file = this.translationFiles[i];\r\n if (file.fileType === FileConversionTypes.IMAGE) {\r\n anyImage = true;\r\n }\r\n else if (file.fileType === FileConversionTypes.PDF) {\r\n anyPdf = true;\r\n }\r\n }\r\n\r\n this.anyImageFileLoaded = anyImage;\r\n this.anyPdfFileLoaded = anyPdf;\r\n }\r\n\r\n private clearParams() {\r\n this.translationStarted = false;\r\n this.translationFiles = [];\r\n this.anyPdfFileLoaded = false;\r\n this.anyImageFileLoaded = false;\r\n this.fileNames = [];\r\n this.translatedCount = 0;\r\n this.filesUploading = [];\r\n this._onClear.next(null)\r\n }\r\n\r\n private onTranslationFileError(translationFile: ITranslationFile, error: any) {\r\n const message = this.alerts.findErrorTitleAndLocalizationKey(error);\r\n const InlineMessage: InlineMessage = {\r\n title: message.title,\r\n description: message.description,\r\n type: InlineMessageType.ERROR,\r\n localizationParams: { fileName: translationFile.originalFileName, ...this.alerts.defaultParams }\r\n };\r\n translationFile.messages.push(InlineMessage);\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { TldTranslateConfigService } from '../../tld-common/services';\r\nimport { TldTranslateFileService } from '../services/tld-translate-file.service';\r\n\r\n@Component({\r\n selector: 'lib-image-conversion-help',\r\n templateUrl: './image-conversion-help.component.html',\r\n styleUrls: ['./image-conversion-help.component.scss']\r\n})\r\nexport class TldTranslateImageConversionHelpComponent implements OnInit {\r\n readonly closeDialogAreaCode = \"CLOSE_IMAGE_CONVERSION_DIALOG\";\r\n readonly singleFileImageDownloadHelpImageSrc = \"/assets/images/image_help/image_source_download_help\";\r\n readonly multipleFileImageDownloadHelpImageSrc = \"/assets/images/image_help/image_source_download_help_multiple\";\r\n readonly helpImageExtension = \".png\";\r\n selectedLanguage: string;\r\n imageSrc: string;\r\n showImage: boolean;\r\n\r\n constructor(private readonly config: TldTranslateConfigService,\r\n private readonly files: TldTranslateFileService,\r\n private readonly translate: TranslateService) { }\r\n\r\n ngOnInit(): void {\r\n this.selectedLanguage = this.translate.currentLang;\r\n this.showImage = !this.config.coreConfig.isWebComponent;\r\n this.imageSrc = this.files.translationFiles?.length > 1 || this.config.fileConfig.useMultipleFileUpload ?\r\n this.multipleFileImageDownloadHelpImageSrc : this.singleFileImageDownloadHelpImageSrc;\r\n }\r\n}\r\n","<mat-dialog-content>\r\n <section>\r\n\r\n <h1 id=\"image-disclaimer-title\">{{'IMAGE_CONVERSION.TITLE_1' | translate}}</h1>\r\n\r\n <p>{{'IMAGE_CONVERSION.PARAGRAPH_1_1' | translate}}</p>\r\n <p [innerHtml]=\"'IMAGE_CONVERSION.PARAGRAPH_1_2' | translate\"></p>\r\n <p>{{'IMAGE_CONVERSION.PARAGRAPH_1_3' | translate}}</p>\r\n <img *ngIf=\"showImage\" [attr.src]=\"imageSrc+'_'+selectedLanguage+helpImageExtension\" [attr.alt]=\"'IMAGE_CONVERSION.IMAGE_ALT_1' | translate\" />\r\n\r\n <h2>{{'IMAGE_CONVERSION.TITLE_2' | translate}}</h2>\r\n\r\n <p>{{'IMAGE_CONVERSION.PARAGRAPH_2_1' | translate}}</p>\r\n <p>{{'IMAGE_CONVERSION.PARAGRAPH_2_2' | translate}}</p>\r\n <p>{{'IMAGE_CONVERSION.PARAGRAPH_2_3' | translate}}</p>\r\n <ul>\r\n <li>{{'IMAGE_CONVERSION.LI_1_1' | translate}}</li>\r\n <li>{{'IMAGE_CONVERSION.LI_1_2' | translate}}</li>\r\n <li>{{'IMAGE_CONVERSION.LI_1_3' | translate}}</li>\r\n <li>{{'IMAGE_CONVERSION.LI_1_4' | translate}}</li>\r\n </ul>\r\n\r\n <h2>{{'IMAGE_CONVERSION.TITLE_3' | translate}}</h2>\r\n <p>{{'IMAGE_CONVERSION.PARAGRAPH_3_1' | translate}}</p>\r\n <p>{{'IMAGE_CONVERSION.PARAGRAPH_3_2' | translate}}</p>\r\n\r\n <ul>\r\n <li>{{'IMAGE_CONVERSION.LI_2_1' | translate}}</li>\r\n <li>{{'IMAGE_CONVERSION.LI_2_2' | translate}}</li>\r\n <li>{{'IMAGE_CONVERSION.LI_2_3' | translate}}</li>\r\n <li>{{'IMAGE_CONVERSION.LI_2_4' | translate}}</li>\r\n <li>{{'IMAGE_CONVERSION.LI_2_5' | translate}}</li>\r\n <li>{{'IMAGE_CONVERSION.LI_2_6' | translate}}</li>\r\n <li>{{'IMAGE_CONVERSION.LI_2_7' | translate}}</li>\r\n <li>{{'IMAGE_CONVERSION.LI_2_8' | translate}}</li>\r\n </ul>\r\n\r\n <p [innerHtml]=\"'IMAGE_CONVERSION.PARAGRAPH_4_1' | translate\"></p>\r\n </section>\r\n</mat-dialog-content>\r\n<mat-dialog-actions align=\"center\">\r\n <button mat-button mat-dialog-close color=\"accent\">{{'IMAGE_CONVERSION.CLOSE' | translate }}</button>\r\n</mat-dialog-actions>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { TldTranslateConfigService } from '../../tld-common/services';\r\nimport { TldTranslateFileService } from '../services/tld-translate-file.service';\r\n\r\n@Component({\r\n selector: 'tld-translate-pdf-conversion-help',\r\n templateUrl: './pdf-conversion-help.component.html',\r\n styleUrls: ['./pdf-conversion-help.component.scss']\r\n})\r\nexport class TldTranslatePdfConversionHelpComponent implements OnInit {\r\n readonly closeDialogAreaCode = \"CLOSE_PDF_CONVERSION_DIALOG\";\r\n readonly multipleFilePdfDownloadHelpImageSrc = \"/assets/images/pdf_help/pdf_source_download_help_multiple\";\r\n readonly singleFilePdfDownloadHelpImageSrc = \"/assets/images/pdf_help/pdf_source_download_help\";\r\n readonly helpImageExtension = \".png\";\r\n selectedLanguage:string;\r\n imageSrc: string;\r\n showImage: boolean;\r\n\r\n constructor(private readonly config: TldTranslateConfigService,\r\n private readonly files: TldTranslateFileService,\r\n private readonly translate: TranslateService) { }\r\n\r\n ngOnInit(): void {\r\n this.selectedLanguage=this.translate.currentLang;\r\n this.showImage = !this.config.coreConfig.isWebComponent;\r\n this.imageSrc = this.files.translationFiles?.length > 1 || this.config.fileConfig.useMultipleFileUpload ?\r\n this.multipleFilePdfDownloadHelpImageSrc : this.singleFilePdfDownloadHelpImageSrc;\r\n }\r\n\r\n}\r\n","<mat-dialog-content>\r\n <section>\r\n\r\n <h1 id=\"pdf-disclaimer-title\">{{'PDF_CONVERSION.TITLE_1' | translate}}</h1>\r\n\r\n <p>{{'PDF_CONVERSION.PARAGRAPH_1_1' | translate}}</p>\r\n <p>{{'PDF_CONVERSION.PARAGRAPH_1_2' | translate}}</p>\r\n <p>{{'PDF_CONVERSION.PARAGRAPH_1_3' | translate}}</p>\r\n <img *ngIf=\"showImage\" [attr.src]=\"imageSrc+'_'+selectedLanguage+helpImageExtension\" [attr.alt]=\"'PDF_CONVERSION.IMAGE_ALT_1' | translate\" />\r\n\r\n <h2>{{'PDF_CONVERSION.TITLE_2' | translate}}</h2>\r\n\r\n <p>{{'PDF_CONVERSION.PARAGRAPH_2_1' | translate}}</p>\r\n <p>{{'PDF_CONVERSION.PARAGRAPH_2_2' | translate}}</p>\r\n <p>{{'PDF_CONVERSION.PARAGRAPH_2_3' | translate}}</p>\r\n <ul>\r\n <li>{{'PDF_CONVERSION.LI_1_1' | translate}}</li>\r\n <li>{{'PDF_CONVERSION.LI_1_2' | translate}}</li>\r\n <li>{{'PDF_CONVERSION.LI_1_3' | translate}}</li>\r\n <li>{{'PDF_CONVERSION.LI_1_4' | translate}}</li>\r\n </ul>\r\n\r\n <h2>{{'PDF_CONVERSION.TITLE_3' | translate}}</h2>\r\n <p>{{'PDF_CONVERSION.PARAGRAPH_3_1' | translate}}</p>\r\n <p>{{'PDF_CONVERSION.PARAGRAPH_3_2' | translate}}</p>\r\n\r\n <ul>\r\n <li>{{'PDF_CONVERSION.LI_2_1' | translate}}</li>\r\n <li>{{'PDF_CONVERSION.LI_2_2' | translate}}</li>\r\n <li>{{'PDF_CONVERSION.LI_2_3' | translate}}</li>\r\n <li>{{'PDF_CONVERSION.LI_2_4' | translate}}</li>\r\n <li>{{'PDF_CONVERSION.LI_2_5' | translate}}</li>\r\n <li>{{'PDF_CONVERSION.LI_2_6' | translate}}</li>\r\n <li>{{'PDF_CONVERSION.LI_2_7' | translate}}</li>\r\n <li>{{'PDF_CONVERSION.LI_2_8' | translate}}</li>\r\n <li>{{'PDF_CONVERSION.LI_2_9' | translate}}</li>\r\n </ul>\r\n\r\n <p [innerHtml]=\"'PDF_CONVERSION.PARAGRAPH_4_1' | translate\"></p>\r\n </section>\r\n</mat-dialog-content>\r\n<mat-dialog-actions align=\"center\">\r\n <button mat-button mat-dialog-close color=\"accent\">{{'PDF_CONVERSION.CLOSE' | translate }}</button>\r\n</mat-dialog-actions>\r\n","import { ComponentType } from '@angular/cdk/portal';\r\nimport { Component, OnDestroy, ViewChild } from '@angular/core';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { TldTranslateConfigService } from '../tld-common/services';\r\nimport { TldTranslateImageConversionHelpComponent } from './image-conversion-help/image-conversion-help.component';\r\nimport { TldTranslatePdfConversionHelpComponent } from './pdf-conversion-help/pdf-conversion-help.component';\r\nimport { TldTranslateFileService } from './services/tld-translate-file.service';\r\nimport { FileConversionTypes } from './models/file-conversion-types.model';\r\nimport { TranslationStatuss } from './models/translation-statuss.model';\r\n\r\n@Component({\r\n template: ''\r\n})\r\n\r\nexport class TldFileTranslateBaseComponent implements OnDestroy {\r\n\r\n constructor(protected readonly dialog: MatDialog,\r\n protected readonly config: TldTranslateConfigService,\r\n protected readonly fileService: TldTranslateFileService) { }\r\n\r\n @ViewChild(\"pdfConversionButton\") pdfConversionButton: MatButton;\r\n @ViewChild(\"imageConversionButton\") imageConversionButton: MatButton;\r\n readonly pdfConversion = FileConversionTypes.PDF;\r\n readonly imageConversion = FileConversionTypes.IMAGE;\r\n\r\n get sourceDownloadPDF() {\r\n return this.config.fileConfig.allowPDFSourceDownload && this.fileService.anyPdfFileLoaded\r\n }\r\n\r\n get sourceDownloadImage() {\r\n return this.config.fileConfig.allowImageSourceDownload && this.fileService.anyImageFileLoaded\r\n }\r\n\r\n readonly translatingStatuss = TranslationStatuss.TRANSLATING;\r\n readonly errorTranslatingStatuss = TranslationStatuss.ERROR;\r\n readonly completedTranslatingStatuss = TranslationStatuss.COMPLETED;\r\n readonly uploadedTranslatingStatuss = TranslationStatuss.UPLOADED;\r\n\r\n conversionDialog(type: FileConversionTypes) {\r\n const dialogConfig = new MatDialogConfig();\r\n dialogConfig.minWidth = '320px';\r\n dialogConfig.width = '80%';\r\n dialogConfig.maxWidth = '100%';\r\n let dialogComponent: ComponentType<unknown>;\r\n let conversionButton: MatButton;\r\n\r\n if (type == FileConversionTypes.PDF) {\r\n // h1 tag from dialog.\r\n dialogConfig.ariaLabelledBy = 'pdf-disclaimer-title';\r\n dialogComponent = TldTranslatePdfConversionHelpComponent;\r\n conversionButton = this.pdfConversionButton;\r\n }\r\n else if (type == FileConversionTypes.IMAGE) {\r\n // h1 tag from dialog.\r\n dialogConfig.ariaLabelledBy = 'image-disclaimer-title';\r\n dialogComponent = TldTranslateImageConversionHelpComponent;\r\n conversionButton = this.imageConversionButton;\r\n }\r\n\r\n const dialogRef = this.dialog.open(dialogComponent, dialogConfig);\r\n dialogRef.afterClosed().subscribe(() => {\r\n if (conversionButton) {\r\n conversionButton.focus();\r\n }\r\n });\r\n }\r\n\r\n clearAll() {\r\n this.fileService.clear();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.clearAll();\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { MatMenu } from '@angular/material/menu';\r\nimport { IFileMeta } from '../../tld-common/models';\r\nimport { TldTranslateConfigService } from '../../tld-common/services';\r\nimport { FileConversionTypes } from '../models/file-conversion-types.model';\r\nimport { ITranslationFile } from '../models/translate-file.model';\r\nimport { TldTranslateFileService } from '../services/tld-translate-file.service';\r\n\r\n@Component({\r\n selector: 'tld-translate-file-download-button',\r\n templateUrl: './download-button.component.html',\r\n styleUrls: ['./download-button.component.scss']\r\n})\r\nexport class TldTranslateFileDownloadButtonComponent implements OnInit {\r\n\r\n allowTmxAuth: boolean;\r\n allowTmxUnauth: boolean;\r\n isAuth: boolean;\r\n get showSourceDownloadPdf() {\r\n return this.sourceDownload &&\r\n this.file?.sourceDownloadAvailable &&\r\n this.config.fileConfig.allowPDFSourceDownload &&\r\n this.file.fileType == FileConversionTypes.PDF\r\n }\r\n get showSourceDownloadImage() {\r\n return this.sourceDownload &&\r\n this.file?.sourceDownloadAvailable &&\r\n this.config.fileConfig.allowImageSourceDownload &&\r\n this.file.fileType == FileConversionTypes.IMAGE\r\n }\r\n get extensions() { return this.file?.availableExtensions || []; }\r\n\r\n @ViewChild(MatMenu) menu: MatMenu;\r\n\r\n @Output() tldClick: EventEmitter<IFileMeta> = new EventEmitter();\r\n @Input() file: ITranslationFile;\r\n //@Input() extensions: ITranslationExtensionMeta[];\r\n @Input() disabled: boolean;\r\n @Input() sourceDownload: boolean;\r\n\r\n constructor(\r\n private readonly fileService: TldTranslateFileService,\r\n private readonly config: TldTranslateConfigService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.allowTmxAuth = this.config.fileConfig.allowTmxAuth;\r\n this.allowTmxUnauth = this.config.fileConfig.allowTmxUnauth;\r\n this.isAuth = this.config.coreConfig.isAuth;\r\n }\r\n\r\n onClick(meta?: IFileMeta) {\r\n if (!meta && this.extensions) {\r\n meta = this.extensions[0];\r\n }\r\n this.tldClick.emit(meta)\r\n }\r\n\r\n onSourceClick() {\r\n const fileName = this.fileService.convertedSourceFileName(this.file.originalFileName);\r\n this.onClick({ fileName: fileName });\r\n }\r\n\r\n canDownload(extension: string) {\r\n // some extensions should be allowed to download based on config\r\n const specialExtensions = [\"tmx\"];\r\n\r\n if (!specialExtensions.includes(extension.toLowerCase())) {\r\n return true;\r\n }\r\n\r\n if ((this.allowTmxUnauth && !this.isAuth) || (this.allowTmxAuth && this.isAuth))\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n onMenuOpen() {\r\n const panel = document.getElementById(this.menu.panelId);\r\n panel.setAttribute(\"data-test-id\", 'tld-download-file-list');\r\n }\r\n}\r\n","<div fxLayout=\"row\">\r\n\r\n <button mat-stroked-button color=\"accent\" (click)=\"onClick()\" class=\"action-button border-accent download-button\"\r\n [disabled]=\"disabled\">\r\n <span class=\"material-icons\">\r\n file_download\r\n </span>\r\n <span class=\"download-btn-text text-m-semi-bold\">\r\n {{'TLD_TRANSLATE.DOWNLOAD_TRANSLATED' | translate}}\r\n </span>\r\n </button>\r\n <button mat-stroked-button color=\"accent\" class=\"extension-button border-accent\" #menuTrigger=\"matMenuTrigger\"\r\n data-test-id=\"download-other-formats-button\" (menuOpened)=\"onMenuOpen()\" *ngIf=\"extensions && extensions.length>1\"\r\n [matMenuTriggerFor]=\"extensionMenu\" [disabled]=\"disabled\"\r\n [attr.aria-label]=\"'ARIA_LABELS.SHOW_EXTENSIONS' | translate\" fxLayoutAlign=\"center center\">\r\n <span class=\"material-icons\">\r\n arrow_drop_down\r\n </span>\r\n </button>\r\n</div>\r\n<mat-menu #extensionMenu=\"matMenu\">\r\n <div fxLayout=\"column\">\r\n <ng-container *ngFor=\"let extension of extensions\">\r\n <button mat-menu-item fxLayoutAlign=\"start center\" *ngIf=\"canDownload(extension.extension)\" class=\"language-title\"\r\n (click)=\"onClick(extension)\">\r\n {{extension.extension}}\r\n </button>\r\n </ng-container>\r\n <button mat-menu-item fxLayoutAlign=\"start center\" *ngIf=\"showSourceDownloadPdf\" class=\"language-title\"\r\n (click)=\"onSourceClick()\">\r\n {{'TLD_TRANSLATE.FILE_DOWNLOAD_SOURCE'|translate}}\r\n </button>\r\n <button mat-menu-item fxLayoutAlign=\"start center\" *ngIf=\"showSourceDownloadImage\" class=\"language-title\"\r\n (click)=\"onSourceClick()\">\r\n {{'TLD_TRANSLATE.FILE_DOWNLOAD_SOURCE_IMAGE'|translate}}\r\n </button>\r\n </div>\r\n</mat-menu>\r\n","import { AfterViewInit, Component, Input, OnDestroy, ViewChild } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { SourceAndTargetWrapperComponent } from '../tld-common/components';\r\nimport { IFileMeta } from '../tld-common/models';\r\nimport { TldTranslateConfigService } from '../tld-common/services';\r\nimport { ITranslationFile } from '../tld-document/models';\r\nimport { TldTranslateFileService } from '../tld-document/services/tld-translate-file.service';\r\nimport { TldFileTranslateBaseComponent } from '../tld-document/tld-file-translate-base.component';\r\n\r\n@Component({\r\n selector: 'tld-translate-file',\r\n templateUrl: './tld-translate-file.component.html',\r\n styleUrls: ['./tld-translate-file.component.scss']\r\n})\r\nexport class TldTranslateFileComponent extends TldFileTranslateBaseComponent implements AfterViewInit, OnDestroy {\r\n\r\n constructor(protected readonly fileService: TldTranslateFileService,\r\n protected readonly dialog: MatDialog,\r\n protected readonly config: TldTranslateConfigService) {\r\n super(dialog, config, fileService);\r\n }\r\n\r\n @Input() translationFile: ITranslationFile;\r\n @ViewChild(SourceAndTargetWrapperComponent) translatorWrapper: SourceAndTargetWrapperComponent;\r\n\r\n get achievementVisible() { return !this.config.coreConfig.hideAchievement && !this.translating && !this.showPreview }\r\n get downloading() { return this.translationFile?.isDownloading; }\r\n get filePreview() { return this.translationFile?.sourcePreview; }\r\n get isFilePreviewLoaded() { return this.translationFile?.isFilePreviewLoaded; };\r\n get progress() { return this.translationFile?.progress; }\r\n get translatedPreview() { return this.translationFile?.translatedPreview; }\r\n get translating() { return this.translationFile?.translating; }\r\n get showPreview() { return this.translationFile?.downloadAvailable; }\r\n get translationStatuss() { return this.translationFile?.translationStatuss }\r\n get sourcePreviewHasHtml() { return this.translationFile?.sourcePreviewHasHtml; }\r\n get loadedFileName() { return this.translationFile?.originalFileName; }\r\n get showSourceDownload() { return this.translationFile?.sourceDownloadAvailable }\r\n\r\n readonly clearButtonAriaCode = \"CLEAR_FILES\";\r\n\r\n ngAfterViewInit() {\r\n this.translatorWrapper.focusClearButton();\r\n }\r\n\r\n cancel() {\r\n this.fileService.clear();\r\n }\r\n\r\n clearPreview() {\r\n this.fileService.clear();\r\n }\r\n\r\n download(fileMeta?: IFileMeta) {\r\n this.fileService.downloadTarget(this.translationFile, fileMeta);\r\n }\r\n\r\n downloadSource() {\r\n this.fileService.downloadSource(this.translationFile);\r\n }\r\n}\r\n","<!-- NOTE. tld-source-and-target-wrapper uses multiple content projections, so might seem confusing first, but elements are displayed at their places based on tld-source-and-target-wrapper component \r\nhttps://angular.io/guide/content-projection#multi-slot-content-projection\r\n-->\r\n<tld-source-and-target-wrapper class=\"wrapper-paddings\" [clearSourceVisible]=\"true\" (onSourceClear)=\"clearPreview()\"\r\n [hideAchievement]=\"!achievementVisible\">\r\n <ng-container sourceMain>\r\n <div fxLayout=\"column\" fxLayoutAlign=\"start start\" *ngIf=\"sourcePreviewHasHtml; else noPreviewBlock\">\r\n <div [innerHtml]=\"filePreview\" class=\"file-preview\"></div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container targetMain>\r\n <div class=\"target-main\" fxLayout=\"column\">\r\n <div *ngIf=\"showPreview\" [innerHtml]=\"translatedPreview\">\r\n </div>\r\n <div fxLayout=\"column\" fxFlex *ngIf=\"translating\">\r\n <div fxLayoutAlign=\"end center\">\r\n <button mat-flat-button color=\"accent\" (click)=\"cancel()\"\r\n class=\"action-button cancel-button\">{{'TLD_TRANSLATE.CANCEL_TRANSLATION' | translate}}</button>\r\n </div>\r\n <div fxFlex fxLayoutAlign=\"center center\" fxLayout=\"column\" role=\"progressbar\">\r\n <tld-loader></tld-loader>\r\n <div *ngIf=\"translationStatuss===translatingStatuss\" aria-live=\"polite\">{{progress}}%</div>\r\n <div *ngIf=\"!translationStatuss\">{{'TLD_TRANSLATE.FILE_TANSLATION_STATUSS_QUEUING' | translate}}</div>\r\n <div *ngIf=\"translationStatuss\" aria-live=\"polite\">{{'TLD_TRANSLATE.FILE_TANSLATION_STATUSS_' +\r\n translationStatuss | translate}}</div>\r\n </div>\r\n </div>\r\n <tld-translate-file-download-button class=\"download-button\" (tldClick)=\"download($event)\" [file]=\"translationFile\"\r\n *ngIf=\"showPreview\" [disabled]=\"downloading\"></tld-translate-file-download-button>\r\n <tld-translate-button class=\"action-button translate-file-button\" *ngIf=\"!translating && !showPreview\"\r\n fxHide.gt-xs></tld-translate-button>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container targetActions>\r\n <div class=\"tld-translate-target-footer\" *ngIf=\"translatedPreview\" fxLayoutAlign=\"start center\">\r\n <p class=\"tld-target-preview-message\">{{'TLD_TRANSLATE.FILE_TARGET_PREVIEW_MESSAGE' | translate}}</p>\r\n </div>\r\n </ng-container>\r\n</tld-source-and-target-wrapper>\r\n\r\n<ng-template #noPreviewBlock>\r\n <div class=\"no-preview-wrapper\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\r\n <div [innerHtml]=\"filePreview\"></div>\r\n <div>{{loadedFileName}}</div>\r\n <ng-container *ngIf=\"showSourceDownload\">\r\n <ng-container *ngIf=\"sourceDownloadPDF\">\r\n <button mat-flat-button class=\"download-source-button\" (click)=\"downloadSource()\">\r\n {{'TLD_TRANSLATE.FILE_DOWNLOAD_SOURCE'|translate}}\r\n </button>\r\n <br />\r\n <div class=\"source-download-help\" fxLayout=\"row\" fxLaouytAlign=\"start start\">\r\n {{'TLD_TRANSLATE.FILE_DOWNLOAD_SOURCE_HELP'|translate}}\r\n </div>\r\n <button mat-button color=\"accent\" #pdfConversionButton data-test-id=\"pdf-help-button\"\r\n (click)=\"conversionDialog(pdfConversion)\">{{'TLD_TRANSLATE.PDF_DISCLAIMER_LINK' | translate}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"sourceDownloadImage\">\r\n <button mat-flat-button class=\"download-source-button\" (click)=\"downloadSource()\">\r\n {{'TLD_TRANSLATE.FILE_DOWNLOAD_SOURCE_IMAGE'|translate}}\r\n </button>\r\n <br />\r\n <div class=\"source-download-help\" fxLayout=\"row\" fxLaouytAlign=\"start start\">\r\n {{'TLD_TRANSLATE.FILE_DOWNLOAD_SOURCE_IMAGE_HELP'|translate}}\r\n </div>\r\n <button mat-button color=\"accent\" #imageConversionButton data-test-id=\"image-help-button\"\r\n (click)=\"conversionDialog(imageConversion)\">{{'TLD_TRANSLATE.IMAGE_DISCLAIMER_LINK' | translate}}</button>\r\n </ng-container>\r\n\r\n </ng-container>\r\n </div>\r\n</ng-template>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { take } from 'rxjs/operators';\r\nimport { TldTranslateButtonService } from '../../tld-common/components/translate-button/tld-translate-button.service';\r\nimport { IFileMeta, IFileUploadError } from '../../tld-common/models';\r\nimport { TldTranslateConfigService } from '../../tld-common/services';\r\nimport { TldSystemService } from '../../tld-tooltip/services';\r\nimport { ITranslationFile } from '../models/translate-file.model';\r\nimport { TldTranslateFileService } from '../services/tld-translate-file.service';\r\nimport { TldFileTranslateBaseComponent } from '../tld-file-translate-base.component';\r\n\r\n@Component({\r\n selector: 'tld-translate-file-multiple',\r\n templateUrl: './tld-translate-file-multiple.component.html',\r\n styleUrls: ['./tld-translate-file-multiple.component.scss']\r\n})\r\nexport class TldTranslateFileMultipleComponent extends TldFileTranslateBaseComponent implements OnInit {\r\n\r\n constructor(protected readonly fileService: TldTranslateFileService,\r\n protected readonly config: TldTranslateConfigService,\r\n protected readonly dialog: MatDialog,\r\n protected readonly translateButtonService: TldTranslateButtonService,\r\n private systemService: TldSystemService) {\r\n super(dialog, config, fileService);\r\n }\r\n @Input() translationFiles: ITranslationFile[];\r\n\r\n allowedFileTypes: string[];\r\n allowedFileTypesAuthUser: string[];\r\n maxFileUploadSize: number;\r\n multipleFiles: boolean;\r\n extendedFileTypes: string[];\r\n showVendorNotification: boolean;\r\n\r\n\r\n\r\n get translationStarted() {\r\n return this.fileService.translationStarted;\r\n }\r\n\r\n get disableAppendFiles() {\r\n return this.fileService?.translationStarted || this.fileService.translationFiles?.length >= this.config.fileConfig.numberOfFilesAllowed;\r\n }\r\n\r\n get isAuth() {\r\n return this.config?.coreConfig?.isAuth;\r\n }\r\n\r\n get translatedFilesCount() {\r\n return this.fileService?.translatedCount || 0;\r\n }\r\n\r\n get maxFileCount() {\r\n return this.config.fileConfig.numberOfFilesAllowed;\r\n }\r\n\r\n get fileCount() {\r\n return this.translationFiles?.length || 0;\r\n }\r\n\r\n get disableTranslateButton() {\r\n return this.fileService.disableTranslateButton;\r\n }\r\n\r\n ngOnInit() {\r\n this.allowedFileTypes = this.config.fileConfig.allowedFileTypes;\r\n this.extendedFileTypes = this.config.fileConfig.extendedFileTypes;\r\n this.maxFileUploadSize = this.config.fileConfig.maxSize;\r\n this.multipleFiles = this.config.fileConfig.numberOfFilesAllowed > 1;\r\n\r\n this.fileService.onFilesUploaded().pipe(take(1)).subscribe(() => { this.translateButtonService.pulseButton(); })\r\n\r\n }\r\n\r\n download(file: ITranslationFile, fileMeta?: IFileMeta) {\r\n if (!fileMeta) {\r\n fileMeta = file.availableExtensions?.[0];\r\n }\r\n this.fileService.downloadTarget(file, fileMeta);\r\n }\r\n\r\n fileChange(files: File[]) {\r\n for (var i = 0; i < files.length; i++) {\r\n this.fileService.loadFilePreview(files[i]);\r\n }\r\n }\r\n\r\n\r\n remove(file: ITranslationFile) {\r\n if (this.translationFiles.length === 1) {\r\n this.clearAll();\r\n }\r\n else {\r\n this.fileService.remove(file);\r\n }\r\n }\r\n\r\n fileUploadError(error: IFileUploadError) {\r\n this.fileService.fileUploadError(error);\r\n }\r\n\r\n // no need to handle translation, since it is happening in translate button component, but this method is for custom action\r\n translateButtonClick() {\r\n const vendor = this.systemService.activeVendor;\r\n this.showVendorNotification = this.config.fileConfig.progressIndicatorTitleVisibleForVendors.includes(vendor);\r\n }\r\n}\r\n","<div class=\"tld-translate-file-container\" [ngClass.xs]=\"'tld-multiple-mobile'\" fxLayout=\"column\" fxFlex\r\n fxLayoutAlign=\"start center\">\r\n <div class=\"cdk-visually-hidden\" aria-live=\"polite\">\r\n {{'MULTIPLE_FILES.SCREEN_READER_ANNOUNCEMENT' | translate: {translated:translatedFilesCount , total: fileCount} }}\r\n </div>\r\n <div fxLayout=\"column\" fxLayoutGap=\"0.5rem\" fxFlex class=\"multiple-files-body\">\r\n <div *ngFor=\"let file of translationFiles\" class=\"file-row\" [ngClass.gt-sm]=\"'extra-width'\" fxLayout=\"row\"\r\n fxLayoutAlign=\"center center\" fxLayoutAlign.xs=\"flex-start center\">\r\n <div fxLayout=\"column\" fxFlex>\r\n <div fxLayout=\"row\" fxLayoutAlign.xs=\"space-between center\" fxLayoutAlign=\"space-between center\">\r\n <div class=\"file-name\">\r\n {{file.originalFileName}}\r\n </div>\r\n <div fxLayout=\"row\" class=\"file-actions\">\r\n <tld-translate-file-download-button (tldClick)=\"download(file, $event)\" *ngIf=\"file.downloadAvailable\"\r\n [sourceDownload]=\"true\" [disabled]=\"file.isDownloading\" [file]=\"file\">\r\n </tld-translate-file-download-button>\r\n <tld-close-button [tooltip]=\"'FILE_UPLOAD.CLEAR'\" (tldClick)=\"remove(file)\"></tld-close-button>\r\n </div>\r\n </div>\r\n <mat-progress-bar *ngIf=\"file.translationStatuss===translatingStatuss\" color=\"accent\" mode=\"determinate\"\r\n [value]=\"file.progress\"></mat-progress-bar>\r\n <div class=\"progress-message text-s\"\r\n *ngIf=\"(file.translationStatuss !== errorTranslatingStatuss) && (file.translationStatuss !== completedTranslatingStatuss) && (file.translationStatuss !== uploadedTranslatingStatuss)\">\r\n {{'MULTIPLE_FILES.STATUSS_' + file.translationStatuss | translate: {percent: file.progress} }}\r\n </div>\r\n <ng-container *ngIf=\"file.messages.length>0\">\r\n <lib-inline-message *ngFor=\"let message of file.messages\" [message]=\"message\"></lib-inline-message>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <tld-file-upload *ngIf=\"!translationStarted\" fxFlex class=\"tld-append-files\" (fileChange)=\"fileChange($event)\"\r\n [accept]=\"allowedFileTypes\" [maxSize]=\"maxFileUploadSize\" [multiple]=\"multipleFiles\"\r\n [disabled]=\"disableAppendFiles\" (onError)=\"fileUploadError($event)\" [extendedAcceptList]=\"extendedFileTypes\">\r\n {{'MULTIPLE_FILES.APPEND' | translate}} ({{fileCount}}/{{maxFileCount}})\r\n </tld-file-upload>\r\n </div>\r\n <ng-container *ngIf=\"sourceDownloadPDF\">\r\n <ng-container\r\n *ngTemplateOutlet=\"conversionMessage; context: { messageKey:'MULTIPLE_FILES.PDF_DISCLAIMER', dialogParams: pdfConversion, buttonText: 'MULTIPLE_FILES.PDF_DISCLAIMER_LINK'}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"sourceDownloadImage\">\r\n <ng-container\r\n *ngTemplateOutlet=\"conversionMessage; context: { messageKey:'MULTIPLE_FILES.IMAGE_DISCLAIMER', dialogParams: imageConversion, buttonText: 'MULTIPLE_FILES.IMAGE_DISCLAIMER_LINK'}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"showVendorNotification\">\r\n <vendor-disclaimer></vendor-disclaimer>\r\n </ng-container>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" fxLayout.xs=\"column\" fxLayuotGap.xs=\"1rem\" class=\"button-container\">\r\n <button (click)=\"clearAll()\" mat-stroked-button color=\"accent\"\r\n class=\"cancel-button border-accent\">{{'MULTIPLE_FILES.CLEAR_ALL' | translate}}</button>\r\n <tld-translate-button [disabled]=\"disableTranslateButton\" (clicked)=\"translateButtonClick()\"\r\n *ngIf=\"!translationStarted\"></tld-translate-button>\r\n </div>\r\n</div>\r\n\r\n<ng-template #conversionMessage let-messageKey=\"messageKey\" let-dialogParams=\"dialogParams\" let-buttonText=\"buttonText\">\r\n\r\n <p class=\"conversion-disclaimer text=m\" [ngClass.gt-sm]=\"'conversion-info-margins-gt-sm'\">\r\n <span class=\"material-icons\">\r\n info\r\n </span>\r\n <span>\r\n {{messageKey | translate }}\r\n </span>\r\n <button class=\"conversion-message-action text-m-semi-bold\" (click)=\"conversionDialog(dialogParams)\">{{buttonText |\r\n translate}}</button>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CloseButtonModule, InlineMessageModule } from '@tilde-nlp/ngx-common';\r\nimport { VendorDisclaimerModule } from '../../components/shared/vendor-disclaimer/vendor-disclaimer.module';\r\nimport { MaterialModule } from '../material.module';\r\nimport { TldCommonModule } from '../tld-common/tld-common.module';\r\nimport { TldTranslateFileComponent } from '../tld-translate-file/tld-translate-file.component';\r\nimport { TldTranslateFileDownloadButtonComponent } from './download-button/download-button.component';\r\nimport { TldTranslateImageConversionHelpComponent } from './image-conversion-help/image-conversion-help.component';\r\nimport { TldTranslatePdfConversionHelpComponent } from './pdf-conversion-help/pdf-conversion-help.component';\r\nimport { TldFileTranslateBaseComponent } from './tld-file-translate-base.component';\r\nimport { TldTranslateFileMultipleComponent } from './tld-translate-file-multiple/tld-translate-file-multiple.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TldTranslateFileComponent,\r\n TldTranslateFileMultipleComponent,\r\n TldTranslateFileDownloadButtonComponent,\r\n TldTranslatePdfConversionHelpComponent,\r\n TldTranslateImageConversionHelpComponent,\r\n TldFileTranslateBaseComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n TldCommonModule,\r\n TranslateModule,\r\n FlexLayoutModule,\r\n MaterialModule,\r\n CloseButtonModule,\r\n InlineMessageModule,\r\n VendorDisclaimerModule\r\n ],\r\n exports: [\r\n TldTranslateFileComponent,\r\n TldTranslateFileMultipleComponent,\r\n TldTranslateFileDownloadButtonComponent\r\n ]\r\n})\r\nexport class TldDocumentModule { }\r\n","/**\r\n * Enumerator to determine if collection imported from term api or mt\r\n */\r\nexport enum ConvertedCollectionType{\r\n Term,\r\n MT\r\n}","export enum MtCollectionStatus{\r\n READY = \"Ready\",\r\n PROCESSING = \"Processing\",\r\n ERROR = \"Error\" \r\n}","export enum ConvertedCollectionTooltipKey{\r\n NO_ENTRIES = \"NO_ENTRIES\",\r\n IMPORTING = \"IMPORTING\",\r\n SYNCING = \"SYNCING\"\r\n}","import { ITldMTTermCollection, ITldTermCollection } from \".\";\r\nimport { ErrorCode } from \"../../tld-common/models/errors/error-codes.enum\";\r\nimport { ConvertedCollectionTooltipKey } from \"./converted-collection-tooltip-key.model\";\r\nimport { ConvertedCollectionType } from \"./converted-collection-type.model\";\r\nimport { MtCollectionStatus } from \"./mt-collection-status.model\";\r\n/**\r\n * Used to combine term collection interfaces from term api and MT api.\r\n */\r\nexport class TldConvertedCollection {\r\n title: string;\r\n id: string;\r\n termId: string;\r\n /** Entry count for source language from term api */\r\n entryCount: number;\r\n /** Entry count from MT api */\r\n mtEntryCount: number;\r\n sourceLanguageCode: string;\r\n targetLanguageCode: string;\r\n importedFrom: ConvertedCollectionType;\r\n mtAttachmentDateTime: Date;\r\n termModifiedDate: Date;\r\n isSynchronized: boolean;\r\n languagesString: string;\r\n tooltipKey: ConvertedCollectionTooltipKey;\r\n mtStatus: MtCollectionStatus;\r\n errorKey: ErrorCode;\r\n mtPreparedDateTime: string;\r\n\r\n\r\n get syncButtonVissible() {\r\n return !this.isSynchronized || (this.termModifiedDate && this.mtStatus === MtCollectionStatus.ERROR);\r\n }\r\n\r\n get isImporting(): boolean {\r\n return this.mtStatus === MtCollectionStatus.PROCESSING;\r\n };\r\n\r\n constructor(obj: ITldTermCollection | ITldMTTermCollection, sourceLanguageCode: string, targetLanguageCode: string) {\r\n this.sourceLanguageCode = sourceLanguageCode;\r\n this.targetLanguageCode = targetLanguageCode;\r\n this.isSynchronized = true;\r\n\r\n if (this.isTldCorpus(obj)) {\r\n this.fromTldMTCollection(obj);\r\n }\r\n else {\r\n this.fromTermApi(obj);\r\n }\r\n }\r\n\r\n static findExistingCollectionFromList(termCollections: Set<TldConvertedCollection>, collection: TldConvertedCollection) {\r\n for (const col of termCollections) {\r\n if ((col.id && col.id === collection.id)\r\n || (collection.termId && col.termId === collection.termId)) {\r\n return col;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n update(obj: TldConvertedCollection) {\r\n if (obj.importedFrom === ConvertedCollectionType.MT) {\r\n if (obj.mtStatus !== MtCollectionStatus.ERROR) {\r\n this.errorKey = null;\r\n }\r\n this.id = obj.id;\r\n this.mtStatus = obj.mtStatus;\r\n this.mtAttachmentDateTime = obj.mtAttachmentDateTime;\r\n this.mtEntryCount = obj.mtEntryCount;\r\n }\r\n else if (obj.importedFrom === ConvertedCollectionType.Term) {\r\n this.termId = obj.termId;\r\n this.languagesString = obj.languagesString;\r\n this.termModifiedDate = obj.termModifiedDate;\r\n this.entryCount = obj.entryCount;\r\n this.title = obj.title;\r\n }\r\n this.isSynchronized = this.isTermSynchronizedWithMT();\r\n\r\n if (this.entryCount === 0 && this.termId !== null) {\r\n this.tooltipKey = ConvertedCollectionTooltipKey.NO_ENTRIES;\r\n }\r\n else if (this.isImporting && this.mtEntryCount === 0) {\r\n this.tooltipKey = ConvertedCollectionTooltipKey.IMPORTING;\r\n }\r\n else if (this.isImporting) {\r\n this.tooltipKey = ConvertedCollectionTooltipKey.SYNCING;\r\n }\r\n else {\r\n this.tooltipKey = null;\r\n }\r\n\r\n }\r\n\r\n deletedFromTermApi() {\r\n this.termId = null;\r\n this.languagesString = null;\r\n this.termModifiedDate = null;\r\n this.entryCount = null;\r\n }\r\n\r\n static convertCollections(collections: ITldMTTermCollection[] | ITldTermCollection[], sourceLanguage: string, targetLanguage: string) {\r\n const converted: TldConvertedCollection[] = [];\r\n collections.forEach((collection) => {\r\n converted.push(new TldConvertedCollection(collection, sourceLanguage, targetLanguage));\r\n });\r\n return converted;\r\n }\r\n\r\n private fromTermApi(obj: ITldTermCollection) {\r\n this.termId = obj.id.toString();\r\n this.title = obj.name;\r\n this.importedFrom = ConvertedCollectionType.Term;\r\n this.termModifiedDate = new Date(obj.modifyDate);\r\n const language = obj.languages?.find(lang => lang.id.toLowerCase() === this.sourceLanguageCode.toLowerCase());\r\n this.entryCount = language?.count ?? 0;\r\n this.languagesString = obj.languages.filter(lang => lang.id !== this.sourceLanguageCode && lang.count > 0)\r\n .map(lang => lang.id.toUpperCase()).join(\", \");\r\n }\r\n\r\n private fromTldMTCollection(obj: ITldMTTermCollection) {\r\n this.id = obj.CorpusId;\r\n this.title = obj.Title;\r\n this.importedFrom = ConvertedCollectionType.MT;\r\n this.mtAttachmentDateTime = new Date(obj.AttachmentDateTime);\r\n this.termId = obj.TildeTermId;\r\n this.mtStatus = obj.Status;\r\n this.mtPreparedDateTime = obj.PreparedDateTime;\r\n this.mtEntryCount = obj.Count;\r\n }\r\n\r\n private isTldCorpus(obj: ITldTermCollection | ITldMTTermCollection): obj is ITldMTTermCollection {\r\n return (obj as ITldMTTermCollection).TildeTermId !== undefined;\r\n }\r\n\r\n /**\r\n * Check if the newest version of the term collection is synchronized from Term portal. \r\n * Note. Term collections that are not linked from Term portal are considered as synchronized.\r\n */\r\n private isTermSynchronizedWithMT() {\r\n let isSynchronized = true;\r\n if (this.termModifiedDate && this.mtAttachmentDateTime) {\r\n isSynchronized = this.termModifiedDate < this.mtAttachmentDateTime;\r\n }\r\n return isSynchronized;\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { map } from 'rxjs/operators';\r\nimport { TldTranslateConfigService } from '../../tld-common/services';\r\nimport { ITldTermCollection } from '../models/term-api/tld-term-collection.model';\r\nimport { TldConvertedCollection } from '../models/tld-converted-collection.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TermApiService {\r\n get url() {\r\n return `${this.config.termConfig.apiUrl}/api/termservice/collection`;\r\n }\r\n\r\n constructor(private readonly config: TldTranslateConfigService,\r\n private readonly http: HttpClient) {\r\n }\r\n \r\n createCollection(defaultLanguages: string[], collectionName: string) {\r\n const params = {\r\n name: collectionName,\r\n defaultLanguages\r\n };\r\n return this.http.post<ITldTermCollection>(this.url, params)\r\n }\r\n\r\n getCollectionList(sourceLanguageCode: string, targetLanguageCode: string) {\r\n return this.http.get<ITldTermCollection[]>(this.url).pipe(\r\n map((collections) => { return TldConvertedCollection.convertCollections(collections, sourceLanguageCode, targetLanguageCode) })\r\n );\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { map } from 'rxjs/operators';\r\nimport { Common } from '../../tld-common/models';\r\nimport { TldTranslateConfigService } from '../../tld-common/services';\r\nimport { ITldMTTermCollection, TldConvertedCollection } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MtCollectionsApiService {\r\n\r\n constructor(private readonly http: HttpClient,\r\n private readonly config: TldTranslateConfigService) { }\r\n\r\n attachTermsFromTildeTerm(systemId: string, tildeTermCollectionId: string) {\r\n const params = { systemID: systemId, tildeTermColectionID: tildeTermCollectionId };\r\n const url = `${this.config.coreConfig.translationServiceUrl}AttachTermsFromTildeTerm`;\r\n return this.http.get(url, { params });\r\n }\r\n\r\n loadMTCollections(systemId: string, sourceLanguage:string, targetLanguage: string) {\r\n const headers = Common.getAuthHeaders(this.config);\r\n const url = `${this.config.coreConfig.translationServiceUrl}GetDetailedSystemTermCorpora`;\r\n const params = { systemID: systemId };\r\n return this.http.get<ITldMTTermCollection[]>(url, { headers, params }).pipe(\r\n map((collections) => { return TldConvertedCollection.convertCollections(collections, sourceLanguage, targetLanguage) })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { forkJoin, Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { ErrorCode } from '../../tld-common/models/errors/error-codes.enum';\r\nimport { TldTranslateConfigService } from '../../tld-common/services';\r\nimport { TldSystemService } from '../../tld-tooltip/services';\r\nimport { ConvertedCollectionType } from '../models/converted-collection-type.model';\r\nimport { MtCollectionStatus } from '../models/mt-collection-status.model';\r\nimport { TldConvertedCollection } from '../models/tld-converted-collection.model';\r\nimport { MtCollectionsApiService } from './mt-collections-api.service';\r\nimport { TermApiService } from './term-api.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TldTermCollectionsService {\r\n\r\n private _selected: TldConvertedCollection = null;\r\n get selected() { return this._selected; }\r\n set selected(val: TldConvertedCollection) {\r\n this._selected = val;\r\n this.storeSelectedInLocalStorage();\r\n if (!this._selected) {\r\n return;\r\n }\r\n\r\n if (!this._selected.id) {\r\n this.addCollectionToSystem(this._selected);\r\n }\r\n\r\n }\r\n\r\n // set instead of array because only distinct values should be in list and with set no manual checks are necessary.\r\n private _collections: Set<TldConvertedCollection>;\r\n get collections() {\r\n return this._collections;\r\n }\r\n\r\n private _isRefreshingCollections: boolean;\r\n get isRefreshingCollections() {\r\n return this._isRefreshingCollections;\r\n }\r\n\r\n get canCreateCollections() {\r\n return this.config.termConfig.canCreateCollection;\r\n }\r\n\r\n get hasEditPermissions() {\r\n return this.config?.coreConfig.isAuth && this.canCreateCollections && this.config.termConfig.isTermPortalSupported;\r\n }\r\n\r\n private _hasAnyCollections: boolean;\r\n get hasAnyCollections() {\r\n return this._hasAnyCollections;\r\n }\r\n\r\n get shouldShowPromotion() {\r\n return !this.hasAnyCollections && !this.hasEditPermissions;\r\n }\r\n\r\n private isAutoRefreshingOn: boolean;\r\n private sourceLanguageCode: string;\r\n private targetLanguageCode: string;\r\n private activeSystemId: string;\r\n private refreshTimeout: any;\r\n private isAnyImporting: boolean;\r\n private menuOpened: boolean;\r\n\r\n private readonly LOCAL_STORAGE_KEY = \"systemLastCollections\";\r\n\r\n constructor(private readonly config: TldTranslateConfigService,\r\n private readonly tldSystem: TldSystemService,\r\n private readonly termApi: TermApiService,\r\n private readonly mtApi: MtCollectionsApiService) {\r\n this.tldSystem.getActiveData()\r\n .subscribe((active) => {\r\n this.sourceLanguageCode = active?.sourceLang.lang;\r\n this.targetLanguageCode = active?.targetLang.lang;\r\n this.activeSystemId = active?.systemId || null;\r\n this._collections = new Set();\r\n // avoiding setter, so the null value is not storeed in location since it is not by user action\r\n this._selected = null;\r\n if (active && this.tldSystem.isTerminologySupported(active?.system)) {\r\n this.refreshCollections(true);\r\n }\r\n });\r\n }\r\n\r\n onMenuOpen() {\r\n this.menuOpened = true;\r\n if (!this.shouldShowPromotion) {\r\n this.startAutoRefresh();\r\n }\r\n }\r\n\r\n onMenuClose() {\r\n this.menuOpened = false;\r\n // if menu is closed, but selected collection still syncing, auto refresh should be kept opened.\r\n if (this.selected?.mtStatus !== MtCollectionStatus.PROCESSING) {\r\n this.stopAutoRefresh();\r\n }\r\n }\r\n\r\n addCollectionToSystem(collection: TldConvertedCollection) {\r\n if (!collection || !collection.termId) {\r\n console.error(\"Trying to attach collection that has no tilde term id.\");\r\n return;\r\n }\r\n collection.mtStatus = MtCollectionStatus.PROCESSING;\r\n collection.isSynchronized = true;\r\n this.mtApi.attachTermsFromTildeTerm(this.activeSystemId, collection.termId)\r\n .subscribe(() => { },\r\n () => {\r\n collection.mtStatus = MtCollectionStatus.ERROR;\r\n collection.errorKey = ErrorCode.COLLECTION_IMPORT;\r\n });\r\n }\r\n\r\n create(defaultLanguages: string[], collectionName: string) {\r\n return this.termApi.createCollection(defaultLanguages, collectionName).pipe(\r\n map(collection => new TldConvertedCollection(collection, this.sourceLanguageCode, this.targetLanguageCode)),\r\n tap((collection) => {\r\n this._collections.add(collection);\r\n this._hasAnyCollections = true;\r\n })\r\n );\r\n }\r\n\r\n refreshCollections(setSelectedFromLocalStorage = false) {\r\n if (!this.activeSystemId\r\n || !this.config.termConfig.isCollectionsActivated) {\r\n return;\r\n }\r\n this._isRefreshingCollections = true;\r\n const observables: Observable<TldConvertedCollection[]>[] = [\r\n this.termApi.getCollectionList(this.sourceLanguageCode, this.targetLanguageCode),\r\n this.mtApi.loadMTCollections(this.activeSystemId, this.sourceLanguageCode, this.targetLanguageCode)\r\n ];\r\n\r\n forkJoin(observables).subscribe(\r\n (response) => {\r\n this.isAnyImporting = false;\r\n // TO DO. Doesn't seem to be clean approach with syncing collections. Maybe some cleaner solution possible?\r\n this.removeDeletedFromTerms(response[0]);\r\n this.updateCollections([...response[0], ...response[1]]);\r\n if (setSelectedFromLocalStorage) {\r\n this.setSelectedFromLocalStorage();\r\n }\r\n this._isRefreshingCollections = false;\r\n this.scheduleRefresh();\r\n }, (error) => {\r\n this._isRefreshingCollections = false;\r\n // it is enough to show error only in console. No special thing is necessary.\r\n console.error(error);\r\n });\r\n }\r\n\r\n /**\r\n *\r\n * @returns selected collection id if it is allowed to use collection for translations\r\n */\r\n selectedIdForTranslation(): string {\r\n if (this.selected && (this.selected.mtPreparedDateTime || this.selected.mtStatus === MtCollectionStatus.READY)) {\r\n return this.selected.id;\r\n }\r\n return null;\r\n }\r\n\r\n private startAutoRefresh() {\r\n this.isAutoRefreshingOn = true;\r\n this.scheduleRefresh(0);\r\n }\r\n\r\n private stopAutoRefresh() {\r\n if (this.refreshTimeout) {\r\n clearTimeout(this.refreshTimeout);\r\n this.refreshTimeout = null;\r\n }\r\n\r\n this.isAutoRefreshingOn = false;\r\n }\r\n\r\n private scheduleRefresh(timeout?: number) {\r\n // if menu is closed and selected collection is not importing anymore - auto refreshing should be cancelled.\r\n if (!this.menuOpened && !this.selected?.isImporting && this.isAutoRefreshingOn) {\r\n this.stopAutoRefresh();\r\n return;\r\n }\r\n\r\n // if menu is opened, auto refresh should be on. If menu is closed, refresh needs to be done only if selected is importing.\r\n if (!this.refreshTimeout && (this.isAutoRefreshingOn || this.selected?.isImporting)) {\r\n const timeoutMs = timeout ?? (this.isAnyImporting ? this.config.termConfig.refreshTimeoutMsWhenImporting : this.config.termConfig.refreshTimeoutMs);\r\n this.refreshTimeout = setTimeout(() => {\r\n this.refreshTimeout = null;\r\n this.refreshCollections()\r\n }, timeoutMs);\r\n }\r\n }\r\n\r\n /**\r\n * Should be called after refresh to check if there is any collections from term api that are deleted.\r\n */\r\n private removeDeletedFromTerms(refreshedList: TldConvertedCollection[]) {\r\n for (const collection of this.collections) {\r\n if (!collection.termId) {\r\n continue;\r\n }\r\n const exists = refreshedList.find(refreshedCollection => refreshedCollection.importedFrom === ConvertedCollectionType.Term && refreshedCollection.termId === collection.termId);\r\n if (!exists) {\r\n // Removes collection if it hasn't been imported.\r\n if (!collection.id) {\r\n this.collections.delete(collection);\r\n }\r\n else {\r\n collection.deletedFromTermApi();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private updateCollections(refreshedCollections: TldConvertedCollection[]) {\r\n // sets collection list to this value at the end, so deleted collections are not in the list.\r\n const updatedCollections = new Set<TldConvertedCollection>();\r\n for (let collection of refreshedCollections) {\r\n // User shouldn't see failed collections if he can't retry to import them.\r\n if (!this.hasEditPermissions\r\n && collection.importedFrom === ConvertedCollectionType.MT\r\n && collection.mtStatus === MtCollectionStatus.ERROR) {\r\n continue;\r\n }\r\n\r\n if (collection.isImporting) {\r\n this.isAnyImporting = true;\r\n }\r\n\r\n let existing: TldConvertedCollection = TldConvertedCollection.findExistingCollectionFromList(this.collections, collection);\r\n\r\n // Term Id should be set only for entities coming from term API, because collection can be deleted, but key would still be in MT api.\r\n // But term id is necessary to do the previous check to sync collections - it can be set to null only after update.\r\n if (collection.importedFrom === ConvertedCollectionType.MT) {\r\n // Collections from MT should be only visible when Ready or collection is being processed, but it has already been created before and it can be used.\r\n if (!(collection.mtStatus === MtCollectionStatus.READY\r\n || (collection.mtStatus === MtCollectionStatus.PROCESSING && collection.mtPreparedDateTime)\r\n || existing)) {\r\n continue;\r\n }\r\n collection.termId = null;\r\n }\r\n\r\n if (existing) {\r\n existing.update(collection);\r\n }\r\n else {\r\n this.collections.add(collection);\r\n }\r\n\r\n const editedCollection = existing ?? collection;\r\n updatedCollections.add(editedCollection);\r\n }\r\n this._collections = updatedCollections;\r\n this._hasAnyCollections = updatedCollections.size > 0;\r\n }\r\n\r\n private setSelectedFromLocalStorage() {\r\n // If no collections or selected is already set, it should not be changed from localstorage value. (Usually, localstorage should have the same value).\r\n if (this.collections?.size === 0 || this.selected) {\r\n return\r\n }\r\n\r\n const storedId = this.readLocalStorage()?.[this.activeSystemId];\r\n if (!storedId) {\r\n return;\r\n }\r\n\r\n const existing = Array.from(this.collections).find(item => item.id === storedId || item.termId === storedId);\r\n this.selected = existing;\r\n }\r\n\r\n\r\n private storeSelectedInLocalStorage() {\r\n let localStorageObject = this.readLocalStorage();\r\n if (!localStorageObject) {\r\n localStorageObject = {};\r\n }\r\n\r\n localStorageObject[this.activeSystemId] = this.selected ? (this.selected.termId ?? this.selected.id) : null;\r\n // store term id if it exists\r\n localStorage.setItem(this.LOCAL_STORAGE_KEY, JSON.stringify(localStorageObject));\r\n }\r\n\r\n private readLocalStorage(): any {\r\n const data = localStorage.getItem(this.LOCAL_STORAGE_KEY);\r\n try {\r\n return JSON.parse(data);\r\n }\r\n catch {\r\n return null;\r\n }\r\n }\r\n}\r\n","import { HttpClient, HttpEvent, HttpEventType, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { Common, ErrorCode, IDownloadFileParams, IFileApiService, IGetFileStatusParams, IGetFileTranslationStatusResponse, IRemoveFileParams, ISourceFilePreviewResponse, IStartFileTranslationParams, ITldError, ITranslatedDocumentPreviewParams } from '../../../tld-common/models';\r\nimport { IFileMeta } from '../../../tld-common/models/services/file-api/file-meta.model';\r\nimport { TldAlertService, TldTranslateConfigService } from '../../../tld-common/services';\r\nimport { TldTermCollectionsService } from '../../../tld-term/services';\r\nimport { ITranslationFile } from '../../models/translate-file.model';\r\nimport { TranslationStatuss } from '../../models/translation-statuss.model';\r\nimport { IFilePreviewV1ProgressResponse } from './models/file-preview-v1-progress-response.model';\r\nimport { IFilePreviewV1ResponseBody } from './models/file-preview-v1-response-body.model';\r\nimport { IGetFileTranslationStatusV1Response } from './models/get-file-translation-status-v1-response.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TldTranslateFileApiService implements IFileApiService {\r\n\r\n constructor(private readonly http: HttpClient,\r\n private readonly config: TldTranslateConfigService,\r\n private readonly collectionService: TldTermCollectionsService,\r\n private readonly alerts: TldAlertService) { }\r\n\r\n private readonly _segmentLimit = -1;\r\n private readonly _sourceDownloadStatusses = [TranslationStatuss.WAITING, TranslationStatuss.SAVING, TranslationStatuss.COMPLETED, TranslationStatuss.TRANSLATING];\r\n\r\n translatedDocumentPreview(properties: ITranslatedDocumentPreviewParams) {\r\n const previewMethodName = \"GetDocumentPreview\";\r\n const params = { docId: properties.translationDocId, fileName: properties.fileName };\r\n const url = this.config.fileConfig.fileApiUrl + previewMethodName;\r\n const headers = this.getAuthHeaders();\r\n return this.http.post(url, params, { headers });\r\n }\r\n\r\n download(properties: IDownloadFileParams) {\r\n const methodName = \"Download\";\r\n const url = this.config.fileConfig.fileApiUrl + methodName;\r\n const params = { docId: properties.id, fileName: properties.fileMeta.fileName };\r\n const headers = Common.getAuthHeaders(this.config);\r\n return this.http.get(url, { params: params, headers: headers, responseType: \"blob\" });\r\n }\r\n\r\n startTranslation(properties: IStartFileTranslationParams): Observable<string> {\r\n const headers = this.getAuthHeaders();\r\n const methodName = \"StartTranslation\";\r\n const url = this.config.fileConfig.fileApiUrl + methodName;\r\n\r\n //translationFile.lastTranslationAuthHeaders = headers;\r\n // TODO. Create type for params.\r\n const params: any = {\r\n systemId: properties.system.id,\r\n appId: this.config.coreConfig.appId,\r\n fileName: properties.file.originalFileName,\r\n tmpname: properties.file.tmpName,\r\n wordLimit: this.config.fileConfig.wordLimit,\r\n segmentLimit: this._segmentLimit,\r\n ocrPageLimit: this.config.fileConfig.ocrPageLimit\r\n };\r\n\r\n\r\n const selectedCollectionId = this.collectionService.selectedIdForTranslation();\r\n if (selectedCollectionId) {\r\n params.termCorpusId = selectedCollectionId;\r\n }\r\n\r\n return this.http.post(url, params, { headers }).pipe(\r\n map((response: any) => {\r\n if (response.success) {\r\n const error = { ErrorCode: ErrorCode.CANT_START_FILE_TRANSLATION } as ITldError;\r\n this.alerts.unhandeledError(error);\r\n throw error;\r\n }\r\n return response as string;\r\n })\r\n );\r\n }\r\n\r\n remove(properties: IRemoveFileParams) {\r\n if (!properties.file.id) {\r\n return of(true);\r\n }\r\n const methodName = \"Delete\";\r\n const url = this.config.fileConfig.fileApiUrl + methodName;\r\n const params = { docId: properties.file.id };\r\n const headers = Common.getAuthHeaders(this.config);\r\n return this.http.get(url, { params: params, headers: headers });\r\n }\r\n\r\n sourceFilePreview(file: ITranslationFile): Observable<ISourceFilePreviewResponse> {\r\n const methodName = \"Upload\";\r\n const url = this.config.fileConfig.fileApiUrl + methodName;\r\n\r\n const headers = this.getAuthHeaders();\r\n delete headers['Content-Type'];\r\n\r\n const formData: FormData = new FormData();\r\n formData.append(\"file\", file.file);\r\n return this.http.post<IFilePreviewV1ProgressResponse | IFilePreviewV1ResponseBody>\r\n (url, formData, { headers: new HttpHeaders(headers), reportProgress: true, observe: \"events\" })\r\n .pipe(map((response: HttpEvent<IFilePreviewV1ProgressResponse> | HttpEvent<IFilePreviewV1ResponseBody>) => {\r\n const returnvalue: ISourceFilePreviewResponse = {}\r\n if (response.type === HttpEventType.Response) {\r\n const body = response.body as IFilePreviewV1ResponseBody;\r\n if (!body.success) {\r\n console.error(body.error);\r\n throw \"Failed to load translation preview\";\r\n }\r\n returnvalue.isFilePreviewLoaded = body.success;\r\n returnvalue.tmpName = body.filename;\r\n returnvalue.sourcePreviewHasHtml = !body.preview.includes(\"class=\\\"no-preview\");\r\n returnvalue.sourcePreview = body.preview;\r\n returnvalue.wordCount = body.wordcount;\r\n }\r\n else if (response.type === HttpEventType.UploadProgress) {\r\n returnvalue.percentDone = Math.round(100 * response.loaded / response.total);\r\n }\r\n return returnvalue;\r\n }));\r\n }\r\n\r\n getStatus(properties: IGetFileStatusParams): Observable<IGetFileTranslationStatusResponse> {\r\n const methodName = \"GetStatus\";\r\n const url = this.config.fileConfig.fileApiUrl + methodName;\r\n return this.http.post<IGetFileTranslationStatusV1Response>(url, { docId: properties.file.id }, { headers: this.getAuthHeaders() }).pipe(\r\n map((response) => {\r\n if (typeof (response) == 'string') {\r\n const error: ITldError = { ErrorCode: response };\r\n this.alerts.unhandeledError(error);\r\n throw error;\r\n }\r\n const returnvalue: IGetFileTranslationStatusResponse = {\r\n name: response.filename,\r\n progress: response.completed,\r\n translationStatuss: response.status.toUpperCase() as TranslationStatuss,\r\n extensions: this.getExtensionArray(response.translations, response.filename)\r\n };\r\n if (this._sourceDownloadStatusses.includes(returnvalue.translationStatuss)\r\n && this.config.fileConfig.sourceDownloadExtensions?.includes(properties.file.originalExtension)) {\r\n returnvalue.sourceDownloadAvailable = true;\r\n }\r\n return returnvalue;\r\n })\r\n );\r\n }\r\n\r\n private getExtensionArray(translations: { [key: string]: string }, fileName: string) {\r\n if (!translations || !fileName) {\r\n return [];\r\n }\r\n const array: IFileMeta[] = [];\r\n for (const key in translations) {\r\n if (key == \"tmx\") {\r\n if (!((this.config.coreConfig.isAuth && this.config.fileConfig.allowTmxAuth)\r\n || (!this.config.coreConfig.isAuth && this.config.fileConfig.allowTmxUnauth))) {\r\n continue;\r\n }\r\n }\r\n array.push({ extension: key, fileName: translations[key] });\r\n }\r\n const fileExtension = fileName.slice(fileName.lastIndexOf(\".\") + 1).toLowerCase();\r\n\r\n const extensionOrderArray = this.config.fileConfig.targetDownloadExtensionOrder;\r\n const defaultOrder = [fileExtension, \"tmx\"];\r\n const correctOrder = extensionOrderArray && extensionOrderArray[fileExtension] ? extensionOrderArray[fileExtension] : defaultOrder;\r\n array.sort((a, b) => {\r\n let aIx = correctOrder.indexOf(a.extension);\r\n let bIx = correctOrder.indexOf(b.extension);\r\n\r\n // elements that doesn't exist in config, should be in last position.\r\n if (aIx < 0) {\r\n aIx = 100;\r\n }\r\n if (bIx < 0) {\r\n bIx = 100;\r\n }\r\n\r\n return aIx - bIx;\r\n })\r\n return array;\r\n }\r\n\r\n private getAuthHeaders() {\r\n return Common.getAuthHeaders(this.config);\r\n }\r\n}\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { TldTranslateConfigService } from '../../tld-common/services';\r\nimport { TldTermCollectionListComponent } from '../tld-term-collection-list/tld-term-collection-list.component';\r\n\r\n@Component({\r\n selector: 'tld-term-create-collection-dialog',\r\n templateUrl: './tld-term-create-collection-dialog.component.html',\r\n styleUrls: ['./tld-term-create-collection-dialog.component.scss']\r\n})\r\nexport class TldTermCreateCollectionDialogComponent implements OnInit {\r\n\r\n formGroup: UntypedFormGroup;\r\n collectionName: UntypedFormControl;\r\n minLength: number;\r\n maxLength: number;\r\n constructor(private readonly dialogRef: MatDialogRef<TldTermCollectionListComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private readonly config: TldTranslateConfigService) { }\r\n\r\n ngOnInit(): void {\r\n this.minLength = this.config.termConfig.collectionNameMinLength;\r\n this.maxLength = this.config.termConfig.collectionNameMaxLength;\r\n this.collectionName = new UntypedFormControl(this.data.collectionName, [\r\n Validators.minLength(this.minLength),\r\n Validators.maxLength(this.maxLength),\r\n Validators.required\r\n ]);\r\n this.collectionName.markAsTouched();\r\n this.formGroup = new UntypedFormGroup({ collectionName: this.collectionName });\r\n }\r\n\r\n submit() {\r\n if (this.formGroup.valid) {\r\n this.dialogRef.close(this.collectionName.value);\r\n }\r\n }\r\n\r\n}\r\n","<tld-close-button class=\"close-button\" mat-dialog-close>\r\n</tld-close-button>\r\n<h1 mat-dialog-title>{{'TERM_COLLECTIONS.CREATE_DIALOG.TITLE' | translate}}</h1>\r\n<div mat-dialog-content>\r\n <p [innerHtml]=\"'TERM_COLLECTIONS.CREATE_DIALOG.DESCRIPTION_1' | translate\"></p>\r\n <p [innerHtml]=\"'TERM_COLLECTIONS.CREATE_DIALOG.DESCRIPTION_2' | translate\"></p>\r\n <div [formGroup]=\"formGroup\">\r\n <mat-form-field appearance=\"outline\" class=\"collection-name-form-field\">\r\n <mat-label>{{'TERM_COLLECTIONS.CREATE_DIALOG.COLLECTION_NAME_LABEL' | translate}}</mat-label>\r\n <input matInput formControlName=\"collectionName\" (keyup.enter)=\"submit()\">\r\n <mat-error *ngIf=\"collectionName.errors\">{{'TERM_COLLECTIONS.CREATE_DIALOG.COLLECTION_NAME_ERROR' |\r\n translate: {minLength: minLength, maxLength: maxLength} }}</mat-error>\r\n </mat-form-field>\r\n </div>\r\n</div>\r\n<div mat-dialog-actions fxLayout=\"row\" fxLayoutAlign=\"center center\">\r\n <button mat-flat-button (click)=\"submit()\" cdkFocusInitial color=\"accent\"\r\n [disabled]=\"formGroup.invalid\">{{'TERM_COLLECTIONS.CREATE_DIALOG.CREATE' | translate}}</button>\r\n <button mat-button mat-dialog-close color=\"accent\">{{\"TERM_COLLECTIONS.CREATE_DIALOG.CANCEL\" | translate}}</button>\r\n</div>\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { ErrorCode } from '../../tld-common/models/errors/error-codes.enum';\r\nimport { TldAlertService, TldTranslateConfigService } from '../../tld-common/services';\r\nimport { TldSystemService } from '../../tld-tooltip/services';\r\nimport { MtCollectionStatus } from '../models/mt-collection-status.model';\r\nimport { TldConvertedCollection } from '../models/tld-converted-collection.model';\r\nimport { TldTermCollectionsService } from '../services/tld-term-collections.service';\r\nimport { TldTermCreateCollectionDialogComponent } from '../tld-term-create-collection-dialog/tld-term-create-collection-dialog.component';\r\n\r\n@Component({\r\n selector: 'tld-term-collection-list',\r\n templateUrl: './tld-term-collection-list.component.html',\r\n styleUrls: ['./tld-term-collection-list.component.scss']\r\n})\r\nexport class TldTermCollectionListComponent implements OnInit, OnDestroy {\r\n get selected() {\r\n return this.collectionService.selected;\r\n }\r\n\r\n set selected(val: TldConvertedCollection) {\r\n this.collectionService.selected = val;\r\n }\r\n\r\n get collections() {\r\n return this.collectionService?.collections;\r\n }\r\n\r\n get hasAnyCollections() {\r\n return this.collectionService.hasAnyCollections;\r\n }\r\n\r\n get isRefreshingCollections() {\r\n return this.collectionService?.isRefreshingCollections;\r\n }\r\n\r\n get hasEditPermissions() {\r\n return this.collectionService.hasEditPermissions;\r\n }\r\n\r\n get appName() {\r\n return this.config.coreConfig.appName;\r\n }\r\n\r\n readonly localizationKey = \"TERM_COLLECTIONS.\";\r\n readonly tooltipLocalizationKey = \"TERM_COLLECTIONS.TOOLTIPS.\";\r\n readonly readyStatus = \"Ready\";\r\n private sourceLanguageCode: string;\r\n private targetLanguageCode: string;\r\n private subscription: Subscription;\r\n\r\n readonly collectionErrorStatus = MtCollectionStatus.ERROR;\r\n\r\n constructor(private readonly collectionService: TldTermCollectionsService,\r\n private readonly config: TldTranslateConfigService,\r\n private readonly tldSystem: TldSystemService,\r\n private readonly dialog: MatDialog,\r\n private readonly translate: TranslateService,\r\n private readonly alerts: TldAlertService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscription = this.tldSystem.getActiveData().subscribe((active) => {\r\n this.sourceLanguageCode = active.sourceLang.lang;\r\n this.targetLanguageCode = active.targetLang.lang;\r\n })\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n getEditLink(collection: TldConvertedCollection) {\r\n return `${this.config.termConfig.apiUrl}/collections/${collection.termId}/mt/${this.sourceLanguageCode}/${this.targetLanguageCode}`;\r\n }\r\n\r\n createNew() {\r\n const localizationKey = \"TERM_COLLECTIONS.DEFAULT_COLLECTION_NAME\";\r\n this.translate.get(localizationKey).subscribe((collectionName) => {\r\n const dialogRef = this.dialog.open(TldTermCreateCollectionDialogComponent, {\r\n minWidth: '300px',\r\n maxWidth: '700px',\r\n data: { collectionName: collectionName }\r\n });\r\n dialogRef.afterClosed().subscribe(collectionName => {\r\n if (!collectionName) {\r\n return;\r\n }\r\n\r\n const languages = [this.sourceLanguageCode, this.targetLanguageCode];\r\n this.collectionService.create(languages, collectionName).subscribe((collection) => {\r\n window.open(this.getEditLink(collection), \"_blank\");\r\n },\r\n (err) => {\r\n console.error(err);\r\n const error = { ErrorCode: ErrorCode.COLLECTION_CREATE };\r\n this.alerts.unhandeledError(error);\r\n throw error;\r\n });\r\n });\r\n });\r\n }\r\n\r\n attach(collection: TldConvertedCollection) {\r\n this.collectionService.addCollectionToSystem(collection);\r\n }\r\n}\r\n","<header class=\"tld-collection-list-header\">\r\n <ng-container *ngIf=\"hasAnyCollections\">\r\n <h1 class=\"term-window-title\">\r\n <span fxHide.lt-sm>{{localizationKey + 'TITLE' | translate}}</span>\r\n <span fxHide.gt-xs>{{localizationKey + 'TITLE_MOBILE' | translate}}</span>\r\n </h1>\r\n <p class=\"term-window-description\">\r\n <span>{{localizationKey + 'DESCRIPTION_1' | translate}}</span>\r\n <span fxHide.lt-sm *ngIf=\"hasEditPermissions\">{{localizationKey + 'DESCRIPTION_2' | translate}}</span>\r\n <span fxHide.gt-xs *ngIf=\"hasEditPermissions\">{{localizationKey + 'DESCRIPTION_2_MOBILE' | translate}}</span>\r\n </p>\r\n </ng-container>\r\n <ng-container *ngIf=\"!hasAnyCollections\">\r\n <h1 class=\"term-window-title\">{{localizationKey + 'TITLE_EMPTY' | translate}}</h1>\r\n <p class=\"term-window-description\" fxHide.lt-sm>{{localizationKey + 'DESCRIPTION_EMPTY' | translate: {appName: appName} }}</p>\r\n <p class=\"term-window-description\" fxHide.gt-xs>{{localizationKey + 'DESCRIPTION_EMPTY_MOBILE' | translate: {appName: appName} }}</p>\r\n </ng-container>\r\n</header>\r\n<div *ngIf=\"hasAnyCollections\" class=\"tld-collection-list-body\">\r\n <mat-radio-group [attr.aria-label]=\"localizationKey + 'ARIA_LABELS.RADIO_GROUP' | translate\"\r\n [(ngModel)]=\"selected\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <mat-radio-button [value]=\"null\">\r\n {{localizationKey + 'SELECTED_NONE' | translate}}\r\n </mat-radio-button>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" *ngFor=\"let collection of collections\"\r\n [matTooltip]=\"collection.tooltipKey? (tooltipLocalizationKey + collection.tooltipKey | translate) : ''\">\r\n <mat-radio-button [value]=\"collection\" fxFlex\r\n [disabled]=\"collection.termId !== null && collection.entryCount<=0\" fxLayoutAlign=\"center center\">\r\n <span class=\"collection-label\" [matTooltip]=\"collection.tooltipKey? '' : collection.title\">\r\n {{collection.title}}</span>\r\n <span class=\"collection-label entries-count-label\"\r\n *ngIf=\"collection.entryCount!==undefined && !collection.mtAttachmentDateTime\"\r\n [matTooltip]=\"collection.tooltipKey? '' : (tooltipLocalizationKey+'ENTRY_COUNT' | translate)\">\r\n {{localizationKey + (collection.languagesString?'ENTRY_COUNT_WITH_LANGUGAES':'ENTRY_COUNT') |\r\n translate: {count: collection.entryCount, languages: collection.languagesString} }}\r\n </span>\r\n\r\n <span class=\"collection-label entries-count-label\"\r\n *ngIf=\"collection.mtEntryCount!==undefined && collection.mtAttachmentDateTime\"\r\n [matTooltip]=\"collection.tooltipKey? '' : (tooltipLocalizationKey+'MT_ENTRY_COUNT' | translate)\">\r\n {{localizationKey + ('MT_ENTRY_COUNT') |\r\n translate: {count: collection.mtEntryCount} }}\r\n </span>\r\n </mat-radio-button>\r\n\r\n <span *ngIf=\" collection.mtStatus === collectionErrorStatus\" color=\"accent\" class=\"material-icons\"\r\n [matTooltip]=\"(collection.errorKey? 'ERRORS.'+collection.errorKey : tooltipLocalizationKey + 'ATTACH_TO_SYSTEM_ERROR') | translate: { termId: collection.termId} \">\r\n error\r\n </span>\r\n\r\n <mat-spinner color=\"accent\" diameter=\"20\" *ngIf=\"collection.isImporting\"></mat-spinner>\r\n <ng-container *ngIf=\"hasEditPermissions\">\r\n <button mat-button *ngIf=\"collection.syncButtonVissible\" (click)=\"attach(collection)\" color=\"primary\"\r\n [matTooltip]=\"tooltipLocalizationKey + 'SYNC' | translate\" [disabled]=\"collection.isImporting\">\r\n {{localizationKey + (collectionErrorStatus === collection.mtStatus? 'SYNC_ERROR': 'SYNC') | translate}}\r\n </button>\r\n <a mat-button color=\"accent\" target=\"_blank\"\r\n [matTooltip]=\"collection.tooltipKey? '' : (tooltipLocalizationKey + 'EDIT' | translate)\"\r\n [attr.href]=\"getEditLink(collection)\" *ngIf=\"collection.termId\" fxHide.lt-sm>\r\n <span>\r\n {{localizationKey + 'EDIT' | translate}}\r\n </span>\r\n </a>\r\n </ng-container>\r\n </div>\r\n </mat-radio-group>\r\n</div>\r\n<footer class=\"tld-collection-list-footer\" fxLayout=\"row\" *ngIf=\"hasEditPermissions\">\r\n <button mat-flat-button color=\"primary\" (click)=\"createNew()\" fxHide.lt-sm>\r\n {{localizationKey + 'CREATE' | translate}}\r\n </button>\r\n</footer>\r\n","import { Injectable } from '@angular/core';\r\nimport { LangChangeEvent, TranslateService } from '@ngx-translate/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WtwLinkParamsService {\r\n\r\n private defaultQueryParams = {\r\n lang: this.translate.currentLang\r\n }\r\n private queryString: BehaviorSubject<string> = new BehaviorSubject(this.defaultQueryString)\r\n\r\n get defaultQueryString() {\r\n return `lang=${this.defaultQueryParams.lang}`\r\n }\r\n\r\n constructor(private readonly translate: TranslateService) {\r\n this.translate.onLangChange.subscribe((language: LangChangeEvent) => {\r\n this.defaultQueryParams.lang = language.lang;\r\n this.queryString.next(this.defaultQueryString);\r\n });\r\n };\r\n\r\n query(): Observable<string> {\r\n return this.queryString.asObservable()\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { TldTranslateConfigService } from '../../tld-common/services';\r\nimport { WtwLinkParamsService } from '../../tld-common/services/wtw-link-params.service';\r\n\r\n@Component({\r\n selector: 'tld-term-promotion',\r\n templateUrl: './tld-term-promotion.component.html',\r\n styleUrls: ['./tld-term-promotion.component.scss']\r\n})\r\nexport class TldTermPromotionComponent implements OnInit, OnDestroy {\r\n private readonly destroy$ = new Subject();\r\n\r\n readonly localizationKey = \"TERM_COLLECTIONS.PROMOTION.\";\r\n trialUrl: string;\r\n learnMoreUrl: string;\r\n\r\n constructor(\r\n private readonly config: TldTranslateConfigService,\r\n private readonly wtwQueryService: WtwLinkParamsService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.wtwQueryService.query().pipe(\r\n takeUntil(this.destroy$))\r\n .subscribe((query: string) => {\r\n this.trialUrl = `${this.config.termConfig.freeTrialUrl}?${query}`;\r\n this.learnMoreUrl = `${this.config.termConfig.learnMoreUrl}?${query}`;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(null)\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<section class=\"term-promotion-wrapper\" fxLayout=\"column\" fxLayoutGap=\"16px\">\r\n <div>\r\n <h1 class=\"term-window-title\">{{ localizationKey + \"TITLE\" | translate}}</h1>\r\n <p>{{ localizationKey + \"DESCRIPTION\" | translate}}</p>\r\n </div>\r\n <div fxLayoutGap=\"0.75em\" fxLayout.lt-sm=\"column\">\r\n <a [attr.href]=\"trialUrl\" target=\"_blank\" mat-flat-button color=\"primary\">\r\n {{ localizationKey + \"START_TRIAL\" | translate}}\r\n </a>\r\n <a [attr.href]=\"learnMoreUrl\" target=\"_blank\">{{ localizationKey + \"LEARN_MORE\" | translate}}</a>\r\n </div>\r\n</section>","import { Component } from '@angular/core';\r\nimport { TldTermCollectionsService } from '../services/tld-term-collections.service';\r\n\r\n@Component({\r\n selector: 'tld-term-collection',\r\n templateUrl: './tld-term-collection.component.html',\r\n styleUrls: ['./tld-term-collection.component.scss']\r\n})\r\nexport class TldTermCollectionComponent {\r\n get promotion() { return this.terms.shouldShowPromotion; }\r\n\r\n constructor(private readonly terms: TldTermCollectionsService) { }\r\n}\r\n","<section class=\"tld-collection-list-wrapper\">\r\n <ng-container *ngIf=\"!promotion\">\r\n <tld-term-collection-list></tld-term-collection-list>\r\n </ng-container>\r\n <ng-container *ngIf=\"promotion\">\r\n <tld-term-promotion></tld-term-promotion>\r\n </ng-container>\r\n</section>","import { Component } from '@angular/core';\r\nimport { TldConvertedCollection } from '../models';\r\nimport { TldTermCollectionsService } from '../services';\r\n\r\n\r\n@Component({\r\n selector: 'tld-term-menu',\r\n templateUrl: './tld-term-menu.component.html',\r\n styleUrls: ['./tld-term-menu.component.scss']\r\n})\r\nexport class TldTermMenuComponent {\r\n get selected() { return this.collectionService.selected };\r\n set selected(val: TldConvertedCollection) { this.collectionService.selected = val; }\r\n\r\n constructor(private readonly collectionService: TldTermCollectionsService) { }\r\n\r\n menuOpened(){\r\n this.collectionService.onMenuOpen();\r\n }\r\n \r\n menuClosed(){\r\n this.collectionService.onMenuClose();\r\n }\r\n}\r\n","<div fxLayoutAlign=\"center center\" [ngClass.lt-sm]=\"'tld-term-collection-wrapper-mobile'\" fxLayoutGap=\"8px\">\r\n <span fxHide.lt-md>\r\n {{'TERM_COLLECTIONS.GLOSSARY' | translate}}\r\n </span>\r\n <tld-open-close-button fxHide.lt-sm #state=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\"\r\n (menuOpened)=\"menuOpened()\" (menuClosed)=\"menuClosed()\"\r\n [matTooltip]=\"selected? selected.title:''\" [isOpened]=\"state.menuOpen\" class=\"tld-collection-menu-button\"\r\n [attr.aria-label]=\"'TERM_COLLECTIONS.ARIA_LABELS.OTHER_COLLECTIONS' | translate\">\r\n <span class=\"selected-collection\">\r\n {{selected? selected.title : ('TERM_COLLECTIONS.SELECTED_NONE' | translate)}}\r\n </span>\r\n <mat-spinner class=\"selected-col-spinner\" color=\"accent\" diameter=\"16\" *ngIf=\"selected?.isImporting\"></mat-spinner>\r\n </tld-open-close-button>\r\n <button mat-icon-button fxHide.gt-xs [matMenuTriggerFor]=\"menu\">\r\n <mat-icon svgIcon=\"collections_menu\" [attr.color]=\"selected?'accent':''\"></mat-icon>\r\n </button>\r\n\r\n</div>\r\n\r\n<mat-menu #menu=\"matMenu\" class=\"tld-collection-menu\">\r\n <tld-close-button fxHide.gt-xs></tld-close-button>\r\n <div class=\"tld-term-collection\" (click)=\"$event.stopPropagation()\" (keydown)=\"$event.stopPropagation()\">\r\n <tld-term-collection></tld-term-collection>\r\n </div>\r\n</mat-menu>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from '../material.module';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { TldCommonModule } from '../tld-common';\r\nimport { TldTermCollectionComponent } from './tld-term-collection/tld-term-collection.component';\r\nimport { TldTermCreateCollectionDialogComponent } from './tld-term-create-collection-dialog/tld-term-create-collection-dialog.component';\r\nimport { TldTermCollectionListComponent } from './tld-term-collection-list/tld-term-collection-list.component';\r\nimport { TldTermMenuComponent } from './tld-term-menu/tld-term-menu.component';\r\nimport { TldTermPromotionComponent } from './tld-term-promotion/tld-term-promotion.component';\r\nimport { CloseButtonModule } from '@tilde-nlp/ngx-common';\r\n\r\n\r\n@NgModule({\r\n declarations: [TldTermCollectionComponent, TldTermCollectionListComponent, TldTermCreateCollectionDialogComponent, TldTermMenuComponent, TldTermPromotionComponent ],\r\n imports: [\r\n FormsModule,\r\n CommonModule,\r\n MaterialModule,\r\n TranslateModule,\r\n MatMenuModule,\r\n MatDividerModule,\r\n MatRadioModule,\r\n MatProgressSpinnerModule,\r\n MatTooltipModule,\r\n TldCommonModule,\r\n ReactiveFormsModule,\r\n CloseButtonModule\r\n ],\r\n exports: [TldTermMenuComponent]\r\n})\r\nexport class TldTermModule { }\r\n","export enum FileTypeIcons{\r\n WORD = \"file_type_word\",\r\n WEB = \"file_type_web\",\r\n OTHER = \"file_type_other\",\r\n POWERPOINT = \"file_type_powerpoint\",\r\n EXCEL = \"file_type_excel\",\r\n OFFICE_OTHER = \"file_type_office_other\",\r\n PDF = \"file_type_pdf\",\r\n SCANNED = \"file_type_scanned\",\r\n INTERCHANGE = \"file_type_interchange\",\r\n}","export enum FileCategories {\r\n OFFICE = \"OFFICE\",\r\n SCANNED = \"SCANNED\",\r\n INTERCHANGE = \"INTERCHANGE\",\r\n WEB = \"WEB\",\r\n OTHER = \"OTHER\"\r\n}","export enum FileTypes{\r\n WORD = \"WORD\",\r\n WEB = \"WEB\",\r\n OTHER = \"OTHER\",\r\n POWERPOINT = \"POWERPOINT\",\r\n EXCEL = \"EXCEL\",\r\n OFFICE_OTHER = \"OFFICE_OTHER\",\r\n PDF = \"PDF\",\r\n SCANNED = \"SCANNED\",\r\n INTERCHANGE = \"INTERCHANGE\",\r\n}","export enum FileExtensions{\r\n DOC = \"doc\",\r\n DOCX = \"docx\",\r\n XLSX = \"xlsx\",\r\n PPTX = \"pptx\",\r\n ODT = \"odt\",\r\n ODP = \"odp\",\r\n ODS = \"ods\",\r\n TXT = \"txt\",\r\n RTF = \"rtf\",\r\n PAGES = \"pages\",\r\n SXW = \"sxw\",\r\n JPG = \"jpg\",\r\n JPEG = \"jpeg\",\r\n PNG = \"png\",\r\n BMP = \"bmp\",\r\n PDF = \"pdf\",\r\n SDLXLIFF = \"sdlxliff\",\r\n SDLXLF = \"sdlxlf\",\r\n TTX = \"ttx\",\r\n TMX = \"tmx\",\r\n XLF = \"xlf\",\r\n XLIF = \"xlif\",\r\n HTML = \"html\",\r\n HTM = \"htm\",\r\n JSON = \"json\",\r\n XHTML = \"xhtml\",\r\n XHT = \"xht\",\r\n XLIFF = \"xliff\",\r\n TEX = \"tex\",\r\n TTL = \"ttl\",\r\n SRT = \"srt\"\r\n}","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { FileCategories, FileExtensions, FileTypeIcons } from './models';\r\nimport { Config } from './models/interfaces/config';\r\nimport { DialogData } from './models/interfaces/dialog-data.model';\r\n\r\n@Component({\r\n selector: 'app-extension-dialog',\r\n templateUrl: './extension-dialog.component.html',\r\n styleUrls: ['./extension-dialog.component.scss']\r\n})\r\nexport class ExtensionDialogComponent implements OnInit {\r\n\r\n readonly config: Config = {\r\n elements: [\r\n {\r\n category: FileCategories.OFFICE,\r\n columns: [\r\n {\r\n extensions:\r\n [\r\n { extension: FileExtensions.DOC, icon: FileTypeIcons.WORD },\r\n { extension: FileExtensions.DOCX, icon: FileTypeIcons.WORD },\r\n { extension: FileExtensions.XLSX, icon: FileTypeIcons.EXCEL },\r\n { extension: FileExtensions.PPTX, icon: FileTypeIcons.POWERPOINT },\r\n { extension: FileExtensions.PDF, icon: FileTypeIcons.PDF }\r\n ]\r\n },\r\n {\r\n extensions: [\r\n { extension: FileExtensions.ODT, icon: FileTypeIcons.OFFICE_OTHER },\r\n { extension: FileExtensions.ODP, icon: FileTypeIcons.OFFICE_OTHER },\r\n { extension: FileExtensions.ODS, icon: FileTypeIcons.OFFICE_OTHER },\r\n { extension: FileExtensions.TXT, icon: FileTypeIcons.OFFICE_OTHER },\r\n { extension: FileExtensions.RTF, icon: FileTypeIcons.OFFICE_OTHER },\r\n { extension: FileExtensions.PAGES, icon: FileTypeIcons.OFFICE_OTHER },\r\n { extension: FileExtensions.SXW, icon: FileTypeIcons.OFFICE_OTHER }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n category: FileCategories.SCANNED,\r\n columns: [\r\n {\r\n extensions:\r\n [\r\n { extension: FileExtensions.JPG, icon: FileTypeIcons.SCANNED },\r\n { extension: FileExtensions.JPEG, icon: FileTypeIcons.SCANNED },\r\n { extension: FileExtensions.PNG, icon: FileTypeIcons.SCANNED },\r\n { extension: FileExtensions.BMP, icon: FileTypeIcons.SCANNED },\r\n { extension: FileExtensions.BMP, icon: FileTypeIcons.SCANNED },\r\n { extension: FileExtensions.PDF, icon: FileTypeIcons.PDF }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n category: FileCategories.INTERCHANGE,\r\n columns: [\r\n {\r\n extensions: [\r\n { extension: FileExtensions.SDLXLIFF, icon: FileTypeIcons.INTERCHANGE },\r\n { extension: FileExtensions.SDLXLF, icon: FileTypeIcons.INTERCHANGE },\r\n { extension: FileExtensions.TTX, icon: FileTypeIcons.INTERCHANGE },\r\n { extension: FileExtensions.TMX, icon: FileTypeIcons.INTERCHANGE },\r\n { extension: FileExtensions.XLF, icon: FileTypeIcons.INTERCHANGE },\r\n { extension: FileExtensions.XLIF, icon: FileTypeIcons.INTERCHANGE },\r\n { extension: FileExtensions.XLIFF, icon: FileTypeIcons.INTERCHANGE }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n category: FileCategories.WEB,\r\n columns: [\r\n {\r\n extensions:\r\n [\r\n { extension: FileExtensions.HTML, icon: FileTypeIcons.WEB },\r\n { extension: FileExtensions.HTM, icon: FileTypeIcons.WEB },\r\n { extension: FileExtensions.JSON, icon: FileTypeIcons.WEB },\r\n { extension: FileExtensions.XHTML, icon: FileTypeIcons.WEB },\r\n { extension: FileExtensions.XHT, icon: FileTypeIcons.WEB }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n category: FileCategories.OTHER,\r\n columns: [\r\n {\r\n extensions: [\r\n { extension: FileExtensions.TEX, icon: FileTypeIcons.OTHER },\r\n { extension: FileExtensions.TTL, icon: FileTypeIcons.OTHER },\r\n { extension: FileExtensions.SRT, icon: FileTypeIcons.OTHER }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n };\r\n\r\n extensions: string[];\r\n undescribedExtensions: string[] = [];\r\n\r\n\r\n constructor(@Inject(MAT_DIALOG_DATA) private data: DialogData) { }\r\n\r\n ngOnInit(): void {\r\n this.updateConfig();\r\n }\r\n\r\n updateConfig() {\r\n let extensions = [...this.data.extensions];\r\n this.config.elements.forEach(category => {\r\n category.columns.forEach((column) => {\r\n column.extensions.forEach((element) => {\r\n const elementIx = extensions.indexOf(element.extension);\r\n if (elementIx >= 0) {\r\n extensions.splice(elementIx, 1);\r\n element.visible = true;\r\n category.anyVisible = true;\r\n column.anyVisible = true;\r\n }\r\n })\r\n })\r\n });\r\n this.undescribedExtensions = extensions;\r\n }\r\n\r\n}\r\n","<div mat-dialog-content>\r\n <tld-close-button mat-dialog-close></tld-close-button>\r\n\r\n <header>\r\n <h1>{{'EXTENSION_POPUP.TITLE' | translate}}</h1>\r\n <p class=\"description\">{{'EXTENSION_POPUP.DESCRIPTION' | translate}}</p>\r\n </header>\r\n <div fxLayout=\"row\" fxLayout.lt-md=\"column\" [ngClass.lt-md]=\"'small-screen'\">\r\n <div *ngFor=\"let category of config.elements\" class=\"category\">\r\n <ng-container *ngIf=\"category.anyVisible\">\r\n <h2 class=\"category-title\">\r\n {{'EXTENSION_POPUP.'+category.category | translate}}\r\n </h2>\r\n <div fxLayout=\"row\">\r\n <div *ngFor=\"let column of category.columns\" class=\"extension-column\">\r\n <ul *ngIf=\"column.anyVisible\">\r\n <ng-container *ngFor=\"let extension of column.extensions\">\r\n <li *ngIf=\"extension.visible\" fxLayoutAlign=\"start center\">\r\n <mat-icon svgIcon=\"{{extension.icon}}\" aria-hidden=\"false\"\r\n [attr.aria-label]=\"extension.extension\">\r\n </mat-icon>\r\n <span>{{extension.extension}}</span>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ExtensionDialogComponent } from '../extension-dialog.component';\r\nimport { DialogData } from '../models/interfaces/dialog-data.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExtensionDialogService {\r\n\r\n\r\n constructor(private readonly dialog: MatDialog) { }\r\n\r\n open(extensions: string[]) {\r\n const data: DialogData = { extensions };\r\n this.dialog.open(ExtensionDialogComponent, { data });\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ExtensionDialogService } from '../../services';\r\n\r\n@Component({\r\n selector: 'tld-open-extension-dialog',\r\n templateUrl: './open-extension-dialog.component.html',\r\n styleUrls: ['./open-extension-dialog.component.scss']\r\n})\r\nexport class OpenExtensionDialogComponent implements OnInit {\r\n @Input() extensions: string[] = [];\r\n\r\n constructor(private readonly service: ExtensionDialogService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n open() {\r\n this.service.open(this.extensions);\r\n }\r\n\r\n}\r\n","<button class=\"open-extension-popup btn-as-link\" (click)=\"open()\">\r\n {{'EXTENSION_POPUP.OPEN' | translate}}\r\n</button>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ExtensionDialogComponent } from './extension-dialog.component';\r\nimport { OpenExtensionDialogComponent } from './components/open-extension-dialog/open-extension-dialog.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { CloseButtonModule } from '@tilde-nlp/ngx-common';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ExtensionDialogComponent,\r\n OpenExtensionDialogComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n TranslateModule,\r\n MatDialogModule,\r\n FlexLayoutModule,\r\n MatIconModule,\r\n CloseButtonModule\r\n ],\r\n exports: [\r\n OpenExtensionDialogComponent\r\n ]\r\n})\r\nexport class ExtensionDialogModule { }\r\n","export enum AudioErrorCase {\r\n USER_CONSENT_FAILED = \"USER_CONSENT_FAILED\",\r\n RECORDER_TIMEOUT = \"RECORDER_TIMEOUT\",\r\n ALREADY_RECORDING = \"ALREADY_RECORDING\",\r\n MIC_NOT_ALLOWED = \"MIC_NOT_ALLOWED\",\r\n CANT_START_RECORDING = \"CANT_START_RECORDING\",\r\n MAX_SIZE_EXCEEDED = \"MAX_SIZE_EXCEEDED\",\r\n NO_TEXT_RECOGNIZED = \"NO_TEXT_RECOGNIZED\",\r\n MAX_TIME_EXCEEDED = \"MAX_TIME_EXCEEDED\",\r\n NO_SPEECH = \"NO_SPEECH\"\r\n}","import { Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { AsrClient, AsrClientConfiguration, RecognitionStatus, SpeechRecognitionResult } from 'asr-api-client';\r\nimport { AudioErrorCase } from '../models/audio-error-case.model';\r\nimport { IDictateConfiguration } from '../models/dictate-configurationi.model';\r\n\r\n@Component({\r\n selector: 'tld-dictate',\r\n templateUrl: './tld-dictate.component.html',\r\n styleUrls: ['./tld-dictate.component.scss']\r\n})\r\nexport class TldDictateComponent implements OnInit {\r\n\r\n @HostListener('window:resize', [])\r\n onResize() {\r\n this.setCanvasWidth();\r\n }\r\n\r\n @ViewChild(\"canvasWrapper\") canvasWrapper: ElementRef<any>;\r\n recordLength: Date = new Date(0, 0, 0, 0, 0, 0);\r\n canvasWidth: number;\r\n isProcessing: boolean;\r\n hasAnyMicrophone: boolean;\r\n // asrApiClient: ASRApiClient;\r\n asrClient: AsrClient;\r\n\r\n get maxLength() { return this.configuration?.maxLength };\r\n\r\n private _isRecording: boolean;\r\n get isRecording() { return this._isRecording; }\r\n set isRecording(value: boolean) {\r\n const shouldClearSource = !this.isRecording && value;\r\n // if record ended, dictate text emitted one last time, so it translates automatically.\r\n this._isRecording = value;\r\n this.isDictating.emit(this._isRecording);\r\n if (shouldClearSource) {\r\n this.dictatedText = \"\";\r\n }\r\n\r\n if (!this.isRecording && this.interval) {\r\n this.recordLength = new Date(0, 0, 0, 0, 0, 0);\r\n clearInterval(this.interval);\r\n }\r\n }\r\n\r\n private _dictatedText: string;\r\n set dictatedText(value: string) {\r\n this._dictatedText = value;\r\n this.result.emit(this._dictatedText);\r\n }\r\n get dictatedText() { return this._dictatedText; }\r\n\r\n readonly visualizataionId = \"dictate-visualization\";\r\n private interval: any;\r\n\r\n /**\r\n * Last recognized text\r\n */\r\n @Output() result: EventEmitter<string> = new EventEmitter<string>();\r\n @Output() partialResult: EventEmitter<string> = new EventEmitter<string>();\r\n @Output() isDictating: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n @Output() onError: EventEmitter<AudioErrorCase> = new EventEmitter<AudioErrorCase>();\r\n @Input() configuration: IDictateConfiguration;\r\n\r\n private _language: string;\r\n @Input() set language(value: string) {\r\n this._language = value;\r\n this.asrClient?.changeLanguage(value);\r\n }\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n const config: AsrClientConfiguration = {\r\n appId: this.configuration.appId,\r\n appSecret: this.configuration.appSecret,\r\n language: this._language,\r\n apiUrl: this.configuration.apiUrl,\r\n visualizerConfig: {\r\n visualizerId: this.visualizataionId\r\n },\r\n onResult: (result) => { this.handleResult(result) },\r\n onRecordingStartStop: (isRecording) => {\r\n this.isRecording = isRecording;\r\n setTimeout(() => {\r\n this.setCanvasWidth();\r\n this.asrClient.audioVisualizer?.visualizeAudio();\r\n }, 1);\r\n },\r\n onError: (error) => {\r\n if (error.name === \"NotAllowedError\") {\r\n this.emitError(AudioErrorCase.MIC_NOT_ALLOWED);\r\n return;\r\n }\r\n throw error;\r\n },\r\n onMessage: (message) => {\r\n if (message === RecognitionStatus.NoSpeech) {\r\n this.emitError(AudioErrorCase.NO_SPEECH);\r\n }\r\n }\r\n }\r\n this.asrClient = new AsrClient(config);\r\n\r\n this.findMic();\r\n }\r\n\r\n startRecording() {\r\n this.asrClient.beginVoiceRecognition();\r\n this.interval = setInterval(() => {\r\n const recordTimeInSeconds = this.asrClient?.audioContext?.currentTime ?? 0;\r\n if (this.maxLength && recordTimeInSeconds > this.maxLength) {\r\n this.stopRecording();\r\n this.emitError(AudioErrorCase.MAX_TIME_EXCEEDED);\r\n return;\r\n }\r\n this.recordLength = new Date(0, 0, 0, 0, 0, recordTimeInSeconds);\r\n }, 1000);\r\n }\r\n\r\n stopRecording() {\r\n this.asrClient.endVoiceRecognition();\r\n }\r\n\r\n private setCanvasWidth() {\r\n this.canvasWidth = this.canvasWrapper?.nativeElement.offsetWidth;\r\n }\r\n\r\n private findMic() {\r\n navigator.mediaDevices.enumerateDevices().then((devices: MediaDeviceInfo[]) => {\r\n this.hasAnyMicrophone = false;\r\n for (const device of devices) {\r\n if (device.kind === \"audioinput\") {\r\n this.hasAnyMicrophone = true;\r\n return;\r\n }\r\n }\r\n });\r\n }\r\n\r\n private handleResult(result: SpeechRecognitionResult) {\r\n // not necessary to display <unk> tags\r\n const resultText = result.hypotheses[0].transcript?.replace(\"<unk>\", \"\");\r\n if (result.final) {\r\n let text = (this.dictatedText.length > 0 ? \" \" : \"\") + resultText + (resultText.endsWith(\".\") ? \"\" : \".\");\r\n this.dictatedText += text;\r\n }\r\n else {\r\n this.partialResult.emit(resultText);\r\n }\r\n }\r\n\r\n private emitError(error: AudioErrorCase) {\r\n this.onError.emit(error);\r\n }\r\n}\r\n","<ng-container *ngIf=\"!isRecording\">\r\n <button [disabled]=\"!hasAnyMicrophone\" mat-button mat-icon-button fxLayoutAlign=\"center center\"\r\n (click)=\"startRecording()\" color=\"accent\"\r\n [attr.aria-label]=\"(hasAnyMicrophone?'AUDIO.START':'AUDIO.MIC_NOT_FOUND') | translate\">\r\n <span class=\"material-icons\" *ngIf=\"hasAnyMicrophone\" color=\"accent\" [matTooltip]=\"'AUDIO.START' | translate\">\r\n mic\r\n </span>\r\n <span class=\"material-icons\" [matTooltip]=\"'AUDIO.MIC_NOT_FOUND' | translate\" *ngIf=\"!hasAnyMicrophone\">\r\n mic_off\r\n </span>\r\n </button>\r\n</ng-container>\r\n<ng-container *ngIf=\"isRecording\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start end\">\r\n <div fxLayout=column>\r\n <button mat-button mat-icon-button fxLayoutAlign=\"center center\" [disabled]=\"!isRecording\"\r\n (click)=\"stopRecording()\" color=\"accent\" [matTooltip]=\"'AUDIO.STOP' | translate\"\r\n [attr.aria-label]=\"'AUDIO.STOP' | translate\">\r\n <span class=\"material-icons\">\r\n stop\r\n </span>\r\n </button>\r\n <div class=\"tld-audio-timer\" fxLayoutAlign=\"center center\">\r\n {{recordLength | date: 'mm:ss'}}\r\n </div>\r\n </div>\r\n <div fxFlex #canvasWrapper>\r\n <canvas [attr.width]=\"canvasWidth\" height=\"60\" [attr.id]=\"visualizataionId\"></canvas>\r\n </div>\r\n </div>\r\n</ng-container>","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { AudioErrorCase } from '../models/audio-error-case.model';\r\n\r\ndeclare var MediaRecorder: any;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AudioRecordService {\r\n private blobType: string;\r\n private readonly defaultBlobType = \"audio/wav\";\r\n private chunks: Array<any> = [];\r\n protected recorderEnded = new EventEmitter();\r\n private recorder: any;\r\n //NodeJs.Timeout?\r\n private timerRef: any;\r\n\r\n private recordTimeSeconds: number;\r\n\r\n private _recordTimeDate: Date;\r\n get recordTimeDate() { return this._recordTimeDate; }\r\n\r\n private _onRecordingStatusChange: Subject<boolean> = new Subject();\r\n get onRecordingStatusChange() { return this._onRecordingStatusChange.asObservable(); }\r\n\r\n private _onRecordStart: Subject<any> = new Subject();\r\n get onRecordStart() { return this._onRecordStart.asObservable(); }\r\n\r\n private _onError: Subject<any> = new Subject();\r\n get onError() { return this._onError.asObservable(); }\r\n\r\n get isRecording() { return this._isRecording; }\r\n private _isRecording: boolean;\r\n\r\n private static guc() {\r\n return navigator.mediaDevices.getUserMedia({ audio: true });\r\n }\r\n\r\n private maxFileSizeBytes: number;\r\n private currentFileSizeBytes: number;\r\n\r\n getUserContent() {\r\n return AudioRecordService.guc();\r\n }\r\n\r\n startRecording(dataUpdateTimeFrame: number, maxFileSizeInBytes: number, type?: string) {\r\n this.currentFileSizeBytes = 0;\r\n this.maxFileSizeBytes = maxFileSizeInBytes;\r\n this._recordTimeDate = new Date(0, 0, 0, 0, 0, 0);\r\n this.blobType = type;\r\n if (this._isRecording) {\r\n this.throwError(AudioErrorCase.ALREADY_RECORDING);\r\n }\r\n\r\n AudioRecordService.guc().then((mediaStream) => {\r\n this._onRecordStart.next(null)\r\n this.recordTimeSeconds = 0;\r\n this.recorder = new MediaRecorder(mediaStream);\r\n this.addListeners();\r\n this.recorder.start(dataUpdateTimeFrame);\r\n this.timerRef = setInterval(() => {\r\n this.recordTimeSeconds++;\r\n // New date every time, so that angular date pipe updates in ui\r\n this._recordTimeDate = new Date(0, 0, 0, 0, 0, this.recordTimeSeconds);\r\n }, 1000)\r\n\r\n this.toggleRecordingStatus(true);\r\n }).catch((error: DOMException) => {\r\n if (error.name === \"NotAllowedError\") {\r\n this.throwError(AudioErrorCase.MIC_NOT_ALLOWED);\r\n }\r\n else {\r\n this.throwError(AudioErrorCase.CANT_START_RECORDING);\r\n }\r\n });;\r\n }\r\n\r\n stopRecording() {\r\n return new Promise((resolve, reject) => {\r\n this.recorderEnded.subscribe((blob) => {\r\n this.toggleRecordingStatus(false);\r\n if (this.timerRef) {\r\n clearInterval(this.timerRef);\r\n }\r\n resolve(blob);\r\n }, _ => {\r\n this.throwError(AudioErrorCase.RECORDER_TIMEOUT);\r\n reject(AudioErrorCase.RECORDER_TIMEOUT);\r\n });\r\n this.recorder.stop();\r\n }).catch(() => {\r\n this.throwError(AudioErrorCase.USER_CONSENT_FAILED);\r\n });\r\n }\r\n\r\n private addListeners() {\r\n this.recorder.addEventListener('dataavailable', event => {\r\n this.appendToChunks(event);\r\n });\r\n\r\n this.recorder.addEventListener('stop', () => {\r\n this.recordingStopped();\r\n });\r\n }\r\n\r\n private appendToChunks = (event: any) => {\r\n this.chunks.push(event.data);\r\n this.currentFileSizeBytes += event.data.size;\r\n\r\n if (this.recorder.state !== \"inactive\") {\r\n if (this.maxFileSizeBytes && this.maxFileSizeBytes < this.currentFileSizeBytes) {\r\n this.throwError(AudioErrorCase.MAX_SIZE_EXCEEDED);\r\n }\r\n }\r\n };\r\n\r\n private recordingStopped = () => {\r\n const blob = new Blob(this.chunks, { type: this.blobType ?? this.defaultBlobType });\r\n this.blobType = null;\r\n this.chunks = [];\r\n this.recorderEnded.emit(blob);\r\n this.clear();\r\n };\r\n\r\n private clear() {\r\n this.recorder = null;\r\n this.chunks = [];\r\n }\r\n\r\n private toggleRecordingStatus(isRecording: boolean) {\r\n this._isRecording = isRecording;\r\n this._onRecordingStatusChange.next(this._isRecording);\r\n }\r\n\r\n private throwError(code: AudioErrorCase) {\r\n this._onError.next(code);\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { IVoiceToTextJob, IVoiceToTextJobServerResponse, IVoiceToTextStartJobRequestParams } from '../../tld-common/models';\r\nimport { TldTranslateConfigService } from '../../tld-common/services';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TldVoiceInputApiService {\r\n\r\n private get audioConfig() { return this.config.audioConfig; }\r\n\r\n constructor(private readonly http: HttpClient,\r\n private readonly config: TldTranslateConfigService) { }\r\n\r\n startJob(params: IVoiceToTextStartJobRequestParams): Observable<IVoiceToTextJob> {\r\n\r\n if (!this.audioConfig.audioApiUrl) {\r\n console.error(\"Speech API url not defined\");\r\n throw null;\r\n }\r\n\r\n const formData: FormData = new FormData();\r\n formData.append(\"file\", params.file);\r\n formData.append(\"langauge\", params.language);\r\n return this.http.post<IVoiceToTextJobServerResponse>(this.audioConfig.audioApiUrl, formData).pipe(\r\n map(response => this.mapJob(response))\r\n )\r\n }\r\n\r\n getJobInfo(jobId: string) {\r\n return this.http.get<IVoiceToTextJobServerResponse>(`${this.audioConfig.audioApiUrl}/${jobId}`).pipe(\r\n map(response => this.mapJob(response))\r\n );\r\n }\r\n\r\n\r\n private mapJob(response: IVoiceToTextJobServerResponse): IVoiceToTextJob {\r\n // converts to VoiceToTextState, so it suits enum conventions.\r\n const state: any = response.state.toUpperCase().replace(/ /g, \"_\");\r\n return {\r\n createdAt: new Date(response.created_at),\r\n fileName: response.file_name,\r\n jobId: response.job_id,\r\n language: response.language,\r\n state,\r\n updatedAt: new Date(response.updated_at),\r\n errorMessage: response.error_message,\r\n transcription: response.transcription\r\n };\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { IVoiceToTextJob, IVoiceToTextStartJobRequestParams, VoiceToTextState } from '../../tld-common/models';\r\nimport { ITranscriptionUpdateModel } from '../models/transcription-update.model';\r\nimport { TldVoiceInputApiService } from './tld-voice-input-api.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TldVoiceInputService {\r\n\r\n activeJob: IVoiceToTextJob;\r\n isProcessing: boolean;\r\n\r\n private readonly timeoutMs = 1000;\r\n private lastTranscribtion: string;\r\n\r\n private readonly transcribtionTextUpdated: Subject<ITranscriptionUpdateModel> = new Subject();\r\n get onTranscribtionTextUpdated() { return this.transcribtionTextUpdated.asObservable(); }\r\n\r\n constructor(private readonly api: TldVoiceInputApiService) { }\r\n\r\n startTranscribtion(params: IVoiceToTextStartJobRequestParams) {\r\n this.isProcessing = true;\r\n this.api.startJob(params).subscribe((job) => {\r\n this.activeJob = job;\r\n this.lastTranscribtion = job.transcription;\r\n this.scheduleProgressCheckIfNecessary();\r\n })\r\n }\r\n\r\n stopProcessing() {\r\n if (this.isProcessing) {\r\n this.activeJob = null;\r\n this.isProcessing = false;\r\n }\r\n }\r\n\r\n private checkProgress() {\r\n if (!this.activeJob) {\r\n return;\r\n }\r\n\r\n this.api.getJobInfo(this.activeJob.jobId).subscribe((response) => {\r\n this.activeJob = response;\r\n const isCompleted = VoiceToTextState.COMPLETED === response.state;\r\n if ((response.transcription && this.lastTranscribtion !== response.transcription) || isCompleted) {\r\n this.transcribtionTextUpdated.next({ text: response.transcription, completed: isCompleted});\r\n }\r\n this.lastTranscribtion = response.transcription;\r\n this.scheduleProgressCheckIfNecessary();\r\n })\r\n }\r\n\r\n private scheduleProgressCheckIfNecessary() {\r\n if (this.activeJob.state === VoiceToTextState.COMPLETED) {\r\n this.isProcessing = false;\r\n }\r\n else {\r\n setTimeout(() => {\r\n this.checkProgress();\r\n }, this.timeoutMs);\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { Common } from '../../tld-common/models';\r\nimport { TldAlertService, TldTranslateConfigService } from '../../tld-common/services';\r\nimport { TldSystemService } from '../../tld-tooltip/services';\r\nimport { AudioErrorCase } from '../models';\r\nimport { AudioRecordService } from '../services/audio-record.service';\r\nimport { TldVoiceInputService } from '../services/tld-voice-input.service';\r\n\r\n@Component({\r\n selector: 'tld-record',\r\n templateUrl: './tld-record.component.html',\r\n styleUrls: ['./tld-record.component.scss']\r\n})\r\nexport class TldRecordComponent implements OnInit, OnDestroy {\r\n\r\n get isRecording() {\r\n return this.audioRecorderService.isRecording;\r\n }\r\n\r\n get recordTimeDate() { return this.audioRecorderService.recordTimeDate; }\r\n get isProcessing() { return this.voiceProcessingService.isProcessing; }\r\n\r\n hasAnyMicrophone: boolean;\r\n\r\n /**\r\n * Successfuly recorded BLOB\r\n */\r\n @Output() record: EventEmitter<Blob> = new EventEmitter<Blob>();\r\n\r\n private recordErrorSubscription: Subscription;\r\n\r\n constructor(private readonly audioRecorderService: AudioRecordService,\r\n private readonly systemService: TldSystemService,\r\n private readonly configService: TldTranslateConfigService,\r\n private readonly voiceProcessingService: TldVoiceInputService,\r\n private readonly alert: TldAlertService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.recordErrorSubscription = this.audioRecorderService.onError.subscribe((error: AudioErrorCase) => {\r\n if (error === AudioErrorCase.MAX_SIZE_EXCEEDED) {\r\n this.alert.unhandeledError({ ErrorCode: error }, { maxSizeMb: Common.bytesToMb(this.configService.audioConfig.audioMaxSizeBytes) })\r\n this.stopRecording();\r\n }\r\n else {\r\n this.alert.unhandeledError({ ErrorCode: error });\r\n }\r\n })\r\n\r\n this.findMic();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.recordErrorSubscription.unsubscribe();\r\n }\r\n\r\n startRecording() {\r\n this.audioRecorderService.startRecording(this.configService.audioConfig.dataUpdateTimeFrame, this.configService.audioConfig.audioMaxSizeBytes);\r\n }\r\n\r\n stopRecording() {\r\n this.audioRecorderService.stopRecording().then((output: Blob) => {\r\n this.record.next(output);\r\n this.processVoiceRecord(output);\r\n });\r\n }\r\n\r\n cancel() {\r\n if (this.audioRecorderService.isRecording) {\r\n this.audioRecorderService.stopRecording();\r\n }\r\n if (this.voiceProcessingService.isProcessing) {\r\n this.voiceProcessingService.stopProcessing()\r\n }\r\n }\r\n\r\n processVoiceRecord(file: Blob) {\r\n const language = this.systemService.getActiveSystemObj().sourceLanguage;\r\n this.voiceProcessingService.startTranscribtion({ file, language });\r\n }\r\n\r\n private findMic() {\r\n navigator.mediaDevices.enumerateDevices().then((devices: MediaDeviceInfo[]) => {\r\n this.hasAnyMicrophone = false;\r\n for (const device of devices) {\r\n if (device.kind === \"audioinput\") {\r\n this.hasAnyMicrophone = true;\r\n return;\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","<div fxLayout=\"row\" fxFlex>\r\n <ng-container *ngIf=\"!(isRecording || isProcessing)\">\r\n <button [disabled]=\"!hasAnyMicrophone\" mat-button mat-icon-button fxLayoutAlign=\"center center\"\r\n (click)=\"startRecording()\" color=\"accent\" [attr.aria-label]=\"(hasAnyMicrophone?'AUDIO.START':'AUDIO.MIC_NOT_FOUND') | translate\">\r\n <span class=\"material-icons\" *ngIf=\"hasAnyMicrophone\" color=\"accent\" \r\n [matTooltip]=\"'AUDIO.START' | translate\">\r\n mic\r\n </span>\r\n <span class=\"material-icons\" [matTooltip]=\"'AUDIO.MIC_NOT_FOUND' | translate\"\r\n *ngIf=\"!hasAnyMicrophone\">\r\n mic_off\r\n </span>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"isRecording || isProcessing\">\r\n <div fxLayout=\"column\">\r\n <button mat-button mat-icon-button fxLayoutAlign=\"center center\" [disabled]=\"!isRecording\"\r\n (click)=\"stopRecording()\" color=\"accent\" [matTooltip]=\"'AUDIO.STOP' | translate\" [attr.aria-label]=\"'AUDIO.STOP' | translate\">\r\n <span class=\"material-icons\">\r\n stop\r\n </span>\r\n </button>\r\n <div class=\"tld-audio-timer\" fxLayoutAlign=\"center center\">\r\n {{recordTimeDate | date:'mm:ss'}}\r\n </div>\r\n </div>\r\n <div fxLayout=\"row\" fxFlex fxLayoutAlign=\"center center\">\r\n <div fxFlex fxLayoutAlign=\"center center\" data-test-id=\"voice-input-info\">\r\n <span *ngIf=\"isRecording\">{{'AUDIO.DESCRIBE_STATE_RECORDING' | translate}}</span>\r\n <span *ngIf=\"isProcessing\">{{'AUDIO.DESCRIBE_STATE_PROCESSING' | translate}}</span>\r\n </div>\r\n <button mat-flat-button color=\"accent\" (click)=\"cancel()\">{{'AUDIO.CANCEL' | translate}}</button>\r\n </div>\r\n </ng-container>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { TldDictateComponent } from './tld-dictate/tld-dictate.component';\r\nimport { TldRecordComponent } from './tld-record/tld-record.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [TldRecordComponent, TldDictateComponent],\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n MatTooltipModule,\r\n MatIconModule,\r\n FlexLayoutModule,\r\n MatButtonModule\r\n ],\r\n exports: [TldRecordComponent, TldDictateComponent]\r\n})\r\nexport class TldAudioModule { }\r\n","export class HighlightParams {\r\n static invalidPhraseClass = \"tld-invalid-phrase\";\r\n static wordClass = \"tld-word\";\r\n static siblingClass = \"tld-sibling\";\r\n static sentenceClass = \"tld-sentence\";\r\n static sourceHighlightClass = \"textarea-highlight-background\";\r\n static targetHighlightClass = \"translated-source\";\r\n static hoveredClassName = \"hovered\";\r\n static multipleWordWrapper = \"multiple-word-wrapper\";\r\n}","export enum HighlightTreeType{\r\n WORD,\r\n SENTENCE,\r\n PARAGRAPH,\r\n OTHER,\r\n /** Hypen needs to be as seperate and standalone type so that lines are broken same as in textarea.*/\r\n HYPEN,\r\n /** Sometimes one word for textarea, is multiple words for api. Simple sentence: \"It.\" Api sees it as 2 words but textarea as one, thats why this should be wrapped and display set to inline-block*/\r\n WORD_WRAPPER\r\n}","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\nimport { TldHighlightService } from '../../../tld-common/services';\r\nimport { IGrammarCheckReplacement } from '../../models/grammar-check-replacement.model';\r\nimport { HighlightParams } from '../../models/highlight-params.model';\r\nimport { HighlightTreeType } from '../../models/highlight-tree-type.model';\r\nimport { IHighlightTree } from '../../models/highlight-tree.model';\r\n\r\n@Component({\r\n selector: 'tld-highlight-tree',\r\n templateUrl: './highlight-tree.component.html',\r\n styleUrls: ['./highlight-tree.component.scss']\r\n})\r\nexport class HighlightTreeComponent {\r\n\r\n @Input() tree: IHighlightTree;\r\n @Input() isSource: boolean;\r\n @Input() correctionsEnabled: boolean = true;\r\n @Input() highlight: boolean;\r\n @Input() gramCheck: boolean;\r\n @Input() selectSentence: boolean;\r\n @Output() onReplace: EventEmitter<IGrammarCheckReplacement> = new EventEmitter();\r\n\r\n constructor(private readonly highlightService: TldHighlightService) { }\r\n\r\n mouseEnter(event: MouseEvent) {\r\n this.onMouseEvent(event, this.isSource, true);\r\n }\r\n\r\n mouseLeave(event: MouseEvent) {\r\n this.onMouseEvent(event, this.isSource, false);\r\n }\r\n\r\n gramCheckMenu(tree: IHighlightTree, menuTrigger?: MatMenuTrigger) {\r\n if (tree.grammarMeta && this.gramCheck) {\r\n menuTrigger.openMenu();\r\n }\r\n }\r\n\r\n replace(tree: IHighlightTree, replacement: string) {\r\n this.onReplace.next({\r\n endIx: tree.grammarMeta.endIx,\r\n paragraphIx: tree.paragraphIx ?? tree.root?.paragraphIx,\r\n replacement: replacement,\r\n startIx: tree.grammarMeta.startIx\r\n });\r\n }\r\n\r\n parentClick(tree: IHighlightTree) {\r\n if (this.selectSentence && tree.type === HighlightTreeType.SENTENCE) {\r\n this.highlightService.changeSelectedTargetSentence({ paragraphIx: tree.paragraphIx ?? tree.root?.paragraphIx, sentenceIx: Number(tree.elementId) });\r\n }\r\n }\r\n\r\n isSelectedSentence(tree: IHighlightTree) {\r\n return this.selectSentence && tree.type === HighlightTreeType.SENTENCE\r\n && this.highlightService.selectedTargetSentence?.paragraphIx === (tree.paragraphIx ?? tree.root?.paragraphIx)\r\n && this.highlightService.selectedTargetSentence.sentenceIx.toString() === tree.elementId;\r\n }\r\n\r\n private onMouseEvent(event: MouseEvent, isSource: boolean, isMouseEnter: boolean): void {\r\n const element = event.target as Element;\r\n let elementWithSiblings = [element];\r\n\r\n if (this.highlight) {\r\n let siblingParentClass: string;\r\n if (isSource) {\r\n siblingParentClass = HighlightParams.targetHighlightClass;\r\n }\r\n else {\r\n siblingParentClass = HighlightParams.sourceHighlightClass;\r\n }\r\n element.classList.forEach((className: string) => {\r\n if (className.includes(HighlightParams.siblingClass)) {\r\n const querySelector = `.${siblingParentClass} .${className.replace(HighlightParams.siblingClass, HighlightParams.wordClass)}`;\r\n elementWithSiblings = elementWithSiblings.concat(Array.from(document.querySelectorAll(querySelector)));\r\n }\r\n });\r\n }\r\n\r\n elementWithSiblings.forEach((element) => {\r\n // necessary to highlight also sibling sentence, not only sibling.\r\n let parent = this.findWordParentSentence(element);\r\n\r\n if (isMouseEnter) {\r\n element.classList.add(HighlightParams.hoveredClassName);\r\n parent?.classList.add(HighlightParams.hoveredClassName);\r\n }\r\n else {\r\n element.classList.remove(HighlightParams.hoveredClassName);\r\n parent?.classList.remove(HighlightParams.hoveredClassName);\r\n }\r\n });\r\n }\r\n\r\n private findWordParentSentence(element: any){\r\n const maxDistanceToParent = 2;\r\n let parent = element.parentElement;\r\n for (let index = 0; index < maxDistanceToParent; index++) {\r\n if(parent.classList.contains(HighlightParams.sentenceClass)){\r\n return parent;\r\n }\r\n parent = parent.parentElement;\r\n }\r\n return null;\r\n }\r\n}\r\n","<ng-template #highlightTree let-tree=\"tree\">\r\n <ng-container *ngIf=\"!tree.children\">\r\n <ng-container *ngIf=\"tree.text\">\r\n <ng-container *ngIf=\"tree.grammarMeta && gramCheck\">\r\n <mat-menu #menu=\"matMenu\" class=\"grammar-check-menu\">\r\n <div class=\"title\">\r\n {{'GRAMMAR_CHECK_MENU.TITLE' | translate}}\r\n </div>\r\n <div *ngFor=\"let replacement of tree.grammarMeta.replacements\">\r\n <button mat-button color=\"accent\" (click)=\"replace(tree, replacement)\">\r\n {{replacement}}\r\n </button>\r\n </div>\r\n </mat-menu>\r\n <span #menuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"{{tree.class}}\"\r\n [innerHTML]=\"tree.text\" (mouseenter)=\"mouseEnter($event)\" (click)=\"gramCheckMenu(tree, menuTrigger)\"\r\n (mouseleave)=\"mouseLeave($event)\"></span>\r\n\r\n </ng-container>\r\n <ng-container *ngIf=\"!(tree.grammarMeta && gramCheck)\">\r\n <span class=\"{{tree.class}}\" [innerHTML]=\"tree.text\" (mouseenter)=\"mouseEnter($event)\"\r\n (mouseleave)=\"mouseLeave($event)\"></span>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!tree.text\">\r\n <br>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"tree.children\">\r\n <span [ngClass]=\"{'selected-sentence': isSelectedSentence(tree)}\" class=\"highlight-tree-child-wrapper {{tree.class}}\"\r\n (mouseenter)=\"mouseEnter($event)\" (mouseleave)=\"mouseLeave($event)\" (click)=\"parentClick(tree)\">\r\n <ng-template ngFor let-child [ngForOf]=\"tree.children\">\r\n <ng-template [ngTemplateOutlet]=\"highlightTree\" [ngTemplateOutletContext]=\"{ tree: child }\">\r\n </ng-template>\r\n </ng-template>\r\n </span>\r\n </ng-container>\r\n</ng-template>\r\n\r\n\r\n\r\n<div *ngIf=\"tree\" class=\"tld-highlight-tree\">\r\n <ng-template [ngTemplateOutlet]=\"highlightTree\" [ngTemplateOutletContext]=\"{ tree: tree }\"></ng-template>\r\n</div>","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport { InlineMessage } from '@tilde-nlp/ngx-common';\r\nimport { TldTranslateConfigService } from '../../../tld-common/services/tld-translate-config.service';\r\nimport { TldSystemService } from '../../../tld-tooltip/services/tld-system.service';\r\n\r\n@Component({\r\n selector: 'progress-indicator',\r\n templateUrl: './progress-indicator.component.html',\r\n styleUrls: ['./progress-indicator.component.scss']\r\n})\r\nexport class ProgressIndicatorComponent implements OnInit {\r\n\r\n readonly closeButtonAriaLabel = \"TEXT_TRANSLATION_PROGRESS_INDICATOR.CLOSE_BUTTON_ARIA_LABEL\";\r\n readonly closeButtonTooltip = \"TEXT_TRANSLATION_PROGRESS_INDICATOR.CLOSE_BUTTON_TOOLTIP\";\r\n\r\n @Output() onClose: EventEmitter<null> = new EventEmitter();\r\n\r\n vendor: string;\r\n showTitle: boolean;\r\n\r\n titleMessage: InlineMessage;\r\n\r\n constructor(private systemService: TldSystemService, private configService: TldTranslateConfigService) { }\r\n\r\n ngOnInit(): void {\r\n this.vendor = this.systemService.activeVendor;\r\n this.showTitle = this.configService.textConfig.progressIndicatorTitleVisibleForVendors?.includes(this.vendor);\r\n }\r\n\r\n close() {\r\n this.onClose.next(null);\r\n }\r\n\r\n}\r\n","<div fxLayout=\"row\">\r\n <div fxFlex>\r\n <vendor-disclaimer *ngIf=\"showTitle\"></vendor-disclaimer>\r\n <mat-progress-bar mode=\"indeterminate\" color=\"accent\"></mat-progress-bar>\r\n <div class=\"text-s status\">{{\"TEXT_TRANSLATION_PROGRESS_INDICATOR.TRANSLATING\" | translate}}</div>\r\n </div>\r\n <div fxLayoutAlign=\"center center\">\r\n <tld-close-button (tldClick)=\"close()\" [tooltip]=\"closeButtonTooltip\" [ariaCode]=\"closeButtonAriaLabel\"></tld-close-button>\r\n </div>\r\n</div>\r\n","import { HighlightTreeType } from \"../models/highlight-tree-type.model\";\r\nimport { IHighlightTree } from \"../models/highlight-tree.model\";\r\nimport { IParagraphInfo } from \"../models/highlight.model\";\r\nimport { IExistingParagraphInfo } from \"./models/existing-paragraph-info.model\";\r\n\r\nexport class TldTranslateTextUtils {\r\n /** Finds paragraph in given array, by comparing its text. This is helpful to use to check if parahraph is already translated. */\r\n static findExistingParagraph(searchParagraph: string, searchParagraphIx: number, paragraphs: IParagraphInfo[]): IExistingParagraphInfo {\r\n const returnObject = {\r\n hasSameIx: false,\r\n existingParagraph: null\r\n };\r\n for (var i = 0; i < paragraphs.length; i++) {\r\n const currentParagraph = paragraphs[i];\r\n if (currentParagraph.source.originalText == searchParagraph) {\r\n\r\n // Paragraph hasn't changed and its position is the same, no need to do anything else.\r\n if (currentParagraph.ix === searchParagraphIx) {\r\n returnObject.existingParagraph = currentParagraph;\r\n break;\r\n }\r\n\r\n returnObject.hasSameIx = true;\r\n returnObject.existingParagraph = {\r\n searchParagraphIx,\r\n source: Object.assign({}, currentParagraph.source),\r\n target: Object.assign({}, currentParagraph.target)\r\n };\r\n if (searchParagraphIx > currentParagraph.ix) {\r\n break;\r\n }\r\n }\r\n }\r\n return returnObject;\r\n }\r\n\r\n static changeRootAndParagraphIx(tree: IHighlightTree, root: IHighlightTree, paragraphIx: number) {\r\n tree.paragraphIx = paragraphIx;\r\n if (root != tree) {\r\n tree.root = root;\r\n }\r\n\r\n if (tree.children) {\r\n const children = [];\r\n tree.children?.forEach((child) => {\r\n const newChild = Object.assign({}, child);\r\n this.changeRootAndParagraphIx(newChild, root, paragraphIx)\r\n children.push(newChild);\r\n })\r\n tree.children = children;\r\n }\r\n }\r\n\r\n static createEmptyParagraphInfo(ix: number): IParagraphInfo {\r\n const sourceParagraph: IHighlightTree = { text: \"\", originalText: \"\", paragraphIx: ix, type: HighlightTreeType.PARAGRAPH, root: null };\r\n const targetParagraph: IHighlightTree = { text: \"\", originalText: \"\", paragraphIx: ix, type: HighlightTreeType.PARAGRAPH, root: null };\r\n const newParagraph: IParagraphInfo = {\r\n ix: ix,\r\n source: sourceParagraph,\r\n target: targetParagraph\r\n };\r\n return newParagraph;\r\n }\r\n}","import { CdkScrollable, ScrollDispatcher } from '@angular/cdk/overlay';\r\nimport { Injectable } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n/** Service is used to synchronize registered scrollbars. For example, source and target window scrollbars should be synced in text translation. This service handles it. */\r\nexport class TldScrollService {\r\n\r\n private subscription: Subscription;\r\n\r\n constructor(\r\n private readonly scrollDispatcher: ScrollDispatcher\r\n ) { }\r\n\r\n subscribeToScroll(){\r\n this.subscription = this.scrollDispatcher.scrolled()\r\n .subscribe((scrollable: CdkScrollable) => {\r\n this.syncScrollbars(scrollable);\r\n });\r\n }\r\n\r\n unsubscribeToScroll(){\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n syncScrollbars(scrollable?: CdkScrollable, offset?: number) {\r\n if (typeof scrollable == \"undefined\" && (!offset || offset != 0)) {\r\n return;\r\n }\r\n const scrollOffsetKey = \"top\";\r\n const offsetValue = offset || offset == 0 ? offset : scrollable.measureScrollOffset(scrollOffsetKey);\r\n Array.from(this.scrollDispatcher.scrollContainers.keys())\r\n .filter(otherScrollable => otherScrollable && otherScrollable !== scrollable)\r\n .forEach(otherScrollable => {\r\n if (otherScrollable.measureScrollOffset(scrollOffsetKey) !== offsetValue) {\r\n const scrollTo = {};\r\n scrollTo[scrollOffsetKey] = offsetValue;\r\n otherScrollable.scrollTo(scrollTo);\r\n }\r\n });\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Observable, of, Subject, Subscription, timer } from 'rxjs';\r\nimport { catchError, debounce, distinctUntilChanged, mergeMap, tap } from 'rxjs/operators';\r\nimport { TextToSpeechSettings } from '../../../components/shared/text-to-speech/models/text-to-speech-settings.model';\r\nimport { TEXT_API_SERVICE_TOKEN } from '../../../injection-tokens';\r\nimport { Common, ErrorCode, ITldTranslateTextApiService, ITranslateParagraphRequestParams } from '../../tld-common/models';\r\nimport { TldAlertService, TldHighlightService, TldTranslateConfigService } from '../../tld-common/services';\r\nimport { TldScrollService } from '../../tld-common/services/scroll/tld-scroll.service';\r\nimport { TldSystemService } from '../../tld-tooltip/services';\r\nimport { IDictionaryEntry, ISourceChangeEvent } from '../models/dictionary.model';\r\nimport { HighlightTreeType } from '../models/highlight-tree-type.model';\r\nimport { IHighlightTree } from '../models/highlight-tree.model';\r\nimport { IParagraphInfo } from '../models/highlight.model';\r\nimport { IRetranslateParams } from '../models/retranslate-params.model';\r\nimport { ITranslateParagraphResponse } from '../models/translate-paragraph-response.model';\r\nimport { IUntranslatedParagraph } from '../models/untranslated-paragraph.model';\r\nimport { TldTranslateTextUtils } from '../utils/tld-translate-text.utils';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TldTranslateTextService {\r\n\r\n private _sourceText: string;\r\n get sourceText() {\r\n return this._sourceText;\r\n }\r\n\r\n private _sourceTextHypothesis: string;\r\n get sourceTextHypothesis() {\r\n return this._sourceTextHypothesis;\r\n }\r\n\r\n private _sourceChange: Subject<ISourceChangeEvent> = new Subject();\r\n get sourceChange() { return this._sourceChange.asObservable(); }\r\n\r\n private _sourceScroll: Subject<number> = new Subject();\r\n get sourceScroll() { return this._sourceScroll.asObservable(); }\r\n\r\n private _translateButtonClick: Subject<any> = new Subject();\r\n get translateButtonClick() { return this._translateButtonClick.asObservable(); }\r\n\r\n private _hasDictionary: boolean;\r\n get hasDictionary() { return this._hasDictionary; }\r\n set hasDictionary(val) {\r\n this._hasDictionary = val;\r\n if (!val) {\r\n this._dictionaryEntry = null;\r\n }\r\n }\r\n\r\n private _dictionaryEntry: IDictionaryEntry[];\r\n get dictionaryEntry() { return this._dictionaryEntry; }\r\n set dictionaryEntry(val) {\r\n this._dictionaryEntry = val;\r\n if (this.dictionaryEntry) {\r\n this.hasDictionary = true;\r\n }\r\n }\r\n get translatedText(): string {\r\n return this.targetParagraphs.map(line => line.originalText).join(\"\\n\")\r\n }\r\n\r\n private readonly _onClear = new Subject<any>();\r\n\r\n urlToTranslate: string;\r\n paragraphs: IParagraphInfo[] = [];\r\n sourceParagraphs: IHighlightTree[] = [];\r\n targetParagraphs: IHighlightTree[] = [];\r\n\r\n // Set this object with necessary values to display TTS component\r\n textToSpeechSourceSettings: TextToSpeechSettings;\r\n textToSpeechTargetSettings: TextToSpeechSettings;\r\n\r\n private _firstParagraphTranslated: boolean;\r\n get firstParagraphTranslated() {\r\n return this._firstParagraphTranslated;\r\n }\r\n\r\n private dictionarySubscription: Subscription;\r\n private paragraphTranslationsSubject = new Subject<IUntranslatedParagraph>();\r\n private paragraphTranslationSubscription: Subscription;\r\n private readonly debouncer: Subject<ISourceChangeEvent> = new Subject<ISourceChangeEvent>();\r\n private debouncerSubscription: Subscription;\r\n /** How many paragraphs can be translated at the same time. */\r\n private readonly CONCURRENT_UPLOADS = 5;\r\n private readonly DEBOUNCE_TIME = 1000;\r\n\r\n /** Whether progress indicator should be shown. This value must be set to true only if configured time has passed. */\r\n private _shouldShowProgressIndicator = false;\r\n get shouldShowProgressIndicator() { return this._shouldShowProgressIndicator; }\r\n //NodeJS.Timeout\r\n private progressIndicatorTimeout: any;\r\n\r\n private _untranslatedParagraphCount = 0;\r\n get untranslatedParagraphCount() { return this._untranslatedParagraphCount; }\r\n set untranslatedParagraphCount(value: number) {\r\n this._untranslatedParagraphCount = value;\r\n // When translation finished, progress indicator should not be shown.\r\n if (value === 0) {\r\n this.toggleTextToSpeech();\r\n this.hideProgressIndicator();\r\n }\r\n }\r\n\r\n get isTranslating() { return this.untranslatedParagraphCount > 0; }\r\n\r\n // getters from config service.\r\n get allowWebsiteTranslation(): boolean { return this.configService.textConfig.allowWebsiteTranslation; };\r\n get autoRedirectToWebTranslate(): boolean { return this.configService.textConfig.autoRedirectToWebTranslate; };\r\n get webWidgetRedirectUrlPrefix(): string { return this.configService.textConfig.webWidgetRedirectUrlPrefix; };\r\n get webWidgetRedirectUrlPosfix(): string { return this.configService.textConfig.webWidgetRedirectUrlPosfix; };\r\n get useDictionary(): boolean { return this.configService.textConfig.useDictionary; };\r\n get progressIndicatorTimeoutMiliSeconds(): number { return this.configService.textConfig.progressIndicatorTimeoutMiliSeconds; }\r\n // -----------------------------\r\n\r\n get activeData() {\r\n return this.systemService.getActiveSystemObj();\r\n }\r\n\r\n get translateUrlRedirect() {\r\n if (this.webWidgetRedirectUrlPrefix === '') {\r\n return `${this.webWidgetRedirectUrlPrefix}${this.webWidgetRedirectUrlPosfix}${encodeURIComponent(this.urlToTranslate)}`;\r\n } else {\r\n return `${this.webWidgetRedirectUrlPrefix}${this.translate.currentLang}${this.webWidgetRedirectUrlPosfix}${this.urlToTranslate}`;\r\n }\r\n }\r\n\r\n /** If dictattion is active. Based on this, extensions are hidden. */\r\n isDictating: boolean;\r\n\r\n constructor(@Inject(TEXT_API_SERVICE_TOKEN) private readonly api: ITldTranslateTextApiService,\r\n private readonly systemService: TldSystemService,\r\n private readonly tldScrollService: TldScrollService,\r\n private readonly configService: TldTranslateConfigService,\r\n private readonly translate: TranslateService,\r\n private readonly highlightService: TldHighlightService,\r\n private readonly alertsService: TldAlertService) { }\r\n\r\n dictionaryTranslation(text: string, srcCode: string, trgCode: string) {\r\n return this.api.dictionaryTranslation(text, srcCode, trgCode);\r\n }\r\n\r\n changeSource(event: ISourceChangeEvent) {\r\n this._sourceText = event.phrase;\r\n this._sourceChange.next(event);\r\n this.debouncer.next(event);\r\n }\r\n\r\n changeSourceHypothesis(text: string) {\r\n this._sourceTextHypothesis = text;\r\n }\r\n\r\n onSourceScroll(offsetTop: number) {\r\n this._sourceScroll.next(offsetTop);\r\n }\r\n\r\n onTranslateButtonClick() {\r\n this._translateButtonClick.next(null)\r\n this.retranslate({ buttonClicked: true });\r\n }\r\n\r\n clearSource() {\r\n this._onClear.next(null)\r\n this.changeSource({ phrase: \"\" })\r\n }\r\n\r\n onClear(): Observable<any> {\r\n return this._onClear.asObservable();\r\n }\r\n\r\n updateTranslation(options: string, systemID: string, text: string, translation: string) {\r\n return this.api.updateTranslation(options, systemID, text, translation);\r\n }\r\n\r\n listenOnChanges() {\r\n if (this.debouncerSubscription) {\r\n return;\r\n }\r\n\r\n this.debouncerSubscription = this.debouncer.pipe(\r\n distinctUntilChanged((previous) => {\r\n return previous.phrase == this.sourceText;\r\n }),\r\n debounce(ev => ev.phrase?.length > 0 ? timer(this.DEBOUNCE_TIME) : timer(0))\r\n )\r\n .subscribe((event) => {\r\n this.highlightService.changeSelectedTargetSentence(null);\r\n\r\n if (!event.disableAutomaticTranslation) {\r\n this.retranslate();\r\n }\r\n });\r\n }\r\n\r\n stopListeningToChanges() {\r\n if (!this.debouncerSubscription) {\r\n return;\r\n }\r\n this.debouncerSubscription.unsubscribe();\r\n this.debouncerSubscription = null;\r\n }\r\n\r\n // if method gets called because of button click and url entered - go to web translation\r\n retranslate(params?: IRetranslateParams) {\r\n if (!this.sourceText || this.sourceText == \"\") {\r\n this.clearSourceParams();\r\n return;\r\n }\r\n\r\n if (params?.buttonClicked || params?.systemChanged) {\r\n this.clearSourceParams();\r\n }\r\n\r\n const maxSourceCharacterDictionary = 200;\r\n const maxDictionaryWords = 12;\r\n\r\n const wordsInSource = Common.getWordCount(this.sourceText);\r\n this.urlToTranslate = Common.isTextUrl(this.sourceText);\r\n if (this.allowWebsiteTranslation && this.urlToTranslate) {\r\n this.paragraphs = [];\r\n this.sourceParagraphs = [];\r\n this.targetParagraphs = [];\r\n\r\n if (this.autoRedirectToWebTranslate || params?.buttonClicked) {\r\n window.open(this.translateUrlRedirect, \"_blank\");\r\n }\r\n return;\r\n }\r\n else {\r\n this.urlToTranslate = null;\r\n }\r\n // TODO. Letonika dictionary?\r\n if (this.useDictionary && this.sourceText.length < maxSourceCharacterDictionary && wordsInSource <= maxDictionaryWords) {\r\n this.prepareAndTranslateWords();\r\n return;\r\n }\r\n this.translateText(this.sourceText);\r\n }\r\n\r\n /** Stops text translation if it is active. */\r\n stopTranslation() {\r\n this.untranslatedParagraphCount = 0;\r\n if (this.paragraphTranslationSubscription) {\r\n this.paragraphTranslationSubscription.unsubscribe();\r\n }\r\n\r\n if (this.dictionarySubscription) {\r\n this.dictionarySubscription.unsubscribe();\r\n }\r\n }\r\n\r\n private recreateParagraphTranslationSubject() {\r\n this._firstParagraphTranslated = false;\r\n this.paragraphTranslationsSubject = new Subject<IUntranslatedParagraph>();\r\n\r\n const source = this.sourceText;\r\n this.untranslatedParagraphCount = 0;\r\n this.paragraphTranslationSubscription = this.paragraphTranslationsSubject.asObservable().pipe(\r\n mergeMap((untranslatedParagraph) => {\r\n this.untranslatedParagraphCount += 1;\r\n return this.translateParagraph(untranslatedParagraph).pipe(\r\n tap((response: ITranslateParagraphResponse) => {\r\n // No need to handle response if source text has changed.\r\n if (source != this.sourceText) {\r\n return;\r\n }\r\n this.handleTranslatedParagraph(response);\r\n this.updateParagraphs(untranslatedParagraph.ix, response);\r\n this.untranslatedParagraphCount -= 1;\r\n }),\r\n catchError(err => {\r\n this.untranslatedParagraphCount -= 1;\r\n if (err.status === 500) {\r\n this.alertsService.unhandeledError({ ErrorCode: ErrorCode.TRANSLATION_FAILED });\r\n }\r\n this.alertsService.unhandeledError(err);\r\n\r\n // after calling this method, subject is destroyed and unsubscribed, so thrown error wont have any effect.\r\n this.stopTranslation();\r\n this.alertsService.unhandeledError(err);\r\n throw err;\r\n }))\r\n }, this.CONCURRENT_UPLOADS),\r\n ).subscribe();\r\n }\r\n\r\n private translateParagraph(paragraph: IUntranslatedParagraph): Observable<ITranslateParagraphResponse> {\r\n const params: ITranslateParagraphRequestParams = {\r\n paragraphIx: paragraph.ix,\r\n text: paragraph.line,\r\n system: this.activeData\r\n };\r\n if (!params.text || params.text.length === 0) {\r\n return of({\r\n sourceTree: { text: \"\", paragraphIx: params.paragraphIx, type: HighlightTreeType.PARAGRAPH, root: null, originalText: \"\" },\r\n targetTree: { text: \"\", paragraphIx: params.paragraphIx, type: HighlightTreeType.PARAGRAPH, root: null, originalText: \"\" }\r\n });\r\n }\r\n\r\n return this.api.translateParagraph(params);\r\n }\r\n\r\n private handleTranslatedParagraph(paragraph: ITranslateParagraphResponse) {\r\n //if auto domain detection is on, system api service sets system id to `${srcLang}-${targetLang}` so we need to validate if that is the case\r\n if (paragraph.systemId && this.activeData.id !== paragraph.systemId\r\n && this.activeData.id === `${this.activeData.sourceLanguage}-${this.activeData.targetLanguage}`) {\r\n this.systemService.changeSystem(paragraph.systemId);\r\n }\r\n\r\n // Needs to scroll to top after first paragraph is translated.\r\n if (!this._firstParagraphTranslated) {\r\n // if empty paragraph is 'translated' first, no need to do any scrolling. Wait for real text to be translated.\r\n if (paragraph.targetTree.text.trim().length > 0) {\r\n this._firstParagraphTranslated = true;\r\n this.tldScrollService.syncScrollbars(null, 0);\r\n }\r\n }\r\n }\r\n\r\n private updateParagraphs(paragraphIx: number, response: ITranslateParagraphResponse) {\r\n let paragraph: IParagraphInfo = {\r\n ix: paragraphIx,\r\n target: response.targetTree,\r\n source: response.sourceTree\r\n };\r\n\r\n this.paragraphs.splice(paragraphIx, 1, paragraph);\r\n this.sourceParagraphs.splice(paragraphIx, 1, response.sourceTree);\r\n this.targetParagraphs.splice(paragraphIx, 1, response.targetTree);\r\n\r\n this.paragraphs.sort((a, b) => (a.ix > b.ix) ? 1 : -1);\r\n }\r\n\r\n private clearSourceParams() {\r\n this._dictionaryEntry = null;\r\n this._hasDictionary = false;\r\n this.paragraphs = [];\r\n this.targetParagraphs = [];\r\n this.sourceParagraphs = [];\r\n this.urlToTranslate = null;\r\n this.textToSpeechTargetSettings = null;\r\n this.textToSpeechSourceSettings = null;\r\n this.stopTranslation();\r\n }\r\n\r\n\r\n private prepareAndTranslateWords() {\r\n const activeSystemObject = this.activeData;\r\n this.dictionarySubscription = this.dictionaryTranslation(this.sourceText.trim(),\r\n activeSystemObject.sourceLanguage, activeSystemObject.targetLanguage)\r\n .subscribe((response: IDictionaryEntry[]) => {\r\n this.dictionarySubscription = null;\r\n if (!response || !response[0] || !response[0].translations || response[0].translations.length == 0) {\r\n this.translateText(this.sourceText);\r\n this.hasDictionary = false;\r\n return;\r\n }\r\n this.dictionaryEntry = response;\r\n }, () => {\r\n this.translateText(this.sourceText);\r\n this.hasDictionary = false;\r\n });\r\n }\r\n\r\n private translateText(text: string) {\r\n const paragraphs = Common.splitInParagraphs(text);\r\n const newParagraphs: IParagraphInfo[] = [];\r\n const newSourceParagraphs: IHighlightTree[] = [];\r\n const newTargetParagraphs: IHighlightTree[] = [];\r\n\r\n // source text changed. Previously made observables aren't necessary anymore;\r\n this.recreateParagraphTranslationSubject();\r\n\r\n paragraphs.forEach((paragraph, ix) => {\r\n // Check if paragraph with same text exists (so you don't have to translate it again).\r\n // If it does, you can clone it.\r\n const existingParagraphInfo = TldTranslateTextUtils.findExistingParagraph(paragraph, ix, this.paragraphs);\r\n const existingParagraph = existingParagraphInfo.existingParagraph;\r\n if (existingParagraphInfo.existingParagraph) {\r\n if (!existingParagraphInfo.hasSameIx) {\r\n TldTranslateTextUtils.changeRootAndParagraphIx(existingParagraph.source, existingParagraph.source, existingParagraph.ix);\r\n TldTranslateTextUtils.changeRootAndParagraphIx(existingParagraph.target, existingParagraph.target, existingParagraph.ix);\r\n }\r\n newParagraphs.splice(ix, 0, existingParagraph);\r\n newTargetParagraphs.splice(ix, 0, existingParagraph.target);\r\n newSourceParagraphs.splice(ix, 0, existingParagraph.source);\r\n }\r\n else {\r\n const newParagraph = TldTranslateTextUtils.createEmptyParagraphInfo(ix);\r\n\r\n newParagraphs.splice(ix, 0, newParagraph);\r\n newSourceParagraphs.splice(ix, 0, newParagraph.source);\r\n newTargetParagraphs.splice(ix, 0, newParagraph.target);\r\n this.paragraphTranslationsSubject.next({ ix: ix, line: paragraph });\r\n }\r\n });\r\n\r\n if (this.isTranslating) {\r\n this.setProgressIndicatorTimeout();\r\n }\r\n\r\n this.paragraphs = newParagraphs;\r\n this.targetParagraphs = newTargetParagraphs;\r\n this.sourceParagraphs = newSourceParagraphs;\r\n }\r\n\r\n /** Creates timeout which enables progress indicator after given miliseconds */\r\n private setProgressIndicatorTimeout() {\r\n if (this.progressIndicatorTimeoutMiliSeconds === null || this.progressIndicatorTimeoutMiliSeconds === undefined) {\r\n return;\r\n }\r\n\r\n if (this.configService.textConfig.progressIndicatorVisible) {\r\n this.progressIndicatorTimeout = setTimeout(() => {\r\n this.showProgressIndicator();\r\n }, this.progressIndicatorTimeoutMiliSeconds);\r\n }\r\n }\r\n\r\n /** Method for setting necessary properties to make progress indicator visible. */\r\n private showProgressIndicator() {\r\n this._shouldShowProgressIndicator = true;\r\n }\r\n\r\n /** Method for setting necessary properties to make progress indicator hidden. */\r\n hideProgressIndicator() {\r\n if (this.progressIndicatorTimeout) {\r\n clearTimeout(this.progressIndicatorTimeout);\r\n }\r\n this._shouldShowProgressIndicator = false;\r\n }\r\n\r\n private toggleTextToSpeech() {\r\n // if nothing translated, tts should not be available\r\n if (!this.targetParagraphs.length) {\r\n return;\r\n }\r\n\r\n const activeSystem = this.activeData;\r\n this.textToSpeechTargetSettings = this.findTextToSpeechSettings(activeSystem.targetLanguage, this.translatedText);\r\n this.textToSpeechSourceSettings = this.findTextToSpeechSettings(activeSystem.sourceLanguage, this.sourceText);\r\n }\r\n\r\n private findTextToSpeechSettings(languageCode: string, text: string): TextToSpeechSettings {\r\n const settings = this.configService.textToSpeechConfig.languages[languageCode];\r\n if (settings) {\r\n return {\r\n text,\r\n url: settings.url,\r\n voice: settings.voice,\r\n langBpc47: settings.langBpc47,\r\n maxCharsInText: this.configService.textToSpeechConfig.maxCharsInText\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","import { AfterViewInit, Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { Common } from '../../../tld-common/models';\r\nimport { TldAlertService } from '../../../tld-common/services';\r\nimport { ISourceChangeEvent } from '../../models/dictionary.model';\r\nimport { IGrammarCheckReplacement } from '../../models/grammar-check-replacement.model';\r\nimport { HighlightParams } from '../../models/highlight-params.model';\r\nimport { IHighlightTree } from '../../models/highlight-tree.model';\r\nimport { TldTranslateTextService } from '../../services/tld-translate-text.service';\r\n\r\n@Component({\r\n selector: 'tld-textarea-with-background',\r\n templateUrl: './textarea-with-background.component.html',\r\n styleUrls: ['./textarea-with-background.component.scss']\r\n})\r\nexport class TextareaWithBackgroundComponent implements OnInit, AfterViewInit {\r\n @ViewChild(\"sourceInput\") sourceInput: ElementRef;\r\n @ViewChild(\"treeWrapper\") treeWrapper: ElementRef;\r\n\r\n @Input() maxCharLength: number;\r\n @Input() autoFocuss: boolean;\r\n @Input() highlightTree: IHighlightTree[];\r\n @Input() highlight: boolean;\r\n @Input() gramCheck: boolean;\r\n @Input() textareaDisabled: boolean;\r\n\r\n //@Output() sourceChangedManually: EventEmitter<ISourceChangeEvent> = new EventEmitter();\r\n //@Output() sourceTextChanged: EventEmitter<string> = new EventEmitter();\r\n\r\n hoveredBackgroundElements: Element[] = [];\r\n\r\n private _suggestedText: string;\r\n get suggestedText() { return this._suggestedText; }\r\n\r\n private _sourceText: string;\r\n get sourceText() { return this._sourceText; };\r\n set sourceText(val) {\r\n this._sourceText = val;\r\n // this is necessary so that highlighting is always in his real place also when tree wrapper is not finished rendering.\r\n if (this.treeWrapper) {\r\n this.treeWrapper.nativeElement.style.height = this.sourceInput.nativeElement.scrollHeight;\r\n }\r\n this.textService.changeSource({ phrase: val });\r\n }\r\n\r\n readonly clearButtonAriaCode = \"CLEAR_SOURCE\";\r\n readonly wrapperClass = HighlightParams.sourceHighlightClass;\r\n\r\n constructor(private readonly alerts: TldAlertService,\r\n private readonly textService: TldTranslateTextService) { }\r\n\r\n ngOnInit(): void {\r\n this._sourceText = this.textService.sourceText;\r\n\r\n this.textService.sourceChange.subscribe((event) => {\r\n //this.changeSourceManually(event);\r\n this._sourceText = event.phrase;\r\n if (!this.sourceText || this.sourceText.length === 0) {\r\n setTimeout(() => {\r\n this.sourceInput.nativeElement.focus();\r\n }, 0);\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.autoFocuss) {\r\n this.focus();\r\n }\r\n }\r\n\r\n onTextAreaMouseMove(event: MouseEvent) {\r\n const x = event.clientX;\r\n const y = event.clientY;\r\n const hoveredElements = this.findBackgroundElements(x, y);\r\n\r\n this.hoveredBackgroundElements.forEach((hoveredElement) => {\r\n if (!hoveredElements.includes(hoveredElement)) {\r\n this.dispatchEvent(\"mouseleave\", hoveredElement);\r\n }\r\n });\r\n\r\n hoveredElements.forEach((hoveredElement) => {\r\n this.dispatchEvent(\"mouseenter\", hoveredElement);\r\n });\r\n\r\n this.hoveredBackgroundElements = hoveredElements;\r\n }\r\n\r\n onPaste(event: ClipboardEvent) {\r\n if (this.maxCharLength > 0) {\r\n const totalCharLength = (this.sourceText || \"\").length + event.clipboardData.getData(\"text\").length;\r\n if (totalCharLength > this.maxCharLength) {\r\n this.alerts.warning(\"ERRORS.MAX_CHAR_LENGTH\", { maxCharLength: this.maxCharLength, totalSymbols: totalCharLength});\r\n }\r\n }\r\n }\r\n\r\n textareaClick(event: MouseEvent) {\r\n const x = event.clientX;\r\n const y = event.clientY;\r\n const hoveredElements = this.findBackgroundElements(x, y);\r\n hoveredElements.forEach((element) => {\r\n this.dispatchEvent(\"click\", element);\r\n });\r\n }\r\n\r\n replace(replacement: IGrammarCheckReplacement) {\r\n const paragraphs = Common.splitInParagraphs(this.sourceText);\r\n const paragraph = paragraphs[replacement.paragraphIx];\r\n paragraphs[replacement.paragraphIx] = `${paragraph.substring(0, replacement.startIx)}${replacement.replacement}${paragraph.substring(replacement.endIx)}`;\r\n this.changeSourceManually({ phrase: Common.joinParagraphs(paragraphs) });\r\n }\r\n\r\n private changeSourceManually(event: ISourceChangeEvent) {\r\n this._sourceText = event.phrase;\r\n\r\n //to clear target.\r\n if (!this.sourceText || this.sourceText === \"\") {\r\n event.disableAutomaticTranslation = false;\r\n }\r\n this.textService.changeSource(event);\r\n }\r\n\r\n private findBackgroundElements(x: number, y: number): Element[] {\r\n const elements = document.querySelectorAll(`.${this.wrapperClass} .${HighlightParams.sentenceClass}, .${this.wrapperClass} .${HighlightParams.wordClass}, .${this.wrapperClass} .${HighlightParams.invalidPhraseClass}`);\r\n return this.findElementsAtPosition(Array.from(elements), x, y);\r\n }\r\n\r\n private focus() {\r\n this.sourceInput?.nativeElement?.focus();\r\n }\r\n\r\n private findElementsAtPosition(elements: Element[], x: number, y: number): Element[] {\r\n const foundedElements: Element[] = [];\r\n elements.forEach((element) => {\r\n const boundRectangles = element.getClientRects();\r\n\r\n for (let rectIndex = 0; rectIndex < boundRectangles.length; rectIndex++) {\r\n let boundRectangle = boundRectangles[rectIndex];\r\n if (x >= boundRectangle.left && y >= boundRectangle.top &&\r\n x <= boundRectangle.right && y <= boundRectangle.bottom) {\r\n foundedElements.push(element);\r\n }\r\n }\r\n });\r\n return foundedElements;\r\n }\r\n\r\n private dispatchEvent = (eventName: string, element: Element) => {\r\n if (!element) {\r\n return;\r\n }\r\n let ev = new MouseEvent(eventName, {\r\n view: window,\r\n bubbles: true,\r\n cancelable: true\r\n });\r\n element.dispatchEvent(ev);\r\n }\r\n}\r\n","<div class=\"textarea-with-background\">\r\n <textarea [disabled]=\"textareaDisabled\" cdkScrollable (paste)=\"onPaste($event)\" matInput [(ngModel)]=\"sourceText\" #sourceInput fxFlex\r\n spellcheck=\"false\" (mousemove)=\"onTextAreaMouseMove($event)\" [attr.maxLength]=\"maxCharLength? maxCharLength: null\"\r\n [attr.aria-label]=\"'TLD_TRANSLATE.SOURCE_TOOLTIP' | translate\" (click)=\"textareaClick($event)\"></textarea>\r\n <div class=\"{{wrapperClass}}\" *ngIf=\"gramCheck || highlight\" cdkScrollable #treeWrapper>\r\n <div class=\"textarea-highlight-backround-inner\" cdkScrollable>\r\n <div *ngFor=\"let paragraph of highlightTree\">\r\n <tld-highlight-tree [isSource]=\"true\" [tree]=\"paragraph\" [highlight]=\"highlight\" [gramCheck]=\"gramCheck\"\r\n (onReplace)=\"replace($event)\"></tld-highlight-tree>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { TldSystemService } from '../../../tld-tooltip/services/tld-system.service';\r\nimport { IDictionaryEntry, IDictionaryTranslation } from '../../models/dictionary.model';\r\nimport { TldTranslateTextService } from '../../services/tld-translate-text.service';\r\n\r\n@Component({\r\n selector: 'tld-dictionary',\r\n templateUrl: './tld-dictionary.component.html',\r\n styleUrls: ['./tld-dictionary.component.scss']\r\n})\r\nexport class TldDictionaryComponent implements OnInit {\r\n\r\n constructor(private translateTextService: TldTranslateTextService,\r\n private readonly tldSystem: TldSystemService\r\n ) { }\r\n\r\n @Input() dictionary: IDictionaryEntry;\r\n\r\n targetWord: string;\r\n translationsByType: { [key: string]: IDictionaryTranslation[] };\r\n translationsBySource: [string, IDictionaryTranslation[]][];\r\n canSwapLanguages: boolean;\r\n dictionaryWithSources = false;\r\n\r\n ngOnInit(): void {\r\n this.canSwapLanguages = this.tldSystem.canSwapLanguages;\r\n if (!this.dictionary || !this.dictionary.translations) {\r\n return;\r\n }\r\n this.convertDictionaryForTemplate();\r\n }\r\n\r\n translationClick(phrase: string, swapSystems: boolean) {\r\n if (this.canSwapLanguages || !swapSystems) {\r\n this.translateTextService.changeSource({ phrase: phrase, swapSystems: swapSystems })\r\n }\r\n }\r\n\r\n private convertDictionaryForTemplate() {\r\n this.targetWord = this.dictionary.translations[0].target_word;\r\n if (this.dictionary.translations[0].type) {\r\n this.translationsByType = this.groupBy(this.dictionary.translations, \"type\");\r\n }\r\n else {\r\n this.dictionaryWithSources = true;\r\n const bySource: { [key: string]: IDictionaryTranslation[] } = this.groupBy(this.dictionary.translations, \"source\");\r\n this.translationsBySource = Object.entries(bySource).sort((a, b) => b[0].split(';').length - a[0].split(';').length || b[1].length - a[1].length);\r\n this.targetWord = this.translationsBySource[0][1][0].target_word;\r\n }\r\n }\r\n\r\n private groupBy(arr: IDictionaryTranslation[], property: string) {\r\n return arr.reduce(function (result, currentValue) {\r\n if (!result[currentValue[property]]) { result[currentValue[property]] = []; }\r\n result[currentValue[property]].push(currentValue);\r\n return result;\r\n }, {});\r\n }\r\n}\r\n","<div fxFlex fxLayout=\"column\" class=\"dictionary-area\" [class.dictionary-with-sources]=\"dictionaryWithSources\">\r\n <div fxFlex fxLayout=\"column\">\r\n <div class=\"dictionary-target-word\">{{targetWord}}</div>\r\n\r\n <ng-container *ngIf=\"!dictionaryWithSources\">\r\n <div fxFxlex fxLayout=\"column\" *ngFor=\"let grouped of translationsByType | keyvalue\">\r\n <div class=\"dictionary-word-type\">{{'TLD_TRANSLATE.WORD_TYPE_'+grouped.key | uppercase | translate}}</div>\r\n <table>\r\n <tr *ngFor=\"let translation of grouped.value\">\r\n <td *ngIf=\"translation.probability\" class=\"fit-width\">\r\n <span class=\"probability-outline\">\r\n <span class=\"probability-inline\" [style.width]=\"translation.probability*100+'%'\"></span>\r\n </span>\r\n </td>\r\n <td class=\"fit-width dictionary-target\" [class.clickable]=\"canSwapLanguages\"\r\n (click)=\"translationClick(translation.target_word, true)\">\r\n {{translation.target_word}}\r\n </td>\r\n <td>\r\n <span *ngFor=\"let reverse of translation.reverse_translations; let i = index\">\r\n <span (click)=\"translationClick(reverse, false)\"\r\n class=\"clickable reverse-translations\">{{reverse}}</span><span\r\n *ngIf=\"i!==translation.reverse_translations.length-1\">, </span>\r\n </span>\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"dictionaryWithSources\">\r\n <div fxFxlex fxLayout=\"column\" *ngFor=\"let grouped of translationsBySource\">\r\n <table>\r\n <tr *ngFor=\"let translation of grouped[1]\">\r\n <td class=\"dictionary-target\" [class.clickable]=\"canSwapLanguages\"\r\n (click)=\"translationClick(translation.target_word, true)\">\r\n {{translation.target_word}}\r\n </td>\r\n </tr>\r\n </table>\r\n <div class=\"dictionary-word-source\">\r\n {{ grouped[0]}}\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div fxLayout=\"column\" *ngIf=\"dictionary.examples?.length>0\">\r\n <p class=\"dictionary-examples-title\">\r\n {{'TLD_TRANSLATE.DICTIONARY_EXAMPLES' | translate}}\r\n </p>\r\n <div *ngFor=\"let example of dictionary.examples\" fxLayout=\"column\" class=\"dictionary-example-pair\">\r\n <p [innerHTML]=\"example.source\" class=\"dictionary-example\">\r\n </p>\r\n <p [innerHTML]=\"example.target\" class=\"dictionary-example\">\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { TldTranslateConfigService } from '../../../tld-common/services';\r\nimport { IHighlightTree } from '../../models/highlight-tree.model';\r\nimport { TldTranslateTextService } from '../../services/tld-translate-text.service';\r\n\r\n@Component({\r\n selector: 'tld-translate-source',\r\n templateUrl: './tld-translate-source.component.html',\r\n styleUrls: ['./tld-translate-source.component.scss']\r\n})\r\nexport class TldTranslateSourceComponent implements OnInit {\r\n @Input() textareaDisabled: boolean;\r\n @Input() sourceParagraphs: IHighlightTree[];\r\n\r\n // params from config.\r\n autoFocuss: boolean;\r\n highlight: boolean;\r\n gramCheck: boolean;\r\n wordLimit: number;\r\n showSensitiveInfoTooltip: boolean;\r\n allowedFileTypes: string[];\r\n extendedFileTypes: string[];\r\n showExtensionsUnauthOnly: boolean;\r\n webTranslation: boolean;\r\n get isAuth() { return this.config.coreConfig.isAuth; };\r\n maxCharLength: number;\r\n\r\n acceptedTypesString: string;\r\n extendedFileTypesString: string;\r\n sourceChangedManually = false;\r\n get sourceText(): string { return this.textService?.sourceText };\r\n get sourceTextHypothesis(): string{ return this.textService?.sourceTextHypothesis}\r\n\r\n\r\n get showPlaceHolder(): boolean {\r\n return (!this.sourceText || this.sourceText.length == 0) && !this.isDictating;\r\n };\r\n get registerLink() { return this.config.coreConfig.registerLink }\r\n get isDictating() { return this.textService.isDictating; }\r\n get showExtensions() {\r\n return this.config.textConfig.showAvailableExtensions;\r\n }\r\n get appName() {\r\n return this.config.coreConfig.appName;\r\n }\r\n\r\n\r\n constructor(private readonly config: TldTranslateConfigService,\r\n private readonly textService: TldTranslateTextService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n const textCfg = this.config.textConfig;\r\n const fileCfg = this.config.fileConfig;\r\n\r\n this.autoFocuss = this.config.textConfig.autoFocuss;\r\n this.highlight = this.config.textConfig.highlight;\r\n this.gramCheck = this.config.textConfig.checkSourceGrammar;\r\n this.wordLimit = fileCfg.wordLimit;\r\n this.allowedFileTypes = fileCfg.allowedFileTypes;\r\n this.extendedFileTypes = fileCfg.extendedFileTypes;\r\n this.maxCharLength = textCfg.maxCharLength;\r\n this.showExtensionsUnauthOnly = textCfg.showExtensionsUnauthOnly;\r\n this.showSensitiveInfoTooltip = textCfg.showSensitiveInfoTooltip;\r\n this.webTranslation = textCfg.allowWebsiteTranslation;\r\n\r\n this.acceptedTypesString = this.allowedFileTypes.join(\", \").replace(/\\./g, '');\r\n this.extendedFileTypesString = this.extendedFileTypes.join(\", \").replace(/\\./g, '');\r\n }\r\n}\r\n","<div class=\"tld-translate-source-wrapper\" fxFlex fxLayout=\"column\">\r\n <div class=\"source-input-wrapper\" fxFlex>\r\n <tld-textarea-with-background *ngIf=\"!isDictating\" [textareaDisabled]=\"textareaDisabled\" [highlight]=\"highlight\"\r\n [autoFocuss]=\"autoFocuss\" [highlightTree]=\"sourceParagraphs\" [gramCheck]=\"gramCheck\" fxFlex\r\n [maxCharLength]=\"maxCharLength\"></tld-textarea-with-background>\r\n <div *ngIf=\"isDictating\" class=\"asr-result-wrapper\">\r\n <span class=\"asr-result\">\r\n {{sourceText}}\r\n </span>\r\n <span class=\"asr-hypothesis\">\r\n {{sourceTextHypothesis}}\r\n </span>\r\n </div>\r\n </div>\r\n <div fxLayout=\"column\" fxFlex *ngIf=\"showPlaceHolder\" class=\"description-text tld-trg-placeholder\">\r\n <div fxFlex>\r\n <p\r\n [innerHtml]=\"(webTranslation?'TLD_TRANSLATE.SOURCE_TOOLTIP':'TLD_TRANSLATE.SOURCE_TOOLTIP_ONLY_TEXT') | translate: {appName: appName}\">\r\n </p>\r\n <ng-container *ngIf=\"showSensitiveInfoTooltip\">\r\n <br fxHide.xs />\r\n <p>{{'TLD_TRANSLATE.SOURCE_TOOLTIP_SENSITIVE_INFO' | translate: {appName: appName} }}</p>\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"showExtensions\" class=\"extension-container\">\r\n <ng-container *ngIf=\"!isAuth\">\r\n <p class=\"description-smaller\">\r\n <span>{{'TLD_TRANSLATE.SOURCE_FORMATS' | translate: { formats:acceptedTypesString, limit:wordLimit, appName:\r\n appName} }}</span>\r\n <span *ngIf=\"!showExtensionsUnauthOnly\">{{'TLD_TRANSLATE.SOURCE_WORD_LIMIT' | translate: {\r\n formats:acceptedTypesString, limit:wordLimit, appName: appName} }}</span>\r\n </p>\r\n\r\n <ng-container *ngIf=\"!showExtensionsUnauthOnly\">\r\n <br fxHide.xs />\r\n <p class=\"description-smaller\" *ngIf=\" !isAuth\"\r\n [innerHtml]=\"'TLD_TRANSLATE.REGISTERED_FORMATS' | translate: { formats:extendedFileTypesString, limit:wordLimit, registerLink:registerLink, appName: appName }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <p class=\"description-smaller\" *ngIf=\"isAuth\"\r\n [innerHtml]=\"'TLD_TRANSLATE.REGISTERED_FORMATS_LOGGED_IN' | translate: { formats:extendedFileTypesString, limit:wordLimit, registerLink:registerLink, appName: appName }\">\r\n </p>\r\n </div>\r\n </div>\r\n</div>","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { TldHighlightService } from '../../../../tld-common/services';\r\nimport { ISuggestTranslationModel } from './suggest-translation.model';\r\n\r\n@Component({\r\n selector: 'tld-translate-suggest-dialog',\r\n templateUrl: './tld-translate-suggest-dialog.component.html',\r\n styleUrls: ['./tld-translate-suggest-dialog.component.scss']\r\n})\r\nexport class TldTranslateSuggestDialogComponent implements OnInit {\r\n\r\n constructor(public dialogRef: MatDialogRef<TldTranslateSuggestDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA)public data: ISuggestTranslationModel,\r\n private highlight: TldHighlightService) {\r\n }\r\n\r\n source: string;\r\n suggestion: string;\r\n selectedIx = 0;\r\n translations: {source: string, translation:string, paragraphIx?: number, sentenceIx?: number}[] = [];\r\n \r\n sourceLanguage: string;\r\n targetLanguage: string;\r\n\r\n hasNext: boolean = false;\r\n hasPrev: boolean = false;\r\n\r\n readonly closeDialogAreaCode = \"CLOSE_DIALOG\";\r\n\r\n ngOnInit() {\r\n this.sourceLanguage = this.data.sourceLanguage;\r\n this.targetLanguage = this.data.targetLanguage;\r\n if (this.data.dictionary) {\r\n this.translations.push({ source: this.data.dictionary.source_word, translation: this.data.dictionary.translations[0].target_word });\r\n }\r\n else if (this.data.source && this.data.target) {\r\n const paragraphCount = Math.min(this.data.source.length, this.data.target.length);\r\n for (var paragraphIx = 0; paragraphIx < paragraphCount; paragraphIx++) {\r\n const sourceParagraph = this.data.source[paragraphIx];\r\n const targetParagraph = this.data.target[paragraphIx];\r\n\r\n const senctenceCount = Math.min(sourceParagraph.children?.length ?? 0, targetParagraph.children?.length ?? 0);\r\n for (var sentenceIx = 0; sentenceIx < senctenceCount; sentenceIx++) {\r\n const originalSentence = sourceParagraph.children[sentenceIx].originalText;\r\n if (!/\\S/.test(originalSentence)) {\r\n continue;\r\n }\r\n const obj = {\r\n source: sourceParagraph.children[sentenceIx].originalText,\r\n translation: targetParagraph.children[sentenceIx].originalText,\r\n paragraphIx,\r\n sentenceIx\r\n };\r\n this.translations.push(obj);\r\n\r\n if (this.highlight.selectedTargetSentence && this.highlight.selectedTargetSentence.paragraphIx == paragraphIx && this.highlight.selectedTargetSentence.sentenceIx == sentenceIx) {\r\n this.selectedIx = this.translations.length - 1;\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.setSourceAndSuggestion();\r\n }\r\n\r\n next() {\r\n this.selectedIx += 1;\r\n this.setSourceAndSuggestion();\r\n }\r\n\r\n previous() {\r\n this.selectedIx -= 1;\r\n this.setSourceAndSuggestion();\r\n }\r\n\r\n submit() {\r\n this.dialogRef.close({ source: this.source, translation: this.suggestion })\r\n }\r\n\r\n private setSourceAndSuggestion() {\r\n if (this.translations[this.selectedIx]) {\r\n this.suggestion = this.translations[this.selectedIx].translation;\r\n this.source = this.translations[this.selectedIx].source;\r\n }\r\n\r\n this.checkIfSiblingsExist();\r\n\r\n const selected = this.translations[this.selectedIx];\r\n this.highlight.changeSelectedTargetSentence({ paragraphIx: selected.paragraphIx, sentenceIx: selected.sentenceIx })\r\n }\r\n\r\n private checkIfSiblingsExist() {\r\n this.hasNext = this.translations[this.selectedIx + 1] ? true : false;\r\n this.hasPrev = this.translations[this.selectedIx - 1] ? true : false;\r\n }\r\n}\r\n","<mat-dialog-content [attr.source-language]=\"sourceLanguage\" [attr.target-language]=\"targetLanguage\">\r\n <tld-close-button [ariaCode]=\"closeDialogAreaCode\" class=\"close-button\" mat-dialog-close>\r\n </tld-close-button>\r\n\r\n <div fxLayout=\"column\">\r\n <label>{{'TLD_TRANSLATE.SUGGEST_ORIGINAL_LABEL' | translate}}</label>\r\n <p class=\"source-text\">{{source}}</p>\r\n </div>\r\n <div fxLayout=\"column\">\r\n <label>{{'TLD_TRANSLATE.SUGGEST_TRANSLATION_LABEL' | translate}}</label>\r\n <mat-form-field appearance=\"outline\">\r\n <textarea matInput class=\"translated-text\"\r\n [(ngModel)]=\"suggestion\"\r\n cdkTextareaAutosize\r\n #autosize=\"cdkTextareaAutosize\"\r\n cdkAutosizeMinRows=\"5\"\r\n aria-describedby=\"tld-suggest-translation-info\"></textarea>\r\n </mat-form-field>\r\n <div class=\"usage-info\" id=\"tld-suggest-translation-info\">{{'TLD_TRANSLATE.SUGGEST_USAGE_INFO' | translate}}</div>\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions fxLayoutAlign=\"center center\">\r\n <button mat-icon-button color=\"accent\" (click)=\"previous()\" *ngIf=\"hasPrev\" aria-label=\"previous sentence\">◄</button>\r\n <button mat-flat-button color=\"accent\" (click)=\"submit()\">{{'TLD_TRANSLATE.SUGGEST_SUBMIT_BUTTON' | translate}}</button>\r\n <button mat-icon-button color=\"accent\" (click)=\"next()\" aria-label=\"next sentence\" *ngIf=\"hasNext\">►</button>\r\n</mat-dialog-actions>\r\n\r\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { TldSystemService } from '../../../tld-tooltip/services';\r\nimport { IDictionaryEntry } from '../../models/dictionary.model';\r\nimport { IHighlightTree } from '../../models/highlight-tree.model';\r\nimport { IHighlightSelectedSentence } from '../../models/highlight.model';\r\nimport { TldTranslateTextService } from '../../services/tld-translate-text.service';\r\nimport { ISuggestTranslationModel } from './dialog/suggest-translation.model';\r\nimport { TldTranslateSuggestDialogComponent } from './dialog/tld-translate-suggest-dialog.component';\r\n\r\n@Component({\r\n selector: 'tld-translate-suggest',\r\n templateUrl: './tld-translate-suggest.component.html',\r\n styleUrls: ['./tld-translate-suggest.component.scss']\r\n})\r\nexport class TldTranslateSuggestComponent {\r\n\r\n constructor(\r\n private readonly textService: TldTranslateTextService,\r\n private readonly systemService: TldSystemService,\r\n public dialog: MatDialog) { }\r\n\r\n @ViewChild(\"suggestButton\") suggestButton: ElementRef;\r\n\r\n\r\n @Input() target: IHighlightTree[];\r\n @Input() source: IHighlightTree[];\r\n @Input() dictionary: IDictionaryEntry;\r\n @Input() systemId: string;\r\n @Input() options: string = \"suggestion,origin=FREE_FOR_ALL\";\r\n @Input() selectedSentence: IHighlightSelectedSentence;\r\n\r\n openDialog() {\r\n const activeSystemObj = this.systemService.getActiveSystemObj();\r\n const data: ISuggestTranslationModel = {\r\n dictionary: this.dictionary,\r\n source: this.source,\r\n target: this.target,\r\n selectedSentence: this.selectedSentence,\r\n sourceLanguage: activeSystemObj.sourceLanguage,\r\n targetLanguage: activeSystemObj.targetLanguage\r\n };\r\n const dialogRef = this.dialog.open(TldTranslateSuggestDialogComponent, {\r\n data: data,\r\n width: '600px',\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => {\r\n this.suggestButton?.nativeElement.focus();\r\n if (!result) {\r\n return;\r\n }\r\n\r\n this.textService.updateTranslation(this.options, this.systemId, result.source, result.translation).subscribe()\r\n });\r\n }\r\n}\r\n","<div fxLayoutAlign=\"start center\">\r\n <button #suggestButton class=\"btn-as-link\" (click)=\"openDialog()\">{{'TLD_TRANSLATE.SUGGEST_BUTTON' |\r\n translate}}</button>\r\n</div>\r\n","import { Clipboard } from '@angular/cdk/clipboard';\r\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\r\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\r\nimport { AudioErrorCase, ITranscriptionUpdateModel } from '../../../tld-audio/models';\r\nimport { IDictateConfiguration } from '../../../tld-audio/models/dictate-configurationi.model';\r\nimport { AudioRecordService, TldVoiceInputService } from '../../../tld-audio/services';\r\nimport { Common, IFileUploadError } from '../../../tld-common/models';\r\nimport { TldAlertService, TldTranslateConfigService } from '../../../tld-common/services';\r\nimport { TldScrollService } from '../../../tld-common/services/scroll/tld-scroll.service';\r\nimport { TldTranslateFileService } from '../../../tld-document/services';\r\nimport { IActiveData } from '../../../tld-tooltip/models';\r\nimport { TldSystemService } from '../../../tld-tooltip/services/tld-system.service';\r\nimport { TldTranslateTextService } from '../../services/tld-translate-text.service';\r\nimport { TldTranslateSourceComponent } from '../tld-translate-source/tld-translate-source.component';\r\n\r\n\r\n@Component({\r\n selector: 'tld-translate-text',\r\n templateUrl: './tld-translate-text.component.html',\r\n styleUrls: ['./tld-translate-text.component.scss']\r\n})\r\nexport class TldTranslateTextComponent implements OnInit, OnDestroy {\r\n @ViewChild(\"sourceComponent\") sourceComponent: TldTranslateSourceComponent;\r\n\r\n\r\n @Input() filePreviewProgress: number;\r\n @Output() onFileChange: EventEmitter<File[]> = new EventEmitter<File[]>();\r\n\r\n activeData: IActiveData;\r\n get systemId() { return this.activeData?.systemId; };\r\n //params from config service.\r\n get allowedFileTypes(): string[] { return this.config.fileConfig.allowedFileTypes; };\r\n get extendedFileTypes(): string[] { return this.config.fileConfig.extendedFileTypes; };\r\n get appId(): string { return this.config.coreConfig.appId; };\r\n get highlight(): boolean { return this.config.textConfig.highlight; };\r\n get gramCheck(): boolean { return this.config.textConfig.checkSourceGrammar; };\r\n get fileUpload(): boolean { return this.config.fileConfig.fileUpload && !(this.isDictating || this.audioService?.isRecording || this.voiceInputService.isProcessing); };\r\n get clientId(): string { return this.config.coreConfig.clientId; };\r\n get hideAchievement(): boolean { return this.config.coreConfig.hideAchievement || !this.isEmptyTarget; };\r\n get isAuth() { return this.config.coreConfig.isAuth; };\r\n get maxFileUploadSize(): number { return this.config.fileConfig.maxSize; };\r\n get multipleFiles(): boolean { return this.config.fileConfig.numberOfFilesAllowed > 1; };\r\n get translationUrl(): string { return this.config.textConfig.translationUrl; };\r\n get updateTranslationUrl(): string { return this.config.textConfig.updateTranslationUrl; };\r\n get useDictionary(): boolean { return this.config.textConfig.useDictionary; };\r\n get allowWebsiteTranslation(): boolean { return this.config.textConfig.allowWebsiteTranslation; };\r\n get autoRedirectToWebTranslate(): boolean { return this.config.textConfig.autoRedirectToWebTranslate; };\r\n get webWidgetRedirectUrlPrefix(): string { return this.config.textConfig.webWidgetRedirectUrlPrefix; };\r\n get webWidgetRedirectUrlPosfix(): string { return this.config.textConfig.webWidgetRedirectUrlPosfix; };\r\n get showSuggestions(): boolean { return this.hasTranslatedParagraphs && this.config.textConfig.showSuggestions && !this.urlToTranslate };\r\n get textareaDisabled(): boolean { return this.audioService.isRecording || this.voiceInputService.isProcessing || this.isDictating };\r\n get isDictating() { return this.translateTextService.isDictating; };\r\n get maxDictateLength() { return this.config.audioConfig.maximumRecordTime; }\r\n get sourceLanguage() { return this.activeData?.sourceLang.lang; }\r\n get hasTranslatedParagraphs() { return this.targetParagraphs?.length > 0 }\r\n get isEmptyTarget() { return !this.hasTranslatedParagraphs && !this.urlToTranslate && !this.hasDictionary }\r\n get showTargetPlaceholder() { return this.config.textConfig.showTargetPlaceholder }\r\n get showExtensionPopup() { return this.config.textConfig.showExtensionPopup && this.visibleExtensionCount < this.allowedFileTypes.length }\r\n get visibleExtensionCount() { return this.config.textConfig.visibleExtensionCount };\r\n get textToSpeechTargetSettings() { return this.translateTextService.textToSpeechTargetSettings };\r\n get textToSpeechSourceSettings() { return this.translateTextService.textToSpeechSourceSettings };\r\n\r\n audioInputVisible: boolean;\r\n targetSentenceSelect: boolean = true;\r\n get urlToTranslate() { return this.translateTextService.urlToTranslate; };\r\n\r\n allowedTypesWithoutDots: string[];\r\n\r\n readonly copyMessageId = \"tld-copy-success\";\r\n readonly copyMessageCloseButtonId = \"tld-copy-success-close\";\r\n readonly copyButtonId = \"tld-copy-to-clipboard\";\r\n\r\n get translatedText(): string {\r\n return this.translateTextService.translatedText;\r\n }\r\n\r\n get firstParagraphTranslated() {\r\n return this.translateTextService.firstParagraphTranslated;\r\n }\r\n\r\n get hasDictionary() { return this.translateTextService.hasDictionary; }\r\n get dictionaryEntry() { return this.translateTextService.dictionaryEntry; }\r\n get source() { return this.translateTextService.sourceText; }\r\n get translateUrlRedirect() { return this.translateTextService.translateUrlRedirect; }\r\n get showProgressIndicator() { return this.translateTextService.shouldShowProgressIndicator; }\r\n get hideSourceActions() {\r\n return this.source && this.config.textConfig.hideSourceActionsWhenHasTextMobile && this.isMobile;\r\n }\r\n get paragraphs() { return this.translateTextService.paragraphs; };\r\n get sourceParagraphs() { return this.translateTextService.sourceParagraphs; }\r\n get targetParagraphs() { return this.translateTextService.targetParagraphs; }\r\n\r\n dictateConfig: IDictateConfiguration;\r\n visibleExtensions: string;\r\n maxSizeMB: number;\r\n\r\n private isMobile: boolean;\r\n\r\n private readonly destroy$ = new Subject();\r\n private readonly mobileBreakpoints = [Breakpoints.XSmall];\r\n\r\n constructor(\r\n private readonly translateTextService: TldTranslateTextService,\r\n private readonly clipboard: Clipboard,\r\n private readonly alerts: TldAlertService,\r\n private readonly config: TldTranslateConfigService,\r\n private readonly tldScrollService: TldScrollService,\r\n private readonly tldSystem: TldSystemService,\r\n private readonly audioService: AudioRecordService,\r\n private readonly voiceInputService: TldVoiceInputService,\r\n private readonly fileService: TldTranslateFileService,\r\n private readonly breakpointObserver: BreakpointObserver) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.translateTextService.listenOnChanges();\r\n this.dictateConfig = {\r\n appId: this.config.audioConfig.appId,\r\n appSecret: this.config.audioConfig.appSecret,\r\n maxLength: this.config.audioConfig.maximumRecordTime,\r\n apiUrl: this.config.audioConfig.dictateApiUrl\r\n }\r\n\r\n this.allowedTypesWithoutDots = [];\r\n this.allowedFileTypes.forEach(el => this.allowedTypesWithoutDots.push(el.replace(\".\", \"\")));\r\n this.visibleExtensions = this.capitalizeFirstLetter(this.allowedTypesWithoutDots.slice(0, this.visibleExtensionCount).join(\", \"));\r\n this.maxSizeMB = Common.bytesToMb(this.config.fileConfig.maxSize);\r\n\r\n this.tldSystem.getActiveData().pipe(distinctUntilChanged((x, y) => x && y && x.systemId == y.systemId))\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((syst) => {\r\n if (!syst) {\r\n return;\r\n }\r\n this.activeData = syst;\r\n this.audioInputVisible = this.config.audioConfig.audioTextInput && this.config.audioConfig.sourceLanguages?.includes(this.activeData?.sourceLang.lang);\r\n if (this.activeData.retranslate) {\r\n this.translateTextService.retranslate({ systemChanged: true });\r\n }\r\n });\r\n\r\n\r\n this.tldScrollService.subscribeToScroll();\r\n\r\n if (this.config.audioConfig.audioTextInput) {\r\n this.audioService.onRecordStart.pipe(takeUntil(this.destroy$)).subscribe(() => {\r\n this.translateTextService.changeSource({ phrase: \"\" });\r\n })\r\n\r\n this.voiceInputService.onTranscribtionTextUpdated.pipe(takeUntil(this.destroy$))\r\n .subscribe((event: ITranscriptionUpdateModel) => {\r\n this.translateTextService.changeSource({ phrase: event.text, swapSystems: false, disableAutomaticTranslation: !event.completed });\r\n if (event.completed && (!event.text || event.text === \"\")) {\r\n this.alerts.warning(`ERRORS.AUDIO.${AudioErrorCase.NO_TEXT_RECOGNIZED}`)\r\n }\r\n })\r\n }\r\n\r\n this.subscribeToBreakpointObserver();\r\n }\r\n\r\n capitalizeFirstLetter(s: string) {\r\n return s && s[0].toUpperCase() + s.slice(1);\r\n }\r\n\r\n copy() {\r\n this.clipboard.copy(this.translatedText);\r\n this.alerts.info(\"TLD_TRANSLATE.TEXT_COPIED\", { id: this.copyMessageId, closeButtonId: this.copyMessageCloseButtonId, parentId: this.copyButtonId });\r\n }\r\n\r\n switchFocusFromCopy(event) {\r\n const copyMessageCloseButton = document.getElementById(this.copyMessageCloseButtonId)?.getElementsByTagName(\"button\")?.item(0);\r\n if (copyMessageCloseButton) {\r\n event.preventDefault();\r\n copyMessageCloseButton.focus();\r\n }\r\n }\r\n\r\n fileChange(files: File[]) {\r\n this.onFileChange.emit(files);\r\n }\r\n\r\n fileUploadError(error: IFileUploadError) {\r\n this.fileService.fileUploadError(error);\r\n }\r\n\r\n navigateToTranslatedUrl() {\r\n window.location.replace(this.translateUrlRedirect);\r\n }\r\n\r\n dictateStartStop(isDictating: boolean) {\r\n const phrase = `${this.translateTextService.sourceText}${this.translateTextService.sourceText?.length > 0 ? \" \" : \"\"}${this.translateTextService.sourceTextHypothesis}`;\r\n this.translateTextService.isDictating = isDictating;\r\n // Translation has ended.\r\n if (!isDictating) {\r\n if (this.config.audioConfig.punctuationMessage && phrase?.length > 0) {\r\n this.alerts.warning(\"AUDIO.PUNCTUATION_MESSAGE\");\r\n }\r\n\r\n this.translateTextService.changeSource(\r\n {\r\n phrase,\r\n disableAutomaticTranslation: this.isDictating || this.config.audioConfig.disableAutomaticTranslation\r\n });\r\n this.translateTextService.changeSourceHypothesis(\"\");\r\n }\r\n else {\r\n this.translateTextService.clearSource();\r\n }\r\n }\r\n\r\n dictateResult(result: string) {\r\n this.translateTextService.changeSourceHypothesis(\"\");\r\n this.translateTextService.changeSource({ phrase: result, disableAutomaticTranslation: this.isDictating })\r\n }\r\n\r\n dictatePartialResult(partialResult: string) {\r\n this.translateTextService.changeSourceHypothesis(partialResult);\r\n }\r\n\r\n dictateError(error: AudioErrorCase) {\r\n if (error === AudioErrorCase.MAX_TIME_EXCEEDED) {\r\n let timeString = \"\";\r\n const maxLengthTime = new Date(0, 0, 0, 0, 0, this.config.audioConfig.maximumRecordTime);\r\n\r\n const minutes = maxLengthTime.getMinutes();\r\n if (minutes > 0) {\r\n timeString += `${minutes} minutes`;\r\n }\r\n\r\n const seconds = maxLengthTime.getSeconds();\r\n if (seconds > 0) {\r\n timeString += `${seconds} seconds`\r\n }\r\n this.alerts.warning(`ERRORS.AUDIO.${error}`, { timeString });\r\n }\r\n else if (error === AudioErrorCase.NO_SPEECH) {\r\n this.alerts.warning(`ERRORS.AUDIO.${error}`);\r\n }\r\n else {\r\n this.alerts.unhandeledError({ ErrorCode: error });\r\n }\r\n }\r\n\r\n clearSource() {\r\n this.translateTextService.clearSource();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.translateTextService.stopListeningToChanges();\r\n this.tldScrollService.unsubscribeToScroll();\r\n this.destroy$.next(null)\r\n this.destroy$.complete();\r\n }\r\n\r\n closeProgressIndicator() {\r\n this.translateTextService.hideProgressIndicator();\r\n this.translateTextService.stopTranslation();\r\n }\r\n\r\n // need to subscribe to get if is mobile view so it would be possible to hide source action row.\r\n private subscribeToBreakpointObserver() {\r\n this.breakpointObserver.observe(this.mobileBreakpoints)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((state) => {\r\n this.isMobile = state.matches;\r\n })\r\n }\r\n\r\n}\r\n","<!-- NOTE. tld-source-and-target-wrapper uses multiple content projections, so might seem confusing first, but elements are displayed at their places based on tld-source-and-target-wrapper component\r\nhttps://angular.io/guide/content-projection#multi-slot-content-projection\r\n-->\r\n<tld-source-and-target-wrapper [textToSpeechSourceSettings]=\"textToSpeechSourceSettings\"\r\n [clearSourceVisible]=\"source?.length>0\" (onSourceClear)=\"clearSource()\" [hideAchievement]=\"hideAchievement\"\r\n [clearDisabled]=\"textareaDisabled\" [clearSourceTooltip]=\"'TLD_TRANSLATE.CLEAR_SOURCE_TOOLTIP'\"\r\n [ngClass]=\"{'highlight-active': highlight, 'gramcheck-active': gramCheck, 'empty-target': isEmptyTarget}\">\r\n <div sourceMain class=\"source-main\" fxLayout=\"column\">\r\n <tld-translate-source [textareaDisabled]=\"textareaDisabled\" #sourceComponent fxFlex\r\n [sourceParagraphs]=\"sourceParagraphs\"></tld-translate-source>\r\n </div>\r\n <ng-container sourceActions *ngIf=\"!hideSourceActions\">\r\n <div fxLayoutAlign=\"start center\" class=\"basic-padding\" fxLayoutGap=\"1em\">\r\n <ng-container *ngIf=\"audioInputVisible\">\r\n <tld-dictate [configuration]=\"dictateConfig\" [ngClass]=\"{'full-width' : !fileUpload}\"\r\n (isDictating)=\"dictateStartStop($event)\" (result)=\"dictateResult($event)\"\r\n (partialResult)=\"dictatePartialResult($event)\" (onError)=\"dictateError($event)\" [language]=\"sourceLanguage\">\r\n </tld-dictate>\r\n </ng-container>\r\n <div *ngIf=\"fileUpload\" class=\"file-upload-wrapper\">\r\n <tld-file-upload (fileChange)=\"fileChange($event)\" [accept]=\"allowedFileTypes\" [maxSize]=\"maxFileUploadSize\"\r\n [extendedAcceptList]=\"extendedFileTypes\" [multiple]=\"multipleFiles\" (onError)=\"fileUploadError($event)\"\r\n [filePreviewProgress]=\"filePreviewProgress\">\r\n <span class=\"upload-file-text\">\r\n <div fxLayout=\"row\">\r\n <span class=\"info text-l-semi-bold\">\r\n <span [innerHTML]=\"'FILE_UPLOAD.UPLOAD' | translate\" class=\"accent-color\"></span>\r\n <span>&nbsp;</span>\r\n <span [innerHTML]=\"'FILE_UPLOAD.DRAG_AND_DROP' | translate\" fxHide.lt-sm></span>\r\n <span [innerHTML]=\"'FILE_UPLOAD.'+ (multipleFiles? 'FILES' : 'FILE') | translate\"\r\n [ngClass.lt-sm]=\"'accent-color'\"></span>\r\n </span>\r\n </div>\r\n <div fxLayout=\"row\">\r\n <span class=\"file-upload-extensions text-m\"\r\n [innerHTML]=\"'FILE_UPLOAD.LIMITS' | translate: {maxSizeMB: maxSizeMB, visibleExtensions: visibleExtensions}\"></span>\r\n </div>\r\n </span>\r\n </tld-file-upload>\r\n <tld-open-extension-dialog *ngIf=\"showExtensionPopup\" [extensions]=\"allowedTypesWithoutDots\">\r\n </tld-open-extension-dialog>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div targetMain class=\"target-main\">\r\n <ng-container *ngIf=\"!hasDictionary; else dictionaryTargetBlock\">\r\n <ng-container *ngIf=\"isEmptyTarget; else translatedTextBlock\">\r\n <p *ngIf=\"showTargetPlaceholder\" class=\"description-text target-empty\"\r\n [innerHtml]=\"'TLD_TRANSLATE.TARGET_DESCRIPTION' | translate\">\r\n </p>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container targetActions>\r\n <div class=\"tld-translate-target-footer basic-padding\" *ngIf=\"showSuggestions || showProgressIndicator\">\r\n <tld-translate-suggest *ngIf=\"showSuggestions\" [systemId]=\"systemId\" [target]=\"targetParagraphs\"\r\n [source]=\"sourceParagraphs\">\r\n </tld-translate-suggest>\r\n <progress-indicator (onClose)=\"closeProgressIndicator()\" *ngIf=\"showProgressIndicator\"></progress-indicator>\r\n </div>\r\n </ng-container>\r\n</tld-source-and-target-wrapper>\r\n\r\n\r\n<!-- templates used for else blocks in target container -->\r\n<ng-template #translatedTextBlock>\r\n <div class=\"translated-source\" [class.selectable-sentence]=\"showSuggestions\">\r\n <ng-container *ngIf=\"!urlToTranslate\">\r\n <div class=\"target-wrapper-action-buttons\">\r\n <button *ngIf=\"firstParagraphTranslated\" mat-icon-button class=\"tld-copy-translation\" (click)=\"copy()\"\r\n matTooltip=\"{{'TOOLTIPS.COPY' | translate}}\" [attr.aria-describedby]=\"copyMessageId\"\r\n (keydown.Tab)=\"switchFocusFromCopy($event)\" [attr.Id]=\"copyButtonId\">\r\n <span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.COPY' | translate\">\r\n content_copy\r\n </span>\r\n </button>\r\n <tld-text-to-speech *ngIf=\"textToSpeechTargetSettings\" [settings]=\"textToSpeechTargetSettings\">\r\n </tld-text-to-speech>\r\n </div>\r\n <div *ngFor=\"let paragraph of targetParagraphs\">\r\n <tld-highlight-tree [highlight]=\"highlight\" [tree]=\"paragraph\" [selectSentence]=\"showSuggestions\">\r\n </tld-highlight-tree>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"urlToTranslate\" class=\"target-url-container\">\r\n <a [attr.href]=\"translateUrlRedirect\" target=\"_blank\" fxLayoutAlign=\"start center\" class=\"go-to-webtranslate\">\r\n {{urlToTranslate}}\r\n <span class=\"material-icons\" color=\"accent\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.OPEN_IN_NEW'\">\r\n open_in_new\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #dictionaryTargetBlock>\r\n <div fxFlex fxLayout=\"column\" class=\"dictionary-wrapper\">\r\n <tld-dictionary fxFlex *ngFor=\"let dictionary of dictionaryEntry\" [dictionary]=\"dictionary\">\r\n </tld-dictionary>\r\n </div>\r\n</ng-template>\r\n","import { ClipboardModule } from '@angular/cdk/clipboard';\r\nimport { LayoutModule } from '@angular/cdk/layout';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CloseButtonModule } from '@tilde-nlp/ngx-common';\r\nimport { ExtensionDialogModule } from '../../components/shared/extension-dialog';\r\nimport { TextToSpeechModule } from '../../components/shared/text-to-speech/text-to-speech.module';\r\nimport { VendorDisclaimerModule } from '../../components/shared/vendor-disclaimer/vendor-disclaimer.module';\r\nimport { MaterialModule } from '../material.module';\r\nimport { TldAudioModule } from '../tld-audio';\r\nimport { TldCommonModule } from '../tld-common/tld-common.module';\r\nimport { HighlightTreeComponent } from './components/highlight-tree/highlight-tree.component';\r\nimport { ProgressIndicatorComponent } from './components/progress-indicator/progress-indicator.component';\r\nimport { TextareaWithBackgroundComponent } from './components/textarea-with-background/textarea-with-background.component';\r\nimport { TldDictionaryComponent } from './components/tld-dictionary/tld-dictionary.component';\r\nimport { TldTranslateSourceComponent } from './components/tld-translate-source/tld-translate-source.component';\r\nimport { TldTranslateSuggestDialogComponent } from './components/tld-translate-suggest/dialog/tld-translate-suggest-dialog.component';\r\nimport { TldTranslateSuggestComponent } from './components/tld-translate-suggest/tld-translate-suggest.component';\r\nimport { TldTranslateTextComponent } from './components/tld-translate-text/tld-translate-text.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [TldTranslateSourceComponent,\r\n TldTranslateSuggestComponent,\r\n TldTranslateSuggestDialogComponent,\r\n TldTranslateTextComponent,\r\n TldDictionaryComponent,\r\n TextareaWithBackgroundComponent,\r\n HighlightTreeComponent,\r\n ProgressIndicatorComponent],\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n MaterialModule,\r\n FormsModule,\r\n TldCommonModule,\r\n ClipboardModule,\r\n TldAudioModule,\r\n CloseButtonModule,\r\n ExtensionDialogModule,\r\n LayoutModule,\r\n MatProgressBarModule,\r\n VendorDisclaimerModule,\r\n TextToSpeechModule\r\n ],\r\n exports: [\r\n TldTranslateSourceComponent,\r\n TldTranslateSuggestComponent,\r\n TldTranslateTextComponent]\r\n})\r\nexport class TldTextModule { }\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { TranslateDomainPipe } from '../../tld-common/pipes/translate-domain.pipe';\r\nimport { TldTranslateConfigService } from '../../tld-common/services/tld-translate-config.service';\r\nimport { IDomain } from '../models/domain.model';\r\n\r\n@Component({\r\n selector: 'tld-domain-list',\r\n templateUrl: './tld-domain-list.component.html',\r\n styleUrls: ['./tld-domain-list.component.scss'],\r\n providers: [TranslateDomainPipe]\r\n})\r\nexport class TldDomainListComponent implements OnInit {\r\n\r\n private _list: IDomain[];\r\n get list() { return this._list; }\r\n @Input() set list(value: IDomain[]) {\r\n this._list = value;\r\n this.retranslate();\r\n };\r\n\r\n private _selected: IDomain;\r\n get selected() { return this._selected; }\r\n @Input() set selected(value: IDomain) {\r\n this._selected = value;\r\n this.selectedDomainName = this.translateDomainName(value?.title);\r\n };\r\n\r\n @Input() disabled: boolean;\r\n\r\n @Output() selectionChange: EventEmitter<any> = new EventEmitter();\r\n\r\n get showTitle() { return this.config.coreConfig.showDomainTitle; }\r\n\r\n translations: any;\r\n translatedList: IDomain[];\r\n selectedDomainName: string;\r\n currentLanguage: string;\r\n\r\n readonly titleKey: string = \"title\";\r\n readonly valueKey = \"domain\";\r\n\r\n constructor(private readonly translate: TranslateService,\r\n private readonly config: TldTranslateConfigService,\r\n private readonly translateDomainPipe: TranslateDomainPipe) { }\r\n\r\n ngOnInit() {\r\n this.translate.stream(\"DOMAINS\").subscribe((translations) => {\r\n this.translations = translations;\r\n this.retranslate();\r\n this.currentLanguage = this.translate.currentLang;\r\n })\r\n }\r\n\r\n select(element: any) {\r\n this.selectionChange.next(element);\r\n }\r\n\r\n private retranslate() {\r\n this.selectedDomainName = this.translateDomainName(this.selected?.title);\r\n\r\n const translatedList: IDomain[] = [];\r\n this.list.forEach((domain) => {\r\n translatedList.push({ title: this.translateDomainName(domain.title), domain: domain.domain })\r\n })\r\n this.translatedList = translatedList;\r\n }\r\n\r\n private translateDomainName(domainName: string): string {\r\n return this.translateDomainPipe.transform(domainName);\r\n }\r\n\r\n}\r\n","<span fxHide.lt-md class=\"domain-title\" *ngIf=\"showTitle\">{{'DOMAINS.TITLE' | translate}}</span>\r\n<tld-list-menu (selectionChange)=\"select($event)\" [list]=\"translatedList | sortTranslations: null: 'title': currentLanguage | async\" [titleKey]=\"titleKey\" \r\n[valueKey]=\"valueKey\" testId=\"tld-domain-list\" [disabled]=\"disabled\" [ariaLabel]=\"'DOMAINS.OPEN_LIST_ARIA_LABEL' | translate\">\r\n {{selectedDomainName | titlecase}}\r\n</tld-list-menu>","import { AfterViewInit, Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { TldTranslateConfigService } from '../../tld-common/services';\r\nimport { ISwitcherTranslationOptions } from '../models/switcher-options.model';\r\nimport { TldSystemService } from '../services/tld-system.service';\r\n\r\n@Component({\r\n selector: 'tld-translate-switcher',\r\n templateUrl: './tld-translate-switcher.component.html',\r\n styleUrls: ['./tld-translate-switcher.component.scss']\r\n})\r\nexport class TldTranslateSwitcherComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n @ViewChild(\"wrapper\") wrapper: ElementRef;\r\n @ViewChild(\"fromLabel\") fromLabel: ElementRef;\r\n @ViewChild(\"sourceAside\") sourceAside: ElementRef;\r\n @ViewChild(\"toLabel\") toLabel: ElementRef;\r\n @ViewChild(\"domainWrapper\") domainWrapper: ElementRef;\r\n @ViewChild(\"vendorWrapper\") vendorWrapper: ElementRef;\r\n @ViewChild(\"collectionWrapper\") collectionWrapper: ElementRef;\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n const pxPerLanguage = 110;\r\n const componentWidth = this.getElementRefWidth(this.wrapper);\r\n const parentWidth = this.elRef?.nativeElement?.parentElement.offsetWidth || 0;\r\n const wrapperWidth = this.useParentWidth ? parentWidth : componentWidth;\r\n const fromWidth = this.getElementRefWidth(this.fromLabel);\r\n const sourceAsideWidth = this.getElementRefWidth(this.sourceAside);\r\n const toWidth = this.getElementRefWidth(this.toLabel);\r\n const domainsWidth = this.getElementRefWidth(this.domainWrapper);\r\n const vendorsWidth = this.getElementRefWidth(this.vendorWrapper);\r\n const collectionsWidth = this.getElementRefWidth(this.collectionWrapper);\r\n // additional px to distract because swap lang button and dropdown icons.\r\n const extra = 100;\r\n const freeWidth = wrapperWidth - fromWidth - sourceAsideWidth - toWidth - domainsWidth - vendorsWidth - collectionsWidth - extra;\r\n const languageCount = Math.floor(freeWidth / 2 / pxPerLanguage);\r\n this.languageCountByScreenSize = languageCount > 0 ? languageCount : 1;\r\n }\r\n\r\n @Input() buttonDisabled = false;\r\n @Input() showTranslateButton = true;\r\n @Input() hideOnSmallScreens = true;\r\n @Input() disabled: boolean;\r\n @Input() hideLangMenuLabels = false;\r\n @Input() maxDisplayedLanguages: number;\r\n @Input() collections: any[];\r\n @Input() showDomainsWithLanguageName: boolean;\r\n @Input() isCollectionsActivated: boolean;\r\n /** If this is set to true, component parent is checked for displayed language count. */\r\n @Input() useParentWidth: boolean;\r\n /** Show loader instead of translate button */\r\n @Input() loader: boolean;\r\n\r\n @Input() settings: ISwitcherTranslationOptions;\r\n\r\n @Output() onDomainChange: EventEmitter<string> = new EventEmitter();\r\n @Output() onActionClick: EventEmitter<any> = new EventEmitter();\r\n @Output() onSourceLanguageChange: EventEmitter<any> = new EventEmitter();\r\n @Output() onTargetLanguageChange: EventEmitter<any> = new EventEmitter();\r\n @Output() onLanguageSwap: EventEmitter<string> = new EventEmitter();\r\n @Output() onVendorChange: EventEmitter<string> = new EventEmitter();\r\n\r\n languageCountByScreenSize: number;\r\n\r\n get visibleLanguageCount() {\r\n if (this.languageCountByScreenSize && this.languageCountByScreenSize < this.maxDisplayedLanguages) {\r\n return this.languageCountByScreenSize;\r\n }\r\n return this.maxDisplayedLanguages;\r\n }\r\n\r\n get collectionsVisible() {\r\n return this.isCollectionsActivated\r\n && this.isTerminologySupported\r\n }\r\n\r\n get showVendors() {\r\n return this.config?.coreConfig.showVendors && this.settings.vendors?.length > 0;\r\n }\r\n\r\n get showDomains() {\r\n return this.config?.coreConfig.showDomains &&\r\n !this.showDomainsWithLanguageName &&\r\n this.settings?.domains?.domains?.length > 1 &&\r\n this.settings?.source;\r\n }\r\n\r\n get isSwapLanguagesDisabled() {\r\n return this.disabled || !this.settings.swapActive;\r\n }\r\n\r\n get domainSide() { return this.config.coreConfig.domainSide; }\r\n get swapIconPosition() { return this.config.coreConfig.swapIconPosition; }\r\n\r\n private readonly destroy$ = new Subject();\r\n\r\n readonly srcLangTestId = \"src-lang-menu\";\r\n readonly trgLangTestId = \"trg-lang-menu\";\r\n\r\n private isTerminologySupported: boolean;\r\n\r\n constructor(\r\n private readonly config: TldTranslateConfigService,\r\n private readonly tldSystem: TldSystemService,\r\n private elRef: ElementRef) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.subscribeToActiveData();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.onResize();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next(null)\r\n this.destroy$.complete();\r\n }\r\n\r\n actionClick() {\r\n this.onActionClick.emit();\r\n }\r\n\r\n domainChange(systemId: string) {\r\n this.onDomainChange.emit(systemId);\r\n }\r\n\r\n sourceLangChange(language: string) {\r\n this.onSourceLanguageChange.emit(language);\r\n }\r\n\r\n swapSourceAndTarget() {\r\n this.onLanguageSwap.emit();\r\n }\r\n\r\n targetLangChange(language: string) {\r\n this.onTargetLanguageChange.emit(language);\r\n }\r\n\r\n vendorChange(systemId: string) {\r\n this.onVendorChange.emit(systemId);\r\n }\r\n\r\n private getElementRefWidth(element: ElementRef) {\r\n return element?.nativeElement.offsetWidth || 0;\r\n }\r\n\r\n private subscribeToActiveData(){\r\n this.tldSystem.getActiveData()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((active) => {\r\n if (!active) {\r\n this.isTerminologySupported = false;\r\n return;\r\n }\r\n\r\n this.isTerminologySupported = this.tldSystem.isTerminologySupported(active.system);\r\n });\r\n }\r\n}\r\n","<div fxLayout=\"row\" fxLayoutAlign=\"center center\" class=\"tld-translate-switcher-container\" #wrapper\r\n [ngClass.lt-md]=\"'tld-translate-switcher-container-tablet'\"\r\n [ngClass.lt-sm]=\"'tld-translate-switcher-container-mobile'\"\r\n [class.tld-switcher-with-collections]='collectionsVisible'>\r\n\r\n <div fxFlex fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <div fxHide.lt-md *ngIf=\"!hideLangMenuLabels\" #fromLabel>{{'TLD_TRANSLATE.FROM' | translate}}</div>\r\n <div fxFlex fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <tld-lang-list id=\"tld-source-language-list\" [disabled]=\"disabled\" [testId]=\"srcLangTestId\"\r\n [languages]=\"settings.sourceLanguageList\" (onLanguageChange)=\"sourceLangChange($event)\"\r\n [selected]=\"settings.source\" [maxDisplayedLanguages]=\"visibleLanguageCount\"></tld-lang-list>\r\n <ng-container *ngIf=\"domainSide==='src'\">\r\n <ng-container *ngTemplateOutlet=\"domainTemplate;\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <div #sourceAside *ngIf=\"swapIconPosition==='src'\">\r\n <ng-container *ngTemplateOutlet=\"swapButtonTemplate;\"></ng-container>\r\n </div>\r\n </div>\r\n <div *ngIf=\"swapIconPosition==='center'\">\r\n <ng-container *ngTemplateOutlet=\"swapButtonTemplate;\"></ng-container>\r\n </div>\r\n <div fxFlex fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutAlign.lt-sm=\"end center\">\r\n <div fxHide.lt-md *ngIf=\"!hideLangMenuLabels\" #toLabel>{{'TLD_TRANSLATE.TO' | translate}}</div>\r\n <div fxFlex fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <tld-lang-list [disabled]=\"disabled\" id=\"tld-target-language-list\" [languages]=\"settings.targetLanguageList\"\r\n (onLanguageChange)=\"targetLangChange($event)\" [selected]=\"settings.target\"\r\n [maxDisplayedLanguages]=\"visibleLanguageCount\" [testId]=\"trgLangTestId\" (onDomainChange)=\"domainChange($event)\"\r\n [showDomainsWithLanguageName]=\"showDomainsWithLanguageName\">\r\n <ng-container *ngIf=\"domainSide==='trg'\">\r\n <ng-container *ngTemplateOutlet=\"domainTemplate;\">\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"tld-translate-vendor-selection\" fxLayoutAlign=\"center center\" *ngIf=\"showVendors\" #vendorWrapper>\r\n <tld-list-menu (selectionChange)=\"domainChange($event)\" [list]=\"settings.vendors\" [titleKey]=\"'title'\"\r\n [valueKey]=\"'systemId'\" testId=\"tld-vendor-list\" [disabled]=\"disabled\" [showContent]=\"false\"\r\n [ariaLabel]=\"'TLD_TRANSLATE.VENDORS_ARIA_LABEL' | translate\" [selectedValue]=\"settings.systemId\">\r\n </tld-list-menu>\r\n </div>\r\n </tld-lang-list>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutGap.gt-xs=\"16px\">\r\n <div *ngIf=\"collectionsVisible\" #collectionWrapper>\r\n <tld-term-menu></tld-term-menu>\r\n </div>\r\n <tld-loader *ngIf=\"loader\" fxHide.lt-sm></tld-loader>\r\n <tld-translate-button [enablePulseAnimation]=\"true\" *ngIf=\"showTranslateButton && !loader\" class=\"switcher-translate-button\"\r\n [fxHide.lt-sm]=\"hideOnSmallScreens\" [disabled]=\"buttonDisabled\"></tld-translate-button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #swapButtonTemplate>\r\n <button [disabled]=\"isSwapLanguagesDisabled\" class=\"swap-languages-button\" mat-icon-button\r\n (click)=\"swapSourceAndTarget()\" aria-label=\"swap languages\" color=\"primary\"\r\n matTooltip=\"{{'TOOLTIPS.SWAP_LANGUAGES' | translate}}\">\r\n <span class=\"material-icons\" aria-hidden=\"false\"\r\n [attr.aria-label]=\"'ARIA_LABELS.SWAP_LANGUAGES' | translate\">swap_horiz</span>\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #domainTemplate>\r\n <div class=\"tld-translate-domain-selection\" fxLayoutAlign=\"center center\" *ngIf=\"showDomains\" #domainWrapper>\r\n <tld-domain-list fxLayoutAlign=\"center center\" (selectionChange)=\"domainChange($event)\"\r\n [list]=\"settings.domains.domains\" [selected]=\"settings.domains.active\" [selected]=\"settings.domains.active\"\r\n [disabled]=\"disabled\"></tld-domain-list>\r\n </div>\r\n</ng-template>\r\n","export enum OpenedMenu{\r\n NONE,\r\n SOURCE,\r\n TARGET\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { TldSystemService } from '../../services/tld-system.service';\r\nimport { OpenedMenu, TranslatedLanguage } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TranslationSystemPickerService {\r\n\r\n private _openedMenu: OpenedMenu = OpenedMenu.NONE;\r\n get openedMenu() { return this._openedMenu; }\r\n\r\n private _isSourceOpened: boolean;\r\n get isSourceOpened() { return this._isSourceOpened; }\r\n\r\n private _isTargetOpened: boolean;\r\n get isTargetOpened() { return this._isTargetOpened; }\r\n\r\n private readonly menuToggleEvent = new Subject<OpenedMenu>();\r\n\r\n constructor(private readonly systemService: TldSystemService) { }\r\n\r\n sourceLanguageClicked() {\r\n this.changeOpenedMenu(OpenedMenu.SOURCE);\r\n }\r\n\r\n targetLanguageClicked() {\r\n this.changeOpenedMenu(OpenedMenu.TARGET);\r\n }\r\n\r\n languageSelected(language: TranslatedLanguage) {\r\n if (this.isSourceOpened) {\r\n this.systemService.changeSourceLanguage(language.code);\r\n }\r\n else if (this.isTargetOpened) {\r\n this.systemService.changeTargetLanguage(language.code);\r\n }\r\n }\r\n\r\n menuToggled(): Observable<OpenedMenu> {\r\n return this.menuToggleEvent.asObservable();\r\n }\r\n\r\n closeOpened() {\r\n this.changeOpenedMenu(OpenedMenu.NONE);\r\n }\r\n\r\n private changeOpenedMenu(type: OpenedMenu) {\r\n if (type === this._openedMenu) {\r\n this._openedMenu = OpenedMenu.NONE\r\n } else {\r\n this._openedMenu = type;\r\n }\r\n\r\n this.toggleOpenedMenu();\r\n }\r\n\r\n private toggleOpenedMenu() {\r\n this._isSourceOpened = this.openedMenu === OpenedMenu.SOURCE;\r\n this._isTargetOpened = this.openedMenu === OpenedMenu.TARGET;\r\n\r\n this.menuToggleEvent.next(this.openedMenu);\r\n }\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { IActiveData } from '../models/active-data.model';\r\nimport { TldSystemService } from '../services/tld-system.service';\r\nimport { TranslationSystemPickerService } from './services/translation-system-picker.service';\r\n\r\n@Component({\r\n selector: 'tld-translation-system-picker',\r\n templateUrl: './translation-system-picker.component.html',\r\n styleUrls: ['./translation-system-picker.component.scss']\r\n})\r\nexport class TranslationSystemPickerComponent implements OnInit, OnDestroy {\r\n\r\n @Input() isCollectionsActivated: boolean;\r\n\r\n\r\n get isSourceOpened() { return this.systemPickerService.isSourceOpened; }\r\n get isTargetOpened() { return this.systemPickerService.isTargetOpened; }\r\n\r\n get canSwap() {\r\n return this.tldSystem.canSwapLanguages;\r\n }\r\n\r\n get sourceLanguage() {\r\n return this.activeData?.sourceLang;\r\n }\r\n\r\n get targetLanguage() {\r\n return this.activeData?.targetLang;\r\n }\r\n\r\n get isDataLoaded() {\r\n return this.activeData;\r\n }\r\n\r\n get collectionsVisible() {\r\n return this.isCollectionsActivated\r\n && this.isTerminologySupported;\r\n }\r\n\r\n readonly sourceAriaLabel = \"SYSTEM_PICKER.OPEN_SOURCE_ARIA_LABEL\";\r\n readonly targetAriaLabel = \"SYSTEM_PICKER.OPEN_TARGET_ARIA_LABEL\";\r\n\r\n domainLength: number = 0;\r\n activeDomainKey: string;\r\n\r\n private isTerminologySupported: boolean;\r\n\r\n private subscription: Subscription;\r\n private activeData: IActiveData;\r\n\r\n readonly languageLocalizationKey: string = \"LANGUAGES\";\r\n\r\n constructor(private readonly systemPickerService: TranslationSystemPickerService,\r\n private readonly tldSystem: TldSystemService) { }\r\n\r\n ngOnInit(): void {\r\n this.subscribeToActiveData();\r\n }\r\n\r\n sourceClick(event: MouseEvent) {\r\n // stop propagation necessary so that click outside directive works as intended otherwise click event goes up through parents and click outside gets called and closes dropdown.\r\n event.stopPropagation();\r\n this.systemPickerService.sourceLanguageClicked();\r\n }\r\n\r\n targetClick(event: MouseEvent) {\r\n // stop propagation necessary so that click outside directive works as intended otherwise click event goes up through parents and click outside gets called and closes dropdown.\r\n event.stopPropagation();\r\n this.systemPickerService.targetLanguageClicked();\r\n }\r\n\r\n swap() {\r\n this.tldSystem.swapSystemLanguages();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n private subscribeToActiveData() {\r\n this.subscription = this.tldSystem.getActiveData().subscribe((activeData) => {\r\n if (!activeData) {\r\n return;\r\n }\r\n this.activeData = activeData;\r\n this.activeDomainKey = this.activeData.domains.active.title;\r\n this.domainLength = this.activeData.domains?.domains?.length ?? 0;\r\n this.isTerminologySupported = this.tldSystem.isTerminologySupported(this.activeData.system);\r\n\r\n })\r\n }\r\n}\r\n","<div fxFlex fxLayout=\"row\">\r\n <ng-container *ngIf=\"isDataLoaded\">\r\n <div fxFlex fxLayoutAlign=\"space-between center\">\r\n <ng-container\r\n *ngTemplateOutlet=\"languageDropdownTrigger; context: { language: sourceLanguage, localizationKey: 'SYSTEM_PICKER.SOURCE', isOpened: isSourceOpened, isSource: true, ariaLabelCode: sourceAriaLabel }\">\r\n </ng-container>\r\n <button [disabled]=\"!canSwap\" class=\"swap-languages-button\" mat-icon-button (click)=\"swap()\"\r\n aria-label=\"swap languages\" color=\"primary\" matTooltip=\"{{'TOOLTIPS.SWAP_LANGUAGES' | translate}}\">\r\n <span class=\"material-icons\" aria-hidden=\"false\"\r\n [attr.aria-label]=\"'ARIA_LABELS.SWAP_LANGUAGES' | translate\">swap_horiz</span>\r\n </button>\r\n </div>\r\n <div fxFlex fxLayoutAlign=\"space-between center\">\r\n <ng-container\r\n *ngTemplateOutlet=\"languageDropdownTrigger; context: { language: targetLanguage, localizationKey: 'SYSTEM_PICKER.TARGET', isOpened: isTargetOpened, isSource: false, ariaLabelCode: targetAriaLabel}\">\r\n </ng-container>\r\n\r\n <div *ngIf=\"collectionsVisible\" #collectionWrapper>\r\n <tld-term-menu></tld-term-menu>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #languageName let-language=\"language\" let-showDomain=\"showDomain\">\r\n <span>\r\n {{languageLocalizationKey + \".\" + (language.lang | uppercase)| translate }}\r\n </span>\r\n <ng-container *ngIf=\"showDomain && domainLength>1\">\r\n <span>(</span>\r\n <span class=\"domain\">{{('DOMAINS.'+(activeDomainKey | uppercase)) | translate: {default: activeDomainKey} }}</span>\r\n <span>)</span>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #openedDropdown let-localizationKey=\"localizationKey\">\r\n {{localizationKey | translate}}\r\n</ng-template>\r\n\r\n<!--Template for language dropdown trigger. Same as for target and source with different params-->\r\n<ng-template #languageDropdownTrigger let-language=\"language\" let-isOpened=\"isOpened\" let-placeholder=\"localizationKey\"\r\n let-isSource=\"isSource\" let-ariaLabelCode=\"ariaLabelCode\">\r\n <tld-open-close-button class=\"system-picker-button\" [ngClass]=\"isSource? 'source': 'target'\"\r\n [ngClass.lt-sm]=\"'mobile'\" (click)=\"isSource? sourceClick($event): targetClick($event)\"\r\n [disableFocusOnAction]=\"true\" [isOpened]=\"isOpened\" [class.opened]=\"isOpened\" [ariaLabelCode]=\"ariaLabelCode\">\r\n <span [ngClass.lt-md]=\"'text-l-semi-bold'\" [ngClass.lt-sm]=\"'text-m-semi-bold mobile-domain-container'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"isOpened? openedDropdown:languageName; context: { language: language, localizationKey: placeholder, showDomain: !isSource }\">\r\n </ng-container>\r\n </span>\r\n </tld-open-close-button>\r\n</ng-template>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'translation-system-picker-button',\r\n templateUrl: './translation-system-picker-button.component.html',\r\n styleUrls: ['./translation-system-picker-button.component.scss']\r\n})\r\nexport class TranslationSystemPickerButtonComponent {\r\n\r\n @Input() active: boolean;\r\n @Input() tooltip: string;\r\n @Output() onClick: EventEmitter<null> = new EventEmitter();\r\n\r\n clicked(event: MouseEvent) {\r\n // stop propagation necessary so that click outside directive works as intended otherwise click event goes up through parents and click outside gets called and closes dropdown.\r\n event.stopPropagation();\r\n this.onClick.emit();\r\n }\r\n\r\n}\r\n","<button mat-button [class.active]=\"active\" class=\"system-picker-button\" (click)=\"clicked($event)\"\r\n [matTooltip]=\"tooltip? tooltip: ''\">\r\n <ng-content></ng-content>\r\n</button>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { GroupedLanguageItem } from '../models/grouped-language-item';\r\nimport { TranslatedLanguage } from '../models/translated-language.model';\r\n\r\n@Component({\r\n selector: 'tld-translation-system-picker-language-list',\r\n templateUrl: './translation-system-picker-language-list.component.html',\r\n styleUrls: ['./translation-system-picker-language-list.component.scss']\r\n})\r\nexport class TranslationSystemPickerLanguageListComponent {\r\n\r\n @Input() languages: GroupedLanguageItem[] = [];\r\n @Input() activeCode: string;\r\n @Input() showTitle: boolean;\r\n @Output() clicked: EventEmitter<TranslatedLanguage> = new EventEmitter<TranslatedLanguage>();\r\n\r\n readonly titleKey = \"SYSTEM_PICKER.ALL_LANGUAGES\";\r\n\r\n languageClick(language: TranslatedLanguage) {\r\n this.clicked.emit(language);\r\n }\r\n\r\n}\r\n","<h1 class=\"text-m-semi-bold\" *ngIf=\"showTitle\">{{titleKey | translate}}</h1>\r\n<div *ngFor=\"let group of languages\" class=\"language-group\">\r\n <span class=\"text-l-semi-bold grouped-by-symbol\">{{group.groupedBy | uppercase}}</span>\r\n <ul [ngClass.lt-sm]=\"'mobile'\">\r\n <li *ngFor=\"let language of group.group\">\r\n <translation-system-picker-button [active]=\"activeCode === language.code\" (onClick)=\"languageClick(language)\">\r\n {{language.displayName}}\r\n </translation-system-picker-button>\r\n </li>\r\n </ul>\r\n</div>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { TranslatedSystem } from '../models/translated-system.model';\r\n\r\n@Component({\r\n selector: 'tld-translation-system-picker-system-list',\r\n templateUrl: './translation-system-picker-system-list.component.html',\r\n styleUrls: ['./translation-system-picker-system-list.component.scss']\r\n})\r\nexport class TranslationSystemPickerSystemListComponent {\r\n\r\n @Input() systems: TranslatedSystem[];\r\n @Input() titleKey: string;\r\n @Input() activeId: string;\r\n @Input() showTitle: boolean;\r\n\r\n @Output() clicked: EventEmitter<TranslatedSystem> = new EventEmitter<TranslatedSystem>();\r\n\r\n changeSystem(system: TranslatedSystem) {\r\n this.clicked.emit(system);\r\n }\r\n\r\n}\r\n","<div [ngClass.lt-sm]=\"'mobile'\">\r\n <div class=\"span-container\" *ngIf=\"showTitle\">\r\n <span class=\"text-l-semi-bold\" [ngClass.lt-sm]=\"'text-m-semi-bold'\">{{titleKey | translate}}</span>\r\n </div>\r\n <translation-system-picker-button [active]=\"activeId === system.id\" (onClick)=\"changeSystem(system)\"\r\n *ngFor=\"let system of systems\">\r\n {{system.displayName}}\r\n </translation-system-picker-button>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { FilterWithHighlightPipe } from '@tilde-nlp/ngx-common';\r\nimport { Subscription } from 'rxjs';\r\nimport { IActiveData } from '../../models/active-data.model';\r\nimport { TldSystemService } from '../../services/tld-system.service';\r\nimport { DropdownBodyConfig, OpenedMenu, TranslatedSystem } from '../models';\r\nimport { GroupedLanguageItem } from '../models/grouped-language-item';\r\nimport { TranslatedLanguage } from '../models/translated-language.model';\r\nimport { TranslationSystemPickerService } from '../services/translation-system-picker.service';\r\n\r\n\r\n@Component({\r\n selector: 'tld-translation-system-picker-dropdown-body',\r\n templateUrl: './translation-system-picker-dropdown-body.component.html',\r\n styleUrls: ['./translation-system-picker-dropdown-body.component.scss']\r\n})\r\nexport class TranslationSystemPickerDropdownBodyComponent implements OnInit {\r\n\r\n @Input() set filterText(val: string) {\r\n this.filterLanguages(val);\r\n }\r\n @Input() config: DropdownBodyConfig;\r\n\r\n @Output() onSystemClick: EventEmitter<TranslatedSystem> = new EventEmitter<TranslatedSystem>();\r\n @Output() onLanguageClick: EventEmitter<TranslatedLanguage> = new EventEmitter<TranslatedLanguage>();\r\n @Output() onFilteredLanguageClick: EventEmitter<TranslatedLanguage> = new EventEmitter<TranslatedLanguage>();\r\n\r\n systemList: TranslatedSystem[];\r\n systemListTitle: string;\r\n showFiltered: boolean;\r\n\r\n get showSystems() { return !this.config?.hideSystems; }\r\n get showLanguages() { return !this.config?.hideLanguages; }\r\n get showSystemTitle() { return !this.config?.hideSystemTitle; };\r\n get showLanguageTitle() { return this.config?.showLanguageTitle; }\r\n\r\n private menuState: OpenedMenu;\r\n private activeData: IActiveData;\r\n private systemSubscription: Subscription;\r\n private langSubscription: Subscription;\r\n private menuToggleSubscription: Subscription;\r\n // Stores from localization file language translations\r\n // This needs to be stored here because the order in tmeplate needs to be by current language\r\n // possible to use sortTranslations pipe from common lib, but decided not to because here we still need to group languages by first letter.\r\n private languageAndDomainTranslations: string[][];\r\n\r\n private readonly languagesLocalizationKey = \"LANGUAGES\";\r\n private readonly domainsLocalizationKey = \"DOMAINS\";\r\n private readonly recentSystemTitleKey = \"SYSTEM_PICKER.RECENT_SYSTEM_TITLE\";\r\n private readonly domainsTitleKey = \"SYSTEM_PICKER.SELECT_DOMAIN\";\r\n private readonly filterHighlightPipe = new FilterWithHighlightPipe();\r\n\r\n get recentSystems() {\r\n return this.activeData?.recentSystems ?? [];\r\n }\r\n\r\n get domains() {\r\n return this.activeData?.domains.domains ?? [];\r\n }\r\n\r\n get activeSystemId() {\r\n return this.activeData?.systemId;\r\n }\r\n\r\n allLanguages: TranslatedLanguage[];\r\n filteredLanguages: TranslatedLanguage[];\r\n\r\n groupedLanguages: GroupedLanguageItem[];\r\n // Either source or target lang code, depending on which one is opened.\r\n activeLanguageCode: string;\r\n\r\n constructor(private readonly systemService: TldSystemService,\r\n private readonly translate: TranslateService,\r\n private readonly systemPickerService: TranslationSystemPickerService) { }\r\n\r\n ngOnInit(): void {\r\n this.menuState = this.systemPickerService.openedMenu;\r\n\r\n this.subscribeToActiveSystemData();\r\n this.subscribeToLanguageChange();\r\n this.subscribeToMenuToggle();\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.systemPickerService.closeOpened();\r\n this.systemSubscription.unsubscribe();\r\n this.langSubscription.unsubscribe();\r\n this.menuToggleSubscription.unsubscribe();\r\n }\r\n\r\n close() {\r\n this.systemPickerService.closeOpened();\r\n }\r\n\r\n filterLanguages(filter: string) {\r\n if (!filter?.length) {\r\n this.filteredLanguages = null;\r\n this.showFiltered = false;\r\n return;\r\n }\r\n\r\n this.showFiltered = true;\r\n this.filteredLanguages = this.filterHighlightPipe.transform(this.allLanguages, filter, \"displayName\");\r\n }\r\n\r\n languageClick(language: TranslatedLanguage) {\r\n this.systemPickerService.languageSelected(language);\r\n this.onLanguageClick.emit(language);\r\n }\r\n\r\n filteredLanguageClick(language: TranslatedLanguage) {\r\n this.systemPickerService.languageSelected(language);\r\n this.onFilteredLanguageClick.emit(language);\r\n }\r\n\r\n systemClick(system: TranslatedSystem) {\r\n this.systemService.changeSystem(system.id);\r\n this.onSystemClick.emit(system);\r\n }\r\n\r\n private subscribeToMenuToggle() {\r\n this.menuToggleSubscription = this.systemPickerService.menuToggled().subscribe(\r\n (state) => { this.onMenuToggle(state); }\r\n );\r\n }\r\n\r\n private onMenuToggle(state: OpenedMenu) {\r\n if (this.menuState !== state) {\r\n this.menuState = state;\r\n this.setActiveLanguageCode();\r\n this.retranslate();\r\n }\r\n }\r\n\r\n private setActiveLanguageCode() {\r\n if (!this.activeData) {\r\n return;\r\n }\r\n\r\n if (this.menuState === OpenedMenu.SOURCE) {\r\n this.activeLanguageCode = this.activeData.sourceLang.lang;\r\n }\r\n else if (this.menuState === OpenedMenu.TARGET) {\r\n this.activeLanguageCode = this.activeData.targetLang.lang;\r\n }\r\n else {\r\n this.activeLanguageCode = null;\r\n }\r\n }\r\n\r\n private subscribeToActiveSystemData() {\r\n this.systemSubscription = this.systemService.getActiveData().subscribe(\r\n (active) => {\r\n if (!active) {\r\n return;\r\n }\r\n\r\n this.activeData = active;\r\n this.setActiveLanguageCode();\r\n this.retranslate();\r\n }\r\n );\r\n }\r\n\r\n private subscribeToLanguageChange() {\r\n this.langSubscription = this.translate.stream([this.languagesLocalizationKey, this.domainsLocalizationKey]).subscribe((data) => {\r\n this.languageAndDomainTranslations = data;\r\n this.retranslate();\r\n })\r\n }\r\n\r\n private retranslate() {\r\n // cant retranslate if both of these values are not loaded yer. This condition should fulfill only on first time.\r\n if (!(this.languageAndDomainTranslations && this.activeData)) {\r\n return;\r\n }\r\n\r\n this.translateSystems();\r\n this.sortLanguages();\r\n }\r\n\r\n // Method prepares objects for recent systems or domains, depending on which menu is opened.\r\n private translateSystems() {\r\n if (this.systemPickerService.isSourceOpened) {\r\n this.systemList = this.getTranslatedRecentSystems();\r\n }\r\n else if (this.systemPickerService.isTargetOpened) {\r\n this.systemList = this.getTranslatedDomains();\r\n }\r\n }\r\n\r\n private getTranslatedDomains(): TranslatedSystem[] {\r\n this.systemListTitle = this.domainsTitleKey;\r\n const arr: TranslatedSystem[] = [];\r\n this.domains.forEach(domain => {\r\n arr.push({ displayName: this.getDomainDisplayName(domain.title), id: domain.domain })\r\n });\r\n return arr.sort((a, b) => a.displayName.localeCompare(b.displayName));\r\n }\r\n\r\n private getTranslatedRecentSystems(): TranslatedSystem[] {\r\n this.systemListTitle = this.recentSystemTitleKey;\r\n const arr: TranslatedSystem[] = [];\r\n this.recentSystems.forEach((system) => {\r\n const translated: TranslatedSystem = {\r\n id: system.id,\r\n displayName: `${this.getLanguageDisplayName(system.sourceLanguage)} - ${this.getLanguageDisplayName(system.targetLanguage)} (${this.getDomainDisplayName(system.domain)})`\r\n }\r\n arr.push(translated);\r\n });\r\n return arr;\r\n }\r\n\r\n // Sorts languages and sets them to GroupedLanguageItem structure\r\n private sortLanguages() {\r\n let languageList: any[];\r\n if (this.systemPickerService.isSourceOpened) {\r\n languageList = this.activeData.sourceLangList;\r\n }\r\n else if (this.systemPickerService.isTargetOpened) {\r\n languageList = this.activeData.targetLangList;\r\n }\r\n else {\r\n return;\r\n }\r\n\r\n this.allLanguages = [];\r\n\r\n this.groupedLanguages = this.systemService.getUniqueLanguages(languageList)\r\n .reduce((newArray: GroupedLanguageItem[], curr) => {\r\n const translatedLanguage: TranslatedLanguage = { code: curr, displayName: this.languageAndDomainTranslations[this.languagesLocalizationKey][curr.toUpperCase()] ?? curr.toUpperCase() };\r\n const firstLetter = translatedLanguage.displayName[0].toUpperCase();\r\n const idx = newArray.findIndex(e => e.groupedBy === firstLetter);\r\n this.allLanguages.push(translatedLanguage);\r\n if (idx === -1) {\r\n newArray.push({ groupedBy: firstLetter, group: [translatedLanguage] });\r\n }\r\n else {\r\n newArray[idx].group.push(translatedLanguage);\r\n newArray[idx].group.sort((r1, r2) => r1.displayName > r2.displayName ? 1 : -1);\r\n }\r\n return newArray;\r\n }, [])\r\n .sort((e1, e2) => e1.groupedBy > e2.groupedBy ? 1 : -1);\r\n }\r\n\r\n private getLanguageDisplayName(code: string) {\r\n return this.languageAndDomainTranslations[this.languagesLocalizationKey][code.toUpperCase()];\r\n }\r\n\r\n private getDomainDisplayName(domain: string) {\r\n return this.languageAndDomainTranslations[this.domainsLocalizationKey][domain.split(/[ -]+/).join(\"_\").toUpperCase()] ?? domain;\r\n }\r\n\r\n}\r\n","<div class=\"dropdown-body\" *ngIf=\"!showFiltered; else filter\">\r\n <tld-translation-system-picker-language-list *ngIf=\"showLanguages\" [languages]=\"groupedLanguages\"\r\n [activeCode]=\"activeLanguageCode\" (clicked)=\"languageClick($event)\" [showTitle]=\"showLanguageTitle\">\r\n </tld-translation-system-picker-language-list>\r\n <tld-translation-system-picker-system-list *ngIf=\"showSystems && systemList.length> 0\" [systems]=\"systemList\"\r\n (clicked)=\"systemClick($event)\" [showTitle]=\"showSystemTitle\" [titleKey]=\"systemListTitle\"\r\n [activeId]=\"activeSystemId\">\r\n </tld-translation-system-picker-system-list>\r\n</div>\r\n<ng-template #filter>\r\n <div class=\"filtered-items\">\r\n <ul>\r\n <li>\r\n <translation-system-picker-button *ngFor=\"let language of filteredLanguages\"\r\n [active]=\"activeLanguageCode === language.code\" (onClick)=\"filteredLanguageClick(language)\">\r\n <span [innerHtml]=\"language.displayName\"></span>\r\n </translation-system-picker-button>\r\n </li>\r\n </ul>\r\n <p class=\"no-results-message\" *ngIf=\"!filteredLanguages.length\">{{\"SYSTEM_PICKER.FILTER_NO_RESULTS\" | translate}}\r\n </p>\r\n </div>\r\n</ng-template>\r\n","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, Output, ViewChild } from '@angular/core';\r\nimport { MatInput } from '@angular/material/input';\r\n\r\n@Component({\r\n selector: 'tld-translation-system-picker-filter',\r\n templateUrl: './translation-system-picker-filter.component.html',\r\n styleUrls: ['./translation-system-picker-filter.component.scss']\r\n})\r\nexport class TranslationSystemPickerFilterComponent implements AfterViewInit {\r\n @ViewChild(\"filterInput\") filterInput: ElementRef<MatInput>;\r\n\r\n @Output() filterChanged: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n private _filter: string = \"\";\r\n get filter() { return this._filter; }\r\n set filter(val: string) {\r\n this._filter = val;\r\n this.filterChanged.emit(this.filter);\r\n }\r\n\r\n constructor(private readonly changeDetector: ChangeDetectorRef) { }\r\n\r\n ngAfterViewInit(): void {\r\n this.focus();\r\n this.changeDetector.detectChanges();\r\n }\r\n\r\n clear(event: MouseEvent) {\r\n if (event) {\r\n event.stopPropagation();\r\n }\r\n this.filter = \"\";\r\n this.focus();\r\n }\r\n\r\n private focus() {\r\n this.filterInput.nativeElement.focus();\r\n }\r\n\r\n}\r\n","<mat-form-field color=\"accent\" appearance=\"outline\" floatLabel=\"never\" class=\"search-input-field\">\r\n <mat-icon matPrefix fxHide.xs>search</mat-icon>\r\n <input #filterInput matInput [(ngModel)]=\"filter\" [placeholder]=\"'SYSTEM_PICKER.SEARCH_PLACEHOLDER' | translate\">\r\n <mat-button matTooltip=\"{{'SYSTEM_PICKER.CLEAR_SEARCH' | translate}}\" mat-icon-button *ngIf=\"filter.length\" matSuffix (click)=\"clear($event)\">\r\n <mat-icon>close</mat-icon>\r\n </mat-button>\r\n</mat-form-field>\r\n","import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\r\nimport { Component, HostListener, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { TranslationSystemPickerDropdownBodyComponent } from '../dropdown-body/translation-system-picker-dropdown-body.component';\r\nimport { TranslationSystemPickerFilterComponent } from '../filter/translation-system-picker-filter.component';\r\nimport { DropdownBodyConfig } from '../models/dropdown-body-config.model';\r\nimport { TranslationSystemPickerService } from '../services/translation-system-picker.service';\r\n\r\n@Component({\r\n selector: 'tld-translation-system-picker-dropdown',\r\n templateUrl: './translation-system-picker-dropdown.component.html',\r\n styleUrls: ['./translation-system-picker-dropdown.component.scss']\r\n})\r\nexport class TranslationSystemPickerDropdownComponent implements OnInit, OnDestroy {\r\n @HostListener('document:keydown.escape', ['$event']) onKeydownHandler() {\r\n this.close();\r\n }\r\n\r\n @ViewChild(TranslationSystemPickerDropdownBodyComponent) dropdownBody: TranslationSystemPickerDropdownBodyComponent;\r\n @ViewChild(TranslationSystemPickerFilterComponent) filter: TranslationSystemPickerFilterComponent;\r\n\r\n filterText: string;\r\n isMobile: boolean;\r\n showMobFilter: boolean;\r\n\r\n private currentStep = 0;\r\n private breakpointSubscription: Subscription;\r\n private menuToggleSubscription: Subscription;\r\n\r\n get selectedBodyConfig() {\r\n return this.bodyConfigArr?.[this.currentStep];\r\n }\r\n\r\n bodyConfigArr: DropdownBodyConfig[];\r\n get currentConfig() { return this.bodyConfigArr?.[this.currentStep]; }\r\n\r\n private readonly mobileTargetConfig: DropdownBodyConfig[] = [\r\n {\r\n hideLanguages: false,\r\n hideSystems: true,\r\n headerTitle: \"SYSTEM_PICKER.TARGET\",\r\n },\r\n {\r\n hideLanguages: true,\r\n hideSystems: false,\r\n headerTitle: \"SYSTEM_PICKER.SELECT_DOMAIN\",\r\n hideSystemTitle: true\r\n }\r\n ];\r\n\r\n private readonly mobileSourceConfig: DropdownBodyConfig[] = [\r\n {\r\n hideLanguages: false,\r\n hideSystems: false,\r\n headerTitle: \"SYSTEM_PICKER.SOURCE\",\r\n showLanguageTitle: true\r\n }\r\n ];\r\n\r\n private readonly desktopTargetConfig: DropdownBodyConfig[] = [\r\n {\r\n hideLanguages: false,\r\n hideSystems: false,\r\n leaveOpenOnLanguageClick: true\r\n }\r\n ]\r\n\r\n constructor(private readonly systemPickerService: TranslationSystemPickerService,\r\n private readonly breakPointObserver: BreakpointObserver) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscribeToBreakpointObserver();\r\n this.subscribeToMenuToggle();\r\n }\r\n\r\n\r\n onSystemClick() {\r\n if (!this.selectedBodyConfig?.leaveOpenOnSystemClick) {\r\n this.nextStep();\r\n }\r\n }\r\n\r\n onLanguageClick() {\r\n if (!this.selectedBodyConfig?.leaveOpenOnLanguageClick) {\r\n this.nextStep();\r\n }\r\n }\r\n\r\n onFilteredLanguageClick() {\r\n // should not close menu, but only clear the filter\r\n this.filter.clear(null);\r\n if (!this.selectedBodyConfig?.leaveOpenOnLanguageClick) {\r\n this.nextStep();\r\n }\r\n }\r\n\r\n close() {\r\n this.systemPickerService.closeOpened();\r\n }\r\n\r\n filterChange(filter: string) {\r\n this.filterText = filter;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.breakpointSubscription.unsubscribe();\r\n this.menuToggleSubscription.unsubscribe();\r\n }\r\n\r\n toggleFilter() {\r\n this.showMobFilter = !this.showMobFilter;\r\n this.clearFilter();\r\n }\r\n\r\n clearFilter() {\r\n this.filterText = \"\";\r\n }\r\n\r\n back() {\r\n if (this.isMobile) {\r\n if (this.showMobFilter) {\r\n this.toggleFilter();\r\n }\r\n else if (this.currentStep) {\r\n // if step bigger than zero, then go one step back.\r\n this.currentStep += -1;\r\n }\r\n else {\r\n // if step is zero, close menu\r\n this.close();\r\n }\r\n }\r\n }\r\n\r\n nextStep() {\r\n if (this.bodyConfigArr?.[this.currentStep + 1]) {\r\n this.currentStep += 1;\r\n this.clearFilter();\r\n this.showMobFilter = false;\r\n\r\n // systems visible only. At time of writing, mobile target view after language select.\r\n if (this.currentConfig.hideLanguages && !this.currentConfig.hideSystems) {\r\n if (this.dropdownBody.systemList?.length <= 1) {\r\n this.nextStep();\r\n }\r\n }\r\n }\r\n else {\r\n this.close();\r\n }\r\n }\r\n\r\n clickOutside() {\r\n // it shouldn't be possible to click outside on mob because it should be 100vw and 100vh.\r\n // NOTE that this method gets triggered also on system select, because active system changes, rerenders ui elements and clicked element doesn't exist anymore in this container\r\n if (this.isMobile) {\r\n return;\r\n }\r\n this.close();\r\n }\r\n\r\n private subscribeToBreakpointObserver() {\r\n this.breakpointSubscription = this.breakPointObserver.observe([Breakpoints.XSmall]).subscribe((res) => {\r\n this.isMobile = res.breakpoints[Breakpoints.XSmall];\r\n this.selectBodyConfig();\r\n })\r\n }\r\n\r\n private selectBodyConfig() {\r\n this.currentStep = 0;\r\n if (this.isMobile) {\r\n if (this.systemPickerService.isTargetOpened) {\r\n this.bodyConfigArr = this.mobileTargetConfig;\r\n }\r\n else if (this.systemPickerService.isSourceOpened) {\r\n this.bodyConfigArr = this.mobileSourceConfig;\r\n }\r\n }\r\n else {\r\n if (this.systemPickerService.isTargetOpened) {\r\n this.bodyConfigArr = this.desktopTargetConfig;\r\n }\r\n else {\r\n this.bodyConfigArr = null;\r\n }\r\n }\r\n }\r\n\r\n private subscribeToMenuToggle() {\r\n this.menuToggleSubscription = this.systemPickerService.menuToggled().subscribe(() => {\r\n this.selectBodyConfig();\r\n })\r\n }\r\n\r\n}\r\n","<div class=\"dropdown-content-wrapper\" [class.mobile]=\"isMobile\" (clickOutside)=\"clickOutside()\">\r\n <div *ngIf=\"isMobile\" class=\"system-picker-header\">\r\n <button mat-icon-button (click)=\"back()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n <ng-container *ngIf=\"!showMobFilter; else filter\">\r\n <h1 class=\" text-l-semi-bold\">{{currentConfig?.headerTitle | translate}}</h1>\r\n <button mat-icon-button (click)=\"toggleFilter()\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </ng-container>\r\n </div>\r\n <div class=\"system-picker-dropdown-content\">\r\n <ng-container *ngIf=\"!isMobile\">\r\n <ng-container *ngTemplateOutlet=\"filter\"></ng-container>\r\n </ng-container>\r\n <tld-translation-system-picker-dropdown-body [config]=\"currentConfig\" [filterText]=\"filterText\"\r\n (onSystemClick)=\"onSystemClick()\" (onLanguageClick)=\"onLanguageClick()\"\r\n (onFilteredLanguageClick)=\"onFilteredLanguageClick()\">\r\n </tld-translation-system-picker-dropdown-body>\r\n </div>\r\n</div>\r\n\r\n<ng-template #filter>\r\n <tld-translation-system-picker-filter (filterChanged)=\"filterChange($event)\">\r\n </tld-translation-system-picker-filter>\r\n</ng-template>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ClickOutsideModule, FilterWithHighlightModule, SortTranslationsModule } from '@tilde-nlp/ngx-common';\r\nimport { MaterialModule } from '../material.module';\r\nimport { TldCommonModule } from '../tld-common';\r\nimport { TldTermModule } from '../tld-term';\r\nimport { TldDomainListComponent } from './tld-domain-list/tld-domain-list.component';\r\nimport { TldTranslateSwitcherComponent } from './tld-translate-switcher/tld-translate-switcher.component';\r\nimport { TranslationSystemPickerButtonComponent, TranslationSystemPickerFilterComponent } from './translation-system-picker';\r\nimport { TranslationSystemPickerDropdownBodyComponent } from './translation-system-picker/dropdown-body/translation-system-picker-dropdown-body.component';\r\nimport { TranslationSystemPickerDropdownComponent } from './translation-system-picker/dropdown/translation-system-picker-dropdown.component';\r\nimport { TranslationSystemPickerLanguageListComponent } from './translation-system-picker/language-list/translation-system-picker-language-list.component';\r\nimport { TranslationSystemPickerSystemListComponent } from './translation-system-picker/system-list/translation-system-picker-system-list.component';\r\nimport { TranslationSystemPickerComponent } from './translation-system-picker/translation-system-picker.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TldTranslateSwitcherComponent,\r\n TldDomainListComponent,\r\n TranslationSystemPickerComponent,\r\n TranslationSystemPickerDropdownComponent,\r\n TranslationSystemPickerLanguageListComponent,\r\n TranslationSystemPickerSystemListComponent,\r\n TranslationSystemPickerFilterComponent,\r\n TranslationSystemPickerDropdownBodyComponent,\r\n TranslationSystemPickerButtonComponent\r\n ],\r\n imports: [\r\n FormsModule,\r\n CommonModule,\r\n BrowserModule,\r\n FlexLayoutModule,\r\n MaterialModule,\r\n TranslateModule,\r\n TldCommonModule,\r\n TldTermModule,\r\n BrowserAnimationsModule,\r\n SortTranslationsModule,\r\n FilterWithHighlightModule,\r\n ClickOutsideModule\r\n ],\r\n exports: [\r\n TldTranslateSwitcherComponent,\r\n TldDomainListComponent,\r\n TranslationSystemPickerComponent,\r\n TranslationSystemPickerDropdownComponent\r\n ]\r\n})\r\nexport class TldTooltipModule { }\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TldTranslateWebService {\r\nwtScriptsAdded=false;\r\n\r\n constructor() { }\r\n\r\n\r\n}\r\n","import { animate, style, transition, trigger } from '@angular/animations';\r\nimport { Component, ElementRef, EventEmitter, Inject, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { ProgressBarMode } from '@angular/material/progress-bar';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport * as $ from 'jquery';\r\nimport { NotificationMessage, NotificationMessageType } from '@tilde-nlp/ngx-common';\r\nimport { Subject } from 'rxjs';\r\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\r\nimport { TRANSLATION_API_VERSION_TOKEN } from '../../../injection-tokens';\r\nimport { TldTranslateButtonService } from '../../tld-common/components/translate-button/tld-translate-button.service';\r\nimport { ITldTranslateMessage, TldMessageType, TranslationApiVersion } from '../../tld-common/models';\r\nimport { IconService, TldAlertService, TldTranslateConfigService } from '../../tld-common/services';\r\nimport { TldTermCollectionsService } from '../../tld-term/services';\r\nimport { IActiveData } from '../../tld-tooltip/models/active-data.model';\r\nimport { ISwitcherTranslationOptions } from '../../tld-tooltip/models/switcher-options.model';\r\nimport { TldSystemService } from '../../tld-tooltip/services/tld-system.service';\r\nimport { TldTranslateWebService } from '../tld-translate-web.service';\r\nimport { availableLanguages } from './../../../i18n/available-languages';\r\n\r\n\r\ndeclare var window: any;\r\nwindow.$ = window.jQuery = $;\r\n\r\n@Component({\r\n selector: 'tld-translate-website',\r\n templateUrl: './tld-translate-web.component.html',\r\n styleUrls: ['./tld-translate-web.component.scss'],\r\n animations: [\r\n trigger('openCloseAnimation', [\r\n\r\n transition(':enter', [\r\n style({ height: 0 }),\r\n animate(500)\r\n ]),\r\n\r\n transition(':leave',\r\n animate(500, style({ height: 0 })))\r\n ])\r\n ]\r\n})\r\nexport class TldTranslateWebsiteComponent implements OnInit, OnDestroy {\r\n constructor(\r\n private readonly translate: TranslateService,\r\n private readonly configService: TldTranslateConfigService,\r\n private readonly translateButtonService: TldTranslateButtonService,\r\n private readonly alerts: TldAlertService,\r\n private readonly router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n private readonly tldSystem: TldSystemService,\r\n private readonly collectionService: TldTermCollectionsService,\r\n private readonly tldTranslateWebService: TldTranslateWebService,\r\n iconService: IconService,\r\n @Inject(TRANSLATION_API_VERSION_TOKEN) private readonly apiVersion: TranslationApiVersion\r\n ) {\r\n iconService.registerIcons();\r\n }\r\n @Input() product = '';\r\n @Input() company = '';\r\n\r\n @ViewChild('url') urlInputField: ElementRef;\r\n\r\n settingSystemListForFirstTime: boolean;\r\n urlToTranslate = ''; // translateWeb_Url\r\n showCancel = false;\r\n showRestore = false;\r\n showTranslateBtn = true;\r\n translating = false;\r\n disableButton = false; // actionButtonDisabled\r\n\r\n // params from config service.\r\n logoLocation: string;\r\n debug: boolean;\r\n webLangAutodetect: boolean; // TODO check if really needed // after page is loaded auto detect language and change active system\r\n allowSuggestions: boolean;\r\n hidePopup: boolean;\r\n translatePagePath: string; // path to WebTranslationProxy\r\n clientId: string;\r\n appId: string;\r\n translateServiceUrl: string;\r\n\r\n switcherOptions: ISwitcherTranslationOptions;\r\n\r\n @Output() onError: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n activeSystemObj: IActiveData;\r\n messages: NotificationMessage[] = [];\r\n\r\n //Progress bar\r\n mode: ProgressBarMode = 'determinate';\r\n progressValue = 0;\r\n showProgress = false;\r\n get showNoSystemsError() {\r\n return this.tldSystem.noSystemsError;\r\n }\r\n noSystemsError: ITldTranslateMessage = { text: 'TLD_TRANSLATE.ERROR_NO_SYSTEMS_LOADED', type: TldMessageType.ERROR };\r\n\r\n get actionButtonDisabled() { return this.disableButton; }\r\n\r\n\r\n get hideLangMenuLabels() {\r\n return this.configService?.coreConfig.hideLangMenuLabels;\r\n }\r\n\r\n get maxDisplayedLanguages(): number {\r\n return this.configService.coreConfig.maxDisplayedLanguages;\r\n }\r\n\r\n get isCollectionsActivated() {\r\n return this.configService?.termConfig?.isCollectionsActivated;\r\n }\r\n\r\n get showDomainsWithLanguageName(): boolean {\r\n return this.configService.coreConfig.showDomainsWithLanguageName;\r\n }\r\n\r\n get sandbox() { return this.configService.webtranslateConfig.sandbox; }\r\n\r\n readonly useParentWidth = true;\r\n private readonly destroy$ = new Subject();\r\n\r\n changeAuth(isAuth: boolean) {\r\n this.configService.coreConfig.isAuth = isAuth;\r\n this.initializeWidget();\r\n }\r\n\r\n initializeWidget(): void {\r\n this.tldSystem.init(this.tldSystem.getLastUsedSystem() ?? this.configService.coreConfig.defaultSystemId);\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.configService.coreConfig.debug) {\r\n for (const key in availableLanguages) {\r\n this.translate.setTranslation(key, availableLanguages[key], true);\r\n }\r\n this.configService.coreConfig.isAuth = true;\r\n this.translate.use(\"en\");\r\n }\r\n\r\n this.initFromConfig();\r\n this.initializeWidget();\r\n\r\n this.tldSystem.getActiveData().pipe(\r\n distinctUntilChanged(),\r\n takeUntil(this.destroy$))\r\n .subscribe((val: IActiveData) => {\r\n this.activeSystemObj = val;\r\n if (!val) {\r\n return;\r\n }\r\n this.switcherOptions = {\r\n domains: val.domains,\r\n source: { code: val.sourceLang.lang, systemId: val.systemId },\r\n sourceLanguageList: val.sourceLangList,\r\n systemId: val.systemId,\r\n swapActive: val.swapLangActive,\r\n target: { code: val.targetLang.lang, systemId: val.systemId },\r\n targetLanguageList: val.targetLangList,\r\n vendors: val.vendors\r\n };\r\n });\r\n\r\n\r\n this.translateButtonService.getActionClick().pipe(\r\n takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.translateButtonClick();\r\n });\r\n\r\n this.alerts.getMessages().pipe(\r\n takeUntil(this.destroy$))\r\n .subscribe((message: NotificationMessage) => {\r\n if (message.type === NotificationMessageType.ERROR) {\r\n this.onError.emit(message.error);\r\n }\r\n // pushing only \"one of\" message in array, so screen is not spammed with messages\r\n const existingMessage = this.messages.find(msg => msg.body === message.body && msg.type === message.type && msg.title === message.title);\r\n if (!existingMessage) {\r\n this.messages.push(message);\r\n }\r\n });\r\n\r\n this.translate.get('APP_NAME').pipe(\r\n takeUntil(this.destroy$))\r\n .subscribe((text: string) => {\r\n this.configService.coreConfig.appName = text;\r\n });\r\n\r\n window.onmessage = this.receiveMessage.bind(this);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.tldTranslateWebService.wtScriptsAdded) {\r\n this.addScript('./assets/webtranslate/translate-website.js');\r\n this.addConfigurationScrip();\r\n this.addScript('./assets/webtranslate/page-translate-widget.js');\r\n this.tldTranslateWebService.wtScriptsAdded = true;\r\n }\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n window.onmessage = undefined;\r\n this.destroy$.next(null);\r\n this.destroy$.complete();\r\n }\r\n\r\n private receiveMessage(event: any) {\r\n // TODO add correct origin\r\n // if (event.origin !== \"\")\r\n // return;\r\n\r\n if (this.debug) {\r\n // eslint-disable-next-line no-console\r\n console.info('Message received from iframe:' + JSON.stringify(event.data));\r\n }\r\n\r\n\r\n if (event.data && event.data.message) {\r\n switch (event.data.message) {\r\n case 'ready':\r\n this.tldSystem.sysList.pipe(\r\n takeUntil(this.destroy$))\r\n .subscribe(data => {\r\n let systemListToIframe = [];\r\n data.forEach((sys, index) => {\r\n systemListToIframe.push({\r\n id: sys.id,\r\n sourceLanguage: sys.sourceLanguage,\r\n targetLanguage: sys.targetLanguage,\r\n name: sys.title ?? sys.id,\r\n order: index,\r\n domain: sys.domain\r\n });\r\n });\r\n\r\n // push system list to iframe\r\n this.settingSystemListForFirstTime = true;\r\n this.sendMessage({ message: 'setSystemList', systemList: systemListToIframe });\r\n if (this.activatedRoute.snapshot.queryParams.url) {\r\n this.sendMessage({\r\n message: 'loadUrl',\r\n url: this.activatedRoute.snapshot.queryParams.url,\r\n translateAfterLoad: false\r\n });\r\n this.urlToTranslate = this.activatedRoute.snapshot.queryParams.url;\r\n }\r\n })\r\n this.urlInputField.nativeElement.focus();\r\n\r\n break;\r\n case 'urlLoaded':\r\n this.showProgress = false;\r\n // webpage finished loading, set the full url in address box\r\n this.urlToTranslate = event.data.url;\r\n\r\n this.showTranslateBtn = true;\r\n this.disableButton = false;\r\n\r\n break;\r\n case 'startedLoading':\r\n this.mode = 'indeterminate';\r\n this.showProgress = true;\r\n this.showCancel = false;\r\n this.showRestore = false;\r\n this.showTranslateBtn = false;\r\n break;\r\n case 'stoppedLoading':\r\n if (!this.translating) {\r\n this.showCancel = false;\r\n this.showRestore = false;\r\n this.showTranslateBtn = true;\r\n this.disableButton = false;\r\n }\r\n break;\r\n case 'systemChanged':\r\n // set default system, right after web translation widget in iframe is loaded\r\n if (this.settingSystemListForFirstTime) {\r\n this.settingSystemListForFirstTime = false;\r\n this.sendMessage({ message: 'changeSystem', systemId: this.switcherOptions.systemId });\r\n } else {\r\n // if initiated by language of the loaded webpage being different\r\n // than source language of currently selected system\r\n // we should change the system in UI and warn the user about the fact\r\n if (event.data.auto && event.data.changed) {\r\n if (this.webLangAutodetect) {\r\n this.systemChange(event.data.systemId);\r\n this.switcherOptions.systemId = event.data.systemId;\r\n\r\n } else {\r\n this.sendMessage({ message: 'changeSystem', systemId: this.switcherOptions.systemId });\r\n\r\n }\r\n }\r\n }\r\n\r\n break;\r\n case 'translationStarted':\r\n this.mode = 'determinate';\r\n this.progressValue = 0;\r\n this.showProgress = true;\r\n this.translating = true;\r\n\r\n // disable system change, show cancel button\r\n this.showTranslateBtn = false;\r\n this.showCancel = true;\r\n this.disableButton = true; // to disableSystemChange\r\n\r\n break;\r\n case 'translationStopped':\r\n this.translating = false;\r\n this.showProgress = false;\r\n break;\r\n case 'translated':\r\n // show restore button\r\n this.showRestore = true;\r\n this.showCancel = false;\r\n break;\r\n case 'untranslated':\r\n // enable system change, show translate button\r\n this.disableButton = false;\r\n this.showRestore = false;\r\n this.showCancel = false;\r\n this.showTranslateBtn = true;\r\n break;\r\n case 'progress':\r\n this.progressValue = event.data.progress;\r\n break;\r\n case 'error':\r\n // enable system change, show translate button\r\n this.disableButton = false;\r\n this.showRestore = false;\r\n this.showCancel = false;\r\n this.showTranslateBtn = true;\r\n if (console) {\r\n console.error(event.data.description);\r\n }\r\n\r\n break;\r\n case 'warning':\r\n if (console) {\r\n console.warn(event.data.description);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n }\r\n\r\n private sendMessage(message: any): void {\r\n if (this.debug) {\r\n // eslint-disable-next-line no-console\r\n console.info('Message sent to iframe:' + JSON.stringify(message));\r\n }\r\n\r\n window.postMessage(message, window.location.origin);\r\n }\r\n\r\n removeMessage(ix: number) {\r\n this.messages.splice(ix, 1);\r\n }\r\n\r\n swapLanguages() {\r\n this.tldSystem.swapSystemLanguages();\r\n\r\n const sys = this.tldSystem.getActiveSystemObj();\r\n this.sendMessage({ message: 'changeSystem', systemId: sys.id });\r\n }\r\n\r\n systemChange(systemId: string) {\r\n this.tldSystem.changeSystem(systemId);\r\n\r\n this.sendMessage({ message: 'changeSystem', systemId });\r\n }\r\n\r\n sourceLanguageChange(language: string) {\r\n this.tldSystem.changeLanguage(language, this.switcherOptions.target.code);\r\n\r\n const sys = this.tldSystem.getActiveSystemObj();\r\n this.sendMessage({ message: 'changeSystem', systemId: sys.id });\r\n }\r\n\r\n targetLanguageChange(language: string) {\r\n this.tldSystem.changeLanguage(this.switcherOptions.source.code, language);\r\n\r\n const sys = this.tldSystem.getActiveSystemObj();\r\n this.sendMessage({ message: 'changeSystem', systemId: sys.id });\r\n }\r\n\r\n translateButtonClick() {\r\n const selectedCollectionId = this.collectionService.selectedIdForTranslation();\r\n\r\n if (this.urlToTranslate != '') {\r\n this.sendMessage({\r\n message: 'loadUrl',\r\n url: this.urlToTranslate,\r\n translateAfterLoad: true,\r\n termCorpusId: selectedCollectionId\r\n });\r\n }\r\n }\r\n\r\n loadButtonClicked() {\r\n if (this.urlToTranslate != '') {\r\n this.sendMessage({\r\n message: 'loadUrl',\r\n url: this.urlToTranslate,\r\n translateAfterLoad: false\r\n });\r\n }\r\n }\r\n\r\n cancel(): void {\r\n this.sendMessage({ message: 'untranslate' });\r\n }\r\n\r\n restore(): void {\r\n this.sendMessage({ message: 'untranslate' });\r\n }\r\n\r\n private initFromConfig() {\r\n const coreConfig = this.configService.coreConfig;\r\n const webtranslateConfig = this.configService.webtranslateConfig;\r\n this.logoLocation = webtranslateConfig.logoLocation;\r\n this.debug = webtranslateConfig.debug;\r\n this.webLangAutodetect = webtranslateConfig.webLangAutodetect; // after page is loaded auto detect language and change active system\r\n this.allowSuggestions = webtranslateConfig.allowSuggestions;\r\n this.hidePopup = webtranslateConfig.hidePopup;\r\n this.translatePagePath = webtranslateConfig.translatePagePath;\r\n this.appId = coreConfig.appId;\r\n this.clientId = coreConfig.clientId;\r\n\r\n if (this.apiVersion == TranslationApiVersion.V1) {\r\n this.translateServiceUrl = this.configService.coreConfig.translationServiceUrl;\r\n } else if (this.apiVersion == TranslationApiVersion.V2) {\r\n this.translateServiceUrl = this.configService.apiV2Config.translationUrl;\r\n }\r\n }\r\n\r\n goToHome(): void {\r\n this.router.navigateByUrl('');\r\n this.sendMessage({ message: 'untranslate' });\r\n }\r\n\r\n addScript(url: string): void {\r\n const script = document.createElement('script');\r\n script.src = url;\r\n document.body.appendChild(script);\r\n }\r\n\r\n addConfigurationScrip(): void {\r\n const body = document.body as HTMLDivElement;\r\n const script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.innerHTML = '';\r\n script.innerHTML = `\r\n\r\n if (typeof (Tilde) === 'undefined')\r\n Tilde = {};\r\n\r\n Tilde.PageTranslateWidgetServerConfiguration = {\r\n translateServiceUrl: '${this.translateServiceUrl}',\r\n };\r\n\r\n Tilde.PageTranslateWidgetClientConfiguration = {\r\n TranslatePagePrefix: location.host + '/${this.translatePagePath}/',\r\n\r\n // Url of the place where CSS for translation widget is kept\r\n // if you wish to customize the standard letsmt style,\r\n // point this to your own css file\r\n cssLocation: './assets/webtranslate/widget.css',\r\n\r\n // client id for authorization\r\n clientId: \"${this.clientId}\",\r\n\r\n //api version\r\n apiVersion: \"${this.apiVersion}\", // 0 - V1; 1 - V2\r\n\r\n // enable or disable original text popup\r\n hidePopup: ${this.hidePopup},\r\n\r\n // id of the <div> where to draw widget\r\n widgetContainerId: \"PageTranslateWidget\",\r\n\r\n // available translation systems (target languages)\r\n translationSystems: [],\r\n\r\n // source language of the page that needs to be translated\r\n language: \"en\",\r\n\r\n // translate widget UI to language that is chosen in target language dropdown\r\n translateUItoChosenLanguage: false,\r\n\r\n // translate widget administrative part to language that is chosen in target language dropdown\r\n translateAdminUItoChosenLanguage: false,\r\n\r\n uiLanguage: \"${this.translate.currentLang}\",\r\n\r\n // if page was translated and you click on a link\r\n // that goes to another page in the same site,\r\n // then translate the newly opened page also\r\n translateAfterNavigation: true,\r\n\r\n // true - language list is shown as links\r\n // false - language list is shown as dropdown list and \"translate\" button\r\n languageListAsLinks: false,\r\n\r\n showHeader: false,\r\n\r\n showTranslationSuggestionAdminPage: false,\r\n\r\n // after translation show a warning that page is machine translated at the top of the page\r\n showMachineTranslationWarningAfterTranslation: false,\r\n\r\n // show all available translation systems instead of just the ones configured in this file\r\n showAllTranslationSystems: false,\r\n\r\n // add some pixels to dropdown padding to make it look more similar on different browsers\r\n browserSpecificDropdownPadding: false,\r\n\r\n // name of icon set: \"default\", \"white\", \"grey\", \"red\"\r\n iconSet: \"white\",\r\n\r\n // Possible values: 1, 2, 3. Text for link \"Restore original: Latvian\" may be made shorter or longer\r\n // useful to adapt to small or large screens\r\n restoreOriginalLinkLength: 2,\r\n\r\n // enable or disable \"Suggest translation\" link in popup that shows original text of translated sentence\r\n suggestTranslation: ${this.allowSuggestions},\r\n\r\n // show message box when error happens?\r\n showMessageBoxOnError: false,\r\n\r\n // application identifier\r\n appId: \"${this.appId}\",\r\n\r\n // server will only return systems that are meant for given appId\r\n filterSystemsByAppId: false,\r\n\r\n // show help link\r\n enableHelp: false,\r\n\r\n // show feedback link\r\n enableFeedback: false,\r\n\r\n // allowed system statuses, by default only \"running\"\r\n allowedSystemStatuses: \"running\",\r\n\r\n // passed to translation service for logging.\r\n // \"web-embedded\" for widget that is embedded in html page,\r\n // \"web\" for widget that can load and translate any website\r\n widget: \"web\"\r\n };\r\n `;\r\n body.appendChild(script);\r\n }\r\n}\r\n","<div id=\"widget\" class=\"tld-translate-web\">\r\n <div class=\"translate-container-header\">\r\n <a href=\"/\" id=\"home-link\" [attr.title]=\"'WEBTRANSLATE.BACK' | translate\">\r\n <img [src]=\"logoLocation\" alt=\"logo\">\r\n <lib-company-product *ngIf=\"company && product\" [company]=\"company\" [product]=\"product\"></lib-company-product>\r\n </a>\r\n <div [ngClass.lt-sm]=\"'tld-translate-mobile'\">\r\n\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" class=\"address-wrapper\">\r\n <div fxFlex class=\"back-btn\">\r\n\r\n <button (click)=\"goToHome()\" color=\"accent\" mat-flat-button [attr.title]=\"'WEBTRANSLATE.BACK' | translate\">\r\n <mat-icon inline=true>chevron_left</mat-icon>\r\n </button>\r\n\r\n </div>\r\n <div fxFlex class=\"\">\r\n <div data-text=\"address\" class=\"\">{{'WEBTRANSLATE.ADDRESS' | translate}}</div>\r\n </div>\r\n <div fxFlex=\"100%\" class=\"address-input\">\r\n <input type=\"url\" #url class=\"url w-100\" autofocus=\"autofocus\" [(ngModel)]=\"urlToTranslate\"\r\n (keyup.enter)=\"loadButtonClicked()\" />\r\n </div>\r\n <div fxFlex class=\"load-btn\">\r\n <button (click)=\"loadButtonClicked()\" color=\"accent\" mat-flat-button\r\n [attr.title]=\"'WEBTRANSLATE.LOAD_PAGE' | translate\" [disabled]=\"!urlToTranslate\">\r\n <mat-icon inline=true>search</mat-icon>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center\" class=\"tld-translate-switcher-wrapper\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" fxFlex>\r\n <tld-translate-switcher\r\n *ngIf=\"switcherOptions\"\r\n [isCollectionsActivated]=\"isCollectionsActivated\"\r\n [useParentWidth]=\"useParentWidth\"\r\n [disabled]=\"actionButtonDisabled\"\r\n [settings]=\"switcherOptions\"\r\n [showTranslateButton]=\"false\"\r\n [hideOnSmallScreens]=\"false\"\r\n [hideLangMenuLabels]=\"hideLangMenuLabels\"\r\n [maxDisplayedLanguages]=\"maxDisplayedLanguages\"\r\n [showDomainsWithLanguageName]=\"showDomainsWithLanguageName\"\r\n (onDomainChange)=\"systemChange($event)\"\r\n (onActionClick)=\"translateButtonClick()\"\r\n (onLanguageSwap)=\"swapLanguages()\"\r\n (onSourceLanguageChange)=\"sourceLanguageChange($event)\"\r\n (onTargetLanguageChange)=\"targetLanguageChange($event)\">\r\n </tld-translate-switcher>\r\n <div fxFlexAlign=\"center\" class=\"action-btn-wrapper\">\r\n <tld-translate-button\r\n *ngIf=\"showTranslateBtn\"\r\n class=\"switcher-translate-button\"\r\n [disabled]=\"actionButtonDisabled || !urlToTranslate\">\r\n </tld-translate-button>\r\n <button *ngIf=\"showCancel\" mat-flat-button color=\"accent\" (click)=\"cancel()\"\r\n class=\"cancel-button\">{{'WEBTRANSLATE.CANCEL' | translate}}</button>\r\n <button *ngIf=\"showRestore\" mat-flat-button color=\"accent\" (click)=\"restore()\"\r\n class=\"restore-button\">{{'WEBTRANSLATE.RESTORE' | translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div id=\"website-frame-container\">\r\n <mat-progress-bar *ngIf=\"showProgress\" color=\"accent\" [mode]=\"mode\" [value]=\"progressValue\">\r\n </mat-progress-bar>\r\n <lib-tld-notification-message [@openCloseAnimation] *ngFor=\"let message of messages; let ix = index\" [message]=\"message\"\r\n (closeClicked)=\"removeMessage(ix)\"></lib-tld-notification-message>\r\n <iframe id=\"letsmt-translate-page-iframe\" name=\"letsmtTranslatePageIframe\" src=\"about:blank\"\r\n [attr.sandbox]=\"sandbox\"></iframe>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TldTranslateWebsiteComponent } from './tld-translate-web/tld-translate-web.component';\r\nimport { TldTooltipModule } from '../tld-tooltip/tld-tooltip.module';\r\nimport { TldCommonModule } from '../tld-common/tld-common.module';\r\nimport { MaterialModule } from '../material.module';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CloseButtonModule, CompanyProductModule, NotificationMessageModule } from '@tilde-nlp/ngx-common';\r\n\r\n@NgModule({\r\n declarations: [TldTranslateWebsiteComponent],\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n TldTooltipModule,\r\n TldCommonModule,\r\n MaterialModule,\r\n FormsModule,\r\n NotificationMessageModule,\r\n CompanyProductModule,\r\n CloseButtonModule\r\n ],\r\n exports: [\r\n TldTranslateWebsiteComponent\r\n ]\r\n})\r\nexport class TldWebModule { }\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { TldTranslateConfigService } from '../modules/tld-common/services';\r\nimport { ITranslationFile } from '../modules/tld-document/models/translate-file.model';\r\nimport { TldTranslateFileService } from '../modules/tld-document/services/tld-translate-file.service';\r\n\r\n@Component({\r\n selector: 'tld-translate-body',\r\n templateUrl: './tld-translate-body.component.html',\r\n styleUrls: ['./tld-translate-body.component.scss']\r\n})\r\nexport class TldTranslateBodyComponent implements OnInit, OnDestroy {\r\n constructor(\r\n private readonly fileTranslateService: TldTranslateFileService,\r\n private readonly config: TldTranslateConfigService) {\r\n }\r\n\r\n get files(): ITranslationFile[] {\r\n return this.fileTranslateService?.translationFiles;\r\n };\r\n get file(): ITranslationFile {\r\n return this.fileTranslateService?.translationFiles?.[0];\r\n }\r\n get isFilePreviewLoaded() {\r\n return this.file?.isFilePreviewLoaded;\r\n }\r\n get filePreviewProgress() { return this.file?.filePreviewProgress };\r\n\r\n private _multipleFilesUploaded: boolean;\r\n\r\n get multipleFilesUploaded() {\r\n return this._multipleFilesUploaded;\r\n }\r\n\r\n set multipleFilesUploaded(value: boolean) {\r\n this._multipleFilesUploaded = value;\r\n this.fileTranslateService.multipleFileUploadActive = this._multipleFilesUploaded;\r\n }\r\n\r\n private readonly destroy$ = new Subject();\r\n\r\n ngOnInit(): void {\r\n this.fileTranslateService.onClear()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.multipleFilesUploaded = false;\r\n })\r\n }\r\n\r\n fileUpload(files: File[]) {\r\n this.multipleFilesUploaded = this.config.fileConfig.useMultipleFileUpload || files.length > 1 ? true : false;\r\n for (var i = 0; i < files.length; i++) {\r\n this.fileTranslateService.loadFilePreview(files[i]);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(null)\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<ng-container *ngIf=\"!multipleFilesUploaded\">\r\n <tld-translate-text *ngIf=\"!isFilePreviewLoaded\" (onFileChange)=\"fileUpload($event)\" [filePreviewProgress]=\"filePreviewProgress\"></tld-translate-text>\r\n <tld-translate-file *ngIf=\"isFilePreviewLoaded\" [translationFile]=\"file\"></tld-translate-file>\r\n</ng-container>\r\n<tld-translate-file-multiple [translationFiles]=\"files\" *ngIf=\"multipleFilesUploaded\"></tld-translate-file-multiple>\r\n","import { animate, style, transition, trigger } from '@angular/animations';\r\nimport { Component, EventEmitter, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { NotificationMessage, NotificationMessageType } from '@tilde-nlp/ngx-common';\r\nimport { Subject } from 'rxjs';\r\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\r\nimport { availableLanguages } from './i18n/available-languages';\r\nimport { AudioRecordService, TldVoiceInputService } from './modules/tld-audio/services';\r\nimport { TldTranslateButtonService } from './modules/tld-common/components/translate-button/tld-translate-button.service';\r\nimport { IAuthOptions, languageMenuVersion } from './modules/tld-common/models';\r\nimport { IconService, TldAlertService, TldTranslateConfigService } from './modules/tld-common/services';\r\nimport { WtwLinkParamsService } from './modules/tld-common/services/wtw-link-params.service';\r\nimport { TldTranslateFileService } from './modules/tld-document/services/tld-translate-file.service';\r\nimport { TldTranslateTextService } from './modules/tld-text/services/tld-translate-text.service';\r\nimport { IActiveData } from './modules/tld-tooltip/models/active-data.model';\r\nimport { ISwitcherTranslationOptions } from './modules/tld-tooltip/models/switcher-options.model';\r\nimport { TldSystemService } from './modules/tld-tooltip/services/tld-system.service';\r\nimport { OpenedMenu } from './modules/tld-tooltip/translation-system-picker/models/opened-menu';\r\nimport { TranslationSystemPickerService } from './modules/tld-tooltip/translation-system-picker/services/translation-system-picker.service';\r\nimport { TldTranslateBodyComponent } from './tld-translate-body/tld-translate-body.component';\r\n\r\n@Component({\r\n selector: 'tld-translate',\r\n templateUrl: './tld-translate.component.html',\r\n styleUrls: ['./tld-translate.component.scss'],\r\n animations: [\r\n trigger('openCloseAnimation', [\r\n\r\n transition(':enter', [\r\n style({ height: 0 }),\r\n animate(500)\r\n ]),\r\n\r\n transition(':leave',\r\n animate(500, style({ height: 0 })))\r\n ])\r\n ]\r\n})\r\nexport class TldTranslateComponent implements OnInit, OnDestroy {\r\n @Output() onError: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @ViewChild(TldTranslateBodyComponent) tldTranslateBody: TldTranslateBodyComponent;\r\n\r\n activeSystemObj: IActiveData;\r\n messages: NotificationMessage[] = [];\r\n\r\n switcherOptions: ISwitcherTranslationOptions;\r\n\r\n get actionButtonLoader() { return this.translateTextService.isTranslating; }\r\n\r\n get showDomainsWithLanguageName(): boolean {\r\n return this.configService.coreConfig.showDomainsWithLanguageName;\r\n }\r\n\r\n get maxDisplayedLanguages(): number {\r\n return this.configService.coreConfig.maxDisplayedLanguages;\r\n }\r\n\r\n get showNoSystemsError() {\r\n return this.tldSystem.noSystemsError;\r\n }\r\n readonly noSystemsError: NotificationMessage = { body: \"TLD_TRANSLATE.ERROR_NO_SYSTEMS_LOADED\", type: NotificationMessageType.ERROR, hideClose: true };\r\n get actionButtonDisabled() {\r\n return this.translateFileService.disableTranslateButton\r\n || this.audioService.isRecording\r\n || this.voiceProcessingService.isProcessing\r\n || this.translateTextService.isDictating\r\n }\r\n\r\n get showTranslateButton() {\r\n return !this.translateFileService.multipleFileUploadActive;\r\n }\r\n\r\n // this param is necessary to remove max height if multiple file component is active, since there shouldn't be max height in that case.\r\n get isMultipleFilesActive() {\r\n return this.tldTranslateBody?.multipleFilesUploaded;\r\n }\r\n\r\n get hideLangMenuLabels() {\r\n return this.configService?.coreConfig.hideLangMenuLabels;\r\n }\r\n\r\n get isCollectionsActivated() {\r\n return this.configService?.termConfig?.isCollectionsActivated;\r\n }\r\n\r\n get sourceLanguage() {\r\n return this.activeSystemObj?.sourceLang.lang;\r\n }\r\n\r\n get targetLanguage() {\r\n return this.activeSystemObj?.targetLang.lang;\r\n }\r\n\r\n get systemPickerDropdownVisible() {\r\n return this.systemPickerService.openedMenu !== OpenedMenu.NONE;\r\n }\r\n\r\n get languageMenuVersion() {\r\n return this.configService.coreConfig?.languageMenuVersion;\r\n }\r\n\r\n readonly languageMenuV1 = languageMenuVersion.V1;\r\n readonly languageMenuV2 = languageMenuVersion.V2;\r\n\r\n private readonly destroy$ = new Subject();\r\n\r\n constructor(private readonly translate: TranslateService,\r\n private readonly translateFileService: TldTranslateFileService,\r\n private readonly translateTextService: TldTranslateTextService,\r\n private readonly configService: TldTranslateConfigService,\r\n private readonly alerts: TldAlertService,\r\n private readonly translateButtonService: TldTranslateButtonService,\r\n private readonly tldSystem: TldSystemService,\r\n private readonly audioService: AudioRecordService,\r\n private readonly voiceProcessingService: TldVoiceInputService,\r\n private readonly wtwQueryService: WtwLinkParamsService,\r\n private readonly systemPickerService: TranslationSystemPickerService,\r\n iconService: IconService\r\n ) {\r\n iconService.registerIcons();\r\n }\r\n\r\n changeAuth(authOptions: IAuthOptions) {\r\n this.configService.coreConfig.isAuth = authOptions.isAuth;\r\n this.configService.termConfig.canCreateCollection = authOptions.canCreateTermCollection;\r\n this.translateFileService.clear();\r\n this.initializeWidget();\r\n }\r\n\r\n initializeWidget(): void {\r\n this.tldSystem.init(this.tldSystem.getLastUsedSystem() ?? this.configService.coreConfig.defaultSystemId);\r\n }\r\n\r\n ngOnInit() {\r\n this.removeMessagesOnClear();\r\n\r\n if (this.configService.coreConfig.debug) {\r\n for (const key in availableLanguages) {\r\n this.translate.setTranslation(key, availableLanguages[key], true);\r\n }\r\n }\r\n\r\n this.initializeWidget();\r\n\r\n this.tldSystem.getActiveData().pipe(\r\n distinctUntilChanged(),\r\n takeUntil(this.destroy$))\r\n .subscribe((val: IActiveData) => {\r\n this.activeSystemObj = val;\r\n if (!val) {\r\n return;\r\n }\r\n this.switcherOptions = {\r\n domains: val.domains,\r\n source: { code: val.sourceLang.lang, systemId: val.systemId },\r\n sourceLanguageList: val.sourceLangList,\r\n systemId: val.systemId,\r\n swapActive: val.swapLangActive,\r\n target: { code: val.targetLang.lang, systemId: val.systemId },\r\n targetLanguageList: val.targetLangList,\r\n vendors: val.vendors\r\n };\r\n });\r\n\r\n this.translateTextService.sourceChange.pipe(\r\n takeUntil(this.destroy$))\r\n .subscribe((event) => {\r\n if (event.swapSystems) {\r\n this.swapLanguages();\r\n }\r\n });\r\n\r\n this.translateButtonService.getActionClick().pipe(\r\n takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.translateButtonClick();\r\n });\r\n\r\n this.wtwQueryService.query().pipe(\r\n takeUntil(this.destroy$))\r\n .subscribe((query: string) => {\r\n this.messages.forEach(msg => {\r\n msg.localizationParams.queryString = query\r\n });\r\n });\r\n\r\n this.alerts.getMessages().pipe(\r\n takeUntil(this.destroy$))\r\n .subscribe((message: NotificationMessage) => {\r\n message.localizationParams.queryString = this.wtwQueryService.defaultQueryString;\r\n if (message.type === NotificationMessageType.ERROR) {\r\n this.onError.emit(message.error);\r\n }\r\n // pushing only \"one of\" message in array, so screen is not spammed with messages\r\n const existingMessage = this.messages.find(msg => msg.title === message.title\r\n && msg.type === message.type\r\n && message.body === msg.body\r\n && JSON.stringify(msg.localizationParams) === JSON.stringify(message.localizationParams));\r\n if (!existingMessage) {\r\n this.messages.push(message);\r\n }\r\n });\r\n\r\n if (this.configService.coreConfig.translateAppName) {\r\n this.translate.get(\"APP_NAME\").pipe(\r\n takeUntil(this.destroy$))\r\n .subscribe((text: string) => {\r\n this.configService.coreConfig.appName = text;\r\n });\r\n }\r\n }\r\n\r\n removeMessage(ix: number) {\r\n this.messages.splice(ix, 1);\r\n }\r\n\r\n swapLanguages() {\r\n this.tldSystem.swapSystemLanguages();\r\n }\r\n\r\n sourceLanguageChange(language: string) {\r\n this.tldSystem.changeLanguage(language, this.switcherOptions.target.code);\r\n }\r\n\r\n systemChange(systemId: string) {\r\n this.tldSystem.changeSystem(systemId);\r\n }\r\n\r\n targetLanguageChange(language: string) {\r\n this.tldSystem.changeLanguage(this.switcherOptions.source.code, language);\r\n }\r\n\r\n translateButtonClick() {\r\n if (this.translateFileService.translationFiles?.length > 0) {\r\n this.translateFileService.translateButtonClick(this.activeSystemObj);\r\n }\r\n else {\r\n this.translateTextService.onTranslateButtonClick();\r\n }\r\n }\r\n\r\n removeMessagesOnClear() {\r\n this.translateFileService.onClear()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.messages = [];\r\n })\r\n\r\n this.translateTextService.onClear()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.messages = [];\r\n })\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(null)\r\n this.destroy$.complete();\r\n }\r\n\r\n}\r\n","<div fxLayout=\"column\" class=\"h-100 tld-translate\" *ngIf=\"!showNoSystemsError\"\r\n [ngClass.lt-md]=\"'tld-translate-tablet tld-default-border-bottom'\"\r\n [ngClass.lt-sm]=\"'tld-translate-mobile tld-default-border-bottom'\"\r\n [class.tld-translate-multiple-files-active]=\"isMultipleFilesActive\">\r\n <div class=\"tld-translate-wrapper tld-default-border\" fxLayout=\"column\" fxFlex>\r\n <div class=\"tld-translate-switcher-wrapper tld-default-border-bottom\">\r\n <tld-translate-switcher *ngIf=\"switcherOptions && languageMenuVersion === languageMenuV1\"\r\n [disabled]=\"actionButtonDisabled\" [isCollectionsActivated]=\"isCollectionsActivated\" [settings]=\"switcherOptions\"\r\n [maxDisplayedLanguages]=\"maxDisplayedLanguages\" [showDomainsWithLanguageName]=\"showDomainsWithLanguageName\"\r\n [buttonDisabled]=\"actionButtonDisabled\" [hideLangMenuLabels]=\"hideLangMenuLabels\"\r\n (onDomainChange)=\"systemChange($event)\" (onActionClick)=\"translateButtonClick()\"\r\n (onLanguageSwap)=\"swapLanguages()\" (onSourceLanguageChange)=\"sourceLanguageChange($event)\"\r\n (onTargetLanguageChange)=\"targetLanguageChange($event)\" [loader]=\"actionButtonLoader\" [showTranslateButton]=\"showTranslateButton\">\r\n </tld-translate-switcher>\r\n <tld-translation-system-picker *ngIf=\"languageMenuVersion===languageMenuV2\"\r\n [isCollectionsActivated]=\"isCollectionsActivated\"></tld-translation-system-picker>\r\n </div>\r\n <lib-tld-notification-message [inline]=\"true\" *ngFor=\"let message of messages; let ix = index\" [message]=\"message\"\r\n (closeClicked)=\"removeMessage(ix)\">\r\n </lib-tld-notification-message>\r\n <div fxFlex style=\"position: relative;\">\r\n <tld-translate-body fxFlex fxLayoutAlign=\"column\" [attr.source-language]=\"sourceLanguage\"\r\n [attr.target-language]=\"targetLanguage\"></tld-translate-body>\r\n <tld-translation-system-picker-dropdown [ngClass.xs]=\"'mobile'\" *ngIf=\"systemPickerDropdownVisible\">\r\n </tld-translation-system-picker-dropdown>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<lib-tld-notification-message *ngIf=\"showNoSystemsError\" [message]=\"noSystemsError\">\r\n</lib-tld-notification-message>\r\n","export enum FileV2Category{\r\n SOURCE = \"SOURCE\",\r\n TRANSLATED = \"TRANSLATED\"\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { Common, FileTranslationSubstatus, IDownloadFileParams, IFileApiService, IFileMeta, IGetFileStatusParams, IGetFileTranslationStatusResponse, IRemoveFileParams, ISourceFilePreviewResponse, IStartFileTranslationParams, ITranslatedDocumentPreviewParams } from '../../../tld-common/models';\r\nimport { TldTranslateConfigService } from '../../../tld-common/services';\r\nimport { ITranslationFile } from '../../models/translate-file.model';\r\nimport { TranslationStatuss } from '../../models/translation-statuss.model';\r\nimport { FileV2Category } from './models/file-category-v2.model';\r\nimport { IFileTranslationStatusV2Response } from './models/file-translation-status-v2-response.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FileApiV2Service implements IFileApiService {\r\n\r\n private get url() {\r\n return this.config.apiV2Config.fileTranslationUrl;\r\n }\r\n\r\n constructor(private readonly http: HttpClient,\r\n private readonly config: TldTranslateConfigService) { }\r\n\r\n\r\n translatedDocumentPreview(properties: ITranslatedDocumentPreviewParams) {\r\n properties;\r\n return of({ success: true });\r\n }\r\n\r\n download(properties: IDownloadFileParams) {\r\n const headers = Common.GetApiV2AuthHeaders(this.config);\r\n return this.http.get(`${this.url}/${properties.id}/${properties.fileMeta.id}`, { responseType: \"blob\", headers });\r\n }\r\n\r\n startTranslation(properties: IStartFileTranslationParams): Observable<string> {\r\n const formData: FormData = new FormData();\r\n formData.append(\"file\", properties.file.file);\r\n formData.append(\"fileName\", properties.file.originalFileName);\r\n formData.append(\"sourceLanguage\", properties.system.sourceLanguage);\r\n formData.append(\"targetLanguage\", properties.system.targetLanguage);\r\n\r\n if (properties.system.domain) {\r\n formData.append(\"domain\", properties.system.domain);\r\n }\r\n\r\n const headers = Common.GetApiV2AuthHeaders(this.config);\r\n\r\n\r\n return this.http.post<IFileTranslationStatusV2Response>(this.url, formData, { headers }).pipe(\r\n map(response => response.id)\r\n );\r\n }\r\n\r\n remove(properties: IRemoveFileParams): Observable<any> {\r\n if (properties.file.translationStartedOnServer) {\r\n const headers = Common.GetApiV2AuthHeaders(this.config);\r\n return this.http.delete(`${this.url}/${properties.file.id}`, { headers });\r\n }\r\n return of();\r\n }\r\n\r\n sourceFilePreview(file: ITranslationFile): Observable<ISourceFilePreviewResponse> {\r\n const extension = file.originalExtension.toLowerCase();\r\n const sourcePreview = `<div id=\"docPreviewContent\" class=\"no-preview type-${extension}\"><div class=\"type\">${extension.toUpperCase()}</div></div>`;\r\n return of({\r\n isFilePreviewLoaded: true,\r\n sourcePreviewHasHtml: false,\r\n tmpName: file.originalFileName,\r\n name: file.originalFileName,\r\n sourcePreview: sourcePreview\r\n })\r\n }\r\n\r\n getStatus(properties: IGetFileStatusParams): Observable<IGetFileTranslationStatusResponse> {\r\n const headers = Common.GetApiV2AuthHeaders(this.config);\r\n\r\n return this.http.get<IFileTranslationStatusV2Response>(`${this.url}/${properties.file.id}`, { headers }).pipe(\r\n map((response) => {\r\n const extensions: IFileMeta[] = [];\r\n response.files.forEach((file) => {\r\n if (file.category.toUpperCase() === FileV2Category.TRANSLATED) {\r\n const fileName = `${properties.file.originalFileName.slice(0, properties.file.originalFileName.lastIndexOf(\".\"))}${file.extension}`;\r\n extensions.push({ extension: file.extension, fileName: fileName, id: file.id });\r\n }\r\n })\r\n const returnValue: IGetFileTranslationStatusResponse = {\r\n name: response.fileName,\r\n progress: Math.floor(response.translatedSegments / response.segments * 100),\r\n translationStatuss: response.status.toUpperCase() as TranslationStatuss,\r\n sourceDownloadAvailable: false,\r\n extensions: extensions\r\n };\r\n\r\n if (response.substatus) {\r\n returnValue.substatus = Common.pascalCaseToEnum(response.substatus) as FileTranslationSubstatus;\r\n }\r\n return returnValue;\r\n })\r\n );\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { TranslationApiVersion } from \"../modules/tld-common/models\";\r\nimport { TldAlertService, TldTranslateConfigService } from \"../modules/tld-common/services\";\r\nimport { FileApiV2Service } from \"../modules/tld-document/services/api-v2/file-api-v2.service\";\r\nimport { TldTranslateFileApiService } from \"../modules/tld-document/services/api/file-api.service\";\r\nimport { TldTermCollectionsService } from \"../modules/tld-term/services\";\r\n\r\nexport function fileApiServiceFactory(version: TranslationApiVersion,\r\n config: TldTranslateConfigService,\r\n http: HttpClient,\r\n collectionsService: TldTermCollectionsService, alerts: TldAlertService) {\r\n if (version === TranslationApiVersion.V2) {\r\n return new FileApiV2Service(http, config);\r\n }\r\n else {\r\n return new TldTranslateFileApiService(http, config, collectionsService, alerts);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { TldTranslateConfigService } from '../../../tld-common/services';\r\nimport { System } from '../../../tld-common/models/services/system/system.model';\r\nimport { IGetLanguageDirection } from './models/get-langauge-direction';\r\nimport { Common, ITldSystemApiService, TranslationApiVersion } from '../../../tld-common/models';\r\nimport { ILanguageDirection } from './models/language-direction.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TldSystemApiV2Service implements ITldSystemApiService {\r\n\r\n constructor(private readonly config: TldTranslateConfigService,\r\n private readonly http: HttpClient) { }\r\n\r\n getSystemList(): Observable<System[]> {\r\n const headers = Common.GetApiV2AuthHeaders(this.config);\r\n return this.http.get<IGetLanguageDirection>(this.config?.apiV2Config?.systemListUrl, { headers }).pipe(\r\n map((response) => {\r\n const systems: System[] = [];\r\n const uniqueDirections: string[] = [];\r\n const autoDomainSystems: System[] = [];\r\n response.languageDirections.forEach(\r\n (system) => {\r\n const languageDirections = `${system.srcLang}-${system.trgLang}`;\r\n const newSystem: System = {\r\n domain: system.domain,\r\n id: system.id,\r\n sourceLanguage: system.srcLang,\r\n targetLanguage: system.trgLang,\r\n translationApiVersion: TranslationApiVersion.V2,\r\n vendor: system.vendor\r\n }\r\n systems.push(newSystem);\r\n\r\n if (this.config.apiV2Config?.autoDomainDetection && !uniqueDirections.includes(languageDirections)) {\r\n uniqueDirections.push(languageDirections);\r\n const autoDomainSystem = this.createSystemFromLanguageDirection(system);\r\n autoDomainSystem.domain = null;\r\n autoDomainSystem.id = languageDirections;\r\n autoDomainSystems.push(autoDomainSystem);\r\n }\r\n }\r\n );\r\n return autoDomainSystems.concat(systems);\r\n })\r\n );\r\n }\r\n\r\n private createSystemFromLanguageDirection(direction: ILanguageDirection) {\r\n const systemBase: System = {\r\n sourceLanguage: direction.srcLang,\r\n targetLanguage: direction.trgLang,\r\n domain: direction.domain,\r\n translationApiVersion: TranslationApiVersion.V2,\r\n id: `${direction.srcLang}-${direction.trgLang}-${direction.domain}`,\r\n vendor: direction.vendor\r\n }\r\n\r\n return systemBase;\r\n }\r\n}\r\n","export enum SystemMetadataKey{\r\n VENDOR = \"vendor\",\r\n STATUS = \"status\",\r\n INCLUDE_TERMINOLOGY_WORKFLOW = \"include-terminology-workflow\"\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { ITldSystemApiService, TranslationApiVersion } from '../../../tld-common/models';\r\nimport { Common } from '../../../tld-common/models/common';\r\nimport { System } from '../../../tld-common/models/services/system/system.model';\r\nimport { TldTranslateConfigService } from '../../../tld-common/services';\r\nimport { SystemMetadataKey } from '../../models/system-metadata-keys.model';\r\nimport { IApiSystem } from './models/system.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TldSystemApiService implements ITldSystemApiService {\r\n\r\n constructor(private readonly config: TldTranslateConfigService,\r\n private readonly http: HttpClient) { }\r\n\r\n getSystemList(): Observable<System[]> {\r\n const headers = Common.getAuthHeaders(this.config);\r\n const params = {\r\n appID: this.config.coreConfig.appId,\r\n };\r\n\r\n return this.http.get<{ System: IApiSystem[] }>(this.config?.coreConfig?.systemListUrl, { headers, params }).pipe(\r\n map((response: { System: IApiSystem[] }) => {\r\n const systems: System[] = [];\r\n response.System.forEach(element => {\r\n const system: System = {\r\n sourceLanguage: element.SourceLanguage.Code,\r\n targetLanguage: element.TargetLanguage.Code,\r\n id: element.ID,\r\n domain: element.Domain,\r\n vendor: this.findMetaDataValue(element, SystemMetadataKey.VENDOR) ?? this.config.coreConfig.defaultVendor,\r\n includesTerminology: this.findMetaDataValue(element, SystemMetadataKey.INCLUDE_TERMINOLOGY_WORKFLOW),\r\n status: this.findMetaDataValue(element, SystemMetadataKey.STATUS),\r\n translationApiVersion: TranslationApiVersion.V1,\r\n title: element.Title.Text\r\n };\r\n if (this.config.coreConfig.allowedSystemStatuses.indexOf(system.status) !== -1) {\r\n systems.push(system);\r\n }\r\n });\r\n return systems;\r\n })\r\n );\r\n }\r\n\r\n private findMetaDataValue(system: IApiSystem, metadataKey: SystemMetadataKey): any {\r\n for (const metadata of system.Metadata) {\r\n if (metadata.Key === metadataKey) {\r\n return metadata.Value;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { TranslationApiVersion } from \"../modules/tld-common/models/core\";\r\nimport { TldTranslateConfigService } from \"../modules/tld-common/services/tld-translate-config.service\";\r\nimport { TldSystemApiV2Service } from \"../modules/tld-tooltip/services/api-v2/tld-system-api-v2.service\";\r\nimport { TldSystemApiService } from \"../modules/tld-tooltip/services/api/tld-system-api.service\";\r\n\r\nexport function systemServiceFactory(version:TranslationApiVersion,config: TldTranslateConfigService,\r\n http: HttpClient){\r\n if(version === TranslationApiVersion.V2){\r\n return new TldSystemApiV2Service(config, http);\r\n }\r\n else{\r\n return new TldSystemApiService(config, http);\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { Common, ITldTranslateTextApiService, ITranslateParagraphRequestParams } from '../../../tld-common/models';\r\nimport { TldTranslateConfigService } from '../../../tld-common/services';\r\nimport { ICheckGrammarResponseV2 } from '../../models/check-grammar-response-v2.model';\r\nimport { HighlightParams } from '../../models/highlight-params.model';\r\nimport { HighlightTreeType } from '../../models/highlight-tree-type.model';\r\nimport { IHighlightTree } from '../../models/highlight-tree.model';\r\nimport { ITranslateParagraphParams } from '../../models/translate-paragraph-params.model';\r\nimport { ITranslateParagraphResponseV2 } from '../../models/translate-paragraph-response-v2.model';\r\nimport { ITranslateParagraphResponse } from '../../models/translate-paragraph-response.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TldTranslateTextApiV2Service implements ITldTranslateTextApiService {\r\n\r\n constructor(private readonly http: HttpClient,\r\n private readonly config: TldTranslateConfigService) { }\r\n\r\n translateParagraph(params: ITranslateParagraphRequestParams): Observable<ITranslateParagraphResponse> {\r\n const requestParams: ITranslateParagraphParams = {\r\n domain: params.system.domain,\r\n srcLang: params.system.sourceLanguage,\r\n text: [params.text],\r\n trgLang: params.system.targetLanguage\r\n };\r\n const sourceText = params.text;\r\n const sourceTree: IHighlightTree = {\r\n text: Common.escapeHtmlString(sourceText),\r\n paragraphIx: params.paragraphIx,\r\n type: HighlightTreeType.PARAGRAPH,\r\n root: null,\r\n originalText: sourceText\r\n };\r\n const headers = Common.GetApiV2AuthHeaders(this.config);\r\n\r\n if (this.config.textConfig.checkSourceGrammar && this.config.textConfig.grammarCheckLanguages.includes(params.system.sourceLanguage)) {\r\n this.checkAndAttachGrammarToTree(params.text, params.system.sourceLanguage, sourceTree);\r\n }\r\n\r\n return this.http.post<ITranslateParagraphResponseV2>(this.config.apiV2Config.translationUrl, requestParams, { headers }).pipe(\r\n map((translationResponse) => {\r\n const systemId = `${requestParams.srcLang}-${requestParams.trgLang}-${translationResponse.domain}`;\r\n const originalTranslation = translationResponse.translations[0].translation;\r\n const targetTree: IHighlightTree = {\r\n text: Common.escapeHtmlString(originalTranslation),\r\n paragraphIx: params.paragraphIx,\r\n type: HighlightTreeType.PARAGRAPH,\r\n root: null,\r\n originalText: originalTranslation\r\n };\r\n return {\r\n sourceTree,\r\n targetTree,\r\n systemId\r\n };\r\n })\r\n );\r\n }\r\n\r\n checkGrammar(text: string, language: string): Observable<ICheckGrammarResponseV2> {\r\n return this.http.post<ICheckGrammarResponseV2>(this.config.apiV2Config.grammarCheckUrl, { text, language });\r\n }\r\n\r\n private checkAndAttachGrammarToTree(text: string, language: string, tree: IHighlightTree) {\r\n this.checkGrammar(text, language)\r\n .pipe(\r\n catchError((error) => {\r\n console.error(error);\r\n return of(null)\r\n })\r\n )\r\n .subscribe((grammarCheckResponse) => {\r\n if (grammarCheckResponse?.corrections?.length > 0) {\r\n tree.children = [];\r\n let lastIx = 0;\r\n grammarCheckResponse.corrections.forEach((correction) => {\r\n const wordStartIx = correction.span.start;\r\n const wordEndIx = correction.span.end;\r\n if (lastIx < wordStartIx) {\r\n const originalText = text.slice(lastIx, wordStartIx);\r\n const escaped = Common.escapeHtmlString(originalText);\r\n tree.children.push({ text: escaped, originalText, type: HighlightTreeType.OTHER, root: tree });\r\n }\r\n\r\n const originalText = text.slice(wordStartIx, wordEndIx);\r\n const child: IHighlightTree = {\r\n text: Common.escapeHtmlString(text.slice(wordStartIx, wordEndIx)),\r\n class: `${HighlightParams.invalidPhraseClass}`,\r\n grammarMeta: {\r\n startIx: wordStartIx,\r\n endIx: wordEndIx,\r\n replacements: correction.replacements.map(el => el.value)\r\n },\r\n type: HighlightTreeType.OTHER,\r\n root: tree,\r\n originalText\r\n }\r\n tree.children.push(child)\r\n lastIx = wordEndIx;\r\n });\r\n if (lastIx != text.length - 1) {\r\n const originalText = text.slice(lastIx, text.length - 1);\r\n tree.children.push(\r\n {\r\n text: Common.escapeHtmlString(originalText),\r\n type: HighlightTreeType.OTHER,\r\n root: tree,\r\n originalText\r\n })\r\n }\r\n tree.children.push()\r\n }\r\n });\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { Common, ITldTranslateTextApiService, ITranslateParagraphRequestParams } from '../../../tld-common/models';\r\nimport { TldAlertService, TldTranslateConfigService } from '../../../tld-common/services';\r\nimport { TldTermCollectionsService } from '../../../tld-term/services';\r\nimport { IGetSentenceV1ResponseModel } from '../../models/get-sentence-v1-response.model';\r\nimport { HighlightParams } from '../../models/highlight-params.model';\r\nimport { HighlightTreeType } from '../../models/highlight-tree-type.model';\r\nimport { IHighlightTree } from '../../models/highlight-tree.model';\r\nimport { ITranslateParagraphResponseV1 } from '../../models/translate-paragraph-response-v1.model';\r\nimport { ITranslateParagraphResponse } from '../../models/translate-paragraph-response.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TldTranslateTextApiService implements ITldTranslateTextApiService {\r\n\r\n constructor(private readonly collectionService: TldTermCollectionsService,\r\n private readonly http: HttpClient,\r\n private readonly config: TldTranslateConfigService,\r\n private readonly alerts: TldAlertService) { }\r\n\r\n updateTranslation(options: string, systemID: string, text: string, translation: string) {\r\n const url = this.config.textConfig.updateTranslationUrl;\r\n const headers = Common.getAuthHeaders(this.config);\r\n const params = {\r\n appID: this.config.coreConfig.appId,\r\n options,\r\n systemID,\r\n text,\r\n translation\r\n }\r\n return this.http.post(url, params, { headers });\r\n }\r\n\r\n dictionaryTranslation(text: string, srcCode: string, trgCode: string) {\r\n const authHeaders = Common.getAuthHeaders(this.config);\r\n // TODO. Create type for params.\r\n const params: any = {\r\n word: text,\r\n sourceLanguage: srcCode,\r\n targetLanguage: trgCode\r\n };\r\n\r\n return this.http.get(this.config.textConfig.dictionaryUrl, { headers: authHeaders, params: params })\r\n }\r\n\r\n translateParagraph(requestParams: ITranslateParagraphRequestParams): Observable<ITranslateParagraphResponse> {\r\n const headers = Common.getAuthHeaders(this.config);\r\n // TODO. Create type for params.\r\n const params: any = {\r\n appID: this.config.coreConfig.appId,\r\n options: \"widget=text,alignment,markSentences\",\r\n systemID: requestParams.system.id,\r\n text: requestParams.text,\r\n };\r\n\r\n const selectedCollectionId = this.collectionService.selectedIdForTranslation();\r\n if (selectedCollectionId) {\r\n params.options += `,termCorpusId=${selectedCollectionId}`;\r\n }\r\n\r\n return this.http.get<ITranslateParagraphResponseV1>(this.config?.textConfig?.translationUrl, { headers: headers, params: params }).pipe(\r\n map((response: ITranslateParagraphResponseV1) => {\r\n if (response.ErrorMessage) {\r\n this.alerts.unhandeledError(response.ErrorMessage);\r\n throw response.ErrorMessage;\r\n }\r\n const converted = this.convertParagraphResponse(requestParams, response);\r\n return converted;\r\n })\r\n );\r\n }\r\n\r\n\r\n private convertParagraphResponse(request: ITranslateParagraphRequestParams, response: ITranslateParagraphResponseV1): ITranslateParagraphResponse {\r\n if (this.config.textConfig.highlight) {\r\n return this.createHighlightTrees(request.text, response, request.paragraphIx);\r\n }\r\n else {\r\n return {\r\n sourceTree: { text: request.text, paragraphIx: request.paragraphIx, type: HighlightTreeType.PARAGRAPH, root: null, originalText: request.text },\r\n targetTree: { text: response.translation, paragraphIx: request.paragraphIx, type: HighlightTreeType.PARAGRAPH, root: null, originalText: response.translation }\r\n };\r\n }\r\n }\r\n\r\n private createHighlightTrees(sourceText: string, response: ITranslateParagraphResponseV1, paragraphIx: number): ITranslateParagraphResponse {\r\n const targetTree = this.getSentence(response.translation, response.translationSentenceRanges, response.targetWordRanges, paragraphIx);\r\n const sourceTree = this.getSentence(sourceText, response.originalSentenceRanges, response.sourceWordRanges, paragraphIx);\r\n this.findSiblings(response.wordAlignment, sourceTree.words, targetTree.words);\r\n return { sourceTree: sourceTree.tree, targetTree: targetTree.tree };\r\n }\r\n\r\n private getSentence(text: string, sentenceRanges: number[][], wordRanges: number[][], paragraphIx: number): IGetSentenceV1ResponseModel {\r\n const tree: IHighlightTree = { text: text, children: [], paragraphIx, type: HighlightTreeType.PARAGRAPH, root: null, originalText: text };\r\n const words: IHighlightTree[] = [];\r\n let wordRangeIx = -1;\r\n let lastProcessedCharIx = 0;\r\n\r\n sentenceRanges.forEach((sentenceRange, sentenceIx) => {\r\n const sentenceString = this.getSentenceFromRange(sentenceRange, text);\r\n tree.children[sentenceIx] = {\r\n text: sentenceString, children: [],\r\n class: `${HighlightParams.sentenceClass} ${HighlightParams.sentenceClass}-${paragraphIx}-${sentenceIx}`,\r\n elementId: sentenceIx.toString(),\r\n type: HighlightTreeType.SENTENCE,\r\n root: tree,\r\n originalText: sentenceString\r\n };\r\n\r\n const sentenceStartIx = sentenceRange[0];\r\n const sentenceEndIx = sentenceStartIx + sentenceRange[1];\r\n\r\n let multipleWordWrapper: IHighlightTree;\r\n for (let wordIx = wordRangeIx + 1; wordIx < wordRanges.length; wordIx++) {\r\n const wordStartIx = wordRanges[wordIx][0];\r\n const wordEndIx = wordRanges[wordIx][1];\r\n const nextWordStartIx = wordRanges[wordIx + 1]?.[0];\r\n\r\n if (wordStartIx >= sentenceStartIx && wordEndIx <= sentenceEndIx) {\r\n wordRangeIx = wordIx;\r\n if (lastProcessedCharIx < wordStartIx) {\r\n // words are not together anymore.\r\n multipleWordWrapper = null;\r\n const originalText = text.slice(lastProcessedCharIx, wordStartIx);\r\n // not a word.\r\n const escaped = Common.escapeHtmlString(originalText);\r\n tree.children[sentenceIx].children.push({\r\n text: escaped,\r\n type: HighlightTreeType.OTHER,\r\n root: tree,\r\n originalText\r\n });\r\n lastProcessedCharIx = wordStartIx;\r\n }\r\n const originalText = text.slice(wordStartIx, wordEndIx);\r\n const escaped = Common.escapeHtmlString(originalText);\r\n const elementId = `${paragraphIx}-${sentenceIx}-${wordIx}`;\r\n const word: IHighlightTree = {\r\n text: escaped,\r\n class: `${HighlightParams.wordClass} ${HighlightParams.wordClass}-${elementId}`,\r\n elementId: elementId,\r\n type: originalText === \"-\" ? HighlightTreeType.HYPEN : HighlightTreeType.WORD,\r\n root: tree,\r\n originalText\r\n };\r\n\r\n if (word.type === HighlightTreeType.HYPEN) {\r\n multipleWordWrapper = null;\r\n }\r\n else if (wordEndIx === nextWordStartIx) {\r\n if (!multipleWordWrapper) {\r\n multipleWordWrapper = {\r\n originalText: \"\",\r\n root: tree,\r\n text: \"\",\r\n type: HighlightTreeType.WORD_WRAPPER,\r\n children: [],\r\n class: HighlightParams.multipleWordWrapper\r\n }\r\n tree.children[sentenceIx].children.push(multipleWordWrapper);\r\n }\r\n }\r\n if (multipleWordWrapper) {\r\n multipleWordWrapper.originalText += originalText;\r\n multipleWordWrapper.text += escaped;\r\n multipleWordWrapper.children.push(word);\r\n }\r\n else {\r\n tree.children[sentenceIx].children.push(word);\r\n }\r\n words.push(word);\r\n lastProcessedCharIx = wordEndIx;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n })\r\n return { tree, words };\r\n }\r\n\r\n private getSentenceFromRange(range: number[], text: string): string {\r\n const start = range[0] == 0 ? range[0] : range[0] + 1;\r\n const end = start + range[1];\r\n return text.slice(start, end);\r\n }\r\n\r\n private findSiblings(wordAlignment: number[][], sourceWords: IHighlightTree[], targetWords: IHighlightTree[]) {\r\n wordAlignment.forEach((range) => {\r\n const sourceWordIx = range[0];\r\n const targetWordIx = range[1];\r\n const sourceWord = sourceWords[sourceWordIx];\r\n const targetWord = targetWords[targetWordIx];\r\n\r\n if (sourceWord && targetWord) {\r\n sourceWord.class += ` ${HighlightParams.siblingClass}-${targetWord.elementId}`;\r\n targetWord.class += ` ${HighlightParams.siblingClass}-${sourceWord.elementId}`;\r\n }\r\n })\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { ITldTranslateTextApiService, TranslationApiVersion } from \"../modules/tld-common/models\";\r\nimport { TldTranslateConfigService } from \"../modules/tld-common/services/tld-translate-config.service\";\r\nimport { TldTermCollectionsService } from \"../modules/tld-term/services/tld-term-collections.service\";\r\nimport { TldTranslateTextApiV2Service } from \"../modules/tld-text/services/api-v2/tld-translate-text-api-v2.service\";\r\nimport { TldTranslateTextApiService } from \"../modules/tld-text/services/api/tld-translate-text-api.service\";\r\nimport { TldAlertService } from \"../../public-api\";\r\n\r\nexport function textApiServiceFactory(version: TranslationApiVersion,\r\n config: TldTranslateConfigService,\r\n http: HttpClient,\r\n collectionsService: TldTermCollectionsService,\r\n alerts: TldAlertService): ITldTranslateTextApiService {\r\n if (version === TranslationApiVersion.V2) {\r\n return new TldTranslateTextApiV2Service(http, config);\r\n }\r\n else {\r\n return new TldTranslateTextApiService(collectionsService, http, config, alerts);\r\n }\r\n}\r\n","import { ClipboardModule } from '@angular/cdk/clipboard';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\r\nimport { ModuleWithProviders, NgModule, Provider } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { CloseButtonModule, NotificationMessageModule } from '@tilde-nlp/ngx-common';\r\nimport { fileApiServiceFactory } from './factories/file-api-service.factory';\r\nimport { systemServiceFactory } from './factories/system-service.factory';\r\nimport { textApiServiceFactory } from './factories/text-api-service.factory';\r\nimport { FILE_API_SERVICE_TOKEN, SYSTEM_SERVICE_TOKEN, TEXT_API_SERVICE_TOKEN, TLD_TRANSLATE_CONFIG_TOKEN, TRANSLATION_API_VERSION_TOKEN } from './injection-tokens';\r\nimport { MaterialModule } from './modules/material.module';\r\nimport { TldCommonModule } from './modules/tld-common';\r\nimport { ITldTranslateConfig } from './modules/tld-common/models';\r\nimport { TranslationApiVersion } from './modules/tld-common/models/core';\r\nimport { TldAlertService, TldTranslateConfigService } from './modules/tld-common/services';\r\nimport { TldDocumentModule } from './modules/tld-document';\r\nimport { TldTermCollectionsService } from './modules/tld-term/services';\r\nimport { TldTextModule } from './modules/tld-text';\r\nimport { TldTooltipModule } from './modules/tld-tooltip';\r\nimport { TldTranslateBodyComponent } from './tld-translate-body/tld-translate-body.component';\r\nimport { TldTranslateComponent } from './tld-translate.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TldTranslateBodyComponent,\r\n TldTranslateComponent,\r\n ],\r\n imports: [CommonModule,\r\n MaterialModule,\r\n TranslateModule.forChild(),\r\n FormsModule,\r\n HttpClientModule,\r\n ClipboardModule,\r\n TldCommonModule,\r\n TldTextModule,\r\n TldDocumentModule,\r\n TldTooltipModule,\r\n NotificationMessageModule,\r\n CloseButtonModule\r\n ],\r\n exports: [\r\n TldTranslateComponent\r\n ],\r\n providers: [TranslateService]\r\n})\r\nexport class TldTranslateModule {\r\n static forRoot(translationApiVersion?: TranslationApiVersion, configuration?: ITldTranslateConfig): ModuleWithProviders<TldTranslateModule> {\r\n const providers: Provider[] = [\r\n { provide: SYSTEM_SERVICE_TOKEN, useFactory: systemServiceFactory, deps: [TRANSLATION_API_VERSION_TOKEN, TldTranslateConfigService, HttpClient] },\r\n {\r\n provide: TEXT_API_SERVICE_TOKEN,\r\n useFactory: textApiServiceFactory,\r\n deps: [\r\n TRANSLATION_API_VERSION_TOKEN,\r\n TldTranslateConfigService,\r\n HttpClient,\r\n TldTermCollectionsService,\r\n TldAlertService\r\n ]\r\n },\r\n {\r\n provide: FILE_API_SERVICE_TOKEN,\r\n useFactory: fileApiServiceFactory,\r\n deps: [\r\n TRANSLATION_API_VERSION_TOKEN,\r\n TldTranslateConfigService,\r\n HttpClient,\r\n TldTermCollectionsService,\r\n TldAlertService\r\n ]\r\n }\r\n ];\r\n\r\n if (translationApiVersion !== null) {\r\n providers.push(\r\n {\r\n provide: TRANSLATION_API_VERSION_TOKEN,\r\n useValue: translationApiVersion\r\n });\r\n }\r\n\r\n if (configuration) {\r\n providers.push({\r\n provide: TLD_TRANSLATE_CONFIG_TOKEN,\r\n useValue: configuration\r\n });\r\n }\r\n\r\n return {\r\n ngModule: TldTranslateModule,\r\n providers\r\n };\r\n }\r\n}\r\n\r\n\r\n","/*\r\n * Public API Surface of tld-translate\r\n */\r\n\r\n\r\n// Tooltip module\r\nexport * from './lib/i18n/available-languages';\r\n// Common moduke\r\nexport * from './lib/modules/tld-common/services';\r\nexport * from './lib/modules/tld-common/directives';\r\nexport * from './lib/modules/tld-common/models';\r\nexport * from './lib/modules/tld-common/pipes';\r\nexport * from './lib/modules/tld-common/components'\r\nexport * from './lib/modules/tld-common';\r\n// Document module\r\nexport * from './lib/modules/tld-document'\r\nexport * from './lib/modules/tld-document/models'\r\nexport * from './lib/modules/tld-document/services'\r\n// Term module\r\nexport * from './lib/modules/tld-term';\r\nexport * from './lib/modules/tld-term/models';\r\nexport * from './lib/modules/tld-term/services';\r\n// Text module\r\nexport * from './lib/modules/tld-text';\r\nexport * from './lib/modules/tld-text/models';\r\nexport * from './lib/modules/tld-text/services';\r\nexport * from './lib/modules/tld-text/utils';\r\n// Tooltip module\r\nexport * from './lib/modules/tld-tooltip';\r\nexport * from './lib/modules/tld-tooltip/models';\r\nexport * from './lib/modules/tld-tooltip/services';\r\n// Webtranslate module\r\nexport * from './lib/modules/tld-web'\r\nexport * from './lib/tld-translate.component';\r\n// Translate module\r\nexport * from './lib/tld-translate.module';\r\n// Audio module\r\nexport * from './lib/modules/tld-audio';\r\nexport * from './lib/modules/tld-audio/services';\r\n// Shared components\r\nexport * from \"./lib/components/shared/extension-dialog\";\r\nexport * from \"./lib/components/shared/text-to-speech\";\r\n// Injection tokens\r\nexport * from \"./lib/injection-tokens\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TldTranslateConfigService","i1","i2","i3","i4","i5","i6.TldOpenCloseButtonComponent","i7","i8.TranslateDomainPipe","i5.DragAndDropDirective","i1.TldTranslateButtonService","i4.TldOpenCloseButtonComponent","i6.TextToSpeechComponent","i7.TldTranslateAchievementComponent","i1.TldSystemService","i1.TldAlertService","i3.TldSystemService","i2.TldTranslateFileService","i6","i2.TldTranslateConfigService","i3.TldTranslateFileService","i1.TldTranslateFileService","i3.TldTranslateConfigService","i5.TldLoaderComponent","i6.TldTranslateButtonComponent","i7.SourceAndTargetWrapperComponent","i8","i9","i10","i11.TldTranslateFileDownloadButtonComponent","i12","i4.TldTranslateButtonService","i5.TldSystemService","i7.TldFileUploadComponent","i8.TldTranslateButtonComponent","i11","i13","i14.VendorDisclaimerComponent","i15.TldTranslateFileDownloadButtonComponent","i16","i2.TldSystemService","i3.TermApiService","i4.MtCollectionsApiService","i3.TldTermCollectionsService","i2.TldAlertService","i1.TldTermCollectionsService","i2.WtwLinkParamsService","i3.TldTermCollectionListComponent","i4.TldTermPromotionComponent","i10.TldOpenCloseButtonComponent","i12.TldTermCollectionComponent","i1.ExtensionDialogService","i1.TldVoiceInputApiService","i1.AudioRecordService","i4.TldVoiceInputService","i3.TldAlertService","i1.TldHighlightService","i7.VendorDisclaimerComponent","i2.TldScrollService","i3.TldHighlightService","i2.TldTranslateTextService","i8.HighlightTreeComponent","i1.TldTranslateTextService","i6.TextareaWithBackgroundComponent","i2.TldHighlightService","i4.TldScrollService","i6.AudioRecordService","i6.TldVoiceInputService","i7.TldTranslateFileService","i14.TldFileUploadComponent","i15.SourceAndTargetWrapperComponent","i16.TldDictateComponent","i17.OpenExtensionDialogComponent","i18.TextToSpeechComponent","i19.TldTranslateSourceComponent","i20.TldTranslateSuggestComponent","i21.TldDictionaryComponent","i22.HighlightTreeComponent","i23.ProgressIndicatorComponent","i24","i3.TranslateDomainPipe","i6.TldListMenuComponent","i8.TldLangListComponent","i9.TldLoaderComponent","i10.TldTranslateButtonComponent","i11.TldListMenuComponent","i12.TldTermMenuComponent","i13.TldDomainListComponent","i14","i1.TranslationSystemPickerService","i8.TldOpenCloseButtonComponent","i9.TldTermMenuComponent","i3.TranslationSystemPickerButtonComponent","i3.TranslationSystemPickerService","i5.TranslationSystemPickerLanguageListComponent","i6.TranslationSystemPickerSystemListComponent","i7.TranslationSystemPickerButtonComponent","i7.TranslationSystemPickerFilterComponent","i8.TranslationSystemPickerDropdownBodyComponent","i9.TldTranslateSwitcherComponent","i15","i17","i4.TldTranslateTextComponent","i5.TldTranslateFileComponent","i6.TldTranslateFileMultipleComponent","i3.TldTranslateTextService","i4.TldTranslateConfigService","i4.TldAlertService","i5.TldTranslateButtonService","i6.TldSystemService","i7.AudioRecordService","i7.TldVoiceInputService","i8.WtwLinkParamsService","i9.TranslationSystemPickerService","i4.IconService","i13.TldTranslateSwitcherComponent","i14.TranslationSystemPickerComponent","i15.TranslationSystemPickerDropdownComponent","i17.TldTranslateBodyComponent"],"mappings":"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"}