Языковая поддержка

<span lang="ru">
ITEM: Использование языков
(Требуется приложение album версии 4.0 или выше)

Приложение Album уже содержит в себе запакованные языковые файлы (однако, нам
всё равно необходима помощь в переводе, подробности смотрите дальше!).
При запуске приложения эти языковые файлы будут влиять на содержание большей 
части сообщений, которые генерируются приложением причём как в теме, которая 
используются для создания альбома, так и менять вид некоторых сообщений, не 
связанных с темой, а только с готовым HTML файлом.

Изменить любой текст в теме, в соответствии с вашим языком можно просто путём
простого редактирования самих файлов тем. Есть простой пример такой работы - 
это "simple-Czech" тема.

Чтобы использовать язык надо добавить опцию "lang" в конфигурационном файле
album.conf или просто её указать при командной строке при первым запуске 
приложения (естественно, после первого запуска - это опция будет сохранена
в том же самом конфигурационном файле).

Так же можно убрать возможность использования языковой опции путём запуска
приложение командой такого вида:

% album -clear_lang ...

Вы можете указать несколько языков, если вы хотите, чтобы один язык 
использовался как главный, другой как дополнительный. К примеру, очень удобно
указать голландский язык как основной, а шведский язык использоваться как язык
для сохранения резервной копии альбома. Для этого надо выполнить:

% album -lang swedish_chef -lang nl ...

Если вы указали дополнительные языки (например Испанский или Боливийский,
командой es-bo), то приложение album будет работать с испанским языком 'es', 
как главным для резервной копии.

Следует обратить внимание, что для того, чтобы не было проблем перезаписи
готовых галерей при нескольких запусках приложения album, необходимо указать
сразу несколько языков, с которыми вы хотите работать.

Чтобы увидеть какие языки доступны для приложения надо выполнить:

% album -list_langs

К сожалению, перевода для многих языков мира, ещё нет, но есть шанс, что люди
заинтересуются этим, чтобы сделать приложение album более популярным..

ITEM: Желающим помочь с переводом

Проекту приложения album необходимы добровольцы-переводчики, для нескольких
областей работы:

1) The Mini How-To. Пожалуйста переводите из <a href="txt_2">source</a>.
2) Сообщения выводимые самим приложение при запуске, более подробно см. ниже.

Если вы готовы помочь с переводом обоих пунктов - свяжитесь со мной обязательно!

Если же вы готовы перевести хоть что-то, дайте мне знать, что именно!

ITEM: Перевод документации

Наиболее важный документ это: <a href="Section_2.html">"Mini How-To"</a>.
Пожалуйста переводите его сразу из источника: <a href="txt_2">text source</a>.

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

При переводе пожалуйста обратите внимание на правильное использование
заглавных букв и названия самого вашего языка <b>in your language</b>.  
Для примера - "fran�ais" вместо "French".

Мне без разницы какую раскладку вы используете для работы. На данный момент доступны
следующие варианты:

1) HTML символы такие как [&amp;eacute;]] (несмотря на то, что они работают только 
в интернет браузерах)
2) Unicode (UTF-8) такие как [é] (работают только в интернет браузерах и некоторых 
терминалах)
3) ASCII коды, где возможно, такие как [�] (работают в текстовых редакторах, на этой 
   странице не будут видны, т.к. её раскладка установлена как unicode)
4) Специфические языковые раскладки iso такие как iso-8859-8-I для иврита.

Современный Unicode (utf-8) по видимому это лучшая раскладка для всех языков. 
Это существенно облегчает работу по адаптации этого приложения для разных стран 
и народов. Однако utf не распространяется на некоторые языки, например, тот 
же iso-8859-1. Несмотря на это всё равно есть возможность компенсировать это
через использования iso стандартов, т.к. между utf-8 и iso всегда можно 
найти соответствие, путём задания нескольких параметров.

Т.е. если главное терминальное приложение написано для iso раскладки вместо utf, 
то это будет очень хорошее решение, именно для тех языков, которых нет в 
описании стандарта utf.

ITEM: Сообщения генерируемые приложением album

Приложение album генерирует все текстовые сообщения на заданном при запуске языке, 
подобно тому как другие системы используют отдельный модуль, написанный на 
языке perl <a href="/redir.cgi?search.cpan.org/~petdance/Locale-Maketext/lib/Locale/Maketext.pod">Locale::Maketext</a>.
(Больше информации об этому можно найти вот по этой ссылке <a href="/redir.cgi?search.cpan.org/~petdance/Locale-Maketext-1.10/lib/Locale/Maketext/TPJ13.pod">TPJ13</a>)

Сообщение об ошибке, к примеру, может выглядеть примерно так:

  Не найдено файлов тем [[в такой-то директории]].

Или, если приложение установлено по умолчанию:

  Не найдено файлов тем в /www/var/themes.

Если задана опция использования голландского языка, сообщение будет иметь вид:

  Geen thema gevonden in /www/var/themes.

Естественно путь в данном случае "/www/var/themes" не будет переведён.
Строка перевода в языковом файле должна быть:

  'Не найдено файлов тем в [_1].'
  # Args:  [_1] = $dir

На голландском языке будет что-то вроде:

  'Не найдено файлов тем [_1].' => 'Geen thema gevonden in [_1].'

После перевод, приложение album заменит [_1] нужной папкой.

Иногда имеется несколько переменных, и в соответствии с правилами вашего языка,
их можно поменять местами:

Некоторые примеры ошибок:

  Необходимо указать -medium с -just_medium option.
  Необходимо указать -theme_url с -theme option.

На голландском языке это будет похоже на:

  Met de optie -just_medium moet -medium opgegeven worden.

Строка перевода для голландского языка (в языковом файле) тогда 
будет в виде:

  'Необходимо указать [_1] с [_2] опцией'
  => 'Met de optie [_2] moet [_1] opgegeven worden'
  # Args: [_1]='-medium'  [_2]='-just_medium'

Обратите внимание, что переменные заменены местами.

Есть так же специальный оператор для кавычек, к примеру,
мы хотим перевести:

  'У меня есть 42 изображения'

Число 42 может быть изменено.  В английском варианте нормальным будет:

  0 images, 1 image, 2 images, 3 images...

А на голландском:

  0 afbeeldingen, 1 afbeelding, 2 afbeeldingen, 3 afbeeldingen..

Но, в других языках (например, во многих языках славянской группы)
имеются другие правила к склонению слова "изображение", которое должно
быть изменённым в соответствии с тем, какое именно числительное стоит
после слова "изображение". Для русского это 1 изображение, 2 изображения,
3 изображения, 4 изображения, 5 изображений и т.п. Самый просто путь
решить эту проблему это ввести оператор [quant]:

  [quant,_1,image]

Это аналогично предыдущему примеру с "[-1] image" за исключением того, 
что словоформа будет изменяться, если числительное больше 1.

  0 images, 1 image, 2 images, 3 images...

Для английского языка просто необходимо добавить 's', для указания
множественного числа, для голландского это будет выполнено в виде:

  [quant,_1,afbeelding,afbeeldingen]

Что даёт правильное написание числительных на голландском языке.

Если же нам необходимо указать особую форму для 0, мы может указать:

  [quant,_1,directory,directories,no directories]

Это даст в выводе приложения:

  no directories, 1 directory, 2 directories, ...

Есть также сокращенный вариант оператора [quant] - это 
использование '*', в тех же самых случаях:

  [quant,_1,image]
  [*,_1,image]

Тот же пример для голландского языка будет таким:

  '[*,_1,image]'
  => '[*,_1,afbeelding,afbeeldingen]',

Если же вам нужно что-то более сложное, описанного выше, т.е. того, что
может дать существующий на данный момент код perl, дайте мне знать - я 
подумаю как можно решить эту проблему, зная как перевод должен работать:

  '[*,_1,image]'
  => \&russian_quantity;	# Здесь дополнительные определения будут..

Строки для перевода в большей части помещены в одинарные кавычки ('),
при переводе следует следить за тем, чтобы открытие-закрытие кавычек 
было корректным, иначе программа работать нормально не будет.

Если необходимо в сообщении вывести отдельный апостроф, перед ним
нужно написать слэш (\):

  'I can\'t find any images'

Для того чтобы вывести квадратные скобки, перед ними нужно написать символ
тильды (~):

  'Проблема с опцией ~[-medium~]'

Единственный момент, что подобный подход сложно использовать, если внутри
есть другой аргумент в квадратных скобках (могут возникнуть ошибки при работе
приложения в некоторых случаях):

  'Проблема с опцией ~[[_1]~]'

Будьте внимательными, всегда проверяйте корректно ли закрыты-открыты скобки!

Более того, в большинстве случаем перевод должен использовать те же самые 
переменные, что и оригинал:

  'Необходимо указать [_1] с [_2] опцией'
  => 'Met de optie [_2] moet'              # <- Куда исчезло [_1] ?!?


К счастью, большая часть работы уже сделана за вас. Языковые файлы
сохранены в опции -data_path(или -lang_path) или там где приложение
альбом по умолчанию хранит свои данные
Для генерации языкового файла можно ввести команду:

% album -make_lang sw

В этом случае будет создан новый, пустой языковый файл, готовый к
переводу, в данном случае он будет назван 'sw' (Швеция).  Для перевода,
необходимо открыть этот файл и постепенно, начиная с верха перевести
всё, что вы можете. Если что-то непонятно - оставляйте всё как есть.
Наиболее важные сообщения, перенесены в самый верх этого файла, их
надо перевести в первую очередь.

Так же вам надо определиться с языковой раскладкой, это в некотором
смысле сложно, однако, я надеюсь, что людям доступен их терминал или
интернет браузер, где можно посмотреть в какой раскладке вы работаете.

Если вы хотите построить новый языковый файл, использую то, что уже
сделано ранее (т.е. из предыдущего языкового файла), к примеру, чтобы
добавить в языковый файл новые сообщения, вы должны указать первой
опцией выбора языка, а уже второй - генерацию языкового файла, таким
образом:

% album -lang sw -make_lang sw

Таким образом в генерируемый языковый файл, возьмёт всю информацию
из существующего языкового файла, за исключением комментариев!

Если у вас будут получаться очень длинные строки перевода, можете
не думать о том, как организовать перенос слов, как это приходится
делать, например, в программах на языке С, путём написания
символа возврата каретки (\n) за исключением того случая, когда
они указаны в оригинале. Приложение album будет само переносить
части длинной строки правильно.

Пожалуйста свяжитесь со мной, когда вы начнёте работу по переводу, чтобы
я был уверен, что два переводчика не делают одно и то же или работают
надо одной и той же частью текста. На основе вашей информации, я смогу
правильно обновлять языковые файлы, чтобы обеспечить тем самым
нормальную работу приложения album. Пожалуйста присылайте мне даже
незаконченные файлы, это лучше чем ничего!

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

ITEM: Почему я всё ещё вижу сообщения на английском языке?

После указание другого языка, вы можете всё ещё видеть что-то на английском. 
Вероятные причины могут быть следующими:

1) Некоторые слова всё ещё на английском.  (-geometry всё ещё -geometry)
2) Использование строк до сих пор не переведено.
3) Результат работы дополнений (plugin) маловероятно, что будет с переводом.
4) Языковые файлы не всегда закончены, и когда будут переведены полностью - 
никто не знает.
5) Новая версия приложения album может выдавать новые сообщение, которые 
просто ещё нет в языковом файле.
6) Большинство слов в темах на английском.

Проблему последнего пункта очень просто решить, для этого достаточно просто 
отредактировать файлы тем вручную, и заменить части html кода с английским
языком, на части кода со словами нужного вам языка. То же самое относится и 
к графике, с названиями или английскими буквами. Нужно создать её по-новой, 
поместить в папку темы. В любом случае, если вы создадите новую тему - я 
буду очень этому рад,  не забудьте об этом написать мне, чтобы я её включил 
в список возможных тем.

</span>
