Duda con campos mltext como title o description

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā11-13-2013 06:01 AM
Buenas a todos.
Tengo dudas acerca del funcionamiento de los campos mltext y su comportamiento con los webscripts.
Para empezar, estoy usando alfresco 4.0-e.
Entiendo que un campo mltext, si lo modificas con un usuario que tiene por defecto español, solo modificas el campo en su versión de español, y que si lo hace un usuario con el idioma definido en inglés, este cambia los valores del idioma inglés.
En los webscripts:
Si ejecutas un webscript usando la url /alfresco/service/xxx, este ejecuta el webscript y te retorna los datos segĆŗn el idioma definido en el navegador.
Si ejecutas un webscript usando la url /alfresco/wcs/xxx, este ejecuta el script con el idioma del usuario logueado (pero siempre tiene que haber un usuario loginado para que funcione, sinos te lleva a la pƔgina de login)
Hasta aquĆ lo entiendo.
Mis dudas vienen ahora.
1-
Por ejemplo, si uso un webscript según navegador (/alfresco/service/xxx), si el idioma del navegador no ha estado definido en la propiedad (pongamos que nos viene un alemÔn), si ningún usuario alemÔn ha modificado el texto, que texto se muestra? cuÔl es el idioma por defecto y como se define?
2-
Como hago para cambiar el texto de una propiedad por defecto?
Imaginad que creo un documento, y le pongo "Patatas", viene el ingles y le pone "Potatoes", pero luego veo que me he equivocado, y que en vez de "Patatas", querĆa poner "Patata", puedo entrar y modificar el castellano, y puede entrar el inglĆ©s para modificarlo, pero el por defecto me seguirĆ” siendo "Patatas"
3-
Este es otro problema con el que me he encontrado.
Tengo distintos webscripts que me devuelven unos documentos segĆŗn el tipo y la bĆŗsqueda. Me los devuelve en formato JSON.
Y tengo una aplicación externa, que consulta estos webscripts, y muestra la información en una web.
Para realizar dichas consultas, primero hago un login con unas url, /alfresco/service/api/login.json?u=usuarioWeb&pw=passwordUsarioWeb
Y obtengo el ticket.
DespuƩs hago las llamadas a estos webscripts pasƔndoles el ticket obtenido
/alfresco/service/xxx?alf_ticket=yyy
Esto me devuelve el json segĆŗn el idioma en que se ejecuta el tomcat del servidor, y no tiene en cuenta el idioma del navegador.
Me encuentro de que para mostrar la pĆ”gina en espaƱol, tengo que ejecutar el tomcat en espaƱol, esto me limita mucho el multi-idioma, ya que querĆa aprovechar la misma aplicación para distintos idiomas.
ProbĆ© intentado usar la url /alfresco/wcs/xxx, llamando a un usuario distinto, ej: usando el usuarioWebEs, usuarioWebEN, ā¦
pero esto me da un error, ya que usando /alfresco/wcs/, no admite tickets, ya que has de tener el login del navegador.
Hay alguna manera de poder ejecutar una url con wcs y que coja el idioma del usuario que yo le diga? o sea, alguna manera de hacer login desde la aplicación externa?
O como se deberĆa hacer para usar los webscripts desde aplicaciones externas a alfresco usando /alfresco/service y poder usar el multiidioma del propio navegador en vez del del tomcat?
4-
Otra solución que estoy barajando, es la de que al webscript le pase el locale del navegador, recoger la variable y coger el campo title/description con el idioma del locale que me llegue, asi me aseguro de que el json devuelto sea correcto.
Pero no se como se puede llegar a coger.
Yo uso los webscripts con la api, no uso JAVA, uso la api de javascript.
un ejemplo de webscript seria este:
prueba1.get.desc.xml
prueba1.get.js
prueba1.get.json.ftl
se podria hacer lo que yo digo? ya sea en el .ftl o en .js
ejemplo en prueba1.get.js:
como seria para coger el title en el idioma que yo quiera?
Para cualquier cosa que no haya quedado clara me lo decĆs e intento explicarlo mejor
Muchas gracias de antemano.
Tengo dudas acerca del funcionamiento de los campos mltext y su comportamiento con los webscripts.
Para empezar, estoy usando alfresco 4.0-e.
Entiendo que un campo mltext, si lo modificas con un usuario que tiene por defecto español, solo modificas el campo en su versión de español, y que si lo hace un usuario con el idioma definido en inglés, este cambia los valores del idioma inglés.
En los webscripts:
Si ejecutas un webscript usando la url /alfresco/service/xxx, este ejecuta el webscript y te retorna los datos segĆŗn el idioma definido en el navegador.
Si ejecutas un webscript usando la url /alfresco/wcs/xxx, este ejecuta el script con el idioma del usuario logueado (pero siempre tiene que haber un usuario loginado para que funcione, sinos te lleva a la pƔgina de login)
Hasta aquĆ lo entiendo.
Mis dudas vienen ahora.
1-
Por ejemplo, si uso un webscript según navegador (/alfresco/service/xxx), si el idioma del navegador no ha estado definido en la propiedad (pongamos que nos viene un alemÔn), si ningún usuario alemÔn ha modificado el texto, que texto se muestra? cuÔl es el idioma por defecto y como se define?
2-
Como hago para cambiar el texto de una propiedad por defecto?
Imaginad que creo un documento, y le pongo "Patatas", viene el ingles y le pone "Potatoes", pero luego veo que me he equivocado, y que en vez de "Patatas", querĆa poner "Patata", puedo entrar y modificar el castellano, y puede entrar el inglĆ©s para modificarlo, pero el por defecto me seguirĆ” siendo "Patatas"
3-
Este es otro problema con el que me he encontrado.
Tengo distintos webscripts que me devuelven unos documentos segĆŗn el tipo y la bĆŗsqueda. Me los devuelve en formato JSON.
Y tengo una aplicación externa, que consulta estos webscripts, y muestra la información en una web.
Para realizar dichas consultas, primero hago un login con unas url, /alfresco/service/api/login.json?u=usuarioWeb&pw=passwordUsarioWeb
Y obtengo el ticket.
DespuƩs hago las llamadas a estos webscripts pasƔndoles el ticket obtenido
/alfresco/service/xxx?alf_ticket=yyy
Esto me devuelve el json segĆŗn el idioma en que se ejecuta el tomcat del servidor, y no tiene en cuenta el idioma del navegador.
Me encuentro de que para mostrar la pĆ”gina en espaƱol, tengo que ejecutar el tomcat en espaƱol, esto me limita mucho el multi-idioma, ya que querĆa aprovechar la misma aplicación para distintos idiomas.
ProbĆ© intentado usar la url /alfresco/wcs/xxx, llamando a un usuario distinto, ej: usando el usuarioWebEs, usuarioWebEN, ā¦
pero esto me da un error, ya que usando /alfresco/wcs/, no admite tickets, ya que has de tener el login del navegador.
Hay alguna manera de poder ejecutar una url con wcs y que coja el idioma del usuario que yo le diga? o sea, alguna manera de hacer login desde la aplicación externa?
O como se deberĆa hacer para usar los webscripts desde aplicaciones externas a alfresco usando /alfresco/service y poder usar el multiidioma del propio navegador en vez del del tomcat?
4-
Otra solución que estoy barajando, es la de que al webscript le pase el locale del navegador, recoger la variable y coger el campo title/description con el idioma del locale que me llegue, asi me aseguro de que el json devuelto sea correcto.
Pero no se como se puede llegar a coger.
Yo uso los webscripts con la api, no uso JAVA, uso la api de javascript.
un ejemplo de webscript seria este:
prueba1.get.desc.xml
prueba1.get.js
prueba1.get.json.ftl
se podria hacer lo que yo digo? ya sea en el .ftl o en .js
ejemplo en prueba1.get.js:
//meto el node en una variablevar node = cogerNodo();//cojo el titlevar title = node.properties["cm:title"];model.title=title;āāāāā
como seria para coger el title en el idioma que yo quiera?
Para cualquier cosa que no haya quedado clara me lo decĆs e intento explicarlo mejor

Muchas gracias de antemano.
Labels:
- Labels:
-
Archive
8 REPLIES 8
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā11-14-2013 06:07 AM
Buenas Ruben.
El tema que planteas no es para nada sencillo y me parece que partes de la que has descrito (planteamientos como la de los webscripts, por ejemplo) no son correctos. Hasta donde llego, solo Share y wqs cogen del browser el locale del lenguage, pero Ʃsto no ocurre con alfresco porque cuando te logas eliges el lenguage (en el login.jsp).
Antes de nada, has leĆdo este artĆculo?
Vamos poco a poco site parece bien porque sino de verdad que es un caos.
Un saludo.
El tema que planteas no es para nada sencillo y me parece que partes de la que has descrito (planteamientos como la de los webscripts, por ejemplo) no son correctos. Hasta donde llego, solo Share y wqs cogen del browser el locale del lenguage, pero Ʃsto no ocurre con alfresco porque cuando te logas eliges el lenguage (en el login.jsp).
Antes de nada, has leĆdo este artĆculo?
Vamos poco a poco site parece bien porque sino de verdad que es un caos.
Un saludo.

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā11-14-2013 06:23 AM
Si que lo he leĆdo
Precisamente de ahĆ he sacado el funcionamiento de los webscripts:
http://wiki.alfresco.com/wiki/Multilingual_Document_Support#Web_Scripts_and_Templates
ahi es donde dice que si llamas a un webscript usando: /alfresco/service/xxx, coge el idioma del navegador, y que si usas /alfresco/wcs/xxx, coge el del usuario.
Yo hasta ahora usaba el primer método, ya que el webscript necesita autenticación para poder acceder a la carpeta donde estÔn los documentos.
Y para poder hacer una llamada externa, lo que hacia era coger el ticket (que es una especie de login), y llamar a la url usando el alf_ticket.
Por eso me encuentro con el problema de que si quiero usar /wcs (que no es wqs como dices), no puedo usar el ticket, ya que no me lo coge (necesita autenticación via web)
Precisamente de ahĆ he sacado el funcionamiento de los webscripts:
http://wiki.alfresco.com/wiki/Multilingual_Document_Support#Web_Scripts_and_Templates
ahi es donde dice que si llamas a un webscript usando: /alfresco/service/xxx, coge el idioma del navegador, y que si usas /alfresco/wcs/xxx, coge el del usuario.
Yo hasta ahora usaba el primer método, ya que el webscript necesita autenticación para poder acceder a la carpeta donde estÔn los documentos.
Y para poder hacer una llamada externa, lo que hacia era coger el ticket (que es una especie de login), y llamar a la url usando el alf_ticket.
Por eso me encuentro con el problema de que si quiero usar /wcs (que no es wqs como dices), no puedo usar el ticket, ya que no me lo coge (necesita autenticación via web)
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā11-14-2013 06:54 AM

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā11-15-2013 02:22 AM
Si, se puede decir que es una app externa que ataca alfresco.
Pero realmente lo que tengo es esto:
Una aplicacion Web con JAVA i struts 2.
Basicamente, lo que tengo es una classe JAVA, que lo que hace es llamadas a los webscripts que tengo creados.
Cada webscript me devuelve información en JSON, que me ocupo de mostrarla de una manera "bonita" en la web.
Las llamadas las hago asi:
<java>
public static final String URL_TICKET = "http://www.yyy.es/alfresco/service/api/login.json?u=userweb&pw=passwordweb";
public static final String URL_DOC1 = "http://www.yyy.es/alfresco/service/xxx/search";
ā¦
//esto me devuelve un JSON con el ticket necesario para recoger la información de alfresco
JSONObject json = getUrl(URL_TICKET);
String ticket = json.getJSONObject("data").getString("ticket");
//esto me devuelve la información que necesito
//tengo los webscripts con muchisimas mas variables, para mostrar unas u otras cosas, según categoria, búsqueda, tags⦠pero lo pongo asà para simplificar
String urlDoc1 = URL_DOC1 + "?alf_ticket="+ticket;
JSONObject datos = getUrl(urlDoc1)
ā¦
//y esta es la funciona getUrl
public JSONObject getUrl(String urlStr) throws IOException
{
// System.out.println(Locale.getDefault());
// Locale.setDefault(new Locale("en","US"));
// System.out.println(Locale.getDefault());
URL url = new URL(urlStr);
BufferedReader in = null;
try {
// Volcamos lo recibido al buffer
in = new BufferedReader(new InputStreamReader(url.openStream()));
} catch(Throwable t){}
String inputLine = "";
String inputText = "";
// System.out.println("abans if null");
if(in != null)
{
// System.out.println("not null");
// System.out.println(in.toString());
while ((inputLine = in.readLine()) != null) {
inputText = inputText + inputLine;
}
}
else
inputText = "{}";
// System.out.println("inputText: "+inputText);
if(inputText.equals("")) inputText = "{}";
return (JSONObject) JSONSerializer.toJSON(inputText);
}
</java>
Como ves, hago las consultas por url del webscript, pero para eso, primero tengo que hacer un "login" para conseguir el ticket, y una vez tengo el ticket, puedo "atacar alfresco".
Pero como te comentaba, de este modo estoy "obligado" a usar el webscript con /alfresco/service/xxx, y me coge el idioma de la aplicación (y no la del navegador), ya que si pongo /alresco/wcs/xxx, me da un error puesto que la aplicación no esta logueada en alfresco.
A mi me interesa poder ejecutar el webscript con distintos usuarios, y que el idioma que me coja sea el del usuario, y no el del navegador o el de la aplicación externa.
Pero realmente lo que tengo es esto:
Una aplicacion Web con JAVA i struts 2.
Basicamente, lo que tengo es una classe JAVA, que lo que hace es llamadas a los webscripts que tengo creados.
Cada webscript me devuelve información en JSON, que me ocupo de mostrarla de una manera "bonita" en la web.
Las llamadas las hago asi:
<java>
public static final String URL_TICKET = "http://www.yyy.es/alfresco/service/api/login.json?u=userweb&pw=passwordweb";
public static final String URL_DOC1 = "http://www.yyy.es/alfresco/service/xxx/search";
ā¦
//esto me devuelve un JSON con el ticket necesario para recoger la información de alfresco
JSONObject json = getUrl(URL_TICKET);
String ticket = json.getJSONObject("data").getString("ticket");
//esto me devuelve la información que necesito
//tengo los webscripts con muchisimas mas variables, para mostrar unas u otras cosas, según categoria, búsqueda, tags⦠pero lo pongo asà para simplificar
String urlDoc1 = URL_DOC1 + "?alf_ticket="+ticket;
JSONObject datos = getUrl(urlDoc1)
ā¦
//y esta es la funciona getUrl
public JSONObject getUrl(String urlStr) throws IOException
{
// System.out.println(Locale.getDefault());
// Locale.setDefault(new Locale("en","US"));
// System.out.println(Locale.getDefault());
URL url = new URL(urlStr);
BufferedReader in = null;
try {
// Volcamos lo recibido al buffer
in = new BufferedReader(new InputStreamReader(url.openStream()));
} catch(Throwable t){}
String inputLine = "";
String inputText = "";
// System.out.println("abans if null");
if(in != null)
{
// System.out.println("not null");
// System.out.println(in.toString());
while ((inputLine = in.readLine()) != null) {
inputText = inputText + inputLine;
}
}
else
inputText = "{}";
// System.out.println("inputText: "+inputText);
if(inputText.equals("")) inputText = "{}";
return (JSONObject) JSONSerializer.toJSON(inputText);
}
</java>
Como ves, hago las consultas por url del webscript, pero para eso, primero tengo que hacer un "login" para conseguir el ticket, y una vez tengo el ticket, puedo "atacar alfresco".
Pero como te comentaba, de este modo estoy "obligado" a usar el webscript con /alfresco/service/xxx, y me coge el idioma de la aplicación (y no la del navegador), ya que si pongo /alresco/wcs/xxx, me da un error puesto que la aplicación no esta logueada en alfresco.
A mi me interesa poder ejecutar el webscript con distintos usuarios, y que el idioma que me coja sea el del usuario, y no el del navegador o el de la aplicación externa.
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā11-18-2013 08:17 AM
Muchas gracias por la info. Lo comprendo todo exepto una cosa: Cuando dices que lo coja dle usuario, a qué propiedad o de dónde quieres sacar el valor del usuario concretamente? Creo que el objeto user no tiene ninguna propiedad qcon la que tu puedas saber el lenguaje por defecto.

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā11-18-2013 09:13 AM
Me refiero al idioma del usuario.
Llamando a un webscript usando /alfresco/service coge el idioma que tengas definido en el navegador (o en mi caso del Java).
Llamando a un webscript usando /alfresco/wcs coge el idioma que tenga definido el usuario que este logueado.
El problema es lo que decĆa antes, que usando wcs hay que estar logueado y no se como hacerlo desde el JAVA externo.
En cambio con el /alfresco/service, consigo hacer "login" gracias a los ticket, pero me devuelve el JSON con el idioma que me coge del JAVA externo
Puedes hacer la llamada al webscript de las 2 maneras:
http://www.yyy.es/alfresco/service/xxx/search
http://www.yyy.es/alfresco/wcs/xxx/search
El resultado es el mismo, la diferencia esta en el idioma devuelto para los campos mltext.
Llamando a un webscript usando /alfresco/service coge el idioma que tengas definido en el navegador (o en mi caso del Java).
Llamando a un webscript usando /alfresco/wcs coge el idioma que tenga definido el usuario que este logueado.
El problema es lo que decĆa antes, que usando wcs hay que estar logueado y no se como hacerlo desde el JAVA externo.
En cambio con el /alfresco/service, consigo hacer "login" gracias a los ticket, pero me devuelve el JSON con el idioma que me coge del JAVA externo
Puedes hacer la llamada al webscript de las 2 maneras:
http://www.yyy.es/alfresco/service/xxx/search
http://www.yyy.es/alfresco/wcs/xxx/search
El resultado es el mismo, la diferencia esta en el idioma devuelto para los campos mltext.
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā11-18-2013 11:31 AM
Llamando a un webscript usando /alfresco/wcs coge el idioma que tenga definido el usuario que este logueado.ā
SegĆŗn leo en la wiki:
Accessing a web script via /alfresco/wcs returns content in whatever language is selected by the user's profile in Alfresco Explorer. ā
Por eso necesitas el login, porque de otra forma no podrĆas obtener ese dato.Pues estamos apaƱaos. Dejame darle maƱana algunas vueltas a ver si veo algo y te comento pero a priori ni idea

A ver si alguien puede echar un cable (vendrĆa de perlas!).
Un saludo.
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā11-19-2013 03:00 AM
Uhmmm, estaba pensando que lo mismo serĆa buen comienzo indagar cómo lo hace Alfresco. Porque si te vas a la wiki te pone esto:
Si sabemos de antemano que esta clase toma del perfil del usuario el lenguaje a lo mejor mirando quĆ© hace esa clase o cómo la implementa alfresco podrĆamos dar con la clave. SeguirĆ© mirando y te irĆ© contando si encuentro avances.
/alfresco/wcservice or /alfresco/wcs mapped to Web Client Authenticator ā
Si sabemos de antemano que esta clase toma del perfil del usuario el lenguaje a lo mejor mirando quĆ© hace esa clase o cómo la implementa alfresco podrĆamos dar con la clave. SeguirĆ© mirando y te irĆ© contando si encuentro avances.
