<?xml version="1.0" encoding="UTF-8" ?><!-- generator=Zoho Sites --><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><atom:link href="https://blog.icefire.ca/blogs/sharepoint-tips/feed" rel="self" type="application/rss+xml"/><title>The PointFire Blog - The PointFire Blog for Multilingual SharePoint , SharePoint Tips</title><description>The PointFire Blog - The PointFire Blog for Multilingual SharePoint , SharePoint Tips</description><link>https://blog.icefire.ca/blogs/sharepoint-tips</link><lastBuildDate>Wed, 16 Jul 2025 10:13:13 -0700</lastBuildDate><generator>http://zoho.com/sites/</generator><item><title><![CDATA[Multilingual proofing of SharePoint pages]]></title><link>https://blog.icefire.ca/blogs/post/multilingual-proofing-of-sharepoint-pages</link><description><![CDATA[<img align="left" hspace="5" src="https://blog.icefire.ca/PointFire-blog-SharePoint-multilingual-proofing-4.png"/>Microsoft was rolled out Multilingual proofing for SharePoint. We take a deep dive into its capabilities and limitations.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_coBEfdG2TIeY6mTKiMQRAw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_fx6aJOOnRSuL-mrH132s7A" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"> [data-element-id="elm_fx6aJOOnRSuL-mrH132s7A"].zprow{ border-radius:1px; } </style><div data-element-id="elm_D95NntH7Ss-qkSXyLcvZdQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_qOJ77SI_QR-_NcPLx40UzQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_qOJ77SI_QR-_NcPLx40UzQ"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p style="text-align:left;">We saw in April 2022, when SharePoint introduced the <a href="/Category-blog#/blogs/post/sharepoint-microsoft-editor-how-to-overcome-language-issues" title="Microsoft editor to the SharePoint page editing" rel="">Microsoft edit</a><a href="/Category-blog#/blogs/post/sharepoint-microsoft-editor-how-to-overcome-language-issues" title="Microsoft editor to the SharePoint page editing" rel="">or to the SharePoint page editing</a> experience, that it was not able to detect the language of the text, so it would often fill the screen with red squiggles when there was a different language.&nbsp; Luckily, by popular demand a few weeks later they rolled out a way to turn it off.&nbsp; But as of a few weeks ago, language detection is here.&nbsp; Multilingual proofing for SharePoint editing has been rolled out.</p><p style="text-align:left;"><span style="font-size:16px;"><br></span></p><p style="text-align:left;"><span style="font-size:16px;">Now it is possible to have proofing in several languages at once, as you see in this picture</span></p><p style="text-align:left;"><span style="font-size:16px;"><br></span></p></div></div></div>
</div><div data-element-id="elm_Ei5Po4Up05Ar7NMALt5Cvg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_Ei5Po4Up05Ar7NMALt5Cvg"] .zpimage-container figure img { width: 796px !important ; height: 400px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_Ei5Po4Up05Ar7NMALt5Cvg"] .zpimage-container figure img { width:796px ; height:400px ; } } @media (max-width: 767px) { [data-element-id="elm_Ei5Po4Up05Ar7NMALt5Cvg"] .zpimage-container figure img { width:796px ; height:400px ; } } [data-element-id="elm_Ei5Po4Up05Ar7NMALt5Cvg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/PointFire-blog-SharePoint-multilingual-proofing-1.png" width="796" height="400" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_vVFCt60eIgW03fPlnBWGaQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_vVFCt60eIgW03fPlnBWGaQ"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">As you can see it correctly picked up typos in the English text, in the French text and in the German text, but it does not do the Portuguese text, it put squiggles under each of those words.</span></p><p><span style="font-size:16px;">&nbsp;</span></p><p><span style="font-size:16px;">How did I configure it to get those results?&nbsp; First let’s look at the announcement in the admin centre’s Message Centre.</span></p><p><span style="font-size:16px;"><br></span></p></div></div></div>
</div><div data-element-id="elm_H5BAPpGEqxTdqsFkq5P4ow" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_H5BAPpGEqxTdqsFkq5P4ow"] .zpimage-container figure img { width: 560px !important ; height: 502px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_H5BAPpGEqxTdqsFkq5P4ow"] .zpimage-container figure img { width:560px ; height:502px ; } } @media (max-width: 767px) { [data-element-id="elm_H5BAPpGEqxTdqsFkq5P4ow"] .zpimage-container figure img { width:560px ; height:502px ; } } [data-element-id="elm_H5BAPpGEqxTdqsFkq5P4ow"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/PointFire-blog-SharePoint-multilingual-proofing-2.png" width="560" height="502" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_BgtYRLCN-iEbwOMhVJfP-Q" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_BgtYRLCN-iEbwOMhVJfP-Q"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p><span><br></span></p><p><span style="font-size:16px;">It’s not much to go on, but further down it also says this: “The Microsoft Editor Spellchecker, now integrated in SharePoint pages, will now be able to proof text in multiple languages. In addition to supporting the Page language, Editor now proofs in the M365 language and the Edge browser language. Any word in any of these three languages, will be spell checked appropriately. ”</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;"></span></p><div style="color:inherit;"><p><span style="font-size:16px;">What are these three languages?&nbsp; It refers to the “Page language”.&nbsp; The page language usually means the base language of the site, but if you have the multilingual page publishing feature activated, it can also mean the language of the copied page that is created for you to translate.&nbsp; It also refers to “the M365 language”, and it is a bit mistaken about that.&nbsp; What it actually means is the Office 365 <u>profile</u> language, which is not necessarily the same as the Microsoft 365 <u>account</u> language.&nbsp; The other one is the “Edge browser language”.&nbsp; Of course it doesn’t have to be Edge, all browsers have the ability to list the languages that you have configured the browser for.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">Let’s test the feature.&nbsp; First, I turned off Chrome’s own spell checking and confirmed which language the browser was configured for.&nbsp; Edge and other browsers all have similar settings.</span></p><p><span><br></span></p></div></div></div></div>
</div><div data-element-id="elm_dw7QP2fT0mRoHP0Iy6vwFA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_dw7QP2fT0mRoHP0Iy6vwFA"] .zpimage-container figure img { width: 1064px !important ; height: 616px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_dw7QP2fT0mRoHP0Iy6vwFA"] .zpimage-container figure img { width:1064px ; height:616px ; } } @media (max-width: 767px) { [data-element-id="elm_dw7QP2fT0mRoHP0Iy6vwFA"] .zpimage-container figure img { width:1064px ; height:616px ; } } [data-element-id="elm_dw7QP2fT0mRoHP0Iy6vwFA"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/PointFire-blog-SharePoint-multilingual-proofing-3.png" width="1064" height="616" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_03UjbvshxZhJTZQM_bIifA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_03UjbvshxZhJTZQM_bIifA"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">In this case I have configured Chrome for three versions of English, one version of French, and one version of German, so three languages altogether excluding the variants.&nbsp; I also turned off the spell checking.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">Next, I turned off the Microsoft Editor browser add-in, whose settings would supersede the simpler version of Microsoft Editor that is built into SharePoint. Lastly, I turned the Editor feature back on, which I had turned off when that setting had become available, by pressing on “Page details” and turning on the “Use Editor” setting.</span></p><p><span style="font-size:16px;"><br></span></p></div></div></div>
</div><div data-element-id="elm_AgNvG7G9vO85hgLuga0EnQ" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_AgNvG7G9vO85hgLuga0EnQ"] .zpimage-container figure img { width: 1048px !important ; height: 478px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_AgNvG7G9vO85hgLuga0EnQ"] .zpimage-container figure img { width:1048px ; height:478px ; } } @media (max-width: 767px) { [data-element-id="elm_AgNvG7G9vO85hgLuga0EnQ"] .zpimage-container figure img { width:1048px ; height:478px ; } } [data-element-id="elm_AgNvG7G9vO85hgLuga0EnQ"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/PointFire-blog-SharePoint-multilingual-proofing-4.png" width="1048" height="478" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_XzqO6lPFBi6D4oZVRw2zrg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_XzqO6lPFBi6D4oZVRw2zrg"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">Now it finds typos in English, French and German, but not in Portuguese.</span></p><p><span style="font-size:16px;">Next, I added some Spanish text and then changed my Office 365 <u>profile</u> language to Spanish but not my Microsoft 365 <u>account</u> language.&nbsp;&nbsp;</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">It then happily spell-checked the Spanish text.</span></p><p><span style="font-size:16px;"><br></span></p></div></div></div>
</div><div data-element-id="elm_FAy-LdQl5Aecy3sfgtylJQ" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_FAy-LdQl5Aecy3sfgtylJQ"] .zpimage-container figure img { width: 560px !important ; height: 404px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_FAy-LdQl5Aecy3sfgtylJQ"] .zpimage-container figure img { width:560px ; height:404px ; } } @media (max-width: 767px) { [data-element-id="elm_FAy-LdQl5Aecy3sfgtylJQ"] .zpimage-container figure img { width:560px ; height:404px ; } } [data-element-id="elm_FAy-LdQl5Aecy3sfgtylJQ"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/PointFire-blog-SharePoint-multilingual-proofing-5.png" width="560" height="404" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_3VtgyQrm5dA3B1BVwHRFpQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_3VtgyQrm5dA3B1BVwHRFpQ"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">Maybe the combination of Spanish and Portuguese isn’t the greatest example given that some words appear in both languages, but the perfectly correct Portuguese word “revisão” is not recognized.&nbsp; When we click on the word to find spelling suggestions, it suggests words in English, Spanish, French, and German, notice the two-letter language codes, but not in Portuguese.</span></p><p><span style="font-size:16px;"><br></span></p></div></div>
</div><div data-element-id="elm_HqWmh8sDlneu4uzVUMPM2w" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_HqWmh8sDlneu4uzVUMPM2w"] .zpimage-container figure img { width: 322px !important ; height: 448px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_HqWmh8sDlneu4uzVUMPM2w"] .zpimage-container figure img { width:322px ; height:448px ; } } @media (max-width: 767px) { [data-element-id="elm_HqWmh8sDlneu4uzVUMPM2w"] .zpimage-container figure img { width:322px ; height:448px ; } } [data-element-id="elm_HqWmh8sDlneu4uzVUMPM2w"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/PointFire-blog-SharePoint-multilingual-proofing-6.png" width="322" height="448" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_bml4_MkDRGOrISwvtOs82A" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_bml4_MkDRGOrISwvtOs82A"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:16px;">One thing that is interesting about this is that, based on the announcement, on similarities with the Microsoft Editor browser extension, and on sneaking a peek at the code, it theoretically should only support up to three languages.&nbsp; In actual fact, it supports as many languages as I tried.&nbsp; I did notice that when you have more than one language, it stops checking for grammar or syntax as well as it does with a single language.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">This is a significant improvement in the editing experience for people with multilingual sites, so if you had turned off the Editor feature, now is the time to turn it back on.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">I hope you found this article helpful. Feel free to leave me your questions in the comments.</span></p></div></div></div>
</div><div data-element-id="elm_3s9lOkkDfmU0L3Y6tyRMuA" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_3s9lOkkDfmU0L3Y6tyRMuA"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_07zHL4OqD0xQ2Lx7eZQyGQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_07zHL4OqD0xQ2Lx7eZQyGQ"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="font-weight:700;">You might also like</span></p><p><span style="font-weight:700;"><br></span></p><p><span style="font-weight:400;"><a href="https://sitebuilder-751082542.zohositescontent.com/blogs/post/localizing-group-by-headers-for-choice-columns-using-json-view-formatting" rel="">Localizing &quot;group by&quot; headers for choice columns using JSON view formatting in SharePoint Online</a></span></p><p><br></p><p><a href="https://sitebuilder-751082542.zohositescontent.com/blogs/post/language-dependent-json-column-formatting-this-time-it-s-the-uilcid-token" title="Language-dependent JSON column formatting, this time it's the IIlcid token" rel="">Language-dependent JSON column formatting, this time it's the IIlcid token</a></p></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Mon, 27 Mar 2023 11:54:56 -0400</pubDate></item><item><title><![CDATA[Localizing "group by" headers for choice columns using JSON view formatting in SharePoint Online]]></title><link>https://blog.icefire.ca/blogs/post/localizing-group-by-headers-for-choice-columns-using-json-view-formatting</link><description><![CDATA[<img align="left" hspace="5" src="https://blog.icefire.ca/SharePoint-group-by-list.png"/>In previous posts, I’ve shown how Choice column values can be localized using a variety of techniques in JSON column formatting, most notably by using the “@UIlcid” token. Can these techniques also be used when doing “group by” these choice columns? Let's find out]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_8Hi9fVIMRPy3Dbr7T70kFQ" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_trb5cnV-TK-bwzsxa1zMhQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_cgjCOgfjRdSH7sSKTMofcg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_N2N7e5Q4QWS0SPMHavxDzQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_N2N7e5Q4QWS0SPMHavxDzQ"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p style="text-align:left;"><a href="https://blog.icefire.ca/blogs/post/language-dependent-json-column-formatting-this-time-it-s-the-uilcid-token" title="In previous posts" rel="">I</a><a href="https://blog.icefire.ca/blogs/post/language-dependent-json-column-formatting-this-time-it-s-the-uilcid-token" title="In previous posts" rel="">n previous posts</a>, I’ve shown how Choice column values can be localized using a variety of techniques in JSON column formatting, most notably by using the “@UIlcid” token.</p><p style="text-align:left;"><span style="font-size:16px;"><br></span></p><p style="text-align:left;"><span style="font-size:16px;">Can these techniques also be used when doing “group by” these choice columns?&nbsp; The short answer is no. &nbsp;But fear not, a design decision in SharePoint that normally breaks localization can be used to enable localization.</span></p><p style="text-align:left;"><span style="font-size:16px;"><br></span></p><p style="text-align:left;"><span style="font-size:16px;">Let’s have a look at what happens when we see a list that is “grouped by” a choice column.&nbsp; Here it is in English, grouped by “progress”:</span></p><p style="text-align:left;"><span style="font-size:16px;"><br></span></p></div></div></div>
</div><div data-element-id="elm_xgFvJtzhINNQQGDYZ0HLIQ" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_xgFvJtzhINNQQGDYZ0HLIQ"] .zpimage-container figure img { width: 939px !important ; height: 274px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_xgFvJtzhINNQQGDYZ0HLIQ"] .zpimage-container figure img { width:939px ; height:274px ; } } @media (max-width: 767px) { [data-element-id="elm_xgFvJtzhINNQQGDYZ0HLIQ"] .zpimage-container figure img { width:939px ; height:274px ; } } [data-element-id="elm_xgFvJtzhINNQQGDYZ0HLIQ"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-group-by-list-1.png" width="939" height="274" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_gB8t60afrizuegagyVWwNw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_gB8t60afrizuegagyVWwNw"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><br></p><p>We have applied the technique from the <a href="https://blog.icefire.ca/blogs/post/language-dependent-json-column-formatting-this-time-it-s-the-uilcid-token" target="_blank" rel="">Language-dependent JSON column formatting</a> blog post so that the choice column values are localized into French and German.&nbsp; However as we can see below, this does not extend to the “group by” headers, those remain in English.&nbsp; The column value, in blue, is localized, but the same value in the header is not.</p><p><br></p></div></div>
</div><div data-element-id="elm_HTbeLRkTlKbZGCyikmquaQ" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_HTbeLRkTlKbZGCyikmquaQ"] .zpimage-container figure img { width: 930px !important ; height: 274px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_HTbeLRkTlKbZGCyikmquaQ"] .zpimage-container figure img { width:930px ; height:274px ; } } @media (max-width: 767px) { [data-element-id="elm_HTbeLRkTlKbZGCyikmquaQ"] .zpimage-container figure img { width:930px ; height:274px ; } } [data-element-id="elm_HTbeLRkTlKbZGCyikmquaQ"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-group-by-list-2.png" width="930" height="274" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_v1VTCDF-2BjGCou1WWf4JQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_v1VTCDF-2BjGCou1WWf4JQ"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">The display of values in the columns can be customized by <u>column</u> formatting JSON, but display of values in the group-by headers must be customized by <u>view</u> formatting JSON.&nbsp; Let’s have a look at how we can change that formatting.&nbsp; In the View menu, we can find “Format current view” in the bottom.&nbsp; In this case we are going to format the AllItems (default) list view.</span></p><p><span style="font-size:16px;"><br></span></p></div></div>
</div><div data-element-id="elm_EtrHntJXQjsva6_ZgJxznQ" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_EtrHntJXQjsva6_ZgJxznQ"] .zpimage-container figure img { width: 392px ; height: 500.00px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_EtrHntJXQjsva6_ZgJxznQ"] .zpimage-container figure img { width:392px ; height:500.00px ; } } @media (max-width: 767px) { [data-element-id="elm_EtrHntJXQjsva6_ZgJxznQ"] .zpimage-container figure img { width:392px ; height:500.00px ; } } [data-element-id="elm_EtrHntJXQjsva6_ZgJxznQ"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-medium zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-all-item-column-list-view.png" width="392" height="500.00" loading="lazy" size="medium" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_WjlFIifaH4mZT_ZZh8H6mg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_WjlFIifaH4mZT_ZZh8H6mg"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;">By default it offers the graphical “design mode”.</span></p></div></div>
</div><div data-element-id="elm_rsFaz4wvHvffqKbNFQ0ZHA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_rsFaz4wvHvffqKbNFQ0ZHA"] .zpimage-container figure img { width: 624px ; height: 760.00px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_rsFaz4wvHvffqKbNFQ0ZHA"] .zpimage-container figure img { width:500px ; height:608.97px ; } } @media (max-width: 767px) { [data-element-id="elm_rsFaz4wvHvffqKbNFQ0ZHA"] .zpimage-container figure img { width:500px ; height:608.97px ; } } [data-element-id="elm_rsFaz4wvHvffqKbNFQ0ZHA"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-large zpimage-tablet-fallback-large zpimage-mobile-fallback-large hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-List-Format-view.png" width="500" height="608.97" loading="lazy" size="large" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_aHtGg_JUoG80LF7XPUEC-Q" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_aHtGg_JUoG80LF7XPUEC-Q"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">Let’s select “Advanced mode” to see the JSON.&nbsp; It is initially empty other than the schema declaration, so it uses some default formatting.</span></p><p><span style="font-size:16px;"><br></span></p></div></div>
</div><div data-element-id="elm_4V-igUMwiOJko8r83KxGXQ" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_4V-igUMwiOJko8r83KxGXQ"] .zpimage-container figure img { width: 500px ; height: 610.58px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_4V-igUMwiOJko8r83KxGXQ"] .zpimage-container figure img { width:500px ; height:610.58px ; } } @media (max-width: 767px) { [data-element-id="elm_4V-igUMwiOJko8r83KxGXQ"] .zpimage-container figure img { width:500px ; height:610.58px ; } } [data-element-id="elm_4V-igUMwiOJko8r83KxGXQ"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-medium zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-list-format-view-2.png" width="500" height="610.58" loading="lazy" size="medium" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_TdEEhbc7o53tz3OCqvDUxA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_TdEEhbc7o53tz3OCqvDUxA"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">There are relatively few examples or information on what to do next, but we will add a minimalist formatting skeleton.&nbsp; The syntax is described here <a href="https://learn.microsoft.com/en-us/sharepoint/dev/declarative-customization/view-group-formatting">https://learn.microsoft.com/en-us/sharepoint/dev/declarative-customization/view-group-formatting</a></span></p><p><span style="font-size:16px;">The “group by” headers are within “headerFormatter” within “groupProps”.</span></p><p><span style="font-size:16px;"><br></span></p></div></div></div>
</div><div data-element-id="elm_wPIvwZraWJdJCP5ZN-k-hA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_wPIvwZraWJdJCP5ZN-k-hA"] .zpimage-container figure img { width: 624px !important ; height: 204px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_wPIvwZraWJdJCP5ZN-k-hA"] .zpimage-container figure img { width:624px ; height:204px ; } } @media (max-width: 767px) { [data-element-id="elm_wPIvwZraWJdJCP5ZN-k-hA"] .zpimage-container figure img { width:624px ; height:204px ; } } [data-element-id="elm_wPIvwZraWJdJCP5ZN-k-hA"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-list-header-formatter.png" width="624" height="204" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_ibmSA-gbwnjsJyi9ckY_1w" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_ibmSA-gbwnjsJyi9ckY_1w"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">The syntax for “headerFormatter” is identical to that of column format, with the important caveat that a lot of it, despite correct syntax, does not work.&nbsp; Yes, there is a “txtContent”, but things like “@currentField” and “[$FieldName]” are not defined and most special strings, most notably &quot;@UIlcid&quot;, are not available.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">That makes determining the language and formatting the value depending on the language difficult, because all of the techniques discussed in previous posts are not available.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">What is available is &quot;@group&quot;, which has three properties,&nbsp; &quot;fieldData&quot;, &quot;columnDisplayName&quot;, and &quot;count&quot;.&nbsp; Normally the use of column display names rather than internal names is a mistake.&nbsp; If you rely on it then things will break badly (like they do for list form JSON formatting) when you change the language, but in this case, that unfortunate design decision can be used to our advantage.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">In this case we have already localized the column names by entering the translations in the MUI (Multilingual User Interface)&nbsp; That means that the “Progress” column has a column display name of “Progress” in English, “Progrès” in French, and “Fortschritt” in German.&nbsp; The value of “@group.columnDisplayName” therefore tells us what is the current UI language, as long as the column header has been localized and its name is different in different languages.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">If we display the value of “@group.columnDisplayName” and of “@group.fieldData” in English we get this:</span></p><p><span style="font-size:16px;"><br></span></p></div></div></div>
</div><div data-element-id="elm_Bfj2YhXZNSw2U-G4islnNQ" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_Bfj2YhXZNSw2U-G4islnNQ"] .zpimage-container figure img { width: 624px !important ; height: 214px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_Bfj2YhXZNSw2U-G4islnNQ"] .zpimage-container figure img { width:624px ; height:214px ; } } @media (max-width: 767px) { [data-element-id="elm_Bfj2YhXZNSw2U-G4islnNQ"] .zpimage-container figure img { width:624px ; height:214px ; } } [data-element-id="elm_Bfj2YhXZNSw2U-G4islnNQ"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-List-View-Format-3.png" width="624" height="214" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_ED9PeQNDb-pmhox_wCEzVg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_ED9PeQNDb-pmhox_wCEzVg"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">We see “Progress=New application” But in French we get “Progrès=New application”</span></p><p><span style="font-size:16px;"><br></span></p></div></div>
</div><div data-element-id="elm_7w2z_fECcm5xtqHpoD3kWA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_7w2z_fECcm5xtqHpoD3kWA"] .zpimage-container figure img { width: 624px !important ; height: 220px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_7w2z_fECcm5xtqHpoD3kWA"] .zpimage-container figure img { width:624px ; height:220px ; } } @media (max-width: 767px) { [data-element-id="elm_7w2z_fECcm5xtqHpoD3kWA"] .zpimage-container figure img { width:624px ; height:220px ; } } [data-element-id="elm_7w2z_fECcm5xtqHpoD3kWA"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-List-View-Format-3-french.png" width="624" height="220" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_DupHYuOueDSwXatq9KZQCQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_DupHYuOueDSwXatq9KZQCQ"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">The “columnDisplayName” is localized by the MUI, but the column value is not localized by our column formatting.&nbsp; We can put this all together to take advantage of the display names.&nbsp; In the nested ifs below, we check the value of “@group.columnDisplayName” to determine the current language, then the current value, and then display the appropriate translation of that value.</span></p><p><span style="font-size:16px;"><br></span></p></div></div>
</div><div data-element-id="elm_JTDW_BnYzKN1MhT3o1ltZw" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_JTDW_BnYzKN1MhT3o1ltZw"] .zpimage-container figure img { width: 520px !important ; height: 424px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_JTDW_BnYzKN1MhT3o1ltZw"] .zpimage-container figure img { width:520px ; height:424px ; } } @media (max-width: 767px) { [data-element-id="elm_JTDW_BnYzKN1MhT3o1ltZw"] .zpimage-container figure img { width:520px ; height:424px ; } } [data-element-id="elm_JTDW_BnYzKN1MhT3o1ltZw"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-list-groupcolumndisplayname.png" width="520" height="424" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_O1jFViZbg1drbickBDRcBw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_O1jFViZbg1drbickBDRcBw"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">Here is the result, in French</span></p><p><span style="font-size:16px;"><br></span></p></div></div>
</div><div data-element-id="elm_KxtPeFV7WzUiR4fcmPgRig" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_KxtPeFV7WzUiR4fcmPgRig"] .zpimage-container figure img { width: 624px !important ; height: 180px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_KxtPeFV7WzUiR4fcmPgRig"] .zpimage-container figure img { width:624px ; height:180px ; } } @media (max-width: 767px) { [data-element-id="elm_KxtPeFV7WzUiR4fcmPgRig"] .zpimage-container figure img { width:624px ; height:180px ; } } [data-element-id="elm_KxtPeFV7WzUiR4fcmPgRig"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-groupcolumndisplayname-french.png" width="624" height="180" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_Zi7jj8fUNxAL4ftOkF7AIw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Zi7jj8fUNxAL4ftOkF7AIw"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">And in German</span></p><p><span style="font-size:16px;"><br></span></p></div></div>
</div><div data-element-id="elm_sSKnDDx3neTPfQGWoE-8Og" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_sSKnDDx3neTPfQGWoE-8Og"] .zpimage-container figure img { width: 624px !important ; height: 182px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_sSKnDDx3neTPfQGWoE-8Og"] .zpimage-container figure img { width:624px ; height:182px ; } } @media (max-width: 767px) { [data-element-id="elm_sSKnDDx3neTPfQGWoE-8Og"] .zpimage-container figure img { width:624px ; height:182px ; } } [data-element-id="elm_sSKnDDx3neTPfQGWoE-8Og"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-groupcolumndisplayname-german.png" width="624" height="182" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_tZfNHFK3Pn7SA5CQ4otM9g" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_tZfNHFK3Pn7SA5CQ4otM9g"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><p><br></p><p>What if the user decides to group by Position, a different Choice column, rather than by Progress?&nbsp; There is only one view formatting JSON no matter what you group by, and only one “groupProps” and one “headerFormatter”.&nbsp; Luckily the value of “group.columnDisplayName” detects not only the language but also which column is being grouped by, so you can just extend the nested ifs and localize all the choice columns from the view in a single “txtContent” expression.</p><p><br></p><p>The technique of using of “group.columnDisplayName” works for “@group” within the “group by” header as shown above, but it will also work for “@columnAggregate” in the footer and for the “@aggregates” array elements where applicable, and it also works for Gallery view.</p><p><span style="font-weight:bold;"><br></span></p><p><span style="font-weight:bold;">Was this useful? Leave us your questions in the comments section below!</span></p></div></div></div></div></div>
</div><div data-element-id="elm_K3suObFtGo0asxARDVqCHw" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_K3suObFtGo0asxARDVqCHw"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_9byRa4AaPkGjvrrkLJYgGw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_9byRa4AaPkGjvrrkLJYgGw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-family:&quot;Work Sans&quot;;font-size:16px;font-weight:700;color:rgb(11, 27, 45);">Related Posts</span><br></h2></div>
<div data-element-id="elm_kgdO1p9uCVzTeuWPSKQOBQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_kgdO1p9uCVzTeuWPSKQOBQ"].zpelem-text{ border-radius:1px; padding-block-start:0px; margin-block-start:-1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div><h1><div style="color:inherit;"></div></h1><h1><span style="font-family:&quot;Work Sans&quot;;font-size:16px;"><a href="https://blog.icefire.ca/blogs/post/language-dependent-json-column-formatting-this-time-it-s-the-uilcid-token" title="Language-dependent JSON column formatting: this time it's the @UIlcid token" target="_blank" rel="">Language-dependent JSON column formatting: this time it's the @UIlcid token</a></span></h1><h1><span style="font-size:16px;font-family:&quot;Work Sans&quot;;color:rgb(11, 27, 45);"><a href="https://blog.icefire.ca/blogs/post/language-dependent-json-column-formatting-using-the-lcid-token" title="Language-dependent JSON column formatting using the @lcid token" target="_blank" rel="">Language-dependent JSON column formatting using the @lcid token</a></span></h1><div><div style="color:inherit;"><h1><span style="font-size:16px;font-family:&quot;Work Sans&quot;;"><a href="https://blog.icefire.ca/blogs/post/json-for-different-text-in-different-languages" target="_blank" rel="">JSON for different text in different languages</a></span></h1></div>
</div></div></div></div></div></div></div></div></div> ]]></content:encoded><pubDate>Wed, 08 Mar 2023 11:47:08 -0500</pubDate></item><item><title><![CDATA[Language-dependent JSON column formatting: this time it's the @UIlcid token]]></title><link>https://blog.icefire.ca/blogs/post/language-dependent-json-column-formatting-this-time-it-s-the-uilcid-token</link><description><![CDATA[<img align="left" hspace="5" src="https://blog.icefire.ca/Fri Aug 26 2022-2.png"/>This seems to have become a series, as Microsoft adds features to SharePoint JSON formatting.&nbsp; The previous installment is here .&nbsp; A week ago ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_s9K0Z5y6SfunuB9WMlDwDw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_SIBF4NPBRoaaMbW8OMWbJQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_kOK6NuRXT4-WuwhumdTDAw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_5oRnlVMnSuKj3K0jKDMzvQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_5oRnlVMnSuKj3K0jKDMzvQ"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>This seems to have become a series, as Microsoft adds features to SharePoint JSON formatting.&nbsp; The previous installment is <a href="/index#https%3A//blog.icefire.ca/blogs/post/language-dependent-json-column-formatting-using-the-lcid-token" title="here" rel="">here</a>.&nbsp; A week ago, Microsoft released a new @UIlcid token, which corrects the problem that I discussed in the previous post.&nbsp; This time, this token is the actual current language of the site, unlike the @lcid token that was available before.<br><br>So unlike the earlier post (<a href="/index#https%3A//blog.icefire.ca/blogs/post/language-dependent-json-column-formatting-using-the-lcid-token" title="read it now" rel="">read it now</a>) using &quot;@UIlcid&quot; rather than &quot;@lcid&quot; resolves all the issues about matching the Language and the Locale.&nbsp; The example is very similar to the previous post, and the effect is the same, just use&nbsp;<span style="color:inherit;">&quot;@UIlcid&quot; (Note: it's case-sensitive) rather than &quot;@lcid&quot; and you can replace the display of field values including choice columns with the translation without changing the value that is stored.</span><br><span style="color:inherit;"><img src="/Fri%20Aug%2026%202022.png" alt=""></span><br></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Does it apply to other places where the value appears?&nbsp; Yes!&nbsp; Well, most of the time.&nbsp; Does it work in &quot;new&quot; and &quot;edit&quot; panes?&nbsp; Yes!&nbsp; Below, both the selected and unselected values are translated.</span></p><p><span style="color:inherit;"><img src="/Fri%20Aug%2026%202022-1.png" alt=""></span><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Does it work for &quot;Type to filter&quot;?&nbsp; No.&nbsp; The filtering mechanism knows nothing about the translations.&nbsp; For that you would need to use multilingual managed metadata instead; it knows about translated values and can filter by them, and now column formatting works on that field type.</span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Does it work in grid view?&nbsp; Yes it does!</span></p><p><span style="color:inherit;"><img src="/Fri%20Aug%2026%202022-2.png" alt=""></span><span style="color:inherit;"><br></span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">Does it work with Multi-select choice fields?&nbsp; No, but it could with a little extra effort.&nbsp; You would simply have to <a href="/index#https%3A//docs.microsoft.com/en-us/sharepoint/dev/declarative-customization/column-formatting%23simple-html-elements-formatting" title="use forEach and loopIndex" rel="">use <span style="font-family:&quot;Courier New&quot;, monospace;">forEach</span> and <span style="font-family:&quot;Courier New&quot;, monospace;">loopIndex</span></a>&nbsp;to go through the values and translate them individually, selected or not.</span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;">As you may have guessed, automatically translating choice columns is an upcoming feature of PointFire 365, with lookup columns to follow.</span></p><p><span style="color:inherit;"><br></span></p><p><span style="color:inherit;"><br></span></p></div>
</div><div data-element-id="elm_rAkbVdurb5dippRX321gnw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_rAkbVdurb5dippRX321gnw"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="font-weight:700;">Related Posts</span></p><div style="color:inherit;"><h1><div style="color:inherit;"></div></h1><h1><span style="font-family:&quot;Work Sans&quot;;font-size:16px;"><a href="https://blog.icefire.ca/blogs/post/localizing-group-by-headers-for-choice-columns-using-json-view-formatting" target="_blank" rel="">Localizing &quot;group by&quot; headers for choice columns using JSON view formatting in SharePoint Online</a></span></h1><h1><span style="font-size:16px;font-family:&quot;Work Sans&quot;;"><a href="https://blog.icefire.ca/blogs/post/language-dependent-json-column-formatting-using-the-lcid-token" target="_blank" rel="">Language-dependent JSON column formatting using the @lcid token</a></span></h1><div><h1><span style="font-size:16px;font-family:&quot;Work Sans&quot;;"><a href="https://blog.icefire.ca/blogs/post/json-for-different-text-in-different-languages" target="_blank" rel="">JSON for different text in different languages</a></span></h1></div></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Fri, 26 Aug 2022 16:11:46 -0400</pubDate></item><item><title><![CDATA[How to get a higher level of machine translation quality]]></title><link>https://blog.icefire.ca/blogs/post/how-to-get-a-higher-level-of-machine-translation-quality</link><description><![CDATA[<img align="left" hspace="5" src="https://blog.icefire.ca/Z-code-model-improvement.png"/>What can you do to ensure the highest level of quality in Machine Translation of pages and documents in Microsoft SharePoint? This blog post details all the steps to follow and different problems and their solutions]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_AjkHLZCBQ-iNaI_HQ5KNSw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_LKRYFxFTSZaqvDcBJt5BIg" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_vL5D9nZ1S6SfIHmapowXZA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_bFHzWy19Tt-eRiB1PPc9PQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p style="text-align:left;"><span style="font-size:16px;">Clients often ask me what they can do to ensure the highest level of quality in Machine Translation of pages and documents.&nbsp; This blog post applies particularly to users of PointFire Translator, but since the translation technology that we use is similar to that of other products that follow the leading edge of machine translation technology, most of the advice below applies to other machine translation scenarios.&nbsp; If you are using the machine translation of PointFire on premise or SharePoint on premise, that is much older technology, and the advice would be a bit different.</span></p><p style="text-align:left;font-size:11pt;"><br></p><p style="text-align:left;"><span style="font-size:16px;">The first thing that you need to do is determine your tolerance for errors in different types of documents and the time and money you are willing to spend to correct the errors.&nbsp; Not all documents need to be translated with the same level of quality.&nbsp; Some of them are fine if you get the gist, while others must be very faithful to the original.</span></p><p style="text-align:left;font-size:11pt;"><br></p><p style="text-align:left;"><span style="font-size:16px;">A good human translator will charge about 10-50 cents per word depending on the languages and the type of text.&nbsp; Azure Translator text API will charge about 0.02 cents per word, Azure Translator document API will charge about 0.04 cents and Azure Custom translator will charge 0.1 cents.&nbsp; These are round figures, but the cost savings from machine translation is considerable.</span></p><p style="text-align:left;font-size:11pt;"><br></p><p style="text-align:left;"><span style="font-size:16px;">How accurate are the translations from machine translation?&nbsp; That is a complex subject, but in the past decade we have gone from statistical machine translation which was still barely better than gibberish except for languages from the same family, to the current situation where translation for many language pairs including English to Chinese and back, has reached what is called ”human parity”, to the next generation of machine translation based on Z-code MoE models (more on that below), with dramatic improvements in many language pairs.</span></p></div></div></div>
</div><div data-element-id="elm_r2KnMymHcmv4TCkr0ahWYg" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_r2KnMymHcmv4TCkr0ahWYg"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-family:&quot;Work Sans&quot;;font-size:20px;font-weight:700;color:rgb(11, 27, 45);">What does &quot;human parity&quot; mean?</span><br></h2></div>
<div data-element-id="elm_O_PakDiCy0zZw1xOa7r8ww" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_O_PakDiCy0zZw1xOa7r8ww"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p>Let us stand back and try to understand what the term “human parity” means and what it doesn’t.&nbsp;</p><p>First, the humans in question are not professional translators.&nbsp; Professional human translators are still better.&nbsp; The tests that justified the use of that term came from an annual competition where both humans and machines translated sentences from news stories.&nbsp; Journalistic style is relatively simple, and the machines had trained on other news stories, so that makes it easier.&nbsp; The two sets of translations, human and machine, were then scored independently for quality.&nbsp; Microsoft Azure Translator obtained as good a score as the average human.&nbsp; But remember, the humans in this comparison were probably bilingual computer science students, as were the evaluators.&nbsp; If the testing had been done with professional translators doing the translation and doing the rating, it would not have been a tie, as other studies have shown.&nbsp; “Human parity” is a good benchmark, but it is far from perfection.&nbsp; There are still errors.</p></div></div>
</div><div data-element-id="elm_t27sTJ2gip6GuGFciEXZAA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_t27sTJ2gip6GuGFciEXZAA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-family:&quot;Work Sans&quot;;font-weight:700;color:rgb(11, 27, 45);font-size:20px;">What are these human parity errors and what can we do about them?</span><br></h2></div>
<div data-element-id="elm_3ADNPzqpJYqFU8fVvYejTQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_3ADNPzqpJYqFU8fVvYejTQ"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:16px;">Different language pairs will have different types of errors.&nbsp; Again, depending on the types of errors you are getting and how badly you need to correct them, there are different things that you can do.&nbsp; Take negation errors for example.&nbsp; These are easily noticeable by users.&nbsp; A sentence that contains a negative in the source language may be incorrectly missing the negation in the target language, or vice-versa, or may have incorrect scoping: does the not/nicht/kein apply to one adjective, to the whole clause, or to the verb?&nbsp; Some languages handle negation differently, and it is not necessarily clear to the translation engine what is being negated.&nbsp; It is a particular problem between English and either Russian, Lithuanian, or German.&nbsp; Part of the reason is that training sets used to create and tune translation engines don't contain a lot of negation.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">Negation is only one category of errors among many others, but a very noticeable one.&nbsp; Linguistic and statistical measures of quality will say the translation is very, very close, it’s only off by one word, but the client will say not it’s not, it’s as wrong as it could be, it’s the opposite.&nbsp; It is a very simple error to correct, it requires very little editing time to change it.&nbsp; Humans and machines have very different evaluation criteria.</span></p><p><br></p></div></div></div>
</div><div data-element-id="elm_uJ16oPTKVh6tmjrZkMZ32g" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_uJ16oPTKVh6tmjrZkMZ32g"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div><p><span style="font-family:&quot;Work Sans&quot;;font-size:20px;font-weight:700;color:rgb(11, 27, 45);">Four things you can do to improve translation quality in general</span></p></div></h2></div>
<div data-element-id="elm_xx8Pxbuy6wb9y0ZIKV-qMg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_xx8Pxbuy6wb9y0ZIKV-qMg"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><ol><li style="text-align:left;">Implement a&nbsp;<b>post-editing</b>&nbsp;step that looks particularly for certain kinds of common translation errors before publishing</li><li style="text-align:left;">Switch to&nbsp;<b>Azure Custom Translator</b>&nbsp;and train it on a corpus of your own documents and phrases so that it learns your vocabulary and your style</li><li style="text-align:left;">Participate in the by-invitation pilot of the&nbsp;<b>Z-Code MoE</b>&nbsp;translation engine</li><li style="text-align:left;">Change the&nbsp;<b>style guide of source documents</b>&nbsp;so that they are written in a way that is easier to translate</li></ol></div></div>
</div><div data-element-id="elm_KeCel1nQmnQ4vVLUeMUA-w" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_KeCel1nQmnQ4vVLUeMUA-w"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-family:&quot;Work Sans&quot;;font-size:16px;font-weight:700;color:rgb(11, 27, 45);"><span>1.</span>&nbsp;<b><span>Post editing</span></b></span><br></h2></div>
<div data-element-id="elm_6Hvk1SJb4Hu2Rra3s8f7UA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_6Hvk1SJb4Hu2Rra3s8f7UA"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:16px;">Post editing is the simplest and most robust solution.&nbsp; It means making changes to the translated page or document.&nbsp; It should be implemented whether or not you implement some of the other solutions.&nbsp; Machine translation is not perfect, so <u>limited</u> post-editing is good practice.&nbsp; It is still significantly cheaper than professional translation or editing and may be cheaper than Azure Custom Translator.&nbsp; PointFire Translator by default saves all documents, pages, and items as drafts, and someone should revise that draft before it is published.&nbsp; This advice is not what most people want to hear, they want a technology solution because they don’t have the in-house expertise to translate, and would like the technology to solve the problem without involving them.&nbsp; Sorry.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;text-decoration-line:underline;">Who should do this?</span></p><p><span style="font-size:16px;">The obvious answer may not be the best one.&nbsp; “We have someone in the office who speaks both languages”.&nbsp; No matter how clever they are, efficiently editing documents in their other language may not be in their skill set.&nbsp; And you have to make sure that someone’s ethnicity or cultural background does not mean that they get extra tasks that do not contribute to their career progression or career goals.</span></p><p><span style="font-size:16px;">What is this “limited editing” that I mentioned?&nbsp; That is actually very challenging even for professional editors and translators.&nbsp; You want to limit the time that is spent in this editing step, otherwise you will end up spending more on post-editing than you would have for professional translators.&nbsp; Remember, professional translators have access to machine translation too.&nbsp; Today’s translators are already only charging you for machine translation plus the cost of post-editing, and they are very good and quick at doing this.&nbsp; They have glossaries, translation memory databases, and previous translations at their fingertips and they do this all day. The cost advantage that you have over them comes from the fact that they’re perfectionists and you’re not.&nbsp;</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">Limited post-editing means you correct some errors that are show stoppers and easy to correct, like negation errors, and let other errors slide.&nbsp; You find poor phrasing, not quite the right word, or errors in agreement between the noun and the adjective?&nbsp; These are errors that do not require reading the original text in a different language in order to correct, and everyone reading it knows what the author meant to say.&nbsp; And those errors are more time-consuming to correct.&nbsp; I know it’s hard to see an error on a page that you are editing and leave it there, and not everyone agrees with this advice, but this is how you control costs.&nbsp; Given the current quality of machine translation, for most documents you will not even hit the edit button, you will click on publish if you can resist the temptation to fiddle with the text until it’s perfect.&nbsp; Different types of documents require different edit rules. If the text is describing a procedure that must be exact, spend more time ensuring that it is exact.&nbsp; It’s like a food processing assembly line.&nbsp; There are some acceptable defects, but also some that cannot be tolerated no matter the cost.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">As we will see below, certain errors are difficult to prevent by other methods.&nbsp; Post editing is the best way to correct them, but if too much post-editing is required or too many errors are missed, professional translators may be a safer or less costly alternative.</span></p></div></div></div>
</div><div data-element-id="elm_7z63fPqCuIWe9VQM-lAlGw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_7z63fPqCuIWe9VQM-lAlGw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="color:rgb(11, 27, 45);font-family:&quot;Work Sans&quot;;font-size:16px;font-weight:700;">2. Custom Translator</span></h2></div>
<div data-element-id="elm_9Rd0WWQOyVmS-enwOTGzcg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_9Rd0WWQOyVmS-enwOTGzcg"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:16px;">While Azure Translator uses the same translation engine for everyone, <u>Azure Custom Translator</u> is an alternative engine that you can re-train on your documents and vocabulary.&nbsp; It can increase translation accuracy by a few points, particularly for specialized domains.&nbsp; You’re in the automotive industry?&nbsp; Tell Custom Translator and your score will already improve over the default engine.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">Unfortunately, re-training a translation model, the main component of the translation engine, is not very simple and it requires some knowledge of linguistics and statistics, plus a lot of data and data cleaning, to get the advantage of having your own model.&nbsp; The new preview interface of Azure Custom Translator is a big improvement, but it still needs some work.&nbsp; I may blog more in the future about how to use it, but here is a brief introduction.</span></p></div></div></div>
</div><div data-element-id="elm_al7R8ERiPoaZm3Ox0k3YfQ" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_al7R8ERiPoaZm3Ox0k3YfQ"] .zpimage-container figure img { width: 606px !important ; height: 502px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_al7R8ERiPoaZm3Ox0k3YfQ"] .zpimage-container figure img { width:606px ; height:502px ; } } @media (max-width: 767px) { [data-element-id="elm_al7R8ERiPoaZm3Ox0k3YfQ"] .zpimage-container figure img { width:606px ; height:502px ; } } [data-element-id="elm_al7R8ERiPoaZm3Ox0k3YfQ"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Microsoft%20Azure%20Custom%20Translator.png" width="606" height="502" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_Rw5kfiVGt5242iWqM0spQw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Rw5kfiVGt5242iWqM0spQw"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;">First you need to have at least 10,000 professionally translated sentences or terms, in a supported format and following the naming conventions.&nbsp; This is the learning set.&nbsp; You can upload parallel documents in both languages, and it has some tools to help you align the sentences, but it’s not as good as you’d think and you have to revise carefully.&nbsp; If an extra line is inserted, every sentence after that will be mis-aligned.&nbsp; You also have to remove the sentences that are not quite the same.&nbsp; Translators often split or combine sentences when they translate, it may be more natural sounding that way, but it will confuse the translation engine training, best to remove those.&nbsp; Similarly, some translations, although correct, are not a good example for a machine to train on. For example, if the text is talking about pangrams,&nbsp; sentences that use all 26 letters, “the quick brown fox jumped over the lazy dog” can be translated to “Portez ce vieux whisky au juge blond qui fume” (Carry this old whiskey to the blonde judge who smokes).&nbsp; While it’s correct in this context, having a model learn from this translation would probably interfere with the model’s ability to translate other text about canids.&nbsp; Training sets have to curated to be most effective.&nbsp; How about idioms, expressions that do not translate literally?&nbsp; Those are good, training sets should include them so that it will know later how to translate those in a way that is not literal.</span></p><p><span style="font-size:16px;"><br></span></p><div style="color:inherit;"><p><span>Besides those 10,000 sentence pairs, you will also need a testing set and a tuning set.&nbsp; To simplify the process a bit, neural network models train on a training set, but you also need a set of sentences to test on.&nbsp; If you over-train a neural network translation model, it will become very good with the sentences it has seen, but at some point it becomes worse at the sentences that it hasn’t seen.&nbsp; It is memorizing the training sentences, but not generalizing.&nbsp; You have to stop the training when it gets to the highest quality score, and before it gets worse.&nbsp; The measure of quality that it is optimizing is called the <a href="https://docs.microsoft.com/en-us/azure/cognitive-services/translator/custom-translator/what-is-bleu-score" title="BLEU score" target="_blank" rel="">BLEU score</a>.&nbsp; Again simplifying a bit, the BLEU score looks at the translation that the model produced and compares it to the translation that a professional translator provided. The score is a purely numerical comparison.&nbsp; For each sequence of 4 words in your translation, does that sequence of 4 words appear in the reference professional translation?&nbsp; How about for sequences of 3, 2, or 1 words?&nbsp; The score has other factors as well, but that is the essential.</span></p><p><span style="font-size:16px;text-decoration-line:underline;"><br></span></p><p></p><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:16px;text-decoration-line:underline;">A couple of notes about the BLEU score:</span></p><ul><li><span>Professional translators don’t get perfect marks because one translator can phrase things differently from other translators.&nbsp; They will get maybe 50 out of 100.</span></li><li><span>BLEU score is not good at punishing long-range errors, things that are more than 4 words apart like negation for instance</span></li><li><span>It doesn’t care about meaning or synonyms. If you use the word “large” and the translator used the word “big”, you get the same score as if you had used “small” or even “but” or “blarg”</span></li></ul><div><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">For better or for worse that score is what Azure Custom Translator is trying to maximize.&nbsp; It starts out with a good general model, and then it modifies it a using the training data that you provide.&nbsp; The “tuning set” of training data is especially crucial.&nbsp; It has to be very representative of the translations that you will carry out later, and a lot of the quality of the model depends on having the correct distribution of and range of documents in this set.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">How much more translation accuracy you can get by using Custom Translator depends on the language pair and on the type of text.&nbsp; For example, English-German already has very high translation quality without re-training, so the improvement may be smaller than other languages.&nbsp; Version 1 of Custom Translator improved the accuracy of English-German over the normal Azur Translator by a few points of BLEU score, much more in the automotive field with a medium number of documents. “Medium” in this case means 50-100 thousand professionally translated sentences.</span></p></div></div></div></div></div></div></div></div>
</div><div data-element-id="elm_7bhcNtLxLD5l9eR9tTdtCw" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_7bhcNtLxLD5l9eR9tTdtCw"] .zpimage-container figure img { width: 800px ; height: 390.24px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_7bhcNtLxLD5l9eR9tTdtCw"] .zpimage-container figure img { width:500px ; height:243.90px ; } } @media (max-width: 767px) { [data-element-id="elm_7bhcNtLxLD5l9eR9tTdtCw"] .zpimage-container figure img { width:500px ; height:243.90px ; } } [data-element-id="elm_7bhcNtLxLD5l9eR9tTdtCw"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-large zpimage-tablet-fallback-large zpimage-mobile-fallback-large hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Machine-translation-bleu-score.png" width="500" height="243.90" loading="lazy" size="large" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_TDYUdk6t8COGKQYMU2Q2Sw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_TDYUdk6t8COGKQYMU2Q2Sw"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">You can find more details <a href="https://www.microsoft.com/en-us/translator/blog/2018/05/07/customtranslator/" title="here" target="_blank" rel="">here</a></span><br></p><p><br></p><div style="color:inherit;"><p><span style="font-size:16px;">Version 2 of the Custom Translator, which includes “human parity” models that PointFire uses, improved even further particularly for languages where Version 1 had not performed as well like Korean and Hindi, although less so for languages where it was already good like German.</span></p></div></div>
</div><div data-element-id="elm_HCYIDBrOuHTLavvs39uS1g" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_HCYIDBrOuHTLavvs39uS1g"] .zpimage-container figure img { width: 800px ; height: 451.13px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_HCYIDBrOuHTLavvs39uS1g"] .zpimage-container figure img { width:500px ; height:281.95px ; } } @media (max-width: 767px) { [data-element-id="elm_HCYIDBrOuHTLavvs39uS1g"] .zpimage-container figure img { width:500px ; height:281.95px ; } } [data-element-id="elm_HCYIDBrOuHTLavvs39uS1g"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-large zpimage-tablet-fallback-large zpimage-mobile-fallback-large hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/translator-human-parity-evaluation.png" width="500" height="281.95" loading="lazy" size="large" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_4DiNdbzmzranzhB7Auye1Q" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_4DiNdbzmzranzhB7Auye1Q"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p>More information <a href="https://www.microsoft.com/en-us/translator/blog/2020/08/05/custom-translator-v2-is-now-available/" title="here" target="_blank" rel="">here</a></p><p><br></p><div style="color:inherit;"><p><span style="font-size:16px;">Depending on the language and the field, particularly how your specialized vocabulary differs from the vocabulary that Microsoft used in its training, typically government documents crawled from the web, you can get small to significant improvements in translation quality by training your own model in Azure Custom Translator. However, it requires significant investment in time and resources to set up, and Microsoft charges 4-5 times what it charges for the regular translation engine.&nbsp; It is not for everyone.</span></p></div></div>
</div><div data-element-id="elm_SMVGEGtgKib5mh1B0WwI4g" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_SMVGEGtgKib5mh1B0WwI4g"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-family:&quot;Work Sans&quot;;font-size:16px;font-weight:700;color:rgb(11, 27, 45);"><span>3.</span>&nbsp;<b><span>Z-code MoE models</span></b></span><br></h2></div>
<div data-element-id="elm_QkyHWUBroZTYPmGc55bSAw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_QkyHWUBroZTYPmGc55bSAw"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;">Z-code is part of Microsoft’s larger ambitious “XYZ-code” initiative.&nbsp; It takes advantage of new technology for massive, massive neural networks of a scale barely envisioned a few years ago, billions or even hundreds of billions of parameters, made possible with the Microsoft DeepSpeed library <a href="https://www.deepspeed.ai/">https://www.deepspeed.ai/</a>.&nbsp; It’s thousands of times bigger than current translation models.&nbsp; Rather than separately training individual models for English-French, English-Hungarian, English-Chinese, etc., it trains one massive model that learns about all language pairs at once.&nbsp; In order to avoid duplication, the model teaches itself about features that are common to families of languages, and features that are common to all written human languages.&nbsp; That way, even if it was not given enough examples from a particular language pair, it can extrapolate from examples in other related languages, and most likely get it right.&nbsp; It is called MoE (mixture of experts) because it incorporates specialized competing smaller models, called “experts”, each of which may propose an answer but each of which specializes in a type of problems, and it has another component that is trained to be good at determining which of the experts will be right under different circumstances.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;"></span></p><div style="color:inherit;"><p><span style="font-size:16px;">Those engines went live in March 2022 and are available by invitation. &nbsp;They will probably be generally available some time next year. &nbsp;They are particularly good at languages for which there is a smaller training corpus, for example southern Slavic languages like Slovenian, Bosnian, and Bulgarian.&nbsp; If your language pair is among the ones that get a significant improvement in quality, it’s worth trying to get an invitation.&nbsp; At the moment, this can not be combined with Custom Translator.</span></p></div></div></div>
</div><div data-element-id="elm_zbYnt6IXGFBNDbX1lUkSEw" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_zbYnt6IXGFBNDbX1lUkSEw"] .zpimage-container figure img { width: 800px ; height: 448.95px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_zbYnt6IXGFBNDbX1lUkSEw"] .zpimage-container figure img { width:500px ; height:280.59px ; } } @media (max-width: 767px) { [data-element-id="elm_zbYnt6IXGFBNDbX1lUkSEw"] .zpimage-container figure img { width:500px ; height:280.59px ; } } [data-element-id="elm_zbYnt6IXGFBNDbX1lUkSEw"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-large zpimage-tablet-fallback-large zpimage-mobile-fallback-large hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Z-code-model-improvement.png" width="500" height="280.59" loading="lazy" size="large" data-lightbox="true"/></picture></span><figcaption class="zpimage-caption zpimage-caption-align-left"><span class="zpimage-caption-content">https://www.microsoft.com/en-us/research/blog/microsoft-translator-enhanced-with-z-code-mixture-of-experts-models/</span></figcaption></figure></div>
</div><div data-element-id="elm_OQwd_SnAb6N02BZB_ruPHg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_OQwd_SnAb6N02BZB_ruPHg"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;">In the diagram above, the percent improvement seems to be improvement in BLEU score.&nbsp; According to other research, this class of models is particularly good for correcting negation errors in German.&nbsp; Note that 2) and 3) cannot be used together.</span></p></div></div>
</div><div data-element-id="elm_7aVIN8NpeAfTGVU-IdT5tA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_7aVIN8NpeAfTGVU-IdT5tA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-family:&quot;Work Sans&quot;;font-size:16px;font-weight:700;color:rgb(11, 27, 45);">4.&nbsp;<b>Write the original with a style that is easier to translate</b></span><br></h2></div>
<div data-element-id="elm_vcQN4VKKdoH9ht-q7JII5Q" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_vcQN4VKKdoH9ht-q7JII5Q"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:16px;">This is a bit strange to say, but English is not a good source language to translate from.&nbsp; A lot of its grammar is vague or ambiguous.&nbsp; For example, it often recycles words to mean something else.&nbsp; Well known examples include “A good pharmacist dispenses with accuracy”. “Dispense” and “dispense with” are very different concepts that use the same words.&nbsp; It is obvious to humans from context, but how is a computer to know?&nbsp; “Bill gave the dog water and Sue the cat food”.&nbsp; Here the conjunction reuses the verb give, but the subject, direct object and indirect object require an educated guess. Is it a single object made up of one noun (cat) describing the other noun (food), or two different objects of the same verb?&nbsp; English does not have declensions and is stingy with the prepositions that other languages use to make such things clear.&nbsp; English is infamous for its sequences of nouns where the reader or computer must determine what describes what.&nbsp; For example, we can figure out “airport long term car park courtesy vehicle pickup point” from our knowledge of airports and car rentals, but can a computer figure out which word describes which other word or group of words enough to translate it?&nbsp; Machine translation would have more luck with the less common but still correct English phrasing “pickup point for the courtesy vehicles of the airport’s long-term car park”.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">But before you decide to write all your original documents in Lithuanian rather than English to improve translation quality, know that it is possible to write in English in a way that is easier to translate.</span></p><p><span>Microsoft publishes some style guides with sections on how to author documents so that machine translation has fewer errors and is easier to understand.&nbsp; You can find them <a href="https://www.microsoft.com/en-us/language/StyleGuides" title="here" target="_blank" rel="">here</a>.</span></p><p style="font-size:11pt;"><br></p><p><span style="font-size:16px;">Style guides for machine translation are similar to style guides for writing for ESL audiences, where some English language constructs that are potentially ambiguous for non-native speakers are avoided.&nbsp; Within the Microsoft style guides are some tips about writing so that machine translation will have higher quality.</span></p><p style="font-size:11pt;"><a href="https://docs.microsoft.com/en-us/style-guide/global-communications/writing-tips"><span style="font-size:16px;">https://docs.microsoft.com/en-us/style-guide/global-communications/writing-tips</span></a></p><p style="font-size:11pt;"><br></p><p><span style="font-size:16px;">Some of the tips seem to have been written at the time of earlier versions of machine translation which had problems that are less common now, but there is no harm in reducing ambiguity.&nbsp; The tips include:</span></p><ul><li><span>Use articles. Does “Empty container” mean “Empty the container” or “The empty container”?&nbsp; Articles (determiners) make it explicit.</span></li><li><span>Reduce chains of modifiers. Instead of &nbsp;“well thought-out Windows migration project plan” say “a project plan to migrate Windows that's well thought out”</span></li><li><span>Keep adjectives and adverbs close to the words they modify. Pay particular attention to the placement of “only”.</span></li><li><span>·Use simple sentence structures. Write sentences that use standard word order (that is, subject + verb + object) whenever possible.</span></li><li><span>Use words ending in –ing carefully. A word ending in –ing can be a verb, an adjective, or a noun. Use the sentence structure and optional words to clarify the role of the –ing word.</span></li><li><span>Use words ending in –ed carefully. A word ending in -ed can be a modifier or part of a verb phrase. Use the sentence structure and optional words to clarify the role of the –ed word.</span></li><ul><li><span>Add an article (a, an, the, this) before or after the –ed word. “They have <b>an</b> added functionality.”</span></li><li><span>Add a form of the verb be. “Configure limits for the backup that are based on the amount of storage space available.”</span></li></ul></ul><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">I would probably add a few more tips.&nbsp; Be careful with the scoping of negation and of adjectives/adverbs (often a word can be one or the other).&nbsp; Keep the negation or the adjective close to what it modifies, whether a word, a noun phrase, a clause or the verb, and try to phrase it so it is not easily mistaken.&nbsp; An example of negation scoping is “All that glitters is not gold”.&nbsp; Is it saying that everything that glitters is made of something other than gold?&nbsp; It might, but it is probably asserting that the set of all items that glitter does not coincide with the set of gold items. It depends on whether it means {all that glitters} is-not gold, or {all that glitters} is not-gold.&nbsp; The “not” could be associated with “is” or with “gold”.&nbsp; I am tempted to wander into a digression into predicate logic or set theory, but that would take us away from the scoping problem.&nbsp; Not all who wander are lost 😉</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">Also be careful with words that can have several senses.&nbsp; Instead look for a different word with fewer senses.</span></p></div></div></div>
</div><div data-element-id="elm_nLGIKkQiuryf0KgItbzUtw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_nLGIKkQiuryf0KgItbzUtw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div><p style="font-size:11pt;"><b><span style="font-size:16px;font-family:&quot;Work Sans&quot;;color:rgb(11, 27, 45);">Cultural differences</span></b></p></div></h2></div>
<div data-element-id="elm_sb6NuRzw4hxPJlZcs4IvTw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_sb6NuRzw4hxPJlZcs4IvTw"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:16px;">Some translation issues are not easily solved with these strategies.&nbsp; This is because in addition to communicating across languages, you may be communicating across cultures.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">There are translations that correct but are hard to understand or insensitive for cultural reasons.&nbsp; Some of them you can change before translation takes place, others can be caught during post-editing, but there is another alternative.</span></p><p><span style="font-size:16px;">For example, if you talk about hitting a homerun, or about pulling the trigger, or call two things kissing cousins, these are cultural references that may be common in your country but may be hard to understand elsewhere even with a correct translation.&nbsp; More recent translation engines are better at common idioms, but it’s still risky.&nbsp; And it’s not just American English that draws from its culture.&nbsp; For example, Japanese has a term “mikka bouzu” meaning “three-day monk”.&nbsp; Some knowledge of Buddhism and Japanese culture is required to understand this is someone who gives up too easily.&nbsp; German has a word “Deppenleerzeichen” meaning “Idiot’s space”, a derogatory term for putting spaces between words that the German language normally sticks together in a large compound word.&nbsp; Some knowledge of German syntax is required.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">Some more difficult cultural issues are better caught in post-editing.&nbsp; Some correct translations are to be avoided because they sound like slogans used by political parties or extremist groups.&nbsp; Catch me some day in person and I might tell you about some big yikes.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">Another issue has to do with tone.&nbsp; A perfectly correct translation of communication written in German may sound inappropriate or even rude when translated to Japanese.&nbsp; That is because the German culture is comfortable with directness while Japanese employees are more comfortable with more indirect phrasing.&nbsp; Some re-training of the model using professionally translated text where the tone of business communication has been adjusted to be culturally appropriate is useful.&nbsp; However in some cultures such as Korean, verb forms and vocabulary depend on relative status of the writer and the reader, whether peer or subordinate, or on age difference.&nbsp; This is called honorifics or register.&nbsp; Similarly, many languages have differences based on the gender of the person being addressed or of the person who is speaking or writing.&nbsp; This is context that the computer does not have, so its&nbsp; phrasing may violate cultural norms.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">When it comes to these cultural norms for things like tone, post-editing is the only way to fix these errors but correcting these type of errors can be time consuming, inconsistent with the “limited editing”&nbsp; that was recommended.&nbsp; Another alternative is to educate the readers of the translations about the cultural differences and explain that messages from that country may be expressed differently based on their different culture, and that no offense is intended.&nbsp; Educating the readers about cultural differences may be more cost effective than adapting all translations to the different cultural context.</span></p></div></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Thu, 04 Aug 2022 14:03:43 -0400</pubDate></item><item><title><![CDATA[Language-dependent JSON column formatting using the @lcid token]]></title><link>https://blog.icefire.ca/blogs/post/language-dependent-json-column-formatting-using-the-lcid-token</link><description><![CDATA[Use JSON column formatting to display different text in different languages in SharePoint using the new @lcid token.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_LTnE7VNOSgasOwtENre72w" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_LffkkLsnTCWTmi-PKYgBMg" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_UtIjmF5hR2SXnvR9kU_VRw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_CVjGMNdsS6iePgZdenIIaA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_CVjGMNdsS6iePgZdenIIaA"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><p style="text-align:left;">This is an update to my earlier blog post “<a href="https://blog.icefire.ca/blogs/post/json-for-different-text-in-different-languages" target="_blank" rel="">JSON for different text in different languages</a>”, where JSON column formatting is used to display different text in different languages. &nbsp;Please read that post before reading this one.&nbsp;</p><p style="text-align:left;"><span style="font-size:16px;">Since that post was published, a new “@lcid” token has become available.&nbsp; <a href="https://github.com/pnp/List-Formatting/tree/master/column-samples/number-localization" title="There is a sample here" target="_blank" rel="">There is a sample here</a>&nbsp;<span style="color:inherit;">by theChrisKent, and he demonstrates it in a <a href="https://www.youtube.com/watch?v=j6pvLx7qdCE" title="video here" target="_blank" rel="">video here</a></span></span></p><p style="text-align:left;"><span style="font-size:16px;">&nbsp;</span></p><p style="text-align:left;"><span style="font-size:16px;">The technique in the sample and the video sounds better than what I had described in my earlier post, doesn’t it?&nbsp; Except for one very important thing:&nbsp; the @lcid token does not match the user’s current language, or in technical terms the UI Culture.&nbsp; The @lcid token is the current locale of the session, sometimes called the region setting, which is a very different thing.&nbsp; It’s confusing because both the current <i>Language</i> and the current <i>Locale</i> use many of the same locale IDs, but the Language matches the language of user interface elements, while the locale only determines the formatting of dates, numbers, and currency.&nbsp; Locale has 209 possible values, but Language only supports 50 of these.&nbsp; The other 159 are not just other variants of the same language, they can be the same language but in a different jurisdiction with a different currency, the same language with different alphabets or alphabetical order, or other languages altogether.</span></p><p style="text-align:left;font-size:11pt;"><br></p><p style="text-align:left;"><span style="font-size:16px;">The user’s &nbsp;display Language, if it is set and matches one of the site’s alternate languages, always overrides the site’s base language, and the user can set any number of languages, letting an algorithm decide which one will be selected.&nbsp; Users can choose whether to have their Locale preference override the default site locale, and if they do they can only select one locale.&nbsp; The locale is independent of the language. You can set your language to Welsh and your locale to Urdu if you so wish.</span></p><p style="text-align:left;font-size:11pt;"><br></p><p style="text-align:left;"><span style="font-size:16px;">Language is a reliable indicator of the user’s current language on the current site.&nbsp; Locale is not.&nbsp; Using the @lcid token will choose the wrong language more often than not.</span></p><p style="text-align:left;font-size:11pt;"><br></p><p style="text-align:left;"><span style="font-size:16px;">Using the @lcid token only works if the Locale setting correctly reflects the current language.&nbsp; This is where PointFire 365 comes in.&nbsp; One of the lesser-known features of PointFire 365 is that it synchronizes the user’s locale with their language, and uses the user’s locale rather than the site locale.&nbsp; This is mostly so that date, number, and currency formatting will be correct for the user’s current language.&nbsp; Otherwise, you might get calendars with the names for months and days in the wrong language.&nbsp; Because of this PointFire 365 feature, the @lcid token will actually match the page language.</span></p><p style="text-align:left;"><span style="font-size:16px;">&nbsp;</span></p><p style="text-align:left;"><span style="font-size:16px;">So what does the use of the @lcid token in JSON column formatting look like in practice?&nbsp; Here is a new version of the sample code snippet that was used in the earlier post:</span></p></div></div></div></div>
</div><div data-element-id="elm_-0iSC6NZf04LIHl-Ji9S0A" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_-0iSC6NZf04LIHl-Ji9S0A"] .zpimage-container figure img { width: 624px !important ; height: 92px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_-0iSC6NZf04LIHl-Ji9S0A"] .zpimage-container figure img { width:624px ; height:92px ; } } @media (max-width: 767px) { [data-element-id="elm_-0iSC6NZf04LIHl-Ji9S0A"] .zpimage-container figure img { width:624px ; height:92px ; } } [data-element-id="elm_-0iSC6NZf04LIHl-Ji9S0A"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/JSON-colon-formatting.png" width="624" height="92" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_gBdYWzeKA1vJSzRHkAnPhA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_gBdYWzeKA1vJSzRHkAnPhA"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;">Here, rather than checking the value of “Yes”, the JSON code is checking the value of @lcid.&nbsp; The code is just for two values of the field, “New application” and “Active”, but you get the idea.&nbsp; Here is what it looks like in English, French, and German.</span></p></div></div>
</div><div data-element-id="elm_C6RXMFdfPOpZZ8P6cHQkGQ" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_C6RXMFdfPOpZZ8P6cHQkGQ"] .zpimage-container figure img { width: 624px !important ; height: 176px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_C6RXMFdfPOpZZ8P6cHQkGQ"] .zpimage-container figure img { width:624px ; height:176px ; } } @media (max-width: 767px) { [data-element-id="elm_C6RXMFdfPOpZZ8P6cHQkGQ"] .zpimage-container figure img { width:624px ; height:176px ; } } [data-element-id="elm_C6RXMFdfPOpZZ8P6cHQkGQ"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-box zpimage-space-none " src="/JSON-formatting-translation-english.png" width="624" height="176" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_IJuJCS-RufGWScxWmRU_Bw" data-element-type="spacer" class="zpelement zpelem-spacer "><style> div[data-element-id="elm_IJuJCS-RufGWScxWmRU_Bw"] div.zpspacer { height:30px; } @media (max-width: 768px) { div[data-element-id="elm_IJuJCS-RufGWScxWmRU_Bw"] div.zpspacer { height:calc(30px / 3); } } </style><div class="zpspacer " data-height="30"></div>
</div><div data-element-id="elm_3zKrLNAltVWagG0fJ_DovA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_3zKrLNAltVWagG0fJ_DovA"] .zpimage-container figure img { width: 624px !important ; height: 166px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_3zKrLNAltVWagG0fJ_DovA"] .zpimage-container figure img { width:624px ; height:166px ; } } @media (max-width: 767px) { [data-element-id="elm_3zKrLNAltVWagG0fJ_DovA"] .zpimage-container figure img { width:624px ; height:166px ; } } [data-element-id="elm_3zKrLNAltVWagG0fJ_DovA"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-box zpimage-space-none " src="/JSON-formatting-translation-french.png" width="624" height="166" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_asKxTKs0GYVi652Jw-a1zQ" data-element-type="spacer" class="zpelement zpelem-spacer "><style> div[data-element-id="elm_asKxTKs0GYVi652Jw-a1zQ"] div.zpspacer { height:30px; } @media (max-width: 768px) { div[data-element-id="elm_asKxTKs0GYVi652Jw-a1zQ"] div.zpspacer { height:calc(30px / 3); } } </style><div class="zpspacer " data-height="30"></div>
</div><div data-element-id="elm_4_rbl943cm3zFtQeLKhThg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_4_rbl943cm3zFtQeLKhThg"] .zpimage-container figure img { width: 624px !important ; height: 178px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_4_rbl943cm3zFtQeLKhThg"] .zpimage-container figure img { width:624px ; height:178px ; } } @media (max-width: 767px) { [data-element-id="elm_4_rbl943cm3zFtQeLKhThg"] .zpimage-container figure img { width:624px ; height:178px ; } } [data-element-id="elm_4_rbl943cm3zFtQeLKhThg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-box zpimage-space-none " src="/JSON-formatting-translation-german.png" width="624" height="178" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_pMGxMmGiSLaR9vXJ5zN_hQ" data-element-type="spacer" class="zpelement zpelem-spacer "><style> div[data-element-id="elm_pMGxMmGiSLaR9vXJ5zN_hQ"] div.zpspacer { height:30px; } @media (max-width: 768px) { div[data-element-id="elm_pMGxMmGiSLaR9vXJ5zN_hQ"] div.zpspacer { height:calc(30px / 3); } } </style><div class="zpspacer " data-height="30"></div>
</div><div data-element-id="elm_VonfmjGQEypCeyzhe_PnRg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_VonfmjGQEypCeyzhe_PnRg"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:16px;">The benefits of using this technique rather than the one in the earlier post are</span></p><ol><li><span style="color:inherit;">It is slightly shorter than before</span><br></li><li>It does not require an additional Yes/No column in the view</li><li>It can support all 50 SharePoint languages</li></ol><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">The disadvantage (for some)</span></p><ul><li>It will usually not work without PointFire 365</li></ul><p><span style="font-size:16px;"><br></span></p><p>If you do not have PointFire 365, then the technique in the <a href="https://blog.icefire.ca/blogs/post/json-for-different-text-in-different-languages" title="earlier post" target="_blank" rel="">earlier post</a> is better.</p></div></div></div>
</div><div data-element-id="elm_j4T6mwQUKp8dA-rqBlj33g" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_j4T6mwQUKp8dA-rqBlj33g"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><h1 style="line-height:1;"><span style="font-family:&quot;Work Sans&quot;;font-size:16px;font-weight:700;color:rgb(0, 0, 0);">Related Posts</span></h1><h1><div style="color:inherit;"></div></h1><h1><span style="font-family:&quot;Work Sans&quot;;font-size:16px;"><a href="https://blog.icefire.ca/blogs/post/localizing-group-by-headers-for-choice-columns-using-json-view-formatting" target="_blank" rel="">Localizing &quot;group by&quot; headers for choice columns using JSON view formatting in SharePoint Online</a></span></h1><h1><a href="https://blog.icefire.ca/blogs/post/language-dependent-json-column-formatting-using-the-lcid-token" target="_blank" rel="" style="font-family:&quot;Work Sans&quot;;font-size:16px;">Language-dependent JSON column formatting using the @lcid token</a><br></h1><h1 style="color:inherit;line-height:1;"><div style="color:inherit;"><div><div></div></div></div></h1><h1><span style="font-size:16px;font-family:&quot;Work Sans&quot;;"><a href="https://blog.icefire.ca/blogs/post/json-for-different-text-in-different-languages" target="_blank" rel="">JSON for different text in different languages</a></span></h1></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Tue, 05 Jul 2022 11:34:48 -0400</pubDate></item><item><title><![CDATA[The end of the Machine Translation Service in SharePoint Online ]]></title><link>https://blog.icefire.ca/blogs/post/machine-translation-service-end-sharepoint</link><description><![CDATA[<img align="left" hspace="5" src="https://blog.icefire.ca/SharePoint-variations.png"/>Microsoft is stopping the machine translation service for SharePoint Online. Here's what will stop working and what to do about it]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_NcZ2kw5aQD26WQHyPoXx9Q" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_LdWyJS8bReG0orREjVtdzg" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"> [data-element-id="elm_LdWyJS8bReG0orREjVtdzg"].zprow{ border-radius:1px; } </style><div data-element-id="elm_OP6NvOPXQrKjwXkJsb3X7g" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_OP6NvOPXQrKjwXkJsb3X7g"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_Pl218yj6Qfm1g-aoOrJwRA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div style="color:inherit;"><p style="text-align:left;"><span style="font-size:16px;">Microsoft has announced that the Machine Translation Service (MTS) in SharePoint Online will stop working at the end of July 2022.&nbsp; Are you using it, and if so what can you do about it, to prepare for its retirement?</span></p></div></div>
</div><div data-element-id="elm_pqCSr0Kk1y8gPe_TZ9zF1g" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_pqCSr0Kk1y8gPe_TZ9zF1g"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div><h1><span style="font-size:20px;font-family:&quot;Work Sans&quot;;font-weight:700;color:rgb(0, 0, 0);">What is the Machine Translation Service?</span></h1></div></h2></div>
<div data-element-id="elm_Jok5RLlkXmsXuzLTXifvnA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Jok5RLlkXmsXuzLTXifvnA"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;">MTS is a back-end SharePoint service application that works in SharePoint Online and in SharePoint 2013, 2016, 2019, and SE on premise.&nbsp; It is able to carry out machine translation of several different file types including Office files and html pages, and of plain text.&nbsp; Because it is built into SharePoint, using it is free.&nbsp; Since it is a back-end service, you have to look at the different front-end functionality that may be using it.</span></p></div></div>
</div><div data-element-id="elm_7spNKQw-MaH8zNF01yZ1ow" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_7spNKQw-MaH8zNF01yZ1ow"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div><h1><span style="font-size:20px;font-family:&quot;Work Sans&quot;;font-weight:700;color:rgb(0, 0, 0);">Where is it available in SharePoint?</span></h1></div></h2></div>
<div data-element-id="elm_x9QYTOVmGSDLgUP3dH5tdA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_x9QYTOVmGSDLgUP3dH5tdA"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;">There are three places where the Machine Translation Service is available for you to use in SharePoint: translation of Variations, translation of Term Sets, and translation via the API or PowerShell.&nbsp; Let’s look at these one by one.</span></p></div></div>
</div><div data-element-id="elm_arS8vTTB-bMYVkyPU9usQA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_arS8vTTB-bMYVkyPU9usQA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-family:&quot;Work Sans&quot;;font-size:20px;color:rgb(0, 0, 0);font-weight:500;">1. Translation of Variations</span><br></h2></div>
<div data-element-id="elm_EjI4H2XFDnOdeeU4TwIS7w" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_EjI4H2XFDnOdeeU4TwIS7w"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;">If you have been using Variations on Classic sites for a while, you may realize that it used to be possible to set up machine translation for a Variation label, which could machine translate pages either automatically or on demand.&nbsp; This uses MTS as a back-end.&nbsp; In September 2018, the user interface to machine translate Variation labels or classic pages was removed from SharePoint Online.&nbsp; The functionality itself persisted, that is to say if you had previously set up a Variation label with automatic translation before then, MTS continued translating any new pages automatically, but you simply couldn’t set it up for any new Variation labels.</span></p></div></div>
</div><div data-element-id="elm_UfDb8MFKNChiJulB7GiLaw" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_UfDb8MFKNChiJulB7GiLaw"] .zpimage-container figure img { width: 372px !important ; height: 124px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_UfDb8MFKNChiJulB7GiLaw"] .zpimage-container figure img { width:372px ; height:124px ; } } @media (max-width: 767px) { [data-element-id="elm_UfDb8MFKNChiJulB7GiLaw"] .zpimage-container figure img { width:372px ; height:124px ; } } [data-element-id="elm_UfDb8MFKNChiJulB7GiLaw"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-variations.png" width="372" height="124" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_Z3gozh4NXF_pw9hlGDdHDw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_Z3gozh4NXF_pw9hlGDdHDw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div><h2><span style="font-family:&quot;Work Sans&quot;;font-size:20px;font-weight:500;color:rgb(0, 0, 0);">2. Translation of Term Sets</span></h2></div></h2></div>
<div data-element-id="elm_RNzQOijfT0VhN9j68dbGLA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_RNzQOijfT0VhN9j68dbGLA"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p style="font-size:11pt;">If you have created a term set in the term store, and you have set it up to have working languages in addition to the default language, then you have the option to machine translate the terms in a term set on demand, using the MTS.</p><p style="font-size:11pt;"><br></p><p style="font-size:11pt;">In the SharePoint Admin Centre, under Content Services, select “Term store”</p></div></div>
</div><div data-element-id="elm_HmzjwGcGUEuJfmP5UZ0GhQ" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_HmzjwGcGUEuJfmP5UZ0GhQ"] .zpimage-container figure img { width: 272px !important ; height: 108px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_HmzjwGcGUEuJfmP5UZ0GhQ"] .zpimage-container figure img { width:272px ; height:108px ; } } @media (max-width: 767px) { [data-element-id="elm_HmzjwGcGUEuJfmP5UZ0GhQ"] .zpimage-container figure img { width:272px ; height:108px ; } } [data-element-id="elm_HmzjwGcGUEuJfmP5UZ0GhQ"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-term-store.png" width="272" height="108" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_PZw0WpPpvWb3wpjLry_T4w" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_PZw0WpPpvWb3wpjLry_T4w"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p style="font-size:11pt;">At any point, you can add working languages to a term store.</p></div></div>
</div><div data-element-id="elm_ezyulvm-SfGbEennuOvDXg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_ezyulvm-SfGbEennuOvDXg"] .zpimage-container figure img { width: 624px !important ; height: 452px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_ezyulvm-SfGbEennuOvDXg"] .zpimage-container figure img { width:624px ; height:452px ; } } @media (max-width: 767px) { [data-element-id="elm_ezyulvm-SfGbEennuOvDXg"] .zpimage-container figure img { width:624px ; height:452px ; } } [data-element-id="elm_ezyulvm-SfGbEennuOvDXg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-Term-store1.png" width="624" height="452" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_UfMUTQ9uicxV1WPMSaK8ug" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_UfMUTQ9uicxV1WPMSaK8ug"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;">Inside the term store, individual term sets provide the option to create translations to the other working languages.&nbsp; Under Translation, select Manage</span></p></div></div>
</div><div data-element-id="elm_qWGzTNOgU2SXFDrJIOxZZA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_qWGzTNOgU2SXFDrJIOxZZA"] .zpimage-container figure img { width: 624px !important ; height: 442px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_qWGzTNOgU2SXFDrJIOxZZA"] .zpimage-container figure img { width:624px ; height:442px ; } } @media (max-width: 767px) { [data-element-id="elm_qWGzTNOgU2SXFDrJIOxZZA"] .zpimage-container figure img { width:624px ; height:442px ; } } [data-element-id="elm_qWGzTNOgU2SXFDrJIOxZZA"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Sharepoint-term-store2.png" width="624" height="442" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_ytCMOLWdZfhQR8ZICSTlMw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_ytCMOLWdZfhQR8ZICSTlMw"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;">This will bring up the translation options.</span></p></div></div>
</div><div data-element-id="elm_RPV8ez56Vab8EZ7tC1aqJA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_RPV8ez56Vab8EZ7tC1aqJA"] .zpimage-container figure img { width: 588px !important ; height: 418px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_RPV8ez56Vab8EZ7tC1aqJA"] .zpimage-container figure img { width:588px ; height:418px ; } } @media (max-width: 767px) { [data-element-id="elm_RPV8ez56Vab8EZ7tC1aqJA"] .zpimage-container figure img { width:588px ; height:418px ; } } [data-element-id="elm_RPV8ez56Vab8EZ7tC1aqJA"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-translation-options.png" width="588" height="418" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm__h7pEd3XEOx7L0c751tk5g" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm__h7pEd3XEOx7L0c751tk5g"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;">One of the options is Machine translation.&nbsp; Press Start.&nbsp; You will then have to select one language to translate to.&nbsp; You can come back later and choose the other languages one by one.</span></p></div></div>
</div><div data-element-id="elm_T1208Ghu89AKx4LV1Dicsw" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_T1208Ghu89AKx4LV1Dicsw"] .zpimage-container figure img { width: 380px !important ; height: 386px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_T1208Ghu89AKx4LV1Dicsw"] .zpimage-container figure img { width:380px ; height:386px ; } } @media (max-width: 767px) { [data-element-id="elm_T1208Ghu89AKx4LV1Dicsw"] .zpimage-container figure img { width:380px ; height:386px ; } } [data-element-id="elm_T1208Ghu89AKx4LV1Dicsw"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-machine-translation.png" width="380" height="386" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_SGeuXrjDxFb1liVqUvaKEA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_SGeuXrjDxFb1liVqUvaKEA"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;">Translation is often quite slow.&nbsp; It is using the MTS in the back-end.&nbsp; You may have to wait a while and if you are the first person to use it that day, it might time out before the service has a chance to fully start up and you may have to start again.</span></p></div></div>
</div><div data-element-id="elm_7sknmqdKIJAwjoH3Kvbn1g" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_7sknmqdKIJAwjoH3Kvbn1g"] .zpimage-container figure img { width: 304px !important ; height: 156px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_7sknmqdKIJAwjoH3Kvbn1g"] .zpimage-container figure img { width:304px ; height:156px ; } } @media (max-width: 767px) { [data-element-id="elm_7sknmqdKIJAwjoH3Kvbn1g"] .zpimage-container figure img { width:304px ; height:156px ; } } [data-element-id="elm_7sknmqdKIJAwjoH3Kvbn1g"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-machine-translation2.png" width="304" height="156" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_YhE5fvBfXNyYhh3cktSMKA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_YhE5fvBfXNyYhh3cktSMKA"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p style="font-size:11pt;">Once the term set is translated, the text will be fully translated to the other languages and the translated version of the term site is (often) what will be shown to the user based on their language.</p></div></div>
</div><div data-element-id="elm_YcYIOxzgEZV8OXdxJQLgtA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_YcYIOxzgEZV8OXdxJQLgtA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div><h2><span style="font-family:&quot;Work Sans&quot;;font-size:20px;font-weight:500;color:rgb(0, 0, 0);">3. Translation via the API or PowerShell</span></h2></div></h2></div>
<div data-element-id="elm_dy1Q430wqoJiNUgL4qK7eA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_dy1Q430wqoJiNUgL4qK7eA"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;">Without going into too much detail, the translation capability of the MTS is available via CSOM or REST.&nbsp; That means it can be called from C#, JavaScript, or PowerShell.&nbsp; The MTS API lets you translate either a short text or a supported document or even an entire folder or library, either using a stream or a SharePoint file URL.&nbsp; In the back-end it is using MTS.&nbsp; It is possible that one of the customizations or products that you use are calling this API.&nbsp; If you have custom code or apps that generate some translation, there are good chances that it is using the API to call MTS.</span></p></div></div>
</div><div data-element-id="elm_18BjRiIWeh_3MvI2uAqviw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_18BjRiIWeh_3MvI2uAqviw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div><h1><span style="font-size:20px;font-family:&quot;Work Sans&quot;;font-weight:700;color:rgb(0, 0, 0);">What will no longer work?</span></h1></div></h2></div>
<div data-element-id="elm_NhywRpuiZ6JzWHQ-5LyVBQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_NhywRpuiZ6JzWHQ-5LyVBQ"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><p><span>On March 7, 2022, Microsoft announced that the Machine Translation Service in SharePoint Online will be retired at the end of July 2022.&nbsp; Existing automated translation in Variations will stop working and the APIs will be retired.&nbsp; Calls to the APIs will result in an error.&nbsp; The full announcement is here:</span></p><p><span><a href="https://devblogs.microsoft.com/microsoft365dev/end-of-service-for-sharepoint-online-machine-translation-service-and-apis/" title="https://devblogs.microsoft.com/microsoft365dev/end-of-service-for-sharepoint-online-machine-translation-service-and-apis/" rel="">https://devblogs.microsoft.com/microsoft365dev/end-of-service-for-sharepoint-online-machine-translation-service-and-apis/</a></span></p><p><br></p><p><span>This means that in August 2022, existing translation of Variations, which had survived the 2018 deprecation, will stop working.&nbsp; New pages will be copied to the Variation label but not translated.&nbsp; Any customizations or apps that you use which use the MTS API will start returning errors.</span></p><p><span><br></span></p><p><span>The announcement is not explicit that the machine translation of term sets will also be discontinued, but even if it is not retired in July you should be prepared to see it disappear soon like all other uses of the Machine Translation Service.&nbsp; If it is discontinued, then term sets that have already been translated will stay translated, but any new terms or term sets will have to be translated manually by humans.</span></p></div></div></div></div>
</div><div data-element-id="elm__toYXtkVYXAveoDrSg-IyQ" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm__toYXtkVYXAveoDrSg-IyQ"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div><h1><span style="font-family:&quot;Work Sans&quot;;font-size:20px;font-weight:700;color:rgb(0, 0, 0);">What to do about it</span></h1></div></h2></div>
<div data-element-id="elm_1OSobI8iUQtowW0nV2B_Fw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_1OSobI8iUQtowW0nV2B_Fw"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:16px;">Maybe it doesn’t apply to you and no action is required.</span></p><ul><li>If you don’t use the machine translation features described above nor any customization that uses the Machine Translation Service, don’t worry about it.&nbsp; It’s not the ability of Variations to display classic pages in different languages that is disappearing, it is the machine translation of those pages, a feature that you have not been able to set up for nearly 4 years.&nbsp; Similarly, it’s not the ability to display term set terms in different languages that is disappearing, it is the machine translation of those terms.</li></ul><ul><li>If you are using SharePoint on premise, the announcement does not affect you, it is only for SharePoint Online. MTS will continue to work on premise.</li></ul><ul><li>If you are using the multilingual page publishing feature of modern communication sites, you will similarly not be affected since SharePoint never offered machine translation for those pages in the first place.</li></ul><p><span><br></span></p><p><span>If you <u>are</u> using one of those features, then you will either start translating manually of find a different alternative.</span></p><p><span>The announcement suggests that you can use modern communication sites or Azure translation APIs as an alternative.&nbsp; Are they alternatives to the loss of machine translation?&nbsp; Modern communication sites do not offer machine translation at all, and Azure translation APIs do not support any modern pages.&nbsp; In fact, the majority of types of classic pages are also not supported by Azure translation APIs.&nbsp; For document translation, Azure Translation APIs support roughly the same document types as MTS, but they are not a simple replacement for the MTS API.&nbsp; They do not support streams or SharePoint library URLs.&nbsp; Instead, they support text strings of limited length or Azure blob storage containers.&nbsp; That means that some extra complexity and security considerations if you are trying to port the code yourself, while the MTS API call was often a single line of code.</span></p><p><span><br></span></p><p><span>If you are using the MTS API to translate short lines of plain text rather than documents, then the Azure Translation APIs are a viable alternative.&nbsp; It will take some re-coding but a reasonable amount of it, since&nbsp; the Azure API for translating short strings is much simpler than the API for translating documents.</span></p><p><span><br></span></p><p><span>If you use PointFire products to translate your pages, documents, or user interface, then little will change.&nbsp; The <u>free</u> version of the app will need some additional configuration in order to use the Azure Translation API, making it a bit less free to you (you will have to pay Microsoft about $15 USD per million characters, plus a few cents for the Azure storage operations). The <u>paid</u> version of PointFire Translator has been using the Azure Translation API all along, and it has been parsing SharePoint documents and pages to extract strings so that you don’t need to use Azure blob storage.&nbsp; No change is required.</span></p><p><span><br></span></p><p>Additionally, <a href="http://pointfire.com" title="PointFire" rel="">PointFire</a> already supports not only Classic pages like Variations but also Communication sites, whether they use Multilingual Page Publishing feature or not, and in fact every type of page, modern or classic, on any SharePoint site, as well as documents, lists, and metadata.</p></div>
</div></div></div></div><div data-element-id="elm_VaUz0n5O9TUt92jkPB7YZw" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_VaUz0n5O9TUt92jkPB7YZw"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_c1b6uSAWIOYYtpw4R5VjKw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_c1b6uSAWIOYYtpw4R5VjKw"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;">If you want to know how this end of service affects you, talk to us for a free consultation and absolutely no commitment or need to use PointFire! We'll help you figure out your next move.</span><br></p></div>
</div><div data-element-id="elm_KwjvEtLLPvgm1ttLEGTeDw" data-element-type="button" class="zpelement zpelem-button "><style> [data-element-id="elm_KwjvEtLLPvgm1ttLEGTeDw"].zpelem-button{ font-family:'Work Sans'; font-size:16px; font-weight:500; border-radius:1px; } </style><div class="zpbutton-container zpbutton-align-left "><style type="text/css"> [data-element-id="elm_KwjvEtLLPvgm1ttLEGTeDw"] .zpbutton.zpbutton-type-primary{ background-color:#3C9BF3 !important; font-family:'Work Sans'; font-size:16px; font-weight:500; border-radius:100px; } </style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none " href="mailto:sales@icefire.ca?subject=End%20of%20SharePoint%20Machine%20Translation"><span class="zpbutton-content">Let's talk</span></a></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Fri, 06 May 2022 11:35:31 -0400</pubDate></item><item><title><![CDATA[Microsoft Editor for SharePoint and how to overcome its language issues]]></title><link>https://blog.icefire.ca/blogs/post/sharepoint-microsoft-editor-how-to-overcome-language-issues</link><description><![CDATA[<img align="left" hspace="5" src="https://blog.icefire.ca/SharePoint-Spell-Check-Original.png"/>Learn how to fix several issues with the Microsoft Editor for SharePoint]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_VPoDB7FzTiOIk-KwkmmB9w" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_l3oVvcSYTn2XbIk_2DqW7w" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_RySWiXk9Q6OEcuC5g1FxrA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_RySWiXk9Q6OEcuC5g1FxrA"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_gr4ihEXURvqSH7gYEgSdTA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_gr4ihEXURvqSH7gYEgSdTA"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><div style="color:inherit;"><p style="text-align:left;"><span style="font-size:16px;">In late December 2021, SharePoint introduced a spell check feature when editing modern pages.&nbsp; This change did not spend very long in the roadmap before being released.&nbsp; More details about the roadmap and the feature can be found here</span></p><p style="text-align:left;"><span style="font-size:16px;"></span></p><p style="text-align:left;"><span><a href="https://www.microsoft.com/microsoft-365/roadmap?featureid=88534" rel="">https://www.microsoft.com/microsoft-365/roadmap?featureid=88534</a><br></span></p><p style="text-align:left;"><br></p><div style="color:inherit;"><div style="color:inherit;"><p style="text-align:left;"><span>The new feature is based on the Microsoft Editor service, <a href="https://support.microsoft.com/en-us/office/microsoft-editor-checks-grammar-and-more-in-documents-mail-and-the-web-91ecbe1b-d021-4e9e-a82e-abc4cd7163d7">a browser extension</a> that has already been added to Word and Outlook.</span></p><p style="text-align:left;"><span style="font-size:11pt;color:inherit;text-align:center;"><br></span></p><p style="text-align:left;"><span style="font-size:16px;color:inherit;text-align:center;">When it works correctly, it is very useful and easy to use.&nbsp; However, it is a bit resource-intensive and has serious language issues.&nbsp; Soon after it came out, people started to complain about it and wanting to turn it off, especially people whose SharePoint pages had text in more than one language.&nbsp; There was no way to turn it off nor any easy way to configure it.</span></p><p style="text-align:left;"><span style="font-size:16px;color:inherit;text-align:center;"><br></span></p><p style="text-align:left;"><span style="font-size:16px;color:inherit;text-align:center;">For a small example of its language issues see in the image below, there is text in three languages, English, French, and German.&nbsp; In this case the user interface language is French.&nbsp; The Microsoft Editor spell checker takes issue with the English and the French text, filling it with red squiggly lines, but is just fine with the German text.&nbsp; Why?</span></p><p style="text-align:left;"><span style="font-size:16px;color:inherit;text-align:center;"><br></span></p></div></div></div></div>
</div><div data-element-id="elm_kw1o37bF0o4Bm4yN5ojF7A" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_kw1o37bF0o4Bm4yN5ojF7A"] .zpimage-container figure img { width: 624px !important ; height: 356px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_kw1o37bF0o4Bm4yN5ojF7A"] .zpimage-container figure img { width:624px ; height:356px ; } } @media (max-width: 767px) { [data-element-id="elm_kw1o37bF0o4Bm4yN5ojF7A"] .zpimage-container figure img { width:624px ; height:356px ; } } [data-element-id="elm_kw1o37bF0o4Bm4yN5ojF7A"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-spell-check.png" width="624" height="356" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_a5C5sDPCHTqWaAloj7H2Kg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_a5C5sDPCHTqWaAloj7H2Kg"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">It turns out in this example that the site’s template is German.&nbsp; It doesn’t matter that the text is not in that language, or that the user’s language is not that language, Microsoft Editor treats it all as if it were in German.&nbsp; It does no language detection.&nbsp; For longer text, the screen slowly fills with red squiggly lines under every word while you have to wait.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;"></span></p><div style="color:inherit;"><p><span style="font-size:16px;">There is an exception to this: Communication sites with the&nbsp;</span><span style="color:inherit;">Multilingual&nbsp;Publishing feature&nbsp;</span><span style="color:inherit;">turned on.&nbsp; For the source page in the original site language, it accepts that language and rejects others</span></p><p><span style="font-size:16px;"><br></span></p></div></div></div>
</div><div data-element-id="elm_UZjCi7uWntjO7aWLIpojWA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_UZjCi7uWntjO7aWLIpojWA"] .zpimage-container figure img { width: 500px ; height: 255.47px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_UZjCi7uWntjO7aWLIpojWA"] .zpimage-container figure img { width:500px ; height:255.47px ; } } @media (max-width: 767px) { [data-element-id="elm_UZjCi7uWntjO7aWLIpojWA"] .zpimage-container figure img { width:500px ; height:255.47px ; } } [data-element-id="elm_UZjCi7uWntjO7aWLIpojWA"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-medium zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-Spell-Check-Original.png" width="500" height="255.47" loading="lazy" size="medium" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm__Gm9C9rkx6glU2QQ-axJBA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm__Gm9C9rkx6glU2QQ-axJBA"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;">For the “translated” (copied) pages, it is the other way around</span></p></div></div>
</div><div data-element-id="elm_0hGlL0ip8MMzUDObDbivPw" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_0hGlL0ip8MMzUDObDbivPw"] .zpimage-container figure img { width: 624px !important ; height: 254px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_0hGlL0ip8MMzUDObDbivPw"] .zpimage-container figure img { width:624px ; height:254px ; } } @media (max-width: 767px) { [data-element-id="elm_0hGlL0ip8MMzUDObDbivPw"] .zpimage-container figure img { width:624px ; height:254px ; } } [data-element-id="elm_0hGlL0ip8MMzUDObDbivPw"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-Spell-Check-Original-french.png" width="624" height="254" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_lgjgjTIzSLwYr2WYiE70Nw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_lgjgjTIzSLwYr2WYiE70Nw"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:16px;">This does not work every time for me, but it is difficult to reproduce.&nbsp; What about if you’re not using the Multilingual Publishing feature, like for example on a Teams sites where the feature is not available, or if there is a need to have text in more than one language, or to not use the feature?</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">Well, there is always the plug-in.&nbsp; The <a href="https://support.microsoft.com/en-us/office/check-grammar-and-spelling-with-the-microsoft-editor-browser-extension-49dd8e1b-3dfa-4ba7-a40e-1bc120f9a71c">Microsoft Editor browser plug-in</a> for Edge and Chrome is a different version of the same Microsoft Editor.&nbsp; Unlike the version in SharePoint, it does support multiple languages.&nbsp; Its configuration is a bit clunky and hard to find, but you can set up to three proofing languages with the plug-in.&nbsp; You must go to a site other than Office 365 that has a multi-line editor and make a spelling error</span></p><p><span style="font-size:16px;"><br></span></p></div></div></div>
</div><div data-element-id="elm_F8eMEjKcmR2MPPUDt53diA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_F8eMEjKcmR2MPPUDt53diA"] .zpimage-container figure img { width: 392px !important ; height: 464px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_F8eMEjKcmR2MPPUDt53diA"] .zpimage-container figure img { width:392px ; height:464px ; } } @media (max-width: 767px) { [data-element-id="elm_F8eMEjKcmR2MPPUDt53diA"] .zpimage-container figure img { width:392px ; height:464px ; } } [data-element-id="elm_F8eMEjKcmR2MPPUDt53diA"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/PointFire-spell-check1.png" width="392" height="464" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_pX5Yl346AStCQZUJ94Kp0Q" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_pX5Yl346AStCQZUJ94Kp0Q"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">While we’re here, notice that it is showing spelling suggestions in both English and French.&nbsp; Now click on the three dots to find the “Editor settings”.&nbsp; The plug-in is highly configurable.</span></p><p><span style="font-size:16px;"><br></span></p></div></div>
</div><div data-element-id="elm_9F4zYBggFa92XFqyCimxgw" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_9F4zYBggFa92XFqyCimxgw"] .zpimage-container figure img { width: 624px !important ; height: 328px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_9F4zYBggFa92XFqyCimxgw"] .zpimage-container figure img { width:624px ; height:328px ; } } @media (max-width: 767px) { [data-element-id="elm_9F4zYBggFa92XFqyCimxgw"] .zpimage-container figure img { width:624px ; height:328px ; } } [data-element-id="elm_9F4zYBggFa92XFqyCimxgw"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Microsoft-editor.png" width="624" height="328" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_9DgvTmdV11TMG7fH4HM_nA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_9DgvTmdV11TMG7fH4HM_nA"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">If you click on “Manage languages” you can select the languages that you want it to recognize.</span></p><p><span style="font-size:16px;"><br></span></p></div></div>
</div><div data-element-id="elm_mvwy6MlM69S66bJGPr9r0Q" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_mvwy6MlM69S66bJGPr9r0Q"] .zpimage-container figure img { width: 576px !important ; height: 414px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_mvwy6MlM69S66bJGPr9r0Q"] .zpimage-container figure img { width:576px ; height:414px ; } } @media (max-width: 767px) { [data-element-id="elm_mvwy6MlM69S66bJGPr9r0Q"] .zpimage-container figure img { width:576px ; height:414px ; } } [data-element-id="elm_mvwy6MlM69S66bJGPr9r0Q"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Microsoft-editor-proofing-language.png" width="576" height="414" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_xPITOH_TgUHX9jYi3bffNA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_xPITOH_TgUHX9jYi3bffNA"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;">You can only choose up to three languages and they must be among the languages for which you have configured your browser.&nbsp; When used in conjunction with the SharePoint feature, they must all be one of the top three browser languages.&nbsp; Certain settings are language-specific, for example you can check for formality in French but not in English, and in fact a lot of the rules to check only occur in one language. Does selecting languages in the plug-in work within SharePoint?&nbsp; It did a few weeks ago, but today it while writing this blog post, it’s only partly working.&nbsp; Here is what <u>is</u> working today.</span></p><p><span style="font-size:16px;"><br></span></p></div></div>
</div><div data-element-id="elm_FgWmJ4zrw8zbvH7M98Hdbg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_FgWmJ4zrw8zbvH7M98Hdbg"] .zpimage-container figure img { width: 480px !important ; height: 482px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_FgWmJ4zrw8zbvH7M98Hdbg"] .zpimage-container figure img { width:480px ; height:482px ; } } @media (max-width: 767px) { [data-element-id="elm_FgWmJ4zrw8zbvH7M98Hdbg"] .zpimage-container figure img { width:480px ; height:482px ; } } [data-element-id="elm_FgWmJ4zrw8zbvH7M98Hdbg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-Editor2.png" width="480" height="482" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_1H_nKBMfLsJjjeH6hAh85A" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_1H_nKBMfLsJjjeH6hAh85A"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;font-size:16px;"><br></span></p><p><span style="color:inherit;font-size:16px;">I have configured the plug-in to accept French and English.&nbsp; Within SharePoint, the Microsoft Editor now not only accepts both languages, but it also gives me alternative spelling options in English and in French when it doesn’t recognize a word.&nbsp; But look carefully at the screen shot above.&nbsp; Notice the smaller dropdown right behind the Microsoft Editor dropdown?&nbsp; Yeah, there are two instances of the Microsoft Editor dropdown, one with spelling choices just in English and one in front with spelling choices in the configured languages.&nbsp; It’s not quite perfect yet.&nbsp; If you manage to close the front dropdown and not the back one, you see that the hidden dropdown is the original one, with spelling suggestions in English only</span><br></p></div>
</div><div data-element-id="elm_U7xFRclZfcYOHr4UTeuS7Q" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_U7xFRclZfcYOHr4UTeuS7Q"] .zpimage-container figure img { width: 348px !important ; height: 232px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_U7xFRclZfcYOHr4UTeuS7Q"] .zpimage-container figure img { width:348px ; height:232px ; } } @media (max-width: 767px) { [data-element-id="elm_U7xFRclZfcYOHr4UTeuS7Q"] .zpimage-container figure img { width:348px ; height:232px ; } } [data-element-id="elm_U7xFRclZfcYOHr4UTeuS7Q"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Microsoft-editor3.png" width="348" height="232" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_T5IRmb_iczUlk8erLM-Ffw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_T5IRmb_iczUlk8erLM-Ffw"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">Do you think that all your content creators are going to be able to configure their browsers and their browser plug-ins to select a list of possible languages?&nbsp; Maybe not.&nbsp; So what can you do on the server to turn off the feature altogether?&nbsp; Until very recently that was not an option either.</span></p><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">In late April 2022, a new feature appeared unannounced with <a href="https://support.microsoft.com/en-us/office/add-text-tables-and-images-to-your-page-with-the-text-web-part-729c0aa1-bc0d-41e3-9cde-c60533f2c801">a brief description</a> on the Microsoft site.&nbsp; While editing a page, select Page Details at the top of a page.&nbsp; You may have to publish the page first.&nbsp; In the page details pane, you will see</span></p></div></div></div>
</div><div data-element-id="elm_WZfk65cXgVqjNezFFjF_mQ" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_WZfk65cXgVqjNezFFjF_mQ"] .zpimage-container figure img { width: 504px !important ; height: 128px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_WZfk65cXgVqjNezFFjF_mQ"] .zpimage-container figure img { width:504px ; height:128px ; } } @media (max-width: 767px) { [data-element-id="elm_WZfk65cXgVqjNezFFjF_mQ"] .zpimage-container figure img { width:504px ; height:128px ; } } [data-element-id="elm_WZfk65cXgVqjNezFFjF_mQ"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/SharePoint-editor-spell-check-toggle.png" width="504" height="128" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_ZCQShMY1CFh2Wye5pimIjA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_ZCQShMY1CFh2Wye5pimIjA"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:16px;"><br></span></p><p><span style="font-size:16px;">You can use the slider to toggle the Microsoft Editor on this page.&nbsp; You have to repeat it on each page.&nbsp; There is no simple way to toggle it programmatically because it’s not a regular page property, and no way to set it for an entire site or tenant.</span></p><p><span style="font-size:16px;">Maybe some day the SharePoint version of Microsoft Editor will become as configurable as the other versions or will do proper language detection, but until that happens the two options are to either turn it off on a per-page basis or to install and configure better language detection on a per-workstation basis.</span></p></div></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Wed, 04 May 2022 12:36:04 -0400</pubDate></item><item><title><![CDATA[JSON for different text in different languages]]></title><link>https://blog.icefire.ca/blogs/post/json-for-different-text-in-different-languages</link><description><![CDATA[<img align="left" hspace="5" src="https://blog.icefire.ca/Multilingual-SharePoint.png"/>Suppose that you have a list where you want to display different text depending on the language of the user. Here is how to do it.]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_IPCkAVs5QSK_mj0mXfsDIQ" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_4ueW3AuWRx6OSrEmZntc1Q" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_XRB8EAA6QsKbTovvHi11WA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"> [data-element-id="elm_XRB8EAA6QsKbTovvHi11WA"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_OBHAW-7LRMSW6eI2noQAAg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_OBHAW-7LRMSW6eI2noQAAg"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><div><div><p style="color:inherit;text-align:left;"><span style="font-size:16px;">Suppose that you have a list where you want to display different text depending on the language of the user.&nbsp; How do you do it?</span></p><p style="color:inherit;text-align:left;"><span style="font-size:16px;"><br></span></p><p style="color:inherit;text-align:left;">This blog post details one method.<a href="https://blog.icefire.ca/blogs/post/language-dependent-json-column-formatting-using-the-lcid-token" title=" You can also check&nbsp;Language-dependent JSON column formatting using the @lcid token." target="_blank" rel=""> You can also check&nbsp;</a><span style="color:rgb(11, 27, 45);font-family:&quot;Work Sans&quot;;"><a href="https://blog.icefire.ca/blogs/post/language-dependent-json-column-formatting-using-the-lcid-token" title=" You can also check&nbsp;Language-dependent JSON column formatting using the @lcid token." target="_blank" rel="">Language-dependent JSON column formatting using the @lcid token.</a></span></p><p style="color:inherit;text-align:left;"><span style="font-size:16px;"><br></span></p><p style="color:inherit;text-align:left;"><span style="font-size:16px;">You can use JSON column formatting for a lot of things, but it doesn’t support managed metadata, whose column values can be language-dependent.&nbsp; It also doesn’t let you refer to the display value of column names, which can also differ by language, only the internal name, which doesn’t.&nbsp; Similarly, no relevant state variables.&nbsp; You can, however, refer to dates and to item values in other columns.</span></p><p style="color:inherit;text-align:left;"><span style="font-size:16px;"><br></span></p><p style="color:inherit;text-align:left;"><span style="font-size:16px;">Anything based on dates is unreliable. Date formats do differ by language, but not necessarily based on the user’s current UI language. For example, “toString(@now)” will generate a date/time string that is language-dependent, but based on languages other than the user’s UI language.&nbsp; You can read the string in English and find the word “Time” in the time zone, while in Spanish the string is “Hora”.&nbsp; Most of the time, not always.&nbsp; There are a couple of time zones whose official name in Spanish have the word “Tiempo” rather than “Hora”.&nbsp;</span></p><p style="color:inherit;text-align:left;"><span style="font-size:16px;"><br></span></p><p style="color:inherit;text-align:left;"><span style="font-size:16px;">For a JavaScript-generated date like “@now”, formatting is based on the computer and on the browser, not on SharePoint settings.&nbsp; JavaScript reads the time zone that is set by the browser's host operating system, and the language of formatting seems to be the language of the browser. This is not necessarily the same as the currently selected language from the browser's list of accepted languages, and even if it was, the user's interface language is often set based on the user's profile rather than by the browser. If you use a SharePoint-generated date instead, like the value of a date column, formatting can depend on the user's <u>locale</u> setting and whether they checked &quot;Always use my personal settings&quot; in their profile, but again the locale for the purpose of date formatting is not the same thing as the user's language.</span></p><p style="color:inherit;text-align:left;"><span style="font-size:16px;"><br></span></p><p style="color:inherit;text-align:left;"><span style="font-size:16px;">A better solution is to add a yes/no (Boolean) column called &quot;Yes&quot; and, you guessed it, make it always true. Its displayValue will be &quot;Yes&quot; or &quot;Oui&quot; or &quot;Si&quot; or whatever, based on the user's current display language. “No” can’t distinguish between English, Spanish and Italian, “Yes” is better although it can’t distinguish between German, Dutch, and Danish.&nbsp; A more complex solution that might work with more languages is to use an Approval Status column, whose displayValue is also localized, but that has the side effect that every item will require approval.</span></p><p style="color:inherit;text-align:left;"><span style="font-size:16px;"><br></span></p><p style="color:inherit;text-align:left;"><span style="font-size:16px;">Here is a small snippet of code for a column</span></p></div></div></div>
</div><div data-element-id="elm_PwDf-PCLwzvxeI0KbkDVnA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_PwDf-PCLwzvxeI0KbkDVnA"] .zpimage-container figure img { width: 936px !important ; height: 84px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_PwDf-PCLwzvxeI0KbkDVnA"] .zpimage-container figure img { width:936px ; height:84px ; } } @media (max-width: 767px) { [data-element-id="elm_PwDf-PCLwzvxeI0KbkDVnA"] .zpimage-container figure img { width:936px ; height:84px ; } } [data-element-id="elm_PwDf-PCLwzvxeI0KbkDVnA"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Column-snipet.png" width="936" height="84" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_JciM23GH2lJD1W3GC3XIVA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_JciM23GH2lJD1W3GC3XIVA"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p style="color:inherit;"><span style="font-size:16px;">In this case, we are replacing the text of the column with this expression</span></p><div><p><span><span style="color:rgb(192, 57, 43);">&quot;txtContent&quot;</span><span style="color:rgb(0, 0, 0);">:</span><span style="color:rgb(192, 57, 43);"></span><span style="color:rgb(41, 128, 185);">&quot;=if == 'Oui', 'fr', if([$Yes.displayValue] == 'Yes', 'en', 'unk'))&quot;</span></span></p><p><span><span style="color:rgb(41, 128, 185);"><br></span></span></p><p><span></span></p><div style="color:inherit;"><div style="color:inherit;"><p><span style="font-size:16px;">If the language is French, then [$Yes.displayValue] will have a value of “Oui”, so txtContent will be replaced with the string “fr”, if it’s “Yes” then the value will be “en”.&nbsp; &nbsp;Of course, for a practical application you will have a more complex expression that checks the value of the current column and also uses this type of expression to find the language, to determine whether to change the value of the field to its equivalent in the user’s language.</span></p><p><span style="font-size:16px;"><br></span></p><div style="color:inherit;"><p><span style="font-size:16px;">Here is a slightly more complex example, for the Progress column of the Recruitment Tracker list template.&nbsp; Here, we want to translate the choice items “New application” and “Active” to French when the user’s language is French and to German when the user’s language is German.</span></p></div></div></div></div></div>
</div><div data-element-id="elm_2J9T7XfhdeIiIyOTvk2ayg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_2J9T7XfhdeIiIyOTvk2ayg"] .zpimage-container figure img { width: 500px ; height: 469.57px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_2J9T7XfhdeIiIyOTvk2ayg"] .zpimage-container figure img { width:500px ; height:469.57px ; } } @media (max-width: 767px) { [data-element-id="elm_2J9T7XfhdeIiIyOTvk2ayg"] .zpimage-container figure img { width:500px ; height:469.57px ; } } [data-element-id="elm_2J9T7XfhdeIiIyOTvk2ayg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-medium zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Multilingual-SharePoint.png" width="500" height="469.57" loading="lazy" size="medium" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_HZFJIedDj159BTUSZqDitQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_HZFJIedDj159BTUSZqDitQ"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;">To achieve this, we put together an if() expression that checks the value of the Progress column and the display value of Yes column.&nbsp; Some additional spacing was added for readability.&nbsp; The column formatting, for example the colors, is based on the value of the Progress column (in English in this case), and that doesn’t change, what changes here is what is displayed</span></p></div></div>
</div><div data-element-id="elm_DkI9t3I2sGDonhq4mmObvA" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_DkI9t3I2sGDonhq4mmObvA"] .zpimage-container figure img { width: 800px ; height: 165.81px ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_DkI9t3I2sGDonhq4mmObvA"] .zpimage-container figure img { width:500px ; height:103.63px ; } } @media (max-width: 767px) { [data-element-id="elm_DkI9t3I2sGDonhq4mmObvA"] .zpimage-container figure img { width:500px ; height:103.63px ; } } [data-element-id="elm_DkI9t3I2sGDonhq4mmObvA"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-left zpimage-size-large zpimage-tablet-fallback-large zpimage-mobile-fallback-large hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/Multilingual-SharePoint-1.png" width="500" height="103.63" loading="lazy" size="large" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_Aef8wEH2Ib0mU-9Z0iThzg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Aef8wEH2Ib0mU-9Z0iThzg"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="color:inherit;"><p><span style="font-size:16px;">Remember, the “Yes” column will also have to be part of the view for this rendering to work.</span></p><p><br></p><p><span style="font-weight:bold;">Will you try this? Leave us your questions in the comments.</span></p><p><br></p></div></div>
</div><div data-element-id="elm_bmre8t8saQu8kYiyLh1QXw" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_bmre8t8saQu8kYiyLh1QXw"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_dFI5Ikw9j7Ttd65faFV1QQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_dFI5Ikw9j7Ttd65faFV1QQ"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="font-weight:700;font-family:&quot;Work Sans&quot;;font-size:16px;">Related Posts</span></p><p><span style="font-weight:700;font-family:&quot;Work Sans&quot;;font-size:16px;"><br></span></p><p><span style="font-weight:700;font-family:&quot;Work Sans&quot;;font-size:16px;"></span></p><div style="color:inherit;"><h1><span style="font-family:&quot;Work Sans&quot;;font-size:16px;"><a href="https://blog.icefire.ca/blogs/post/localizing-group-by-headers-for-choice-columns-using-json-view-formatting" target="_blank" rel="">Localizing &quot;group by&quot; headers for choice columns using JSON view formatting in SharePoint Online</a></span></h1><div><div style="color:inherit;"><h1><span style="font-size:16px;font-family:&quot;Work Sans&quot;;"><a href="https://blog.icefire.ca/blogs/post/language-dependent-json-column-formatting-this-time-it-s-the-uilcid-token" title="Language-dependent JSON column formatting: this time it's the @UIlcid token" target="_blank" rel="">Language-dependent JSON column formatting: this time it's the @UIlcid token</a></span></h1><div><div style="color:inherit;"><h3><span style="font-family:&quot;Work Sans&quot;;font-size:16px;"><a href="https://blog.icefire.ca/blogs/post/language-dependent-json-column-formatting-using-the-lcid-token" title="Language-dependent JSON column formatting using the @lcid token" target="_blank" rel="">Language-dependent JSON column formatting using the @lcid token</a></span></h3><div><div style="color:inherit;"><h3><span style="font-family:&quot;Work Sans&quot;;font-size:16px;"><a href="https://blog.icefire.ca/blogs/post/json-for-different-text-in-different-languages" title="JSON for different text in different languages" target="_blank" rel="">JSON for different text in different languages</a></span></h3><div><br></div></div></div></div></div></div></div></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Fri, 31 Dec 2021 10:40:19 -0500</pubDate></item><item><title><![CDATA[How to Translate SharePoint Online's Content Type Gallery]]></title><link>https://blog.icefire.ca/blogs/post/translate-sharepoint-online-content-type-gallery</link><description><![CDATA[<img align="left" hspace="5" src="https://blog.icefire.ca/create-content-type.png"/>How do you localize content types and site columns in the content type gallery in SharePoint Online?]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_K8zHiW4ZRISisjZnguknCA" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_TT6uVtLJSW-ztok4HhcSeA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_ZqL7IpQzRjCNqW6MNI9nMg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_qY4oDorwY3cnDczD-WamEg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_qY4oDorwY3cnDczD-WamEg"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div>How do you localize content types and site columns in the content type gallery in SharePoint Online? Most content types will inhering their&nbsp; descriptions and column names from these higher-level content types, it's important to get them right in the first place.</div></div>
</div><div data-element-id="elm_yEiQ3uZikuNC3Yg-x1hWng" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> [data-element-id="elm_yEiQ3uZikuNC3Yg-x1hWng"].zpelem-imagetext{ border-radius:1px; } </style><div data-size-tablet="size-original" data-size-mobile="size-original" data-align="left" data-tablet-image-separate="" data-mobile-image-separate="" class="zpimagetext-container zpimage-with-text-container zpimage-align-left zpimage-size-small zpimage-tablet-fallback-small zpimage-mobile-fallback-small hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/content-type-gallery.png" size="small" data-lightbox="true" style="width:283px;"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left " data-editor="true"><div><div><div><div><span style="color:inherit;font-size:16px;">If you go to the SharePoint admin center, for instance by going to &quot;https://(tenantname)-admin.sharepoint.com/&quot; you can expand the Content services menu item to get to the Content type gallery. By the way, see the Term store item there? Term stores are easily translated, but that's for another day.</span><span style="font-size:16px;"><br></span></div><div><span style="color:inherit;"><br></span></div><div><span style="font-size:16px;">To edit the content type gallery in SharePoint, select Content Type gallery.&nbsp;&nbsp;</span></div><div><span style="font-size:16px;"><br></span></div><div><span style="font-size:16px;">You can also get there directly using</span></div><div><span style="font-size:16px;">https://(tenantname)-admin.sharepoint.com/_layouts/15/online/AdminHome.aspx#/contentTypes</span></div><p><br></p><div><span style="font-size:16px;">It's easy to edit and to create content types from there, by clicking on &quot;Create content type&quot;, see image below.</span></div><p><span style="color:inherit;"><span style="font-size:16px;"><br></span></span></p><div><br></div></div></div></div></div>
</div></div><div data-element-id="elm_G92gWvlfcqEAtxhS-kE-Ew" data-element-type="image" class="zpelement zpelem-image "><style> [data-element-id="elm_G92gWvlfcqEAtxhS-kE-Ew"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="size-original" data-size-mobile="size-original" data-align="center" data-tablet-image-separate="" data-mobile-image-separate="" class="zpimage-container zpimage-align-center zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/create-content-type.png" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_6DgCoUg8cHST-cbFrtNJDA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_6DgCoUg8cHST-cbFrtNJDA"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div>You are prompted for a name and description in only one language, even though name and description support MUI (Multilingual User Interface). There is no easy way to edit the content type's name and description and the names and descriptions of the columns used in the content type in languages other than your own.<br></div><p><br></p><div>To do that you have to go to the content type hub site, a hidden site, using the fixed URL &quot;https://(tenantname).sharepoint.com/sites/contentTypeHub/&quot;</div><p><br></p><div>All the content types are on this site. To see and edit all the content types, you go here: &quot;https://(tenantname).sharepoint.com/sites/contentTypeHub/_layouts/15/mngctype.aspx&quot;</div><p><br></p><div>You could change your language and then edit the name and the description of every content type, and within each content type you could change the name and description of every site column in that language. For the site columns you could also go to &quot;https://<span style="color:inherit;">(tenantname)</span>.sharepoint.com/sites/contentTypeHub/_layouts/15/mngfield.aspx&quot; to edit the names and descriptions directly. If you have multiple languages, you can do that once for every language.</div><p><span style="color:inherit;"><img src="/Fri%20Jul%2023%202021.png" alt=""></span><span style="color:inherit;"><br></span></p><div><br></div><div><br></div><div><div>If you have a <a href="https://pointfire.com/" title="PointFire 365" rel="">PointFire 365</a> license, a much easier way to do this is to install PointFire 365 on this hidden site, and activate it with all of the languages that you might use on any site in your tenant. Then within the PointFire 365, select &quot;Translate the Interface&quot;. This will find every untranslated name and description of every content type and site column, suggest translations for your review, and apply them to the content type gallery.</div></div><div><br></div><div><span style="color:inherit;"><img src="/Fri%20Jul%2023%202021-1.png" alt=""></span><br></div><div><span style="color:inherit;"><div><br></div><div>It's a good idea to do this early on, before the content types get used on sites, so that the translated versions of content types can be available to every site, rather than having to break inheritance and translate them on each site individually.&nbsp; Isn't it automatically applied to content types when you change it in the content type hub?&nbsp; Isn't that the point of a content type hub?</div><div><br></div><div>Be careful about inheritance of the translation of site columns and content types. SharePoint does not always propagate changes made only to a translation unless some other property of the columns or content type itself has changed. You need to make a change other than translation to the column or content type in order to initiate a re-publishing.</div></span></div><div><span style="color:inherit;"><br></span></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Wed, 04 Aug 2021 17:58:46 -0400</pubDate></item><item><title><![CDATA[Microsoft Lists Templates are Unilingual]]></title><link>https://blog.icefire.ca/blogs/post/microsoft-lists-templates-are-uniligual2</link><description><![CDATA[<img align="left" hspace="5" src="https://blog.icefire.ca/download-1.png"/>Now that list creation experience is making it easier to create lists from templates, and before the ability to create your own list templates rolls o ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_Ecv0tNr4Q1qWYriTZuGelg" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_ZNoei9dmSzaIO6xLHMAkLw" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_Ulyti2UJRU6DRzrrGG6Ulg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_TA0y5sA2Q56oEseM80tRYg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_TA0y5sA2Q56oEseM80tRYg"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;margin-bottom:15px;"><span style="font-size:16px;">Now that list creation experience is making it easier to create lists from templates, and before the ability to create your own list templates rolls out, I thought I would point out that these Microsoft list templates are mostly unilingual.</span></p><p><span style="color:inherit;font-size:16px;"></span></p><p style="text-align:left;margin-bottom:15px;"><span style="font-size:16px;">Creating a new list from a template is very convenient, and it can be done in any language, and on any site, but the lists themselves are unilingual and are in the language of the user at the time that the list was created.</span></p><p style="text-align:left;margin-bottom:15px;"><span style="font-size:16px;"><br></span></p><p style="text-align:left;margin-bottom:15px;">TEST CHANGE HERE</p></div>
</div><div data-element-id="elm_ksEhK0QVnD8xVY3jJSQ2yg" data-element-type="image" class="zpelement zpelem-image "><style> [data-element-id="elm_ksEhK0QVnD8xVY3jJSQ2yg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="size-original" data-size-mobile="size-original" data-align="left" data-tablet-image-separate="" data-mobile-image-separate="" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/download-1.png" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_tW0ugeD6zMcPhp-Q1y-YEg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_tW0ugeD6zMcPhp-Q1y-YEg"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p style="margin-bottom:15px;"><span style="font-size:16px;">The language of the user depends on several things, including the alternate languages of the site.&nbsp; The Microsoft Lists site itself can have alternate languages.&nbsp; Depending on the year when your “my site” or OneDrive was created, it might have only one language or all languages activated.&nbsp; You can check this by modifying the URL while on a Microsoft Lists or OneDrive site (it’s the same site) to this:</span></p><p style="margin-bottom:15px;"><span style="font-size:16px;">https://tenant-my.sharepoint.com/personal/(youremail)/_layouts/15/muisetng.aspx</span></p><p style="margin-bottom:15px;"><span style="font-size:16px;">When a list is created from a template, the names and descriptions of the list and the columns are created using the current language of the person who is creating the list, no matter the base language of the site.&nbsp; If my language is English and I create a travel requests list, it is completely in English.</span></p><p><span style="color:inherit;font-size:16px;"></span></p><p style="margin-bottom:15px;"><span style="font-size:16px;">If I change my language and display the same list, it is also completely in English, or almost.&nbsp; In the image below, where my language is French, you see that the word ‘’Today” in the date fields is replaced with the word “Aujourd’hui”</span></p></div>
</div><div data-element-id="elm_UOeFCIb8W8i0E8xrArEgSQ" data-element-type="image" class="zpelement zpelem-image "><style> [data-element-id="elm_UOeFCIb8W8i0E8xrArEgSQ"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="size-original" data-size-mobile="size-original" data-align="center" data-tablet-image-separate="" data-mobile-image-separate="" class="zpimage-container zpimage-align-center zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/TRAVEL-1.png" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_dfeL_V2g62kSU7sk7uz4OQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_dfeL_V2g62kSU7sk7uz4OQ"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p style="margin-bottom:15px;"><span style="font-size:16px;">This is different from the old “create a custom list” experience, where at least the “Title” column would have a different name in different languages right from the start.<br><br>If my language is French at the time of creating a list from a template, it will create the list in French, even on a site where English is the site’s base language.</span></p><p><span style="color:inherit;font-size:16px;"></span></p><p style="margin-bottom:15px;"><span style="font-size:16px;">In the image below I created the list from the “Issue Tracking” template while my language was French, then changed my language to German.</span></p></div>
</div><div data-element-id="elm_b1Ht5EEcoFs0yOiyD2Nz1g" data-element-type="image" class="zpelement zpelem-image "><style> [data-element-id="elm_b1Ht5EEcoFs0yOiyD2Nz1g"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="size-original" data-size-mobile="size-original" data-align="center" data-tablet-image-separate="" data-mobile-image-separate="" class="zpimage-container zpimage-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/ISSUE-1.png" size="fit" data-lightbox="true" style="width:100%;padding:0px;margin:0px;"/></picture></span></figure></div>
</div><div data-element-id="elm_sRXHpED6nTOGfjg1FBxq_A" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_sRXHpED6nTOGfjg1FBxq_A"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p style="margin-bottom:15px;"><span style="font-size:16px;">The column “Anlagen” (attachment) is the only column which is translated out of the box, all the others are still in French.&nbsp; It is possible to use the SharePoint MUI to add translations of the list and columns names and descriptions in all languages.&nbsp; I cheated and used PointFire 365 to translate them all in a single step.&nbsp; When that is done, the list headers are in the language of the user.</span></p><p><span style="color:inherit;font-size:16px;"></span></p><p style="margin-bottom:15px;"><span style="font-size:16px;">One thing that cannot be localized with the MUI is the values of Choice columns.&nbsp; So for instance the possible values of the “Priority” column will be “Critique”, “Élevé”, “Normal”, and “Faible” in all languages.&nbsp; The JSON that formats these columns is also generated in French in this case, where the formatting depends of the value of the column (in French).</span></p></div>
</div><div data-element-id="elm_uu7XkxuNqUuah6K_P36-aw" data-element-type="image" class="zpelement zpelem-image "><style> [data-element-id="elm_uu7XkxuNqUuah6K_P36-aw"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="size-original" data-size-mobile="size-original" data-align="left" data-tablet-image-separate="" data-mobile-image-separate="" class="zpimage-container zpimage-align-left zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/JSON-1.png" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_ibwQmii_x7JHzntilX-Rfw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_ibwQmii_x7JHzntilX-Rfw"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;font-size:16px;">You will also notice in the JSON that even though the list was created in French, the internal name of the column “Priority” is in English, and in fact is the same internal name in all languages.&nbsp; That is handy when you write thing like Power Automate flows or PowerShell scripts, you don’t need to write different ones in different languages as long as you always refer to the internal name of the column, not the column title.&nbsp; While you’re at it, if you’re writing JSON for formatting, make sure that everything is based on the @currentField, not @currentField.displayValue or friendly formats, because those can be language-sensitive and stop working when users have a different language.</span><br></p></div>
</div><div data-element-id="elm_kgt9pgoU16HyjHwnb9tN-w" data-element-type="divider" class="zpelement zpelem-divider "><style type="text/css"> [data-element-id="elm_kgt9pgoU16HyjHwnb9tN-w"].zpelem-divider{ border-radius:1px; } </style><style></style><div class="zpdivider-container zpdivider-line zpdivider-align-center zpdivider-width100 zpdivider-line-style-solid "><div class="zpdivider-common"></div>
</div></div><div data-element-id="elm_twvbXb3NuB3T3IzsfCgP0A" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_twvbXb3NuB3T3IzsfCgP0A"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><span style="font-size:16px;">Related Posts</span></h2></div>
<div data-element-id="elm_-yRhAGGB49e49uNqu12aaA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_-yRhAGGB49e49uNqu12aaA"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"><a href="https://blog.icefire.ca/blogs/post/localization-of-spfx-webparts-in-microsoft-teams-tabs" title="Localization of SPFx webparts in Microsoft Teams tabs" rel="">Localization of SPFx webparts in Microsoft Teams tabs</a></span></p><p><a href="https://blog.icefire.ca/blogs/post/how-microsoft-forms-sets-the-display-language-for-multilingual-forms" rel="">How Microsoft Forms Sets the Display Language for Multilingual Forms</a><br></p><p><span style="color:inherit;"><a href="https://blog.icefire.ca/blogs/post/how-to-make-sharepoint-api-calls-language-independent" rel="">How to make SharePoint API calls language-independent</a></span><br></p></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Tue, 30 Mar 2021 06:03:00 -0400</pubDate></item></channel></rss>