WSH Shell : Calendar |
Écrit par Gilles LAURENT | |||
13-04-2008 | |||
WSH Shell : Un calendrier (Gadget) perpétuel multilingue Une épreuve des Scripting Games 2008 consistait à écrire un script affichant un calendrier formaté à l'écran. Vous pouvez retrouver le descriptif détaillé de cette épreuve ici. Suite à cette épreuve, j'ai souhaité faire évoluer le code pour d'une part le porter en classe VBScript compatible avec la console WSH Shell (module externe) et d'autre part afficher le calendrier en fonction d'une locale (langue) spécifiée par une propriété de classe. Comme d'habitude vous trouverez les commentaires dans la console au fil de l'eau ! Le module se nomme _wshCalendar.inc et doit être instancié sous wshCalendar. So, Let's go ! Microsoft (R) Windows Script Host Version 5.6 Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés. _ _ _ ___ _ _ ___ _ _ _ | | | |/ __>| | | / __>| |_ ___ | || | | | | |\__ \| | \__ \| . |/ ._>| || | |__/_/ <___/|_|_| <___/|_|_|\___.|_||_| Windows Script Host (WSH) Shell v1.0.0.8 starting ... Registering components ... Registering dyncall.dll ... Loading external modules ... Loading _wshAdsi.inc ... Loading _wshCalendar.inc ... Loading _wshCodeSyntaxing.inc ... Loading _wshCultures.inc ... Loading _wshIni.inc ... Loading _wshWmi.inc ... Loading profiles ... Loading D:\Users\Dev\Copyright\WSH\Release\WSHShell_Profile.inc ... Loading D:\Documents and Settings\Gilles\Mes documents\WSH Shell\WSHShell_P... Welcome ... It's 13/04/2008 18:16:10 and WSH Shell is up ! Ready. WSH D:\Test> ' notre nouveau module est bien présent dans la liste des modules WSH D:\Test> ' automatiquement chargés. Il ne reste plus qu'à créer une WSH D:\Test> ' instance pour en bénéficier WSH D:\Test> Set oCal=New wshCalendar WSH D:\Test> ' détermination des membres (méthodes et propriétés) WSH D:\Test> gm(oCal) Category Name -------- ---- Sub DisplayCalendar () Property Culture Property nMonth Property nYear Property sMark Property Version WSH D:\Test> ' affichage du calendrier pour le mois en cours WSH D:\Test> oCal.DisplayCalendar() ________________________________ Avril 2008 -- Dim Lun Mar Mer Jeu Ven Sam 14 | 1 2 3 4 5 15 | 6 7 8 9 10 11 12 16 | »13 14 15 16 17 18 19 17 | 20 21 22 23 24 25 26 18 | 27 28 29 30 ________________________________ WSH D:\Test> ' la propriété nMonth permet de définir le mois [1..12] WSH D:\Test> ' la propriété nYear permet de définir l'année WSH D:\Test> ' affichage du calendrier du mois de Janvier 2010 WSH D:\Test> oCal.nYear=2010: oCal.nMonth=1 WSH D:\Test> oCal.DisplayCalendar ________________________________ Janvier 2010 -- Dim Lun Mar Mer Jeu Ven Sam 1 | 1 2 2 | 3 4 5 6 7 8 9 3 | 10 11 12 13 14 15 16 4 | 17 18 19 20 21 22 23 5 | 24 25 26 27 28 29 30 6 | 31 ________________________________ WSH D:\Test> ' configuration de la date courante (valeurs initiales) WSH D:\Test> oCal.nYear=Year(Date()): oCal.nMonth=Month(Date()) WSH D:\Test> WSH D:\Test> ' la propriété sMark permet de définir le marqueur du jour WSH D:\Test> echo oCal.sMark » WSH D:\Test> ' la propriété Culture permet d'afficher le calendrier dans la WSH D:\Test> ' locale (langue) spécifiée. La langue peut être spécifiée par WSH D:\Test> ' son LCID (ex: &H40c) ou alors par son code ISO (ex: fr-FR) WSH D:\Test> ' pour afficher le calendrier en Polonais (&h415 ou pl-PL) WSH D:\Test> oCal.Culture="pl-PL" WSH D:\Test> oCal.DisplayCalendar() ________________________________ Kwiecien 2008 -- Nie Pon Wto Sro Czw Pia Sob 14 | 1 2 3 4 5 15 | 6 7 8 9 10 11 12 16 | »13 14 15 16 17 18 19 17 | 20 21 22 23 24 25 26 18 | 27 28 29 30 ________________________________ WSH D:\Test> ' attention toutefois ! WSH D:\Test> ' certaines locales (langues) installées sur le système ne sont WSH D:\Test> ' pas supportées par VBScript. C'est le cas par exemple sur ma WSH D:\Test> ' plateforme XP SP2 (WSH 5.6) du Maori (&H481 ou mi-NZ) WSH D:\Test> oCal.Culture="mi-NZ" WSH D:\Test> oCal.DisplayCalendar() :: An error occured (447) :: Cet objet ne gère pas les paramètres régionaux en cours. WSH D:\Test> ' en fait c'est uniquement certains codes ISO (ex: mi-NZ) qui ne WSH D:\Test> ' sont pas définis par VBScript. Dans ce cas, spécifier le LCID WSH D:\Test> ' permet de résoudre le problème ! WSH D:\Test> oCal.Culture=&H481 WSH D:\Test> oCal.DisplayCalendar() ________________________________ Paenga-whawha 2008 -- Rat Man Tur Wen Tai Par Hat 14 | 1 2 3 4 5 15 | 6 7 8 9 10 11 12 16 | »13 14 15 16 17 18 19 17 | 20 21 22 23 24 25 26 18 | 27 28 29 30 ________________________________ WSH D:\Test> ' dans le cadre de ce projet, j'ai également développé le module WSH D:\Test> ' externe _wshCultures.inc permettant l'énumération dynamique WSH D:\Test> ' (via les API Win32 et le composant COM dyncall) des locales WSH D:\Test> ' (langues) installées sur la machine. Ce module sera documenté WSH D:\Test> ' dans un article dédié. Ci-dessous la liste des locales (langues) WSH D:\Test> ' installées sur mon système : WSH D:\Test> set oCul=New wshCultures WSH D:\Test> ft oCul.EnumSystemLocales(),"Language","","*" LCID ISO Language ---- --- -------- 1078 af-ZA Afrikaans 1052 sq-AL Albanais 1031 de-DE Allemand (Allemagne) 3079 de-AT Allemand (Autriche) 5127 de-LI Allemand (Liechtenstein) 4103 de-LU Allemand (Luxembourg) 2055 de-CH Allemand (Suisse) 7177 en-ZA Anglais (Afrique du Sud) 3081 en-AU Anglais (Australie) 10249 en-BZ Anglais (Belize) 4105 en-CA Anglais (Canada) 9225 en-CB Anglais (Caraïbes) 1033 en-US Anglais (États-Unis) 11273 en-TT Anglais (Île de la Trinité) 6153 en-IE Anglais (Irlande) 8201 en-JM Anglais (Jamaïque) 5129 en-NZ Anglais (Nouvelle-Zélande) 13321 en-PH Anglais (Philippines) 2057 en-GB Anglais (Royaume-Uni) 12297 en-ZW Anglais (Zimbabwe) 2092 az-AZ Azéri (cyrillique) 1068 az-AZ Azéri (latin) 1069 eu-ES Basque 1059 be-BY Biélorusse 5146 bs-BA Bosniaque 1026 bg-BG Bulgare 1027 ca-ES Catalan 1050 hr-HR Croate 4122 hr-BA Croate (Bosnie-Herzégovine) 1030 da-DK Danois 3082 es-ES Espagnol (alphabet international) 11274 es-AR Espagnol (Argentine) 16394 es-BO Espagnol (Bolivie) 13322 es-CL Espagnol (Chili) 9226 es-CO Espagnol (Colombie) 5130 es-CR Espagnol (Costa Rica) 12298 es-EC Espagnol (Équateur) 4106 es-GT Espagnol (Guatemala) 18442 es-HN Espagnol (Honduras) 17418 es-SV Espagnol (Le Salvador) 2058 es-MX Espagnol (Mexique) 19466 es-NI Espagnol (Nicaragua) 6154 es-PA Espagnol (Panama) 15370 es-PY Espagnol (Paraguay) 10250 es-PE Espagnol (Pérou) 20490 es-PR Espagnol (Porto Rico) 7178 es-DO Espagnol (République dominicaine) 1034 es-ES Espagnol (traditionnel) 14346 es-UY Espagnol (Uruguay) 8202 es-VE Espagnol (Venezuela) 1061 et-EE Estonien 1080 fo-FO Féroïen 1035 fi-FI Finnois 2060 fr-BE Français (Belgique) 3084 fr-CA Français (Canada) 1036 fr-FR Français (France) 5132 fr-LU Français (Luxembourg) 6156 fr-MC Français (Monaco) 4108 fr-CH Français (Suisse) 1110 gl-ES Galicien 1106 cy-GB Gallois 1032 el-GR Grec 1038 hu-HU Hongrois 1057 id-ID Indonésien 1039 is-IS Islandais 1040 it-IT Italien (Italie) 2064 it-CH Italien (Suisse) 1087 kk-KZ Kazakh 1088 ky-KG Kyrgyz (cyrillique) 1062 lv-LV Letton 1063 lt-LT Lituanien 1071 mk-MK Macédonien Ex Rép. yougoslave de Macédoine 2110 ms-BN Malais (Brunei Darussalam) 1086 ms-MY Malais (Malaisie) 1082 mt-MT Maltais 1153 mi-NZ Maori 1104 mn-MN Mongol (cyrillique) 2067 nl-BE Néerlandais (Belgique) 1043 nl-NL Néerlandais (Pays-Bas) 1044 nb-NO Norvégien (Bokmål) 2068 nn-NO Norvégien (Nynorsk) 2115 uz-UZ Ouzbek (cyrillique) 1091 uz-UZ Ouzbek (latin) 1045 pl-PL Polonais 1046 pt-BR Portugais (Brésil) 2070 pt-PT Portugais (Portugal) 1131 qu-BO Quechua (Bolivie) 2155 qu-EC Quechua (Équateur) 3179 qu-PE Quechua (Pérou) 1048 ro-RO Roumain 1049 ru-RU Russe 4155 se-NO Same de Lule (Norvège) 5179 se-SE Same de Lule (Suède) 8251 se-FI Same de Skolt (Finlande) 9275 se-FI Same d'Inari (Finlande) 3131 se-FI Same du nord (Finlande) 1083 se-NO Same du nord (Norvège) 2107 se-SE Same du nord (Suède) 6203 se-NO Same du sud (Norvège) 7227 se-SE Same du sud (Suède) 3098 sr-SP Serbe (cyrillique) 7194 sr-BA Serbe (cyrillique, Bosnie-Herzégovine) 2074 sr-SP Serbe (latin) 6170 sr-BA Serbe (latin, Bosnie-Herzégovine) 1051 sk-SK Slovaque 1060 sl-SI Slovène 1132 ns-ZA Sotho du nord 1053 sv-SE Suédois 2077 sv-FI Suédois (Finlande) 1089 sw-KE Swahili 1092 tt-RU Tatar 1029 cs-CZ Tchèque 1074 tn-ZA Tswana 1055 tr-TR Turc 1058 uk-UA Ukrainien 1076 xh-ZA Xhosa 1077 zu-ZA Zoulou WSH D:\Test> ' Enjoy ! WSH D:\Test> Listing 1 : _wshCalendar.inc
|
|||
Dernière mise à jour : ( 15-04-2008 ) |