<?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/tag/sharepoint-365/feed" rel="self" type="application/rss+xml"/><title>The PointFire Blog - The PointFire Blog for Multilingual SharePoint #SharePoint 365</title><description>The PointFire Blog - The PointFire Blog for Multilingual SharePoint #SharePoint 365</description><link>https://blog.icefire.ca/blogs/tag/sharepoint-365</link><lastBuildDate>Sun, 13 Jul 2025 12:09:53 -0700</lastBuildDate><generator>http://zoho.com/sites/</generator><item><title><![CDATA[PointFire 365 will soon have a new look and new architecture]]></title><link>https://blog.icefire.ca/blogs/post/pointfire-365-will-soon-have-a-new-look-and-new-architecture</link><description><![CDATA[<img align="left" hspace="5" src="https://blog.icefire.ca/SharePoint-Addin-retirement-PointFire-blog.png"/>PointFire 365 is getting a new look. This is part of our plan to consolidate the two apps, classic and modern, into a single app. Translate any SharePoint page in seconds]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_rLXUI3_bSM-iz9EZSj1Y7Q" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_BZU8lkazSKezoEOwiLoSfg" 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_r7XSi_rDThKET2Uvg7O2oA" 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_7y81QwMnSQeC1XzQ4R8N6g" 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;">You may have seen the message in the Message Center or in the App Catalog about the demise of SharePoint Add-ins in 2026.&nbsp; The upcoming version 3.0 of PointFire 365 will retire its own add-in at the same time as it brings in the new look.</span></p></div></div>
</div><div data-element-id="elm_WrAO8ZKSCo1edU1ujn0l0A" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_WrAO8ZKSCo1edU1ujn0l0A"] .zpimage-container figure img { width: 516px !important ; height: 90px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_WrAO8ZKSCo1edU1ujn0l0A"] .zpimage-container figure img { width:516px ; height:90px ; } } @media (max-width: 767px) { [data-element-id="elm_WrAO8ZKSCo1edU1ujn0l0A"] .zpimage-container figure img { width:516px ; height:90px ; } } [data-element-id="elm_WrAO8ZKSCo1edU1ujn0l0A"].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-Addins-PointFire-Blog.png" width="516" height="90" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_UIFOL2ldd7Ir3jK9l53wtQ" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_UIFOL2ldd7Ir3jK9l53wtQ"] .zpimage-container figure img { width: 624px !important ; height: 326px !important ; } } @media (max-width: 991px) and (min-width: 768px) { [data-element-id="elm_UIFOL2ldd7Ir3jK9l53wtQ"] .zpimage-container figure img { width:624px ; height:326px ; } } @media (max-width: 767px) { [data-element-id="elm_UIFOL2ldd7Ir3jK9l53wtQ"] .zpimage-container figure img { width:624px ; height:326px ; } } [data-element-id="elm_UIFOL2ldd7Ir3jK9l53wtQ"].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-Addin-retirement-PointFire-blog.png" width="624" height="326" loading="lazy" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_9TaMD5QeMAt9jRhdy2RH6Q" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_9TaMD5QeMAt9jRhdy2RH6Q"].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;">Currently, PointFire 365 has two apps, both of which must be added to the site, named PointFire 365 and PointFire 365 Modern.&nbsp; In rough terms, PointFire 365 handles classic pages and pages in classic mode, while PointFire 365 handles modern pages.&nbsp; To use Microsoft’s terminology, “PointFire 365” is an add-in and “PointFire 365 modern” is an app.&nbsp; To avoid redundant code, the two apps (formally an app and an add-in) work hand in hand.</span></p><p><span style="font-size:16px;">In recent years, SPFx has added a lot of functionality that it was missing, to the point that it is now possible to put all the functionality into a single app.&nbsp; The project for doing this started long before the Microsoft announcement.</span></p><p style="font-size:11pt;"><br></p><p><span style="font-size:16px;">Another aspect of this new version is changing a lot of the popup and configuration page from full pages as they mostly are now, to panels on the right of the page, as you often see in modern apps and as you have doubtless seen while editing modern pages.&nbsp; As it happens, doing popups and pages is something that is difficult to do in a modern app and we were planning to do away with those anyway.&nbsp; Doing the architecture change and the UI change at the same time makes sense.</span></p><p style="font-size:11pt;"><br></p><p><span style="font-size:16px;">Version 2.7 of PointFire 365 is the last one where the classic app is mandatory.&nbsp; Version 3.0 will still have both the classic and the modern app, but the classic app will not have much functionality other than helping with the transition for users who are used to the current apps.&nbsp; This will happen this summer 2024, long before Microsoft’s 2026 deadline, so the impact on existing users will be minimal.</span></p></div></div></div>
</div><div data-element-id="elm_aw8Y_ZPlzVsDR6Ke3VjNFA" data-element-type="button" class="zpelement zpelem-button "><style> [data-element-id="elm_aw8Y_ZPlzVsDR6Ke3VjNFA"].zpelem-button{ border-radius:1px; } </style><div class="zpbutton-container zpbutton-align-left "><style type="text/css"> [data-element-id="elm_aw8Y_ZPlzVsDR6Ke3VjNFA"] .zpbutton.zpbutton-type-primary{ background-color:#3C98DE !important; } </style><a class="zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-roundcorner " href="javascript:;"><span class="zpbutton-content">Download PointFire free trial</span></a></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Wed, 10 Apr 2024 09:44:31 -0400</pubDate></item><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[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[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[New languages in PointFire Translator]]></title><link>https://blog.icefire.ca/blogs/post/a-few-new-languages</link><description><![CDATA[Because of recent changes to the Azure Translator Text API, a&nbsp;few new languages in the Western Iranian language group are being added to PointFir ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_xW0CSfu8Q7q_FmHto1LHMw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_y0RFTlw9SX6QjLWu_R-JUw" 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_diKQYjnYTnS6dKstMOF8JQ" 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_diKQYjnYTnS6dKstMOF8JQ"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_xO5x0r-FS061bL8xOWFguA" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_xO5x0r-FS061bL8xOWFguA"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;"><span style="color:inherit;">Because of recent changes to the Azure Translator Text API, a&nbsp;few new languages in the Western Iranian language group are being added to PointFire Translator.</span><br></p></div>
</div><div data-element-id="elm_wbXrCm1lSE1xInuHkGz0UQ" data-element-type="image" class="zpelement zpelem-image "><style> [data-element-id="elm_wbXrCm1lSE1xInuHkGz0UQ"].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="/IRANIAN_LANGUAGES_DISTRIBUTION.png" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_FHfkGdU-KZl315KGn_bNsw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_FHfkGdU-KZl315KGn_bNsw"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;"></span></p><div style="font-size:14px;"></div><p></p><div style="font-size:14px;"><div><span style="font-size:16px;">Two versions of Kurdish are being introduced,&nbsp;Kurdish (Central), language code &quot;ku&quot;, also called Sorani, and Kurdish (Northern), language code &quot;kmr&quot;, also called Kurmanji.</span></div><div><span style="font-size:16px;"><br></span></div><div><span style="color:inherit;"><div><span style="font-size:16px;">In addition, two languages of Afghanistan are being added.&nbsp;Dari&nbsp;(prs) and&nbsp;Pashto (ps).&nbsp; PointFire Translator had already supported Dari and Persian, and Dari is also supported by PointFire 365 and SharePoint. However, we had been using the same language code and translation engine for both of them, because they are so similar.&nbsp;Now&nbsp;Dari&nbsp;will use &quot;prs&quot; and&nbsp;Persian will use &quot;fa&quot; for Farsi, another name for the same language.</span></div></span></div></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Fri, 21 Aug 2020 16:08:00 -0400</pubDate></item><item><title><![CDATA[I Know What Im Doing, But...]]></title><link>https://blog.icefire.ca/blogs/post/translate-sharepoint-online-s-content-type-gallery1</link><description><![CDATA[<img align="left" hspace="5" src="https://blog.icefire.ca/MICROJOBS.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_JV06mAbxQeaSJcvk1XjlnA" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_6iwRxgoDTW-tXMA8fCQfqg" 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_6dZljYXHQ8C5LxOBxa0y0g" 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_fhRSBUMirEk5QAyOJtoG_g" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_fhRSBUMirEk5QAyOJtoG_g"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-center " data-editor="true"><span style="font-size:24px;">My review of the Collab365 Microjobs</span></h2></div>
<div data-element-id="elm_Xpl5ur8aRM2ICh8oFnWL-g" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Xpl5ur8aRM2ICh8oFnWL-g"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;margin-bottom:15px;">One of my colleagues suggested to me that I should try <a href="https://collab365.com/collab365-microjobs-closed/" title="Collab365’s MicroJobs" target="_blank" rel="">Collab365’s MicroJobs</a> and then write a review about it.&nbsp; I subscribe to some Collab365 mailing lists, they have daily summaries of all the important news and blogs, and they organize some great conferences.&nbsp; It’s one of the few automated emails from outside my company that I read carefully every day, motivated by FOMO.</p><p style="text-align:left;margin-bottom:15px;"><span style="font-size:16px;">The newsletters and the site mention MicroJobs all the time and I keep thinking that sounds like a good idea but it’s not for me.&nbsp; But my colleague insisted I should do it and Fraser Beadle of MicroJobs joined her in gently coaxing me to try it.</span></p><p style="text-align:left;margin-bottom:15px;"><span style="font-size:16px;">I’ve been working in the SharePoint and Office 365 space for over 10 years.&nbsp; I run a SharePoint product company with all sorts of SharePoint experts working for us, I give talks at conferences, I write blogs, I&nbsp;<i>Know What I’m Doing</i>.&nbsp; Any issue that comes up I can just search for some blogs and follow the instructions.&nbsp; I don’t need hand-holding.</span></p><p style="text-align:left;margin-bottom:15px;"><span style="font-size:16px;">And yet when I tried to think of current nagging problems that might be solved in 30 minutes, I could think of several of them.&nbsp; I couldn’t decide which one to try, so I signed up for two of them, very different types of problems.&nbsp; In both cases the format was a 30 minute Expert Call.&nbsp; MicroJobs offers a whole range of other formats, and a lot of fixed-price deliverables, for in all sorts of Microsoft areas, but for me the short Expert Call format was what suited me best.</span></p><p style="text-align:left;margin-bottom:15px;"><span style="font-size:16px;">Can the problems really be solved in 30 minutes?&nbsp; If not, the site has a useful feature, “Custom extra” where I can ask for more time if required.&nbsp; Bad news for them, good news for me, in both cases the experts solved my problems in a few minutes, walked me carefully through the solution, and then had time left over within the 30 minutes to solve a second problem.</span></p><p style="text-align:left;margin-bottom:15px;"><span style="font-size:16px;">The first problem I had was for an internal SharePoint site, used by our company's Marketing and Sales staff, with one list in particular where they wanted to change the order of the columns in the New and Edit forms, and to hide some columns.&nbsp; I don’t think it’s a good use of company resources to use our developers’ time or our client support staff to do this sort of thing for our marketing and sales staff, which would mean they have less time for our customers.&nbsp; Typically Sales &amp; Marketing fend for themselves or I do it for them myself.</span></p><p style="text-align:left;margin-bottom:15px;"><span style="font-size:16px;">I had tried to do it myself.&nbsp; There were complications and the usual way to do it didn’t work.&nbsp; Sometimes they use Modern view and sometimes they use Classic, so that limits how it can be done and there were issues with content types and site columns.</span></p><p style="text-align:left;margin-bottom:15px;"><span style="font-size:16px;">I could have researched it myself and spent a lot of time reading blogs, found solutions for slightly different problems that may or may not apply to me, or looked up some relevant conference slides or a YouTube video.&nbsp; But why do that when someone who wrote the blog or gave the conference talk or recorded the video is probably on MicroJobs and willing to do this for me?</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;">In this case an experienced MVP was willing to do this for less than what I would pay a taxi driver for the same amount of their time.&nbsp; I don’t know why they do it.&nbsp; When I was a freelance consultant, I charged a lot more than that and I wouldn’t have agreed to do 30-minute assignments, not worth the overhead.&nbsp; Take advantage of it before they realize they should charge more!</span></p></div>
</div><div data-element-id="elm_C-5jNpGmCn70MOg6d7RkUA" data-element-type="image" class="zpelement zpelem-image "><style> [data-element-id="elm_C-5jNpGmCn70MOg6d7RkUA"].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="/MICROJOBS.png" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_-ddQ1G6XDYUDkTveYuNVUg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_-ddQ1G6XDYUDkTveYuNVUg"].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;">I headed to&nbsp;<a href="https://jobs.collab365.community/">jobs.collab365.community</a>&nbsp;and gave it a shot.</span></p><p style="margin-bottom:15px;"><span style="font-size:16px;">The MicroJobs site is easy to use.&nbsp; I use other freelancer sites for other things, and this one is easier, and the level of experience of the freelancers on the site is noticeably high.&nbsp; Log in using a Microsoft account, or LinkedIn, or Google, or Facebook, or an email.&nbsp; Then search for what you’re looking for.&nbsp; You’ll see offers that some of the experts have posted.&nbsp; You can also post a request and have people offer to help you, or you can find the right person first and ask them whether they could do the task that you need done.</span></p><p style="margin-bottom:15px;"><span style="font-size:16px;">I contacted Nick through the site, which has a handy chat interface.&nbsp; We discussed it a bit, then set a time, and later on we changed that time a bit.&nbsp; The MicroJobs site has a built-in videoconferencing and screen sharing tool (based on Jitsi Meet it looks like) that works really well right in the browser, and lets you talk and share your screen.</span></p><p style="margin-bottom:15px;"><span style="font-size:16px;">I shared my screen and Nick understood right away what I wanted to do, a list of about 10 changes.&nbsp; It had to be done in classic mode.&nbsp; We ran into a couple of small difficulties, which reassured me that the problem was not obvious, and they were solved right away.&nbsp; I’m not particularly fast in doing the &quot;click there&quot;, &quot;type this&quot;, and yet we were done in 15 minutes.&nbsp;<span style="font-weight:700;">Pro tip</span>: have a second problem ready.&nbsp; OK, I said, if there is more time here is something else I was planning to do: add a new content type to the list, with a subset of the columns and the ability to promote a record from one content type to the other.&nbsp; That turned out to be a bit more difficult.&nbsp; None of the columns were site columns but this would have to be a site content type.&nbsp; No problem.&nbsp; Nick guided me in creating a site content type that inherits from the same parent as the other, then modifying its instance within the list.&nbsp; He reassured me that we could omit a required column.&nbsp; Within a few minutes we were all done and had 5 minutes left to test that it worked for new and edit forms in both classic and modern mode, and that we could promote an item to a different content type.</span></p><p style="margin-bottom:15px;"><span style="font-size:16px;">Verdict, on a tricky problem that I couldn’t figure out, we got twice as much done as I expected, and I had to compromise on nothing.&nbsp; The payment gateway released the money when he and I agreed that the work was completed.&nbsp; After it was all settled, the invoice came straight from the expert, not the site.</span></p><p style="margin-bottom:15px;"><span style="font-size:16px;">The second problem was one that had to do directly with one of our products, so I am being be less specific as to the details.&nbsp; For our machine translation product for modern pages, we provide instructions as to how to call it from a Power Automate flow so that a page can be translated as soon as it’s published.&nbsp; But I wasn’t sure whether the instructions we planned to provide would follow best practice in terms of security and good governance.&nbsp; Through the MicroJobs site I found Matthew, an expert in Power Automate, another MVP, who also knew a lot about Azure app registration including the less common authentication method that we were using.</span></p><p style="margin-bottom:15px;"><span style="font-size:16px;">Chatting with Matthew prior to giving him the task, he seemed to understand quickly and he asked me whether I knew about a different feature of Power Automate, and said we should have a chat about it.&nbsp; I knew a bit about that other feature and I didn’t think it applied to this. I dismissed the suggestion. &nbsp;I didn’t want to change the software, I just wanted best practices for deployment.&nbsp; Perhaps we could look at that other feature later if there is time.<br><br>Matthew accepted the job, he set it up with Teams and we started the call at the appointed time.&nbsp; He started out saying &quot;I just want to show you this feature, I think it will help you.&quot;&nbsp; OK, I thought, let’s have a look at it for a few minutes and see why he’s so keen on it.&nbsp; It turns out it was exactly what we needed.&nbsp; We didn’t have to explain away the security issues, this just solved them and we didn’t have to change a single line of code.&nbsp; It was also a lot more flexible and scalable.&nbsp; This is way beyond my expectations.&nbsp; This is why it’s useful to speak with experts, they don’t just answer your question, they solve the underlying problem, and combine their knowledge and experience to analyze it and to think of the best way to solve it.&nbsp; I would never have thought of this by just Googling answers to my how-to questions.&nbsp; We started implementing his advice right away.</span></p><p style="margin-bottom:15px;"><span style="font-size:16px;">Just before the part where he was showing a sequence of steps with a detailed example, Matthew asked whether he could record the part of the session so he could send it to me.&nbsp; Very thoughtful, I can use it for later reference if I forget some of the steps.</span></p><p style="margin-bottom:15px;"><span style="font-size:16px;">This MicroJob had a significant impact at very little cost.&nbsp; This is definitely something I would do again.</span></p><p><span style="color:inherit;font-size:16px;"></span></p><p style="margin-bottom:15px;"><span style="font-size:16px;">You get to rate the freelancer.&nbsp; These ratings are made public.&nbsp; The freelancer also gets to rate you.&nbsp; That is not public as far as I know, but might be available to other freelancers.&nbsp; Apparently I’m “laid back” and “easy to work with”.&nbsp; Nice to know.</span></p></div>
</div><div data-element-id="elm_Fm_XTNQEECotPeny65IgKA" data-element-type="image" class="zpelement zpelem-image "><style> [data-element-id="elm_Fm_XTNQEECotPeny65IgKA"].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="/DISPUTE.png" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_nP16luwAMCTNXGwtx_XzsQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_nP16luwAMCTNXGwtx_XzsQ"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;font-size:16px;">But what happens if things do not go as well?&nbsp; Thanks to my mistakes I got a tour of the dispute resolution and order cancellation process.&nbsp; Apparently, I ordered the same MicroJob twice.&nbsp; Not only that, but I marked it as delivered &nbsp;twice, I convinced the consultant to mark the second one as delivered, thinking that he had forgotten and it was the same job, and I even paid for it twice.</span></p><div><span style="font-size:16px;"><br></span></div><p><span style="color:inherit;font-size:16px;"></span></p><div><span style="font-size:16px;"><span style="font-size:16px;"><div><span><span><p style="margin-bottom:15px;"><span>I don’t think anyone had ever done all of that before, so when I contacted the freelancer to cancel it after realizing my mistake, he wasn’t certain how to fix this, and tried the dispute resolution mechanism.&nbsp;</span></p><p style="margin-bottom:15px;"><span style="font-size:16px;">The dispute resolution mechanism is nicely thought out and goes to the dispute resolution team.&nbsp; In this case, they apparently thought there was a better way to handle this.&nbsp; They cancelled the dispute to reinstate the job and then the freelancer initiated a cancellation by mutual consent.&nbsp;</span></p><p style="margin-bottom:15px;"><span style="font-size:16px;">Cancellation by mutual consent is very straightforward.</span></p><p style="margin-bottom:15px;"><span style="font-size:16px;">I received an email, followed the link to the site, and consented to the cancellation.&nbsp; The money was immediately refunded to my credit card.&nbsp;</span></p></span></span></div></span></span></div></div>
</div><div data-element-id="elm_lf4LaDI2cZfkDeSlIuDhiw" data-element-type="image" class="zpelement zpelem-image "><style> [data-element-id="elm_lf4LaDI2cZfkDeSlIuDhiw"].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="/CANCELLATION.png" size="original" data-lightbox="true"/></picture></span></figure></div>
</div><div data-element-id="elm_PBYg5IVvBHAgqN87FShSwQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_PBYg5IVvBHAgqN87FShSwQ"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;font-size:16px;">The final verdict is that the process is well thought out, the people and service are high quality, it is a bargain, and it is essentially risk free.&nbsp; Some day they will figure out that they could be charging higher rates, but for the time being take advantage of it.<br style="font-size:14px;"><br style="font-size:14px;">Disclaimer:&nbsp; I am not being paid for this review, but the people at Collab365 encouraged me to try it and to review it.&nbsp; They offered to reimburse me for my first MicroJob but I declined.</span><br></p><p><span style="color:inherit;font-size:16px;"><br></span></p><p><span style="color:inherit;">You can watch my video review on <a href="https://www.youtube.com/watch?v=8R_iqT0z63c" title="youtube" rel="">youtube</a>.</span></p></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Fri, 31 Jul 2020 03:07:00 -0400</pubDate></item><item><title><![CDATA[Why Do We Need PointFire for Multilingual Collaboration in SharePoint? Part I]]></title><link>https://blog.icefire.ca/blogs/post/why-do-we-need-pointfire-for-multilingual-collaboration-in-sharepoint-part-i</link><description><![CDATA[While SharePoint does provide certain multilingual features, we find that our clients require a little more flexibility and responsiveness in the mult ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_4yOhGq1yRWiRxkHpNvMJIw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_pWAaZVzQSquZ4_QgNT_eOQ" 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_gjN3Fg7PQJ6A2yx1uDBp3A" 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_gjN3Fg7PQJ6A2yx1uDBp3A"].zpelem-col{ border-radius:1px; } </style><div data-element-id="elm_FTKb49b8Tsy70KdzC-oVag" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_FTKb49b8Tsy70KdzC-oVag"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><div style="text-align:left;font-size:13px;"><div><div><span style="font-size:16px;">While SharePoint does provide certain multilingual features, we find that our clients require a little more flexibility and responsiveness in the multilingual user interface and content delivery as well as a simplified method to manage multilingual content and documents. PointFire provides this solution as well as providing many other useful tools for customizing the look and behavior of your SharePoint sites.</span></div><div><span style="font-size:16px;">&nbsp;</span></div><p><span style="color:inherit;font-size:16px;"></span></p><div><span style="font-size:16px;">Here is Part I of this series that will cover the reasons you need PointFire in a multilingual SharePoint environment.</span></div></div></div></div>
</div><div data-element-id="elm_ZgKv2wS37NzamXRh0hthsA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_ZgKv2wS37NzamXRh0hthsA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-style-none zpheading-align-left " data-editor="true"><div style="font-size:13px;"><div><span style="font-family:&quot;Work Sans&quot;;color:rgb(11, 27, 45);font-size:20px;font-weight:700;">Translation Control</span></div></div></h2></div>
<div data-element-id="elm_gc2Vj52JnFpIzmylmUUWwg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_gc2Vj52JnFpIzmylmUUWwg"].zpelem-text{ border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><div style="font-size:13px;"><div><span style="font-size:16px;">If you look at the list of elements that the SharePoint MUI doesn't support, PointFire supports all of the rest, with very few exceptions (some aspects of Silverlight and InfoPath, for which we provide workarounds). You can see a few specific scenarios in the first few pages of the PointFire 2010 User GuideGuide&nbsp;<a href="http://community.icefire.ca/index.php?%2FKnowledgebase%2FArticle%2FView%2F97%2F9%2Fpointfire-2010-user-guide" target="_blank">http://community.icefire.ca/index.php?/Knowledgebase/Article/View/97/9/pointfire-2010-user-guide</a></span></div>
<div><span style="font-size:16px;">&nbsp;</span></div><div><span style="font-size:16px;">First and foremost: content. &nbsp;PointFire does not only handle the &quot;chrome&quot; but user-generated content as well. &nbsp;It reaches inside html pages and inside lists and libraries to translate what you want it to translate. &nbsp;It intercepts ajax calls, RSS feeds, and some Javascript to translate as appropriate. &nbsp;Here is a partial list of elements that PointFire does and the SharePoint MUI doesn't</span></div>
<div><span style="font-size:16px;">&nbsp;</span></div><div><p><span style="font-size:16px;">webpart titles and properties</span></p><p><span style="font-size:16px;">custom webparts</span></p><p><span style="font-size:16px;">templates that MUI doesn't support, such as blogs and workspaces</span></p><p><span style="font-size:16px;">custom properties</span></p><p><span style="font-size:16px;">custom additions to various menus &amp; ribbons</span></p><p><span style="font-size:16px;">search refiners</span></p><p><span style="font-size:16px;">permission types</span></p><p><span style="font-size:16px;">group names</span></p><p><span style="font-size:16px;">multi-valued columns values</span></p><p><span style="font-size:16px;">calculated text fields</span></p><p><span style="font-size:16px;">ajax</span></p><p><span style="font-size:16px;">embedded xml</span></p><p><span style="font-size:16px;">embedded javascript</span></p><p><span style="font-size:16px;">alert &amp; popup messages</span></p><p><span style="font-size:16px;">dialogue boxes</span></p><p><span style="font-size:16px;">custom new/edit/ etc forms</span></p><p><span style="font-size:16px;">questionnaires</span></p><p><span style="font-size:16px;">views</span></p><p><span style="font-size:16px;">folder names</span></p><ul></ul><div><span style="font-size:16px;">In addition, it does some translations with less effort than the MUI in many cases. &nbsp;For instance, if you add a custom list and put it in the quick-launch menu, then provide the translation of the list name, the translated list name will not appear in the menu unless you edit it separately. &nbsp;With PointFire, you only have to add the translation in one place. &nbsp; In fact, if the same list name is used elsewhere in a different site, PointFire can inherit that translation from another site.</span></div>
</div><div><span style="font-size:16px;">&nbsp;</span></div><p></p><div><span style="font-size:16px;">Of course, translation is only one of the 4 localization techniques that PointFire makes available. &nbsp;There are much more powerful filtering techniques that allow you to tag content in lists, libraries, pages, and webparts as being in one language or the other, allowing SharePoint to assemble the page in the user's language while using the same URL.</span></div><div><span style="font-size:16px;"><br></span></div><div><div><span style="color:inherit;font-size:16px;"><div><a href="http://blog.icefire.ca/post/Why-Do-We-Need-PointFire-for-Multilingual-Collaboration-in-SharePoint-Part-II">More on that in Part II</a></div><div>&nbsp;</div><div><a href="http://pointfire.ca/try/">Tried PointFire yet? If not, why not? Download a free trial today!</a></div></span></div></div>
</div></div></div></div></div></div></div></div> ]]></content:encoded><pubDate>Sun, 14 Jul 2013 22:59:00 -0400</pubDate></item></channel></rss>