powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Понимание структуры несколько языкового сайта на Webforms
11 сообщений из 11, страница 1 из 1
Понимание структуры несколько языкового сайта на Webforms
    #38828606
AspUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Хотел спросить совета как начать структуру сайта чтобы в будущем добавить еще один язык. Надо создать в проекте папки типа ru, en , а внутри них уже Pages ,и через маршрутизацию перенаправлять на нужную страницу типа мойДомен/ru ?
...
Рейтинг: 0 / 0
Понимание структуры несколько языкового сайта на Webforms
    #38828607
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Понимание структуры несколько языкового сайта на Webforms
    #38828612
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А для начала можно открыть проект в Visual Studio и перейти на небольшую aspx-страницу.
Переключиться в режим Design, в меню TOOLS выбрать пункт Generate Local Resource и посмотреть, что появилось в папке App_LocalRecorces, и что при этом изменилось в разметке страницы (Source).
...
Рейтинг: 0 / 0
Понимание структуры несколько языкового сайта на Webforms
    #38828667
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Понимание структуры несколько языкового сайта на Webforms
    #38828871
AspUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вроде чуток доходит как оно работает через файл ресурсов(меняя в браузере язык) получаю переведенные значения для серверных элементов, а как быть с html-элементами ?
руками вбил в файл Default.aspx.en.resx и btn1 и btn1.value равное "Push" не срабатывает....
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="LocTest.Default" culture="auto" meta:resourcekey="PageResource1" uiculture="auto" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Страница выбора</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:Label ID="Label1" runat="server" Text="Выбор" meta:resourcekey="Label1Resource1"></asp:Label>
            <asp:DropDownList ID="DropDownList1" runat="server" meta:resourcekey="DropDownList1Resource1"></asp:DropDownList>
            <button id="btn1" meta:resourcekey="btn1">Нажми</button>
        </div>
    </form>
</body>
</html>
...
Рейтинг: 0 / 0
Понимание структуры несколько языкового сайта на Webforms
    #38828896
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AspUser, почитайте MSDN.

1. Через глобальные ресурсы:
Код: plaintext
1.
<button><%= Resources.MyGlobalResources.PushButtonText %></button>


2. Через локальные ресурсы:
Код: plaintext
1.
<button><%= GetLocalResourceObject("PushButton.Text") %></button>
...
Рейтинг: 0 / 0
Понимание структуры несколько языкового сайта на Webforms
    #38829843
AspUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не получается написать программное переключение языка на странице. Только функция GetLocalResourceObject реагирует и меняет язык,
через настройки браузера тоже видно перевод(т.е. ресурсы нормально заполнены).
Отладчиком смотрю везде заходит и устанавливает System.Threading.Thread.CurrentThread.CurrentCulture. Почему же не получается ?
Код страницы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="LocTest.Default"  meta:resourcekey="PageResource1" culture="auto" uiculture="auto"  %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Страница выбора</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:Label ID="Label1" runat="server" meta:resourcekey="Label1Resource2"></asp:Label>
            <asp:DropDownList ID="DropDownList1" runat="server" meta:resourcekey="DropDownList1Resource1">
                <asp:ListItem meta:resourceKey="ListItemResource1" Value="ru">Русский</asp:ListItem>
                <asp:ListItem meta:resourceKey="ListItemResource2" Value="uk">Украинский</asp:ListItem>
                <asp:ListItem meta:resourceKey="ListItemResource3" Value="en">Английский</asp:ListItem>
            </asp:DropDownList>
            <asp:Button ID="Button1" runat="server" Text="Локализовать" OnClick="Button1_Click" meta:resourcekey="Button1Resource1" />
            <button id="btn1"><%= GetLocalResourceObject("PushButton.Text") %></button>
            
        </div>
    </form>
</body>
</html>


обработчик кнопки Локализовать:
Код: c#
1.
2.
3.
4.
5.
      protected void Button1_Click(object sender, EventArgs e)
        {
            Session["Culture"] = DropDownList1.SelectedItem.Value;
            Response.Redirect(Request.Path);
        }


Зарегистрированный модуль:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;


namespace LocTest.App_Code
{
    public class MySetCulture : IHttpModule
    {


        public void Dispose()
        {
            //удалите здесь код.
        }

        public void Init(HttpApplication context)
        {

            context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);
        }



        public void context_PreRequestHandlerExecute(Object source, EventArgs e)
        {
            Page page = HttpContext.Current.CurrentHandler as Page;
            if (page != null)
            {
                page.PreInit += new EventHandler(page_PreInit);
            }
        }

        private void page_PreInit(object sender, EventArgs e)
        {
            Page page = sender as Page;
            if (page != null)
            {
                string cult = (string)HttpContext.Current.Session["Culture"];
                if (cult != null)
                {
                    System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cult);
                    System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(cult);
                }
                else
                {
                    System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("ru");
                    System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("ru");
                }
            }
        }


    }

}
...
Рейтинг: 0 / 0
Понимание структуры несколько языкового сайта на Webforms
    #38829977
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAspUser, почитайте MSDN.

1. Через глобальные ресурсы:
Код: plaintext
1.
<button><%= Resources.MyGlobalResources.PushButtonText %></button>


2. Через локальные ресурсы:
Код: plaintext
1.
<button><%= GetLocalResourceObject("PushButton.Text") %></button>


3. Через локальные ресурсы:
Код: plaintext
1.
<button><asp:Localize runat="server" meta:resourcekey="PushButton" /></button>
...
Рейтинг: 0 / 0
Понимание структуры несколько языкового сайта на Webforms
    #38830026
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AspUserНе получается написать программное переключение языка на странице.А зачем? Смысл?
...
Рейтинг: 0 / 0
Понимание структуры несколько языкового сайта на Webforms
    #38830084
AspUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAА зачем? Смысл?
ну пользователь пришел и выбрал себе язык на котором должен отображаться сайт. Вот этот переключатель-выбор у меня не получается сделать
...
Рейтинг: 0 / 0
Понимание структуры несколько языкового сайта на Webforms
    #38830772
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AspUserskyANAА зачем? Смысл?
ну пользователь пришел и выбрал себе язык на котором должен отображаться сайт. Вот этот переключатель-выбор у меня не получается сделать
Практическое руководство. Установка значений Culture и UICulture для глобализации веб-страниц ASP.NET

Программная установка языка и региональных параметров на веб-странице ASP.NET1. Переопределите метод InitializeCulture для страницы.

2. В методе переопределения укажите, какой язык и региональные параметры будут установлены для страницы.

3. Установите язык и региональные параметры следующим образом:
Установите свойства Culture и UICulture на странице (например en-US). Эти свойства являются внутренними по отношению к странице и используются только на ней.

Установите свойства CurrentUICulture и CurrentCulture текущего потока в значения выбранного языка и кодировки соответственно. Свойство CurrentUICulture получает строку с информацией о языке и региональных параметрах. Для установки свойства CurrentCulture необходимо создать экземпляр класса CultureInfo и вызвать его метод CreateSpecificCulture .

Примечание.Метод InitializeCulture вызывается очень рано в жизненном цикле страницы, до создания элементов управления и установки свойств страницы. Таким образом, для чтения значений, переданных в страницу элементами управления, необходимо получать их непосредственно из запросов, используя коллекцию Form .
В следующем примере кода показана веб-страница ASP.NET, которая позволяет пользователям выбирать язык в выпадающем списке. Страница импортирует два пространства имен (для удобства работы с классами потоков и глобализации).
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
<%@ Page Language="C#" uiculture="auto" %>
<%@ Import Namespace="System.Threading" %>
<%@ Import Namespace="System.Globalization" %>
<script runat="server">
    protected override void InitializeCulture()
    {
        if (Request.Form["ListBox1"] != null)
        {
            string selectedLanguage = Request.Form["ListBox1"];

            Culture = UICulture = selectedLanguage;

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

        base.InitializeCulture();
    }
</script>
<html>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:ListBox ID="ListBox1" runat="server">
                <asp:ListItem Value="en-US" Selected="True">English</asp:ListItem>
                <asp:ListItem Value="es-MX">Espa&#241;ol</asp:ListItem>
                <asp:ListItem Value="de-DE">Deutsch</asp:ListItem>
            </asp:ListBox>
            <asp:Button ID="Button1" runat="server" Text="Set Language" meta:resourcekey="Button1" />
            <asp:Label ID="Label1" runat="server" meta:resourcekey="Label1" />
        </div>
    </form>
</body>
</html>
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Понимание структуры несколько языкового сайта на Webforms
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]