Справочный центр

Правила разбора файлов
*.php

Правила синтаксического разбора файлов *.php для проекта локализации приложений
Исходные файлы

Назначение файлов:
.php файл — это текстовый файл в формате PHP.
PHP (первоначально Personal Home Page Tools — «Инструменты для создания персональных веб-страниц») — скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков, применяющихся для создания динамических веб-сайтов

Пример исходного .php файла:
<?php
   $a = 1; 
   $b = null; 
   $c = 2 * 3; 
   $d = true; 
   if($a) echo "if(\$a);<br />"; 
   if($b) echo "if(\$b);<br />"; 
   if($c) echo "if(\$c);<br />"; 
   if(!$d) echo "if(!\$d);<br />"; 
   if($a < $c) echo "\$a < \$c;<br />"; 
?>
Синтаксис PHP имеет множество лексикографических правил для описания переменных, констант, циклов, операторов и прочих программных конструкций. Более подробно смотрите в официальной документации. Ниже приведены только те конструкции, которые каким либо образом обрабатываются либо игнорируются нашим сервисом.

PHP предоставляет несколько методов для вставки комментариев. Двойная косая черта (//) используется для однострочных комментариев, после чего PHP-машина игнорирует всё, что расположено до конца строки. Также могут применяться многострочные комментарии в стиле "C" / "С++" (/*…*/). Для однострочных комментариев можно ещё пользоваться символом решётки (#) (комментарий сценарных языков операционной системы "UNIX"). При переводе все комментарии игнорируются.

Основные конструкции и ключи рассмотрим на примерах ниже. Наш сервис alingvo.ru осуществляет разбор и перевод только указанных конструкций

Константы:
<?php
    DEFINE("january", "enero");
    DEFINE("february", "febrero");
    DEFINE("march", "marzo");
    DEFINE("april", "abril");
    DEFINE("may", "mayo");
    DEFINE("june", "junio");
    DEFINE("july", "julio");
    DEFINE("august", "agosto");
    DEFINE("september", "septiembre");
    DEFINE("october", "octubre");
    DEFINE("november", "noviembre");
    DEFINE("december", "diciembre");
?>
Массивы:
<?php
   $LANG = array(
    "january"   => "enero",
    "february"  => "febrero",
    "march"     => "marzo",
    "april"     => "abril",
    "may"       => "mayo",
    "june"      => "junio",
    "july"      => "julio",
    "august"    => "agosto",
    "september" => "septiembre",
    "october"   => "octubre",
    "november"  => "noviembre",
    "december"  => "diciembre"
    );
    
    $LANG2['_MONDAY'] = "Monday";
    $LANG2["_TUESDAY"] = 'Tuesday';
    $LANG2["_WEDNESDAY"] = '';
    $LANG2["_Thursday"] = "Thursday";

    $MONEY[
        'currency' =>
            [
                'currency-ru' => 'рубль',
                'currency-ua' => 'hřivna',
                'currency-kz' => 'tenge',
                'currency-tj' => 'сомони',
                'currency-bg' => 'лев',
                'currency-by' => 'рубль',
                'currency-ge' => 'лари',
                'currency-az' => 'манат',
                'currency-ir' => 'туман',
                'currency-id' => 'рупия',
                'currency-es' => 'песо',
                'currency-kg' => 'сом',
                'currency-uz' => 'сум',
                'currency-mn' => 'тугрик',
                'currency-me' => 'евро',
            ]
    ]
?>
Описание ключей:
1. $Имя_переменной['Ключ']:
a. Назначение: контекст.
b. Пример: $MONEY['currency']['currency-ru'].
c. Пояснение: контекст формируется согласно иерархии ключей. В случае констант это первый параметр внутри конструкции DEFINE

2. правая часть строки, содержащей символ =>, или =
a. Назначение: исходная строка | строка перевода.
b. Пример: рубль.
c. Пояснение: в случае констант это второй параметр внутри конструкции DEFINE

Процесс перевода:
1. Чтобы получить локализованное приложение, необходимо перевести .php файлы на нужные языки.
2. Мы предлагаем воспользоваться для перевода нашим онлайн-сервисом alingvo. Сервис:
  • загружает исходные файлы
  • преобразует их в строки для перевода
  • предоставляет удобный для переводчика интерфейс
  • формирует целевые файлы локализации