Подписаться на мой список электронной почты сейчас http://jauyeung.net/subscribe/
Следуй за мной в Twitter в https://twitter.com/AuMayeung
Много других статей на https://medium.com/@hohanga
С Отрицательный Listformat Конструктор, мы можем с легкостью отформатировать списки чувствительных к языкам. Это позволяет нам установить локаль, в которую можно отформатировать список. Кроме того, он позволяет нам установить параметры для форматирования списков, таких как тип списка или стиль списка. Чтобы использовать его, мы можем создать новый Listformat объект с Отрицательный Listformat конструктор.
Конструктор занимает до двух аргументов. Первый аргумент – это строка локали, которую вы хотите отформатировать список. Второй аргумент принимает объект с вариантами форматирования и стилирования списка. Пример использования Отрицательный Listformat Конструктор:
const arr = ['bus', 'car', 'train'];
const formatter = new Intl.ListFormat('en', {
style: 'long',
type: 'conjunction'
});
const formattedList = formatter.format(arr);
console.log(formattedList);
Если мы запустим код выше, мы увидим Автобус , Автомобиль , и Поезд Зарегистрирован из console.log утверждение. Отрицательный Listformat Конструктор создает объект форматирования, который имеет формат Способ преобразования массива в список в соответствии с параметрами локали и форматирования, которые мы устанавливаем.
В приведенном выше примере мы устанавливаем локаль на RU Для английского языка мы устанавливаем Стиль недвижимость в долго , что форматирует массив строк в чем-то вроде A , B , и C. или A, B, или C Отказ Тип Свойство определяет вид списка, который мы хотим отформатировать список. Соединение означает, что мы форматируем список в A, B, и C Отказ
Аргументы конструктора являются локалями, которые вы хотите отформатировать список. Это может быть строка или массив строк, содержащих локаль списка, в который вы хотите отформатировать его. Строка или строки локали должны быть языковым тегом BCP 47. локалий аргумент не является обязательным. Сокращенный список языковых тегов BCP-47 включает в себя:
ar — Arabic bg — Bulgarian ca — Catalan zh-Hans — Chinese, Han (Simplified variant) cs — Czech da — Danish de — German el — Modern Greek (1453 and later) en — English es — Spanish fi — Finnish fr — French he — Hebrew hu — Hungarian is — Icelandic it — Italian ja — Japanese ko — Korean nl — Dutch no — Norwegian pl — Polish pt — Portuguese rm — Romansh ro — Romanian ru — Russian hr — Croatian sk — Slovak sq — Albanian sv — Swedish th — Thai tr — Turkish ur — Urdu id — Indonesian
Второй аргумент для конструктора является объектом, который позволяет нам установить параметры для того, чтобы отформатировать строку списка. Для этого объекта есть три свойства: Localematcher , Тип и Стиль Отказ Localematcher Опция указывает алгоритм сопоставления локали для использования. Возможные значения – Найти и Лучше всего подходит Отказ
Найти Алгоритм ищет локали, пока он не найдет тот, который соответствует набору символов строк, которые сравниваются.
Лучше всего подходит Находит локаль, которая по крайней мере, как, но, возможно, больше, подходит, чем Найти алгоритм.
Тип Собственность может принимать два возможных значения: соединение , дизъюнкция или единица Отказ соединение означает, что список соединяется с и , как в A, B, и C Отказ Это опция по умолчанию. Неподвижение означает, что список соединяется с или , как в A, B, или C Отказ
единица Стенды за список значений с единицами.
Стиль Свойство определяет длину отформатированного сообщения. Для этого свойства есть два возможных значения. Это может быть либо длинная (например, A, B, и C ), короткая (например, a, b, c ) или узкий (например, A B C ). Когда Стиль это короткая или узкий , единица Это единственное разрешенное значение для этой опции.
Например, мы можем использовать его для форматирования списка в строку, которая соединена с и в конце. Мы можем написать следующее, чтобы сделать это:
const arr = ['bus', 'car', 'bicycle'];
const formatter = new Intl.ListFormat('en', {
style: 'long',
type: 'conjunction'
});
const formattedList = formatter.format(arr);
console.log(formattedList);
Если мы войдем в систему Форматтеллист Постоянная как мы сделали выше, мы получаем Автобус, автомобиль и велосипед Отказ Мы устанавливаем RU Локаль для форматирования строки для английского языка, со стилем длинная и в качестве соединения, что означает, что список будет присоединиться к и в конце. Если мы хотим получить или Список, мы можем изменить Тип Собственность для дизъюнкция , как в следующем коде:
const arr = ['bus', 'car', 'bicycle'];
const formatter = new Intl.ListFormat('en', {
style: 'long',
type: 'disjunction'
});
const formattedList = formatter.format(arr);
console.log(formattedList);
Если мы запустим код выше, то мы получаем Автобус, автомобиль или велосипед Зарегистрировано в console.log заявление выше.
Мы можем преобразовать его в более короткий список, используя коротко или узкий Вариант для Стиль имущество. Например, мы можем написать:
const arr = ['bus', 'car', 'bicycle'];
const formatter = new Intl.ListFormat('en', {
style: 'short',
type: 'conjunction'
});
const formattedList = formatter.format(arr);
console.log(formattedList);
Тогда мы получаем Автобус, Автомобиль и велосипед в console.log вывод, когда мы запустим код выше. коротко и дизъюнкция комбинация такая же, как долго и дизъюнкция комбинация. Если мы пишем:
const arr = ['bus', 'car', 'bicycle'];
const formatter = new Intl.ListFormat('en', {
style: 'short',
type: 'disjunction'
});
const formattedList = formatter.format(arr);
console.log(formattedList);
Тогда мы получаем Автобус, автомобиль или велосипед Отказ узкий Вариант сделает его еще короче. Например, если мы поставь:
const arr = ['bus', 'car', 'bicycle'];
const formatter = new Intl.ListFormat('en', {
style: 'narrow',
type: 'conjunction'
});
const formattedList = formatter.format(arr);
console.log(formattedList);
Тогда мы получаем автобус, автомобиль, велосипед Зарегистрировано в console.log Когда мы запускаем код выше.
Это также работает для неанглийских местных мест. Например, если мы хотим отформатировать список китайских строк в список, мы можем написать следующий код:
const arr = ['日', '月', '星'];
const formatter = new Intl.ListFormat('zh-hant', {
style: 'narrow',
type: 'conjunction'
});
const formattedList = formatter.format(arr);
console.log(formattedList);
Тогда мы получаем ‘日, 月 和 星’, что означает Солнце, Луна и Звезды . Если мы переключаем Стиль Возможность длинная или коротко Мы бы получили то же самое, потому что на китайском языке есть только один способ написать соединение, в отличие от английского. дизъюнкция Также работает с китайским. Например, если у нас есть:
const arr = ['日', '月', '星'];
const formatter = new Intl.ListFormat('zh-hant', {
style: 'long',
type: 'disjunction'
});
const formattedList = formatter.format(arr);
console.log(formattedList);
Тогда мы получаем «日, 月 或 星», что означает солнце, луна или звезды . Если мы переключаем Стиль Возможность длинная или коротко Как и в случае китайских союзов, мы получим то же самое, потому что на китайском языке есть только один способ написать дизъюнкцию, в отличие от английского.
В дополнение к формат Метод, Отрицательный Listformat. Экземпляр также имеет форматтомки Способ, который форматирует массив в соединение или диспертизацию строки, а затем возвращает его в качестве массива частей отформатированной строки.
Например, если мы хотим вернуть массив частей отформатированной английской строки для списка, то мы можем написать следующий код:
const arr = ['bus', 'car', 'bicycle'];
const formatter = new Intl.ListFormat('en', {
style: 'long',
type: 'conjunction'
});
const formattedList = formatter.formatToParts(arr);
console.log(formattedList);
Тогда мы получаем:
[
{
"type": "element",
"value": "bus"
},
{
"type": "literal",
"value": ", "
},
{
"type": "element",
"value": "car"
},
{
"type": "literal",
"value": ", and "
},
{
"type": "element",
"value": "bicycle"
}
]
от console.log утверждение. Это части отформатированной строки, которую мы получаем с формат Метод, но разбитый в отдельных записях. Этот метод удобно, если мы хотим только некоторые части форматированной строки.
С Отрицательный Listformat Конструктор, зависит от языковых списков, просты. Конструктор принимает строку локали или массив строк локали в качестве первого аргумента и объекта с некоторыми вариантами для второго аргумента. Мы можем преобразовать массив в строку, которая имеет список, отформатированную в сочетании или дизъюнкции с Отрицательный Listformat. Экземпляр формат Способ, который принимает строку локали и варианты для стиля длины форматированной строки и будь то соединение, дизъюнкция или единичная строка. У этого также есть форматтомки Способ преобразования его в отформатированный список, а затем разрушать детали в массив.
Оригинал: “https://dev.to/aumayeung/formatting-language-sensitive-lists-in-javascript-with-listformat-4l2e”