Foros de discusión
Language Linking issue
Luc Foisy, modificado hace 14 años.
Language Linking issue
New Member Mensajes: 9 Fecha de incorporación: 11/11/09 Mensajes recientes
I am trying to create a single language link in the template, if the current locale is not english, then the link should be english, else it should be french... I am also checking to see if there is Canadian locales...
Here is the code in the init_custom.vm
Just ignore the $gocTemplateTest variable...
So the issue here is, this will render me a blank page... assuming that there is a java exception happening...
trying to use the following function from com.liferay.taglib.util.VelocityTaglib (which is $taglibLiferay)
if I use
i get the full list of language links... which I don't want...
I am not sure $gocTemplateLanguageIds is a String[]....
Is that my problem... or is it something else someone might know about? If so, how do I make the String[]?
using Liferay Portal Standard Edition 5.2.3 (Augustine / Build 5203 / May 20, 2009) bundles with tomcat-6.0.18
Here is the code in the init_custom.vm
#set ($gocTemplateAvailableLocales = $languageUtil.getAvailableLocales())
#set ($gocTemplateTest = "")
#if ($locale.getLanguage() != "en")
#set ($gocTemplateTest = "should be first en")
#set ($gocTemplateLanguageIds = [$languageUtil.getLanguageId($languageUtil.getLocale("en"))])
#foreach ($gocTemplateEachlocale in $gocTemplateAvailableLocales)
#if ($gocTemplateEachlocale.getLanguage() == "en" && $gocTemplateEachlocale.getCountry() == "CA")
#set ($gocTemplateTest = "should be en_CA")
#set ($gocTemplateLanguageIds = [$languageUtil.getLanguageId($gocTemplateEachlocale)])
#end
#end
#else
#set ($gocTemplateTest = "should be first fr")
#set ($gocTemplateLanguageIds = [$languageUtil.getLanguageId($languageUtil.getLocale("fr"))])
#foreach ($gocTemplateEachlocale in $gocTemplateAvailableLocales)
#if ($gocTemplateEachlocale.getLanguage() == "fr" && $gocTemplateEachlocale.getCountry() == "CA")
#set ($gocTemplateTest = "should be fr_CA")
#set ($gocTemplateLanguageIds = [$languageUtil.getLanguageId($gocTemplateEachlocale)])
#end
#end
#end
#set ($gocTemplateLanguageLinkName = $request.getAttribute("liferay-ui:language:name"))
#set ($gocTemplateLanguageLink = $taglibLiferay.language("", "", $gocTemplateLanguageLinkName, $gocTemplateLanguageIds, 1))
Just ignore the $gocTemplateTest variable...
So the issue here is, this will render me a blank page... assuming that there is a java exception happening...
trying to use the following function from com.liferay.taglib.util.VelocityTaglib (which is $taglibLiferay)
public String language(
String formName, String formAction, String name,
String[] languageIds, int displayStyle)
if I use
#set ($gocTemplateLanguageLink = $taglibLiferay.language("", "", $gocTemplateLanguageLinkName, 1))
i get the full list of language links... which I don't want...
I am not sure $gocTemplateLanguageIds is a String[]....
Is that my problem... or is it something else someone might know about? If so, how do I make the String[]?
using Liferay Portal Standard Edition 5.2.3 (Augustine / Build 5203 / May 20, 2009) bundles with tomcat-6.0.18
Luc Foisy, modificado hace 14 años.
RE: Language Linking issue
New Member Mensajes: 9 Fecha de incorporación: 11/11/09 Mensajes recientes
I ended up with doing it this way (though I wanted to do it my way!)
As a side note....
#set ($gocTemplateLanguageLinkName = $request.getAttribute("liferay-ui:language:name"))
This "WAS" providing me with "languageId" but it stopped working for some reason... why would that stop working... I didn't want to have to statically put "languageId" in the link if I was supposed to get it from somewhere...
#set ($gocTemplateAvailableLocales = $languageUtil.getAvailableLocales())
#if ($locale.getLanguage() != "en")
##set ($gocTemplateLanguageIds = [$languageUtil.getLanguageId($languageUtil.getLocale("en"))])
#set ($gocTemplateLanguageLocale = $languageUtil.getLocale("en"))
#foreach ($gocTemplateEachlocale in $gocTemplateAvailableLocales)
#if ($gocTemplateEachlocale.getLanguage() == "en" && $gocTemplateEachlocale.getCountry() == "CA")
##set ($gocTemplateLanguageIds = [$languageUtil.getLanguageId($gocTemplateEachlocale)])
#set ($gocTemplateLanguageLocale = $gocTemplateEachlocale)
#end
#end
#else
##set ($gocTemplateLanguageIds = [$languageUtil.getLanguageId($languageUtil.getLocale("fr"))])
#set ($gocTemplateLanguageLocale = $languageUtil.getLocale("fr"))
#foreach ($gocTemplateEachlocale in $gocTemplateAvailableLocales)
#if ($gocTemplateEachlocale.getLanguage() == "fr" && $gocTemplateEachlocale.getCountry() == "CA")
##set ($gocTemplateLanguageIds = [$languageUtil.getLanguageId($gocTemplateEachlocale)])
#set ($gocTemplateLanguageLocale = $gocTemplateEachlocale)
#end
#end
#end
#set ($gocTemplateLanguageId = $languageUtil.getLanguageId($gocTemplateLanguageLocale))
#set ($gocTemplateLanguageName = $gocTemplateLanguageLocale.getDisplayLanguage($gocTemplateLanguageLocale))
#set ($gocTemplateLanguageLinkName = $request.getAttribute("liferay-ui:language:name"))
#set ($gocTemplatePortalURLImpl = $portletURLFactory.create($request, "82", $page.getPlid(), "ACTION_PHASE"))
$gocTemplatePortalURLImpl.setWindowState("normal")
$gocTemplatePortalURLImpl.setPortletMode("view")
$gocTemplatePortalURLImpl.setParameter("struts_action", "/language/view")
$gocTemplatePortalURLImpl.setParameter("redirect", "$portalUtil.getCurrentURL($request)")
#set ($gocTemplateLanguageLink = $gocTemplatePortalURLImpl.toString()+"&languageId="+$gocTemplateLanguageId)
As a side note....
#set ($gocTemplateLanguageLinkName = $request.getAttribute("liferay-ui:language:name"))
This "WAS" providing me with "languageId" but it stopped working for some reason... why would that stop working... I didn't want to have to statically put "languageId" in the link if I was supposed to get it from somewhere...
Olivier ROMAND, modificado hace 12 años.
RE: Language Linking issue
New Member Mensajes: 24 Fecha de incorporación: 7/01/12 Mensajes recientes
That's some super nice hint.
Thanks for sharing.
Though I must say that the following line caused me some troubled as I was looping over the url that contained the tag "en". So the interface would remains in English
even though the cookie has been set back to the desired value.
Hope it can help
Thanks for sharing.
Though I must say that the following line caused me some troubled as I was looping over the url that contained the tag "en". So the interface would remains in English
even though the cookie has been set back to the desired value.
$gocTemplatePortalURLImpl.setParameter("redirect", "$portalUtil.getCurrentURL($request)")
Hope it can help