its been a long time since i messed with it, but IIRC it was quite easy to change the keyboard layout for libogc apps. i had to create a file on the root of the SD card with 1 or 2 lines of text in it. then each libogc app sees it when they initialise the keyboard library and use it to determine the layout.
you can look at the keyboard parts of the libogc source code to see the filename and which lines it looks for.
EDIT>>
I just had a look at that portion of the libogc code. It looks like the file it opens is "/wiikbd.map". and the strings in the .h file are
CODE
#define KB_ENCTAB \
{ KB_USER, "user" }, \
{ KB_US, "us" }, \
{ KB_DE, "de" }, \
{ KB_DK, "dk" }, \
{ KB_IT, "it" }, \
{ KB_FR, "fr" }, \
{ KB_UK, "uk" }, \
{ KB_JP, "jp" }, \
{ KB_SV, "sv" }, \
{ KB_NO, "no" }, \
{ KB_ES, "es" }, \
{ KB_HU, "hu" }, \
{ KB_BE, "be" }, \
{ KB_RU, "ru" }, \
{ KB_UA, "ua" }, \
{ KB_SG, "sg" }, \
{ KB_SF, "sf" }, \
{ KB_PT, "pt" }, \
{ KB_LT, "lt" }, \
{ KB_LA, "la" }, \
{ KB_BR, "br" }, \
{ KB_NL, "nl" }, \
{ KB_TR, "tr" }, \
{ KB_PL, "pl" }, \
{ KB_SI, "si" }, \
{ KB_CF, "cf" }, \
{ KB_LV, "lv" }
#define KB_VARTAB \
{ KB_NODEAD, "nodead" }, \
{ KB_DECLK, "declk" }, \
{ KB_LK401, "lk401" }, \
{ KB_SWAPCTRLCAPS, "swapctrlcaps" }, \
{ KB_DVORAK, "dvorak" }, \
{ KB_METAESC, "metaesc" }, \
{ KB_IOPENER, "iopener" }, \
{ KB_MACHDEP, "machdep" }, \
{ KB_APPLE, "apple" }
Im thinking that i just had to put the line "us-dvorak" into sd:/wiikbd.map and it worked. so i would assume that you can put "fr" in that file and cross you fingers. also, the program will have had to already initialized the SD card before they initialized the keyboard or else it wont be able to open the file.