Microsoft Teams App localisation does not work anymore - localization

We are trying to build a multilingual chatbot which supports English (en-us) as well as German (de-de). We had been using it on Microsoft Teams without any problems until around mid-June 2020. Thereafter, we noticed that the localization didn't work properly anymore. We also noticed that this was around the same time that Teams introduced manifest version 1.7. The following occurrence is observed:
If the Teams admin uploads the app while their MS Teams client language is en-us, all custom applications ignore the 'de-de' localization info, and all information, as well as commands, are displayed in English only, even if the client language for the users is German.
The exact opposite will happen if the language of the admin was de-de when they uploaded the application. All information from the bot will be in German, whereas the default language (English) will be ignored.
As a sample, I am sharing this screenshot.
Here, you can see that although the client language is German, the suggestion commands appear in English. In fact, the bot name and description are also in English. In fact, we observed that the same behaviour is also exhibited for the official manifest template from Microsoft.
Here are our manifest files:
manifest.json
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.7/MicrosoftTeams.schema.json",
"manifestVersion": "1.7",
"version": "1.0.0",
"id": "00000000-0000-0000-0000-00000000000",
"packageName": "com.sample.sample.sample.dev.bot3",
"developer": {
"name": "Sample Inc.",
"websiteUrl": "https:/sample.z6.web.core.windows.net",
"privacyUrl": "https://sample.z6.web.core.windows.net/privacy.html",
"termsOfUseUrl": "https://sample.z6.web.core.windows.net/tou.html"
},
"localizationInfo": {
"defaultLanguageTag": "en-us",
"additionalLanguages": [
{
"languageTag": "de-de",
"file": "de-de.json"
}
]
},
"icons": {
"color": "color.png",
"outline": "outline.png"
},
"name": {
"short": "Manifest Test EN",
"full": "Manifest Test EN Bot"
},
"description": {
"short": "Manifest Test EN",
"full": "Manifest Test EN Bot"
},
"accentColor": "#40497E",
"bots": [
{
"botId": "00000000-0000-0000-0000-00000000000",
"scopes": [
"personal"
],
"supportsFiles": true,
"isNotificationOnly": false,
"commandLists": [
{
"scopes": [
"personal"
],
"commands": [
{
"title": "Personal Command 1",
"description": "Description of Personal Command 1"
},
{
"title": "Personal Command N",
"description": "Description of Personal Command N"
}
]
}
]
}
],
"staticTabs": [
],
"permissions": [
"identity",
"messageTeamMembers"
],
"validDomains": [
"sample.z6.web.core.windows.net",
"token.botframework.com"
]
}
Localization file de-de.json
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.7/MicrosoftTeams.Localization.schema.json",
"name.short": "Manifest Test DE",
"name.full": "Manifest Test DE Bot",
"description.short": "Manifest Test DE",
"description.full": "Manifest Test DE Bot",
"bots[0].commandLists[0].commands[0].title": "Persönlicher Befehl 1",
"bots[0].commandLists[0].commands[0].description": "Beschreibung des persönlichen Befehls 1",
"bots[0].commandLists[0].commands[1].title": "Beschreibung des persönlichen Befehls N",
"bots[0].commandLists[0].commands[1].description": "Das ist DE1"
}

We are experiencing the same issue here only we have been able to determine that the language the app is shown to the user is the language the app is installed with.
So in your case the app was propably installed when your Teams language was set to German, if you would now switch to another language the app would still be in German. We have tried this for multiple apps, multiple users and multiple tenants. The language used is always the one from the client the app is installed from, not the language the current user is using.
So for example when a App is installed with a client that is for example in German, the app will be configured in German for this user and all other users of the tenant the app is installed for. If the user that installed the app switched language (fe: English) to another supported language the language stays in German (even when the client is restarted). The same goes for other users, if a user at the moment of installation for example was using the application in English then the app will also be in German for that user and not English since it was installed by a user who had German as it's default language.

Could you please try updating the version to 1.2 in the manifest?
here is the result after updating the version

Related

Google Workspace Marketplace addon present in Gmail Web and Android but missing in Gmail iOS

We have developed a Google Workspace Addon which uses Alternate Runtimes. It works fine on the WEB and ANDROID platforms, but not on iOS. No addon icon is present at the bottom when opening an email in the Gmail iOS app.
To clarify, the addon is entirely missing from the account, so there might be an interpretation issue with the manifest file. No logging is being created in Cloud Console's Logs Explorer, so no details there.
Opened a support ticket with Google which escalated it to the engineering team and they said:
"We received an update today and we have been able to reproduce this scenario on our end and it seems the problem is related to the add on and not the way it was deployed to Marketplace.
In this case since the issue is related to the Add on deployment we will not be able to further investigate on our end but if you believe it is related to a bug on our end you can submit a bug by accessing the following link https://developers.google.com/gmail/api/support#bug or you can also visit Stack Overflow as we have hundreds of developers and Google engineers that can provide you some insight about the issue that you are experiencing."
What is wrong with this deployment? I thought the Workspace addons were unified across all platforms. Manifest file below.
{
"oauthScopes": ["https://www.googleapis.com/auth/gmail.send", "https://www.googleapis.com/auth/gmail.addons.execute", "https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/userinfo.profile", "https://www.googleapis.com/auth/script.locale", "https://www.googleapis.com/auth/gmail.addons.current.message.readonly", "https://www.googleapis.com/auth/gmail.addons.current.action.compose", "https://www.googleapis.com/auth/gmail.addons.current.message.metadata"],
"addOns": {
"common": {
"name": "***",
"logoUrl": "***",
"useLocaleFromApp": true,
"universalActions": [{
"label": "My Emails",
"openLink": "***"
}, {
"label": "Frequently Asked Questions",
"openLink": "***"
}, {
"label": "Mobile Help",
"openLink": "***"
}, {
"label": "Contact us",
"openLink": "***"
}, {
"label": "My Account",
"openLink": "***"
}]
},
"gmail": {
"contextualTriggers": [{
"unconditional": {
},
"onTriggerFunction": "redacted"
}],
"composeTrigger": {
"selectActions": [{
"text": "redacted",
"runFunction": "redacted"
}],
"draftAccess": "METADATA"
},
"homepageTrigger": {
"runFunction": "redacted"
}
}
}
}
For anyone else down the rabbit hole I've been down in the last few hours.
The Google Workspace instructions on Set up an Apple push certificate might have helped.
However I still couldn't get the add-on to appear deploying as an alternative runtime from Node JS. Instead I refactored the UI in App Scripts and just fetched data that required more work from a server hosted on Cloud Run.

Can't add Teams bot to a channel

This was originally a support ticket to Microsoft. However they told they don't do dev support without paying for it. They directed me to Stack Overflow, so here goes nothing.
I'm developing a Bot for Microsoft Teams. I have registered my bot with Azure Active Directory, & Bot Framework. I have uploaded my app to Team, without any errors. My bot is currently able to send direct messages to Teams users. However, when I try to add my bot to a Teams channel, I get unhelpful errors.
I click the dropdown under my app in the Apps tab:
I click "Add to a Team", then select a channel:
After clicking the button "Set up a bot", I get the following error message:
I have checked & rechecked my webApplicationInfo.id & webApplicationInfo.applicationPermissions numerous times, and I'm at a loss for what could be amiss. I don't see how either of these fields could be wrong given, I can authenticate with both the Microsoft Graph & Bot Framework apis using these values. Here's a slightly redacted version of my Teams app manifest:
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.8/MicrosoftTeams.schema.json",
"manifestVersion": "1.8",
"version": "1.0.15",
"id": "<TEAMS_APP_ID>",
"packageName": "ambition",
"developer": {
"name": "Ambition",
"websiteUrl": "https://ambition.com",
"privacyUrl": "https://ambition.com/privacy",
"termsOfUseUrl": "https://ambition.com/pages/terms"
},
"icons": {
"color": "logo_opaque_192x192.png",
"outline": "logo_transparent_32x32.png"
},
"name": {
"short": "Ambition",
"full": ""
},
"description": {
"short": "Motivate & Recognize",
"full": "Ask Marketing"
},
"accentColor": "#FFFFFF",
"permissions": [
"identity",
"messageTeamMembers"
],
"validDomains": [
"ambition.com"
],
"bots": [
{
"botId": "<AZURE_ACTIVE_DIRECTORY_CLIENT_ID>",
"scopes": [
"team",
"personal",
"groupchat"
],
"isNotificationOnly": true
}
],
"webApplicationInfo": {
"id": "<AZURE_ACTIVE_DIRECTORY_CLIENT_ID>",
"resource": "https://ambition.com",
"applicationPermissions": [
"Channel.ReadBasic.All",
"ChannelMessage.Send",
"Group.Read.All",
"Notifications.ReadWrite.CreatedByApp",
"Team.ReadBasic.All",
"User.Read",
"User.ReadBasic.All"
]
}
}
The webApplicationInfo section is really only for two things: Tab SSO, and Resource-Specific Consent. Are you trying to implement either one of those? If not, removing it is definitely the best option, as you've noted in your answer.
In addition, I see that the resource values you've put in there are Microsoft Graph Scopes, whereas the applicationPermissions section is expecting a different list of options (they look kind of similar, but their not the same thing). See here for more: https://learn.microsoft.com/en-gb/microsoftteams/platform/graph-api/rsc/resource-specific-consent#resource-specific-permissions
Don't really know why this works, but I compared my app manifest to the one generated by going through this tutorial: https://learn.microsoft.com/en-us/microsoftteams/platform/build-your-first-app/build-bot.
Removing the webApplicationInfo property from my manifest fixed the issue. Don't really understand why it was causing a problem in the first place.
https://learn.microsoft.com/en-us/microsoftteams/platform/resources/schema/manifest-schema#webapplicationinfo

some words display as '?'' when using french language in MS Teams app localization(manifest 1.5)

Description: Teams display wrong values in app static tab and 'what can i do' input command
For example,value 'élément' display '�l�ment',it seems that Teams can not recognize the char 'é'
Manifest Version: 1.5
Language: fr-fr
Manifest.json
{
//hide bot other message
"localizationInfo": {
"defaultLanguageTag": "en",
"additionalLanguages": [
{
"languageTag": "fr-fr",
"file": "fr-fr.json"
}
]
}
}
fr-fr.json
{
"$schema": "https://developer.microsoft.com/fr-fr/json-schemas/teams/v1.5/MicrosoftTeams.Localization.schema.json",
"name.short": "Test",
"name.full": "TestFullName",
"description.short": "short description example",
"description.full": "full description example",
"staticTabs[0].name": "Nouveautés",
"bots[0].commandLists[0].commands[0].title": "Restaurer élément",
"bots[0].commandLists[0].commands[0].description": "Restaurer élément for test",
}
This issue has been solved when I check the installer bot package.It seems that the App Studio can not recognize some words like 'é'. So close this issue!
#Lin's Master, for all the French regions, you need to set your "languageTag" = "fr". Please follow this documentation.

Why aren’t my timestamps displayed in users local timezone

The following JSON is sent, as the “attachments” argument, in a call to the chat.postMessage API method. The message is posted to an individual user (not a shared channel) and per documentation I was expecting the timestamps to be displayed in the target user’s local timezone. Instead they are always displayed in UTC, so am I doing something wrong?
[
{
"mrkdwn_in": [
"text"
],
"title": "Important alert",
"footer": "MyCodeThing",
"fallback": "Important alert summary",
"text": "A thing with a date just happened <!date^1475148495^{date_short_pretty} at {time}|Sep 29 at 09:28 PM UTC>\n\nUsers Name from *Company & Associates*",
"fields": [
{
"short": false,
"title": "",
"value": ""
},
{
"short": false,
"title": "Device",
"value": "Using Chrome on Other."
}
],
"footer_icon": "https://anysite.domain.com/static/img/image_only_16.png",
"color": "#f54b0a"
}
]
It looks to me as though it completely ignores the timezone in the preferences, and it shows the time in the current timezone for the PC it is running on. Which, in my case, is UTC. I can change the timezone preference in slack to whatever I want, but it comes up UTC on the computer where I have this problem.
I can use the same account, open the same chat history on another PC, and it shows it in the correct time according to that PC's OS.
This is in the app, not the browser version. I don't know the behavior of the browser version.

Forcing default l10n language in Firefox Extension

I already read answers about placing a
default.properties
file or a
package.properties
, and even that the browser already detects the unique language as default, but it is not working.
I have my browser configured in french, and my partner had it in english. We are just implementing the extension in english, but when I run the extension in the french browser, it doesn not load anything.
I also read about having some properties in the package.json like:
"locales": {
"en": {
"name": "Open Web",
"description": "Come on!"
},
"fr": {
"name": "L'Open Web",
"description": "Allez!"
}
},
"default_locale": "en"
But didn't work.
I'm using last stable version of Firefox 42.0b1. Any idea?
You need to have a default en-US.properties file. That's the default if the user language is not supported by your extension.

Resources