Содержание
- Познакомимся с Женей
- Kotlin
- Гибридные приложения
- Нужна помощь в создании приложения?
- Какой язык программирования учить, чтобы создавать приложения для iOS
- О чем пойдет речь, а о чем не пойдет?
- PhoneGap
- Basic
- React Native
- Java — основное средство для Android-разработчика
- ТОП 3 программы
- Как все начиналось…
- XML View и Dynamic Layout Previews
- C-Sharp
- Сколько зарабатывают мобильные разработчики в разных странах
- Обзор Gradle
- Мифы профессии
- Особенности форматирования числовых значений
Познакомимся с Женей
Евгения — солюшн-архитектор. Она должна решить, как построить новое мобильное приложение для изучения английского языка не носителями: людьми из Турции, Италии или России. Давайте посмотрим, как Женя подходит к этой задаче.
Приложение должно включать в себя богатую анимацию, уметь воспроизводить и записывать аудио, показывать видео с субтитрами, а также статические и динамические изображения.
В компании — владельце приложения также ожидают, что разработкой будет заниматься единая команда — как для Android- и iOS-приложений, чтобы свести к минимуму усилия по передаче знаний и максимизировать скорость команды. В будущем также планируют запустить веб-приложения. А еще в компании хотели бы упростить будущий найм.
Kotlin
Отличный язык программирования, а в связке с «Джава» он ещё лучше. Его популярность растёт, и он тоже является официальным языком для разработки приложений на Android. Мало того, в 2019 году компания Google назначила его приоритетным языком для платформы Android.
Kotlin совместим с Java, имеет больше синтаксического сахара и считается более лёгким для начинающих. Прекрасный язык программирования для тех, кто учится разрабатывать под Android. Но учтите, что некоторые специалисты считают, что знать Java всё же необходимо (статью о Kotlin и Java вы можете почитать здесь). Как бы там ни было, с помощью Kotlin вы не будете чувствовать особых проблем при создании нативных Android-приложений.
Гибридные приложения
Жене не нравится, что PWA обладают ограниченной поддержкой пушей. Поэтому она гуглит дальше.
Пользователи смогут найти приложение в Google Play и AppStore, чего не было в случае с PWA. А еще, если вам нужны дополнительные возможности, вы можете легко добавить их — ведь у вас настоящее приложение, для этого уже есть необходимые фреймворки.
Плюсы:
-
Высокая скорость работы.
-
Настоящая кросс-платформенность.
-
Можно пользоваться практически всеми преимуществами нативных приложений.
Минусы:
-
UX не очень (ведь перед нами по-прежнему сайт в шкуре приложения).
-
Небольшое сообщество разработчиков.
Архитектура гибридного приложения
Примеры таких приложений: Appcelerator, Ionic, Apache Cordova.
Нужна помощь в создании приложения?
Когда стоит задача создать приложение для Android и есть понимание, что своими силами не обойтись, возникает вопрос: кому же заказать разработку. Пути существует два. Если бюджет сильно ограничен, можно искать помощи у фрилансеров, но здесь не стоит рассчитывать на соблюдение сроков и постоянное сопровождение.
Если же приложение создается с целью улучшения репутации компании и привлечения клиентов, для разработки лучше обратиться к компаниям, имеющим опыт подобных проектов и положительные отзывы.
Кто может помочь?
За качественным рабочим приложением можно обратиться в агенство Apppublisher. Более десяти лет специалисты компании разрабатывают и оказывают поддержку в продвижении проектов ао всему миру.
Совместно с заказчиком специалисты компании Apppublisher проанализируют тематику будущего приложения, помогут изучить действия конкурентов, разработают уникальный UI/UX дизайн, дадут рекомендации по продвижению и будут сопровождать на всех этапах проекта.
Кроме того, работая с профессионалами, не стоит переживать о вопросах оптимизации, обновления и состояния проекта. Специалисты также берут на себя все эти вопросы.
Какой язык программирования учить, чтобы создавать приложения для iOS
Какой язык учить первым, зависит от того, что вы собираетесь делать. Например, если хотите устроиться в какую-нибудь компанию и поддерживать уже готовое приложение, то лучше начать с Objective-C, а потом приступить к изучению Swift. Неплохо знать и кросс-платформенные языки, но тоже исключительно для того, чтобы вы могли пофиксить баг или добавить новые функции.
Если же вы хотите работать над новыми проектами, то лучше сразу начинать со Swift. По данным с сайта Apple, приложения на Swift работают до 8,4 раз быстрее, чем на Python 2.7, и до 2,6 раз быстрее, чем на Objective-C.
Важный критерий — поддержка и постоянное обновление языка. В сентябре 2018 года (вместе с выходом iOS 12) вышла версия Swift 4.2, в которую добавили многое, чего не хватало раньше:
- параллельная обработка данных (async/await);
- поддержка регулярных выражений;
- стабильная работа ABI со стандартными библиотеками.
IT — сфера, в которой нужно постоянно развиваться, изучать новые технологии и пробовать писать на разных языках. Недостаточно один раз прочесть книгу и всю жизнь пользоваться советами из нее.
О чем пойдет речь, а о чем не пойдет?
Далее не будет ничего о:
- Теории, которая лежит в основе форматированного вывода строк, и деталях реализации библиотек, которые этим занимаются. То есть того, что помогло бы вам написать свою библиотеку.
- Ресурсах строковых, векторных и прочих. О том, какие квалификаторы ресурсов использовать, какие картинки на арабском должны отображаться справа налево, а какие нет, и других тонкостях.
- Процессе централизованного перевода ресурсов для всех платформ. Как его организовать, чтобы всем жилось хорошо, даже iOS-никам.
А пойдет речь о:
- Практике. Рассмотрим задачу, ее ограничения и решение с диаграммами, примерами и фрагментами кода.
- API SDK, которое было использовано для этого решения.
- Особенностях форматирования числовых значений для разных региональных стандартов, о которых стоит знать дизайнерам.
PhoneGap
Существует большое количество языков, при помощи которых можно создать качественное приложение. Некоторые языки имеют встроенную среду разработки, что значительно облегчает процесс создания приложения. Другие нуждаются в дополнительных инструментах, однако их функционал не менее широкий. Давайте разберем, на каких языках происходит Android программирование.
Что касается самого языка BASIC, то он единственный платный для разработки. Игры и приложения получаются ресурсоемкими, поэтому не соответствуют Material Design. Скорость работы приложений на BASIC также не высокая. Но он очень прост в освоении, имеет понятный синтаксис и позволяет реализовывать как сложные, так и простые проекты. Программирование приложений для андроид при помощи BASIC рекомендуется делать в том случае, если задачи не требуют сложных вычислений.
Kotlin – это относительно молодой язык, который появился в 2017 году. Но за такой короткий промежуток он смог завоевать любовь многих программистов, и в 2019 году был признан компанией Google лучшим языком программирования для андроид, отодвинув Java на второе место.
Python первоначально воспринимается так, что программирование под андроид на нем невозможно. Считается, что на нем нельзя разрабатывать нативные приложения, но любители данного языка создали мощные инструменты, которые помогают разрабатывать приложения и компилировать код. Разработано большое количество библиотек, которые помогают строить нативные интерфейсы. К примеру, можно использовать фреймворк Kivy для работы с Python.
Наиболее популярная среда разработки мобильных приложений при помощи Lua – это Corona SDK. Распространяется она полностью бесплатно (с 2015 года) и считается очень удобной для начинающих разработчиков. По ней много документации и полезных советов от специалистов, в том числе, в Рунете.
Для работы под Android были созданы функциональные и очень удобные среды программирования Visual и Xamarin Studio. Также C# вам пригодится и станет большим плюсом, когда вы начнете использовать Unity 3D. Такой набор расширяет ваши возможности практически до безграничных.
На Java можно увидеть огромное количество исходников на GitHub, да и сами разработчики отмечают, что этот красивый и мощный язык очень удобен для написания мобильных приложений. Конечно, это не самый быстрый и простой процесс. В конце концов, языку уже 22 года, а простота никогда не была его преимуществом. Также бытует мнение, что при желании можно обойтись более современными аналогами. Но практика показывает, что без Java добиться успехов в сфере создания приложений под Android еще никому не удалось.
Basic
Да-да, речь идёт о старом-добром Бейсике, а точнее, о довольно простом и мощном инструменте для разработки Android-приложений — Basic4Android.
Сам по себе язык Basic4Android очень похож на популярный Visual Basic. Разрабатывая приложения на нём, вы сможете использовать много дополнительных библиотек с разным функционалом, а для выполнения программ специальных runtime-средств не потребуется.
Basic4Android имеет мощный визуальный дизайнер, поддерживающий разные ориентации и размеры экранов. Для отладки приложений подключают эмулятор Android либо реальное устройство (используется USB либо локальная сеть). Язык совместим со всеми версиями Android.
Тут следует добавить, что при выборе языка программирования следует учитывать степень сложности стоящих перед вами задач. Например, для более профессиональных и сложных приложений лучше выбирать более мощный и сложный язык. Но если речь идёт о реализации простых продуктов, то Basic4Android подойдёт вполне. К примеру, создав простую программу со схожим функционалом и на С#, и Basic4Android, вы потратите меньше времени, используя Basic. Как-то так.
По материалам статей:
— «Top Programming Languages for Android App Development»;
— «10 языков для Android-разработчика».
React Native
Единый воркфлоу и инструменты: неважно, работаете ли вы на Android- или iOS-версией — все равно используете одни инструменты.
По этой причине — скорость и простота разработки.
Обвязка унаследованного приложения в JS API и гибридные приложения: допустим, у вас уже есть готовое приложение для iOS, и вы хотите перейти на React Native. Тогда можно обернуть нативные компоненты так, чтобы они были доступны в React Native
Так вы можете постепенно переходить на React, и получается гибридное приложение — половина его нативная, а половина — в React, и несколько унаследованных компонентов — в JS API.
Java — основное средство для Android-разработчика
Подойдёт для создания игр и простых приложений
Своё путешествие в мир Android рекомендуется начинать именно отсюда: любой androi разработчик знаком с Java и понимает все немалочисленные плюсы и минусы этого языка.
Если вам по каким-то причинам не хочется изучать Java или разбираться в построении интерфейса через XML, то вы можете выбрать для себя данное IDE. Corona — это достаточно легковесная среда разработки, код в которой необходимо писать на достаточно лёгком LUA (любители Pascal оценят по достоинству).
Android разработка — это не только Java и Android Studio. Писать под Андроид можно на разных языках. Мы расскажем про 10 самых популярных языков для Андроид.
Большая часть комьюнити разработчиков просто игнорирует NDK, считая его недостойным внимания. На практике данная среда обеспечивает лучшие показатели быстродействия и эффективнее задействует ресурсы системы. Помните, хорошая идея и хорошая реализация – разные понятия.
ТОП 3 программы
Помимо конструкторов для создания приложений существуют специальные программы. С их помощью можно создавать более серьезные проекты с расширенным функционалом. Кроме того, конструкторы содержат в себе ограниченный комплект инструментов для создания приложения, в программных редах этот выбор более обширный.
Android Studio
Программа для создания приложений для андроид, доступная к бесплатному скачиванию с официального сайта создателя. В Android Studio для разработки приложений используется Java и присутствуют инструменты для создания решений для планшетов и смартфонов. Среди инструментов можно найти полный набор для создания любого приложения, начиная от кода, заканчивая элементами дизайна интерфейса.
B4A
Бесплатный инструмент для создания приложений, не получивший широкого распространения, однако весьма полезный. Концепция быстрой разработки приложений подразумевает их создание посредством процедурного языка программирования Basic. B4A объединяет в себе обширный набор нужного функционала, такого как: отладка с помощью Bluetooth, визуальный редактор для добавления и регулирования представлений, и многое другое.
Eclipse
Программа для создания программ для андроид, которую можно установить бесплатно. Для создания приложений в Eclipse используются Java и другие известные языки программирования. Среда идеальна для создания, редактирования и отладки приложений, планирующихся к использованию на разных устройствах с разного рода версиями платформы Android.
Как все начиналось…
А начиналось все как обычно с разматывания губы на тему вот сейчас как перейду с ПК на планшет, да как все заиграет.
Раньше (недели две назад) я постоянно задумывался почему так мало слышно о разработке пусть даже front-end’a на мобильных устройствах (нет, не под мобильные, а именно с мобильных устройств).
И думал я, что может только у меня такая потребность возникла. Что только я мучаюсь с подготовкой к работе. Ведь, чтобы развернуть бурную рабочую деятельность, мне нужно сперва сварить кофе, уложить всех спать, выгнать кота. А с мобильным устройством все проще. И уж если куплю планшет, да его настрою, будет у меня и мобильность, и скорость, да и лёгкость в движениях появится=)
И вот «летящей походкой я вышел за …», то есть за планшетом, и вернулся со средним, ну ладно, бюджетным «китайцем».
Решил, что рута я сбивать не буду, дефолтную систему сносить не буду, а то вдруг не просто так люди на ПК до сих пор работают.
XML View и Dynamic Layout Previews
Создание макета, с которым пользователи могут взаимодействовать, — важная часть процесса. В Android Studio это можно сделать в редакторе макета. Откройте content_main.xml из res/layout. Во вкладке Design вы можете переносить элементы интерфейса (кнопки, текстовые поля).
Справа от Design есть вкладка Text, которая позволяет редактировать XML непосредственно в макете.
Перед созданием внешнего вида, необходимо определить некоторые значения. Откройте strings.xml во вкладке res/values и добавьте следующее:
<string name="fortune_description">Suggest the question, which you can answer “yes” or “no”, then click on the magic ball.</string>
strings.xml содержит все строки, которые появляются в приложении. Разделение этих строк в отдельные файлы упрощает интернационализацию, т.к. нужен только файл строк для каждого языка, который требуется в приложении. Даже если вы не собираетесь переводить приложение на другие языки, использовать файл строк всегда рекомендуется.
Откройте dimens.xml в res/values и добавьте следующее:
<dimen name="description_text_size">15sp</dimen><dimen name="fortune_text_size">20sp</dimen>
dimens.xml содержит размерные величины, предельные интервалы для макетов, размера текста и пр. Рекомендуется сохранять эти данные в файле, чтобы их можно было использовать для создания макетов в дальнейшем.
Вернитесь в content_main.xml и замените все содержимое файла следующим кодом:
<?xml version="1.0" encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_behavior="@string/appbar_scrolling_view_behavior"tools:showIn="@layout/activity_main"tools:context=".MainActivity"> <TextViewandroid:id="@+id/descriptionText"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/fortune_description"android:gravity="center"android:textSize="@dimen/description_text_size"/> <ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/fortunateImage"android:src="@drawable/img_crystal"android:layout_centerHorizontal="true"android:layout_below="@id/descriptionText"android:layout_marginTop="10dp"/> <TextViewandroid:id="@+id/fortuneText"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/fortunateImage"android:gravity="center"android:layout_marginTop="20dp"android:textSize="@dimen/fortune_text_size"android:textStyle="bold"android:textColor="@android:color/holo_red_dark"/> <Buttonandroid:id="@+id/fortuneButton"android:layout_width="match_parent"android:layout_height="50dp"android:layout_below="@id/fortuneText"android:text="What's my fortune?"android:layout_centerHorizontal="true"android:layout_marginTop="10dp"/> </RelativeLayout>
Этот довольно большой код создает макет приложения под названием FortuneBall. На верхнем уровне вы добавили RelativeLayout (относительная разметка определяет позицию дочерних компонентов относительно родительского компонента). RelativeLayout можно растянуть, подогнать под размер родительского компонента.
В относительной разметке добавляются две части текста, изображение и кнопка. Все эти детали будут видны в порядке добавления. Их содержимое можно будет прочитать в strings.xml (текст) и в drawable (изображения).
Обновляя content_main.xml, обратите внимание на окно Preview обновляет UI:
Примечание: если не видно окно предпросмотра, во вкладке Text кликните на кнопку Preview на панели редактора разметки справа.
Создайте и запустите.
И вот вы создали макет приложения. Но на данном этапе это только красивое изображение — клик по кнопке ни к чему не приведет.
C-Sharp
C #, произносится как «C-sharp «, является еще одним объектно-ориентированным языком, который широко используется для мобильной разработки. Он в основном используется для платформы Windows Mobile. Кроссплатформенная разработка — еще один атрибут C #, который делает его пригодным для мобильной разработки. Технически, C # позволяет нам делать практически все, что мы можем достичь, используя Swift, JAVA и (wiki). Когда вы знакомы с C # и можете с легкостью программировать в нем, вы можете легко разрабатывать мобильные приложения, настольные приложения, игры и веб-приложения. Таким образом, учитывая динамизм, который предлагает C #, он станет одним из лучших решений для разработчиков мобильных приложений.
Сколько зарабатывают мобильные разработчики в разных странах
Заработок iOS или Android-программиста зависит не только от квалификации, но и от того, в какой стране он живет.
Ниже разберемся, сколько зарабатывают специалисты на должности Mobile developer в разных странах.
Работать мобильным разработчиком можно удаленно, из любой точки мира. Обучиться профессии тоже можно дистанционно. Мы подобрали для вас список профессиональных онлайн-курсов от ведущих школ. Выбирайте учебную программу под свои требования и работайте там, где вам хочется и по своему графику!
В США
Разработчики, работающие в американских компаниях, зарабатывают в несколько раз больше, чем их коллеги из других стран.
Официальной статистики об уровне доходов iOS- или Android-программистов в открытом доступе нет. Но по информации, которую мы нашли в интернете, зарплата мобильного разработчика в США составляет до 120 тысяч долларов, то есть более 8,8 млн рублей в год или порядка 730 тыс. руб. в месяц.
На сайте HeadHunter на текущий момент опубликована только одна вакансия – на должность «Senior Mobile Frontend (React Native) Разработчик» на следующих условиях:
- Опыт более 3 лет в коммерческой мобильной фронтенд-разработке, желательно в продуктовой компании.
- Наличие собственного приложения в App Store или Google Play.
- Обязательно выполнение тестового задания.
- Удаленная работа, центральный офис в Palo Alto.
- Размер оплаты работодатель не разглашает.
В Китае
Мобильные разработчики востребованы в Китае: именно в этой стране живет самое большое число интернет-пользователей, но грамотных программистов на внутреннем рынке труда не хватает.
По данным сайтов по поиску работы, средняя зарплата опытного разработчика в Шанхае составляет порядка 285 тысяч юаней в год, то есть около 24000 юаней в месяц – чуть больше 275 тысяч рублей.
Заработок специалистов, работающий в местных филиалах крупных международных компаний, выше – около 380 тыс. юаней, то есть почти 4,4 млн руб. в год или 365 тыс. руб. в мес.
В Казахстане
Информацию о том, сколько зарабатывают мобильные разработчики в Казахстане, мы нашли на сайте HeadHunter. Например, программист с опытом коммерческой iOS/Android-разработки от 3 лет может получать от 100 000 до 200 000 рублей в месяц.
Главные требования работодателей:
- Хорошее знание Objective C, Flutter, Bloc, Redux, Mobx.
- Опыт разработки асинхронного кода.
- Умение работать с консолями разработчика App Store и Google Play.
- Знание системы контроля версий Git и методологий ООП.
Подборка курсов
Все онлайн-курсы по мобильной разработке в 2021 году
Посмотреть подборку
Обзор Gradle
Перейдем к Gradle. Gradle превращает Android-проект в инсталируемый APK, который можно устанавливать на устройства. Файл build.gradle присутствует в Gradle scripts, на двух уровнях: модульном и проектном.
Откройте файл build.gradle (Module:app). Вы увидите установку gradle по умолчанию:
Разберем основные компоненты:
- apply plugin: ‘com.android.application’ применяет плагин Android на родительском уровне и обеспечивает доступность задач верхнего уровня, которые нужны для создания приложения.
- Рядом с разделом android{…} находятся опции настроек, такие как targetSdkVersion. Целевой SDK для вашего приложения должен располагаться на новейшем уровне API. Еще один важный компонент — minSDKVersion (определяет минимальную версию SDK, которая должна быть установлена на устройстве, чтобы приложение можно было запустить). К примеру, если версия SDK 14, тогда приложение будет невозможно запустить на этом устройстве, поскольку в данном конкретном случае минимальная поддерживаемая версия 15.
- Последний компонент — dependencies{…}. Необходимо отметить compile ‘com.android.support:appcompat-v7:VERSION’ и compile ‘com.android.support:design:VERSION’. Они обеспечивают поддержку и совместимость особенностей новых и старых API.
Кроме библиотек совместимости Android, вы можете добавить библиотеки сторонних разработчиков в компонент dependencies{…} Библиотека анимаций, например, содержит эффекты пользовательского интерфейса. Найдите dependencies, затем добавьте вниз две следующие линии:
Здесь можно добавить dependencies сторонних разработчиков. Библиотеки автоматически загружаются и интегрируются в Android Studio. Кликните Sync Now, чтобы интегрировать эти зависимости в свое приложение.
Синхронизация длится несколько секунд. Обновления Gradle появляются во вкладке Messages нижней панели.
Это все настройки, которые вам пока будут нужны в Gradle. Такие манипуляции добавят анимацию в приложении.
Мифы профессии
-
Мобильные разработчики
говнокодерысоздают плохой код, не оптимизируют приложения и вообще дилетанты. Здесь речь идёт примерно о такой же ситуации, как с PHP: язык огребает горы хейта из-за того, что в него легко войти и горе-вебмастера написали на нём ну очень много плохих приложений. В мобильной разработке действительно много дилетантов и любителей, что немного портит общую картину. Но распространять выводы на каждого программиста точно не стоит. - Мобильные разработчики мало зарабатывают. Всё зависит от вашего опыта, квалификации и способности решать задачи вашей компании.
- Мобильная разработка — это недопрограммирование, не труъ. С каких это пор Java, Swift, Kotlin и т.д. — это не труъ?! А если серьёзно, корни этого мифа уходят к готовым конструкторам и универсальным крутым средствам типа Flutter, которые здорово облегчают и ускоряют работу и портируемость приложения. Это так не работает: хорошее приложение без кода и глубокой разработки не получится.
- В мобильной разработке часто возникают конфликты между разработчиком и заказчиком. Чистая правда, так оно и есть. Решается с помощью сбора требований, чётко прописанного технического задания и поэтапной разработки с тестированием и согласованием в конце каждого спринта.
Особенности форматирования числовых значений
Результат форматирования чисел в соответствии с региональными стандартами может разойтись с ожидаемым. Символ валюты или ее трехбуквенный код на разных языках будет выводиться по-разному. Знак минуса у отрицательных денежных значений будет появляться в неожиданных местах, а кое-где вместо него будут выводиться скобки. Знак процента может оказаться не совсем тем знаком, к которому мы привыкли.
Дело в том, что с точки зрения региональных шаблонов итоговая строка состоит из префикса и суффикса для положительных и отрицательных чисел, разделителя тысячных и десятичного разделителя, а они разные для разных локалей.
Числа
Language | Negative Prefix | Negative Suffix | Positive Prefix | Positive Suffix | Grouping Separator | Decimal Separator |
---|---|---|---|---|---|---|
ru-RU | «-« | » « | «,» | |||
en-US | «-« | «,» | «.» | |||
iw-IL | «-« | «,» | «.» | |||
ar-AE | «-« | «٬» | «٫» | |||
fr-FR | «-« | » « | «,» | |||
de-DE | «-« | «.» | «,» | |||
de-CH | «-« | «‘» | «.» | |||
da-DK | «-« | «.» | «,» |
Валюты
Language | Negative Prefix | Negative Suffix | Positive Prefix | Positive Suffix | Grouping Separator | Decimal Separator |
---|---|---|---|---|---|---|
ru-RU | «-« | » ₽» | » ₽» | » « | «,» | |
en-US | «-$» | «$» | «,» | «.» | ||
iw-IL | «-« | » ₪» | » ₪» | «,» | «.» | |
ar-AE | «-« | » د.إ.» | » د.إ.» | «٬» | «٫» | |
fr-FR | «-« | » €» | » €» | » « | «,» | |
de-DE | «-« | » €» | » €» | «.» | «,» | |
de-CH | «CHF-« | «CHF « | «‘» | «.» | ||
da-DK | «-« | » kr.» | » kr.» | «.» | «,» |
Проценты
Language | Negative Prefix | Negative Suffix | Positive Prefix | Positive Suffix | Grouping Separator | Decimal Separator |
---|---|---|---|---|---|---|
ru-RU | «-« | «%» | «%» | » « | «,» | |
en-US | «-« | «%» | «%» | «,» | «.» | |
iw-IL | «-« | «%» | «%» | «,» | «.» | |
ar-AE | «-« | » ٪» | » ٪» | «٬» | «٫» | |
fr-FR | «-« | » %» | » %» | » « | «,» | |
de-DE | «-« | » %» | » %» | «.» | «,» | |
de-CH | «-« | «%» | «%» | «‘» | «.» | |
da-DK | «-« | » %» | » %» | «.» | «,» |
Более того, результаты форматирования для Android SDK и JDK могут быть разными. При этом все варианты правильные, каждый из них используется в определенных контекстах.