Skip to main content
Version: 2.2.0

Language Management Module

The @abpjs/language-management package provides language and localization management components for ABP React applications. This is the React equivalent of Angular's @volo/abp.ng.language-management module.

ABP Commercial License Required

This package is free to use but requires the corresponding backend module from ABP Commercial. You can purchase an ABP Commercial license from abp.io.

Installation

npm install @abpjs/language-management
# or
yarn add @abpjs/language-management

Features

  • Language Management - Create, edit, delete, and set default languages
  • Language Texts - Manage localization strings for different cultures
  • Culture Support - Browse and select from available cultures
  • Resource Management - View and filter by localization resources
  • Restore Defaults - Restore modified translations to their default values

Components

LanguagesComponent

Full-featured language management UI with CRUD operations.

import { LanguagesComponent } from '@abpjs/language-management';

function LanguagesPage() {
return <LanguagesComponent />;
}

Features:

  • Paginated language list with sorting
  • Create/edit language modal with culture selection
  • Delete language with confirmation
  • Set default language
  • Enable/disable languages
  • Flag icon selection

LanguageTextsComponent

Localization string management interface for translating application texts.

import { LanguageTextsComponent } from '@abpjs/language-management';

function LanguageTextsPage() {
return <LanguageTextsComponent />;
}

Features:

  • Paginated language text list with search
  • Filter by resource, base culture, and target culture
  • Filter to show only empty (untranslated) values
  • Inline editing of translations
  • Restore to default value

Hooks

useLanguages

Hook for managing languages state and operations.

import { useLanguages } from '@abpjs/language-management';

function MyLanguagesComponent() {
const {
languages,
totalCount,
cultures,
isLoading,
fetchLanguages,
fetchCultures,
createLanguage,
updateLanguage,
deleteLanguage,
setAsDefaultLanguage,
} = useLanguages();

useEffect(() => {
fetchLanguages();
fetchCultures();
}, [fetchLanguages, fetchCultures]);

const handleCreate = async (data) => {
const result = await createLanguage(data);
if (result.success) {
// Handle success
}
};
}

Returns:

PropertyTypeDescription
languagesLanguage[]List of languages
totalCountnumberTotal language count
culturesCulture[]Available cultures
selectedLanguageLanguage | nullSelected language
isLoadingbooleanLoading state
errorstring | nullError message
fetchLanguages(params?) => Promise<Result>Fetch languages
fetchCultures() => Promise<Result>Fetch available cultures
getLanguageById(id) => Promise<Result>Get language by ID
createLanguage(data) => Promise<Result>Create language
updateLanguage(id, data) => Promise<Result>Update language
deleteLanguage(id) => Promise<Result>Delete language
setAsDefaultLanguage(id) => Promise<Result>Set as default

useLanguageTexts

Hook for managing language texts (localization strings).

import { useLanguageTexts } from '@abpjs/language-management';

function MyLanguageTextsComponent() {
const {
languageTexts,
totalCount,
resources,
isLoading,
fetchLanguageTexts,
fetchResources,
updateLanguageTextByName,
restoreLanguageTextByName,
} = useLanguageTexts();

useEffect(() => {
fetchResources();
fetchLanguageTexts({
baseCultureName: 'en',
targetCultureName: 'fr',
getOnlyEmptyValues: false,
});
}, [fetchLanguageTexts, fetchResources]);

const handleUpdate = async (name, value) => {
const result = await updateLanguageTextByName({
resourceName: 'MyResource',
cultureName: 'fr',
name,
value,
});
};
}

Returns:

PropertyTypeDescription
languageTextsLanguageText[]List of language texts
totalCountnumberTotal text count
resourcesResource[]Available resources
selectedLanguageTextLanguageText | nullSelected text
isLoadingbooleanLoading state
errorstring | nullError message
fetchLanguageTexts(params) => Promise<Result>Fetch texts with filters
fetchResources() => Promise<Result>Fetch available resources
getLanguageTextByName(params) => Promise<Result>Get text by name
updateLanguageTextByName(params) => Promise<Result>Update translation
restoreLanguageTextByName(params) => Promise<Result>Restore to default

Services

LanguageManagementService

Service class for language management API operations.

Language Methods:

MethodParametersReturnsDescription
getLanguagesparams?: PageQueryParamsPromise<LanguageResponse>Get paginated languages
getLanguageByIdid: stringPromise<Language>Get language by ID
createLanguagebody: CreateLanguageInputPromise<Language>Create language
updateLanguageid: string, body: UpdateLanguageInputPromise<Language>Update language
deleteLanguageid: stringPromise<void>Delete language
setAsDefaultLanguageid: stringPromise<void>Set as default
getCultures-Promise<Culture[]>Get available cultures

Language Text Methods:

MethodParametersReturnsDescription
getResources-Promise<Resource[]>Get localization resources
getLanguageTextsparams: LanguageTextQueryParamsPromise<LanguageTextResponse>Get texts with filters
getLanguageTextByNameparams: LanguageTextRequestByNameParamsPromise<LanguageText>Get text by name
updateLanguageTextByNameparams: LanguageTextUpdateByNameParamsPromise<LanguageText>Update translation
restoreLanguageTextByNameparams: LanguageTextRequestByNameParamsPromise<void>Restore to default

Routes

The package provides pre-configured routes:

import { LANGUAGE_MANAGEMENT_ROUTES } from '@abpjs/language-management';

// Route structure:
// /language-management
// /language-management/languages
// /language-management/texts

TypeScript Support

The package exports all TypeScript interfaces under the LanguageManagement namespace:

import { LanguageManagement } from '@abpjs/language-management';

// Types
const language: LanguageManagement.Language = { ... };
const text: LanguageManagement.LanguageText = { ... };
const culture: LanguageManagement.Culture = { ... };
const resource: LanguageManagement.Resource = { ... };

// Input types
const createInput: LanguageManagement.CreateLanguageInput = { ... };
const updateInput: LanguageManagement.UpdateLanguageInput = { ... };

// Query types
const textQuery: LanguageManagement.LanguageTextQueryParams = {
baseCultureName: 'en',
targetCultureName: 'fr',
getOnlyEmptyValues: false,
resourceName: 'MyResource',
};

Key Types:

TypeDescription
LanguageLanguage entity with id, cultureName, displayName, flagIcon, isEnabled, isDefaultLanguage
CreateLanguageInputInput for creating languages (cultureName, uiCultureName, displayName, flagIcon, isEnabled)
UpdateLanguageInputInput for updating languages (displayName, flagIcon, isEnabled)
LanguageTextLocalization string with resourceName, cultureName, name, value, baseValue
LanguageTextQueryParamsQuery params for texts (baseCultureName, targetCultureName, getOnlyEmptyValues, resourceName)
CultureCulture info (name, displayName)
ResourceLocalization resource (name)

Dependencies

  • @abpjs/core - Core ABP React functionality

See Also