Как по английскому имени функции определить русское слово которое нужно использовать?
(справки-то по именам функций стандартных библиотек не написано)
Каким образом print дополнен словом "печать"?
Сообщений 1 страница 5 из 5
Поделиться12018-10-24 18:20:07
Поделиться22018-10-24 19:39:38
Как по английскому имени функции определить русское слово которое нужно использовать?
Однозначно и автоматически - никак, данного недостаточно для перевода.
Руками: проверяется каждое слово[сочетание] из словаря.
Глазами: автоматически генерируется каждая подстановка и выбирается нужное.
Отредактировано MihalNik (2018-10-24 20:13:40)
Поделиться32018-10-24 20:27:23
Я не абстрактно спрашиваю, а конкретно. Конкретно в РусЛуа уже есть как минимум одно русифицированное название функции.
Конечно можно найти его (слово "печать") поиском в репозитории РусЛуа и посмотреть, какие там ещё слова есть.
Но почему это должен делать каждый пользователь, а не разработчики?
Смотрю исходник через web-интерфейс github, и вижу там:
static const char *const luaX_tokens_cyr [] = { "è", "ñòîï", "íà÷àëî", "èíà÷å", "èíà÷ååñëè", "êîíåö", "ëîæü", "äëÿ", "ôóíêöèÿ", "èäèíà", "åñëè", "èç", "ëîêàë", "íóëü", "íå", "èëè", "ïîâòîðÿòü", "âîçâðàò", "òîãäà", "èñòèíà", "ïîêóäà", "ïîêà", "//", "..", "...", "==", ">=", "<=", "!=", };
Вот зачем так делать (внешнюю кодировку исходных текстов в Windows-1251) ? Трудно было в UTF-8 закоммитить?
Отредактировано Лис (2018-10-24 20:40:04)
Поделиться42018-10-25 09:19:16
Трудно было в UTF-8 закоммитить?
Потому что в винде используется эта кодировка по умолчанию (при это имена в файловой системе все равно кодируются в UTF). Существуют овердофига программ, которые работают в винде исключительно в данной кодировке.
Отредактировано utkin (2018-10-25 09:19:48)
Поделиться52018-10-30 07:17:17
static const luaL_Reg base_funcs[] = {
{"assert", luaB_assert},
{"collectgarbage", luaB_collectgarbage},
{"dofile", luaB_dofile},
{"error", luaB_error},
{"getmetatable", luaB_getmetatable},
{"ipairs", luaB_ipairs},
{"loadfile", luaB_loadfile},
{"load", luaB_load},
#if defined(LUA_COMPAT_LOADSTRING)
{"loadstring", luaB_load},
#endif
{"next", luaB_next},
{"pairs", luaB_pairs},
{"pcall", luaB_pcall},
{"print", luaB_print},
{"rawequal", luaB_rawequal},
{"rawlen", luaB_rawlen},
{"rawget", luaB_rawget},
{"rawset", luaB_rawset},
{"select", luaB_select},
{"setmetatable", luaB_setmetatable},
{"tonumber", luaB_tonumber},
{"tostring", luaB_tostring},
{"type", luaB_type},
{"xpcall", luaB_xpcall},
/* placeholders */
{"_G", NULL},
{"_VERSION", NULL},{"утв", luaB_assert},
{"собратьмусор", luaB_collectgarbage},
{"испфайл", luaB_dofile},
{"ощибка", luaB_error},
{"взятьметатаблицу", luaB_getmetatable},
{"ипары", luaB_ipairs},
{"загрузитьфайл", luaB_loadfile},
{"загрузить", luaB_load},
#if defined(LUA_COMPAT_LOADSTRING)
{"загрузитьстроку", luaB_load},
#endif
{"выбор", luaB_select},
{"устметатаблицу", luaB_setmetatable},
{"следующий", luaB_next},
{"пары", luaB_pairs},
{"рвызов", luaB_pcall},
{"печать", luaB_print},
{"сравнитьнапрямую", luaB_rawequal},
{"длинанапрямую", luaB_rawlen},
{"взятьнапрямую", luaB_rawget},
{"устнапрямую", luaB_rawset},
{"вчисло", luaB_tonumber},
{"встроку", luaB_tostring},
{"тип", luaB_type},
{"хрвызов", luaB_xpcall},
{"_ОКР", NULL},
{"_ВЕРСИЯ", NULL},
{NULL, NULL}
};
никакого "чтение", как парного к "печать" тут не видно...
Где вообще может быть функция *_read ?
# grep "_read" *.utf8
lbaselib.c.utf8:static const char *generic_reader (lua_State *L, void *ud, size_t *size) {
lbaselib.c.utf8: status = lua_load(L, generic_reader, NULL, chunkname, mode);
liolib.c.utf8:static int io_readline (lua_State *L);
liolib.c.utf8: lua_pushcclosure(L, io_readline, 3 + n);
liolib.c.utf8:static int g_read (lua_State *L, FILE *f, int first) {
liolib.c.utf8:static int io_read (lua_State *L) {
liolib.c.utf8: return g_read(L, getiofile(L, IO_INPUT), 1);
liolib.c.utf8:static int f_read (lua_State *L) {
liolib.c.utf8: return g_read(L, tofile(L), 2);
liolib.c.utf8:static int io_readline (lua_State *L) {
liolib.c.utf8: for (i = 1; i <= n; i++) /* push arguments to 'g_read' */
liolib.c.utf8: n = g_read(L, p->f, 2); /* 'n' is number of results */
liolib.c.utf8: {"read", io_read},
liolib.c.utf8: {"read", f_read},
lua.c.utf8:** lua_readline defines how to show a prompt and then read a line from
lua.c.utf8:** lua_freeline defines how to free a line read by lua_readline.
lua.c.utf8:#if !defined(lua_readline) /* { */
lua.c.utf8:#define lua_readline(L,b,p) ((void)L, ((b)=readline(p)) != NULL)
lua.c.utf8:#define lua_readline(L,b,p) \
lua.c.utf8: int readstatus = lua_readline(L, b, prmt);
lundump.c.utf8: if (luaZ_read(S->Z, b, size) != 0)
lzio.c.utf8:size_t luaZ_read (ZIO *z, void *b, size_t n) {
lzio.h.utf8:LUAI_FUNC size_t luaZ_read (ZIO* z, void *b, size_t n); /* read next n bytes */
Возможно вот это оно:
liolib.c.utf8: {"read", io_read},
liolib.c.utf8: {"read", f_read},
Смотрим на таблицу функций:
/*
** functions for 'io' library
*/
static const luaL_Reg iolib[] = {
{"close", io_close},
{"flush", io_flush},
{"input", io_input},
{"lines", io_lines},
{"open", io_open},
{"output", io_output},
{"popen", io_popen},
{"read", io_read},
{"tmpfile", io_tmpfile},
{"type", io_type},
{"write", io_write},
{NULL, NULL}
};
Перевода нет.
На этом написание русского парсера на РусЛуа можно считать проваленным, т.к. невозможно по-русски считать файл.
Отредактировано Лис (2018-10-30 07:25:54)