Bilibili как поменять язык в приложении
Вопрос заблокирован. Ответить на него невозможно.
Удалить запись? Все, что вы написали, станет недоступно. Не удалось прикрепить файл. Нажмите здесь, чтобы повторить попытку. Сейчас уведомления отключены и вы не получаете электронные письма о новых записях. Чтобы включить их, откройте свой профиль и перейдите в настройки уведомлений.Добавить или удалить ссылку
We found the following personal information in your message:
This information will be visible to anyone who visits or subscribes to notifications for this post. Are you sure you want to continue?
Сейчас уведомления отключены и вы не получаете электронные письма о новых записях. Чтобы включить их, откройте свой профиль и перейдите в настройки уведомлений . Компания Google очень серьезно относится к неправомерному использованию своих сервисов. Мы рассматриваем подобные нарушения в соответствии с законодательством вашей страны. Получив вашу жалобу, мы изучим ее и примем необходимые меры. Мы свяжемся с вами только в том случае, если потребуется дополнительная информация или появятся интересующие вас сведения.Если вам нужно, чтобы тот или иной контент был изменен согласно действующему законодательству, воспользуйтесь этим инструментом.
Запись не относится к теме, посвящена сторонним продуктам, написана в неуважительной форме или содержит персональную информацию. Запись содержит домогательства, дискриминационные высказывания, изображение наготы, вредоносный, противозаконный, сексуальный или рекламный контент или ее автор выдает себя за другое лицо. Компания Google очень серьезно относится к неправомерному использованию своих сервисов. Мы рассматриваем подобные нарушения в соответствии с законодательством вашей страны. Получив вашу жалобу, мы изучим ее и примем необходимые меры. Мы свяжемся с вами только в том случае, если потребуется дополнительная информация или появятся интересующие вас сведения.Если вам нужно, чтобы тот или иной контент был изменен согласно действующему законодательству, воспользуйтесь этим инструментом.
Есть простой способ реализовать переключение языка в Single-Activity приложении. Стек экранов при этом подходе не сбрасывается, пользователь остается там, где переключил язык. Когда пользователь переходит на предыдущие экраны, они сразу отображаются переведенными. А результат локализации чисел, денежных сумм и процентов может удивить дизайнеров.
О чем пойдет речь, а о чем не пойдет?
Далее не будет ничего о:
- Теории, которая лежит в основе форматированного вывода строк, и деталях реализации библиотек, которые этим занимаются. То есть того, что помогло бы вам написать свою библиотеку.
- Ресурсах строковых, векторных и прочих. О том, какие квалификаторы ресурсов использовать, какие картинки на арабском должны отображаться справа налево, а какие нет, и других тонкостях.
- Процессе централизованного перевода ресурсов для всех платформ. Как его организовать, чтобы всем жилось хорошо, даже iOS-никам.
А пойдет речь о:
- Практике. Рассмотрим задачу, ее ограничения и решение с диаграммами, примерами и фрагментами кода.
- API SDK, которое было использовано для этого решения.
- Особенностях форматирования числовых значений для разных региональных стандартов, о которых стоит знать дизайнерам.
Что мы хотим сделать?
Пусть в нашем приложении есть экран с настройками, и мы хотим добавить в него пару новых пунктов, один из которых позволил бы переключать язык приложения, а другой изменять валюту, в которой отображаются денежные суммы. Приведем примеры того, как это может выглядеть.
Кроме перевода текста и отображения верстки справа налево, эти настройки должны влиять на формат отображения числовых значений. Необходимо, чтобы все отображалось согласно выбранной локали.
Архитектурное решение
Представим, что наше приложение написано в соответствии с Single-Activity подходом. Тогда механизм переключения языка может быть реализован следующим образом.
SettingsInteractor является источником текущего значения языка. Он позволяет подписаться на это значение, получить его синхронно и подписаться только на обновления. В случае необходимости можно ввести дополнительную абстракцию над SettingsInteractor по принципу разделения интерфейса. На диаграмме несущественные детали опущены.
AppActivity при создании заменяет контекст на новый, чтобы приложение использовало ресурсы для выбранного языка.
AppPresenter в свою очередь подписывается на обновления языка и уведомляет View об изменениях.
AppActivity при получении уведомления о смене языка пересоздается.
AppActivity является единственной в приложении. Все остальные экраны реализованы фрагментами. Поэтому при пересоздании активити стек экранов сохраняется системой. При возврате на предыдущие экраны они будут переинициализированы и отображаться переведенными. Пользователь останется на списке выбора языка и увидит результат своего выбора мгновенно.
Форматирование чисел, денежных сумм и процентов
Кроме замены контекста необходимо форматировать данные – числа, денежные суммы, проценты. Пусть эту задачу каждая View делегирует отдельному компоненту, назовем его UiLocalizer .
Для преобразования числа в строку UiLocalizer использует соответствующие инстансы NumberFormat .
Обратите внимание, что валюту необходимо устанавливать отдельно.
Если вы экономите такты CPU и биты памяти, а переключение валюты и языка – основная и часто используемая функция вашего приложения, то здесь, конечно, необходим кэш.
Представление языков и валют
Экземпляры класса Locale создаются по языковому тегу, который состоит из двухбуквенного кода языка и двухбуквенного кода региона. А экземпляры класса Currency – по трехбуквенному ISO коду. В этом виде язык и валюта должны сериализовываться для сохранения на диск или передачи по сети, и тогда будет хорошо. Приведем примеры.
Особенности форматирования числовых значений
Результат форматирования чисел в соответствии с региональными стандартами может разойтись с ожидаемым. Символ валюты или ее трехбуквенный код на разных языках будет выводиться по-разному. Знак минуса у отрицательных денежных значений будет появляться в неожиданных местах, а кое-где вместо него будут выводиться скобки. Знак процента может оказаться не совсем тем знаком, к которому мы привыкли.
Дело в том, что с точки зрения региональных шаблонов итоговая строка состоит из префикса и суффикса для положительных и отрицательных чисел, разделителя тысячных и десятичного разделителя, а они разные для разных локалей.
Числа
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 могут быть разными. При этом все варианты правильные, каждый из них используется в определенных контекстах.
DecimalFormat
Когда мы создаем NumberFormat для форматирования тех или иных значений, мы получаем объекты класса DecimalFormat , которые просто сконфигурированы разными шаблонами. Приведя объект к типу DecimalFormat и используя его интерфейс, можно изменить части шаблона, чтобы все сломать. Но лучше поклоняться данности.
Также можно написать тест, чтобы насладиться разнообразием. Не для всех локалей одна и та же валюта выводится символом.
В итоге
Общая схема решения выглядит следующим образом.
Жизненный цикл AppActivity является жизненным циклом всего приложения. Поэтому достаточно пересоздать ее, чтобы перезапустить все приложение и применить выбранный язык. А поскольку активити одна, подписку на изменение языка достаточно держать в одном месте – в AppPresenter .
Как мы увидели, региональные форматы вывода чисел нетривиальны. Не стоит жестко задавать единый шаблон на все случаи жизни. Лучше доверить форматирование SDK и договориться, что числа будут выводиться по стандарту, а не как нарисовано на макетах.
Как проще тестировать? (бонус)
Для экономии времени можно воспользоваться следующим флагом.
Выбрать необходимую псевдолокаль в настройках телефона.
И наблюдать, как едет верстка из-за длинного текста, а некоторые элементы UI упорно не хотят отображаться справа налево.
Более подробную информацию можно прочитать в документации.
Стоит отметить, что псевдолокали не будут работать, если вы подменяете контекст, как в решении выше. Вы ведь подменяете контекст. Поэтому необходимо добавить en-XA и ar-XB в список выбора языка внутри приложения.
Что такое Bilibili?
Ориентация Bilibili на пользовательский контент, наряду с такими инновационными функциями, как “плавающие” комментарии, делает его одним из самых популярных видеоприложений для современной молодежи Китая. Благодаря его схожим пользователям и функциональности, некоторые говорят, что Bilibili является аналогом YouTube в Китае. Bilibili занимает уникальную позицию на китайском рынке, поскольку его поддерживают Alibaba и Tencent (7,2% и 13,3% акций соответственно), а также японский гигант Sony (4,98%).
Что это “плавающие” комментарии?
Это комментарии зрителя, которые накладываются прямо над видео:
Как эта видеоплатформа была запущена?
Bilibili была основана в 2009 году как веб-сайт для обмена видео под названием Mikufans. Год спустя он сменил название на Bilibili.
Как сайт занялся ACG-контентом и какой контент сейчас активно развивается на платформе?
Кстати, что значит само слово Bilibili?
Основатель Bilibili является поклонником Микото Мисаки, главной героини аниме и манга сериала “A Certain Scientific Railgun”, одной из главных героинь романа и аниме серии “A Certain Magical Index”, тритагониста фильма и франшизы в целом. Ее зовут Билибили. Кроме этого, слово Bilibili в японском языке относится к звукоподражанию, означающему ощущение после удара электрическим током или чего-то отрывающегося.
Bilibili активен за пределами Китая?
На самом деле сеть широко используется китайцами во всем мире. В то же время есть и пользователи из других стран, но их количество незначительно.
Кто является типичным пользователем Bilibili?
Bilibili позиционирует себя как платформа Поколения Z (люди, родившиеся с 1995 по 2010 год). Почти 80% его пользователей принадлежат к этой возрастной группе из китайских городов 1 и 2 уровня. Соотношение мужчин и женщин составляет 48% против 52%.
Какие форматы рекламы поддерживает Bilibili?
Bilibili поддерживает разные форматы рекламы для мобильных устройств и десктопов. Имейте в виду, что почти 90% пользователей получают доступ к платформе с мобильных устройств. Следует также отметить, что Bilibili продает рекламные объявления на аукционах.
Для мобильных устройств доступны доступные форматы.
- Баннеры в ленте новостей. Это статические графические объявления, которые бывают трех разных типов: маленькое изображение, большое изображение и галерея изображений (3 изображения).
- Баннеры на странице с видео. Эти объявления расположены под самим видео, над следующими релевантными видео, которое могут воспроизвести пользователи.
Для десктопной версии Bilibili предлагает два формата рекламы.
- Баннерная реклама на главной странице. Эти объявления бывают четырех разных размеров, в зависимости от их расположения. С точки зрения формата, эти объявления являются статическими изображениями со ссылками на указанную целевую страницу.
- Баннеры на странице с видео. Эти объявления расположены справа от самого видео над следующими релевантными видео, которые могут воспроизводить пользователи. По формату эти объявления представляют собой статичные изображения со ссылками.
Почему платформа решила отказаться от видеорекламы?
Рекламные ролики можно видеть практически на всех видео-платформах, например на YouTube. В случае с Bilibili мы решили отказаться от использования видеообъявлений из-за желания предоставить лучший пользовательский опыт с первого дня. Bilibili показывает только рекламу в лентах, представляя ее пользователям алгоритмически на основе интересов.
Кто может использовать продвижение в Bilibili? Кому оно не подходит?
Какие инструменты для рекламы и анализа кампаний вы предлагаете?
Помимо инструмента, который мы предлагаем, Nativex, являясь основным агентством Bilibili, позволяя получить мгновенный доступ к некоторым эксклюзивным преимуществам.
Во-первых, компания будет держать вас в курсе самых актуальных социальных и культурных тем, содержащих релевантные для вашей кампании слова. Кроме того, мы подберем соответствующих местных актеров для ваших видеообъявлений, которые помогут вам привлечь внимание.
Во-вторых, вы будете первыми, кто будет пробовать новые функции в маркетинге, как только они будут появляться на платформе.
В-третьих, Bilibili предлагает кастомизированные алгоритмы , предназначенные для достижения ваших ключевых показателей эффективности.
Перевод мобильных игр и приложений на андроиде до последнего времени был непреодолимым препятствием для нас, обычных пользователей. Нам оставалось только ждать локализацию игры. Но сейчас эмулятор андроид на ПК "Блюстакс" сломал это препятствие. И мы можем играть в английские, корейские, немецкие и японские игры с русским переводом прямо сейчас. Как это сделать мы подробно опишем в этой статье. Внимание, сайт Мудрый Гик постоянно обновляется, заходите к нам почаще.
Содержание статьи
BlueStacks представляет перевод в реальном времени
В BlueStacks пообещали пользователям постоянно внедрять инновации, которые облегчают им жизнь. На этот раз, сервисом была реализована уникальная возможность перевода игр в реальном времени. Но обо всем по порядку.
Хорошо известный факт: в многие игры для Android русскоговорящие пользователи не могут играть из-за языковых барьеров. Игры азиатских компаний составляют львиную долю производителей игр. Большая часть этих игр не настроена для западных рынков (или их запуск занимает огромное количество времени). Тем самым русские пользователи лишены потрясающих бестселлеров в игровом мире только потому, что не знают китайского языка, а разработчики не торопятся переводить продукты на другие языки.
Можно вспомнить "PUBG Mobile" (или совсем недавно "LifeAfter"), когда многие пользователи планеты были лишены возможности исследовать эти виртуальные миры. Игру Роблокс Roblox перевести на русский язык тоже мечтают многие геймеры.
Сейчас у геймеров есть два варианта:
- Играть в китайскую версию: но как играть, если человек ничего не понимает в пользовательском интерфейсе?
- Дождаться, пока разработчики позволят перевести игру.
Компания BlueStacks предоставляет возможность своим пользователям играть в абсолютно любую игру на родном языке. В новом режиме сервиса можно переводить игры в режиме реального времени. Просто нужно открыть игру, в которую охото поиграть, и перевести весь игровой экран на любой язык, не только на английский и русский.
Просто нажмите Ctrl + Alt + L для перевода
BlueStacks использует языковые настройки, выбранные во время установки. Таким образом, если в сервисе установлен русский язык, результаты перевода также будут отображаться на русском языке. Вы можете изменить это, выбрав другой язык в "Настройки сейчас".
Чтобы начать перевод, необходимо использовать следующую комбинацию клавиш: Ctrl + Alt + L.
Когда человек это сделает, игровой экран и весь текст на нем будут переведены на родной язык пользователя. Результаты будут видны на экране наложения: BlueStacks мгновенно завершит перевод и отобразит результаты в фиксированном дополнительном окне. Чтобы вернуться к игре, просто закрыть перевод. Игрок может повторить эту операцию сколько угодно раз, сервис продолжит переводить весь текст на экране.
Стоит помнить, что экран перевода отображается на наложении. Другими словами, игра продолжает работать в фоновом режиме - возможно, не стоит использовать эту функцию во время боя. Даже задержка в несколько секунд может привести к поражению в важном сражении.
Примеры использования перевода:
1. Понять, что происходит на экране
Многие любят азиатские игры, но они много показывают надписей на экране! Например, недавно запущенная зомби-игра LifeAfter поддерживает только китайский язык, и один из экранов игры выглядит так:
Трудно понять, что происходит на скриншоте. Можно продолжать нажимать, на что попало, чтобы понять происходящее на экране. Но это не гарантирует полного понимания: новые всплывающие окна будут на китайском языке, которые невозможно будет понять. От этого игрок еще больше запутается - кнопка активирует другую функцию. Даже если удастся чему-то научиться методом проб и ошибок, все равно есть риск проиграть легкую битву, нажав неправильную кнопку.
Функция перевода BlueStacks может легко решить эту проблему. Требуется использовать сочетание клавиш Ctrl + Alt + L, после чего на экране отобразится перевод на родном языке.
2. Изменить настройки игры
Эта игра называется Brown Dust и она очень популярна в Азии. Brown Dust имеет множество настроек: можете изменять качество графики и устанавливать различные другие характеристики, которые облегчают игру. Но есть проблема: игра на корейском языке и меню настроек выглядит так:
Но после перевода сервисом BlueStacks, сразу становиться понятно, что требуется изменить.
Теперь можно понять, о чем идет речь в меню настроек. Здесь можно настроить игру, как нравится игроку. Следует помнить, что можно установить свои собственные пользовательские элементы управления с помощью инструмента BlueStacks keymap.
3. Понять историю игры
Новый квест, но игрок понятия не имеет, что это такое? Может быть, миссия заключается в том, чтобы убить 10 крыс или собрать 20 цветов, кто знает?
После перевода жизнь значительно облегчается. Теперь игроку понятно, что происходит в джунглях.
Возможности использования функции перевода BlueStacks неограниченны: можно перевести любую игру на русский и любой другой язык по выбору пользователя. Сервис устраняет языковые барьеры и дает возможность пользователям получить доступ ко всем играм для Android. Теперь не придется ждать выхода "глобальных" версий.
Читайте также: