J'ai toutes les traductions d'une ressource dans un seul exécutable. En effet:FindResourceEx et les langues de secours
STRINGTABLE
LANGUAGE LANG_ENGLISH, LANG_ENGLISH_US
BEGIN
IDSTR_HELLO "Hello"
END
STRINGTABLE
LANGUAGE LANG_SPANISH, LANG_SPANISH_PANAMA
BEGIN
IDSTR_HELLO "Hola"
END
// ... more languages ...
J'essaie de trouver le (plus) un approprié à l'aide d'un FindResourceEx donné LANGID. Un LANGID comprend à la fois la langue et un sous-langage. Par exemple, je pourrais avoir des ressources pour l'espagnol tel que parlé au Panama (LANGUAGE_SPANISH, SUBLANG_SPANISH_PANAMA
) et l'espagnol comme parlé au Mexique (LANGUAGE_SPANISH, SUBLANG_SPANISH_MEXICAN
). Quand il y a une correspondance exacte entre le langid désiré et l'une des ressources, tout va bien.
Si j'utilise FindResourceEx pour essayer de trouver la ressource pour une troisième version de l'espagnol, disons (LANG_SPANISH, SUBLANG_SPANISH_COSTA_RICA
), la recherche échouera car je n'ai pas de ressource spécifique pour le Costa Rica. Dans un tel cas, je voudrais "retomber" à toute saveur du langage principal.
je lis quelque chose qui a proposé la création du sous-langage à SUBLANG_NEUTRAL
doit correspondre à une ressource avec la même langue principale:
HRSRC handle = FindResourceEx(NULL, RT_STRING, MAKEINTRESOURCE(IDSTR_HELLO), langid);
if (handle == NULL) {
fallback_langid = MAKELANGID(PRIMARYLANGID(langid), SUBLANG_NEUTRAL);
handle = FindResourceEx(NULL, RT_STRING, MAKEINTRESOURCE(IDSTR_HELLO), fallback_langid);
}
Malheureusement cela ne fonctionne pas. La définition du sous-langage n'est pas non plus SUBLANG_DEFAULT
. (Il semble que les sous-langages neutres et par défaut n'ont de sens que lorsque la langue principale est également neutre ou par défaut.)
Quelles sont mes options? Existe-t-il un moyen d'énumérer les ressources et de faire ma propre comparaison de la langue principale dans le LANGID? J'ai regardé l'assortiment des fonctions de type EnumResource, mais la plupart d'entre elles semblent spécifiques à l'utilisation de MUI. Je n'utilise pas intentionnellement MUI, pour diverses raisons, y compris l'obligation d'avoir toutes les traductions dans un seul binaire.
Ah, bien sûr, EnumResourceLanguages fonctionne parfaitement. Merci! –