Русские вычислители

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



PHP с русским синтаксисом

Сообщений 1 страница 17 из 17

1

Доброго времени суток. Хочу создать некую прослойку, которая бы на лету переводила конструкции на русском в "родные" для PHP. Поэтому передо мной 2 задачи:
1. Каким образом это лучше организовать: библиотека, переопределение стандартных функций, написание своих функций. Хотелось бы отказаться от вмешательства в исходных код самого PHP. То есть чтобы эту прослойку можно было на любом хостинге подключить/отключить.
2. Ну и соответственно перевод всех конструкций на русский язык. Хотелось бы это делать совместно с сообществом, чтобы получился некий "стандарт". Понятно что сразу все конструкции не переведёшь, но начинать надо с малого:)

Создание данной прослойки позволить использовать не только русский синтаксис, но и вообще любой язык, что (возможно :blush: ) будет способствовать развитию на общемировом уровне.

Буду рад услышать любые мысли по вышеизложенному.

0

2

Насколько мне известно, PHP считает буквой любой символ с кодом больше 128. Однажды я этого нечаянно обнаружил: вот здесь. По идее достаточно "define", чтобы переопределить имена, назначить именам на латинице соответствия на кириллице. Про ключевые слова молчу - я их не пробовал.

А Вы можете что-то показать, может, у Вас есть наработки?

0

3

К сожалению, мне эта идея только недавно пришла в голову, поэтому наработок практически нет. Есть небольшой концепт, но его пока даже показывать стыдно. А с define можно не большой пример?

0

4

Код:
define  read  читать

Попробуйте. Я пока что очень занят: вот причины моей озабоченности.

У меня на сайте этот код работает вполне успешно несколько лет:

Код:
function  Три_цифры_словами($входящее_значение, $женский_род=0)
{
//	echo  "\$входящее_значение = $входящее_значение <br>";

	if (strlen($входящее_значение) == 1)
    $входящее_значение = "0" . $входящее_значение;
	if (strlen($входящее_значение) == 2)
    $входящее_значение = "0" . $входящее_значение;
	
	$сотни   = (int) substr ($входящее_значение, 0, 1);
	$десятки = (int) substr ($входящее_значение, 1, 1);
	$единицы = (int) substr ($входящее_значение, 2, 1);


	static  $Сотни_словами = array (1 => " сто", " двести", " триста", " четыреста", " пятьсот", " шестьсот", " семьсот", " восемьсот", " девятьсот");
	static  $Десятки_словами = array (2 => " двадцать", " тридцать", " сорок", " пятьдесят", " шестьдесят", " семьдесят", " восемьдесят", " девяносто");
	static  $Дцать_словами = array (10 => " десять", " одиннадцать", " двенадцать", " тринадцать", " четырнадцать", 
    " пятнадцать", " шестнадцать", " семнадцать", " восемнадцать", " девятнадцать");
	static  $Единицы_словами = array (0 => " ноль", " один", " два", " три", " четыре", " пять", " шесть", " семь", " восемь", " девять");

	$строка = "";
	if ($сотни >= 1)
    $строка = $Сотни_словами [$сотни];
	if ($десятки >= 2)
	{	$строка = $строка . $Десятки_словами [$десятки];
    if ($единицы > 0)
    {	$строка_единиц = $Единицы_словами [$единицы];
    	if ($женский_род == 1)
    	{	if ($единицы == 1)
        	$строка_единиц = " одна";
        if ($единицы == 2)
        	$строка_единиц = " две";
    	}
    	$строка = $строка . $строка_единиц;
    }
	}
	else
	{
    if ($десятки == 1)
    {	$десятки = 10 * $десятки + $единицы;
    	$строка = $строка . $Дцать_словами [$десятки];
    }
    elseif ($десятки == 0)
    {
    	if ($единицы > 0)	//
    	{	$строка_единиц = $Единицы_словами [$единицы];
        if ($женский_род == 1)
        {	if ($единицы == 1)
            $строка_единиц = " одна";
        	if ($единицы == 2)
            $строка_единиц = " две";
        }
        $строка = $строка . $строка_единиц;
    	}
    }
	}
	return  $строка;
}

0

5

Буду пробовать. У меня тоже подобный код работает. PHP в принципе всё равно на какой языке переменные, функции и т.д. А вот заменить уже существующие функции на русский это уже сложнее

0

6

Вот если бы ещё избавиться от ненавистного мне знака "$" - это было бы хорошо. Но не потому, что люблю рубли :)

0

7

Да, переключение раскладки ни есть хорошо. Думаю если можно будет заменить функции на русский язык, то и от доллара можно избавиться.

0

8

Можно б было написать что-то типа компилятора. Но он бы работал на PHP (ведь хостинг нам дают, в основном, на PHP, не правда ли?), а это не быстро.

Я как-то видел, что один парнишка предлагал какую-то штуковину, с которой можно использовать Си в качестве скриптового языка, типа PHP. Как то так:

Код:
<?>
   код на Си
</?>

Аргументы были такие: на современных процессорах код на Си компилируется в доли секунды, так что время отклика критичным не будет. К тому же Си знают очень многие. Поэтому учить PHP специально для программирования сайтов не надо.

Сам не пробовал, но сам факт запомнился. По идее на таком Си можно написать компилятор к языку, где не будет "$" :)

0

9

У меня мысль такая. Вот, например, есть у нас код:

Код:
<?php
	$переменная1 = 0;
	если ($переменная1 < 10) {
    вывод $переменная1;
	}
?>

Каким-либо образом (через библиотеку, либо через функции) преобразуется в обычный код:

Код:
<?php
	$переменная1 = 0;
	if ($переменная1 < 10) {
    echo $переменная1;
	}
?>

Можно читать файл, писать его в переменную, заменять функции и исполнять через eval(), но как-то мне это не нравится... Особенно сложно при include.

0

10

А не пробовали переопределить ключевые слова?

Код:
define  если  if

В Си такое делается... Правда, если без кириллицы

Код:
#define  esli  if

но потом можно транслитерацией подправить. Чем и занимается моя утилита для русификации Си.

0

11

А не пробовали переопределить ключевые слова?

Не, так не получается(

0

12

Нет в мире совершенства...
Тогда можно попробовать так.

Код:
function  include_rus ($file_name)  // на входе - имя файла без расширения
}
      $исходный код = прочитать текст ($file_name . "rus");
                               // "rus" - расширение имени файла для русского PHP
      заменить в тесте ключевые слова ($исходный код, $список замен);
      Записать текст в файл ($исходный код, $file_name . "php");
      include $file_name . "php";
}

Кстати, символу доллара через эту штуку тоже можно найти замену - на русской раскладке. Например, символ №

0

13

Да вот только такая "трансляция" будет обладать одним недостатком: она будет выполняться всякий раз. Можно попробовать по другому: если файл *.php уже существует, то трансляцию не производить. Но как-то надо будет отслеживать правки в исходном файле: если они произошли, то транслировать надо независимо от того, существует ли файл *.php или нет. Но это технические детали. Можно сделать по уму :)

0

14

То есть принцип примерно такой же, как у всяких кэширующих ускорителей?

0

15

Ещё есть шаблонизаторы типа Smarty. Они используют свой синтаксис, но работают на php. Можно пойти по этому же пути. Но хотелось чтобы можно было использовать PHP с русским синтаксисом где угодно. Например, вот есть Joomla. Я беру и пишу расширение для неё на русском. А в случае Smarty так не прокатит.

0

16

Много интересных возможностей приходят в голову. В конце концов, код на PHP можно выдавать программой на Си или Паскале (да-да, сделать на них транслятор). Делать это на своём компьютере, проверять с помощью "Денвера", а потом выкладывать на сервер. Хотя, конечно, было бы интереснее, чтобы всё это сразу работало на сервере. И желательно без PHP :)

0

17

И желательно без PHP

Тогда это уже создание отдельного языка

0

Быстрый ответ

Напишите ваше сообщение и нажмите «Отправить»