Skip to content

Prepare for onboarding PowerShell to the Native2Native localization pipeline#27667

Merged
daxian-dbw merged 8 commits into
PowerShell:masterfrom
daxian-dbw:loc
Jul 20, 2026
Merged

Prepare for onboarding PowerShell to the Native2Native localization pipeline#27667
daxian-dbw merged 8 commits into
PowerShell:masterfrom
daxian-dbw:loc

Conversation

@daxian-dbw

@daxian-dbw daxian-dbw commented Jul 8, 2026

Copy link
Copy Markdown
Member

PR Summary

Native2Native localization pipeline: https://eng.ms/docs/cloud-ai-platform/azure-core/azure-experiences-and-ecosystems/cme-international-customer-exp/software-localization-onelocbuild/onelocbuild/native2native/overview

  • Create the LocProject.json file for PowerShell localization
  • Remove the unused .resx resource files
  • Remove the unused .cs source files
  • Remove the Microsoft.PowerShell.LocalAccounts folder as it's never built or shipped with PowerShell 7.
  • Update the ResourceValidation tests accordingly.

The LanguageSet used in LocProject.json file for now is VS_Main_Languages, because that's what .NET runtime uses for its localization. I think we should target the same languages that .NET runtime targets. For a language that .NET doesn’t localize to, even if we localize PowerShell resources for it, it still won’t be fully localized given that any .NET exceptions will use the fallback en-US strings.

Impact on package size: Localization will increase the size of PowerShell package because we need to ship the satellite assemblies. The language set VS_Main_Languages includes 13 languages. If we use it, the size of PowerShell will increase around 10 mb (6 mb for S.M.A satellite assemblies along).

To be decided: We need to decide the language set to use before filing the onboarding request.
[Update] The Global Readiness folks have confirmed that we can stay with the VS_Main_Languages initially.

@daxian-dbw
daxian-dbw requested review from a team, TravisEz13 and jshigetomi as code owners July 8, 2026 18:30
Copilot AI review requested due to automatic review settings July 8, 2026 18:30
@azure-pipelines

This comment was marked as outdated.

@daxian-dbw

This comment was marked as outdated.

@daxian-dbw daxian-dbw added the CL-BuildPackaging Indicates that a PR should be marked as a build or packaging change in the Change Log label Jul 8, 2026
@azure-pipelines

This comment was marked as outdated.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review this pull request because it exceeds the maximum number of lines (20,000). Try reducing the number of changed lines and requesting a review from Copilot again.

@daxian-dbw

Copy link
Copy Markdown
Member Author

It will be tricky to backport the localized resources to old releases like 7.5 and 7.4. The localization will be based on resource strings in the master branch of GitHub repo. If we blindly backport all localized resources to 7.5 and 7.4, it's highly possible to break something, as some strings may be removed in later versions, but we are not backporting the corresponding code changes to 7.5 and 7.4.

Given that 7.4 is about to reach the end of its life cycle, and 7.5 is not even the stable version today, I think we should not support localization for those 2 versions. For 7.6, the mismatch described above can also happen but should be in a smaller scale.

@adityapatwardhan adityapatwardhan left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to add localization for modules that we ship with PowerShell like Archive, PSGet, PSResourceGet and ThreadJob?

Comment thread src/ResGen/Program.cs Outdated
Co-authored-by: Aditya Patwardhan <adityap@microsoft.com>
@daxian-dbw

daxian-dbw commented Jul 17, 2026

Copy link
Copy Markdown
Member Author

Do we need to add localization for modules that we ship with PowerShell like Archive, PSGet, PSResourceGet and ThreadJob?

Ideally, yes, we should. I need to talk to Jason about that. But they will need to be localized in their corresponding repos, not in PowerShell repo.

It will raise a new question: how to ship the localized resources for those modules? We cannot ship those modules with all the localized resources dlls, as that will increase the size of the module, which will affect the PowerShell package size.

@jshigetomi

jshigetomi commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

Could we also:

  1. Remove the 15 stale  $excludeList  entries from the five ResourceValidation tests.
  2. Add a lightweight test ensuring every neutral  .resx  file is matched exactly once by  LocProject.json , and every  LocItem  matches at least one file?

This would catch both missing localization coverage and stale manifest entries in CI. But these are non blocking.

@daxian-dbw

daxian-dbw commented Jul 17, 2026

Copy link
Copy Markdown
Member Author

Remove the 15 stale $excludeList entries from the five ResourceValidation tests.

@jshigetomi, Good catch on the resource tests! They are under test\powershell\engine\ResourceValidation. I will submit a separate PR to clean them up (so I can merge this one to unblock the onboarding request). I will address this feedback in this PR, as Travis, the code owner, has to approve this PR, so I cannot merge it today anyways :)

Add a lightweight test ensuring every neutral .resx file is matched exactly once by LocProject.json , and every LocItem matches at least one file?

I'm not sure how to test that, as the LocProject.json file uses wildcard instead of specifying every file. The wildcard is supposed to include all default .resx files within the specified directories. We can talk about this offline.

@daxian-dbw
daxian-dbw merged commit 855d943 into PowerShell:master Jul 20, 2026
39 checks passed
@daxian-dbw
daxian-dbw deleted the loc branch July 20, 2026 19:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Backport-7.6.x-Consider CL-BuildPackaging Indicates that a PR should be marked as a build or packaging change in the Change Log

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants