Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

choix de la langue des ressources

4 réponses
Avatar
Sylvain SF
Bjr,

[VS 2005, C API]

mon appli. contient des ressources string pour plusieurs langues,
tournant sur un OS français l'appli. affiche (sans surprise) la
version française de ces chaînes, celles définies sous

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA)
LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
#pragma code_page(1252)

// les string affichées par un OS fr-xx

#endif

les chaînes étant chargés depuis l'exec par un basic

::LoadString(instance, resID, buffer, 1024);


si je vire ce block et garde des ressources
- anglaises (américaines) LANG_ENGLISH, SUBLANG_ENGLISH_US
- espagnoles (guatemala) LANG_SPANISH, SUBLANG_SPANISH_GUATEMALA
- et neutres LANG_NEUTRAL, SUBLANG_DEFAULT

LoadString me retourne toujours la chaîne anglaise.

comment forcer la langue par défaut, ou comment utiliser les
ressources neutres quand aucune ressource matchant exactement
la langue de l'OS n'est présente ??

(sous propriétés du projet / Ressources / Culture, j'ai sélectionné
"Espagnol (Guatemala)(0x100a)" sans que cela ne change quoique ce soit
les string es-gu ne sont pas utilisées par défaut.

Merci pour votre aide.
Sylvain.

4 réponses

Avatar
robert
Sylvain SF a écrit :
Bjr,

[VS 2005, C API]

mon appli. contient des ressources string pour plusieurs langues,
tournant sur un OS français l'appli. affiche (sans surprise) la
version française de ces chaînes, celles définies sous

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA)
LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
#pragma code_page(1252)

// les string affichées par un OS fr-xx

#endif

les chaînes étant chargés depuis l'exec par un basic

::LoadString(instance, resID, buffer, 1024);


si je vire ce block et garde des ressources
- anglaises (américaines) LANG_ENGLISH, SUBLANG_ENGLISH_US
- espagnoles (guatemala) LANG_SPANISH, SUBLANG_SPANISH_GUATEMALA
- et neutres LANG_NEUTRAL, SUBLANG_DEFAULT

LoadString me retourne toujours la chaîne anglaise.

comment forcer la langue par défaut, ou comment utiliser les
ressources neutres quand aucune ressource matchant exactement
la langue de l'OS n'est présente ??

(sous propriétés du projet / Ressources / Culture, j'ai sélectionné
"Espagnol (Guatemala)(0x100a)" sans que cela ne change quoique ce soit
les string es-gu ne sont pas utilisées par défaut.

Merci pour votre aide.
Sylvain.


As-tu essayé en appelant SetThreadLocale? (j'ai vu ca a plusieurs
endroit, j'ai aussi vu qu'il était déconseillé de l'appeler, mais ca ne
coute rien d'essayer).
En cherchant des infos sur ton pb, j'ai vu pas mal de gens qui ont
carrément réécrit leur propre fonction LoadString (a partir de
FindResource, etc...). J'ai déja eu l'occasion de faire ca, c'est pas
trop compliqué.
Avatar
Sylvain SF
robert a écrit :



As-tu essayé en appelant SetThreadLocale?



non.

En cherchant des infos sur ton pb, j'ai vu pas mal de gens qui ont
réécrit leur propre fonction LoadString.



c'est une option, mais faut savoir faire une division par 16 avec
reste, un vrai challenge ...

ça n'expliquera pas pourquoi, l'appli. refuse de gérer un "langage
par défaut".

Sylvain.
Avatar
Christian ASTOR
On 8 juil, 22:54, robert wrote:

As-tu essayé en appelant SetThreadLocale? (j'ai vu ca a plusieurs
endroit, j'ai aussi vu qu'il était déconseillé de l'appeler, mais c a ne
coute rien d'essayer).



Oui, ce n'est pas forcément déconseillé mais on utilise en généra l des
DLL pour chaque langue :
http://msdn.microsoft.com/en-us/library/cc194811.aspx
et l'exemple SatDLL de MSDN :
http://msdn.microsoft.com/fr-fr/library/fe5w38bb(VS.80).aspx
Avatar
robert
Sylvain SF a écrit :
robert a écrit :



As-tu essayé en appelant SetThreadLocale?



non.

En cherchant des infos sur ton pb, j'ai vu pas mal de gens qui ont
réécrit leur propre fonction LoadString.



c'est une option, mais faut savoir faire une division par 16 avec
reste, un vrai challenge ...

ça n'expliquera pas pourquoi, l'appli. refuse de gérer un "langage
par défaut".

Sylvain.


Pourquoi tourner mes réponses en dérision de la sorte? Je tentais de
t'aider de bon coeur...