我是一個休閑的代碼撰寫者。我在自分配執行緒中創建一個腳本來安裝一個軟體,該軟體只能作為 Windows 的 exe 檔案使用,并自定義一些存盤在 xml 檔案中的默認值。這對我來說是一個步驟/步驟程序,每個程序都經過網上大量閱讀和多次試驗。作為 ATM 估計旅行的 5% 一個(其他 :-( )想法讓我想到:除了法語之外,還為說英語的人制作這份作業,并發布腳本,以便其他任何人都可以輕松地添加他們自己的語言字串訊息。我發現了使用DATA 部分、psd1 檔案和一些相關命令的 MS 腳本國際化方式。
我的目標是提供一個單一的 ps1 檔案,點。根據我最近閱讀的內容,我的最新想法是將所有字串都放在 ps1 檔案中,然后基于 $PSUIlocale 匯出/創建一個臨時 .\LG-lg\SetupThisSoft.psd1 我可以Import-LocalizedData ...什么我想這很愚蠢(為什么在檔案中有字串時匯出?)。
你有達到目標的想法嗎?我現在有了一些(更好的?)想法,使用一組尚未翻譯的語言環境,例如$AvailLng = "fr-FR","en-EN"然后為每個 $Item 有一個 DATA 部分我可以針對 $ 進行ForEach測驗PSUILocale,但我不知道如何“指向”/“啟用”好的 DATA 部分。當 $PSUILocale 不匹配任何先前的 $Item 時,“en-EN”將是最后一個 $Item 作為默認/回退...
謝謝你的想法
uj5u.com熱心網友回復:
存盤您Data的部分在哈希表中,并使用區域設定識別符號(fr-FR,en-US等)為重點:
# Store messages for multiple languages in $localizedMessages
$localizedMessages = @{
'en-US' = Data {
ConvertFrom-StringData @'
Error = an error occurred
Success = something wonderful happened
'@
}
'fr-FR' = Data {
ConvertFrom-StringData @'
Error = une erreur est survenue
Success = quelque chose de merveilleux est arrivé
'@
}
}
$defaultLanguage = 'fr-FR'
# Assign the appropriate language version to the variable that holds the messages for later use
$Messages = if($localizedMessages.ContainsKey($PSUICulture)){
$localizedMessages[$PSUICulture]
} else {
# If we don't have localized messages for the current culture, we fall back to our default language
$localizedMessages[$defaultLanguage]
}
# ...
# This will now throw a different error message based on the current UI culture
Write-Error $Messages['Error']
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/372245.html
