简体   繁体   English

.NET是否具有内置的多元化机制?

[英]Does .NET have a built-in pluralisation mechanism?

In order to properly handle pluralisation, Qt has QObject::tr() , gettext has ngettext , Rails has a good i18n API , Cocoa has .stringsdict files . 为了正确处理复数,Qt具有QObject :: tr() ,gettext具有ngettext ,Rails具有良好的i18n API ,Cocoa具有.stringsdict文件 All those systems take in account the actual number (quantity) to determine the appropriate plural form for a given language. 所有这些系统都考虑了实际数字(数量)以确定给定语言的适当复数形式。

I know about Humanizer , NGettext and PluralNet but I'm looking for a built-in equivalent in .NET. 我了解HumanizerNGettextPluralNet,但是我正在寻找.NET中的内置等效项。 Does it exist or am I out of luck? 它存在还是我不走运?

This is not exactly a built-in solution, but there's a Visual Studio extension, ReswPlus (on Visual Studio Marketplace ), that leverages PluralNet and produces methods taking a number as argument to automatically choose the correct plural form for a given localization. 这不是一个完全内置的解决方案,但是有一个Visual Studio扩展ReswPlus (在Visual Studio Marketplace上 ),它利用PluralNet并生成以数字为参数的方法来自动为给定的本地化选择正确的复数形式。

Here's an excerpt from the README about pluralization : 这是自述文件中有关复数的摘录:

The resources: 资源:

| Key               | Value            | Comment           |
|-------------------|------------------|-------------------|
| MinutesLeft_One   | {0} minute left  | #ReswPlusTyped[Q] |
| MinutesLeft_Other | {0} minutes left |                   |

Will automatically generate the following code: 将自动生成以下代码:

#region MinutesLeft
/// <summary>
///   Get the pluralized version of the string similar to: {0} minute left
/// </summary>
public static string MinutesLeft(double number)
{
    return Huyn.PluralNet.ResourceLoaderExtension.GetPlural(_resourceLoader, "MinutesLeft", (decimal)number);
}
/// <summary>
///   Format the string similar to: {0} minute left
/// </summary>
public static string MinutesLeft_Format(double pluralCount)
{
    return string.Format(MinutesLeft(pluralCount), pluralCount);
}
#endregion

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM