npm install -g ионное странное поведение

В случае базового веб-приложения JSP / Servlet основной подход будет использовать JSTL fmt taglib в сочетании с ресурсными пучками , Пакеты ресурсов содержат пары «ключ-значение», где ключ является константой, которая одинакова для всех языков, и значение отличается на каждый язык. Пакеты ресурсов обычно представляют собой файлы свойств , которые загружаются API ResourceBundle . Однако это можно настроить так, чтобы вы могли загружать пары ключ-значение из базы данных.

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


  1. Создайте следующие файлы и поместите их в некоторый пакет, например com.example.i18n (в случае Maven, поместите их в структуру пакета внутри src/main/resources). text.properties (содержит пары ключ-значение на языке по умолчанию, обычно на английском языке)
    login.label.username = Username
    login.label.password = Password
    login.button.submit = Sign in
    
    text_nl.properties (содержит пары ключ-значение из голландской (nl)
    login.label.username = Gebruikersnaam
    login.label.password = Wachtwoord
    login.button.submit = Inloggen
    
    text_es.properties (содержит испанский (es) пары ключ-значение)
    login.label.username = Nombre de usuario
    login.label.password = Contraseña
    login.button.submit = Acceder
    
    Имя файла ресурса должно соответствовать следующему шаблону name_ll_CC.properties. Часть _ll должна быть нижним регистром ISO 693-1 . Это необязательно и требуется только, когда присутствует _CC. Часть _CC должна быть в верхнем регистре ISO 3166-1 Alpha-2 код страны. Это необязательно и часто используется для различения языковых диалектов, характерных для конкретной страны, например Американский английский (_en_US) и Британский английский (_en_GB).
  2. Если этого еще не сделано, установите JSTL. Если вы работаете на контейнере Servlet 2.5 или новее (Tomcat 6.0 и т. Д.), И ваш web.xml объявлен соответствующим спецификации Servlet 2.5, тогда просто поставьте jstl-1.2.jar в webapp /WEB-INF/lib.
  3. Создайте следующий пример JSP-файла и поместите его в папку веб-содержимого. login.jsp
    <%@ page pageEncoding="UTF-8" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
    
    
    
    
    
        
            JSP/JSTL i18n demo
        
        
            


    Управляет текущим языком . Если язык был предоставлен как параметр запроса (по выпадающему языку), он будет установлен. Иначе, если язык уже был предварительно установлен в сеансе, тогда придерживайтесь его. Else использует локализованный пользователем язык в заголовке запроса. устанавливает языковой стандарт для набора ресурсов. Важно, чтобы эта строка была до . инициализирует пакет ресурсов по его базовому имени (то есть полное имя пакета до тех пор, пока его имя не будет указано без спецификатора _ll_CC). извлекает значение сообщения указанным ключом пакета. сообщает поисковым роботам, на каком языке находится страница, чтобы он не был помечен как дублирующийся контент (таким образом, это полезно для SEO). Выпадающий язык сразу же будет отправлен JavaScript, когда будет выбран другой язык, и страница будет обновлена ​​с помощью выбранного языка.

Однако вам нужно иметь в виду, что файлы свойств по умолчанию читать с использованием кодировки ISO-8859-1. Вам нужно будет избежать их путем unicode-экранов. Это можно сделать с помощью инструмента native2ascii.exe, поставляемого JDK. Дополнительную информацию см. Также в разделе в этой статье .

Теоретической альтернативой было бы предоставление пакета с пользовательским Control для загрузки этих файлов в виде UTF-8, но это, к сожалению, не поддерживается базовым JSTL fmt TagLib. Вам нужно будет управлять всем этим с помощью Filter. Существуют рамки (MVC), которые могут обрабатывать это более прозрачным образом, например JSF, см. Также в этой статье .

0
задан Ehsaan Ullah 21 February 2019 в 17:24
поделиться