Solution:
No, simply replacing the standard 8-bit string functions with their mb_* counterparts in PHP is not enough and can actually cause problems. This is because byte arrays in PHP are also treated as strings, and functions like strlen() and substr() are often used on raw bytes rather than actual text.
At my previous workplace, we successfully built a multilingual website (including Arabic and Hindi) without using the mbstring library at all. In practice, text string manipulation happens less frequently than one might expect. When it does, handling it properly requires much more care than just changing function names.
Most of the real challenges are on the HTML side, particularly in rendering layouts for right-to-left (RTL) languages like Arabic. Ensuring proper page layout is often the non-trivial part of internationalization.
Also, the difficulty of supporting multiple languages varies significantly:
If “international” only includes European languages (plus Russian), it’s relatively straightforward.
If it includes Middle-Eastern, South-Asian, and Far-East languages, handling text, encoding, and layout becomes far more complex.