I-Synergy.Framework.AspNetCore.Globalization 2026.10110.10203

Prefix Reserved
dotnet add package I-Synergy.Framework.AspNetCore.Globalization --version 2026.10110.10203
                    
NuGet\Install-Package I-Synergy.Framework.AspNetCore.Globalization -Version 2026.10110.10203
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="I-Synergy.Framework.AspNetCore.Globalization" Version="2026.10110.10203" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="I-Synergy.Framework.AspNetCore.Globalization" Version="2026.10110.10203" />
                    
Directory.Packages.props
<PackageReference Include="I-Synergy.Framework.AspNetCore.Globalization" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add I-Synergy.Framework.AspNetCore.Globalization --version 2026.10110.10203
                    
#r "nuget: I-Synergy.Framework.AspNetCore.Globalization, 2026.10110.10203"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package I-Synergy.Framework.AspNetCore.Globalization@2026.10110.10203
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=I-Synergy.Framework.AspNetCore.Globalization&version=2026.10110.10203
                    
Install as a Cake Addin
#tool nuget:?package=I-Synergy.Framework.AspNetCore.Globalization&version=2026.10110.10203
                    
Install as a Cake Tool

I-Synergy Framework AspNetCore Globalization

Comprehensive globalization and localization support for ASP.NET Core applications. This package provides request culture providers, route-based culture resolution, language services, and seamless integration with ASP.NET Core's localization middleware.

NuGet License .NET

Features

  • Route-based culture resolution with automatic URL pattern detection
  • Multiple culture providers (Route, QueryString, Cookie, Accept-Language header)
  • Culture route constraint for validating culture segments in URLs
  • Language service integration with resource management
  • Configurable globalization options with default and supported cultures
  • ASP.NET Core middleware integration with RequestLocalizationMiddleware
  • Culture fallback support for invalid or missing culture specifications
  • HttpContext accessor for culture management across application layers

Installation

Install the package via NuGet:

dotnet add package I-Synergy.Framework.AspNetCore.Globalization

Quick Start

1. Configure Globalization Services

In your Program.cs:

using ISynergy.Framework.AspNetCore.Globalization.Extensions;

var builder = WebApplication.CreateBuilder(args);

// Add globalization services
builder.AddGlobalization();

builder.Services.AddControllers();

var app = builder.Build();

// Use request localization middleware
app.UseRequestLocalization();

app.MapControllers();
app.Run();

2. Configure Globalization Options

In your appsettings.json:

{
  "GlobalizationOptions": {
    "DefaultCulture": "en-US",
    "SupportedCultures": [
      "en-US",
      "nl-NL",
      "de-DE",
      "fr-FR",
      "es-ES"
    ],
    "ProviderType": "Route"
  }
}

3. Configure Route-Based Culture

For route-based culture resolution, update your routing:

using ISynergy.Framework.AspNetCore.Globalization.Constraints;

var builder = WebApplication.CreateBuilder(args);

builder.AddGlobalization();

builder.Services.AddControllers();

var app = builder.Build();

app.UseRequestLocalization();

// Map controllers with culture route constraint
app.MapControllerRoute(
    name: "default",
    pattern: "{culture:culture}/{controller=Home}/{action=Index}/{id?}");

app.MapControllerRoute(
    name: "fallback",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

4. Using the Language Service

Access localized resources in your code:

using ISynergy.Framework.Core.Abstractions.Services;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("{culture:culture}/api/[controller]")]
public class ProductsController : ControllerBase
{
    private readonly ILanguageService _languageService;

    public ProductsController(ILanguageService languageService)
    {
        _languageService = languageService;
    }

    [HttpGet]
    public IActionResult GetProducts()
    {
        var welcomeMessage = _languageService.GetString("WelcomeMessage");
        var productsTitle = _languageService.GetString("ProductsTitle");

        return Ok(new
        {
            Message = welcomeMessage,
            Title = productsTitle
        });
    }
}

Core Components

Options

ISynergy.Framework.AspNetCore.Globalization.Options/
└── GlobalizationOptions              # Configuration for cultures and providers

Providers

ISynergy.Framework.AspNetCore.Globalization.Providers/
└── RouteDataRequestCultureProvider   # Extract culture from route data

Constraints

ISynergy.Framework.AspNetCore.Globalization.Constraints/
└── CultureRouteConstraint            # Validate culture in route segments

Services

ISynergy.Framework.AspNetCore.Globalization.Services/
└── LanguageService                   # Access localized resources

Enumerations

ISynergy.Framework.AspNetCore.Globalization.Enumerations/
└── RequestCultureProviderTypes       # Available provider types

Advanced Features

Multiple Culture Provider Strategies

Configure different provider types based on your application needs:

{
  "GlobalizationOptions": {
    "DefaultCulture": "en-US",
    "SupportedCultures": ["en-US", "nl-NL", "de-DE"],
    "ProviderType": "Route"
  }
}

Available provider types:

  • Route: Extract culture from URL path (e.g., /nl-NL/products)
  • QueryString: Extract culture from query string (e.g., ?culture=nl-NL)
  • Cookie: Read culture from a cookie
  • AcceptLanguageHeader: Use Accept-Language HTTP header

Custom Route Patterns

Define culture-aware routes in your controllers:

using Microsoft.AspNetCore.Mvc;

[Route("{culture:culture}/[controller]")]
[ApiController]
public class LocalizedController : ControllerBase
{
    // URL: /nl-NL/localized/hello
    [HttpGet("hello")]
    public IActionResult Hello()
    {
        var culture = RouteData.Values["culture"]?.ToString();
        return Ok($"Hello in culture: {culture}");
    }
}

[Route("[controller]")]
[ApiController]
public class NonLocalizedController : ControllerBase
{
    // URL: /nonlocalized/hello (uses default culture)
    [HttpGet("hello")]
    public IActionResult Hello()
    {
        return Ok("Hello");
    }
}

Manual Culture Management

Set or override culture programmatically:

using Microsoft.AspNetCore.Localization;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/[controller]")]
public class CultureController : ControllerBase
{
    [HttpPost("set")]
    public IActionResult SetCulture([FromBody] string culture)
    {
        // Set culture cookie
        Response.Cookies.Append(
            CookieRequestCultureProvider.DefaultCookieName,
            CookieRequestCultureProvider.MakeCookieValue(
                new RequestCulture(culture)),
            new CookieOptions
            {
                Expires = DateTimeOffset.UtcNow.AddYears(1),
                IsEssential = true,
                SameSite = SameSiteMode.Lax
            });

        return Ok($"Culture set to: {culture}");
    }

    [HttpGet("current")]
    public IActionResult GetCulture()
    {
        var feature = HttpContext.Features.Get<IRequestCultureFeature>();
        var culture = feature?.RequestCulture.Culture.Name ?? "Unknown";
        var uiCulture = feature?.RequestCulture.UICulture.Name ?? "Unknown";

        return Ok(new
        {
            Culture = culture,
            UICulture = uiCulture
        });
    }
}

Resource Management

Configure localized resources for your application:

using ISynergy.Framework.Core.Abstractions.Services;

// In your Program.cs or startup configuration
var languageService = builder.Services
    .BuildServiceProvider()
    .GetRequiredService<ILanguageService>();

// Add resource managers for different assemblies
languageService.AddResourceManager(typeof(AppResources));
languageService.AddResourceManager(typeof(SharedResources));
languageService.AddResourceManager(typeof(ValidationResources));

Create resource files for each supported culture:

  • Resources/AppResources.resx (default/English)
  • Resources/AppResources.nl-NL.resx (Dutch)
  • Resources/AppResources.de-DE.resx (German)

Access resources:

using ISynergy.Framework.Core.Abstractions.Services;

public class LocalizedService
{
    private readonly ILanguageService _languageService;

    public LocalizedService(ILanguageService languageService)
    {
        _languageService = languageService;
    }

    public string GetLocalizedMessage(string key)
    {
        return _languageService.GetString(key);
    }

    public string GetLocalizedMessageWithFormat(string key, params object[] args)
    {
        var format = _languageService.GetString(key);
        return string.Format(format, args);
    }
}

Usage Examples

E-commerce Application with Multiple Languages

Complete example of a multi-language e-commerce API:

using ISynergy.Framework.AspNetCore.Globalization.Extensions;
using ISynergy.Framework.Core.Abstractions.Services;
using Microsoft.AspNetCore.Localization;

var builder = WebApplication.CreateBuilder(args);

// Add globalization
builder.AddGlobalization();

builder.Services.AddControllers();

var app = builder.Build();

// Configure request localization
var localizationOptions = app.Services
    .GetRequiredService<IOptions<RequestLocalizationOptions>>()
    .Value;

app.UseRequestLocalization(localizationOptions);

// Route configuration with culture
app.MapControllerRoute(
    name: "localized",
    pattern: "{culture:culture}/{controller=Home}/{action=Index}/{id?}");

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

// Product Controller
[Route("{culture:culture}/api/[controller]")]
[ApiController]
public class ProductsController : ControllerBase
{
    private readonly ILanguageService _languageService;
    private readonly IProductRepository _productRepository;

    public ProductsController(
        ILanguageService languageService,
        IProductRepository productRepository)
    {
        _languageService = languageService;
        _productRepository = productRepository;
    }

    [HttpGet]
    public IActionResult GetProducts()
    {
        var products = _productRepository.GetAll();

        return Ok(new
        {
            Title = _languageService.GetString("Products_Title"),
            Description = _languageService.GetString("Products_Description"),
            Items = products
        });
    }

    [HttpGet("{id}")]
    public IActionResult GetProduct(int id)
    {
        var product = _productRepository.GetById(id);

        if (product == null)
        {
            return NotFound(new
            {
                Error = _languageService.GetString("Product_NotFound")
            });
        }

        return Ok(product);
    }

    [HttpPost]
    public IActionResult CreateProduct([FromBody] ProductDto productDto)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(new
            {
                Error = _languageService.GetString("Validation_Failed"),
                Errors = ModelState
            });
        }

        var product = _productRepository.Create(productDto);

        return CreatedAtAction(
            nameof(GetProduct),
            new { id = product.Id },
            product);
    }
}

Blazor Server with Route-Based Culture

// Program.cs
using ISynergy.Framework.AspNetCore.Globalization.Extensions;

var builder = WebApplication.CreateBuilder(args);

builder.AddGlobalization();

builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();

var app = builder.Build();

app.UseRequestLocalization();
app.UseStaticFiles();
app.UseRouting();

app.MapBlazorHub();
app.MapFallbackToPage("/{culture:culture}/_Host");
app.MapFallbackToPage("/_Host");

app.Run();

@page "/{culture?}"
@using Microsoft.AspNetCore.Localization

@{
    var culture = RouteData.Values["culture"]?.ToString() ?? "en-US";
    var requestCulture = new RequestCulture(culture);

    Context.Features.Set<IRequestCultureFeature>(
        new RequestCultureFeature(requestCulture, null));
}

<!DOCTYPE html>
<html lang="@culture">
<head>
    <meta charset="utf-8" />
    <title>My App - @culture</title>
</head>
<body>
    <component type="typeof(App)" render-mode="ServerPrerendered" />
</body>
</html>

Culture Switcher Component

@inject ILanguageService LanguageService
@inject NavigationManager Navigation

<div class="culture-switcher">
    <label>@LanguageService.GetString("SelectLanguage")</label>
    <select @onchange="OnCultureChanged">
        <option value="en-US" selected="@(CurrentCulture == "en-US")">English</option>
        <option value="nl-NL" selected="@(CurrentCulture == "nl-NL")">Nederlands</option>
        <option value="de-DE" selected="@(CurrentCulture == "de-DE")">Deutsch</option>
        <option value="fr-FR" selected="@(CurrentCulture == "fr-FR")">Français</option>
        <option value="es-ES" selected="@(CurrentCulture == "es-ES")">Español</option>
    </select>
</div>

@code {
    private string CurrentCulture { get; set; } = "en-US";

    protected override void OnInitialized()
    {
        var uri = new Uri(Navigation.Uri);
        var segments = uri.AbsolutePath.Split('/', StringSplitOptions.RemoveEmptyEntries);

        if (segments.Length > 0)
        {
            CurrentCulture = segments[0];
        }
    }

    private void OnCultureChanged(ChangeEventArgs e)
    {
        var newCulture = e.Value?.ToString() ?? "en-US";
        var uri = new Uri(Navigation.Uri);
        var path = uri.AbsolutePath;

        // Remove current culture from path if present
        var segments = path.Split('/', StringSplitOptions.RemoveEmptyEntries);
        if (segments.Length > 0 && IsSupportedCulture(segments[0]))
        {
            path = "/" + string.Join("/", segments.Skip(1));
        }

        // Redirect to new culture
        var newUri = $"/{newCulture}{path}{uri.Query}";
        Navigation.NavigateTo(newUri, forceLoad: true);
    }

    private bool IsSupportedCulture(string culture)
    {
        var supported = new[] { "en-US", "nl-NL", "de-DE", "fr-FR", "es-ES" };
        return supported.Contains(culture);
    }
}

Best Practices

Use route-based culture for SEO-friendly URLs and better user experience with language-specific content.

Always configure a default culture to fall back to when the requested culture is not supported.

Test your application with right-to-left (RTL) languages if you plan to support them (e.g., Arabic, Hebrew).

Culture Configuration

  • Choose route-based culture for public websites (better SEO)
  • Use cookie-based culture for authenticated applications
  • Accept-Language header works well for APIs
  • Always provide a default culture fallback
  • Keep supported cultures list synchronized across configuration
  • Validate culture codes against CultureInfo

Resource Management

  • Organize resources by feature or module
  • Use meaningful resource keys (e.g., "Product_NotFound" not "Err001")
  • Keep resource files in sync across all cultures
  • Implement a translation workflow for new resources
  • Use placeholders for dynamic content
  • Consider using satellite assemblies for large resource files

URL Design

  • Place culture code at the start of the URL (/{culture}/products)
  • Use culture route constraint to validate culture codes
  • Provide culture-neutral routes as fallback
  • Implement culture switcher without losing context
  • Handle culture redirects with 302 (temporary) not 301 (permanent)
  • Preserve query strings when switching cultures

Performance Considerations

  • Cache localized resources to avoid repeated lookups
  • Use compiled resource files (.resources.dll)
  • Consider CDN for static localized content
  • Minimize culture switches during user session
  • Pre-load common resources at startup
  • Use lazy loading for large resource sets

Testing

Example unit tests for globalization:

using ISynergy.Framework.AspNetCore.Globalization.Providers;
using ISynergy.Framework.AspNetCore.Globalization.Options;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Options;
using Xunit;

public class RouteDataRequestCultureProviderTests
{
    [Fact]
    public async Task DetermineProviderCultureResult_WithValidCulture_ReturnsCulture()
    {
        // Arrange
        var options = Options.Create(new GlobalizationOptions
        {
            DefaultCulture = "en-US",
            SupportedCultures = new[] { "en-US", "nl-NL" }
        });

        var provider = new RouteDataRequestCultureProvider(options);
        var context = new DefaultHttpContext();
        context.Request.Path = "/nl-NL/products";

        // Act
        var result = await provider.DetermineProviderCultureResult(context);

        // Assert
        Assert.NotNull(result);
        Assert.Equal("nl-NL", result.Cultures.First().Value);
    }

    [Fact]
    public async Task DetermineProviderCultureResult_WithInvalidCulture_ReturnsDefault()
    {
        // Arrange
        var options = Options.Create(new GlobalizationOptions
        {
            DefaultCulture = "en-US",
            SupportedCultures = new[] { "en-US", "nl-NL" }
        });

        var provider = new RouteDataRequestCultureProvider(options);
        var context = new DefaultHttpContext();
        context.Request.Path = "/invalid/products";

        // Act
        var result = await provider.DetermineProviderCultureResult(context);

        // Assert
        Assert.NotNull(result);
        Assert.Equal("en-US", result.Cultures.First().Value);
    }
}

Dependencies

  • Microsoft.AspNetCore.Localization - ASP.NET Core localization middleware
  • Microsoft.AspNetCore.Routing - Routing infrastructure
  • Microsoft.Extensions.Localization - Localization abstractions
  • ISynergy.Framework.Core - Core framework utilities

Documentation

For more information about the I-Synergy Framework:

  • I-Synergy.Framework.Core - Core framework components
  • I-Synergy.Framework.AspNetCore - Base ASP.NET Core integration
  • I-Synergy.Framework.AspNetCore.Blazor - Blazor integration
  • I-Synergy.Framework.UI - UI localization support

Support

For issues, questions, or contributions, please visit the GitHub repository.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2026.10110.10203 36 1/10/2026
2026.10110.10121-preview 30 1/10/2026
2026.10109.12335-preview 31 1/9/2026
2026.10105.11358-preview 83 1/5/2026
2026.10105.11229-preview 77 1/5/2026
2025.11231.11750-preview 80 12/31/2025
2025.11225.12213 189 12/25/2025
2025.11225.12003-preview 168 12/25/2025
2025.11218.11301 279 12/18/2025
2025.11218.10050-preview 265 12/18/2025
2025.11211.11307-preview 409 12/11/2025
2025.11211.11225-preview 398 12/11/2025
2025.11210.10145-preview 423 12/10/2025
2025.11209.11459 445 12/9/2025
2025.11209.11422-preview 428 12/9/2025
2025.11207.11553-preview 211 12/7/2025
2025.11204.11448-preview 187 12/4/2025
2025.11130.12248 433 11/30/2025
2025.11130.12134-preview 338 11/30/2025
2025.11130.11725-preview 346 11/30/2025
2025.11130.11553-preview 343 11/30/2025
2025.11130.11515-preview 336 11/30/2025
2025.11130.11420.59-preview 347 11/30/2025
2025.11130.11323.56-preview 244 11/30/2025
2025.11129.10227.14-preview 97 11/29/2025
2025.11120.10114 414 11/20/2025
2025.11119.12324.6-preview 392 11/19/2025
2025.11119.10110 422 11/19/2025
2025.11118.12340.33-preview 392 11/18/2025
2025.11117.12349.4-preview 397 11/17/2025
2025.11117.11937.47-preview 383 11/17/2025
2025.11113.11532.29-preview 273 11/13/2025
2025.11113.10128.57-preview 278 11/13/2025
2025.11110.10306.55-preview 226 11/10/2025
2025.11109.10018.48-preview 141 11/8/2025
2025.11108.10119.29-preview 116 11/8/2025
2025.11106.10037.1-preview 187 11/6/2025
2025.11105.10254.54-preview 186 11/5/2025
2025.11105.10141.16-preview 196 11/5/2025
2025.11104.12308.54-preview 184 11/4/2025
2025.11104.10144.47-preview 189 11/4/2025
2025.11102.12003.8-preview 196 11/2/2025
2025.11102.11228.52-preview 158 11/2/2025
2025.11102.10309.42-preview 127 11/2/2025
2025.11029.11433.38-preview 183 10/29/2025
2025.11029.10201.38-preview 186 10/29/2025
2025.11027.11947.55-preview 186 10/27/2025
2025.11022.12207.12-preview 178 10/22/2025
2025.11019.12053.37-preview 181 10/19/2025
2025.11016.11750.24-preview 169 10/16/2025
2025.11015.10219.44-preview 173 10/15/2025
2025.11014.10245.12-preview 176 10/14/2025
2025.11012.10130.11-preview 114 10/12/2025
2025.11010.10052.52-preview 173 10/9/2025
2025.11001.12118.13-preview 183 10/1/2025
2025.10925.10144.25-preview 194 9/25/2025
2025.10921.11353.29-preview 212 9/21/2025
2025.10913.11841.29-preview 158 9/13/2025
2025.10912.12351.59-preview 107 9/12/2025
2025.10912.10210.52-preview 179 9/12/2025
2025.10911.10131.43-preview 182 9/10/2025
2025.10910.12340.34-preview 184 9/10/2025
2025.10910.11327.15-preview 177 9/10/2025
2025.10910.11206.45-preview 181 9/10/2025
2025.10910.10230.58-preview 191 9/10/2025
2025.10908.12343.47-preview 185 9/8/2025
2025.10904.12337.35-preview 187 9/4/2025
2025.10904.12245.51-preview 189 9/4/2025
2025.10904.11425.5-preview 193 9/4/2025
2025.10904.10323.39-preview 205 9/4/2025
2025.10826.11425.3-preview 252 8/26/2025
2025.10825.12350.9-preview 186 8/25/2025
2025.10810.10248-preview 141 8/10/2025
2025.10809.10146.35-preview 182 8/9/2025
2025.10806.12031.49-preview 266 8/6/2025
2025.10806.11955.54-preview 262 8/6/2025
2025.10806.11433.24-preview 272 8/6/2025
2025.10709.10105.39-preview 189 7/8/2025
2025.10707.12320.3-preview 194 7/7/2025
2025.10706.11957.9-preview 182 7/6/2025
2025.10702.11752.47-preview 179 7/2/2025
2025.10702.11256.17-preview 180 7/2/2025
2025.10702.11119.10-preview 181 7/2/2025
2025.10702.10000.31-preview 181 7/1/2025
2025.10701.11524.1-preview 179 7/1/2025
2025.10701.11310.13-preview 178 7/1/2025
2025.10630.12022.58-preview 186 6/30/2025
2025.10612.12134.8-preview 356 6/12/2025
2025.10611.12313.53-preview 325 6/11/2025
2025.10603.10159.54-preview 189 6/3/2025
2025.10602.11908.9-preview 186 6/2/2025
2025.10601.10124.29-preview 142 5/31/2025
2025.10531.12235.29-preview 145 5/31/2025
2025.10530.10121.50-preview 186 5/29/2025
2025.10527.12202.4-preview 182 5/27/2025
2025.10526.12034.25-preview 182 5/26/2025
2025.10521.11828.30-preview 192 5/21/2025
2025.10520.11715.6-preview 184 5/20/2025
2025.10520.11515.16-preview 174 5/20/2025
2025.10518.12303.43-preview 210 5/18/2025
2025.10518.11257.36-preview 197 5/18/2025
2025.10517.12347.27-preview 147 5/17/2025
2025.10517.12003.6-preview 150 5/17/2025
2025.10516.11720.13-preview 218 5/16/2025
2025.10514.12334.2-preview 285 5/14/2025
2025.10514.10015.27-preview 276 5/13/2025
2025.10511.11032.32-preview 193 5/11/2025
2025.10413.11530 340 4/13/2025
2025.10413.11434.33-preview 236 4/13/2025
2025.10413.10205.50-preview 174 4/13/2025
2025.10412.11526.4-preview 140 4/12/2025
2025.10412.10141 229 4/12/2025
2025.10411.11811.23-preview 179 4/11/2025
2025.10411.11645.1-preview 174 4/11/2025
2025.10410.11458.35-preview 225 4/10/2025
2025.10405.10143.28-preview 135 4/5/2025
2025.10403.12208.1-preview 211 4/3/2025
2025.10403.11954.16-preview 204 4/3/2025
2025.10401.11908.24-preview 207 4/1/2025
2025.10401.11559.45-preview 204 4/1/2025
2025.10331.12215.59-preview 187 3/31/2025
2025.10331.12130.34-preview 191 3/31/2025
2025.10331.10056.40-preview 204 3/30/2025
2025.10328.10150.21-preview 185 3/28/2025
2025.10323.11359-preview 331 3/23/2025
2025.10320.11800 286 3/20/2025
2025.10320.11616.45-preview 197 3/20/2025
2025.10320.10000 265 3/19/2025
2025.10319.12311.26-preview 198 3/19/2025
2025.10319.12238.6-preview 200 3/19/2025
2025.10319.12057.59-preview 182 3/19/2025
2025.10318.10055 276 3/18/2025
2025.10317.11728.13-preview 193 3/17/2025
2025.10317.11201.3-preview 198 3/17/2025
2025.10315.11523.14-preview 135 3/15/2025
2025.10305.12342 346 3/5/2025
2025.10305.12321.9-preview 235 3/5/2025
2025.10301.12313 230 3/1/2025
2025.10301.12129.38-preview 142 3/1/2025
2025.10221.10043.29-preview 174 2/21/2025
2025.1051.1246 232 2/20/2025
2025.1051.44.54-preview 140 2/20/2025
2025.1044.1 239 2/13/2025
2025.1044.0.2-preview 146 2/13/2025
2025.1043.0.2-preview 155 2/12/2025
2025.1041.0.1-preview 152 2/10/2025
2025.1038.1 250 2/7/2025
2025.1038.0.1-preview 136 2/7/2025
2025.1035.1 228 2/4/2025
2025.1035.0.1-preview 152 2/4/2025
2025.1034.1 230 2/3/2025
2025.1034.0.1-preview 140 2/3/2025
2025.1033.0.5-preview 147 2/2/2025
2025.1033.0.3-preview 146 2/2/2025
2025.1033.0.2-preview 145 2/2/2025
2025.1033.0.1-preview 152 2/2/2025
2025.1025.1 244 1/25/2025
2025.1025.0.1-preview 147 1/25/2025
2025.1021.1 235 1/21/2025
2025.1021.0.1-preview 136 1/21/2025
2025.1020.1 216 1/20/2025
2025.1020.0.3-preview 136 1/20/2025
2025.1020.0.1-preview 140 1/20/2025
2025.1018.0.7-preview 138 1/18/2025
2025.1018.0.5-preview 140 1/18/2025
2025.1018.0.4-preview 131 1/18/2025
2025.1017.0.2-preview 128 1/17/2025
2025.1017.0.1-preview 136 1/17/2025
2025.1016.0.1-preview 129 1/16/2025
2025.1010.1 225 1/10/2025
2025.1010.0.1-preview 135 1/9/2025
2025.1009.0.3-preview 126 1/9/2025
2025.1007.1 225 1/7/2025
2025.1007.0.5-preview 139 1/7/2025
2025.1007.0.3-preview 135 1/7/2025
2025.1006.1 235 1/7/2025
2025.1005.1 245 1/5/2025
2025.1005.0.2-preview 142 1/5/2025
2025.1004.1 241 1/4/2025
2024.1366.1 239 12/31/2024
2024.1366.0.2-preview 156 12/31/2024
2024.1366.0.1-preview 161 12/31/2024
2024.1365.0.2-preview 148 12/30/2024
2024.1365.0.1-preview 136 12/30/2024
2024.1361.0.2-preview 142 12/26/2024
2024.1353.0.1-preview 146 12/18/2024
2024.1352.0.3-preview 148 12/17/2024
2024.1352.0.2-preview 145 12/17/2024
2024.1352.0.1-preview 138 12/17/2024
2024.1351.1 236 12/16/2024
2024.1351.0.3-preview 130 12/16/2024
2024.1350.1 226 12/15/2024
2024.1343.1 227 12/8/2024
2024.1339.1 235 12/4/2024
2024.1336.1 229 12/1/2024
2024.1332.1 227 11/27/2024
2024.1330.1 226 11/25/2024
2024.1328.1 221 11/23/2024
2024.1325.1 222 11/20/2024
2024.1323.1 229 11/18/2024
2024.1316.1 182 11/11/2024
2024.1307.1 178 11/2/2024
2024.1300.1 178 10/26/2024
2024.1294.1 201 10/20/2024
2024.1290.1 222 10/16/2024
2024.1283.1 228 10/8/2024
2024.1282.1 217 10/8/2024
2024.1278.1 225 10/4/2024
2024.1277.1 210 10/3/2024
2024.1275.2 223 10/1/2024
2024.1275.1 217 10/1/2024
2024.1274.1 227 9/30/2024
2024.1263.1 230 9/19/2024
2024.1261.1 254 9/17/2024
2024.1258.1 241 9/13/2024
2024.1257.1 239 9/13/2024
2024.1256.1 241 9/12/2024
2024.1254.1 226 9/10/2024
2024.1250.1 235 9/6/2024
2024.1249.1 248 9/5/2024
2024.1246.1 242 9/2/2024
2024.1245.1 240 9/1/2024
2024.1237.1 269 8/24/2024
2024.1235.0.1-preview 155 8/23/2024
2024.1230.1 244 8/18/2024
2024.1229.1 264 8/16/2024
2024.1228.1 250 8/15/2024
2024.1222.1 258 8/8/2024
2024.1221.1 222 8/7/2024
2024.1221.0.2-preview 155 8/8/2024
2024.1221.0.1-preview 148 8/8/2024
2024.1220.1 222 8/7/2024
2024.1219.0.2-preview 142 8/6/2024
2024.1219.0.1-preview 147 8/6/2024
2024.1217.0.2-preview 138 8/4/2024
2024.1217.0.1-preview 141 8/4/2024
2024.1216.0.2-preview 126 8/3/2024
2024.1216.0.1-preview 124 8/3/2024
2024.1208.0.1-preview 130 7/26/2024
2024.1207.0.7-preview 137 7/25/2024
2024.1207.0.5-preview 134 7/25/2024
2024.1166.1 251 6/14/2024
2024.1165.1 230 6/13/2024
2024.1164.1 224 6/12/2024
2024.1162.1 238 6/10/2024
2024.1158.1 247 6/6/2024
2024.1156.1 229 6/4/2024
2024.1152.1 269 5/31/2024
2024.1151.1 254 5/29/2024
2024.1150.2 238 5/29/2024
2024.1150.1 232 5/29/2024
2024.1149.1 231 5/28/2024
2024.1147.1 242 5/26/2024
2024.1146.2 231 5/25/2024
2024.1146.1 238 5/25/2024
2024.1145.1 238 5/24/2024
2024.1135.2 249 5/14/2024
2024.1135.1 225 5/14/2024
2024.1134.1 234 5/13/2024
2024.1130.1 265 5/9/2024
2024.1123.1 246 5/2/2024
2024.1121.1 237 4/30/2024
2024.1114.1 251 4/22/2024
2024.1113.0.5-preview 169 4/22/2024
2024.1113.0.3-preview 165 4/22/2024
2024.1113.0.2-preview 149 4/22/2024
2024.1113.0.1-preview 146 4/22/2024
2024.1108.0.1-preview 155 4/17/2024
2024.1107.0.1-preview 167 4/16/2024
2024.1094.2 257 4/3/2024
2024.1094.1 223 4/3/2024
2024.1092.1 243 4/1/2024
2024.1088.1 255 3/28/2024
2024.1085.1 244 3/25/2024
2024.1080.2 246 3/20/2024
2024.1080.1 280 3/20/2024
2024.1078.1 248 3/18/2024
2024.1077.1 238 3/17/2024
2024.1073.1 257 3/13/2024
2024.1070.1 251 3/10/2024
2024.1069.1 248 3/9/2024
2024.1068.1 249 3/8/2024
2024.1066.2 239 3/6/2024
2024.1066.1 240 3/6/2024
2024.1065.1 261 3/5/2024
2024.1065.0.1-preview 148 3/5/2024
2024.1063.2 252 3/3/2024
2024.1063.1 254 3/3/2024
2024.1062.1 253 3/2/2024
2024.1061.2 270 3/1/2024
2024.1061.1 286 3/1/2024
2024.1060.2 234 2/29/2024
2024.1060.1 237 2/29/2024
2024.1060.0.5-preview 172 2/29/2024
2024.1060.0.3-preview 159 2/29/2024
2024.1059.0.1-preview 153 2/28/2024
2024.1058.1 252 2/27/2024
2024.1056.1 258 2/25/2024
2024.1055.1 232 2/24/2024
2024.1052.1 262 2/21/2024
2024.1050.2 253 2/20/2024
2024.1050.1 245 2/19/2024
2024.1049.1 236 2/18/2024
2024.1048.1 248 2/17/2024
2024.1047.1 252 2/16/2024
2024.1035.1 265 2/4/2024
2024.1034.2 239 2/3/2024
2024.1029.1 256 1/29/2024
2024.1023.1 268 1/23/2024
2024.1022.1 236 1/22/2024
2024.1020.1 242 1/20/2024
2024.1019.1 236 1/19/2024
2024.1017.1 259 1/17/2024
2024.1012.1 262 1/12/2024
2024.1010.1 247 1/10/2024
2024.1008.1 267 1/8/2024
2024.1007.1 262 1/7/2024
2024.1005.1 260 1/5/2024
2024.1004.1 278 1/4/2024
2023.1365.1 272 12/31/2023
2023.1362.1 264 12/28/2023
2023.1361.1 269 12/27/2023
2023.1359.1 279 12/25/2023
2023.1358.1 252 12/24/2023
2023.1357.1 286 12/23/2023
2023.1342.1 285 12/8/2023
2023.1336.1 220 12/2/2023
2023.1332.1 214 11/28/2023
2023.1330.1 181 11/26/2023
2023.1325.1 216 11/21/2023
2023.1323.1 205 11/19/2023
2023.1320.1 198 11/17/2023
2023.1318.1 196 11/15/2023
2023.1317.1 190 11/13/2023
2023.1307.1 215 11/3/2023
2023.1305.1 221 11/1/2023
2023.1304.1 207 10/31/2023
2023.1294.1 235 10/21/2023
2023.1290.1 215 10/16/2023
2023.1289.1 197 10/16/2023
2023.1284.1 228 10/11/2023
2023.1276.1 229 10/3/2023
2023.1275.1 223 10/2/2023
2023.1272.1 218 9/29/2023
2023.1269.1 215 9/26/2023
2023.1242.1 278 8/30/2023
2023.1231.1 285 8/19/2023
2023.1229.1 268 8/17/2023
2023.1228.1 248 8/16/2023
2023.1227.1 269 8/15/2023
2023.1224.2 275 8/12/2023
2023.1224.1 278 8/12/2023
2023.1213.2 294 8/1/2023
2023.1213.1 276 8/1/2023
2023.1209.1 240 7/27/2023
2023.1201.1 266 7/20/2023
2023.1197.1 285 7/16/2023
2023.1178.1 268 6/27/2023
2023.1175.1 274 6/24/2023
2023.1174.1 279 6/22/2023
2023.1169.1 279 6/18/2023
2023.1165.1 311 6/14/2023
2023.1161.1 316 6/11/2023
2023.1159.1 322 6/7/2023
2023.1157.1 319 6/6/2023
2023.1146.1 308 5/27/2023
2023.1139.1 322 5/19/2023
2023.1137.1 318 5/17/2023
2023.1136.1 317 5/16/2023
2023.1118.1 338 4/28/2023
2023.1111.1 384 4/21/2023
2023.1110.1 369 4/20/2023
2023.1105.1 350 4/15/2023
2023.1103.1 338 4/13/2023
2023.1102.1 350 4/12/2023
2023.1101.1 331 4/11/2023
2023.1090.1 379 3/31/2023
2023.1089.1 373 3/30/2023
2023.1088.1 371 3/29/2023
2023.1082.1 405 3/23/2023
2023.1078.1 388 3/19/2023
2023.1075.1 411 3/16/2023
2023.1070.1 388 3/11/2023
2023.1069.1 375 3/10/2023
2023.1064.1 399 3/5/2023
2023.1060.1 427 3/1/2023
2023.1057.1 429 2/26/2023
2023.1046.1 403 2/15/2023
2023.1043.2 429 2/12/2023
2023.1043.1 431 2/12/2023
2023.1042.1 421 2/11/2023
2023.1041.1 437 2/10/2023
2023.1039.1 406 2/8/2023
2023.1036.1 440 2/5/2023
2023.1035.1 438 2/4/2023
2023.1033.1 454 2/2/2023
2023.1030.1 455 1/30/2023
2023.1028.1 466 1/28/2023
2023.1026.1 460 1/26/2023
2023.1025.1 479 1/25/2023
2023.1024.1 461 1/24/2023
2023.1023.1 467 1/23/2023
2022.1319.1 513 11/15/2022
2022.1309.1 548 11/5/2022
2022.1307.1 517 11/3/2022
2022.1295.1 569 10/22/2022
2022.1290.1 563 10/17/2022
2022.1289.2 572 10/16/2022
2022.1289.1 578 10/16/2022
2022.1283.1 589 10/10/2022
2022.1282.1 569 10/9/2022
2022.1278.1 561 10/5/2022
2022.1272.2 597 9/29/2022
2022.1272.1 576 9/29/2022
2022.1271.1 603 9/28/2022
2022.1266.1 602 9/23/2022
2022.1259.1 621 9/16/2022
2022.1257.1 654 9/14/2022
2022.1250.1 590 9/7/2022
2022.1250.0.2-preview 317 9/7/2022
2022.1249.0.2-preview 308 9/6/2022
2022.1249.0.1-preview 297 9/6/2022
2022.1197.1 642 7/16/2022
2022.1196.1 629 7/15/2022
2022.1194.1 639 7/13/2022
2022.1182.1 636 7/1/2022
2022.1178.1 636 6/27/2022
2022.1166.1 635 6/15/2022
2022.1157.1 651 6/6/2022
2022.1150.1 642 5/30/2022
2022.1149.1 644 5/29/2022
2022.1144.1 654 5/24/2022
0.6.2 630 5/23/2022
0.6.1 635 5/23/2022
0.6.0 625 5/14/2022
0.5.3 616 5/8/2022
0.5.2 622 5/1/2022
0.5.1 623 5/1/2022
0.5.0 646 4/23/2022
0.4.1 648 4/15/2022
0.4.0 647 4/9/2022
0.3.3 643 4/8/2022
0.3.2 665 4/1/2022
0.3.1 674 3/29/2022
0.3.0 667 3/28/2022
0.2.3 677 3/28/2022
0.2.2 672 3/25/2022
0.2.1 652 3/21/2022
0.2.0 659 3/18/2022