> For the complete documentation index, see [llms.txt](https://docs.luciq.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.luciq.ai/android/set-up-luciq-for-android/sdk-customizations/sdk-locale.md).

# SDK Locale

Configure the SDK locale for Luciq in your Android app. Set the language and locale for the Luciq UI to match your app's localization settings.

### Setting the Locale

The SDK will automatically use the current locale of your user's device, however, you can override it with the following method.

{% tabs %}
{% tab title="Kotlin" %}
{% code overflow="wrap" %}

```kotlin
Luciq.setLocale(Locale("de"))
```

{% endcode %}
{% endtab %}

{% tab title="Java" %}
{% code overflow="wrap" %}

```java
Luciq.setLocale(new Locale("de"));
```

{% endcode %}
{% endtab %}
{% endtabs %}

Here are the possible languages.

{% tabs %}
{% tab title="Android" %}

```java
Locale("en")
Locale("ar")
Locale("az")
Locale("ca")
Locale("ca","ES")
Locale("cs")
Locale("da")
Locale("de")
Locale("es")
Locale("fa")
Locale("fi")
Locale("fr")
Locale("hu")
Locale("in")
Locale("it")
Locale("ja")
Locale("ko")
Locale("nl")
Locale("pl")
Locale("pt","BR")
Locale("pt","PT")
Locale("ru")
Locale("sk")
Locale("sv")
Locale("tr")
Locale("zh","CN")
Locale("zh","TW")
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}

### Dashboard Language

At the moment, the Luciq dashboard only supports English. Changing the SDK locale will not change the language of your dashboard.
{% endhint %}

## Overriding String Values

You can also override each string shown in the SDK individually using the following method.

{% tabs %}
{% tab title="Kotlin" %}
{% code overflow="wrap" %}

```kotlin
val placeHolder = LuciqCustomTextPlaceHolder()
placeHolder.set(LuciqCustomTextPlaceHolder.Key.REPORT_FEEDBACK, "Send Feedback")
Luciq.setCustomTextPlaceHolders(placeHolder)
```

{% endcode %}
{% endtab %}

{% tab title="Java" %}
{% code overflow="wrap" %}

```java
LuciqCustomTextPlaceHolder placeHolder = new LuciqCustomTextPlaceHolder();
placeHolder.set(LuciqCustomTextPlaceHolder.Key.REPORT_FEEDBACK, "Send Feedback");
Luciq.setCustomTextPlaceHolders(placeHolder);
```

{% endcode %}
{% endtab %}
{% endtabs %}

Here are the possible keys.

{% tabs %}
{% tab title="Android" %}

```java
SHAKE_HINT
SWIPE_HINT
INVALID_EMAIL_MESSAGE
INVALID_COMMENT_MESSAGE
INVOCATION_HEADER
REPORT_BUG
REPORT_FEEDBACK
REPORT_QUESTION
REPORT_BUG_DESCRIPTION
REPORT_FEEDBACK_DESCRIPTION
REPORT_QUESTION_DESCRIPTION
REQUEST_FEATURE_DESCRIPTION
EMAIL_FIELD_HINT
COMMENT_FIELD_HINT_FOR_BUG_REPORT
COMMENT_FIELD_HINT_FOR_FEEDBACK
ADD_VOICE_MESSAGE
ADD_IMAGE_FROM_GALLERY
ADD_EXTRA_SCREENSHOT
CONVERSATIONS_LIST_TITLE
AUDIO_RECORDING_PERMISSION_DENIED
CONVERSATION_TEXT_FIELD_HINT
BUG_REPORT_HEADER
FEEDBACK_REPORT_HEADER
VOICE_MESSAGE_PRESS_AND_HOLD_TO_RECORD
VOICE_MESSAGE_RELEASE_TO_ATTACH
REPORT_SUCCESSFULLY_SENT
BUG_REPORT_SUCCESSFULLY_SENT
FEEDBACK_REPORT_SUCCESSFULLY_SENT
QUESTION_REPORT_SUCCESSFULLY_SENT
PROACTIVE_BUG_REPORT_SUCCESSFULLY_SENT
SUCCESS_DIALOG_HEADER
ADD_VIDEO
VIDEO_PLAYER_TITLE
FEATURES_REQUEST
FEATURES_REQUEST_ADD_FEATURE_TOAST
FEATURES_REQUEST_ADD_FEATURE_THANKS_MESSAGE
SURVEYS_WELCOME_SCREEN_TITLE
SURVEYS_WELCOME_SCREEN_SUBTITLE
SURVEYS_WELCOME_SCREEN_BUTTON
LUCIQ_CUSTOM_SURVEY_THANKS_TITLE
LUCIQ_CUSTOM_SURVEY_THANKS_SUBTITLE
BETA_WELCOME_MESSAGE_WELCOME_STEP_TITLE
BETA_WELCOME_MESSAGE_WELCOME_STEP_CONTENT
BETA_WELCOME_MESSAGE_HOW_TO_REPORT_STEP_TITLE
BETA_WELCOME_MESSAGE_HOW_TO_REPORT_STEP_CONTENT
BETA_WELCOME_MESSAGE_FINISH_STEP_TITLE
BETA_WELCOME_MESSAGE_FINISH_STEP_CONTENT
LIVE_WELCOME_MESSAGE_TITLE
LIVE_WELCOME_MESSAGE_CONTENT
REPLIES_NOTIFICATION_DISMISS_BUTTON
REPLIES_NOTIFICATION_REPLY_BUTTON
CHATS_TEAM_STRING_NAME
REPORT_REPRO_STEPS_DISCLAIMER_BODY
REPRO_STEPS_PROGRESS_DIALOG_BODY
REPRO_STEPS_LIST_HEADER
REPRO_STEPS_LIST_DESCRIPTION
REPRO_STEPS_LIST_EMPTY_STATE_DESCRIPTION
REPORT_ADD_ATTACHMENT_HEADER
REPORT_DISCARD_DIALOG_TITLE
REPORT_DISCARD_DIALOG_BODY
REPORT_DISCARD_DIALOG_NEGATIVE_ACTION
REPORT_DISCARD_DIALOG_POSITIVE_ACTION
REPORT_REPRO_STEPS_DISCLAIMER_LINK
FRUSTRATING_EXPERIENCE_TITLE
COMMENT_FIELD_HINT_FOR_FRUSTRATING_EXPERIENCE
```

{% endtab %}
{% endtabs %}

### Confirmation Message per Report Type

By default, every report shows the same confirmation message once it's sent, which you can override with `REPORT_SUCCESSFULLY_SENT`. If you want different wording depending on what your user sent, set one of the following keys instead.

| Key                                      | Used for                  |
| ---------------------------------------- | ------------------------- |
| `BUG_REPORT_SUCCESSFULLY_SENT`           | Bug reports               |
| `FEEDBACK_REPORT_SUCCESSFULLY_SENT`      | Feedback                  |
| `QUESTION_REPORT_SUCCESSFULLY_SENT`      | Questions                 |
| `PROACTIVE_BUG_REPORT_SUCCESSFULLY_SENT` | Proactively reported bugs |

{% tabs %}
{% tab title="Kotlin" %}
{% code overflow="wrap" %}

```kotlin
val placeHolder = LuciqCustomTextPlaceHolder()
placeHolder.set(LuciqCustomTextPlaceHolder.Key.BUG_REPORT_SUCCESSFULLY_SENT, "Thanks, we'll look into the bug.")
placeHolder.set(LuciqCustomTextPlaceHolder.Key.FEEDBACK_REPORT_SUCCESSFULLY_SENT, "Thanks for the idea!")
Luciq.setCustomTextPlaceHolders(placeHolder)
```

{% endcode %}
{% endtab %}

{% tab title="Java" %}
{% code overflow="wrap" %}

```java
LuciqCustomTextPlaceHolder placeHolder = new LuciqCustomTextPlaceHolder();
placeHolder.set(LuciqCustomTextPlaceHolder.Key.BUG_REPORT_SUCCESSFULLY_SENT, "Thanks, we'll look into the bug.");
placeHolder.set(LuciqCustomTextPlaceHolder.Key.FEEDBACK_REPORT_SUCCESSFULLY_SENT, "Thanks for the idea!");
Luciq.setCustomTextPlaceHolders(placeHolder);
```

{% endcode %}
{% endtab %}
{% endtabs %}

Each report type resolves its confirmation message in this order: the key for that report type, then `REPORT_SUCCESSFULLY_SENT`, then the default localized string. Report types you don't customize keep falling back to `REPORT_SUCCESSFULLY_SENT`, so you only need to set the keys you want to change.

## Reading the Current String Values

You can read back the string values currently used by the SDK with `Luciq.getCustomTextPlaceHolders()`. It returns the `LuciqCustomTextPlaceHolder` you last passed to `Luciq.setCustomTextPlaceHolders()`, or `null` if you haven't set one yet.

The object you get back is the one the SDK reads from, so updating a single string doesn't require you to rebuild the whole set and set it again.

{% tabs %}
{% tab title="Kotlin" %}
{% code overflow="wrap" %}

```kotlin
val placeHolder = Luciq.getCustomTextPlaceHolders()
placeHolder?.set(LuciqCustomTextPlaceHolder.Key.BUG_REPORT_SUCCESSFULLY_SENT, "Thanks, we'll look into the bug.")
```

{% endcode %}
{% endtab %}

{% tab title="Java" %}
{% code overflow="wrap" %}

```java
LuciqCustomTextPlaceHolder placeHolder = Luciq.getCustomTextPlaceHolders();
if (placeHolder != null) {
    placeHolder.set(LuciqCustomTextPlaceHolder.Key.BUG_REPORT_SUCCESSFULLY_SENT, "Thanks, we'll look into the bug.");
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

To inspect every string you've overridden, call `getPlaceHoldersMap()` on the returned object.

{% tabs %}
{% tab title="Kotlin" %}
{% code overflow="wrap" %}

```kotlin
val values = Luciq.getCustomTextPlaceHolders()?.getPlaceHoldersMap()
```

{% endcode %}
{% endtab %}

{% tab title="Java" %}
{% code overflow="wrap" %}

```java
LuciqCustomTextPlaceHolder placeHolder = Luciq.getCustomTextPlaceHolders();
if (placeHolder != null) {
    Map<LuciqCustomTextPlaceHolder.Key, String> values = placeHolder.getPlaceHoldersMap();
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

{% hint style="info" %}
`getPlaceHoldersMap()` returns a copy, so changing that map has no effect on the strings shown in the SDK. Use `set()` to update a value.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.luciq.ai/android/set-up-luciq-for-android/sdk-customizations/sdk-locale.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
