Prepare for onboarding PowerShell to the Native2Native localization pipeline by daxian-dbw · Pull Request #27667 · PowerShell/PowerShell · GitHub
Skip to content

Prepare for onboarding PowerShell to the Native2Native localization pipeline - #27667

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

Dongbo Wang (daxian-dbw) merged 8 commits into
PowerShell:masterfrom
daxian-dbw:loc

Conversation

@daxian-dbw

@daxian-dbw Dongbo Wang (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.

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 Dongbo Wang (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

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

Dongbo Wang (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

Justin Chung (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

Dongbo Wang (daxian-dbw) commented Jul 17, 2026 •

Copy link
Copy Markdown
Member Author

@daxian-dbw
Dongbo Wang (daxian-dbw) merged commit 855d943 into PowerShell:master Jul 20, 2026
39 checks passed
Thatgfsj (Thatgfsj) pushed a commit to Thatgfsj-contribs/PowerShell that referenced this pull request Aug 6, 2026
…ipeline (PowerShell#27667)

1. Create the `LocProject.json` file for PowerShell localization.
2. Remove the unused `.resx` resource files and source files.
3. Update the `ResourceValidation` tests.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Backport-7.6.x-Done 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.

6 participants