2017-02-21 19 views
5

Я пытаюсь перевести текст кнопки на моей странице aspx. Я использую asp.net webforms, и я пока этого не достиг. В MVC я могу делать именно то, что хочу, но в веб-формах для меня это боль.Локализовать текст, используя свойства Ресурсы в Asp.Net WebForms на странице aspx

Вот мои ресурсы

My reources

Я пытаюсь использовать его в ASPX, но без успеха. Я могу сделать это в коде позади с этим кодом

protected void Page_Load(object sender, EventArgs e) 
    { 
     Button1.Text = Properties.Resources.BUTTON_SEND; 
    } 

Но я действительно хочу сделать это прямо в странице

<asp:Button ID="Button1" runat="server" Text="HERE_COMES_THE_LOCALIZABLE_TEXT" /> 

Может кто-то мне помочь, пожалуйста?

ответ

1

Вы должны были сделать немного больше исследований ...
Посмотрите this

1) Создать папку «App_GlobalResources»
2) Внутри выше папки создать файл ресурсов «ресурсных строк» ​​и запись с именем "Key1"

Тогда:

<asp:Button ID="Button1" runat="server" Text="<%$ Resources:ResourceStrings, Key1 %>" /> 
+0

Почему я не могу используйте ресурсы внутри свойств, как в MVC? –

3

Это, как я это сделать на Visual Studio 2013:

  1. Для глобальных ресурсов щелкните правой кнопкой мыши Project и выберите Add > Add ASP.NET Folder > App_GlobalResources.
  2. Для локальных ресурсов щелкните правой кнопкой мыши по папке, где находится файл, в котором вы хотите использовать ресурсы, и выберите Add > Add ASP.NET Folder > App_LocalResources.

    Для меток и сообщений об ошибках я предпочитаю использовать LocalResources. Эта практика делает проект более организованным и легко модифицируется. Вот еще link для более подробной информации.

  3. Создание файлов ресурсов и называет их, как показано ниже:

    Creation

    Можно создать столько App_LocalResources папки, как вам нужно, но опять же, App_LocalResources папки , где вы поместите файлы ресурсов (.resx), должны быть в той же папке, что и .aspx, .Master или .ascx файл.

    Frontend.Master.resx для этикеток и сообщений с языком по умолчанию
    Frontend.Master. pt-br .resx для Бразильский португальский этикетки и сообщения.

    Если пользователь меняет язык своего браузера на pt-BR, то на странице используется pt-br.resx.

  4. Создание элементов ресурса. Имя = Key, Значение = текст на дисплее

    Editing

  5. Использование локального или глобального файла ресурсов:

    <head> 
        <title><%= GetGlobalResourceObject("Labels", "HelloWorld") %></title> 
    </head> 
    <body> 
        <button type="button"> 
         <span><%= GetLocalResourceObject("Header_NavButton_Sr") %></span> 
         <asp:Literal runat="server" Text="<%$ resources:Header_NavButton_Sr %>"></asp:Literal> 
        </button> 
        <a href="index.html"><%= GetLocalResourceObject("Header_TextLogo") %></a> 
        <asp:TextBox ID="tb1" runat="server" Text="<%$ resources:Navbar_Home %>"></asp:TextBox> 
    </body> 
    

GlobalResources файлы генерировать .designer.cs файл. Этот файл генерирует статический класс с именем «Ярлыки», если имя файла ресурсов «Labels.pt-br.resx», в глобальном namespace, называемом Resources. Ответственным за это является «Пользовательский инструмент» GlobalResourceProxyGenerator, который определяется в свойствах файла ресурсов, и вы можете получить доступ к глобальным ресурсам, записывая Resources.Labels.ResourceKey.

Чтобы LocalResources файлы статического доступа, как в GlobalResources, вы можете сделать следующее:

  1. Выберите локальный файл ресурсов
  2. нажмите F4 или правой кнопкой мыши и выберите «Свойства»
  3. On Custom Tool типа 'PublicResXFileCodeGenerator'
  4. На Build Action выберите Embedded Resource
  5. После этого перестройте свое приложение или веб-сайт. Теперь вы можете видеть, что VisualStudio генерирует файл .designer.cs, вложенный в файл ресурсов.

Как его использовать?

Следуя структуре, которую я создаю в этом ответе, у нас есть LocalResource в папке MasterPages, создающей пространство имен WebFormsProject2.MasterPages.App_LocalResources. Если вы откроете '.designer.cs', в этом случае Frontend.Master.designer.cs, в другом текстовом редакторе вы увидите, что он генерирует класс с именем Frontend_Master в пространстве имен WebFormsProject2.MasterPages.App_LocalResources и некоторые статические свойства с тем же именем, что и созданные вами ключи ресурсов в файле ресурсов. Теперь вам просто нужно создать ссылку на это пространство имен и получить доступ к таким свойствам, как Frontend_Master.Header_TextLogo.

Пример:

<%@ Import Namespace="WebFormsProject2.MasterPages.App_LocalResources" %> 

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 

    <title><%= Frontend_Master.Header_TextLogo %></title> 

</head> 
<body>...</body> 
+0

Почему я не могу использовать ресурсы внутри свойств, как в MVC? –

+0

@LeandroDeMelloFagundes См. В разделе ** EDIT ** моего ответа –

2

Создание файлов ресурсов в "App_GlobalResources" папку, как показано ниже:

enter image description here

затем добавить кнопку текст в файлах ресурсов следующим образом: enter image description here

Создания ресурсов файлов для каждого языка, которые вы хотите передать текст кнопки в

И в изменение исходного кода текст кнопки, как показано ниже: enter image description here

Надеется, что это помогает

+0

Почему я не могу использовать ресурсы внутри свойств, например, в MVC? –

+0

@LeandroDeMelloFagundes Вы можете использовать неявную локализацию, в которой ASP.NET заполняет значения свойств из диспетчера ресурсов на основе соответствия ключа ресурса свойствам элемента управления или явной локализации, создавая выражение, которое извлекает определенный ресурс из .NET. Рамочный менеджер ресурсов. См. Это: https://msdn.microsoft.com/en-us/library/ms228093(v=vs.80).aspx – SJPadikkoth

Смежные вопросы