27.11.11
Слайды - 3
Количество интересных фотографий на телефоне становится все меньше. Видимо я тут уже привык и не замечаю забавностей. А может погода испортилась и я стал меньше ходить, а из машины много не на фотографируешь.
Как бы там ни было, вот очередная серия "слайдов" с мобильного.
20.11.11
Индикатор для CI сервера своими руками
Состояние с процессами разработки на моем текущем месте работы в лучшем случае можно охарактеризовать как «плачевное». К счастью один из коллег не готов с этим мириться и пытается сдвинуть все с мертвой точки, приводя в порядок код, настраивая сервер для continuous integration, и по мере своих возможностей убеждая всех и каждого, что надо что-то менять.
Я, со своей стороны, решил помочь ему, чем могу и собрал простейший индикатор состояния билда изпластиковых бутылок, мотка веревки, пластилина и проволочки Arduino, детской машинки, python'a и джаббера. Правда и тут часть кода он успел написать :)
Я, со своей стороны, решил помочь ему, чем могу и собрал простейший индикатор состояния билда из
21.10.11
05.10.11
Человек и аверс
Желание моей жены собрать как можно больше разных монеток, а так же те факты, что:
а. На канадских монетках изображена канадская королева
б. Королева стареет
сподвигли меня провести небольшое нумизматическое исследование. Попутно выяснилась еще пара интересных фактов, но о них позже.
а. На канадских монетках изображена канадская королева
б. Королева стареет
сподвигли меня провести небольшое нумизматическое исследование. Попутно выяснилась еще пара интересных фактов, но о них позже.
02.10.11
Слайды
С того момента как человек впервые поделился с обществом фотками, снятыми на мобильный телефон прошло чуть больше четырнадцати лет. За эти четырнадцать лет мы успели засрать весь интернет ужасными фотографиями и видеороликами.
Я в меру своих способностей хочу поддержать это начинание и выложить несколько фоток, которые без дела валялись у меня на телефоне.
Я в меру своих способностей хочу поддержать это начинание и выложить несколько фоток, которые без дела валялись у меня на телефоне.
22.08.11
Обыкновенные люди...квартирный вопрос только испортил их
Немного о недвижимости и о том, что она из себя представляет в Миссиссаге.
Практически весь город - низкая застройка, 2-3 этажа. Это отдельные дома, таунхаусы и комплексы-кондоминиумы. Высоток относительно немного и это апартаменты и опять таки кондоминиумы.
Отдельные дома - это, понятное дело, здорово, но, к сожалению, про них практически ничего не смогу рассказать, поскольку стоимость их аренды выходила за пределы моего скромного бюджета. Агенты называли мне стоимость порядка 1600 – 1800 долларов в месяц + коммунальные услуги. Для сравнения стоимость квартиры с 2-мя спальнями в центре города колеблется от 1200 до 1600 долларов с оплатой всех услуг, за исключением электричества и кабельного ТВ.
Практически весь город - низкая застройка, 2-3 этажа. Это отдельные дома, таунхаусы и комплексы-кондоминиумы. Высоток относительно немного и это апартаменты и опять таки кондоминиумы.
Отдельные дома - это, понятное дело, здорово, но, к сожалению, про них практически ничего не смогу рассказать, поскольку стоимость их аренды выходила за пределы моего скромного бюджета. Агенты называли мне стоимость порядка 1600 – 1800 долларов в месяц + коммунальные услуги. Для сравнения стоимость квартиры с 2-мя спальнями в центре города колеблется от 1200 до 1600 долларов с оплатой всех услуг, за исключением электричества и кабельного ТВ.
Мітки:
Canada
Місцеположення:
Міссісога, Онтаріо L5A 4B8, Канада
12.08.11
Губит людей не пиво
Одной из неожиданных сторон жизни в Онтарио для меня оказалось то, что тут нельзя просто так придти в магазин и взять себе пивка, чтобы расслабиться вечером. Практически весь алкоголь можно купить только в магазинах LCBO. Есть еще сеть Beer Store, которая продает, как понятно из названия, пиво, да в некоторых супермаркетах есть отделы по продаже вина.
Вот такое тяжкое наследие сухого закона, который действовал в Канаде в конце XIX - начале XX века. В Онтарио сухой закон отменили в 1927 году, и тогда же организовали государственную компанию, которая взяла на себя тяжкий труд снабжения населения бухлом.
Уже почти 85 лет прошло, а ничего тут не изменилось.
Вот такое тяжкое наследие сухого закона, который действовал в Канаде в конце XIX - начале XX века. В Онтарио сухой закон отменили в 1927 году, и тогда же организовали государственную компанию, которая взяла на себя тяжкий труд снабжения населения бухлом.
Уже почти 85 лет прошло, а ничего тут не изменилось.
Мітки:
Canada
Місцеположення:
Міссісога, Онтаріо L5A 4B8, Канада
07.08.11
Колеса
Завершаем наш экскурс в автомобильный мир Онтарио. Начало.
Итак, автомобиль выбран, пора уже и покупать его.
Если вы покупаете сертифицированный автомобиль у дилера, поздравляю. Все что надо сделать - занести денег и забрать машину с номерами и стикером. Без стикера, наклеенного на номер ездить нельзя. Стикер выдается на год.
Если покупаете машину "как есть", то процедура несколько усложняется - дилер наклеит вам на номер временный стикер, с которым можно ездить 10 дней. За это время надо пройти тест безопасности, получить сертификат и получить стикер.
Если же машину покупаете у хозяина, то процедура примерно такая же. Надо зарегистрировать покупку, пройти тест безопасности заплатить за стикер и номера.
26.07.11
Автовладелец радуется два раза - когда покупает машину и когда ее продает
Я, в отличие от Холдена Колфилда, люблю машины, а не лошадей. Поэтому, получив права, озадачился вопросом приобретения железного коня. Отсутствие машины отрицательно сказывается на возможностях посмотреть окресности (а в городах тут смотреть нечего), грузоподъемности в магазинах, и вообще возможности перемещаться. На небольших улочках часто не предусмотрены тротуары. Вообще. Выработав железную аргументацию, подводящую теоретическую базу под свое желание и успокоив таким образом жабу, можно переходить к реализации этого самого желания.А я даже старые машины не люблю. Понимаешь, мне неинтересно. Лучше бы я себе завёл лошадь, чёрт побери. В лошадях хоть естьчто-то человеческое. С лошадью хоть поговорить можно…
Місцеположення:
Міссісога, Онтаріо L5A 4B8, Канада
20.07.11
Каждый человек... и т.д. Дополнение
В дополнение к посту про вождение.
Это моя бумажка с вождения, в ней отмечены все сделанные мной ошибки.
18.07.11
Каждый человек имеет право. Часть вторая. Вождение
Итак, теория сдана, деньги за вождение заплачены, дата определена. Самое время пойти и взять пару уроков сдачи экзамена. Да-да, именно сдачи экзамена, а не вождения. Водить любой дурак может и примеров этому — тысячи. И все вокруг нас.
Но вернемся к вождению. Стоит хотя бы раз проехаться с инструктором в районе где будет проходить сдача теста и выполнить все те действия, которые будут на экзамене. Так я и сделал. Заодно понял, что опыт вождения не гарантирут сдачу экзамена. Главное на экзамене — крутить головой (показательно, чтобы экзаменатор видел), контролировать скорость и парковаться на расстоянии от 15 до 30 сантиметров от бровки :)
Я взял два урока — один раз просто так, а второй раз — непосредственно перед сдачей.
На сдачу вождения надо приехать на своей машине. Поскольку моя осталась на расстоянии в семь с половиной тысяч км, пришлось искать другой вариант. Это кстати еще один повод взять уроки — инструктор легко, баксов за 100-120, предоставит вам свой пепелац для сдачи экзамена.
Во время экзамена рядом сидит скучный экзаменатор и бубнит “turn left on a next street”, “change lane to the left and back” и т.д. И все записывает. Не проверил слепую зону при перестроении — галочка в списке ошибок, не посмотрел по сторонам проезжая перекресток — галочка, превысил скорость — галочка, едешь 50 при ограничении 60 — галочка. Всего можно набрать до 29 галочек. Правда если сделать более двух однотипных ошибок — все, экзамен не сдан. Спасает то, что ошибки однотипные, но в разных разделах теста. И если в первый раз не проверил слепую зону при перестроении на хайвее, а второй раз — при парковке в жилой зоне, то эти две однотипных ошибки считаются разными.
В общем 12 ошибок из 29, congratulations, you have passed the test и я иду к стойке получать права. Права выдают временные, напечатанные на листике, пластиковая карточка прийдет по почте недели через полторы. Права выдаются на 5 лет. Через пять лет надо будет пойти сфотографироваться, заплатить денежку и получить новую карточку на следующие 5 лет.
Но вернемся к вождению. Стоит хотя бы раз проехаться с инструктором в районе где будет проходить сдача теста и выполнить все те действия, которые будут на экзамене. Так я и сделал. Заодно понял, что опыт вождения не гарантирут сдачу экзамена. Главное на экзамене — крутить головой (показательно, чтобы экзаменатор видел), контролировать скорость и парковаться на расстоянии от 15 до 30 сантиметров от бровки :)
Я взял два урока — один раз просто так, а второй раз — непосредственно перед сдачей.
На сдачу вождения надо приехать на своей машине. Поскольку моя осталась на расстоянии в семь с половиной тысяч км, пришлось искать другой вариант. Это кстати еще один повод взять уроки — инструктор легко, баксов за 100-120, предоставит вам свой пепелац для сдачи экзамена.
Во время экзамена рядом сидит скучный экзаменатор и бубнит “turn left on a next street”, “change lane to the left and back” и т.д. И все записывает. Не проверил слепую зону при перестроении — галочка в списке ошибок, не посмотрел по сторонам проезжая перекресток — галочка, превысил скорость — галочка, едешь 50 при ограничении 60 — галочка. Всего можно набрать до 29 галочек. Правда если сделать более двух однотипных ошибок — все, экзамен не сдан. Спасает то, что ошибки однотипные, но в разных разделах теста. И если в первый раз не проверил слепую зону при перестроении на хайвее, а второй раз — при парковке в жилой зоне, то эти две однотипных ошибки считаются разными.
В общем 12 ошибок из 29, congratulations, you have passed the test и я иду к стойке получать права. Права выдают временные, напечатанные на листике, пластиковая карточка прийдет по почте недели через полторы. Права выдаются на 5 лет. Через пять лет надо будет пойти сфотографироваться, заплатить денежку и получить новую карточку на следующие 5 лет.
Місцеположення:
Міссісога, Онтаріо, Канада
Каждый человек имеет право
Расскажу про то, как я получал канадские права. Еще раз отмечу, что мой опыт относится к провинции Онтарио, в других местах все может быть по другому.
Прежде всего о системе категорий. Для права управления легковыми автомобилями, водитель должен иметь категорию G. Получить ее просто так нельзя. Сначала надо сдать Written Test, по-нашему - теорию. После этого выдаются права категории G1, с которыми уже можно ездить. Но при этом в машине рядом с водителем должен находиться другой водитель с правами категории G и минимум 4 годами стажа. Ну и на самого водителя накладывается куча ограничений, где и как он может ездить.
Проездив таким образом год, можно сдавать вождение - G1 exit test. Сдав его, молодой водитель получает категорию G2. С ней уже, наконец, можно ездить самостоятельно. По прежнему нельзя ни капли спиртного и нельзя сажать в машину больше пассажиров, чем есть ремней безопасности. Проездив год с категорией G2, можно опять сдавать вождение - G2 exit test. Тут проверят еще умение ездить по хайвею. Сдав и этот тест, наконец-то получаешь вожделенные права категории G.
Если вы в Онтарио понаехали уже с родными правами то можно себе жизнь упростить. Если в правах все написано по английски или французски, ну или если права перевести в консульстве, то вождение можно сдать сразу и сразу получить G2. Если еще взять из консульства бумажку, подверждающую немеряный опыт управления самодвижущимися повозками в этих ваших странах, то можно сдавать сразу на G.
Мои старые украинские права (картонка в ламинате) не проканали, пришлось их переводить. Новые, пластиковые, проканывают. Еще один нюанс - если имя в правах и в паспорте написано по разному, то придется еще брать из консульства справку про то, что вы - это вы, как бы вас не писали.
Сам экзамен довольно прост. Состоит из двух частей по 20 вопросов. В каждой части можно сделать до 4-х ошибок. Самые на мой взгяд поганые вопросы - про наказания за нарушения. Но их всего 4 или 5 в билете, так что применяя здравый смысл и везение, довольно легко уложиться в 20% ошибок. Я к теории практически не готовился, прочитал скачанный PDF с правилами вечером перед экзаменом.
Вся процедура с регистрацией, тестом зрения и оплатой заняла минут 40. Но это потому, что я пришел за пол-часа до открытия центра и был первый в очереди.
В следующий раз - про сдачу вождения.
Прежде всего о системе категорий. Для права управления легковыми автомобилями, водитель должен иметь категорию G. Получить ее просто так нельзя. Сначала надо сдать Written Test, по-нашему - теорию. После этого выдаются права категории G1, с которыми уже можно ездить. Но при этом в машине рядом с водителем должен находиться другой водитель с правами категории G и минимум 4 годами стажа. Ну и на самого водителя накладывается куча ограничений, где и как он может ездить.
Проездив таким образом год, можно сдавать вождение - G1 exit test. Сдав его, молодой водитель получает категорию G2. С ней уже, наконец, можно ездить самостоятельно. По прежнему нельзя ни капли спиртного и нельзя сажать в машину больше пассажиров, чем есть ремней безопасности. Проездив год с категорией G2, можно опять сдавать вождение - G2 exit test. Тут проверят еще умение ездить по хайвею. Сдав и этот тест, наконец-то получаешь вожделенные права категории G.
Если вы в Онтарио понаехали уже с родными правами то можно себе жизнь упростить. Если в правах все написано по английски или французски, ну или если права перевести в консульстве, то вождение можно сдать сразу и сразу получить G2. Если еще взять из консульства бумажку, подверждающую немеряный опыт управления самодвижущимися повозками в этих ваших странах, то можно сдавать сразу на G.
Мои старые украинские права (картонка в ламинате) не проканали, пришлось их переводить. Новые, пластиковые, проканывают. Еще один нюанс - если имя в правах и в паспорте написано по разному, то придется еще брать из консульства справку про то, что вы - это вы, как бы вас не писали.
Сам экзамен довольно прост. Состоит из двух частей по 20 вопросов. В каждой части можно сделать до 4-х ошибок. Самые на мой взгяд поганые вопросы - про наказания за нарушения. Но их всего 4 или 5 в билете, так что применяя здравый смысл и везение, довольно легко уложиться в 20% ошибок. Я к теории практически не готовился, прочитал скачанный PDF с правилами вечером перед экзаменом.
Вся процедура с регистрацией, тестом зрения и оплатой заняла минут 40. Но это потому, что я пришел за пол-часа до открытия центра и был первый в очереди.
В следующий раз - про сдачу вождения.
Місцеположення:
Міссісога, Онтаріо, Канада
Держим в банко миллионо...
Один из важных пунктов для начинающего гастарбайтера - банковский счет, на который благодарный работодатель сможет перечислять честно заработанное бабло.
Открыть счет просто — идете в любой банк, который нравится и говорите, что хотите счет. Через минут 30-40 у вас будет счет (даже два — chequing и savings) , несколько чеков и дебитная карточка. Вариантов разных тарифов довольно много, возможно для начала будет достаточно того, что предложат в банке.
Пара вещей, не очевидных для граждан, прибывших из стран, в которых банковская система ориентирована на то, что люди тратят те деньги, которые у них есть. Первое - транзакции по дебитной карте — платные. Обычно в пакет входит некоторое количество бесплатных транзакций в месяц, за остальные придется отдавать свои кровные денежки. Стоимость транзакции можно уменьшить, если положить на счет какую-то сумму, например не менее 3000 долларов. Второе — дебитная карта не годится для использования в интернете. Она не принадлежит ни к какой платежной системе, ее номер может состоять не из 16 цифр, а из, к примеру, 19 и на ней нет ни имени владельца, ни CVV2 кода.
В любом случае, лучше всего сразу получать кредитную карту — это поможет в создании кредитной истории, без которой могут быть сложности со снятием жилья, покупкой чего-либо в кредит и т.д.
Но без кредитной истории вам кредитную карту просто так не сделают. Вот такой замкнутый круг получается. Чтобы этот круг разорвать потребуются деньги. Вы эти деньги кладете на свой savings счет, и банк их там замораживает как гарантию того, что вы погасите кредит. Банк выдаст вам кредитную карту с лимитом равным сумме, замороженной на счету. Это называется secured credit card. Через какое-то время (зависит от банка — у меня это 2 года), когда банк убедится, что вы исправно погашаете кредит, вы сможете получить unsecure credit card, а деньги вам вернутся.
Кредитную карту так же можно получить в каком-нибудь крупном магазине, типа Wal-Mart. Ее предлагают всем, но могут не выдать, если им не понравится ваша кредитная история. Так что лучше начать с банковской кредитки, а волмартовскую получить месяца через три-четыре. У магазинной кредитки есть также бонус в виде скидки на покупку в этом магазине.
Так же стоит сразу же при получении карты заказать чековую книжку. Она понадобится при съеме квартиры. Обычно, снимая жилье, вы платите за первый и последний месяц, на остальной срок выдаете хозяину 10 чеков, датированные каждым последующим месяцем. Если вы не закажете чековую книжку, то у вас будет только несколько (в моем банке 4, в других может отличаться) чеков, чего явно не достаточно. Учитывая, что чековая книжка придет к вам по почте через 7-10 дней после заказа, не стоит с этим затягивать.
Открыть счет просто — идете в любой банк, который нравится и говорите, что хотите счет. Через минут 30-40 у вас будет счет (даже два — chequing и savings) , несколько чеков и дебитная карточка. Вариантов разных тарифов довольно много, возможно для начала будет достаточно того, что предложат в банке.
Пара вещей, не очевидных для граждан, прибывших из стран, в которых банковская система ориентирована на то, что люди тратят те деньги, которые у них есть. Первое - транзакции по дебитной карте — платные. Обычно в пакет входит некоторое количество бесплатных транзакций в месяц, за остальные придется отдавать свои кровные денежки. Стоимость транзакции можно уменьшить, если положить на счет какую-то сумму, например не менее 3000 долларов. Второе — дебитная карта не годится для использования в интернете. Она не принадлежит ни к какой платежной системе, ее номер может состоять не из 16 цифр, а из, к примеру, 19 и на ней нет ни имени владельца, ни CVV2 кода.
В любом случае, лучше всего сразу получать кредитную карту — это поможет в создании кредитной истории, без которой могут быть сложности со снятием жилья, покупкой чего-либо в кредит и т.д.
Но без кредитной истории вам кредитную карту просто так не сделают. Вот такой замкнутый круг получается. Чтобы этот круг разорвать потребуются деньги. Вы эти деньги кладете на свой savings счет, и банк их там замораживает как гарантию того, что вы погасите кредит. Банк выдаст вам кредитную карту с лимитом равным сумме, замороженной на счету. Это называется secured credit card. Через какое-то время (зависит от банка — у меня это 2 года), когда банк убедится, что вы исправно погашаете кредит, вы сможете получить unsecure credit card, а деньги вам вернутся.
Кредитную карту так же можно получить в каком-нибудь крупном магазине, типа Wal-Mart. Ее предлагают всем, но могут не выдать, если им не понравится ваша кредитная история. Так что лучше начать с банковской кредитки, а волмартовскую получить месяца через три-четыре. У магазинной кредитки есть также бонус в виде скидки на покупку в этом магазине.
Так же стоит сразу же при получении карты заказать чековую книжку. Она понадобится при съеме квартиры. Обычно, снимая жилье, вы платите за первый и последний месяц, на остальной срок выдаете хозяину 10 чеков, датированные каждым последующим месяцем. Если вы не закажете чековую книжку, то у вас будет только несколько (в моем банке 4, в других может отличаться) чеков, чего явно не достаточно. Учитывая, что чековая книжка придет к вам по почте через 7-10 дней после заказа, не стоит с этим затягивать.
Где находится Канадá?
Канада в данный момент находится вокруг меня. В основном на север, немного на восток и много на запад.
Вообще-то нифига я не планировал писать про Канаду. Хотел обойтись фотками. Однако в Greater Toronto Area особых красот за прошедшие две с половиной недели я не обнаружил, а вот экспириенса в плане гастарбайтерства немного получил.
Поэтому когда в очередной раз надоело читать книжку в отеле, я решил попробовать чего-нибудь написать. Поделиться, так сказать, опытом. Just for lulz.
Канада, как вы все безусловно помните по школьным занятиям географией, является конфедерацией. Я нахожусь в провинции Онтарио, возможно в других провинциях все на самом деле по другому, я не знаю.
Вообще-то нифига я не планировал писать про Канаду. Хотел обойтись фотками. Однако в Greater Toronto Area особых красот за прошедшие две с половиной недели я не обнаружил, а вот экспириенса в плане гастарбайтерства немного получил.
Поэтому когда в очередной раз надоело читать книжку в отеле, я решил попробовать чего-нибудь написать. Поделиться, так сказать, опытом. Just for lulz.
Канада, как вы все безусловно помните по школьным занятиям географией, является конфедерацией. Я нахожусь в провинции Онтарио, возможно в других провинциях все на самом деле по другому, я не знаю.
23.04.11
Нигерийские принцы совсем обнаглели. Даже уже не пытаются придумать истории про переворот, побег, чемоданы с золотом партии, перестрелки в джунглях и т.п.
Вчера получил это:
А сегодня этот шедевр лаконичности:
Вчера получил это:
Congrats! Be Informed that, £1,500,000 British Pounds has been Awarded to your Email held in April, 2011;
Fill Form;
Name....
Address...
Country...
Tel...
We await your Response
А сегодня этот шедевр лаконичности:
Your email address have won 2.5 million pounds.Names:Address:Country:Age:Измельчали, измельчали
10.04.11
Андроид: Поддержка нескольких языков и переключение их из настроек приложения.
Нелегкая судьба андроид-программиста заставила меня принять участие в Контесте андроид-разработчиков, проводимом HTC.
По условиям конкурса приложения должны либо быть на украинском языке, либо поддерживать несколько языков, включая русский и украинский. Поскольку я собирался публиковать приложение на маркете, и предполагал, что пользоваться программой будут не только пользователи из Украины, то вариант только с локализацией на украинский мне не подходил.
До сих пор, я в своих приложениях ограничивался только двумя языками - английским, который устанавливал, как язык по умолчанию, и русским. Андроид до сих пор не поддерживает украинскую локаль, что, безусловно, является полным аллес капутом.
А еще хотелось, чтобы пользователь мог переключать язык из настроек приложения.
Я остался перед выбором:
Надо ли говорить, что второй вариант мне не нравился совсем, особенно учитывая, что андроид позволяет хранить в ресурсах массивы строк, которые очень легко локализуются стандартными средствами, но для реализации их собственноручно, пришлось бы усложнять свой паровоз.
Поэтому я остановился на 1-м варианте. Но не сразу. Я таки сделал маленький mock-менеджер локализации и попробовал как он работает. Получилось отвратительно. Но! Благодаря этому я получил в настройках приложения опцию
И я стал думать дальше. В процессе размышлений я дошел до класса Locale и его метода
Итак, что я сделал.
В ресурсы я добавил два массива для окна настроек:
GUI для выбора языка я поместил в стандартное
Моя
И вот в методе
На данный момент, я просто предлагаю пользователю перезагрузить приложение, если он изменил язык. Если он не желает этого делать, то по мере того, как система будет убивать и создавать активити, они будут переключаться на новый язык.
Ах, да. Самое главное. В основной активити, которая запускается первой (ну и вообще в любой активити, которая может быть запущена интентом) я вызываю следующий метод в
По условиям конкурса приложения должны либо быть на украинском языке, либо поддерживать несколько языков, включая русский и украинский. Поскольку я собирался публиковать приложение на маркете, и предполагал, что пользоваться программой будут не только пользователи из Украины, то вариант только с локализацией на украинский мне не подходил.
До сих пор, я в своих приложениях ограничивался только двумя языками - английским, который устанавливал, как язык по умолчанию, и русским. Андроид до сих пор не поддерживает украинскую локаль, что, безусловно, является полным аллес капутом.
А еще хотелось, чтобы пользователь мог переключать язык из настроек приложения.
Cyanogenmod поддерживает возможность установки украинской локали. Однако, по понятным причинам, не стоит ожидать, что жюри в конкурсе HTC будет использовать устройства с цианогеном.
Я остался перед выбором:
- в качестве языка по умолчанию использовать украинский. После окончания конкурса заменить его на английский, а русский и украинский оставить тем, у кого включена соответствующая локаль.
- забыть про системные средства локализации, сделать свой менеджер локализации.
Надо ли говорить, что второй вариант мне не нравился совсем, особенно учитывая, что андроид позволяет хранить в ресурсах массивы строк, которые очень легко локализуются стандартными средствами, но для реализации их собственноручно, пришлось бы усложнять свой паровоз.
Поэтому я остановился на 1-м варианте. Но не сразу. Я таки сделал маленький mock-менеджер локализации и попробовал как он работает. Получилось отвратительно. Но! Благодаря этому я получил в настройках приложения опцию
Language
, которую мне не хотелось выбрасывать.И я стал думать дальше. В процессе размышлений я дошел до класса Locale и его метода
setDefault()
. Сам по себе он не помог, поскольку менеджер ресурсов андроида использует локаль из своих настроек. Но и эти настройки можно изменить.Итак, что я сделал.
В ресурсы я добавил два массива для окна настроек:
<string-array name="languages">
<item>English</item>
<item>Українська</item>
<item>Русский</item>
</string-array>
<string-array name="language_values">
<item>en</item>
<item>uk</item>
<item>ru</item>
</string-array>
GUI для выбора языка я поместил в стандартное
PreferenceActivity
.Моя
PreferenceActivity
реализует интерфейс OnSharedPreferenceChangeListener
. В метод onSharedPreferenceChanged
помещаем следующий код:
String lang = prefs.getString(key, Consts.DEFAULT_LOCALE);
Utils.setLocale(this, lang);
Const.DEFAULT_LOCALE
- это просто строка "en".И вот в методе
Utils.setLocale()
и происходит волшебство, размером всего в 5 строчек кода.
public static void setLocale(Activity a, String lang) {
Locale locale2 = new Locale(lang);
Locale.setDefault(locale2);
Configuration c = new Configuration(a.getBaseContext().getResources().getConfiguration());
c.locale = locale2;
a.getBaseContext().getResources().updateConfiguration(c, a.getBaseContext().getResources().getDisplayMetrics());
}
locale2
- это наша новая локаль, создаваемая с переданным кодом языка. Код берется из массива language_values
. Сперва мы устанавливаем ее как локаль по умолчанию для Java, а затем изменяем конфигурацию менеджера ресурсов андроида. Благодаря этому при загрузке ресурсов будут использоваться ресурсы, соответствующие новой локали. Все активити, созданные после этого будут использовать ресурсы в только-что установленной локали. Правда, все активити, которые уже созданы не поменяются.На данный момент, я просто предлагаю пользователю перезагрузить приложение, если он изменил язык. Если он не желает этого делать, то по мере того, как система будет убивать и создавать активити, они будут переключаться на новый язык.
Ах, да. Самое главное. В основной активити, которая запускается первой (ну и вообще в любой активити, которая может быть запущена интентом) я вызываю следующий метод в
onCreate()
, сразу после super()
: Utils.setLocale(this);
. Это перегруженный метод setLocale, который берет текущий язык приложения из SharePreferences
. Выглядит он так:
public static void setLocale(Activity a) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(a);
setLocale(a, prefs.getString(Consts.PREF_LOCALE, Consts.DEFAULT_LOCALE));
}
Теперь мое приложение поддерживает локализацию на три языка - английский, украинский и русский, использует только стандартные средства системы андроид и позволяет пользователю менять язык приложения на лету через окно настроек. PROFIT!!!
Підписатися на:
Дописи (Atom)