Generally speaking, when it comes to internationalization you don't mix partial translations in a line of text. You cannot make assumptions about sentence structure or how pluralization is handled between languages.
The standard way of handling translations with Godot is to have your translation strings defined in a CSV file. The engine will process it and create .translation
files that you add to your project settings.
In your particular case, it looks like you want English text in more than one translation. That means some of your translation strings will look very similar to each other. Nothing wrong with that, though you may want to translate the entire string.
Example CSV file:
keys,en,zh
message1,"The herb is nice", "The 草藥 is nice"
message2,"Thunder Tower is far", "雷峰塔 is far"
You could certainly also add bbcode to the translation strings and feed them into the bbcode text field of a RichTextLabel if you wanted to. Or add variables to them, as described in the answer to this question.
The main takeaway here is to be feeding simple ids like message1
into the tr()
function. Once you have the right string you can manipulate it for display purposes.