Skip to content

Instantly share code, notes, and snippets.

@wahidustoz
Created March 9, 2025 01:02
Show Gist options
  • Select an option

  • Save wahidustoz/6dc4536237a24231a7fe9decd6eeb253 to your computer and use it in GitHub Desktop.

Select an option

Save wahidustoz/6dc4536237a24231a7fe9decd6eeb253 to your computer and use it in GitHub Desktop.
Hafta kunlari o'zbekcha nomlari bilan
[Flags]
enum DayOfWeekFlag
{
None = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
Saturday = 32,
Sunday = 64,
OddDays = Monday | Wednesday | Friday, // 1 | 4 | 16 = 21
EvenDays = Tuesday | Thursday | Saturday, // 2 | 8 | 32 = 42
Weekend = Saturday | Sunday // 32 | 64 = 96
}
using System;
using System.Collections.Generic;
using System.Linq;
public static class DayOfWeekFlagExtensions
{
private static readonly Dictionary<DayOfWeekFlag, string> UzbekTranslations = new()
{
{ DayOfWeekFlag.None, "Hech qaysi" },
{ DayOfWeekFlag.Monday, "Dushanba" },
{ DayOfWeekFlag.Tuesday, "Seshanba" },
{ DayOfWeekFlag.Wednesday, "Chorshanba" },
{ DayOfWeekFlag.Thursday, "Payshanba" },
{ DayOfWeekFlag.Friday, "Juma" },
{ DayOfWeekFlag.Saturday, "Shanba" },
{ DayOfWeekFlag.Sunday, "Yakshanba" },
{ DayOfWeekFlag.OddDays, "Toq kunlar" },
{ DayOfWeekFlag.EvenDays, "Juft kunlar" },
{ DayOfWeekFlag.Weekend, "Dam olish kunlari" }
};
public static string ToUzbek(this DayOfWeekFlag flag) => ToUzbekOrDefault(flag) ?? "Hech qaysi";
public static string? ToUzbekOrDefault(this DayOfWeekFlag flag, string? defaultValue = default)
{
if (UzbekTranslations.TryGetValue(flag, out var translation))
return translation;
var parts = UzbekTranslations
.Where(entry => entry.Key != DayOfWeekFlag.None && flag.HasFlag(entry.Key) && entry.Key <= DayOfWeekFlag.Sunday)
.Select(entry => entry.Value)
.ToList();
if (parts.Count == 0)
return defaultValue;
if (parts.Count == 1)
return parts[0];
return string.Join(", ", parts.Take(parts.Count - 1)) + " va " + parts.Last();
}
}
Console.WriteLine(DayOfWeekFlag.OddDays.ToUzbek());
// Output: "Toq kunlar"
Console.WriteLine((DayOfWeekFlag.Monday | DayOfWeekFlag.Wednesday).ToUzbek());
// Output: "Dushanba va Chorshanba"
Console.WriteLine(((DayOfWeekFlag)128).ToUzbekOrDefault());
// Output: null
Console.WriteLine(((DayOfWeekFlag)128).ToUzbekOrDefault("Noma’lum kunlar"));
// Output: "Noma’lum kunlar"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment