{"id":38153,"date":"2024-05-14T15:41:25","date_gmt":"2024-05-14T10:11:25","guid":{"rendered":"https:\/\/www.inogic.com\/blog\/?p=38153"},"modified":"2024-05-15T09:37:27","modified_gmt":"2024-05-15T04:07:27","slug":"simplify-multilingual-support-using-dataverse-and-ai-translate-in-canvas-apps","status":"publish","type":"post","link":"https:\/\/www.inogic.com\/blog\/2024\/05\/simplify-multilingual-support-using-dataverse-and-ai-translate-in-canvas-apps\/","title":{"rendered":"Simplify \u2018Multilingual Support\u2019 using Dataverse and AI-Translate in Canvas Apps"},"content":{"rendered":"<p><img decoding=\"async\" class=\"size-full wp-image-38163 aligncenter\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse.png\" alt=\"Multilingual Support using Dataverse\" width=\"700\" height=\"400\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse.png 700w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-300x171.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-660x377.png 660w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/p>\n<p style=\"text-align: justify;\">As I work on an enterprise <a href=\"https:\/\/www.inogic.com\/services\/microsoft-power-platform\/microsoft-power-apps-canvas-app\/\" target=\"_blank\" rel=\"noopener\">canvas app<\/a> designed for multiple geographies, translation becomes a crucial aspect due to its support for multiple languages. Initially, I followed the method outlined in Microsoft documentation to create translation components and translate label texts for each language, which turned out to be time-consuming. The method is described aptly in <a href=\"https:\/\/learn.microsoft.com\/en-us\/power-apps\/maker\/canvas-apps\/multi-language-apps\" target=\"_blank\" rel=\"noopener\">Microsoft Docs<\/a>.<\/p>\n<p style=\"text-align: justify;\">As the project expanded and more components got added, the need for a quicker translation method became apparent. Through research, I discovered that Microsoft introduced Dataverse functions, which streamline this process significantly. By leveraging AI-translate capabilities, I could achieve translations in a fraction of the time and with increased efficiency.<\/p>\n<p style=\"text-align: justify;\">Below, I have outlined how I have implemented this approach:<\/p>\n<p><strong>1. Navigate to make.powerapps.com in your environment, create a solution, and then proceed to create a canvas app. Once the canvas app is created, click on it to open.<\/strong><\/p>\n<p><img decoding=\"async\" class=\"alignleft size-full wp-image-38154\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-1.png\" alt=\"Multilingual Support using Dataverse\" width=\"1920\" height=\"857\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-1.png 1920w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-1-300x134.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-1-1024x457.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-1-768x343.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-1-1536x686.png 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-1-660x295.png 660w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><\/p>\n<p style=\"text-align: justify;\"><strong>2. Add data source as Environment (Microsoft Environment).<\/strong><\/p>\n<p><img decoding=\"async\" class=\"alignleft size-full wp-image-38155\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-2.png\" alt=\"Multilingual Support using Dataverse\" width=\"1920\" height=\"880\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-2.png 1920w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-2-300x138.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-2-1024x469.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-2-768x352.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-2-1536x704.png 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-2-660x303.png 660w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><\/p>\n<p style=\"text-align: justify;\"><strong>3. Once it is added, the next step is to use AITranslate function.<\/strong><\/p>\n<p style=\"text-align: justify;\">Whenever a language is chosen from the dropdown menu, I update the content accordingly to the selected language.<\/p>\n<p style=\"text-align: justify;\">For that <strong>&#8220;OnSelect&#8221;<\/strong> of the <strong>LangaugeDropdown<\/strong>, I am using the below formula.<\/p>\n<p style=\"text-align: justify;\"><img decoding=\"async\" class=\"alignleft size-full wp-image-38156\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-3.png\" alt=\"Multilingual Support using Dataverse\" width=\"1904\" height=\"884\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-3.png 1904w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-3-300x139.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-3-1024x475.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-3-768x357.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-3-1536x713.png 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-3-660x306.png 660w\" sizes=\"(max-width: 1904px) 100vw, 1904px\" \/><\/p>\n<pre class=\"lang:css gutter:true start:1\">UpdateContext({ TranslatedText: Environment.AITranslate({Text: <em>TextToTranslate<\/em>.Text, Language:<em>LanguageDropdown<\/em>.Selected.Code}).TranslatedText });\r\n\r\n<em>TextToTranslate<\/em>.Text=TranslatedText;\r\n\r\n<\/pre>\n<p style=\"text-align: justify;\">The AITranslate function has two parameters:<\/p>\n<ol style=\"text-align: justify;\">\n<li>Text: The text to be translated<\/li>\n<li>TargetLanguage: The target language code in which the text is to be translated.<\/li>\n<\/ol>\n<p style=\"text-align: justify;\"><img decoding=\"async\" class=\"alignleft size-full wp-image-38157\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-4.png\" alt=\"Multilingual Support using Dataverse\" width=\"1843\" height=\"861\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-4.png 1843w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-4-300x140.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-4-1024x478.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-4-768x359.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-4-1536x718.png 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/05\/Multilingual-Support-using-Dataverse-4-660x308.png 660w\" sizes=\"(max-width: 1843px) 100vw, 1843px\" \/><\/p>\n<p style=\"text-align: justify;\">For more information about languages supported for the source and target language, see <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/ai-services\/translator\/language-support\" target=\"_blank\" rel=\"noopener\">Translator Language Support\u2014Translation<\/a><\/p>\n<p style=\"text-align: justify;\">In the given scenario, I&#8217;ve chosen &#8220;French&#8221; from the language dropdown, resulting in the translation of content into French, as illustrated in the screenshot below.<\/p>\n<h2 style=\"text-align: justify;\"><strong>Conclusion:<\/strong><\/h2>\n<p style=\"text-align: justify;\">As the demand for multilingual support in enterprise canvas apps grows, the need for efficient translation methods becomes increasingly evident. While the traditional approach outlined in Microsoft documentation provides a solid foundation, it can be time-consuming, especially as projects scale.<\/p>\n<p style=\"text-align: justify;\">Fortunately, with the introduction of Dataverse functions by Microsoft, the translation process has been streamlined significantly. Leveraging AI-translate capabilities has allowed for faster and more efficient translations, ensuring that the app remains accessible and user-friendly across various geographies and languages.<\/p>\n<p style=\"text-align: justify;\">By adopting these innovative tools and methodologies, developers can save time and resources while delivering high-quality multilingual experiences to users worldwide. This not only enhances user satisfaction but also strengthens the app&#8217;s competitive edge in the global market.<\/p>\n<p><a href=\"https:\/\/www.inogic.com\/services\/microsoft-power-platform\/microsoft-power-apps-canvas-app\/\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"aligncenter wp-image-37076 size-full\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2024\/01\/Canvas-App-1.gif\" alt=\"Canvas App\" width=\"800\" height=\"200\" \/><\/a><\/p>\n<pre class=\"lang:css gutter:true start:1\"><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>As I work on an enterprise canvas app designed for multiple geographies, translation becomes a crucial aspect due to its support for multiple languages. Initially, I followed the method outlined in Microsoft documentation to create translation components and translate label texts for each language, which turned out to be time-consuming. The method is described aptly\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.inogic.com\/blog\/2024\/05\/simplify-multilingual-support-using-dataverse-and-ai-translate-in-canvas-apps\/\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1954,2354],"tags":[2880],"class_list":["post-38153","post","type-post","status-publish","format-standard","hentry","category-canvas-apps","category-dataverse","tag-aitranslate"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/38153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/comments?post=38153"}],"version-history":[{"count":0,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/38153\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/media?parent=38153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/categories?post=38153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/tags?post=38153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}