Alors voila, j'essaye de faire une petite appli multilangue utilisant des fichier externe stockant les traduction pour chaque control.
Ce fichier est structuré comme un fichier.ini avec les section etc etc
[MaForm]
nomControl=Définition
pour récupéré ces données, j'utilise une méthode nommé GetPrivateProfileString :
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
le problème c'est que si je met un caractère avec un accent tel le "é" de Définition, au lieu de me retourner Définition, il me renvoie Définition
protected string GetLocalizedValue(string formName, string containerName, string controlName)
{
//je vous met un chemin de fichier bidon pour l'exemple
string path = @"c\temp\config.fr.ini";
StringBuilder temp = new StringBuilder("", 255);
int i = 0;
string key = "";
if (i == 0)
{
key = controlName;
i = GetPrivateProfileString(formName, key, "",temp, 255,path);
}
if(i != 0)
return temp.ToString();
else
return null;
}
La première solution qui me vient à l'esprit serait de vérifier les chaine de retour et remplacer les caractère problématique mais cela ne règle pas le problème...
Je suis bien entendu ouvert à toute suggestion et toutes aide telle qu'elle soit car ce problème commence doucement à me gonfler![]()
Merci d'avance
Partager