artwist-polyakov / tracker-app

0 stars 0 forks source link

Отсутствие багов на мультилокалях завязано на русский язык #4

Closed artwist-polyakov closed 1 year ago

artwist-polyakov commented 1 year ago

Следует придумать как можно избавить от русского языка и в качестве дней расписания использовать просто цифры от 1 до 7 (самое сложное тут — локализация коротких написаний в зависимости от дней)

artwist-polyakov commented 1 year ago

Переделать работу с днями недели в парадигме

import Foundation

let locales = [
    "en_US",  // Американская локаль
    "ru_RU",  // Русская локаль
    "fr_FR",  // Французская локаль
    "es_ES",  // Испанская локаль
    "de_DE"   // Немецкая локаль
]

var basicCalendar = Calendar.current
basicCalendar.locale = Locale(identifier: "en_US")
print(basicCalendar.firstWeekday)

for localeIdentifier in locales {
    var calendar = Calendar.current
    calendar.locale = Locale(identifier: localeIdentifier)
    let translationToLocale = calendar.firstWeekday - basicCalendar.firstWeekday
    print(translationToLocale)
    let formatter = DateFormatter()
    formatter.locale = calendar.locale

    var weekdaySymbols = formatter.weekdaySymbols

    print("Дни недели на \(localeIdentifier):")
    var dictOfDays: [String:[Int]] = [:]
    for (index, day) in weekdaySymbols!.enumerated() {
        dictOfDays[day] = [((index+1-translationToLocale)+7) % 8, index+1]
    }
    var result: [String:Int] = [:]
    for (key,value )in dictOfDays.sorted(by: { $0.value[0] < $1.value[0] }) {
        print(key, value[1])
    }
    print("----")
}
artwist-polyakov commented 1 year ago

Передалал планы в Int. Локализация управляется через shift, которую надо будет зафиксировать в строковых переменных для разных локалей https://github.com/artwist-polyakov/tracker-app/commit/ed6111cad510bfef3ef04f43f8321a444b4974b7

artwist-polyakov commented 1 year ago

В комите https://github.com/artwist-polyakov/tracker-app/commit/ed6111cad510bfef3ef04f43f8321a444b4974b7 логика реализована