I'm working with an application that supports five languages, incl. Spanish and German (notorious for long words), here are some best practices we follow to accommodate all languages.
Translators are encouraged to keep strings short. Often when a translator is inexperienced they try to translate the English copy literally. We ask them to look at the context and express the copy in a way that makes sense in their language. Often this shortens the text.
This often also helps with the UX because a user is more likely to read a shorter string.
UI is designed and written as dynamic as possible. The most important click target (often a button) usually stretches across the full width (with some margins on the side) so it can fit short and longer strings. But we do not allow to have two lines of text. If that is the case, we go back to the translator and ask them to shorten the string.
Elements are composed in a way that pieces that will likely vary in size in different languages have space to expand if necessary.
Wherever possible use universally understood icons instead of copy.
When adding your first language after the primary, this is an upfront cost but it will make your life so much easier down the road.
If you start introducing special cases for a certain language you will have to go back to all these points when adding your next language and update them for the new language.
I would not shrink the font size, on small devices that might get so small that it's hard to read and it changes the visual experience. In my opinion it's not a long term solution.