2016-11-15 1 views
2

Je crée un site Web multilingue (En et Ar) dans Asp.Net. Je me demande comment puis-je lier RTL CSS sur le changement de culture de l'anglais à l'arabe. J'ai réussi à créer le site Web multilingue juste coincé dans les liens CSS. Je sais comment faire dans MVC en utilisant des paquets, mais je ne suis pas sûr d'une simple application ASP.Net. À la suite de mon code:Lier différents CSS à un site Web multilingue dans ASP.Net?

public class BasePage : System.Web.UI.Page 
{ 
    protected override void InitializeCulture() 
    { 
     if (!string.IsNullOrEmpty(Request["lang"])) 
     { 
      Session["lang"] = Request["lang"]; 
     } 
     string lang = Convert.ToString(Session["lang"]); 
     string culture = string.Empty; 

     if (lang.ToLower().CompareTo("en") == 0 || string.IsNullOrEmpty(culture)) 
     { 
      culture = "en-US"; 
     } 
     if (lang.ToLower().CompareTo("ar") == 0) 
     { 
      culture = "ar-SA"; 

     } 
     Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture); 
     Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture); 

     base.InitializeCulture(); 
    } 
} 

Aspx Page:

<head runat="server"> 

    <link href="RTL.css" rel="stylesheet" /> 
    <!-- AR, Use this CSS if culture is Arabic --> 

    <link href="LTR.css" rel="stylesheet" /> 
    <!-- EN, Use this CSS if culture is English--> 

</head> 

<body> 

<a href="?lang=en" runat="server" id="enLang"> 
<asp:Literal ID="Literal1" runat="server" Text="<%$Resources:myWeb.language, langEnglish%>" /></a> 

<a href="?lang=ar" runat="server" id="arLang"> 
<asp:Literal ID="Literal2" runat="server" Text="<%$Resources:myWeb.language, langArabic%>" /></a> 

</body> 
+0

Théoriquement, vous pouvez utiliser le [ 'attribut hreflang' sur l'élément' de link'] (https://davidwalsh.name/link-hreflang), mais je ne l'ai pas testé pour voir si cela fonctionne réellement ... –

Répondre

1

Essayez ceci:

<% if (System.Globalization.CultureInfo.CurrentCulture.DisplayName == "English (United States)") 
    { %> 
     <link href="LTR.css" rel="stylesheet" /> 
    <% } 
    else 
    { %> 
     <link href="RTL.css" rel="stylesheet" /> 
    <% } %> 
0

Vous pouvez ajouter le fichier CSS en utilisant conditionnellement balises côté serveur dans votre page ASPX. Quelque chose comme:

<% if(Session["lang"]=="ar") { %> 
    <link href="RTL.css" rel="stylesheet" /> 
    <!-- AR, Use this CSS if culture is Arabic --> 
<%} else {%> 
    <link href="LTR.css" rel="stylesheet" /> 
    <!-- EN, Use this CSS if culture is English--> 
<%}%> 

Je suppose que vous ne voulez pas changer pour chaque page, sinon vous pouvez déplacer ce code à la page au lieu de la tête.

+0

Ne fonctionne pas! Problème: Le style LTR est appliqué lorsque le site Web est chargé car EN est la langue par défaut de l'application Web. Cependant, quand je passe la culture à l'arabe, tous les styles ont disparu. De même, quand je change la culture en anglais de l'arabe, il n'y a pas de style. –