зеркало из https://github.com/aspnet/Localization.git
React to StringSegment header parsers
This commit is contained in:
Родитель
f061be8209
Коммит
8f970d3d48
|
@ -2,6 +2,7 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
|
||||
namespace Microsoft.AspNetCore.Localization
|
||||
{
|
||||
|
@ -15,8 +16,8 @@ namespace Microsoft.AspNetCore.Localization
|
|||
/// <see cref="UICultures"/> properties set to the same culture value.
|
||||
/// </summary>
|
||||
/// <param name="culture">The name of the culture to be used for formatting, text, i.e. language.</param>
|
||||
public ProviderCultureResult(string culture)
|
||||
: this(new List<string> { culture }, new List<string> { culture })
|
||||
public ProviderCultureResult(StringSegment culture)
|
||||
: this(new List<StringSegment> { culture }, new List<StringSegment> { culture })
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -26,8 +27,8 @@ namespace Microsoft.AspNetCore.Localization
|
|||
/// </summary>
|
||||
/// <param name="culture">The name of the culture to be used for formatting.</param>
|
||||
/// <param name="uiCulture"> The name of the ui culture to be used for text, i.e. language.</param>
|
||||
public ProviderCultureResult(string culture, string uiCulture)
|
||||
: this(new List<string> { culture }, new List<string> { uiCulture })
|
||||
public ProviderCultureResult(StringSegment culture, StringSegment uiCulture)
|
||||
: this(new List<StringSegment> { culture }, new List<StringSegment> { uiCulture })
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -36,7 +37,7 @@ namespace Microsoft.AspNetCore.Localization
|
|||
/// <see cref="UICultures"/> properties set to the same culture value.
|
||||
/// </summary>
|
||||
/// <param name="cultures">The list of cultures to be used for formatting, text, i.e. language.</param>
|
||||
public ProviderCultureResult(IList<string> cultures)
|
||||
public ProviderCultureResult(IList<StringSegment> cultures)
|
||||
: this(cultures, cultures)
|
||||
{
|
||||
}
|
||||
|
@ -47,7 +48,7 @@ namespace Microsoft.AspNetCore.Localization
|
|||
/// </summary>
|
||||
/// <param name="cultures">The list of cultures to be used for formatting.</param>
|
||||
/// <param name="uiCultures">The list of ui cultures to be used for text, i.e. language.</param>
|
||||
public ProviderCultureResult(IList<string> cultures, IList<string> uiCultures)
|
||||
public ProviderCultureResult(IList<StringSegment> cultures, IList<StringSegment> uiCultures)
|
||||
{
|
||||
Cultures = cultures;
|
||||
UICultures = uiCultures;
|
||||
|
@ -56,11 +57,11 @@ namespace Microsoft.AspNetCore.Localization
|
|||
/// <summary>
|
||||
/// Gets the list of cultures to be used for formatting.
|
||||
/// </summary>
|
||||
public IList<string> Cultures { get; }
|
||||
public IList<StringSegment> Cultures { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the list of ui cultures to be used for text, i.e. language;
|
||||
/// </summary>
|
||||
public IList<string> UICultures { get; }
|
||||
public IList<StringSegment> UICultures { get; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ using System.Threading.Tasks;
|
|||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
|
||||
namespace Microsoft.AspNetCore.Localization
|
||||
{
|
||||
|
@ -131,7 +132,7 @@ namespace Microsoft.AspNetCore.Localization
|
|||
}
|
||||
|
||||
private static CultureInfo GetCultureInfo(
|
||||
IList<string> cultureNames,
|
||||
IList<StringSegment> cultureNames,
|
||||
IList<CultureInfo> supportedCultures,
|
||||
bool fallbackToParentCultures)
|
||||
{
|
||||
|
@ -152,7 +153,7 @@ namespace Microsoft.AspNetCore.Localization
|
|||
return null;
|
||||
}
|
||||
|
||||
private static CultureInfo GetCultureInfo(string name, IList<CultureInfo> supportedCultures)
|
||||
private static CultureInfo GetCultureInfo(StringSegment name, IList<CultureInfo> supportedCultures)
|
||||
{
|
||||
// Allow only known culture names as this API is called with input from users (HTTP requests) and
|
||||
// creating CultureInfo objects is expensive and we don't want it to throw either.
|
||||
|
@ -161,7 +162,7 @@ namespace Microsoft.AspNetCore.Localization
|
|||
return null;
|
||||
}
|
||||
var culture = supportedCultures.FirstOrDefault(
|
||||
supportedCulture => string.Equals(supportedCulture.Name, name, StringComparison.OrdinalIgnoreCase));
|
||||
supportedCulture => StringSegment.Equals(supportedCulture.Name, name, StringComparison.OrdinalIgnoreCase));
|
||||
|
||||
if (culture == null)
|
||||
{
|
||||
|
@ -172,7 +173,7 @@ namespace Microsoft.AspNetCore.Localization
|
|||
}
|
||||
|
||||
private static CultureInfo GetCultureInfo(
|
||||
string cultureName,
|
||||
StringSegment cultureName,
|
||||
IList<CultureInfo> supportedCultures,
|
||||
bool fallbackToParentCultures,
|
||||
int currentDepth)
|
||||
|
@ -186,7 +187,7 @@ namespace Microsoft.AspNetCore.Localization
|
|||
if (lastIndexOfHyphen > 0)
|
||||
{
|
||||
// Trim the trailing section from the culture name, e.g. "fr-FR" becomes "fr"
|
||||
var parentCultureName = cultureName.Substring(0, lastIndexOfHyphen);
|
||||
var parentCultureName = cultureName.Subsegment(0, lastIndexOfHyphen);
|
||||
|
||||
culture = GetCultureInfo(parentCultureName, supportedCultures, fallbackToParentCultures, currentDepth + 1);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
[
|
||||
{
|
||||
"TypeId": "public class Microsoft.AspNetCore.Localization.ProviderCultureResult",
|
||||
"MemberId": "public .ctor(System.Collections.Generic.IList<System.String> cultures)",
|
||||
"Kind": "Removal"
|
||||
},
|
||||
{
|
||||
"TypeId": "public class Microsoft.AspNetCore.Localization.ProviderCultureResult",
|
||||
"MemberId": "public .ctor(System.Collections.Generic.IList<System.String> cultures, System.Collections.Generic.IList<System.String> uiCultures)",
|
||||
"Kind": "Removal"
|
||||
},
|
||||
{
|
||||
"TypeId": "public class Microsoft.AspNetCore.Localization.ProviderCultureResult",
|
||||
"MemberId": "public .ctor(System.String culture)",
|
||||
"Kind": "Removal"
|
||||
},
|
||||
{
|
||||
"TypeId": "public class Microsoft.AspNetCore.Localization.ProviderCultureResult",
|
||||
"MemberId": "public .ctor(System.String culture, System.String uiCulture)",
|
||||
"Kind": "Removal"
|
||||
},
|
||||
{
|
||||
"TypeId": "public class Microsoft.AspNetCore.Localization.ProviderCultureResult",
|
||||
"MemberId": "public System.Collections.Generic.IList<System.String> get_Cultures()",
|
||||
"Kind": "Removal"
|
||||
},
|
||||
{
|
||||
"TypeId": "public class Microsoft.AspNetCore.Localization.ProviderCultureResult",
|
||||
"MemberId": "public System.Collections.Generic.IList<System.String> get_UICultures()",
|
||||
"Kind": "Removal"
|
||||
}
|
||||
]
|
Загрузка…
Ссылка в новой задаче