# Languages

### 1. Backend Server

Add new locale id into `locales` in `core/config/Locale.js` file.

```
const locales = Object.freeze({
    en: "en",
    id: "id",
    es: "es",
    hi: "hi",
    ru: "ru",
    pt: "pt",
    zh: "zh",
    ja: "ja"
    // add new locale id
})
```

Next step is add default error messages into `langValidation` in `core/locale/LangValidation.js` file.

```
const langValidation = Object.freeze({
    required: {
        "en": "The _attribute_ is required",
        "id": "_attribute_ wajib di isi",
        "es": "El campo _attribute_ es obligatorio",
        "hi": "_attribute_ आवश्यक है",
        "ru": "Поле _attribute_ является обязательным",
        "pt": "O campo _attribute_ é obrigatório",
        "zh": "_attribute_ 必填",
        "ja": "_attribute_ は必須です"
        // add new translation with new locale id
    },
    email: {
        "en": "The _attribute_ must be in E-mail format",
        ............
```

Then new translation into dictionary in `core/locale/Dictionary.js` file.&#x20;

```
const Dictionary = Object.freeze({
  "success": {
    "en": "success",
    "id": "sukses",
    "es": "éxito",
    "hi": "सफलता",
    "ru": "успех",
    "pt": "sucesso",
    "zh": "成功",
    "ja": "成功"
    // add new translation with new locale id
  },
  "failed": {
    "en": "failed",
    .........
```

### 2. Bliss App & Admin App

First add locale id into enum `LocaleId` in `lib/config/LocaleConfig.dart` file.

```
enum LocaleId { en, id, es, hi, ru, pt, zh, ja } // add new locale id into this enum
```

Then add language into static function `locales()`

```
class LocaleConfig {
  /**
   * list of locales
   */
  static List<Language> locales() {
    return [
      Language(id: LocaleId.en.name, name: "English"),
      Language(id: LocaleId.id.name, name: "Bahasa Indonesia"),
      Language(id: LocaleId.es.name, name: "Español (Spanish)"),
      Language(id: LocaleId.hi.name, name: "हिंदी (Hindi)"),
      Language(id: LocaleId.ru.name, name: "Русский (Rusia)"),
      Language(id: LocaleId.pt.name, name: "Português (Portugis)"),
      Language(id: LocaleId.zh.name, name: "中文 (Mandarin)"),
      Language(id: LocaleId.ja.name, name: "日本語 (Japanese)"),
      // add new Language() model here with new id from enum that you add before
    ];
  }
```

The last step is, add new translation language into `assets/lang/lang.json` file.&#x20;

```
{
    "ok":{
        "en":"ok",
        "id":"oke",
        "es": "vale",
        "hi": "ठीक",
        "ru": "ок",
        "pt": "ok",
        "zh": "好",
        "ja": "はい"
        // add new translation with new locale id
    },
    "yes":{
        "en":"yes",
        ..........
```

Note: both admin the bliss app using same json on the app, means if you add new language in admin app, you must copy that `lang.json` into bliss app too.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mamena.gitbook.io/bliss-dating-app/customize/languages.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
