1
0
Fork 0
mirror of https://github.com/Oreolek/sixth_city.git synced 2024-04-25 21:49:20 +03:00

Default gettext function is _, not __

This commit is contained in:
Alexander Yakovlev 2015-08-17 04:16:27 +07:00
parent e9ff4801aa
commit 15f7522271
3 changed files with 130 additions and 121 deletions

View file

@ -1,73 +1,73 @@
playerdesc = stat {
nam = function()
pn(txtc(txtb(__('Персонаж'))));
pn(__('Связи')..': '..pl._connections);
pn(__('Дерзость')..': ' .. pl._boldness);
pn(__('Осторожность')..': ' .. pl._caution);
pn(txtc(txtb(_('Персонаж'))));
pn(_('Связи')..': '..pl._connections);
pn(_('Дерзость')..': ' .. pl._boldness);
pn(_('Осторожность')..': ' .. pl._caution);
end,
}
take('playerdesc');
connected = function(i)
pl._connections = pl._connections + i;
pn (__("Параметр Связи увеличился на ")..i..".");
pn (_("Параметр Связи увеличился на ")..i..".");
end;
bold = function(i)
pl._boldness = pl._boldness + i;
pn (__("Параметр Дерзость увеличился на ")..i..".");
pn (_("Параметр Дерзость увеличился на ")..i..".");
end;
cautious = function(i)
pl._caution = pl._caution + i;
pn (__("Параметр Осторожность увеличился на ")..i..".");
pn (_("Параметр Осторожность увеличился на ")..i..".");
end;
turn_back = option(nil, '-- '..__('Вернуться на площадь')..' --', '', 'walk("main")');
turn_back = option(nil, '-- '.._('Вернуться на площадь')..' --', '', 'walk("main")');
put(option(
'pl._seen_monument ~= true',
__('Осмотреть памятник'),
__([[Чёрный памятник без таблички изображает высокого мужчину в старомодном плаще, который держит в руках раскрытый зонт. Мужчина застыл, направив взгляд на небо.^^
_('Осмотреть памятник'),
_([[Чёрный памятник без таблички изображает высокого мужчину в старомодном плаще, который держит в руках раскрытый зонт. Мужчина застыл, направив взгляд на небо.^^
На основании памятника нацарапано: "Господин Гронц видел тебя"]]),
function() connected(1); pl._seen_monument = true; end
));
put(option(nil, __('Посетить музей Сгоревших Свечей'), nil, 'walk("museum")'));
put(option(nil, __('Найти Глиняную Башню'), nil, 'walk("clock")'));
put(option(nil, __('Искать Отделение Криминального Давления'), nil, 'walk("police")'));
put(option(nil, _('Посетить музей Сгоревших Свечей'), nil, 'walk("museum")'));
put(option(nil, _('Найти Глиняную Башню'), nil, 'walk("clock")'));
put(option(nil, _('Искать Отделение Криминального Давления'), nil, 'walk("police")'));
clock = choice {
nam = __('Глиняная Башня'),
enter = __([[Вы подходите к старинной башне, целиком вылепленной из красной глины.]]),
dsc = __([[На верхушке башни находится циферблат часов, застрявших на шести часах двадцати минут.]]),
nam = _('Глиняная Башня'),
enter = _([[Вы подходите к старинной башне, целиком вылепленной из красной глины.]]),
dsc = _([[На верхушке башни находится циферблат часов, застрявших на шести часах двадцати минут.]]),
obj = {turn_back}
}
museum = choice {
nam = __('Музей Сгоревших Свечей'),
dsc = __('Музей Сгоревших Свечей -- это здание середины девятнадцатого века, изрядно потрёпанное временем.'),
enter = __('На входе вам дают кусочек воска, на котором написан номер билета.'),
exit = __('Вы кидаете билет в камин, горящий на выходе.'),
nam = _('Музей Сгоревших Свечей'),
dsc = _('Музей Сгоревших Свечей -- это здание середины девятнадцатого века, изрядно потрёпанное временем.'),
enter = _('На входе вам дают кусочек воска, на котором написан номер билета.'),
exit = _('Вы кидаете билет в камин, горящий на выходе.'),
obj = {turn_back}
}
police = choice {
nam = __('Отделение Криминального Давления'),
dsc = __([[Буклет-путеводитель описывает Отделение Криминального Давления как "департамент наивысшей безопасности по защите от наихудшей преступности."]]),
enter = __([[Издалека вам кажется, что здание О.К.Д. украшено живыми прыгучими мышами, но вблизи вы видите, что мышей всего лишь колышет лёгкий ветер. В здание часто заходят люди в тёмно-синей форме, но, насколько вы можете заметить, через тяжёлые двери выходят немногие. Вы не замечаете ничего странного, входя внутрь, только половицы слишком громко скрипят.]]),
nam = _('Отделение Криминального Давления'),
dsc = _([[Буклет-путеводитель описывает Отделение Криминального Давления как "департамент наивысшей безопасности по защите от наихудшей преступности."]]),
enter = _([[Издалека вам кажется, что здание О.К.Д. украшено живыми прыгучими мышами, но вблизи вы видите, что мышей всего лишь колышет лёгкий ветер. В здание часто заходят люди в тёмно-синей форме, но, насколько вы можете заметить, через тяжёлые двери выходят немногие. Вы не замечаете ничего странного, входя внутрь, только половицы слишком громко скрипят.]]),
obj = {}
}
thief_option = option('pl._boldness < 5 and not have("cent")', __('Вы засовываете руку в карман и находите там чужую'), nil, 'walk("thief")');
thief_option = option('pl._boldness < 5 and not have("cent")', _('Вы засовываете руку в карман и находите там чужую'), nil, 'walk("thief")');
put ('thief_option', 'police');
put(option('pl._boldness < 5 and not have("clay_leg")', __('На вас бросается женщина...'), nil, 'walk("eradication")'), 'police');
put(option('pl._boldness < 5 and not have("clay_leg")', _('На вас бросается женщина...'), nil, 'walk("eradication")'), 'police');
put (turn_back, 'police');
thief = choice {
nam = __('Вы засовываете руку в карман и находите там чужую'),
dsc = __([[Вы засовываете руку в карман и находите там чужую. Вы разворачиваетесь и видите грязного мальчика, который пытается спрятать лицо под дырявой кепкой.]]),
nam = _('Вы засовываете руку в карман и находите там чужую'),
dsc = _([[Вы засовываете руку в карман и находите там чужую. Вы разворачиваетесь и видите грязного мальчика, который пытается спрятать лицо под дырявой кепкой.]]),
obj = {}
}
put(option(nil, __('Побить вора'), __('Вы перетряхиваете мальчугана на всё, что у него есть. Он отдаёт вам единственную монетку и теряется в тумане.'),function()
put(option(nil, _('Побить вора'), _('Вы перетряхиваете мальчугана на всё, что у него есть. Он отдаёт вам единственную монетку и теряется в тумане.'),function()
connected(1);
bold(1);
take('cent');
@ -75,7 +75,7 @@ put(option(nil, __('Побить вора'), __('Вы перетряхивает
end
), 'thief');
put(option(nil, __('Отпустить и проследить за ним'), __([[Вы отпускаете мальчугана и осторожно следуете за ним. Он отбегает в сторону, оглядывается, и, не заметив вас в тумане, идёт по переулкам к старому фонтану на Площади Жути.^^
put(option(nil, _('Отпустить и проследить за ним'), _([[Вы отпускаете мальчугана и осторожно следуете за ним. Он отбегает в сторону, оглядывается, и, не заметив вас в тумане, идёт по переулкам к старому фонтану на Площади Жути.^^
По пустой улице проносится слабый звон, и мальчик быстро исчезает в одном из домов. Вы подходите к пересохшему фонтану и видите одинокую монетку, которая блестит на дне. Вы поднимаете монетку и осматриваете её. Выглядит интересно. ]]),function()
cautious(1);
connected(1);
@ -85,27 +85,27 @@ put(option(nil, __('Отпустить и проследить за ним'), __
), 'thief');
cent = obj {
nam = __('цент'),
inv = __('Потемневшая монета в одну местную копейку. На реверсе монеты иголкой нацарапана спираль.')
nam = _('цент'),
inv = _('Потемневшая монета в одну местную копейку. На реверсе монеты иголкой нацарапана спираль.')
}
eradication = choice {
nam = __('На вас бросается женщина...'),
dsc = __([[На вас бросается женщина с зарёванным лицом. Мужчина в форме, с которым она до этого разговаривала, облегчённо вздыхает и уходит по своим делам. ^
nam = _('На вас бросается женщина...'),
dsc = _([[На вас бросается женщина с зарёванным лицом. Мужчина в форме, с которым она до этого разговаривала, облегчённо вздыхает и уходит по своим делам. ^
-- Пожалуйста! Может, хоть вы мне поможете? Я не могу попасть домой и у меня нет с собой денег, чтобы заплатить Охотникам. Я не могу пробиться через эти грибы!]]),
obj = {
option(nil, __('Следовать к её дому'), nil, 'walk("eradication_cont")'),
option(nil, _('Следовать к её дому'), nil, 'walk("eradication_cont")'),
}
}
eradication_cont = choice {
nam = __('Дом в квартале Улыбающихся Гончаров'),
enter = __([[Она живёт к западу от Глиняной Башни, в квартале Улыбающихся Гончаров. Вы медленно пробираетесь по петляющим улочкам и, наконец, выходите к старому домику, перед которым раскинулись высокие коричневые заросли грибов.Она даёт вам белый платок и показывает, как его завязать на лицо.]]),
dsc = __([[-- Вы видите? Я не могу пройти к дому, не наглотавшись спор. Я читала, что споры этих грибов превращают людей в.. в глину!]]),
nam = _('Дом в квартале Улыбающихся Гончаров'),
enter = _([[Она живёт к западу от Глиняной Башни, в квартале Улыбающихся Гончаров. Вы медленно пробираетесь по петляющим улочкам и, наконец, выходите к старому домику, перед которым раскинулись высокие коричневые заросли грибов.Она даёт вам белый платок и показывает, как его завязать на лицо.]]),
dsc = _([[-- Вы видите? Я не могу пройти к дому, не наглотавшись спор. Я читала, что споры этих грибов превращают людей в.. в глину!]]),
obj = {},
}
-- тут можно придумать дополнительные варианты в зависимости от инвентаря
put(option(nil, __('Медленно протоптать дорожку'), __([[Осторожно контролируя вес, вы протаптываете дорожку через заросли грибов. Придётся ходить только в масках, но теперь здесь есть шансы жить.^^
put(option(nil, _('Медленно протоптать дорожку'), _([[Осторожно контролируя вес, вы протаптываете дорожку через заросли грибов. Придётся ходить только в масках, но теперь здесь есть шансы жить.^^
-- Спасибо! Вот вам за труды. -- Женщина протягивает изогнутый кусок пластилина. -- Говорят, за ноги Пластилиновых Творений дорого платят в музее Сгоревших Свечей. ]]),function()
cautious(1);
take('clay_leg');
@ -113,7 +113,7 @@ put(option(nil, __('Медленно протоптать дорожку'), __([
end),
'eradication_cont');
put(option(nil, __('Быстро перепрыгнуть через заросли'), __([[Разбежавшись, вы перепрыгиваете заросли и приземляетесь на пороге дома. Похоже, хозяйке придётся упражняться в прыжках, но хотя бы у неё появились шансы здесь жить.^^
put(option(nil, _('Быстро перепрыгнуть через заросли'), _([[Разбежавшись, вы перепрыгиваете заросли и приземляетесь на пороге дома. Похоже, хозяйке придётся упражняться в прыжках, но хотя бы у неё появились шансы здесь жить.^^
-- Спасибо! Вот вам за труды. -- Женщина протягивает изогнутый кусок пластилина. -- Говорят, за ноги Пластилиновых Творений дорого платят в музее Сгоревших Свечей. ]]),function()
bold(1);
take('clay_leg');
@ -122,14 +122,14 @@ put(option(nil, __('Быстро перепрыгнуть через зарос
'eradication_cont');
clay_leg = obj {
nam = __('пластилиновая нога'),
inv = __('Нога Пластилинового Творения.')
nam = _('пластилиновая нога'),
inv = _('Нога Пластилинового Творения.')
}
put(option('pl._connections > 0', __('Сесть на поезд домой'), nil, "walk('endgame')"));
put(option('pl._connections > 0', _('Сесть на поезд домой'), nil, "walk('endgame')"));
endgame = room {
nam = __('Конец игры'),
dsc = __([[Ваше время в этом мрачном городе закончено, и вы уезжаете на старом поезде, всё ещё слишком чужой для того, чтобы остаться.^^]])..txtc(__('КОНЕЦ')),
nam = _('Конец игры'),
dsc = _([[Ваше время в этом мрачном городе закончено, и вы уезжаете на старом поезде, всё ещё слишком чужой для того, чтобы остаться.^^]])..txtc(_('КОНЕЦ')),
}

View file

@ -2,86 +2,13 @@
-- $Name(en): Sixth city$
-- Игра требует Lua 5.1+
instead_version "1.9.1"
dofile('choice.lua');
require 'choice';
require 'translate';
dofile("init.lua");
function load_mo_file(mo_file)
--------------------------------
-- open file and read data
--------------------------------
local fd,err=io.open(mo_file,"rb")
if not fd then return nil,err end
local mo_data=fd:read("*all")
fd:close()
--------------------------------
-- precache some functions
--------------------------------
local byte=string.byte
local sub=string.sub
--------------------------------
-- check format
--------------------------------
local peek_long --localize
local magic=sub(mo_data,1,4)
-- intel magic 0xde120495
if magic=="\222\018\004\149" then
peek_long=function(offs)
local a,b,c,d=byte(mo_data,offs+1,offs+4)
return ((d*256+c)*256+b)*256+a
end
-- motorola magic = 0x950412de
elseif magic=="\149\004\018\222" then
peek_long=function(offs)
local a,b,c,d=byte(mo_data,offs+1,offs+4)
return ((a*256+b)*256+c)*256+d
end
else
return nil,"no valid mo-file"
end
--------------------------------
-- version
--------------------------------
local V=peek_long(4)
if V~=0 then
return nul,"unsupported version"
end
------------------------------
-- get number of offsets of table
------------------------------
local N,O,T=peek_long(8),peek_long(12),peek_long(16)
------------------------------
-- traverse and get strings
------------------------------
local hash={}
for nstr=1,N do
local ol,oo=peek_long(O),peek_long(O+4) O=O+8
local tl,to=peek_long(T),peek_long(T+4) T=T+8
hash[sub(mo_data,oo+1,oo+ol)]=sub(mo_data,to+1,to+tl)
end
return function(text)
return hash[text] or text
end
end
if not LANG then
LANG = "en"
end
if LANG == 'en' then
__ = load_mo_file('en.mo');
else
__ = function(text)
return text;
end;
end
main = choice{
nam = __('Шестой город'),
dsc = __([[Облака никогда не рассеиваются, они могут только становиться светлее. Вы стоите на круглой площади перед мрачным памятником, откуда начинается извилистый лабиринт улиц Шестого города. Невысокие дома окружают вас со всех сторон, скрываясь в тумане.^^
nam = _('Шестой город'),
dsc = _([[Облака никогда не рассеиваются, они могут только становиться светлее. Вы стоите на круглой площади перед мрачным памятником, откуда начинается извилистый лабиринт улиц Шестого города. Невысокие дома окружают вас со всех сторон, скрываясь в тумане.^^
Потёртый буклет, который вы нашли в мусорном баке возле гостиницы, предлагает несколько интересных занятий для "гостей города Н."]]),
obj = {},
};

82
translate.lua Normal file
View file

@ -0,0 +1,82 @@
translate = {};
-- redefine to set source language
translate.source = 'ru';
-- Credit: http://lua-users.org/lists/lua-l/2010-04/msg00005.html
function load_mo_file(mo_file)
--------------------------------
-- open file and read data
--------------------------------
local fd,err=io.open(mo_file,"rb")
if not fd then return nil,err end
local mo_data=fd:read("*all")
fd:close()
--------------------------------
-- precache some functions
--------------------------------
local byte=string.byte
local sub=string.sub
--------------------------------
-- check format
--------------------------------
local peek_long --localize
local magic=sub(mo_data,1,4)
-- intel magic 0xde120495
if magic=="\222\018\004\149" then
peek_long=function(offs)
local a,b,c,d=byte(mo_data,offs+1,offs+4)
return ((d*256+c)*256+b)*256+a
end
-- motorola magic = 0x950412de
elseif magic=="\149\004\018\222" then
peek_long=function(offs)
local a,b,c,d=byte(mo_data,offs+1,offs+4)
return ((a*256+b)*256+c)*256+d
end
else
return nil,"no valid mo-file"
end
--------------------------------
-- version
--------------------------------
local V=peek_long(4)
if V~=0 then
return nul,"unsupported version"
end
------------------------------
-- get number of offsets of table
------------------------------
local N,O,T=peek_long(8),peek_long(12),peek_long(16)
------------------------------
-- traverse and get strings
------------------------------
local hash={}
for nstr=1,N do
local ol,oo=peek_long(O),peek_long(O+4) O=O+8
local tl,to=peek_long(T),peek_long(T+4) T=T+8
hash[sub(mo_data,oo+1,oo+ol)]=sub(mo_data,to+1,to+tl)
end
return function(text)
return hash[text]
end
end
if not LANG then
LANG = "en"
end
if LANG == translate.source then
_ = function(text)
return text;
end;
else
translate.strings = load_mo_file(LANG..'.mo');
_ = function(text)
return translate.strings[text];
end
end