Since fonts can vary greatly in design, it is almost unavoidable that you will need to create material presets for each of the fonts.
It is possible for example that Outline thickness of value X will work fine with a different font but most of the time, designers end up tweaking those material property values to get the visual they want. It all depends on how similar the fonts you have selected are for those different languages.
Although having to manage several Primary font assets with fallbacks and related material presets per language adds complexity on the resource management side, it guarantees the visual results for any of those languages. Materials are pretty small in terms of size so having more material presets doesn’t really impact build size.
Since localization often involves more than just changing font assets like changing other resources such as textures, sounds, sprites, colors, etc. Having some type of tool to manage these resources for any given language is usually the best way to go.
Back to the topic… again assuming the fonts you have selected are very similar in design / weight, you could create the required materials at runtime but that also adds complexity.
Personally, I would lean towards having material presets for each of those primary font assets / fallback for each of the languages supported.
To manage the swapping of resources when the language change. Like I said before you could use a tool like I2 Localization which should be able to handle all of this.
You could also implement your own tool to track all the resources that need to change when the language is switched. Your tool would need to be sure to assign the proper font asset to your text objects, assign the correct material preset (if needed), localized strings and perhaps change other properties like point size, etc.
A recently added feature that could be helpful in this process is the new Text Style which allows you to assign a style to an entire text object. Since TMP now support Global StyleSheets (defined in the TMP Settings) and Local StyleSheets which can be assigned to the individual text object, the visual treatment of the text object could be controlled this way.
For instance, you could create a StyleSheet for English where you would define Styles for Headers, Body, etc. These styles could specify the font that is to be used like <font=“My English Font Asset” material=“The material preset to use”>. So to handle switching to Chinese, you would simply replace the StyleSheet by the Chinese one and all the text using a Text Style like Header, Body would change automatically. You would still need to change the text itself but that should be it. This is just a suggestion but that could be a new way / simpler way to handle this.
This is a lot of stuff to think about. Let me know your thoughts.