Foros de discusión

[Résolu] cacher la langue courrante

mohammed hilout, modificado hace 12 años.

[Résolu] cacher la langue courrante

New Member Mensajes: 14 Fecha de incorporación: 17/11/11 Mensajes recientes
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, modificado hace 12 años.

RE: cacher la langue courrante

Liferay Legend Mensajes: 1261 Fecha de incorporación: 2/10/08 Mensajes recientes
Salut Mohammed:

en portal-ext.properties
locales=en_US,fr_FR

A+!
thumbnail
Leo Pratlong, modificado hace 12 años.

RE: cacher la langue courrante

Expert Mensajes: 363 Fecha de incorporación: 6/07/10 Mensajes recientes
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, modificado hace 12 años.

RE: cacher la langue courrante

New Member Mensajes: 14 Fecha de incorporación: 17/11/11 Mensajes recientes
oui c'est ce que je veux exactement.

je vais essayer ta solution. Merci
mohammed hilout, modificado hace 12 años.

[Résolut] cacher la langue courrante

New Member Mensajes: 14 Fecha de incorporación: 17/11/11 Mensajes recientes
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>