C# 根据语言ID获取文化信息

C# 根据语言ID获取文化信息,c#,cultureinfo,C#,Cultureinfo,我有以下代码生成发票行,包括公司使用其优惠券的月份: invoice.InvoiceLine += CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(month.Month) + " (" + usedThisMonth + "), "; 我的问题是公司有一种公司语言(在DB中,它保存在值1或2下) 1表示荷兰语,2表示法语 我如何编辑我的行以使月份以相应的语言显示 我想我需要从以下几点开始: if(invoice.CompanyLa

我有以下代码生成发票行,包括公司使用其优惠券的月份:

invoice.InvoiceLine += CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(month.Month) + " (" + usedThisMonth + "), ";
我的问题是公司有一种公司语言(在DB中,它保存在值1或2下)

1表示荷兰语,2表示法语

我如何编辑我的行以使月份以相应的语言显示

我想我需要从以下几点开始:

if(invoice.CompanyLanguage == 1)
{
  invoice.InvoiceLine += CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(month.Month) + " (" + usedThisMonth + "), ";
}
else
{
    invoice.InvoiceLine += CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(month.Month) + " (" + usedThisMonth + "), ";
}

我只找到了创建新
CultureInfo
对象的示例,但没有找到如何以编程方式分配它。我的代码应该是什么样子?

您是在问如何将区域性分配给变量吗

int foo = 1; // change as required
var cultureName = foo == 1 ? "nl-NL" : "fr-FR";
var culture = new CultureInfo(cultureName);

Console.WriteLine(culture.DateTimeFormat.GetMonthName(DateTime.Now.Month));

foo=1
打印“augustus”,为
foo
的所有其他值打印“aoāt”

我知道您正在使用现有的代码库,但如果可能,建议保留ISO区域性代码,而不是分配您自己的区域性标识符。因此,例如,用户的持久化区域性代码可以是
nl-nl
fr-be
。这是最好的选择,因为您不必在整个代码中添加任何查找,而且这些值是普遍接受的,这意味着无论使用何种编程语言,都应该理解保留的值。@Igor,您是否建议我使用ISO代码而不是整数将对象的语言保存在DB中?这正是我建议的。