Thin v. 1.3.2

The Connect IQ user 叫我機王 has sent you the following request regarding your app «Thin«:

The date doesn't support Traditional Chinese language. Maybe you should enforce it into English.

The following additional info has been provided: 

  • Device Name: MARQ Commander 
  • Firmware Version: 600

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

var info = Time.Gregorian.info(Time.now(), Time.FORMAT_LONG),
    dateStr = Lang.format(
        "$1$ $2$ $3$",
        [info.day_of_week,
         info.month,
         info.day]
    ),
    dateStrSize = dc.getTextDimensions(dateStr, Graphics.FONT_SYSTEM_XTINY);

dc.setColor(foregroundColor, Graphics.COLOR_TRANSPARENT);
dc.drawText(
     screenWidth * 0.1,
     clockDimensions[:top] - 5 - dateStrSize[1],
     Graphics.FONT_SYSTEM_XTINY,
     dateStr,
     Graphics.TEXT_JUSTIFY_LEFT
);

Но надпись вышла как нечто инородное:

Пробовал вариант разных шрифтов для разных языков. С удивлением обнаружил, что в симуляторе дата для европейских языков (например, шведского или французского) выводится на английском…

Все-таки остановился на предложенном варианте. Оставил только русский (для русского) и английский (для всех остальных) языки:

 var info = Time.Gregorian.info(Time.now(), Time.FORMAT_SHORT),
     dateStr = Lang.format(
       "$1$ $2$ $3$",
       [dayOfWeekName[info.day_of_week - 1],
        monthName[info.month - 1],
        info.day]
     ),
     dateStrSize = dc.getTextDimensions(dateStr, fontXS);
dc.setColor(foregroundColor, Graphics.COLOR_TRANSPARENT);
dc.drawText(
    screenWidth * 0.1,
    clockDimensions[:top] - 5 - dateStrSize[1],
    fontXS,
    dateStr,
    Graphics.TEXT_JUSTIFY_LEFT
);

Способа форматирования строки в определенном языке я не нашел. Но есть возможность получить значения даты в числовом виде.

Пришлось завести новые массивы dayOfWeekName и monthName и заполнять их из строковых ресурсов:

<string id="month1">Янв</string>
<string id="month2">Фев</string>
<string id="month3">Мар</string>
<string id="month4">Апр</string>
<string id="month5">Май</string>
<string id="month6">Июн</string>
<string id="month7">Июл</string>
<string id="month8">Авг</string>
<string id="month9">Сен</string>
<string id="month10">Окт</string>
<string id="month11">Ноя</string>
<string id="month12">Дек</string>
<string id="day1">Вс</string>
<string id="day2">Пн</string>
<string id="day3">Вт</string>
<string id="day4">Ср</string>
<string id="day5">Чт</string>
<string id="day6">Пт</string>
<string id="day7">Сб</string>

В итоге новая версия.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *