天天看點

SAP Spartacus Translation (翻譯) 相關話題Adding Translations for Other LanguagesOverwriting Individual TranslationsLazy LoadingHandling Translations in HTMLUsing Translations in TypeScript Code

在典型的 Spartacus 店面中,大部分内容要麼來自 CMS,要麼來自産品内容。 但是,對于店面站點标簽(例如按鈕中的文本),内容存儲在單獨的檔案中,并且可以對這些檔案進行本地化(即翻譯)。

Spartacus 使用 i18next 庫作為其翻譯機制,并使用 i18next-xhr-backend 延遲加載翻譯塊。 這兩個庫都有豐富的 API,但 Spartacus 隻支援其中的一部分,并将它們視為實作細節。 是以,Spartacus 不支援在您的應用程式中自定義使用 i18next。

SAP Spartacus Translation (翻譯) 相關話題Adding Translations for Other LanguagesOverwriting Individual TranslationsLazy LoadingHandling Translations in HTMLUsing Translations in TypeScript Code
為了快速開始,從@spartacus/assets 導入預定義的 Spartacus 翻譯(目前隻有英文),并在 B2cStorefrontModule 的配置中注冊它們。 下面是一個例子:
SAP Spartacus Translation (翻譯) 相關話題Adding Translations for Other LanguagesOverwriting Individual TranslationsLazy LoadingHandling Translations in HTMLUsing Translations in TypeScript Code

Adding Translations for Other Languages

除了使用預定義的 Spartacus 翻譯,您還可以提供自己的英語翻譯,并添加其他語言的翻譯。 下面是一個例子:

SAP Spartacus Translation (翻譯) 相關話題Adding Translations for Other LanguagesOverwriting Individual TranslationsLazy LoadingHandling Translations in HTMLUsing Translations in TypeScript Code

這會将翻譯編譯到您的應用程式 JS 包中。 盡管這對于快速啟動來說很好,但在生産中,您可能希望對翻譯塊利用延遲加載。

Overwriting Individual Translations

要覆寫單個翻譯,需要在預設翻譯之後提供具有覆寫的對象。 下面是一個例子:

SAP Spartacus Translation (翻譯) 相關話題Adding Translations for Other LanguagesOverwriting Individual TranslationsLazy LoadingHandling Translations in HTMLUsing Translations in TypeScript Code

 Fallback Language

如果缺少特定鍵的翻譯,生産模式下的店面将顯示不間斷的空格字元。 為了更容易捕獲丢失的鍵,在開發模式下,Spartacus 顯示翻譯鍵前面帶有塊的名稱和冒号(例如,[common:form.confirm])。

為了在缺少翻譯時提供更好的使用者體驗,您可以指定後備語言。 設定 fallbackLang 選項可確定對于每個丢失的翻譯,使用後備語言的等效項。

以下是使用英語作為後備語言的示例配置:

SAP Spartacus Translation (翻譯) 相關話題Adding Translations for Other LanguagesOverwriting Individual TranslationsLazy LoadingHandling Translations in HTMLUsing Translations in TypeScript Code

Lazy Loading

翻譯按語言和命名塊進行結構化,是以您隻能加載目前語言和目前頁面的翻譯資源。 以下是翻譯資源的結構示例:

SAP Spartacus Translation (翻譯) 相關話題Adding Translations for Other LanguagesOverwriting Individual TranslationsLazy LoadingHandling Translations in HTMLUsing Translations in TypeScript Code

要利用延遲加載,您需要為每種特定語言和塊提供不同的 JSON 檔案,并使用 {{lng}} 語言占位符和 {{ns}} 占位符為塊配置 JSON 檔案的 URL。 下面是一個例子:

SAP Spartacus Translation (翻譯) 相關話題Adding Translations for Other LanguagesOverwriting Individual TranslationsLazy LoadingHandling Translations in HTMLUsing Translations in TypeScript Code

對于 Spartacus,您可以在 @spartacus/storefront 的 /i18n-assets 檔案夾中找到帶有翻譯的預定義 JSON 檔案。 您需要從您自己的自定義端點或通過将它們複制到 Angular 應用程式的 /assets 檔案夾中來提供這些檔案。

SAP Spartacus Translation (翻譯) 相關話題Adding Translations for Other LanguagesOverwriting Individual TranslationsLazy LoadingHandling Translations in HTMLUsing Translations in TypeScript Code

Handling Translations in HTML

要處理 HTML 中的翻譯,您可以使用 cxTranslate 管道。 下面是一個例子:

SAP Spartacus Translation (翻譯) 相關話題Adding Translations for Other LanguagesOverwriting Individual TranslationsLazy LoadingHandling Translations in HTMLUsing Translations in TypeScript Code

Configuring Chunks and Namespace Mapping

每個 key 都屬于一個命名空間,每個命名空間都封裝在一個chunk中(比如下面例子中的i18n.chunks)。 需要配置來解析哪個鍵屬于哪個命名空間和塊。 下面是一個

例子

SAP Spartacus Translation (翻譯) 相關話題Adding Translations for Other LanguagesOverwriting Individual TranslationsLazy LoadingHandling Translations in HTMLUsing Translations in TypeScript Code

對應的 common.ts 的例子:

SAP Spartacus Translation (翻譯) 相關話題Adding Translations for Other LanguagesOverwriting Individual TranslationsLazy LoadingHandling Translations in HTMLUsing Translations in TypeScript Code

cxTranslate 也支援傳入參數:

SAP Spartacus Translation (翻譯) 相關話題Adding Translations for Other LanguagesOverwriting Individual TranslationsLazy LoadingHandling Translations in HTMLUsing Translations in TypeScript Code

Using Translations in TypeScript Code

也可以使用 TypeScript 代碼進行翻譯,即利用 Spartacus 的 TranslationService 服務。

SAP Spartacus Translation (翻譯) 相關話題Adding Translations for Other LanguagesOverwriting Individual TranslationsLazy LoadingHandling Translations in HTMLUsing Translations in TypeScript Code

HTML 裡的用法:

SAP Spartacus Translation (翻譯) 相關話題Adding Translations for Other LanguagesOverwriting Individual TranslationsLazy LoadingHandling Translations in HTMLUsing Translations in TypeScript Code

繼續閱讀