You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不依赖psd1文件实现单PS1 PowerShell脚本的多语言本地化

PowerShell 单ps1文件多语言本地化可行方案

轻量哈希表方案(最易维护,适合单文件场景)

这个方案不依赖官方psd1相关逻辑,所有语言内容都内嵌在脚本中,扩展新语言成本极低,执行零额外开销:

# 多语言字符串总表,新增语言直接加对应节点即可
$localizedStrings = @{
    "en-US" = @{
        WelcomeMsg = "Starting software installation..."
        ConfigSuccess = "Configuration file modified successfully"
        InstallFinish = "Software installation completed"
    }
    "fr-FR" = @{
        WelcomeMsg = "Démarrage de l'installation du logiciel..."
        ConfigSuccess = "Fichier de configuration modifié avec succès"
        InstallFinish = "Installation du logiciel terminée"
    }
}

# 自动匹配当前系统UI语言,兜底使用英语
$targetLang = $PSUICulture
# 兼容仅语言前缀匹配的场景,比如系统语言是fr-CA也会匹配到fr-FR
if (-not $localizedStrings.ContainsKey($targetLang)) {
    $targetLang = $localizedStrings.Keys | Where-Object { $_ -match "^$($PSUICulture.Split('-')[0])-" } | Select-Object -First 1
    $targetLang = $targetLang ? $targetLang : "en-US"
}

# 全局统一调用入口
$lng = $localizedStrings[$targetLang]

# 用法示例
Write-Host $lng.WelcomeMsg

普通用户新增语言只需按照现有格式,在$localizedStrings中添加对应语言标识和翻译后的键值对即可,无需修改其他逻辑。


DATA段合规方案(符合PowerShell官方安全规范)

如果你需要遵循官方规范使用DATA段隔离静态字符串,可以通过动态变量名的方式调用对应语言的DATA段:

# 已支持语言列表
$AvailLng = "fr-FR","en-US"
# 兜底默认语言
$defaultLng = "en-US"

# 英语字符串DATA段,命名规则固定为 Data_语言标识
DATA Data_en-US {
    ConvertFrom-StringData @'
    WelcomeMsg = Starting software installation...
    ConfigSuccess = Configuration file modified successfully
    InstallFinish = Software installation completed
'@
}

# 法文字符串DATA段
DATA Data_fr-FR {
    ConvertFrom-StringData @'
    WelcomeMsg = Démarrage de l'installation du logiciel...
    ConfigSuccess = Fichier de configuration modifié avec succès
    InstallFinish = Installation du logiciel terminée
'@
}

# 匹配目标语言
$targetLng = $AvailLng -contains $PSUICulture ? $PSUICulture : $defaultLng
# 动态读取对应DATA段内容
$lng = Get-Variable "Data_$targetLng" -ValueOnly

# 用法示例
Write-Host $lng.WelcomeMsg

该方案遵循PowerShell DATA段的安全限制,仅允许存储静态字符串内容,规避恶意代码注入风险,更适合对外公开发布的脚本。

内容的提问来源于stack exchange,提问作者useful

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 05:57:04