OberonCore
https://forum.oberoncore.ru/

A2. Новая глава
https://forum.oberoncore.ru/viewtopic.php?f=22&t=6383
Страница 2 из 11

Автор:  Ярослав Романченко [ Вторник, 16 Апрель, 2019 07:12 ]
Заголовок сообщения:  Re: A2. Новая глава

Kemet писал(а):
Насколько я помню, в репозитории приложения можно указать внешнее хранилище локализации, поэтому всякие такие общие штуки, типа кнопок, меню и т.д. лучше помещать в общее хранилище. Я не помню, можно ли указывать несколько внешних хранилищ и есть ли возможность в случае отсутствия локализации в репозитории приложения дёрнуть хранилище по умолчанию. Но было бы правильно если бы именно так и работало, ну и прописывать в конфигурации текущую локализацию нужно.
Для текстов элементов указывается и имя хранилища и имя словаря и можно указать их любые.
Сейчас написано так:
Код:
<Caption>::StartMenu:ButtonTitles:STutorial</Caption>
Для стандартных кнопок типа Ok, Cancel... конечно имеет смысл описать их перевод в одном месте, а так основные тексты в каждом приложении, видимо, лучше хранить в отдельных репозиториях или словарях, тогда при возможной последующей модификации приложения надо править лишь один отдельный репозиторий/словарь.
Sven Stauber. A2 Component Framework писал(а):
The reasoning behind supporting multiple dictionaries within a single repository is that repositories can contain an arbitrary number of possibly independent components that support localization. Using separate dictionaries for each component does not create an artificial dependency on other components so that copying or moving components into different repositories remains simple. Additionally, dictionaries of components that are not used must not be loaded into system memory. It is also important for third-party component implementers to be able to implement standalone components that are not dependent on the presence and the content of a system-wide dictionary.
Синтаксис приводится только такой:
Код:
Simple Translation:  “::” + RepositoryName + “:” + DictionaryName + “:” + Word
Complex Translation:  “::” + RepositoryName + “:” + DictionaryName + “:” + String
whereas each occurrence of “:” x “:” in String will be replaced by the translation of x.
Но насчёт режима Complex Translation это нежизненно, в каждом языке свои правила чередования слов в предложении и компоновать фразы из кусочков не хорошо. Лучше переводить законченные фразы, а потом подставлять в них параметры. Для этого нужна функция наподобие дельфишной функции Format
Разве, что использовать режим Complex Translation если надо слепить несколько фраз в каком-то длинном-длинном сообщении. Тогда да.

Автор:  Ярослав Романченко [ Вторник, 16 Апрель, 2019 08:51 ]
Заголовок сообщения:  Re: A2. Новая глава

Kemet писал(а):
ну не используется а2 в качестве десктопа)))
Да, для десктопа с большой натяжкой... Может, пока. А в качестве удобной среды разработки уже вполне можно позиционировать!

Автор:  Kemet [ Вторник, 16 Апрель, 2019 09:46 ]
Заголовок сообщения:  Re: A2. Новая глава

Если бы там была полноценная поддержка VNC и RDP... то шансы бы повысились.
Коллега работает над полноценной поддержкой Юникода, включая лексикографическое сравнение. Что тоже, думаю, может сыграть положительную роль в популяризации а2.

Автор:  Ярослав Романченко [ Вторник, 16 Апрель, 2019 09:49 ]
Заголовок сообщения:  Re: A2. Новая глава

Kemet писал(а):
Если бы там была полноценная поддержка VNC
Так есть же VNC. Или версия старая?

Автор:  Kemet [ Вторник, 16 Апрель, 2019 09:50 ]
Заголовок сообщения:  Re: A2. Новая глава

примитивный концепт

Автор:  Oleg N. Cher [ Вторник, 16 Апрель, 2019 15:31 ]
Заголовок сообщения:  Re: A2. Новая глава

Борис Рюмшин писал(а):
Сейчас объективно сложилось три главных диалекта: Компонентный Паскаль, Активный Оберон и Оберон-07/13 (как некоторое очень гибкое изделие). Всё остальное можно рассматривать уже как историю. Хотя, чую, Олег со мной категорически не согласится (да и не только).
Борис, а почему именно Оберон-07/13 ? Разве нет более свежей ревизии 07/16 ?

Если под Олегом тут понимаюсь я, то вполне соглашусь, чего там. Я именно в эту сторону и двигаю Ofront+. А поддержка Оберона и Оберона-2 в нём уже реализована, и выпиливать её как бы смысла нет, пускай будет.

Автор:  Борис Рюмшин [ Вторник, 16 Апрель, 2019 15:53 ]
Заголовок сообщения:  Re: A2. Новая глава

Oleg N. Cher писал(а):
Борис, а почему именно Оберон-07/13 ? Разве нет более свежей ревизии 07/16 ?

Если под Олегом тут понимаюсь я, то вполне соглашусь, чего там. Я именно в эту сторону и двигаю Ofront+. А поддержка Оберона и Оберона-2 в нём уже реализована, и выпиливать её как бы смысла нет, пускай будет.

Да, Revised Oberon.
Да, других активных Олегов тут вроде нет.

Автор:  Sergej Durmanov [ Вторник, 16 Апрель, 2019 19:54 ]
Заголовок сообщения:  Re: A2. Новая глава

Да, с rdp можно было-бы подумать о тонком клиенте на базе а2.

Автор:  Sergej Durmanov [ Вторник, 16 Апрель, 2019 19:58 ]
Заголовок сообщения:  Re: A2. Новая глава

Как понимаю, штатная локализация только для виджетов, а как локализовать, например, сообщения об ошибках, и прочая и прочая. В delphi есть resourcestrings, что позволяет автоматизировать и упростить локализацию.

Автор:  Sergej Durmanov [ Вторник, 16 Апрель, 2019 20:08 ]
Заголовок сообщения:  Re: A2. Новая глава

2Сергей Зорин
А ваши виджеты на opengl заведутся в оригинальной а2?

Автор:  Ярослав Романченко [ Вторник, 16 Апрель, 2019 20:22 ]
Заголовок сообщения:  Re: A2. Новая глава

Baikal писал(а):
Как понимаю, штатная локализация только для виджетов, а как локализовать, например, сообщения об ошибках, и прочая и прочая. В delphi есть resourcestrings, что позволяет автоматизировать и упростить локализацию.
Код:
      PROCEDURE Translate(value: Strings.String): Strings.String;
      VAR
         res : WORD;
         temp, word : Strings.String;
         dictionary : Repositories.Dictionary;
      BEGIN
         IF value # NIL THEN
            Repositories.GetTranslationInfo(value^, dictionary, word, res);
            IF (dictionary # NIL) & (word # NIL) THEN
               temp := dictionary.Translate(word, languages);
               IF (temp # word) THEN
                  RETURN temp
               END
            END
         END;
         RETURN NIL
      END Translate;
На вход принимается стока вида "::Repository:Dictionary:Word", на выходе перевод

Автор:  Sergej Durmanov [ Вторник, 16 Апрель, 2019 20:32 ]
Заголовок сообщения:  Re: A2. Новая глава

Слишком много придется писать, ав оматизировать бы процесс

Автор:  Ярослав Романченко [ Вторник, 16 Апрель, 2019 21:57 ]
Заголовок сообщения:  Re: A2. Новая глава

Baikal писал(а):
Да, с rdp можно было-бы подумать о тонком клиенте на базе а2.
Думаю, допилить VNC до приемлемого состояния будет попроще. И VNC - открытый стандарт. Только-что проверил, работает. Протокол версии 3.3. Уже вышли протоколы версий 3.7 и 3.8. Насколько я понял, небольшие отличия лишь в процедуре хендшейка и новые способы кодирования передаваемых пакетов (rfc6143).

Автор:  Sergej Durmanov [ Вторник, 16 Апрель, 2019 22:18 ]
Заголовок сообщения:  Re: A2. Новая глава

Не, то, как оно работает, не пригодно для промышленного использования, если развивать протокол, то с нуля писать. Но он не сильно полезен для тонкого клиента, rdp намного полезней в этом плане. Здесь достаточно необходимого подмножества.
Нужно подумать. Если Зорин поделится виджетами на opengl, то после завершения проекта с sql-сервером можно заняться бизнес-платформой, на которой клепать всякие учетные/экономичские системы.

Автор:  Kemet [ Среда, 17 Апрель, 2019 05:45 ]
Заголовок сообщения:  Re: A2. Новая глава

Baikal писал(а):
2Сергей Зорин
А ваши виджеты на opengl заведутся в оригинальной а2?
Там всё очень сложно с лицензией и пока не удается договориться с разработчиком, чтобы выкупить за вменяемые деньги.
Но я могу поискать свою поделку, когда-то я тоже пытался сделать на opengl, но там всё очень просто и классический интерфейс, в отличии от. Концепт )))) Может где и завалялось, как время появится- поищу.

Автор:  Kemet [ Среда, 17 Апрель, 2019 05:46 ]
Заголовок сообщения:  Re: A2. Новая глава

Baikal писал(а):
можно заняться бизнес-платформой
Я даже боюсь представить, сколько на это нужно времени и ресурсов.

Автор:  Ярослав Романченко [ Среда, 17 Апрель, 2019 06:52 ]
Заголовок сообщения:  Re: A2. Новая глава

Kemet писал(а):
Baikal писал(а):
2Сергей Зорин
А ваши виджеты на opengl заведутся в оригинальной а2?
Там всё очень сложно с лицензией и пока не удается договориться с разработчиком, чтобы выкупить за вменяемые деньги.
Но я могу поискать свою поделку, когда-то я тоже пытался сделать на opengl, но там всё очень просто и классический интерфейс, в отличии от. Концепт )))) Может где и завалялось, как время появится- поищу.
А если заменить Windows окно, которое в А2 вначале создаётся на OpenGL окно (Windows окно с контекстом рендеринга)? И соответственно модуль Rastr переделать под вывод через OpenGL. Ведь скорость прорисовки должна существенно вырости. Бутылочное горлышко существующего интерфейса - программный блендинг прямоугольников.

Автор:  Ярослав Романченко [ Среда, 17 Апрель, 2019 07:47 ]
Заголовок сообщения:  Re: A2. Новая глава

Вот, по-сути, весь драйвер дисплея. Для начала сделать здесь вывод через OpenGL. Меня уже обрадовал тот факт, что FromMemory - просто заглушка :D
Код:
   Display = OBJECT (Displays.Display) (* only one instance of this object allowed ! *)

      PROCEDURE Transfer*( VAR buf: ARRAY OF CHAR;  ofs, stride, x, y, w, h, op: LONGINT );
      BEGIN

         IF letWindowsHandleTheBuffer THEN
            IF op = Displays.set THEN
               ToMemory( root, buf, ofs, stride, x, y, w, h );  ToWindow( root, x, y, w, h, root.dx, root.dy );
            ELSE FromMemory( root, buf, ofs, stride, x, y, w, h );
            END;
         ELSE
            IF root.bmadr = 0 THEN GetDC( root ) END;
            InitFrameBuffer( root.bmadr, disp.width * disp.height * format, disp.width * disp.format);  Transfer^( buf, ofs, stride, x, y, w, h, op );
            IF Displays.reverse THEN
               IF op = Displays.set THEN ToWindow( root, disp.width-x-w,disp.height-y-h, w, h, root.dx, root.dy );  END;
            ELSE
               IF op = Displays.set THEN ToWindow( root, x, y, w, h, root.dx, root.dy );  END;
            END;
         END;

      END Transfer;

   END Display;

Автор:  Kemet [ Среда, 17 Апрель, 2019 08:12 ]
Заголовок сообщения:  Re: A2. Новая глава

Ярослав Романченко писал(а):
А если заменить Windows окно, которое в А2 вначале создаётся на OpenGL окно...
Ну оно так и работает +графика с антиалиасингом с бакэндом opengl. Но пока опубликовать не могу. Там же ценное не использование opengl, а уникальный дизайн, хотя это даже не дизайн, а уникальная идея ( ну как ms ribbon - это же не дизайн, он вторичен ( ribbon тоже реализован )), за которую хотят много зеленых рублей, чтобы передать исключительные права.

Автор:  Ярослав Романченко [ Среда, 17 Апрель, 2019 08:43 ]
Заголовок сообщения:  Re: A2. Новая глава

Для контекстных меню локализация работает без сучка, без задоринки :)
Вложение:
WMClok ukr.png
WMClok ukr.png [ 21.45 КБ | Просмотров: 3067 ]

Страница 2 из 11 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/