Products

Solutions

Resources

Partners

Community

Blog

About

New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

The Community Blog is a personal opinion of community members and by no means the official standpoint of DNN Corp or DNN Platform. This is a place to express personal thoughts about DNNPlatform, the community and its ecosystem. Do you have useful information that you would like to share with the DNN Community in a featured article or blog? If so, please contact .

The use of the Community Blog is covered by our Community Blog Guidelines - please read before commenting or posting.


Cómo cambiar el idioma predeterminado en DNN

A continuación traducimos las instrucciones para cambiar el idioma predeterminado de DNN, tal y como nos lo explican desde 40 Fingers. Podéis encontrar el artículo original aquí: Changing the DNN default language

Localización de contenido en la base de datos

En primer lugar, necesitamos saber cómo las Tabs (páginas, pero vamos a llamarlas también como la tabla en la base de datos, Tabs) y los módulos están realmente vinculados entre sí en DNN, según los idiomas. Centrémonos primero en las tabs.

La tabla Tabs contiene varios campos involucrados en el proceso de localización:

  • UniqueId: un GUID (identificador) único para cada página
  • DefaultLanguageGuid: un GUID cuyo valor puede ser:
    • NULL para páginas en el idioma predeterminado del sitio
    • NULL para páginas neutras (sin idioma asignado, son comunes a todos los idiomas)
    • NULL para páginas no presentes en el idioma predeterminado
    • El GUID de la página relacionada en el idioma predeterminado para las páginas de los idiomas que están enlazadas entre ellas (son traducciones mutuas)
  • CultureCode: el idioma de cada página

Entonces, lo que se necesita para cambiar el idioma predeterminado es:

  • cambiar el valor de DefaultLanguageGuid en cada Tab para que contenga el UniqueId de la misma Tab en el nuevo idioma predeterminado
  • cambiar el valor de DefaultLanguageGuid a NULL para la Tab en el nuevo idioma predeterminado

Hasta aquí, las cosas son exactamente iguales para TabModules. Mismo procedimiento, diferente tabla.

Resolviendo problemas en nuestro Portal DNN

Un script SQL para esta cambio no era tan complicado. Pero nos encontramos con algunos problemas al intentar ejecutarlo. El principal, y el único que consideramos "normal", ocurre en un sitio web:

  • Algunas páginas fueron traducidas pero no tenían una versión en el nuevo idioma predeterminado

Como esto ocurrió solo en unas pocas páginas, se corrigió manualmente en la base de datos, sin tratar de automatizarlo. Para TabModules, hay algunos problemas más, pero muy parecidos:

  • Tabmodules no vinculados con el mismo módulo en páginas traducidas (así que el módulo está en páginas en otros idiomas, pero DefaultLanguageGuid no tiene el valor del UniqueId del módulo en la página con lenguaje predeterminado)
  • TabModules vinculados al mismo módulo en página traducida, pero no a la página que está vinculada con la que contiene el módulo. Esto pasaba con algunos módulos referenciados entre páginas: un módulo en la página A debería tener el DefaultLanguageGuid con el valor del UniqueId de un módulo en el lenguaje predeterminado de la página B.

En el sitio había unos 200 módulos con alguno de estos problemas. Pero, afortunadamente, tenían una cosa en común: el DefaultLanguageGuid estaba vacío cuando no debía estarlo, o era erróneo. Así que escribimos algunas consultas para estos casos, para vaciar todos los DefaultLanguageGuids. A partir de aquí, solo nos quedaba un problema: los módulos que no estaban vinculados a su contraparte en el idioma predeterminado.

Ahora, la mayoría de las páginas tenían este aspecto en la página de gestión de localización (pulsar en la imagen para verla bien):

 

Tenga en cuenta que los módulos destacados deberían estar en la fila a la que apuntan las flechas. Y esto se aplica a la mayoría de los módulos en los "otros" idiomas. Esta es también una característica que DNN no soporta. Lo único que puede hacer es marcar la casilla Copiar módulo, actualizar traducciones y luego copiar manualmente el contenido al nuevo módulo.

Obviamente, no es esto lo que queríamos.

Añadiendo funcionalidad al módulo de idioma DNN

Lo que hicimos aquí fue tomar el módulo DNNLanguage desde el código fuente de DNN y agregarle una pequeña e ingeniosa característica. Fíjese en el icono "Mover archivo" al lado de los cuadrados rojo y púrpura. Si pulsamos sobre él, aparecerá un icono "Pegar" en los lugares donde está la casilla "Copiar módulo", para los módulos de la misma definición de módulo (para evitar que se pueda vincular accidentalmente un módulo OpenContent a un módulo HTML/Texto, por ejemplo). Tras pulsar en el icono de pegar, la página se actualiza y el módulo ahora está vinculado y es visible en su lugar correcto.

Sin embargo, como teníamos algunos cientos de casos así, tratamos alrededor del 90% de ellos con consultas de SQL.

Cuando todo esto estuvo terminado, estuvimos preparados para lanzar el script. Lo único que tuvimos a hacer adicionalmente fue cambiar la configuración de DefaulLanguage (idioma predeterminado) en DNN. Esto también se añadió al script, claro.

Recursos:

Tenemos claro que esto no es algo que cualquier administradror de un web quisiera (o incluso debiera) hacer en un sitio DNN. Por supuesto, estaremos encantados de ayudar a quien lo necesite. Simplemente contáctenos.

Comments

There are currently no comments, be the first to post one.

Comment Form

Only registered users may post comments.

NewsArchives


Aderson Oliveira (22)
Alec Whittington (11)
Alessandra Davies (3)
Alex Shirley (10)
Andrew Hoefling (3)
Andrew Nurse (30)
Andy Tryba (1)
Anthony Glenwright (5)
Antonio Chagoury (28)
Ash Prasad (37)
Ben Schmidt (1)
Benjamin Hermann (25)
Benoit Sarton (9)
Beth Firebaugh (12)
Bill Walker (36)
Bob Kruger (5)
Bogdan Litescu (1)
Brian Dukes (2)
Brice Snow (1)
Bruce Chapman (20)
Bryan Andrews (1)
cathal connolly (55)
Charles Nurse (163)
Chris Hammond (213)
Chris Paterra (55)
Clint Patterson (108)
Cuong Dang (21)
Daniel Bartholomew (2)
Daniel Mettler (181)
Daniel Valadas (48)
Dave Buckner (2)
David Poindexter (12)
David Rodriguez (3)
Dennis Shiao (1)
Doug Howell (11)
Erik van Ballegoij (30)
Ernst Peter Tamminga (80)
Francisco Perez Andres (17)
Geoff Barlow (12)
George Alatrash (12)
Gifford Watkins (3)
Gilles Le Pigocher (3)
Ian Robinson (7)
Israel Martinez (17)
Jan Blomquist (2)
Jan Jonas (3)
Jaspreet Bhatia (1)
Jenni Merrifield (6)
Joe Brinkman (274)
John Mitchell (1)
Jon Henning (14)
Jonathan Sheely (4)
Jordan Coopersmith (1)
Joseph Craig (2)
Kan Ma (1)
Keivan Beigi (3)
Kelly Ford (4)
Ken Grierson (10)
Kevin Schreiner (6)
Leigh Pointer (31)
Lorraine Young (60)
Malik Khan (1)
Matt Rutledge (2)
Matthias Schlomann (16)
Mauricio Márquez (5)
Michael Doxsey (7)
Michael Tobisch (3)
Michael Washington (202)
Miguel Gatmaytan (3)
Mike Horton (19)
Mitchel Sellers (40)
Nathan Rover (3)
Navin V Nagiah (14)
Néstor Sánchez (31)
Nik Kalyani (14)
Oliver Hine (1)
Patricio F. Salinas (1)
Patrick Ryan (1)
Peter Donker (54)
Philip Beadle (135)
Philipp Becker (4)
Richard Dumas (22)
Robert J Collins (5)
Roger Selwyn (8)
Ruben Lopez (1)
Ryan Martinez (1)
Sacha Trauwaen (1)
Salar Golestanian (4)
Sanjay Mehrotra (9)
Scott McCulloch (1)
Scott S (11)
Scott Wilkinson (3)
Scott Willhite (97)
Sebastian Leupold (80)
Shaun Walker (237)
Shawn Mehaffie (17)
Stefan Cullmann (12)
Stefan Kamphuis (12)
Steve Fabian (31)
Steven Fisher (1)
Timo Breumelhof (24)
Tony Henrich (3)
Torsten Weggen (3)
Tycho de Waard (4)
Vicenç Masanas (27)
Vincent Nguyen (3)
Vitaly Kozadayev (6)
Will Morgenweck (40)
Will Strohl (180)
William Severance (5)
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out