Chinois, Simplifié, Traditionnel – Intégrer un affichage simplifié et traditionnel en php


Si vous êtes amenés à travailler sur un site en langue chinoise, vous serez sans doute confronter à une difficulté propre à cette langue. Il existe en effet le chinois traditionnel et le chinois simplifié. Cela peut devenir relativement important selon l’audience que vous poursuivez, en effet l’usage du chinois traditionnel est semble-t-il un « must-have » pour la diaspora chinoise et des communautés hors de Chine (HongKong, Macao, Taiwan) alors que le chinois simplifié est nettement plus utilisé en Chine même.

De très nombreux sites médias à destination d’une audience chinoise font l’effort de proposer le basculement d’une version à une autre. On peut voir la chose à l’oeuvre sur le site de la BBC.

De toutes les façons, il n’existe pas de solution idéale, il semble que même si vous utilisiez une table de conversion vous n’êtes pas à l’abri de contresens.

A titre d’exemple, voilà le type de contresens qui peut se produire entre le chinois traditionnel et le chinois simplifié. C’est un exemple glané sur le web mais vérifié via google translate

Cet idéogramme en chinois simplifié peut revêtir deux sens : « derrière » ou « reine ». Si on tente donc de traduire à nouveau en chinois traditionnel cet idéogramme depuis le chinois simplifié, on peut opter pour « derrière » ou « reine », ce qui convenons-en peut ne pas avoir le même sens de là à parler du derrière de la reine, il n’y a qu’un pas qu’il faut bien se garder de franchir !

On tente quand même d’utiliser une table de conversion qui semble le moyen de passer du chinois simplifié au chinois traditionnel et vice-versa sans trop de difficultés.

Utilisation d’une table de traduction comme sur wikipedia

On est allé chercher une strophe de poésie sur un site de poésie contemporaine chinoise pour faire notre essai.

遇到疑问,我习惯百度一下
就如迷山时,向那个
皱纹很深的老奶奶问路

Source : Ferry de Bei Xiaohuang

Pour information, voici la traduction en anglais :

Chancing to query, I give Baidu.com* a try.
Just like when lost in the hills, I ask for direction
from a wrinkled old granny.
<?php 
 
/* print out correct header */
header('Content-Type: text/html; charset=utf-8');
 
/* include the translation table */
include ('ZhConversion_2.php');
 
/*
$zh2Hant => (Generic Terms) PHP Array to translate Simplified Chinese to Traditional Chinese.
 
$zh2Hans => (Generic Terms) PHP Array Struct to translate Traditional Chinese to Simplified Chinese.
 
$zh2TW => (Tech/IT/Country-Terms) PHP Array Struct to translate Simplified Chinese to Taiwan::Traditional Chinese.
 
$zh2HK => (Tech/IT/Country-Terms) PHP Array Struct to translate Simplified Chinese to Hong Kong::Traditional Chinese.
 
$zh2CN => (Tech/IT/Country-Terms) PHP Array Struct to translate Traditional Chinese to China::Simplified Chinese.
 
$zh2SG => (This PHP array is not completed) For Singapore-Simplified Chinese
 
Hant => Han-T == Traditional Chinese(Han) Chars
 
Hans => Han-S == Simplified Chinese(Han) Chars
 
CN = China (HanS)
 
HK = HongKong(HanT) 
 
SG =  Singapore(HanS)
 
TW = Taiwan(HanT)
 
ZH => ZHong-wen (Chinese 中文)
*/
 
 
 
// Traditional(TW) to Simplified(CN)
 
echo ('Traditional(TW) to Simplified(CN)');
echo ('<br>');
 
$hant_str ='遇到疑问,我习惯百度一下 就如迷山时,向那个 皱纹很深的老奶奶问路';
 
 
/* Assume that PHP::strst is MB/MultiBytes-safe, ie, strtr = mb_strtr */
$hans_str = strtr(strtr($hant_str, $zh2CN), $zh2Hans);
 
echo $hans_str; 
 
 
echo ('<br><br>');
 
// Simplified(CN) to Traditional(TW)
echo ('Simplified(CN) to Traditional(TW)');
echo ('<br>');
 
$hant_str ='遇到疑问,我习惯百度一下 就如迷山时,向那个 皱纹很深的老奶奶问路';
 
/* Assume that PHP::strst is MB/MultiBytes-safe, ie, strtr = mb_strtr */
$hant_str = strtr(strtr($hans_str, $zh2TW), $zh2Hant);
 
echo $hant_str;
 
?>

Le fichier de conversion ZhConversion.php
La source du fichier est disponible ici sur le dépôt git de wikimedia.org http://past.is/0Pp8q

	<?php
	/**
	 * Simplified / Traditional Chinese conversion tables
	 *
	 * Automatically generated using code and data in maintenance/language/zhtable/
	 * Do not modify directly!
	 *
	 * @file
	 */
 
	$zh2Hant = array(
        '㐽' => '偑',
	'㑇' => '㑳',
	'㑈' => '倲',
	'㑔' => '㑯',
	'㑩' => '儸',
	'㓥' => '劏',
	'㔉' => '劚',
	'㖊' => '噚',
	'㖞' => '喎',
	'㘎' => '㘚',
	'㚯' => '㜄',
	'㛀' => '媰',
 
	/* Voir la source complete à l'adresse http://past.is/0Pp8q */
 
	);

Source : http://past.is/0Pp8q