Foren

[Résolu] cacher la langue courrante

mohammed hilout, geändert vor 12 Jahren.

[Résolu] cacher la langue courrante

New Member Beiträge: 14 Beitrittsdatum: 17.11.11 Neueste Beiträge
Bonjour,

j'ai un thème qui supporte 2 langues : français/englais.

quand le portail est en français, je veux afficher seulement l'anglais et vis versa.

Est ce que vous avez une solution?

Merci
thumbnail
Juan Fernández, geändert vor 12 Jahren.

RE: cacher la langue courrante

Liferay Legend Beiträge: 1261 Beitrittsdatum: 02.10.08 Neueste Beiträge
Salut Mohammed:

en portal-ext.properties
locales=en_US,fr_FR

A+!
thumbnail
Leo Pratlong, geändert vor 12 Jahren.

RE: cacher la langue courrante

Expert Beiträge: 363 Beitrittsdatum: 06.07.10 Neueste Beiträge
Bonjour,

Juan, si on fait ça, ça affiche les 2 drapeaux me semble-t-il.
Si j'ai bien compris la question, Mohamed souhaite afficher uniquement le drapeau Anglais si la langue courante est le Français, et uniquement le drapeau français si la langue courante est l'Anglais.
Pour cela, vous pouvez utiliser une sorte de "switch" dans un plugin Hook. Il s'agira d'une condition vérifiant la langue courante. Par exemple, grossièrement, dans html/taglib/ui/language/page.jsp (version 6.0.5), on pourra fait un truc comme ci-dessous. Placez le code à l'endroit où est affiché le drapeau.

<%
final Locale currentLocale = themeDisplay.getLocale();
final boolean isEn = currentLocale.getLanguage().contains("en");
%>
<c:choose>
    <c:when test="<%= isEn %>">
        <!-- On affiche le drapeau français -->
    </c:when>
    <c:otherwise>
        <!-- On affiche le drapeau anglais -->
    </c:otherwise>
</c:choose>


Ce code peut être bien sûr amélioré (d'autant plus qu'il est là uniquement à titre d'exemple) pour répondre à des cas plus génériques (en utilisant par exemple une nouvelle propriété à créer pour le portal-ext.properties et qui stipulerait des règles d'affichage).
Cela dit, s'il y a une solution déjà existante pour créer une sorte de switch uniquement via la configuration, je suis preneur emoticon.
mohammed hilout, geändert vor 12 Jahren.

RE: cacher la langue courrante

New Member Beiträge: 14 Beitrittsdatum: 17.11.11 Neueste Beiträge
oui c'est ce que je veux exactement.

je vais essayer ta solution. Merci
mohammed hilout, geändert vor 12 Jahren.

[Résolut] cacher la langue courrante

New Member Beiträge: 14 Beitrittsdatum: 17.11.11 Neueste Beiträge
Ta solution marche bien emoticon

Merci bcp!
voila ce que j'ai mis après la boucle : for (int i = 0; i < locales.length; i++) {}

final Locale currentLocale = themeDisplay.getLocale();
final boolean isEn = currentLocale.getLanguage().contains("en");

//locales[0] c'est l'anglais
//locales[1] c'est le français
%>
<c:choose>
<c:when test="<%= isEn %>">
<liferay-ui:icon
image='<%= "../language/" + LocaleUtil.toLanguageId(locales[1]) %>'
lang="<%= LocaleUtil.toW3cLanguageId(locales[1]) %>"
message="<%= locales[1].getDisplayName(locales[1]) %>"
url='<%= formAction + "&" + name + "=" + locales[1].getLanguage() + "_" + locales[1].getCountry() %>'

/>
</c:when>
<c:otherwise>
<liferay-ui:icon
image='<%= "../language/" + LocaleUtil.toLanguageId(locales[0]) %>'
lang="<%= LocaleUtil.toW3cLanguageId(locales[0]) %>"
message="<%= locales[0].getDisplayName(locales[0]) %>"
url='<%= formAction + "&" + name + "=" + locales[0].getLanguage() + "_" + locales[0].getCountry() %>'
/>
</c:otherwise>
</c:choose>