【问题标题】:Get the culture info based on ID of language根据语言 ID 获取文化信息
【发布时间】:2018-08-15 14:14:14
【问题描述】:

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

invoice.InvoiceLine += CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(month.Month) + " (" + usedThisMonth + "), ";

我的问题是公司有一种公司语言(在数据库中它保存在值 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 对象的示例,但没有找到如何以编程方式分配它的示例。我的代码应该是什么样子?

【问题讨论】:

  • 我知道您正在使用现有的代码库但是建议尽可能保留 ISO 文化代码,而不是分配您自己的文化标识符。例如,用户的持久文化代码可以是nl-NL 或fr-BE。这将是首选,因为您不必在整个代码中添加任何查找,并且无论使用何种编程语言,这些值都是普遍接受的含义,应该理解持久值。
  • @Igor ,您是否建议我应该使用 ISO 代码而不是整数来将对象的语言保存在数据库中?
  • 这正是我所推荐的。

标签: c# cultureinfo


【解决方案1】:

您是在问如何将文化分配给变量?

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”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 2018-05-24
    • 2016-11-16
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    相关资源
    最近更新 更多