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中?这正是我建议的。