LanguagePreferences.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. /**
  2. * Copyright (c) 2011-2018 by Andrew Mustun. All rights reserved.
  3. *
  4. * This file is part of the QCAD project.
  5. *
  6. * QCAD is free software: you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation, either version 3 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * QCAD is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with QCAD.
  18. */
  19. include("scripts/EAction.js");
  20. include("scripts/WidgetFactory.js");
  21. function LanguagePreferences(guiAction) {
  22. //EAction.call(this, guiAction);
  23. }
  24. LanguagePreferences.prototype = {}; //new EAction();
  25. LanguagePreferences.localLanguageName = [];
  26. LanguagePreferences.localLanguageName["cs"] = "Čeština";
  27. LanguagePreferences.localLanguageName["da"] = "Dansk";
  28. LanguagePreferences.localLanguageName["de"] = "Deutsch";
  29. LanguagePreferences.localLanguageName["de_DE"] = "Deutsch";
  30. LanguagePreferences.localLanguageName["en"] = "English";
  31. LanguagePreferences.localLanguageName["en_US"] = "English";
  32. LanguagePreferences.localLanguageName["es"] = "Español";
  33. LanguagePreferences.localLanguageName["fi"] = "Suomi";
  34. LanguagePreferences.localLanguageName["fr"] = "Français";
  35. LanguagePreferences.localLanguageName["hu"] = "Magyar";
  36. LanguagePreferences.localLanguageName["hr"] = "Hrvatski";
  37. LanguagePreferences.localLanguageName["it"] = "Italiano";
  38. LanguagePreferences.localLanguageName["ja"] = "日本語";
  39. LanguagePreferences.localLanguageName["ko"] = "한국어";
  40. LanguagePreferences.localLanguageName["lt"] = "Lietuvių kalba";
  41. LanguagePreferences.localLanguageName["nb"] = "Norsk";
  42. LanguagePreferences.localLanguageName["nl"] = "Nederlands";
  43. LanguagePreferences.localLanguageName["pl"] = "Polski";
  44. LanguagePreferences.localLanguageName["pt"] = "Português";
  45. LanguagePreferences.localLanguageName["pt_BR"] = "Português Brasileiro";
  46. LanguagePreferences.localLanguageName["ru"] = "ру́сский язы́к";
  47. LanguagePreferences.localLanguageName["sk"] = "Slovenčina";
  48. LanguagePreferences.localLanguageName["sl"] = "Slovenščina";
  49. LanguagePreferences.localLanguageName["sv"] = "Svenska";
  50. LanguagePreferences.localLanguageName["tr"] = "Türkçe";
  51. LanguagePreferences.localLanguageName["uk"] = "Українська";
  52. LanguagePreferences.localLanguageName["zh_TW"] = "繁體中文";
  53. LanguagePreferences.localLanguageName["zh"] = "简体中文";
  54. LanguagePreferences.localLanguageName["zh_CN"] = "简体中文";
  55. LanguagePreferences.getPreferencesCategory = function() {
  56. return [qsTr("Language Settings"), qsTr("Language")];
  57. };
  58. LanguagePreferences.initPreferences = function(pageWidget, calledByPrefDialog, document) {
  59. // var loc = new QLocale(QLocale.German);
  60. var language = pageWidget.findChild("UiLanguage");
  61. // language.addItem("English", "en");
  62. var codes = LanguagePreferences.getLanguages();
  63. for (var i = 0; i < codes.length; ++i) {
  64. var code = codes[i];
  65. language.addItem(LanguagePreferences.codeToString(code), code);
  66. }
  67. language.model().sort(0);
  68. // if (RSettings.getQtVersion() >= 0x060000) {
  69. // language.currentTextChanged.connect(this, function(text) {
  70. // RSettings.setValue("LibraryBrowser/RebuildDatabase", true);
  71. // });
  72. // }
  73. // else {
  74. // language["currentIndexChanged(QString)"].connect(this, function(text) {
  75. // RSettings.setValue("LibraryBrowser/RebuildDatabase", true);
  76. // });
  77. // }
  78. // var contents = pageWidget.findChild("LanguagePage");
  79. // WidgetFactory.restoreState(pageWidget);
  80. // var code = RSettings.getLocale();
  81. // var i = cbLanguage.findText(this.codeToString(code));
  82. // if (i == -1) {
  83. // var locale = new QLocale(code);
  84. // var lang = QLocale.languageToString(locale.language());
  85. // i = cbLanguage.findText(lang);
  86. // }
  87. // if (i > -1) {
  88. // cbLanguage.setCurrentIndex(i);
  89. // }
  90. };
  91. LanguagePreferences.codeToString = function(code) {
  92. var locale = new QLocale(code);
  93. var lang = locale.language();
  94. var langStrEn = QLocale.languageToString(lang);
  95. var langStrNational = LanguagePreferences.localLanguageName[code];
  96. var country = QLocale.countryToString(locale.country());
  97. var ret = "";
  98. if (!isNull(langStrNational)) {
  99. ret += langStrNational + " / ";
  100. }
  101. ret += langStrEn;
  102. if (code.indexOf("_")!==-1) {
  103. ret += " (" + country + ")";
  104. }
  105. return ret;
  106. };
  107. LanguagePreferences.getLanguages = function(dirName) {
  108. if (isNull(dirName)) {
  109. dirName = "ts";
  110. }
  111. var codes = [];
  112. var dir = new QDir(dirName);
  113. var sortFlags = makeQDirSortFlags(QDir.NoSort);
  114. /*
  115. var dirFilter = new QDir.Filters(QDir.NoDotAndDotDot, QDir.Readable,
  116. QDir.Dirs);
  117. var dirs = dir.entryInfoList(dirFilter, sortFlags);
  118. for (var i = 0; i < dirs.length; ++i) {
  119. codes = codes.concat(LanguagePreferences.getLanguages(dirs[i].absoluteFilePath()));
  120. }
  121. */
  122. var fileFilter = makeQDirFilters(QDir.Readable, QDir.Files);
  123. var files = dir.entryInfoList(["*.qm"], fileFilter, sortFlags);
  124. for (var j = 0; j < files.length; ++j) {
  125. var fileName = files[j].baseName();
  126. var code = fileName.match(/(?:(?:_(..))(?:_(..)))$|(?:_(..)$)/, "g");
  127. if (code===null || code.length!==4) {
  128. continue;
  129. }
  130. if (!isNull(code[3])) {
  131. code = code[3];
  132. }
  133. else {
  134. code = code[1] + "_" + code[2];
  135. }
  136. //qDebug("code: ", code);
  137. codes.push(code);
  138. }
  139. return codes.unique();
  140. };