locale.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. Localization
  3. */
  4. let languages = ['en', 'zh'];
  5. let languageNames = {
  6. 'en': 'English',
  7. 'zh': '中文(正體)'
  8. };
  9. let currentLanguage = 'en';
  10. //Initialize the i18n dom library
  11. var i18n = domI18n({
  12. selector: '[i18n]',
  13. separator: ' // ',
  14. languages: languages,
  15. defaultLanguage: 'en'
  16. });
  17. $(document).ready(function(){
  18. let userLang = navigator.language || navigator.userLanguage;
  19. console.log("User language: " + userLang);
  20. userLang = userLang.split("-")[0];
  21. if (!languages.includes(userLang)) {
  22. userLang = 'en';
  23. }
  24. i18n.changeLanguage(userLang);
  25. currentLanguage = userLang;
  26. });
  27. // Update language on newly loaded content
  28. function relocale(){
  29. i18n.changeLanguage(currentLanguage);
  30. }
  31. function setCurrentLanguage(newLanguage){
  32. let languageName = languageNames[newLanguage];
  33. currentLanguage = newLanguage;
  34. $("#currentLanguage").html(languageName);
  35. i18n.changeLanguage(newLanguage);
  36. }
  37. /* Other Translated messages */
  38. function i18nc(key, language=undefined){
  39. if (language === undefined){
  40. language = currentLanguage;
  41. }
  42. let translatedMessage = translatedMessages[language][key];
  43. if (translatedMessage === undefined){
  44. translatedMessage = translatedMessages['en'][key];
  45. }
  46. if (translatedMessage === undefined){
  47. translatedMessage = key;
  48. }
  49. return translatedMessage;
  50. }
  51. let translatedMessages = {
  52. 'en': {
  53. 'disk_info_refreshed': 'Disk information reloaded',
  54. "raid_resync_started_succ": 'RAID resync started successfully',
  55. },
  56. 'zh': {
  57. 'disk_info_refreshed': '磁碟資訊已重新載入',
  58. "raid_resync_started_succ": 'RAID 重建已成功啟動',
  59. }
  60. };