Показаны сообщения с ярлыком Linux. Показать все сообщения
Показаны сообщения с ярлыком Linux. Показать все сообщения

четверг, 23 июня 2016 г.

Небольшой FAQ про локализацию текста в приложениях при разработке в C# Mono на Linux

1. Текущий язык зависит от языка MonoDevelop, если у вас настроен анлгийский, то и язык приложений будет по умолчанию английским. Даже если сама система на русском (как и наоборот).

2. По умолчанию тип проекта "Translation Project" в списке не отображается, чтобы он появился надо включить его в Tools - Add-in Manager - Gettext Translation Support.

3. То что указано в Mono.Unix.Catalog.GetString("Hello World!") является одновременно и именем, и значением по умолчанию (которое используется, если в переводе не найдено)

4. При разработке в GTK# и использовании графической разработки, дизайнер автоматически подставляет GetString, вместо отображаемого значения.

5. По умолчанию имя ВСЕХ проектов переводов - "i8n1", можете поменять в свойствах Translation Project. Также в опциях можно указать в какой католог кидать переводы + увидеть строку для инициализации

6. Для указания где брать переводы используется команда
Mono.Unix.Catalog.Init ("i8n1", "./locale");

7. Чтобы указать в приложении конкретный язык нужно до инициализации (и назначения значений переменных) выполнить
Environment.SetEnvironmentVariable ("LANGUAGE", "ru");

8. Можно сменить язык во время работы приложения. Но для этого нужно заново указать все компоненты (для примера у нас есть три элемента label)


protected void OnButtonRUClicked (object sender, EventArgs e)
{
 Environment.SetEnvironmentVariable ("LANGUAGE", "ru");
 Mono.Unix.Catalog.Init ("i8n1", "./locale");
 nameUpdate ();
}

protected void OnButtonENClicked (object sender, EventArgs e)
{
 Environment.SetEnvironmentVariable ("LANGUAGE", "en");
 Mono.Unix.Catalog.Init ("i8n1", "./locale");
 nameUpdate ();
}

void nameUpdate()
{
 label1.LabelProp = global::Mono.Unix.Catalog.GetString ("label1");
 label2.LabelProp = global::Mono.Unix.Catalog.GetString ("label2");
 label3.LabelProp = global::Mono.Unix.Catalog.GetString ("label3");
}

9. Если после создания проекта перевода в основном проекте были добавлены компоненты которые нужно переводить, то чтобы они появились в ранее созданом проекте перевода нужно просто щелкнуть правой кнопкой на нём и выбрать "Update Translations"

10. На текст перевода распространяются ограничения обычного текста в коде. То есть спецсимволы, такие как "\" или сами кавычки нужно экранировть.

11. Вы можете в любом месте проекта сделать
string str = global::Mono.Unix.Catalog.GetString ("TestMessage");
затем сделать Update Translations и новое сообщение появится для перевода

12. В переводах допустима подстановка -
string str = global::Mono.Unix.Catalog.GetString ("Hello {0}!");
string str2 = string.Format (str, "World");

воскресенье, 8 июля 2012 г.

Интернет киоск на основе WebConverger

Однажды потребовалось сделать интернет-киоск (это такой выделенный компьютер, предназначенный только для выхода в интернет и не для чего больше - ещё называют интернет-терминал)

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

Идём на http://webconverger.com/ и нажимаем большую кнопку Download (или сразу на http://dl.webconverger.com/latest.iso)
 Записываем на диск или на флешку (статья по созданию загрузочной USB http://webconverger.org/usb/)

Теперь можно загрузиться в live-режиме и попробовать данный дистрибутив, подходит он или нет. Мне подошел :)

Перейдём к установке —
ВНИМАНИЕ!!! После следующего шага, всё содержимое диска будет уничтожено без всяческих вопросов и подтверждений!!!
После загрузки выбираем последний пункт загрузочного меню «Irrevocably replace hard disk with WebConverger»

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

Когда загрузится Ubuntu, монтируем жёсткий диск компьютера (для этого вполне достаточно зайти на него, через интерфейс — Home Folder и выбираем наш диск в разделе Devices).

Запускаем xterm, активируем пользователя root (sudo passwd root, попросит дважды ввести пароль, вводим), далее вводим su и работаем под рутом.

Переходим в каталог с примонтированным диском (cd /media). Ищем наш примонтированный диск (ls). Далее набираем cd + имя каталога (чтобы не набирать имя полностью, достаточно набрать пару первых символов + Tab)

Теперь перейдём собственно к редактированию настроек WebConverger.
cd boot/extlinux vi linux.cfg

Ищем блок label l0 и добавляем в строку, начинающуюся с append initrd следующее —
homepage=http://arxont.blogspot.com/ kioskresetstation=10 locale=ru xkb=-layout%20us,ru%20-option%20grp:alt_shift_toggle
Значение и дополнительные параметры можете посмотреть на http://webconverger.org/boot/

Если нам необходимо настроить параметры сетевой карты, то переходим в (пути указаны относительно /media/%имя диска%) etc/network/

vi interfaces

Для примера, как настроить статический адрес на сетевой карте —
iface eth0 inet static
     address 192.168.0.17 
     netmask 255.255.255.0 
     gateway 192.168.0.117

Далее правим настройки DNS:
vi etc/resolv.conf


nameserver 192.168.0.123 

Есть ещё другой путь работы с данным дистрибутивом — пересоздание образа http://www.nico-maas.de/wordpress/?p=484. Но для меня вышеприведённый способ оказался проще.

Так же у той же оперы есть такая вещь, как «Opera's Kiosk Mode» http://www.opera.com/support/mastering/kiosk/. Можно сделать через неё.

воскресенье, 20 декабря 2009 г.