Необходимо изучить то, что было сделано в классических компонентах JS - берут вещи как Dojo, Расширение, FCKEditor, TinyMCE, и т.д. Вы найдете много хороших идей.
Обычно это заканчивает тем, что было некоторыми атрибутами, которые Вы устанавливаете на тегах, и затем Вы заменяете содержание тега с переводом, найденным в Вашем файле перевода, на основе значения атрибута.
Одна вещь иметь в виду, эволюция набора языка (когда Ваш код развивается, будете, необходимо снова перевести все это или не). Мы сохраняем переводы в Файлах ПО (Гну Gettext), и у нас есть сценарий, который преобразовывает Файл ПО в готовый для использования Файлов JS.
, Кроме того:
$ ls -l /dev/fd/ lrwx------ 1 me me 64 2009-09-17 16:52 0 -> /dev/pts/4 lrwx------ 1 me me 64 2009-09-17 16:52 1 -> /dev/pts/4 lrwx------ 1 me me 64 2009-09-17 16:52 2 -> /dev/pts/4
При входе в систему с интерактивного терминала все три стандартных файловых дескриптора указывают на одно и то же: на ваш TTY (или псевдо-TTY).
$ ls -fl /dev/std{in,out,err} lrwxrwxrwx 1 root root 4 2009-09-13 01:57 /dev/stdin -> fd/0 lrwxrwxrwx 1 root root 4 2009-09-13 01:57 /dev/stdout -> fd/1 lrwxrwxrwx 1 root root 4 2009-09-13 01:57 /dev/stderr -> fd/2
По соглашению мы читаем из 0
и напишите на 1
и 2
. Однако ничто не мешает нам поступить иначе.
Когда ваша оболочка запускает ls -l * | less
, он создает конвейер от дескриптора файла ls
1
к less
файлового дескриптора 0
. Очевидно, что less
больше не может читать ввод с клавиатуры пользователя из дескриптора файла 0
- он пытается вернуть TTY, но может.
If less
не был отсоединен от терминала, open ("/ dev / tty")
предоставит ему TTY.
Однако, в случае неудачи ... что вы можете сделать? less
делает последнюю попытку получить TTY, предполагая, что дескриптор файла 2
присоединен к тому же самому объекту, к которому был бы присоединен дескриптор файла 0
, если он не были перенаправлены.
Этот не является отказоустойчивым:
$ ls -l * | setsid less 2>/dev/null
Здесь less
получает свой собственный сеанс (поэтому он больше не является частью активной группы процессов терминала , вызывая сбой open ("/ dev / tty")
), и его файловый дескриптор 2
был изменен - теперь less
завершается немедленно, потому что это выводится на TTY, но не получает никаких данных от пользователя.
Похоже, это специфическая функция Linux, которая отправляет ввод с клавиатуры в FD 2.
Тот же вопрос с ответом, в конечном счете, от человека, который его задавал, находится в linuxquestions , хотя они цитируют немного другой источник из less
. И нет, я не понимаю большей части этого, поэтому я ничего не могу поделать, кроме этого :)
Ну ... во-первых, вам кажется, что вам не хватает вызова open ()
, который открывает '/ dev / tty'. Он использует файловый дескриптор 2 только в случае сбоя вызова open (). В стандартной системе Linux и, вероятно, во многих Unix-системах существует '/ dev / tty' и вряд ли вызовет сбой.
Во-вторых, комментарий вверху дает ограниченное количество объяснений того, почему они возвращаются к файлу. дескриптор 2. Я предполагаю, что stdin
, stdout
и stderr
в значительной степени связаны с '/ dev / tty /' в любом случае, если не перенаправлены. И поскольку наиболее распространены перенаправления для stdin и / или stdout (через конвейер или <
/ >
), но реже для stderr
,