dotCMS Internationalization API

Language management and localization

Operations 14

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /api/v1/system/i18n/{lang}/{rsrc} Get a system i18n resource bundle · List 7 #
Ask an LLM
“Where do I load the translated UI strings for a system resource in a given language?”
“Can I fetch a whole i18n resource file for one locale?”
Tell an agent
Get system i18n resource {rsrc} in language {lang}.
Load the {lang} translations for UI resource {rsrc}.
PUT /api/v2/languages/{languageId} Update a language · Update language #
Ask an LLM
“Can I change the country code on a language I already added?”
“How do I rename an existing language's display name?”
Tell an agent
Update language {languageId} to language code {languageCode} and country code {countryCode}.
Rename existing language {languageId} to {language} for country {country}.
DELETE /api/v2/languages/{languageId} Delete a language · Delete language #
Ask an LLM
“How do I remove a language I no longer publish content in?”
“Can I delete a language by its ID?”
Tell an agent destructive · confirm first
Delete language {languageId}.
Remove language {languageId} from the system.
GET /api/v2/languages/id/{languageid} Get a language by numeric ID · Get 8 #
Ask an LLM
“Which language does a given language ID refer to?”
“Can I look up a language's code and country from its ID?”
Tell an agent
Get language with ID {languageid}.
Show the code and country of language ID {languageid}.
GET /api/v2/languages/{language}/keys Get all message keys for a language · Get all messages #
Ask an LLM
“Can I pull every translation key and message for one language?”
“What UI message keys exist for a particular locale?”
Tell an agent
Get all message keys for language {language}.
Export every translated message in {language}.
GET /api/v2/languages/_getdefault Get the default language · Get default language #
Ask an LLM
“What is the default content language on this dotCMS instance?”
“Can I check which language is marked as the default?”
Tell an agent
Get the default language.
Tell me which language is set as the system default.
GET /api/v2/languages/{languageTag} Look up a language by locale tag · Get from language tag #
Ask an LLM
“Can I find a configured language using a tag like en-US?”
“Is there a strict mode that only matches the exact language tag?”
Tell an agent
Find the language for tag {languageTag}.
Look up language tag {languageTag} with strict matching {strict}.
POST /api/v2/languages/{languageTag} Add a language from a locale tag · Save from language tag #
Ask an LLM
“Can I add a new language just by giving its locale tag?”
“What is the quickest way to create a language like fr-CA?”
Tell an agent
Create a language from tag {languageTag}.
Add language {languageTag} using strict tag parsing {strict}.
GET /api/v2/languages/iso List ISO languages and countries · Get iso languages and countries #
Ask an LLM
“Which ISO language and country codes can I choose from when adding a language?”
“Can I get the reference list of ISO languages and countries?”
Tell an agent
List the ISO languages and countries.
Show the ISO codes available for building a new language.
POST /api/v2/languages/i18n Get selected i18n messages (v2) · Get messages #
Ask an LLM
“Can I fetch just a few translated message keys for a language and country with the v2 languages API?”
“Which v2 call returns i18n strings for specific keys?”
Tell an agent
Get the v2 i18n messages {messagesKey} for language {language} and country {country}.
Translate keys {messagesKey} into {language} using the v2 languages endpoint.
GET /api/v2/languages/variables List language variables · Get variables #
Ask an LLM
“What language variables are defined across my languages?”
“Can I include language variables that have no value in a given language?”
Tell an agent
List all language variables.
List language variables with renderNulls set to {renderNulls}.
GET /api/v2/languages List configured languages (v2) · List 10 #
Ask an LLM
“Which languages are configured, and how many language variables does each have?”
“Can I list the languages a specific piece of content is available in?”
Tell an agent
List all configured languages from the v2 API.
List the languages for content inode {contentInode}.
POST /api/v2/languages Create a language · Save language #
Ask an LLM
“How do I add a new language with its own language and country codes?”
“What fields do I need to create a language, such as ISO code and country?”
Tell an agent
Create a language with code {languageCode} and country code {countryCode}.
Add language {language} for {country} with ISO code {isoCode}.
PUT /api/v2/languages/{language}/_makedefault Make a language the default · Make default #
Ask an LLM
“How do I change the system default language?”
“Can I move assets over to the new default language when switching?”
Tell an agent
Make language {language} the default.
Set {language} as default and run the asset transfer job: {fireTransferAssetsJob}.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/dotcms:dotcms-internationalization-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

dotcms-internationalization-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: dotCMS REST Internationalization API
  version: '3'
  description: Language management and localization
servers:
- url: /
  description: dotCMS Server
tags:
- name: Internationalization
  description: Language management and localization
paths:
  /api/v1/system/i18n/{lang}/{rsrc}:
    get:
      tags:
      - Internationalization
      operationId: list_7
      parameters:
      - name: lang
        in: path
        required: true
        schema:
          pattern: '[\w]{2,3}(?:-?[\w]{2})?'
          type: string
      - name: rsrc
        in: path
        required: true
        schema:
          pattern: .*
          type: string
      responses:
        default:
          description: default response
          content:
            application/json: {}
      summary: List 7
      x-summary-source: derived
  /api/v2/languages/{languageId}:
    put:
      tags:
      - Internationalization
      operationId: updateLanguage
      parameters:
      - name: languageId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/LanguageForm'
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: Update language
      x-summary-source: derived
    delete:
      tags:
      - Internationalization
      operationId: deleteLanguage
      parameters:
      - name: languageId
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: Delete language
      x-summary-source: derived
  /api/v2/languages/id/{languageid}:
    get:
      tags:
      - Internationalization
      operationId: get_8
      parameters:
      - name: languageid
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: Get 8
      x-summary-source: derived
  /api/v2/languages/{language}/keys:
    get:
      tags:
      - Internationalization
      operationId: getAllMessages
      parameters:
      - name: language
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: Get all messages
      x-summary-source: derived
  /api/v2/languages/_getdefault:
    get:
      tags:
      - Internationalization
      operationId: getDefaultLanguage
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityViewLanguage'
            application/javascript:
              schema:
                $ref: '#/components/schemas/ResponseEntityViewLanguage'
      summary: Get default language
      x-summary-source: derived
  /api/v2/languages/{languageTag}:
    get:
      tags:
      - Internationalization
      operationId: getFromLanguageTag
      parameters:
      - name: languageTag
        in: path
        required: true
        schema:
          type: string
      - name: strict
        in: query
        schema:
          type: boolean
          default: false
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: Get from language tag
      x-summary-source: derived
    post:
      tags:
      - Internationalization
      operationId: saveFromLanguageTag
      parameters:
      - name: languageTag
        in: path
        required: true
        schema:
          type: string
      - name: strict
        in: query
        schema:
          type: boolean
          default: false
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: Save from language tag
      x-summary-source: derived
  /api/v2/languages/iso:
    get:
      tags:
      - Internationalization
      operationId: getIsoLanguagesAndCountries
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: Get iso languages and countries
      x-summary-source: derived
  /api/v2/languages/i18n:
    post:
      tags:
      - Internationalization
      operationId: getMessages
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/I18NForm'
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: Get messages
      x-summary-source: derived
  /api/v2/languages/variables:
    get:
      tags:
      - Internationalization
      operationId: getVariables
      parameters:
      - name: renderNulls
        in: query
        schema:
          type: boolean
          default: true
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: Get variables
      x-summary-source: derived
  /api/v2/languages:
    get:
      tags:
      - Internationalization
      operationId: list_10
      parameters:
      - name: contentInode
        in: query
        schema:
          type: string
      - name: countLangVars
        in: query
        schema:
          type: boolean
      responses:
        default:
          description: default response
          content:
            application/json: {}
      summary: List 10
      x-summary-source: derived
    post:
      tags:
      - Internationalization
      operationId: saveLanguage
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/LanguageForm'
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: Save language
      x-summary-source: derived
  /api/v2/languages/{language}/_makedefault:
    put:
      tags:
      - Internationalization
      operationId: makeDefault
      parameters:
      - name: language
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/MakeDefaultLangForm'
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: Make default
      x-summary-source: derived
components:
  schemas:
    MessageEntity:
      type: object
      properties:
        message:
          type: string
    LanguageForm:
      type: object
      properties:
        languageCode:
          type: string
        countryCode:
          type: string
        language:
          type: string
        country:
          type: string
        isoCode:
          type: string
    MakeDefaultLangForm:
      type: object
      properties:
        fireTransferAssetsJob:
          type: boolean
    Language:
      type: object
      properties:
        id:
          type: integer
          format: int64
        languageCode:
          type: string
        countryCode:
          type: string
        language:
          type: string
        country:
          type: string
        isoCode:
          type: string
    Pagination:
      type: object
      properties:
        currentPage:
          type: integer
          format: int32
        perPage:
          type: integer
          format: int32
        totalEntries:
          type: integer
          format: int64
    ResponseEntityViewLanguage:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorEntity'
        entity:
          $ref: '#/components/schemas/Language'
        messages:
          type: array
          items:
            $ref: '#/components/schemas/MessageEntity'
        i18nMessagesMap:
          type: object
          additionalProperties:
            type: string
        permissions:
          type: array
          items:
            type: string
        pagination:
          $ref: '#/components/schemas/Pagination'
    ErrorEntity:
      type: object
      properties:
        errorCode:
          type: string
        message:
          type: string
        fieldName:
          type: string
    I18NForm:
      type: object
      properties:
        language:
          type: string
        country:
          type: string
        messagesKey:
          type: array
          items:
            type: string