簡體   English   中英

翻譯沒有 psd1 文件的 PS 腳本

[英]Translating PS script without psd1 file

我是一個休閑的代碼編寫者。 我在自分配線程中創建一個腳本來安裝軟件,該軟件只能作為 Windows 的 exe 文件使用,並自定義一些存儲在 xml 文件中的默認值。 這對我來說是一個步驟/步驟的過程,每個步驟都通過網絡上的大量閱讀和許多試驗。 作為 ATM 估計旅行的 5%,我想到了一個(其他:-()的想法:除了法語之外,還為說英語的人制作這份工作,並發布腳本,以便任何其他人都可以輕松添加自己的語言字符串消息。我發現了使用DATA 部分、psd1 文件和一些相關命令的 MS 腳本國際化方式。

我的目標是提供一個 ps1 文件,點。 根據我最近閱讀的內容,我的最新想法是將所有字符串放在 ps1 文件中,然后基於 $PSUIlocale 創建一個臨時文件。\LG-lg\SetupThisSoft.psd1 我可以Import-LocalizedData ...我猜很愚蠢(當我們在字符串中有字符串時為什么要導出?)。

你有實現目標的想法嗎? 我現在有了一些(更好的?)想法,使用一組尚未翻譯的語言環境,例如$AvailLng = "fr-FR","en-EN"然后為每個 $Item 我可以針對 $ 進行ForEach測試有一個 DATA 部分PSUILocale,但我不知道如何“指向”/“啟用”好的 DATA 部分。 當 $PSUILocale 與任何先前的 $Item 不匹配時,“en-EN”將是最后一個 $Item 作為默認/后備...

感謝您的想法

將您的Data部分存儲在哈希表中,並使用區域設置標識符( fr-FRen-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']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM