The name of your .mo file must match the $domain, e.g. name your files messages.mo and call bindtextdomain("messages", $directory).(PHP 4, PHP 5, PHP 7, PHP 8)
bindtextdomain — Sets or gets the path for a domain
The bindtextdomain() function sets or gets the path for a domain.
domainThe domain.
directory
       The directory path.
       An empty string means the current directory.
       If null, the currently set directory is returned.
      
   The full pathname for the domain currently being set,
    o false in caso di fallimento.
  
| Versione | Descrizione | 
|---|---|
| 8.4.0 | 
       directory is optional now.
       Previously, the parameter always had to be specified.
       | 
     
| 8.0.3 | 
       directory is nullable now.
       Previously, it was not possible to retrieve the currently set directory.
       | 
     
Example #1 bindtextdomain() example
<?php
$domain = 'myapp';
echo bindtextdomain($domain, '/usr/share/myapp/locale');
?>Il precedente esempio visualizzerà:
/usr/share/myapp/locale
Nota:
The bindtextdomain() information is maintained per process, not per thread.
The name of your .mo file must match the $domain, e.g. name your files messages.mo and call bindtextdomain("messages", $directory).I recommend using absolute paths in the $directory parameter. This caused me several hours to debug as Ajax calls to my localization functions messed up the path. And since no error if thrown if the path in $directory cannot be found, one should check the result always:
<?php
    // Imagine the path for this file is "/localization" and your locales are in the "/locale" directory.
    $pathToDomain = __DIR__ . "/../locale";
    if ($pathToDomain != bindtextdomain($domain, $pathToDomain)) {
        // Error handling.
    }
?>