29 lines
1.5 KiB
TypeScript
29 lines
1.5 KiB
TypeScript
import type { Language, TranslationKey } from "@/lib/i18n";
|
|
import { translate } from "@/lib/i18n";
|
|
|
|
export function getForecastConditionKey(code: number | null): TranslationKey {
|
|
if (code === 0) return "forecast.condition.clear";
|
|
if (code === 1 || code === 2) return "forecast.condition.partlyCloudy";
|
|
if (code === 3) return "forecast.condition.cloudy";
|
|
if (code === 45 || code === 48) return "forecast.condition.fog";
|
|
if (code !== null && code >= 51 && code <= 57) return "forecast.condition.drizzle";
|
|
if (code !== null && ((code >= 61 && code <= 67) || (code >= 80 && code <= 82))) return "forecast.condition.rain";
|
|
if (code !== null && ((code >= 71 && code <= 77) || code === 85 || code === 86)) return "forecast.condition.snow";
|
|
if (code !== null && code >= 95) return "forecast.condition.thunderstorm";
|
|
return "forecast.condition.unknown";
|
|
}
|
|
|
|
export function getForecastCondition(code: number | null, language: Language) {
|
|
return translate(language, getForecastConditionKey(code));
|
|
}
|
|
|
|
export function formatForecastTemperature(value: number | null, language: Language) {
|
|
if (value === null) return "—";
|
|
return `${new Intl.NumberFormat(language === "pl" ? "pl-PL" : "en-GB", { maximumFractionDigits: 0 }).format(value)}°`;
|
|
}
|
|
|
|
export function formatForecastRainfall(value: number | null, language: Language) {
|
|
if (value === null) return "—";
|
|
return `${new Intl.NumberFormat(language === "pl" ? "pl-PL" : "en-GB", { maximumFractionDigits: 1 }).format(value)} mm`;
|
|
}
|