Why isn't my Microsoft Teams app localization working?

Francesco Pirani 0 Reputation points
2025-01-27T10:40:26.3733333+00:00

Hello, i'm trying to localize my copilot message extension plugin using the official documentation but it doesn't seem to work, here's the manifest and the localized json file:

Manifest:

  "$schema": "https://developer.microsoft.com/json-schemas/teams/vDevPreview/MicrosoftTeams.schema.json",
  "manifestVersion": "devPreview",
  "version": "1.0.1",
  "id": "${{TEAMS_APP_ID}}",
  "developer": {
    "mpnId": "6193471",
    "name": "Lorem Ipsum Developer",
    "websiteUrl": "https://loremipsum.example.com",
    "privacyUrl": "https://loremipsum.example.com/privacy",
    "termsOfUseUrl": "https://loremipsum.example.com/terms"
  },
  "localizationInfo": {
    "defaultLanguageTag": "en-us",
    "additionalLanguages": [
      {
        "languageTag": "it-it",
        "file": "localization/it-it.json"
      }
    ]
  },
  "name": {
    "short": "Lorem Ipsum Short",
    "full": "Lorem Ipsum Full Name"
  },
  "description": {
    "short": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
    "full": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet."
  },
  "icons": {
    "outline": "outline.png",
    "color": "color.png"
  },
  "accentColor": "#F8E5F8",
  "configurableTabs": [],
  "staticTabs": [],
  "bots": [],
  "composeExtensions": [
    {
      "botId": "${{BOT_ID}}",
      "commands": [
        {
          "id": "search",
          "type": "query",
          "context": [ "compose", "commandBox" ],
          "title": "Lorem Ipsum Search Command",
          "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
          "initialRun": true,
          "fetchTask": false,
          "samplePrompts": [
            { "text": "Lorem ipsum sample prompt #1?" },
            { "text": "Lorem ipsum sample prompt #2?" },
            { "text": "Lorem ipsum sample prompt #3?" },
            { "text": "Lorem ipsum sample prompt #4?" },
            { "text": "Lorem ipsum sample prompt #5?" }
          ],
          "parameters": [
            {
              "name": "title",
              "inputType": "text",
              "title": "Lorem Title",
              "description": "Lorem ipsum parameter description."
            },
            {
              "name": "duedate",
              "inputType": "text",
              "title": "Lorem Due Date",
              "description": "Lorem ipsum parameter description."
            },
            {
              "name": "status",
              "inputType": "text",
              "title": "Lorem Status",
              "description": "Lorem ipsum parameter description."
            }
          ]
        },
        {
          "id": "remember",
          "type": "query",
          "context": [ "compose", "commandBox" ],
          "title": "Lorem Ipsum Remember Command",
          "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
          "initialRun": false,
          "fetchTask": false,
          "samplePrompts": [
            { "text": "Lorem ipsum remember #1" },
            { "text": "Lorem ipsum remember #2" },
            { "text": "Lorem ipsum remember #3" },
            { "text": "Lorem ipsum remember #4" }
          ],
          "parameters": [
            {
              "name": "title",
              "inputType": "text",
              "title": "Lorem Title",
              "description": "Lorem ipsum parameter description."
            },
            {
              "name": "duedate",
              "inputType": "text",
              "title": "Lorem Due Date",
              "description": "Lorem ipsum parameter description."
            }
          ]
        },
        {
          "id": "signout",
          "type": "action",
          "context": [ "compose", "commandBox" ],
          "title": "Lorem Ipsum Sign Out",
          "description": "Lorem ipsum sign out description.",
          "initialRun": false,
          "fetchTask": true,
          "parameters": [
            {
              "name": "param",
              "title": "Lorem Param",
              "description": "Lorem ipsum parameter."
            }
          ]
        }
      ]
    }
  ],
  "permissions": [
    "identity",
    "messageTeamMembers"
  ],
  "validDomains": [
    "token.botframework.com",
    "${{BOT_DOMAIN}}"
  ],
  "webApplicationInfo": {
    "id": "${{BOT_ID}}",
    "resource": "api://${{BOT_DOMAIN}}/botid-${{BOT_ID}}"
  }
}

Localizated json file:

{
  "$schema": "https://developer.microsoft.com/json-schemas/teams/vDevPreview/MicrosoftTeams.Localization.schema.json",
  "name.short": 
  "name.full": 
  "description.short": 
  "description.full": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi."
}

This is the way the official documentation is doing it, but the localized string doesn't appear if i set the teams client in Italian, it still remains in english (default language) no matter what. Changing the manifest versions also doesn't help at all, the issue still remains. The only thing that works is that the plugin recognize the additional supported language, but it doesn't apply the localizated string in the it-it file.

Thank you in advance for your time.

Microsoft Teams Development
Microsoft Teams Development
Microsoft Teams: A Microsoft customizable chat-based workspace.Development: The process of researching, productizing, and refining new or existing technologies.
3,544 questions
{count} votes

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.