Especificació tècnica
[modifica] Introducció
Aquest document conté l'especificació tècnica del CatalanitzadorPerAWindows
El codi font es troba a Github.
[modifica] Arquitectura
Algunes decisions importants a nivell d'arquitectura:
- El programa està fet en C++. El motiu és perquè ara és la tecnologia que permet fer aplicacions lleugeres i compactes i que es poden executar en totes les versions del Windows, inclús les més antigues.
- L'aplicació té una definició interna de connectors (classe Action.h) que defineix les accions bàsiques que totes les operacions d'instal·lació i configuració han de suportar. Afegir suport per nous paquets d'idioma o canvis configuracions és tant senzill com implementar aquesta classe abstracta (veure exemple del paquet d'idioma del Windows).
- Utilitzem injecció de dependències per facilitar proves unitàries i el mocking d'objectes.
- Existeix un únic binari per tots els sistemes operatius en totes les edicions. Això vol dir que el mateix binari ha de funcionar en totes les versions del Windows i en entorns de 32 i 64 bits.
[modifica] Informació de depuració
Informació a tenir en compte durant la depuració de problemes:
- El Catalanitzador genera un fitxer de registre amb el resultat de totes les accions que ha realitzat. Aquest fitxer es diu CatalanitzadorPerAlWindows.log i es troba al directori temporal del sistema al qual podeu arribar-hi fent: cd %temp%. Aquest és un fitxer important per al diagnòstic de problemes.
- Totes les baixades que fa l'instal·lador són d'aquesta adreça: http://www.softcatala.org/pub/softcatala/catalanitzador/
[modifica] Accions
[modifica] Paquet d'idioma per al Windows
Prerequisits:
- Si la llengua del Windows no és l'espanyol o el francès es mostra un missatge d'avís i no es pot instal·lar el paquet.
- En entorns de 32 bits si l'usuari no té Windows XP, Vista o 7 es mostra un missatge alertant que no hi ha disponible paquet d'idioma per aquesta versió.
- Si l'usuari té 64 bits i no té un Windows 7, es mostra un missatge alertant que no hi ha disponible paquet d'idioma per aquesta versió.
Es considera necessària:
- En sistemes Windows XP si la clau de registre HKEY_CURRENT_USER\Control Panel\Desktop\MUILanguagePending no és 403.
- En altres sistemes, si la clau de registre SYSTEM\CurrentControlSet\Control\MUI\UILanguages\ca-ES no existeix.
Paquets d'idioma usats:
- 32 bits
- Windows XP: http://www.softcatala.org/pub/softcatala/catalanitzador/WindowsXP/Build2006Professional/LIPsetup.msi
- Windows XP SP2 o millor: http://www.softcatala.org/pub/softcatala/catalanitzador/WindowsXP/XP2orlater/LIPsetup.msi
- Windows Vista: http://www.softcatala.org/pub/softcatala/catalanitzador/WindowsVista/lip_ca-es.mlc
- Windows 7:http://www.softcatala.org/pub/softcatala/catalanitzador/Windows7/LIP_ca-ES-32bit.mlc
- 64 bits
Opcions postinstal·lació:
- En sistemes operatius diferents al XP (Vista i 7 en 32 i 64 bits) la clau de registre HKEY_CURRENT_USER\Control Panel\Desktop\PreferredUILanguages es configura a 'ca-ES' per preseleccionar el català com idioma per defecte.
[modifica] Paquet d'idioma i corrector per al Microsoft Office
Prerequisits:
- Cap
Paquets d'idioma usats:
- Microsoft Office 2003: http://www.softcatala.org/pub/softcatala/catalanitzador/office2003/office2003-lip.cab
- Microsoft Office 2007: http://www.softcatala.org/pub/softcatala/catalanitzador/office2007/office2007-lip.exe
- Microsoft Office 2010: http://www.softcatala.org/pub/softcatala/catalanitzador/office2010/LanguageInterfacePack-x86-ca-es.exe
Execució:
- En 2003 es desempaqueta primer el CAB i després s'executa
- En 2007 i 2010 s'executa el paquet d'idioma directament
Opcions postinstal·lació:
- A la clau del registre Software\\Microsoft\\Office\\%s\\Common\\LanguageResources on %s és la versió de l'Office
- S'estableix la clau UILanguage al valor 1027 per deixar el català com a llengua per defecte
- En Microsoft Office 2007 i 2010 clau FollowSystemUI s'estableix a Off perquè s'ignori la llengua del sistema sigui quina sigui i s'utilitzi la configurada per l'Office.
[modifica] Paquet d'idioma per a l'Internet Explorer
Prerequisits:
- Generals
- Si el sistema operatiu no és Windows XP, Windows Vista o Windows 7 es mostra un error explicant que el sistema no és compatible.
- Si l'Internet Explorer no és 6, 7, 8 ó 9 en 32 bits o bé 9 en 64 bits es mostra un missatge dient que la versió és desconeguda.
- IE 6
- En Windows XP no es pot seleccionar l'acció ja que l'IE 6 catalanitza com a part del paquet d'idioma.
- IE 7
- En Windows XP cal seleccionar el paquet d'idioma de Windows per poder-ho seleccionar. En Windows Vista no es pot seleccionar l'acció ja que l'IE 7 catalanitza com a part del paquet d'idioma.
- IE 8
- En Windows XP i Windows Vista cal seleccionar el paquet d'idioma de Windows per poder-ho seleccionar. En Windows 7 no es pot seleccionar l'acció ja que l'IE 8 catalanitza com a part del paquet d'idioma.
- IE 9
- En Windows Vista i Windows 7 cal seleccionar el paquet d'idioma de Windows per poder-ho seleccionar.
Nota: Es considera que els següents casos no són possibles:
- IE 6 sota Windows Vista ja que aquesta versió de Windows ve amb IE 7
- IE 6 sota Windows 7 ja que aquesta versió de Windows ve amb IE 8
- IE 7 sota Windows 7 ja que aquesta versió de Windows ve amb IE 8
- IE 9 sota Windows XP ja que no és compatible
Paquets d'idioma usats:
- IE 7
- IE 8
- IE 9
- Windows Vista: http://www.softcatala.org/pub/softcatala/catalanitzador/InternetExplorer/IE9-Windows6.0-LanguagePack-x86-cat.msu
- Windows 7 32 bits: http://www.softcatala.org/pub/softcatala/catalanitzador/InternetExplorer/IE9-Windows6.1-LanguagePack-x86-cat.msu"
- Windows 7 64 bits: http://www.softcatala.org/pub/softcatala/catalanitzador/InternetExplorer/IE9-Windows6.1-LanguagePack-x64-cat.msu"
[modifica]
Prerequisits:
- Cap
Es considera necessària:
- Si el primer valor de la clau Software\Microsoft\Internet Explorer\International\AcceptLanguage no és ca-es o bé ca, és a dir, si el català no la primer llengua de navegació.
Execució:
- Afegeix a Software\Microsoft\Internet Explorer\International\AcceptLanguage el codi d'idioma ca sempre com a primer, eliminat-lo si estava en una altre posició, i mantenint els altres idiomes que l'usuari tingues.
[modifica] Configura el català com a llengua del sistema
Prerequisits:
- Cap
Es considera necessària:
- Si la clau del registre HKEY_CURRENT_USER\Control Panel\International\Locale no és 403.
Execució:
- S'executa el amb configuracions per Windows XP i Windows Vista o superiors.
[modifica] Configura el català com a llengua d'escriptura
Prerequisits:
- Cal tenir un Windows Vista o 7 instal·lat
- Si no hi ha el català, es comprova que es tingui un teclat espanyol tradicional o modern (codis '40c' i 'c0a')
Es considera necessària:
- Quan el català no està instal·lat o no és la llengua predeterminada
Execució:
- Instal·la el teclat català i el posa per defecte
[modifica]
Execució:
- Obtenim la ubicació del fitxer profiles.ini demanant al sistema on es troba el directori de sistema CSIDL_APPDATA i afegint \Mozilla\Firefox\profiles.ini.
- Llegim el profiles.ini fitxer Path i trobem el primer directori del perfil.
- Cerquem el fitxer prefs.js en directori del primer perfil que trobem
- Cerquem la preferència intl.accept_languages dins del fitxer, afegim el català en primera posició si no existeix o creem la línia si no hi era.
[modifica]
Es considera necessària:
- Si el fitxer %camí%/User Data/Local State conté al bloc intl la clau app_locale no conté el valor 'ca'. Aquest valor indica el locale de l'aplicació i predetermina la llengua de navegació al català.
- Si això no és cert, el fitxer User Data/Default/Preferences ' conté al bloc intl la clau accept_languages no conté el valor 'ca' o bé simplement no existeix.
[modifica] Servidor
[modifica] Descripció del servei Web
Hi ha una URL on es connecta el Catalanitzador i fa un POST en XML de totes les dades recollides durant l'execució del programa. Aquestes dades es reben al servidor, s'analitza el XML, i s'emmagatzema a la base de dades a les taules corresponents.
El servei web a l'analitzar l'XML mira si la versió de l'aplicació i sistema operatiu ja estan a les taules corresponents, o crea una nova entrada per elles, és a dir, aquestes taules es van creant a mida que són necessàries (dades transaccionals no de domini).
[modifica] Model de dades
Taula: applications
Objectiu: Conté les versions existents del Catalanitzador
| Camp | Tipus | Descripció | Exemple |
|---|---|---|---|
| ID | int (autoincrement) | Identificador únic d'aquest registre | 1 (pel registre 1) |
| MajorVersion | tinyint | Versió major del Catalanitzador | 1 (si la versió del Catalanitzador és 1.23) |
| MinorVersion | tinyint | Versió menor del Catalanitzador | 2 (si la versió del Catalanitzador és 1.23) |
| Revision | tinyint | Revisió del Catalanitzador | 3 (si la versió del Catalanitzador és 1.23) |
Aquesta taula tindrà una entrada per cada versió que alliberem del Catalanitzador, uns 4 ó 5 elements com a màxim per cada any durant el qual el desenvolupament sigui actiu.
Taula: operatings
Objectiu: Conté les possibles versions de sistemes operatius
| Camp | Tipus | Descripció | Exemple |
|---|---|---|---|
| ID | int (autoincrement) | Identificador únic d'aquest registre | 1 (pel registre 1) |
| OSMajorVersion | tinyint | Versió major del sistema operatiu | 6 (Del nombre 6.1 que correspon a Windows 7) |
| OSMinorVersion | tinyint | Versió menor del sistema operatiu | 1 (Del nombre 6.1 que correspon a Windows 7) |
| SPMajorVersion | tinyint | Versió major del service pack | 3 (Del nombre 3.0 que correspon al SP3) |
| SPMinorVersion | tinyint | Versió menor del service pack | 0 (Del nombre 3.0 que correspon al SP3) |
| SuiteMask | tinyint | Tipus de sistema operatiu | Identificador numèric (és Ultimate, Premium, etc). |
| ProductType | int | Tipus de producte | Identificador numèric (VER_NT_WORKSTATION, etc). |
| Name | text | Nom del sistema operatiu | Per exemple, Windows XP |
| Bits | tinyint | Bits del sistema operatiu | Per exemple, 32 o 64 bits |
Aquesta taula tindrà unes quantes dotzenes d'elements per identificar de manera única totes les versions de Windows.
Taula: sessions
Objectiu: Conté cada instància d'execució del Catalanitzador
| Camp | Tipus | Descripció | Exemple |
|---|---|---|---|
| ID | int (autoincrement) | Identificador únic d'aquest registre | 1 (pel registre 1) |
| Date | DATETIME | Data en que es va crear l'entrada a la base de dades (execució de l'instància) | |
| ApplicationsID | int | ID a la taula applications de la versió de Catalanitzador usat en aquesta sessió | |
| OperatingsID | int | ID a la taula operatings del sistema operatiu usat en aquesta sessió | |
| LogFile | text | Conté un bolcat del contingut del fitxer CatalanitzadorPerAlWindows.log per poder depurar l'execució. Aquest fitxer no hauria de tenir una mida entre 4 i 5Kb. Potser en el futur podria doblar com la seva mida com a molt. | |
| guid | ? | Guid únic per la màquina on executem que ens permet diferenciar entre execucions noves a un PC i sessions al mateix PC | Exemple '6eddb85f-ba6f-49ab-a0e8-76c6d67cd2f4' |
La taula sessions té relacions 1 to 1 amb actions, operatings i versions.
Aquesta taula tindrà una entrada per cada post que es faci al servei web, és dir, per cada execució del Catalanitzador. Aquesta taula tindrà molts elements.
Taula: actions
Objectiu: Conté un conjunt d'accions executades per una instància
| Camp | Tipus | Descripció | Exemple |
|---|---|---|---|
| SessionID | int | ID a la taula sessions que indica a quina sessió pertany aquesta instància d'acció | |
| ActionID | int | ID únic de l'acció executada (enum, 1 = windows lpi, 2, etc) | |
| Version | char (16) | En algunes accions, com el paquet d'idioma de Microsoft Office, és interessant saber la versió sobre la que s'ha executat l'acció. Un camp lliure de text. | |
| Result | int | Enum del resultat (NotSelected, DoesNotApply, Successful, FinishedWithError) |
La taula accions té relacions many to 1 amb sessions.
Aquesta taula tindrà tantes entrades com l'entrada de sessions multiplicades pel nombre d'accions que suporti el Catalanitzador. Si el Catalanitzador suporta 5 accions i tenim 10 sessions, tindria un total de 50 registres. És la taula que tindrà més entrades del model.
Taula: inspectors
Objectiu: Conté dades que recollim de l'usuari per poder prendre millors decissons, per exemple versions d'aplicacions instal·lades.
| Camp | Tipus | Descripció | Exemple |
|---|---|---|---|
| SessionID | int | ID a la taula sessions que indica a quina sessió pertany aquesta instància d'inspectors | |
| InspectorID | int | ID únic de l'acció executada (enum, 1 = libreoffice, 2, etc) | |
| Key | char (128) | Clau del que guardem | Per exemple, 'Version' |
| Value | char (128) | Valor del que guardem | Per exemple, '3.5'} |
Estimació de carrega
Ens basem en un escenari optimista on el Catalanitzador fos força bé, i el fessin servir 10.000 usuaris mensualment. Això representaria:
- 10.000 registres mensuals a la taula 'sessions', 120.000 registres anualment.
- 100.000 registres mensuals a la taula 'actions', 1.000.000 registres anualment (basant-nos com amb que el instal·lador fes 10 accions, que segurament en una versió 2.0 les farà).
En quant a espai a disc la taula sessions és la més gran, pot necessitar uns 10Kb per registre en el pitjor cas (porta un fitxer log bolcat). Això podrien ser 1.000.000 registres x 10Kb que serien uns 9.5GB anuals.
[modifica] BD MySQL
Els scripts de creació de la base dades es troben al github del projecte.
[modifica] Descripció del XML
Aquest és un XML d'exemple com el que el Catalanitzador envia al servidor.
Veure: https://github.com/Softcatala/CatalanitzadorPerAWindows/blob/master/Server/results.xml







