From c9048ee268c1af80744112a65450da9fb5644c5f Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Tue, 1 Dec 2020 00:13:27 -0800 Subject: [PATCH] Added ability to query current system language --- microscript/ILibDuktape_Polyfills.c | 3 + modules/util-language.js | 1038 +++++++++++++++++++++++++++ modules/utils/win-kblayout.js | 26 + 3 files changed, 1067 insertions(+) create mode 100644 modules/util-language.js diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index 879e004..9fa5a8b 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2324,6 +2324,9 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) // default_route: Refer to modules/default_route.js duk_peval_string_noresult(ctx, "addCompressedModule('default_route', Buffer.from('eJztVttu4zYQfTfgf5gawUpKHDl2sgs0rltkc6vQxFnESRaLpghoaWQTK5NakoqcJvn3DmV5fY3bvvWhfLBM8nDmzBlyyMZ2tXIs0yfFB0MDrb3mjxAIgwkcS5VKxQyXolqpVi54iEJjBJmIUIEZIhylLKRPOVOHO1Sa0NDy98C1gFo5VfPa1cqTzGDEnkBIA5lGssA1xDxBwHGIqQEuIJSjNOFMhAg5N8PCS2nDr1a+lBZk3zACM4Kn1IvnYcCMZQvUhsakh41Gnuc+K5j6Ug0ayQSnGxfB8Wm3d7pLbO2KW5Gg1qDwW8YVhdl/ApYSmZD1iWLCcpAK2EAhzRlpyeaKGy4GddAyNjlTWK1EXBvF+5lZ0GlKjeKdB5BSTEDtqAdBrwYfj3pBr16tfA5ufr26vYHPR9fXR92b4LQHV9dwfNU9CW6Cqy71zuCo+wV+C7ondUBSibzgOFWWPVHkVkGMSK4e4oL7WE7o6BRDHvOQghKDjA0QBvIRlaBYIEU14tpmURO5qFpJ+IibYhPo1YjIyXbDihdnIrQYypqIZK4fIoxZlphrSZG6XrXyPEnJI1OksIEOiCxJ2rPB80saK7V3nYdzFKh4eMmUHrLE8Upk8IlQ55f+sUJmsEu0HvGTkuMn1wnSYZKylPtRMo8voZdohjJynXM0QXomFWUrurGJLaAzGpr/ifMu7pjiFuYeeO35CDTFRjiyv2LR3asXZurQnK7hsTtZ4t+xBDodaLZa3mSq1GVq2RSbbR0Ba9I38mMWx6hcz6fZ6JYO6n7r4tT1pp5s28yu8LDCcC3LPW82OcdzyhUF7WTU5Kiw6Z+gwthGf+C9TbS9akfJfGl0sUfb1rU43tlr859Kr+2dHe4t4pYoFlLIfIneAeyAy2Eb3n/w6vanvbqKx+DSyn8W0LJQG9jY1mjAyeRoQHE21qMsgx/sOXl5scfFHyEFHcLPMKO1/2EzrzWUNtAqxCrO5TNVNoMqZiEezrlr/o27Okw4Hv4LivC6RnzbXleHl4bmuuXf8kNBZEpQ/tDY1L4uFKeEi2y8qTSFQ55E84WoGHhIlQypujqej2MMz+jKcp1Gn4uGHjp1+N2hzx/TjVSs8LWhSql8KVwnYoYR6jsJN/RI5NcVPNGhjyLvjtNeHH7bjL1Di1U7HQhJ6R7lQAzomK1xwIVvbyzizlPKEkUPL0D3WQqlItRl+Ve4d55tLYCtZqdTK6dq8O4dbB0UA481sK5T8mRg6z25gtd7517gmJt74Sz6zRk3pzTx/eRPE7Qct0/MR5Pj5DjwS3E/wOHidnxjzWzvNSdhL2a9r6P/c+4INJrucdgl8XdjUtVWl7fSX+a2e/afzKymp2E4dMsM+WnCDN0Ro1laQ0avHYeeIvst53BWKUYyyugioLeSVMbeW+seK3MlqU/l6mt73mRRQDaaXC0xGw3G9Jyk/Tk1ORmMmCJmG90s7+k1Tgqp/gL2YXjV', 'base64'));"); + // util-language, to detect current system language. Refer to modules/util-language.js + duk_peval_string_noresult(ctx, "addCompressedModule('util-language', Buffer.from('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', 'base64'));"); + // agent-instaler: Refer to modules/agent-installer.js duk_peval_string_noresult(ctx, "addCompressedModule('agent-installer', Buffer.from('eJzdPWtT47iW36niP6ipuzdOd0igZ6q3LmzmFg303txhgOIxXVPAUsZRggfH9voBpHq4v33PkWRbkiXHCczszrq6GhJLR0fnpfOQxOD9+tp+FM8Tf3qfkY9bH7fIKMxoQPajJI4SN/OjcH1tfe3I92iY0jHJwzFNSHZPyV7sevBDvOmRn2mSQmvysb9FHGywIV5tdHfX1+ZRTmbunIRRRvKUAgQ/JRM/oIQ+ezTOiB8SL5rFge+GHiVPfnbPRhEw+utrvwgI0V3mQmMXmsfwaSI3I26G2BJ47rMs3hkMnp6e+i7DtB8l00HA26WDo9H+4fH54SZgiz0uw4CmKUnof+d+AtO8mxM3BmQ89w5QDNwnEiXEnSYU3mURIvuU+JkfTnskjSbZk5vQ9bWxn2aJf5dnCp0K1GC+cgOglBuSjb1zMjrfIJ/3zkfnvfW1r6OLf5xcXpCve2dne8cXo8NzcnJG9k+OD0YXo5Nj+PSF7B3/Qn4cHR/0CAUqwSj0OU4Qe0DRRwrSMZDrnFJl+EnE0Ulj6vkT34NJhdPcnVIyjR5pEsJcSEyTmZ8iF1NAbry+FvgzP2NCkNZnBIO8HyDx1tdO7n6lXtYf04kf0tMkAkDZ3NlLEnfej5Moi7J5DCLSmdLs1E3cGc1ocvjc6XFWfeM/8Hl0g5zukEkeejgqcUJo3CMA2M2D7Gd8261aSx15ZyBAD5iY7aovcO6OT4Zka5f45D+Y8PUDGk6z+13y4YPfVZtrYPHxJyjTfnrl3/TTzE2y9CvQnmFHPpDOsNPt1jsZ4OAD+AEqJbT8DoUinDJgAiuAud3dNXdHVACEjEZnA8Yn3wRk9rKEus0IUsDdRLjkxYpYnoQMumlwrZf2seissEqCIpq/4HeriMtbC0uBL5MFVS6dzuZmB1hgAPeWMxqBQrXWgQVS/0cJvESZVeSeUdxfXbg2t1/LgDENgPZLS9UC8gt97tfYyztr8/Unjv/DcGsxExjMFJch6oBhq5mEFzMt1tdK5GHd8x5KlFIndpNZCgOLwRD5WXoP6N/+dP4Ph3fmKBLeVpmSA+RLvcSPEXanR8I8CLpkOGS/kL/+FWH1pSbk3VC0+UY4tDhPmRBJjYYbKFF6TxAuMGqlqbLi4wN53PkxfLbiUzVpwKdqJOEj9WyJD7owbtiIj9TEjo/UqMJH7tkSnxlN789p8ggSZMKpW5N+kE0cSutXImpVAxV9rXs1BR2umEZNjvGhQUqt4w0G5DzzgaphRHSgwsUBN6jfJ0c064A3E6QRVwbw3cCeBQG4YCnvk0Kzuk5nsxjUAkwHNICJBW4GRnWGhOs8+eF3Hzvk76TzE4xM9qY0zDpkhzBqu+yTpqhZMl+s7GxA4YE6nVsG6Dga09G40+2n1fycBjOAj+dm3r3z/NxsX15qNgkRAD47q85ZXwoMc2whJYhFTSo0hAtjt772Itk6wVgBEdXBlW1dMa00G0d51kf/HcgMvB/xfugACyqXY3vg+EYB7fvhJNp2Op3KQKKIAMTn+ReMYSpBoc/UO3VhmZX00k7Puv5pMPnvbA3IAFmADrLwa+SH8IG9VsikiFldQV2J9qUWfJ5fwqw57UvhA+w2EzrFcAVG6EPAluBCdhFh2x/p3Clb4qtNCKhY0ABN0fzw+Z48hTRh8loSwB93+2xBbNR7Lr8QFpqtTcV8/FEZCWUJT0guK5OOZQa+gTw66+CPmcPUjpy8dRMZLv2xkzdPsXGCLZiGPANE5EEq+fkAUiZkZLckWSW8UczDuqF1isipnQKFRcvKykajp1lKN4GhdtrAM4HToAl9RoXcqamo3ha93AvwEgHg3uXFye35xd7ZhQ4xLn2pgjRag9uCSckOCFAurWAvgg2C8op7MTTTWXVvio7cpyx6aB6t2qmrjym5WLYxFRdPHhO1lty53sM0ifJwLFlLOy4SMM27bLCK4A4V48o+DzToKB5PqX4T1Dn6DPYqPZ+HnlNqQVeGhekmEHhy9Y2kUZ54dKdSF3CM6NMxk/iiORdFnLRQI/JyUw5fKZIvmXoWcwla+Oj/n0y4NxfPN8H9GW5ss0j9B7AzddMvnHFtQTErgKMLs3mJAHA43k69PZsWey0ZD5yCRqzKQa1R8UZJJCivucWqyCym1UxkxIYHMDrMSulM0dCLTP9hnfq3QeS5hVsgWFCFXxIDwKcUyosJPiC8R5fFRW4pYI3CU4SEISKYA90UI9bTILpzg/7tU5Q8gBcSI3veVUGD5XWn0/RyYPAt9KyAYUrmHIG2MMhiUvWtZwoEAVDc6okCg3domgsngyFhcJdQ92Ghi8jRbaKwfZoG8mgLMZsZ85xMA9h8nJL3K/FDjdVexQbLfKX2gJtlBG5tAN7V9k0tvVGJhwTLlLBsHlLpLCc0TQ2aEpztdddAh0p/JxBFUq2xLoaK3LVTEznWb8MfdUl8HX8kWE38MQ+pdDbxR27wdvyxkLxUq9Jtl+hXegrCZ9mcuSF4jAksleK3vhY+Cpw039oQQZKrg5Pjw5vrsKMtSNzJT31qjPKMkA7Pzk7ObghaFOxnGBucnMzRBkLHIX305HjEPk1YbbUp9uUcpdU1G7sJeB+GVQVG7geRO3ZakIqQzR/AbcywckbymAQuBO/3hPnuEIm3Dmbbs/OIjcBCBae+iFgy1aHiorAygLmhEl8gIdw4PgJvAzs6emhTdmoVaFRDsKAS20PIcdU5iqZ++BXcm+ipc2PpIwcpV53Nh8fZduem3vRF16y2As46a9EskSQdHz39sLTEy2pdyOZyuRTUC/D9QC9qrGkpql95kZdMQNie0C9McnR+ceFGjGvBkdCsQpRVVLAv4LLQDTqo4red+hA/MfmegTyTi8SdYCXXudg/3dzumiRoDIiz7BjImh/eYdhmanaaRFMQmR0kl/l1FnlRAEBgKAsAdPyhwWl+B5a7B9/4j24GLv9BNHPBcBg6ITuC0yiBcH/709/+tmVoclDFjzsii7APU0/cgGcTDOQwjXQ4nlJ4/QgagSMCgnMABwwFJTI1D7HsP9YDeHxeJMlR0mWFiIAJcsfjL+LTGfDcQcar4vD7isLHP70obP//FgVSlwWr4WwWgVNKk80s2sSflRBcHpjsQQsBaGC+xHgAb+i4HNMX6P5CZpsmro+xBKstbH5LbX+lsts5/Qepu4HrosX/jrq3kQB8/i8o/MoxRJNzco5+pFS1kh1oUwyEThDzPdu4P1cnP1pDGrp0RKNCWhBpVElgxNgLohRLnjpFykDoRdnwkIdqHPddrQ64fITTxITLYjxkxKrhDHNUWV/WtXUgJwc3Les0Sr1Wc/8lFPp5WIvpFLFnGXdo5IcPLOMu94XQPa3tIHtdbLFyZGGGrO6aALrJ+dZ3ZQrZC/IxTZ3ObZpFcZmakTNwxpKzqjPGCqUtnG8W5o9ihB4m1NVdPCn1ohAkeF5IkJyskssU+PvYzdwvUYD7OZX8Kr6DMOk0oRP/uf6qROekqB3qLaRdCrby0huWDneljA/b/WiRTSQW2I9CluAjReui1A0MdZvb2/TBjz/7IVD1gBW27LUb0deStTIQDowbAOdg+RB8xSkXmbqIgmjWJHNz85bX3A6ApaK2UUNOYbeBKbjjschcH/hJsUlImoAsFDYAZRutf2nwW5vROKGPfpSnhXqxmH3R6tbCYurq5Eji2qsxaZVVu+CYRHHgWkmZpY0Yow0TEqQLV22ErS8upaToqvROT49Yxi8UOKCPNLjEjUjVFIpk8qA2JD6iRz+O4tpqIb0HiEVLXpscaBmS4tG23MA3+wF12fZ03NTp8tL1D0Zc6n3xyzFhJRqJJ8b9RVYAQEYGoFICrFa+Xw7Cwd7odH8ppM3ktsAHb//VsyxhFCwrAZhlxbv3A2UTDPviVsggK8hTD8u+wOw7Pxyk92AZrjrw48aIFfYuFCACCcGpQI9qI66HVltF3utn0TmvO3TRxjcCpkny+wD2w0JjLcKmmYgGAIWoXIc2/aj12QhS8htxnx5goJajfGuLDmFZ179skX+RwX/VlOD6uj/oLgFqmWHhSe+HaQwsyCbOBtDl+nrj31L4b6NH/rLV3V0S1jzN6MxBT2CJji8t2268dK7DjbYMQykZLCMSNu1eCYas3e0BoKPKWosmtk5Prp8dcqe23kwr+6kbfPFZYVW6vn7TZckCbjl7V3r34eMVLr9A+84NVxguh999vL72ZmO2WQdt4mCfgBtn4jHgY1h60Kuwi4X2VjHnrzG9r7GuDX0lkamJy6tjSDlxUYWRr0pcDAZkn+0kxzJQGXdx78zunzZ5eAwcqzPVIequHguzli71puqe+wPfnYZRmvleDbYomFnLZWmZkVlMwy8nl8cHOmOshCD1SGABLWpBr7TDSuGDxgt8XhkvNFBxRUk1iKkB7VdkO5bXgeN6UrKISh2V9kskzTibEzqLHg0sJpMkmpHMTR9I6t3TcR4AIwwqoJyVwOabZXPgII+J7fwaQCThR2PfYzlUVTz7tyLeLkJd5WV2T0Onsm3LM8okAfjUE5fs9NetmlNiXJCN6xtJypIYtElxWTOxSrbLmuuq5W1X3eXye2ehivlUZ+lsuw2WPgzCweG5qWp71RZL/lXbqb7vlptnWzClhGjoVCGJE/DTszxkYXdxfu2334jywjGkmprrFVEcI8Dzer2Cj1yjznBYz15oYs6rGujlNeimoV+TipxfnJyeHtZWLnnI+iJok/uPihrx1K3u6Fg0ekm0rZr9FkjXcO7idj3QgFMw2H5Km8xm20N9LUszDaTBWVpKF6sEH5VwNQNbQZCac/vWRdyo1SuW0lqjoZlqYXYP2XkLBwvHpN1hO+ER7rDNU+hoghGSabPsBq92PnV979bCBDM+tgov81yoUuT9hpiUZXRUjdZuAp5jvdzfPzw/b+k+HB4dXrSTqNc6EIDal73R0eFBO8yOI3LGKPwF9xq8DsGWtmUZ98PofUhCPYElrow9nF/TKOTpP9UBYQdYAY1/np8cI46gT1JTeZ3HdyNel615H480uQNVBK9jq8vOYhsqSkU6MqXZAQWfNeS+RPG19F3aPxid730GRrVxyyS4o3ASHWFywNHP0sjndEXxs8xtma8U2JXPFoZl/e+PKv+1NA2g40qsbTQEeKfQhnzLxcYbBOD6PRBtQm29HAvtRdZrAc0wabTDzgDV8l8tlgp5yPJ31QOtvpb80F01YaPIUFVdZIdW2Zy/lt9RL4uSuaNsSFC6l+MNlWyYmnDVMxNvFvbKbU37783rIVeKupEZvYWJaaGEXLq0Ar28C+AP01Kr3L1T5E7gw65BEsldUh5lvO3I8vWntLBEi7T+jGbLZrKqFuZDfBaF361TTb5qwfLutJi+AEj4+QvLObym5OWbmoi6v6F6NfwSI3VkWS3Ko7lDZuqNm0wqk2jYnLKkVVpfm0WYMIOB4yjJyqsApBEle7Ujf+ipTUq/aUf9KPDZVWxgOk9v83jsAiH9VCDZI3efvq/MIHieF3g/IPxL8hCvysNr5zq817gjksFCnyqDJoBZtyUVEgsNNjak1/HzrmxYSqzMJ0qQiAABEC43jf1dNtaf88kElAjzmA406pHOnZvST9/jtRNVSRmspHawtbjCZ/HBVE0dJIKiCpToow3oMa1g2PHV25/M2Sgsa1Sv3bLNULHY5jMz3GfVmbgP9JKNpu2GsiBrQPisyP1uVMA2qkNLxvQFQ0dsr4qfF96FVX0YDOTfi9wTIT9FY6q2UtrxCg+Q44mSe/eRkjTHDcY+pqiraxJV7r2zXgfip2dRlDkNhzthyK+UjKOwk/HxaBjl03v5Ska8apJdeomkQ4W4Y9pPnvAapMB/oMGcTFw/6OHdjYi35yI0tuW3dsWRpGK/5mmGl1riqoLTC6IoZjdb3lHPxbs6mbp5UUL7HknvozwYs2s8PQyq2SLEb/NMPQr4+JFZWINo6nTeo5E0ERLHh5aw4Obi8s9cyJilsHJLTRVDxcRqUiEZAsnzkXTYqYn82+aJ5WsYVnWj8GmqalUmcKX6oHbVnQRRsp3FdnNb2FLjOmEqLu1U52u1PGZjOWzSqDZcU0F+UkqFwoLgk4k/zRNKYNXm154KwjDW31GgPcWWqC8qRHY3DqvzW6/Y4KKp3rTBPuzWQbXfNACD9shVhMX0amcDj9/Aim8i4vXqvVK5Bwsv7khpWdDn9wtCrw9DIm94Mux3WlCq13d6oDnUcesD9JnT5XdXtLj8UL8zzdIOn1XF3oKi4U5LaZQlVaGkYAuVsOFjAGm4w7VQl4kBfwvhVKTe63rJD7Uenv082j8kxycXhOVvyXvjEm2Dp02qEINlQTdbfgNJVkn4vyU9mhE2XmdXOaHvikjGD2EhenQNVzXqLZg8ZiPxyancwh75tAVPj2j+tqn0V3mPw6E4RGC6KEf1lTjRmEtFnKPD/9zb/6Vrbt2uBGpgTl33XmWe21ak2gwrJ8Zqb8v82L9rw6s00cd5Vx/ITps2t0uqhyPQi8RFp7gsS70XTZ/1guKXMDue7jksUq/rcC8kNEkiWHA9L8dr15/u8fKrvLCNPM5rVK4WuqXJauzDQHyvCXeg8ZbQY3GxO3OWxVt2Iz2X7JkSLOizYK251PE77MF3RKCnAYXID0i/KYHtt0orFlgXC4yocE8A4SCY1ytLEq1LTgvY0gpIw3yGW+ipuKKRpvWqOfayixq7sojvv8ErstS2FqYXOn8V3/Rjkd/QJaz1glUQ7AGCngqqegeiQQxqooDPn1Rv9qsIDP8CAp6+BWG7SOZcZfCPI8C/T1tia1Vq3g4gBMu+JaAWSxlpqGBm1oTGg6o6PvUDqvjYl9JqK1I92870TayBifjzFA7/KAzqt2rhq76XL72Tv63f8SpfwNPe0a9ggr9ffVittIOhgZjhI59hFST87sGBJSjwJ1bffyj5/orN4ve7b7XJrxeNywKAPlhXgqJKBNDxVkgsTzs51qQj34eIaUcIyUTKscfTFKB0pnykJAvYhN2QKOgEn3nedsN0VHGBVVne0UEelUdBpMGFxXmWj7vwRew6PGQLcbn0VpmIPrvfU12nzOCB71bpv0XsH+lwWGiWPn41IHlyU6F4Y3UZVfgC9mWGia7AD2l7HBchaL9Y00pt0OJVOnVgNqirJZas3JtMU1ly8DPHvN2Fn/J43RqMzia4/QigU38np60ZvcR5iASrHFLqusxmV8RVkrsFHVkpanmkWeHKmLVGVHnWujrBszo3rQj0GE3KxUQtkYiWGGmV0dWupVGx4mAV3bAQQbfFwZAwTRp8xYIB+JpV48j/D+W9YTI=', 'base64'));"); diff --git a/modules/util-language.js b/modules/util-language.js new file mode 100644 index 0000000..2a6e9a0 --- /dev/null +++ b/modules/util-language.js @@ -0,0 +1,1038 @@ +/* +Copyright 2020 Intel Corporation + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +function toLang(val) +{ + var ret; + switch (val) + { + case '1025': + ret = 'ar-SA'; + break + case '1026': + ret = 'bg-BG'; + break + case '1027': + ret = 'ca-ES'; + break + case '1028': + ret = 'zh-TW'; + break + case '1029': + ret = 'cs-CZ'; + break + case '1030': + ret = 'da-DK'; + break + case '1031': + ret = 'de-DE'; + break + case '1032': + ret = 'el-GR'; + break + case '1033': + ret = 'en-US'; + break + case '1034': + ret = 'es-ES_tradnl'; + break + case '1035': + ret = 'fi-FI'; + break + case '1036': + ret = 'fr-FR'; + break + case '1037': + ret = 'he-IL'; + break + case '1038': + ret = 'hu-HU'; + break + case '1039': + ret = 'is-IS'; + break + case '1040': + ret = 'it-IT'; + break + case '1041': + ret = 'ja-JP'; + break + case '1042': + ret = 'ko-KR'; + break + case '1043': + ret = 'nl-NL'; + break + case '1044': + ret = 'nb-NO'; + break + case '1045': + ret = 'pl-PL'; + break + case '1046': + ret = 'pt-BR'; + break + case '1047': + ret = 'rm-CH'; + break + case '1048': + ret = 'ro-RO'; + break + case '1049': + ret = 'ru-RU'; + break + case '1050': + ret = 'hr-HR'; + break + case '1051': + ret = 'sk-SK'; + break + case '1052': + ret = 'sq-AL'; + break + case '1053': + ret = 'sv-SE'; + break + case '1054': + ret = 'th-TH'; + break + case '1055': + ret = 'tr-TR'; + break + case '1056': + ret = 'ur-PK'; + break + case '1057': + ret = 'id-ID'; + break + case '1058': + ret = 'uk-UA'; + break + case '1059': + ret = 'be-BY'; + break + case '1060': + ret = 'sl-SI'; + break + case '1061': + ret = 'et-EE'; + break + case '1062': + ret = 'lv-LV'; + break + case '1063': + ret = 'lt-LT'; + break + case '1064': + ret = 'tg-Cyrl-TJ'; + break + case '1065': + ret = 'fa-IR'; + break + case '1066': + ret = 'vi-VN'; + break + case '1067': + ret = 'hy-AM'; + break + case '1068': + ret = 'az-Latn-AZ'; + break + case '1069': + ret = 'eu-ES'; + break + case '1070': + ret = 'hsb-DE'; + break + case '1071': + ret = 'mk-MK'; + break + case '1072': + ret = 'st-ZA'; + break + case '1073': + ret = 'ts-ZA'; + break + case '1074': + ret = 'tn-ZA'; + break + case '1075': + ret = 've-ZA'; + break + case '1076': + ret = 'xh-ZA'; + break + case '1077': + ret = 'zu-ZA'; + break + case '1078': + ret = 'af-ZA'; + break + case '1079': + ret = 'ka-GE'; + break + case '1080': + ret = 'fo-FO'; + break + case '1081': + ret = 'hi-IN'; + break + case '1082': + ret = 'mt-MT'; + break + case '1083': + ret = 'se-NO'; + break + case '1085': + ret = 'yi-Hebr'; + break + case '1086': + ret = 'ms-MY'; + break + case '1087': + ret = 'kk-KZ'; + break + case '1088': + ret = 'ky-KG'; + break + case '1089': + ret = 'sw-KE'; + break + case '1090': + ret = 'tk-TM'; + break + case '1091': + ret = 'uz-Latn-UZ'; + break + case '1092': + ret = 'tt-RU'; + break + case '1093': + ret = 'bn-IN'; + break + case '1094': + ret = 'pa-IN'; + break + case '1095': + ret = 'gu-IN'; + break + case '1096': + ret = 'or-IN'; + break + case '1097': + ret = 'ta-IN'; + break + case '1098': + ret = 'te-IN'; + break + case '1099': + ret = 'kn-IN'; + break + case '1100': + ret = 'ml-IN'; + break + case '1101': + ret = 'as-IN'; + break + case '1102': + ret = 'mr-IN'; + break + case '1103': + ret = 'sa-IN'; + break + case '1104': + ret = 'mn-MN'; + break + case '1105': + ret = 'bo-CN'; + break + case '1106': + ret = 'cy-GB'; + break + case '1107': + ret = 'km-KH'; + break + case '1108': + ret = 'lo-LA'; + break + case '1109': + ret = 'my-MM'; + break + case '1110': + ret = 'gl-ES'; + break + case '1111': + ret = 'kok-IN'; + break + case '1112': + ret = 'mni-IN'; + break + case '1113': + ret = 'sd-Deva-IN'; + break + case '1114': + ret = 'syr-SY'; + break + case '1115': + ret = 'si-LK'; + break + case '1116': + ret = 'chr-Cher-US'; + break + case '1117': + ret = 'iu-Cans-CA'; + break + case '1118': + ret = 'am-ET'; + break + case '1119': + ret = 'tzm-Arab-MA'; + break + case '1120': + ret = 'ks-Arab'; + break + case '1121': + ret = 'ne-NP'; + break + case '1122': + ret = 'fy-NL'; + break + case '1123': + ret = 'ps-AF'; + break + case '1124': + ret = 'fil-PH'; + break + case '1125': + ret = 'dv-MV'; + break + case '1126': + ret = 'bin-NG'; + break + case '1127': + ret = 'fuv-NG'; + break + case '1128': + ret = 'ha-Latn-NG'; + break + case '1129': + ret = 'ibb-NG'; + break + case '1130': + ret = 'yo-NG'; + break + case '1131': + ret = 'quz-BO'; + break + case '1132': + ret = 'nso-ZA'; + break + case '1133': + ret = 'ba-RU'; + break + case '1134': + ret = 'lb-LU'; + break + case '1135': + ret = 'kl-GL'; + break + case '1136': + ret = 'ig-NG'; + break + case '1137': + ret = 'kr-NG'; + break + case '1138': + ret = 'om-ET'; + break + case '1139': + ret = 'ti-ET'; + break + case '1140': + ret = 'gn-PY'; + break + case '1141': + ret = 'haw-US'; + break + case '1142': + ret = 'la-Latn'; + break + case '1143': + ret = 'so-SO'; + break + case '1144': + ret = 'ii-CN'; + break + case '1145': + ret = 'pap-029'; + break + case '1146': + ret = 'arn-CL'; + break + case '1148': + ret = 'moh-CA'; + break + case '1150': + ret = 'br-FR'; + break + case '1152': + ret = 'ug-CN'; + break + case '1153': + ret = 'mi-NZ'; + break + case '1154': + ret = 'oc-FR'; + break + case '1155': + ret = 'co-FR'; + break + case '1156': + ret = 'gsw-FR'; + break + case '1157': + ret = 'sah-RU'; + break + case '1158': + ret = 'qut-GT'; + break + case '1159': + ret = 'rw-RW'; + break + case '1160': + ret = 'wo-SN'; + break + case '1164': + ret = 'prs-AF'; + break + case '1165': + ret = 'plt-MG'; + break + case '1166': + ret = 'zh-yue-HK'; + break + case '1167': + ret = 'tdd-Tale-CN'; + break + case '1168': + ret = 'khb-Talu-CN'; + break + case '1169': + ret = 'gd-GB'; + break + case '1170': + ret = 'ku-Arab-IQ'; + break + case '1171': + ret = 'quc-CO'; + break + case '1281': + ret = 'qps-ploc'; + break + case '1534': + ret = 'qps-ploca'; + break + case '2049': + ret = 'ar-IQ'; + break + case '2051': + ret = 'ca-ES-valencia'; + break + case '2052': + ret = 'zh-CN'; + break + case '2055': + ret = 'de-CH'; + break + case '2057': + ret = 'en-GB'; + break + case '2058': + ret = 'es-MX'; + break + case '2060': + ret = 'fr-BE'; + break + case '2064': + ret = 'it-CH'; + break + case '2065': + ret = 'ja-Ploc-JP'; + break + case '2067': + ret = 'nl-BE'; + break + case '2068': + ret = 'nn-NO'; + break + case '2070': + ret = 'pt-PT'; + break + case '2072': + ret = 'ro-MD'; + break + case '2073': + ret = 'ru-MD'; + break + case '2074': + ret = 'sr-Latn-CS'; + break + case '2077': + ret = 'sv-FI'; + break + case '2080': + ret = 'ur-IN'; + break + case '2092': + ret = 'az-Cyrl-AZ'; + break + case '2094': + ret = 'dsb-DE'; + break + case '2098': + ret = 'tn-BW'; + break + case '2107': + ret = 'se-SE'; + break + case '2108': + ret = 'ga-IE'; + break + case '2110': + ret = 'ms-BN'; + break + case '2115': + ret = 'uz-Cyrl-UZ'; + break + case '2117': + ret = 'bn-BD'; + break + case '2118': + ret = 'pa-Arab-PK'; + break + case '2121': + ret = 'ta-LK'; + break + case '2128': + ret = 'mn-Mong-CN'; + break + case '2129': + ret = 'bo-BT'; + break + case '2137': + ret = 'sd-Arab-PK'; + break + case '2141': + ret = 'iu-Latn-CA'; + break + case '2143': + ret = 'tzm-Latn-DZ'; + break + case '2144': + ret = 'ks-Deva'; + break + case '2145': + ret = 'ne-IN'; + break + case '2151': + ret = 'ff-Latn-SN'; + break + case '2155': + ret = 'quz-EC'; + break + case '2163': + ret = 'ti-ER'; + break + case '2559': + ret = 'qps-plocm'; + break + case '3073': + ret = 'ar-EG'; + break + case '3076': + ret = 'zh-HK'; + break + case '3079': + ret = 'de-AT'; + break + case '3081': + ret = 'en-AU'; + break + case '3082': + ret = 'es-ES'; + break + case '3084': + ret = 'fr-CA'; + break + case '3098': + ret = 'sr-Cyrl-CS'; + break + case '3131': + ret = 'se-FI'; + break + case '3152': + ret = 'mn-Mong-MN'; + break + case '3153': + ret = 'dz-BT'; + break + case '3167': + ret = 'tmz-MA'; + break + case '3179': + ret = 'quz-PE'; + break + case '4097': + ret = 'ar-LY'; + break + case '4100': + ret = 'zh-SG'; + break + case '4103': + ret = 'de-LU'; + break + case '4105': + ret = 'en-CA'; + break + case '4106': + ret = 'es-GT'; + break + case '4108': + ret = 'fr-CH'; + break + case '4122': + ret = 'hr-BA'; + break + case '4155': + ret = 'smj-NO'; + break + case '4191': + ret = 'tzm-Tfng-MA'; + break + case '5121': + ret = 'ar-DZ'; + break + case '5124': + ret = 'zh-MO'; + break + case '5127': + ret = 'de-LI'; + break + case '5129': + ret = 'en-NZ'; + break + case '5130': + ret = 'es-CR'; + break + case '5132': + ret = 'fr-LU'; + break + case '5146': + ret = 'bs-Latn-BA'; + break + case '5179': + ret = 'smj-SE'; + break + case '6145': + ret = 'ar-MA'; + break + case '6153': + ret = 'en-IE'; + break + case '6154': + ret = 'es-PA'; + break + case '6156': + ret = 'fr-MC'; + break + case '6170': + ret = 'sr-Latn-BA'; + break + case '6203': + ret = 'sma-NO'; + break + case '7169': + ret = 'ar-TN'; + break + case '7177': + ret = 'en-ZA'; + break + case '7178': + ret = 'es-DO'; + break + case '7194': + ret = 'sr-Cyrl-BA'; + break + case '7227': + ret = 'sma-SE'; + break + case '8193': + ret = 'ar-OM'; + break + case '8201': + ret = 'en-JM'; + break + case '8202': + ret = 'es-VE'; + break + case '8204': + ret = 'fr-RE'; + break + case '8218': + ret = 'bs-Cyrl-BA'; + break + case '8251': + ret = 'sms-FI'; + break + case '9217': + ret = 'ar-YE'; + break + case '9225': + ret = 'en-029'; + break + case '9226': + ret = 'es-CO'; + break + case '9228': + ret = 'fr-CD'; + break + case '9242': + ret = 'sr-Latn-RS'; + break + case '9275': + ret = 'smn-FI'; + break + case '10241': + ret = 'ar-SY'; + break + case '10249': + ret = 'en-BZ'; + break + case '10250': + ret = 'es-PE'; + break + case '10252': + ret = 'fr-SN'; + break + case '10266': + ret = 'sr-Cyrl-RS'; + break + case '11265': + ret = 'ar-JO'; + break + case '11273': + ret = 'en-TT'; + break + case '11274': + ret = 'es-AR'; + break + case '11276': + ret = 'fr-CM'; + break + case '11290': + ret = 'sr-Latn-ME'; + break + case '12289': + ret = 'ar-LB'; + break + case '12297': + ret = 'en-ZW'; + break + case '12298': + ret = 'es-EC'; + break + case '12300': + ret = 'fr-CI'; + break + case '12314': + ret = 'sr-Cyrl-ME'; + break + case '13313': + ret = 'ar-KW'; + break + case '13321': + ret = 'en-PH'; + break + case '13322': + ret = 'es-CL'; + break + case '13324': + ret = 'fr-ML'; + break + case '14337': + ret = 'ar-AE'; + break + case '14345': + ret = 'en-ID'; + break + case '14346': + ret = 'es-UY'; + break + case '14348': + ret = 'fr-MA'; + break + case '15361': + ret = 'ar-BH'; + break + case '15369': + ret = 'en-HK'; + break + case '15370': + ret = 'es-PY'; + break + case '15372': + ret = 'fr-HT'; + break + case '16385': + ret = 'ar-QA'; + break + case '16393': + ret = 'en-IN'; + break + case '16394': + ret = 'es-BO'; + break + case '17409': + ret = 'ar-Ploc-SA'; + break + case '17417': + ret = 'en-MY'; + break + case '17418': + ret = 'es-SV'; + break + case '18433': + ret = 'ar-145'; + break + case '18441': + ret = 'en-SG'; + break + case '18442': + ret = 'es-HN'; + break + case '19465': + ret = 'en-AE'; + break + case '19466': + ret = 'es-NI'; + break + case '20489': + ret = 'en-BH'; + break + case '20490': + ret = 'es-PR'; + break + case '21513': + ret = 'en-EG'; + break + case '21514': + ret = 'es-US'; + break + case '22537': + ret = 'en-JO'; + break + case '22538': + ret = 'es-419'; + break + case '23561': + ret = 'en-KW'; + break + case '23562': + ret = 'es-CU'; + break + case '24585': + ret = 'en-TR'; + break + case '25609': + ret = 'en-YE'; + break + case '25626': + ret = 'bs-Cyrl'; + break + case '26650': + ret = 'bs-Latn'; + break + case '27674': + ret = 'sr-Cyrl'; + break + case '28698': + ret = 'sr-Latn'; + break + case '28731': + ret = 'smn'; + break + case '29740': + ret = 'az-Cyrl'; + break + case '29755': + ret = 'sms'; + break + case '30724': + ret = 'zh'; + break + case '30740': + ret = 'nn'; + break + case '30746': + ret = 'bs'; + break + case '30764': + ret = 'az-Latn'; + break + case '30779': + ret = 'sma'; + break + case '30787': + ret = 'uz-Cyrl'; + break + case '30800': + ret = 'mn-Cyrl'; + break + case '30813': + ret = 'iu-Cans'; + break + case '30815': + ret = 'tzm-Tfng'; + break + case '31748': + ret = 'zh-Hant'; + break + case '31764': + ret = 'nb'; + break + case '31770': + ret = 'sr'; + break + case '31784': + ret = 'tg-Cyrl'; + break + case '31790': + ret = 'dsb'; + break + case '31803': + ret = 'smj'; + break + case '31811': + ret = 'uz-Latn'; + break + case '31814': + ret = 'pa-Arab'; + break + case '31824': + ret = 'mn-Mong'; + break + case '31833': + ret = 'sd-Arab'; + break + case '31836': + ret = 'chr-Cher'; + break + case '31837': + ret = 'iu-Latn'; + break + case '31839': + ret = 'tzm-Latn'; + break + case '31847': + ret = 'ff-Latn'; + break + case '31848': + ret = 'ha-Latn'; + break + default: + ret = null; + break + } + return (ret); +} +function getCurrent() +{ + if(process.platform == 'win32') + { + var child = require('child_process').execFile(process.env['windir'] + '\\system32\\wbem\\wmic.exe', ['wmic', 'os', 'get', 'oslanguage','/FORMAT:LIST']); + child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); }); + child.stderr.str = ''; child.stderr.on('data', function (c) { this.str += c.toString(); }); + child.waitExit(); + + var lines = child.stdout.str.trim().split('\r\n'); + var tokens; + for (var i in lines) + { + tokens = lines[i].split('='); + if(tokens[0]=='OSLanguage') + { + return (toLang(tokens[1])); + } + } + return (null); + } + + if(process.env['LANG']) + { + return (process.env['LANG'].split('.')[0]); + } + else + { + if (process.platform == 'darwin') + { + var child = require('child_process').execFile('/bin/sh', ['sh']); + child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); }); + child.stderr.str = ''; child.stderr.on('data', function (c) { this.str += c.toString(); }); + child.stdin.write("osascript -e 'user locale of (get system info)'\nexit\n"); + child.waitExit(); + return (child.stdout.str.trim()); + } + else + { + try + { + var uid = require('user-sessions').gdmUid; + var child = require('child_process').execFile('/bin/sh', ['sh']); + child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); }); + child.stderr.str = ''; child.stderr.on('data', function (c) { this.str += c.toString(); }); + child.stdin.write('ps -e -o pid -o uid | grep ' + uid + ' | awk ' + "'{ print $1; }'\nexit\n"); + child.waitExit(); + var pid = parseInt(child.stdout.str.trim()); + + var e = require('user-sessions').getEnvFromPid(pid); + if (e.LANG) { return (e.LANG.split('.')[0]); } + } + catch (x) + { + } + } + return (null); + } +} + + +var obj = {}; +Object.defineProperty(obj, 'current', { + get: function () + { + if(this._val != null) + { + return (this._val); + } + else + { + this._val = getCurrent(); + return (this._val); + } + } +}); +module.exports = obj; diff --git a/modules/utils/win-kblayout.js b/modules/utils/win-kblayout.js index cfd3970..20a776f 100644 --- a/modules/utils/win-kblayout.js +++ b/modules/utils/win-kblayout.js @@ -17,6 +17,32 @@ limitations under the License. var table = require('fs').readFileSync(process.argv[0].split('\\win-kblayout.js').join('\\win-kblayout_table.txt')); var lines = table.toString().split('\r\n'); +var str = 'function toLang(val)\r\n'; +str += '{\r\n'; +str += ' var ret;\r\n'; +str += ' switch(val)\r\n'; +str += ' {\r\n'; +for (var i = 0; i < lines.length; ++i) +{ + var code = lines[i].split(' ')[0]; + var text = lines[i].substring(lines[i].indexOf(' ')).split(',')[0].trim(); + str += (" case '" + Buffer.from(code,'hex').readUInt32BE() + "':\r\n"); + str += (" ret = '" + text + "';\r\n"); + str += (" break\r\n"); +} +str += (" default:\r\n"); +str += (" ret = null;\r\n"); +str += (" break\r\n"); +str += ' }\r\n'; +str += ' return(ret);\r\n'; +str += '}'; + +console.log('Value saved to clipboard...'); +require('clipboard')(str); +process.exit(); + + + var check = {}; var buffer = Buffer.alloc(8);