web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Power Pages / Trying to Import Trans...
Power Pages
Suggested Answer

Trying to Import Translations in Solution for Dataverse Choice Labels.

(1) ShareShare
ReportReport
Posted on by 153
So I working on a Power Pages Project. 
I have enabled the language in the environment , also added it to the website. 
Next step , I exported the translations from the Solution header , got two files
1. [Content_Types].xml
2. CrmTranslations.xml
 
After that I added some one-word translations to the CrmTranslations.xml file and zipped both of them back and tried importing. 
 
Got this error - No response received: timeout of 300000ms exceeded (ECONNABORTED
 
 
 
I have the same question (0)
  • Suggested answer
    Haque Profile Picture
    3,724 on at
    Hi @P1999,
     
    This is probably a problem with the import process. Seems like the file structure/content not being exactly as expected by Power Pages.
    Normally those files (1. [Content_Types].xml 2. CrmTranslations.xml)  live inside exported translated package - at the root of the zip.
    Please  ensure these files are at the root level of the zip archive, not inside a folder when re-zipping.
     
    Sometimes browser/network causes timeouts. Can you please try a different browser (also, clear cache or try incognito).
     
     
     
     

    I am sure some clues I tried to give. If these clues help to resolve the issue brought you by here, please don't forget to check the box Does this answer your question? At the same time, I am pretty sure you have liked the response!
  • Suggested answer
    11manish Profile Picture
    3,489 on at
    The quickest way to isolate the problem is:
    • Import the unmodified exported ZIP.
    • If successful, make one small translation change and test again.
    • If the timeout still occurs with a minimally modified file, capture the Network trace (HAR file) and the browser console logs, then raise a Microsoft support ticket. A server-side timeout during translation import is generally not expected and Microsoft can inspect the backend logs to determine whether it's caused by the translation package or an issue with the environment
  • P1999 Profile Picture
    153 on at
    @Haque  , I zipped them directly , instead of putting them in a folder. Changed Browser but the error remains the same. 
  • Suggested answer
    Haque Profile Picture
    3,724 on at
    Hi @P1999,
     
    Can you please do one thing (not sure how big is your transaltion file is), sometimes big files or too many changes might cause longer import times and then timeouts. Please try importing a minimal change first (for example just one word), just wanted to verify the process works?
     
     
  • P1999 Profile Picture
    153 on at
     
     
    Imported an unmodified exported ZIP
    - It got imported successfully. 
     
    After this I tried a few times , by adding only 1 word translation i.e. for Dataverse Choices.  
    Sometimes I got this error - No response received: timeout of 300000ms exceeded (ECONNABORTED
    Sometimes it got imported successfully. 
    I think its a network issue. 
     
    But now after importing successfully , I published the solution customizations. 
    But still in the Power Pages Website , the choice values don't appear translated. I am using AJAX calls for fetching choices and populating the dropdown. 
  • Suggested answer
    Haque Profile Picture
    3,724 on at
    Hi @P1999,

    Two things to consider-
     
    1. Can you please make sure Choice label Translations are cached or not? Power Pages and Dataverse cache choice label translations aggressively. After importing translations and publishing, you may need to clear browser cache or wait some time for the cache to refresh. For digging a bit deepr let's explore this.
     
    2. Let's check when we fetch choice options via ajax, probably the labels returned on base language unless the request context explicitly specified (user langauge or locale). In this case, ajax call might include corrrect Prefer header or query params to request localized labels.
    For example, For clarity, we can use OData-MaxVersion and OData-version headers and include Prefer: odata.include-annotations="Micosoft.Dynamics.CRM.localizedlabels" to get lcoalized labels.
     
    By the way, if it is not that restricted, can you please share the AJAX request header setup - how this looks like?
     
     

    I am sure some clues I tried to give. If these clues help to resolve the issue brought you by here, please don't forget to check the box Does this answer your question? At the same time, I am pretty sure you have liked the response!
  • P1999 Profile Picture
    153 on at
     
    I am populating the dropdowns in my website this way. This is the api call. 
     
    
    await safeAjax({
                  url: 
    https://customer-portal-dev.powerappsportals.com//_api/gun_articleses?$select=gun_articlestatus,
                  type: "GET",
                  contentType: "application/json"
              });
     
     
    I am fetching the entire status column from the entity , then creating an array without allowing duplicate values in it. After which I populate a dropdown with the items. Full code is below. 
      
     
    async function loadDropdownFromDataverse({table,column,dropdownId,filter = ""}) {
          try {
              let apiURL = `${siteURL}/_api/${table}?$select=${column}`;
              if(filter){
                  apiURL += `&$filter=${filter}`;
              }
              const data = await safeAjax({
                  url: apiURL,
                  type: "GET",
                  contentType: "application/json"
              });
    
              const dropdownMenu = document.querySelector(`#${dropdownId}`);
              dropdownMenu.innerHTML = "";
              const valueMap = new Map();
    
              if(data && data.value){
    
                data.value.forEach(record => {
                    const displayValue =
                        record[`${column}@OData.Community.Display.V1.FormattedValue`] ||
                        record[column];
                    const rawValue = record[column];
                    if(displayValue && !valueMap.has(displayValue)){
                        valueMap.set(displayValue, rawValue);
                    }
                })
              }
              valueMap.forEach((rawValue, displayValue) => {
    
                      let li = document.createElement("li");
    
                      let link = document.createElement("a");
                      link.className = "dropdown-item";
                      link.href = "#";
                      link.textContent = displayValue;
                      link.dataset.value = rawValue;
                      li.appendChild(link);
                      dropdownMenu.appendChild(li);
    
              });
    
          } catch(error) {
    
              console.error(`Error loading dropdown for ${column}`, error);
    
          }
    
      }
     
     
    But I have checked the Response and I don't get any translated text after querying the table.
    I cleared the cache using  '_services/about'  , browser cache and the purge cache option available in Admin Center. But still no translation in the response. 
     
     
     

     
  • Suggested answer
    Haque Profile Picture
    3,724 on at
    Hi @P1999,
     
    Can you please try ajax call with headers like below? I mentioned in my third post about the "Prefer" header value.
     
    await safeAjax({
      url: "https://customer-portal-dev.powerappsportals.com/_api/gun_articleses?$select=gun_articlestatus",
      type: "GET",
      contentType: "application/json",
      headers: {
        "OData-MaxVersion": "4.0",
        "OData-Version": "4.0",
        "Prefer": 'odata.include-annotations="Microsoft.Dynamics.CRM.localizedlabels"',
        "Accept-Language": "en-US" // or dynamically set based on user locale
      }
    });
    
     
     

    I am sure some clues I tried to give. If these clues help to resolve the issue brought you by here, please don't forget to check the box Does this answer your question? At the same time, I am pretty sure you have liked the response!
  • P1999 Profile Picture
    153 on at
     
    I tried this , 
     
    async function loadDropdownFromDataverse({table,column,dropdownId,filter = ""}) {
          try {
              let apiURL = `${siteURL}/_api/${table}?$select=${column}`;
              if(filter){
                  apiURL += `&$filter=${filter}`;
              }
              window.portalLanguage = "{{ website.selected_language.code }}";
              const data = await safeAjax({
                  url: apiURL,
                  type: "GET",
                  contentType: "application/json",
                  headers: {
                    "OData-MaxVersion": "4.0",
                    "OData-Version": "4.0",
                    "Prefer": 'odata.include-annotations="Microsoft.Dynamics.CRM.localizedlabels"',
                    "Accept-Language": window.portalLanguage
                  }
              });
    
              const dropdownMenu = document.querySelector(`#${dropdownId}`);
              dropdownMenu.innerHTML = "";
              const valueMap = new Map();
    
              if(data && data.value){
    
                data.value.forEach(record => {
                    const displayValue =
                        record[`${column}@OData.Community.Display.V1.FormattedValue`] ||
                        record[column];
                    const rawValue = record[column];
                    if(displayValue && !valueMap.has(displayValue)){
                        valueMap.set(displayValue, rawValue);
                    }
                })
              }
              valueMap.forEach((rawValue, displayValue) => {
    
                      let li = document.createElement("li");
    
                      let link = document.createElement("a");
                      link.className = "dropdown-item";
                      link.href = "#";
                      link.textContent = displayValue;
                      link.dataset.value = rawValue;
                      li.appendChild(link);
                      dropdownMenu.appendChild(li);
    
              });
    
          } catch(error) {
    
              console.error(`Error loading dropdown for ${column}`, error);
    
          }
    
      }
    I checked the request through Inspect > Network tab : 
     
    fetch("https://customer-portal-dev.powerappsportals.com/_api/gun_articleses?$select=gun_articlestatus", {
      "headers": {
        "__requestverificationtoken": "*********************",
        "accept": "*/*",
        "accept-language": "de-DE",
        "cache-control": "no-cache",
        "content-type": "application/json",
        "odata-maxversion": "4.0",
        "odata-version": "4.0",
        "pragma": "no-cache",
        "prefer": "odata.include-annotations=\"Microsoft.Dynamics.CRM.localizedlabels\"",
        "priority": "u=1, i",
        "request-id": "************************",
        "sec-ch-ua": "\"Not;A=Brand\";v=\"8\", \"Chromium\";v=\"150\", \"Microsoft Edge\";v=\"150\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"Windows\"",
        "sec-fetch-dest": "empty",
        "sec-fetch-mode": "cors",
        "sec-fetch-site": "same-origin",
        "traceparent": "************************************",
        "x-requested-with": "XMLHttpRequest"
      },
      "referrer": "https://customer-portal-dev.powerappsportals.com/de-DE/page/",
      "body": null,
      "method": "GET",
      "mode": "cors",
      "credentials": "include"
    });
     
    In the response the object I recieved is - 
     
    {
          "@odata.etag": "W/\"1656075947\"",
          "gun_articlesid": "86d042fc-7f5d-f111-a826-000d3a4b827d",
          "gun_articlestatus@OData.Community.Display.V1.FormattedValue": "Published",
          "gun_articlestatus": 221540000
    }
     
    In the CRmTranslations.xml , There exists the German translation for 'Published' in the gun_articleses entity. 
     
  • Suggested answer
    Haque Profile Picture
    3,724 on at
     
    Hi @P1999,
     
    At least numeric values are seen. I am suspecting something different in the Get api call. Currently your call is:
     
    https://customer-portal-dev.powerappsportals.com/_api/gun_articleses?$select=gun_articlestatus"
    Probably this call (above) is fetching records, not metadata! Hence, localized labels may not be included or correct.
     
    I am sure gun_articles is an entity records - the choice field values returned are typically the raw integer values, and the formatted labels may not always reflect localized translations unless the API request is made against the attribute metadata.
     
    Let's do a bit differently - let's query on EntityDefinitions metadata endpoint like below for the attribute option set (OptionSet):
     
    GET [Organization URI]/api/data/v9.2/EntityDefinitions(LogicalName='gun_articles')/
    Attributes(LogicalName='gun_articlestatus')?$select=LogicalName&$expand=OptionSet
    
    Keeping everyting same in the call syntax, once the all is succeed, let's fill dropdown from the returned OptionSet.Options array, using the localised lable.
     
     
    We have a solved thread here. The entire discussion will help you. Seems like the Fubar's last post's video is more close.
     
     
     
     

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Season of Sharing Community Challenge Winners!

Congratulations to our community stars!

Kudos to our 2025 Community Spotlight Honorees

Expanding mentorship, skilling, and AI innovation

Congratulations to the June Top 10 Community Leaders!

These are the community rock stars!

Leaderboard > Power Pages

#1
Valantis Profile Picture

Valantis 41

#2
sannavajjala87 Profile Picture

sannavajjala87 28 Super User 2026 Season 1

#3
11manish Profile Picture

11manish 26

Last 30 days Overall leaderboard