Как мы уже выяснили, это кратковременное решение проблемы Поэтому лучше было бы записать все строки в массив $st rings, сохранив его в двух разных файлах: locale.en. inc и locale_dk. inc. Включив нужный файл, можно управлять языком
Эта система, основанная на внешнем локализованном файле с переводом, позволяет без труда понять идею, лежащую в основе действия перевода. Начать можно с такого файла:
<?php Л
* This file holds the English translation of PHP Weather. To use it,
* just include it in the main phpweather.inc file.
*
* Author: Martin Geisler 4
if (isset(Sstrings)} { unset($strings);
)
/* Load the new strings */
{strings = array(
'ncLdata' => '<blockquote><p>Sorry! There is <b>no data</b> 1 .
'available for %s.</p></blockquote>', 'mm_inches' => '<b>%s</b>rm (<b>%s</b> inches)',
'precip_a_trace' => 'a trace',
was %s of precipitation 'sky_str_format1' => 'There were <b>%s</b> at a height of <b>%s</b>
'meters (<b>%s</b> feet)', 'sky_str_clear' => 'The sky was <b>clear</b>');
?>
После перевода файл может выглядеть так:
<?php
/* *
* This file holds the Danish translation of PHP Weather. To use it,
* just include it in the main phpweather. inc file.
*
* @author Martin Geisler
V
if (isset({strings)) { unset($strings);
}
/* Load the new strings */
{strings = array(
'no_data' => '<blockquote><p>Desvæ:rre! Der er '
'<b>ingen data</b> tilstæde for ' '%s.</p></blockquote>', 'mm_inches' =;- <b>%s</b; mm (<b>%s</b> tommer',
'precip_a_trace' => 'ensmule',
'precip_there_was' 'Oer var %s nedbø r ',
'sky_str_format1' => 'Dervar <b>%s</b> i en højde af ' .
'<b>%s</b>meter (<b>%s</b> fod)', 'sky_str_clear' => 'Himlen var <b>skyfri</b>');
?>
По мере того как в сценарии появляются новые строки, соответствующий английский перевод можно добавить во все языки. Это необходимо, чтобы
обеспечить некоторый запас прочности. В этом не было бы необходимости при использовании gettext() или функций-оболочек, с которыми мы познакомились выше.
Однако не все идеально. Перевод на некоторые языки может оказаться сложнее - в первую очередь это касается французского и немецкого. Проблема существующей системы в том, что введение дополнительных проверок, необходимых для французского и немецкого языков, нарушит выполнение сценария, а потому и работу всех других переводов. Следовательно, переводчикам придется примириться с логикой английского языка.