在 Blazor 服务器端应用程序中,更改语言环境可能不会立即生效,因为它需要重定向到新的 URL 才能生效。要解决此问题,您可以使用以下代码在更改语言环境时自动重定向当前页面:
public class LocalizationService
{
private readonly NavigationManager _navigationManager;
public LocalizationService(NavigationManager navigationManager)
{
_navigationManager = navigationManager;
}
public void SetLanguage(string language)
{
var uri = new Uri(_navigationManager.Uri);
var query = QueryHelpers.ParseQuery(uri.Query);
query["lang"] = language;
var ub = new UriBuilder
{
Scheme = uri.Scheme,
Host = uri.Host,
Path = uri.LocalPath,
Query = query.ToString()
};
_navigationManager.NavigateTo(ub.Uri.AbsoluteUri);
}
}
在本示例中,我们将语言环境的参数添加到当前的查询字符串中,并使用 NavigationManager
重定向到修改后的 URL。
您可以在此服务之上构建您的应用程序,并在需要时通过 SetLanguage
方法更改语言环境。