MultilingueL'objectif du développement de sites Web est de résoudre les problèmes entre les langues.
Alors comment résoudre ce problème ? Elle peut être divisée en trois étapes :
1. Page multilingue
2. Base de données multilingue
3. Langue d'accès utilisateur unifiée
1. Page multilingue
Questions obligatoires à considérer :
A. Lorsque les utilisateurs se connectent, les caractères sont automatiquement reconnus et différents packages de langue sont appelés ?
B. Lorsque l'utilisateur bascule entre différentes langues, différents packages de langues sont-ils appelés ?
C. Quelle est la structure des répertoires après l'ajout de plusieurs langues ?
La multilinguisation de la page signifie que la multilinguisation de l'apparence peut être utilisée ici.
Le répertoire des langues doit être inclus lors de la conception, avec des sous-répertoires séparés pour les différentes langues.
Par exemple, langue anglaise/en, langue chinoise simplifiée/gb, langue chinoise traditionnelle/b5 (peut être étendu à d'autres langues)
Chaque répertoire contient la version linguistique de chaque page. Lors de la sélection d'une version linguistique, vous pouvez appeler le pack linguistique de la version correspondante.
Ce qui suit est un exemple de code
class language { static $lanObject; public $type; // unit , dashboard , menu ,other public $lan; // language private $special; // The common in the file private function construct() { if( isset($_GET['hl']) || isset($_POST['hl']) ) { switch( isset($_GET['hl'])?$_GET['hl']:$_POST['hl'] ) { case 'en': $this->lan = 'en'; case 'zh': $this->lan = 'zh'; case 'all': $this->lan = 'all'; default: $this->error(); } } else $this->lan = isset($_COOKIE['hl']) ? $_COOKIE['hl']:'zh'; } public static function getObject() { if( !(self::$lanObject instanceof self) ) self::$lanObject = new language(); return self::$lanObject; } public function lto($key) //$key is English { if( $this->lan !== 'zh' ) return $key; if( empty($this->special) ) // if the $special is null { if( isset($this->type) ) $this->special = file_get_contents($this->type.'.txt'); else return $key; } echo $this->search($key); } private function search($searchTozh) // PHP String { $key_start = strpos($this->special,$searchTozh); $key_end = strpos($this->special,' ',$key_start); $len_str = strlen($searchTozh); $for_sub = $key_start + $len_str + 1; return substr($this->special, $for_sub, $key_end - $for_sub); } }
strpos(); sert à trouver la position où la chaîne apparaît pour la première fois, comme 'wo' dans 'hello world', La valeur de retour est 6
substr(); fait partie de la chaîne interceptée
Vient ensuite le code ajouté lors du débogage
$la = language::getObject(); $la->type = 'unit'; $la->lto('min'); echo '<br/>'; $la->lto('hello');
lto (ce doit être traduit en anglais); Le format du contenu du
fichier unit.txt est
hello-hello min-small minute-minutes-minutes
$special est conçu pour être global et il est On s'attend à ce que lto (sera appelé plus d'une fois), ce serait un gaspillage de performances si vous chargez le fichier à plusieurs reprises.
$type est conçu pour être public pour prendre en compte l'efficacité des fichiers chargés. Parfois, il n'est pas nécessaire d'afficher les fichiers d'il y a quelques jours, il est donc préférable de les séparer par type d'utilisation. menu.txt spécifiquement responsable de la traduction des menus. Il existe également des textes txt traduits spécifiquement pour des opérations telles que la suppression et la collecte. De cette façon, le texte à charger peut être défini librement
La langue peut également être définie librement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!