Dans cet article vous trouverez un petit exemple de gestionnaire de Ressource en VB.NET 3.5
Voici la présentation de la solution
Le dossier "Resource" à la racine est obligatoire, de plus un fichier ressource à la racine pour la langue neutre est également obligatoire. (Ce fichier sert également à lister les futurs clés, très pratique pour créer de nouvelles langue, un simple copier-coller de ce fichier est suffisant).
Il faut également un sous dossier par langue. A l'intérieur, un fichier ressource nommé selon ce modèle : "NomDuFichierNeutre.Langue.resx"
Il faut également un sous dossier par langue. A l'intérieur, un fichier ressource nommé selon ce modèle : "NomDuFichierNeutre.Langue.resx"
Le fichier "snk" sert à signer votre projet. Essentiel pour partager les ressources avec d'autre projet. Pour créer une signature il suffit d'aller dans les propriétés du projet, onglet signature puis "New".
Avant de commencer nous allons définir quelques paramètres de base pour le projet : la langue par défaut et le nom du fichier de ressource par défaut. Pour ce faire il faut ajouter des "Settings" à votre projet. Ici aussi cela se passe dans les propriétés du projet.
Enfin le code :
Option Strict On
Option Explicit On
Imports System.Resources
Imports System.Threading
Imports System.Globalization
Imports System.Reflection
Public Class ResManager
Private Shared m_Culture As CultureInfo
Private Shared m_ResourceManager As ResourceManager
''' <summary>
''' Méthode permettant d'obtenir la valeur associée à une clé passée en paramètre.
''' </summary>
''' <param name="Key">Clef associée à la valeur voulue</param>
''' <returns>La valeur associée à la clé passée en paramètre</returns>
''' <remarks>
''' Culture par defaut : fr-FR. Modifiable dans le fichier de Settings.
''' Fichier de Ressource par défaut : StringLibrary. Modifiable dans le fichier de Settings.
''' Un fichier de ressource nommé "StringLibrary" aura pour dénomination dans les settings
''' "NomDuProjet.StringLibrary"
''' </remarks>
Public Shared Function GetVal(ByVal Key As String) As String
'Si la culture n'est pas défini, alors on utilise la culture par défaut.
If (m_Culture Is Nothing) Then
m_Culture = New CultureInfo(My.Settings.DefaultCulture)
Thread.CurrentThread.CurrentUICulture = m_Culture
End If
'Si le "Resource Manager" n'est pas instancié alors on le crée avec pour paramètre
'le nom des fichiers de ressources par defaut.
Try
If (m_ResourceManager Is Nothing) Then
m_ResourceManager = New ResourceManager(My.Settings.ResourcesFile, Assembly.GetExecutingAssembly())
End If
Catch ex As Exception
Return "{Resources File Not Found}"
End Try
'Si le paramètre Key est null alors
If (String.IsNullOrEmpty(Key)) Then
'On retourne la chaîne par défaut
Return "{Undefined}"
End If
Dim l_res As String = m_ResourceManager.GetString(Key, m_Culture)
'Si la méthode ne retourne rien
If (String.IsNullOrEmpty(l_res)) Then
'On retourne la chaîne par défaut
Return "{Undefined}"
End If
'Retourne la valeur demandée
Return l_res
End Function
''' <summary>
''' Méthode permettant de choisir une nouvelle langue par défaut.
''' </summary>
''' <param name="Culture">Nouvelle culture</param>
''' <remarks>Exemple de formats : fr-FR, en, en-US...</remarks>
Public Shared Sub SetCulture(ByVal Culture As String)
'Si la culture est null ou vide
If (String.IsNullOrEmpty(Culture)) Then
'On utilise la Culture par défaut
m_Culture = New CultureInfo(My.Settings.DefaultCulture)
Thread.CurrentThread.CurrentUICulture = m_Culture
Else
Try
'Définition de la culture
m_Culture = New CultureInfo(Culture)
'Mémorisation de la nouvelle culture
Thread.CurrentThread.CurrentUICulture = m_Culture
Catch ex As Exception
'Culture non supportée
'Rem : Une culture ne disposant pas de fichier de ressources ne provoquera pas de messages d'erreurs
'si elle est supporté.
'On utilise la culture par défaut
m_Culture = New CultureInfo(My.Settings.DefaultCulture)
Thread.CurrentThread.CurrentUICulture = m_Culture
End Try
End If
End Sub
End Class
Aucun commentaire:
Enregistrer un commentaire