Question Localisation d'un script en plusieurs langues

Plus d'informations
il y a 17 ans 2 mois #3775 par Laurent Dardenne
janel écrit:

Je suis allé au plus simple

Le mieux est l'ennemi du bien :P
janel écrit:

Hmmm, pourquoi pas, mais peux-tu préciser dans quel cas ça te serait utile?

Je n'en ai pas vraiment en tête mais je me disais qu'il vallait mieux, encore lui, proposer le texte soit filtré soit sans filtrage. Et ainsi laisser l'utilisateur décider.
janel écrit:

Le principe des ressources basé sur les streams NTFS nécessite d'installer NTFS.DLL sur les postes.

Dans le tuto en question j'ai abordé les streams comme une possible solution de stockage de ressource mais ce que je proposais était basé sur un fichier de ressources .NET
janel écrit:

ce qui peut provoquer des pertes de données si, par exemple, on fait un malencontreux copier/coller du fichier sans penser à récupérer ses streams.

Effectivement c'est pourquoi je n'utilise pas cette option.Et je ne l'ai peut être pas préciser dans le tuto :S.
En passant, l'outil PrimalScript associe de nombreux streams à un script crée dans leur éditeur.
janel écrit:

qui n'est pas renseignée dans la v2...

Je suis en train de travailler +- sur le sujet sur la ctp3 :
[code:1]
function Get-Caller
{
(Get-Variable MyInvocation -Scope 1).Value
}

$C=Get-Caller
$C
# MyCommand : Main.ps1
# BoundParameters : {}
# UnboundArguments : {}
# ScriptLineNumber : 1
# OffsetInLine : 11
# ScriptName :
# Line : .\Main.ps1
# PositionMessage :
# At line:1 char:11
# + .\Main.ps1 <<<<
# InvocationName : .\Main.ps1
# PipelineLength : 1
# PipelinePosition : 1
# ExpectingInput : False
# CommandOrigin : Runspace
[/code:1]
A l'origine c'est une solution proposée par J.Snoover.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 2 mois #3777 par Laurent Dardenne
Laurent Dardenne écrit:

A l'origine c'est une solution proposée par J.Snoover.

oups, cela ne règle rien.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 2 mois #3778 par Laurent Dardenne
Sous la v2 cela fonctionne en utilisant ceci :
[code:1]
$myinvocation.MyCommand.Definition
[/code:1]
Et l'appel dans test-local doit être
[code:1]. .\import-localizeddata.ps1[/code:1]
Sinon l'appel se fait sur le cmdlet et pas sur la fonction.
Je n'ai pas testé sous la V1.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 2 mois #3783 par Jacques Barathon
Oui, $myinvocation.mycommand.definition marche avec la CTP3 (ainsi que $myinvocation.mycommand.path), mais là c'est avec la v1 que ça ne marche plus...

Comme les fonctionnalités de la v1 sont censées être toujours supportées dans la v2, j'ai signalé le problème et un bug a été ouvert. A suivre...

En attendant, j'ai ajouté un test à ma fonction pour qu'elle puisse servir telle quelle sous les deux versions - au passage, je l'ai renommée en import-culturaldata pour éviter le conflit avec import-localizeddata sous la v2 :

[code:1]
function import-culturaldata
{
param (
[string]$filename = [IO.Path]::GetFileNameWithoutExtension((split-path -leaf $myinvocation.MyCommand)),
[System.Globalization.CultureInfo]$UIculture = (get-UIculture)
)

if ($myInvocation.ScriptName) { $scriptname = $myInvocation.ScriptName }
else { $scriptname = $myInvocation.MyCommand.Definition }

$fullpath = $(split-path $ScriptName) + \"\$UIculture\$filename\" + \".psl1\"

$ht = @{}
get-content $fullpath | where {($_.TrimStart()) -ne \"\" -and ($_.TrimStart())[0] -ne \"#\"} | foreach {
$key, $value = $_.Split(\"=\", 2)
$ht.Add($key.Trim(), $value.TrimStart())
}
$ht
}
[/code:1]
Janel

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 1 mois #3875 par Laurent Dardenne
Comme j'envisage de localiser qq scripts j'ai testé quelques formats de chaîne, par exemple ceux-ci:
[code:1]
Welcome_2 = {0} : {1}
Prompt_2 = $Prompt
Prompt2_2 = `$V2Prompt
Success_2 = `tSuccess`r`n
[/code:1]
Pour le premier pas de soucis :
[code:1]
$messages.Welcome_2 -f \"1\",\"2\"
#1 : 2
[/code:1]
Pour l'avant-dernier un appel à ExpandString suffit :
[code:1]
$Prompt=\"Indirection\"
$ExecutionContext.InvokeCommand.ExpandString($messages.Prompt_2)
#Indirection
[/code:1]
Pour le dernier Success_2 je n'ai pas trouvé mieux que ceci pour récupèrer la chaîne attendue :
[code:1]
$S=&$ExecutionContext.InvokeCommand.NewScriptBlock(\"`$ExecutionContext.InvokeCommand.ExpandString(`\"$($messages.Success_2)`\"«»)\"«»)
$S
# Success
#
[/code:1]
Connais-tu une approche plus simple dans ce cas ?

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 1 mois #3876 par Jacques Barathon
La méthode ExpandString utilisée dans le 2e cas semble également marcher pour le 3e, en tout cas sur mon poste. Mais je n'ai testé que sur mon portable avec la CTP3, quelle version utilises-tu?

Janel

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.076 secondes
Propulsé par Kunena