留言板

[Résolu] cacher la langue courrante

mohammed hilout,修改在12 年前。

[Résolu] cacher la langue courrante

New Member 帖子: 14 加入日期: 11-11-17 最近的帖子
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,修改在12 年前。

RE: cacher la langue courrante

Liferay Legend 帖子: 1261 加入日期: 08-10-2 最近的帖子
Salut Mohammed:

en portal-ext.properties
locales=en_US,fr_FR

A+!
thumbnail
Leo Pratlong,修改在12 年前。

RE: cacher la langue courrante

Expert 帖子: 363 加入日期: 10-7-6 最近的帖子
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,修改在12 年前。

RE: cacher la langue courrante

New Member 帖子: 14 加入日期: 11-11-17 最近的帖子
oui c'est ce que je veux exactement.

je vais essayer ta solution. Merci
mohammed hilout,修改在12 年前。

[Résolut] cacher la langue courrante

New Member 帖子: 14 加入日期: 11-11-17 最近的帖子
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>