Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Интернационализация приложения
Класс java.util.Locale позволяет учесть особенности региональных представлений алфавита, символов, чисел, дат и проч. Автоматически виртуальная машина использует текущие региональные установки операционной системы, но при необходимости их можно изменять. Для некоторых стран региональные параметры устанавливаются с помощью констант, например: Locale.US, Locale.FRANCE. Для всех остальных объект Locale нужно создавать с помощью конструктора, например: Locale rus = new Locale(" ru", " RU"); Определить текущий вариант региональных параметров можно следующим образом: Locale current = Locale.getDefault(); А можно и изменить для текущего экземпляра (instance) JVM: Locale.setDefault(Locale.CANADA); Если, например, в ОС установлен регион «Беларусь» или в приложении с помощью new Locale(" be", " BY"), то следующий код (при выводе результатов выполнения на консоль) current.getCountry(); // код региона current.getDisplayCountry(); // название региона current.getLanguage(); // код языка региона current.getDisplayLanguage(); // название языка региона позволяет получить информацию о регионе в виде: BY Беларусь be белорусский Для создания приложений, поддерживающих несколько языков, существует целый ряд решений. Самое логичное из них — дублирование сообщений на разных языках в разных файлах с эквивалентными ключами с последующим извлечением информации на основе значения заданной локали. Данное решение основано на взаимодействии классов java.util.ResourceBundle и Locale. Класс ResourceBundle предназначен для взаимодействия с текстовыми файлами свойств (расширение.properties). Каждый объект ResourceBundle представляет собой набор соответствующих подтипов, которые разделяют одно и то же базовое имя, к которому можно получить доступ через поле parent. Следующий список показывает возможный набор соответствующих ресурсов с базовым именем text. Символы, следующие за базовым именем, показывают код языка, код страны и тип операционной системы. Например, файл text_it_CH.properties соответствует объекту Locale, заданному кодом итальянского языка (it) и кодом страны Швейцарии (CH). text.properties text_ru_RU.properties text_it_CH.properties text_fr_CA.properties Чтобы выбрать определенный объект ResourceBundle, следует вызвать один из статических перегруженных методов getBundle(параметры). Следующий фрагмент выбирает text объекта ResourceBundle для объекта Locale, который соответствует французскому языку и стране Канада. Locale locale = new Locale(" fr", " CA"); ResourceBundle rb = ResourceBundle.getBundle(" text", locale); Если объект ResourceBundle для заданного объекта Locale не существует, то метод getBundle() извлечет наиболее общий. Если общее определение файла ресурсов не задано, то метод getBundle() генерирует исключительную ситуацию MissingResourceException. Чтобы это не произошло, необходимо обеспечить наличие базового файла ресурсов без суффиксов, а именно: text.properties в дополнение к частным случаям вида: text_en_US.properties text_ru_RU.properties В файлах свойств информация должна быть организована по принципу: #Комментарий group1.key1 = value1 group1.key2 = value2 group2.key1 = value3… Например: label.button = submit label.field = login message.welcome = Welcome! или label.button = принять label.field = логин message.welcome = Добро пожаловать! В классе ResourceBundle определен ряд полезных методов, в том числе метод getKeys(), возвращающий объект Enumeration, который применяется для последовательного обращения к элементам. Множество Set< String> всех ключей — методом keySet(). Конкретное значение по конкретному ключу извлекается методом getString(String key). Отсутствие запрашиваемого ключа приводит к генерации исключения. Проверить наличие ключа в файле можно методом boolean containsKey(String key). Методы getObject(String key) и getStringArray(String key) извлекают соответственно объект и массив строк по передаваемому ключу.
|