Yeah, I maybe can't help too much, but I'll try.
I think there are roughly a few steps/avenues you can take (depending on your skills), and several possible challenges. Sorry if I cover something you already know. This might be interesting for others too.
Some challenges to find the text:
---
Is the text compressed? If so, you'll need to reverse engineer the compression algo first to be able to find the text at all.
Is the text you want to change actually a fixed sprite? Text can either be getting rendered by code (then bytes will be representing text like the tables you have learned about, or text can just be a static picture that you'll have to edit. Usually this would be UI elements or intro gfx, and not a text box, but you never know :)
If the text is not compressed, you need to figure out what bytes in the hex are being fed into the display code as strings, and from there build a table (basically what byte/bytes correspond to what symbols - kana or whatever) and that will let you create something to dump out the text. The text probably won't be encoded in something you can see in a hex editor directly (ascii or shift-jis).
Some approaches to find the text:
---
1. You can use something like Ghidra (
https://www.retroreversing.com/nes-ghidra) to reverse engineer the game. You need to figure out what mapper is being used first, but you'll need to know that anyways to put your text back in. Then, you'll have to learn to use Ghidra (and maybe a bit about the ASM for the nes, too - but you will probably need to learn a bit anyways to get the text back in, more on that later. Then if the Ghidra analysis goes well, you might get the locations of strings (and importantly) the
2. For Kana - find some early text or save state right before the text. Think about how the kana alphabet might be encoded in order, not the specific bytes, but like ka-ki-ku-ke-ko, na-ni-nu-ne-no. Then you can think about the order the characters in the string the would be in and use a relative searcher like (
https://github.com/spencerwilson/opensearch) or another. Hmm, I'll try to give an example in English. Say the game displayed 'abcd' somewhere. Then I'd use the relative searcher to find 4 bytes that are all one apart. Obv this wouldn't be so good for Kanji, but not sure many nes games use those.
3. Think you might know where a string or pointer are? Try corrupting them to something else in the same range and see if you get a change. Like if I thought I'd found ABCD, and it was hex a0 a1 a2 a3, I'd change it to a0 a0 a0 a0, and hope to see AAAA.
4. Use a nes emulator with a debugger, and learn about (maybe dependent on your mapper) the memory architecture of the nes and how to use breakpoints. Then set up a breakpoint for when the nes writes your string to the 'screen', and you can look in memory or the instructions to work your way backwards to where the characters came from in the ROM. You'll also need to learn about 'offsets'. A thing might be at a certain address on the ROM, say 0x12e45, but in memory (when the code is running) it might be at 0xe3a67. This is where you need to learn about mappers, too.
Then, you need to put your English text/images back in, this is called inserting.
Challenges to inserting:
1. Does the game have any fonts for the languages you want to translate into? If not, you'll need to create some sprites to represent the characters you need and put them in places in the ROM you can fetch them from later.
2. Is there text compression? If so, you'll need to recreate the compression algorithm and compress your text with it before you put it back in. Or you can rewrite the code in assembly to change how it handles text - this needs some advanced skills, but people do it.
3. Is there room in the ROM for your text? If Ja-En, probably not. Even kana is a little more 'space efficient' than latin alphabet, and kanji is sometimes extremely so. Imagine there are two strings 'Glorp' and 'Pog' next to each other, and I want to translate them into 'Gosh I'd like a peanut butter sandwich.' and 'No, we don't have any'. I can't just put those texts in the same place their priors were, they are too big and you can't push things around in the ROM without breaking everything. Then you need to understand pointers - maybe I can stick my strings in some unused space (like making the ROM bigger and slapping them on the end) and change the pointer that 'points' to the previous strings so it points at my strings instead.
---
So, I realize this is a lot, possibly a lot more than you want to mess with depending on your background. I'll say three things. You can learn all of this stuff. It is super hard, and pretty much every game will present new challenges and you may have to give up on projects some times. Especially if you don't have low level (like knowing C, assembly, or the Nes architecure) skills, take your time and go slowly.
Check places like romhacking.net to see if anyone has done any work at all on the game. Even if there is no translation yet, someone might have done a lot of research/ tool crafting already, and there might be a big 'hell no' point that they found that you can overcome, or that you might want to avoid. Also, if there is a translation in another language, that can be a gold mine of help.
I also have other options for you, if you just want to play the game. You can machine translate from images pretty quickly/cheaply these days. A lot of people just point a phone at the screen and use Google translate.
Check out stuff like ztranslate (
https://ztranslate.net/) too.
Sometimes there are also textual translaitons you can follow along with (and you can make a machine one for others to follow with not nearly as much technical demand) on gamefaqs or somewhere similar.
---
Hope this helps, at least to kickstart your learning. Translating is hard, but cool and rewarding too. Best of luck!