Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Понимание структуры несколько языкового сайта на Webforms / 11 сообщений из 11, страница 1 из 1
09.12.2014, 09:07
    #38828606
AspUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание структуры несколько языкового сайта на Webforms
Добрый день! Хотел спросить совета как начать структуру сайта чтобы в будущем добавить еще один язык. Надо создать в проекте папки типа ru, en , а внутри них уже Pages ,и через маршрутизацию перенаправлять на нужную страницу типа мойДомен/ru ?
...
Рейтинг: 0 / 0
09.12.2014, 09:10
    #38828607
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание структуры несколько языкового сайта на Webforms
...
Рейтинг: 0 / 0
09.12.2014, 09:16
    #38828612
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание структуры несколько языкового сайта на Webforms
А для начала можно открыть проект в Visual Studio и перейти на небольшую aspx-страницу.
Переключиться в режим Design, в меню TOOLS выбрать пункт Generate Local Resource и посмотреть, что появилось в папке App_LocalRecorces, и что при этом изменилось в разметке страницы (Source).
...
Рейтинг: 0 / 0
09.12.2014, 10:20
    #38828667
Andrey1306
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание структуры несколько языкового сайта на Webforms
...
Рейтинг: 0 / 0
09.12.2014, 13:09
    #38828871
AspUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание структуры несколько языкового сайта на Webforms
Вроде чуток доходит как оно работает через файл ресурсов(меняя в браузере язык) получаю переведенные значения для серверных элементов, а как быть с 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
09.12.2014, 13:21
    #38828896
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание структуры несколько языкового сайта на Webforms
AspUser, почитайте MSDN.

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


2. Через локальные ресурсы:
Код: plaintext
1.
<button><%= GetLocalResourceObject("PushButton.Text") %></button>
...
Рейтинг: 0 / 0
10.12.2014, 09:55
    #38829843
AspUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание структуры несколько языкового сайта на Webforms
Не получается написать программное переключение языка на странице. Только функция 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
10.12.2014, 11:39
    #38829977
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание структуры несколько языкового сайта на Webforms
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
10.12.2014, 12:23
    #38830026
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание структуры несколько языкового сайта на Webforms
AspUserНе получается написать программное переключение языка на странице.А зачем? Смысл?
...
Рейтинг: 0 / 0
10.12.2014, 13:02
    #38830084
AspUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание структуры несколько языкового сайта на Webforms
skyANAА зачем? Смысл?
ну пользователь пришел и выбрал себе язык на котором должен отображаться сайт. Вот этот переключатель-выбор у меня не получается сделать
...
Рейтинг: 0 / 0
10.12.2014, 23:37
    #38830772
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Понимание структуры несколько языкового сайта на Webforms
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
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Понимание структуры несколько языкового сайта на Webforms / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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