Birçok yazılımcı, api içeriğinin dilini nasıl değiştireceğini bilir.
Fakat, api alanlarını değiştirmek zor olabilir.
Tabiki dto ve automapper benzeri yöntemler ile çözüm bulabilirsiniz.
Bu kaynak, api alanlarını çevirmede yardımcı olabilir.
Örneğin:
İngilizceden
{
"name":"Name"
}
Türkçeye
{
"ad":"Name"
}
- Api alanlarını değiştirebilirsiniz
- .Net 6
- Başka paketlere bağımlılık yok
- Middleware
- header
- Açık kaynak, ücretsiz
Api kodunuzu yazın
LocalizationMiddleware.cs kopyalayın, bir değişiklik yapmanıza gerek yok.
program.cs içinde
Eğer bütün api metodlarınızda geçerli olmasını istiyorsanız, bu kullanın
app.UseMiddleware<LocalizationMiddleware>();
Eğer bazı özel api metodlarınızda geçerli olmasını istiyorsanız, bu kullanın
app.UseWhen(context => context.Request.Path.StartsWithSegments("/WeatherForecast"), appBuilder =>
{
appBuilder.UseMiddleware<LocalizationMiddleware>();
});
api header değer atayın
--header 'Accept-Language: de-DE'
Maalesef, swagger'ı kolayca kullanamazsınız, Postman kullanın.
- servisiniz daha az performansta çalışır
- Eski sürüm .Net desteklemez
- header gereklidir
Most of developers knows, how to change content language.
But, changing api fields may be difficult.
Of course, you can use dto and automapper etc.
This github repository helps to translate api fields.
For example:
from (english)
{
"name":"Name"
}
to (türkçe)
{
"ad":"Name"
}
- You can change api fields language
- .Net 6
- No Dependency
- Middleware
- header
- Public, open source, feel free to use
Write your api code.
Copy LocalizationMiddleware.cs, don't change any thing.
in program.cs
if you want to apply to all api, use this
app.UseMiddleware<LocalizationMiddleware>();
if you want to apply to special (named) api, use this
app.UseWhen(context => context.Request.Path.StartsWithSegments("/WeatherForecast"), appBuilder =>
{
appBuilder.UseMiddleware<LocalizationMiddleware>();
});
Set api header
--header 'Accept-Language: de-DE'
Unfortunately, you can't use with swagger easily, use Postman instead
- less performance
- Don't support earlier .Net (<.Net 5)
- header needed