Краткое руководство. Использование строковых ресурсов (HTML)
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. В случае разработки приложений для Windows 10 см. раздел последняя документация]
Поместите строковые ресурсы в файлы ресурсов и вставьте в код JavaScript или разметку HTML ссылки на эти строки.
Инструкции
- Помещайте строки в файлы ресурсов, а не непосредственно в код или разметку.
- Откройте файл package.appxmanifest в Visual Studio, перейдите на вкладку Приложение и установите язык по умолчанию "en-US". (Если это универсальное приложение, повторите операцию для каждого файла package.appxmanifest в вашем решении.)Примечание Таким образом для проекта будет задан язык по умолчанию. Ресурсы языка по умолчанию используются, если предпочитаемый язык пользователя или языки интерфейса не соответствуют языковым ресурсам, имеющимся в приложении. Дополнительные сведения см. в разделе Страницы свойств, JavaScript.
- Создайте папку для размещения файлов ресурсов.
- В обозревателе решений щелкните правой кнопкой мыши проект (Общий проект, если это универсальное приложение) и выберите команды Добавить > Новая папка.
- Назовите новую папку "strings".
- Если новая папка не отображается в обозревателе решений, выберите Проект > Показать все файлы из меню Microsoft Visual Studio (проект должен быть выбран).
- Создайте вложенную папку и файл ресурса для языка "английский (США)".
Щелкните правой кнопкой мыши папку strings и создайте в ней новую папку. Назовите ее "en-US". Файл ресурсов сохраняется в папке, которая названа в соответствии со спецификацией языковых тегов BCP-47. Дополнительные сведения о квалификаторе языка и список распространенных тегов языка см. в разделе Именование ресурсов с помощью квалификаторов.
Щелкните правой кнопкой мыши папку en-US и выберите Добавить > Создать элемент….
Выберите Файл ресурсов (.resjson).
Щелкните Добавить. Будет добавлен файл ресурсов с именем по умолчанию resources.rejson. Рекомендуется использовать имя по умолчанию. Приложение может разделить свои ресурсы и разместить их в других файлах, но вам следует специально позаботиться о том, чтобы ссылки на них были правильными (см. Загрузка строковых ресурсов).
Новый файл содержит содержимое по умолчанию. Замените его следующим содержимым (которое может очень мало отличаться от содержимого по умолчанию):
strings/en-US/resources.resjson
{ "greeting" : "Hello", "_greeting.comment" : "A welcome greeting.", "farewell" : "Goodbye", "_farewell.comment" : "A goodbye." }
Это строгий синтаксис JSON, где необходимо обязательно ставить запятую после каждой пары «имя — значение» за исключением последней. В этом примере
greeting
иfarewell
обозначают отображаемые строки. Остальные пары (_greeting.comment
и_farewell.comment
) представляют собой комментарии, описывающие эти строки. В комментариях удобно размещать специальные указания для переводчиков, которые локализуют строки на другие языки.
- Добавьте идентификаторы строковых ресурсов в код и разметку.
Добавьте ссылки на файл JavaScript из вашего HTML-файла, если их там еще нет. (Стандартные шаблоны всегда должны создавать их; имя файла CSS по умолчанию зависит от используемого вами шаблона, однако это не имеет значения для данного примера.)
<!-- WinJS references --> <link href="/css/ui-themed.css" rel="stylesheet" /> <script src="//Microsoft.Phone.WinJS.2.1/js/base.js"></script> <script src="//Microsoft.Phone.WinJS.2.1/js/ui.js"></script>
В связанном с HTML-файлом коде JavaScript добавьте вызов функции WinJS.Resources.processAll при загрузке вашей страницы HTML.
WinJS.Application.onloaded = function(){ WinJS.Resources.processAll(); }
Если в объект WinJS.UI.Pages.PageControl загружается дополнительный HTML-файл, вызовите WinJS.Resources.processAll(element) в методе IPageControlMembers.ready элемента управления страницей, где element — загружаемый элемент HTML (и его дочерние элементы). Этот пример основан на сценарии 6 в разделе Ресурсы приложения и пример локализации:
var output; var page = WinJS.UI.Pages.define("/html/scenario6.html", { ready: function (element, options) { output = element.querySelector('#output'); WinJS.Resources.processAll(output); // Refetch string resources WinJS.Resources.addEventListener("contextchanged", refresh, false); } unload: function () { WinJS.Resources.removeEventListener("contextchanged", refresh, false); } });
С помощью идентификаторов (
greeting
иfarewell
) из файлов ресурсов добавьте в HTML-файл ссылки на строковые ресурсы, используя атрибут data-win-res attribute.<h2><span data-win-res="{textContent: 'greeting'}"></span></h2> <h2><span data-win-res="{textContent: 'farewell'}"></span></h2>
Далее показано, как добавить ссылки на строковые ресурсы в JavaScript.
var el = document.getElementById('header'); var res = WinJS.Resources.getString('greeting'); el.textContent = res.value; el.setAttribute('lang', res.lang);
Примечания и советы
Общий шаблон data-win-res attribute для замены HTML: data-win-res="{propertyname1**: 'resource ID', propertyname2: 'resource ID2'}"**.
Если строковый ресурс не содержит разметку и может быть вставлен как обычный текст, привяжите ресурс к свойству textContent вместо innerHTML. Свойство textContent можно заменить в модели DOM гораздо быстрее, чем innerHTML.
Вы также можете использовать attributes: качестве имени свойства. В данном случае значение является не именем именованного ресурса, а набором, где первое значение — это имя атрибута, а второе — именованный ресурс, который требуется использовать в качестве значения. Пример: <div data-win-res="{attributes: {'aria-label' : 'Button1LabelForAria'}}" > ...</div>
. Такой пример можно увидеть в сценарии 9 в образце ресурсов и локализации приложения.
Подробнее о добавлении дополнительных языков и локализации см. в разделе Краткое руководство: перевод ресурсов интерфейса.
Связанные разделы
Как присваивать имена ресурсам с помощью квалификаторов
Краткое руководство. Перевод ресурсов интерфейса