diumenge, 27 de maig del 2007

Locales

He estat jugant una mica més amb les locales del OO.

EL que feia fins ara era agafar les locales del document que estaves escrivint i per tant posar el menú segons aquest idioma, no era la millor forma de fer-ho però funcionava.....

L'exemple aquí mateix:
def getLocale(ctx): smgr = ctx.ServiceManager desktop = smgr.createInstanceWithContext( "com.sun.star.frame.Desktop",ctx) model = desktop.getCurrentComponent() text = model.Text cursor = text.createTextCursor() locale = cursor.getPropertyValue("CharLocale") lang = locale.Language print lang

Ara he trobat una altra forma que és agafar directament el llenguatge que estàs fent servir a l'OpenOffice, el que fa es mirar el document de l'OO openoffice.org2/user/registry/data/org/openoffice/Setup.xcu el valor de ooLocale.

El contingut del fitxer és el següent:

tup" oor:package="org.openoffice"> ca

.....

I el codi:

def getOOoSetupValue(ctx,sNodePath,sValue):
sProvider = "com.sun.star.configuration.ConfigurationProvider"
sAccess = "com.sun.star.configuration.ConfigurationAccess"
aConfigProvider = ctx.ServiceManager.createInstance(sProvider)
prop = uno.createUnoStruct('com.sun.star.beans.PropertyValue')
prop.Name = "nodepath"
prop.Value = sNodePath
aSettings = aConfigProvider.createInstanceWithArguments(sAccess,(prop,))
return aSettings.getByName(sValue)

def getLocale(ctx):
ooLocale = getOOoSetupValue(ctx,"/org.openoffice.Setup/L10N","ooLocale")
print ooLocale

Com es pot veure fer les coses amb Python és _MOLT FÀCIL_ però l'OpenOffice és _MOLT PUTA_

Unes captures de pantalla:

LC_ALL=ca_AD.utf8 oowriter




LC_ALL=es_ES.utf8 oowriter



LC_ALL=en_US.utf8 oowriter



PD: Minor bugfixes with UTF-8 JO!JO!JO!

PD2: Jo ja he votat per botar l'alcalde, i tu?

Etiquetes de comentaris:

0 comentaris:

Publica un comentari a l'entrada

Subscriure's a Comentaris del missatge [Atom]

<< Inici