Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

MODULE LANGUAGE PACK (CHARGEMENT , CREATION, TRADUCTION)


Information sur la source

Catégorie :Modules Niveau : Initié Date de création : 04/05/2004 Date de mise à jour : 04/05/2004 14:25:23 Vu / téléchargé: 6 233 / 467

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

Description

Ci joint un module pour créer et gérer les languages dans son appli !!!

Je joint un zip pour exemple d'utilisation mais cela reste trés simple !!

Aprés avoir creé l'appli , il suffit de lancer cette commande :

EcritLng LaForm, chemin du fichier
ex : EcritLng Me, App.Path & "/French.lng"

A faire pour chaque form !!!

ça créer un fichier "ini" avec extention "Lng" et pour chaque Section la propriétée Name de la form concerné, dans cette section il y a la propriétée name des controles avec le texte a afficher!!!

Ensuite pour charger le language de la form par exemple :
(Dans le load de la form)
ChargeLng Form1, App.Path & "/French.lng"


Il y aussi un fonction pour traduire le fichier directement depuis le soft, mais ça revient au mm que de traduire le fichier lng de base du  Français vers l'anglais par exemple.

Pour l'utiliser :
TraduireLng Form1, App.Path & "/Anglais.lng"

Ca ouvre pour chaque controle une inputbox qui demande le texte a ecrire dans le fichier lng...

Voila c'est tous simple et ça me fait gagner pas mal de temps!!!! Donc je la post ici afin peu étre, de vous en faire gagner aussi!!!!
 

Source

  • Dim Controle As Control
  • Dim TypeCtrl As String
  • Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
  • Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
  • Public Const SW_HIDE = 0
  • Public Const GW_OWNER = 4
  • Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
  • Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
  • Function LireINI(Entete As String, Variable As String, Fichier As String) As String
  • Dim Retour As String
  • Retour = String(255, Chr(0))
  • LireINI = Left$(Retour, GetPrivateProfileString(Entete, ByVal Variable, "", Retour, Len(Retour), Fichier))
  • End Function
  • Function EcrireINI(Entete As String, Variable As String, Valeur As String, Fichier As String) As String
  • WriteINI = WritePrivateProfileString(Entete, Variable, Valeur, Fichier)
  • End Function
  • Public Function EcritLng(Feuille As Form, Strpath As String)
  • EcrireINI Feuille.Name, Feuille.Name, Feuille.Caption, Strpath
  • For Each Controle In Feuille.Controls
  • TypeCtrl = TypeName(Controle)
  • Select Case TypeCtrl
  • Case "Label"
  • EcrireINI Feuille.Name, Controle.Name, Controle.Caption, Strpath
  • Case "TextBox"
  • EcrireINI Feuille.Name, Controle.Name, Controle.Text, Strpath
  • Case "CommandButton"
  • EcrireINI Feuille.Name, Controle.Name, Controle.Caption, Strpath
  • Case "CheckBox"
  • EcrireINI Feuille.Name, Controle.Name, Controle.Caption, Strpath
  • Case "OptionButton"
  • EcrireINI Feuille.Name, Controle.Name, Controle.Caption, Strpath
  • Case "Menu"
  • EcrireINI Feuille.Name, Controle.Name, Controle.Caption, Strpath
  • Case "Frame"
  • EcrireINI Feuille.Name, Controle.Name, Controle.Caption, Strpath
  • End Select
  • Next
  • End Function
  • Public Function ChargeLng(Feuille As Form, Strpath As String)
  • Feuille.Caption = LireINI(Feuille.Name, Feuille.Name, Strpath)
  • For Each Controle In Feuille.Controls
  • TypeCtrl = TypeName(Controle)
  • Select Case TypeCtrl
  • Case "Label"
  • Controle.Caption = LireINI(Feuille.Name, Controle.Name, Strpath)
  • Case "TextBox"
  • Controle.Text = LireINI(Feuille.Name, Controle.Name, Strpath)
  • Case "CommandButton"
  • Controle.Caption = LireINI(Feuille.Name, Controle.Name, Strpath)
  • Case "CheckBox"
  • Controle.Caption = LireINI(Feuille.Name, Controle.Name, Strpath)
  • Case "OptionButton"
  • Controle.Caption = LireINI(Feuille.Name, Controle.Name, Strpath)
  • Case "Menu"
  • Controle.Caption = LireINI(Feuille.Name, Controle.Name, Strpath)
  • Case "Frame"
  • Controle.Caption = LireINI(Feuille.Name, Controle.Name, Strpath)
  • End Select
  • Next
  • End Function
  • Public Function TraduireLng(Feuille As Form, Strpath As String)
  • Dim Tmp As String
  • Tmp = InputBox("Caption de : " & Feuille.Caption)
  • EcrireINI Feuille.Name, Feuille.Name, Tmp, Strpath
  • For Each Controle In Feuille.Controls
  • TypeCtrl = TypeName(Controle)
  • Select Case TypeCtrl
  • Case "Label"
  • Tmp = InputBox("Caption de : " & Controle.Caption, "Label")
  • EcrireINI Feuille.Name, Controle.Name, Tmp, Strpath
  • Case "TextBox"
  • Tmp = InputBox("Text de : " & Controle.Text, "TextBox")
  • EcrireINI Feuille.Name, Controle.Name, Tmp, Strpath
  • Case "CommandButton"
  • Tmp = InputBox("Caption de : " & Controle.Caption, "Bouton de commande")
  • EcrireINI Feuille.Name, Controle.Name, Tmp, Strpath
  • Case "CheckBox"
  • Tmp = InputBox("Caption de : " & Controle.Caption, "CheckBox")
  • EcrireINI Feuille.Name, Controle.Name, Tmp, Strpath
  • Case "OptionButton"
  • Tmp = InputBox("Caption de : " & Controle.Caption, "Bouton d'option")
  • EcrireINI Feuille.Name, Controle.Name, Tmp, Strpath
  • Case "Menu"
  • Tmp = InputBox("Texte de : " & Controle.Caption, "Menu")
  • EcrireINI Feuille.Name, Controle.Name, Tmp, Strpath
  • Case "Frame"
  • Tmp = InputBox("Texte de : " & Controle.Caption, "Frame")
  • EcrireINI Feuille.Name, Controle.Name, Tmp, Strpath
  • End Select
  • Next
  • End Function
Dim Controle As Control
Dim TypeCtrl As String

Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Public Const SW_HIDE = 0
Public Const GW_OWNER = 4

Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long


Function LireINI(Entete As String, Variable As String, Fichier As String) As String
    Dim Retour As String
    Retour = String(255, Chr(0))
    LireINI = Left$(Retour, GetPrivateProfileString(Entete, ByVal Variable, "", Retour, Len(Retour), Fichier))
End Function

Function EcrireINI(Entete As String, Variable As String, Valeur As String, Fichier As String) As String
     WriteINI = WritePrivateProfileString(Entete, Variable, Valeur, Fichier)
End Function

Public Function EcritLng(Feuille As Form, Strpath As String)
EcrireINI Feuille.Name, Feuille.Name, Feuille.Caption, Strpath

For Each Controle In Feuille.Controls
    TypeCtrl = TypeName(Controle)

    Select Case TypeCtrl
    
    Case "Label"
    EcrireINI Feuille.Name, Controle.Name, Controle.Caption, Strpath
    
    Case "TextBox"
    EcrireINI Feuille.Name, Controle.Name, Controle.Text, Strpath
    
    Case "CommandButton"
    EcrireINI Feuille.Name, Controle.Name, Controle.Caption, Strpath
    
    Case "CheckBox"
    EcrireINI Feuille.Name, Controle.Name, Controle.Caption, Strpath
    
    Case "OptionButton"
    EcrireINI Feuille.Name, Controle.Name, Controle.Caption, Strpath
    
    Case "Menu"
    EcrireINI Feuille.Name, Controle.Name, Controle.Caption, Strpath
    
    Case "Frame"
    EcrireINI Feuille.Name, Controle.Name, Controle.Caption, Strpath
    End Select

Next


End Function

Public Function ChargeLng(Feuille As Form, Strpath As String)
Feuille.Caption = LireINI(Feuille.Name, Feuille.Name, Strpath)
For Each Controle In Feuille.Controls
    TypeCtrl = TypeName(Controle)
    
Select Case TypeCtrl
    Case "Label"
    Controle.Caption = LireINI(Feuille.Name, Controle.Name, Strpath)
    
    Case "TextBox"
    Controle.Text = LireINI(Feuille.Name, Controle.Name, Strpath)
    
    Case "CommandButton"
    Controle.Caption = LireINI(Feuille.Name, Controle.Name, Strpath)
    
    Case "CheckBox"
    Controle.Caption = LireINI(Feuille.Name, Controle.Name, Strpath)
    
    Case "OptionButton"
    Controle.Caption = LireINI(Feuille.Name, Controle.Name, Strpath)
    
    Case "Menu"
    Controle.Caption = LireINI(Feuille.Name, Controle.Name, Strpath)
    
    Case "Frame"
    Controle.Caption = LireINI(Feuille.Name, Controle.Name, Strpath)
    End Select
Next
End Function

Public Function TraduireLng(Feuille As Form, Strpath As String)

Dim Tmp As String
Tmp = InputBox("Caption de : " & Feuille.Caption)
EcrireINI Feuille.Name, Feuille.Name, Tmp, Strpath

For Each Controle In Feuille.Controls
    TypeCtrl = TypeName(Controle)

    Select Case TypeCtrl
    
    Case "Label"
    Tmp = InputBox("Caption de : " & Controle.Caption, "Label")
    EcrireINI Feuille.Name, Controle.Name, Tmp, Strpath
    
    Case "TextBox"
    Tmp = InputBox("Text de : " & Controle.Text, "TextBox")
    EcrireINI Feuille.Name, Controle.Name, Tmp, Strpath
    
    Case "CommandButton"
    Tmp = InputBox("Caption de : " & Controle.Caption, "Bouton de commande")
    EcrireINI Feuille.Name, Controle.Name, Tmp, Strpath
    
    Case "CheckBox"
    Tmp = InputBox("Caption de : " & Controle.Caption, "CheckBox")
    EcrireINI Feuille.Name, Controle.Name, Tmp, Strpath
    
    Case "OptionButton"
    Tmp = InputBox("Caption de : " & Controle.Caption, "Bouton d'option")
    EcrireINI Feuille.Name, Controle.Name, Tmp, Strpath
    
    Case "Menu"
    Tmp = InputBox("Texte de : " & Controle.Caption, "Menu")
    EcrireINI Feuille.Name, Controle.Name, Tmp, Strpath
    
    Case "Frame"
    Tmp = InputBox("Texte de : " & Controle.Caption, "Frame")
    EcrireINI Feuille.Name, Controle.Name, Tmp, Strpath
    
    End Select

Next
End Function

Conclusion

Ps : Pas de capture d'écran : ça sert a rien tous est expliqué en commentaire!!! mais je joint la Src avec un Exemple d'utilisation.

Je n'ai pas gérer le contenu des listbox car dans mon soft je charge des données d'un fichier externe , mais il est facile de rajouter le code afin de les gérer!!!
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de stumpy le 04/05/2004 19:36:35

c'est assez pratique oui.
J'utilise aussi ce systeme dans mes applications.

signaler à un administrateur
Commentaire de shadowmoy le 19/05/2004 00:37:07

c'est simple mais pas tres rapide g deja testé plusieurs solutions dont celle ci dans de grosse applis et le mieux reste de definir un tableau de message  que tu save/load en binaire ce qui te permet de le remplacer instantanement via un copymemory d'un buffer vers ton tableau apres tu cree un petit prog qui te permet de cree tes fichiers de langages et le tour et jouer :)
en gros c'est un peu comme des ressources externes avec uniquement des chaines de charactere ...

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.