Add localized string and few new languages

This commit is contained in:
honzapatCZ 2025-12-03 11:57:50 +01:00
parent bd3a0dcadf
commit cc91622bde
2 changed files with 235 additions and 150 deletions

View File

@ -2,206 +2,263 @@
namespace NejCommon.Models namespace NejCommon.Models
{ {
/// <summary> //// <summary>
/// Gets or Sets Language //// Gets or Sets Language
/// </summary> //// </summary>
public enum Langauge public enum Langauge
{ {
// ///
// Summary: /// <summary>
// Arabic /// Arabic
/// </summary>
AR, AR,
// ///
// Summary: /// <summary>
// Bulgarian /// Bulgarian
/// </summary>
BG, BG,
// ///
// Summary: /// <summary>
// Bosnian /// Bosnian
/// </summary>
BS, BS,
// ///
// Summary: /// <summary>
// Czech /// Czech
/// </summary>
CS, CS,
// ///
// Summary: /// <summary>
// Welsh /// Welsh
/// </summary>
CY, CY,
// ///
// Summary: /// <summary>
// Danish /// Danish
/// </summary>
DA, DA,
// ///
// Summary: /// <summary>
// German /// German
/// </summary>
DE, DE,
// ///
// Summary: /// <summary>
// English /// English
/// </summary>
EN, EN,
// ///
// Summary: /// <summary>
// Spanish; Castilian /// Spanish; Castilian
/// </summary>
ES, ES,
// ///
// Summary: /// <summary>
// Estonian /// Estonian
/// </summary>
ET, ET,
// ///
// Summary: /// <summary>
// Persian /// Persian
/// </summary>
FA, FA,
// ///
// Summary: /// <summary>
// Finnish /// Finnish
/// </summary>
FI, FI,
// ///
// Summary: /// <summary>
// French /// French
/// </summary>
FR, FR,
// Summary: /// <summary>
// Irish /// Irish
/// </summary>
GA, GA,
// ///
// Summary: /// <summary>
// Hebrew /// Hebrew
/// </summary>
HE, HE,
// ///
// Summary: /// <summary>
// Hindi /// Hindi
/// </summary>
HI, HI,
// ///
// Summary: /// <summary>
// Croatian /// Croatian
/// </summary>
HR, HR,
// ///
// Summary: /// <summary>
// Haitian; Haitian Creole /// Haitian; Haitian Creole
/// </summary>
HT, HT,
// ///
// Summary: /// <summary>
// Hungarian /// Hungarian
/// </summary>
HU, HU,
// ///
// Summary: /// <summary>
// Armenian /// Armenian
/// </summary>
HY, HY,
// ///
// Summary: /// <summary>
// Indonesian /// Indonesian
/// </summary>
ID, ID,
// ///
// Summary: /// <summary>
// Icelandic /// Icelandic
/// </summary>
IS, IS,
// ///
// Summary: /// <summary>
// Italian /// Italian
/// </summary>
IT, IT,
// ///
// Summary: /// <summary>
// Japanese /// Japanese
/// </summary>
JA, JA,
// ///
// Summary: /// <summary>
// Kazakh /// Kazakh
/// </summary>
KK, KK,
// ///
// Summary: /// <summary>
// Korean /// Korean
/// </summary>
KO, KO,
// ///
// Summary: /// <summary>
// Latin /// Latin
/// </summary>
LA, LA,
// ///
// Summary: /// <summary>
// Luxembourgish; Letzeburgesch /// Luxembourgish; Letzeburgesch
/// </summary>
LB, LB,
// ///
// Summary: /// <summary>
// Latvian /// Latvian
/// </summary>
LV, LV,
// ///
// Summary: /// <summary>
// Mongolian /// Mongolian
/// </summary>
MN, MN,
// ///
// Summary: /// <summary>
// Dutch; Flemish /// Dutch; Flemish
/// </summary>
NL, NL,
// ///
// Summary: /// <summary>
// Norwegian /// Norwegian
/// </summary>
NO, NO,
// ///
// Summary: /// <summary>
// Polish /// Polish
/// </summary>
PL, PL,
// ///
// Summary: /// <summary>
// Portuguese /// Portuguese
/// </summary>
PT, PT,
// ///
// Summary: /// <summary>
// Romanian; Moldavian; Moldovan /// Romanian; Moldavian; Moldovan
/// </summary>
RO, RO,
// ///
// Summary: /// <summary>
// Russian /// Russian
/// </summary>
RU, RU,
// ///
// Summary: /// <summary>
// Sardinian /// Sardinian
/// </summary>
SC, SC,
// ///
// Summary: /// <summary>
// Slovak /// Slovak
/// </summary>
SK, SK,
// ///
// Summary: /// <summary>
// Slovenian /// Slovenian
/// </summary>
SL, SL,
// ///
// Summary: /// <summary>
// Serbian /// Serbian
/// </summary>
SR, SR,
// ///
// Summary: /// <summary>
// Swedish /// Swedish
/// </summary>
SV, SV,
// ///
// Summary: /// <summary>
// Thai /// Thai
/// </summary>
TH, TH,
// ///
// Summary: /// <summary>
// Turkish /// Turkish
/// </summary>
TR, TR,
// ///
// Summary: /// <summary>
// Ukrainian /// Ukrainian
/// </summary>
UK, UK,
// ///
// Summary: /// <summary>
// Urdu /// Urdu
/// </summary>
UR, UR,
// ///
// Summary: /// <summary>
// Uzbek /// Uzbek
/// </summary>
UZ, UZ,
// ///
// Summary: /// <summary>
// Vietnamese /// Vietnamese
/// </summary>
VI, VI,
///
// /// <summary>
// Summary: /// Simplified Chinese
// Simplified Chinese /// </summary>
ZH_CN, ZH_CN,
// ///
// Summary: /// <summary>
// Traditional Chinese /// Traditional Chinese
/// </summary>
ZH_TW, ZH_TW,
///
/// <summary>
/// Greek
/// </summary>
EL,
/// <summary>
/// Portuguese (Brazil)
/// </summary>
PT_BR
} }
} }

28
Models/LocalizedString.cs Normal file
View File

@ -0,0 +1,28 @@
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace NejCommon.Models;
[Owned]
public class LocalizedString
{
[Column(TypeName = "jsonb")]
public Dictionary<Langauge, string> Values { get; set; } = new();
public string this[Langauge locale]
{
get => Values.TryGetValue(locale, out var v) ? v : "";
set => Values[locale] = value;
}
public static implicit operator LocalizedString(string value)
=> new() { Values = new() { [Langauge.EN] = value } };
public static implicit operator LocalizedString(Dictionary<Langauge, string> value)
=> new() { Values = value };
public static implicit operator Dictionary<Langauge, string>(LocalizedString value)
=> value.Values;
}