How can the distinction between internationalization and translation be better implemented in PHP projects?

The distinction between internationalization and translation can be better implemented in PHP projects by using a combination of gettext functions for internationalization and translation files for managing translated strings. By separating the two concepts, it allows for easier maintenance and updates of translations without impacting the overall internationalization strategy.

// Set up gettext for internationalization
$locale = 'en_US';
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain('messages', 'path/to/locale');
textdomain('messages');

// Load translated strings from a .po file
bind_textdomain_codeset('messages', 'UTF-8');
bindtextdomain('messages', 'path/to/locale');
textdomain('messages');

// Use gettext functions for translated strings
echo _('Hello, world!');