If you find this library useful, cup of coffee would be awesome! You can support further development of the library via Paypal.
I'm pleased to announce that Localization Provider v8.0 is finally out. Again - took a bit longer than expected :)
What's new?
- .NET8 set as default target
- Added provider model for translations - starting with Azure AI for automatic translations
ConfigurationContext
now supports config configuration as well (you can change some settings after you have added and configured default settings for localization provider). This is very useful in unit test scenarios when you need to adjust some settings for specific test.- Various bug fixes
- Some performance improvements (resource key comparison, pagination in Admin UI)
- Security improvements (by default upgrading insecure connections)
- Dependencies upgrade
More info in this blog post.
LocalizationProvider project is ASP.NET Mvc web application localization provider on steroids.
Giving you the main following features:
- Database-driven localization provider for Asp.Net Mvc applications projects
- Easy resource registrations via code
- Supports hierarchical resource organization (with help of child classes)
- Administration UI for editors to change or add new translations for required languages
Below are code fragments that are essential to get started with a localization provider.
Install required packages:
> dotnet add package LocalizationProvider.AspNetCore
> dotnet add package LocalizationProvider.AdminUI.AspNetCore
> dotnet add package LocalizationProvider.Storage.SqlServer
Following service configuration (usually in Startup.cs
) is required to get the localization provider working:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// add your authorization provider (asp.net identity, identity server, whichever..)
services
.AddControllersWithViews()
.AddMvcLocalization();
services.AddRazorPages();
services.AddRouting();
services.AddDbLocalizationProvider(_ =>
{
_.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));
...
});
services.AddDbLocalizationProviderAdminUI(_ =>
{
...
});
}
...
}
And following setup of the application is required as a minimum (also usually located in Startup.cs
):
public class Startup
{
...
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseDbLocalizationProvider();
app.UseDbLocalizationProviderAdminUI();
app.UseDbLocalizationClientsideProvider(); //assuming that you like also Javascript
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapRazorPages();
endpoints.MapDbLocalizationAdminUI();
endpoints.MapDbLocalizationClientsideProvider();
});
}
}
Also, you can refer to sample app in GitHub for some more hints if needed.
- Getting Started
- Getting Started with AdminUI
- Localizing App Content
- Localizing View Model (with DataAnnotations attributes)
- Localizing Client-side
- Localized Resource Types
- Synchronization Process
- MSSQL Storage Configuration
- Working with Resources
- Working with Languages
- Translating System.Enum Types
- Mark Required Fields
- Foreign Resources
- Hidden Resources
- Reference Other Resource
- Cache Event Notifications
- XLIFF Support
- CSV Support
- Migrations & Refactorings
- For more information about Optimizely integration - read here
Please read more in this blog post!