Pull to refresh

Comments 15

В Windows Phone 8 инструменты для локализации стали гораздо лучше чем в 7-й версии. Создаем или находим класс LocalizedStrings.
но ведь они абсолютно такие же, разве что LocalizedStrings/AppResources и т.д. теперь по умолчанию добавлены в шаблоны, а список языков не надо редактировать в .csproj
Все «просто и логично» — для локализации имени создаем нативные dll для каждого языка, содержащие каждая одну строку кода и новое имя…
Конечно, WP 8 Localize помогает, да и самому их создать не проблема, но очень уж хочется кому-то внедрить что-то в сжатые сроки (или сраки) за такую реализацию…

P.S. Файлы ресурсов от W8 отлично читаются в WP8, вполне можно их перенести и сделать собственный заменитель W8 класса ResourceLoader, который будет выглядеть как-то так:
    public class ResourceLoader
    {
        public string GetString(string str)
        {
            return AppResources.ResourceManager.GetString(str, AppResources.Culture);
        }
    }

В результате имеем тот же синтаксис, что и в коде W8 приложения.
Это да… Вообще весь SDK попахивает недоделками. Очень многих стандартных классов из .NET Framework просто нет, порой это добивает…

Позиция Microsoft по поводу MVVM вообще радует, сами толкают его, а при этом UI компоненты достаточно скудно его поддерживают, элементарно тап обработать через ICommand — надо написать свой UI элемент, очень часто приходится события из UI прокидывать во ViewModel используя страницу как посредник, очень запарывает… + никаких тебе базовых компонентов для MVVM, я свои делал..., MVVMLight не прижился

В ListBox нет футеров/хедеров, сделать список с несколькими типами элементов очень муторно… В общем, когда встает задача поработать с более менее сложным UI в windows phone, я сразу начинаю думать о костылях, которые придется придумать в этот раз.

Для навигации на другие страницы из ViewModel пришлось написать свой NavigationHelper, чтобы не прокидывать во ViewModel инстанс NavigationService.

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

То что работа с сетью через HttpWebRequest намерено оставлена только асинхронная — это просто финиш… Я конечно понимаю зачем, чтобы всякие криворукие разработчики не дергали сеть из UI потока, но блин, когда у тебя архитектурно запросы к api это несколько слоев логики, как правило асинхронность добавляют в самом верхнем слоее, чтобы не тащить за собой коллбеки по всем слоям, но тут тебя блин заставляют это делать…

Радости такая разработка особо не приносит, учитывая что Visual Studio без решарпера умна как пробка, ничего почти не подсказывает (блин, не IDE, а редактор с хорошим дебаггером), особенно когда эти злополучные биндинги строк пишешь, хоть вешайся блин, вот пример:

это даже не до конца влезло блин, после андроидового "@string/bla_bla" печально смотреть
Я извиняюсь, наболело просто, а тут вроде wp разработчики собрались, можно и поплакаться…

Забыл сказать про самый ад — это Windows Phone Marketplace:
  • Нормально работает только в IE
  • На самом деле глючит даже в самом IE
  • Даже бета билд публикуется в течение 2х часов, очень блин круто, когда тестировщик ждет из за этого
  • Публичные билды публикуются в течение 5ти дней! У них блин и так на платформе приложений не хватает, но нет, надо еще и паблишинг усложнить, достать разработчиков не только скудным SDK, тупой IDE, но еще и стором своим. Ты блин стараешься им помочь, но палки в колеса вставляют как могут ребята
  • Как то раз мы хотели разрешить публикацию только в нескольких странах, а там список почти 200 элементов, есть кнопка выбрать все, а снять все нет! Ручками, ага… я уж думал скрипт написать


Если тут есть представители Microsoft, связанные с windows phone, откликнитесь пожалуйста, нам есть о чем поговорить
Согласен с каждым вашим словом. Прилепили наспех silverlight, теперь не разгрести. Надеялся, что хоть в WP8 будет хоть на йоту лучше, увы.
Вон, в том же WPF с локализацией все на порядок лучше. Сделали бы хотя бы StaticExtension, xaml получился бы чуть красивее.
Windows Store работает только в IE, это вообще бред. У меня Marketplace работает в хроме. Согласен, публикация в магазин для телефонов происходит стабильно 5 дней, а вот в Windows Store у меня за день проверяли.
Как то раз мы хотели разрешить публикацию только в нескольких странах, а там список почти 200 элементов, есть кнопка выбрать все, а снять все нет! Ручками, ага… я уж думал скрипт написать

По привычке нажал галочку, пришлось вручную все снимать. А разработчикам магазина за это большой минус. Плюсом до сих пор нет локализации магазина WP Store.
Windows Store работает только в IE, это вообще бред. У меня Marketplace работает в хроме. Согласен, публикация в магазин для телефонов происходит стабильно 5 дней, а вот в Windows Store у меня за день проверяли.


У меня в Google Chrome не завелось на двух машинах с windows 8.1, плагин сильверлайта не установился, а разбираться с этим просто уже не было желания. В самом IE Marketplace бывает зависает на этапе создания обновления, приходится перезапускать вкладку

Я не отрицаю, что у вас все ок, прекрасно, но у меня проблемы с Marketplace есть и я о них написал. Возможно, я погорячился с фразой «работает только в IE»
Нееет) у меня только Windows Phone Store работает не в IE. Windows Store только в IE =( и это боль. А при выборе скриншотов в IE плагин SL всегда сбрасывает предыдущую директорию, это тоже боль.
Со скриншотами вы вообще больную тему подняли… Я бы руки оторвал тому, кто делал их загрузку и управление в Marketplace.

Сбрасывает последнюю выбранную директорию при загрузке, просто поменять порядок скриншотов нельзя, надо удалить и загрузить заново, загрузка одного скриншота блочит весь ui… Это реально боль. Не знаю как оно в AppStore, но Google Play по сравнению с Marketplace просто небо и земля.

+ Информация о крешах в Marketplace ооочень удобно сделана, прямо офигеть, отдаётся вроде xls файл, который Open Office не понимает, пришлось в Google Drive закинуть, а там ни стектрейса, ни полезной инфы, только имя класса (или что-такое в котором был эксепшн, пишу с телефона, могу ошибаться), причём в моём случае это был какой-то класс из .NET Framework. То есть эта информация вообще никак не помогает найти и устранить проблему. Похоже, придётся в Application класе ловить необработанные исключения и отправлять себе на сервер.
Вроде яндекс метрика для приложений и google предоставляют сервис для сбора информации об ошибках.
Да, почти любая аналитика это предоставляет, просто не каждый заказчик согласится делиться такой информацией со сторонними компаниями :)
В целом, соглашусь с каждым словом. Но таки есть и один плюс: VS с решарпером, пусть и становится неповоротливым монстром, но все же очень хороша. Мне после MonoTouch, XCode и Eclipse она была как глоток свежего воздуха. А остальное… Ну в конце-концов к этому привыкаешь, лишь бы был смысл = доходы. А вот с этим плохо, зарабатывать нормально можно только на прямых продажах, но не каждое приложение может ими похвастаться. Реклама AdMob, Smaato, Millenial Media — 0% Fill Rate для фул скрина, реклама LeadBolt и Inneractive не считает клики, MS PubCenter за месяц показов по миру дал мне такую статистику:

Может и есть где-то провайдер, который готов монетизировать мои десятки тысяч запусков в день, но что-то я его не нашел :)
В целом, статья копирует документацию, но спасибо, что поделились своим опытом :)

Могу добавить приемчик для смены языка в рантайме: ссылка на гист, если что не понятно, спрашивайте, поясню.

Суть такая: Класс LocalizedStrings должен реализовать INotifyPropertyChanged, тогда все стандартные биндинги будут подписаны на изменения его свойств, нам остается только корректно обработать переключение культуры UI потока, перезагрузить ресурсы с нужной локалью и уведомить об этом слушателей + сохранить выбранный язык, при его отсутсвии загружать наиболее подходящий из доступных, либо дефолтный.

В общем, вся прелесть в том, что разметку, в которой используется биндинг ресурсов менять не нужно! Все будет работать автоматически :)

Применил в приложении PayStore, можете зайти в настройки и увидеть переключалку языка, при выборе языка он мгновенно применится по всему приложению без перезапусков и всего такого
Планирую создавать мультиязычное приложение на WP8, так что огромное спасибо за статью.
Посмотрите, также, локализацию для W 8.0 (+8.1), вдруг понадобится. Да и, как говорят выше, можно использовать одну систему.
Sign up to leave a comment.

Articles