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">
.....
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: PFC
0 comentaris:
Publica un comentari a l'entrada
Subscriure's a Comentaris del missatge [Atom]
<< Inici