> ## Documentation Index
> Fetch the complete documentation index at: https://doc.lucidworks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Localization Keys

export const LwTemplate = ({title = "Key questions to get you started", icon = "sparkles", cta = "Powered by Agent Studio", linkHref = "https://lucidworks.com/demo/?utm_source=docs&utm_medium=referral&utm_campaign=docs_cta_ai"}) => {
  const [isLoaded, setIsLoaded] = useState(false);
  useEffect(() => {
    const timer = setTimeout(() => {
      setIsLoaded(true);
    }, 500);
    return () => clearTimeout(timer);
  }, []);
  return <div className="lw-template-container">
      <Card title={title} icon={icon}>
        {isLoaded && <span dangerouslySetInnerHTML={{
    __html: `<lw-template id="a029c1a9-28be-427e-b0e1-5d918920246a"></lw-template
            >`
  }} />}
        <Link href={linkHref} className="agent-studio-link text-left text-gray-600 gap-2 dark:text-gray-400 text-sm font-medium flex flex-row items-center hover:text-primary dark:hover:text-primary-light group-hover:text-primary group-hover:dark:text-primary-light">Powered by Lucidworks Agent Studio</Link>
      </Card>
    </div>;
};

[localhost link]: http://localhost:3000/docs/4/app-studio/concepts/configuration/localization-keys

[mintlify link]: https://doc.lucidworks.com/docs/4/app-studio/concepts/configuration/localization-keys

[old doc.lw link]: https://doc.lucidworks.com/app-studio/4.2/996

This table identifies key names for UI labels and gives the default English labels.

Information about enabling translations:

<Accordion title="Localize an App">
  You can localize the UI labels in an app in multiple languages of your choice.

  Appkit obtains the correct labels for a language by making calls to an Appkit translation service. The service provides a label in the chosen language, with a fallback to English if no translation exists for the label in the chosen language.

  <LwTemplate />

  ## Loading translations

  You can use the new `<translations:localize>` JSP tag to load a set of UI label translations into an app. The tag syntax is:

  ```xml theme={"dark"}
  <translations:localize dictionary="dictionary" locale="locale" />
  ```

  * **`dictionary`.** Name of the resource bundle from which to load translations. This is also the first part of the name of each property file that contains translations.

    Default: `translations`
  * **`locale`.** Locale

    Default: `en` (English)

  The `dictionary` and `locale` are used to find the file as follows:

  1. In `src/main/resources`, the Appkit translation service looks for a resource bundle named `dictionary`, for example, `translations`.
  2. Within the resource bundle, the translation service looks for property files named `{resource}`, for example, for the files `translations_en.properties` and `translations_fr.properties`.

  ## Enabling translations

  1. Find label strings that need to be translated in the UI and identify the [key names for the labels](/docs/4/app-studio/concepts/configuration/localization-keys).
  2. Create translation property files and add them under the `src/main/resources` directory. For example, for a dictionary called `translations` add `translations_en.properties` and `translations_fr.properties`.\
     Edit the property files and include the label keys and translations. For example:
     In `translations_en.properties`:
     ```properties theme={"dark"}
     # translations_en.properties
     ...
     components.pagination.next = Next
     components.pagination.previous = Previous
     ...
     ```
     In `translations_fr.properties`:
     ```properties theme={"dark"}
     # translations_fr.properties
     ...
     components.pagination.next = Suivant
     components.pagination.previous = Précédent
     ...
     ```
     <Note>   Some translations include variables. For example, `components.response-statistics.showing` is `Showing {first} - {last} of {total}` in English. Translations should retain the variables, though their order might differ. Labels can use `<em>` tags for emphasis, for example, `More results like <em>{result}</em>`.</Note>
  3. Add the following dependency to your app’s `pom.xml`:
     ```xml theme={"dark"}
     <!-- Twigkit translations -->
     <dependency>
         <groupId>twigkit</groupId>
         <artifactId>twigkit.translations</artifactId>
         <version>${project.parent.version}</version>
     </dependency>
     ```
  4. Add this `taglib` directive at the top of your app’s `index.jsp`:
     ```java theme={"dark"}
     <%@ taglib prefix="translations" uri="/twigkit/translations" %>
     ```
  5. Add the Appkit `<translations:localize>` JSP tag inside the `<head>` element of your app’s `index.jsp`:
     ```java theme={"dark"}
     <translations:localize locale="${param.locale}" />
     ```
  6. Add this rule to the `url-rules.xml` file:
     ```xml theme={"dark"}
     <!-- Language specific pages -->
     <rule>
         <from>^/lang/(.*)/</from>
         <to last="true">/index.jsp?locale=$1</to>
     </rule>
     ```
       <Note>
         You can modify other URL rules to suit your application logic. The `<translations:localize>` JSP tag works the same.
       </Note>
  7. Restart your app.
  8. Verify that the translations are present by visiting pages in the app that should be in different languages.
</Accordion>

| Key | English Label | Additional Context |
| - | - | - |
| `components.search-box.placeholder` | Search…​ | Search input placeholder |
| `components.search-box.button-label` | Search | Search submit button label |
| `components.search-box.saved` | My Saved Searches | |
| `components.search-box.bookmark` | My bookmarks | |
| `components.spelling-suggestions.did-you-mean` | Did you mean: `{correction}`. | As in, "Did you mean *spelling-corrected query*?" |
| `components.spelling-suggestions.auto-correct` | Showing results for `{correction}`. | This is displayed above a list of results of a spelling-corrected query. |
| `components.spelling-suggestions.no-results` | No results found for `{query}`. | |
| `components.response-statistics.showing` | Showing `{first} - {last} of {total}` | |
| `components.pagination.next` | Next | |
| `components.pagination.previous` | Previous | |
| `components.breadcrumbs.clear-all` | Clear All | |
| `components.facet.show-more` | Show more | |
| `components.facet.show-less` | Show less | |
| `components.no-results.title` | Sorry: there are no results that match your search criteria. | |
| `components.no-results.subtitle` | If you have checked your spelling: try using more general keywords. | |
| `components.response-statistics.showing-all` | Showing All `{total}` | |
| `collaborate.bookmark.tooltip` | Bookmark this? | As in, "Would you like to bookmark this item?" |
| `collaborate.bookmark.active` | You have bookmarked this | As in, this is already bookmarked. |
| `collaborate.bookmark.single` | `{count}` person has bookmarked this | As in the singular: "1 person has bookmarked this." |
| `collaborate.bookmark.plural` | `{count}` people have bookmarked this | As in the plural: "4 people have bookmarked this." |
| `collaborate.bookmarkList.empty-text` | You do not have any bookmarks yet | |
| `collaborate.comment.prompt` | Please enter a comment | As in a prompt to add a comment. |
| `collaborate.comment.post` | Post | The comment submit button |
| `collaborate.comment.placeholder` | Leave a new note…​ | The text area placeholder |
| `collaborate.comment.delete` | Delete | The delete comment button |
| `collaborate.comment.more` | Show more comments | |
| `collaborate.comment.less` | Show fewer | As in, show fewer comments. |
| `collaborate.comment.delete-message` | Are you sure you want to remove this comment? | |
| `collaborate.like.tooltip` | Do you like this? | As in, "Do you like this item/result?" |
| `collaborate.like.active` | You have liked this | |
| `collaborate.like.singular` | `{count}` person has liked this | As in the singular: "1 person has liked this." |
| `collaborate.like.plural` | `{count}` people have liked this | As in the plural "2 people have liked this." |
| `collaborate.saved.button` | Save | The save query button label |
| `collaborate.saved.empty-text` | You do not have any saved queries yet | |
| `collaborate.saved.error` | Please enter a name so this query can be saved | Error message indicating a name is required |
| `collaborate.saved.error-duplicate` | A saved query with that name already exists, please use a different name | Error message flagging duplicate name |
| `collaborate.saved.error-network` | Unable to save query, please try again | General error message |
| `collaborate.saved.placeholder` | Search name | Guidance phrase in search box about searching names of saved searches |
| `collaborate.topic.button` | Save | The save topic button label |
| `collaborate.topic.prompt` | Please enter a topic name | |
| `collaborate.topic.name` | Type a name for the new topic… | The text input placeholder |
| `collaborate.topic.description` | Description… | Input placeholder for the topic description text |
| `collaborate.topic.empty` | You do not have any topics yet | |
| `components.breadcrumbs.exclude` | not `{breadcrumb}` | Showing the results that do not include items of this breadcrumb type |
| `components.facet.apply-filters` | Apply Filters | |
| `components.facet.no-results` | No results found | |
| `components.facet.search` | Search…​ | |
| `content.form.success` | Form posted successfully | |
| `content.form.error` | Error!`{status}-{statusText}` | |
| `content.form.required` | This field is required | |
| `content.form.submit` | Submit | |
| `content.form.required-textarea` | This field is required | |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.