Поделиться через


Пошаговое руководство. Локализация приложения LightSwitch

Можно создать приложение LightSwitch на основе клиента Silverlight, HTML-клиента или обоих видов клиентов, пользовательский интерфейс которого автоматически отображается на разных языках. В этом пошаговом руководстве создается приложение и оба типа клиентов, а затем оно локализуется на немецкий язык (вы можете выбрать другой язык, для которого предоставите переводы).

Чтобы локализовать приложение, мы добавим в конструкторе экрана идентификатор ресурса для каждой строки. Затем на уровне клиента и сервера мы создадим файл ресурсов для языка по умолчанию и языка, на который локализуется приложение. Можно локализовать приложения даже с одним типом клиента. Мы включили оба типа, чтобы показать локализацию каждого из них.

Примечание

Если локализуется только клиент Silverlight, возможно, потребуется сначала его обновить.В строке меню выберите Проект, затем Обновить проект.Если команда Обновить проект не отображается, значит проект уже обновлен.

В пошаговом руководстве показано, как выполнять следующие задачи:

  • Создание приложения

  • Локализация данных на уровне сервера

  • Локализация клиентского экрана Silverlight

  • Добавление языковых ресурсов по умолчанию

  • Добавление локализованных ресурсов

  • Вызов ресурса из кода

  • Локализация HTML-клиента

Обязательные компоненты

Для локализации приложения LightSwitch требуется Microsoft LightSwitch для Visual Studio, обновление 2.

Создание приложения

  1. Создайте приложение с помощью шаблона HTML-приложение LightSwitch (Visual Basic) или шаблона HTML-приложение LightSwitch (Visual C#) и назовите его "Localization Sample".

  2. Создайте таблицу, назовите ее Contact и добавьте следующие поля:

    Имя

    Тип

    Обязательное?

    ContactName

    String

    Да

    ContactPhone

    Номер телефона

    Да

  3. В окне Обозреватель решений откройте контекстное меню узла Localization_Sample.HTML Client и выберите Добавить экран.

  4. Добавьте экран Обзор данных с именем BrowseContacts и выберите Contacts в поле Данные экрана.

  5. В области Обозреватель решений откройте контекстное меню для узла HTML-клиент и выберите Добавить экран.

  6. Добавьте экран Добавить/Изменить сведения с именем AddEditContact и выберите Contact в поле Данные экрана.

  7. Откройте экран BrowseContacts, в конструкторе экрана откройте контекстное меню узла Макет строк | Список контактов и выберите Добавить кнопку.

  8. В диалоговом окне Добавить кнопку в списке showTab выберите showAddEditContact.

  9. В поле Contact введите Новый контакт и нажмите кнопку ОК.

  10. В окне Обозреватель решений откройте контекстное меню узла Localization Sample и выберите Добавить клиент.

  11. Примите значение по умолчанию (Настольный клиент) и нажмите кнопку ОК.

  12. В окне Обозреватель решений откройте контекстное меню узла Настольный клиент и выберите Добавить экран.

  13. Добавьте экран Новые данные с именем NewContact и выберите Contact в поле Данные экрана.

  14. В конструкторе экрана выберите узел Добавить и щелкните пункт Добавить текст.

  15. В диалоговом окне Изменить текст введите Добавьте новый контакт здесь.

Локализация данных на уровне сервера

  1. В окне Обозреватель решений разверните узел Источники данных и откройте сущность Contacts.lsml.

  2. В окне Конструктор сущностей выберите поле ContactName.

  3. В окне Свойства выберите свойство Отображаемое имя и введите $(ContactName).

    Запись $() означает, что значение свойства Отображаемое имя является идентификатором ресурса. Во время выполнения LightSwitch извлечет фактическое значение из файла ресурсов.

    Примечание

    Идентификаторы ресурсов могут содержать только буквы и числа, пробелы не допускаются.

  4. В окне Конструктор сущностей выберите поле ContactPhone.

  5. В окне Свойства выберите свойство Отображаемое имя и введите $(ContactPhone).

  6. В окне Обозреватель решений откройте контекстное меню узла Localization Sample.Server, нажмите Добавить, затем Создать элемент.

  7. Добавьте Файл ресурсов и назовите его Service.resx.

    Важно!

    Необходимо всегда называть файл серверных ресурсов приложения LightSwitch Service.resx, и этот файл должен находиться в корневом узле серверного проекта.

  8. Добавьте в файл ресурсов следующие значения:

    Имя

    Значение

    ContactName

    Имя

    ContactPhone

    Phone

    Значения в столбце Имя соответствуют добавленным ранее идентификаторам ресурсов, но для них не используется нотация $(). Строки из столбца Значение будут отображаться на любом экране, использующем сущность Contacts.

  9. В окне Обозреватель решений откройте контекстное меню узла Localization Sample.Server, нажмите Добавить, затем Создать элемент.

  10. Добавьте Файл ресурсов и назовите его Service.de-DE.resx.

  11. Добавьте в файл ресурсов следующие значения:

    Имя

    Значение

    ContactName

    Kontaktname

    ContactPhone

    Telefonnummer

    Локализованные строки из столбца Значение будут отображаться на любом экране, использующем сущность Contacts. Теперь можно запустить приложение и убедиться, что строки ContactName и ContactPhone отображаются правильно. Можно также развернуть приложение на компьютере, где в региональных стандартах выбран немецкий язык, и убедиться, что строки локализованы.

    Совет

    Рекомендуется сначала локализовать строки для всех сущностей на уровне сервера.Эти строки будут отображаться на любом экране, где используются сущности, и при необходимости можно переопределять строки на уровне экрана.

Локализация клиентского экрана Silverlight

  1. В окне Обозреватель решений откройте экран NewContact.lsml.

  2. В конструкторе экрана выберите узел Макет строк | Новый контакт.

  3. В окне Свойства выберите свойство Отображаемое имя и введите $(AddContact).

  4. В конструкторе экрана откройте контекстное меню узла Текст и выберите Изменить содержимое.

  5. В окне Свойства замените имеющийся текст на $(Text).

    Если сейчас запустить приложение, вы увидите, что на экране отображаются фактические идентификаторы ресурсов. Мы исправим это на следующем этапе путем создания файла языковых ресурсов по умолчанию.

Добавление файла языковых ресурсов по умолчанию

  1. В окне Обозреватель решений откройте контекстное меню узла Localization Sample.DesktopClient, выберите Добавить, затем Создать элемент.

  2. Добавьте Файл ресурсов и назовите его Client.resx.

    Важно!

    Если приложение LightSwitch имеет клиент Silverlight, необходимо всегда называть файл языковых ресурсов по умолчанию Client.resx, и этот файл должен находиться в корневом узле клиентского проекта.

  3. Добавьте в файл ресурсов следующие значения:

    Имя

    Значение

    AddContact

    Добавить контакт

    Текст

    Добавьте контактные данные и нажмите кнопку "Сохранить".

    Значения в столбце Имя соответствуют добавленным ранее идентификаторам ресурсов, но для них не используется нотация $(). Значения в столбце Значение — это строки, отображаемые в приложении, когда в его параметрах выбран Язык по умолчанию.

Добавление локализованного файла ресурсов

  1. В окне Обозреватель решений откройте контекстное меню узла Localization Sample.DesktopClient, выберите Добавить, затем Создать элемент.

  2. Добавьте Файл ресурсов и назовите его Client.de-DE.resx.

    Важно!

    Следует всегда называть локализованные файлы ресурсов Client.LocaleID.resx, где LocaleID — идентификатор соответствующего языка Windows, и эти файлы должны находиться в корневом узле клиентского проекта.Если требуется локализовать приложение на другой язык, вместо de-DE укажите соответствующий идентификатор языка и добавьте в следующем шаге собственный перевод.

  3. Добавьте в файл ресурсов следующие значения:

    Имя

    Значение

    AddContact

    Einen Newen Kontakt erstellen

    Текст

    Fügen Sie die Kontaktinformationen hinzu und speichern Sie dann.

    Эти строки будут отображаться при запуске приложения на компьютере, где в региональных стандартах выбран немецкий язык (или другой выбранный язык). Чтобы локализовать приложение на несколько языков, добавьте файл ресурсов для каждого из них.

    Примечание

    Если клиент Silverlight локализован на несколько языков, используемый язык определяется выбранным языковым пакетом Windows.

Вызов ресурса из кода

  1. В окне Обозреватель решений откройте файл Service.resx и добавьте в него следующие значения:

    Имя

    Значение

    ErrorMessage

    Имя не может содержать восклицательный знак.

  2. Откройте файл Service.de-DE.resx и добавьте следующие значения:

    Имя

    Значение

    ErrorMessage

    Name darf keine Ausrufezeichen enthalten.

  3. В окне Обозреватель решений откройте сущность Contacts.lsml.

  4. В конструкторе сущностей в списке Запись кода выберите метод Contacts_Validate.

    Примечание

    Убедитесь, что выбрана сама сущность, а не поле сущности.В противном случае возникает ошибка сборки.

  5. В окне Редактор кода добавьте оператор Imports или using.

    Imports My.Resources
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Reflection;
    using System.Resources;
    using System.Text;
    using Microsoft.LightSwitch;
    using Microsoft.LightSwitch.Security.Server;
    namespace LightSwitchApplication
    
  6. Добавьте следующий код в метод Contacts_Validate.

    If entity.ContactName.Contains(“!”) Then
                    results.AddEntityError(Service.ErrorMessage)
                End If
    
    if (entity.ContactName.Contains("!"))
                {
                    ResourceManager serviceResources = new ResourceManager(
                        "LightSwitchApplication.Service", Assembly.GetExecutingAssembly());
                results.AddEntityError(serviceResources.GetString("ErrorMessage"));
                }
    

    Теперь вы можете запустить приложение, указать имя нового контакта, содержащее восклицательный знак, сохранить, и проверить, что отображается сообщение об ошибке. Можно также развернуть приложение на компьютере, где в региональных стандартах выбран немецкий язык, и убедиться, что сообщение локализовано.

Локализация HTML-клиента

  1. В окне Обозреватель решений откройте экран BrowseContacts.lsml.

  2. В конструкторе экрана выберите узел Показать AddEditContact.

  3. В окне Свойства выберите свойство Отображаемое имя и введите $(add).

  4. В окне Обозреватель решений разверните узел Localization Sample.HTMLClient, откройте контекстное меню узла Содержимое, выберите Добавить, затем Новая папка.

  5. Назовите папку Resources.

  6. Откройте контекстное меню узла Ресурсы, выберите Добавить, затем Создать элемент.

  7. Добавьте элемент Файл ресурсов (.resjson) и назовите его client.lang-en-US.resjson.

    Важно!

    Если приложение LightSwitch имеет HTML-клиент, необходимо всегда называть файл языковых ресурсов по умолчанию client.lang-LocaleID.resjson, где LocaleID — идентификатор языка Windows, соответствующий языку на компьютере разработчика.В отличие от клиента Silverlight, для HTML-клиента не существует понятия "язык по умолчанию".

  8. В окне Редактор кода замените код следующим:

    {
       “add” : “Add a Contact”,
       “errorMessage” :  “Name can’t contain an exclamation mark.“
    }
    
  9. Откройте контекстное меню узла Ресурсы, выберите Добавить, затем Создать элемент.

  10. Добавьте еще один элемент Файл ресурсов (.resjson) и назовите его client.lang-de-DE.resjson.

  11. В окне Редактор кода замените код следующим:

    {
       “add” : “Hinzufügen eines Kontakts”,
       “errorMessage” :  “Name darf keine Ausrufezeichen enthalten.“
    
    }
    
  12. В окне Обозреватель решений откройте контекстное меню узла Localization Sample.HTMLClient и выберите Задать в качестве клиента запуска.

  13. Откройте экран AddEditContact.lsml и в конструкторе экрана, в списке Запись кода замените код в методе beforeApplyChanges следующим кодом.

    myapp.AddEditContact.beforeApplyChanges = function (screen) {
        if (screen.Contact.ContactName.indexOf('!') != -1) {
            screen.findContentItem("ContactName").validationResults = [
                new msls.ValidationResult(
                    screen.Contact.details.properties.ContactName,
                    WinJS.Resources.getString("/client/errorMessage").value
                )
            ];
            return false;
        }
    
    };
    

    Теперь можно запустить приложение и убедиться, что текст кнопки Добавить контакт и сообщение об ошибке отображаются правильно. Можно также развернуть приложение на компьютере с браузером, где в параметрах выбран немецкий язык, и убедиться, что строки локализованы.

    Примечание

    Если HTML-клиент локализован на несколько языков, используемый язык определяется установленным языком браузера.

Следующие действия

Итак, мы выполнили все шаги, необходимые для локализации приложения LightSwitch. Возможно, вы заметили, что многие элементы пользовательского интерфейса, например командная строка и меню навигации экрана, локализуются автоматически. Можно переопределить автоматические переводы, добавив идентификаторы ресурсов для свойств Отображаемое имя или Описание соответствующих элементов. В действительности, с помощью описанных выше методов можно локализовать практически любой элемент приложения LightSwitch.

См. также

Другие ресурсы

Проекты: контейнер для приложения LightSwitch

Использование резервных ресурсов

Справочник по API языковой поддержки