نمایش نتایج 1 تا 4 از 4

نام تاپیک: چندزبانگی (multilanguage)

  1. #1
    کاربر دائمی آواتار sm
    تاریخ عضویت
    اردیبهشت 1383
    محل زندگی
    ایساتیس
    پست
    1,389

    چندزبانگی (multilanguage)

    سلام
    من میخوام سایتم رو چندزبانه طراحی کنم. اومدم و توی masterpage‌سایت یه Droplist گذاشتم که کاربر بتونه زبان موردنظرش رو انتخاب کنه.
    اولا دوستان راهنمایی کنن که میتونم توی این قسمت قرار بدم یا نه؟
    ثانیا، حالا که این کار رو کردم توی کدنویسی هم این کد رو توی ُSub InitializeCulture قرار دادم ولی مشکل اینه که Page رو نشون نمیده.

    Master.Request.Form("cmbCulture")


    ولی وقتی کد بالا رو با "Auto" جایگزین میکنم صفحه رو نشون میده ولی خوب چندزبانگی رو ندارم.

    موفق باشید

  2. #2
    کاربر دائمی آواتار sm
    تاریخ عضویت
    اردیبهشت 1383
    محل زندگی
    ایساتیس
    پست
    1,389
    یه راه حل براش پیدا کردم:
    با استفاده از کوکی ها تونستم این کار رو انجام بدم. بدین ترتیب که این کد رو توی masterpage اضافه کردم:

    Protected Sub cmbCulture_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbCulture.SelectedIndexChanged
    Dim cookie As HttpCookie = New HttpCookie("cmbCulture")
    cookie.Value = cmbCulture.UniqueID
    Response.SetCookie(cookie)

    End Sub

    بعد توی فرم Global.asax این کدها رو اضافه کردم :

    Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim culture As String
    Dim cookie As HttpCookie = Request.Cookies("cmbCulture")
    If IsNothing(cookie) Then
    culture = "Auto"
    culture = culture
    Else
    If IsNothing(cookie.Value) Then
    culture = "Auto"
    culture = culture
    Else
    culture = Request.Form(cookie.Value)

    End If
    End If

    If (String.IsNullOrEmpty(culture)) Then
    culture = "Auto"
    culture = culture
    End If
    If (culture <> "Auto") Then

    Dim ci As New System.Globalization.CultureInfo(culture)
    System.Threading.Thread.CurrentThread.CurrentCultu re = ci
    System.Threading.Thread.CurrentThread.CurrentUICul ture = ci
    End If
    End Sub

    اگه دوستان راه حل دیگه ای دارند لطف کنن و اینجا بزارن.
    آیا این روش مشکل امنیتی داره یا نه؟
    اگه کاربر کوکی ها رو پاک کنه، مشکلی بوجود میاد؟

    موفق باشید

  3. #3
    کاربر دائمی آواتار mahdi_farhani
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    فولادشهر - اصفهان
    سن
    36
    پست
    1,227
    من برای Multilanguge و MultiTheme یک کلاس نوشتم و کلیه صفحاتم از این کلاس ارث بری می کنن . نمیدونم روشی خوبی هست یا نه ...
    این ساختار کلاسم در C#‎ است .
    در ضمن من از List استفاده کردم نه از Dropdown اینو دیگه

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Globalization;
    using System.Threading;
    using dsMainTableAdapters;
    /// <summary>
    /// Summary description for clsBase
    /// </summary>
    public class clsBase : System.Web.UI.Page
    {

    public static Boolean page_direction=true;
    public cDate cDateToday=new cDate();
    public int User_Id = 0;
    public clsBase()
    {
    //
    // TODO: Add constructor logic here
    //
    Fill_String();
    }
    protected void Page_PreInit(object sender, EventArgs e)
    {
    load_Theme("0");
    }
    protected override void InitializeCulture()
    {
    load_Culture(Request.Form["ctl00$lstLanguage"]);
    }


    public void load_Culture(String lang)
    {
    //Dim lang As String = Request("ctl00$ddlLanguage")
    String Lang_Culture="fa";
    dsMain.Cms_Language_SelectDataTable dtLanguage=new dsMain.Cms_Language_SelectDataTable();
    Cms_Language_SelectTableAdapter daLanguage=new Cms_Language_SelectTableAdapter();
    dsMain.Cms_Language_SelectRow drLanguage;
    if (! string.IsNullOrEmpty(lang))
    {
    dtLanguage = daLanguage.SelectDetails(int.Parse(lang));
    if (dtLanguage.Rows.Count != 0)
    {
    drLanguage = (dsMain.Cms_Language_SelectRow)dtLanguage.Rows[0];
    Lang_Culture = drLanguage.lng_Culture;
    page_direction = drLanguage.lng_Direction;
    }
    }
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Lang_Culture.Tri m());
    Thread.CurrentThread.CurrentUICulture = new CultureInfo(Lang_Culture.Trim());
    base.InitializeCulture();
    }
    public void load_Theme(String Theme)
    {
    String Theme_Name = "Orginal";
    String Theme_MasterPage = "mpMain.master";
    if(String.IsNullOrEmpty(Theme))
    {
    Cms_Thems_SelectTableAdapter daTheme=new Cms_Thems_SelectTableAdapter();
    dsMain.Cms_Thems_SelectDataTable dtTheme=new dsMain.Cms_Thems_SelectDataTable();
    dsMain.Cms_Thems_SelectRow drTheme;
    dtTheme = daTheme.SelectDetails(int.Parse(Theme));
    if (dtTheme.Rows.Count!=0)
    {
    drTheme=(dsMain.Cms_Thems_SelectRow)dtTheme.Rows[0];
    Theme_Name=drTheme.thm_Name;
    Theme_MasterPage=drTheme.thm_MasterPage;
    }
    }
    Page.Theme=Theme_Name;
    Page.MasterPageFile="~\\MasterPages\\" + Theme_MasterPage;
    }

    }

  4. #4
    کاربر دائمی آواتار sm
    تاریخ عضویت
    اردیبهشت 1383
    محل زندگی
    ایساتیس
    پست
    1,389
    من از روشی که در بالا توضیح دادم استفاده کردم ولی یه مشکل دارم اونم اینکه، وقتی از DropDown برای بار اول زبان رو انتخاب می کنم کار نمی کنه و حتما باید دوباره یه زبان دیگه رو انتخاب کنم تا کار کنه.
    مثال :
    الان فارسی هست و عربی رو انتخاب می کنم ولی کار نمی کنه اما همینکه فرضا زبان بعدی (انگلیسی) رو انتخاب می کنم کار می کنه.

    موفق باشید

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •