Pull to refresh

Comments 6

Мне кажется, статье не хватает пары вещей:

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

Ну и второе. Это, конечно, косметика, но хотелось бы более подробное сравнение с современными системами управления строковыми ресурсами. Чем ваша система лучше того же GNU gettext? А то сейчас статья выглядит так: "посмотрел, как реализовано в visual studio, впал в шок, написал своё. С тех пор на другие системы не смотрел".

Насчет примеров использования, да - я должен был это включить, но не включил. Исправляюсь:

//
// c++. Строка, идентифицируемая мнемоникой
//
PPLoadString(PPMSG_ERROR, PPERR_NMATCHBILLAMT, fmt_buf);
//
// c++. Строка, идентифицируемая символом
//
PPLoadString("appellation", temp_buf);
//
// Java (Android). Строка, идентифицируемая мнемоникой.
// Для Java мнемоники автоматически генерируются так же как и для C/C++.
//
String err_msg = app_ctx.GetString(ppstr2.PPSTR_ERROR, ppstr2.PPERR_STQ_POSTDOCUMENTFAULT);
//
// Java (Android). Строка, идентифицируемая символом
//
title_text = app_ctx.GetString("unmatchedmarks");

По поводу GNU gettext. Я долго смотрел на него и примерялся. Его популярность восхищает. Однако ж, его основное назначение - организация перевода на другие языки, а не управление текстовыми ресурсами. И еще - идентификация по тексту, примененному в исходно коде очень уж зыбкая.

Исправляюсь:

Ну не совсем. Хотелось бы увидеть полный пример работы с системой, а не только невнятную строку загрузки текста в некий буфер (что это за буфер, кстати? std::string? std::vector<char>? char[MAX_STRING_BUF]?).

Как составлять файл описаний, как его транслировать в бинарное представление, как он связывается с основной программой, как он в основной программе подгружается (если вообще подгружается), и т.п. Хотя бы для С++.

Однако ж, его основное назначение - организация перевода на другие языки, а не управление текстовыми ресурсами.

А как у вас организован перевод на другие языки? Об этом в статье нет никакой конкретики.

И кстати, а для чего вообще нужно "управление текстовыми ресурсами", если не для локализации?

И еще - идентификация по тексту, примененному в исходно коде очень уж зыбкая.

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

Ух. Это - скорее будет документация, а не ознакомительный текст. todo мне.

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

Поэтому зайдём с козырей (и, да прости меня автор): я, конечно, понимаю, что Windows до сих пор занимает на десктопе +-67%. Но делать утилиту-компилятор нацеленную только на Windows! - по-моему, это какой-то "привет из нулевых". Не А[А[А]]-игра, а утилита! И сама эта утилита в виде .exe-файла прямо выложена в репозитории: типа пользуйтесь! Что, реально?

Даже при наличии исходников (может они и есть, но поискал по диагонали - не нашёл) вопрос использования не всегда однозначен. А так ...

И да, прошу прощения за эмоции.

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

Я, вероятно, не смог четко донести смысл текста. Дело не в Windows и не в самой утилитке. Я попытался предложить концепцию управления ресурсами строк (методы идентификации, подходы к переводу и т.д.).
Ссылка на репозиторий дана только в качестве пруфа.
Сам исходник не большой. Вот ссылка на него: https://github.com/papyrussolution/OpenPapyrus/blob/master/Src/PPLib/STRSTORE.CPP

Sign up to leave a comment.

Articles