I have built such ROMs:
English: mysterygift_eng.gbc
French: mysterygift_fra.gbc
German: mysterygift_ger.gbc
Italian: mysterygift_ita.gbc
Spainish: mysterygift_esp.gbc
Each ROM should work with all US and EU versions of Pokémon GSC. The different versions contain translated names of Pokémon, moves, items, and decorations. When using special characters in the trainer name, they may be displayed incorrectly if the ROM version does not match the game version.
There may be mistakes in the translations. If you have trouble with them, use the English version please. Decorations are not translated to Italian by me, thus the Italian ROM uses English decoration names.
Usage: Use up/down keys to select menu entry. Change entries "ID", "name", "item", "deco", "send" (Trainer House data) by left/right keys. Go to submenu for "name", "ID", or Pokémon editing by pressing A. Delete a Pokémon by pressing B in the main menu when the Pokémon is selected. When everything is set up, press START to begin sending. Afterwards, enable Mystery Gift in Pokémon GSC (by entering the Mystery Gift screen and pressing A).
Navigate through the submenus by arrow keys. Leave "name" submenu by selecting "OK" (you can jump to "OK" by pressing START). Leave ID menu and Pokémon menu by A button. You can discard changes of a Pokémon by leaving the submenu with B.
When you set up moves: The first move should never be (none), otherwise the game will crash when fighting the Pokémon. Avoid holes with (none) moves between moves, but place all (none) moves (if any) at the end of the list.
When sending the Trainer House data is disabled, Mystery Gifts are not counted by the game. I.e., you can receive arbitrary many gifts at the same day and from the same ID.
Changing Pokémon data is a pain (I know this!). I recommend to set up Pokémon data only when it is really required. To keep your Pokémon data in GSC, you can disable sending these data for future gifts. Don't forget to turn on sending the data after your painful setup. Sending them is disabled by default (so you won't overwrite your data with the standard team by accident later).