I found a way to hack the NDS rom and load the languages I want. No action replay code required. I know some tools like TwilightMenu++ can do this, but if you want to insert an NDS rom into an NDS Wii U Virtual Console game (https://gbatemp.net/threads/wii-u), this is better. Convenient. -Nintendo-DS-virtual-console-inject-guide.480668/).
To see which languages NDS games support, we recommend checking this website: https://www.advanscene.com/html/index.php. Sadly, it doesn't say whether the language loaded is based on the firmware or can be selected by the user (sometimes both methods are used). That you have to find it yourself.
From the few ROMs I've tried, this method seems to work perfectly. I will use Super Princess Peach (Europe) as a demonstration. The game supports English, French, German, Spanish, Italian and will load the language based on the firmware settings (if the language is set to Japanese, the game will load in English). Masu).
Download the tool.
Install Notepad++:
https://notepad-plus-plus.org/
1 – Extract the contents of the “Force Language Tools.7z” files.
2 – Place a copy of the NDS rom into the main “Force Language Tools” folder.

3 – Open DsSmuMe emulator: desmume-0.9.11-win32 > DeSmuME_0.9.11_x86.exe
4 – Click: Config > Firmware Settings

5 – Change “Language:” to the one you want to load.

6 – The required language will have loaded. In this example, Spanish has loaded, and there is no way select a different language in the game.

7 – Open: dsbuff_v1Final > dsbuff.exe
8 – Click “Browse…” and open the NDS rom.

9 – Click “Unpack”.

10 – Click on “Info” button next to the “Directory” text box.

11 – Locate and click on the “rom” folder.
Note: Make sure there is nothing inside the folder. If there is, then delete the contents.

12 – Click the “Green Tick” to unpack the contents.

13 – This will open a new folder. This is the contents of the rom.
14 – Make a copy of “arm9.bin” file.

15 – Place a copy of “arm9.bin” into the main folder.

16 – Open: no$gba > NO$GBA.EXE
17 – Click: Debug > Define Break/Condition

18 – Type in the following: [027FFCE4]?

19 – Click: Cartridge Menu (File Name)
20 – Open the NDS rom.

21 – The following command should freeze the game: add r0,r12,6h

22 – What we are interested in is the above instruction. Must be ldrh r2.[r12,64h]
This takes the R12 address, adds a hexadecimal byte to that address, and stores the value stored at the new address in R2. So: 027FFC80 + hex(64) = 027FFCE4
This is the RAM offset that stores the language set in the firmware. What we're going to do now is modify the instruction to always load the required language value into R2.
Make a note of the address where “ldrh” is saved. In this example: 020C98FC

23 – In the main folder, open “compile.asm” in Notepad++.

24 – Delete 02 from the beginning of the address you noted in step 22.
Example: 020C98FC > 0C98FC
On line 20, place the new address after “0x”.

25 – Change the “English” text in lines 22 to one of the following:
- English
- French
- German
- Spanish
- Italian
- Japanese

26 – Save your changes to the “compile.asm” file.
27 – Click on the “make.bat” file in the main folder.

28 – If you see this message, the procedure has changed.

29 – Click on the Pack icon.
30 -[ROM コンテンツ]next to the text box[情報]Click the button.

31 – Find and click on the “rom” folder.

32 – Click the “green checkmark” to pack the content.

33 – Choose a location to save the new NDS rom and give it a new name.

34 – Test your ROM using the DeSmuMe emulator. Change “Language” in “Firmware Settings” to a language different from the forced language.

35 – Force language is now always loaded.

enjoy!