From 597b119154c9a9884f8590f81dc41773e1d8d77c Mon Sep 17 00:00:00 2001 From: Michael Niksa Date: Fri, 4 Feb 2022 10:35:02 -0800 Subject: [PATCH 01/11] hardcode the language list --- .../CascadiaPackage/Package-Dev.appxmanifest | 15 ++++++++++++++- .../CascadiaPackage/Package-Pre.appxmanifest | 15 ++++++++++++++- src/cascadia/CascadiaPackage/Package.appxmanifest | 15 ++++++++++++++- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/src/cascadia/CascadiaPackage/Package-Dev.appxmanifest b/src/cascadia/CascadiaPackage/Package-Dev.appxmanifest index 715068f32b6..b7ecd777253 100644 --- a/src/cascadia/CascadiaPackage/Package-Dev.appxmanifest +++ b/src/cascadia/CascadiaPackage/Package-Dev.appxmanifest @@ -30,7 +30,20 @@ - + + + + + + + + + + + + + + diff --git a/src/cascadia/CascadiaPackage/Package-Pre.appxmanifest b/src/cascadia/CascadiaPackage/Package-Pre.appxmanifest index ea949350e84..eb1ec3b626a 100644 --- a/src/cascadia/CascadiaPackage/Package-Pre.appxmanifest +++ b/src/cascadia/CascadiaPackage/Package-Pre.appxmanifest @@ -31,7 +31,20 @@ - + + + + + + + + + + + + + + diff --git a/src/cascadia/CascadiaPackage/Package.appxmanifest b/src/cascadia/CascadiaPackage/Package.appxmanifest index c02e8b940d8..40d859aae4e 100644 --- a/src/cascadia/CascadiaPackage/Package.appxmanifest +++ b/src/cascadia/CascadiaPackage/Package.appxmanifest @@ -31,7 +31,20 @@ - + + + + + + + + + + + + + + From df3eafbc44aac4967a4d7868ce6d8ff2763836f6 Mon Sep 17 00:00:00 2001 From: Michael Niksa Date: Fri, 4 Feb 2022 10:40:21 -0800 Subject: [PATCH 02/11] spelling for pseudolocale variations to exceptions list. --- .github/actions/spelling/expect/expect.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/actions/spelling/expect/expect.txt b/.github/actions/spelling/expect/expect.txt index 2f0a8a588e9..03adbfad409 100644 --- a/.github/actions/spelling/expect/expect.txt +++ b/.github/actions/spelling/expect/expect.txt @@ -1792,6 +1792,9 @@ placeholders platforming playsound plist +PLOC +PLOCA +PLOCM PLOGICAL plugin PMv From c911ac8a795c6ffca5341751ddcfbf5488c7868d Mon Sep 17 00:00:00 2001 From: Michael Niksa Date: Fri, 4 Feb 2022 12:40:21 -0800 Subject: [PATCH 03/11] Dustin's right, we only build dev as en-US. --- .../CascadiaPackage/Package-Dev.appxmanifest | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/cascadia/CascadiaPackage/Package-Dev.appxmanifest b/src/cascadia/CascadiaPackage/Package-Dev.appxmanifest index b7ecd777253..9658fd1804c 100644 --- a/src/cascadia/CascadiaPackage/Package-Dev.appxmanifest +++ b/src/cascadia/CascadiaPackage/Package-Dev.appxmanifest @@ -31,19 +31,6 @@ - - - - - - - - - - - - - From 22b9f22b7e3dcb41b401f2d49d4c87521d3246b2 Mon Sep 17 00:00:00 2001 From: Michael Niksa Date: Fri, 4 Feb 2022 13:22:26 -0800 Subject: [PATCH 04/11] Testing this since the context menu didn't change.... NNNNN --- src/cascadia/CascadiaPackage/Package-Pre.appxmanifest | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cascadia/CascadiaPackage/Package-Pre.appxmanifest b/src/cascadia/CascadiaPackage/Package-Pre.appxmanifest index eb1ec3b626a..7b042762f55 100644 --- a/src/cascadia/CascadiaPackage/Package-Pre.appxmanifest +++ b/src/cascadia/CascadiaPackage/Package-Pre.appxmanifest @@ -38,6 +38,7 @@ + From 7170ad74bedf7979662203578258299981e551a4 Mon Sep 17 00:00:00 2001 From: Michael Niksa Date: Fri, 4 Feb 2022 15:01:57 -0800 Subject: [PATCH 05/11] Add ALL the languages because reasons. --- .../CascadiaPackage/Package-Pre.appxmanifest | 74 ++++++++++++++++++ .../CascadiaPackage/Package.appxmanifest | 75 +++++++++++++++++++ 2 files changed, 149 insertions(+) diff --git a/src/cascadia/CascadiaPackage/Package-Pre.appxmanifest b/src/cascadia/CascadiaPackage/Package-Pre.appxmanifest index 7b042762f55..9b9ef83ae32 100644 --- a/src/cascadia/CascadiaPackage/Package-Pre.appxmanifest +++ b/src/cascadia/CascadiaPackage/Package-Pre.appxmanifest @@ -32,18 +32,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/cascadia/CascadiaPackage/Package.appxmanifest b/src/cascadia/CascadiaPackage/Package.appxmanifest index 40d859aae4e..900454ef99e 100644 --- a/src/cascadia/CascadiaPackage/Package.appxmanifest +++ b/src/cascadia/CascadiaPackage/Package.appxmanifest @@ -32,17 +32,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From faada38f939e47f78becde32666d5e3ab2b9c082 Mon Sep 17 00:00:00 2001 From: Michael Niksa Date: Fri, 4 Feb 2022 15:07:38 -0800 Subject: [PATCH 06/11] spell check --- .github/actions/spelling/expect/expect.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/actions/spelling/expect/expect.txt b/.github/actions/spelling/expect/expect.txt index 03adbfad409..c34f03a2018 100644 --- a/.github/actions/spelling/expect/expect.txt +++ b/.github/actions/spelling/expect/expect.txt @@ -471,6 +471,7 @@ cygwin CYHSCROLL CYMIN CYPADDEDBORDER +CYRL CYSIZE CYSIZEFRAME CYSMICON @@ -1238,12 +1239,14 @@ KLF KLMNO KLMNOPQRST KLMNOPQRSTQQQQQ +KOK KPRIORITY KVM langid LANGUAGELIST lasterror lastexitcode +LATN LAYOUTRTL LBN LBound @@ -1928,6 +1931,7 @@ qsort queryable QUESTIONMARK quickedit +QUZ QWER qzmp RAII From c69e74cdebecc6d338cec7041851db48d4fd11d6 Mon Sep 17 00:00:00 2001 From: Michael Niksa Date: Fri, 4 Feb 2022 16:05:35 -0800 Subject: [PATCH 07/11] Code the languages into the app --- .../GlobalAppearance.cpp | 66 +++++++++++-------- 1 file changed, 37 insertions(+), 29 deletions(-) diff --git a/src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp b/src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp index 399f00440a8..71b625bebfb 100644 --- a/src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp +++ b/src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp @@ -24,6 +24,23 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation // --> "und" is synonymous for "Use system language". constexpr std::wstring_view systemLanguageTag{ L"und" }; + constexpr std::array appLanguageTags{ { + { L"en-US" }, + { L"de-DE" }, + { L"es-ES" }, + { L"fr-FR" }, + { L"it-IT" }, + { L"ja" }, + { L"ko" }, + { L"pt-BR" }, + { L"qps-PLOC" }, + { L"qps-PLOCA" }, + { L"qps-PLOCM" }, + { L"ru" }, + { L"zh-Hans-CN" }, + { L"zh-Hant-TW" }, + } }; + GlobalAppearance::GlobalAppearance() { InitializeComponent(); @@ -88,7 +105,24 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation // [1]: { // ManifestLanguages contains languages the app ships with. - // + // Unfortunately, we cannot use this source. Our manifest must contain the + // ~100 languages that are localized for the shell extension and start menu + // presentation so we align with Windows display languages for those surfaces. + // However, the actual content of our application is limited to a much smaller + // subset of approximately 14 languages. As such, we will hardcode the limited + // subset of languages that we support for selection within the Settings + // dropdown to steer users towards the ones that we can display in the app. + + // As per the function definition, the first item + // is always "Use system language" ("und"). + tags.push_back(systemLanguageTag.data()); + + // Add our hardcoded languages after the system definition. + for (const auto& v : appLanguageTags) + { + tags.push_back(v.data()); + } + // Languages is a computed list that merges the ManifestLanguages with the // user's ranked list of preferred languages taken from the system settings. // As is tradition the API documentation is incomplete though, as it can also @@ -96,35 +130,9 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation // has en-GB or en-DE in their system's preferred language list, Languages will // contain those as well, as they're variants from a supported language. We should // allow a user to select those, as regional formattings can vary significantly. - const std::array tagSources{ - winrt::Windows::Globalization::ApplicationLanguages::ManifestLanguages(), - winrt::Windows::Globalization::ApplicationLanguages::Languages() - }; - - // tags will hold all the flattened results from tagSources. - // We resize() the vector to the proper size in order to efficiently GetMany() all items. - tags.resize(std::accumulate( - tagSources.begin(), - tagSources.end(), - // tags[0] will be "und" - the "Use system language" item - // tags[1..n] will contain tags from tagSources. - // --> totalTags is offset by 1 - 1, - [](uint32_t sum, const auto& v) -> uint32_t { - return sum + v.Size(); - })); - - // As per the function definition, the first item - // is always "Use system language" ("und"). - auto data = tags.data(); - *data++ = systemLanguageTag; - - // Finally GetMany() all the tags from tagSources. - for (const auto& v : tagSources) + for (const auto& v : winrt::Windows::Globalization::ApplicationLanguages::Languages()) { - const auto size = v.Size(); - v.GetMany(0, winrt::array_view(data, size)); - data += size; + tags.push_back(v); } } From b1f047dbf9e881988c9abfdb420dd745df0c8161 Mon Sep 17 00:00:00 2001 From: Michael Niksa Date: Fri, 4 Feb 2022 16:13:26 -0800 Subject: [PATCH 08/11] Drop the Languages one per Leonard. Change to let the array initialize itself with c-strings --- .../GlobalAppearance.cpp | 44 +++++++------------ 1 file changed, 16 insertions(+), 28 deletions(-) diff --git a/src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp b/src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp index 71b625bebfb..0f86572633c 100644 --- a/src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp +++ b/src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp @@ -24,22 +24,22 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation // --> "und" is synonymous for "Use system language". constexpr std::wstring_view systemLanguageTag{ L"und" }; - constexpr std::array appLanguageTags{ { - { L"en-US" }, - { L"de-DE" }, - { L"es-ES" }, - { L"fr-FR" }, - { L"it-IT" }, - { L"ja" }, - { L"ko" }, - { L"pt-BR" }, - { L"qps-PLOC" }, - { L"qps-PLOCA" }, - { L"qps-PLOCM" }, - { L"ru" }, - { L"zh-Hans-CN" }, - { L"zh-Hant-TW" }, - } }; + static constexpr std::array appLanguageTags{ + L"en-US", + L"de-DE", + L"es-ES", + L"fr-FR", + L"it-IT", + L"ja", + L"ko", + L"pt-BR", + L"qps-PLOC", + L"qps-PLOCA", + L"qps-PLOCM", + L"ru", + L"zh-Hans-CN", + L"zh-Hant-TW", + }; GlobalAppearance::GlobalAppearance() { @@ -119,18 +119,6 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation // Add our hardcoded languages after the system definition. for (const auto& v : appLanguageTags) - { - tags.push_back(v.data()); - } - - // Languages is a computed list that merges the ManifestLanguages with the - // user's ranked list of preferred languages taken from the system settings. - // As is tradition the API documentation is incomplete though, as it can also - // contain regional language variants. If our app supports en-US, but the user - // has en-GB or en-DE in their system's preferred language list, Languages will - // contain those as well, as they're variants from a supported language. We should - // allow a user to select those, as regional formattings can vary significantly. - for (const auto& v : winrt::Windows::Globalization::ApplicationLanguages::Languages()) { tags.push_back(v); } From 7b8243b280449fa84f3441c1c1258b50fc5a31b3 Mon Sep 17 00:00:00 2001 From: Michael Niksa Date: Fri, 4 Feb 2022 16:19:16 -0800 Subject: [PATCH 09/11] you're really on my case, spellcheck --- src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp b/src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp index 0f86572633c..976b4b868b2 100644 --- a/src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp +++ b/src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp @@ -109,7 +109,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation // ~100 languages that are localized for the shell extension and start menu // presentation so we align with Windows display languages for those surfaces. // However, the actual content of our application is limited to a much smaller - // subset of approximately 14 languages. As such, we will hardcode the limited + // subset of approximately 14 languages. As such, we will code the limited // subset of languages that we support for selection within the Settings // dropdown to steer users towards the ones that we can display in the app. From 4a0993359db0003a49036f52cfedf3526e74561c Mon Sep 17 00:00:00 2001 From: Michael Niksa Date: Fri, 4 Feb 2022 16:20:05 -0800 Subject: [PATCH 10/11] what's an emplace between friends --- src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp b/src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp index 976b4b868b2..afeb7ee3b09 100644 --- a/src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp +++ b/src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp @@ -115,7 +115,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation // As per the function definition, the first item // is always "Use system language" ("und"). - tags.push_back(systemLanguageTag.data()); + tags.emplace_back(systemLanguageTag); // Add our hardcoded languages after the system definition. for (const auto& v : appLanguageTags) From 38cba703ff08ad1698488f61983221aa674deb8b Mon Sep 17 00:00:00 2001 From: Michael Niksa Date: Fri, 4 Feb 2022 16:30:18 -0800 Subject: [PATCH 11/11] code format! --- src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp b/src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp index afeb7ee3b09..fd9aa78d4f4 100644 --- a/src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp +++ b/src/cascadia/TerminalSettingsEditor/GlobalAppearance.cpp @@ -24,7 +24,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation // --> "und" is synonymous for "Use system language". constexpr std::wstring_view systemLanguageTag{ L"und" }; - static constexpr std::array appLanguageTags{ + static constexpr std::array appLanguageTags{ L"en-US", L"de-DE", L"es-ES", @@ -116,7 +116,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation // As per the function definition, the first item // is always "Use system language" ("und"). tags.emplace_back(systemLanguageTag); - + // Add our hardcoded languages after the system definition. for (const auto& v : appLanguageTags) {