Appearance
LanguagesModule
The LanguagesModule
provides a list of languages and their corresponding information such as name in the "Area/Location" format, title and offset. It can be used to retrieve language data for various purposes such as displaying language options in a user interface or converting time between different languages.
Key Components
The module provides a set of reusable components that can be easily integrated into a NestJS project:
Language Entity
The Language entity represents a language with its code in various formats, such as BCP-47, ISO 639-1, ISO 639-2, localizations, and the language name in the localization language and in its native tongue. By default, English localization ("en") is used, but this value can be adjusted.
NestJS Languages Service
LanguagesService is a service in the Languages API that provides methods for fetching languages data.
GraphQL Languages Resolver
The GraphQL LanguagesResolver
in NestKit provides a convenient way to retrieve languages data in a GraphQL API.
How to install LanguagesModule to my app
To create a LanguagesModule
in NestJS, you can follow these steps:
Create a
languages
folder in your project'ssrc/modules
directory.Inside the
languages
folder, create alanguages.service.ts
file and extendsBaseLanguagesService
from NestKit with the following code:ts// src/modules/languages/languages.service.ts import { BaseLanguagesService } from '@deeepvision/nest-kit/dist/modules/languages'; export class LanguagesService extends BaseLanguagesService {}
Inside the
languages
folder, create alanguages.resolver.ts
file and extendsBaseLanguagesResolver
with the following code:ts// src/modules/languages/languages.resolver.ts import { BaseLanguagesResolver, Language } from '@deeepvision/nest-kit/dist/modules/languages'; import { Resolver } from '@nestjs/graphql'; @Resolver(() => Language) export class LanguagesResolver extends BaseLanguagesResolver() {}
Inside the
languages
folder, create alanguages.module.ts
file with the following code:ts// src/modules/languages/languages.module.ts import { LANGUAGES_SERVICE_TOKEN } from '@deeepvision/nest-kit/dist/modules/languages'; import { Module } from '@nestjs/common'; import { LanguagesResolver } from './languages.resolver'; import { LanguagesService } from './languages.service'; @Module({ providers: [ LanguagesService, { provide: LANGUAGES_SERVICE_TOKEN, useExisting: LanguagesService, }, LanguagesResolver, ], exports: [ LanguagesService, { provide: LANGUAGES_SERVICE_TOKEN, useExisting: LanguagesService, }, ], }) export class LanguagesModule {}
Finally, import the
LanguagesModule
into your mainAppModule
module:ts// src/modules/app.module.ts import { Module } from '@nestjs/common'; import { LanguagesModule } from './modules/languages/languages.module.ts'; @Module({ imports: [LanguagesModule], }) export class AppModule {}
In this code, we are importing the LanguagesModule
and adding it to the imports
array of our AppModule
.
In this example, we are importing the LanguagesModule
and adding it to OrdersModule
imports array. This makes the LanguagesService
available for injection in any service provided to OrdersModule
.
How to get languages list
Use the getMany()
method in other parts of your application to retrieve a list of languages.
ts
const [languages, meta] = await this.languagesService.getMany({
filter: {
...
},
orderBy: LanguagesOrderBy.title_ASC,
locale: "uk",
});
Use the locale
parameter to get language names in the specified language, default is "en".
See LanguagesFilter
and LanguagesOrderBy
for more information on how to filter and order languages.