簡體   English   中英

Blazor WASM 顯示資源鍵而不是本地化值

[英]Blazor WASM displaying resource key instead of localized value

我正在嘗試按照 Internet 上的教程之一在 Blazor WebAssembly 應用程序中實現本地化,例如: Blazor 中的本地化

我已經設置了教程中描述的所有內容,但是我無法獲得特定鍵的本地化值,我得到了一個顯示為我想要本地化的文本的 KEY。

這是我的代碼:Program.cs - 硬編碼文化,以確保我選擇正確的:

builder.Services.AddLocalization(opts => { opts.ResourcesPath = "Localization"; });
var culture = new CultureInfo("sr");
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;

在我的 .razor 文件中,我注入了一個 IStringLocalizer:

@inject IStringLocalizer<General> localizer

我使用這樣的定位器:<MudTooltip Text="@localizer["Open"]">

我從 .resx 生成的類稱為 General。 這是我的資源設置:添加了一個 resx 作為嵌入式資源和代碼生成工具 PublicResXFileCodeGenerator 'en' 的主要資源文件

我的塞爾維亞語本地化 resx 設置為 EmbeddedResource 並且沒有代碼生成工具。

IStringLocalizer<T>不依賴於從.resx文件生成的類。 在構建過程中, ResourceManagerResourceManager嵌入主 dll 並創建附屬 dll。 IStringLocalizer<T>的默認實現依賴於ResourceManager來讀取程序集或附屬程序集內的文件。 所以關閉代碼生成應該可以解決你的問題。

.resx 文件的屬性

更新:

<T>指的是任何可能的類。 沒有約束強制執行。 但是,類的命名空間和文件位置之間應該有一個鏈接。

假設您有文件Pages/Users/AddUserPage.razor

@inject IStringLocalizer<AddUser> Localizer

如果您不手動指定命名空間, AddUserPage類將在命名空間<ProjectRootNamespace>.Pages.Users

因此,您需要創建一個反映文件夾結構的 .resx 文件。 您的根被指定為Localization因此您需要創建文件Localization/Pages/Users/AddUserPage.resx或它們的 locazied 對應項,如Localization/Pages/Users/AddUserPage.sr.resx

在某些情況下,將某些本地化分組是有意義的,例如按鈕的標題(確定、關閉、是、否等)。 為避免在每個 .resx 文件中包含這些鍵,您可以創建一個空類。 我喜歡將其命名為SharedRessources 但是,名稱並不重要,只要您相應地命名 .resx 文件即可。


namespace <ProjectRootNamespace>
{
    public class SharedRessources
    {
    }
}

由於該類位於項目的根命名空間中,因此 .resx 文件應放置在 .resx 文件的根文件夾中。 在您的情況下, Localization 因此,名稱應為Localization/SharedRessources.resxLocalization/SharedRessources.sr.resx

現在,您也可以將其注入。

@inject IStringLocalizer<AddUser> Localizer
@inject IStringLocalizer<SharedRessources> SharedLocalizer

<p> Hi from @Localizer["KeyLocalToAddUser"] </p>
<p> Do you want to delete the user? <span> @SharedLocalizer["No"] or SharedLocalizer["Yes"] 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM