//
//  LocalizationUtil.swift
//  damus
//
//  Created by Terry Yiu on 2/24/23.
//

import Foundation

func bundleForLocale(locale: Locale) -> Bundle {
    let path = Bundle.main.path(forResource: locale.identifier, ofType: "lproj")
    return path != nil ? (Bundle(path: path!) ?? Bundle.main) : Bundle.main
}

func localizedStringFormat(key: String, locale: Locale) -> String {
    let bundle = bundleForLocale(locale: locale)
    let fallback = bundleForLocale(locale: Locale(identifier: "en-US")).localizedString(forKey: key, value: nil, table: nil)
    return bundle.localizedString(forKey: key, value: fallback, table: nil)
}

/**
 Removes the variant part of a locale code so that it contains only the language code.
 */
func localeToLanguage(_ locale: String) -> String? {
    if #available(iOS 16, *) {
        return Locale.LanguageCode(stringLiteral: locale).identifier(.alpha2)
    } else {
        return NSLocale(localeIdentifier: locale).languageCode
    }
}

/// Returns a localized string that is pluralized based on a single Int-typed count variable.
func pluralizedString(key: String, count: Int, locale: Locale = Locale.current) -> String {
    let format = localizedStringFormat(key: key, locale: locale)
    return String(format: format, locale: locale, count)
}
