Hello, we are researching the cms-kit module as an option to store our application's customer facing knowledge base. The knowledge base contains the guides how to use the main application. One thing I would like to clarify is how would we implement the page localisation. We need the same KB page in different languages. Does the the cms-kit support this use case by default? If not how should we create the pages and support this use case?
6 Answer(s)
-
0
CMS Kit Pages (Dynamic Pages) do not support storing multiple language versions of the same page out-of-the-box.
The built-in Pages feature stores a single content (Markdown/HTML) per page/slug. There isn’t a built-inPageTranslation(or similar) entity in the CMS Kit module to automatically resolve page content by the current UI culture.Recommended approach to implement KB page localization (practical and ABP-aligned):
- Create one CMS page per language (separate records), e.g.:
/en/how-to-reset-password/de/wie-passwort-zuruecksetzen
- Link them together using your own “translation group” concept. Typical options:
- Add a custom entity like
KnowledgeBasePage(your aggregate) that contains shared metadata (e.g., “group id”, canonical key, ordering, tags), and store per-language content in a child table likeKnowledgeBasePageTranslation { Language, Title, Slug, Content }. - Or, if you want to keep CMS Kit’s page storage, store a custom property (or an extra mapping table) that relates CMS Kit Page IDs across languages (e.g.,
KbPageLocalizationMap { GroupId, Language, CmsPageId }).
- Add a custom entity like
- Resolve the correct page by current culture:
- In your Angular UI, determine current culture (ABP localization already provides it) and navigate to the language-specific slug.
- Optionally implement a fallback (e.g., if
frmissing, fall back toen) in your own application service.
- (Optional) SEO/canonical: expose language in URL (like
/en/...) and maintain a stable “canonical key” per article in your custom model.
- Create one CMS page per language (separate records), e.g.:
Why this is the safe way with CMS Kit today:
- CMS Kit gives you dynamic pages and slugs, but not multi-lingual content versions for the same page as a first-class feature. For localized, user-generated content, ABP generally expects you to model translations yourself (multi-lingual entity pattern).
If you want a ready pattern for “multi-lingual entity” in ABP (for your KB pages/translations tables), you can follow the approach shown in the community article and adapt it from “Book + BookTranslation” to “KbPage + KbPageTranslation”.
Links (verified):
- https://docs.abp.io/en/abp/latest/Modules/Cms-Kit/Index
- https://github.com/abpframework/cms-kit-demo
- https://abp.io/community/articles/8glnk6vu
This response was generated by AI. If it didn’t solve your problem, feel free to post a new answer — our support team will jump in to help you soon.
-
0
hi
You can add Razor page for the same purpose, It support localizaion by
inject IHtmlLocalizer<TestResource> Localizerhttps://abp.io/docs/latest/framework/fundamentals/localization
Thanks.
-
0
Thanks for the reply! But I don't understand, what page do you mean. Our KB-articles are not managed by developers, that's why we are looking into CMS-kit.
-
0
hi
I mean, you can create a Razor page to implement the KB-articles feature, cmk page doesn't support multiple languages for now.
Thanks.
-
0
what the purpose of that page? To show different cms-kit pages based on the user's language?
-
0
hi
It has nothing to do with cmskit page, it is a separate page to implement your
KB-articlesand supports multiple languagesThanks.