break;
}
)
}
Вот базовый класс для всех классов вывода:
class Basic_0utput
{
var {strings;
function _($string)
{
if (isset($this->strings[$string])) { return $this->stringst{string];
} else {
return {string;
}
function gettext($string) return
}
Общая функция outNumFiles(), которую мы уже видели:
function outNumFiles(Scount) {
; if ({count == 0) {
return {this->gettext("No files."); } elseif ({count == 1) {
return {this->gettext("1 file."); } else {
return sprintf({this->gettext("%s files"), {count);
>
Функция getChar set () возвращает набор символов для перевода:
function (
return
)
class English Output extends 8asic_0utput
I
Конструктор инициализирует массив $st rings, записывая правильный набор символов. Другие строю! находятся в basicOutput:
function English_Output()
<
$this->strings = array(
'charset' => 'ISO-8859-1');
)
}
class Danish_Output extends Basic_0utput {
function Danish_Output() {
$this->strings = array(
'No files. => 'Ingen filer. '. '1 file.' => '1 fil. ', '%s files. 1 => '%s filer', 'charset' => 'ISO-8859-1');
}
}
class Polish_Output extends Basic_Output {
function Polish_Output() {
$this->strings = array!
'charset' => 'IS0-8859-2');
}
function
{
if (Scount == 0) {
return "Nie ma plikyw."; } elseif (Scount == 1) {
return "1 plik."; } elseif (Scount <= 4) {
return "Scount pliki."; } elseif (Scount <= 21) {
return "Scount plikyw."; } else {
$last_digit = substr($count, -1); if ($last_digit >= 2 && $last_digit <= 4) {
return "Scount pliki."; } else {
return "Scount plikyw.";
)
Наконец, создадим новый объект Арр и отправим правильный заголовок, прежде чем выводить HTML:
$obj = new App();
header('Content-Type: text/html; charset=' . $obj->output->getCharset());
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">http://www.w3.org/TR/REC-html40/loose.dtd">
<html> <head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo($obj->output->getCharset()); ?>"> <title>My Apix/title> </head>
<body>
<?php
echo("<p>" . $obj->output->outNumFiles(7) . "</p>\n"); ?>
</body> </html>
Строки многобайтовых символов
Существует немало языков, в которых недостаточно одного байта для каждого символа. В одном байте содержится 8 бит, и потому он может содержать 256 (28) различных значений. В таких языках, как китайский и японский, тысячи символов. В китайском письме 40 000 символов. В японском содержатся все китайские и еще два алфавита. Для этих языков каждый символ должен иметь размер два или более байтов.